From a6e726244c78e04d0af754c625036be8f92a9afd Mon Sep 17 00:00:00 2001 From: Russell King Date: Tue, 24 Jun 2014 11:19:47 +0100 Subject: [PATCH] ata: ahci_imx: add disable for spread-spectrum Spread-spectrum doesn't work with Cubox-i hardware, so we have to disable this feature. Add a DT property so that platforms can indicate that this feature should not be enabled. Having it as a negative property keeps existing DT files working. Signed-off-by: Russell King Reviewed-by: Shawn Guo Signed-off-by: Tejun Heo --- drivers/ata/ahci_imx.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/drivers/ata/ahci_imx.c b/drivers/ata/ahci_imx.c index e032e95ddee3..685a4db030b1 100644 --- a/drivers/ata/ahci_imx.c +++ b/drivers/ata/ahci_imx.c @@ -368,6 +368,7 @@ struct reg_property { const struct reg_value *values; size_t num_values; u32 def_value; + u32 set_value; }; static const struct reg_value gpr13_tx_level[] = { @@ -465,6 +466,10 @@ static const struct reg_property gpr13_props[] = { .values = gpr13_rx_eq, .num_values = ARRAY_SIZE(gpr13_rx_eq), .def_value = IMX6Q_GPR13_SATA_RX_EQ_VAL_3_0_DB, + }, { + .name = "fsl,no-spread-spectrum", + .def_value = IMX6Q_GPR13_SATA_MPLL_SS_EN, + .set_value = 0, }, }; @@ -478,6 +483,14 @@ static u32 imx_ahci_parse_props(struct device *dev, for (i = 0; i < num; i++, prop++) { u32 of_val; + if (prop->num_values == 0) { + if (of_property_read_bool(np, prop->name)) + reg_value |= prop->set_value; + else + reg_value |= prop->def_value; + continue; + } + if (of_property_read_u32(np, prop->name, &of_val)) { dev_info(dev, "%s not specified, using %08x\n", prop->name, prop->def_value); @@ -549,7 +562,6 @@ static int imx_ahci_probe(struct platform_device *pdev) IMX6Q_GPR13_SATA_RX_LOS_LVL_SATA2M | IMX6Q_GPR13_SATA_RX_DPLL_MODE_2P_4F | IMX6Q_GPR13_SATA_SPD_MODE_3P0G | - IMX6Q_GPR13_SATA_MPLL_SS_EN | reg_value; } -- 2.20.1