Merge tag 'isci-for-3.6' into for-next
authorJames Bottomley <JBottomley@Parallels.com>
Thu, 13 Sep 2012 08:26:10 +0000 (09:26 +0100)
committerJames Bottomley <JBottomley@Parallels.com>
Thu, 13 Sep 2012 08:26:10 +0000 (09:26 +0100)
isci update for 3.6

1/ Fix the workaround for drives that have a slow response to COMSAS.
   Drives with this problem intermittently take a long time to be
   identified, or fail to be identified altogether.

2/ A minor fix for the efi variable code failure path

3/ A handful of smatch fixups from Dan Carpenter

drivers/scsi/isci/host.c
drivers/scsi/isci/init.c
drivers/scsi/isci/phy.c
drivers/scsi/isci/probe_roms.c
drivers/scsi/isci/remote_node_context.h

index 45385f531649d7c4724e85145c0549e703098588..b425ed523ccc1b43384d97218875defe8c64ac1e 100644 (file)
@@ -1973,7 +1973,7 @@ static void sci_controller_afe_initialization(struct isci_host *ihost)
        }
 
        for (phy_id = 0; phy_id < SCI_MAX_PHYS; phy_id++) {
-               struct scu_afe_transceiver *xcvr = &afe->scu_afe_xcvr[phy_id];
+               struct scu_afe_transceiver __iomem *xcvr = &afe->scu_afe_xcvr[phy_id];
                const struct sci_phy_oem_params *oem_phy = &oem->phys[phy_id];
                int cable_length_long =
                        is_long_cable(phy_id, cable_selection_mask);
index 92c1d86d1fc6478471cd88a318bd9e72e9bd65d6..1286a8a787e2bcf39a82387b3b723d33a5544d6c 100644 (file)
@@ -644,7 +644,6 @@ static int __devinit isci_pci_probe(struct pci_dev *pdev, const struct pci_devic
                                                orom->hdr.version)) {
                        dev_warn(&pdev->dev,
                                 "[%d]: invalid oem parameters detected, falling back to firmware\n", i);
-                       devm_kfree(&pdev->dev, orom);
                        orom = NULL;
                        break;
                }
index 18f43d4c30baf8e37177eac41c8b817d7c8bcb1d..cb87b2ef7c92ab2ab5b25cbedbb594e85956eb05 100644 (file)
@@ -169,7 +169,7 @@ sci_phy_link_layer_initialization(struct isci_phy *iphy,
        phy_cap.gen1_no_ssc = 1;
        if (ihost->oem_parameters.controller.do_enable_ssc) {
                struct scu_afe_registers __iomem *afe = &ihost->scu_registers->afe;
-               struct scu_afe_transceiver *xcvr = &afe->scu_afe_xcvr[phy_idx];
+               struct scu_afe_transceiver __iomem *xcvr = &afe->scu_afe_xcvr[phy_idx];
                struct isci_pci_info *pci_info = to_pci_info(ihost->pdev);
                bool en_sas = false;
                bool en_sata = false;
@@ -1205,6 +1205,7 @@ static void scu_link_layer_start_oob(struct isci_phy *iphy)
        /** Reset OOB sequence - start */
        val = readl(&ll->phy_configuration);
        val &= ~(SCU_SAS_PCFG_GEN_BIT(OOB_RESET) |
+                SCU_SAS_PCFG_GEN_BIT(OOB_ENABLE) |
                 SCU_SAS_PCFG_GEN_BIT(HARD_RESET));
        writel(val, &ll->phy_configuration);
        readl(&ll->phy_configuration); /* flush */
@@ -1236,6 +1237,7 @@ static void scu_link_layer_tx_hard_reset(
         * to the starting state. */
        phy_configuration_value =
                readl(&iphy->link_layer_registers->phy_configuration);
+       phy_configuration_value &= ~(SCU_SAS_PCFG_GEN_BIT(OOB_ENABLE));
        phy_configuration_value |=
                (SCU_SAS_PCFG_GEN_BIT(HARD_RESET) |
                 SCU_SAS_PCFG_GEN_BIT(OOB_RESET));
index 4d95654c3fd4852ebeaff740e11bbe2492d4c4a5..8ac646e5eddc9476603fb98c8ce5bd2a7b0be224 100644 (file)
@@ -104,7 +104,6 @@ struct isci_orom *isci_request_oprom(struct pci_dev *pdev)
 
        if (i >= len) {
                dev_err(&pdev->dev, "oprom parse error\n");
-               devm_kfree(&pdev->dev, rom);
                rom = NULL;
        }
        pci_unmap_biosrom(oprom);
index a703b9ce0c2c211c984a877179b724a624ebf4fc..c7ee81d011253487055b982942dff0620c635a17 100644 (file)
@@ -212,7 +212,7 @@ enum sci_status sci_remote_node_context_destruct(struct sci_remote_node_context
                                                      scics_sds_remote_node_context_callback callback,
                                                      void *callback_parameter);
 enum sci_status sci_remote_node_context_suspend(struct sci_remote_node_context *sci_rnc,
-                                                    u32 suspend_type,
+                                                    enum sci_remote_node_suspension_reasons reason,
                                                     u32 suspension_code);
 enum sci_status sci_remote_node_context_resume(struct sci_remote_node_context *sci_rnc,
                                                    scics_sds_remote_node_context_callback cb_fn,