* [PATCH 7/10] ide: add ->chipset field to ide_pci_device_t
@ 2007-09-11 21:39 Bartlomiej Zolnierkiewicz
2007-09-15 17:20 ` Sergei Shtylyov
0 siblings, 1 reply; 4+ messages in thread
From: Bartlomiej Zolnierkiewicz @ 2007-09-11 21:39 UTC (permalink / raw)
To: linux-ide
Add ->chipset field to ide_pci_device_t and use it in ide_hwif_configure()
to set hwif->chipset. Convert cmd64x, cy82c693, rz1000 and trm290 host
drivers to use this new ability.
While at it define hwif_chipset_t as u8 to save some space in hw_regs_t,
ide_hwif_t and ide_pci_device_t instances.
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
---
drivers/ide/pci/cmd64x.c | 4 +---
drivers/ide/pci/cy82c693.c | 2 +-
drivers/ide/pci/rz1000.c | 2 +-
drivers/ide/pci/trm290.c | 2 +-
drivers/ide/setup-pci.c | 2 +-
include/linux/ide.h | 7 +++++--
6 files changed, 10 insertions(+), 9 deletions(-)
Index: b/drivers/ide/pci/cmd64x.c
===================================================================
--- a/drivers/ide/pci/cmd64x.c
+++ b/drivers/ide/pci/cmd64x.c
@@ -506,9 +506,6 @@ static void __devinit init_hwif_cmd64x(i
hwif->set_pio_mode = &cmd64x_set_pio_mode;
hwif->set_dma_mode = &cmd64x_set_dma_mode;
- if (dev->device == PCI_DEVICE_ID_CMD_646)
- hwif->chipset = ide_cmd646;
-
if (!hwif->dma_base)
return;
@@ -575,6 +572,7 @@ static ide_pci_device_t cmd64x_chipsets[
.init_chipset = init_chipset_cmd64x,
.init_hwif = init_hwif_cmd64x,
.enablebits = {{0x51,0x04,0x04}, {0x51,0x08,0x08}},
+ .chipset = ide_cmd646,
.host_flags = IDE_HFLAG_ABUSE_PREFETCH | IDE_HFLAG_BOOTABLE,
.pio_mask = ATA_PIO5,
.mwdma_mask = ATA_MWDMA2,
Index: b/drivers/ide/pci/cy82c693.c
===================================================================
--- a/drivers/ide/pci/cy82c693.c
+++ b/drivers/ide/pci/cy82c693.c
@@ -428,7 +428,6 @@ static unsigned int __devinit init_chips
*/
static void __devinit init_hwif_cy82c693(ide_hwif_t *hwif)
{
- hwif->chipset = ide_cy82c693;
hwif->set_pio_mode = &cy82c693_set_pio_mode;
if (hwif->dma_base == 0)
@@ -454,6 +453,7 @@ static ide_pci_device_t cy82c693_chipset
.init_chipset = init_chipset_cy82c693,
.init_iops = init_iops_cy82c693,
.init_hwif = init_hwif_cy82c693,
+ .chipset = ide_cy82c693,
.host_flags = IDE_HFLAG_SINGLE | IDE_HFLAG_TRUST_BIOS_FOR_DMA |
IDE_HFLAG_BOOTABLE,
.pio_mask = ATA_PIO4,
Index: b/drivers/ide/pci/rz1000.c
===================================================================
--- a/drivers/ide/pci/rz1000.c
+++ b/drivers/ide/pci/rz1000.c
@@ -35,7 +35,6 @@ static void __devinit init_hwif_rz1000 (
u16 reg;
struct pci_dev *dev = hwif->pci_dev;
- hwif->chipset = ide_rz1000;
if (!pci_read_config_word (dev, 0x40, ®) &&
!pci_write_config_word(dev, 0x40, reg & 0xdfff)) {
printk(KERN_INFO "%s: disabled chipset read-ahead "
@@ -53,6 +52,7 @@ static void __devinit init_hwif_rz1000 (
static ide_pci_device_t rz1000_chipset __devinitdata = {
.name = "RZ100x",
.init_hwif = init_hwif_rz1000,
+ .chipset = ide_rz1000,
.host_flags = IDE_HFLAG_NO_DMA | IDE_HFLAG_BOOTABLE,
};
Index: b/drivers/ide/pci/trm290.c
===================================================================
--- a/drivers/ide/pci/trm290.c
+++ b/drivers/ide/pci/trm290.c
@@ -250,7 +250,6 @@ static void __devinit init_hwif_trm290(i
u8 reg = 0;
struct pci_dev *dev = hwif->pci_dev;
- hwif->chipset = ide_trm290;
cfgbase = pci_resource_start(dev, 4);
if ((dev->class & 5) && cfgbase) {
hwif->config_data = cfgbase;
@@ -323,6 +322,7 @@ static void __devinit init_hwif_trm290(i
static ide_pci_device_t trm290_chipset __devinitdata = {
.name = "TRM290",
.init_hwif = init_hwif_trm290,
+ .chipset = ide_trm290,
.host_flags = IDE_HFLAG_NO_ATAPI_DMA |
#if 0 /* play it safe for now */
IDE_HFLAG_TRUST_BIOS_FOR_DMA |
Index: b/drivers/ide/setup-pci.c
===================================================================
--- a/drivers/ide/setup-pci.c
+++ b/drivers/ide/setup-pci.c
@@ -397,7 +397,7 @@ static ide_hwif_t *ide_hwif_configure(st
memcpy(hwif->io_ports, hwif->hw.io_ports, sizeof(hwif->io_ports));
hwif->noprobe = !hwif->io_ports[IDE_DATA_OFFSET];
}
- hwif->chipset = ide_pci;
+ hwif->chipset = d->chipset ? d->chipset : ide_pci;
hwif->pci_dev = dev;
hwif->cds = (struct ide_pci_device_s *) d;
hwif->channel = port;
Index: b/include/linux/ide.h
===================================================================
--- a/include/linux/ide.h
+++ b/include/linux/ide.h
@@ -200,14 +200,16 @@ typedef int (ide_ack_intr_t)(struct hwif
* hwif_chipset_t is used to keep track of the specific hardware
* chipset used by each IDE interface, if known.
*/
-typedef enum { ide_unknown, ide_generic, ide_pci,
+enum { ide_unknown, ide_generic, ide_pci,
ide_cmd640, ide_dtc2278, ide_ali14xx,
ide_qd65xx, ide_umc8672, ide_ht6560b,
ide_rz1000, ide_trm290,
ide_cmd646, ide_cy82c693, ide_4drives,
ide_pmac, ide_etrax100, ide_acorn,
ide_au1xxx, ide_forced
-} hwif_chipset_t;
+};
+
+typedef u8 hwif_chipset_t;
/*
* Structure to hold all information about the location of this port
@@ -1282,6 +1284,7 @@ typedef struct ide_pci_device_s {
void (*init_dma)(ide_hwif_t *, unsigned long);
void (*fixup)(ide_hwif_t *);
ide_pci_enablebit_t enablebits[2];
+ hwif_chipset_t chipset;
unsigned int extra;
u32 host_flags;
u8 pio_mask;
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH 7/10] ide: add ->chipset field to ide_pci_device_t
2007-09-11 21:39 [PATCH 7/10] ide: add ->chipset field to ide_pci_device_t Bartlomiej Zolnierkiewicz
@ 2007-09-15 17:20 ` Sergei Shtylyov
2007-09-17 11:09 ` Bartlomiej Zolnierkiewicz
0 siblings, 1 reply; 4+ messages in thread
From: Sergei Shtylyov @ 2007-09-15 17:20 UTC (permalink / raw)
To: Bartlomiej Zolnierkiewicz; +Cc: linux-ide
Bartlomiej Zolnierkiewicz wrote:
> Add ->chipset field to ide_pci_device_t and use it in ide_hwif_configure()
> to set hwif->chipset. Convert cmd64x, cy82c693, rz1000 and trm290 host
> drivers to use this new ability.
> While at it define hwif_chipset_t as u8 to save some space in hw_regs_t,
> ide_hwif_t and ide_pci_device_t instances.
I( wonder what's so special about say cmd64x_chipset -- why it's got its
own value? Some histerical raisins? :-)
MBR, Sergei
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH 7/10] ide: add ->chipset field to ide_pci_device_t
2007-09-15 17:20 ` Sergei Shtylyov
@ 2007-09-17 11:09 ` Bartlomiej Zolnierkiewicz
2007-09-18 10:49 ` Alan Cox
0 siblings, 1 reply; 4+ messages in thread
From: Bartlomiej Zolnierkiewicz @ 2007-09-17 11:09 UTC (permalink / raw)
To: Sergei Shtylyov; +Cc: linux-ide
On Saturday 15 September 2007, Sergei Shtylyov wrote:
> Bartlomiej Zolnierkiewicz wrote:
>
> > Add ->chipset field to ide_pci_device_t and use it in ide_hwif_configure()
> > to set hwif->chipset. Convert cmd64x, cy82c693, rz1000 and trm290 host
> > drivers to use this new ability.
>
> > While at it define hwif_chipset_t as u8 to save some space in hw_regs_t,
> > ide_hwif_t and ide_pci_device_t instances.
>
> I( wonder what's so special about say cmd64x_chipset -- why it's got its
> own value? Some histerical raisins? :-)
It seems that ide_cmd646 causes serialization of interfaces in init_irq()...
Would be great if somebody could comment more on the reasons for ide_cmd646.
Thanks,
Bart
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH 7/10] ide: add ->chipset field to ide_pci_device_t
2007-09-17 11:09 ` Bartlomiej Zolnierkiewicz
@ 2007-09-18 10:49 ` Alan Cox
0 siblings, 0 replies; 4+ messages in thread
From: Alan Cox @ 2007-09-18 10:49 UTC (permalink / raw)
To: Bartlomiej Zolnierkiewicz; +Cc: Sergei Shtylyov, linux-ide
> It seems that ide_cmd646 causes serialization of interfaces in init_irq()...
> Would be great if somebody could comment more on the reasons for ide_cmd646.
No idea but various CMD64x chips had problems cured by serializing stuff
- notably on some HP boxes.
Alan
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2007-09-18 10:41 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-09-11 21:39 [PATCH 7/10] ide: add ->chipset field to ide_pci_device_t Bartlomiej Zolnierkiewicz
2007-09-15 17:20 ` Sergei Shtylyov
2007-09-17 11:09 ` Bartlomiej Zolnierkiewicz
2007-09-18 10:49 ` Alan Cox
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).