From patchwork Thu Apr 29 23:16:29 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ben Dooks X-Patchwork-Id: 51398 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id E92E5B7D2F for ; Sat, 1 May 2010 07:49:37 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932311Ab0D3Vsh (ORCPT ); Fri, 30 Apr 2010 17:48:37 -0400 Received: from aeryn.fluff.org.uk ([87.194.8.8]:27351 "EHLO kira.home.fluff.org" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S932466Ab0D3Vsa (ORCPT ); Fri, 30 Apr 2010 17:48:30 -0400 Received: from ben by kira.home.fluff.org with local (Exim 4.71) (envelope-from ) id 1O7czE-0001yt-E0; Fri, 30 Apr 2010 00:17:40 +0100 Message-Id: <20100429231740.358390546@fluff.org.uk> User-Agent: quilt/0.48-1 Date: Fri, 30 Apr 2010 00:16:29 +0100 From: Ben Dooks To: netdev@vger.kernel.org Cc: tristram.ha@micrel.com, support@tincantools.com, Tristram Ha Subject: [patch 08/13] KSZ8851-SNL: Fix EEPROM access problem References: <20100429231621.015936077@fluff.org.uk> Content-Disposition: inline; filename=thirdparty/micrel/ksz8851-fix-eeprom.patch Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Tristram Ha Accessing the EEPROM when the device is receiving sometimes hangs the system as the hardware is not locked down. Signed-off-by: Tristram Ha [ben@simtec.co.uk: fix description text] Signed-off-by: Ben Dooks --- --- drivers/net/ks8851.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Index: b/drivers/net/ks8851.c =================================================================== --- a/drivers/net/ks8851.c 2010-04-29 01:22:42.667052653 +0900 +++ b/drivers/net/ks8851.c 2010-04-29 01:22:47.779528264 +0900 @@ -1181,7 +1181,6 @@ static void ks8851_eeprom_regwrite(struc if (ee->reg_chip_select) val |= EEPCR_EECS; - printk(KERN_INFO "%s: wr %04x\n", __func__, val); ks8851_wrreg16(ks, KS_EEPCR, val); } @@ -1197,6 +1196,8 @@ static int ks8851_eeprom_claim(struct ks if (!(ks->rc_ccr & CCR_EEPROM)) return -ENOENT; + mutex_lock(&ks->lock); + /* start with clock low, cs high */ ks8851_wrreg16(ks, KS_EEPCR, EEPCR_EESA | EEPCR_EECS); return 0; @@ -1213,6 +1214,7 @@ static void ks8851_eeprom_release(struct unsigned val = ks8851_rdreg16(ks,KS_EEPCR); ks8851_wrreg16(ks, KS_EEPCR, val & ~EEPCR_EESA); + mutex_unlock(&ks->lock); } #define KS_EEPROM_MAGIC (0x00008851)