lkml.org 
[lkml]   [2007]   [Aug]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    SubjectRe: [patch 1/4] Store interrupt value
    Store interrupt value

    Use a stored value for which interrupts to enable. Changing this allows
    us to selectively turn off certain interrupts later and have them
    stay off.

    Signed-off-by: Kristen Carlson Accardi <kristen.c.accardi@intel.com>

    Index: 2.6-git/drivers/ata/ahci.c
    ===================================================================
    --- 2.6-git.orig/drivers/ata/ahci.c
    +++ 2.6-git/drivers/ata/ahci.c
    @@ -175,6 +175,7 @@ enum {
    AHCI_FLAG_32BIT_ONLY = (1 << 28), /* force 32bit */
    AHCI_FLAG_MV_PATA = (1 << 29), /* PATA port */
    AHCI_FLAG_NO_MSI = (1 << 30), /* no PCI MSI */
    + AHCI_FLAG_NO_HOTPLUG = (1 << 31), /* ignore PxSERR.DIAG.N */

    AHCI_FLAG_COMMON = ATA_FLAG_SATA | ATA_FLAG_NO_LEGACY |
    ATA_FLAG_MMIO | ATA_FLAG_PIO_DMA |
    @@ -215,6 +216,7 @@ struct ahci_port_priv {
    unsigned int ncq_saw_d2h:1;
    unsigned int ncq_saw_dmas:1;
    unsigned int ncq_saw_sdb:1;
    + u32 intr_mask; /* interrupts to enable */
    };

    static int ahci_scr_read(struct ata_port *ap, unsigned int sc_reg, u32 *val);
    @@ -1518,6 +1520,7 @@ static void ahci_thaw(struct ata_port *a
    void __iomem *mmio = ap->host->iomap[AHCI_PCI_BAR];
    void __iomem *port_mmio = ahci_port_base(ap);
    u32 tmp;
    + struct ahci_port_priv *pp = ap->private_data;

    /* clear IRQ */
    tmp = readl(port_mmio + PORT_IRQ_STAT);
    @@ -1525,7 +1528,7 @@ static void ahci_thaw(struct ata_port *a
    writel(1 << ap->port_no, mmio + HOST_IRQ_STAT);

    /* turn IRQ back on */
    - writel(DEF_PORT_IRQ, port_mmio + PORT_IRQ_MASK);
    + writel(pp->intr_mask, port_mmio + PORT_IRQ_MASK);
    }

    static void ahci_error_handler(struct ata_port *ap)
    @@ -1679,6 +1682,12 @@ static int ahci_port_start(struct ata_po
    pp->cmd_tbl = mem;
    pp->cmd_tbl_dma = mem_dma;

    + /*
    + * Save off initial list of interrupts to be enabled.
    + * This could be changed later
    + */
    + pp->intr_mask = DEF_PORT_IRQ;
    +
    ap->private_data = pp;

    /* engage engines, captain */
    -
    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/
    \
     
     \ /
      Last update: 2007-08-01 23:23    [W:0.021 / U:150.064 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site