Loading drivers/ata/ahci.c +24 −17 Original line number Diff line number Diff line Loading @@ -3270,6 +3270,29 @@ static inline void ahci_gtf_filter_workaround(struct ata_host *host) {} #endif static void ahci_set_em_messages(struct ahci_host_priv *hpriv, struct ata_port_info *pi) { u8 messages; void __iomem *mmio = hpriv->mmio; u32 em_loc = readl(mmio + HOST_EM_LOC); u32 em_ctl = readl(mmio + HOST_EM_CTL); if (!ahci_em_messages || !(hpriv->cap & HOST_CAP_EMS)) return; messages = (em_ctl & EM_CTRL_MSG_TYPE) >> 16; /* we only support LED message type right now */ if ((messages & 0x01) && (ahci_em_messages == 1)) { /* store em_loc */ hpriv->em_loc = ((em_loc >> 16) * 4); pi->flags |= ATA_FLAG_EM; if (!(em_ctl & EM_CTL_ALHD)) pi->flags |= ATA_FLAG_SW_ACTIVITY; } } static int ahci_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) { static int printed_version; Loading Loading @@ -3373,23 +3396,7 @@ static int ahci_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) if (hpriv->cap & HOST_CAP_PMP) pi.flags |= ATA_FLAG_PMP; if (ahci_em_messages && (hpriv->cap & HOST_CAP_EMS)) { u8 messages; void __iomem *mmio = hpriv->mmio; u32 em_loc = readl(mmio + HOST_EM_LOC); u32 em_ctl = readl(mmio + HOST_EM_CTL); messages = (em_ctl & EM_CTRL_MSG_TYPE) >> 16; /* we only support LED message type right now */ if ((messages & 0x01) && (ahci_em_messages == 1)) { /* store em_loc */ hpriv->em_loc = ((em_loc >> 16) * 4); pi.flags |= ATA_FLAG_EM; if (!(em_ctl & EM_CTL_ALHD)) pi.flags |= ATA_FLAG_SW_ACTIVITY; } } ahci_set_em_messages(hpriv, &pi); if (ahci_broken_system_poweroff(pdev)) { pi.flags |= ATA_FLAG_NO_POWEROFF_SPINDOWN; Loading Loading
drivers/ata/ahci.c +24 −17 Original line number Diff line number Diff line Loading @@ -3270,6 +3270,29 @@ static inline void ahci_gtf_filter_workaround(struct ata_host *host) {} #endif static void ahci_set_em_messages(struct ahci_host_priv *hpriv, struct ata_port_info *pi) { u8 messages; void __iomem *mmio = hpriv->mmio; u32 em_loc = readl(mmio + HOST_EM_LOC); u32 em_ctl = readl(mmio + HOST_EM_CTL); if (!ahci_em_messages || !(hpriv->cap & HOST_CAP_EMS)) return; messages = (em_ctl & EM_CTRL_MSG_TYPE) >> 16; /* we only support LED message type right now */ if ((messages & 0x01) && (ahci_em_messages == 1)) { /* store em_loc */ hpriv->em_loc = ((em_loc >> 16) * 4); pi->flags |= ATA_FLAG_EM; if (!(em_ctl & EM_CTL_ALHD)) pi->flags |= ATA_FLAG_SW_ACTIVITY; } } static int ahci_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) { static int printed_version; Loading Loading @@ -3373,23 +3396,7 @@ static int ahci_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) if (hpriv->cap & HOST_CAP_PMP) pi.flags |= ATA_FLAG_PMP; if (ahci_em_messages && (hpriv->cap & HOST_CAP_EMS)) { u8 messages; void __iomem *mmio = hpriv->mmio; u32 em_loc = readl(mmio + HOST_EM_LOC); u32 em_ctl = readl(mmio + HOST_EM_CTL); messages = (em_ctl & EM_CTRL_MSG_TYPE) >> 16; /* we only support LED message type right now */ if ((messages & 0x01) && (ahci_em_messages == 1)) { /* store em_loc */ hpriv->em_loc = ((em_loc >> 16) * 4); pi.flags |= ATA_FLAG_EM; if (!(em_ctl & EM_CTL_ALHD)) pi.flags |= ATA_FLAG_SW_ACTIVITY; } } ahci_set_em_messages(hpriv, &pi); if (ahci_broken_system_poweroff(pdev)) { pi.flags |= ATA_FLAG_NO_POWEROFF_SPINDOWN; Loading