diff options
author | marius <marius@FreeBSD.org> | 2012-03-21 08:57:15 +0000 |
---|---|---|
committer | marius <marius@FreeBSD.org> | 2012-03-21 08:57:15 +0000 |
commit | 7bb0bdde2aed9f58ebdd5abcb420f0ee56889988 (patch) | |
tree | 66c819f0be7ba838256f4040de6ff1668299d3a5 /sys/dev/ata | |
parent | 2212d818f3c973321979ab28ae07330eb759d324 (diff) | |
download | FreeBSD-src-7bb0bdde2aed9f58ebdd5abcb420f0ee56889988.zip FreeBSD-src-7bb0bdde2aed9f58ebdd5abcb420f0ee56889988.tar.gz |
Remove remnants of ATA_LOCKING uses in the ATA_CAM case and wrap it
along with functions, SYSCTLs and tunables that are not used with
ATA_CAM in #ifndef ATA_CAM, similar to the existing #ifdef'ed ATA_CAM
code for the other way around. This makes it easier to understand
which parts of ata(4) actually are used in the new world order and
to later on remove the !ATA_CAM bits. It also makes it obvious that
there is something fishy with the C-bus front-end as well as in the
ATP850 support, as these used ATA_LOCKING which is defunct in the
ATA_CAM case. When fixing the former, ATA_LOCKING probably needs to
be brought back in some form or other.
Reviewed by: mav
MFC after: 1 week
Diffstat (limited to 'sys/dev/ata')
-rw-r--r-- | sys/dev/ata/ata-all.c | 42 | ||||
-rw-r--r-- | sys/dev/ata/ata-cbus.c | 6 | ||||
-rw-r--r-- | sys/dev/ata/ata-pci.c | 4 | ||||
-rw-r--r-- | sys/dev/ata/ata-pci.h | 2 | ||||
-rw-r--r-- | sys/dev/ata/ata-queue.c | 30 | ||||
-rw-r--r-- | sys/dev/ata/chipsets/ata-acard.c | 17 |
6 files changed, 94 insertions, 7 deletions
diff --git a/sys/dev/ata/ata-all.c b/sys/dev/ata/ata-all.c index 87072ad..1ff1ce1 100644 --- a/sys/dev/ata/ata-all.c +++ b/sys/dev/ata/ata-all.c @@ -79,9 +79,11 @@ static void ataaction(struct cam_sim *sim, union ccb *ccb); static void atapoll(struct cam_sim *sim); #endif static void ata_conn_event(void *, int); +#ifndef ATA_CAM static void bswap(int8_t *, int); static void btrim(int8_t *, int); static void bpack(int8_t *, int8_t *, int); +#endif static void ata_interrupt_locked(void *data); #ifdef ATA_CAM static void ata_periodic_poll(void *data); @@ -90,27 +92,36 @@ static void ata_periodic_poll(void *data); /* global vars */ MALLOC_DEFINE(M_ATA, "ata_generic", "ATA driver generic layer"); int (*ata_raid_ioctl_func)(u_long cmd, caddr_t data) = NULL; +#ifndef ATA_CAM struct intr_config_hook *ata_delayed_attach = NULL; +#endif devclass_t ata_devclass; uma_zone_t ata_request_zone; uma_zone_t ata_composite_zone; +#ifndef ATA_CAM int ata_wc = 1; int ata_setmax = 0; +#endif int ata_dma_check_80pin = 1; /* local vars */ +#ifndef ATA_CAM static int ata_dma = 1; static int atapi_dma = 1; +#endif /* sysctl vars */ static SYSCTL_NODE(_hw, OID_AUTO, ata, CTLFLAG_RD, 0, "ATA driver parameters"); +#ifndef ATA_CAM TUNABLE_INT("hw.ata.ata_dma", &ata_dma); SYSCTL_INT(_hw_ata, OID_AUTO, ata_dma, CTLFLAG_RDTUN, &ata_dma, 0, "ATA disk DMA mode control"); +#endif TUNABLE_INT("hw.ata.ata_dma_check_80pin", &ata_dma_check_80pin); SYSCTL_INT(_hw_ata, OID_AUTO, ata_dma_check_80pin, CTLFLAG_RW, &ata_dma_check_80pin, 1, "Check for 80pin cable before setting ATA DMA mode"); +#ifndef ATA_CAM TUNABLE_INT("hw.ata.atapi_dma", &atapi_dma); SYSCTL_INT(_hw_ata, OID_AUTO, atapi_dma, CTLFLAG_RDTUN, &atapi_dma, 0, "ATAPI device DMA mode control"); @@ -120,6 +131,7 @@ SYSCTL_INT(_hw_ata, OID_AUTO, wc, CTLFLAG_RDTUN, &ata_wc, 0, TUNABLE_INT("hw.ata.setmax", &ata_setmax); SYSCTL_INT(_hw_ata, OID_AUTO, setmax, CTLFLAG_RDTUN, &ata_setmax, 0, "ATA disk set max native address"); +#endif #ifdef ATA_CAM FEATURE(ata_cam, "ATA devices are accessed through the cam(4) driver"); #endif @@ -186,13 +198,13 @@ ata_attach(device_t dev) callout_init(&ch->poll_callout, 1); #endif +#ifndef ATA_CAM /* reset the controller HW, the channel and device(s) */ while (ATA_LOCKING(dev, ATA_LF_LOCK) != ch->unit) pause("ataatch", 1); -#ifndef ATA_CAM ATA_RESET(dev); -#endif ATA_LOCKING(dev, ATA_LF_UNLOCK); +#endif /* allocate DMA resources if DMA HW present*/ if (ch->dma.alloc) @@ -606,6 +618,7 @@ ata_print_cable(device_t dev, u_int8_t *who) "DMA limited to UDMA33, %s found non-ATA66 cable\n", who); } +#ifndef ATA_CAM int ata_check_80pin(device_t dev, int mode) { @@ -623,7 +636,9 @@ ata_check_80pin(device_t dev, int mode) } return mode; } +#endif +#ifndef ATA_CAM void ata_setmode(device_t dev) { @@ -644,6 +659,7 @@ ata_setmode(device_t dev) (error) ? "FAILURE " : "", ata_mode2str(mode)); atadev->mode = mode; } +#endif /* * device related interfaces @@ -732,6 +748,7 @@ ata_ioctl(struct cdev *dev, u_long cmd, caddr_t data, } #endif +#ifndef ATA_CAM int ata_device_ioctl(device_t dev, u_long cmd, caddr_t data) { @@ -830,6 +847,7 @@ ata_device_ioctl(device_t dev, u_long cmd, caddr_t data) return ENOTTY; } } +#endif #ifndef ATA_CAM static void @@ -878,6 +896,7 @@ ata_add_child(device_t parent, struct ata_device *atadev, int unit) } #endif +#ifndef ATA_CAM int ata_getparam(struct ata_device *atadev, int init) { @@ -983,6 +1002,7 @@ ata_getparam(struct ata_device *atadev, int init) } return error; } +#endif #ifndef ATA_CAM int @@ -1188,6 +1208,7 @@ ata_udelay(int interval) pause("ataslp", interval/(1000000/hz)); } +#ifndef ATA_CAM char * ata_unit2str(struct ata_device *atadev) { @@ -1200,6 +1221,7 @@ ata_unit2str(struct ata_device *atadev) sprintf(str, "%s", atadev->unit == ATA_MASTER ? "master" : "slave"); return str; } +#endif const char * ata_mode2str(int mode) @@ -1260,6 +1282,7 @@ ata_str2mode(const char *str) return (-1); } +#ifndef ATA_CAM const char * ata_satarev2str(int rev) { @@ -1272,6 +1295,7 @@ ata_satarev2str(int rev) default: return "???"; } } +#endif int ata_atapi(device_t dev, int target) @@ -1281,6 +1305,7 @@ ata_atapi(device_t dev, int target) return (ch->devices & (ATA_ATAPI_MASTER << target)); } +#ifndef ATA_CAM int ata_pmode(struct ata_params *ap) { @@ -1304,7 +1329,9 @@ ata_pmode(struct ata_params *ap) return ATA_PIO0; return ATA_PIO0; } +#endif +#ifndef ATA_CAM int ata_wmode(struct ata_params *ap) { @@ -1316,7 +1343,9 @@ ata_wmode(struct ata_params *ap) return ATA_WDMA0; return -1; } +#endif +#ifndef ATA_CAM int ata_umode(struct ata_params *ap) { @@ -1338,7 +1367,9 @@ ata_umode(struct ata_params *ap) } return -1; } +#endif +#ifndef ATA_CAM int ata_limit_mode(device_t dev, int mode, int maxmode) { @@ -1358,7 +1389,9 @@ ata_limit_mode(device_t dev, int mode, int maxmode) return mode; } +#endif +#ifndef ATA_CAM static void bswap(int8_t *buf, int len) { @@ -1367,7 +1400,9 @@ bswap(int8_t *buf, int len) while (--ptr >= (u_int16_t*)buf) *ptr = ntohs(*ptr); } +#endif +#ifndef ATA_CAM static void btrim(int8_t *buf, int len) { @@ -1379,7 +1414,9 @@ btrim(int8_t *buf, int len) for (ptr = buf + len - 1; ptr >= buf && *ptr == ' '; --ptr) *ptr = 0; } +#endif +#ifndef ATA_CAM static void bpack(int8_t *src, int8_t *dst, int len) { @@ -1402,6 +1439,7 @@ bpack(int8_t *src, int8_t *dst, int len) if (j < len) dst[j] = 0x00; } +#endif #ifdef ATA_CAM void diff --git a/sys/dev/ata/ata-cbus.c b/sys/dev/ata/ata-cbus.c index eb932ba..0508083 100644 --- a/sys/dev/ata/ata-cbus.c +++ b/sys/dev/ata/ata-cbus.c @@ -339,11 +339,14 @@ static int ata_cbuschannel_banking(device_t dev, int flags) { struct ata_cbus_controller *ctlr = device_get_softc(device_get_parent(dev)); +#ifndef ATA_CAM struct ata_channel *ch = device_get_softc(dev); +#endif int res; mtx_lock(&ctlr->bank_mtx); switch (flags) { +#ifndef ATA_CAM case ATA_LF_LOCK: if (ctlr->locked_bank == -1) ctlr->locked_bank = ch->unit; @@ -368,6 +371,7 @@ ata_cbuschannel_banking(device_t dev, int flags) } } break; +#endif case ATA_LF_WHICH: break; @@ -385,8 +389,10 @@ static device_method_t ata_cbuschannel_methods[] = { DEVMETHOD(device_suspend, ata_cbuschannel_suspend), DEVMETHOD(device_resume, ata_cbuschannel_resume), +#ifndef ATA_CAM /* ATA methods */ DEVMETHOD(ata_locking, ata_cbuschannel_banking), +#endif { 0, 0 } }; diff --git a/sys/dev/ata/ata-pci.c b/sys/dev/ata/ata-pci.c index 73f051b..b22b5e2 100644 --- a/sys/dev/ata/ata-pci.c +++ b/sys/dev/ata/ata-pci.c @@ -699,6 +699,7 @@ ata_pcichannel_resume(device_t dev) } +#ifndef ATA_CAM static int ata_pcichannel_locking(device_t dev, int mode) { @@ -710,6 +711,7 @@ ata_pcichannel_locking(device_t dev, int mode) else return ch->unit; } +#endif static void ata_pcichannel_reset(device_t dev) @@ -766,7 +768,9 @@ static device_method_t ata_pcichannel_methods[] = { /* ATA methods */ DEVMETHOD(ata_setmode, ata_pcichannel_setmode), DEVMETHOD(ata_getrev, ata_pcichannel_getrev), +#ifndef ATA_CAM DEVMETHOD(ata_locking, ata_pcichannel_locking), +#endif DEVMETHOD(ata_reset, ata_pcichannel_reset), { 0, 0 } diff --git a/sys/dev/ata/ata-pci.h b/sys/dev/ata/ata-pci.h index 43a4950..81aee6a 100644 --- a/sys/dev/ata/ata-pci.h +++ b/sys/dev/ata/ata-pci.h @@ -62,7 +62,9 @@ struct ata_pci_controller { int (*ch_detach)(device_t); int (*ch_suspend)(device_t); int (*ch_resume)(device_t); +#ifndef ATA_CAM int (*locking)(device_t, int); +#endif void (*reset)(device_t); int (*setmode)(device_t, int, int); int (*getrev)(device_t, int); diff --git a/sys/dev/ata/ata-queue.c b/sys/dev/ata/ata-queue.c index a58423b..070d711 100644 --- a/sys/dev/ata/ata-queue.c +++ b/sys/dev/ata/ata-queue.c @@ -43,11 +43,14 @@ __FBSDID("$FreeBSD$"); #include <dev/ata/ata-all.h> #include <ata_if.h> +#ifndef ATA_CAM /* prototypes */ static void ata_completed(void *, int); static void ata_sort_queue(struct ata_channel *ch, struct ata_request *request); -static char *ata_skey2str(u_int8_t); +static const char *ata_skey2str(u_int8_t); +#endif +#ifndef ATA_CAM void ata_queue_request(struct ata_request *request) { @@ -123,7 +126,9 @@ ata_queue_request(struct ata_request *request) sema_destroy(&request->done); } } +#endif +#ifndef ATA_CAM int ata_controlcmd(device_t dev, u_int8_t command, u_int16_t feature, u_int64_t lba, u_int16_t count) @@ -153,7 +158,9 @@ ata_controlcmd(device_t dev, u_int8_t command, u_int16_t feature, } return error; } +#endif +#ifndef ATA_CAM int ata_atapicmd(device_t dev, u_int8_t *ccb, caddr_t data, int count, int flags, int timeout) @@ -176,7 +183,9 @@ ata_atapicmd(device_t dev, u_int8_t *ccb, caddr_t data, } return error; } +#endif +#ifndef ATA_CAM void ata_start(device_t dev) { @@ -235,7 +244,9 @@ ata_start(device_t dev) } } } +#endif +#ifndef ATA_CAM void ata_finish(struct ata_request *request) { @@ -263,7 +274,9 @@ ata_finish(struct ata_request *request) } } } +#endif +#ifndef ATA_CAM static void ata_completed(void *context, int dummy) { @@ -495,6 +508,7 @@ ata_completed(void *context, int dummy) if (ch) ata_start(ch->dev); } +#endif void ata_timeout(struct ata_request *request) @@ -520,8 +534,8 @@ ata_timeout(struct ata_request *request) ata_cam_end_transaction(ch->dev, request); #endif mtx_unlock(&ch->state_mtx); - ATA_LOCKING(ch->dev, ATA_LF_UNLOCK); #ifndef ATA_CAM + ATA_LOCKING(ch->dev, ATA_LF_UNLOCK); ata_finish(request); #endif } @@ -530,6 +544,7 @@ ata_timeout(struct ata_request *request) } } +#ifndef ATA_CAM void ata_fail_requests(device_t dev) { @@ -568,7 +583,9 @@ ata_fail_requests(device_t dev) ata_finish(request); } } +#endif +#ifndef ATA_CAM /* * Rudely drop all requests queued to the channel of specified device. * XXX: The requests are leaked, use only in fatal case. @@ -586,7 +603,9 @@ ata_drop_requests(device_t dev) } mtx_unlock(&ch->queue_mtx); } +#endif +#ifndef ATA_CAM static u_int64_t ata_get_lba(struct ata_request *request) { @@ -608,7 +627,9 @@ ata_get_lba(struct ata_request *request) else return request->u.ata.lba; } +#endif +#ifndef ATA_CAM static void ata_sort_queue(struct ata_channel *ch, struct ata_request *request) { @@ -661,6 +682,7 @@ ata_sort_queue(struct ata_channel *ch, struct ata_request *request) ch->freezepoint = request; TAILQ_INSERT_AFTER(&ch->ata_queue, this, request, chain); } +#endif char * ata_cmd2str(struct ata_request *request) @@ -776,7 +798,8 @@ ata_cmd2str(struct ata_request *request) return buffer; } -static char * +#ifndef ATA_CAM +static const char * ata_skey2str(u_int8_t skey) { switch (skey) { @@ -799,3 +822,4 @@ ata_skey2str(u_int8_t skey) default: return("UNKNOWN"); } } +#endif diff --git a/sys/dev/ata/chipsets/ata-acard.c b/sys/dev/ata/chipsets/ata-acard.c index 06ca004..d53fc28 100644 --- a/sys/dev/ata/chipsets/ata-acard.c +++ b/sys/dev/ata/chipsets/ata-acard.c @@ -51,26 +51,29 @@ __FBSDID("$FreeBSD$"); #include <dev/ata/ata-pci.h> #include <ata_if.h> +#ifndef ATA_CAM struct ata_serialize { struct mtx locked_mtx; int locked_ch; int restart_ch; }; +#endif /* local prototypes */ static int ata_acard_chipinit(device_t dev); -static int ata_acard_chipdeinit(device_t dev); static int ata_acard_ch_attach(device_t dev); static int ata_acard_status(device_t dev); static int ata_acard_850_setmode(device_t dev, int target, int mode); static int ata_acard_86X_setmode(device_t dev, int target, int mode); +#ifndef ATA_CAM +static int ata_acard_chipdeinit(device_t dev); static int ata_serialize(device_t dev, int flags); static void ata_serialize_init(struct ata_serialize *serial); +#endif /* misc defines */ #define ATP_OLD 1 - /* * Acard chipset support functions */ @@ -94,7 +97,9 @@ ata_acard_probe(device_t dev) ata_set_desc(dev); ctlr->chipinit = ata_acard_chipinit; +#ifndef ATA_CAM ctlr->chipdeinit = ata_acard_chipdeinit; +#endif return (BUS_PROBE_DEFAULT); } @@ -102,7 +107,9 @@ static int ata_acard_chipinit(device_t dev) { struct ata_pci_controller *ctlr = device_get_softc(dev); +#ifndef ATA_CAM struct ata_serialize *serial; +#endif if (ata_setup_interrupt(dev, ata_generic_intr)) return ENXIO; @@ -111,17 +118,20 @@ ata_acard_chipinit(device_t dev) ctlr->ch_detach = ata_pci_ch_detach; if (ctlr->chip->cfg1 == ATP_OLD) { ctlr->setmode = ata_acard_850_setmode; +#ifndef ATA_CAM ctlr->locking = ata_serialize; serial = malloc(sizeof(struct ata_serialize), M_ATAPCI, M_WAITOK | M_ZERO); ata_serialize_init(serial); ctlr->chipset_data = serial; +#endif } else ctlr->setmode = ata_acard_86X_setmode; return 0; } +#ifndef ATA_CAM static int ata_acard_chipdeinit(device_t dev) { @@ -136,6 +146,7 @@ ata_acard_chipdeinit(device_t dev) } return (0); } +#endif static int ata_acard_ch_attach(device_t dev) @@ -228,6 +239,7 @@ ata_acard_86X_setmode(device_t dev, int target, int mode) return (mode); } +#ifndef ATA_CAM static void ata_serialize_init(struct ata_serialize *serial) { @@ -277,5 +289,6 @@ ata_serialize(device_t dev, int flags) mtx_unlock(&serial->locked_mtx); return res; } +#endif ATA_DECLARE_DRIVER(ata_acard); |