From e1273bcad57bc276f8eb10ab037f0d40c31a84bf Mon Sep 17 00:00:00 2001 From: Stefan Richter Date: Mon, 19 Sep 2011 09:29:30 +0200 Subject: [PATCH] --- yaml --- r: 272391 b: refs/heads/master c: b810e4ae111cb8b4c0ccbbe7ff4ea0a23c671e4f h: refs/heads/master i: 272389: 2984f8813fe697e6fb40c945270c521e0db24f8c 272387: 3a8bd96e1c0b0e96ae510350bbf39fe700c6e6e6 272383: b59ddc0bf7a22a5ecab80c0086a3902da70a1d43 v: v3 --- [refs] | 2 +- trunk/drivers/firewire/ohci.c | 36 ++++++++++++----------------------- 2 files changed, 13 insertions(+), 25 deletions(-) diff --git a/[refs] b/[refs] index 53d71eb94963..c74639162887 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 28897fb73c848eb441e54e859d0b64ad6b44d2e6 +refs/heads/master: b810e4ae111cb8b4c0ccbbe7ff4ea0a23c671e4f diff --git a/trunk/drivers/firewire/ohci.c b/trunk/drivers/firewire/ohci.c index 862fdf3400cf..399d5926caf7 100644 --- a/trunk/drivers/firewire/ohci.c +++ b/trunk/drivers/firewire/ohci.c @@ -2159,38 +2159,26 @@ static int configure_1394a_enhancements(struct fw_ohci *ohci) return 0; } -#define TSB41BA3D_VID 0x00080028 -#define TSB41BA3D_PID 0x00833005 - static int probe_tsb41ba3d(struct fw_ohci *ohci) { - int reg, i, vendor_id, product_id; + /* TI vendor ID = 0x080028, TSB41BA3D product ID = 0x833005 (sic) */ + static const u8 id[] = { 0x08, 0x00, 0x28, 0x83, 0x30, 0x05, }; + int reg, i; reg = read_phy_reg(ohci, 2); if (reg < 0) return reg; + if ((reg & PHY_EXTENDED_REGISTERS) != PHY_EXTENDED_REGISTERS) + return 0; - if ((reg & PHY_EXTENDED_REGISTERS) == PHY_EXTENDED_REGISTERS) { - vendor_id = 0; - for (i = 10; i < 13; i++) { - reg = read_paged_phy_reg(ohci, 1, i); - if (reg < 0) - return reg; - vendor_id = (vendor_id << 8) | reg; - } - product_id = 0; - for (i = 13; i < 16; i++) { - reg = read_paged_phy_reg(ohci, 1, i); - if (reg < 0) - return reg; - product_id = (product_id << 8) | reg; - } - - if ((vendor_id == TSB41BA3D_VID) && - (product_id == TSB41BA3D_PID)) - return 1; + for (i = ARRAY_SIZE(id) - 1; i >= 0; i--) { + reg = read_paged_phy_reg(ohci, 1, i + 10); + if (reg < 0) + return reg; + if (reg != id[i]) + return 0; } - return 0; + return 1; } static int ohci_enable(struct fw_card *card,