Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752621AbYLMWJ2 (ORCPT ); Sat, 13 Dec 2008 17:09:28 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1751585AbYLMWJT (ORCPT ); Sat, 13 Dec 2008 17:09:19 -0500 Received: from einhorn.in-berlin.de ([192.109.42.8]:49150 "EHLO einhorn.in-berlin.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751372AbYLMWJT (ORCPT ); Sat, 13 Dec 2008 17:09:19 -0500 X-Envelope-From: stefanr@s5r6.in-berlin.de Date: Sat, 13 Dec 2008 23:09:12 +0100 (CET) From: Stefan Richter Subject: [PATCH 1/2] ieee1394: add quirk fix for Freecom HDD To: linux1394-devel@lists.sourceforge.net cc: linux-kernel@vger.kernel.org In-Reply-To: <49441769.1060209@s5r6.in-berlin.de> Message-ID: References: <20081212220902.10115108040@picon.linux-foundation.org> <4942E4E0.2030109@s5r6.in-berlin.de> <49441769.1060209@s5r6.in-berlin.de> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; CHARSET=us-ascii Content-Disposition: INLINE Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1579 Lines: 49 Date: Sat, 13 Dec 2008 01:43:59 +0100 (CET) From: Stefan Richter Subject: ieee1394: add quirk fix for Freecom HDD According to http://bugzilla.kernel.org/show_bug.cgi?id=12206, Freecom FireWire Hard Drive 1TB reports max_rom=2 but returns garbage if block read requests are used to read the config ROM. Force max_rom=0 to limit them to quadlet read requests. Reported-by: Christian Mueller Signed-off-by: Stefan Richter --- Candidate patch for 2.6.28 and 2.6.27.y. Christian, please test and confirm that I got this right. drivers/ieee1394/nodemgr.c | 6 ++++++ 1 file changed, 6 insertions(+) Index: linux/drivers/ieee1394/nodemgr.c =================================================================== --- linux.orig/drivers/ieee1394/nodemgr.c +++ linux/drivers/ieee1394/nodemgr.c @@ -115,8 +115,14 @@ static int nodemgr_bus_read(struct csr12 return error; } +#define OUI_FREECOM_TECHNOLOGIES_GMBH 0x0001db + static int nodemgr_get_max_rom(quadlet_t *bus_info_data, void *__ci) { + /* Freecom FireWire Hard Drive firmware bug */ + if (be32_to_cpu(bus_info_data[3]) >> 8 == OUI_FREECOM_TECHNOLOGIES_GMBH) + return 0; + return (be32_to_cpu(bus_info_data[2]) >> 8) & 0x3; } -- Stefan Richter -=====-==--- ==-- -==-= http://arcgraph.de/sr/ -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/