LKML Archive on lore.kernel.org help / color / mirror / Atom feed
From: Alan <alan@lxorguk.ukuu.org.uk> To: jgarzik@pobox.com, linux-kernel@vger.kernel.org Subject: [PATCH]: set_mode, Fix the FIXME Date: Wed, 24 Jan 2007 11:47:07 +0000 [thread overview] Message-ID: <20070124114707.42370540@localhost.localdomain> (raw) When set_mode() changed ->set_mode didn't adapt. This makes the needed changes and removes the relevant FIXME case. Signed-off-by: Alan Cox <alan@redhat.com> diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.20-rc4-mm1/drivers/ata/ata_generic.c linux-2.6.20-rc4-mm1/drivers/ata/ata_generic.c --- linux.vanilla-2.6.20-rc4-mm1/drivers/ata/ata_generic.c 2007-01-22 16:25:32.000000000 +0000 +++ linux-2.6.20-rc4-mm1/drivers/ata/ata_generic.c 2007-01-22 16:46:02.000000000 +0000 @@ -64,6 +64,7 @@ /** * generic_set_mode - mode setting * @ap: interface to set up + * @unused: returned device on error * * Use a non standard set_mode function. We don't want to be tuned. * The BIOS configured everything. Our job is not to fiddle. We @@ -71,7 +72,7 @@ * and respect them. */ -static void generic_set_mode(struct ata_port *ap) +static int generic_set_mode(struct ata_port *ap, struct ata_device **unused) { int dma_enabled = 0; int i; @@ -82,7 +83,7 @@ for (i = 0; i < ATA_MAX_DEVICES; i++) { struct ata_device *dev = &ap->device[i]; - if (ata_dev_enabled(dev)) { + if (ata_dev_ready(dev)) { /* We don't really care */ dev->pio_mode = XFER_PIO_0; dev->dma_mode = XFER_MW_DMA_0; @@ -99,6 +100,7 @@ } } } + return 0; } static struct scsi_host_template generic_sht = { diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.20-rc4-mm1/drivers/ata/libata-core.c linux-2.6.20-rc4-mm1/drivers/ata/libata-core.c --- linux.vanilla-2.6.20-rc4-mm1/drivers/ata/libata-core.c 2007-01-22 16:26:50.000000000 +0000 +++ linux-2.6.20-rc4-mm1/drivers/ata/libata-core.c 2007-01-24 00:13:00.000000000 +0000 @@ -2445,18 +2445,8 @@ int i, rc = 0, used_dma = 0, found = 0; /* has private set_mode? */ - if (ap->ops->set_mode) { - /* FIXME: make ->set_mode handle no device case and - * return error code and failing device on failure. - */ - for (i = 0; i < ATA_MAX_DEVICES; i++) { - if (ata_dev_ready(&ap->device[i])) { - ap->ops->set_mode(ap); - break; - } - } - return 0; - } + if (ap->ops->set_mode) + return ap->ops->set_mode(ap, r_failed_dev); /* step 1: calculate xfer_mask */ for (i = 0; i < ATA_MAX_DEVICES; i++) { diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.20-rc4-mm1/drivers/ata/pata_it821x.c linux-2.6.20-rc4-mm1/drivers/ata/pata_it821x.c --- linux.vanilla-2.6.20-rc4-mm1/drivers/ata/pata_it821x.c 2007-01-22 16:26:50.000000000 +0000 +++ linux-2.6.20-rc4-mm1/drivers/ata/pata_it821x.c 2007-01-22 16:48:00.000000000 +0000 @@ -476,6 +476,7 @@ /** * it821x_smart_set_mode - mode setting * @ap: interface to set up + * @unused: device that failed (error only) * * Use a non standard set_mode function. We don't want to be tuned. * The BIOS configured everything. Our job is not to fiddle. We @@ -483,7 +484,7 @@ * and respect them. */ -static void it821x_smart_set_mode(struct ata_port *ap) +static int it821x_smart_set_mode(struct ata_port *ap, struct ata_device **unused) { int dma_enabled = 0; int i; @@ -512,6 +513,7 @@ } } } + return 0; } /** diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.20-rc4-mm1/drivers/ata/pata_ixp4xx_cf.c linux-2.6.20-rc4-mm1/drivers/ata/pata_ixp4xx_cf.c --- linux.vanilla-2.6.20-rc4-mm1/drivers/ata/pata_ixp4xx_cf.c 2007-01-22 16:25:32.000000000 +0000 +++ linux-2.6.20-rc4-mm1/drivers/ata/pata_ixp4xx_cf.c 2007-01-22 16:48:16.000000000 +0000 @@ -23,9 +23,9 @@ #include <scsi/scsi_host.h> #define DRV_NAME "pata_ixp4xx_cf" -#define DRV_VERSION "0.1.1" +#define DRV_VERSION "0.1.1ac1" -static void ixp4xx_set_mode(struct ata_port *ap) +static int ixp4xx_set_mode(struct ata_port *ap, struct ata_device *adev) { int i; @@ -38,6 +38,7 @@ dev->flags |= ATA_DFLAG_PIO; } } + return 0; } static void ixp4xx_phy_reset(struct ata_port *ap) diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.20-rc4-mm1/drivers/ata/pata_legacy.c linux-2.6.20-rc4-mm1/drivers/ata/pata_legacy.c --- linux.vanilla-2.6.20-rc4-mm1/drivers/ata/pata_legacy.c 2007-01-22 16:25:32.000000000 +0000 +++ linux-2.6.20-rc4-mm1/drivers/ata/pata_legacy.c 2007-01-22 16:48:16.000000000 +0000 @@ -96,6 +96,7 @@ /** * legacy_set_mode - mode setting * @ap: IDE interface + * @unused: Device that failed when error is returned * * Use a non standard set_mode function. We don't want to be tuned. * @@ -105,7 +106,7 @@ * expand on this as per hdparm in the base kernel. */ -static void legacy_set_mode(struct ata_port *ap) +static int legacy_set_mode(struct ata_port *ap, struct ata_device **unused) { int i; @@ -118,6 +119,7 @@ dev->flags |= ATA_DFLAG_PIO; } } + return 0; } static struct scsi_host_template legacy_sht = { diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.20-rc4-mm1/drivers/ata/pata_rz1000.c linux-2.6.20-rc4-mm1/drivers/ata/pata_rz1000.c --- linux.vanilla-2.6.20-rc4-mm1/drivers/ata/pata_rz1000.c 2007-01-22 16:25:32.000000000 +0000 +++ linux-2.6.20-rc4-mm1/drivers/ata/pata_rz1000.c 2007-01-22 16:49:36.000000000 +0000 @@ -52,19 +52,20 @@ /** * rz1000_set_mode - mode setting function * @ap: ATA interface + * @unused: returned device on set_mode failure * * Use a non standard set_mode function. We don't want to be tuned. We * would prefer to be BIOS generic but for the fact our hardware is * whacked out. */ -static void rz1000_set_mode(struct ata_port *ap) +static int rz1000_set_mode(struct ata_port *ap, struct ata_device **unused) { int i; for (i = 0; i < ATA_MAX_DEVICES; i++) { struct ata_device *dev = &ap->device[i]; - if (ata_dev_enabled(dev)) { + if (ata_dev_ready(dev)) { /* We don't really care */ dev->pio_mode = XFER_PIO_0; dev->xfer_mode = XFER_PIO_0; @@ -72,6 +73,7 @@ dev->flags |= ATA_DFLAG_PIO; } } + return 0; } diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.20-rc4-mm1/include/linux/libata.h linux-2.6.20-rc4-mm1/include/linux/libata.h --- linux.vanilla-2.6.20-rc4-mm1/include/linux/libata.h 2007-01-22 16:26:52.000000000 +0000 +++ linux-2.6.20-rc4-mm1/include/linux/libata.h 2007-01-22 16:53:47.000000000 +0000 @@ -613,11 +613,11 @@ void (*dev_select)(struct ata_port *ap, unsigned int device); void (*phy_reset) (struct ata_port *ap); /* obsolete */ - void (*set_mode) (struct ata_port *ap); + int (*set_mode) (struct ata_port *ap, struct ata_device **r_failed_dev); void (*post_set_mode) (struct ata_port *ap); - int (*check_atapi_dma) (struct ata_queued_cmd *qc); + int (*check_atapi_dma) (struct ata_queued_cmd *qc); void (*bmdma_setup) (struct ata_queued_cmd *qc); void (*bmdma_start) (struct ata_queued_cmd *qc);
next reply other threads:[~2007-01-24 11:37 UTC|newest] Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top 2007-01-24 11:47 Alan [this message] 2007-01-25 0:56 ` [PATCH]: set_mode, Fix the FIXME Jeff Garzik
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20070124114707.42370540@localhost.localdomain \ --to=alan@lxorguk.ukuu.org.uk \ --cc=jgarzik@pobox.com \ --cc=linux-kernel@vger.kernel.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).