diff options
author | mav <mav@FreeBSD.org> | 2009-02-18 22:17:48 +0000 |
---|---|---|
committer | mav <mav@FreeBSD.org> | 2009-02-18 22:17:48 +0000 |
commit | f10246717a6419e9755a0fbdd0a21da8b769c8f9 (patch) | |
tree | c51d12167c13be63889b1950e54f936d14b2ba41 /sys/dev/ata/chipsets/ata-jmicron.c | |
parent | bf75b4612ae760eeef7dbe0b2544c2532419caac (diff) | |
download | FreeBSD-src-f10246717a6419e9755a0fbdd0a21da8b769c8f9.zip FreeBSD-src-f10246717a6419e9755a0fbdd0a21da8b769c8f9.tar.gz |
As soon as they called in only same one place (ata_pcichannel_attach()),
join allocate() and dmainit() atapci subdriver's channel initialization
methods into single ch_attach() method.
As opposite to ch_attach() add new ch_detach() method to deallocate/disable
channel.
Diffstat (limited to 'sys/dev/ata/chipsets/ata-jmicron.c')
-rw-r--r-- | sys/dev/ata/chipsets/ata-jmicron.c | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/sys/dev/ata/chipsets/ata-jmicron.c b/sys/dev/ata/chipsets/ata-jmicron.c index 32a9b57..30e334f 100644 --- a/sys/dev/ata/chipsets/ata-jmicron.c +++ b/sys/dev/ata/chipsets/ata-jmicron.c @@ -53,7 +53,7 @@ __FBSDID("$FreeBSD$"); /* local prototypes */ static int ata_jmicron_chipinit(device_t dev); -static int ata_jmicron_allocate(device_t dev); +static int ata_jmicron_ch_attach(device_t dev); static void ata_jmicron_reset(device_t dev); static void ata_jmicron_dmainit(device_t dev); static void ata_jmicron_setmode(device_t dev, int mode); @@ -112,9 +112,8 @@ ata_jmicron_chipinit(device_t dev) return 0; /* otherwise we are on the PATA part */ - ctlr->allocate = ata_pci_allocate; + ctlr->ch_attach = ata_pci_ch_attach; ctlr->reset = ata_generic_reset; - ctlr->dmainit = ata_pci_dmainit; ctlr->setmode = ata_jmicron_setmode; ctlr->channels = ctlr->chip->cfg2; } @@ -126,9 +125,8 @@ ata_jmicron_chipinit(device_t dev) if (ctlr->chip->cfg1 && (error = ata_ahci_chipinit(dev))) return error; - ctlr->allocate = ata_jmicron_allocate; + ctlr->ch_attach = ata_jmicron_ch_attach; ctlr->reset = ata_jmicron_reset; - ctlr->dmainit = ata_jmicron_dmainit; ctlr->setmode = ata_jmicron_setmode; /* set the number of HW channels */ @@ -138,19 +136,21 @@ ata_jmicron_chipinit(device_t dev) } static int -ata_jmicron_allocate(device_t dev) +ata_jmicron_ch_attach(device_t dev) { struct ata_pci_controller *ctlr = device_get_softc(device_get_parent(dev)); struct ata_channel *ch = device_get_softc(dev); int error; + ata_jmicron_dmainit(dev); + if (ch->unit >= ctlr->chip->cfg1) { ch->unit -= ctlr->chip->cfg1; - error = ata_pci_allocate(dev); + error = ata_pci_ch_attach(dev); ch->unit += ctlr->chip->cfg1; } else - error = ata_ahci_allocate(dev); + error = ata_ahci_ch_attach(dev); return error; } |