Re: [PATCH v3 2/3] OMAP4: hwmod data: add DSS DISPC DSI1,2 RFBI HDMI VENC

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Benoit,

On Fri, Feb 11, 2011 at 10:20 PM, Cousson, Benoit <b-cousson@xxxxxx> wrote:
> Hi Sumit,
>
> While I was trying to merge that patch for 2.6.39, I found some changes that
> I didn't expected. I will take care of cleaning this patch, but I'd to get
> the rational first.
> All the other comments are purely cosmetic.
>
> On 1/27/2011 12:17 PM, Semwal, Sumit wrote:
>>
>> From: Benoit Cousson<b-cousson@xxxxxx>
>>
>> Add dss, dispc, dsi1, dsi2, hdmi, rfbi and venc hwmods.
>> In OMAP4 there are severals IPs that can be reached by differents
>> interconnect paths depending of the access initiator (MPU vs. SDMA).
>> In the case of the DSS, both L3 direct path and L4 CFG path can be
>> used to access all the DSS IPs. The two ocp_ip already exists to support
>> the two address spaces.
>>
>>       +------------+-- L3_MAIN --+ MPU
>>   IP  |            |
>>       +-- L4_CFG --+
>>
>> L3 main address range is specified first, since it is used by default.
>> dss is also considered as an IP as dispc, rfbi, and named as dss_core.
>>
>> Signed-off-by: Benoit Cousson<b-cousson@xxxxxx>
>> Signed-off-by: Mayuresh Janorkar<mayur@xxxxxx>
>> Signed-off-by: Senthilvadivu Guruswamy<svadivu@xxxxxx>
>> Signed-off-by: Sumit Semwal<sumit.semwal@xxxxxx>
>> ---
>>  arch/arm/mach-omap2/omap_hwmod_44xx_data.c |  603
>> ++++++++++++++++++++++++++++
>>  1 files changed, 603 insertions(+), 0 deletions(-)
>>
>> diff --git a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
>> b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
>> index c2806bd..0bd579e 100644
>> --- a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
>> +++ b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
>> @@ -43,6 +43,13 @@
>>  static struct omap_hwmod omap44xx_dma_system_hwmod;
>>  static struct omap_hwmod omap44xx_dmm_hwmod;
>>  static struct omap_hwmod omap44xx_dsp_hwmod;
>> +static struct omap_hwmod omap44xx_dss_core_hwmod;
>> +static struct omap_hwmod omap44xx_dss_dispc_hwmod;
>> +static struct omap_hwmod omap44xx_dss_dsi1_hwmod;
>> +static struct omap_hwmod omap44xx_dss_dsi2_hwmod;
>> +static struct omap_hwmod omap44xx_dss_hdmi_hwmod;
>> +static struct omap_hwmod omap44xx_dss_rfbi_hwmod;
>> +static struct omap_hwmod omap44xx_dss_venc_hwmod;
>>  static struct omap_hwmod omap44xx_emif_fw_hwmod;
>>  static struct omap_hwmod omap44xx_iva_hwmod;
>>  static struct omap_hwmod omap44xx_l3_instr_hwmod;
>> @@ -237,12 +244,21 @@ static struct omap_hwmod_ocp_if
>> omap44xx_mpu__l3_main_1 = {
>>         .user           = OCP_USER_MPU | OCP_USER_SDMA,
>>  };
>>
>> +/* dss ->  l3_main_1 */
>> +static struct omap_hwmod_ocp_if omap44xx_dss__l3_main_1 = {
>> +       .master         =&omap44xx_dss_core_hwmod,
>> +       .slave          =&omap44xx_l3_main_1_hwmod,
>> +       .clk            = "l3_div_ck",
>> +       .user           = OCP_USER_MPU | OCP_USER_SDMA,
>> +};
>> +
>>  /* l3_main_1 slave ports */
>>  static struct omap_hwmod_ocp_if *omap44xx_l3_main_1_slaves[] = {
>>         &omap44xx_dsp__l3_main_1,
>>         &omap44xx_l3_main_2__l3_main_1,
>>         &omap44xx_l4_cfg__l3_main_1,
>>         &omap44xx_mpu__l3_main_1,
>> +&omap44xx_dss__l3_main_1,
>>  };
>>
>>  static struct omap_hwmod omap44xx_l3_main_1_hwmod = {
>> @@ -746,6 +762,584 @@ static struct omap_hwmod omap44xx_dsp_hwmod = {
>>         .omap_chip      = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
>>  };
>>
>> +/* ==== DSS related classes ==== */
>
> That line should not be removed.
>
>> + /*
>> + * 'dispc' class
>> + * display controller
>> + */
>> +
>> +static struct omap_hwmod_class_sysconfig omap44xx_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 omap44xx_dispc_hwmod_class = {
>> +       .name = "dispc",
>> +       .sysc =&omap44xx_dispc_sysc,
>> +};
>> +
>> +/* dss_dispc */
>> +static struct omap_hwmod_irq_info omap44xx_dss_dispc_irqs[] = {
>> +       { .irq = 25 + OMAP44XX_IRQ_GIC_START },
>> +};
>> +
>> +static struct omap_hwmod_dma_info omap44xx_dss_dispc_sdma_reqs[] = {
>> +       { .dma_req = 5 + OMAP44XX_DMA_REQ_START },
>> +};
>> +
>> +static struct omap_hwmod_addr_space omap44xx_dss_dispc_addrs[] = {
>> +       {
>> +               .pa_start       = 0x48041000,
>> +               .pa_end         = 0x48041fff,
>> +               .flags          = ADDR_TYPE_RT
>> +       },
>> +};
>> +
>> +/* l4_per ->  dss_dispc */
>> +static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_dispc = {
>> +       .master         =&omap44xx_l4_per_hwmod,
>> +       .slave          =&omap44xx_dss_dispc_hwmod,
>> +       .clk            = "l4_div_ck",
>> +       .addr           = omap44xx_dss_dispc_addrs,
>> +       .addr_cnt       = ARRAY_SIZE(omap44xx_dss_dispc_addrs),
>> +       .user           = OCP_USER_MPU,
>> +};
>> +
>> +static struct omap_hwmod_addr_space omap44xx_dss_dispc_dma_addrs[] = {
>> +       {
>> +               .pa_start       = 0x58001000,
>> +               .pa_end         = 0x58001fff,
>> +               .flags          = ADDR_TYPE_RT
>> +       },
>> +};
>
> The L3 mapping should be before the L4 one. This is the same for the other
> hwmods. Please note that this is just to be in sync with the generated code,
> it does not have any impact on the functionality.
>
>> +
>> +/* l3_main_2 ->  dss_dispc */
>> +static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_dispc = {
>> +       .master         =&omap44xx_l3_main_2_hwmod,
>> +       .slave          =&omap44xx_dss_dispc_hwmod,
>> +       .clk            = "l3_div_ck",
>> +       .addr           = omap44xx_dss_dispc_dma_addrs,
>> +       .addr_cnt       = ARRAY_SIZE(omap44xx_dss_dispc_dma_addrs),
>> +       .user           = OCP_USER_SDMA,
>> +};
>> +
>> +/* dss_dispc slave ports */
>> +static struct omap_hwmod_ocp_if *omap44xx_dss_dispc_slaves[] = {
>> +&omap44xx_l3_main_2__dss_dispc,
>> +&omap44xx_l4_per__dss_dispc,
>> +};
>> +
>> +static struct omap_hwmod omap44xx_dss_dispc_hwmod = {
>> +       .name           = "dss_dispc",
>> +       .class          =&omap44xx_dispc_hwmod_class,
>> +       .mpu_irqs       = omap44xx_dss_dispc_irqs,
>> +       .mpu_irqs_cnt   = ARRAY_SIZE(omap44xx_dss_dispc_irqs),
>> +       .sdma_reqs      = omap44xx_dss_dispc_sdma_reqs,
>> +       .sdma_reqs_cnt  = ARRAY_SIZE(omap44xx_dss_dispc_sdma_reqs),
>> +       .main_clk       = "dss_fck",
>> +       .prcm = {
>> +               .omap4 = {
>> +                       .clkctrl_reg = OMAP4430_CM_DSS_DSS_CLKCTRL,
>> +               },
>> +       },
>> +       .slaves         = omap44xx_dss_dispc_slaves,
>> +       .slaves_cnt     = ARRAY_SIZE(omap44xx_dss_dispc_slaves),
>> +       .omap_chip      = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
>> +};
>> +
>> +/*
>> + * 'dsi' class
>> + * display serial interface controller
>> + */
>> +static struct omap_hwmod_class_sysconfig omap44xx_dsi_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 omap44xx_dsi_hwmod_class = {
>> +       .name = "dsi",
>> +       .sysc =&omap44xx_dsi_sysc,
>> +};
>> +
>> +/* dss_dsi1 */
>> +static struct omap_hwmod_irq_info omap44xx_dss_dsi1_irqs[] = {
>> +       { .irq = 53 + OMAP44XX_IRQ_GIC_START },
>> +};
>> +
>> +static struct omap_hwmod_dma_info omap44xx_dss_dsi1_sdma_reqs[] = {
>> +       { .dma_req = 74 + OMAP44XX_DMA_REQ_START },
>> +};
>> +
>> +static struct omap_hwmod_addr_space omap44xx_dss_dsi1_addrs[] = {
>> +       {
>> +               .pa_start       = 0x48044000,
>> +               .pa_end         = 0x480440ff,
>> +               .flags          = ADDR_TYPE_RT
>> +       },
>> +};
>> +
>> +/* l4_per ->  dss_dsi1 */
>> +static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_dsi1 = {
>> +       .master         =&omap44xx_l4_per_hwmod,
>> +       .slave          =&omap44xx_dss_dsi1_hwmod,
>> +       .clk            = "l4_div_ck",
>> +       .addr           = omap44xx_dss_dsi1_addrs,
>> +       .addr_cnt       = ARRAY_SIZE(omap44xx_dss_dsi1_addrs),
>> +       .user           = OCP_USER_MPU,
>> +};
>> +
>> +static struct omap_hwmod_addr_space omap44xx_dss_dsi1_dma_addrs[] = {
>> +       {
>> +               .pa_start       = 0x58004000,
>> +               .pa_end         = 0x580040ff,
>> +               .flags          = ADDR_TYPE_RT
>> +       },
>> +};
>> +
>> +/* l3_main_2 ->  dss_dsi1 */
>> +static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_dsi1 = {
>> +       .master         =&omap44xx_l3_main_2_hwmod,
>> +       .slave          =&omap44xx_dss_dsi1_hwmod,
>> +       .clk            = "l3_div_ck",
>> +       .addr           = omap44xx_dss_dsi1_dma_addrs,
>> +       .addr_cnt       = ARRAY_SIZE(omap44xx_dss_dsi1_dma_addrs),
>> +       .user           = OCP_USER_SDMA,
>> +};
>> +
>> +/* dss_dsi1 slave ports */
>> +static struct omap_hwmod_ocp_if *omap44xx_dss_dsi1_slaves[] = {
>> +&omap44xx_l3_main_2__dss_dsi1,
>> +&omap44xx_l4_per__dss_dsi1,
>> +};
>> +
>> +static struct omap_hwmod omap44xx_dss_dsi1_hwmod = {
>> +       .name           = "dss_dsi1",
>> +       .class          =&omap44xx_dsi_hwmod_class,
>> +       .mpu_irqs       = omap44xx_dss_dsi1_irqs,
>> +       .mpu_irqs_cnt   = ARRAY_SIZE(omap44xx_dss_dsi1_irqs),
>> +       .sdma_reqs      = omap44xx_dss_dsi1_sdma_reqs,
>> +       .sdma_reqs_cnt  = ARRAY_SIZE(omap44xx_dss_dsi1_sdma_reqs),
>> +       .main_clk       = "dss_fck",
>> +       .prcm = {
>> +               .omap4 = {
>> +                       .clkctrl_reg = OMAP4430_CM_DSS_DSS_CLKCTRL,
>> +               },
>> +       },
>> +       .slaves         = omap44xx_dss_dsi1_slaves,
>> +       .slaves_cnt     = ARRAY_SIZE(omap44xx_dss_dsi1_slaves),
>> +       .omap_chip      = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
>> +};
>> +
>> +/* dss_dsi2 */
>> +static struct omap_hwmod_irq_info omap44xx_dss_dsi2_irqs[] = {
>> +       { .irq = 84 + OMAP44XX_IRQ_GIC_START },
>> +};
>> +
>> +static struct omap_hwmod_dma_info omap44xx_dss_dsi2_sdma_reqs[] = {
>> +       { .dma_req = 83 + OMAP44XX_DMA_REQ_START },
>> +};
>> +
>> +static struct omap_hwmod_addr_space omap44xx_dss_dsi2_addrs[] = {
>> +       {
>> +               .pa_start       = 0x48045000,
>> +               .pa_end         = 0x480450ff,
>> +               .flags          = ADDR_TYPE_RT
>> +       },
>> +};
>> +
>> +/* l4_per ->  dss_dsi2 */
>> +static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_dsi2 = {
>> +       .master         =&omap44xx_l4_per_hwmod,
>> +       .slave          =&omap44xx_dss_dsi2_hwmod,
>> +       .clk            = "l4_div_ck",
>> +       .addr           = omap44xx_dss_dsi2_addrs,
>> +       .addr_cnt       = ARRAY_SIZE(omap44xx_dss_dsi2_addrs),
>> +       .user           = OCP_USER_MPU,
>> +};
>> +
>> +static struct omap_hwmod_addr_space omap44xx_dss_dsi2_dma_addrs[] = {
>> +       {
>> +               .pa_start       = 0x58005000,
>> +               .pa_end         = 0x580050ff,
>> +               .flags          = ADDR_TYPE_RT
>> +       },
>> +};
>> +
>> +/* l3_main_2 ->  dss_dsi2 */
>> +static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_dsi2 = {
>> +       .master         =&omap44xx_l3_main_2_hwmod,
>> +       .slave          =&omap44xx_dss_dsi2_hwmod,
>> +       .clk            = "l3_div_ck",
>> +       .addr           = omap44xx_dss_dsi2_dma_addrs,
>> +       .addr_cnt       = ARRAY_SIZE(omap44xx_dss_dsi2_dma_addrs),
>> +       .user           = OCP_USER_SDMA,
>> +};
>> +
>> +/* dss_dsi2 slave ports */
>> +static struct omap_hwmod_ocp_if *omap44xx_dss_dsi2_slaves[] = {
>> +&omap44xx_l3_main_2__dss_dsi2,
>> +&omap44xx_l4_per__dss_dsi2,
>> +};
>> +
>> +static struct omap_hwmod omap44xx_dss_dsi2_hwmod = {
>> +       .name           = "dss_dsi2",
>> +       .class          =&omap44xx_dsi_hwmod_class,
>> +       .mpu_irqs       = omap44xx_dss_dsi2_irqs,
>> +       .mpu_irqs_cnt   = ARRAY_SIZE(omap44xx_dss_dsi2_irqs),
>> +       .sdma_reqs      = omap44xx_dss_dsi2_sdma_reqs,
>> +       .sdma_reqs_cnt  = ARRAY_SIZE(omap44xx_dss_dsi2_sdma_reqs),
>> +       .main_clk       = "dss_fck",
>> +       .prcm = {
>> +               .omap4 = {
>> +                       .clkctrl_reg = OMAP4430_CM_DSS_DSS_CLKCTRL,
>> +               },
>> +       },
>> +       .slaves         = omap44xx_dss_dsi2_slaves,
>> +       .slaves_cnt     = ARRAY_SIZE(omap44xx_dss_dsi2_slaves),
>> +       .omap_chip      = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
>> +};
>> +
>> +/*
>> + * 'dss' class
>> + * display sub-system
>> + */
>> +static struct omap_hwmod_class_sysconfig omap44xx_dss_sysc = {
>> +       .rev_offs       = 0x0000,
>> +       .syss_offs      = 0x0014,
>> +       .sysc_flags     = SYSS_HAS_RESET_STATUS,
>> +       .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
>
> There is a read-only SYSCONFIG in DSS, so it is not usable at all to change
> the idlemode.
> The attribute should be empty.
>
>> +};
>> +
>> +static struct omap_hwmod_class omap44xx_dss_hwmod_class = {
>> +       .name = "dss",
>> +       .sysc =&omap44xx_dss_sysc,
>> +};
>> +
>> +/* dss */
>> +/* dss master ports */
>> +static struct omap_hwmod_ocp_if *omap44xx_dss_masters[] = {
>> +&omap44xx_dss__l3_main_1,
>> +};
>> +
>> +static struct omap_hwmod_irq_info omap44xx_dss_irqs[] = {
>> +       { .irq = 25 + OMAP44XX_IRQ_GIC_START },
>
> Why did you map that irq to the dss_core? It is already mapped to dispc.
I didn't change this portion, so I guess it must've gotten mixed up
when Senthil merged. But I should've re-validated - will take care in
future.
>
>> +};
>> +
>> +static struct omap_hwmod_addr_space omap44xx_dss_addrs[] = {
>> +       {
>> +               .pa_start       = 0x48040000,
>> +               .pa_end         = 0x4804007f,
>> +               .flags          = ADDR_TYPE_RT
>> +       },
>> +};
>> +
>> +/* l4_per ->  dss */
>> +static struct omap_hwmod_ocp_if omap44xx_l4_per__dss = {
>> +       .master         =&omap44xx_l4_per_hwmod,
>> +       .slave          =&omap44xx_dss_core_hwmod,
>> +       .clk            = "l4_div_ck",
>> +       .addr           = omap44xx_dss_addrs,
>> +       .addr_cnt       = ARRAY_SIZE(omap44xx_dss_addrs),
>> +       .user           = OCP_USER_MPU,
>> +};
>> +
>> +static struct omap_hwmod_addr_space omap44xx_dss_dma_addrs[] = {
>> +       {
>> +               .pa_start       = 0x58000000,
>> +               .pa_end         = 0x5800007f,
>> +               .flags          = ADDR_TYPE_RT
>> +       },
>> +};
>> +
>> +/* l3_main_2 ->  dss */
>> +static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss = {
>> +       .master         =&omap44xx_l3_main_2_hwmod,
>> +       .slave          =&omap44xx_dss_core_hwmod,
>> +       .clk            = "l3_div_ck",
>> +       .addr           = omap44xx_dss_dma_addrs,
>> +       .addr_cnt       = ARRAY_SIZE(omap44xx_dss_dma_addrs),
>> +       .user           = OCP_USER_SDMA,
>> +};
>> +
>> +/* dss slave ports */
>> +static struct omap_hwmod_ocp_if *omap44xx_dss_slaves[] = {
>> +&omap44xx_l3_main_2__dss,
>> +&omap44xx_l4_per__dss,
>> +};
>> +
>> +static struct omap_hwmod_opt_clk dss_opt_clks[] = {
>> +       { .role = "sys_clk", .clk = "dss_sys_clk" },
>> +       { .role = "tv_clk", .clk = "dss_tv_clk" },
>> +       { .role = "dss_clk", .clk = "dss_dss_clk" },
>> +       { .role = "video_clk", .clk = "dss_48mhz_clk" },
>> +};
>> +
>> +static struct omap_hwmod omap44xx_dss_core_hwmod = {
>> +       .name           = "dss_core",
>> +       .class          =&omap44xx_dss_hwmod_class,
>> +       .mpu_irqs       = omap44xx_dss_irqs,
>> +       .mpu_irqs_cnt   = ARRAY_SIZE(omap44xx_dss_irqs),
>> +       .main_clk       = "dss_fck",
>> +       .prcm = {
>> +               .omap4 = {
>> +                       .clkctrl_reg = OMAP4430_CM_DSS_DSS_CLKCTRL,
>> +               },
>> +       },
>> +       .opt_clks       = dss_opt_clks,
>> +       .opt_clks_cnt   = ARRAY_SIZE(dss_opt_clks),
>> +       .slaves         = omap44xx_dss_slaves,
>> +       .slaves_cnt     = ARRAY_SIZE(omap44xx_dss_slaves),
>> +       .masters        = omap44xx_dss_masters,
>> +       .masters_cnt    = ARRAY_SIZE(omap44xx_dss_masters),
>> +       .omap_chip      = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
>> +};
>> +
>> +/*
>> + * 'hdmi' class
>> + * hdmi controller
>> + */
>> +
>> +static struct omap_hwmod_class omap44xx_hdmi_hwmod_class = {
>> +       .name = "hdmi",
>
> The sysconfig is missing for the hdmi.
Inadvertent miss. Missed in consolidation I guess; my apologies.
>
>> +};
>> +
>> +/* dss_hdmi */
>> +static struct omap_hwmod_irq_info omap44xx_dss_hdmi_irqs[] = {
>> +       { .irq = 101 + OMAP44XX_IRQ_GIC_START },
>> +};
>> +
>> +static struct omap_hwmod_dma_info omap44xx_dss_hdmi_sdma_reqs[] = {
>> +       { .dma_req = 75 + OMAP44XX_DMA_REQ_START },
>> +};
>> +
>> +static struct omap_hwmod_addr_space omap44xx_dss_hdmi_addrs[] = {
>> +       {
>> +               .pa_start       = 0x48046000,
>> +               .pa_end         = 0x48046fff,
>> +               .flags          = ADDR_TYPE_RT
>> +       },
>> +};
>> +
>> +/* l4_per ->  dss_hdmi */
>> +static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_hdmi = {
>> +       .master         =&omap44xx_l4_per_hwmod,
>> +       .slave          =&omap44xx_dss_hdmi_hwmod,
>> +       .clk            = "l4_div_ck",
>> +       .addr           = omap44xx_dss_hdmi_addrs,
>> +       .addr_cnt       = ARRAY_SIZE(omap44xx_dss_hdmi_addrs),
>> +       .user           = OCP_USER_MPU,
>> +};
>> +
>> +static struct omap_hwmod_addr_space omap44xx_dss_hdmi_dma_addrs[] = {
>> +       {
>> +               .pa_start       = 0x58006000,
>> +               .pa_end         = 0x58006fff,
>> +               .flags          = ADDR_TYPE_RT
>> +       },
>> +};
>> +
>> +/* l3_main_2 ->  dss_hdmi */
>> +static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_hdmi = {
>> +       .master         =&omap44xx_l3_main_2_hwmod,
>> +       .slave          =&omap44xx_dss_hdmi_hwmod,
>> +       .clk            = "l3_div_ck",
>> +       .addr           = omap44xx_dss_hdmi_dma_addrs,
>> +       .addr_cnt       = ARRAY_SIZE(omap44xx_dss_hdmi_dma_addrs),
>> +       .user           = OCP_USER_SDMA,
>> +};
>> +
>> +/* dss_hdmi slave ports */
>> +static struct omap_hwmod_ocp_if *omap44xx_dss_hdmi_slaves[] = {
>> +&omap44xx_l3_main_2__dss_hdmi,
>> +&omap44xx_l4_per__dss_hdmi,
>> +};
>> +
>> +static struct omap_hwmod omap44xx_dss_hdmi_hwmod = {
>> +       .name           = "dss_hdmi",
>> +       .class          =&omap44xx_hdmi_hwmod_class,
>> +       .mpu_irqs       = omap44xx_dss_hdmi_irqs,
>> +       .mpu_irqs_cnt   = ARRAY_SIZE(omap44xx_dss_hdmi_irqs),
>> +       .sdma_reqs      = omap44xx_dss_hdmi_sdma_reqs,
>> +       .sdma_reqs_cnt  = ARRAY_SIZE(omap44xx_dss_hdmi_sdma_reqs),
>> +       .main_clk       = "dss_fck",
>> +       .prcm = {
>> +               .omap4 = {
>> +                       .clkctrl_reg = OMAP4430_CM_DSS_DSS_CLKCTRL,
>> +               },
>> +       },
>> +       .slaves         = omap44xx_dss_hdmi_slaves,
>> +       .slaves_cnt     = ARRAY_SIZE(omap44xx_dss_hdmi_slaves),
>> +       .omap_chip      = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
>> +};
>> +
>> + /*
>> + * 'rfbi' class
>> + * remote frame buffer interface
>> + */
>> +
>> +static struct omap_hwmod_class_sysconfig omap44xx_rfbi_sysc = {
>
> The name should be dss_rfbi.
>
>> +       .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 omap44xx_rfbi_hwmod_class = {
>> +       .name = "rfbi",
>> +       .sysc =&omap44xx_rfbi_sysc,
>> +};
>> +
>> +/* dss_rfbi */
>> +static struct omap_hwmod_dma_info omap44xx_dss_rfbi_sdma_reqs[] = {
>> +       { .dma_req = 13 + OMAP44XX_DMA_REQ_START },
>> +};
>> +
>> +static struct omap_hwmod_addr_space omap44xx_dss_rfbi_addrs[] = {
>> +       {
>> +               .pa_start       = 0x48042000,
>> +               .pa_end         = 0x480420ff,
>> +               .flags          = ADDR_TYPE_RT
>> +       },
>> +};
>> +
>> +/* l4_per ->  dss_rfbi */
>> +static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_rfbi = {
>> +       .master         =&omap44xx_l4_per_hwmod,
>> +       .slave          =&omap44xx_dss_rfbi_hwmod,
>> +       .clk            = "l4_div_ck",
>> +       .addr           = omap44xx_dss_rfbi_addrs,
>> +       .addr_cnt       = ARRAY_SIZE(omap44xx_dss_rfbi_addrs),
>> +       .user           = OCP_USER_MPU,
>> +};
>> +
>> +static struct omap_hwmod_addr_space omap44xx_dss_rfbi_dma_addrs[] = {
>> +       {
>> +               .pa_start       = 0x58002000,
>> +               .pa_end         = 0x580020ff,
>> +               .flags          = ADDR_TYPE_RT
>> +       },
>> +};
>> +
>> +/* l3_main_2 ->  dss_rfbi */
>> +static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_rfbi = {
>> +       .master         =&omap44xx_l3_main_2_hwmod,
>> +       .slave          =&omap44xx_dss_rfbi_hwmod,
>> +       .clk            = "l3_div_ck",
>> +       .addr           = omap44xx_dss_rfbi_dma_addrs,
>> +       .addr_cnt       = ARRAY_SIZE(omap44xx_dss_rfbi_dma_addrs),
>> +       .user           = OCP_USER_SDMA,
>> +};
>> +
>> +/* dss_rfbi slave ports */
>> +static struct omap_hwmod_ocp_if *omap44xx_dss_rfbi_slaves[] = {
>> +&omap44xx_l3_main_2__dss_rfbi,
>> +&omap44xx_l4_per__dss_rfbi,
>> +};
>> +
>> +static struct omap_hwmod omap44xx_dss_rfbi_hwmod = {
>> +       .name           = "dss_rfbi",
>> +       .class          =&omap44xx_rfbi_hwmod_class,
>> +       .sdma_reqs      = omap44xx_dss_rfbi_sdma_reqs,
>> +       .sdma_reqs_cnt  = ARRAY_SIZE(omap44xx_dss_rfbi_sdma_reqs),
>> +       .main_clk       = "dss_fck",
>> +       .prcm = {
>> +               .omap4 = {
>> +                       .clkctrl_reg = OMAP4430_CM_DSS_DSS_CLKCTRL,
>> +               },
>> +       },
>> +       .slaves         = omap44xx_dss_rfbi_slaves,
>> +       .slaves_cnt     = ARRAY_SIZE(omap44xx_dss_rfbi_slaves),
>> +       .omap_chip      = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
>> +};
>> +
>> +/*
>> + * 'venc' class
>> + * video encoder
>> + */
>> +
>> +static struct omap_hwmod_class_sysconfig omap44xx_venc_sysc = {
>> +       .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
>> +};
>
> There is no sysconfig at all in the VENC module, so this structure should
> not be there at all.
Yes, you're right.
>
>> +
>> +static struct omap_hwmod_class omap44xx_venc_hwmod_class = {
>> +       .name = "venc",
>> +       .sysc =&omap44xx_venc_sysc,
>> +};
>> +
>> +/* dss_venc */
>> +static struct omap_hwmod_addr_space omap44xx_dss_venc_addrs[] = {
>> +       {
>> +               .pa_start       = 0x48043000,
>> +               .pa_end         = 0x480430ff,
>> +               .flags          = ADDR_TYPE_RT
>> +       },
>> +};
>> +
>> +/* l4_per ->  dss_venc */
>> +static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_venc = {
>> +       .master         =&omap44xx_l4_per_hwmod,
>> +       .slave          =&omap44xx_dss_venc_hwmod,
>> +       .clk            = "l4_div_ck",
>> +       .addr           = omap44xx_dss_venc_addrs,
>> +       .addr_cnt       = ARRAY_SIZE(omap44xx_dss_venc_addrs),
>> +       .user           = OCP_USER_MPU,
>> +};
>> +
>> +static struct omap_hwmod_addr_space omap44xx_dss_venc_dma_addrs[] = {
>> +       {
>> +               .pa_start       = 0x58003000,
>> +               .pa_end         = 0x580030ff,
>> +               .flags          = ADDR_TYPE_RT
>> +       },
>> +};
>> +
>> +/* l3_main_2 ->  dss_venc */
>> +static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_venc = {
>> +       .master         =&omap44xx_l3_main_2_hwmod,
>> +       .slave          =&omap44xx_dss_venc_hwmod,
>> +       .clk            = "l3_div_ck",
>> +       .addr           = omap44xx_dss_venc_dma_addrs,
>> +       .addr_cnt       = ARRAY_SIZE(omap44xx_dss_venc_dma_addrs),
>> +       .user           = OCP_USER_SDMA,
>> +};
>> +
>> +/* dss_venc slave ports */
>> +static struct omap_hwmod_ocp_if *omap44xx_dss_venc_slaves[] = {
>> +&omap44xx_l3_main_2__dss_venc,
>> +&omap44xx_l4_per__dss_venc,
>> +};
>> +
>> +static struct omap_hwmod omap44xx_dss_venc_hwmod = {
>> +       .name           = "dss_venc",
>> +       .class          =&omap44xx_venc_hwmod_class,
>
> Why don't you have any main_clk entry for venc, whereas all the other dss
> submodules does have:
>        .main_clk       = "dss_fck",
This must be a miss; the other main_clk were also added / consolidated
into this one patch, so I think it got missed during that.
>
>
> Regards,
> Benoit
>
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux