lkml.org 
[lkml]   [2011]   [Oct]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCHv9 03/18] TEMP: OMAP3xxx: hwmod data: add PRM hwmod
    Hi Paul,

    On 10/10/2011 9:24 PM, Paul Walmsley wrote:
    > Hi Tero
    >
    > On Fri, 23 Sep 2011, Tero Kristo wrote:
    >
    >> This patch is temporary until Paul can provide a final version.
    >>
    >> Signed-off-by: Tero Kristo<t-kristo@ti.com>
    >
    > Here's an updated version of this one. The one change is that the hwmod's
    > name is now "prm3xxx" to reflect that the register layout of this IP block
    > is quite different from its OMAP2 predecessors and OMAP4 successors.
    > This should avoid some of the special-purpose driver probing code.

    This is not really aligned with the naming convention we've been using
    so far.
    In both cases, the hwmod should just be named "prm". If a version
    information is needed, then it should be added in the revision class field.

    It will make the device creation even simpler and not dependent of the
    SoC version.
    I did not check the whole series, but I'm not sure we need a special
    treatment in the case of the prm.

    Regards,
    Benoit

    >
    >
    > - Paul
    >
    > From: Paul Walmsley<paul@pwsan.com>
    > Date: Mon, 10 Oct 2011 13:11:11 -0600
    > Subject: [PATCH] OMAP3xxx: hwmod data: add PRM hwmod
    >
    > Add a hwmod for the Power& Reset Management (PRM) IP block that is
    > present on OMAP3xxx SoCs.
    >
    > Signed-off-by: Paul Walmsley<paul@pwsan.com>
    > ---
    > arch/arm/mach-omap2/omap_hwmod_3xxx_data.c | 62 ++++++++++++++++++++++++++++
    > 1 files changed, 62 insertions(+), 0 deletions(-)
    >
    > diff --git a/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c b/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c
    > index ab35acb..382fad9 100644
    > --- a/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c
    > +++ b/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c
    > @@ -160,6 +160,7 @@ static struct omap_hwmod omap3xxx_l3_main_hwmod = {
    > };
    >
    > static struct omap_hwmod omap3xxx_l4_wkup_hwmod;
    > +static struct omap_hwmod omap3xxx_prm_hwmod;
    > static struct omap_hwmod omap3xxx_uart1_hwmod;
    > static struct omap_hwmod omap3xxx_uart2_hwmod;
    > static struct omap_hwmod omap3xxx_uart3_hwmod;
    > @@ -475,6 +476,29 @@ static struct omap_hwmod omap3xxx_l4_per_hwmod = {
    > .flags = HWMOD_NO_IDLEST,
    > };
    >
    > +static struct omap_hwmod_addr_space omap3xxx_prm_addrs[] = {
    > + {
    > + .pa_start = 0x48306000,
    > + .pa_end = 0x48306000 + SZ_8K + SZ_4K - 1,
    > + .flags = ADDR_TYPE_RT
    > + },
    > + { }
    > +};
    > +
    > +/* L4_WKUP -> PRM interface */
    > +static struct omap_hwmod_ocp_if omap3xxx_l4_wkup__prm = {
    > + .master =&omap3xxx_l4_wkup_hwmod,
    > + .slave =&omap3xxx_prm_hwmod,
    > + .clk = "wkup_l4_ick",
    > + .addr = omap3xxx_prm_addrs,
    > + .user = OCP_USER_MPU,
    > +};
    > +
    > +/* Master interfaces on the L4_WKUP interconnect */
    > +static struct omap_hwmod_ocp_if *omap3xxx_l4_wkup_masters[] = {
    > + &omap3xxx_l4_wkup__prm,
    > +};
    > +
    > /* Slave interfaces on the L4_WKUP interconnect */
    > static struct omap_hwmod_ocp_if *omap3xxx_l4_wkup_slaves[] = {
    > &omap3xxx_l4_core__l4_wkup,
    > @@ -484,11 +508,46 @@ static struct omap_hwmod_ocp_if *omap3xxx_l4_wkup_slaves[] = {
    > static struct omap_hwmod omap3xxx_l4_wkup_hwmod = {
    > .name = "l4_wkup",
    > .class =&l4_hwmod_class,
    > + .masters = omap3xxx_l4_wkup_masters,
    > + .masters_cnt = ARRAY_SIZE(omap3xxx_l4_wkup_masters),
    > .slaves = omap3xxx_l4_wkup_slaves,
    > .slaves_cnt = ARRAY_SIZE(omap3xxx_l4_wkup_slaves),
    > .flags = HWMOD_NO_IDLEST,
    > };
    >
    > +/* Slave interfaces on the L4_WKUP interconnect */
    > +static struct omap_hwmod_ocp_if *omap3xxx_prm_slaves[] = {
    > + &omap3xxx_l4_wkup__prm,
    > +};
    > +
    > +static struct omap_hwmod_class_sysconfig omap3xxx_prm_sysc = {
    > + .rev_offs = 0x0804,
    > + .sysc_offs = 0x0814,
    > + .sysc_flags = SYSC_HAS_AUTOIDLE,
    > + .sysc_fields =&omap_hwmod_sysc_type1,
    > +};
    > +
    > +static struct omap_hwmod_class omap3xxx_prm_hwmod_class = {
    > + .name = "prm",
    > + .sysc =&omap3xxx_prm_sysc,
    > +};
    > +
    > +static struct omap_hwmod_irq_info omap3xxx_prm_irqs[] = {
    > + { .irq = 11 },
    > + { .irq = -1 }
    > +};
    > +
    > +/* PRM */
    > +static struct omap_hwmod omap3xxx_prm_hwmod = {
    > + .name = "prm3xxx",
    > + .mpu_irqs = omap3xxx_prm_irqs,
    > + .class =&omap3xxx_prm_hwmod_class,
    > + .main_clk = "wkup_32k_fck",
    > + .slaves = omap3xxx_prm_slaves,
    > + .slaves_cnt = ARRAY_SIZE(omap3xxx_prm_slaves),
    > + .flags = HWMOD_NO_IDLEST,
    > +};
    > +
    > /* Master interfaces on the MPU device */
    > static struct omap_hwmod_ocp_if *omap3xxx_mpu_masters[] = {
    > &omap3xxx_mpu__l3_main,
    > @@ -3128,6 +3187,9 @@ static __initdata struct omap_hwmod *omap3xxx_hwmods[] = {
    > &omap3xxx_l4_core_hwmod,
    > &omap3xxx_l4_per_hwmod,
    > &omap3xxx_l4_wkup_hwmod,
    > +
    > + &omap3xxx_prm_hwmod,
    > +
    > &omap3xxx_mmc1_hwmod,
    > &omap3xxx_mmc2_hwmod,
    > &omap3xxx_mmc3_hwmod,



    \
     
     \ /
      Last update: 2011-10-10 21:57    [W:0.029 / U:31.740 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site