* [PATCH 0/8] iMX6 SATA configuration @ 2014-06-24 10:19 Russell King - ARM Linux 2014-06-24 10:19 ` [PATCH v3 1/8] dt-bindings: ata: create bindings for imx sata controller Russell King ` (9 more replies) 0 siblings, 10 replies; 15+ messages in thread From: Russell King - ARM Linux @ 2014-06-24 10:19 UTC (permalink / raw) To: linux-arm-kernel Another round of these patches. I've integrated Shawn's patch to split the documentation into this series so I can add the DT documentation on top of it. .../devicetree/bindings/ata/ahci-platform.txt | 6 - Documentation/devicetree/bindings/ata/imx-sata.txt | 36 ++++ arch/arm/boot/dts/imx6q-cubox-i.dts | 4 + drivers/ata/ahci_imx.c | 184 ++++++++++++++++++++- 4 files changed, 216 insertions(+), 14 deletions(-) -- FTTC broadband for 0.8mile line: now at 9.7Mbps down 460kbps up... slowly improving, and getting towards what was expected from it. ^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH v3 1/8] dt-bindings: ata: create bindings for imx sata controller 2014-06-24 10:19 [PATCH 0/8] iMX6 SATA configuration Russell King - ARM Linux @ 2014-06-24 10:19 ` Russell King 2014-06-24 10:19 ` [PATCH v3 2/8] ata: ahci_imx: warn when disabling ahci link Russell King ` (8 subsequent siblings) 9 siblings, 0 replies; 15+ messages in thread From: Russell King @ 2014-06-24 10:19 UTC (permalink / raw) To: linux-arm-kernel From: Shawn Guo <shawn.guo@freescale.com> To: Tejun Heo <tj@kernel.org>,linux-ide at vger.kernel.org The Freescale i.MX SATA controller mostly conforms to the AHCI interface, but there are some special extensions at integration level like clocks settings and hardware parameters. Let's create a separate bindings doc for imx sata controller, so that more imx specific properties can be added later without messing up the generic ahci-platform bindings. Signed-off-by: Shawn Guo <shawn.guo@freescale.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> --- .../devicetree/bindings/ata/ahci-platform.txt | 6 ----- Documentation/devicetree/bindings/ata/imx-sata.txt | 26 ++++++++++++++++++++++ 2 files changed, 26 insertions(+), 6 deletions(-) create mode 100644 Documentation/devicetree/bindings/ata/imx-sata.txt diff --git a/Documentation/devicetree/bindings/ata/ahci-platform.txt b/Documentation/devicetree/bindings/ata/ahci-platform.txt index c96d8dcf98fd..549ceb8cb93b 100644 --- a/Documentation/devicetree/bindings/ata/ahci-platform.txt +++ b/Documentation/devicetree/bindings/ata/ahci-platform.txt @@ -6,8 +6,6 @@ Each SATA controller should have its own node. Required properties: - compatible : compatible string, one of: - "allwinner,sun4i-a10-ahci" - - "fsl,imx53-ahci" - - "fsl,imx6q-ahci" - "hisilicon,hisi-ahci" - "ibm,476gtr-ahci" - "marvell,armada-380-ahci" @@ -22,10 +20,6 @@ Each SATA controller should have its own node. - clocks : a list of phandle + clock specifier pairs - target-supply : regulator for SATA target power -"fsl,imx53-ahci", "fsl,imx6q-ahci" required properties: -- clocks : must contain the sata, sata_ref and ahb clocks -- clock-names : must contain "ahb" for the ahb clock - Examples: sata at ffe08000 { compatible = "snps,spear-ahci"; diff --git a/Documentation/devicetree/bindings/ata/imx-sata.txt b/Documentation/devicetree/bindings/ata/imx-sata.txt new file mode 100644 index 000000000000..aeb99dd986b0 --- /dev/null +++ b/Documentation/devicetree/bindings/ata/imx-sata.txt @@ -0,0 +1,26 @@ +* Freescale i.MX AHCI SATA Controller + +The Freescale i.MX SATA controller mostly conforms to the AHCI interface +with some special extensions at integration level. + +Required properties: +- compatible : should be one of the following: + - "fsl,imx53-ahci" for i.MX53 SATA controller + - "fsl,imx6q-ahci" for i.MX6Q SATA controller +- interrupts : interrupt mapping for SATA IRQ +- reg : registers mapping +- clocks : list of clock specifiers, must contain an entry for each + required entry in clock-names +- clock-names : should include "sata", "sata_ref" and "ahb" entries + +Examples: + +sata at 02200000 { + compatible = "fsl,imx6q-ahci"; + reg = <0x02200000 0x4000>; + interrupts = <0 39 IRQ_TYPE_LEVEL_HIGH>; + clocks = <&clks IMX6QDL_CLK_SATA>, + <&clks IMX6QDL_CLK_SATA_REF_100M>, + <&clks IMX6QDL_CLK_AHB>; + clock-names = "sata", "sata_ref", "ahb"; +}; -- 1.8.3.1 ^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH v3 2/8] ata: ahci_imx: warn when disabling ahci link 2014-06-24 10:19 [PATCH 0/8] iMX6 SATA configuration Russell King - ARM Linux 2014-06-24 10:19 ` [PATCH v3 1/8] dt-bindings: ata: create bindings for imx sata controller Russell King @ 2014-06-24 10:19 ` Russell King 2014-06-24 22:05 ` Tejun Heo 2014-06-24 10:19 ` [PATCH v3 3/8] ata: ahci_imx: allow hardware parameters to be specified in DT Russell King ` (7 subsequent siblings) 9 siblings, 1 reply; 15+ messages in thread From: Russell King @ 2014-06-24 10:19 UTC (permalink / raw) To: linux-arm-kernel When the AHCI link is disabled, it can't be re-enabled except by resetting the entire SoC. Rather than doing this silently print some kernel messages to inform the user, along with how to avoid this. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> --- drivers/ata/ahci_imx.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/ata/ahci_imx.c b/drivers/ata/ahci_imx.c index 3a901520c62b..4eba1c5279ec 100644 --- a/drivers/ata/ahci_imx.c +++ b/drivers/ata/ahci_imx.c @@ -324,6 +324,10 @@ static void ahci_imx_error_handler(struct ata_port *ap) writel(reg_val | IMX_P0PHYCR_TEST_PDDQ, mmio + IMX_P0PHYCR); imx_sata_disable(hpriv); imxpriv->no_device = true; + + dev_info(ap->dev, "no device found, disabling link.\n"); + dev_info(ap->dev, "pass " MODULE_PARAM_PREFIX + ".hotplug=1 to enable hotplug\n"); } static int ahci_imx_softreset(struct ata_link *link, unsigned int *class, -- 1.8.3.1 ^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH v3 2/8] ata: ahci_imx: warn when disabling ahci link 2014-06-24 10:19 ` [PATCH v3 2/8] ata: ahci_imx: warn when disabling ahci link Russell King @ 2014-06-24 22:05 ` Tejun Heo 0 siblings, 0 replies; 15+ messages in thread From: Tejun Heo @ 2014-06-24 22:05 UTC (permalink / raw) To: linux-arm-kernel On Tue, Jun 24, 2014 at 11:19:32AM +0100, Russell King wrote: > When the AHCI link is disabled, it can't be re-enabled except by > resetting the entire SoC. Rather than doing this silently print > some kernel messages to inform the user, along with how to avoid > this. > > Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> The same patch from an earlier posting got applied to libata/for-3.16-fixes. Thanks. -- tejun ^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH v3 3/8] ata: ahci_imx: allow hardware parameters to be specified in DT 2014-06-24 10:19 [PATCH 0/8] iMX6 SATA configuration Russell King - ARM Linux 2014-06-24 10:19 ` [PATCH v3 1/8] dt-bindings: ata: create bindings for imx sata controller Russell King 2014-06-24 10:19 ` [PATCH v3 2/8] ata: ahci_imx: warn when disabling ahci link Russell King @ 2014-06-24 10:19 ` Russell King 2014-06-24 10:19 ` [PATCH v3 4/8] dt-bindings: ata: add ahci_imx electrical properties Russell King ` (6 subsequent siblings) 9 siblings, 0 replies; 15+ messages in thread From: Russell King @ 2014-06-24 10:19 UTC (permalink / raw) To: linux-arm-kernel Various SATA phy parameters are board specific, and therefore need to be configured. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> --- drivers/ata/ahci_imx.c | 168 ++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 160 insertions(+), 8 deletions(-) diff --git a/drivers/ata/ahci_imx.c b/drivers/ata/ahci_imx.c index 4eba1c5279ec..c19019008132 100644 --- a/drivers/ata/ahci_imx.c +++ b/drivers/ata/ahci_imx.c @@ -62,6 +62,7 @@ struct imx_ahci_priv { struct regmap *gpr; bool no_device; bool first_time; + u32 phy_params; }; static int ahci_imx_hotplug; @@ -246,14 +247,7 @@ static int imx_sata_enable(struct ahci_host_priv *hpriv) IMX6Q_GPR13_SATA_TX_LVL_MASK | IMX6Q_GPR13_SATA_MPLL_CLK_EN | IMX6Q_GPR13_SATA_TX_EDGE_RATE, - IMX6Q_GPR13_SATA_RX_EQ_VAL_3_0_DB | - 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 | - IMX6Q_GPR13_SATA_TX_ATTEN_9_16 | - IMX6Q_GPR13_SATA_TX_BOOST_3_33_DB | - IMX6Q_GPR13_SATA_TX_LVL_1_025_V); + imxpriv->phy_params); regmap_update_bits(imxpriv->gpr, IOMUXC_GPR13, IMX6Q_GPR13_SATA_MPLL_CLK_EN, IMX6Q_GPR13_SATA_MPLL_CLK_EN); @@ -368,6 +362,152 @@ static const struct of_device_id imx_ahci_of_match[] = { }; MODULE_DEVICE_TABLE(of, imx_ahci_of_match); +struct reg_value { + u32 of_value; + u32 reg_value; +}; + +struct reg_property { + const char *name; + const struct reg_value *values; + size_t num_values; + u32 def_value; +}; + +static const struct reg_value gpr13_tx_level[] = { + { 937, IMX6Q_GPR13_SATA_TX_LVL_0_937_V }, + { 947, IMX6Q_GPR13_SATA_TX_LVL_0_947_V }, + { 957, IMX6Q_GPR13_SATA_TX_LVL_0_957_V }, + { 966, IMX6Q_GPR13_SATA_TX_LVL_0_966_V }, + { 976, IMX6Q_GPR13_SATA_TX_LVL_0_976_V }, + { 986, IMX6Q_GPR13_SATA_TX_LVL_0_986_V }, + { 996, IMX6Q_GPR13_SATA_TX_LVL_0_996_V }, + { 1005, IMX6Q_GPR13_SATA_TX_LVL_1_005_V }, + { 1015, IMX6Q_GPR13_SATA_TX_LVL_1_015_V }, + { 1025, IMX6Q_GPR13_SATA_TX_LVL_1_025_V }, + { 1035, IMX6Q_GPR13_SATA_TX_LVL_1_035_V }, + { 1045, IMX6Q_GPR13_SATA_TX_LVL_1_045_V }, + { 1054, IMX6Q_GPR13_SATA_TX_LVL_1_054_V }, + { 1064, IMX6Q_GPR13_SATA_TX_LVL_1_064_V }, + { 1074, IMX6Q_GPR13_SATA_TX_LVL_1_074_V }, + { 1084, IMX6Q_GPR13_SATA_TX_LVL_1_084_V }, + { 1094, IMX6Q_GPR13_SATA_TX_LVL_1_094_V }, + { 1104, IMX6Q_GPR13_SATA_TX_LVL_1_104_V }, + { 1113, IMX6Q_GPR13_SATA_TX_LVL_1_113_V }, + { 1123, IMX6Q_GPR13_SATA_TX_LVL_1_123_V }, + { 1133, IMX6Q_GPR13_SATA_TX_LVL_1_133_V }, + { 1143, IMX6Q_GPR13_SATA_TX_LVL_1_143_V }, + { 1152, IMX6Q_GPR13_SATA_TX_LVL_1_152_V }, + { 1162, IMX6Q_GPR13_SATA_TX_LVL_1_162_V }, + { 1172, IMX6Q_GPR13_SATA_TX_LVL_1_172_V }, + { 1182, IMX6Q_GPR13_SATA_TX_LVL_1_182_V }, + { 1191, IMX6Q_GPR13_SATA_TX_LVL_1_191_V }, + { 1201, IMX6Q_GPR13_SATA_TX_LVL_1_201_V }, + { 1211, IMX6Q_GPR13_SATA_TX_LVL_1_211_V }, + { 1221, IMX6Q_GPR13_SATA_TX_LVL_1_221_V }, + { 1230, IMX6Q_GPR13_SATA_TX_LVL_1_230_V }, + { 1240, IMX6Q_GPR13_SATA_TX_LVL_1_240_V } +}; + +static const struct reg_value gpr13_tx_boost[] = { + { 0, IMX6Q_GPR13_SATA_TX_BOOST_0_00_DB }, + { 370, IMX6Q_GPR13_SATA_TX_BOOST_0_37_DB }, + { 740, IMX6Q_GPR13_SATA_TX_BOOST_0_74_DB }, + { 1110, IMX6Q_GPR13_SATA_TX_BOOST_1_11_DB }, + { 1480, IMX6Q_GPR13_SATA_TX_BOOST_1_48_DB }, + { 1850, IMX6Q_GPR13_SATA_TX_BOOST_1_85_DB }, + { 2220, IMX6Q_GPR13_SATA_TX_BOOST_2_22_DB }, + { 2590, IMX6Q_GPR13_SATA_TX_BOOST_2_59_DB }, + { 2960, IMX6Q_GPR13_SATA_TX_BOOST_2_96_DB }, + { 3330, IMX6Q_GPR13_SATA_TX_BOOST_3_33_DB }, + { 3700, IMX6Q_GPR13_SATA_TX_BOOST_3_70_DB }, + { 4070, IMX6Q_GPR13_SATA_TX_BOOST_4_07_DB }, + { 4440, IMX6Q_GPR13_SATA_TX_BOOST_4_44_DB }, + { 4810, IMX6Q_GPR13_SATA_TX_BOOST_4_81_DB }, + { 5280, IMX6Q_GPR13_SATA_TX_BOOST_5_28_DB }, + { 5750, IMX6Q_GPR13_SATA_TX_BOOST_5_75_DB } +}; + +static const struct reg_value gpr13_tx_atten[] = { + { 8, IMX6Q_GPR13_SATA_TX_ATTEN_8_16 }, + { 9, IMX6Q_GPR13_SATA_TX_ATTEN_9_16 }, + { 10, IMX6Q_GPR13_SATA_TX_ATTEN_10_16 }, + { 12, IMX6Q_GPR13_SATA_TX_ATTEN_12_16 }, + { 14, IMX6Q_GPR13_SATA_TX_ATTEN_14_16 }, + { 16, IMX6Q_GPR13_SATA_TX_ATTEN_16_16 }, +}; + +static const struct reg_value gpr13_rx_eq[] = { + { 500, IMX6Q_GPR13_SATA_RX_EQ_VAL_0_5_DB }, + { 1000, IMX6Q_GPR13_SATA_RX_EQ_VAL_1_0_DB }, + { 1500, IMX6Q_GPR13_SATA_RX_EQ_VAL_1_5_DB }, + { 2000, IMX6Q_GPR13_SATA_RX_EQ_VAL_2_0_DB }, + { 2500, IMX6Q_GPR13_SATA_RX_EQ_VAL_2_5_DB }, + { 3000, IMX6Q_GPR13_SATA_RX_EQ_VAL_3_0_DB }, + { 3500, IMX6Q_GPR13_SATA_RX_EQ_VAL_3_5_DB }, + { 4000, IMX6Q_GPR13_SATA_RX_EQ_VAL_4_0_DB }, +}; + +static const struct reg_property gpr13_props[] = { + { + .name = "fsl,transmit-level-mV", + .values = gpr13_tx_level, + .num_values = ARRAY_SIZE(gpr13_tx_level), + .def_value = IMX6Q_GPR13_SATA_TX_LVL_1_025_V, + }, { + .name = "fsl,transmit-boost-mdB", + .values = gpr13_tx_boost, + .num_values = ARRAY_SIZE(gpr13_tx_boost), + .def_value = IMX6Q_GPR13_SATA_TX_BOOST_3_33_DB, + }, { + .name = "fsl,transmit-atten-16ths", + .values = gpr13_tx_atten, + .num_values = ARRAY_SIZE(gpr13_tx_atten), + .def_value = IMX6Q_GPR13_SATA_TX_ATTEN_9_16, + }, { + .name = "fsl,receive-eq-mdB", + .values = gpr13_rx_eq, + .num_values = ARRAY_SIZE(gpr13_rx_eq), + .def_value = IMX6Q_GPR13_SATA_RX_EQ_VAL_3_0_DB, + }, +}; + +static u32 imx_ahci_parse_props(struct device *dev, + const struct reg_property *prop, size_t num) +{ + struct device_node *np = dev->of_node; + u32 reg_value = 0; + int i, j; + + for (i = 0; i < num; i++, prop++) { + u32 of_val; + + if (of_property_read_u32(np, prop->name, &of_val)) { + dev_info(dev, "%s not specified, using %08x\n", + prop->name, prop->def_value); + reg_value |= prop->def_value; + continue; + } + + for (j = 0; j < prop->num_values; j++) { + if (prop->values[j].of_value == of_val) { + dev_info(dev, "%s value %u, using %08x\n", + prop->name, of_val, prop->values[j].reg_value); + reg_value |= prop->values[j].reg_value; + break; + } + } + + if (j == prop->num_values) { + dev_err(dev, "DT property %s is not a valid value\n", + prop->name); + reg_value |= prop->def_value; + } + } + + return reg_value; +} + static int imx_ahci_probe(struct platform_device *pdev) { struct device *dev = &pdev->dev; @@ -396,6 +536,8 @@ static int imx_ahci_probe(struct platform_device *pdev) } if (imxpriv->type == AHCI_IMX6Q) { + u32 reg_value; + imxpriv->gpr = syscon_regmap_lookup_by_compatible( "fsl,imx6q-iomuxc-gpr"); if (IS_ERR(imxpriv->gpr)) { @@ -403,6 +545,16 @@ static int imx_ahci_probe(struct platform_device *pdev) "failed to find fsl,imx6q-iomux-gpr regmap\n"); return PTR_ERR(imxpriv->gpr); } + + reg_value = imx_ahci_parse_props(dev, gpr13_props, + ARRAY_SIZE(gpr13_props)); + + imxpriv->phy_params = + 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; } hpriv = ahci_platform_get_resources(pdev); -- 1.8.3.1 ^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH v3 4/8] dt-bindings: ata: add ahci_imx electrical properties 2014-06-24 10:19 [PATCH 0/8] iMX6 SATA configuration Russell King - ARM Linux ` (2 preceding siblings ...) 2014-06-24 10:19 ` [PATCH v3 3/8] ata: ahci_imx: allow hardware parameters to be specified in DT Russell King @ 2014-06-24 10:19 ` Russell King 2014-06-24 10:19 ` [PATCH v3 5/8] ata: ahci_imx: add disable for spread-spectrum Russell King ` (5 subsequent siblings) 9 siblings, 0 replies; 15+ messages in thread From: Russell King @ 2014-06-24 10:19 UTC (permalink / raw) To: linux-arm-kernel Add the documentation for the electrical properties for the iMX SATA controller. There are many values for these, and listing them would be error prone. Refer readers to the device documentation and driver source code for these details. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> --- Documentation/devicetree/bindings/ata/imx-sata.txt | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Documentation/devicetree/bindings/ata/imx-sata.txt b/Documentation/devicetree/bindings/ata/imx-sata.txt index aeb99dd986b0..a13f0f603776 100644 --- a/Documentation/devicetree/bindings/ata/imx-sata.txt +++ b/Documentation/devicetree/bindings/ata/imx-sata.txt @@ -13,6 +13,14 @@ with some special extensions at integration level. required entry in clock-names - clock-names : should include "sata", "sata_ref" and "ahb" entries +Optional properties: +- fsl,transmit-level-mV : transmit voltage level, in millivolts. +- fsl,transmit-boost-mdB : transmit boost level, in milli-decibels +- fsl,transmit-atten-16ths : transmit attenuation, in 16ths +- fsl,receive-eq-mdB : receive equalisation, in milli-decibels + Please refer to the technical documentation or the driver source code + for the list of legal values for these options. + Examples: sata at 02200000 { -- 1.8.3.1 ^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH v3 5/8] ata: ahci_imx: add disable for spread-spectrum 2014-06-24 10:19 [PATCH 0/8] iMX6 SATA configuration Russell King - ARM Linux ` (3 preceding siblings ...) 2014-06-24 10:19 ` [PATCH v3 4/8] dt-bindings: ata: add ahci_imx electrical properties Russell King @ 2014-06-24 10:19 ` Russell King 2014-06-24 10:19 ` [PATCH v3 6/8] dt-bindings: ata: document ability to disable spread-spectrum clock Russell King ` (4 subsequent siblings) 9 siblings, 0 replies; 15+ messages in thread From: Russell King @ 2014-06-24 10:19 UTC (permalink / raw) To: linux-arm-kernel 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 <rmk+kernel@arm.linux.org.uk> --- 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 c19019008132..2a4adc939f4c 100644 --- a/drivers/ata/ahci_imx.c +++ b/drivers/ata/ahci_imx.c @@ -372,6 +372,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[] = { @@ -469,6 +470,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, }, }; @@ -482,6 +487,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); @@ -553,7 +566,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; } -- 1.8.3.1 ^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH v3 6/8] dt-bindings: ata: document ability to disable spread-spectrum clock 2014-06-24 10:19 [PATCH 0/8] iMX6 SATA configuration Russell King - ARM Linux ` (4 preceding siblings ...) 2014-06-24 10:19 ` [PATCH v3 5/8] ata: ahci_imx: add disable for spread-spectrum Russell King @ 2014-06-24 10:19 ` Russell King 2014-06-24 10:19 ` [PATCH v3 7/8] ARM: dts: cubox-i: add eSATA DT configuration Russell King ` (3 subsequent siblings) 9 siblings, 0 replies; 15+ messages in thread From: Russell King @ 2014-06-24 10:19 UTC (permalink / raw) To: linux-arm-kernel Add documentation of the fsl,no-spread-spectrum option. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> --- Documentation/devicetree/bindings/ata/imx-sata.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Documentation/devicetree/bindings/ata/imx-sata.txt b/Documentation/devicetree/bindings/ata/imx-sata.txt index a13f0f603776..fa511db18408 100644 --- a/Documentation/devicetree/bindings/ata/imx-sata.txt +++ b/Documentation/devicetree/bindings/ata/imx-sata.txt @@ -20,6 +20,8 @@ with some special extensions at integration level. - fsl,receive-eq-mdB : receive equalisation, in milli-decibels Please refer to the technical documentation or the driver source code for the list of legal values for these options. +- fsl,no-spread-spectrum : disable spread-spectrum clocking on the SATA + link. Examples: -- 1.8.3.1 ^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH v3 7/8] ARM: dts: cubox-i: add eSATA DT configuration 2014-06-24 10:19 [PATCH 0/8] iMX6 SATA configuration Russell King - ARM Linux ` (5 preceding siblings ...) 2014-06-24 10:19 ` [PATCH v3 6/8] dt-bindings: ata: document ability to disable spread-spectrum clock Russell King @ 2014-06-24 10:19 ` Russell King 2014-06-25 15:32 ` Shawn Guo 2014-06-24 10:20 ` [PATCH v3 8/8] ARM: dts: cubox-i: disable spread-spectrum for Cubox-i eSATA Russell King ` (2 subsequent siblings) 9 siblings, 1 reply; 15+ messages in thread From: Russell King @ 2014-06-24 10:19 UTC (permalink / raw) To: linux-arm-kernel Add the transmit level, boost and attenuation parameters necessary for the eSATA interface on Cubox-i to work. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> --- arch/arm/boot/dts/imx6q-cubox-i.dts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/arch/arm/boot/dts/imx6q-cubox-i.dts b/arch/arm/boot/dts/imx6q-cubox-i.dts index bc5f31e3e892..941365d7ee65 100644 --- a/arch/arm/boot/dts/imx6q-cubox-i.dts +++ b/arch/arm/boot/dts/imx6q-cubox-i.dts @@ -13,4 +13,7 @@ &sata { status = "okay"; + fsl,transmit-level-mV = <1104>; + fsl,transmit-boost-mdB = <0>; + fsl,transmit-atten-16ths = <9>; }; -- 1.8.3.1 ^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH v3 7/8] ARM: dts: cubox-i: add eSATA DT configuration 2014-06-24 10:19 ` [PATCH v3 7/8] ARM: dts: cubox-i: add eSATA DT configuration Russell King @ 2014-06-25 15:32 ` Shawn Guo 0 siblings, 0 replies; 15+ messages in thread From: Shawn Guo @ 2014-06-25 15:32 UTC (permalink / raw) To: linux-arm-kernel On Tue, Jun 24, 2014 at 11:19:58AM +0100, Russell King wrote: > Add the transmit level, boost and attenuation parameters necessary for > the eSATA interface on Cubox-i to work. > > Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> Applied #7 and #8, thanks. ^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH v3 8/8] ARM: dts: cubox-i: disable spread-spectrum for Cubox-i eSATA 2014-06-24 10:19 [PATCH 0/8] iMX6 SATA configuration Russell King - ARM Linux ` (6 preceding siblings ...) 2014-06-24 10:19 ` [PATCH v3 7/8] ARM: dts: cubox-i: add eSATA DT configuration Russell King @ 2014-06-24 10:20 ` Russell King 2014-06-24 12:45 ` [PATCH 0/8] iMX6 SATA configuration Rob Herring 2014-06-24 22:09 ` Tejun Heo 9 siblings, 0 replies; 15+ messages in thread From: Russell King @ 2014-06-24 10:20 UTC (permalink / raw) To: linux-arm-kernel Spread-spectrum doesn't work with Cubox-i hardware. eSATA devices are detected, but then fail on normal IO. Therefore, disable this feature. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> --- arch/arm/boot/dts/imx6q-cubox-i.dts | 1 + 1 file changed, 1 insertion(+) diff --git a/arch/arm/boot/dts/imx6q-cubox-i.dts b/arch/arm/boot/dts/imx6q-cubox-i.dts index 941365d7ee65..9efd8b0c8011 100644 --- a/arch/arm/boot/dts/imx6q-cubox-i.dts +++ b/arch/arm/boot/dts/imx6q-cubox-i.dts @@ -16,4 +16,5 @@ fsl,transmit-level-mV = <1104>; fsl,transmit-boost-mdB = <0>; fsl,transmit-atten-16ths = <9>; + fsl,no-spread-spectrum; }; -- 1.8.3.1 ^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH 0/8] iMX6 SATA configuration 2014-06-24 10:19 [PATCH 0/8] iMX6 SATA configuration Russell King - ARM Linux ` (7 preceding siblings ...) 2014-06-24 10:20 ` [PATCH v3 8/8] ARM: dts: cubox-i: disable spread-spectrum for Cubox-i eSATA Russell King @ 2014-06-24 12:45 ` Rob Herring 2014-06-24 22:09 ` Tejun Heo 9 siblings, 0 replies; 15+ messages in thread From: Rob Herring @ 2014-06-24 12:45 UTC (permalink / raw) To: linux-arm-kernel On Tue, Jun 24, 2014 at 5:19 AM, Russell King - ARM Linux <linux@arm.linux.org.uk> wrote: > Another round of these patches. I've integrated Shawn's patch to split > the documentation into this series so I can add the DT documentation > on top of it. > > .../devicetree/bindings/ata/ahci-platform.txt | 6 - > Documentation/devicetree/bindings/ata/imx-sata.txt | 36 ++++ > arch/arm/boot/dts/imx6q-cubox-i.dts | 4 + > drivers/ata/ahci_imx.c | 184 ++++++++++++++++++++- > 4 files changed, 216 insertions(+), 14 deletions(-) For patches 1, 4, and 6: Acked-by: Rob Herring <robh@kernel.org> Rob ^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH 0/8] iMX6 SATA configuration 2014-06-24 10:19 [PATCH 0/8] iMX6 SATA configuration Russell King - ARM Linux ` (8 preceding siblings ...) 2014-06-24 12:45 ` [PATCH 0/8] iMX6 SATA configuration Rob Herring @ 2014-06-24 22:09 ` Tejun Heo 2014-06-25 15:29 ` Shawn Guo 9 siblings, 1 reply; 15+ messages in thread From: Tejun Heo @ 2014-06-24 22:09 UTC (permalink / raw) To: linux-arm-kernel On Tue, Jun 24, 2014 at 11:19:01AM +0100, Russell King - ARM Linux wrote: > Another round of these patches. I've integrated Shawn's patch to split > the documentation into this series so I can add the DT documentation > on top of it. > > .../devicetree/bindings/ata/ahci-platform.txt | 6 - > Documentation/devicetree/bindings/ata/imx-sata.txt | 36 ++++ > arch/arm/boot/dts/imx6q-cubox-i.dts | 4 + > drivers/ata/ahci_imx.c | 184 ++++++++++++++++++++- > 4 files changed, 216 insertions(+), 14 deletions(-) Patches look good to me. Shawn, can you please review the ahci_imx portion? How should the patches be routed? Should I pick only the ata parts or apply the whole thing? Thanks. -- tejun ^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH 0/8] iMX6 SATA configuration 2014-06-24 22:09 ` Tejun Heo @ 2014-06-25 15:29 ` Shawn Guo 2014-07-01 21:25 ` Tejun Heo 0 siblings, 1 reply; 15+ messages in thread From: Shawn Guo @ 2014-06-25 15:29 UTC (permalink / raw) To: linux-arm-kernel On Tue, Jun 24, 2014 at 06:09:58PM -0400, Tejun Heo wrote: > On Tue, Jun 24, 2014 at 11:19:01AM +0100, Russell King - ARM Linux wrote: > > Another round of these patches. I've integrated Shawn's patch to split > > the documentation into this series so I can add the DT documentation > > on top of it. > > > > .../devicetree/bindings/ata/ahci-platform.txt | 6 - > > Documentation/devicetree/bindings/ata/imx-sata.txt | 36 ++++ > > arch/arm/boot/dts/imx6q-cubox-i.dts | 4 + > > drivers/ata/ahci_imx.c | 184 ++++++++++++++++++++- > > 4 files changed, 216 insertions(+), 14 deletions(-) > > Patches look good to me. Shawn, can you please review the ahci_imx > portion? Reviewed-by: Shawn Guo <shawn.guo@freescale.com> I also tested the series on imx6q-sabresd board and nothing breaks regarding SATA support on the board. > How should the patches be routed? Should I pick only the > ata parts or apply the whole thing? I will apply the last two dts patches via IMX tree, and please apply the first 6 patches through your tree. Shawn ^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH 0/8] iMX6 SATA configuration 2014-06-25 15:29 ` Shawn Guo @ 2014-07-01 21:25 ` Tejun Heo 0 siblings, 0 replies; 15+ messages in thread From: Tejun Heo @ 2014-07-01 21:25 UTC (permalink / raw) To: linux-arm-kernel On Wed, Jun 25, 2014 at 11:29:14PM +0800, Shawn Guo wrote: > I will apply the last two dts patches via IMX tree, and please apply > the first 6 patches through your tree. Alright, applied the rest to libata/for-3.17. Thanks. -- tejun ^ permalink raw reply [flat|nested] 15+ messages in thread
end of thread, other threads:[~2014-07-01 21:25 UTC | newest] Thread overview: 15+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2014-06-24 10:19 [PATCH 0/8] iMX6 SATA configuration Russell King - ARM Linux 2014-06-24 10:19 ` [PATCH v3 1/8] dt-bindings: ata: create bindings for imx sata controller Russell King 2014-06-24 10:19 ` [PATCH v3 2/8] ata: ahci_imx: warn when disabling ahci link Russell King 2014-06-24 22:05 ` Tejun Heo 2014-06-24 10:19 ` [PATCH v3 3/8] ata: ahci_imx: allow hardware parameters to be specified in DT Russell King 2014-06-24 10:19 ` [PATCH v3 4/8] dt-bindings: ata: add ahci_imx electrical properties Russell King 2014-06-24 10:19 ` [PATCH v3 5/8] ata: ahci_imx: add disable for spread-spectrum Russell King 2014-06-24 10:19 ` [PATCH v3 6/8] dt-bindings: ata: document ability to disable spread-spectrum clock Russell King 2014-06-24 10:19 ` [PATCH v3 7/8] ARM: dts: cubox-i: add eSATA DT configuration Russell King 2014-06-25 15:32 ` Shawn Guo 2014-06-24 10:20 ` [PATCH v3 8/8] ARM: dts: cubox-i: disable spread-spectrum for Cubox-i eSATA Russell King 2014-06-24 12:45 ` [PATCH 0/8] iMX6 SATA configuration Rob Herring 2014-06-24 22:09 ` Tejun Heo 2014-06-25 15:29 ` Shawn Guo 2014-07-01 21:25 ` Tejun Heo
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).