ARM: OMAP: OMAP5 & AM43x DSS
Subsystems (5)
cover ARM: OMAP: OMAP5 & AM43x DSS
Hi,
Here are arch/arm/ patches to add display support for OMAP5 and AM43x.
I have these in my tree, in a branch I will send to Tony for merging. Most of these patches have already been around the lists, but I wanted to send them one more time to verify that all looks right and everybody is fine with them.
Tomi
Archit Taneja (1):
ARM: OMAP2+: hwmod: OMAP5 DSS hwmod data
Sathya Prakash M R (4):
ARM: AM43xx: hwmod: add DSS hwmod data
ARM: dts: am43xx: add ti,set-rate-parent for disp_clk
ARM: dts: am4372.dtsi: add DSS information
ARM: dts: am437x-gp-evm: add LCD data
Tomi Valkeinen (6):
ARM: dts: am43x-epos-evm: add LCD data
ARM: dts: omap5-clocks.dtsi: add dss iclk
ARM: dts: omap5-clocks.dtsi: add ti,set-rate-parent to dss_dss_clk
ARM: dts: omap5.dtsi: add DSS nodes
ARM: dts: omap5-uevm.dts: add tca6424a
ARM: dts: omap5-uevm.dts: add display nodes
arch/arm/boot/dts/am4372.dtsi | 30 +++ arch/arm/boot/dts/am437x-gp-evm.dts | 97 ++++++++++ arch/arm/boot/dts/am43x-epos-evm.dts | 101 ++++++++++ arch/arm/boot/dts/am43xx-clocks.dtsi | 1 + arch/arm/boot/dts/omap5-uevm.dts | 89 +++++++++ arch/arm/boot/dts/omap5.dtsi | 70 +++++++ arch/arm/boot/dts/omap54xx-clocks.dtsi | 9 + arch/arm/mach-omap2/omap_hwmod_43xx_data.c | 104 +++++++++++ arch/arm/mach-omap2/omap_hwmod_54xx_data.c | 283 +++++++++++++++++++++++++++++ arch/arm/mach-omap2/prcm43xx.h | 1 + 10 files changed, 785 insertions(+)
Signature · 1 line
1.9.1
PATCH 1/11 ARM: AM43xx: hwmod: add DSS hwmod data
From: Sathya Prakash M R <[email protected]>
Add DSS hwmod data for AM43xx.
--- arch/arm/mach-omap2/omap_hwmod_43xx_data.c | 104 +++++++++++++++++++++++++++++ arch/arm/mach-omap2/prcm43xx.h | 1 + 2 files changed, 105 insertions(+)
arch/arm/mach-omap2/omap_hwmod_43xx_data.c +104 -0
@@ -19,6 +19,8 @@#include "omap_hwmod.h" #include "omap_hwmod_33xx_43xx_common_data.h" #include "prcm43xx.h" +#include "omap_hwmod_common_data.h" +/* IP blocks */ static struct omap_hwmod am43xx_l4_hs_hwmod = {
@@ -415,6 +417,76 @@ static struct omap_hwmod am43xx_qspi_hwmod = { }, }; +/* Display sub system - DSS */ + +static struct omap_hwmod_dma_info am43xx_dss_sdma_chs[] = { + { .name ="dispc" , .dma_req =5 }, + { .dma_req =-1 }, +}; + +struct omap_dss_dispc_dev_attr am43xx_dss_dispc_dev_attr = { + .manager_count =1 , + .has_framedonetv_irq =0 +}; + + +static struct omap_hwmod_class_sysconfig am43xx_dispc_sysc = { + .rev_offs =0x0000 , + .sysc_offs =0x0010 , + .syss_offs =0x0014 , + .sysc_flags = (SYSC_HAS_SIDLEMODE |SYSC_HAS_MIDLEMODE ), + .idlemodes = (SIDLE_FORCE |SIDLE_NO |SIDLE_SMART ), + .sysc_fields = &omap_hwmod_sysc_type1, +}; + +static struct omap_hwmod_class am43xx_dispc_hwmod_class = { + .name ="dispc" , + .sysc = &am43xx_dispc_sysc, +}; + +static struct omap_hwmod am43xx_dss_core_hwmod = { + .name ="dss_core" , + .class = &omap2_dss_hwmod_class, + .clkdm_name ="dss_clkdm" , + .main_clk ="disp_clk" , + .sdma_reqs = am43xx_dss_sdma_chs, + .prcm = { + .omap4 = { + .clkctrl_offs =AM43XX_CM_PER_DSS_CLKCTRL_OFFSET , + .modulemode =MODULEMODE_SWCTRL , + }, + }, +}; + +/* display controller -dispc*/ + +static struct omap_hwmod am43xx_dss_dispc_hwmod = { + .name ="dss_dispc" , + .class = &am43xx_dispc_hwmod_class, + .clkdm_name ="dss_clkdm" , + .main_clk ="disp_clk" , + .prcm = { + .omap4 = { + .clkctrl_offs =AM43XX_CM_PER_DSS_CLKCTRL_OFFSET , + }, + }, + .dev_attr = &am43xx_dss_dispc_dev_attr, +}; + +/*RFBI*/ + +static struct omap_hwmod am43xx_dss_rfbi_hwmod = { + .name ="dss_rfbi" , + .class = &omap2_rfbi_hwmod_class, + .clkdm_name ="dss_clkdm" , + .main_clk ="disp_clk" , + .prcm = { + .omap4 = { + .clkctrl_offs =AM43XX_CM_PER_DSS_CLKCTRL_OFFSET , + }, + }, +}; +/* Interfaces */ static struct omap_hwmod_ocp_if am43xx_l3_main__l4_hs = { .master = &am33xx_l3_main_hwmod,
@@ -654,6 +726,34 @@ static struct omap_hwmod_ocp_if am43xx_l3_s__qspi = { .user = OCP_USER_MPU | OCP_USER_SDMA, }; +static struct omap_hwmod_ocp_if am43xx_dss__l3_main = { + .master = &am43xx_dss_core_hwmod, + .slave = &am33xx_l3_main_hwmod, + .clk ="disp_clk" , + .user =OCP_USER_MPU |OCP_USER_SDMA , +}; + +static struct omap_hwmod_ocp_if am43xx_l4_ls__dss = { + .master = &am33xx_l4_ls_hwmod, + .slave = &am43xx_dss_core_hwmod, + .clk ="l4ls_gclk" , + .user =OCP_USER_MPU |OCP_USER_SDMA , +}; + +static struct omap_hwmod_ocp_if am43xx_l4_ls__dss_dispc = { + .master = &am33xx_l4_ls_hwmod, + .slave = &am43xx_dss_dispc_hwmod, + .clk ="l4ls_gclk" , + .user =OCP_USER_MPU |OCP_USER_SDMA , +}; + +static struct omap_hwmod_ocp_if am43xx_l4_ls__dss_rfbi = { + .master = &am33xx_l4_ls_hwmod, + .slave = &am43xx_dss_rfbi_hwmod, + .clk ="l4ls_gclk" , + .user =OCP_USER_MPU |OCP_USER_SDMA , +}; +static struct omap_hwmod_ocp_if *am43xx_hwmod_ocp_ifs[]__initdata = { &am33xx_l4_wkup__synctimer, &am43xx_l4_ls__timer8,
@@ -748,6 +848,10 @@ static struct omap_hwmod_ocp_if *am43xx_hwmod_ocp_ifs[] __initdata = { &am43xx_l4_ls__ocp2scp1, &am43xx_l3_s__usbotgss0, &am43xx_l3_s__usbotgss1, + &am43xx_dss__l3_main, + &am43xx_l4_ls__dss, + &am43xx_l4_ls__dss_dispc, + &am43xx_l4_ls__dss_rfbi, NULL, };
arch/arm/mach-omap2/prcm43xx.h +1 -0
@@ -142,5 +142,6 @@#define AM43XX_CM_PER_USBPHYOCP2SCP0_CLKCTRL_OFFSET 0x05B8#define AM43XX_CM_PER_USB_OTG_SS1_CLKCTRL_OFFSET 0x0268#define AM43XX_CM_PER_USBPHYOCP2SCP1_CLKCTRL_OFFSET 0x05C0 +#define AM43XX_CM_PER_DSS_CLKCTRL_OFFSET 0x0a20#endif
Signature · 1 line
1.9.1
PATCH 1/11 ARM: AM43xx: hwmod: add DSS hwmod data
Quoted 25 lines · Tomi Valkeinen
From: Sathya Prakash M R <[email protected]>
Add DSS hwmod data for AM43xx.
Signed-off-by Sathya Prakash M R <[email protected]>Signed-off-by Tomi Valkeinen <[email protected]>--- arch/arm/mach-omap2/omap_hwmod_43xx_data.c | 104 +++++++++++++++++++++++++++++ arch/arm/mach-omap2/prcm43xx.h | 1 + 2 files changed, 105 insertions(+)arch/arm/mach-omap2/omap_hwmod_43xx_data.c +2
-0@@ -19,6 +19,8 @@#include "omap_hwmod.h" #include "omap_hwmod_33xx_43xx_common_data.h" #include "prcm43xx.h" +#include "omap_hwmod_common_data.h" +/* IP blocks */ static struct omap_hwmod am43xx_l4_hs_hwmod = {
arch/arm/mach-omap2/omap_hwmod_43xx_data.c static struct omap_hwmod am43xx_qspi_hwmod = { · line 425
Quoted 9 lines
arch/arm/mach-omap2/omap_hwmod_43xx_data.c +6
-0@@ -415,6 +417,76 @@ static struct omap_hwmod am43xx_qspi_hwmod = { }, }; +/* Display sub system - DSS */ + +static struct omap_hwmod_dma_info am43xx_dss_sdma_chs[] = { + { .name ="dispc" , .dma_req =5 }, + { .dma_req =-1 }, +};
the dma info needs to come in from DT. Besides these are edma request lines and not sdma.
arch/arm/mach-omap2/omap_hwmod_43xx_data.c static struct omap_hwmod am43xx_qspi_hwmod = { · line 432
Quoted 7 lines
arch/arm/mach-omap2/omap_hwmod_43xx_data.c +7
-0+ +struct omap_dss_dispc_dev_attr am43xx_dss_dispc_dev_attr = { + .manager_count =1 , + .has_framedonetv_irq =0 +}; + +
[]..
arch/arm/mach-omap2/omap_hwmod_43xx_data.c static struct omap_hwmod_ocp_if am43xx_l3_s__qspi = { · line 732
Quoted 12 lines
arch/arm/mach-omap2/omap_hwmod_43xx_data.c +5
-0+/* Interfaces */ static struct omap_hwmod_ocp_if am43xx_l3_main__l4_hs = { .master = &am33xx_l3_main_hwmod,@@ -654,6 +726,34 @@ static struct omap_hwmod_ocp_if am43xx_l3_s__qspi = { .user = OCP_USER_MPU | OCP_USER_SDMA, }; +static struct omap_hwmod_ocp_if am43xx_dss__l3_main = { + .master = &am43xx_dss_core_hwmod, + .slave = &am33xx_l3_main_hwmod, + .clk ="disp_clk" ,
Isn't l3_gclk that clocks the l3 OCP master port?
regards,
Rajendra
Quoted 50 lines
arch/arm/mach-omap2/omap_hwmod_43xx_data.c +28
-0+ .user = OCP_USER_MPU | OCP_USER_SDMA, +}; + +static struct omap_hwmod_ocp_if am43xx_l4_ls__dss = { + .master = &am33xx_l4_ls_hwmod, + .slave = &am43xx_dss_core_hwmod, + .clk ="l4ls_gclk" , + .user =OCP_USER_MPU |OCP_USER_SDMA , +}; + +static struct omap_hwmod_ocp_if am43xx_l4_ls__dss_dispc = { + .master = &am33xx_l4_ls_hwmod, + .slave = &am43xx_dss_dispc_hwmod, + .clk ="l4ls_gclk" , + .user =OCP_USER_MPU |OCP_USER_SDMA , +}; + +static struct omap_hwmod_ocp_if am43xx_l4_ls__dss_rfbi = { + .master = &am33xx_l4_ls_hwmod, + .slave = &am43xx_dss_rfbi_hwmod, + .clk ="l4ls_gclk" , + .user =OCP_USER_MPU |OCP_USER_SDMA , +}; +static struct omap_hwmod_ocp_if *am43xx_hwmod_ocp_ifs[]__initdata = { &am33xx_l4_wkup__synctimer, &am43xx_l4_ls__timer8,@@ -748,6 +848,10 @@ static struct omap_hwmod_ocp_if *am43xx_hwmod_ocp_ifs[] __initdata = { &am43xx_l4_ls__ocp2scp1, &am43xx_l3_s__usbotgss0, &am43xx_l3_s__usbotgss1, + &am43xx_dss__l3_main, + &am43xx_l4_ls__dss, + &am43xx_l4_ls__dss_dispc, + &am43xx_l4_ls__dss_rfbi, NULL, };arch/arm/mach-omap2/prcm43xx.h +1
-0@@ -142,5 +142,6 @@#define AM43XX_CM_PER_USBPHYOCP2SCP0_CLKCTRL_OFFSET 0x05B8#define AM43XX_CM_PER_USB_OTG_SS1_CLKCTRL_OFFSET 0x0268#define AM43XX_CM_PER_USBPHYOCP2SCP1_CLKCTRL_OFFSET 0x05C0 +#define AM43XX_CM_PER_DSS_CLKCTRL_OFFSET 0x0a20#endif
PATCH 1/11 ARM: AM43xx: hwmod: add DSS hwmod data
Quoted 29 lines · Rajendra Nayak
Quoted 28 lines · Tomi Valkeinen
From: Sathya Prakash M R <[email protected]>
Add DSS hwmod data for AM43xx.
Signed-off-by Sathya Prakash M R <[email protected]>Signed-off-by Tomi Valkeinen <[email protected]>--- arch/arm/mach-omap2/omap_hwmod_43xx_data.c | 104 +++++++++++++++++++++++++++++ arch/arm/mach-omap2/prcm43xx.h | 1 + 2 files changed, 105 insertions(+)arch/arm/mach-omap2/omap_hwmod_43xx_data.c +2
-0@@ -19,6 +19,8 @@#include "omap_hwmod.h" #include "omap_hwmod_33xx_43xx_common_data.h" #include "prcm43xx.h" +#include "omap_hwmod_common_data.h" +/* IP blocks */ static struct omap_hwmod am43xx_l4_hs_hwmod = {@@ -415,6 +417,76 @@ static struct omap_hwmod am43xx_qspi_hwmod = { }, };
Quoted 9 lines
arch/arm/mach-omap2/omap_hwmod_43xx_data.c static struct omap_hwmod am43xx_qspi_hwmod = { · line 425
Quoted 6 lines
arch/arm/mach-omap2/omap_hwmod_43xx_data.c +6
-0+/* Display sub system - DSS */ + +static struct omap_hwmod_dma_info am43xx_dss_sdma_chs[] = { + { .name ="dispc" , .dma_req =5 }, + { .dma_req =-1 }, +};the dma info needs to come in from DT. Besides these are edma request lines and not sdma.
Right, the sdma information is not needed anymore.
Quoted 17 lines
arch/arm/mach-omap2/omap_hwmod_43xx_data.c static struct omap_hwmod am43xx_qspi_hwmod = { · line 432
Quoted 7 lines
arch/arm/mach-omap2/omap_hwmod_43xx_data.c +7
-0+ +struct omap_dss_dispc_dev_attr am43xx_dss_dispc_dev_attr = { + .manager_count =1 , + .has_framedonetv_irq =0 +}; + +[]..
Quoted 8 lines
arch/arm/mach-omap2/omap_hwmod_43xx_data.c +1
-0+/* Interfaces */ static struct omap_hwmod_ocp_if am43xx_l3_main__l4_hs = { .master = &am33xx_l3_main_hwmod,@@ -654,6 +726,34 @@ static struct omap_hwmod_ocp_if am43xx_l3_s__qspi = { .user = OCP_USER_MPU | OCP_USER_SDMA, };
Quoted 6 lines
arch/arm/mach-omap2/omap_hwmod_43xx_data.c static struct omap_hwmod_ocp_if am43xx_l3_s__qspi = { · line 732
Quoted 4 lines
arch/arm/mach-omap2/omap_hwmod_43xx_data.c +4
-0+static struct omap_hwmod_ocp_if am43xx_dss__l3_main = { + .master = &am43xx_dss_core_hwmod, + .slave = &am33xx_l3_main_hwmod, + .clk ="disp_clk" ,Isn't
l3_gclkthat clocks the l3 OCP master port?
Hmm, possibly... dispc_clk looks a bit odd there. It's been very difficult to figure out things like that, with the not-so-good am43xx documentation.
The documentation mentions "L3 Fast Interconnect" and "LCDL3OCPIFCLK" related to DSS's OCP master, but searching for those in the TRM doesn't reveal much.
Would the l3_gclk match the "L3 Fast Interconnect" and l3s_gclk match the "L3 Slow Interconnect".
Tomi
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: OpenPGP digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20140519/468c7519/attachment-0001.sig>
PATCH 1/11 ARM: AM43xx: hwmod: add DSS hwmod data
Quoted 70 lines · Tomi Valkeinen
Quoted 29 lines · Rajendra Nayak
Quoted 28 lines · Tomi Valkeinen
From: Sathya Prakash M R <[email protected]>
Add DSS hwmod data for AM43xx.
Signed-off-by Sathya Prakash M R <[email protected]>Signed-off-by Tomi Valkeinen <[email protected]>--- arch/arm/mach-omap2/omap_hwmod_43xx_data.c | 104 +++++++++++++++++++++++++++++ arch/arm/mach-omap2/prcm43xx.h | 1 + 2 files changed, 105 insertions(+)arch/arm/mach-omap2/omap_hwmod_43xx_data.c +2
-0@@ -19,6 +19,8 @@#include "omap_hwmod.h" #include "omap_hwmod_33xx_43xx_common_data.h" #include "prcm43xx.h" +#include "omap_hwmod_common_data.h" +/* IP blocks */ static struct omap_hwmod am43xx_l4_hs_hwmod = {@@ -415,6 +417,76 @@ static struct omap_hwmod am43xx_qspi_hwmod = { }, };Quoted 9 lines
arch/arm/mach-omap2/omap_hwmod_43xx_data.c static struct omap_hwmod am43xx_qspi_hwmod = { · line 425
Quoted 6 lines
arch/arm/mach-omap2/omap_hwmod_43xx_data.c +6
-0+/* Display sub system - DSS */ + +static struct omap_hwmod_dma_info am43xx_dss_sdma_chs[] = { + { .name ="dispc" , .dma_req =5 }, + { .dma_req =-1 }, +};the dma info needs to come in from DT. Besides these are edma request lines and not sdma.
Right, the sdma information is not needed anymore.
Quoted 17 lines
arch/arm/mach-omap2/omap_hwmod_43xx_data.c static struct omap_hwmod am43xx_qspi_hwmod = { · line 432
Quoted 7 lines
arch/arm/mach-omap2/omap_hwmod_43xx_data.c +7
-0+ +struct omap_dss_dispc_dev_attr am43xx_dss_dispc_dev_attr = { + .manager_count =1 , + .has_framedonetv_irq =0 +}; + +[]..
Quoted 8 lines
arch/arm/mach-omap2/omap_hwmod_43xx_data.c +1
-0+/* Interfaces */ static struct omap_hwmod_ocp_if am43xx_l3_main__l4_hs = { .master = &am33xx_l3_main_hwmod,@@ -654,6 +726,34 @@ static struct omap_hwmod_ocp_if am43xx_l3_s__qspi = { .user = OCP_USER_MPU | OCP_USER_SDMA, };Quoted 6 lines
arch/arm/mach-omap2/omap_hwmod_43xx_data.c static struct omap_hwmod_ocp_if am43xx_l3_s__qspi = { · line 732
Quoted 4 lines
arch/arm/mach-omap2/omap_hwmod_43xx_data.c +4
-0+static struct omap_hwmod_ocp_if am43xx_dss__l3_main = { + .master = &am43xx_dss_core_hwmod, + .slave = &am33xx_l3_main_hwmod, + .clk ="disp_clk" ,Isn't
l3_gclkthat clocks the l3 OCP master port?Hmm, possibly...
dispc_clklooks a bit odd there. It's been very difficult to figure out things like that, with the not-so-good am43xx documentation.
Quoted 6 lines
The documentation mentions "L3 Fast Interconnect" and "LCDL3OCPIFCLK" related to DSS's OCP master, but searching for those in the TRM doesn't reveal much.
Would the
l3_gclkmatch the "L3 Fast Interconnect" andl3s_gclkmatch the "L3 Slow Interconnect".
Yeah, thats what it looks like to me. l3_gclk is the 200Mhz clock derived from core-m4 post divider and l3s_gclk/l4ls_gclk are half of that at 100Mhz, derived using a fixed divider of 2.
regards,
Rajendra
Quoted 4 lines
Tomi
PATCH 1/11 ARM: AM43xx: hwmod: add DSS hwmod data
Quoted 3 lines · Rajendra Nayak
Yeah, thats what it looks like to me.
l3_gclkis the 200Mhz clock derived from core-m4 post divider and l3s_gclk/l4ls_gclk are half of that at 100Mhz, derived using a fixed divider of 2.
Here's an updated patch, with the sdma entry removed and the ocp clock changed to l3_gclk.
Quoted 1 line
From
bfaf0fafb21c698c86640764c1aa62d6fc73992aMon Sep 17 00:00:00 2001
From: Sathya Prakash M R <[email protected]>
Date: Mon, 24 Mar 2014 16:31:53 +0530
Subject: [PATCH] ARM: AM43xx: hwmod: add DSS hwmod data
Add DSS hwmod data for AM43xx.
--- arch/arm/mach-omap2/omap_hwmod_43xx_data.c | 98 ++++++++++++++++++++++++++++++ arch/arm/mach-omap2/prcm43xx.h | 1 + 2 files changed, 99 insertions(+)
arch/arm/mach-omap2/omap_hwmod_43xx_data.c +98 -0
@@ -19,6 +19,8 @@#include "omap_hwmod.h" #include "omap_hwmod_33xx_43xx_common_data.h" #include "prcm43xx.h" +#include "omap_hwmod_common_data.h" +/* IP blocks */ static struct omap_hwmod am43xx_l4_hs_hwmod = {
@@ -415,6 +417,70 @@ static struct omap_hwmod am43xx_qspi_hwmod = { }, }; +/* Display sub system - DSS */ + +struct omap_dss_dispc_dev_attr am43xx_dss_dispc_dev_attr = { + .manager_count =1 , + .has_framedonetv_irq =0 +}; + + +static struct omap_hwmod_class_sysconfig am43xx_dispc_sysc = { + .rev_offs =0x0000 , + .sysc_offs =0x0010 , + .syss_offs =0x0014 , + .sysc_flags = (SYSC_HAS_SIDLEMODE |SYSC_HAS_MIDLEMODE ), + .idlemodes = (SIDLE_FORCE |SIDLE_NO |SIDLE_SMART ), + .sysc_fields = &omap_hwmod_sysc_type1, +}; + +static struct omap_hwmod_class am43xx_dispc_hwmod_class = { + .name ="dispc" , + .sysc = &am43xx_dispc_sysc, +}; + +static struct omap_hwmod am43xx_dss_core_hwmod = { + .name ="dss_core" , + .class = &omap2_dss_hwmod_class, + .clkdm_name ="dss_clkdm" , + .main_clk ="disp_clk" , + .prcm = { + .omap4 = { + .clkctrl_offs =AM43XX_CM_PER_DSS_CLKCTRL_OFFSET , + .modulemode =MODULEMODE_SWCTRL , + }, + }, +}; + +/* display controller -dispc*/ + +static struct omap_hwmod am43xx_dss_dispc_hwmod = { + .name ="dss_dispc" , + .class = &am43xx_dispc_hwmod_class, + .clkdm_name ="dss_clkdm" , + .main_clk ="disp_clk" , + .prcm = { + .omap4 = { + .clkctrl_offs =AM43XX_CM_PER_DSS_CLKCTRL_OFFSET , + }, + }, + .dev_attr = &am43xx_dss_dispc_dev_attr, +}; + +/*RFBI*/ + +static struct omap_hwmod am43xx_dss_rfbi_hwmod = { + .name ="dss_rfbi" , + .class = &omap2_rfbi_hwmod_class, + .clkdm_name ="dss_clkdm" , + .main_clk ="disp_clk" , + .prcm = { + .omap4 = { + .clkctrl_offs =AM43XX_CM_PER_DSS_CLKCTRL_OFFSET , + }, + }, +}; +/* Interfaces */ static struct omap_hwmod_ocp_if am43xx_l3_main__l4_hs = { .master = &am33xx_l3_main_hwmod,
@@ -654,6 +720,34 @@ static struct omap_hwmod_ocp_if am43xx_l3_s__qspi = { .user = OCP_USER_MPU | OCP_USER_SDMA, }; +static struct omap_hwmod_ocp_if am43xx_dss__l3_main = { + .master = &am43xx_dss_core_hwmod, + .slave = &am33xx_l3_main_hwmod, + .clk ="l3_gclk" , + .user =OCP_USER_MPU |OCP_USER_SDMA , +}; + +static struct omap_hwmod_ocp_if am43xx_l4_ls__dss = { + .master = &am33xx_l4_ls_hwmod, + .slave = &am43xx_dss_core_hwmod, + .clk ="l4ls_gclk" , + .user =OCP_USER_MPU |OCP_USER_SDMA , +}; + +static struct omap_hwmod_ocp_if am43xx_l4_ls__dss_dispc = { + .master = &am33xx_l4_ls_hwmod, + .slave = &am43xx_dss_dispc_hwmod, + .clk ="l4ls_gclk" , + .user =OCP_USER_MPU |OCP_USER_SDMA , +}; + +static struct omap_hwmod_ocp_if am43xx_l4_ls__dss_rfbi = { + .master = &am33xx_l4_ls_hwmod, + .slave = &am43xx_dss_rfbi_hwmod, + .clk ="l4ls_gclk" , + .user =OCP_USER_MPU |OCP_USER_SDMA , +}; +static struct omap_hwmod_ocp_if *am43xx_hwmod_ocp_ifs[]__initdata = { &am33xx_l4_wkup__synctimer, &am43xx_l4_ls__timer8,
@@ -748,6 +842,10 @@ static struct omap_hwmod_ocp_if *am43xx_hwmod_ocp_ifs[] __initdata = { &am43xx_l4_ls__ocp2scp1, &am43xx_l3_s__usbotgss0, &am43xx_l3_s__usbotgss1, + &am43xx_dss__l3_main, + &am43xx_l4_ls__dss, + &am43xx_l4_ls__dss_dispc, + &am43xx_l4_ls__dss_rfbi, NULL, };
arch/arm/mach-omap2/prcm43xx.h +1 -0
@@ -142,5 +142,6 @@#define AM43XX_CM_PER_USBPHYOCP2SCP0_CLKCTRL_OFFSET 0x05B8#define AM43XX_CM_PER_USB_OTG_SS1_CLKCTRL_OFFSET 0x0268#define AM43XX_CM_PER_USBPHYOCP2SCP1_CLKCTRL_OFFSET 0x05C0 +#define AM43XX_CM_PER_DSS_CLKCTRL_OFFSET 0x0a20#endif
Signature · 11 lines
1.9.1 -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 819 bytes Desc: OpenPGP digital signature URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20140519/d8fe3fef/attachment.sig>
PATCH 1/11 ARM: AM43xx: hwmod: add DSS hwmod data
Quoted 14 lines · Tomi Valkeinen
Quoted 3 lines · Rajendra Nayak
Yeah, thats what it looks like to me.
l3_gclkis the 200Mhz clock derived from core-m4 post divider and l3s_gclk/l4ls_gclk are half of that at 100Mhz, derived using a fixed divider of 2.Here's an updated patch, with the sdma entry removed and the ocp clock changed to
l3_gclk.From
bfaf0fafb21c698c86640764c1aa62d6fc73992aMon Sep 17 00:00:00 2001
From: Sathya Prakash M R <[email protected]>
Date: Mon, 24 Mar 2014 16:31:53 +0530
Subject: [PATCH] ARM: AM43xx: hwmod: add DSS hwmod data
Quoted 4 lines
Add DSS hwmod data for AM43xx.
Signed-off-by Sathya Prakash M R <[email protected]>Signed-off-by Tomi Valkeinen <[email protected]>
Looks good to me, feel free to add
Quoted 147 lines
--- arch/arm/mach-omap2/omap_hwmod_43xx_data.c | 98 ++++++++++++++++++++++++++++++ arch/arm/mach-omap2/prcm43xx.h | 1 + 2 files changed, 99 insertions(+)arch/arm/mach-omap2/omap_hwmod_43xx_data.c +98
-0@@ -19,6 +19,8 @@#include "omap_hwmod.h" #include "omap_hwmod_33xx_43xx_common_data.h" #include "prcm43xx.h" +#include "omap_hwmod_common_data.h" +/* IP blocks */ static struct omap_hwmod am43xx_l4_hs_hwmod = {@@ -415,6 +417,70 @@ static struct omap_hwmod am43xx_qspi_hwmod = { }, }; +/* Display sub system - DSS */ + +struct omap_dss_dispc_dev_attr am43xx_dss_dispc_dev_attr = { + .manager_count =1 , + .has_framedonetv_irq =0 +}; + + +static struct omap_hwmod_class_sysconfig am43xx_dispc_sysc = { + .rev_offs =0x0000 , + .sysc_offs =0x0010 , + .syss_offs =0x0014 , + .sysc_flags = (SYSC_HAS_SIDLEMODE |SYSC_HAS_MIDLEMODE ), + .idlemodes = (SIDLE_FORCE |SIDLE_NO |SIDLE_SMART ), + .sysc_fields = &omap_hwmod_sysc_type1, +}; + +static struct omap_hwmod_class am43xx_dispc_hwmod_class = { + .name ="dispc" , + .sysc = &am43xx_dispc_sysc, +}; + +static struct omap_hwmod am43xx_dss_core_hwmod = { + .name ="dss_core" , + .class = &omap2_dss_hwmod_class, + .clkdm_name ="dss_clkdm" , + .main_clk ="disp_clk" , + .prcm = { + .omap4 = { + .clkctrl_offs =AM43XX_CM_PER_DSS_CLKCTRL_OFFSET , + .modulemode =MODULEMODE_SWCTRL , + }, + }, +}; + +/* display controller -dispc*/ + +static struct omap_hwmod am43xx_dss_dispc_hwmod = { + .name ="dss_dispc" , + .class = &am43xx_dispc_hwmod_class, + .clkdm_name ="dss_clkdm" , + .main_clk ="disp_clk" , + .prcm = { + .omap4 = { + .clkctrl_offs =AM43XX_CM_PER_DSS_CLKCTRL_OFFSET , + }, + }, + .dev_attr = &am43xx_dss_dispc_dev_attr, +}; + +/*RFBI*/ + +static struct omap_hwmod am43xx_dss_rfbi_hwmod = { + .name ="dss_rfbi" , + .class = &omap2_rfbi_hwmod_class, + .clkdm_name ="dss_clkdm" , + .main_clk ="disp_clk" , + .prcm = { + .omap4 = { + .clkctrl_offs =AM43XX_CM_PER_DSS_CLKCTRL_OFFSET , + }, + }, +}; +/* Interfaces */ static struct omap_hwmod_ocp_if am43xx_l3_main__l4_hs = { .master = &am33xx_l3_main_hwmod,@@ -654,6 +720,34 @@ static struct omap_hwmod_ocp_if am43xx_l3_s__qspi = { .user = OCP_USER_MPU | OCP_USER_SDMA, }; +static struct omap_hwmod_ocp_if am43xx_dss__l3_main = { + .master = &am43xx_dss_core_hwmod, + .slave = &am33xx_l3_main_hwmod, + .clk ="l3_gclk" , + .user =OCP_USER_MPU |OCP_USER_SDMA , +}; + +static struct omap_hwmod_ocp_if am43xx_l4_ls__dss = { + .master = &am33xx_l4_ls_hwmod, + .slave = &am43xx_dss_core_hwmod, + .clk ="l4ls_gclk" , + .user =OCP_USER_MPU |OCP_USER_SDMA , +}; + +static struct omap_hwmod_ocp_if am43xx_l4_ls__dss_dispc = { + .master = &am33xx_l4_ls_hwmod, + .slave = &am43xx_dss_dispc_hwmod, + .clk ="l4ls_gclk" , + .user =OCP_USER_MPU |OCP_USER_SDMA , +}; + +static struct omap_hwmod_ocp_if am43xx_l4_ls__dss_rfbi = { + .master = &am33xx_l4_ls_hwmod, + .slave = &am43xx_dss_rfbi_hwmod, + .clk ="l4ls_gclk" , + .user =OCP_USER_MPU |OCP_USER_SDMA , +}; +static struct omap_hwmod_ocp_if *am43xx_hwmod_ocp_ifs[]__initdata = { &am33xx_l4_wkup__synctimer, &am43xx_l4_ls__timer8,@@ -748,6 +842,10 @@ static struct omap_hwmod_ocp_if *am43xx_hwmod_ocp_ifs[] __initdata = { &am43xx_l4_ls__ocp2scp1, &am43xx_l3_s__usbotgss0, &am43xx_l3_s__usbotgss1, + &am43xx_dss__l3_main, + &am43xx_l4_ls__dss, + &am43xx_l4_ls__dss_dispc, + &am43xx_l4_ls__dss_rfbi, NULL, };arch/arm/mach-omap2/prcm43xx.h +1
-0@@ -142,5 +142,6 @@#define AM43XX_CM_PER_USBPHYOCP2SCP0_CLKCTRL_OFFSET 0x05B8#define AM43XX_CM_PER_USB_OTG_SS1_CLKCTRL_OFFSET 0x0268#define AM43XX_CM_PER_USBPHYOCP2SCP1_CLKCTRL_OFFSET 0x05C0 +#define AM43XX_CM_PER_DSS_CLKCTRL_OFFSET 0x0a20#endif
PATCH 1/11 ARM: AM43xx: hwmod: add DSS hwmod data
In reply to Tomi ValkeinenHi Paul,
Quoted 8 lines · Tomi Valkeinen
Quoted 3 lines · Rajendra Nayak
Yeah, thats what it looks like to me.
l3_gclkis the 200Mhz clock derived from core-m4 post divider and l3s_gclk/l4ls_gclk are half of that at 100Mhz, derived using a fixed divider of 2.Here's an updated patch, with the sdma entry removed and the ocp clock changed to
l3_gclk.
Can we get this to 3.16?
Tomi
Quoted 150 lines
From
bfaf0fafb21c698c86640764c1aa62d6fc73992aMon Sep 17 00:00:00 2001
From: Sathya Prakash M R <[email protected]>
Date: Mon, 24 Mar 2014 16:31:53 +0530
Subject: [PATCH] ARM: AM43xx: hwmod: add DSS hwmod dataAdd DSS hwmod data for AM43xx.
Signed-off-by Sathya Prakash M R <[email protected]>Signed-off-by Tomi Valkeinen <[email protected]>--- arch/arm/mach-omap2/omap_hwmod_43xx_data.c | 98 ++++++++++++++++++++++++++++++ arch/arm/mach-omap2/prcm43xx.h | 1 + 2 files changed, 99 insertions(+)arch/arm/mach-omap2/omap_hwmod_43xx_data.c +98
-0@@ -19,6 +19,8 @@#include "omap_hwmod.h" #include "omap_hwmod_33xx_43xx_common_data.h" #include "prcm43xx.h" +#include "omap_hwmod_common_data.h" +/* IP blocks */ static struct omap_hwmod am43xx_l4_hs_hwmod = {@@ -415,6 +417,70 @@ static struct omap_hwmod am43xx_qspi_hwmod = { }, }; +/* Display sub system - DSS */ + +struct omap_dss_dispc_dev_attr am43xx_dss_dispc_dev_attr = { + .manager_count =1 , + .has_framedonetv_irq =0 +}; + + +static struct omap_hwmod_class_sysconfig am43xx_dispc_sysc = { + .rev_offs =0x0000 , + .sysc_offs =0x0010 , + .syss_offs =0x0014 , + .sysc_flags = (SYSC_HAS_SIDLEMODE |SYSC_HAS_MIDLEMODE ), + .idlemodes = (SIDLE_FORCE |SIDLE_NO |SIDLE_SMART ), + .sysc_fields = &omap_hwmod_sysc_type1, +}; + +static struct omap_hwmod_class am43xx_dispc_hwmod_class = { + .name ="dispc" , + .sysc = &am43xx_dispc_sysc, +}; + +static struct omap_hwmod am43xx_dss_core_hwmod = { + .name ="dss_core" , + .class = &omap2_dss_hwmod_class, + .clkdm_name ="dss_clkdm" , + .main_clk ="disp_clk" , + .prcm = { + .omap4 = { + .clkctrl_offs =AM43XX_CM_PER_DSS_CLKCTRL_OFFSET , + .modulemode =MODULEMODE_SWCTRL , + }, + }, +}; + +/* display controller -dispc*/ + +static struct omap_hwmod am43xx_dss_dispc_hwmod = { + .name ="dss_dispc" , + .class = &am43xx_dispc_hwmod_class, + .clkdm_name ="dss_clkdm" , + .main_clk ="disp_clk" , + .prcm = { + .omap4 = { + .clkctrl_offs =AM43XX_CM_PER_DSS_CLKCTRL_OFFSET , + }, + }, + .dev_attr = &am43xx_dss_dispc_dev_attr, +}; + +/*RFBI*/ + +static struct omap_hwmod am43xx_dss_rfbi_hwmod = { + .name ="dss_rfbi" , + .class = &omap2_rfbi_hwmod_class, + .clkdm_name ="dss_clkdm" , + .main_clk ="disp_clk" , + .prcm = { + .omap4 = { + .clkctrl_offs =AM43XX_CM_PER_DSS_CLKCTRL_OFFSET , + }, + }, +}; +/* Interfaces */ static struct omap_hwmod_ocp_if am43xx_l3_main__l4_hs = { .master = &am33xx_l3_main_hwmod,@@ -654,6 +720,34 @@ static struct omap_hwmod_ocp_if am43xx_l3_s__qspi = { .user = OCP_USER_MPU | OCP_USER_SDMA, }; +static struct omap_hwmod_ocp_if am43xx_dss__l3_main = { + .master = &am43xx_dss_core_hwmod, + .slave = &am33xx_l3_main_hwmod, + .clk ="l3_gclk" , + .user =OCP_USER_MPU |OCP_USER_SDMA , +}; + +static struct omap_hwmod_ocp_if am43xx_l4_ls__dss = { + .master = &am33xx_l4_ls_hwmod, + .slave = &am43xx_dss_core_hwmod, + .clk ="l4ls_gclk" , + .user =OCP_USER_MPU |OCP_USER_SDMA , +}; + +static struct omap_hwmod_ocp_if am43xx_l4_ls__dss_dispc = { + .master = &am33xx_l4_ls_hwmod, + .slave = &am43xx_dss_dispc_hwmod, + .clk ="l4ls_gclk" , + .user =OCP_USER_MPU |OCP_USER_SDMA , +}; + +static struct omap_hwmod_ocp_if am43xx_l4_ls__dss_rfbi = { + .master = &am33xx_l4_ls_hwmod, + .slave = &am43xx_dss_rfbi_hwmod, + .clk ="l4ls_gclk" , + .user =OCP_USER_MPU |OCP_USER_SDMA , +}; +static struct omap_hwmod_ocp_if *am43xx_hwmod_ocp_ifs[]__initdata = { &am33xx_l4_wkup__synctimer, &am43xx_l4_ls__timer8,@@ -748,6 +842,10 @@ static struct omap_hwmod_ocp_if *am43xx_hwmod_ocp_ifs[] __initdata = { &am43xx_l4_ls__ocp2scp1, &am43xx_l3_s__usbotgss0, &am43xx_l3_s__usbotgss1, + &am43xx_dss__l3_main, + &am43xx_l4_ls__dss, + &am43xx_l4_ls__dss_dispc, + &am43xx_l4_ls__dss_rfbi, NULL, };arch/arm/mach-omap2/prcm43xx.h +0
-0
arch/arm/mach-omap2/prcm43xx.h line 147
Quoted 6 lines
arch/arm/mach-omap2/prcm43xx.h +1
-0@@ -142,5 +142,6 @@#define AM43XX_CM_PER_USBPHYOCP2SCP0_CLKCTRL_OFFSET 0x05B8#define AM43XX_CM_PER_USB_OTG_SS1_CLKCTRL_OFFSET 0x0268#define AM43XX_CM_PER_USBPHYOCP2SCP1_CLKCTRL_OFFSET 0x05C0 +#define AM43XX_CM_PER_DSS_CLKCTRL_OFFSET 0x0a20#endif
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: OpenPGP digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20140527/01517c65/attachment-0001.sig>
PATCH 2/11 ARM: dts: am43xx: add ti,set-rate-parent for disp_clk
In reply to Tomi ValkeinenFrom: Sathya Prakash M R <[email protected]>
disp_clk is a mux-clock, and to set the rate of the parent PLL, we need ti,set-rate-parent flag.
Add the flag.
--- arch/arm/boot/dts/am43xx-clocks.dtsi | 1 + 1 file changed, 1 insertion(+)
arch/arm/boot/dts/am43xx-clocks.dtsi +1 -0
@@ -511,6 +511,7 @@ compatible = "ti,mux-clock"; clocks = <&dpll_disp_m2_ck>, <&dpll_core_m5_ck>, <&dpll_per_m2_ck>; reg = <0x4244>; + ti,set-rate-parent; }; dpll_extdev_ck: dpll_extdev_ck {
Signature · 1 line
1.9.1
PATCH 3/11 ARM: dts: am4372.dtsi: add DSS information
In reply to Tomi ValkeinenFrom: Sathya Prakash M R <[email protected]>
Add DT data for the display subsystem for AM4372. The DSS on AM4372 is basically OMAP3's DSS, without DSI and VENC blocks.
--- arch/arm/boot/dts/am4372.dtsi | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+)
arch/arm/boot/dts/am4372.dtsi +30 -0
@@ -735,6 +735,36 @@ #size-cells = <1>; status = "disabled"; }; + + dss: dss at 4832a000 { + compatible = "ti,omap3-dss"; + reg = <0x4832a000 0x200>; + status = "disabled"; + ti,hwmods = "dss_core"; + clocks = <&disp_clk>; + clock-names = "fck"; + #address-cells = <1>; + #size-cells = <1>; + ranges; + + dispc at 4832a400 { + compatible = "ti,omap3-dispc"; + reg = <0x4832a400 0x400>; + interrupts = <GIC_SPI 127 IRQ_TYPE_LEVEL_HIGH>; + ti,hwmods = "dss_dispc"; + clocks = <&disp_clk>; + clock-names = "fck"; + }; + + rfbi: rfbi at 4832a800 { + compatible = "ti,omap3-rfbi"; + reg = <0x4832a800 0x100>; + ti,hwmods = "dss_rfbi"; + clocks = <&disp_clk>; + clock-names = "fck"; + }; + + }; }; };
Signature · 1 line
1.9.1
PATCH 4/11 ARM: dts: am437x-gp-evm: add LCD data
In reply to Tomi ValkeinenFrom: Sathya Prakash M R <[email protected]>
Add DT data for am437x-gp-evm's LCD panel.
--- arch/arm/boot/dts/am437x-gp-evm.dts | 97 +++++++++++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+)
arch/arm/boot/dts/am437x-gp-evm.dts +97 -0
@@ -53,6 +53,48 @@ 0x02000069 /* LEFT */ 0x0201006c>; /* DOWN */ }; + + aliases { + display0 = &lcd0; + }; + + lcd0: display { + compatible = "osddisplays,osd057T0559-34ts", "panel-dpi"; + label = "lcd"; + + pinctrl-names = "default"; + pinctrl-0 = <&lcd_pins>; + + /* + * SelLCDorHDMI, LOW to select HDMI. This is not really the + * panel's enable GPIO, but we don't have HDMI driver support nor + * support to switch between two displays, so using this gpio as + * panel's enable should be safe. + */ + enable-gpios = <&gpio5 8 GPIO_ACTIVE_HIGH>; + + panel-timing { + clock-frequency = <33000000>; + hactive = <800>; + vactive = <480>; + hfront-porch = <210>; + hback-porch = <16>; + hsync-len = <30>; + vback-porch = <10>; + vfront-porch = <22>; + vsync-len = <13>; + hsync-active = <0>; + vsync-active = <0>; + de-active = <1>; + pixelclk-active = <1>; + }; + + port { + lcd_in: endpoint { + remote-endpoint = <&dpi_out>; + }; + }; + }; }; &am43xx_pinmux {
@@ -81,6 +123,47 @@ 0x164 MUX_MODE0 /* eCAP0_in_PWM0_out.eCAP0_in_PWM0_out MODE0 */ >; }; + + dss_pins: dss_pins { + pinctrl-single,pins = < + 0x020 (PIN_OUTPUT_PULLUP | MUX_MODE1) /*gpmc ad 8 -> DSS DATA 23 */ + 0x024 (PIN_OUTPUT_PULLUP | MUX_MODE1) + 0x028 (PIN_OUTPUT_PULLUP | MUX_MODE1) + 0x02c (PIN_OUTPUT_PULLUP | MUX_MODE1) + 0x030 (PIN_OUTPUT_PULLUP | MUX_MODE1) + 0x034 (PIN_OUTPUT_PULLUP | MUX_MODE1) + 0x038 (PIN_OUTPUT_PULLUP | MUX_MODE1) + 0x03c (PIN_OUTPUT_PULLUP | MUX_MODE1) /*gpmc ad 15 -> DSS DATA 16 */ + 0x0a0 (PIN_OUTPUT_PULLUP | MUX_MODE0) /* DSS DATA 0 */ + 0x0a4 (PIN_OUTPUT_PULLUP | MUX_MODE0) + 0x0a8 (PIN_OUTPUT_PULLUP | MUX_MODE0) + 0x0ac (PIN_OUTPUT_PULLUP | MUX_MODE0) + 0x0b0 (PIN_OUTPUT_PULLUP | MUX_MODE0) + 0x0b4 (PIN_OUTPUT_PULLUP | MUX_MODE0) + 0x0b8 (PIN_OUTPUT_PULLUP | MUX_MODE0) + 0x0bc (PIN_OUTPUT_PULLUP | MUX_MODE0) + 0x0c0 (PIN_OUTPUT_PULLUP | MUX_MODE0) + 0x0c4 (PIN_OUTPUT_PULLUP | MUX_MODE0) + 0x0c8 (PIN_OUTPUT_PULLUP | MUX_MODE0) + 0x0cc (PIN_OUTPUT_PULLUP | MUX_MODE0) + 0x0d0 (PIN_OUTPUT_PULLUP | MUX_MODE0) + 0x0d4 (PIN_OUTPUT_PULLUP | MUX_MODE0) + 0x0d8 (PIN_OUTPUT_PULLUP | MUX_MODE0) + 0x0dc (PIN_OUTPUT_PULLUP | MUX_MODE0) /* DSS DATA 15 */ + 0x0e0 (PIN_OUTPUT_PULLUP | MUX_MODE0) /* DSS VSYNC */ + 0x0e4 (PIN_OUTPUT_PULLUP | MUX_MODE0) /* DSS HSYNC */ + 0x0e8 (PIN_OUTPUT_PULLUP | MUX_MODE0) /* DSS PCLK */ + 0x0ec (PIN_OUTPUT_PULLUP | MUX_MODE0) /* DSS AC BIAS EN */ + + >; + }; + + lcd_pins: lcd_pins { + pinctrl-single,pins = < + /* GPIO 5_8 to select LCD / HDMI */ + 0x238 (PIN_OUTPUT_PULLUP | MUX_MODE7) + >; + }; }; &i2c0 {
@@ -125,3 +208,17 @@ pinctrl-0 = <&mmc1_pins>; cd-gpios = <&gpio0 6 GPIO_ACTIVE_HIGH>; }; + +&dss { + status = "ok"; + + pinctrl-names = "default"; + pinctrl-0 = <&dss_pins>; + + port { + dpi_out: endpoint at 0 { + remote-endpoint = <&lcd_in>; + data-lines = <24>; + }; + }; +};
Signature · 1 line
1.9.1
PATCH 5/11 ARM: dts: am43x-epos-evm: add LCD data
In reply to Tomi ValkeinenAdd DT data for am43x-epos-evm's LCD panel.
--- arch/arm/boot/dts/am43x-epos-evm.dts | 101 +++++++++++++++++++++++++++++++++++ 1 file changed, 101 insertions(+)
arch/arm/boot/dts/am43x-epos-evm.dts +101 -0
@@ -19,6 +19,10 @@ model = "TI AM43x EPOS EVM"; compatible = "ti,am43x-epos-evm","ti,am4372","ti,am43"; + aliases { + display0 = &lcd0; + }; + vmmcsd_fixed: fixedregulator-sd { compatible = "regulator-fixed"; regulator-name = "vmmcsd_fixed";
@@ -27,6 +31,44 @@ enable-active-high; }; + lcd0: display { + compatible = "osddisplays,osd057T0559-34ts", "panel-dpi"; + label = "lcd"; + + pinctrl-names = "default"; + pinctrl-0 = <&lcd_pins>; + + /* + * SelLCDorHDMI, LOW to select HDMI. This is not really the + * panel's enable GPIO, but we don't have HDMI driver support nor + * support to switch between two displays, so using this gpio as + * panel's enable should be safe. + */ + enable-gpios = <&gpio2 1 GPIO_ACTIVE_HIGH>; + + panel-timing { + clock-frequency = <33000000>; + hactive = <800>; + vactive = <480>; + hfront-porch = <210>; + hback-porch = <16>; + hsync-len = <30>; + vback-porch = <10>; + vfront-porch = <22>; + vsync-len = <13>; + hsync-active = <0>; + vsync-active = <0>; + de-active = <1>; + pixelclk-active = <1>; + }; + + port { + lcd_in: endpoint { + remote-endpoint = <&dpi_out>; + }; + }; + }; + am43xx_pinmux: pinmux at 44e10800 { cpsw_default: cpsw_default { pinctrl-single,pins = <
@@ -138,6 +180,46 @@ 0x160 (PIN_INPUT | MUX_MODE7) /* spi0_cs1.gpio0_6 */ >; }; + + dss_pins: dss_pins { + pinctrl-single,pins = < + 0x020 (PIN_OUTPUT_PULLUP | MUX_MODE1) /*gpmc ad 8 -> DSS DATA 23 */ + 0x024 (PIN_OUTPUT_PULLUP | MUX_MODE1) + 0x028 (PIN_OUTPUT_PULLUP | MUX_MODE1) + 0x02C (PIN_OUTPUT_PULLUP | MUX_MODE1) + 0x030 (PIN_OUTPUT_PULLUP | MUX_MODE1) + 0x034 (PIN_OUTPUT_PULLUP | MUX_MODE1) + 0x038 (PIN_OUTPUT_PULLUP | MUX_MODE1) + 0x03C (PIN_OUTPUT_PULLUP | MUX_MODE1) /*gpmc ad 15 -> DSS DATA 16 */ + 0x0A0 (PIN_OUTPUT_PULLUP | MUX_MODE0) /* DSS DATA 0 */ + 0x0A4 (PIN_OUTPUT_PULLUP | MUX_MODE0) + 0x0A8 (PIN_OUTPUT_PULLUP | MUX_MODE0) + 0x0AC (PIN_OUTPUT_PULLUP | MUX_MODE0) + 0x0B0 (PIN_OUTPUT_PULLUP | MUX_MODE0) + 0x0B4 (PIN_OUTPUT_PULLUP | MUX_MODE0) + 0x0B8 (PIN_OUTPUT_PULLUP | MUX_MODE0) + 0x0BC (PIN_OUTPUT_PULLUP | MUX_MODE0) + 0x0C0 (PIN_OUTPUT_PULLUP | MUX_MODE0) + 0x0C4 (PIN_OUTPUT_PULLUP | MUX_MODE0) + 0x0C8 (PIN_OUTPUT_PULLUP | MUX_MODE0) + 0x0CC (PIN_OUTPUT_PULLUP | MUX_MODE0) + 0x0D0 (PIN_OUTPUT_PULLUP | MUX_MODE0) + 0x0D4 (PIN_OUTPUT_PULLUP | MUX_MODE0) + 0x0D8 (PIN_OUTPUT_PULLUP | MUX_MODE0) + 0x0DC (PIN_OUTPUT_PULLUP | MUX_MODE0) /* DSS DATA 15 */ + 0x0E0 (PIN_OUTPUT_PULLUP | MUX_MODE0) /* DSS VSYNC */ + 0x0E4 (PIN_OUTPUT_PULLUP | MUX_MODE0) /* DSS HSYNC */ + 0x0E8 (PIN_OUTPUT_PULLUP | MUX_MODE0) /* DSS PCLK */ + 0x0EC (PIN_OUTPUT_PULLUP | MUX_MODE0) /* DSS AC BIAS EN */ + >; + }; + + lcd_pins: lcd_pins { + pinctrl-single,pins = < + /* GPMC CLK -> GPIO 2_1 to select LCD / HDMI */ + 0x08C (PIN_OUTPUT_PULLUP | MUX_MODE7) + >; + }; }; matrix_keypad: matrix_keypad at 0 {
@@ -260,6 +342,10 @@ status = "okay"; }; +&gpio5 { + status = "okay"; +}; + &elm { status = "okay"; };
@@ -367,3 +453,18 @@ pinctrl-0 = <&spi1_pins>; status = "okay"; }; + + +&dss { + status = "ok"; + + pinctrl-names = "default"; + pinctrl-0 = <&dss_pins>; + + port { + dpi_out: endpoint at 0 { + remote-endpoint = <&lcd_in>; + data-lines = <24>; + }; + }; +};
Signature · 1 line
1.9.1
PATCH 6/11 ARM: OMAP2+: hwmod: OMAP5 DSS hwmod data
In reply to Tomi ValkeinenFrom: Archit Taneja <[email protected]>
Add hwmod data for dss core, dispc dsi1, dsi2, rfbi and hdmi. It's more or less similar to omap4 hwmod data.
--- arch/arm/mach-omap2/omap_hwmod_54xx_data.c | 283 +++++++++++++++++++++++++++++ 1 file changed, 283 insertions(+)
arch/arm/mach-omap2/omap_hwmod_54xx_data.c +283 -0
@@ -334,6 +334,235 @@ static struct omap_hwmod omap54xx_dmic_hwmod = { };/* +* 'dss' class +* display sub-system +*/ +static struct omap_hwmod_class_sysconfig omap54xx_dss_sysc = { + .rev_offs =0x0000 , + .syss_offs =0x0014 , + .sysc_flags =SYSS_HAS_RESET_STATUS , +}; + +static struct omap_hwmod_class omap54xx_dss_hwmod_class = { + .name ="dss" , + .sysc = &omap54xx_dss_sysc, + .reset = omap_dss_reset, +}; + +/* dss */ +static struct omap_hwmod_opt_clk dss_opt_clks[] = { + { .role ="32khz_clk" , .clk ="dss_32khz_clk" }, + { .role ="sys_clk" , .clk ="dss_sys_clk" }, + { .role ="hdmi_clk" , .clk ="dss_48mhz_clk" }, +}; + +static struct omap_hwmod omap54xx_dss_hwmod = { + .name ="dss_core" , + .class = &omap54xx_dss_hwmod_class, + .clkdm_name ="dss_clkdm" , + .flags =HWMOD_CONTROL_OPT_CLKS_IN_RESET , + .main_clk ="dss_dss_clk" , + .prcm = { + .omap4 = { + .clkctrl_offs =OMAP54XX_CM_DSS_DSS_CLKCTRL_OFFSET , + .context_offs =OMAP54XX_RM_DSS_DSS_CONTEXT_OFFSET , + .modulemode =MODULEMODE_SWCTRL , + }, + }, + .opt_clks = dss_opt_clks, + .opt_clks_cnt =ARRAY_SIZE (dss_opt_clks), +}; + +/* +* 'dispc' class +* display controller +*/ + +static struct omap_hwmod_class_sysconfig omap54xx_dispc_sysc = { + .rev_offs =0x0000 , + .sysc_offs =0x0010 , + .syss_offs =0x0014 , + .sysc_flags = (SYSC_HAS_AUTOIDLE |SYSC_HAS_CLOCKACTIVITY | +SYSC_HAS_ENAWAKEUP |SYSC_HAS_MIDLEMODE | +SYSC_HAS_SIDLEMODE |SYSC_HAS_SOFTRESET | +SYSS_HAS_RESET_STATUS ), + .idlemodes = (SIDLE_FORCE |SIDLE_NO |SIDLE_SMART | +MSTANDBY_FORCE |MSTANDBY_NO |MSTANDBY_SMART ), + .sysc_fields = &omap_hwmod_sysc_type1, +}; + +static struct omap_hwmod_class omap54xx_dispc_hwmod_class = { + .name ="dispc" , + .sysc = &omap54xx_dispc_sysc, +}; + +/* dss_dispc */ +static struct omap_hwmod_opt_clk dss_dispc_opt_clks[] = { + { .role ="sys_clk" , .clk ="dss_sys_clk" }, +}; + +/* dss_dispc dev_attr */ +static struct omap_dss_dispc_dev_attr dss_dispc_dev_attr = { + .has_framedonetv_irq =1 , + .manager_count =4 , +}; + +static struct omap_hwmod omap54xx_dss_dispc_hwmod = { + .name ="dss_dispc" , + .class = &omap54xx_dispc_hwmod_class, + .clkdm_name ="dss_clkdm" , + .main_clk ="dss_dss_clk" , + .prcm = { + .omap4 = { + .clkctrl_offs =OMAP54XX_CM_DSS_DSS_CLKCTRL_OFFSET , + .flags =HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT , + }, + }, + .opt_clks = dss_dispc_opt_clks, + .opt_clks_cnt =ARRAY_SIZE (dss_dispc_opt_clks), + .dev_attr = &dss_dispc_dev_attr, +}; + +/* +* 'dsi1' class +* display serial interface controller +*/ + +static struct omap_hwmod_class_sysconfig omap54xx_dsi1_sysc = { + .rev_offs =0x0000 , + .sysc_offs =0x0010 , + .syss_offs =0x0014 , + .sysc_flags = (SYSC_HAS_AUTOIDLE |SYSC_HAS_CLOCKACTIVITY | +SYSC_HAS_ENAWAKEUP |SYSC_HAS_SIDLEMODE | +SYSC_HAS_SOFTRESET |SYSS_HAS_RESET_STATUS ), + .idlemodes = (SIDLE_FORCE |SIDLE_NO |SIDLE_SMART ), + .sysc_fields = &omap_hwmod_sysc_type1, +}; + +static struct omap_hwmod_class omap54xx_dsi1_hwmod_class = { + .name ="dsi1" , + .sysc = &omap54xx_dsi1_sysc, +}; + +/* dss_dsi1_a */ +static struct omap_hwmod_opt_clk dss_dsi1_a_opt_clks[] = { + { .role ="sys_clk" , .clk ="dss_sys_clk" }, +}; + +static struct omap_hwmod omap54xx_dss_dsi1_a_hwmod = { + .name ="dss_dsi1" , + .class = &omap54xx_dsi1_hwmod_class, + .clkdm_name ="dss_clkdm" , + .main_clk ="dss_dss_clk" , + .prcm = { + .omap4 = { + .clkctrl_offs =OMAP54XX_CM_DSS_DSS_CLKCTRL_OFFSET , + .flags =HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT , + }, + }, + .opt_clks = dss_dsi1_a_opt_clks, + .opt_clks_cnt =ARRAY_SIZE (dss_dsi1_a_opt_clks), +}; + +/* dss_dsi1_c */ +static struct omap_hwmod_opt_clk dss_dsi1_c_opt_clks[] = { + { .role ="sys_clk" , .clk ="dss_sys_clk" }, +}; + +static struct omap_hwmod omap54xx_dss_dsi1_c_hwmod = { + .name ="dss_dsi2" , + .class = &omap54xx_dsi1_hwmod_class, + .clkdm_name ="dss_clkdm" , + .main_clk ="dss_dss_clk" , + .prcm = { + .omap4 = { + .clkctrl_offs =OMAP54XX_CM_DSS_DSS_CLKCTRL_OFFSET , + .flags =HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT , + }, + }, + .opt_clks = dss_dsi1_c_opt_clks, + .opt_clks_cnt =ARRAY_SIZE (dss_dsi1_c_opt_clks), +}; + +/* +* 'hdmi' class +* hdmi controller +*/ + +static struct omap_hwmod_class_sysconfig omap54xx_hdmi_sysc = { + .rev_offs =0x0000 , + .sysc_offs =0x0010 , + .sysc_flags = (SYSC_HAS_RESET_STATUS |SYSC_HAS_SIDLEMODE | +SYSC_HAS_SOFTRESET ), + .idlemodes = (SIDLE_FORCE |SIDLE_NO |SIDLE_SMART | +SIDLE_SMART_WKUP ), + .sysc_fields = &omap_hwmod_sysc_type2, +}; + +static struct omap_hwmod_class omap54xx_hdmi_hwmod_class = { + .name ="hdmi" , + .sysc = &omap54xx_hdmi_sysc, +}; + +static struct omap_hwmod_opt_clk dss_hdmi_opt_clks[] = { + { .role ="sys_clk" , .clk ="dss_sys_clk" }, +}; + +static struct omap_hwmod omap54xx_dss_hdmi_hwmod = { + .name ="dss_hdmi" , + .class = &omap54xx_hdmi_hwmod_class, + .clkdm_name ="dss_clkdm" , + .main_clk ="dss_48mhz_clk" , + .prcm = { + .omap4 = { + .clkctrl_offs =OMAP54XX_CM_DSS_DSS_CLKCTRL_OFFSET , + .flags =HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT , + }, + }, + .opt_clks = dss_hdmi_opt_clks, + .opt_clks_cnt =ARRAY_SIZE (dss_hdmi_opt_clks), +}; + +/* +* 'rfbi' class +* remote frame buffer interface +*/ + +static struct omap_hwmod_class_sysconfig omap54xx_rfbi_sysc = { + .rev_offs =0x0000 , + .sysc_offs =0x0010 , + .syss_offs =0x0014 , + .sysc_flags = (SYSC_HAS_AUTOIDLE |SYSC_HAS_SIDLEMODE | +SYSC_HAS_SOFTRESET |SYSS_HAS_RESET_STATUS ), + .idlemodes = (SIDLE_FORCE |SIDLE_NO |SIDLE_SMART ), + .sysc_fields = &omap_hwmod_sysc_type1, +}; + +static struct omap_hwmod_class omap54xx_rfbi_hwmod_class = { + .name ="rfbi" , + .sysc = &omap54xx_rfbi_sysc, +}; + +/* dss_rfbi */ +static struct omap_hwmod_opt_clk dss_rfbi_opt_clks[] = { + { .role ="ick" , .clk ="l3_iclk_div" }, +}; + +static struct omap_hwmod omap54xx_dss_rfbi_hwmod = { + .name ="dss_rfbi" , + .class = &omap54xx_rfbi_hwmod_class, + .clkdm_name ="dss_clkdm" , + .prcm = { + .omap4 = { + .clkctrl_offs =OMAP54XX_CM_DSS_DSS_CLKCTRL_OFFSET , + .flags =HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT , + }, + }, + .opt_clks = dss_rfbi_opt_clks, + .opt_clks_cnt =ARRAY_SIZE (dss_rfbi_opt_clks), +}; + +/* * 'emif' class * external memory interface no1 (wrapper) */
@@ -1974,6 +2203,54 @@ static struct omap_hwmod_ocp_if omap54xx_l4_abe__dmic = { .user = OCP_USER_MPU, }; +/* l3_main_2 -> dss */ +static struct omap_hwmod_ocp_if omap54xx_l3_main_2__dss = { + .master = &omap54xx_l3_main_2_hwmod, + .slave = &omap54xx_dss_hwmod, + .clk ="l3_iclk_div" , + .user =OCP_USER_MPU |OCP_USER_SDMA , +}; + +/* l3_main_2 -> dss_dispc */ +static struct omap_hwmod_ocp_if omap54xx_l3_main_2__dss_dispc = { + .master = &omap54xx_l3_main_2_hwmod, + .slave = &omap54xx_dss_dispc_hwmod, + .clk ="l3_iclk_div" , + .user =OCP_USER_MPU |OCP_USER_SDMA , +}; + +/* l3_main_2 -> dss_dsi1_a */ +static struct omap_hwmod_ocp_if omap54xx_l3_main_2__dss_dsi1_a = { + .master = &omap54xx_l3_main_2_hwmod, + .slave = &omap54xx_dss_dsi1_a_hwmod, + .clk ="l3_iclk_div" , + .user =OCP_USER_MPU |OCP_USER_SDMA , +}; + +/* l3_main_2 -> dss_dsi1_c */ +static struct omap_hwmod_ocp_if omap54xx_l3_main_2__dss_dsi1_c = { + .master = &omap54xx_l3_main_2_hwmod, + .slave = &omap54xx_dss_dsi1_c_hwmod, + .clk ="l3_iclk_div" , + .user =OCP_USER_MPU |OCP_USER_SDMA , +}; + +/* l3_main_2 -> dss_hdmi */ +static struct omap_hwmod_ocp_if omap54xx_l3_main_2__dss_hdmi = { + .master = &omap54xx_l3_main_2_hwmod, + .slave = &omap54xx_dss_hdmi_hwmod, + .clk ="l3_iclk_div" , + .user =OCP_USER_MPU |OCP_USER_SDMA , +}; + +/* l3_main_2 -> dss_rfbi */ +static struct omap_hwmod_ocp_if omap54xx_l3_main_2__dss_rfbi = { + .master = &omap54xx_l3_main_2_hwmod, + .slave = &omap54xx_dss_rfbi_hwmod, + .clk ="l3_iclk_div" , + .user =OCP_USER_MPU |OCP_USER_SDMA , +}; +/* mpu -> emif1 */ static struct omap_hwmod_ocp_if omap54xx_mpu__emif1 = { .master = &omap54xx_mpu_hwmod,
@@ -2427,6 +2704,12 @@ static struct omap_hwmod_ocp_if *omap54xx_hwmod_ocp_ifs[] __initdata = { &omap54xx_l4_cfg__dma_system, &omap54xx_l4_abe__dmic, &omap54xx_l4_cfg__mmu_dsp, + &omap54xx_l3_main_2__dss, + &omap54xx_l3_main_2__dss_dispc, + &omap54xx_l3_main_2__dss_dsi1_a, + &omap54xx_l3_main_2__dss_dsi1_c, + &omap54xx_l3_main_2__dss_hdmi, + &omap54xx_l3_main_2__dss_rfbi, &omap54xx_mpu__emif1, &omap54xx_mpu__emif2, &omap54xx_l4_wkup__gpio1,
Signature · 1 line
1.9.1
PATCH 7/11 ARM: dts: omap5-clocks.dtsi: add dss iclk
In reply to Tomi ValkeinenAdd missing DSS interface clock node.
Note: The TRM says DSS's interface clock is DSS_L3_GICLK, but it is not clear to me from reading the TRM and looking at the arch/arm/boot/dts/omap54xx-clocks.dtsi whether using 'l3_iclk_div' as the parent for 'dss_l3_iclk' is the correct clock.
The clock is explicitly used only by the RFBI, and we don't have any boards using the RFBI, so I have no means to test it.
--- arch/arm/boot/dts/omap54xx-clocks.dtsi | 8 ++++++++ 1 file changed, 8 insertions(+)
arch/arm/boot/dts/omap54xx-clocks.dtsi +8 -0
@@ -418,6 +418,14 @@ clock-div = <1>; }; + dss_l3_iclk: dss_l3_iclk { + #clock-cells = <0>; + compatible = "fixed-factor-clock"; + clocks = <&l3_iclk_div>; + clock-mult = <1>; + clock-div = <1>; + }; + slimbus1_slimbus_clk: slimbus1_slimbus_clk { #clock-cells = <0>; compatible = "ti,gate-clock";
Signature · 1 line
1.9.1
PATCH 8/11 ARM: dts: omap5-clocks.dtsi: add ti, set-rate-parent to dss_dss_clk
In reply to Tomi ValkeinenAdd ti,set-rate-parent to dss_dss_clk so that the DSS driver can set the rate.
--- arch/arm/boot/dts/omap54xx-clocks.dtsi | 1 + 1 file changed, 1 insertion(+)
arch/arm/boot/dts/omap54xx-clocks.dtsi +1 -0
@@ -859,6 +859,7 @@ clocks = <&dpll_per_h12x2_ck>; ti,bit-shift = <8>; reg = <0x1420>; + ti,set-rate-parent; }; dss_sys_clk: dss_sys_clk {
Signature · 1 line
1.9.1
PATCH 9/11 ARM: dts: omap5.dtsi: add DSS nodes
In reply to Tomi ValkeinenAdd OMAP5 DSS nodes to omap5.dtsi.
--- arch/arm/boot/dts/omap5.dtsi | 70 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+)
arch/arm/boot/dts/omap5.dtsi +70 -0
@@ -869,6 +869,76 @@ #thermal-sensor-cells = <1>; }; + + dss: dss at 58000000 { + compatible = "ti,omap5-dss"; + reg = <0x58000000 0x80>; + status = "disabled"; + ti,hwmods = "dss_core"; + clocks = <&dss_dss_clk>; + clock-names = "fck"; + #address-cells = <1>; + #size-cells = <1>; + ranges; + + dispc at 58001000 { + compatible = "ti,omap5-dispc"; + reg = <0x58001000 0x1000>; + interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>; + ti,hwmods = "dss_dispc"; + clocks = <&dss_dss_clk>; + clock-names = "fck"; + }; + + rfbi: encoder at 58002000 { + compatible = "ti,omap5-rfbi"; + reg = <0x58002000 0x100>; + status = "disabled"; + ti,hwmods = "dss_rfbi"; + clocks = <&dss_dss_clk>, <&dss_l3_iclk>; + clock-names = "fck", "ick"; + }; + + dsi1: encoder at 58004000 { + compatible = "ti,omap5-dsi"; + reg = <0x58004000 0x200>, + <0x58004200 0x40>, + <0x58004300 0x40>; + reg-names = "proto", "phy", "pll"; + interrupts = <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>; + status = "disabled"; + ti,hwmods = "dss_dsi1"; + clocks = <&dss_dss_clk>, <&dss_sys_clk>; + clock-names = "fck", "sys_clk"; + }; + + dsi2: encoder at 58005000 { + compatible = "ti,omap5-dsi"; + reg = <0x58009000 0x200>, + <0x58009200 0x40>, + <0x58009300 0x40>; + reg-names = "proto", "phy", "pll"; + interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>; + status = "disabled"; + ti,hwmods = "dss_dsi2"; + clocks = <&dss_dss_clk>, <&dss_sys_clk>; + clock-names = "fck", "sys_clk"; + }; + + hdmi: encoder at 58060000 { + compatible = "ti,omap5-hdmi"; + reg = <0x58040000 0x400>, + <0x58040200 0x80>, + <0x58040300 0x80>, + <0x58060000 0x19000>; + reg-names = "wp", "pll", "phy", "core"; + interrupts = <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>; + status = "disabled"; + ti,hwmods = "dss_hdmi"; + clocks = <&dss_48mhz_clk>, <&dss_sys_clk>; + clock-names = "fck", "sys_clk"; + }; + }; }; };
Signature · 1 line
1.9.1
PATCH 10/11 ARM: dts: omap5-uevm.dts: add tca6424a
In reply to Tomi Valkeinenomap5-uevm has a tca6424a I/O expander. Add it to the .dts file.
--- arch/arm/boot/dts/omap5-uevm.dts | 7 +++++++ 1 file changed, 7 insertions(+)
arch/arm/boot/dts/omap5-uevm.dts +7 -0
@@ -434,6 +434,13 @@ pinctrl-0 = <&i2c5_pins>; clock-frequency = <400000>; + + gpio9: gpio at 22 { + compatible = "ti,tca6424"; + reg = <0x22>; + gpio-controller; + #gpio-cells = <2>; + }; }; &mcbsp3 {
Signature · 1 line
1.9.1
PATCH 11/11 ARM: dts: omap5-uevm.dts: add display nodes
In reply to Tomi Valkeinenomap5-uevm has a single HDMI output. Add the necessary display information, including pinmuxing.
--- arch/arm/boot/dts/omap5-uevm.dts | 82 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+)
arch/arm/boot/dts/omap5-uevm.dts +82 -0
@@ -183,6 +183,19 @@ >; }; + dss_hdmi_pins: pinmux_dss_hdmi_pins { + pinctrl-single,pins = < + 0x0fc (PIN_INPUT_PULLUP | MUX_MODE0) /* hdmi_cec.hdmi_cec */ + 0x100 (PIN_INPUT | MUX_MODE0) /* hdmi_ddc_scl.hdmi_ddc_scl */ + 0x102 (PIN_INPUT | MUX_MODE0) /* hdmi_ddc_sda.hdmi_ddc_sda */ + >; + }; + + tpd12s015_pins: pinmux_tpd12s015_pins { + pinctrl-single,pins = < + 0x0fe (PIN_INPUT_PULLDOWN | MUX_MODE6) /* hdmi_hpd.gpio7_193 */ + >; + }; }; &omap5_pmx_wkup {
@@ -498,3 +511,72 @@ &cpu0 { cpu0-supply = <&smps123_reg>; }; + +/ { + aliases { + display0 = &hdmi0; + }; + + tpd12s015: encoder at 0 { + compatible = "ti,tpd12s015"; + + pinctrl-names = "default"; + pinctrl-0 = <&tpd12s015_pins>; + + gpios = <&gpio9 0 GPIO_ACTIVE_HIGH>, /* TCA6424A P01, CT CP HPD */ + <&gpio9 1 GPIO_ACTIVE_HIGH>, /* TCA6424A P00, LS OE */ + <&gpio7 1 GPIO_ACTIVE_HIGH>; /* GPIO 193, HPD */ + + ports { + #address-cells = <1>; + #size-cells = <0>; + + port at 0 { + reg = <0>; + + tpd12s015_in: endpoint at 0 { + remote-endpoint = <&hdmi_out>; + }; + }; + + port at 1 { + reg = <1>; + + tpd12s015_out: endpoint at 0 { + remote-endpoint = <&hdmi_connector_in>; + }; + }; + }; + }; + + hdmi0: connector at 0 { + compatible = "hdmi-connector"; + label = "hdmi"; + + type = "b"; + + port { + hdmi_connector_in: endpoint { + remote-endpoint = <&tpd12s015_out>; + }; + }; + }; +}; + +&dss { + status = "ok"; +}; + +&hdmi { + status = "ok"; + vdda-supply = <&ldo4_reg>; + + pinctrl-names = "default"; + pinctrl-0 = <&dss_hdmi_pins>; + + port { + hdmi_out: endpoint { + remote-endpoint = <&tpd12s015_in>; + }; + }; +};
Signature · 1 line
1.9.1
cover ARM: OMAP: OMAP5 & AM43x DSS
In reply to Tomi ValkeinenHi Tony,
Quoted 7 lines · Tomi Valkeinen
Hi,
Here are
arch/arm/patches to add display support for OMAP5 and AM43x.I have these in my tree, in a branch I will send to Tony for merging. Most of these patches have already been around the lists, but I wanted to send them one more time to verify that all looks right and everybody is fine with them.
I have pushed these to:
git://git.kernel.org/pub/scm/linux/kernel/git/tomba/linux.git 3.16/omap
If you're fine with these, I think we can consider that branch stable. There are probably still a few display related .dts changed for the board coming up, but I'll add those on top of the current commits.
I also have pushed OMAP5 and AM43xx related OMAPDSS patches to my for-next branch, so with "3.16/omap" branch and linux-next, the omap5 and am43xx displays should be functional.
How do you want to handle getting the 3.16/omap branch to linux-next? Will you take "ownership" of the branch, and push it to linux-next?
Tomi
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: OpenPGP digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20140512/0e26df26/attachment.sig>
Tony Lindgren
maintainercover ARM: OMAP: OMAP5 & AM43x DSS
Quoted 11 lines · Tomi Valkeinen
Hi Tony,
Quoted 7 lines · Tomi Valkeinen
Hi,
Here are
arch/arm/patches to add display support for OMAP5 and AM43x.I have these in my tree, in a branch I will send to Tony for merging. Most of these patches have already been around the lists, but I wanted to send them one more time to verify that all looks right and everybody is fine with them.
Quoted 7 lines
I have pushed these to:
git://git.kernel.org/pub/scm/linux/kernel/git/tomba/linux.git3.16/omapIf you're fine with these, I think we can consider that branch stable. There are probably still a few display related .dts changed for the board coming up, but I'll add those on top of the current commits.
Please coordinate things with Paul and Tero so you at least have proper acks for the hwmod and and clock patches. In general we really want to queue hwmod and clock changes separately as those can easily mess up things in a bad way like we've already seen with overlapping hwmod entries in the .dts files.
Also, I'm wondering why we still have .clk and .opt_clks entries in the hwmod data for am43xx and omap5 which are both device tree based with all the clocks coming from .dts files?
Quoted 3 lines
I also have pushed OMAP5 and AM43xx related OMAPDSS patches to my for-next branch, so with "3.16/omap" branch and linux-next, the omap5 and am43xx displays should be functional.
The panel parts look OK to me no problem.
Quoted 2 lines
How do you want to handle getting the 3.16/omap branch to linux-next? Will you take "ownership" of the branch, and push it to linux-next?
Ideally we'd have small topic branches of clock changes, hwmod changes and .dts changes that we can all merge in as needed.
Regards,
Tony
cover ARM: OMAP: OMAP5 & AM43x DSS
Quoted 20 lines · Tony Lindgren
Quoted 11 lines · Tomi Valkeinen
Hi Tony,
Quoted 7 lines · Tomi Valkeinen
Hi,
Here are
arch/arm/patches to add display support for OMAP5 and AM43x.I have these in my tree, in a branch I will send to Tony for merging. Most of these patches have already been around the lists, but I wanted to send them one more time to verify that all looks right and everybody is fine with them.
Quoted 7 lines
I have pushed these to:
git://git.kernel.org/pub/scm/linux/kernel/git/tomba/linux.git3.16/omapIf you're fine with these, I think we can consider that branch stable. There are probably still a few display related .dts changed for the board coming up, but I'll add those on top of the current commits.
Quoted 5 lines
Please coordinate things with Paul and Tero so you at least have proper acks for the hwmod and and clock patches. In general we really want to queue hwmod and clock changes separately as those can easily mess up things in a bad way like we've already seen with overlapping hwmod entries in the .dts files.
Ok. I'm fine with splitting the series if that's easiest way to manage it.
Paul, Tero?
Quoted 3 lines
Also, I'm wondering why we still have .clk and .opt_clks entries in the hwmod data for am43xx and omap5 which are both device tree based with all the clocks coming from .dts files?
I think they are needed for the omap_device/hwmod stuff to work. Only omapdss driver knows about the clocks defined in the .dts files, and the omap_device/hwmod code still needs to do the reset and maybe some other tasks that require the clocks.
Tomi
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: OpenPGP digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20140512/b1850739/attachment.sig>
Tony Lindgren
maintainercover ARM: OMAP: OMAP5 & AM43x DSS
Quoted 31 lines · Tomi Valkeinen
Quoted 20 lines · Tony Lindgren
Quoted 11 lines · Tomi Valkeinen
Hi Tony,
Quoted 7 lines · Tomi Valkeinen
Hi,
Here are
arch/arm/patches to add display support for OMAP5 and AM43x.I have these in my tree, in a branch I will send to Tony for merging. Most of these patches have already been around the lists, but I wanted to send them one more time to verify that all looks right and everybody is fine with them.
Quoted 7 lines
I have pushed these to:
git://git.kernel.org/pub/scm/linux/kernel/git/tomba/linux.git3.16/omapIf you're fine with these, I think we can consider that branch stable. There are probably still a few display related .dts changed for the board coming up, but I'll add those on top of the current commits.
Quoted 5 lines
Please coordinate things with Paul and Tero so you at least have proper acks for the hwmod and and clock patches. In general we really want to queue hwmod and clock changes separately as those can easily mess up things in a bad way like we've already seen with overlapping hwmod entries in the .dts files.
Ok. I'm fine with splitting the series if that's easiest way to manage it.
Paul, Tero?
Quoted 8 lines
Quoted 3 lines
Also, I'm wondering why we still have .clk and .opt_clks entries in the hwmod data for am43xx and omap5 which are both device tree based with all the clocks coming from .dts files?
I think they are needed for the omap_device/hwmod stuff to work. Only omapdss driver knows about the clocks defined in the .dts files, and the omap_device/hwmod code still needs to do the reset and maybe some other tasks that require the clocks.
We're already populating the hwmod data from dts entries, that's done by omap_device_build_from_dt. Why aren't we doing that for dt defined clocks?
I'd rather not start adding new data that will then just be removed, that's what people call "pointless extra churn".
Regards,
Tony
cover ARM: OMAP: OMAP5 & AM43x DSS
Quoted 9 lines · Tony Lindgren
Quoted 8 lines
Quoted 3 lines
Also, I'm wondering why we still have .clk and .opt_clks entries in the hwmod data for am43xx and omap5 which are both device tree based with all the clocks coming from .dts files?
I think they are needed for the omap_device/hwmod stuff to work. Only omapdss driver knows about the clocks defined in the .dts files, and the omap_device/hwmod code still needs to do the reset and maybe some other tasks that require the clocks.
Quoted 5 lines
We're already populating the hwmod data from dts entries, that's done by
omap_device_build_from_dt. Why aren't we doing that for dt defined clocks?I'd rather not start adding new data that will then just be removed, that's what people call "pointless extra churn".
I don't know why. I have to say I'm not 100% sure if that's done or not, but at least I can't find where it's done.
Tomi
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: OpenPGP digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20140516/8531d271/attachment.sig>
cover ARM: OMAP: OMAP5 & AM43x DSS
Hi,
Quoted 11 lines · Tomi Valkeinen
Quoted 9 lines · Tony Lindgren
Quoted 8 lines
Quoted 3 lines
Also, I'm wondering why we still have .clk and .opt_clks entries in the hwmod data for am43xx and omap5 which are both device tree based with all the clocks coming from .dts files?
I think they are needed for the omap_device/hwmod stuff to work. Only omapdss driver knows about the clocks defined in the .dts files, and the omap_device/hwmod code still needs to do the reset and maybe some other tasks that require the clocks.
Quoted 8 lines
Quoted 5 lines
We're already populating the hwmod data from dts entries, that's done by
omap_device_build_from_dt. Why aren't we doing that for dt defined clocks?I'd rather not start adding new data that will then just be removed, that's what people call "pointless extra churn".
I don't know why. I have to say I'm not 100% sure if that's done or not, but at least I can't find where it's done.
The reason why clocks are needed from hwmod data is because we still don't populate hwmod fields like main_clk and opt_clock from DT clocks.
The reason why this isn't done yet is because we currently haven't figured out a clean way to tell hwmod what clock is the main_clk, and what clocks are optional clocks.
One of the proposed methods was to assume the clock named to be "fck" as main_clk, and the remaining clocks as optional clocks for hwmod. That method wasn't agreed upon, this looks like the thread which discusses this:
http://marc.info/?l=linux-arm-kernel&m=138928084823142&w=2
Archit
cover ARM: OMAP: OMAP5 & AM43x DSS
Quoted 23 lines · Archit Taneja
Hi,
Quoted 11 lines · Tomi Valkeinen
Quoted 9 lines · Tony Lindgren
Quoted 8 lines
Quoted 3 lines
Also, I'm wondering why we still have .clk and .opt_clks entries in the hwmod data for am43xx and omap5 which are both device tree based with all the clocks coming from .dts files?
I think they are needed for the omap_device/hwmod stuff to work. Only omapdss driver knows about the clocks defined in the .dts files, and the omap_device/hwmod code still needs to do the reset and maybe some other tasks that require the clocks.
Quoted 8 lines
Quoted 5 lines
We're already populating the hwmod data from dts entries, that's done by
omap_device_build_from_dt. Why aren't we doing that for dt defined clocks?I'd rather not start adding new data that will then just be removed, that's what people call "pointless extra churn".
I don't know why. I have to say I'm not 100% sure if that's done or not, but at least I can't find where it's done.
Quoted 7 lines
The reason why clocks are needed from hwmod data is because we still don't populate hwmod fields like
main_clkandopt_clockfrom DT clocks.The reason why this isn't done yet is because we currently haven't figured out a clean way to tell hwmod what clock is the
main_clk, and what clocks are optional clocks.One of the proposed methods was to assume the clock named to be "fck" as
main_clk, and the remaining clocks as optional clocks for hwmod. That method wasn't agreed upon, this looks like the thread which discusses this:
So I started to look through this again and I realized most of the opt clock information
is actually unused within hwmod and does not even need to be there. I just proposed an RFC here to clean some of that [1]
The only modules which do need this seem to be gpio and dss (though we still need to check if all the newer platforms need this, or this is one of those things just carried forward because some old platform had an issue with gpio and dss ocp reset)
As far as DSS is concerned, this is used within the custom reset function (not within hwmod) in display.c in mach-omap2/ Its just that the current code relies on hwmod structures, which can very easily now extract this from DT instead.
That just leaves gpio, which should be the only clock information that will have to exist in hwmod till we figure out how to move it to DT. All the main_clks from hwmod can very easily to moved to DT as already proposed using something like 'fck' to identify them.
[1] http://marc.info/?l=linux-omap&m=140057445618162&w=2
Quoted 4 lines
Archit
cover ARM: OMAP: OMAP5 & AM43x DSS
In reply to Tony LindgrenQuoted 20 lines · Tony Lindgren
Quoted 11 lines · Tomi Valkeinen
Hi Tony,
Quoted 7 lines · Tomi Valkeinen
Hi,
Here are
arch/arm/patches to add display support for OMAP5 and AM43x.I have these in my tree, in a branch I will send to Tony for merging. Most of these patches have already been around the lists, but I wanted to send them one more time to verify that all looks right and everybody is fine with them.
Quoted 7 lines
I have pushed these to:
git://git.kernel.org/pub/scm/linux/kernel/git/tomba/linux.git3.16/omapIf you're fine with these, I think we can consider that branch stable. There are probably still a few display related .dts changed for the board coming up, but I'll add those on top of the current commits.
Quoted 5 lines
Please coordinate things with Paul and Tero so you at least have proper acks for the hwmod and and clock patches. In general we really want to queue hwmod and clock changes separately as those can easily mess up things in a bad way like we've already seen with overlapping hwmod entries in the .dts files.
I don't think the clock dts changes can be separated from the other dts changes, as the new 'dss_l3_iclk' clock node is required by the omap5.dtsi when adding the DSS support.
The HWMOD patches can go separately.
Tomi
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: OpenPGP digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20140516/6e0779cc/attachment.sig>