[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]
rpms/kernel/FC-6 linux-2.6-sata-promise-pata-ports.patch, 1.4, 1.5 kernel-2.6.spec, 1.2889, 1.2890
- From: fedora-cvs-commits redhat com
- To: fedora-cvs-commits redhat com
- Subject: rpms/kernel/FC-6 linux-2.6-sata-promise-pata-ports.patch, 1.4, 1.5 kernel-2.6.spec, 1.2889, 1.2890
- Date: Sun, 7 Jan 2007 21:00:18 -0500
Author: davej
Update of /cvs/dist/rpms/kernel/FC-6
In directory cvs.devel.redhat.com:/tmp/cvs-serv5287
Modified Files:
kernel-2.6.spec
Added Files:
linux-2.6-sata-promise-pata-ports.patch
Log Message:
re-add PATA on Promise SATA
linux-2.6-sata-promise-pata-ports.patch:
drivers/ata/libata-core.c | 4 +--
drivers/ata/sata_promise.c | 48 +++++++++++++++++++++++++++++++++++++++------
include/linux/libata.h | 2 -
3 files changed, 45 insertions(+), 9 deletions(-)
Index: linux-2.6-sata-promise-pata-ports.patch
===================================================================
RCS file: linux-2.6-sata-promise-pata-ports.patch
diff -N linux-2.6-sata-promise-pata-ports.patch
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ linux-2.6-sata-promise-pata-ports.patch 8 Jan 2007 02:00:11 -0000 1.5
@@ -0,0 +1,159 @@
+diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
+index 915a55a..d0ab733 100644
+--- a/drivers/ata/libata-core.c
++++ b/drivers/ata/libata-core.c
+@@ -5298,13 +5298,13 @@ void ata_port_init(struct ata_port *ap,
+ ap->pio_mask = ent->pinfo2->pio_mask;
+ ap->mwdma_mask = ent->pinfo2->mwdma_mask;
+ ap->udma_mask = ent->pinfo2->udma_mask;
+- ap->flags |= ent->pinfo2->flags;
++ ap->flags |= ent->pinfo2->flags | ent->_port_flags[port_no];
+ ap->ops = ent->pinfo2->port_ops;
+ } else {
+ ap->pio_mask = ent->pio_mask;
+ ap->mwdma_mask = ent->mwdma_mask;
+ ap->udma_mask = ent->udma_mask;
+- ap->flags |= ent->port_flags;
++ ap->flags |= ent->port_flags | ent->_port_flags[port_no];
+ ap->ops = ent->port_ops;
+ }
+ ap->hw_sata_spd_limit = UINT_MAX;
+diff --git a/drivers/ata/sata_promise.c b/drivers/ata/sata_promise.c
+index 72eda51..543e6a4 100644
+--- a/drivers/ata/sata_promise.c
++++ b/drivers/ata/sata_promise.c
+@@ -175,7 +175,7 @@ static const struct ata_port_info pdc_po
+ /* board_2037x */
+ {
+ .sht = &pdc_ata_sht,
+- .flags = PDC_COMMON_FLAGS | ATA_FLAG_SATA,
++ .flags = PDC_COMMON_FLAGS,
+ .pio_mask = 0x1f, /* pio0-4 */
+ .mwdma_mask = 0x07, /* mwdma0-2 */
+ .udma_mask = 0x7f, /* udma0-6 ; FIXME */
+@@ -355,23 +355,27 @@ static void pdc_reset_port(struct ata_po
+ static void pdc_sata_phy_reset(struct ata_port *ap)
+ {
+ pdc_reset_port(ap);
+- sata_phy_reset(ap);
++ if (ap->flags & ATA_FLAG_SATA)
++ sata_phy_reset(ap);
++ else
++ pdc_pata_phy_reset(ap);
+ }
+
+ static void pdc_pata_cbl_detect(struct ata_port *ap)
+ {
+ u8 tmp;
+- void __iomem *mmio = (void __iomem *) ap->ioaddr.cmd_addr + PDC_CTLSTAT + 0x03;
++ void __iomem *mmio =
++ (void __iomem *) ap->ioaddr.cmd_addr + PDC_CTLSTAT + 0x03;
+
+ tmp = readb(mmio);
+-
++
+ if (tmp & 0x01) {
+ ap->cbl = ATA_CBL_PATA40;
+ ap->udma_mask &= ATA_UDMA_MASK_40C;
+ } else
+ ap->cbl = ATA_CBL_PATA80;
+ }
+-
++
+ static void pdc_pata_phy_reset(struct ata_port *ap)
+ {
+ pdc_pata_cbl_detect(ap);
+@@ -384,6 +388,20 @@ static u32 pdc_sata_scr_read (struct ata
+ {
+ if (sc_reg > SCR_CONTROL)
+ return 0xffffffffU;
++ if (ap->flags & ATA_FLAG_SLAVE_POSS)
++ {
++ switch (sc_reg) {
++ case SCR_STATUS:
++ return 0x113;
++ case SCR_CONTROL:
++ return 0x300;
++ case SCR_ERROR:
++ case SCR_ACTIVE:
++ default:
++ return 0xffffffffU;
++ }
++ }
++
+ return readl((void __iomem *) ap->ioaddr.scr_addr + (sc_reg * 4));
+ }
+
+@@ -391,7 +409,7 @@ static u32 pdc_sata_scr_read (struct ata
+ static void pdc_sata_scr_write (struct ata_port *ap, unsigned int sc_reg,
+ u32 val)
+ {
+- if (sc_reg > SCR_CONTROL)
++ if ((sc_reg > SCR_CONTROL) || (ap->flags & ATA_FLAG_SLAVE_POSS))
+ return;
+ writel(val, (void __iomem *) ap->ioaddr.scr_addr + (sc_reg * 4));
+ }
+@@ -679,6 +697,7 @@ static int pdc_ata_init_one (struct pci_
+ unsigned int board_idx = (unsigned int) ent->driver_data;
+ int pci_dev_busy = 0;
+ int rc;
++ u8 tmp;
+
+ if (!printed_version++)
+ dev_printk(KERN_DEBUG, &pdev->dev, "version " DRV_VERSION "\n");
+@@ -743,6 +762,9 @@ static int pdc_ata_init_one (struct pci_
+ probe_ent->port[0].scr_addr = base + 0x400;
+ probe_ent->port[1].scr_addr = base + 0x500;
+
++ probe_ent->_port_flags[0] = ATA_FLAG_SATA;
++ probe_ent->_port_flags[1] = ATA_FLAG_SATA;
++
+ /* notice 4-port boards */
+ switch (board_idx) {
+ case board_40518:
+@@ -757,13 +779,27 @@ static int pdc_ata_init_one (struct pci_
+
+ probe_ent->port[2].scr_addr = base + 0x600;
+ probe_ent->port[3].scr_addr = base + 0x700;
++
++ probe_ent->_port_flags[2] = ATA_FLAG_SATA;
++ probe_ent->_port_flags[3] = ATA_FLAG_SATA;
+ break;
+ case board_2057x:
+ /* Override hotplug offset for SATAII150 */
+ hp->hotplug_offset = PDC2_SATA_PLUG_CSR;
+ /* Fall through */
+ case board_2037x:
++ /* Some boards have also PATA port */
+ probe_ent->n_ports = 2;
++ probe_ent->_port_flags[0] = ATA_FLAG_SATA;
++ probe_ent->_port_flags[1] = ATA_FLAG_SATA;
++ tmp = readb(mmio_base + PDC_FLASH_CTL+1);
++ if (!(tmp & 0x80))
++ {
++ probe_ent->n_ports = 3;
++ pdc_ata_setup_port(&probe_ent->port[2], base + 0x300);
++ probe_ent->_port_flags[2] = ATA_FLAG_SLAVE_POSS;
++ printk(KERN_INFO DRV_NAME " PATA port found\n");
++ }
+ break;
+ case board_20771:
+ probe_ent->n_ports = 2;
+diff --git a/include/linux/libata.h b/include/linux/libata.h
+index abd2deb..aa8c822 100644
+--- a/include/linux/libata.h
++++ b/include/linux/libata.h
+@@ -377,6 +377,7 @@ struct ata_probe_ent {
+ unsigned int irq_flags;
+ unsigned long port_flags;
+ unsigned long _host_flags;
++ unsigned long _port_flags[ATA_MAX_PORTS];
+ void __iomem *mmio_base;
+ void *private_data;
+
+-
+To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
+the body of a message to majordomo vger kernel org
+More majordomo info at http://vger.kernel.org/majordomo-info.html
+Please read the FAQ at http://www.tux.org/lkml/
+
Index: kernel-2.6.spec
===================================================================
RCS file: /cvs/dist/rpms/kernel/FC-6/kernel-2.6.spec,v
retrieving revision 1.2889
retrieving revision 1.2890
diff -u -r1.2889 -r1.2890
--- kernel-2.6.spec 7 Jan 2007 21:26:22 -0000 1.2889
+++ kernel-2.6.spec 8 Jan 2007 02:00:08 -0000 1.2890
@@ -466,6 +466,7 @@
Patch2105: linux-2.6-defaults-nonmi.patch
# SATA Bits
+Patch2200: linux-2.6-sata-promise-pata-ports.patch
# ACPI bits
@@ -1039,6 +1040,9 @@
# ACPI patches
+# SATA
+# PATA ports on Promise.
+%patch2200 -p1
# Network driver fixes.
# suspend/resume for forcedeth
[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]