|
@@ -449,6 +449,7 @@ static void mv_error_handler(struct ata_port *ap);
|
|
|
static void mv_post_int_cmd(struct ata_queued_cmd *qc);
|
|
|
static void mv_eh_freeze(struct ata_port *ap);
|
|
|
static void mv_eh_thaw(struct ata_port *ap);
|
|
|
+static void mv6_dev_config(struct ata_device *dev);
|
|
|
static int mv_init_one(struct pci_dev *pdev, const struct pci_device_id *ent);
|
|
|
|
|
|
static void mv5_phy_errata(struct mv_host_priv *hpriv, void __iomem *mmio,
|
|
@@ -541,6 +542,7 @@ static const struct ata_port_operations mv5_ops = {
|
|
|
};
|
|
|
|
|
|
static const struct ata_port_operations mv6_ops = {
|
|
|
+ .dev_config = mv6_dev_config,
|
|
|
.tf_load = ata_tf_load,
|
|
|
.tf_read = ata_tf_read,
|
|
|
.check_status = ata_check_status,
|
|
@@ -1054,6 +1056,17 @@ static int mv_scr_write(struct ata_port *ap, unsigned int sc_reg_in, u32 val)
|
|
|
return -EINVAL;
|
|
|
}
|
|
|
|
|
|
+static void mv6_dev_config(struct ata_device *adev)
|
|
|
+{
|
|
|
+ /*
|
|
|
+ * We don't have hob_nsect when doing NCQ commands on Gen-II.
|
|
|
+ * See mv_qc_prep() for more info.
|
|
|
+ */
|
|
|
+ if (adev->flags & ATA_DFLAG_NCQ)
|
|
|
+ if (adev->max_sectors > ATA_MAX_SECTORS)
|
|
|
+ adev->max_sectors = ATA_MAX_SECTORS;
|
|
|
+}
|
|
|
+
|
|
|
static void mv_edma_cfg(struct mv_port_priv *pp, struct mv_host_priv *hpriv,
|
|
|
void __iomem *port_mmio, int want_ncq)
|
|
|
{
|