Hi Rajendra, Rajendra Nayak <rnayak@xxxxxx> writes: >> -----Original Message----- >> From: Kevin Hilman [mailto:khilman@xxxxxx] >> Sent: Tuesday, January 25, 2011 3:38 AM >> To: Rajendra Nayak >> Cc: linux-omap@xxxxxxxxxxxxxxx; paul@xxxxxxxxx >> Subject: Re: [RFC 1/3] OMAP: clocks: Use clk names instead of clk > pointers >> >> Rajendra Nayak <rnayak@xxxxxx> writes: >> >> > There are various instances of clk pointers being >> > embedded within structures in the clock framework >> > to refer to clk parents, reference clocks, bypass >> > clocks etc. >> > The right way to reference these is by their name >> > and not by embedding direct pointers to these clks. >> > >> > Hence make provision to be able to provide clock >> > names to refer to parents and bypass/ref clks and >> > populate the clk pointers at runtime. >> > >> > This requires the const qualifier to be dropped for >> > struct clksel within struct clk and hence needs >> > clksel struct definitions to be changed in all >> > clock*_data.c files. >> > >> > Signed-off-by: Rajendra Nayak <rnayak@xxxxxx> >> >> I think the changelog needs a little more description about when the >> names are used instead of the pointers. It looks like the names are >> only used at init time to select the right pointers, but the rest of the >> framework continues to use pointers as before, right? This isnt' very >> clear from the changelog. > > Right, the basic idea was to prevent the binding of clk pointers at > compile time and instead do it at runtime. The rest of the code which > uses pointers would still go ahead and use them. > This is similar to what happens in other frameworks like hwmod > (which has the main_clk name populated and runtime maps to > the relevant clk pointer) or clock framework itself (to identify > the clockdomains associated with the clks) > > Also the patch leaves all the existing clk pointer associations at > compile time as is and only uses this reference by name for a > few nodes that get added in the later patches in the series. > > If the approach seems ok, then a patch to replace all the > existing pointer based referencing with the name based > referencing can also be pushed. The approach seems OK to me. I just think the changelog needs to be a bit clearer since on first read, it sounded (to me) like names were going to replace pointers for more than just init time. Kevin > Regards, > Rajendra > >> >> Kevin >> >> >> > --- >> > arch/arm/mach-omap2/clock2420_data.c | 86 +++++++++--------- >> > arch/arm/mach-omap2/clock2430_data.c | 88 ++++++++++---------- >> > arch/arm/mach-omap2/clock3xxx_data.c | 144 > +++++++++++++++--------------- >> > arch/arm/mach-omap2/clock44xx_data.c | 136 > +++++++++++++++--------------- >> > arch/arm/plat-omap/clock.c | 48 +++++++++-- >> > arch/arm/plat-omap/include/plat/clock.h | 11 ++- >> > 6 files changed, 277 insertions(+), 236 deletions(-) >> > >> > diff --git a/arch/arm/mach-omap2/clock2420_data.c > b/arch/arm/mach-omap2/clock2420_data.c >> > index 0a992bc..5662e51 100644 >> > --- a/arch/arm/mach-omap2/clock2420_data.c >> > +++ b/arch/arm/mach-omap2/clock2420_data.c >> > @@ -161,17 +161,17 @@ static struct clk apll54_ck = { >> > >> > /* func_54m_ck */ >> > >> > -static const struct clksel_rate func_54m_apll54_rates[] = { >> > +static struct clksel_rate func_54m_apll54_rates[] = { >> > { .div = 1, .val = 0, .flags = RATE_IN_24XX }, >> > { .div = 0 }, >> > }; >> > >> > -static const struct clksel_rate func_54m_alt_rates[] = { >> > +static struct clksel_rate func_54m_alt_rates[] = { >> > { .div = 1, .val = 1, .flags = RATE_IN_24XX }, >> > { .div = 0 }, >> > }; >> > >> > -static const struct clksel func_54m_clksel[] = { >> > +static struct clksel func_54m_clksel[] = { >> > { .parent = &apll54_ck, .rates = func_54m_apll54_rates, }, >> > { .parent = &alt_ck, .rates = func_54m_alt_rates, }, >> > { .parent = NULL }, >> > @@ -207,17 +207,17 @@ static struct clk func_96m_ck = { >> > >> > /* func_48m_ck */ >> > >> > -static const struct clksel_rate func_48m_apll96_rates[] = { >> > +static struct clksel_rate func_48m_apll96_rates[] = { >> > { .div = 2, .val = 0, .flags = RATE_IN_24XX }, >> > { .div = 0 }, >> > }; >> > >> > -static const struct clksel_rate func_48m_alt_rates[] = { >> > +static struct clksel_rate func_48m_alt_rates[] = { >> > { .div = 1, .val = 1, .flags = RATE_IN_24XX }, >> > { .div = 0 }, >> > }; >> > >> > -static const struct clksel func_48m_clksel[] = { >> > +static struct clksel func_48m_clksel[] = { >> > { .parent = &apll96_ck, .rates = func_48m_apll96_rates }, >> > { .parent = &alt_ck, .rates = func_48m_alt_rates }, >> > { .parent = NULL } >> > @@ -262,27 +262,27 @@ static struct clk wdt1_osc_ck = { >> > * harmless since access to those clocks are gated by the struct clk >> > * flags fields, which mark them as 2420-only. >> > */ >> > -static const struct clksel_rate common_clkout_src_core_rates[] = { >> > +static struct clksel_rate common_clkout_src_core_rates[] = { >> > { .div = 1, .val = 0, .flags = RATE_IN_24XX }, >> > { .div = 0 } >> > }; >> > >> > -static const struct clksel_rate common_clkout_src_sys_rates[] = { >> > +static struct clksel_rate common_clkout_src_sys_rates[] = { >> > { .div = 1, .val = 1, .flags = RATE_IN_24XX }, >> > { .div = 0 } >> > }; >> > >> > -static const struct clksel_rate common_clkout_src_96m_rates[] = { >> > +static struct clksel_rate common_clkout_src_96m_rates[] = { >> > { .div = 1, .val = 2, .flags = RATE_IN_24XX }, >> > { .div = 0 } >> > }; >> > >> > -static const struct clksel_rate common_clkout_src_54m_rates[] = { >> > +static struct clksel_rate common_clkout_src_54m_rates[] = { >> > { .div = 1, .val = 3, .flags = RATE_IN_24XX }, >> > { .div = 0 } >> > }; >> > >> > -static const struct clksel common_clkout_src_clksel[] = { >> > +static struct clksel common_clkout_src_clksel[] = { >> > { .parent = &core_ck, .rates = common_clkout_src_core_rates }, >> > { .parent = &sys_ck, .rates = common_clkout_src_sys_rates }, >> > { .parent = &func_96m_ck, .rates = common_clkout_src_96m_rates }, >> > @@ -306,7 +306,7 @@ static struct clk sys_clkout_src = { >> > .set_rate = &omap2_clksel_set_rate >> > }; >> > >> > -static const struct clksel_rate common_clkout_rates[] = { >> > +static struct clksel_rate common_clkout_rates[] = { >> > { .div = 1, .val = 0, .flags = RATE_IN_24XX }, >> > { .div = 2, .val = 1, .flags = RATE_IN_24XX }, >> > { .div = 4, .val = 2, .flags = RATE_IN_24XX }, >> > @@ -315,7 +315,7 @@ static const struct clksel_rate > common_clkout_rates[] = { >> > { .div = 0 }, >> > }; >> > >> > -static const struct clksel sys_clkout_clksel[] = { >> > +static struct clksel sys_clkout_clksel[] = { >> > { .parent = &sys_clkout_src, .rates = common_clkout_rates }, >> > { .parent = NULL } >> > }; >> > @@ -350,7 +350,7 @@ static struct clk sys_clkout2_src = { >> > .set_rate = &omap2_clksel_set_rate >> > }; >> > >> > -static const struct clksel sys_clkout2_clksel[] = { >> > +static struct clksel sys_clkout2_clksel[] = { >> > { .parent = &sys_clkout2_src, .rates = common_clkout_rates }, >> > { .parent = NULL } >> > }; >> > @@ -390,7 +390,7 @@ static struct clk emul_ck = { >> > * - Base divider comes from: CM_CLKSEL_MPU >> > * >> > */ >> > -static const struct clksel_rate mpu_core_rates[] = { >> > +static struct clksel_rate mpu_core_rates[] = { >> > { .div = 1, .val = 1, .flags = RATE_IN_24XX }, >> > { .div = 2, .val = 2, .flags = RATE_IN_24XX }, >> > { .div = 4, .val = 4, .flags = RATE_IN_242X }, >> > @@ -399,7 +399,7 @@ static const struct clksel_rate mpu_core_rates[] = > { >> > { .div = 0 }, >> > }; >> > >> > -static const struct clksel mpu_clksel[] = { >> > +static struct clksel mpu_clksel[] = { >> > { .parent = &core_ck, .rates = mpu_core_rates }, >> > { .parent = NULL } >> > }; >> > @@ -426,7 +426,7 @@ static struct clk mpu_ck = { /* Control cpu */ >> > * controls. The other branch gets further divided by 2 then possibly >> > * routed into a synchronizer and out of clocks abc. >> > */ >> > -static const struct clksel_rate dsp_fck_core_rates[] = { >> > +static struct clksel_rate dsp_fck_core_rates[] = { >> > { .div = 1, .val = 1, .flags = RATE_IN_24XX }, >> > { .div = 2, .val = 2, .flags = RATE_IN_24XX }, >> > { .div = 3, .val = 3, .flags = RATE_IN_24XX }, >> > @@ -437,7 +437,7 @@ static const struct clksel_rate > dsp_fck_core_rates[] = { >> > { .div = 0 }, >> > }; >> > >> > -static const struct clksel dsp_fck_clksel[] = { >> > +static struct clksel dsp_fck_clksel[] = { >> > { .parent = &core_ck, .rates = dsp_fck_core_rates }, >> > { .parent = NULL } >> > }; >> > @@ -456,13 +456,13 @@ static struct clk dsp_fck = { >> > }; >> > >> > /* DSP interface clock */ >> > -static const struct clksel_rate dsp_irate_ick_rates[] = { >> > +static struct clksel_rate dsp_irate_ick_rates[] = { >> > { .div = 1, .val = 1, .flags = RATE_IN_24XX }, >> > { .div = 2, .val = 2, .flags = RATE_IN_24XX }, >> > { .div = 0 }, >> > }; >> > >> > -static const struct clksel dsp_irate_ick_clksel[] = { >> > +static struct clksel dsp_irate_ick_clksel[] = { >> > { .parent = &dsp_fck, .rates = dsp_irate_ick_rates }, >> > { .parent = NULL } >> > }; >> > @@ -536,7 +536,7 @@ static struct clk iva1_mpu_int_ifck = { >> > * may very well need notification when the clock changes. Currently > for low >> > * operating points, these are taken care of in sleep.S. >> > */ >> > -static const struct clksel_rate core_l3_core_rates[] = { >> > +static struct clksel_rate core_l3_core_rates[] = { >> > { .div = 1, .val = 1, .flags = RATE_IN_24XX }, >> > { .div = 2, .val = 2, .flags = RATE_IN_242X }, >> > { .div = 4, .val = 4, .flags = RATE_IN_24XX }, >> > @@ -547,7 +547,7 @@ static const struct clksel_rate > core_l3_core_rates[] = { >> > { .div = 0 } >> > }; >> > >> > -static const struct clksel core_l3_clksel[] = { >> > +static struct clksel core_l3_clksel[] = { >> > { .parent = &core_ck, .rates = core_l3_core_rates }, >> > { .parent = NULL } >> > }; >> > @@ -564,14 +564,14 @@ static struct clk core_l3_ck = { /* Used > for ick and fck, interconnect */ >> > }; >> > >> > /* usb_l4_ick */ >> > -static const struct clksel_rate usb_l4_ick_core_l3_rates[] = { >> > +static struct clksel_rate usb_l4_ick_core_l3_rates[] = { >> > { .div = 1, .val = 1, .flags = RATE_IN_24XX }, >> > { .div = 2, .val = 2, .flags = RATE_IN_24XX }, >> > { .div = 4, .val = 4, .flags = RATE_IN_24XX }, >> > { .div = 0 } >> > }; >> > >> > -static const struct clksel usb_l4_ick_clksel[] = { >> > +static struct clksel usb_l4_ick_clksel[] = { >> > { .parent = &core_l3_ck, .rates = usb_l4_ick_core_l3_rates }, >> > { .parent = NULL }, >> > }; >> > @@ -597,13 +597,13 @@ static struct clk usb_l4_ick = { /* FS-USB > interface clock */ >> > * functional clocks. Fixed APLL functional source clocks are > managed in >> > * this domain. >> > */ >> > -static const struct clksel_rate l4_core_l3_rates[] = { >> > +static struct clksel_rate l4_core_l3_rates[] = { >> > { .div = 1, .val = 1, .flags = RATE_IN_24XX }, >> > { .div = 2, .val = 2, .flags = RATE_IN_24XX }, >> > { .div = 0 } >> > }; >> > >> > -static const struct clksel l4_clksel[] = { >> > +static struct clksel l4_clksel[] = { >> > { .parent = &core_l3_ck, .rates = l4_core_l3_rates }, >> > { .parent = NULL } >> > }; >> > @@ -627,7 +627,7 @@ static struct clk l4_ck = { /* used > both as an ick and fck */ >> > * >> > * ssr = core/1/2/3/4/5, sst = 1/2 ssr. >> > */ >> > -static const struct clksel_rate ssi_ssr_sst_fck_core_rates[] = { >> > +static struct clksel_rate ssi_ssr_sst_fck_core_rates[] = { >> > { .div = 1, .val = 1, .flags = RATE_IN_24XX }, >> > { .div = 2, .val = 2, .flags = RATE_IN_24XX }, >> > { .div = 3, .val = 3, .flags = RATE_IN_24XX }, >> > @@ -637,7 +637,7 @@ static const struct clksel_rate > ssi_ssr_sst_fck_core_rates[] = { >> > { .div = 0 } >> > }; >> > >> > -static const struct clksel ssi_ssr_sst_fck_clksel[] = { >> > +static struct clksel ssi_ssr_sst_fck_clksel[] = { >> > { .parent = &core_ck, .rates = ssi_ssr_sst_fck_core_rates }, >> > { .parent = NULL } >> > }; >> > @@ -683,7 +683,7 @@ static struct clk ssi_l4_ick = { >> > */ >> > >> > /* This clksel struct is shared between gfx_3d_fck and gfx_2d_fck */ >> > -static const struct clksel gfx_fck_clksel[] = { >> > +static struct clksel gfx_fck_clksel[] = { >> > { .parent = &core_l3_ck, .rates = gfx_l3_rates }, >> > { .parent = NULL }, >> > }; >> > @@ -736,12 +736,12 @@ static struct clk gfx_ick = { >> > */ >> > /* XXX Add RATE_NOT_VALIDATED */ >> > >> > -static const struct clksel_rate dss1_fck_sys_rates[] = { >> > +static struct clksel_rate dss1_fck_sys_rates[] = { >> > { .div = 1, .val = 0, .flags = RATE_IN_24XX }, >> > { .div = 0 } >> > }; >> > >> > -static const struct clksel_rate dss1_fck_core_rates[] = { >> > +static struct clksel_rate dss1_fck_core_rates[] = { >> > { .div = 1, .val = 1, .flags = RATE_IN_24XX }, >> > { .div = 2, .val = 2, .flags = RATE_IN_24XX }, >> > { .div = 3, .val = 3, .flags = RATE_IN_24XX }, >> > @@ -755,7 +755,7 @@ static const struct clksel_rate > dss1_fck_core_rates[] = { >> > { .div = 0 } >> > }; >> > >> > -static const struct clksel dss1_fck_clksel[] = { >> > +static struct clksel dss1_fck_clksel[] = { >> > { .parent = &sys_ck, .rates = dss1_fck_sys_rates }, >> > { .parent = &core_ck, .rates = dss1_fck_core_rates }, >> > { .parent = NULL }, >> > @@ -785,17 +785,17 @@ static struct clk dss1_fck = { >> > .recalc = &omap2_clksel_recalc, >> > }; >> > >> > -static const struct clksel_rate dss2_fck_sys_rates[] = { >> > +static struct clksel_rate dss2_fck_sys_rates[] = { >> > { .div = 1, .val = 0, .flags = RATE_IN_24XX }, >> > { .div = 0 } >> > }; >> > >> > -static const struct clksel_rate dss2_fck_48m_rates[] = { >> > +static struct clksel_rate dss2_fck_48m_rates[] = { >> > { .div = 1, .val = 1, .flags = RATE_IN_24XX }, >> > { .div = 0 } >> > }; >> > >> > -static const struct clksel dss2_fck_clksel[] = { >> > +static struct clksel dss2_fck_clksel[] = { >> > { .parent = &sys_ck, .rates = dss2_fck_sys_rates }, >> > { .parent = &func_48m_ck, .rates = dss2_fck_48m_rates }, >> > { .parent = NULL } >> > @@ -831,12 +831,12 @@ static struct clk dss_54m_fck = { /* Alt clk > used in power management */ >> > * here will likely have an L4 interface parent, and may have > multiple >> > * functional clock parents. >> > */ >> > -static const struct clksel_rate gpt_alt_rates[] = { >> > +static struct clksel_rate gpt_alt_rates[] = { >> > { .div = 1, .val = 2, .flags = RATE_IN_24XX }, >> > { .div = 0 } >> > }; >> > >> > -static const struct clksel omap24xx_gpt_clksel[] = { >> > +static struct clksel omap24xx_gpt_clksel[] = { >> > { .parent = &func_32k_ck, .rates = gpt_32k_rates }, >> > { .parent = &sys_ck, .rates = gpt_sys_rates }, >> > { .parent = &alt_ck, .rates = gpt_alt_rates }, >> > @@ -1142,17 +1142,17 @@ static struct clk mcbsp1_ick = { >> > .recalc = &followparent_recalc, >> > }; >> > >> > -static const struct clksel_rate common_mcbsp_96m_rates[] = { >> > +static struct clksel_rate common_mcbsp_96m_rates[] = { >> > { .div = 1, .val = 0, .flags = RATE_IN_24XX }, >> > { .div = 0 } >> > }; >> > >> > -static const struct clksel_rate common_mcbsp_mcbsp_rates[] = { >> > +static struct clksel_rate common_mcbsp_mcbsp_rates[] = { >> > { .div = 1, .val = 1, .flags = RATE_IN_24XX }, >> > { .div = 0 } >> > }; >> > >> > -static const struct clksel mcbsp_fck_clksel[] = { >> > +static struct clksel mcbsp_fck_clksel[] = { >> > { .parent = &func_96m_ck, .rates = common_mcbsp_96m_rates }, >> > { .parent = &mcbsp_clks, .rates = common_mcbsp_mcbsp_rates }, >> > { .parent = NULL } >> > @@ -1618,12 +1618,12 @@ static struct clk vlynq_ick = { >> > .recalc = &followparent_recalc, >> > }; >> > >> > -static const struct clksel_rate vlynq_fck_96m_rates[] = { >> > +static struct clksel_rate vlynq_fck_96m_rates[] = { >> > { .div = 1, .val = 0, .flags = RATE_IN_242X }, >> > { .div = 0 } >> > }; >> > >> > -static const struct clksel_rate vlynq_fck_core_rates[] = { >> > +static struct clksel_rate vlynq_fck_core_rates[] = { >> > { .div = 1, .val = 1, .flags = RATE_IN_242X }, >> > { .div = 2, .val = 2, .flags = RATE_IN_242X }, >> > { .div = 3, .val = 3, .flags = RATE_IN_242X }, >> > @@ -1637,7 +1637,7 @@ static const struct clksel_rate > vlynq_fck_core_rates[] = { >> > { .div = 0 } >> > }; >> > >> > -static const struct clksel vlynq_fck_clksel[] = { >> > +static struct clksel vlynq_fck_clksel[] = { >> > { .parent = &func_96m_ck, .rates = vlynq_fck_96m_rates }, >> > { .parent = &core_ck, .rates = vlynq_fck_core_rates }, >> > { .parent = NULL } >> > diff --git a/arch/arm/mach-omap2/clock2430_data.c > b/arch/arm/mach-omap2/clock2430_data.c >> > index c047dcd..6f08a57 100644 >> > --- a/arch/arm/mach-omap2/clock2430_data.c >> > +++ b/arch/arm/mach-omap2/clock2430_data.c >> > @@ -161,17 +161,17 @@ static struct clk apll54_ck = { >> > >> > /* func_54m_ck */ >> > >> > -static const struct clksel_rate func_54m_apll54_rates[] = { >> > +static struct clksel_rate func_54m_apll54_rates[] = { >> > { .div = 1, .val = 0, .flags = RATE_IN_24XX }, >> > { .div = 0 }, >> > }; >> > >> > -static const struct clksel_rate func_54m_alt_rates[] = { >> > +static struct clksel_rate func_54m_alt_rates[] = { >> > { .div = 1, .val = 1, .flags = RATE_IN_24XX }, >> > { .div = 0 }, >> > }; >> > >> > -static const struct clksel func_54m_clksel[] = { >> > +static struct clksel func_54m_clksel[] = { >> > { .parent = &apll54_ck, .rates = func_54m_apll54_rates, }, >> > { .parent = &alt_ck, .rates = func_54m_alt_rates, }, >> > { .parent = NULL }, >> > @@ -198,17 +198,17 @@ static struct clk core_ck = { >> > }; >> > >> > /* func_96m_ck */ >> > -static const struct clksel_rate func_96m_apll96_rates[] = { >> > +static struct clksel_rate func_96m_apll96_rates[] = { >> > { .div = 1, .val = 0, .flags = RATE_IN_24XX }, >> > { .div = 0 }, >> > }; >> > >> > -static const struct clksel_rate func_96m_alt_rates[] = { >> > +static struct clksel_rate func_96m_alt_rates[] = { >> > { .div = 1, .val = 1, .flags = RATE_IN_243X }, >> > { .div = 0 }, >> > }; >> > >> > -static const struct clksel func_96m_clksel[] = { >> > +static struct clksel func_96m_clksel[] = { >> > { .parent = &apll96_ck, .rates = func_96m_apll96_rates }, >> > { .parent = &alt_ck, .rates = func_96m_alt_rates }, >> > { .parent = NULL } >> > @@ -228,17 +228,17 @@ static struct clk func_96m_ck = { >> > >> > /* func_48m_ck */ >> > >> > -static const struct clksel_rate func_48m_apll96_rates[] = { >> > +static struct clksel_rate func_48m_apll96_rates[] = { >> > { .div = 2, .val = 0, .flags = RATE_IN_24XX }, >> > { .div = 0 }, >> > }; >> > >> > -static const struct clksel_rate func_48m_alt_rates[] = { >> > +static struct clksel_rate func_48m_alt_rates[] = { >> > { .div = 1, .val = 1, .flags = RATE_IN_24XX }, >> > { .div = 0 }, >> > }; >> > >> > -static const struct clksel func_48m_clksel[] = { >> > +static struct clksel func_48m_clksel[] = { >> > { .parent = &apll96_ck, .rates = func_48m_apll96_rates }, >> > { .parent = &alt_ck, .rates = func_48m_alt_rates }, >> > { .parent = NULL } >> > @@ -283,27 +283,27 @@ static struct clk wdt1_osc_ck = { >> > * harmless since access to those clocks are gated by the struct clk >> > * flags fields, which mark them as 2420-only. >> > */ >> > -static const struct clksel_rate common_clkout_src_core_rates[] = { >> > +static struct clksel_rate common_clkout_src_core_rates[] = { >> > { .div = 1, .val = 0, .flags = RATE_IN_24XX }, >> > { .div = 0 } >> > }; >> > >> > -static const struct clksel_rate common_clkout_src_sys_rates[] = { >> > +static struct clksel_rate common_clkout_src_sys_rates[] = { >> > { .div = 1, .val = 1, .flags = RATE_IN_24XX }, >> > { .div = 0 } >> > }; >> > >> > -static const struct clksel_rate common_clkout_src_96m_rates[] = { >> > +static struct clksel_rate common_clkout_src_96m_rates[] = { >> > { .div = 1, .val = 2, .flags = RATE_IN_24XX }, >> > { .div = 0 } >> > }; >> > >> > -static const struct clksel_rate common_clkout_src_54m_rates[] = { >> > +static struct clksel_rate common_clkout_src_54m_rates[] = { >> > { .div = 1, .val = 3, .flags = RATE_IN_24XX }, >> > { .div = 0 } >> > }; >> > >> > -static const struct clksel common_clkout_src_clksel[] = { >> > +static struct clksel common_clkout_src_clksel[] = { >> > { .parent = &core_ck, .rates = common_clkout_src_core_rates }, >> > { .parent = &sys_ck, .rates = common_clkout_src_sys_rates }, >> > { .parent = &func_96m_ck, .rates = common_clkout_src_96m_rates }, >> > @@ -327,7 +327,7 @@ static struct clk sys_clkout_src = { >> > .set_rate = &omap2_clksel_set_rate >> > }; >> > >> > -static const struct clksel_rate common_clkout_rates[] = { >> > +static struct clksel_rate common_clkout_rates[] = { >> > { .div = 1, .val = 0, .flags = RATE_IN_24XX }, >> > { .div = 2, .val = 1, .flags = RATE_IN_24XX }, >> > { .div = 4, .val = 2, .flags = RATE_IN_24XX }, >> > @@ -336,7 +336,7 @@ static const struct clksel_rate > common_clkout_rates[] = { >> > { .div = 0 }, >> > }; >> > >> > -static const struct clksel sys_clkout_clksel[] = { >> > +static struct clksel sys_clkout_clksel[] = { >> > { .parent = &sys_clkout_src, .rates = common_clkout_rates }, >> > { .parent = NULL } >> > }; >> > @@ -375,13 +375,13 @@ static struct clk emul_ck = { >> > * - Base divider comes from: CM_CLKSEL_MPU >> > * >> > */ >> > -static const struct clksel_rate mpu_core_rates[] = { >> > +static struct clksel_rate mpu_core_rates[] = { >> > { .div = 1, .val = 1, .flags = RATE_IN_24XX }, >> > { .div = 2, .val = 2, .flags = RATE_IN_24XX }, >> > { .div = 0 }, >> > }; >> > >> > -static const struct clksel mpu_clksel[] = { >> > +static struct clksel mpu_clksel[] = { >> > { .parent = &core_ck, .rates = mpu_core_rates }, >> > { .parent = NULL } >> > }; >> > @@ -408,7 +408,7 @@ static struct clk mpu_ck = { /* Control cpu */ >> > * controls. The other branch gets further divided by 2 then possibly >> > * routed into a synchronizer and out of clocks abc. >> > */ >> > -static const struct clksel_rate dsp_fck_core_rates[] = { >> > +static struct clksel_rate dsp_fck_core_rates[] = { >> > { .div = 1, .val = 1, .flags = RATE_IN_24XX }, >> > { .div = 2, .val = 2, .flags = RATE_IN_24XX }, >> > { .div = 3, .val = 3, .flags = RATE_IN_24XX }, >> > @@ -416,7 +416,7 @@ static const struct clksel_rate > dsp_fck_core_rates[] = { >> > { .div = 0 }, >> > }; >> > >> > -static const struct clksel dsp_fck_clksel[] = { >> > +static struct clksel dsp_fck_clksel[] = { >> > { .parent = &core_ck, .rates = dsp_fck_core_rates }, >> > { .parent = NULL } >> > }; >> > @@ -435,14 +435,14 @@ static struct clk dsp_fck = { >> > }; >> > >> > /* DSP interface clock */ >> > -static const struct clksel_rate dsp_irate_ick_rates[] = { >> > +static struct clksel_rate dsp_irate_ick_rates[] = { >> > { .div = 1, .val = 1, .flags = RATE_IN_24XX }, >> > { .div = 2, .val = 2, .flags = RATE_IN_24XX }, >> > { .div = 3, .val = 3, .flags = RATE_IN_243X }, >> > { .div = 0 }, >> > }; >> > >> > -static const struct clksel dsp_irate_ick_clksel[] = { >> > +static struct clksel dsp_irate_ick_clksel[] = { >> > { .parent = &dsp_fck, .rates = dsp_irate_ick_rates }, >> > { .parent = NULL } >> > }; >> > @@ -486,14 +486,14 @@ static struct clk iva2_1_ick = { >> > * may very well need notification when the clock changes. Currently > for low >> > * operating points, these are taken care of in sleep.S. >> > */ >> > -static const struct clksel_rate core_l3_core_rates[] = { >> > +static struct clksel_rate core_l3_core_rates[] = { >> > { .div = 1, .val = 1, .flags = RATE_IN_24XX }, >> > { .div = 4, .val = 4, .flags = RATE_IN_24XX }, >> > { .div = 6, .val = 6, .flags = RATE_IN_24XX }, >> > { .div = 0 } >> > }; >> > >> > -static const struct clksel core_l3_clksel[] = { >> > +static struct clksel core_l3_clksel[] = { >> > { .parent = &core_ck, .rates = core_l3_core_rates }, >> > { .parent = NULL } >> > }; >> > @@ -510,14 +510,14 @@ static struct clk core_l3_ck = { /* Used > for ick and fck, interconnect */ >> > }; >> > >> > /* usb_l4_ick */ >> > -static const struct clksel_rate usb_l4_ick_core_l3_rates[] = { >> > +static struct clksel_rate usb_l4_ick_core_l3_rates[] = { >> > { .div = 1, .val = 1, .flags = RATE_IN_24XX }, >> > { .div = 2, .val = 2, .flags = RATE_IN_24XX }, >> > { .div = 4, .val = 4, .flags = RATE_IN_24XX }, >> > { .div = 0 } >> > }; >> > >> > -static const struct clksel usb_l4_ick_clksel[] = { >> > +static struct clksel usb_l4_ick_clksel[] = { >> > { .parent = &core_l3_ck, .rates = usb_l4_ick_core_l3_rates }, >> > { .parent = NULL }, >> > }; >> > @@ -543,13 +543,13 @@ static struct clk usb_l4_ick = { /* FS-USB > interface clock */ >> > * functional clocks. Fixed APLL functional source clocks are > managed in >> > * this domain. >> > */ >> > -static const struct clksel_rate l4_core_l3_rates[] = { >> > +static struct clksel_rate l4_core_l3_rates[] = { >> > { .div = 1, .val = 1, .flags = RATE_IN_24XX }, >> > { .div = 2, .val = 2, .flags = RATE_IN_24XX }, >> > { .div = 0 } >> > }; >> > >> > -static const struct clksel l4_clksel[] = { >> > +static struct clksel l4_clksel[] = { >> > { .parent = &core_l3_ck, .rates = l4_core_l3_rates }, >> > { .parent = NULL } >> > }; >> > @@ -573,7 +573,7 @@ static struct clk l4_ck = { /* used > both as an ick and fck */ >> > * >> > * ssr = core/1/2/3/4/5, sst = 1/2 ssr. >> > */ >> > -static const struct clksel_rate ssi_ssr_sst_fck_core_rates[] = { >> > +static struct clksel_rate ssi_ssr_sst_fck_core_rates[] = { >> > { .div = 1, .val = 1, .flags = RATE_IN_24XX }, >> > { .div = 2, .val = 2, .flags = RATE_IN_24XX }, >> > { .div = 3, .val = 3, .flags = RATE_IN_24XX }, >> > @@ -582,7 +582,7 @@ static const struct clksel_rate > ssi_ssr_sst_fck_core_rates[] = { >> > { .div = 0 } >> > }; >> > >> > -static const struct clksel ssi_ssr_sst_fck_clksel[] = { >> > +static struct clksel ssi_ssr_sst_fck_clksel[] = { >> > { .parent = &core_ck, .rates = ssi_ssr_sst_fck_core_rates }, >> > { .parent = NULL } >> > }; >> > @@ -628,7 +628,7 @@ static struct clk ssi_l4_ick = { >> > */ >> > >> > /* This clksel struct is shared between gfx_3d_fck and gfx_2d_fck */ >> > -static const struct clksel gfx_fck_clksel[] = { >> > +static struct clksel gfx_fck_clksel[] = { >> > { .parent = &core_l3_ck, .rates = gfx_l3_rates }, >> > { .parent = NULL }, >> > }; >> > @@ -678,7 +678,7 @@ static struct clk gfx_ick = { >> > * MDM_ICLK >> > * These clocks are usable in chassis mode only. >> > */ >> > -static const struct clksel_rate mdm_ick_core_rates[] = { >> > +static struct clksel_rate mdm_ick_core_rates[] = { >> > { .div = 1, .val = 1, .flags = RATE_IN_243X }, >> > { .div = 4, .val = 4, .flags = RATE_IN_243X }, >> > { .div = 6, .val = 6, .flags = RATE_IN_243X }, >> > @@ -686,7 +686,7 @@ static const struct clksel_rate > mdm_ick_core_rates[] = { >> > { .div = 0 } >> > }; >> > >> > -static const struct clksel mdm_ick_clksel[] = { >> > +static struct clksel mdm_ick_clksel[] = { >> > { .parent = &core_ck, .rates = mdm_ick_core_rates }, >> > { .parent = NULL } >> > }; >> > @@ -724,12 +724,12 @@ static struct clk mdm_osc_ck = { >> > */ >> > /* XXX Add RATE_NOT_VALIDATED */ >> > >> > -static const struct clksel_rate dss1_fck_sys_rates[] = { >> > +static struct clksel_rate dss1_fck_sys_rates[] = { >> > { .div = 1, .val = 0, .flags = RATE_IN_24XX }, >> > { .div = 0 } >> > }; >> > >> > -static const struct clksel_rate dss1_fck_core_rates[] = { >> > +static struct clksel_rate dss1_fck_core_rates[] = { >> > { .div = 1, .val = 1, .flags = RATE_IN_24XX }, >> > { .div = 2, .val = 2, .flags = RATE_IN_24XX }, >> > { .div = 3, .val = 3, .flags = RATE_IN_24XX }, >> > @@ -743,7 +743,7 @@ static const struct clksel_rate > dss1_fck_core_rates[] = { >> > { .div = 0 } >> > }; >> > >> > -static const struct clksel dss1_fck_clksel[] = { >> > +static struct clksel dss1_fck_clksel[] = { >> > { .parent = &sys_ck, .rates = dss1_fck_sys_rates }, >> > { .parent = &core_ck, .rates = dss1_fck_core_rates }, >> > { .parent = NULL }, >> > @@ -773,17 +773,17 @@ static struct clk dss1_fck = { >> > .recalc = &omap2_clksel_recalc, >> > }; >> > >> > -static const struct clksel_rate dss2_fck_sys_rates[] = { >> > +static struct clksel_rate dss2_fck_sys_rates[] = { >> > { .div = 1, .val = 0, .flags = RATE_IN_24XX }, >> > { .div = 0 } >> > }; >> > >> > -static const struct clksel_rate dss2_fck_48m_rates[] = { >> > +static struct clksel_rate dss2_fck_48m_rates[] = { >> > { .div = 1, .val = 1, .flags = RATE_IN_24XX }, >> > { .div = 0 } >> > }; >> > >> > -static const struct clksel dss2_fck_clksel[] = { >> > +static struct clksel dss2_fck_clksel[] = { >> > { .parent = &sys_ck, .rates = dss2_fck_sys_rates }, >> > { .parent = &func_48m_ck, .rates = dss2_fck_48m_rates }, >> > { .parent = NULL } >> > @@ -819,12 +819,12 @@ static struct clk dss_54m_fck = { /* Alt clk > used in power management */ >> > * here will likely have an L4 interface parent, and may have > multiple >> > * functional clock parents. >> > */ >> > -static const struct clksel_rate gpt_alt_rates[] = { >> > +static struct clksel_rate gpt_alt_rates[] = { >> > { .div = 1, .val = 2, .flags = RATE_IN_24XX }, >> > { .div = 0 } >> > }; >> > >> > -static const struct clksel omap24xx_gpt_clksel[] = { >> > +static struct clksel omap24xx_gpt_clksel[] = { >> > { .parent = &func_32k_ck, .rates = gpt_32k_rates }, >> > { .parent = &sys_ck, .rates = gpt_sys_rates }, >> > { .parent = &alt_ck, .rates = gpt_alt_rates }, >> > @@ -1130,17 +1130,17 @@ static struct clk mcbsp1_ick = { >> > .recalc = &followparent_recalc, >> > }; >> > >> > -static const struct clksel_rate common_mcbsp_96m_rates[] = { >> > +static struct clksel_rate common_mcbsp_96m_rates[] = { >> > { .div = 1, .val = 0, .flags = RATE_IN_24XX }, >> > { .div = 0 } >> > }; >> > >> > -static const struct clksel_rate common_mcbsp_mcbsp_rates[] = { >> > +static struct clksel_rate common_mcbsp_mcbsp_rates[] = { >> > { .div = 1, .val = 1, .flags = RATE_IN_24XX }, >> > { .div = 0 } >> > }; >> > >> > -static const struct clksel mcbsp_fck_clksel[] = { >> > +static struct clksel mcbsp_fck_clksel[] = { >> > { .parent = &func_96m_ck, .rates = common_mcbsp_96m_rates }, >> > { .parent = &mcbsp_clks, .rates = common_mcbsp_mcbsp_rates }, >> > { .parent = NULL } >> > diff --git a/arch/arm/mach-omap2/clock3xxx_data.c > b/arch/arm/mach-omap2/clock3xxx_data.c >> > index 403a4a1..9c87adb 100644 >> > --- a/arch/arm/mach-omap2/clock3xxx_data.c >> > +++ b/arch/arm/mach-omap2/clock3xxx_data.c >> > @@ -109,37 +109,37 @@ static struct clk virt_38_4m_ck = { >> > .rate = 38400000, >> > }; >> > >> > -static const struct clksel_rate osc_sys_12m_rates[] = { >> > +static struct clksel_rate osc_sys_12m_rates[] = { >> > { .div = 1, .val = 0, .flags = RATE_IN_3XXX }, >> > { .div = 0 } >> > }; >> > >> > -static const struct clksel_rate osc_sys_13m_rates[] = { >> > +static struct clksel_rate osc_sys_13m_rates[] = { >> > { .div = 1, .val = 1, .flags = RATE_IN_3XXX }, >> > { .div = 0 } >> > }; >> > >> > -static const struct clksel_rate osc_sys_16_8m_rates[] = { >> > +static struct clksel_rate osc_sys_16_8m_rates[] = { >> > { .div = 1, .val = 5, .flags = RATE_IN_3430ES2PLUS_36XX }, >> > { .div = 0 } >> > }; >> > >> > -static const struct clksel_rate osc_sys_19_2m_rates[] = { >> > +static struct clksel_rate osc_sys_19_2m_rates[] = { >> > { .div = 1, .val = 2, .flags = RATE_IN_3XXX }, >> > { .div = 0 } >> > }; >> > >> > -static const struct clksel_rate osc_sys_26m_rates[] = { >> > +static struct clksel_rate osc_sys_26m_rates[] = { >> > { .div = 1, .val = 3, .flags = RATE_IN_3XXX }, >> > { .div = 0 } >> > }; >> > >> > -static const struct clksel_rate osc_sys_38_4m_rates[] = { >> > +static struct clksel_rate osc_sys_38_4m_rates[] = { >> > { .div = 1, .val = 4, .flags = RATE_IN_3XXX }, >> > { .div = 0 } >> > }; >> > >> > -static const struct clksel osc_sys_clksel[] = { >> > +static struct clksel osc_sys_clksel[] = { >> > { .parent = &virt_12m_ck, .rates = osc_sys_12m_rates }, >> > { .parent = &virt_13m_ck, .rates = osc_sys_13m_rates }, >> > { .parent = &virt_16_8m_ck, .rates = osc_sys_16_8m_rates }, >> > @@ -162,13 +162,13 @@ static struct clk osc_sys_ck = { >> > .recalc = &omap2_clksel_recalc, >> > }; >> > >> > -static const struct clksel_rate div2_rates[] = { >> > +static struct clksel_rate div2_rates[] = { >> > { .div = 1, .val = 1, .flags = RATE_IN_3XXX }, >> > { .div = 2, .val = 2, .flags = RATE_IN_3XXX }, >> > { .div = 0 } >> > }; >> > >> > -static const struct clksel sys_clksel[] = { >> > +static struct clksel sys_clksel[] = { >> > { .parent = &osc_sys_ck, .rates = div2_rates }, >> > { .parent = NULL } >> > }; >> > @@ -212,7 +212,7 @@ static struct clk sys_clkout1 = { >> > >> > /* CM CLOCKS */ >> > >> > -static const struct clksel_rate div16_dpll_rates[] = { >> > +static struct clksel_rate div16_dpll_rates[] = { >> > { .div = 1, .val = 1, .flags = RATE_IN_3XXX }, >> > { .div = 2, .val = 2, .flags = RATE_IN_3XXX }, >> > { .div = 3, .val = 3, .flags = RATE_IN_3XXX }, >> > @@ -232,7 +232,7 @@ static const struct clksel_rate div16_dpll_rates[] > = { >> > { .div = 0 } >> > }; >> > >> > -static const struct clksel_rate dpll4_rates[] = { >> > +static struct clksel_rate dpll4_rates[] = { >> > { .div = 1, .val = 1, .flags = RATE_IN_3XXX }, >> > { .div = 2, .val = 2, .flags = RATE_IN_3XXX }, >> > { .div = 3, .val = 3, .flags = RATE_IN_3XXX }, >> > @@ -318,7 +318,7 @@ static struct clk dpll1_x2_ck = { >> > }; >> > >> > /* On DPLL1, unlike other DPLLs, the divider is downstream from > CLKOUTX2 */ >> > -static const struct clksel div16_dpll1_x2m2_clksel[] = { >> > +static struct clksel div16_dpll1_x2m2_clksel[] = { >> > { .parent = &dpll1_x2_ck, .rates = div16_dpll_rates }, >> > { .parent = NULL } >> > }; >> > @@ -378,7 +378,7 @@ static struct clk dpll2_ck = { >> > .recalc = &omap3_dpll_recalc, >> > }; >> > >> > -static const struct clksel div16_dpll2_m2x2_clksel[] = { >> > +static struct clksel div16_dpll2_m2x2_clksel[] = { >> > { .parent = &dpll2_ck, .rates = div16_dpll_rates }, >> > { .parent = NULL } >> > }; >> > @@ -449,7 +449,7 @@ static struct clk dpll3_x2_ck = { >> > .recalc = &omap3_clkoutx2_recalc, >> > }; >> > >> > -static const struct clksel_rate div31_dpll3_rates[] = { >> > +static struct clksel_rate div31_dpll3_rates[] = { >> > { .div = 1, .val = 1, .flags = RATE_IN_3XXX }, >> > { .div = 2, .val = 2, .flags = RATE_IN_3XXX }, >> > { .div = 3, .val = 3, .flags = RATE_IN_3430ES2PLUS_36XX }, >> > @@ -484,7 +484,7 @@ static const struct clksel_rate > div31_dpll3_rates[] = { >> > { .div = 0 }, >> > }; >> > >> > -static const struct clksel div31_dpll3m2_clksel[] = { >> > +static struct clksel div31_dpll3m2_clksel[] = { >> > { .parent = &dpll3_ck, .rates = div31_dpll3_rates }, >> > { .parent = NULL } >> > }; >> > @@ -520,7 +520,7 @@ static struct clk dpll3_m2x2_ck = { >> > }; >> > >> > /* The PWRDN bit is apparently only available on 3430ES2 and above */ >> > -static const struct clksel div16_dpll3_clksel[] = { >> > +static struct clksel div16_dpll3_clksel[] = { >> > { .parent = &dpll3_ck, .rates = div16_dpll_rates }, >> > { .parent = NULL } >> > }; >> > @@ -635,7 +635,7 @@ static struct clk dpll4_x2_ck = { >> > .recalc = &omap3_clkoutx2_recalc, >> > }; >> > >> > -static const struct clksel dpll4_clksel[] = { >> > +static struct clksel dpll4_clksel[] = { >> > { .parent = &dpll4_ck, .rates = dpll4_rates }, >> > { .parent = NULL } >> > }; >> > @@ -680,23 +680,23 @@ static struct clk omap_192m_alwon_fck = { >> > .recalc = &followparent_recalc, >> > }; >> > >> > -static const struct clksel_rate omap_96m_alwon_fck_rates[] = { >> > +static struct clksel_rate omap_96m_alwon_fck_rates[] = { >> > { .div = 1, .val = 1, .flags = RATE_IN_36XX }, >> > { .div = 2, .val = 2, .flags = RATE_IN_36XX }, >> > { .div = 0 } >> > }; >> > >> > -static const struct clksel omap_96m_alwon_fck_clksel[] = { >> > +static struct clksel omap_96m_alwon_fck_clksel[] = { >> > { .parent = &omap_192m_alwon_fck, .rates = > omap_96m_alwon_fck_rates }, >> > { .parent = NULL } >> > }; >> > >> > -static const struct clksel_rate omap_96m_dpll_rates[] = { >> > +static struct clksel_rate omap_96m_dpll_rates[] = { >> > { .div = 1, .val = 0, .flags = RATE_IN_3XXX }, >> > { .div = 0 } >> > }; >> > >> > -static const struct clksel_rate omap_96m_sys_rates[] = { >> > +static struct clksel_rate omap_96m_sys_rates[] = { >> > { .div = 1, .val = 1, .flags = RATE_IN_3XXX }, >> > { .div = 0 } >> > }; >> > @@ -726,7 +726,7 @@ static struct clk cm_96m_fck = { >> > .recalc = &followparent_recalc, >> > }; >> > >> > -static const struct clksel omap_96m_fck_clksel[] = { >> > +static struct clksel omap_96m_fck_clksel[] = { >> > { .parent = &cm_96m_fck, .rates = omap_96m_dpll_rates }, >> > { .parent = &sys_ck, .rates = omap_96m_sys_rates }, >> > { .parent = NULL } >> > @@ -768,17 +768,17 @@ static struct clk dpll4_m3x2_ck = { >> > .recalc = &omap3_clkoutx2_recalc, >> > }; >> > >> > -static const struct clksel_rate omap_54m_d4m3x2_rates[] = { >> > +static struct clksel_rate omap_54m_d4m3x2_rates[] = { >> > { .div = 1, .val = 0, .flags = RATE_IN_3XXX }, >> > { .div = 0 } >> > }; >> > >> > -static const struct clksel_rate omap_54m_alt_rates[] = { >> > +static struct clksel_rate omap_54m_alt_rates[] = { >> > { .div = 1, .val = 1, .flags = RATE_IN_3XXX }, >> > { .div = 0 } >> > }; >> > >> > -static const struct clksel omap_54m_clksel[] = { >> > +static struct clksel omap_54m_clksel[] = { >> > { .parent = &dpll4_m3x2_ck, .rates = omap_54m_d4m3x2_rates }, >> > { .parent = &sys_altclk, .rates = omap_54m_alt_rates }, >> > { .parent = NULL } >> > @@ -794,17 +794,17 @@ static struct clk omap_54m_fck = { >> > .recalc = &omap2_clksel_recalc, >> > }; >> > >> > -static const struct clksel_rate omap_48m_cm96m_rates[] = { >> > +static struct clksel_rate omap_48m_cm96m_rates[] = { >> > { .div = 2, .val = 0, .flags = RATE_IN_3XXX }, >> > { .div = 0 } >> > }; >> > >> > -static const struct clksel_rate omap_48m_alt_rates[] = { >> > +static struct clksel_rate omap_48m_alt_rates[] = { >> > { .div = 1, .val = 1, .flags = RATE_IN_3XXX }, >> > { .div = 0 } >> > }; >> > >> > -static const struct clksel omap_48m_clksel[] = { >> > +static struct clksel omap_48m_clksel[] = { >> > { .parent = &cm_96m_fck, .rates = omap_48m_cm96m_rates }, >> > { .parent = &sys_altclk, .rates = omap_48m_alt_rates }, >> > { .parent = NULL } >> > @@ -953,7 +953,7 @@ static struct clk dpll5_ck = { >> > .recalc = &omap3_dpll_recalc, >> > }; >> > >> > -static const struct clksel div16_dpll5_clksel[] = { >> > +static struct clksel div16_dpll5_clksel[] = { >> > { .parent = &dpll5_ck, .rates = div16_dpll_rates }, >> > { .parent = NULL } >> > }; >> > @@ -972,27 +972,27 @@ static struct clk dpll5_m2_ck = { >> > >> > /* CM EXTERNAL CLOCK OUTPUTS */ >> > >> > -static const struct clksel_rate clkout2_src_core_rates[] = { >> > +static struct clksel_rate clkout2_src_core_rates[] = { >> > { .div = 1, .val = 0, .flags = RATE_IN_3XXX }, >> > { .div = 0 } >> > }; >> > >> > -static const struct clksel_rate clkout2_src_sys_rates[] = { >> > +static struct clksel_rate clkout2_src_sys_rates[] = { >> > { .div = 1, .val = 1, .flags = RATE_IN_3XXX }, >> > { .div = 0 } >> > }; >> > >> > -static const struct clksel_rate clkout2_src_96m_rates[] = { >> > +static struct clksel_rate clkout2_src_96m_rates[] = { >> > { .div = 1, .val = 2, .flags = RATE_IN_3XXX }, >> > { .div = 0 } >> > }; >> > >> > -static const struct clksel_rate clkout2_src_54m_rates[] = { >> > +static struct clksel_rate clkout2_src_54m_rates[] = { >> > { .div = 1, .val = 3, .flags = RATE_IN_3XXX }, >> > { .div = 0 } >> > }; >> > >> > -static const struct clksel clkout2_src_clksel[] = { >> > +static struct clksel clkout2_src_clksel[] = { >> > { .parent = &core_ck, .rates = clkout2_src_core_rates }, >> > { .parent = &sys_ck, .rates = clkout2_src_sys_rates }, >> > { .parent = &cm_96m_fck, .rates = clkout2_src_96m_rates }, >> > @@ -1013,7 +1013,7 @@ static struct clk clkout2_src_ck = { >> > .recalc = &omap2_clksel_recalc, >> > }; >> > >> > -static const struct clksel_rate sys_clkout2_rates[] = { >> > +static struct clksel_rate sys_clkout2_rates[] = { >> > { .div = 1, .val = 0, .flags = RATE_IN_3XXX }, >> > { .div = 2, .val = 1, .flags = RATE_IN_3XXX }, >> > { .div = 4, .val = 2, .flags = RATE_IN_3XXX }, >> > @@ -1022,7 +1022,7 @@ static const struct clksel_rate > sys_clkout2_rates[] = { >> > { .div = 0 }, >> > }; >> > >> > -static const struct clksel sys_clkout2_clksel[] = { >> > +static struct clksel sys_clkout2_clksel[] = { >> > { .parent = &clkout2_src_ck, .rates = sys_clkout2_rates }, >> > { .parent = NULL }, >> > }; >> > @@ -1050,14 +1050,14 @@ static struct clk corex2_fck = { >> > >> > /* DPLL power domain clock controls */ >> > >> > -static const struct clksel_rate div4_rates[] = { >> > +static struct clksel_rate div4_rates[] = { >> > { .div = 1, .val = 1, .flags = RATE_IN_3XXX }, >> > { .div = 2, .val = 2, .flags = RATE_IN_3XXX }, >> > { .div = 4, .val = 4, .flags = RATE_IN_3XXX }, >> > { .div = 0 } >> > }; >> > >> > -static const struct clksel div4_core_clksel[] = { >> > +static struct clksel div4_core_clksel[] = { >> > { .parent = &core_ck, .rates = div4_rates }, >> > { .parent = NULL } >> > }; >> > @@ -1086,13 +1086,13 @@ static struct clk mpu_ck = { >> > }; >> > >> > /* arm_fck is divided by two when DPLL1 locked; otherwise, > passthrough mpu_ck */ >> > -static const struct clksel_rate arm_fck_rates[] = { >> > +static struct clksel_rate arm_fck_rates[] = { >> > { .div = 1, .val = 0, .flags = RATE_IN_3XXX }, >> > { .div = 2, .val = 1, .flags = RATE_IN_3XXX }, >> > { .div = 0 }, >> > }; >> > >> > -static const struct clksel arm_fck_clksel[] = { >> > +static struct clksel arm_fck_clksel[] = { >> > { .parent = &mpu_ck, .rates = arm_fck_rates }, >> > { .parent = NULL } >> > }; >> > @@ -1145,7 +1145,7 @@ static struct clk iva2_ck = { >> > >> > /* Common interface clocks */ >> > >> > -static const struct clksel div2_core_clksel[] = { >> > +static struct clksel div2_core_clksel[] = { >> > { .parent = &core_ck, .rates = div2_rates }, >> > { .parent = NULL } >> > }; >> > @@ -1162,7 +1162,7 @@ static struct clk l3_ick = { >> > .recalc = &omap2_clksel_recalc, >> > }; >> > >> > -static const struct clksel div2_l3_clksel[] = { >> > +static struct clksel div2_l3_clksel[] = { >> > { .parent = &l3_ick, .rates = div2_rates }, >> > { .parent = NULL } >> > }; >> > @@ -1180,7 +1180,7 @@ static struct clk l4_ick = { >> > >> > }; >> > >> > -static const struct clksel div2_l4_clksel[] = { >> > +static struct clksel div2_l4_clksel[] = { >> > { .parent = &l4_ick, .rates = div2_rates }, >> > { .parent = NULL } >> > }; >> > @@ -1200,7 +1200,7 @@ static struct clk rm_ick = { >> > >> > /* GFX clocks are in 3430ES1 only. 3430ES2 and later uses the SGX > instead */ >> > >> > -static const struct clksel gfx_l3_clksel[] = { >> > +static struct clksel gfx_l3_clksel[] = { >> > { .parent = &l3_ick, .rates = gfx_l3_rates }, >> > { .parent = NULL } >> > }; >> > @@ -1257,7 +1257,7 @@ static struct clk gfx_cg2_ck = { >> > >> > /* SGX power domain - 3430ES2 only */ >> > >> > -static const struct clksel_rate sgx_core_rates[] = { >> > +static struct clksel_rate sgx_core_rates[] = { >> > { .div = 2, .val = 5, .flags = RATE_IN_36XX }, >> > { .div = 3, .val = 0, .flags = RATE_IN_3XXX }, >> > { .div = 4, .val = 1, .flags = RATE_IN_3XXX }, >> > @@ -1265,23 +1265,23 @@ static const struct clksel_rate > sgx_core_rates[] = { >> > { .div = 0 }, >> > }; >> > >> > -static const struct clksel_rate sgx_192m_rates[] = { >> > +static struct clksel_rate sgx_192m_rates[] = { >> > { .div = 1, .val = 4, .flags = RATE_IN_36XX }, >> > { .div = 0 }, >> > }; >> > >> > -static const struct clksel_rate sgx_corex2_rates[] = { >> > +static struct clksel_rate sgx_corex2_rates[] = { >> > { .div = 3, .val = 6, .flags = RATE_IN_36XX }, >> > { .div = 5, .val = 7, .flags = RATE_IN_36XX }, >> > { .div = 0 }, >> > }; >> > >> > -static const struct clksel_rate sgx_96m_rates[] = { >> > +static struct clksel_rate sgx_96m_rates[] = { >> > { .div = 1, .val = 3, .flags = RATE_IN_3XXX }, >> > { .div = 0 }, >> > }; >> > >> > -static const struct clksel sgx_clksel[] = { >> > +static struct clksel sgx_clksel[] = { >> > { .parent = &core_ck, .rates = sgx_core_rates }, >> > { .parent = &cm_96m_fck, .rates = sgx_96m_rates }, >> > { .parent = &omap_192m_alwon_fck, .rates = sgx_192m_rates }, >> > @@ -1356,7 +1356,7 @@ static struct clk mad2d_ick = { >> > .recalc = &followparent_recalc, >> > }; >> > >> > -static const struct clksel omap343x_gpt_clksel[] = { >> > +static struct clksel omap343x_gpt_clksel[] = { >> > { .parent = &omap_32k_fck, .rates = gpt_32k_rates }, >> > { .parent = &sys_ck, .rates = gpt_sys_rates }, >> > { .parent = NULL} >> > @@ -1501,17 +1501,17 @@ static struct clk i2c1_fck = { >> > * MCBSP 1 & 5 get their 96MHz clock from core_96m_fck; >> > * MCBSP 2, 3, 4 get their 96MHz clock from per_96m_fck. >> > */ >> > -static const struct clksel_rate common_mcbsp_96m_rates[] = { >> > +static struct clksel_rate common_mcbsp_96m_rates[] = { >> > { .div = 1, .val = 0, .flags = RATE_IN_3XXX }, >> > { .div = 0 } >> > }; >> > >> > -static const struct clksel_rate common_mcbsp_mcbsp_rates[] = { >> > +static struct clksel_rate common_mcbsp_mcbsp_rates[] = { >> > { .div = 1, .val = 1, .flags = RATE_IN_3XXX }, >> > { .div = 0 } >> > }; >> > >> > -static const struct clksel mcbsp_15_clksel[] = { >> > +static struct clksel mcbsp_15_clksel[] = { >> > { .parent = &core_96m_fck, .rates = common_mcbsp_96m_rates }, >> > { .parent = &mcbsp_clks, .rates = common_mcbsp_mcbsp_rates }, >> > { .parent = NULL } >> > @@ -1643,7 +1643,7 @@ static struct clk hdq_fck = { >> > >> > /* DPLL3-derived clock */ >> > >> > -static const struct clksel_rate ssi_ssr_corex2_rates[] = { >> > +static struct clksel_rate ssi_ssr_corex2_rates[] = { >> > { .div = 1, .val = 1, .flags = RATE_IN_3XXX }, >> > { .div = 2, .val = 2, .flags = RATE_IN_3XXX }, >> > { .div = 3, .val = 3, .flags = RATE_IN_3XXX }, >> > @@ -1653,7 +1653,7 @@ static const struct clksel_rate > ssi_ssr_corex2_rates[] = { >> > { .div = 0 } >> > }; >> > >> > -static const struct clksel ssi_ssr_clksel[] = { >> > +static struct clksel ssi_ssr_clksel[] = { >> > { .parent = &corex2_fck, .rates = ssi_ssr_corex2_rates }, >> > { .parent = NULL } >> > }; >> > @@ -2078,7 +2078,7 @@ static struct clk ssi_ick_3430es2 = { >> > /* REVISIT: Technically the TRM claims that this is CORE_CLK based, >> > * but l4_ick makes more sense to me */ >> > >> > -static const struct clksel usb_l4_clksel[] = { >> > +static struct clksel usb_l4_clksel[] = { >> > { .parent = &l4_ick, .rates = div2_rates }, >> > { .parent = NULL }, >> > }; >> > @@ -2282,7 +2282,7 @@ static struct clk usbhost_ick = { >> > >> > /* WKUP */ >> > >> > -static const struct clksel_rate usim_96m_rates[] = { >> > +static struct clksel_rate usim_96m_rates[] = { >> > { .div = 2, .val = 3, .flags = RATE_IN_3XXX }, >> > { .div = 4, .val = 4, .flags = RATE_IN_3XXX }, >> > { .div = 8, .val = 5, .flags = RATE_IN_3XXX }, >> > @@ -2290,7 +2290,7 @@ static const struct clksel_rate usim_96m_rates[] > = { >> > { .div = 0 }, >> > }; >> > >> > -static const struct clksel_rate usim_120m_rates[] = { >> > +static struct clksel_rate usim_120m_rates[] = { >> > { .div = 4, .val = 7, .flags = RATE_IN_3XXX }, >> > { .div = 8, .val = 8, .flags = RATE_IN_3XXX }, >> > { .div = 16, .val = 9, .flags = RATE_IN_3XXX }, >> > @@ -2298,7 +2298,7 @@ static const struct clksel_rate > usim_120m_rates[] = { >> > { .div = 0 }, >> > }; >> > >> > -static const struct clksel usim_clksel[] = { >> > +static struct clksel usim_clksel[] = { >> > { .parent = &omap_96m_fck, .rates = usim_96m_rates }, >> > { .parent = &dpll5_m2_ck, .rates = usim_120m_rates }, >> > { .parent = &sys_ck, .rates = div2_rates }, >> > @@ -2851,7 +2851,7 @@ static struct clk mcbsp4_ick = { >> > .recalc = &followparent_recalc, >> > }; >> > >> > -static const struct clksel mcbsp_234_clksel[] = { >> > +static struct clksel mcbsp_234_clksel[] = { >> > { .parent = &per_96m_fck, .rates = common_mcbsp_96m_rates }, >> > { .parent = &mcbsp_clks, .rates = common_mcbsp_mcbsp_rates }, >> > { .parent = NULL } >> > @@ -2900,27 +2900,27 @@ static struct clk mcbsp4_fck = { >> > >> > /* More information: ARM Cortex-A8 Technical Reference Manual, sect > 10.1 */ >> > >> > -static const struct clksel_rate emu_src_sys_rates[] = { >> > +static struct clksel_rate emu_src_sys_rates[] = { >> > { .div = 1, .val = 0, .flags = RATE_IN_3XXX }, >> > { .div = 0 }, >> > }; >> > >> > -static const struct clksel_rate emu_src_core_rates[] = { >> > +static struct clksel_rate emu_src_core_rates[] = { >> > { .div = 1, .val = 1, .flags = RATE_IN_3XXX }, >> > { .div = 0 }, >> > }; >> > >> > -static const struct clksel_rate emu_src_per_rates[] = { >> > +static struct clksel_rate emu_src_per_rates[] = { >> > { .div = 1, .val = 2, .flags = RATE_IN_3XXX }, >> > { .div = 0 }, >> > }; >> > >> > -static const struct clksel_rate emu_src_mpu_rates[] = { >> > +static struct clksel_rate emu_src_mpu_rates[] = { >> > { .div = 1, .val = 3, .flags = RATE_IN_3XXX }, >> > { .div = 0 }, >> > }; >> > >> > -static const struct clksel emu_src_clksel[] = { >> > +static struct clksel emu_src_clksel[] = { >> > { .parent = &sys_ck, .rates = emu_src_sys_rates }, >> > { .parent = &emu_core_alwon_ck, .rates = emu_src_core_rates }, >> > { .parent = &emu_per_alwon_ck, .rates = emu_src_per_rates }, >> > @@ -2944,7 +2944,7 @@ static struct clk emu_src_ck = { >> > .recalc = &omap2_clksel_recalc, >> > }; >> > >> > -static const struct clksel_rate pclk_emu_rates[] = { >> > +static struct clksel_rate pclk_emu_rates[] = { >> > { .div = 2, .val = 2, .flags = RATE_IN_3XXX }, >> > { .div = 3, .val = 3, .flags = RATE_IN_3XXX }, >> > { .div = 4, .val = 4, .flags = RATE_IN_3XXX }, >> > @@ -2952,7 +2952,7 @@ static const struct clksel_rate pclk_emu_rates[] > = { >> > { .div = 0 }, >> > }; >> > >> > -static const struct clksel pclk_emu_clksel[] = { >> > +static struct clksel pclk_emu_clksel[] = { >> > { .parent = &emu_src_ck, .rates = pclk_emu_rates }, >> > { .parent = NULL }, >> > }; >> > @@ -2968,14 +2968,14 @@ static struct clk pclk_fck = { >> > .recalc = &omap2_clksel_recalc, >> > }; >> > >> > -static const struct clksel_rate pclkx2_emu_rates[] = { >> > +static struct clksel_rate pclkx2_emu_rates[] = { >> > { .div = 1, .val = 1, .flags = RATE_IN_3XXX }, >> > { .div = 2, .val = 2, .flags = RATE_IN_3XXX }, >> > { .div = 3, .val = 3, .flags = RATE_IN_3XXX }, >> > { .div = 0 }, >> > }; >> > >> > -static const struct clksel pclkx2_emu_clksel[] = { >> > +static struct clksel pclkx2_emu_clksel[] = { >> > { .parent = &emu_src_ck, .rates = pclkx2_emu_rates }, >> > { .parent = NULL }, >> > }; >> > @@ -2991,7 +2991,7 @@ static struct clk pclkx2_fck = { >> > .recalc = &omap2_clksel_recalc, >> > }; >> > >> > -static const struct clksel atclk_emu_clksel[] = { >> > +static struct clksel atclk_emu_clksel[] = { >> > { .parent = &emu_src_ck, .rates = div2_rates }, >> > { .parent = NULL }, >> > }; >> > @@ -3018,14 +3018,14 @@ static struct clk traceclk_src_fck = { >> > .recalc = &omap2_clksel_recalc, >> > }; >> > >> > -static const struct clksel_rate traceclk_rates[] = { >> > +static struct clksel_rate traceclk_rates[] = { >> > { .div = 1, .val = 1, .flags = RATE_IN_3XXX }, >> > { .div = 2, .val = 2, .flags = RATE_IN_3XXX }, >> > { .div = 4, .val = 4, .flags = RATE_IN_3XXX }, >> > { .div = 0 }, >> > }; >> > >> > -static const struct clksel traceclk_clksel[] = { >> > +static struct clksel traceclk_clksel[] = { >> > { .parent = &traceclk_src_fck, .rates = traceclk_rates }, >> > { .parent = NULL }, >> > }; >> > diff --git a/arch/arm/mach-omap2/clock44xx_data.c > b/arch/arm/mach-omap2/clock44xx_data.c >> > index e8cb32f..b02bfae 100644 >> > --- a/arch/arm/mach-omap2/clock44xx_data.c >> > +++ b/arch/arm/mach-omap2/clock44xx_data.c >> > @@ -127,47 +127,47 @@ static struct clk virt_38400000_ck = { >> > .rate = 38400000, >> > }; >> > >> > -static const struct clksel_rate div_1_0_rates[] = { >> > +static struct clksel_rate div_1_0_rates[] = { >> > { .div = 1, .val = 0, .flags = RATE_IN_4430 }, >> > { .div = 0 }, >> > }; >> > >> > -static const struct clksel_rate div_1_1_rates[] = { >> > +static struct clksel_rate div_1_1_rates[] = { >> > { .div = 1, .val = 1, .flags = RATE_IN_4430 }, >> > { .div = 0 }, >> > }; >> > >> > -static const struct clksel_rate div_1_2_rates[] = { >> > +static struct clksel_rate div_1_2_rates[] = { >> > { .div = 1, .val = 2, .flags = RATE_IN_4430 }, >> > { .div = 0 }, >> > }; >> > >> > -static const struct clksel_rate div_1_3_rates[] = { >> > +static struct clksel_rate div_1_3_rates[] = { >> > { .div = 1, .val = 3, .flags = RATE_IN_4430 }, >> > { .div = 0 }, >> > }; >> > >> > -static const struct clksel_rate div_1_4_rates[] = { >> > +static struct clksel_rate div_1_4_rates[] = { >> > { .div = 1, .val = 4, .flags = RATE_IN_4430 }, >> > { .div = 0 }, >> > }; >> > >> > -static const struct clksel_rate div_1_5_rates[] = { >> > +static struct clksel_rate div_1_5_rates[] = { >> > { .div = 1, .val = 5, .flags = RATE_IN_4430 }, >> > { .div = 0 }, >> > }; >> > >> > -static const struct clksel_rate div_1_6_rates[] = { >> > +static struct clksel_rate div_1_6_rates[] = { >> > { .div = 1, .val = 6, .flags = RATE_IN_4430 }, >> > { .div = 0 }, >> > }; >> > >> > -static const struct clksel_rate div_1_7_rates[] = { >> > +static struct clksel_rate div_1_7_rates[] = { >> > { .div = 1, .val = 7, .flags = RATE_IN_4430 }, >> > { .div = 0 }, >> > }; >> > >> > -static const struct clksel sys_clkin_sel[] = { >> > +static struct clksel sys_clkin_sel[] = { >> > { .parent = &virt_12000000_ck, .rates = div_1_1_rates }, >> > { .parent = &virt_13000000_ck, .rates = div_1_2_rates }, >> > { .parent = &virt_16800000_ck, .rates = div_1_3_rates }, >> > @@ -221,7 +221,7 @@ static struct clk xclk60motg_ck = { >> > >> > /* Module clocks and DPLL outputs */ >> > >> > -static const struct clksel abe_dpll_bypass_clk_mux_sel[] = { >> > +static struct clksel abe_dpll_bypass_clk_mux_sel[] = { >> > { .parent = &sys_clkin_ck, .rates = div_1_0_rates }, >> > { .parent = &sys_32k_ck, .rates = div_1_1_rates }, >> > { .parent = NULL }, >> > @@ -283,7 +283,7 @@ static struct clk dpll_abe_x2_ck = { >> > .recalc = &omap3_clkoutx2_recalc, >> > }; >> > >> > -static const struct clksel_rate div31_1to31_rates[] = { >> > +static struct clksel_rate div31_1to31_rates[] = { >> > { .div = 1, .val = 1, .flags = RATE_IN_4430 }, >> > { .div = 2, .val = 2, .flags = RATE_IN_4430 }, >> > { .div = 3, .val = 3, .flags = RATE_IN_4430 }, >> > @@ -318,7 +318,7 @@ static const struct clksel_rate > div31_1to31_rates[] = { >> > { .div = 0 }, >> > }; >> > >> > -static const struct clksel dpll_abe_m2x2_div[] = { >> > +static struct clksel dpll_abe_m2x2_div[] = { >> > { .parent = &dpll_abe_x2_ck, .rates = div31_1to31_rates }, >> > { .parent = NULL }, >> > }; >> > @@ -343,14 +343,14 @@ static struct clk abe_24m_fclk = { >> > .recalc = &omap_fixed_divisor_recalc, >> > }; >> > >> > -static const struct clksel_rate div3_1to4_rates[] = { >> > +static struct clksel_rate div3_1to4_rates[] = { >> > { .div = 1, .val = 0, .flags = RATE_IN_4430 }, >> > { .div = 2, .val = 1, .flags = RATE_IN_4430 }, >> > { .div = 4, .val = 2, .flags = RATE_IN_4430 }, >> > { .div = 0 }, >> > }; >> > >> > -static const struct clksel abe_clk_div[] = { >> > +static struct clksel abe_clk_div[] = { >> > { .parent = &dpll_abe_m2x2_ck, .rates = div3_1to4_rates }, >> > { .parent = NULL }, >> > }; >> > @@ -367,13 +367,13 @@ static struct clk abe_clk = { >> > .set_rate = &omap2_clksel_set_rate, >> > }; >> > >> > -static const struct clksel_rate div2_1to2_rates[] = { >> > +static struct clksel_rate div2_1to2_rates[] = { >> > { .div = 1, .val = 0, .flags = RATE_IN_4430 }, >> > { .div = 2, .val = 1, .flags = RATE_IN_4430 }, >> > { .div = 0 }, >> > }; >> > >> > -static const struct clksel aess_fclk_div[] = { >> > +static struct clksel aess_fclk_div[] = { >> > { .parent = &abe_clk, .rates = div2_1to2_rates }, >> > { .parent = NULL }, >> > }; >> > @@ -402,7 +402,7 @@ static struct clk dpll_abe_m3x2_ck = { >> > .set_rate = &omap2_clksel_set_rate, >> > }; >> > >> > -static const struct clksel core_hsd_byp_clk_mux_sel[] = { >> > +static struct clksel core_hsd_byp_clk_mux_sel[] = { >> > { .parent = &sys_clkin_ck, .rates = div_1_0_rates }, >> > { .parent = &dpll_abe_m3x2_ck, .rates = div_1_1_rates }, >> > { .parent = NULL }, >> > @@ -455,7 +455,7 @@ static struct clk dpll_core_x2_ck = { >> > .recalc = &omap3_clkoutx2_recalc, >> > }; >> > >> > -static const struct clksel dpll_core_m6x2_div[] = { >> > +static struct clksel dpll_core_m6x2_div[] = { >> > { .parent = &dpll_core_x2_ck, .rates = div31_1to31_rates }, >> > { .parent = NULL }, >> > }; >> > @@ -472,7 +472,7 @@ static struct clk dpll_core_m6x2_ck = { >> > .set_rate = &omap2_clksel_set_rate, >> > }; >> > >> > -static const struct clksel dbgclk_mux_sel[] = { >> > +static struct clksel dbgclk_mux_sel[] = { >> > { .parent = &sys_clkin_ck, .rates = div_1_0_rates }, >> > { .parent = &dpll_core_m6x2_ck, .rates = div_1_1_rates }, >> > { .parent = NULL }, >> > @@ -485,7 +485,7 @@ static struct clk dbgclk_mux_ck = { >> > .recalc = &followparent_recalc, >> > }; >> > >> > -static const struct clksel dpll_core_m2_div[] = { >> > +static struct clksel dpll_core_m2_div[] = { >> > { .parent = &dpll_core_ck, .rates = div31_1to31_rates }, >> > { .parent = NULL }, >> > }; >> > @@ -522,7 +522,7 @@ static struct clk dpll_core_m5x2_ck = { >> > .set_rate = &omap2_clksel_set_rate, >> > }; >> > >> > -static const struct clksel div_core_div[] = { >> > +static struct clksel div_core_div[] = { >> > { .parent = &dpll_core_m5x2_ck, .rates = div2_1to2_rates }, >> > { .parent = NULL }, >> > }; >> > @@ -539,7 +539,7 @@ static struct clk div_core_ck = { >> > .set_rate = &omap2_clksel_set_rate, >> > }; >> > >> > -static const struct clksel_rate div4_1to8_rates[] = { >> > +static struct clksel_rate div4_1to8_rates[] = { >> > { .div = 1, .val = 0, .flags = RATE_IN_4430 }, >> > { .div = 2, .val = 1, .flags = RATE_IN_4430 }, >> > { .div = 4, .val = 2, .flags = RATE_IN_4430 }, >> > @@ -547,7 +547,7 @@ static const struct clksel_rate div4_1to8_rates[] > = { >> > { .div = 0 }, >> > }; >> > >> > -static const struct clksel div_iva_hs_clk_div[] = { >> > +static struct clksel div_iva_hs_clk_div[] = { >> > { .parent = &dpll_core_m5x2_ck, .rates = div4_1to8_rates }, >> > { .parent = NULL }, >> > }; >> > @@ -596,7 +596,7 @@ static struct clk dll_clk_div_ck = { >> > .recalc = &omap_fixed_divisor_recalc, >> > }; >> > >> > -static const struct clksel dpll_abe_m2_div[] = { >> > +static struct clksel dpll_abe_m2_div[] = { >> > { .parent = &dpll_abe_ck, .rates = div31_1to31_rates }, >> > { .parent = NULL }, >> > }; >> > @@ -639,7 +639,7 @@ static struct clk dpll_core_m7x2_ck = { >> > .set_rate = &omap2_clksel_set_rate, >> > }; >> > >> > -static const struct clksel iva_hsd_byp_clk_mux_sel[] = { >> > +static struct clksel iva_hsd_byp_clk_mux_sel[] = { >> > { .parent = &sys_clkin_ck, .rates = div_1_0_rates }, >> > { .parent = &div_iva_hs_clk, .rates = div_1_1_rates }, >> > { .parent = NULL }, >> > @@ -694,7 +694,7 @@ static struct clk dpll_iva_x2_ck = { >> > .recalc = &omap3_clkoutx2_recalc, >> > }; >> > >> > -static const struct clksel dpll_iva_m4x2_div[] = { >> > +static struct clksel dpll_iva_m4x2_div[] = { >> > { .parent = &dpll_iva_x2_ck, .rates = div31_1to31_rates }, >> > { .parent = NULL }, >> > }; >> > @@ -754,7 +754,7 @@ static struct clk dpll_mpu_ck = { >> > .set_rate = &omap3_noncore_dpll_set_rate, >> > }; >> > >> > -static const struct clksel dpll_mpu_m2_div[] = { >> > +static struct clksel dpll_mpu_m2_div[] = { >> > { .parent = &dpll_mpu_ck, .rates = div31_1to31_rates }, >> > { .parent = NULL }, >> > }; >> > @@ -779,7 +779,7 @@ static struct clk per_hs_clk_div_ck = { >> > .recalc = &omap_fixed_divisor_recalc, >> > }; >> > >> > -static const struct clksel per_hsd_byp_clk_mux_sel[] = { >> > +static struct clksel per_hsd_byp_clk_mux_sel[] = { >> > { .parent = &sys_clkin_ck, .rates = div_1_0_rates }, >> > { .parent = &per_hs_clk_div_ck, .rates = div_1_1_rates }, >> > { .parent = NULL }, >> > @@ -827,7 +827,7 @@ static struct clk dpll_per_ck = { >> > .set_rate = &omap3_noncore_dpll_set_rate, >> > }; >> > >> > -static const struct clksel dpll_per_m2_div[] = { >> > +static struct clksel dpll_per_m2_div[] = { >> > { .parent = &dpll_per_ck, .rates = div31_1to31_rates }, >> > { .parent = NULL }, >> > }; >> > @@ -851,7 +851,7 @@ static struct clk dpll_per_x2_ck = { >> > .recalc = &omap3_clkoutx2_recalc, >> > }; >> > >> > -static const struct clksel dpll_per_m2x2_div[] = { >> > +static struct clksel dpll_per_m2x2_div[] = { >> > { .parent = &dpll_per_x2_ck, .rates = div31_1to31_rates }, >> > { .parent = NULL }, >> > }; >> > @@ -969,7 +969,7 @@ static struct clk dpll_unipro_x2_ck = { >> > .recalc = &omap3_clkoutx2_recalc, >> > }; >> > >> > -static const struct clksel dpll_unipro_m2x2_div[] = { >> > +static struct clksel dpll_unipro_m2x2_div[] = { >> > { .parent = &dpll_unipro_x2_ck, .rates = div31_1to31_rates }, >> > { .parent = NULL }, >> > }; >> > @@ -1033,7 +1033,7 @@ static struct clk dpll_usb_clkdcoldo_ck = { >> > .recalc = &followparent_recalc, >> > }; >> > >> > -static const struct clksel dpll_usb_m2_div[] = { >> > +static struct clksel dpll_usb_m2_div[] = { >> > { .parent = &dpll_usb_ck, .rates = div31_1to31_rates }, >> > { .parent = NULL }, >> > }; >> > @@ -1050,7 +1050,7 @@ static struct clk dpll_usb_m2_ck = { >> > .set_rate = &omap2_clksel_set_rate, >> > }; >> > >> > -static const struct clksel ducati_clk_mux_sel[] = { >> > +static struct clksel ducati_clk_mux_sel[] = { >> > { .parent = &div_core_ck, .rates = div_1_0_rates }, >> > { .parent = &dpll_per_m6x2_ck, .rates = div_1_1_rates }, >> > { .parent = NULL }, >> > @@ -1091,13 +1091,13 @@ static struct clk func_24mc_fclk = { >> > .recalc = &omap_fixed_divisor_recalc, >> > }; >> > >> > -static const struct clksel_rate div2_4to8_rates[] = { >> > +static struct clksel_rate div2_4to8_rates[] = { >> > { .div = 4, .val = 0, .flags = RATE_IN_4430 }, >> > { .div = 8, .val = 1, .flags = RATE_IN_4430 }, >> > { .div = 0 }, >> > }; >> > >> > -static const struct clksel func_48m_fclk_div[] = { >> > +static struct clksel func_48m_fclk_div[] = { >> > { .parent = &dpll_per_m2x2_ck, .rates = div2_4to8_rates }, >> > { .parent = NULL }, >> > }; >> > @@ -1122,13 +1122,13 @@ static struct clk func_48mc_fclk = { >> > .recalc = &omap_fixed_divisor_recalc, >> > }; >> > >> > -static const struct clksel_rate div2_2to4_rates[] = { >> > +static struct clksel_rate div2_2to4_rates[] = { >> > { .div = 2, .val = 0, .flags = RATE_IN_4430 }, >> > { .div = 4, .val = 1, .flags = RATE_IN_4430 }, >> > { .div = 0 }, >> > }; >> > >> > -static const struct clksel func_64m_fclk_div[] = { >> > +static struct clksel func_64m_fclk_div[] = { >> > { .parent = &dpll_per_m4x2_ck, .rates = div2_2to4_rates }, >> > { .parent = NULL }, >> > }; >> > @@ -1145,7 +1145,7 @@ static struct clk func_64m_fclk = { >> > .set_rate = &omap2_clksel_set_rate, >> > }; >> > >> > -static const struct clksel func_96m_fclk_div[] = { >> > +static struct clksel func_96m_fclk_div[] = { >> > { .parent = &dpll_per_m2x2_ck, .rates = div2_2to4_rates }, >> > { .parent = NULL }, >> > }; >> > @@ -1162,7 +1162,7 @@ static struct clk func_96m_fclk = { >> > .set_rate = &omap2_clksel_set_rate, >> > }; >> > >> > -static const struct clksel hsmmc6_fclk_sel[] = { >> > +static struct clksel hsmmc6_fclk_sel[] = { >> > { .parent = &func_64m_fclk, .rates = div_1_0_rates }, >> > { .parent = &func_96m_fclk, .rates = div_1_1_rates }, >> > { .parent = NULL }, >> > @@ -1175,13 +1175,13 @@ static struct clk hsmmc6_fclk = { >> > .recalc = &followparent_recalc, >> > }; >> > >> > -static const struct clksel_rate div2_1to8_rates[] = { >> > +static struct clksel_rate div2_1to8_rates[] = { >> > { .div = 1, .val = 0, .flags = RATE_IN_4430 }, >> > { .div = 8, .val = 1, .flags = RATE_IN_4430 }, >> > { .div = 0 }, >> > }; >> > >> > -static const struct clksel init_60m_fclk_div[] = { >> > +static struct clksel init_60m_fclk_div[] = { >> > { .parent = &dpll_usb_m2_ck, .rates = div2_1to8_rates }, >> > { .parent = NULL }, >> > }; >> > @@ -1198,7 +1198,7 @@ static struct clk init_60m_fclk = { >> > .set_rate = &omap2_clksel_set_rate, >> > }; >> > >> > -static const struct clksel l3_div_div[] = { >> > +static struct clksel l3_div_div[] = { >> > { .parent = &div_core_ck, .rates = div2_1to2_rates }, >> > { .parent = NULL }, >> > }; >> > @@ -1215,7 +1215,7 @@ static struct clk l3_div_ck = { >> > .set_rate = &omap2_clksel_set_rate, >> > }; >> > >> > -static const struct clksel l4_div_div[] = { >> > +static struct clksel l4_div_div[] = { >> > { .parent = &l3_div_ck, .rates = div2_1to2_rates }, >> > { .parent = NULL }, >> > }; >> > @@ -1240,7 +1240,7 @@ static struct clk lp_clk_div_ck = { >> > .recalc = &omap_fixed_divisor_recalc, >> > }; >> > >> > -static const struct clksel l4_wkup_clk_mux_sel[] = { >> > +static struct clksel l4_wkup_clk_mux_sel[] = { >> > { .parent = &sys_clkin_ck, .rates = div_1_0_rates }, >> > { .parent = &lp_clk_div_ck, .rates = div_1_1_rates }, >> > { .parent = NULL }, >> > @@ -1257,7 +1257,7 @@ static struct clk l4_wkup_clk_mux_ck = { >> > .recalc = &omap2_clksel_recalc, >> > }; >> > >> > -static const struct clksel per_abe_nc_fclk_div[] = { >> > +static struct clksel per_abe_nc_fclk_div[] = { >> > { .parent = &dpll_abe_m2_ck, .rates = div2_1to2_rates }, >> > { .parent = NULL }, >> > }; >> > @@ -1274,7 +1274,7 @@ static struct clk per_abe_nc_fclk = { >> > .set_rate = &omap2_clksel_set_rate, >> > }; >> > >> > -static const struct clksel mcasp2_fclk_sel[] = { >> > +static struct clksel mcasp2_fclk_sel[] = { >> > { .parent = &func_96m_fclk, .rates = div_1_0_rates }, >> > { .parent = &per_abe_nc_fclk, .rates = div_1_1_rates }, >> > { .parent = NULL }, >> > @@ -1309,7 +1309,7 @@ static struct clk per_abe_24m_fclk = { >> > .recalc = &omap_fixed_divisor_recalc, >> > }; >> > >> > -static const struct clksel pmd_stm_clock_mux_sel[] = { >> > +static struct clksel pmd_stm_clock_mux_sel[] = { >> > { .parent = &sys_clkin_ck, .rates = div_1_0_rates }, >> > { .parent = &dpll_core_m6x2_ck, .rates = div_1_1_rates }, >> > { .parent = &tie_low_clock_ck, .rates = div_1_2_rates }, >> > @@ -1330,7 +1330,7 @@ static struct clk pmd_trace_clk_mux_ck = { >> > .recalc = &followparent_recalc, >> > }; >> > >> > -static const struct clksel syc_clk_div_div[] = { >> > +static struct clksel syc_clk_div_div[] = { >> > { .parent = &sys_clkin_ck, .rates = div2_1to2_rates }, >> > { .parent = NULL }, >> > }; >> > @@ -1399,7 +1399,7 @@ static struct clk des3des_fck = { >> > .recalc = &followparent_recalc, >> > }; >> > >> > -static const struct clksel dmic_sync_mux_sel[] = { >> > +static struct clksel dmic_sync_mux_sel[] = { >> > { .parent = &abe_24m_fclk, .rates = div_1_0_rates }, >> > { .parent = &syc_clk_div_ck, .rates = div_1_1_rates }, >> > { .parent = &func_24m_clk, .rates = div_1_2_rates }, >> > @@ -1417,7 +1417,7 @@ static struct clk dmic_sync_mux_ck = { >> > .recalc = &omap2_clksel_recalc, >> > }; >> > >> > -static const struct clksel func_dmic_abe_gfclk_sel[] = { >> > +static struct clksel func_dmic_abe_gfclk_sel[] = { >> > { .parent = &dmic_sync_mux_ck, .rates = div_1_0_rates }, >> > { .parent = &pad_clks_ck, .rates = div_1_1_rates }, >> > { .parent = &slimbus_clk, .rates = div_1_2_rates }, >> > @@ -1531,7 +1531,7 @@ static struct clk emif2_fck = { >> > .recalc = &followparent_recalc, >> > }; >> > >> > -static const struct clksel fdif_fclk_div[] = { >> > +static struct clksel fdif_fclk_div[] = { >> > { .parent = &dpll_per_m4x2_ck, .rates = div3_1to4_rates }, >> > { .parent = NULL }, >> > }; >> > @@ -1692,7 +1692,7 @@ static struct clk gpmc_ick = { >> > .recalc = &followparent_recalc, >> > }; >> > >> > -static const struct clksel sgx_clk_mux_sel[] = { >> > +static struct clksel sgx_clk_mux_sel[] = { >> > { .parent = &dpll_core_m7x2_ck, .rates = div_1_0_rates }, >> > { .parent = &dpll_per_m7x2_ck, .rates = div_1_1_rates }, >> > { .parent = NULL }, >> > @@ -1723,7 +1723,7 @@ static struct clk hdq1w_fck = { >> > .recalc = &followparent_recalc, >> > }; >> > >> > -static const struct clksel hsi_fclk_div[] = { >> > +static struct clksel hsi_fclk_div[] = { >> > { .parent = &dpll_per_m2x2_ck, .rates = div3_1to4_rates }, >> > { .parent = NULL }, >> > }; >> > @@ -1867,7 +1867,7 @@ static struct clk mcasp_sync_mux_ck = { >> > .recalc = &omap2_clksel_recalc, >> > }; >> > >> > -static const struct clksel func_mcasp_abe_gfclk_sel[] = { >> > +static struct clksel func_mcasp_abe_gfclk_sel[] = { >> > { .parent = &mcasp_sync_mux_ck, .rates = div_1_0_rates }, >> > { .parent = &pad_clks_ck, .rates = div_1_1_rates }, >> > { .parent = &slimbus_clk, .rates = div_1_2_rates }, >> > @@ -1900,7 +1900,7 @@ static struct clk mcbsp1_sync_mux_ck = { >> > .recalc = &omap2_clksel_recalc, >> > }; >> > >> > -static const struct clksel func_mcbsp1_gfclk_sel[] = { >> > +static struct clksel func_mcbsp1_gfclk_sel[] = { >> > { .parent = &mcbsp1_sync_mux_ck, .rates = div_1_0_rates }, >> > { .parent = &pad_clks_ck, .rates = div_1_1_rates }, >> > { .parent = &slimbus_clk, .rates = div_1_2_rates }, >> > @@ -1933,7 +1933,7 @@ static struct clk mcbsp2_sync_mux_ck = { >> > .recalc = &omap2_clksel_recalc, >> > }; >> > >> > -static const struct clksel func_mcbsp2_gfclk_sel[] = { >> > +static struct clksel func_mcbsp2_gfclk_sel[] = { >> > { .parent = &mcbsp2_sync_mux_ck, .rates = div_1_0_rates }, >> > { .parent = &pad_clks_ck, .rates = div_1_1_rates }, >> > { .parent = &slimbus_clk, .rates = div_1_2_rates }, >> > @@ -1966,7 +1966,7 @@ static struct clk mcbsp3_sync_mux_ck = { >> > .recalc = &omap2_clksel_recalc, >> > }; >> > >> > -static const struct clksel func_mcbsp3_gfclk_sel[] = { >> > +static struct clksel func_mcbsp3_gfclk_sel[] = { >> > { .parent = &mcbsp3_sync_mux_ck, .rates = div_1_0_rates }, >> > { .parent = &pad_clks_ck, .rates = div_1_1_rates }, >> > { .parent = &slimbus_clk, .rates = div_1_2_rates }, >> > @@ -1999,7 +1999,7 @@ static struct clk mcbsp4_sync_mux_ck = { >> > .recalc = &omap2_clksel_recalc, >> > }; >> > >> > -static const struct clksel per_mcbsp4_gfclk_sel[] = { >> > +static struct clksel per_mcbsp4_gfclk_sel[] = { >> > { .parent = &mcbsp4_sync_mux_ck, .rates = div_1_0_rates }, >> > { .parent = &pad_clks_ck, .rates = div_1_1_rates }, >> > { .parent = NULL }, >> > @@ -2401,7 +2401,7 @@ static struct clk timer4_fck = { >> > .clkdm_name = "l4_per_clkdm", >> > }; >> > >> > -static const struct clksel timer5_sync_mux_sel[] = { >> > +static struct clksel timer5_sync_mux_sel[] = { >> > { .parent = &syc_clk_div_ck, .rates = div_1_0_rates }, >> > { .parent = &sys_32k_ck, .rates = div_1_1_rates }, >> > { .parent = NULL }, >> > @@ -2532,7 +2532,7 @@ static struct clk usb_host_fs_fck = { >> > .recalc = &followparent_recalc, >> > }; >> > >> > -static const struct clksel utmi_p1_gfclk_sel[] = { >> > +static struct clksel utmi_p1_gfclk_sel[] = { >> > { .parent = &init_60m_fclk, .rates = div_1_0_rates }, >> > { .parent = &xclk60mhsp1_ck, .rates = div_1_1_rates }, >> > { .parent = NULL }, >> > @@ -2559,7 +2559,7 @@ static struct clk usb_host_hs_utmi_p1_clk = { >> > .recalc = &followparent_recalc, >> > }; >> > >> > -static const struct clksel utmi_p2_gfclk_sel[] = { >> > +static struct clksel utmi_p2_gfclk_sel[] = { >> > { .parent = &init_60m_fclk, .rates = div_1_0_rates }, >> > { .parent = &xclk60mhsp2_ck, .rates = div_1_1_rates }, >> > { .parent = NULL }, >> > @@ -2656,7 +2656,7 @@ static struct clk usb_host_hs_fck = { >> > .recalc = &followparent_recalc, >> > }; >> > >> > -static const struct clksel otg_60m_gfclk_sel[] = { >> > +static struct clksel otg_60m_gfclk_sel[] = { >> > { .parent = &utmi_phy_clkout_ck, .rates = div_1_0_rates }, >> > { .parent = &xclk60motg_ck, .rates = div_1_1_rates }, >> > { .parent = NULL }, >> > @@ -2743,13 +2743,13 @@ static struct clk usb_tll_hs_ick = { >> > .recalc = &followparent_recalc, >> > }; >> > >> > -static const struct clksel_rate div2_14to18_rates[] = { >> > +static struct clksel_rate div2_14to18_rates[] = { >> > { .div = 14, .val = 0, .flags = RATE_IN_4430 }, >> > { .div = 18, .val = 1, .flags = RATE_IN_4430 }, >> > { .div = 0 }, >> > }; >> > >> > -static const struct clksel usim_fclk_div[] = { >> > +static struct clksel usim_fclk_div[] = { >> > { .parent = &dpll_per_m4x2_ck, .rates = div2_14to18_rates }, >> > { .parent = NULL }, >> > }; >> > @@ -2807,7 +2807,7 @@ static struct clk wd_timer3_fck = { >> > }; >> > >> > /* Remaining optional clocks */ >> > -static const struct clksel stm_clk_div_div[] = { >> > +static struct clksel stm_clk_div_div[] = { >> > { .parent = &pmd_stm_clock_mux_ck, .rates = div3_1to4_rates }, >> > { .parent = NULL }, >> > }; >> > @@ -2824,7 +2824,7 @@ static struct clk stm_clk_div_ck = { >> > .set_rate = &omap2_clksel_set_rate, >> > }; >> > >> > -static const struct clksel trace_clk_div_div[] = { >> > +static struct clksel trace_clk_div_div[] = { >> > { .parent = &pmd_trace_clk_mux_ck, .rates = div3_1to4_rates }, >> > { .parent = NULL }, >> > }; >> > @@ -2843,7 +2843,7 @@ static struct clk trace_clk_div_ck = { >> > >> > /* SCRM aux clk nodes */ >> > >> > -static const struct clksel auxclk_sel[] = { >> > +static struct clksel auxclk_sel[] = { >> > { .parent = &sys_clkin_ck, .rates = div_1_0_rates }, >> > { .parent = &dpll_core_m3x2_ck, .rates = div_1_1_rates }, >> > { .parent = &dpll_per_m3x2_ck, .rates = div_1_2_rates }, >> > @@ -2927,7 +2927,7 @@ static struct clk auxclk5_ck = { >> > .enable_bit = OMAP4_ENABLE_SHIFT, >> > }; >> > >> > -static const struct clksel auxclkreq_sel[] = { >> > +static struct clksel auxclkreq_sel[] = { >> > { .parent = &auxclk0_ck, .rates = div_1_0_rates }, >> > { .parent = &auxclk1_ck, .rates = div_1_1_rates }, >> > { .parent = &auxclk2_ck, .rates = div_1_2_rates }, >> > diff --git a/arch/arm/plat-omap/clock.c b/arch/arm/plat-omap/clock.c >> > index fc62fb5..9bfd193 100644 >> > --- a/arch/arm/plat-omap/clock.c >> > +++ b/arch/arm/plat-omap/clock.c >> > @@ -308,6 +308,16 @@ void clk_enable_init_clocks(void) >> > } >> > } >> > >> > +static struct clk *_omap_clk_get_by_name(const char *name) >> > +{ >> > + struct clk *c; >> > + >> > + list_for_each_entry(c, &clocks, node) >> > + if (!strcmp(c->name, name)) >> > + return c; >> > + return NULL; >> > +} >> > + >> > /** >> > * omap_clk_get_by_name - locate OMAP struct clk by its name >> > * @name: name of the struct clk to locate >> > @@ -318,21 +328,45 @@ void clk_enable_init_clocks(void) >> > */ >> > struct clk *omap_clk_get_by_name(const char *name) >> > { >> > - struct clk *c; >> > struct clk *ret = NULL; >> > >> > mutex_lock(&clocks_mutex); >> > + ret = _omap_clk_get_by_name(name); >> > + mutex_unlock(&clocks_mutex); >> > + >> > + return ret; >> > +} >> > + >> > +static inline void omap_init_dpll_data_clk_pts(struct dpll_data *dd) >> > +{ >> > + if (!dd->clk_ref && dd->clk_ref_name) >> > + dd->clk_ref = _omap_clk_get_by_name(dd->clk_ref_name); >> > + if (!dd->clk_bypass && dd->clk_bypass_name) >> > + dd->clk_bypass = > _omap_clk_get_by_name(dd->clk_bypass_name); >> > +} >> > + >> > +static inline void omap_init_clksel_clk_pts(struct clksel *clks) >> > +{ >> > + if (!clks->parent && clks->parent_name) >> > + clks->parent = _omap_clk_get_by_name(clks->parent_name); >> > +} >> > + >> > +void omap_init_clk_pts(void) >> > +{ >> > + struct clk *c; >> > + >> > + mutex_lock(&clocks_mutex); >> > >> > list_for_each_entry(c, &clocks, node) { >> > - if (!strcmp(c->name, name)) { >> > - ret = c; >> > - break; >> > - } >> > + if (!c->parent && c->parent_name) >> > + c->parent = _omap_clk_get_by_name(c->parent_name); >> > + if (c->dpll_data) >> > + omap_init_dpll_data_clk_pts(c->dpll_data); >> > + if (c->clksel) >> > + omap_init_clksel_clk_pts(c->clksel); >> > } >> > >> > mutex_unlock(&clocks_mutex); >> > - >> > - return ret; >> > } >> > >> > /* >> > diff --git a/arch/arm/plat-omap/include/plat/clock.h > b/arch/arm/plat-omap/include/plat/clock.h >> > index 8eb0ada..dc0d9fd 100644 >> > --- a/arch/arm/plat-omap/include/plat/clock.h >> > +++ b/arch/arm/plat-omap/include/plat/clock.h >> > @@ -85,6 +85,7 @@ struct clksel_rate { >> > /** >> > * struct clksel - available parent clocks, and a pointer to their > divisors >> > * @parent: struct clk * to a possible parent clock >> > + * @parent_name: Name of the possible parent clock >> > * @rates: available divisors for this parent clock >> > * >> > * A struct clksel is always associated with one or more struct clks >> > @@ -92,6 +93,7 @@ struct clksel_rate { >> > */ >> > struct clksel { >> > struct clk *parent; >> > + const char *parent_name; >> > const struct clksel_rate *rates; >> > }; >> > >> > @@ -101,7 +103,9 @@ struct clksel { >> > * @mult_mask: mask of the DPLL M bitfield in @mult_div1_reg >> > * @div1_mask: mask of the DPLL N bitfield in @mult_div1_reg >> > * @clk_bypass: struct clk pointer to the clock's bypass clock input >> > + * @clk_bypass_name: Name of the clock's bypass clock input >> > * @clk_ref: struct clk pointer to the clock's reference clock input >> > + * @clk_ref_name: Name of the clock's reference clock input >> > * @control_reg: register containing the DPLL mode bitfield >> > * @enable_mask: mask of the DPLL mode bitfield in @control_reg >> > * @rate_tolerance: maximum variance allowed from target rate (in Hz) >> > @@ -143,7 +147,9 @@ struct dpll_data { >> > u32 mult_mask; >> > u32 div1_mask; >> > struct clk *clk_bypass; >> > + const char *clk_bypass_name; >> > struct clk *clk_ref; >> > + const char *clk_ref_name; >> > void __iomem *control_reg; >> > u32 enable_mask; >> > unsigned int rate_tolerance; >> > @@ -230,6 +236,7 @@ struct clk { >> > const struct clkops *ops; >> > const char *name; >> > struct clk *parent; >> > + const char *parent_name; >> > struct list_head children; >> > struct list_head sibling; /* node for children */ >> > unsigned long rate; >> > @@ -245,7 +252,7 @@ struct clk { >> > #ifdef CONFIG_ARCH_OMAP2PLUS >> > void __iomem *clksel_reg; >> > u32 clksel_mask; >> > - const struct clksel *clksel; >> > + struct clksel *clksel; >> > struct dpll_data *dpll_data; >> > const char *clkdm_name; >> > struct clockdomain *clkdm; >> > @@ -292,7 +299,7 @@ extern void clk_init_cpufreq_table(struct > cpufreq_frequency_table **table); >> > extern void clk_exit_cpufreq_table(struct cpufreq_frequency_table > **table); >> > #endif >> > extern struct clk *omap_clk_get_by_name(const char *name); >> > - >> > +extern void omap_init_clk_pts(void); >> > extern const struct clkops clkops_null; >> > >> > extern struct clk dummy_ck; -- 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