From patchwork Tue Nov 30 20:07:37 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Mohr X-Patchwork-Id: 73650 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 62EA8B70F6 for ; Wed, 1 Dec 2010 07:17:19 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752155Ab0K3URP (ORCPT ); Tue, 30 Nov 2010 15:17:15 -0500 Received: from rhlx01.hs-esslingen.de ([129.143.116.10]:53254 "EHLO rhlx01.hs-esslingen.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751468Ab0K3URO (ORCPT ); Tue, 30 Nov 2010 15:17:14 -0500 X-Greylist: delayed 576 seconds by postgrey-1.27 at vger.kernel.org; Tue, 30 Nov 2010 15:17:14 EST Received: by rhlx01.hs-esslingen.de (Postfix, from userid 102) id 850F740099; Tue, 30 Nov 2010 21:07:37 +0100 (CET) Date: Tue, 30 Nov 2010 21:07:37 +0100 From: Andreas Mohr To: gregkh@suse.de, "David S. Miller" Cc: stable@kernel.org, Arnd Bergmann , dhollis@davehollis.com, Phil Chang , netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH -stable] Add USB PID for new MOSCHIP USB ethernet controller MCS7832 variant Message-ID: <20101130200737.GA5185@rhlx01.hs-esslingen.de> MIME-Version: 1.0 Content-Disposition: inline X-Priority: none User-Agent: Mutt/1.5.20 (2009-08-17) Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Due to active notification of the new MCS7832 version by the manufacturer today (Mr. Milton; thanks!) -- quote: "functionality same as MCS7830", I'm now submitting this patch, intended for networking.git and -stable. ChangeLog: - add MCS7832 USB PID to be able to support this new device variant, too - add HIF_REG_EEPROM_STATUS definitions, comments Patch created, "semi"-tested (via my existing MCS7830 only) on -rc3, checkpatch.pl'd. GIT history seems clean, should thus apply easily. Thanks! Signed-off-by: Andreas Mohr --- 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 diff --git a/drivers/net/usb/mcs7830.c b/drivers/net/usb/mcs7830.c index a6281e3..3fbcb0d 100644 --- a/drivers/net/usb/mcs7830.c +++ b/drivers/net/usb/mcs7830.c @@ -1,5 +1,5 @@ /* - * MOSCHIP MCS7830 based USB 2.0 Ethernet Devices + * MOSCHIP MCS7830 based (7730/7830/7832) USB 2.0 Ethernet Devices * * based on usbnet.c, asix.c and the vendor provided mcs7830 driver * @@ -11,8 +11,12 @@ * * Definitions gathered from MOSCHIP, Data Sheet_7830DA.pdf (thanks!). * + * 2010-11-30: add 7832 USB PID ("functionality same as MCS7830"), + * per active notification by manufacturer + * * TODO: * - support HIF_REG_CONFIG_SLEEPMODE/HIF_REG_CONFIG_TXENABLE (via autopm?) + * - support HIF_REG_FRAME_DROP_COUNTER, for interface statistics * - implement ethtool_ops get_pauseparam/set_pauseparam * via HIF_REG_PAUSE_THRESHOLD (>= revision C only!) * - implement get_eeprom/[set_eeprom] @@ -60,6 +64,7 @@ #define MCS7830_MAX_MCAST 64 #define MCS7830_VENDOR_ID 0x9710 +#define MCS7832_PRODUCT_ID 0x7832 #define MCS7830_PRODUCT_ID 0x7830 #define MCS7730_PRODUCT_ID 0x7730 @@ -97,6 +102,11 @@ enum { HIF_REG_FRAME_DROP_COUNTER = 0x15, /* 0..ff; reset: 0 */ HIF_REG_PAUSE_THRESHOLD = 0x16, HIF_REG_PAUSE_THRESHOLD_DEFAULT = 0, + HIF_REG_EEPROM_STATUS = 0x17, + /* "read in progress": bits 0/1/2 == 0 */ + HIF_REG_EEPROM_STATUS_SW_EEPROM_READ = 0x04, + HIF_REG_EEPROM_STATUS_READ_FAILED = 0x02, /* ro! */ + HIF_REG_EEPROM_STATUS_READ_SUCCEEDED = 0x01, /* ro! */ }; /* Trailing status byte in Ethernet Rx frame */ @@ -362,6 +372,11 @@ static int mcs7830_get_rev(struct usbnet *dev) { u8 dummy[2]; int ret; + /* TODO?: 7832 _might_ have more registers (untested: no hardware). + Might also be a better idea to gather revision from + SEEPROM field "Release Number" (if reliably supported + by all variants). + */ ret = mcs7830_get_reg(dev, HIF_REG_FRAME_DROP_COUNTER, 2, dummy); if (ret > 0) return 2; /* Rev C or later */ @@ -626,7 +641,7 @@ static int mcs7830_rx_fixup(struct usbnet *dev, struct sk_buff *skb) } static const struct driver_info moschip_info = { - .description = "MOSCHIP 7830/7730 usb-NET adapter", + .description = "MOSCHIP 7830/7832/7730 usb-NET adapter", .bind = mcs7830_bind, .rx_fixup = mcs7830_rx_fixup, .flags = FLAG_ETHER, @@ -645,6 +660,10 @@ static const struct driver_info sitecom_info = { static const struct usb_device_id products[] = { { + USB_DEVICE(MCS7830_VENDOR_ID, MCS7832_PRODUCT_ID), + .driver_info = (unsigned long) &moschip_info, + }, + { USB_DEVICE(MCS7830_VENDOR_ID, MCS7830_PRODUCT_ID), .driver_info = (unsigned long) &moschip_info, },