diff options
44 files changed, 130 insertions, 80 deletions
diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c index aeadd00411a1..a67b8e7c712d 100644 --- a/drivers/ata/ahci.c +++ b/drivers/ata/ahci.c | |||
| @@ -49,6 +49,17 @@ | |||
| 49 | #define DRV_NAME "ahci" | 49 | #define DRV_NAME "ahci" |
| 50 | #define DRV_VERSION "3.0" | 50 | #define DRV_VERSION "3.0" |
| 51 | 51 | ||
| 52 | /* Enclosure Management Control */ | ||
| 53 | #define EM_CTRL_MSG_TYPE 0x000f0000 | ||
| 54 | |||
| 55 | /* Enclosure Management LED Message Type */ | ||
| 56 | #define EM_MSG_LED_HBA_PORT 0x0000000f | ||
| 57 | #define EM_MSG_LED_PMP_SLOT 0x0000ff00 | ||
| 58 | #define EM_MSG_LED_VALUE 0xffff0000 | ||
| 59 | #define EM_MSG_LED_VALUE_ACTIVITY 0x00070000 | ||
| 60 | #define EM_MSG_LED_VALUE_OFF 0xfff80000 | ||
| 61 | #define EM_MSG_LED_VALUE_ON 0x00010000 | ||
| 62 | |||
| 52 | static int ahci_skip_host_reset; | 63 | static int ahci_skip_host_reset; |
| 53 | module_param_named(skip_host_reset, ahci_skip_host_reset, int, 0444); | 64 | module_param_named(skip_host_reset, ahci_skip_host_reset, int, 0444); |
| 54 | MODULE_PARM_DESC(skip_host_reset, "skip global host reset (0=don't skip, 1=skip)"); | 65 | MODULE_PARM_DESC(skip_host_reset, "skip global host reset (0=don't skip, 1=skip)"); |
| @@ -588,6 +599,9 @@ static const struct pci_device_id ahci_pci_tbl[] = { | |||
| 588 | { PCI_VDEVICE(MARVELL, 0x6145), board_ahci_mv }, /* 6145 */ | 599 | { PCI_VDEVICE(MARVELL, 0x6145), board_ahci_mv }, /* 6145 */ |
| 589 | { PCI_VDEVICE(MARVELL, 0x6121), board_ahci_mv }, /* 6121 */ | 600 | { PCI_VDEVICE(MARVELL, 0x6121), board_ahci_mv }, /* 6121 */ |
| 590 | 601 | ||
| 602 | /* Promise */ | ||
| 603 | { PCI_VDEVICE(PROMISE, 0x3f20), board_ahci }, /* PDC42819 */ | ||
| 604 | |||
| 591 | /* Generic, PCI class code for AHCI */ | 605 | /* Generic, PCI class code for AHCI */ |
| 592 | { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, | 606 | { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, |
| 593 | PCI_CLASS_STORAGE_SATA_AHCI, 0xffffff, board_ahci }, | 607 | PCI_CLASS_STORAGE_SATA_AHCI, 0xffffff, board_ahci }, |
| @@ -1220,18 +1234,20 @@ static void ahci_sw_activity_blink(unsigned long arg) | |||
| 1220 | struct ahci_em_priv *emp = &pp->em_priv[link->pmp]; | 1234 | struct ahci_em_priv *emp = &pp->em_priv[link->pmp]; |
| 1221 | unsigned long led_message = emp->led_state; | 1235 | unsigned long led_message = emp->led_state; |
| 1222 | u32 activity_led_state; | 1236 | u32 activity_led_state; |
| 1237 | unsigned long flags; | ||
| 1223 | 1238 | ||
| 1224 | led_message &= 0xffff0000; | 1239 | led_message &= EM_MSG_LED_VALUE; |
| 1225 | led_message |= ap->port_no | (link->pmp << 8); | 1240 | led_message |= ap->port_no | (link->pmp << 8); |
| 1226 | 1241 | ||
| 1227 | /* check to see if we've had activity. If so, | 1242 | /* check to see if we've had activity. If so, |
| 1228 | * toggle state of LED and reset timer. If not, | 1243 | * toggle state of LED and reset timer. If not, |
| 1229 | * turn LED to desired idle state. | 1244 | * turn LED to desired idle state. |
| 1230 | */ | 1245 | */ |
| 1246 | spin_lock_irqsave(ap->lock, flags); | ||
| 1231 | if (emp->saved_activity != emp->activity) { | 1247 | if (emp->saved_activity != emp->activity) { |
| 1232 | emp->saved_activity = emp->activity; | 1248 | emp->saved_activity = emp->activity; |
| 1233 | /* get the current LED state */ | 1249 | /* get the current LED state */ |
| 1234 | activity_led_state = led_message & 0x00010000; | 1250 | activity_led_state = led_message & EM_MSG_LED_VALUE_ON; |
| 1235 | 1251 | ||
| 1236 | if (activity_led_state) | 1252 | if (activity_led_state) |
| 1237 | activity_led_state = 0; | 1253 | activity_led_state = 0; |
| @@ -1239,17 +1255,18 @@ static void ahci_sw_activity_blink(unsigned long arg) | |||
| 1239 | activity_led_state = 1; | 1255 | activity_led_state = 1; |
| 1240 | 1256 | ||
| 1241 | /* clear old state */ | 1257 | /* clear old state */ |
| 1242 | led_message &= 0xfff8ffff; | 1258 | led_message &= ~EM_MSG_LED_VALUE_ACTIVITY; |
| 1243 | 1259 | ||
| 1244 | /* toggle state */ | 1260 | /* toggle state */ |
| 1245 | led_message |= (activity_led_state << 16); | 1261 | led_message |= (activity_led_state << 16); |
| 1246 | mod_timer(&emp->timer, jiffies + msecs_to_jiffies(100)); | 1262 | mod_timer(&emp->timer, jiffies + msecs_to_jiffies(100)); |
| 1247 | } else { | 1263 | } else { |
| 1248 | /* switch to idle */ | 1264 | /* switch to idle */ |
| 1249 | led_message &= 0xfff8ffff; | 1265 | led_message &= ~EM_MSG_LED_VALUE_ACTIVITY; |
| 1250 | if (emp->blink_policy == BLINK_OFF) | 1266 | if (emp->blink_policy == BLINK_OFF) |
| 1251 | led_message |= (1 << 16); | 1267 | led_message |= (1 << 16); |
| 1252 | } | 1268 | } |
| 1269 | spin_unlock_irqrestore(ap->lock, flags); | ||
| 1253 | ahci_transmit_led_message(ap, led_message, 4); | 1270 | ahci_transmit_led_message(ap, led_message, 4); |
| 1254 | } | 1271 | } |
| 1255 | 1272 | ||
| @@ -1294,7 +1311,7 @@ static ssize_t ahci_transmit_led_message(struct ata_port *ap, u32 state, | |||
| 1294 | struct ahci_em_priv *emp; | 1311 | struct ahci_em_priv *emp; |
| 1295 | 1312 | ||
| 1296 | /* get the slot number from the message */ | 1313 | /* get the slot number from the message */ |
| 1297 | pmp = (state & 0x0000ff00) >> 8; | 1314 | pmp = (state & EM_MSG_LED_PMP_SLOT) >> 8; |
| 1298 | if (pmp < MAX_SLOTS) | 1315 | if (pmp < MAX_SLOTS) |
| 1299 | emp = &pp->em_priv[pmp]; | 1316 | emp = &pp->em_priv[pmp]; |
| 1300 | else | 1317 | else |
| @@ -1319,7 +1336,7 @@ static ssize_t ahci_transmit_led_message(struct ata_port *ap, u32 state, | |||
| 1319 | message[0] |= (4 << 8); | 1336 | message[0] |= (4 << 8); |
| 1320 | 1337 | ||
| 1321 | /* ignore 0:4 of byte zero, fill in port info yourself */ | 1338 | /* ignore 0:4 of byte zero, fill in port info yourself */ |
| 1322 | message[1] = ((state & 0xfffffff0) | ap->port_no); | 1339 | message[1] = ((state & ~EM_MSG_LED_HBA_PORT) | ap->port_no); |
| 1323 | 1340 | ||
| 1324 | /* write message to EM_LOC */ | 1341 | /* write message to EM_LOC */ |
| 1325 | writel(message[0], mmio + hpriv->em_loc); | 1342 | writel(message[0], mmio + hpriv->em_loc); |
| @@ -1362,7 +1379,7 @@ static ssize_t ahci_led_store(struct ata_port *ap, const char *buf, | |||
| 1362 | state = simple_strtoul(buf, NULL, 0); | 1379 | state = simple_strtoul(buf, NULL, 0); |
| 1363 | 1380 | ||
| 1364 | /* get the slot number from the message */ | 1381 | /* get the slot number from the message */ |
| 1365 | pmp = (state & 0x0000ff00) >> 8; | 1382 | pmp = (state & EM_MSG_LED_PMP_SLOT) >> 8; |
| 1366 | if (pmp < MAX_SLOTS) | 1383 | if (pmp < MAX_SLOTS) |
| 1367 | emp = &pp->em_priv[pmp]; | 1384 | emp = &pp->em_priv[pmp]; |
| 1368 | else | 1385 | else |
| @@ -1373,7 +1390,7 @@ static ssize_t ahci_led_store(struct ata_port *ap, const char *buf, | |||
| 1373 | * activity led through em_message | 1390 | * activity led through em_message |
| 1374 | */ | 1391 | */ |
| 1375 | if (emp->blink_policy) | 1392 | if (emp->blink_policy) |
| 1376 | state &= 0xfff8ffff; | 1393 | state &= ~EM_MSG_LED_VALUE_ACTIVITY; |
| 1377 | 1394 | ||
| 1378 | return ahci_transmit_led_message(ap, state, size); | 1395 | return ahci_transmit_led_message(ap, state, size); |
| 1379 | } | 1396 | } |
| @@ -1392,16 +1409,16 @@ static ssize_t ahci_activity_store(struct ata_device *dev, enum sw_activity val) | |||
| 1392 | link->flags &= ~(ATA_LFLAG_SW_ACTIVITY); | 1409 | link->flags &= ~(ATA_LFLAG_SW_ACTIVITY); |
| 1393 | 1410 | ||
| 1394 | /* set the LED to OFF */ | 1411 | /* set the LED to OFF */ |
| 1395 | port_led_state &= 0xfff80000; | 1412 | port_led_state &= EM_MSG_LED_VALUE_OFF; |
| 1396 | port_led_state |= (ap->port_no | (link->pmp << 8)); | 1413 | port_led_state |= (ap->port_no | (link->pmp << 8)); |
| 1397 | ahci_transmit_led_message(ap, port_led_state, 4); | 1414 | ahci_transmit_led_message(ap, port_led_state, 4); |
| 1398 | } else { | 1415 | } else { |
| 1399 | link->flags |= ATA_LFLAG_SW_ACTIVITY; | 1416 | link->flags |= ATA_LFLAG_SW_ACTIVITY; |
| 1400 | if (val == BLINK_OFF) { | 1417 | if (val == BLINK_OFF) { |
| 1401 | /* set LED to ON for idle */ | 1418 | /* set LED to ON for idle */ |
| 1402 | port_led_state &= 0xfff80000; | 1419 | port_led_state &= EM_MSG_LED_VALUE_OFF; |
| 1403 | port_led_state |= (ap->port_no | (link->pmp << 8)); | 1420 | port_led_state |= (ap->port_no | (link->pmp << 8)); |
| 1404 | port_led_state |= 0x00010000; /* check this */ | 1421 | port_led_state |= EM_MSG_LED_VALUE_ON; /* check this */ |
| 1405 | ahci_transmit_led_message(ap, port_led_state, 4); | 1422 | ahci_transmit_led_message(ap, port_led_state, 4); |
| 1406 | } | 1423 | } |
| 1407 | } | 1424 | } |
| @@ -2612,7 +2629,7 @@ static int ahci_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) | |||
| 2612 | u32 em_loc = readl(mmio + HOST_EM_LOC); | 2629 | u32 em_loc = readl(mmio + HOST_EM_LOC); |
| 2613 | u32 em_ctl = readl(mmio + HOST_EM_CTL); | 2630 | u32 em_ctl = readl(mmio + HOST_EM_CTL); |
| 2614 | 2631 | ||
| 2615 | messages = (em_ctl & 0x000f0000) >> 16; | 2632 | messages = (em_ctl & EM_CTRL_MSG_TYPE) >> 16; |
| 2616 | 2633 | ||
| 2617 | /* we only support LED message type right now */ | 2634 | /* we only support LED message type right now */ |
| 2618 | if ((messages & 0x01) && (ahci_em_messages == 1)) { | 2635 | if ((messages & 0x01) && (ahci_em_messages == 1)) { |
diff --git a/drivers/ata/ata_generic.c b/drivers/ata/ata_generic.c index 75a406f5e694..5c33767e66de 100644 --- a/drivers/ata/ata_generic.c +++ b/drivers/ata/ata_generic.c | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * ata_generic.c - Generic PATA/SATA controller driver. | 2 | * ata_generic.c - Generic PATA/SATA controller driver. |
| 3 | * Copyright 2005 Red Hat Inc <alan@redhat.com>, all rights reserved. | 3 | * Copyright 2005 Red Hat Inc, all rights reserved. |
| 4 | * | 4 | * |
| 5 | * Elements from ide/pci/generic.c | 5 | * Elements from ide/pci/generic.c |
| 6 | * Copyright (C) 2001-2002 Andre Hedrick <andre@linux-ide.org> | 6 | * Copyright (C) 2001-2002 Andre Hedrick <andre@linux-ide.org> |
diff --git a/drivers/ata/ata_piix.c b/drivers/ata/ata_piix.c index e9e32ed6b1a3..52dc2d8b8f22 100644 --- a/drivers/ata/ata_piix.c +++ b/drivers/ata/ata_piix.c | |||
| @@ -14,7 +14,7 @@ | |||
| 14 | * | 14 | * |
| 15 | * Copyright (C) 1998-1999 Andrzej Krzysztofowicz, Author and Maintainer | 15 | * Copyright (C) 1998-1999 Andrzej Krzysztofowicz, Author and Maintainer |
| 16 | * Copyright (C) 1998-2000 Andre Hedrick <andre@linux-ide.org> | 16 | * Copyright (C) 1998-2000 Andre Hedrick <andre@linux-ide.org> |
| 17 | * Copyright (C) 2003 Red Hat Inc <alan@redhat.com> | 17 | * Copyright (C) 2003 Red Hat Inc |
| 18 | * | 18 | * |
| 19 | * | 19 | * |
| 20 | * This program is free software; you can redistribute it and/or modify | 20 | * This program is free software; you can redistribute it and/or modify |
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c index 8cb0b360bfd8..2ff633c119e2 100644 --- a/drivers/ata/libata-core.c +++ b/drivers/ata/libata-core.c | |||
| @@ -4156,29 +4156,33 @@ static int cable_is_40wire(struct ata_port *ap) | |||
| 4156 | struct ata_link *link; | 4156 | struct ata_link *link; |
| 4157 | struct ata_device *dev; | 4157 | struct ata_device *dev; |
| 4158 | 4158 | ||
| 4159 | /* If the controller thinks we are 40 wire, we are */ | 4159 | /* If the controller thinks we are 40 wire, we are. */ |
| 4160 | if (ap->cbl == ATA_CBL_PATA40) | 4160 | if (ap->cbl == ATA_CBL_PATA40) |
| 4161 | return 1; | 4161 | return 1; |
| 4162 | /* If the controller thinks we are 80 wire, we are */ | 4162 | |
| 4163 | /* If the controller thinks we are 80 wire, we are. */ | ||
| 4163 | if (ap->cbl == ATA_CBL_PATA80 || ap->cbl == ATA_CBL_SATA) | 4164 | if (ap->cbl == ATA_CBL_PATA80 || ap->cbl == ATA_CBL_SATA) |
| 4164 | return 0; | 4165 | return 0; |
| 4165 | /* If the system is known to be 40 wire short cable (eg laptop), | 4166 | |
| 4166 | then we allow 80 wire modes even if the drive isn't sure */ | 4167 | /* If the system is known to be 40 wire short cable (eg |
| 4168 | * laptop), then we allow 80 wire modes even if the drive | ||
| 4169 | * isn't sure. | ||
| 4170 | */ | ||
| 4167 | if (ap->cbl == ATA_CBL_PATA40_SHORT) | 4171 | if (ap->cbl == ATA_CBL_PATA40_SHORT) |
| 4168 | return 0; | 4172 | return 0; |
| 4169 | /* If the controller doesn't know we scan | 4173 | |
| 4170 | 4174 | /* If the controller doesn't know, we scan. | |
| 4171 | - Note: We look for all 40 wire detects at this point. | 4175 | * |
| 4172 | Any 80 wire detect is taken to be 80 wire cable | 4176 | * Note: We look for all 40 wire detects at this point. Any |
| 4173 | because | 4177 | * 80 wire detect is taken to be 80 wire cable because |
| 4174 | - In many setups only the one drive (slave if present) | 4178 | * - in many setups only the one drive (slave if present) will |
| 4175 | will give a valid detect | 4179 | * give a valid detect |
| 4176 | - If you have a non detect capable drive you don't | 4180 | * - if you have a non detect capable drive you don't want it |
| 4177 | want it to colour the choice | 4181 | * to colour the choice |
| 4178 | */ | 4182 | */ |
| 4179 | ata_port_for_each_link(link, ap) { | 4183 | ata_port_for_each_link(link, ap) { |
| 4180 | ata_link_for_each_dev(dev, link) { | 4184 | ata_link_for_each_dev(dev, link) { |
| 4181 | if (!ata_is_40wire(dev)) | 4185 | if (ata_dev_enabled(dev) && !ata_is_40wire(dev)) |
| 4182 | return 0; | 4186 | return 0; |
| 4183 | } | 4187 | } |
| 4184 | } | 4188 | } |
| @@ -4553,6 +4557,7 @@ void swap_buf_le16(u16 *buf, unsigned int buf_words) | |||
| 4553 | /** | 4557 | /** |
| 4554 | * ata_qc_new_init - Request an available ATA command, and initialize it | 4558 | * ata_qc_new_init - Request an available ATA command, and initialize it |
| 4555 | * @dev: Device from whom we request an available command structure | 4559 | * @dev: Device from whom we request an available command structure |
| 4560 | * @tag: command tag | ||
| 4556 | * | 4561 | * |
| 4557 | * LOCKING: | 4562 | * LOCKING: |
| 4558 | * None. | 4563 | * None. |
diff --git a/drivers/ata/libata-eh.c b/drivers/ata/libata-eh.c index 5d687d7cffae..8077bdf5d30d 100644 --- a/drivers/ata/libata-eh.c +++ b/drivers/ata/libata-eh.c | |||
| @@ -603,6 +603,9 @@ void ata_scsi_error(struct Scsi_Host *host) | |||
| 603 | ata_link_for_each_dev(dev, link) { | 603 | ata_link_for_each_dev(dev, link) { |
| 604 | int devno = dev->devno; | 604 | int devno = dev->devno; |
| 605 | 605 | ||
| 606 | if (!ata_dev_enabled(dev)) | ||
| 607 | continue; | ||
| 608 | |||
| 606 | ehc->saved_xfer_mode[devno] = dev->xfer_mode; | 609 | ehc->saved_xfer_mode[devno] = dev->xfer_mode; |
| 607 | if (ata_ncq_enabled(dev)) | 610 | if (ata_ncq_enabled(dev)) |
| 608 | ehc->saved_ncq_enabled |= 1 << devno; | 611 | ehc->saved_ncq_enabled |= 1 << devno; |
| @@ -1161,6 +1164,7 @@ void ata_eh_detach_dev(struct ata_device *dev) | |||
| 1161 | { | 1164 | { |
| 1162 | struct ata_link *link = dev->link; | 1165 | struct ata_link *link = dev->link; |
| 1163 | struct ata_port *ap = link->ap; | 1166 | struct ata_port *ap = link->ap; |
| 1167 | struct ata_eh_context *ehc = &link->eh_context; | ||
| 1164 | unsigned long flags; | 1168 | unsigned long flags; |
| 1165 | 1169 | ||
| 1166 | ata_dev_disable(dev); | 1170 | ata_dev_disable(dev); |
| @@ -1174,9 +1178,11 @@ void ata_eh_detach_dev(struct ata_device *dev) | |||
| 1174 | ap->pflags |= ATA_PFLAG_SCSI_HOTPLUG; | 1178 | ap->pflags |= ATA_PFLAG_SCSI_HOTPLUG; |
| 1175 | } | 1179 | } |
| 1176 | 1180 | ||
| 1177 | /* clear per-dev EH actions */ | 1181 | /* clear per-dev EH info */ |
| 1178 | ata_eh_clear_action(link, dev, &link->eh_info, ATA_EH_PERDEV_MASK); | 1182 | ata_eh_clear_action(link, dev, &link->eh_info, ATA_EH_PERDEV_MASK); |
| 1179 | ata_eh_clear_action(link, dev, &link->eh_context.i, ATA_EH_PERDEV_MASK); | 1183 | ata_eh_clear_action(link, dev, &link->eh_context.i, ATA_EH_PERDEV_MASK); |
| 1184 | ehc->saved_xfer_mode[dev->devno] = 0; | ||
| 1185 | ehc->saved_ncq_enabled &= ~(1 << dev->devno); | ||
| 1180 | 1186 | ||
| 1181 | spin_unlock_irqrestore(ap->lock, flags); | 1187 | spin_unlock_irqrestore(ap->lock, flags); |
| 1182 | } | 1188 | } |
| @@ -2787,6 +2793,9 @@ int ata_set_mode(struct ata_link *link, struct ata_device **r_failed_dev) | |||
| 2787 | 2793 | ||
| 2788 | /* if data transfer is verified, clear DUBIOUS_XFER on ering top */ | 2794 | /* if data transfer is verified, clear DUBIOUS_XFER on ering top */ |
| 2789 | ata_link_for_each_dev(dev, link) { | 2795 | ata_link_for_each_dev(dev, link) { |
| 2796 | if (!ata_dev_enabled(dev)) | ||
| 2797 | continue; | ||
| 2798 | |||
| 2790 | if (!(dev->flags & ATA_DFLAG_DUBIOUS_XFER)) { | 2799 | if (!(dev->flags & ATA_DFLAG_DUBIOUS_XFER)) { |
| 2791 | struct ata_ering_entry *ent; | 2800 | struct ata_ering_entry *ent; |
| 2792 | 2801 | ||
| @@ -2808,6 +2817,9 @@ int ata_set_mode(struct ata_link *link, struct ata_device **r_failed_dev) | |||
| 2808 | u8 saved_xfer_mode = ehc->saved_xfer_mode[dev->devno]; | 2817 | u8 saved_xfer_mode = ehc->saved_xfer_mode[dev->devno]; |
| 2809 | u8 saved_ncq = !!(ehc->saved_ncq_enabled & (1 << dev->devno)); | 2818 | u8 saved_ncq = !!(ehc->saved_ncq_enabled & (1 << dev->devno)); |
| 2810 | 2819 | ||
| 2820 | if (!ata_dev_enabled(dev)) | ||
| 2821 | continue; | ||
| 2822 | |||
| 2811 | if (dev->xfer_mode != saved_xfer_mode || | 2823 | if (dev->xfer_mode != saved_xfer_mode || |
| 2812 | ata_ncq_enabled(dev) != saved_ncq) | 2824 | ata_ncq_enabled(dev) != saved_ncq) |
| 2813 | dev->flags |= ATA_DFLAG_DUBIOUS_XFER; | 2825 | dev->flags |= ATA_DFLAG_DUBIOUS_XFER; |
diff --git a/drivers/ata/pata_acpi.c b/drivers/ata/pata_acpi.c index eb919c16a03e..e2e332d8ff95 100644 --- a/drivers/ata/pata_acpi.c +++ b/drivers/ata/pata_acpi.c | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * ACPI PATA driver | 2 | * ACPI PATA driver |
| 3 | * | 3 | * |
| 4 | * (c) 2007 Red Hat <alan@redhat.com> | 4 | * (c) 2007 Red Hat |
| 5 | */ | 5 | */ |
| 6 | 6 | ||
| 7 | #include <linux/kernel.h> | 7 | #include <linux/kernel.h> |
diff --git a/drivers/ata/pata_ali.c b/drivers/ata/pata_ali.c index 5ca70fa1f587..73c466e452ca 100644 --- a/drivers/ata/pata_ali.c +++ b/drivers/ata/pata_ali.c | |||
| @@ -1,7 +1,6 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * pata_ali.c - ALI 15x3 PATA for new ATA layer | 2 | * pata_ali.c - ALI 15x3 PATA for new ATA layer |
| 3 | * (C) 2005 Red Hat Inc | 3 | * (C) 2005 Red Hat Inc |
| 4 | * Alan Cox <alan@redhat.com> | ||
| 5 | * | 4 | * |
| 6 | * based in part upon | 5 | * based in part upon |
| 7 | * linux/drivers/ide/pci/alim15x3.c Version 0.17 2003/01/02 | 6 | * linux/drivers/ide/pci/alim15x3.c Version 0.17 2003/01/02 |
diff --git a/drivers/ata/pata_amd.c b/drivers/ata/pata_amd.c index 57dd00f463d3..0ec9c7d9fe9d 100644 --- a/drivers/ata/pata_amd.c +++ b/drivers/ata/pata_amd.c | |||
| @@ -1,7 +1,6 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * pata_amd.c - AMD PATA for new ATA layer | 2 | * pata_amd.c - AMD PATA for new ATA layer |
| 3 | * (C) 2005-2006 Red Hat Inc | 3 | * (C) 2005-2006 Red Hat Inc |
| 4 | * Alan Cox <alan@redhat.com> | ||
| 5 | * | 4 | * |
| 6 | * Based on pata-sil680. Errata information is taken from data sheets | 5 | * Based on pata-sil680. Errata information is taken from data sheets |
| 7 | * and the amd74xx.c driver by Vojtech Pavlik. Nvidia SATA devices are | 6 | * and the amd74xx.c driver by Vojtech Pavlik. Nvidia SATA devices are |
diff --git a/drivers/ata/pata_artop.c b/drivers/ata/pata_artop.c index 0f513bc11193..6b3092c75ffe 100644 --- a/drivers/ata/pata_artop.c +++ b/drivers/ata/pata_artop.c | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * pata_artop.c - ARTOP ATA controller driver | 2 | * pata_artop.c - ARTOP ATA controller driver |
| 3 | * | 3 | * |
| 4 | * (C) 2006 Red Hat <alan@redhat.com> | 4 | * (C) 2006 Red Hat |
| 5 | * (C) 2007 Bartlomiej Zolnierkiewicz | 5 | * (C) 2007 Bartlomiej Zolnierkiewicz |
| 6 | * | 6 | * |
| 7 | * Based in part on drivers/ide/pci/aec62xx.c | 7 | * Based in part on drivers/ide/pci/aec62xx.c |
diff --git a/drivers/ata/pata_atiixp.c b/drivers/ata/pata_atiixp.c index e8a0d99d7356..0e2cde8f9973 100644 --- a/drivers/ata/pata_atiixp.c +++ b/drivers/ata/pata_atiixp.c | |||
| @@ -1,7 +1,6 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * pata_atiixp.c - ATI PATA for new ATA layer | 2 | * pata_atiixp.c - ATI PATA for new ATA layer |
| 3 | * (C) 2005 Red Hat Inc | 3 | * (C) 2005 Red Hat Inc |
| 4 | * Alan Cox <alan@redhat.com> | ||
| 5 | * | 4 | * |
| 6 | * Based on | 5 | * Based on |
| 7 | * | 6 | * |
diff --git a/drivers/ata/pata_cmd640.c b/drivers/ata/pata_cmd640.c index 2de30b990278..34a394264c3d 100644 --- a/drivers/ata/pata_cmd640.c +++ b/drivers/ata/pata_cmd640.c | |||
| @@ -1,7 +1,6 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * pata_cmd640.c - CMD640 PCI PATA for new ATA layer | 2 | * pata_cmd640.c - CMD640 PCI PATA for new ATA layer |
| 3 | * (C) 2007 Red Hat Inc | 3 | * (C) 2007 Red Hat Inc |
| 4 | * Alan Cox <alan@redhat.com> | ||
| 5 | * | 4 | * |
| 6 | * Based upon | 5 | * Based upon |
| 7 | * linux/drivers/ide/pci/cmd640.c Version 1.02 Sep 01, 1996 | 6 | * linux/drivers/ide/pci/cmd640.c Version 1.02 Sep 01, 1996 |
diff --git a/drivers/ata/pata_cmd64x.c b/drivers/ata/pata_cmd64x.c index ddd09b7d98c9..3167d8fed2f2 100644 --- a/drivers/ata/pata_cmd64x.c +++ b/drivers/ata/pata_cmd64x.c | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * pata_cmd64x.c - CMD64x PATA for new ATA layer | 2 | * pata_cmd64x.c - CMD64x PATA for new ATA layer |
| 3 | * (C) 2005 Red Hat Inc | 3 | * (C) 2005 Red Hat Inc |
| 4 | * Alan Cox <alan@redhat.com> | 4 | * Alan Cox <alan@lxorguk.ukuu.org.uk> |
| 5 | * | 5 | * |
| 6 | * Based upon | 6 | * Based upon |
| 7 | * linux/drivers/ide/pci/cmd64x.c Version 1.30 Sept 10, 2002 | 7 | * linux/drivers/ide/pci/cmd64x.c Version 1.30 Sept 10, 2002 |
diff --git a/drivers/ata/pata_cs5530.c b/drivers/ata/pata_cs5530.c index 0c4b271a9d5a..bba453381f44 100644 --- a/drivers/ata/pata_cs5530.c +++ b/drivers/ata/pata_cs5530.c | |||
| @@ -1,7 +1,6 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * pata-cs5530.c - CS5530 PATA for new ATA layer | 2 | * pata-cs5530.c - CS5530 PATA for new ATA layer |
| 3 | * (C) 2005 Red Hat Inc | 3 | * (C) 2005 Red Hat Inc |
| 4 | * Alan Cox <alan@redhat.com> | ||
| 5 | * | 4 | * |
| 6 | * based upon cs5530.c by Mark Lord. | 5 | * based upon cs5530.c by Mark Lord. |
| 7 | * | 6 | * |
diff --git a/drivers/ata/pata_cs5535.c b/drivers/ata/pata_cs5535.c index f1b6556f0483..1b2d4a0f5f74 100644 --- a/drivers/ata/pata_cs5535.c +++ b/drivers/ata/pata_cs5535.c | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * pata-cs5535.c - CS5535 PATA for new ATA layer | 2 | * pata-cs5535.c - CS5535 PATA for new ATA layer |
| 3 | * (C) 2005-2006 Red Hat Inc | 3 | * (C) 2005-2006 Red Hat Inc |
| 4 | * Alan Cox <alan@redhat.com> | 4 | * Alan Cox <alan@lxorguk.ukuu.org.uk> |
| 5 | * | 5 | * |
| 6 | * based upon cs5535.c from AMD <Jens.Altmann@amd.com> as cleaned up and | 6 | * based upon cs5535.c from AMD <Jens.Altmann@amd.com> as cleaned up and |
| 7 | * made readable and Linux style by Wolfgang Zuleger <wolfgang.zuleger@gmx.de | 7 | * made readable and Linux style by Wolfgang Zuleger <wolfgang.zuleger@gmx.de |
diff --git a/drivers/ata/pata_cypress.c b/drivers/ata/pata_cypress.c index 2ff62608ae37..d546425cd380 100644 --- a/drivers/ata/pata_cypress.c +++ b/drivers/ata/pata_cypress.c | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * pata_cypress.c - Cypress PATA for new ATA layer | 2 | * pata_cypress.c - Cypress PATA for new ATA layer |
| 3 | * (C) 2006 Red Hat Inc | 3 | * (C) 2006 Red Hat Inc |
| 4 | * Alan Cox <alan@redhat.com> | 4 | * Alan Cox |
| 5 | * | 5 | * |
| 6 | * Based heavily on | 6 | * Based heavily on |
| 7 | * linux/drivers/ide/pci/cy82c693.c Version 0.40 Sep. 10, 2002 | 7 | * linux/drivers/ide/pci/cy82c693.c Version 0.40 Sep. 10, 2002 |
diff --git a/drivers/ata/pata_efar.c b/drivers/ata/pata_efar.c index 9fba82976ba6..ac6392ea35b0 100644 --- a/drivers/ata/pata_efar.c +++ b/drivers/ata/pata_efar.c | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * pata_efar.c - EFAR PIIX clone controller driver | 2 | * pata_efar.c - EFAR PIIX clone controller driver |
| 3 | * | 3 | * |
| 4 | * (C) 2005 Red Hat <alan@redhat.com> | 4 | * (C) 2005 Red Hat |
| 5 | * | 5 | * |
| 6 | * Some parts based on ata_piix.c by Jeff Garzik and others. | 6 | * Some parts based on ata_piix.c by Jeff Garzik and others. |
| 7 | * | 7 | * |
diff --git a/drivers/ata/pata_isapnp.c b/drivers/ata/pata_isapnp.c index 6a111baab523..15cdb9148aab 100644 --- a/drivers/ata/pata_isapnp.c +++ b/drivers/ata/pata_isapnp.c | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | 1 | ||
| 2 | /* | 2 | /* |
| 3 | * pata-isapnp.c - ISA PnP PATA controller driver. | 3 | * pata-isapnp.c - ISA PnP PATA controller driver. |
| 4 | * Copyright 2005/2006 Red Hat Inc <alan@redhat.com>, all rights reserved. | 4 | * Copyright 2005/2006 Red Hat Inc, all rights reserved. |
| 5 | * | 5 | * |
| 6 | * Based in part on ide-pnp.c by Andrey Panin <pazke@donpac.ru> | 6 | * Based in part on ide-pnp.c by Andrey Panin <pazke@donpac.ru> |
| 7 | */ | 7 | */ |
diff --git a/drivers/ata/pata_it821x.c b/drivers/ata/pata_it821x.c index 0221c9a46769..860ede526282 100644 --- a/drivers/ata/pata_it821x.c +++ b/drivers/ata/pata_it821x.c | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * pata_it821x.c - IT821x PATA for new ATA layer | 2 | * pata_it821x.c - IT821x PATA for new ATA layer |
| 3 | * (C) 2005 Red Hat Inc | 3 | * (C) 2005 Red Hat Inc |
| 4 | * Alan Cox <alan@redhat.com> | 4 | * Alan Cox <alan@lxorguk.ukuu.org.uk> |
| 5 | * (C) 2007 Bartlomiej Zolnierkiewicz | 5 | * (C) 2007 Bartlomiej Zolnierkiewicz |
| 6 | * | 6 | * |
| 7 | * based upon | 7 | * based upon |
| @@ -10,7 +10,7 @@ | |||
| 10 | * | 10 | * |
| 11 | * linux/drivers/ide/pci/it821x.c Version 0.09 December 2004 | 11 | * linux/drivers/ide/pci/it821x.c Version 0.09 December 2004 |
| 12 | * | 12 | * |
| 13 | * Copyright (C) 2004 Red Hat <alan@redhat.com> | 13 | * Copyright (C) 2004 Red Hat |
| 14 | * | 14 | * |
| 15 | * May be copied or modified under the terms of the GNU General Public License | 15 | * May be copied or modified under the terms of the GNU General Public License |
| 16 | * Based in part on the ITE vendor provided SCSI driver. | 16 | * Based in part on the ITE vendor provided SCSI driver. |
| @@ -557,9 +557,8 @@ static unsigned int it821x_read_id(struct ata_device *adev, | |||
| 557 | if (strstr(model_num, "Integrated Technology Express")) { | 557 | if (strstr(model_num, "Integrated Technology Express")) { |
| 558 | /* Set feature bits the firmware neglects */ | 558 | /* Set feature bits the firmware neglects */ |
| 559 | id[49] |= 0x0300; /* LBA, DMA */ | 559 | id[49] |= 0x0300; /* LBA, DMA */ |
| 560 | id[82] |= 0x0400; /* LBA48 */ | ||
| 561 | id[83] &= 0x7FFF; | 560 | id[83] &= 0x7FFF; |
| 562 | id[83] |= 0x4000; /* Word 83 is valid */ | 561 | id[83] |= 0x4400; /* Word 83 is valid and LBA48 */ |
| 563 | id[86] |= 0x0400; /* LBA48 on */ | 562 | id[86] |= 0x0400; /* LBA48 on */ |
| 564 | id[ATA_ID_MAJOR_VER] |= 0x1F; | 563 | id[ATA_ID_MAJOR_VER] |= 0x1F; |
| 565 | } | 564 | } |
diff --git a/drivers/ata/pata_jmicron.c b/drivers/ata/pata_jmicron.c index 73b7596816b4..38cf1ab2d289 100644 --- a/drivers/ata/pata_jmicron.c +++ b/drivers/ata/pata_jmicron.c | |||
| @@ -4,7 +4,7 @@ | |||
| 4 | * driven by AHCI in the usual configuration although | 4 | * driven by AHCI in the usual configuration although |
| 5 | * this driver can handle other setups if we need it. | 5 | * this driver can handle other setups if we need it. |
| 6 | * | 6 | * |
| 7 | * (c) 2006 Red Hat <alan@redhat.com> | 7 | * (c) 2006 Red Hat |
| 8 | */ | 8 | */ |
| 9 | 9 | ||
| 10 | #include <linux/kernel.h> | 10 | #include <linux/kernel.h> |
diff --git a/drivers/ata/pata_legacy.c b/drivers/ata/pata_legacy.c index bc037ffce200..930c2208640b 100644 --- a/drivers/ata/pata_legacy.c +++ b/drivers/ata/pata_legacy.c | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * pata-legacy.c - Legacy port PATA/SATA controller driver. | 2 | * pata-legacy.c - Legacy port PATA/SATA controller driver. |
| 3 | * Copyright 2005/2006 Red Hat <alan@redhat.com>, all rights reserved. | 3 | * Copyright 2005/2006 Red Hat, all rights reserved. |
| 4 | * | 4 | * |
| 5 | * This program is free software; you can redistribute it and/or modify | 5 | * This program is free software; you can redistribute it and/or modify |
| 6 | * it under the terms of the GNU General Public License as published by | 6 | * it under the terms of the GNU General Public License as published by |
diff --git a/drivers/ata/pata_marvell.c b/drivers/ata/pata_marvell.c index 0d87eec84966..76e399bf8c1b 100644 --- a/drivers/ata/pata_marvell.c +++ b/drivers/ata/pata_marvell.c | |||
| @@ -5,7 +5,7 @@ | |||
| 5 | * isn't making full use of the device functionality but it is | 5 | * isn't making full use of the device functionality but it is |
| 6 | * easy to get working. | 6 | * easy to get working. |
| 7 | * | 7 | * |
| 8 | * (c) 2006 Red Hat <alan@redhat.com> | 8 | * (c) 2006 Red Hat |
| 9 | */ | 9 | */ |
| 10 | 10 | ||
| 11 | #include <linux/kernel.h> | 11 | #include <linux/kernel.h> |
diff --git a/drivers/ata/pata_mpiix.c b/drivers/ata/pata_mpiix.c index 7d7e3fdab71f..7c8faa48b5f3 100644 --- a/drivers/ata/pata_mpiix.c +++ b/drivers/ata/pata_mpiix.c | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * pata_mpiix.c - Intel MPIIX PATA for new ATA layer | 2 | * pata_mpiix.c - Intel MPIIX PATA for new ATA layer |
| 3 | * (C) 2005-2006 Red Hat Inc | 3 | * (C) 2005-2006 Red Hat Inc |
| 4 | * Alan Cox <alan@redhat.com> | 4 | * Alan Cox <alan@lxorguk.ukuu.org.uk> |
| 5 | * | 5 | * |
| 6 | * The MPIIX is different enough to the PIIX4 and friends that we give it | 6 | * The MPIIX is different enough to the PIIX4 and friends that we give it |
| 7 | * a separate driver. The old ide/pci code handles this by just not tuning | 7 | * a separate driver. The old ide/pci code handles this by just not tuning |
diff --git a/drivers/ata/pata_netcell.c b/drivers/ata/pata_netcell.c index d9719c8b9dbe..9dc05e1656a8 100644 --- a/drivers/ata/pata_netcell.c +++ b/drivers/ata/pata_netcell.c | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * pata_netcell.c - Netcell PATA driver | 2 | * pata_netcell.c - Netcell PATA driver |
| 3 | * | 3 | * |
| 4 | * (c) 2006 Red Hat <alan@redhat.com> | 4 | * (c) 2006 Red Hat |
| 5 | */ | 5 | */ |
| 6 | 6 | ||
| 7 | #include <linux/kernel.h> | 7 | #include <linux/kernel.h> |
diff --git a/drivers/ata/pata_ninja32.c b/drivers/ata/pata_ninja32.c index 565e67cd13fa..4e466eae8b46 100644 --- a/drivers/ata/pata_ninja32.c +++ b/drivers/ata/pata_ninja32.c | |||
| @@ -1,7 +1,6 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * pata_ninja32.c - Ninja32 PATA for new ATA layer | 2 | * pata_ninja32.c - Ninja32 PATA for new ATA layer |
| 3 | * (C) 2007 Red Hat Inc | 3 | * (C) 2007 Red Hat Inc |
| 4 | * Alan Cox <alan@redhat.com> | ||
| 5 | * | 4 | * |
| 6 | * Note: The controller like many controllers has shared timings for | 5 | * Note: The controller like many controllers has shared timings for |
| 7 | * PIO and DMA. We thus flip to the DMA timings in dma_start and flip back | 6 | * PIO and DMA. We thus flip to the DMA timings in dma_start and flip back |
| @@ -45,7 +44,7 @@ | |||
| 45 | #include <linux/libata.h> | 44 | #include <linux/libata.h> |
| 46 | 45 | ||
| 47 | #define DRV_NAME "pata_ninja32" | 46 | #define DRV_NAME "pata_ninja32" |
| 48 | #define DRV_VERSION "0.0.1" | 47 | #define DRV_VERSION "0.1.1" |
| 49 | 48 | ||
| 50 | 49 | ||
| 51 | /** | 50 | /** |
| @@ -89,6 +88,17 @@ static struct ata_port_operations ninja32_port_ops = { | |||
| 89 | .set_piomode = ninja32_set_piomode, | 88 | .set_piomode = ninja32_set_piomode, |
| 90 | }; | 89 | }; |
| 91 | 90 | ||
| 91 | static void ninja32_program(void __iomem *base) | ||
| 92 | { | ||
| 93 | iowrite8(0x05, base + 0x01); /* Enable interrupt lines */ | ||
| 94 | iowrite8(0xBE, base + 0x02); /* Burst, ?? setup */ | ||
| 95 | iowrite8(0x01, base + 0x03); /* Unknown */ | ||
| 96 | iowrite8(0x20, base + 0x04); /* WAIT0 */ | ||
| 97 | iowrite8(0x8f, base + 0x05); /* Unknown */ | ||
| 98 | iowrite8(0xa4, base + 0x1c); /* Unknown */ | ||
| 99 | iowrite8(0x83, base + 0x1d); /* BMDMA control: WAIT0 */ | ||
| 100 | } | ||
| 101 | |||
| 92 | static int ninja32_init_one(struct pci_dev *dev, const struct pci_device_id *id) | 102 | static int ninja32_init_one(struct pci_dev *dev, const struct pci_device_id *id) |
| 93 | { | 103 | { |
| 94 | struct ata_host *host; | 104 | struct ata_host *host; |
| @@ -134,18 +144,28 @@ static int ninja32_init_one(struct pci_dev *dev, const struct pci_device_id *id) | |||
| 134 | ap->ioaddr.bmdma_addr = base; | 144 | ap->ioaddr.bmdma_addr = base; |
| 135 | ata_sff_std_ports(&ap->ioaddr); | 145 | ata_sff_std_ports(&ap->ioaddr); |
| 136 | 146 | ||
| 137 | iowrite8(0x05, base + 0x01); /* Enable interrupt lines */ | 147 | ninja32_program(base); |
| 138 | iowrite8(0xBE, base + 0x02); /* Burst, ?? setup */ | ||
| 139 | iowrite8(0x01, base + 0x03); /* Unknown */ | ||
| 140 | iowrite8(0x20, base + 0x04); /* WAIT0 */ | ||
| 141 | iowrite8(0x8f, base + 0x05); /* Unknown */ | ||
| 142 | iowrite8(0xa4, base + 0x1c); /* Unknown */ | ||
| 143 | iowrite8(0x83, base + 0x1d); /* BMDMA control: WAIT0 */ | ||
| 144 | /* FIXME: Should we disable them at remove ? */ | 148 | /* FIXME: Should we disable them at remove ? */ |
| 145 | return ata_host_activate(host, dev->irq, ata_sff_interrupt, | 149 | return ata_host_activate(host, dev->irq, ata_sff_interrupt, |
| 146 | IRQF_SHARED, &ninja32_sht); | 150 | IRQF_SHARED, &ninja32_sht); |
| 147 | } | 151 | } |
| 148 | 152 | ||
| 153 | #ifdef CONFIG_PM | ||
| 154 | |||
| 155 | static int ninja32_reinit_one(struct pci_dev *pdev) | ||
| 156 | { | ||
| 157 | struct ata_host *host = dev_get_drvdata(&pdev->dev); | ||
| 158 | int rc; | ||
| 159 | |||
| 160 | rc = ata_pci_device_do_resume(pdev); | ||
| 161 | if (rc) | ||
| 162 | return rc; | ||
| 163 | ninja32_program(host->iomap[0]); | ||
| 164 | ata_host_resume(host); | ||
| 165 | return 0; | ||
| 166 | } | ||
| 167 | #endif | ||
| 168 | |||
| 149 | static const struct pci_device_id ninja32[] = { | 169 | static const struct pci_device_id ninja32[] = { |
| 150 | { 0x1145, 0xf021, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 }, | 170 | { 0x1145, 0xf021, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 }, |
| 151 | { 0x1145, 0xf024, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 }, | 171 | { 0x1145, 0xf024, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 }, |
| @@ -156,7 +176,11 @@ static struct pci_driver ninja32_pci_driver = { | |||
| 156 | .name = DRV_NAME, | 176 | .name = DRV_NAME, |
| 157 | .id_table = ninja32, | 177 | .id_table = ninja32, |
| 158 | .probe = ninja32_init_one, | 178 | .probe = ninja32_init_one, |
| 159 | .remove = ata_pci_remove_one | 179 | .remove = ata_pci_remove_one, |
| 180 | #ifdef CONFIG_PM | ||
| 181 | .suspend = ata_pci_device_suspend, | ||
| 182 | .resume = ninja32_reinit_one, | ||
| 183 | #endif | ||
| 160 | }; | 184 | }; |
| 161 | 185 | ||
| 162 | static int __init ninja32_init(void) | 186 | static int __init ninja32_init(void) |
diff --git a/drivers/ata/pata_ns87410.c b/drivers/ata/pata_ns87410.c index be756b7ef07e..40d411c460de 100644 --- a/drivers/ata/pata_ns87410.c +++ b/drivers/ata/pata_ns87410.c | |||
| @@ -1,7 +1,6 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * pata_ns87410.c - National Semiconductor 87410 PATA for new ATA layer | 2 | * pata_ns87410.c - National Semiconductor 87410 PATA for new ATA layer |
| 3 | * (C) 2006 Red Hat Inc | 3 | * (C) 2006 Red Hat Inc |
| 4 | * Alan Cox <alan@redhat.com> | ||
| 5 | * | 4 | * |
| 6 | * This program is free software; you can redistribute it and/or modify | 5 | * This program is free software; you can redistribute it and/or modify |
| 7 | * it under the terms of the GNU General Public License as published by | 6 | * it under the terms of the GNU General Public License as published by |
diff --git a/drivers/ata/pata_ns87415.c b/drivers/ata/pata_ns87415.c index e0aa7eaaee0a..89bf5f865d6a 100644 --- a/drivers/ata/pata_ns87415.c +++ b/drivers/ata/pata_ns87415.c | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * pata_ns87415.c - NS87415 (non PARISC) PATA | 2 | * pata_ns87415.c - NS87415 (non PARISC) PATA |
| 3 | * | 3 | * |
| 4 | * (C) 2005 Red Hat <alan@redhat.com> | 4 | * (C) 2005 Red Hat <alan@lxorguk.ukuu.org.uk> |
| 5 | * | 5 | * |
| 6 | * This is a fairly generic MWDMA controller. It has some limitations | 6 | * This is a fairly generic MWDMA controller. It has some limitations |
| 7 | * as it requires timing reloads on PIO/DMA transitions but it is otherwise | 7 | * as it requires timing reloads on PIO/DMA transitions but it is otherwise |
diff --git a/drivers/ata/pata_oldpiix.c b/drivers/ata/pata_oldpiix.c index df64f2443001..c0dbc46a348e 100644 --- a/drivers/ata/pata_oldpiix.c +++ b/drivers/ata/pata_oldpiix.c | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * pata_oldpiix.c - Intel PATA/SATA controllers | 2 | * pata_oldpiix.c - Intel PATA/SATA controllers |
| 3 | * | 3 | * |
| 4 | * (C) 2005 Red Hat <alan@redhat.com> | 4 | * (C) 2005 Red Hat |
| 5 | * | 5 | * |
| 6 | * Some parts based on ata_piix.c by Jeff Garzik and others. | 6 | * Some parts based on ata_piix.c by Jeff Garzik and others. |
| 7 | * | 7 | * |
diff --git a/drivers/ata/pata_opti.c b/drivers/ata/pata_opti.c index fb2cf661b0e8..e4fa4d565e96 100644 --- a/drivers/ata/pata_opti.c +++ b/drivers/ata/pata_opti.c | |||
| @@ -1,7 +1,6 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * pata_opti.c - ATI PATA for new ATA layer | 2 | * pata_opti.c - ATI PATA for new ATA layer |
| 3 | * (C) 2005 Red Hat Inc | 3 | * (C) 2005 Red Hat Inc |
| 4 | * Alan Cox <alan@redhat.com> | ||
| 5 | * | 4 | * |
| 6 | * Based on | 5 | * Based on |
| 7 | * linux/drivers/ide/pci/opti621.c Version 0.7 Sept 10, 2002 | 6 | * linux/drivers/ide/pci/opti621.c Version 0.7 Sept 10, 2002 |
diff --git a/drivers/ata/pata_optidma.c b/drivers/ata/pata_optidma.c index 4cd744456313..93bb6e91973f 100644 --- a/drivers/ata/pata_optidma.c +++ b/drivers/ata/pata_optidma.c | |||
| @@ -1,7 +1,6 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * pata_optidma.c - Opti DMA PATA for new ATA layer | 2 | * pata_optidma.c - Opti DMA PATA for new ATA layer |
| 3 | * (C) 2006 Red Hat Inc | 3 | * (C) 2006 Red Hat Inc |
| 4 | * Alan Cox <alan@redhat.com> | ||
| 5 | * | 4 | * |
| 6 | * The Opti DMA controllers are related to the older PIO PCI controllers | 5 | * The Opti DMA controllers are related to the older PIO PCI controllers |
| 7 | * and indeed the VLB ones. The main differences are that the timing | 6 | * and indeed the VLB ones. The main differences are that the timing |
diff --git a/drivers/ata/pata_pcmcia.c b/drivers/ata/pata_pcmcia.c index 02b596b9cf6a..271cb64d429e 100644 --- a/drivers/ata/pata_pcmcia.c +++ b/drivers/ata/pata_pcmcia.c | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * pata_pcmcia.c - PCMCIA PATA controller driver. | 2 | * pata_pcmcia.c - PCMCIA PATA controller driver. |
| 3 | * Copyright 2005-2006 Red Hat Inc <alan@redhat.com>, all rights reserved. | 3 | * Copyright 2005-2006 Red Hat Inc, all rights reserved. |
| 4 | * PCMCIA ident update Copyright 2006 Marcin Juszkiewicz | 4 | * PCMCIA ident update Copyright 2006 Marcin Juszkiewicz |
| 5 | * <openembedded@hrw.one.pl> | 5 | * <openembedded@hrw.one.pl> |
| 6 | * | 6 | * |
diff --git a/drivers/ata/pata_pdc202xx_old.c b/drivers/ata/pata_pdc202xx_old.c index d2673060bc8d..799a6a098712 100644 --- a/drivers/ata/pata_pdc202xx_old.c +++ b/drivers/ata/pata_pdc202xx_old.c | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * pata_pdc202xx_old.c - Promise PDC202xx PATA for new ATA layer | 2 | * pata_pdc202xx_old.c - Promise PDC202xx PATA for new ATA layer |
| 3 | * (C) 2005 Red Hat Inc | 3 | * (C) 2005 Red Hat Inc |
| 4 | * Alan Cox <alan@redhat.com> | 4 | * Alan Cox <alan@lxorguk.ukuu.org.uk> |
| 5 | * (C) 2007 Bartlomiej Zolnierkiewicz | 5 | * (C) 2007 Bartlomiej Zolnierkiewicz |
| 6 | * | 6 | * |
| 7 | * Based in part on linux/drivers/ide/pci/pdc202xx_old.c | 7 | * Based in part on linux/drivers/ide/pci/pdc202xx_old.c |
diff --git a/drivers/ata/pata_platform.c b/drivers/ata/pata_platform.c index 8f65ad61b8af..77e4e3b17f54 100644 --- a/drivers/ata/pata_platform.c +++ b/drivers/ata/pata_platform.c | |||
| @@ -5,7 +5,7 @@ | |||
| 5 | * | 5 | * |
| 6 | * Based on pata_pcmcia: | 6 | * Based on pata_pcmcia: |
| 7 | * | 7 | * |
| 8 | * Copyright 2005-2006 Red Hat Inc <alan@redhat.com>, all rights reserved. | 8 | * Copyright 2005-2006 Red Hat Inc, all rights reserved. |
| 9 | * | 9 | * |
| 10 | * This file is subject to the terms and conditions of the GNU General Public | 10 | * This file is subject to the terms and conditions of the GNU General Public |
| 11 | * License. See the file "COPYING" in the main directory of this archive | 11 | * License. See the file "COPYING" in the main directory of this archive |
diff --git a/drivers/ata/pata_qdi.c b/drivers/ata/pata_qdi.c index 63b7a1c165a5..3080f371222c 100644 --- a/drivers/ata/pata_qdi.c +++ b/drivers/ata/pata_qdi.c | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * pata_qdi.c - QDI VLB ATA controllers | 2 | * pata_qdi.c - QDI VLB ATA controllers |
| 3 | * (C) 2006 Red Hat <alan@redhat.com> | 3 | * (C) 2006 Red Hat |
| 4 | * | 4 | * |
| 5 | * This driver mostly exists as a proof of concept for non PCI devices under | 5 | * This driver mostly exists as a proof of concept for non PCI devices under |
| 6 | * libata. While the QDI6580 was 'neat' in 1993 it is no longer terribly | 6 | * libata. While the QDI6580 was 'neat' in 1993 it is no longer terribly |
diff --git a/drivers/ata/pata_radisys.c b/drivers/ata/pata_radisys.c index 1c0d9fa7ee54..0b0aa452de14 100644 --- a/drivers/ata/pata_radisys.c +++ b/drivers/ata/pata_radisys.c | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * pata_radisys.c - Intel PATA/SATA controllers | 2 | * pata_radisys.c - Intel PATA/SATA controllers |
| 3 | * | 3 | * |
| 4 | * (C) 2006 Red Hat <alan@redhat.com> | 4 | * (C) 2006 Red Hat <alan@lxorguk.ukuu.org.uk> |
| 5 | * | 5 | * |
| 6 | * Some parts based on ata_piix.c by Jeff Garzik and others. | 6 | * Some parts based on ata_piix.c by Jeff Garzik and others. |
| 7 | * | 7 | * |
diff --git a/drivers/ata/pata_sc1200.c b/drivers/ata/pata_sc1200.c index 0278fd2b8fb1..9a4bdca54616 100644 --- a/drivers/ata/pata_sc1200.c +++ b/drivers/ata/pata_sc1200.c | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * New ATA layer SC1200 driver Alan Cox <alan@redhat.com> | 2 | * New ATA layer SC1200 driver Alan Cox <alan@lxorguk.ukuu.org.uk> |
| 3 | * | 3 | * |
| 4 | * TODO: Mode selection filtering | 4 | * TODO: Mode selection filtering |
| 5 | * TODO: Can't enable second channel until ATA core has serialize | 5 | * TODO: Can't enable second channel until ATA core has serialize |
diff --git a/drivers/ata/pata_scc.c b/drivers/ata/pata_scc.c index 16673d168573..cf3707e516a2 100644 --- a/drivers/ata/pata_scc.c +++ b/drivers/ata/pata_scc.c | |||
| @@ -8,7 +8,7 @@ | |||
| 8 | * Copyright 2003-2005 Jeff Garzik | 8 | * Copyright 2003-2005 Jeff Garzik |
| 9 | * Copyright (C) 1998-1999 Andrzej Krzysztofowicz, Author and Maintainer | 9 | * Copyright (C) 1998-1999 Andrzej Krzysztofowicz, Author and Maintainer |
| 10 | * Copyright (C) 1998-2000 Andre Hedrick <andre@linux-ide.org> | 10 | * Copyright (C) 1998-2000 Andre Hedrick <andre@linux-ide.org> |
| 11 | * Copyright (C) 2003 Red Hat Inc <alan@redhat.com> | 11 | * Copyright (C) 2003 Red Hat Inc |
| 12 | * | 12 | * |
| 13 | * and drivers/ata/ahci.c: | 13 | * and drivers/ata/ahci.c: |
| 14 | * Copyright 2004-2005 Red Hat, Inc. | 14 | * Copyright 2004-2005 Red Hat, Inc. |
diff --git a/drivers/ata/pata_serverworks.c b/drivers/ata/pata_serverworks.c index ffd26d0dc50d..72e41c9f969b 100644 --- a/drivers/ata/pata_serverworks.c +++ b/drivers/ata/pata_serverworks.c | |||
| @@ -1,7 +1,6 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * pata_serverworks.c - Serverworks PATA for new ATA layer | 2 | * pata_serverworks.c - Serverworks PATA for new ATA layer |
| 3 | * (C) 2005 Red Hat Inc | 3 | * (C) 2005 Red Hat Inc |
| 4 | * Alan Cox <alan@redhat.com> | ||
| 5 | * | 4 | * |
| 6 | * based upon | 5 | * based upon |
| 7 | * | 6 | * |
diff --git a/drivers/ata/pata_sil680.c b/drivers/ata/pata_sil680.c index a598bb36aafc..83580a59db58 100644 --- a/drivers/ata/pata_sil680.c +++ b/drivers/ata/pata_sil680.c | |||
| @@ -1,7 +1,6 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * pata_sil680.c - SIL680 PATA for new ATA layer | 2 | * pata_sil680.c - SIL680 PATA for new ATA layer |
| 3 | * (C) 2005 Red Hat Inc | 3 | * (C) 2005 Red Hat Inc |
| 4 | * Alan Cox <alan@redhat.com> | ||
| 5 | * | 4 | * |
| 6 | * based upon | 5 | * based upon |
| 7 | * | 6 | * |
diff --git a/drivers/ata/pata_sis.c b/drivers/ata/pata_sis.c index 26345d7b531c..d34236611752 100644 --- a/drivers/ata/pata_sis.c +++ b/drivers/ata/pata_sis.c | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * pata_sis.c - SiS ATA driver | 2 | * pata_sis.c - SiS ATA driver |
| 3 | * | 3 | * |
| 4 | * (C) 2005 Red Hat <alan@redhat.com> | 4 | * (C) 2005 Red Hat |
| 5 | * (C) 2007 Bartlomiej Zolnierkiewicz | 5 | * (C) 2007 Bartlomiej Zolnierkiewicz |
| 6 | * | 6 | * |
| 7 | * Based upon linux/drivers/ide/pci/sis5513.c | 7 | * Based upon linux/drivers/ide/pci/sis5513.c |
diff --git a/drivers/ata/pata_sl82c105.c b/drivers/ata/pata_sl82c105.c index 69877bd81815..1b0e7b6d8ef5 100644 --- a/drivers/ata/pata_sl82c105.c +++ b/drivers/ata/pata_sl82c105.c | |||
| @@ -1,7 +1,6 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * pata_sl82c105.c - SL82C105 PATA for new ATA layer | 2 | * pata_sl82c105.c - SL82C105 PATA for new ATA layer |
| 3 | * (C) 2005 Red Hat Inc | 3 | * (C) 2005 Red Hat Inc |
| 4 | * Alan Cox <alan@redhat.com> | ||
| 5 | * | 4 | * |
| 6 | * Based in part on linux/drivers/ide/pci/sl82c105.c | 5 | * Based in part on linux/drivers/ide/pci/sl82c105.c |
| 7 | * SL82C105/Winbond 553 IDE driver | 6 | * SL82C105/Winbond 553 IDE driver |
diff --git a/drivers/ata/pata_triflex.c b/drivers/ata/pata_triflex.c index b181261f2743..ef9597517cdd 100644 --- a/drivers/ata/pata_triflex.c +++ b/drivers/ata/pata_triflex.c | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * pata_triflex.c - Compaq PATA for new ATA layer | 2 | * pata_triflex.c - Compaq PATA for new ATA layer |
| 3 | * (C) 2005 Red Hat Inc | 3 | * (C) 2005 Red Hat Inc |
| 4 | * Alan Cox <alan@redhat.com> | 4 | * Alan Cox <alan@lxorguk.ukuu.org.uk> |
| 5 | * | 5 | * |
| 6 | * based upon | 6 | * based upon |
| 7 | * | 7 | * |
diff --git a/drivers/ata/pata_via.c b/drivers/ata/pata_via.c index 8fdb2ce73210..681169c9c640 100644 --- a/drivers/ata/pata_via.c +++ b/drivers/ata/pata_via.c | |||
| @@ -1,7 +1,6 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * pata_via.c - VIA PATA for new ATA layer | 2 | * pata_via.c - VIA PATA for new ATA layer |
| 3 | * (C) 2005-2006 Red Hat Inc | 3 | * (C) 2005-2006 Red Hat Inc |
| 4 | * Alan Cox <alan@redhat.com> | ||
| 5 | * | 4 | * |
| 6 | * Documentation | 5 | * Documentation |
| 7 | * Most chipset documentation available under NDA only | 6 | * Most chipset documentation available under NDA only |
diff --git a/drivers/ata/pata_winbond.c b/drivers/ata/pata_winbond.c index a7606b044a61..319e164a3d74 100644 --- a/drivers/ata/pata_winbond.c +++ b/drivers/ata/pata_winbond.c | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * pata_winbond.c - Winbond VLB ATA controllers | 2 | * pata_winbond.c - Winbond VLB ATA controllers |
| 3 | * (C) 2006 Red Hat <alan@redhat.com> | 3 | * (C) 2006 Red Hat |
| 4 | * | 4 | * |
| 5 | * Support for the Winbond 83759A when operating in advanced mode. | 5 | * Support for the Winbond 83759A when operating in advanced mode. |
| 6 | * Multichip mode is not currently supported. | 6 | * Multichip mode is not currently supported. |
diff --git a/drivers/ata/sata_sil24.c b/drivers/ata/sata_sil24.c index 4621807a1a6a..ccee930f1e12 100644 --- a/drivers/ata/sata_sil24.c +++ b/drivers/ata/sata_sil24.c | |||
| @@ -1329,6 +1329,11 @@ static int sil24_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) | |||
| 1329 | } | 1329 | } |
| 1330 | } | 1330 | } |
| 1331 | 1331 | ||
| 1332 | /* Set max read request size to 4096. This slightly increases | ||
| 1333 | * write throughput for pci-e variants. | ||
| 1334 | */ | ||
| 1335 | pcie_set_readrq(pdev, 4096); | ||
| 1336 | |||
| 1332 | sil24_init_controller(host); | 1337 | sil24_init_controller(host); |
| 1333 | 1338 | ||
| 1334 | pci_set_master(pdev); | 1339 | pci_set_master(pdev); |
