From patchwork Thu Apr 11 19:56:47 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Frank Schaefer X-Patchwork-Id: 17881 X-Patchwork-Delegate: hverkuil@xs4all.nl Received: from mail.tu-berlin.de ([130.149.7.33]) by www.linuxtv.org with esmtp (Exim 4.72) (envelope-from ) id 1UQNbG-0001yh-I3; Thu, 11 Apr 2013 21:56:02 +0200 X-tubIT-Incoming-IP: 209.132.180.67 Received: from vger.kernel.org ([209.132.180.67]) by mail.tu-berlin.de (exim-4.75/mailfrontend-2) with esmtp id 1UQNbF-0001RX-Iv; Thu, 11 Apr 2013 21:56:02 +0200 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752409Ab3DKT4A (ORCPT + 1 other); Thu, 11 Apr 2013 15:56:00 -0400 Received: from mail-ea0-f180.google.com ([209.85.215.180]:57431 "EHLO mail-ea0-f180.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751670Ab3DKTz7 (ORCPT ); Thu, 11 Apr 2013 15:55:59 -0400 Received: by mail-ea0-f180.google.com with SMTP id d10so861888eaj.25 for ; Thu, 11 Apr 2013 12:55:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=20120113; h=x-received:from:to:cc:subject:date:message-id:x-mailer:mime-version :content-type:content-transfer-encoding; bh=iNY547iaQoitRqj0nGXxSb4ZxkFW6lHgIUm1DJyWfPU=; b=o3VpjpDiKf5dCDBq1OoTSpxS8/mh4z/jgBJ4elPEZXtvbXzIb3WpQxKGkMpAmkvmVE ariOTMhANrzt7qkzJusF7NfFLCIlboMTt/mjWGMzdl30nzXo4wzAHWJb7+VCXF5SnySP G1l9i0OW/tmQ0L0AUYN24FQTdZFwK1QCLmZ3SpSEOft5+rQ2TSHmVu+lTweLOyji+9GN 8PyeNQfNXaqmA8HM1pqLeHTOpkwLUq2AvUFTo5g/FoJoat1nJRGyAkY1gx7pTbunHn6t mjWsXlZ0xiIwpV25U99uO0ymOy/ezUvNrpQ0xhGBQZAbW8kPKT4ATASWBdVec7exLSIb euOw== X-Received: by 10.14.110.198 with SMTP id u46mr19719262eeg.41.1365710157397; Thu, 11 Apr 2013 12:55:57 -0700 (PDT) Received: from Athlon64X2-5000.site (ip-109-90-212-181.unitymediagroup.de. [109.90.212.181]) by mx.google.com with ESMTPS id bj2sm7468024eeb.1.2013.04.11.12.55.47 (version=TLSv1.2 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Thu, 11 Apr 2013 12:55:55 -0700 (PDT) From: =?UTF-8?q?Frank=20Sch=C3=A4fer?= To: mchehab@redhat.com Cc: linux-media@vger.kernel.org, =?UTF-8?q?Frank=20Sch=C3=A4fer?= Subject: [PATCH] em28xx: improve em2710/em2820 distinction Date: Thu, 11 Apr 2013 21:56:47 +0200 Message-Id: <1365710207-4974-1-git-send-email-fschaefer.oss@googlemail.com> X-Mailer: git-send-email 1.7.10.4 MIME-Version: 1.0 Sender: linux-media-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org X-PMX-Version: 5.6.1.2065439, Antispam-Engine: 2.7.2.376379, Antispam-Data: 2013.4.11.194824 X-PMX-Spam: Gauge=IIIIIIII, Probability=8%, Report=' MULTIPLE_RCPTS 0.1, HTML_00_01 0.05, HTML_00_10 0.05, BODYTEXTP_SIZE_3000_LESS 0, BODY_SIZE_2000_2999 0, BODY_SIZE_5000_LESS 0, BODY_SIZE_7000_LESS 0, CT_TEXT_PLAIN_UTF8_CAPS 0, DKIM_SIGNATURE 0, URI_ENDS_IN_HTML 0, __ANY_URI 0, __CP_URI_IN_BODY 0, __CT 0, __CTE 0, __CT_TEXT_PLAIN 0, __FRAUD_BODY_WEBMAIL 0, __FRAUD_WEBMAIL 0, __FRAUD_WEBMAIL_FROM 0, __HAS_FROM 0, __HAS_MSGID 0, __HAS_X_MAILER 0, __HAS_X_MAILING_LIST 0, __MIME_TEXT_ONLY 0, __MIME_VERSION 0, __MULTIPLE_RCPTS_CC_X2 0, __PHISH_SPEAR_STRUCTURE_1 0, __SANE_MSGID 0, __TO_MALFORMED_2 0, __TO_NO_NAME 0, __URI_NO_WWW 0, __URI_NS , __YOUTUBE_RCVD 0' Chip id 18 is used by the em2710 and em2820. The current code assumes that if the device is a camera, the chip is an em2710 and an em2820 otherwise. But it turned out that the em2820 is also used in camera devices. "Silvercrest 1.3 MPix" webcams for example are available with both chips. Fortunately both variants are using different generic USD IDs which give us a hint about the used chip. Signed-off-by: Frank Schäfer --- drivers/media/usb/em28xx/em28xx-cards.c | 16 ++++++++-------- 1 Datei geändert, 8 Zeilen hinzugefügt(+), 8 Zeilen entfernt(-) diff --git a/drivers/media/usb/em28xx/em28xx-cards.c b/drivers/media/usb/em28xx/em28xx-cards.c index 2da17af..bec604f 100644 --- a/drivers/media/usb/em28xx/em28xx-cards.c +++ b/drivers/media/usb/em28xx/em28xx-cards.c @@ -2909,6 +2909,14 @@ static int em28xx_init_dev(struct em28xx *dev, struct usb_device *udev, break; case CHIP_ID_EM2820: chip_name = "em2710/2820"; + if (dev->udev->descriptor.idVendor == 0xeb1a) { + __le16 idProd = dev->udev->descriptor.idProduct; + if (le16_to_cpu(idProd) == 0x2710) + chip_name = "em2710"; + else if (le16_to_cpu(idProd) == 0x2820) + chip_name = "em2820"; + } + /* NOTE: the em2820 is used in webcams, too ! */ break; case CHIP_ID_EM2840: chip_name = "em2840"; @@ -2974,14 +2982,6 @@ static int em28xx_init_dev(struct em28xx *dev, struct usb_device *udev, em28xx_pre_card_setup(dev); - if (dev->chip_id == CHIP_ID_EM2820) { - if (dev->board.is_webcam) - chip_name = "em2710"; - else - chip_name = "em2820"; - snprintf(dev->name, sizeof(dev->name), "%s #%d", chip_name, dev->devno); - } - if (!dev->board.is_em2800) { /* Resets I2C speed */ retval = em28xx_write_reg(dev, EM28XX_R06_I2C_CLK, dev->board.i2c_speed);