Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1343534 > unrolled thread
| Started by | Franklin S Cooper Jr <fcooper@ti.com> |
|---|---|
| First post | 2016-02-25 23:40 +0100 |
| Last post | 2016-03-03 00:00 +0100 |
| Articles | 20 on this page of 33 — 7 participants |
Back to article view | Back to linux.kernel
[PATCH v3 0/5] Add support for PWMSS on DRA7 Franklin S Cooper Jr <fcooper@ti.com> - 2016-02-25 23:40 +0100
[PATCH v3 3/5] ARM: dts: DRA7: Add TBCLK for PWMSS Franklin S Cooper Jr <fcooper@ti.com> - 2016-02-25 23:40 +0100
Re: [PATCH v3 3/5] ARM: dts: DRA7: Add TBCLK for PWMSS Tony Lindgren <tony@atomide.com> - 2016-03-01 00:30 +0100
Re: [PATCH v3 3/5] ARM: dts: DRA7: Add TBCLK for PWMSS Tero Kristo <t-kristo@ti.com> - 2016-03-01 14:00 +0100
Re: [PATCH v3 3/5] ARM: dts: DRA7: Add TBCLK for PWMSS Tony Lindgren <tony@atomide.com> - 2016-03-01 19:10 +0100
[PATCH v3 2/5] ARM: OMAP2+: DRA7: Add hwmod entries for PWMSS Franklin S Cooper Jr <fcooper@ti.com> - 2016-02-25 23:40 +0100
Re: [PATCH v3 2/5] ARM: OMAP2+: DRA7: Add hwmod entries for PWMSS Paul Walmsley <paul@pwsan.com> - 2016-03-01 19:10 +0100
Re: [PATCH v3 2/5] ARM: OMAP2+: DRA7: Add hwmod entries for PWMSS Tony Lindgren <tony@atomide.com> - 2016-03-01 19:20 +0100
Re: [PATCH v3 2/5] ARM: OMAP2+: DRA7: Add hwmod entries for PWMSS Paul Walmsley <paul@pwsan.com> - 2016-03-01 20:00 +0100
Re: [PATCH v3 2/5] ARM: OMAP2+: DRA7: Add hwmod entries for PWMSS Tony Lindgren <tony@atomide.com> - 2016-03-01 22:00 +0100
Re: [PATCH v3 2/5] ARM: OMAP2+: DRA7: Add hwmod entries for PWMSS "Franklin S Cooper Jr." <fcooper@ti.com> - 2016-03-02 17:30 +0100
Re: [PATCH v3 2/5] ARM: OMAP2+: DRA7: Add hwmod entries for PWMSS "Franklin S Cooper Jr." <fcooper@ti.com> - 2016-03-04 03:10 +0100
Re: [PATCH v3 2/5] ARM: OMAP2+: DRA7: Add hwmod entries for PWMSS Paul Walmsley <paul@pwsan.com> - 2016-03-04 07:30 +0100
[PATCH v3 4/5] clk: ti: DRA7: Add tbclk data for ehrpwm Franklin S Cooper Jr <fcooper@ti.com> - 2016-02-25 23:40 +0100
Re: [PATCH v3 4/5] clk: ti: DRA7: Add tbclk data for ehrpwm Tony Lindgren <tony@atomide.com> - 2016-02-26 20:20 +0100
Re: [PATCH v3 4/5] clk: ti: DRA7: Add tbclk data for ehrpwm Tony Lindgren <tony@atomide.com> - 2016-02-26 20:20 +0100
[PATCH v3 5/5] ARM: dts: DRA7: Add dt nodes for PWMSS Franklin S Cooper Jr <fcooper@ti.com> - 2016-02-25 23:40 +0100
Re: [PATCH v3 5/5] ARM: dts: DRA7: Add dt nodes for PWMSS Tony Lindgren <tony@atomide.com> - 2016-02-26 20:20 +0100
Re: [PATCH v3 5/5] ARM: dts: DRA7: Add dt nodes for PWMSS Franklin S Cooper Jr <fcooper@ti.com> - 2016-02-26 20:50 +0100
Re: [PATCH v3 5/5] ARM: dts: DRA7: Add dt nodes for PWMSS Tony Lindgren <tony@atomide.com> - 2016-03-01 00:30 +0100
Re: [PATCH v3 5/5] ARM: dts: DRA7: Add dt nodes for PWMSS Tony Lindgren <tony@atomide.com> - 2016-03-01 22:10 +0100
Re: [PATCH v3 5/5] ARM: dts: DRA7: Add dt nodes for PWMSS Rob Herring <robh@kernel.org> - 2016-03-02 19:30 +0100
Re: [PATCH v3 5/5] ARM: dts: DRA7: Add dt nodes for PWMSS "Franklin S Cooper Jr." <fcooper@ti.com> - 2016-03-04 02:50 +0100
[PATCH v3 1/5] pwms: pwm-ti*: Remove support for local clock gating Franklin S Cooper Jr <fcooper@ti.com> - 2016-02-25 23:40 +0100
Re: [PATCH v3 1/5] pwms: pwm-ti*: Remove support for local clock gating Sekhar Nori <nsekhar@ti.com> - 2016-02-26 11:30 +0100
Re: [PATCH v3 1/5] pwms: pwm-ti*: Remove support for local clock gating Tony Lindgren <tony@atomide.com> - 2016-02-26 20:20 +0100
Re: [PATCH v3 1/5] pwms: pwm-ti*: Remove support for local clock gating Tony Lindgren <tony@atomide.com> - 2016-02-29 23:10 +0100
Re: [PATCH v3 1/5] pwms: pwm-ti*: Remove support for local clock gating "Franklin S Cooper Jr." <fcooper@ti.com> - 2016-02-29 23:40 +0100
Re: [PATCH v3 1/5] pwms: pwm-ti*: Remove support for local clock gating Tony Lindgren <tony@atomide.com> - 2016-03-01 00:00 +0100
Re: [PATCH v3 1/5] pwms: pwm-ti*: Remove support for local clock gating "Franklin S Cooper Jr." <fcooper@ti.com> - 2016-03-01 00:20 +0100
Re: [PATCH v3 1/5] pwms: pwm-ti*: Remove support for local clock gating Tony Lindgren <tony@atomide.com> - 2016-03-01 00:30 +0100
Re: [PATCH v3 1/5] pwms: pwm-ti*: Remove support for local clock gating "Franklin S Cooper Jr." <fcooper@ti.com> - 2016-03-02 20:50 +0100
Re: [PATCH v3 1/5] pwms: pwm-ti*: Remove support for local clock gating Tony Lindgren <tony@atomide.com> - 2016-03-03 00:00 +0100
Page 1 of 2 [1] 2 Next page →
| From | Franklin S Cooper Jr <fcooper@ti.com> |
|---|---|
| Date | 2016-02-25 23:40 +0100 |
| Subject | [PATCH v3 0/5] Add support for PWMSS on DRA7 |
| Message-ID | <r6cJH-27E-1@gated-at.bofh.it> |
This patch series adds support for PWMSS on DRA7. The IP is same as that present in AM33XX and AM43XX. This is an updated version of the patch series originally sent by Vignesh. The biggest difference is the removal of local clock gating support from various drivers due to silicon issue. Links to v2 series: https://patchwork.ozlabs.org/patch/479933/ (already in mainline) https://patchwork.ozlabs.org/patch/479932/ https://patchwork.ozlabs.org/patch/479931/ https://patchwork.ozlabs.org/patch/479930/ https://patchwork.ozlabs.org/patch/479929/ Franklin S Cooper Jr (1): pwms: pwm-ti*: Remove support for local clock gating Vignesh R (4): ARM: OMAP2+: DRA7: Add hwmod entries for PWMSS ARM: dts: DRA7: Add TBCLK for PWMSS clk: ti: DRA7: Add tbclk data for ehrpwm ARM: dts: DRA7: Add dt nodes for PWMSS .../devicetree/bindings/pwm/pwm-tiehrpwm.txt | 8 + .../devicetree/bindings/pwm/pwm-tipwmss.txt | 17 +- arch/arm/boot/dts/dra7.dtsi | 64 ++++++ arch/arm/boot/dts/dra7xx-clocks.dtsi | 24 +++ arch/arm/mach-omap2/omap_hwmod_7xx_data.c | 239 +++++++++++++++++++++ drivers/clk/ti/clk-7xx.c | 3 + drivers/pwm/pwm-tiecap.c | 28 --- drivers/pwm/pwm-tiehrpwm.c | 29 --- drivers/pwm/pwm-tipwmss.c | 49 ----- drivers/pwm/pwm-tipwmss.h | 39 ---- 10 files changed, 354 insertions(+), 146 deletions(-) delete mode 100644 drivers/pwm/pwm-tipwmss.h -- 2.7.0
[toc] | [next] | [standalone]
| From | Franklin S Cooper Jr <fcooper@ti.com> |
|---|---|
| Date | 2016-02-25 23:40 +0100 |
| Subject | [PATCH v3 3/5] ARM: dts: DRA7: Add TBCLK for PWMSS |
| Message-ID | <r6cJI-27E-3@gated-at.bofh.it> |
| In reply to | #1343534 |
From: Vignesh R <vigneshr@ti.com>
tbclk is used by ehrpwm to generate PWM waveform on DRA7 SoC. Add Linux
clock to control ehrpwm tbclk.
The TRM says, tbclk is derived from SYSCLKOUT. SYSCLKOUT is nothing but
ehrpwm functional clock derived from the gateable interface and
functional clock of PWMSS(l4_root_clk_div).
Refer AM57x TRM SPRUHZ6[1], October 2014, Table 29-4 and Section 29.2.2.1,
Table 29-19 and the NOTE at the end of the table.
[1] www.ti.com/lit/ug/spruhz6/spruhz6.pdf
Signed-off-by: Vignesh R <vigneshr@ti.com>
---
Version 3 changes:
None
arch/arm/boot/dts/dra7xx-clocks.dtsi | 24 ++++++++++++++++++++++++
1 file changed, 24 insertions(+)
diff --git a/arch/arm/boot/dts/dra7xx-clocks.dtsi b/arch/arm/boot/dts/dra7xx-clocks.dtsi
index 357bede..d0bae06 100644
--- a/arch/arm/boot/dts/dra7xx-clocks.dtsi
+++ b/arch/arm/boot/dts/dra7xx-clocks.dtsi
@@ -2146,4 +2146,28 @@
ti,bit-shift = <0>;
reg = <0x558>;
};
+
+ ehrpwm0_tbclk: ehrpwm0_tbclk {
+ #clock-cells = <0>;
+ compatible = "ti,gate-clock";
+ clocks = <&l4_root_clk_div>;
+ ti,bit-shift = <20>;
+ reg = <0x0558>;
+ };
+
+ ehrpwm1_tbclk: ehrpwm1_tbclk {
+ #clock-cells = <0>;
+ compatible = "ti,gate-clock";
+ clocks = <&l4_root_clk_div>;
+ ti,bit-shift = <21>;
+ reg = <0x0558>;
+ };
+
+ ehrpwm2_tbclk: ehrpwm2_tbclk {
+ #clock-cells = <0>;
+ compatible = "ti,gate-clock";
+ clocks = <&l4_root_clk_div>;
+ ti,bit-shift = <22>;
+ reg = <0x0558>;
+ };
};
--
2.7.0
[toc] | [prev] | [next] | [standalone]
| From | Tony Lindgren <tony@atomide.com> |
|---|---|
| Date | 2016-03-01 00:30 +0100 |
| Subject | Re: [PATCH v3 3/5] ARM: dts: DRA7: Add TBCLK for PWMSS |
| Message-ID | <r7Fqi-18H-23@gated-at.bofh.it> |
| In reply to | #1343535 |
* Franklin S Cooper Jr <fcooper@ti.com> [160225 14:37]:
> From: Vignesh R <vigneshr@ti.com>
>
> tbclk is used by ehrpwm to generate PWM waveform on DRA7 SoC. Add Linux
> clock to control ehrpwm tbclk.
> The TRM says, tbclk is derived from SYSCLKOUT. SYSCLKOUT is nothing but
> ehrpwm functional clock derived from the gateable interface and
> functional clock of PWMSS(l4_root_clk_div).
> Refer AM57x TRM SPRUHZ6[1], October 2014, Table 29-4 and Section 29.2.2.1,
> Table 29-19 and the NOTE at the end of the table.
>
> [1] www.ti.com/lit/ug/spruhz6/spruhz6.pdf
Applying this into omap-for-v4.6/dt thanks.
Note for Tero, let's plan on getting rid of the duplicate
reg entries by using the standard clock output offset within
the clock register. I think we should easily be able to add
a binding for this and then deprecate the overlapping reg
entries.
Regards,
Tony
> --- a/arch/arm/boot/dts/dra7xx-clocks.dtsi
> +++ b/arch/arm/boot/dts/dra7xx-clocks.dtsi
> @@ -2146,4 +2146,28 @@
> ti,bit-shift = <0>;
> reg = <0x558>;
> };
> +
> + ehrpwm0_tbclk: ehrpwm0_tbclk {
> + #clock-cells = <0>;
> + compatible = "ti,gate-clock";
> + clocks = <&l4_root_clk_div>;
> + ti,bit-shift = <20>;
> + reg = <0x0558>;
> + };
> +
> + ehrpwm1_tbclk: ehrpwm1_tbclk {
> + #clock-cells = <0>;
> + compatible = "ti,gate-clock";
> + clocks = <&l4_root_clk_div>;
> + ti,bit-shift = <21>;
> + reg = <0x0558>;
> + };
> +
> + ehrpwm2_tbclk: ehrpwm2_tbclk {
> + #clock-cells = <0>;
> + compatible = "ti,gate-clock";
> + clocks = <&l4_root_clk_div>;
> + ti,bit-shift = <22>;
> + reg = <0x0558>;
> + };
> };
> --
> 2.7.0
>
[toc] | [prev] | [next] | [standalone]
| From | Tero Kristo <t-kristo@ti.com> |
|---|---|
| Date | 2016-03-01 14:00 +0100 |
| Subject | Re: [PATCH v3 3/5] ARM: dts: DRA7: Add TBCLK for PWMSS |
| Message-ID | <r7S4b-Pg-45@gated-at.bofh.it> |
| In reply to | #1346249 |
On 03/01/2016 01:23 AM, Tony Lindgren wrote:
> * Franklin S Cooper Jr <fcooper@ti.com> [160225 14:37]:
>> From: Vignesh R <vigneshr@ti.com>
>>
>> tbclk is used by ehrpwm to generate PWM waveform on DRA7 SoC. Add Linux
>> clock to control ehrpwm tbclk.
>> The TRM says, tbclk is derived from SYSCLKOUT. SYSCLKOUT is nothing but
>> ehrpwm functional clock derived from the gateable interface and
>> functional clock of PWMSS(l4_root_clk_div).
>> Refer AM57x TRM SPRUHZ6[1], October 2014, Table 29-4 and Section 29.2.2.1,
>> Table 29-19 and the NOTE at the end of the table.
>>
>> [1] www.ti.com/lit/ug/spruhz6/spruhz6.pdf
>
> Applying this into omap-for-v4.6/dt thanks.
>
> Note for Tero, let's plan on getting rid of the duplicate
> reg entries by using the standard clock output offset within
> the clock register. I think we should easily be able to add
> a binding for this and then deprecate the overlapping reg
> entries.
Yeah, we have been discussing this offline a bit, but haven't had time
to look at this. I believe the hwmod clock conversion is of higher
priority still.
-Tero
>
> Regards,
>
> Tony
>
>> --- a/arch/arm/boot/dts/dra7xx-clocks.dtsi
>> +++ b/arch/arm/boot/dts/dra7xx-clocks.dtsi
>> @@ -2146,4 +2146,28 @@
>> ti,bit-shift = <0>;
>> reg = <0x558>;
>> };
>> +
>> + ehrpwm0_tbclk: ehrpwm0_tbclk {
>> + #clock-cells = <0>;
>> + compatible = "ti,gate-clock";
>> + clocks = <&l4_root_clk_div>;
>> + ti,bit-shift = <20>;
>> + reg = <0x0558>;
>> + };
>> +
>> + ehrpwm1_tbclk: ehrpwm1_tbclk {
>> + #clock-cells = <0>;
>> + compatible = "ti,gate-clock";
>> + clocks = <&l4_root_clk_div>;
>> + ti,bit-shift = <21>;
>> + reg = <0x0558>;
>> + };
>> +
>> + ehrpwm2_tbclk: ehrpwm2_tbclk {
>> + #clock-cells = <0>;
>> + compatible = "ti,gate-clock";
>> + clocks = <&l4_root_clk_div>;
>> + ti,bit-shift = <22>;
>> + reg = <0x0558>;
>> + };
>> };
>> --
>> 2.7.0
>>
[toc] | [prev] | [next] | [standalone]
| From | Tony Lindgren <tony@atomide.com> |
|---|---|
| Date | 2016-03-01 19:10 +0100 |
| Subject | Re: [PATCH v3 3/5] ARM: dts: DRA7: Add TBCLK for PWMSS |
| Message-ID | <r7WU9-4cC-7@gated-at.bofh.it> |
| In reply to | #1346596 |
* Tero Kristo <t-kristo@ti.com> [160301 04:54]: > On 03/01/2016 01:23 AM, Tony Lindgren wrote: > > > >Note for Tero, let's plan on getting rid of the duplicate > >reg entries by using the standard clock output offset within > >the clock register. I think we should easily be able to add > >a binding for this and then deprecate the overlapping reg > >entries. > > Yeah, we have been discussing this offline a bit, but haven't had time to > look at this. I believe the hwmod clock conversion is of higher priority > still. Yes agreed. Tony
[toc] | [prev] | [next] | [standalone]
| From | Franklin S Cooper Jr <fcooper@ti.com> |
|---|---|
| Date | 2016-02-25 23:40 +0100 |
| Subject | [PATCH v3 2/5] ARM: OMAP2+: DRA7: Add hwmod entries for PWMSS |
| Message-ID | <r6cJI-27E-13@gated-at.bofh.it> |
| In reply to | #1343534 |
From: Vignesh R <vigneshr@ti.com>
Add hwmod entries for the PWMSS on DRA7.
Set l4_root_clk_div as the main_clk of PWMSS. It is fixed-factored clock
equal to L4PER2_L3_GICLK/2(l3_iclk_div/2).
As per AM57x TRM SPRUHZ6[1], October 2014, Section 29.1.3 Table 29-4,
clock source to PWMSS is L4PER2_L3_GICLK. But it is actually
L4PER2_L3_GICLK/2. The TRM does not show the division by 2.
[1] www.ti.com/lit/ug/spruhz6/spruhz6.pdf
Signed-off-by: Vignesh R <vigneshr@ti.com>
---
Version 3 changes:
Switch from SYSC_HAS_RESET_STATUS to SYSC_HAS_SOFTRESET which is the
correct bitfield for that register.
arch/arm/mach-omap2/omap_hwmod_7xx_data.c | 239 ++++++++++++++++++++++++++++++
1 file changed, 239 insertions(+)
diff --git a/arch/arm/mach-omap2/omap_hwmod_7xx_data.c b/arch/arm/mach-omap2/omap_hwmod_7xx_data.c
index 848356e..4b2d68b 100644
--- a/arch/arm/mach-omap2/omap_hwmod_7xx_data.c
+++ b/arch/arm/mach-omap2/omap_hwmod_7xx_data.c
@@ -383,6 +383,149 @@ static struct omap_hwmod dra7xx_dcan2_hwmod = {
},
};
+/* pwmss */
+static struct omap_hwmod_class_sysconfig dra7xx_epwmss_sysc = {
+ .rev_offs = 0x0,
+ .sysc_offs = 0x4,
+ .sysc_flags = SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET,
+ .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
+ .sysc_fields = &omap_hwmod_sysc_type2,
+};
+
+struct omap_hwmod_class dra7xx_epwmss_hwmod_class = {
+ .name = "epwmss",
+ .sysc = &dra7xx_epwmss_sysc,
+};
+
+static struct omap_hwmod_class dra7xx_ecap_hwmod_class = {
+ .name = "ecap",
+};
+
+static struct omap_hwmod_class dra7xx_eqep_hwmod_class = {
+ .name = "eqep",
+};
+
+struct omap_hwmod_class dra7xx_ehrpwm_hwmod_class = {
+ .name = "ehrpwm",
+};
+
+/* epwmss0 */
+struct omap_hwmod dra7xx_epwmss0_hwmod = {
+ .name = "epwmss0",
+ .class = &dra7xx_epwmss_hwmod_class,
+ .clkdm_name = "l4per2_clkdm",
+ .main_clk = "l4_root_clk_div",
+ .prcm = {
+ .omap4 = {
+ .modulemode = MODULEMODE_SWCTRL,
+ .clkctrl_offs = DRA7XX_CM_L4PER2_PWMSS1_CLKCTRL_OFFSET,
+ .context_offs = DRA7XX_RM_L4PER2_PWMSS1_CONTEXT_OFFSET,
+ },
+ },
+};
+
+/* ecap0 */
+struct omap_hwmod dra7xx_ecap0_hwmod = {
+ .name = "ecap0",
+ .class = &dra7xx_ecap_hwmod_class,
+ .clkdm_name = "l4per2_clkdm",
+ .main_clk = "l4_root_clk_div",
+};
+
+/* eqep0 */
+struct omap_hwmod dra7xx_eqep0_hwmod = {
+ .name = "eqep0",
+ .class = &dra7xx_eqep_hwmod_class,
+ .clkdm_name = "l4per2_clkdm",
+ .main_clk = "l4_root_clk_div",
+};
+
+/* ehrpwm0 */
+struct omap_hwmod dra7xx_ehrpwm0_hwmod = {
+ .name = "ehrpwm0",
+ .class = &dra7xx_ehrpwm_hwmod_class,
+ .clkdm_name = "l4per2_clkdm",
+ .main_clk = "l4_root_clk_div",
+};
+
+/* epwmss1 */
+struct omap_hwmod dra7xx_epwmss1_hwmod = {
+ .name = "epwmss1",
+ .class = &dra7xx_epwmss_hwmod_class,
+ .clkdm_name = "l4per2_clkdm",
+ .main_clk = "l4_root_clk_div",
+ .prcm = {
+ .omap4 = {
+ .modulemode = MODULEMODE_SWCTRL,
+ .clkctrl_offs = DRA7XX_CM_L4PER2_PWMSS2_CLKCTRL_OFFSET,
+ .context_offs = DRA7XX_RM_L4PER2_PWMSS2_CONTEXT_OFFSET,
+ },
+ },
+};
+
+/* ecap1 */
+struct omap_hwmod dra7xx_ecap1_hwmod = {
+ .name = "ecap1",
+ .class = &dra7xx_ecap_hwmod_class,
+ .clkdm_name = "l4per2_clkdm",
+ .main_clk = "l4_root_clk_div",
+};
+
+/* eqep1 */
+struct omap_hwmod dra7xx_eqep1_hwmod = {
+ .name = "eqep1",
+ .class = &dra7xx_eqep_hwmod_class,
+ .clkdm_name = "l4per2_clkdm",
+ .main_clk = "l4_root_clk_div",
+};
+
+/* ehrpwm1 */
+struct omap_hwmod dra7xx_ehrpwm1_hwmod = {
+ .name = "ehrpwm1",
+ .class = &dra7xx_ehrpwm_hwmod_class,
+ .clkdm_name = "l4per2_clkdm",
+ .main_clk = "l4_root_clk_div",
+};
+
+/* epwmss2 */
+struct omap_hwmod dra7xx_epwmss2_hwmod = {
+ .name = "epwmss2",
+ .class = &dra7xx_epwmss_hwmod_class,
+ .clkdm_name = "l4per2_clkdm",
+ .main_clk = "l4_root_clk_div",
+ .prcm = {
+ .omap4 = {
+ .modulemode = MODULEMODE_SWCTRL,
+ .clkctrl_offs = DRA7XX_CM_L4PER2_PWMSS3_CLKCTRL_OFFSET,
+ .context_offs = DRA7XX_RM_L4PER2_PWMSS3_CONTEXT_OFFSET,
+ },
+ },
+};
+
+/* ecap2 */
+struct omap_hwmod dra7xx_ecap2_hwmod = {
+ .name = "ecap2",
+ .class = &dra7xx_ecap_hwmod_class,
+ .clkdm_name = "l4per2_clkdm",
+ .main_clk = "l4_root_clk_div",
+};
+
+/* eqep2 */
+struct omap_hwmod dra7xx_eqep2_hwmod = {
+ .name = "eqep2",
+ .class = &dra7xx_eqep_hwmod_class,
+ .clkdm_name = "l4per2_clkdm",
+ .main_clk = "l4_root_clk_div",
+};
+
+/* ehrpwm2 */
+struct omap_hwmod dra7xx_ehrpwm2_hwmod = {
+ .name = "ehrpwm2",
+ .class = &dra7xx_ehrpwm_hwmod_class,
+ .clkdm_name = "l4per2_clkdm",
+ .main_clk = "l4_root_clk_div",
+};
+
/*
* 'dma' class
*
@@ -2676,6 +2819,90 @@ static struct omap_hwmod_ocp_if dra7xx_l4_per1__gpio6 = {
.user = OCP_USER_MPU | OCP_USER_SDMA,
};
+struct omap_hwmod_ocp_if dra7xx_l4_per2__epwmss0 = {
+ .master = &dra7xx_l4_per2_hwmod,
+ .slave = &dra7xx_epwmss0_hwmod,
+ .clk = "l4_root_clk_div",
+ .user = OCP_USER_MPU,
+};
+
+struct omap_hwmod_ocp_if dra7xx_epwmss0__ecap0 = {
+ .master = &dra7xx_epwmss0_hwmod,
+ .slave = &dra7xx_ecap0_hwmod,
+ .clk = "l4_root_clk_div",
+ .user = OCP_USER_MPU,
+};
+
+struct omap_hwmod_ocp_if dra7xx_epwmss0__eqep0 = {
+ .master = &dra7xx_epwmss0_hwmod,
+ .slave = &dra7xx_eqep0_hwmod,
+ .clk = "l4_root_clk_div",
+ .user = OCP_USER_MPU,
+};
+
+struct omap_hwmod_ocp_if dra7xx_epwmss0__ehrpwm0 = {
+ .master = &dra7xx_epwmss0_hwmod,
+ .slave = &dra7xx_ehrpwm0_hwmod,
+ .clk = "l4_root_clk_div",
+ .user = OCP_USER_MPU,
+};
+
+struct omap_hwmod_ocp_if dra7xx_l4_per2__epwmss1 = {
+ .master = &dra7xx_l4_per2_hwmod,
+ .slave = &dra7xx_epwmss1_hwmod,
+ .clk = "l4_root_clk_div",
+ .user = OCP_USER_MPU,
+};
+
+struct omap_hwmod_ocp_if dra7xx_epwmss1__ecap1 = {
+ .master = &dra7xx_epwmss1_hwmod,
+ .slave = &dra7xx_ecap1_hwmod,
+ .clk = "l4_root_clk_div",
+ .user = OCP_USER_MPU,
+};
+
+struct omap_hwmod_ocp_if dra7xx_epwmss1__eqep1 = {
+ .master = &dra7xx_epwmss1_hwmod,
+ .slave = &dra7xx_eqep1_hwmod,
+ .clk = "l4_root_clk_div",
+ .user = OCP_USER_MPU,
+};
+
+struct omap_hwmod_ocp_if dra7xx_epwmss1__ehrpwm1 = {
+ .master = &dra7xx_epwmss1_hwmod,
+ .slave = &dra7xx_ehrpwm1_hwmod,
+ .clk = "l4_root_clk_div",
+ .user = OCP_USER_MPU,
+};
+
+struct omap_hwmod_ocp_if dra7xx_l4_per2__epwmss2 = {
+ .master = &dra7xx_l4_per2_hwmod,
+ .slave = &dra7xx_epwmss2_hwmod,
+ .clk = "l4_root_clk_div",
+ .user = OCP_USER_MPU,
+};
+
+struct omap_hwmod_ocp_if dra7xx_epwmss2__ecap2 = {
+ .master = &dra7xx_epwmss2_hwmod,
+ .slave = &dra7xx_ecap2_hwmod,
+ .clk = "l4_root_clk_div",
+ .user = OCP_USER_MPU,
+};
+
+struct omap_hwmod_ocp_if dra7xx_epwmss2__eqep2 = {
+ .master = &dra7xx_epwmss2_hwmod,
+ .slave = &dra7xx_eqep2_hwmod,
+ .clk = "l4_root_clk_div",
+ .user = OCP_USER_MPU,
+};
+
+struct omap_hwmod_ocp_if dra7xx_epwmss2__ehrpwm2 = {
+ .master = &dra7xx_epwmss2_hwmod,
+ .slave = &dra7xx_ehrpwm2_hwmod,
+ .clk = "l4_root_clk_div",
+ .user = OCP_USER_MPU,
+};
+
/* l4_per1 -> gpio7 */
static struct omap_hwmod_ocp_if dra7xx_l4_per1__gpio7 = {
.master = &dra7xx_l4_per1_hwmod,
@@ -3452,6 +3679,18 @@ static struct omap_hwmod_ocp_if *dra7xx_hwmod_ocp_ifs[] __initdata = {
&dra7xx_l3_main_1__vcp2,
&dra7xx_l4_per2__vcp2,
&dra7xx_l4_wkup__wd_timer2,
+ &dra7xx_l4_per2__epwmss0,
+ &dra7xx_epwmss0__ecap0,
+ &dra7xx_epwmss0__eqep0,
+ &dra7xx_epwmss0__ehrpwm0,
+ &dra7xx_l4_per2__epwmss1,
+ &dra7xx_epwmss1__ecap1,
+ &dra7xx_epwmss1__eqep1,
+ &dra7xx_epwmss1__ehrpwm1,
+ &dra7xx_l4_per2__epwmss2,
+ &dra7xx_epwmss2__ecap2,
+ &dra7xx_epwmss2__eqep2,
+ &dra7xx_epwmss2__ehrpwm2,
NULL,
};
--
2.7.0
[toc] | [prev] | [next] | [standalone]
| From | Paul Walmsley <paul@pwsan.com> |
|---|---|
| Date | 2016-03-01 19:10 +0100 |
| Subject | Re: [PATCH v3 2/5] ARM: OMAP2+: DRA7: Add hwmod entries for PWMSS |
| Message-ID | <r7WUb-4cC-17@gated-at.bofh.it> |
| In reply to | #1343539 |
Hi guys
On Thu, 25 Feb 2016, Franklin S Cooper Jr wrote:
> From: Vignesh R <vigneshr@ti.com>
>
> Add hwmod entries for the PWMSS on DRA7.
>
> Set l4_root_clk_div as the main_clk of PWMSS. It is fixed-factored clock
> equal to L4PER2_L3_GICLK/2(l3_iclk_div/2).
> As per AM57x TRM SPRUHZ6[1], October 2014, Section 29.1.3 Table 29-4,
> clock source to PWMSS is L4PER2_L3_GICLK. But it is actually
> L4PER2_L3_GICLK/2. The TRM does not show the division by 2.
>
> [1] www.ti.com/lit/ug/spruhz6/spruhz6.pdf
>
> Signed-off-by: Vignesh R <vigneshr@ti.com>
So I still don't understand one thing about this patch, and I apologize if
this has been covered already and I've just forgotten it. Why are EQEP,
ECAP, EHRPWM listed as hwmods? It looks, based on this data, that they
don't have any of the Highlander integration. Shouldn't these just be
listed in a DT 'simple-bus' type of arrangement under epwmss0, epwmss1?
Or am I missing something?
- Paul
> ---
> Version 3 changes:
> Switch from SYSC_HAS_RESET_STATUS to SYSC_HAS_SOFTRESET which is the
> correct bitfield for that register.
>
> arch/arm/mach-omap2/omap_hwmod_7xx_data.c | 239 ++++++++++++++++++++++++++++++
> 1 file changed, 239 insertions(+)
>
> diff --git a/arch/arm/mach-omap2/omap_hwmod_7xx_data.c b/arch/arm/mach-omap2/omap_hwmod_7xx_data.c
> index 848356e..4b2d68b 100644
> --- a/arch/arm/mach-omap2/omap_hwmod_7xx_data.c
> +++ b/arch/arm/mach-omap2/omap_hwmod_7xx_data.c
> @@ -383,6 +383,149 @@ static struct omap_hwmod dra7xx_dcan2_hwmod = {
> },
> };
>
> +/* pwmss */
> +static struct omap_hwmod_class_sysconfig dra7xx_epwmss_sysc = {
> + .rev_offs = 0x0,
> + .sysc_offs = 0x4,
> + .sysc_flags = SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET,
> + .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
> + .sysc_fields = &omap_hwmod_sysc_type2,
> +};
> +
> +struct omap_hwmod_class dra7xx_epwmss_hwmod_class = {
> + .name = "epwmss",
> + .sysc = &dra7xx_epwmss_sysc,
> +};
> +
> +static struct omap_hwmod_class dra7xx_ecap_hwmod_class = {
> + .name = "ecap",
> +};
> +
> +static struct omap_hwmod_class dra7xx_eqep_hwmod_class = {
> + .name = "eqep",
> +};
> +
> +struct omap_hwmod_class dra7xx_ehrpwm_hwmod_class = {
> + .name = "ehrpwm",
> +};
> +
> +/* epwmss0 */
> +struct omap_hwmod dra7xx_epwmss0_hwmod = {
> + .name = "epwmss0",
> + .class = &dra7xx_epwmss_hwmod_class,
> + .clkdm_name = "l4per2_clkdm",
> + .main_clk = "l4_root_clk_div",
> + .prcm = {
> + .omap4 = {
> + .modulemode = MODULEMODE_SWCTRL,
> + .clkctrl_offs = DRA7XX_CM_L4PER2_PWMSS1_CLKCTRL_OFFSET,
> + .context_offs = DRA7XX_RM_L4PER2_PWMSS1_CONTEXT_OFFSET,
> + },
> + },
> +};
> +
> +/* ecap0 */
> +struct omap_hwmod dra7xx_ecap0_hwmod = {
> + .name = "ecap0",
> + .class = &dra7xx_ecap_hwmod_class,
> + .clkdm_name = "l4per2_clkdm",
> + .main_clk = "l4_root_clk_div",
> +};
> +
> +/* eqep0 */
> +struct omap_hwmod dra7xx_eqep0_hwmod = {
> + .name = "eqep0",
> + .class = &dra7xx_eqep_hwmod_class,
> + .clkdm_name = "l4per2_clkdm",
> + .main_clk = "l4_root_clk_div",
> +};
> +
> +/* ehrpwm0 */
> +struct omap_hwmod dra7xx_ehrpwm0_hwmod = {
> + .name = "ehrpwm0",
> + .class = &dra7xx_ehrpwm_hwmod_class,
> + .clkdm_name = "l4per2_clkdm",
> + .main_clk = "l4_root_clk_div",
> +};
> +
> +/* epwmss1 */
> +struct omap_hwmod dra7xx_epwmss1_hwmod = {
> + .name = "epwmss1",
> + .class = &dra7xx_epwmss_hwmod_class,
> + .clkdm_name = "l4per2_clkdm",
> + .main_clk = "l4_root_clk_div",
> + .prcm = {
> + .omap4 = {
> + .modulemode = MODULEMODE_SWCTRL,
> + .clkctrl_offs = DRA7XX_CM_L4PER2_PWMSS2_CLKCTRL_OFFSET,
> + .context_offs = DRA7XX_RM_L4PER2_PWMSS2_CONTEXT_OFFSET,
> + },
> + },
> +};
> +
> +/* ecap1 */
> +struct omap_hwmod dra7xx_ecap1_hwmod = {
> + .name = "ecap1",
> + .class = &dra7xx_ecap_hwmod_class,
> + .clkdm_name = "l4per2_clkdm",
> + .main_clk = "l4_root_clk_div",
> +};
> +
> +/* eqep1 */
> +struct omap_hwmod dra7xx_eqep1_hwmod = {
> + .name = "eqep1",
> + .class = &dra7xx_eqep_hwmod_class,
> + .clkdm_name = "l4per2_clkdm",
> + .main_clk = "l4_root_clk_div",
> +};
> +
> +/* ehrpwm1 */
> +struct omap_hwmod dra7xx_ehrpwm1_hwmod = {
> + .name = "ehrpwm1",
> + .class = &dra7xx_ehrpwm_hwmod_class,
> + .clkdm_name = "l4per2_clkdm",
> + .main_clk = "l4_root_clk_div",
> +};
> +
> +/* epwmss2 */
> +struct omap_hwmod dra7xx_epwmss2_hwmod = {
> + .name = "epwmss2",
> + .class = &dra7xx_epwmss_hwmod_class,
> + .clkdm_name = "l4per2_clkdm",
> + .main_clk = "l4_root_clk_div",
> + .prcm = {
> + .omap4 = {
> + .modulemode = MODULEMODE_SWCTRL,
> + .clkctrl_offs = DRA7XX_CM_L4PER2_PWMSS3_CLKCTRL_OFFSET,
> + .context_offs = DRA7XX_RM_L4PER2_PWMSS3_CONTEXT_OFFSET,
> + },
> + },
> +};
> +
> +/* ecap2 */
> +struct omap_hwmod dra7xx_ecap2_hwmod = {
> + .name = "ecap2",
> + .class = &dra7xx_ecap_hwmod_class,
> + .clkdm_name = "l4per2_clkdm",
> + .main_clk = "l4_root_clk_div",
> +};
> +
> +/* eqep2 */
> +struct omap_hwmod dra7xx_eqep2_hwmod = {
> + .name = "eqep2",
> + .class = &dra7xx_eqep_hwmod_class,
> + .clkdm_name = "l4per2_clkdm",
> + .main_clk = "l4_root_clk_div",
> +};
> +
> +/* ehrpwm2 */
> +struct omap_hwmod dra7xx_ehrpwm2_hwmod = {
> + .name = "ehrpwm2",
> + .class = &dra7xx_ehrpwm_hwmod_class,
> + .clkdm_name = "l4per2_clkdm",
> + .main_clk = "l4_root_clk_div",
> +};
> +
> /*
> * 'dma' class
> *
> @@ -2676,6 +2819,90 @@ static struct omap_hwmod_ocp_if dra7xx_l4_per1__gpio6 = {
> .user = OCP_USER_MPU | OCP_USER_SDMA,
> };
>
> +struct omap_hwmod_ocp_if dra7xx_l4_per2__epwmss0 = {
> + .master = &dra7xx_l4_per2_hwmod,
> + .slave = &dra7xx_epwmss0_hwmod,
> + .clk = "l4_root_clk_div",
> + .user = OCP_USER_MPU,
> +};
> +
> +struct omap_hwmod_ocp_if dra7xx_epwmss0__ecap0 = {
> + .master = &dra7xx_epwmss0_hwmod,
> + .slave = &dra7xx_ecap0_hwmod,
> + .clk = "l4_root_clk_div",
> + .user = OCP_USER_MPU,
> +};
> +
> +struct omap_hwmod_ocp_if dra7xx_epwmss0__eqep0 = {
> + .master = &dra7xx_epwmss0_hwmod,
> + .slave = &dra7xx_eqep0_hwmod,
> + .clk = "l4_root_clk_div",
> + .user = OCP_USER_MPU,
> +};
> +
> +struct omap_hwmod_ocp_if dra7xx_epwmss0__ehrpwm0 = {
> + .master = &dra7xx_epwmss0_hwmod,
> + .slave = &dra7xx_ehrpwm0_hwmod,
> + .clk = "l4_root_clk_div",
> + .user = OCP_USER_MPU,
> +};
> +
> +struct omap_hwmod_ocp_if dra7xx_l4_per2__epwmss1 = {
> + .master = &dra7xx_l4_per2_hwmod,
> + .slave = &dra7xx_epwmss1_hwmod,
> + .clk = "l4_root_clk_div",
> + .user = OCP_USER_MPU,
> +};
> +
> +struct omap_hwmod_ocp_if dra7xx_epwmss1__ecap1 = {
> + .master = &dra7xx_epwmss1_hwmod,
> + .slave = &dra7xx_ecap1_hwmod,
> + .clk = "l4_root_clk_div",
> + .user = OCP_USER_MPU,
> +};
> +
> +struct omap_hwmod_ocp_if dra7xx_epwmss1__eqep1 = {
> + .master = &dra7xx_epwmss1_hwmod,
> + .slave = &dra7xx_eqep1_hwmod,
> + .clk = "l4_root_clk_div",
> + .user = OCP_USER_MPU,
> +};
> +
> +struct omap_hwmod_ocp_if dra7xx_epwmss1__ehrpwm1 = {
> + .master = &dra7xx_epwmss1_hwmod,
> + .slave = &dra7xx_ehrpwm1_hwmod,
> + .clk = "l4_root_clk_div",
> + .user = OCP_USER_MPU,
> +};
> +
> +struct omap_hwmod_ocp_if dra7xx_l4_per2__epwmss2 = {
> + .master = &dra7xx_l4_per2_hwmod,
> + .slave = &dra7xx_epwmss2_hwmod,
> + .clk = "l4_root_clk_div",
> + .user = OCP_USER_MPU,
> +};
> +
> +struct omap_hwmod_ocp_if dra7xx_epwmss2__ecap2 = {
> + .master = &dra7xx_epwmss2_hwmod,
> + .slave = &dra7xx_ecap2_hwmod,
> + .clk = "l4_root_clk_div",
> + .user = OCP_USER_MPU,
> +};
> +
> +struct omap_hwmod_ocp_if dra7xx_epwmss2__eqep2 = {
> + .master = &dra7xx_epwmss2_hwmod,
> + .slave = &dra7xx_eqep2_hwmod,
> + .clk = "l4_root_clk_div",
> + .user = OCP_USER_MPU,
> +};
> +
> +struct omap_hwmod_ocp_if dra7xx_epwmss2__ehrpwm2 = {
> + .master = &dra7xx_epwmss2_hwmod,
> + .slave = &dra7xx_ehrpwm2_hwmod,
> + .clk = "l4_root_clk_div",
> + .user = OCP_USER_MPU,
> +};
> +
> /* l4_per1 -> gpio7 */
> static struct omap_hwmod_ocp_if dra7xx_l4_per1__gpio7 = {
> .master = &dra7xx_l4_per1_hwmod,
> @@ -3452,6 +3679,18 @@ static struct omap_hwmod_ocp_if *dra7xx_hwmod_ocp_ifs[] __initdata = {
> &dra7xx_l3_main_1__vcp2,
> &dra7xx_l4_per2__vcp2,
> &dra7xx_l4_wkup__wd_timer2,
> + &dra7xx_l4_per2__epwmss0,
> + &dra7xx_epwmss0__ecap0,
> + &dra7xx_epwmss0__eqep0,
> + &dra7xx_epwmss0__ehrpwm0,
> + &dra7xx_l4_per2__epwmss1,
> + &dra7xx_epwmss1__ecap1,
> + &dra7xx_epwmss1__eqep1,
> + &dra7xx_epwmss1__ehrpwm1,
> + &dra7xx_l4_per2__epwmss2,
> + &dra7xx_epwmss2__ecap2,
> + &dra7xx_epwmss2__eqep2,
> + &dra7xx_epwmss2__ehrpwm2,
> NULL,
> };
>
> --
> 2.7.0
>
- Paul
[toc] | [prev] | [next] | [standalone]
| From | Tony Lindgren <tony@atomide.com> |
|---|---|
| Date | 2016-03-01 19:20 +0100 |
| Subject | Re: [PATCH v3 2/5] ARM: OMAP2+: DRA7: Add hwmod entries for PWMSS |
| Message-ID | <r7X3Q-4gl-27@gated-at.bofh.it> |
| In reply to | #1343539 |
* Franklin S Cooper Jr <fcooper@ti.com> [160225 14:37]: > From: Vignesh R <vigneshr@ti.com> > > Add hwmod entries for the PWMSS on DRA7. > > Set l4_root_clk_div as the main_clk of PWMSS. It is fixed-factored clock > equal to L4PER2_L3_GICLK/2(l3_iclk_div/2). > As per AM57x TRM SPRUHZ6[1], October 2014, Section 29.1.3 Table 29-4, > clock source to PWMSS is L4PER2_L3_GICLK. But it is actually > L4PER2_L3_GICLK/2. The TRM does not show the division by 2. > > [1] www.ti.com/lit/ug/spruhz6/spruhz6.pdf Looks OK to me, assuming Paul will pick this one or ack it. FYI, the URL above is outdated, looks like there's spruhz7a.pdf available. Not sure if that's been corrected for the divider? Regards, Tony
[toc] | [prev] | [next] | [standalone]
| From | Paul Walmsley <paul@pwsan.com> |
|---|---|
| Date | 2016-03-01 20:00 +0100 |
| Subject | Re: [PATCH v3 2/5] ARM: OMAP2+: DRA7: Add hwmod entries for PWMSS |
| Message-ID | <r7XGz-4zK-31@gated-at.bofh.it> |
| In reply to | #1346833 |
On Tue, 1 Mar 2016, Tony Lindgren wrote: > * Franklin S Cooper Jr <fcooper@ti.com> [160225 14:37]: > > From: Vignesh R <vigneshr@ti.com> > > > > Add hwmod entries for the PWMSS on DRA7. > > > > Set l4_root_clk_div as the main_clk of PWMSS. It is fixed-factored clock > > equal to L4PER2_L3_GICLK/2(l3_iclk_div/2). > > As per AM57x TRM SPRUHZ6[1], October 2014, Section 29.1.3 Table 29-4, > > clock source to PWMSS is L4PER2_L3_GICLK. But it is actually > > L4PER2_L3_GICLK/2. The TRM does not show the division by 2. > > > > [1] www.ti.com/lit/ug/spruhz6/spruhz6.pdf > > Looks OK to me, assuming Paul will pick this one or ack it. Well I've already sent comments on it, it doesn't look quite ready for me yet. I would hold off on the whole series because the hwmod comments also impact the DT files. - Paul
[toc] | [prev] | [next] | [standalone]
| From | Tony Lindgren <tony@atomide.com> |
|---|---|
| Date | 2016-03-01 22:00 +0100 |
| Subject | Re: [PATCH v3 2/5] ARM: OMAP2+: DRA7: Add hwmod entries for PWMSS |
| Message-ID | <r7ZyG-5YG-9@gated-at.bofh.it> |
| In reply to | #1346890 |
* Paul Walmsley <paul@pwsan.com> [160301 10:59]: > On Tue, 1 Mar 2016, Tony Lindgren wrote: > > > * Franklin S Cooper Jr <fcooper@ti.com> [160225 14:37]: > > > From: Vignesh R <vigneshr@ti.com> > > > > > > Add hwmod entries for the PWMSS on DRA7. > > > > > > Set l4_root_clk_div as the main_clk of PWMSS. It is fixed-factored clock > > > equal to L4PER2_L3_GICLK/2(l3_iclk_div/2). > > > As per AM57x TRM SPRUHZ6[1], October 2014, Section 29.1.3 Table 29-4, > > > clock source to PWMSS is L4PER2_L3_GICLK. But it is actually > > > L4PER2_L3_GICLK/2. The TRM does not show the division by 2. > > > > > > [1] www.ti.com/lit/ug/spruhz6/spruhz6.pdf > > > > Looks OK to me, assuming Paul will pick this one or ack it. > > Well I've already sent comments on it, it doesn't look quite ready for me > yet. I would hold off on the whole series because the hwmod comments also > impact the DT files. OK will drop the dt related patches then. Regards, Tony
[toc] | [prev] | [next] | [standalone]
| From | "Franklin S Cooper Jr." <fcooper@ti.com> |
|---|---|
| Date | 2016-03-02 17:30 +0100 |
| Subject | Re: [PATCH v3 2/5] ARM: OMAP2+: DRA7: Add hwmod entries for PWMSS |
| Message-ID | <r8hOY-1I2-47@gated-at.bofh.it> |
| In reply to | #1347016 |
Hi Paul On 03/01/2016 02:50 PM, Tony Lindgren wrote: > * Paul Walmsley <paul@pwsan.com> [160301 10:59]: >> On Tue, 1 Mar 2016, Tony Lindgren wrote: >> >>> * Franklin S Cooper Jr <fcooper@ti.com> [160225 14:37]: >>>> From: Vignesh R <vigneshr@ti.com> >>>> >>>> Add hwmod entries for the PWMSS on DRA7. >>>> >>>> Set l4_root_clk_div as the main_clk of PWMSS. It is fixed-factored clock >>>> equal to L4PER2_L3_GICLK/2(l3_iclk_div/2). >>>> As per AM57x TRM SPRUHZ6[1], October 2014, Section 29.1.3 Table 29-4, >>>> clock source to PWMSS is L4PER2_L3_GICLK. But it is actually >>>> L4PER2_L3_GICLK/2. The TRM does not show the division by 2. >>>> >>>> [1] www.ti.com/lit/ug/spruhz6/spruhz6.pdf >>> Looks OK to me, assuming Paul will pick this one or ack it. >> Well I've already sent comments on it, it doesn't look quite ready for me >> yet. I would hold off on the whole series because the hwmod comments also >> impact the DT files. > OK will drop the dt related patches then. Sorry you previously asked this question about why hwmod is used for eCap, ePWM and eQEP before and it wasn't addressed. I'll take a look at this and I will get back to you. > > Regards, > > Tony
[toc] | [prev] | [next] | [standalone]
| From | "Franklin S Cooper Jr." <fcooper@ti.com> |
|---|---|
| Date | 2016-03-04 03:10 +0100 |
| Subject | Re: [PATCH v3 2/5] ARM: OMAP2+: DRA7: Add hwmod entries for PWMSS |
| Message-ID | <r8NlL-801-1@gated-at.bofh.it> |
| In reply to | #1348303 |
Hi Paul, On 03/02/2016 10:22 AM, Franklin S Cooper Jr. wrote: > Hi Paul > > On 03/01/2016 02:50 PM, Tony Lindgren wrote: >> * Paul Walmsley <paul@pwsan.com> [160301 10:59]: >>> On Tue, 1 Mar 2016, Tony Lindgren wrote: >>> >>>> * Franklin S Cooper Jr <fcooper@ti.com> [160225 14:37]: >>>>> From: Vignesh R <vigneshr@ti.com> >>>>> >>>>> Add hwmod entries for the PWMSS on DRA7. >>>>> >>>>> Set l4_root_clk_div as the main_clk of PWMSS. It is fixed-factored clock >>>>> equal to L4PER2_L3_GICLK/2(l3_iclk_div/2). >>>>> As per AM57x TRM SPRUHZ6[1], October 2014, Section 29.1.3 Table 29-4, >>>>> clock source to PWMSS is L4PER2_L3_GICLK. But it is actually >>>>> L4PER2_L3_GICLK/2. The TRM does not show the division by 2. >>>>> >>>>> [1] www.ti.com/lit/ug/spruhz6/spruhz6.pdf >>>> Looks OK to me, assuming Paul will pick this one or ack it. >>> Well I've already sent comments on it, it doesn't look quite ready for me >>> yet. I would hold off on the whole series because the hwmod comments also >>> impact the DT files. >> OK will drop the dt related patches then. > Sorry you previously asked this question about why hwmod is > used for eCap, ePWM and eQEP before and it wasn't addressed. > I'll take a look at this and I will get back to you. So I looked into this more and verified that the eCAP and ePWM doesn't have their own unique clock. The PWMSS receives a clock L4PER2_L3_GICLK/2 which is passed through to its sub-devices (ePWM, eCAP and eQEP). The PWMSS is responsible for handling its clock internally while the subdevices have no role in managing this clock. So this explains why we have hwmod entries for PWMSS and why we are planning on removing it from the various subdevices. Since ePWM, eCAP and eQEP are subdevices of PWMSS they shouldn't have their own concept of their "own" clock. The ePWM , eCAP and eQEP clocks are all shared and managed by their parent PWMSS. Once the PWMSS is enabled and has its clock running then ePWM, eCAP and eQEP from their main clock perspective have everything they need. So my plan is to strip all references of clocks (including hwmod entries) for ePWM, eCAP and eQEP. The devm_clk_get calls made in the ePWM and eCAP will simply point to their parent's dev (PWMSS). I did a couple of quick test using this approach and it works. I have more testing to do but if that checks out are you ok with the above approach? Also I'm not sure how simple-bus fits in this picture. The eCAP, eQEP and ePWM are all separate devices. The only thing that they share is a single clock from their parent. So it doesn't seem like the right approach. I'm basing this on the info in this thread https://www.mail-archive.com/linuxppc-dev@lists.ozlabs.org/msg27979.html that talks about the usage of simple-bus. So if its outdated or I"m misinterpreting it incorrectly please let me know. > >> Regards, >> >> Tony
[toc] | [prev] | [next] | [standalone]
| From | Paul Walmsley <paul@pwsan.com> |
|---|---|
| Date | 2016-03-04 07:30 +0100 |
| Subject | Re: [PATCH v3 2/5] ARM: OMAP2+: DRA7: Add hwmod entries for PWMSS |
| Message-ID | <r8Rpn-2rS-1@gated-at.bofh.it> |
| In reply to | #1349778 |
On Thu, 3 Mar 2016, Franklin S Cooper Jr. wrote:
> So I looked into this more and verified that the eCAP and
> ePWM doesn't have their own unique clock. The PWMSS receives
> a clock L4PER2_L3_GICLK/2 which is passed through to its
> sub-devices (ePWM, eCAP and eQEP). The PWMSS is responsible
> for handling its clock internally while the subdevices have
> no role in managing this clock. So this explains why we have
> hwmod entries for PWMSS and why we are planning on removing
> it from the various subdevices.
It's not whether they have their own unique clock, but whether the
submodules have OCP integration registers, speak the idle/standby
protocols, have direct L3/L4 ports, etc.
> Since ePWM, eCAP and eQEP are subdevices of PWMSS they
> shouldn't have their own concept of their "own" clock. The
> ePWM , eCAP and eQEP clocks are all shared and managed by
> their parent PWMSS. Once the PWMSS is enabled and has its
> clock running then ePWM, eCAP and eQEP from their main clock
> perspective have everything they need.
>
> So my plan is to strip all references of clocks (including
> hwmod entries) for ePWM, eCAP and eQEP. The devm_clk_get
> calls made in the ePWM and eCAP will simply point to their
> parent's dev (PWMSS). I did a couple of quick test using
> this approach and it works. I have more testing to do but if
> that checks out are you ok with the above approach?
I don't know if that should be done or not. I haven't stared at the code
yet, but based on your description, it sounds to me that it probably
shouldn't be done. In any case, it's not what I meant...
> Also I'm not sure how simple-bus fits in this picture. The
> eCAP, eQEP and ePWM are all separate devices. The only thing
> that they share is a single clock from their parent. So it
> doesn't seem like the right approach. I'm basing this on the
> info in this thread
> https://www.mail-archive.com/linuxppc-dev@lists.ozlabs.org/msg27979.html
> that talks about the usage of simple-bus. So if its outdated
> or I"m misinterpreting it incorrectly please let me know.
What I meant is that the ECAP*, EQEP*, EHRPWM* devices don't need to be
registered through the hwmod code, due to the fact that they don't have
the integration mentioned above. Instead, I think those three subdevices
should be listed as child nodes of epwmss* in the DT.
Looking at the DT data from Vignesh, it looks like he's already got
ehrpwm1 as a child node of the epwmss1:
+ epwmss1: epwmss@48440000 {
+ compatible = "ti,dra7xx-pwmss", "ti,am33xx-pwmss";
+ reg = <0x48440000 0x30>;
+ ti,hwmods = "epwmss1";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ status = "disabled";
+ ranges = <0x48440100 0x48440100 0x80 /* ECAP */
+ 0x48440180 0x48440180 0x80 /* EQEP */
+ 0x48440200 0x48440200 0x80>; /* EHRPWM */
+
+ ehrpwm1: ehrpwm@48440200 {
+ compatible = "ti,dra7xx-ehrpwm",
+ "ti,am33xx-ehrpwm";
+ #pwm-cells = <3>;
+ reg = <0x48440200 0x80>;
+ ti,hwmods = "ehrpwm1";
So, drop the above line, since the subdevices don't have corresponding
hwmods any more.
+ status = "disabled";
+ };
Then, here, you'd add nodes similar to ehrpwm1 for ecap1 and eqep1. I
can't remember at the moment if adding "simple-bus" to the epwmss1 string
would be sufficient to register the subdevices after the epwmss1 is
probed. If so, maybe that's all you need.
+ };
Then repeat for epwmss0, epwmss2.
- Paul
[toc] | [prev] | [next] | [standalone]
| From | Franklin S Cooper Jr <fcooper@ti.com> |
|---|---|
| Date | 2016-02-25 23:40 +0100 |
| Subject | [PATCH v3 4/5] clk: ti: DRA7: Add tbclk data for ehrpwm |
| Message-ID | <r6cJI-27E-23@gated-at.bofh.it> |
| In reply to | #1343534 |
From: Vignesh R <vigneshr@ti.com>
tbclk is needed by ehrpwm to generate pwm waveforms. Hence, register
the required clock information.
Signed-off-by: Vignesh R <vigneshr@ti.com>
Acked-by: Michael Turquette <mturquette@baylibre.com>
---
Version 3 changes:
None
drivers/clk/ti/clk-7xx.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/drivers/clk/ti/clk-7xx.c b/drivers/clk/ti/clk-7xx.c
index a911d7d..7fcf818 100644
--- a/drivers/clk/ti/clk-7xx.c
+++ b/drivers/clk/ti/clk-7xx.c
@@ -304,6 +304,9 @@ static struct ti_dt_clk dra7xx_clks[] = {
DT_CLK("4882a000.timer", "timer_sys_ck", "timer_sys_clk_div"),
DT_CLK("4882c000.timer", "timer_sys_ck", "timer_sys_clk_div"),
DT_CLK("4882e000.timer", "timer_sys_ck", "timer_sys_clk_div"),
+ DT_CLK("4843e200.ehrpwm", "tbclk", "ehrpwm0_tbclk"),
+ DT_CLK("48440200.ehrpwm", "tbclk", "ehrpwm1_tbclk"),
+ DT_CLK("48442200.ehrpwm", "tbclk", "ehrpwm2_tbclk"),
DT_CLK(NULL, "sys_clkin", "sys_clkin1"),
DT_CLK(NULL, "dss_deshdcp_clk", "dss_deshdcp_clk"),
{ .node_name = NULL },
--
2.7.0
[toc] | [prev] | [next] | [standalone]
| From | Tony Lindgren <tony@atomide.com> |
|---|---|
| Date | 2016-02-26 20:20 +0100 |
| Subject | Re: [PATCH v3 4/5] clk: ti: DRA7: Add tbclk data for ehrpwm |
| Message-ID | <r6w5H-7UQ-7@gated-at.bofh.it> |
| In reply to | #1343540 |
* Franklin S Cooper Jr <fcooper@ti.com> [160225 14:37]:
> From: Vignesh R <vigneshr@ti.com>
>
> tbclk is needed by ehrpwm to generate pwm waveforms. Hence, register
> the required clock information.
>
> Signed-off-by: Vignesh R <vigneshr@ti.com>
> Acked-by: Michael Turquette <mturquette@baylibre.com>
This should be sent to Tero.
Regards,
Tony
> ---
> Version 3 changes:
> None
>
> drivers/clk/ti/clk-7xx.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/drivers/clk/ti/clk-7xx.c b/drivers/clk/ti/clk-7xx.c
> index a911d7d..7fcf818 100644
> --- a/drivers/clk/ti/clk-7xx.c
> +++ b/drivers/clk/ti/clk-7xx.c
> @@ -304,6 +304,9 @@ static struct ti_dt_clk dra7xx_clks[] = {
> DT_CLK("4882a000.timer", "timer_sys_ck", "timer_sys_clk_div"),
> DT_CLK("4882c000.timer", "timer_sys_ck", "timer_sys_clk_div"),
> DT_CLK("4882e000.timer", "timer_sys_ck", "timer_sys_clk_div"),
> + DT_CLK("4843e200.ehrpwm", "tbclk", "ehrpwm0_tbclk"),
> + DT_CLK("48440200.ehrpwm", "tbclk", "ehrpwm1_tbclk"),
> + DT_CLK("48442200.ehrpwm", "tbclk", "ehrpwm2_tbclk"),
> DT_CLK(NULL, "sys_clkin", "sys_clkin1"),
> DT_CLK(NULL, "dss_deshdcp_clk", "dss_deshdcp_clk"),
> { .node_name = NULL },
> --
> 2.7.0
>
[toc] | [prev] | [next] | [standalone]
| From | Tony Lindgren <tony@atomide.com> |
|---|---|
| Date | 2016-02-26 20:20 +0100 |
| Subject | Re: [PATCH v3 4/5] clk: ti: DRA7: Add tbclk data for ehrpwm |
| Message-ID | <r6w5I-7UQ-21@gated-at.bofh.it> |
| In reply to | #1344601 |
* Tony Lindgren <tony@atomide.com> [160226 11:16]: > * Franklin S Cooper Jr <fcooper@ti.com> [160225 14:37]: > > From: Vignesh R <vigneshr@ti.com> > > > > tbclk is needed by ehrpwm to generate pwm waveforms. Hence, register > > the required clock information. > > > > Signed-off-by: Vignesh R <vigneshr@ti.com> > > Acked-by: Michael Turquette <mturquette@baylibre.com> > > This should be sent to Tero. Sorry I mean Tero should queue this one as he is already on Cc. Regards, Tony
[toc] | [prev] | [next] | [standalone]
| From | Franklin S Cooper Jr <fcooper@ti.com> |
|---|---|
| Date | 2016-02-25 23:40 +0100 |
| Subject | [PATCH v3 5/5] ARM: dts: DRA7: Add dt nodes for PWMSS |
| Message-ID | <r6cJI-27E-25@gated-at.bofh.it> |
| In reply to | #1343534 |
From: Vignesh R <vigneshr@ti.com>
Add PWMSS device tree nodes for DRA7 SoC family and add documentation
for dt bindings.
Signed-off-by: Vignesh R <vigneshr@ti.com>
---
Version 3 changes:
None
.../devicetree/bindings/pwm/pwm-tiehrpwm.txt | 8 +++
.../devicetree/bindings/pwm/pwm-tipwmss.txt | 17 +++++-
arch/arm/boot/dts/dra7.dtsi | 64 ++++++++++++++++++++++
3 files changed, 88 insertions(+), 1 deletion(-)
diff --git a/Documentation/devicetree/bindings/pwm/pwm-tiehrpwm.txt b/Documentation/devicetree/bindings/pwm/pwm-tiehrpwm.txt
index 9c100b2..25d91ae 100644
--- a/Documentation/devicetree/bindings/pwm/pwm-tiehrpwm.txt
+++ b/Documentation/devicetree/bindings/pwm/pwm-tiehrpwm.txt
@@ -4,6 +4,7 @@ Required properties:
- compatible: Must be "ti,<soc>-ehrpwm".
for am33xx - compatible = "ti,am33xx-ehrpwm";
for da850 - compatible = "ti,da850-ehrpwm", "ti,am33xx-ehrpwm";
+ for dra7xx - compatible = "ti,dra7xx-ehrpwm", "ti,am33xx-ehrpwm";
- #pwm-cells: should be 3. See pwm.txt in this directory for a description of
the cells format. The only third cell flag supported by this binding is
PWM_POLARITY_INVERTED.
@@ -27,3 +28,10 @@ ehrpwm0: ehrpwm@0 { /* EHRPWM on da850 */
#pwm-cells = <3>;
reg = <0x300000 0x2000>;
};
+
+ehrpwm0: ehrpwm@0 { /* EHRPWM on dra7xx */
+ compatible = "ti,dra7xx-ehrpwm", "ti,am33xx-ehrpwm";
+ #pwm-cells = <3>;
+ reg = <0x48440200 0x80>;
+ ti,hwmods = "ehrpwm0";
+};
diff --git a/Documentation/devicetree/bindings/pwm/pwm-tipwmss.txt b/Documentation/devicetree/bindings/pwm/pwm-tipwmss.txt
index f7eae77..9270ce6 100644
--- a/Documentation/devicetree/bindings/pwm/pwm-tipwmss.txt
+++ b/Documentation/devicetree/bindings/pwm/pwm-tipwmss.txt
@@ -1,7 +1,9 @@
TI SOC based PWM Subsystem
Required properties:
-- compatible: Must be "ti,am33xx-pwmss";
+- compatible: Must be "ti,<soc>-pwmss".
+ for am33xx - compatible = "ti,am33xx-pwmss"
+ for dra7xx - compatible = "ti,dra7xx-pwmss", "ti,am33xx-pwmss"
- reg: physical base address and size of the registers map.
- address-cells: Specify the number of u32 entries needed in child nodes.
Should set to 1.
@@ -29,3 +31,16 @@ pwmss0: pwmss@48300000 {
/* child nodes go here */
};
+
+epwmss0: epwmss@4843e000 { /* On DRA7xx */
+ compatible = "ti,dra7xx-pwmss", "ti,am33xx-pwmss";
+ reg = <0x4843e000 0x30>;
+ ti,hwmods = "epwmss0";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges = <0x4843e100 0x4843e100 0x80 /* ECAP */
+ 0x4843e180 0x4843e180 0x80 /* EQEP */
+ 0x4843e200 0x4843e200 0x80>; /* EHRPWM */
+
+ /* child nodes go here */
+};
diff --git a/arch/arm/boot/dts/dra7.dtsi b/arch/arm/boot/dts/dra7.dtsi
index c4d9175..9143db0 100644
--- a/arch/arm/boot/dts/dra7.dtsi
+++ b/arch/arm/boot/dts/dra7.dtsi
@@ -1597,6 +1597,70 @@
clock-names = "fck", "sys_clk";
};
};
+
+ epwmss0: epwmss@4843e000 {
+ compatible = "ti,dra7xx-pwmss", "ti,am33xx-pwmss";
+ reg = <0x4843e000 0x30>;
+ ti,hwmods = "epwmss0";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ status = "disabled";
+ ranges = <0x4843e100 0x4843e100 0x80 /* ECAP */
+ 0x4843e180 0x4843e180 0x80 /* EQEP */
+ 0x4843e200 0x4843e200 0x80>;/* EHRPWM */
+
+ ehrpwm0: ehrpwm@4843e200 {
+ compatible = "ti,dra7xx-ehrpwm",
+ "ti,am33xx-ehrpwm";
+ #pwm-cells = <3>;
+ reg = <0x4843e200 0x80>;
+ ti,hwmods = "ehrpwm0";
+ status = "disabled";
+ };
+ };
+
+ epwmss1: epwmss@48440000 {
+ compatible = "ti,dra7xx-pwmss", "ti,am33xx-pwmss";
+ reg = <0x48440000 0x30>;
+ ti,hwmods = "epwmss1";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ status = "disabled";
+ ranges = <0x48440100 0x48440100 0x80 /* ECAP */
+ 0x48440180 0x48440180 0x80 /* EQEP */
+ 0x48440200 0x48440200 0x80>; /* EHRPWM */
+
+ ehrpwm1: ehrpwm@48440200 {
+ compatible = "ti,dra7xx-ehrpwm",
+ "ti,am33xx-ehrpwm";
+ #pwm-cells = <3>;
+ reg = <0x48440200 0x80>;
+ ti,hwmods = "ehrpwm1";
+ status = "disabled";
+ };
+ };
+
+ epwmss2: epwmss@48442000 {
+ compatible = "ti,dra7xx-pwmss", "ti,am33xx-pwmss";
+ reg = <0x48442000 0x30>;
+ ti,hwmods = "epwmss2";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ status = "disabled";
+
+ ranges = <0x48442100 0x48442100 0x80 /* ECAP */
+ 0x48442180 0x48442180 0x80 /* EQEP */
+ 0x48442200 0x48442200 0x80>; /* EHRPWM */
+
+ ehrpwm2: ehrpwm@48442200 {
+ compatible = "ti,dra7xx-ehrpwm",
+ "ti,am33xx-ehrpwm";
+ #pwm-cells = <3>;
+ reg = <0x48442200 0x80>;
+ ti,hwmods = "ehrpwm2";
+ status = "disabled";
+ };
+ };
};
thermal_zones: thermal-zones {
--
2.7.0
[toc] | [prev] | [next] | [standalone]
| From | Tony Lindgren <tony@atomide.com> |
|---|---|
| Date | 2016-02-26 20:20 +0100 |
| Subject | Re: [PATCH v3 5/5] ARM: dts: DRA7: Add dt nodes for PWMSS |
| Message-ID | <r6w5H-7UQ-1@gated-at.bofh.it> |
| In reply to | #1343542 |
* Franklin S Cooper Jr <fcooper@ti.com> [160225 14:37]: > From: Vignesh R <vigneshr@ti.com> > > Add PWMSS device tree nodes for DRA7 SoC family and add documentation > for dt bindings. Are the dts changes safe to pick separately? I'm mostly worried about clock related hangs unless the clock changes are merged first. Regards, Tony
[toc] | [prev] | [next] | [standalone]
| From | Franklin S Cooper Jr <fcooper@ti.com> |
|---|---|
| Date | 2016-02-26 20:50 +0100 |
| Subject | Re: [PATCH v3 5/5] ARM: dts: DRA7: Add dt nodes for PWMSS |
| Message-ID | <r6wyK-86V-11@gated-at.bofh.it> |
| In reply to | #1344599 |
Hi Tony On 02/26/2016 01:18 PM, Tony Lindgren wrote: > * Franklin S Cooper Jr <fcooper@ti.com> [160225 14:37]: >> From: Vignesh R <vigneshr@ti.com> >> >> Add PWMSS device tree nodes for DRA7 SoC family and add documentation >> for dt bindings. > > Are the dts changes safe to pick separately? I'm mostly worried > about clock related hangs unless the clock changes are merged > first. > > Regards, > > Tony > I just did a boot test where I only had this patch applied and the dra7 board booted successfully. Of course I assume there will be problems if someone actually tried to enable EPWM or ECAP without the other clock patches. Bootlog: http://pastebin.ubuntu.com/15208985/
[toc] | [prev] | [next] | [standalone]
| From | Tony Lindgren <tony@atomide.com> |
|---|---|
| Date | 2016-03-01 00:30 +0100 |
| Subject | Re: [PATCH v3 5/5] ARM: dts: DRA7: Add dt nodes for PWMSS |
| Message-ID | <r7Fqj-18H-33@gated-at.bofh.it> |
| In reply to | #1343542 |
* Franklin S Cooper Jr <fcooper@ti.com> [160225 14:37]: > From: Vignesh R <vigneshr@ti.com> > > Add PWMSS device tree nodes for DRA7 SoC family and add documentation > for dt bindings. Seems to be all standard so applying this one into omap-for-v4.6/dt thanks. Regards, Tony
[toc] | [prev] | [next] | [standalone]
Page 1 of 2 [1] 2 Next page →
Back to top | Article view | linux.kernel
csiph-web