* [PATCH v2 1/4] ARM: OMAP2+: dm81xx: Add clkdm and hwmod for SATA
2017-03-14 11:14 [PATCH v2 0/4] ARM: dm8168-evm: add SATA support Bartosz Golaszewski
@ 2017-03-14 11:14 ` Bartosz Golaszewski
2017-03-14 11:14 ` [PATCH v2 2/4] ARM: dts: dm8168-evm: add the external reference clock " Bartosz Golaszewski
` (3 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Bartosz Golaszewski @ 2017-03-14 11:14 UTC (permalink / raw)
To: Rob Herring, Mark Rutland, Neil Armstrong, Michael Turquette,
Kevin Hilman, Patrick Titiano, Tony Lindgren, Paul Walmsley,
Sergei Shtylyov
Cc: linux-ide, devicetree, linux-kernel, linux-arm-kernel, linux-omap,
Bartosz Golaszewski
From: Kevin Hilman <khilman@baylibre.com>
Add the SATA clockdomain (part of CM_DEFAULT) and a hwmod for the SATA
block on dm81xx.
Tested on DM8168 EVM.
Signed-off-by: Kevin Hilman <khilman@baylibre.com>
[Bartosz: removed an unused define]
Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
---
arch/arm/mach-omap2/clockdomains81xx_data.c | 10 +++++++++
arch/arm/mach-omap2/cm81xx.h | 1 +
arch/arm/mach-omap2/omap_hwmod_81xx_data.c | 34 +++++++++++++++++++++++++++++
3 files changed, 45 insertions(+)
diff --git a/arch/arm/mach-omap2/clockdomains81xx_data.c b/arch/arm/mach-omap2/clockdomains81xx_data.c
index 3b5fb05..65fbd13 100644
--- a/arch/arm/mach-omap2/clockdomains81xx_data.c
+++ b/arch/arm/mach-omap2/clockdomains81xx_data.c
@@ -91,6 +91,14 @@ static struct clockdomain default_l3_slow_81xx_clkdm = {
.flags = CLKDM_CAN_SWSUP,
};
+static struct clockdomain default_sata_81xx_clkdm = {
+ .name = "default_clkdm",
+ .pwrdm = { .name = "default_pwrdm" },
+ .cm_inst = TI81XX_CM_DEFAULT_MOD,
+ .clkdm_offs = TI816X_CM_DEFAULT_SATA_CLKDM,
+ .flags = CLKDM_CAN_SWSUP,
+};
+
/* 816x only */
static struct clockdomain alwon_mpu_816x_clkdm = {
@@ -173,6 +181,7 @@ static struct clockdomain *clockdomains_ti814x[] __initdata = {
&mmu_81xx_clkdm,
&mmu_cfg_81xx_clkdm,
&default_l3_slow_81xx_clkdm,
+ &default_sata_81xx_clkdm,
NULL,
};
@@ -200,6 +209,7 @@ static struct clockdomain *clockdomains_ti816x[] __initdata = {
&default_ducati_816x_clkdm,
&default_pci_816x_clkdm,
&default_l3_slow_81xx_clkdm,
+ &default_sata_81xx_clkdm,
NULL,
};
diff --git a/arch/arm/mach-omap2/cm81xx.h b/arch/arm/mach-omap2/cm81xx.h
index 3a0ccf0..5d73a10 100644
--- a/arch/arm/mach-omap2/cm81xx.h
+++ b/arch/arm/mach-omap2/cm81xx.h
@@ -57,5 +57,6 @@
#define TI816X_CM_DEFAULT_PCI_CLKDM 0x0010
#define TI816X_CM_DEFAULT_L3_SLOW_CLKDM 0x0014
#define TI816X_CM_DEFAULT_DUCATI_CLKDM 0x0018
+#define TI816X_CM_DEFAULT_SATA_CLKDM 0x0060
#endif
diff --git a/arch/arm/mach-omap2/omap_hwmod_81xx_data.c b/arch/arm/mach-omap2/omap_hwmod_81xx_data.c
index b82b77c..310afe4 100644
--- a/arch/arm/mach-omap2/omap_hwmod_81xx_data.c
+++ b/arch/arm/mach-omap2/omap_hwmod_81xx_data.c
@@ -106,6 +106,7 @@
*/
#define DM81XX_CM_DEFAULT_OFFSET 0x500
#define DM81XX_CM_DEFAULT_USB_CLKCTRL (0x558 - DM81XX_CM_DEFAULT_OFFSET)
+#define DM81XX_CM_DEFAULT_SATA_CLKCTRL (0x560 - DM81XX_CM_DEFAULT_OFFSET)
/* L3 Interconnect entries clocked at 125, 250 and 500MHz */
static struct omap_hwmod dm81xx_alwon_l3_slow_hwmod = {
@@ -973,6 +974,38 @@ static struct omap_hwmod_ocp_if dm816x_l4_hs__emac1 = {
.user = OCP_USER_MPU,
};
+static struct omap_hwmod_class_sysconfig dm81xx_sata_sysc = {
+ .sysc_offs = 0x1100,
+ .sysc_flags = SYSC_HAS_SIDLEMODE,
+ .idlemodes = SIDLE_FORCE,
+ .sysc_fields = &omap_hwmod_sysc_type3,
+};
+
+static struct omap_hwmod_class dm81xx_sata_hwmod_class = {
+ .name = "sata",
+ .sysc = &dm81xx_sata_sysc,
+};
+
+static struct omap_hwmod dm81xx_sata_hwmod = {
+ .name = "sata",
+ .clkdm_name = "default_sata_clkdm",
+ .flags = HWMOD_NO_IDLEST,
+ .prcm = {
+ .omap4 = {
+ .clkctrl_offs = DM81XX_CM_DEFAULT_SATA_CLKCTRL,
+ .modulemode = MODULEMODE_SWCTRL,
+ },
+ },
+ .class = &dm81xx_sata_hwmod_class,
+};
+
+static struct omap_hwmod_ocp_if dm81xx_l4_hs__sata = {
+ .master = &dm81xx_l4_hs_hwmod,
+ .slave = &dm81xx_sata_hwmod,
+ .clk = "sysclk5_ck",
+ .user = OCP_USER_MPU,
+};
+
static struct omap_hwmod_class_sysconfig dm81xx_mmc_sysc = {
.rev_offs = 0x0,
.sysc_offs = 0x110,
@@ -1474,6 +1507,7 @@ static struct omap_hwmod_ocp_if *dm816x_hwmod_ocp_ifs[] __initdata = {
&dm81xx_l4_hs__emac0,
&dm81xx_emac0__mdio,
&dm816x_l4_hs__emac1,
+ &dm81xx_l4_hs__sata,
&dm81xx_alwon_l3_fast__tpcc,
&dm81xx_alwon_l3_fast__tptc0,
&dm81xx_alwon_l3_fast__tptc1,
--
2.9.3
^ permalink raw reply related [flat|nested] 6+ messages in thread* [PATCH v2 2/4] ARM: dts: dm8168-evm: add the external reference clock for SATA
2017-03-14 11:14 [PATCH v2 0/4] ARM: dm8168-evm: add SATA support Bartosz Golaszewski
2017-03-14 11:14 ` [PATCH v2 1/4] ARM: OMAP2+: dm81xx: Add clkdm and hwmod for SATA Bartosz Golaszewski
@ 2017-03-14 11:14 ` Bartosz Golaszewski
2017-03-14 11:14 ` [PATCH v2 3/4] ARM: dts: dm8168-evm: add SATA node Bartosz Golaszewski
` (2 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Bartosz Golaszewski @ 2017-03-14 11:14 UTC (permalink / raw)
To: Rob Herring, Mark Rutland, Neil Armstrong, Michael Turquette,
Kevin Hilman, Patrick Titiano, Tony Lindgren, Paul Walmsley,
Sergei Shtylyov
Cc: linux-ide, devicetree, linux-kernel, linux-arm-kernel, linux-omap,
Bartosz Golaszewski
This board has an external oscillator supplying the reference clock
signal for SATA. Its rate is fixed at 100Mhz. Add a corresponding
device tree node.
Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
---
arch/arm/boot/dts/dm8168-evm.dts | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/arch/arm/boot/dts/dm8168-evm.dts b/arch/arm/boot/dts/dm8168-evm.dts
index 0bf55fa..c6fabfc 100644
--- a/arch/arm/boot/dts/dm8168-evm.dts
+++ b/arch/arm/boot/dts/dm8168-evm.dts
@@ -25,6 +25,12 @@
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
};
+
+ sata_refclk: fixedclock0 {
+ compatible = "fixed-clock";
+ #clock-cells = <0>;
+ clock-frequency = <100000000>;
+ };
};
&dm816x_pinmux {
--
2.9.3
^ permalink raw reply related [flat|nested] 6+ messages in thread* [PATCH v2 3/4] ARM: dts: dm8168-evm: add SATA node
2017-03-14 11:14 [PATCH v2 0/4] ARM: dm8168-evm: add SATA support Bartosz Golaszewski
2017-03-14 11:14 ` [PATCH v2 1/4] ARM: OMAP2+: dm81xx: Add clkdm and hwmod for SATA Bartosz Golaszewski
2017-03-14 11:14 ` [PATCH v2 2/4] ARM: dts: dm8168-evm: add the external reference clock " Bartosz Golaszewski
@ 2017-03-14 11:14 ` Bartosz Golaszewski
2017-03-14 11:14 ` [PATCH v2 4/4] ARM: omap2plus_defconfig: enable ahci-dm816 module Bartosz Golaszewski
2017-03-23 21:00 ` [PATCH v2 0/4] ARM: dm8168-evm: add SATA support Tony Lindgren
4 siblings, 0 replies; 6+ messages in thread
From: Bartosz Golaszewski @ 2017-03-14 11:14 UTC (permalink / raw)
To: Rob Herring, Mark Rutland, Neil Armstrong, Michael Turquette,
Kevin Hilman, Patrick Titiano, Tony Lindgren, Paul Walmsley,
Sergei Shtylyov
Cc: linux-ide, devicetree, linux-kernel, linux-arm-kernel, linux-omap,
Bartosz Golaszewski
Add the SATA controller node to the dm8168-evm device tree.
Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
---
arch/arm/boot/dts/dm8168-evm.dts | 4 ++++
arch/arm/boot/dts/dm816x.dtsi | 7 +++++++
2 files changed, 11 insertions(+)
diff --git a/arch/arm/boot/dts/dm8168-evm.dts b/arch/arm/boot/dts/dm8168-evm.dts
index c6fabfc..1865976 100644
--- a/arch/arm/boot/dts/dm8168-evm.dts
+++ b/arch/arm/boot/dts/dm8168-evm.dts
@@ -179,3 +179,7 @@
pinctrl-0 = <&usb1_pins>;
mentor,multipoint = <0>;
};
+
+&sata {
+ clocks = <&sysclk5_ck>, <&sata_refclk>;
+};
diff --git a/arch/arm/boot/dts/dm816x.dtsi b/arch/arm/boot/dts/dm816x.dtsi
index 276211e..59cbf95 100644
--- a/arch/arm/boot/dts/dm816x.dtsi
+++ b/arch/arm/boot/dts/dm816x.dtsi
@@ -293,6 +293,13 @@
phy-handle = <&phy1>;
};
+ sata: sata@4a140000 {
+ compatible = "ti,dm816-ahci";
+ reg = <0x4a140000 0x10000>;
+ interrupts = <16>;
+ ti,hwmods = "sata";
+ };
+
mcspi1: spi@48030000 {
compatible = "ti,omap4-mcspi";
reg = <0x48030000 0x1000>;
--
2.9.3
^ permalink raw reply related [flat|nested] 6+ messages in thread* [PATCH v2 4/4] ARM: omap2plus_defconfig: enable ahci-dm816 module
2017-03-14 11:14 [PATCH v2 0/4] ARM: dm8168-evm: add SATA support Bartosz Golaszewski
` (2 preceding siblings ...)
2017-03-14 11:14 ` [PATCH v2 3/4] ARM: dts: dm8168-evm: add SATA node Bartosz Golaszewski
@ 2017-03-14 11:14 ` Bartosz Golaszewski
2017-03-23 21:00 ` [PATCH v2 0/4] ARM: dm8168-evm: add SATA support Tony Lindgren
4 siblings, 0 replies; 6+ messages in thread
From: Bartosz Golaszewski @ 2017-03-14 11:14 UTC (permalink / raw)
To: Rob Herring, Mark Rutland, Neil Armstrong, Michael Turquette,
Kevin Hilman, Patrick Titiano, Tony Lindgren, Paul Walmsley,
Sergei Shtylyov
Cc: linux-ide, devicetree, linux-kernel, linux-arm-kernel, linux-omap,
Bartosz Golaszewski
This is now supported on the dm8168-evm board, so enable it in
the defconfig for omap2+.
Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
---
arch/arm/configs/omap2plus_defconfig | 1 +
1 file changed, 1 insertion(+)
diff --git a/arch/arm/configs/omap2plus_defconfig b/arch/arm/configs/omap2plus_defconfig
index f2462a6..3944aa9 100644
--- a/arch/arm/configs/omap2plus_defconfig
+++ b/arch/arm/configs/omap2plus_defconfig
@@ -141,6 +141,7 @@ CONFIG_BLK_DEV_SD=y
CONFIG_SCSI_SCAN_ASYNC=y
CONFIG_ATA=y
CONFIG_SATA_AHCI_PLATFORM=y
+CONFIG_AHCI_DM816=m
CONFIG_NETDEVICES=y
# CONFIG_NET_VENDOR_ARC is not set
# CONFIG_NET_CADENCE is not set
--
2.9.3
^ permalink raw reply related [flat|nested] 6+ messages in thread* Re: [PATCH v2 0/4] ARM: dm8168-evm: add SATA support
2017-03-14 11:14 [PATCH v2 0/4] ARM: dm8168-evm: add SATA support Bartosz Golaszewski
` (3 preceding siblings ...)
2017-03-14 11:14 ` [PATCH v2 4/4] ARM: omap2plus_defconfig: enable ahci-dm816 module Bartosz Golaszewski
@ 2017-03-23 21:00 ` Tony Lindgren
4 siblings, 0 replies; 6+ messages in thread
From: Tony Lindgren @ 2017-03-23 21:00 UTC (permalink / raw)
To: Bartosz Golaszewski
Cc: Rob Herring, Mark Rutland, Neil Armstrong, Michael Turquette,
Kevin Hilman, Patrick Titiano, Paul Walmsley, Sergei Shtylyov,
linux-ide, devicetree, linux-kernel, linux-arm-kernel, linux-omap
* Bartosz Golaszewski <bgolaszewski@baylibre.com> [170314 04:16]:
> This series implements support for the on-board SATA controller
> on the dm8168-evm board.
>
> The first patch adds the clock domain and hwmod entries for the
> SATA module.
>
> The second patch models the external reference clock used by SATA.
>
> The third adds the SATA node to the SoC's device tree.
>
> The fourth enables the SATA driver by default in omap2plus_defconfig.
>
> Tested together with the series implementing the driver for
> ahci-dm816 on a DM8168-EVM board.
>
> v1 -> v2:
> PATCH 1/4:
> - removed the unused define from cm81xx.h
> PATCH 3/4:
> - fixed the size of the mapped register region
>
> Bartosz Golaszewski (3):
> ARM: dts: dm8168-evm: add the external reference clock for SATA
> ARM: dts: dm8168-evm: add SATA node
> ARM: omap2plus_defconfig: enable ahci-dm816 module
>
> Kevin Hilman (1):
> ARM: OMAP2+: dm81xx: Add clkdm and hwmod for SATA
Applying all for for v4.12 into soc, dts-v2 and defconfig
branches.
Thanks,
Tony
^ permalink raw reply [flat|nested] 6+ messages in thread