Hi Rajendra, On 06/01/2012 07:07 AM, Rajendra Nayak wrote: > The data is autogenerated using the OMAP autogeneration scripts (python > scripts). Thanks to Mike Turquette for the initial efforts in updating > the script which was later updated by me. > All data is added into a new cclock44xx_data.c file, a later patch will get > rid of clock44xx_data.c file. > > Signed-off-by: Rajendra Nayak <rnayak@xxxxxx> > --- > arch/arm/mach-omap2/cclock44xx_data.c | 2602 +++++++++++++++++++++++++++++++ > arch/arm/mach-omap2/clock.h | 17 + > arch/arm/mach-omap2/clock_common_data.c | 14 + > arch/arm/mach-omap2/scrm44xx.h | 2 + > 4 files changed, 2635 insertions(+), 0 deletions(-) > create mode 100644 arch/arm/mach-omap2/cclock44xx_data.c > > diff --git a/arch/arm/mach-omap2/cclock44xx_data.c b/arch/arm/mach-omap2/cclock44xx_data.c > new file mode 100644 > index 0000000..fa421dc > --- /dev/null > +++ b/arch/arm/mach-omap2/cclock44xx_data.c > @@ -0,0 +1,2602 @@ > +/* > + * OMAP4 Clock data > + * > + * Copyright (C) 2009-2012 Texas Instruments, Inc. > + * Copyright (C) 2009-2010 Nokia Corporation > + * > + * Paul Walmsley (paul@xxxxxxxxx) > + * Rajendra Nayak (rnayak@xxxxxx) > + * Benoit Cousson (b-cousson@xxxxxx) > + * Mike Turquette (mturquette@xxxxxx) > + * > + * This file is automatically generated from the OMAP hardware databases. > + * We respectfully ask that any modifications to this file be coordinated > + * with the public linux-omap@xxxxxxxxxxxxxxx mailing list and the > + * authors above to ensure that the autogeneration scripts are kept > + * up-to-date with the file contents. > + * > + * This program is free software; you can redistribute it and/or modify > + * it under the terms of the GNU General Public License version 2 as > + * published by the Free Software Foundation. > + * > + * XXX Some of the ES1 clocks have been removed/changed; once support > + * is added for discriminating clocks by ES level, these should be added back > + * in. > + */ > + > +#include <linux/kernel.h> > +#include <linux/list.h> > +#include <linux/clk-private.h> > +#include <linux/clkdev.h> > +#include <linux/io.h> > + > +#include <plat/hardware.h> > +#include <plat/clkdev_omap.h> > + > +#include "iomap.h" > +#include "clock.h" > +#include "clock44xx.h" > +#include "cm1_44xx.h" > +#include "cm2_44xx.h" > +#include "cm-regbits-44xx.h" > +#include "prm44xx.h" > +#include "prm-regbits-44xx.h" > +#include "control.h" > +#include "scrm44xx.h" > + > +/* OMAP4 modulemode control */ > +#define OMAP4430_MODULEMODE_HWCTRL_SHIFT 0 > +#define OMAP4430_MODULEMODE_SWCTRL_SHIFT 1 > + > +/*LIST_HEAD(clocks);*/ > + > +/* Root clocks */ > + > +DEFINE_CLK_FIXED_RATE(extalt_clkin_ck, CLK_IS_ROOT, 59000000, 0x0); > + > +DEFINE_CLK_FIXED_RATE(pad_clks_src_ck, CLK_IS_ROOT, 12000000, 0x0); > + > +DEFINE_CLK_GATE(pad_clks_ck, "pad_clks_src_ck", &pad_clks_src_ck, 0x0, > + OMAP4430_CM_CLKSEL_ABE, OMAP4430_PAD_CLKS_GATE_SHIFT, > + 0x0, NULL); > + > +DEFINE_CLK_FIXED_RATE(pad_slimbus_core_clks_ck, CLK_IS_ROOT, 12000000, 0x0); > + > +DEFINE_CLK_FIXED_RATE(secure_32k_clk_src_ck, CLK_IS_ROOT, 32768, 0x0); > + > +DEFINE_CLK_FIXED_RATE(slimbus_src_clk, CLK_IS_ROOT, 12000000, 0x0); > + > +DEFINE_CLK_GATE(slimbus_clk, "slimbus_src_clk", &slimbus_src_clk, 0x0, > + OMAP4430_CM_CLKSEL_ABE, OMAP4430_SLIMBUS_CLK_GATE_SHIFT, > + 0x0, NULL); > + > +DEFINE_CLK_FIXED_RATE(sys_32k_ck, CLK_IS_ROOT, 32768, 0x0); > + > +DEFINE_CLK_FIXED_RATE(virt_12000000_ck, CLK_IS_ROOT, 12000000, 0x0); > + > +DEFINE_CLK_FIXED_RATE(virt_13000000_ck, CLK_IS_ROOT, 13000000, 0x0); > + > +DEFINE_CLK_FIXED_RATE(virt_16800000_ck, CLK_IS_ROOT, 16800000, 0x0); > + > +DEFINE_CLK_FIXED_RATE(virt_19200000_ck, CLK_IS_ROOT, 19200000, 0x0); > + > +DEFINE_CLK_FIXED_RATE(virt_26000000_ck, CLK_IS_ROOT, 26000000, 0x0); > + > +DEFINE_CLK_FIXED_RATE(virt_27000000_ck, CLK_IS_ROOT, 27000000, 0x0); > + > +DEFINE_CLK_FIXED_RATE(virt_38400000_ck, CLK_IS_ROOT, 38400000, 0x0); > + > +static const 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[] = { > + { .div = 1, .val = 1, .flags = RATE_IN_4430 }, > + { .div = 0 }, > +}; > + > +static const 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[] = { > + { .div = 1, .val = 3, .flags = RATE_IN_4430 }, > + { .div = 0 }, > +}; > + > +static const 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[] = { > + { .div = 1, .val = 5, .flags = RATE_IN_4430 }, > + { .div = 0 }, > +}; The above clksel_rate structures could be used by OMAP2/3 devices too (assuming that the flags is set for OMAP2/3/4 devices). Any reason why these cannot be placed in a global header? It could remove quite a bit of repetitive code. I know these are auto-generated, but maybe we should have the auto-generator spit out the clksel_rate structs to another file (ie. a global header). By the way, div_1_3/4/5_rates don't appear to be used in this file. Cheers Jon -- 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