Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5fadd053 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge branch 'upstream' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/libata-dev

parents e5dfa928 26ba2a7a
Loading
Loading
Loading
Loading
+1072 −0

File changed.

Preview size limit exceeded, changes collapsed.

+19 −3
Original line number Diff line number Diff line
@@ -489,11 +489,11 @@ config SCSI_SATA_NV

	  If unsure, say N.

config SCSI_SATA_PROMISE
	tristate "Promise SATA TX2/TX4 support"
config SCSI_PDC_ADMA
	tristate "Pacific Digital ADMA support"
	depends on SCSI_SATA && PCI
	help
	  This option enables support for Promise Serial ATA TX2/TX4.
	  This option enables support for Pacific Digital ADMA controllers

	  If unsure, say N.

@@ -505,6 +505,14 @@ config SCSI_SATA_QSTOR

	  If unsure, say N.

config SCSI_SATA_PROMISE
	tristate "Promise SATA TX2/TX4 support"
	depends on SCSI_SATA && PCI
	help
	  This option enables support for Promise Serial ATA TX2/TX4.

	  If unsure, say N.

config SCSI_SATA_SX4
	tristate "Promise SATA SX4 support"
	depends on SCSI_SATA && PCI && EXPERIMENTAL
@@ -521,6 +529,14 @@ config SCSI_SATA_SIL

	  If unsure, say N.

config SCSI_SATA_SIL24
	tristate "Silicon Image 3124/3132 SATA support"
	depends on SCSI_SATA && PCI && EXPERIMENTAL
	help
	  This option enables support for Silicon Image 3124/3132 Serial ATA.

	  If unsure, say N.

config SCSI_SATA_SIS
	tristate "SiS 964/180 SATA support"
	depends on SCSI_SATA && PCI && EXPERIMENTAL
+2 −0
Original line number Diff line number Diff line
@@ -130,6 +130,7 @@ obj-$(CONFIG_SCSI_ATA_PIIX) += libata.o ata_piix.o
obj-$(CONFIG_SCSI_SATA_PROMISE)	+= libata.o sata_promise.o
obj-$(CONFIG_SCSI_SATA_QSTOR)	+= libata.o sata_qstor.o
obj-$(CONFIG_SCSI_SATA_SIL)	+= libata.o sata_sil.o
obj-$(CONFIG_SCSI_SATA_SIL24)	+= libata.o sata_sil24.o
obj-$(CONFIG_SCSI_SATA_VIA)	+= libata.o sata_via.o
obj-$(CONFIG_SCSI_SATA_VITESSE)	+= libata.o sata_vsc.o
obj-$(CONFIG_SCSI_SATA_SIS)	+= libata.o sata_sis.o
@@ -137,6 +138,7 @@ obj-$(CONFIG_SCSI_SATA_SX4) += libata.o sata_sx4.o
obj-$(CONFIG_SCSI_SATA_NV)	+= libata.o sata_nv.o
obj-$(CONFIG_SCSI_SATA_ULI)	+= libata.o sata_uli.o
obj-$(CONFIG_SCSI_SATA_MV)	+= libata.o sata_mv.o
obj-$(CONFIG_SCSI_PDC_ADMA)	+= libata.o pdc_adma.o

obj-$(CONFIG_ARM)		+= arm/

+30 −11
Original line number Diff line number Diff line
@@ -216,7 +216,7 @@ static Scsi_Host_Template ahci_sht = {
	.ordered_flush		= 1,
};

static struct ata_port_operations ahci_ops = {
static const struct ata_port_operations ahci_ops = {
	.port_disable		= ata_port_disable,

	.check_status		= ahci_check_status,
@@ -407,7 +407,7 @@ static u32 ahci_scr_read (struct ata_port *ap, unsigned int sc_reg_in)
		return 0xffffffffU;
	}

	return readl((void *) ap->ioaddr.scr_addr + (sc_reg * 4));
	return readl((void __iomem *) ap->ioaddr.scr_addr + (sc_reg * 4));
}


@@ -425,7 +425,7 @@ static void ahci_scr_write (struct ata_port *ap, unsigned int sc_reg_in,
		return;
	}

	writel(val, (void *) ap->ioaddr.scr_addr + (sc_reg * 4));
	writel(val, (void __iomem *) ap->ioaddr.scr_addr + (sc_reg * 4));
}

static void ahci_phy_reset(struct ata_port *ap)
@@ -453,14 +453,14 @@ static void ahci_phy_reset(struct ata_port *ap)

static u8 ahci_check_status(struct ata_port *ap)
{
	void *mmio = (void *) ap->ioaddr.cmd_addr;
	void __iomem *mmio = (void __iomem *) ap->ioaddr.cmd_addr;

	return readl(mmio + PORT_TFDATA) & 0xFF;
}

static u8 ahci_check_err(struct ata_port *ap)
{
	void *mmio = (void *) ap->ioaddr.cmd_addr;
	void __iomem *mmio = (void __iomem *) ap->ioaddr.cmd_addr;

	return (readl(mmio + PORT_TFDATA) >> 8) & 0xFF;
}
@@ -672,19 +672,38 @@ static irqreturn_t ahci_interrupt (int irq, void *dev_instance, struct pt_regs *

        for (i = 0; i < host_set->n_ports; i++) {
		struct ata_port *ap;
		u32 tmp;

		VPRINTK("port %u\n", i);
		if (!(irq_stat & (1 << i)))
			continue;

		ap = host_set->ports[i];
		tmp = irq_stat & (1 << i);
		if (tmp && ap) {
		if (ap) {
			struct ata_queued_cmd *qc;
			qc = ata_qc_from_tag(ap, ap->active_tag);
			if (ahci_host_intr(ap, qc))
				irq_ack |= (1 << i);
			if (!ahci_host_intr(ap, qc))
				if (ata_ratelimit()) {
					struct pci_dev *pdev =
					  to_pci_dev(ap->host_set->dev);
					printk(KERN_WARNING
					  "ahci(%s): unhandled interrupt on port %u\n",
					  pci_name(pdev), i);
				}

			VPRINTK("port %u\n", i);
		} else {
			VPRINTK("port %u (no irq)\n", i);
			if (ata_ratelimit()) {
				struct pci_dev *pdev =
				  to_pci_dev(ap->host_set->dev);
				printk(KERN_WARNING
				  "ahci(%s): interrupt on disabled port %u\n",
				  pci_name(pdev), i);
			}
		}

		irq_ack |= (1 << i);
	}

	if (irq_ack) {
		writel(irq_ack, mmio + HOST_IRQ_STAT);
		handled = 1;
+2 −2
Original line number Diff line number Diff line
@@ -147,7 +147,7 @@ static Scsi_Host_Template piix_sht = {
	.ordered_flush		= 1,
};

static struct ata_port_operations piix_pata_ops = {
static const struct ata_port_operations piix_pata_ops = {
	.port_disable		= ata_port_disable,
	.set_piomode		= piix_set_piomode,
	.set_dmamode		= piix_set_dmamode,
@@ -177,7 +177,7 @@ static struct ata_port_operations piix_pata_ops = {
	.host_stop		= ata_host_stop,
};

static struct ata_port_operations piix_sata_ops = {
static const struct ata_port_operations piix_sata_ops = {
	.port_disable		= ata_port_disable,

	.tf_load		= ata_tf_load,
Loading