* [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
` (8 more replies)
0 siblings, 9 replies; 15+ messages in thread
From: Russell King - ARM Linux @ 2014-06-24 10:19 UTC (permalink / raw)
To: Tejun Heo, linux-ide
Cc: devicetree, Ian Campbell, Kumar Gala, linux-arm-kernel, linux-doc,
Mark Rutland, Pawel Moll, Randy Dunlap, Rob Herring, Sascha Hauer,
Shawn Guo
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 ` (7 subsequent siblings) 8 siblings, 0 replies; 15+ messages in thread From: Russell King @ 2014-06-24 10:19 UTC (permalink / raw) To: Tejun Heo, linux-ide Cc: linux-arm-kernel, Sascha Hauer, Shawn Guo, Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala, Randy Dunlap, devicetree, linux-doc From: Shawn Guo <shawn.guo@freescale.com> To: Tejun Heo <tj@kernel.org>,linux-ide@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@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@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 ` (6 subsequent siblings) 8 siblings, 1 reply; 15+ messages in thread From: Russell King @ 2014-06-24 10:19 UTC (permalink / raw) To: Tejun Heo, linux-ide; +Cc: linux-arm-kernel, Sascha Hauer, Shawn Guo 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
* Re: [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: Russell King; +Cc: linux-ide, linux-arm-kernel, Sascha Hauer, Shawn Guo 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 [not found] ` <20140624101901.GL32514-l+eeeJia6m9vn6HldHNs0ANdhmdF6hFW@public.gmane.org> ` (5 subsequent siblings) 8 siblings, 0 replies; 15+ messages in thread From: Russell King @ 2014-06-24 10:19 UTC (permalink / raw) To: Tejun Heo, linux-ide; +Cc: linux-arm-kernel, Sascha Hauer, Shawn Guo 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
[parent not found: <20140624101901.GL32514-l+eeeJia6m9vn6HldHNs0ANdhmdF6hFW@public.gmane.org>]
* [PATCH v3 4/8] dt-bindings: ata: add ahci_imx electrical properties [not found] ` <20140624101901.GL32514-l+eeeJia6m9vn6HldHNs0ANdhmdF6hFW@public.gmane.org> @ 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 1 sibling, 0 replies; 15+ messages in thread From: Russell King @ 2014-06-24 10:19 UTC (permalink / raw) To: Tejun Heo, linux-ide-u79uwXL29TY76Z2rM5mHXA Cc: linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, Sascha Hauer, Shawn Guo, Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala, Randy Dunlap, devicetree-u79uwXL29TY76Z2rM5mHXA, linux-doc-u79uwXL29TY76Z2rM5mHXA 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-lFZ/pmaqli7XmaaqVzeoHQ@public.gmane.org> --- 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@02200000 { -- 1.8.3.1 -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH v3 7/8] ARM: dts: cubox-i: add eSATA DT configuration [not found] ` <20140624101901.GL32514-l+eeeJia6m9vn6HldHNs0ANdhmdF6hFW@public.gmane.org> 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-25 15:32 ` Shawn Guo 1 sibling, 1 reply; 15+ messages in thread From: Russell King @ 2014-06-24 10:19 UTC (permalink / raw) To: Tejun Heo, linux-ide-u79uwXL29TY76Z2rM5mHXA Cc: linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, Sascha Hauer, Shawn Guo, Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala, devicetree-u79uwXL29TY76Z2rM5mHXA 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-lFZ/pmaqli7XmaaqVzeoHQ@public.gmane.org> --- 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 -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply related [flat|nested] 15+ messages in thread
* Re: [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: Russell King Cc: Tejun Heo, linux-ide, linux-arm-kernel, Sascha Hauer, Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala, devicetree 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 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 ...) [not found] ` <20140624101901.GL32514-l+eeeJia6m9vn6HldHNs0ANdhmdF6hFW@public.gmane.org> @ 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 ` (3 subsequent siblings) 8 siblings, 0 replies; 15+ messages in thread From: Russell King @ 2014-06-24 10:19 UTC (permalink / raw) To: Tejun Heo, linux-ide; +Cc: linux-arm-kernel, Sascha Hauer, Shawn Guo 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:20 ` [PATCH v3 8/8] ARM: dts: cubox-i: disable spread-spectrum for Cubox-i eSATA Russell King ` (2 subsequent siblings) 8 siblings, 0 replies; 15+ messages in thread From: Russell King @ 2014-06-24 10:19 UTC (permalink / raw) To: Tejun Heo, linux-ide Cc: linux-arm-kernel, Sascha Hauer, Shawn Guo, Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala, Randy Dunlap, devicetree, linux-doc 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 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 ` (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:20 ` Russell King 2014-06-24 12:45 ` [PATCH 0/8] iMX6 SATA configuration Rob Herring 2014-06-24 22:09 ` Tejun Heo 8 siblings, 0 replies; 15+ messages in thread From: Russell King @ 2014-06-24 10:20 UTC (permalink / raw) To: Tejun Heo, linux-ide Cc: linux-arm-kernel, Sascha Hauer, Shawn Guo, Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala, devicetree 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
* Re: [PATCH 0/8] iMX6 SATA configuration 2014-06-24 10:19 [PATCH 0/8] iMX6 SATA configuration Russell King - ARM Linux ` (6 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 8 siblings, 0 replies; 15+ messages in thread From: Rob Herring @ 2014-06-24 12:45 UTC (permalink / raw) To: Russell King - ARM Linux Cc: Tejun Heo, linux-ide, devicetree@vger.kernel.org, Ian Campbell, Kumar Gala, linux-arm-kernel@lists.infradead.org, linux-doc@vger.kernel.org, Mark Rutland, Pawel Moll, Randy Dunlap, Rob Herring, Sascha Hauer, Shawn Guo 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
* Re: [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 12:45 ` [PATCH 0/8] iMX6 SATA configuration Rob Herring @ 2014-06-24 22:09 ` Tejun Heo 2014-06-25 15:29 ` Shawn Guo 8 siblings, 1 reply; 15+ messages in thread From: Tejun Heo @ 2014-06-24 22:09 UTC (permalink / raw) To: Russell King - ARM Linux Cc: linux-ide, devicetree, Ian Campbell, Kumar Gala, linux-arm-kernel, linux-doc, Mark Rutland, Pawel Moll, Randy Dunlap, Rob Herring, Sascha Hauer, Shawn Guo 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
* Re: [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: Tejun Heo Cc: Russell King - ARM Linux, linux-ide, devicetree, Ian Campbell, Kumar Gala, linux-arm-kernel, linux-doc, Mark Rutland, Pawel Moll, Randy Dunlap, Rob Herring, Sascha Hauer 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
* Re: [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: Shawn Guo Cc: Russell King - ARM Linux, linux-ide, devicetree, Ian Campbell, Kumar Gala, linux-arm-kernel, linux-doc, Mark Rutland, Pawel Moll, Randy Dunlap, Rob Herring, Sascha Hauer 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
[not found] ` <20140624101901.GL32514-l+eeeJia6m9vn6HldHNs0ANdhmdF6hFW@public.gmane.org>
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 7/8] ARM: dts: cubox-i: add eSATA DT configuration Russell King
2014-06-25 15:32 ` Shawn Guo
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: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).