Commit f1519611 authored by Colin Cross's avatar Colin Cross

ARM: tegra: clock: Move unshared clk struct members into union

Creates a union of a struct for each type of clock to reduce memory
usage and clarify which members are used by all clocks and which are
used by a single type.
Acked-by: default avatarOlof Johansson <olof@lixom.net>
Signed-off-by: default avatarColin Cross <ccross@android.com>
parent 3ec349fb
...@@ -47,7 +47,7 @@ struct clk_mux_sel { ...@@ -47,7 +47,7 @@ struct clk_mux_sel {
u32 value; u32 value;
}; };
struct clk_pll_table { struct clk_pll_freq_table {
unsigned long input_rate; unsigned long input_rate;
unsigned long output_rate; unsigned long output_rate;
u16 n; u16 n;
...@@ -74,51 +74,54 @@ enum clk_state { ...@@ -74,51 +74,54 @@ enum clk_state {
struct clk { struct clk {
/* node for master clocks list */ /* node for master clocks list */
struct list_head node; struct list_head node; /* node for list of all clocks */
struct list_head children; /* list of children */ struct list_head children; /* list of children */
struct list_head sibling; /* node for children */ struct list_head sibling; /* node for children */
struct clk_lookup lookup;
#ifdef CONFIG_DEBUG_FS #ifdef CONFIG_DEBUG_FS
struct dentry *dent; struct dentry *dent;
struct dentry *parent_dent; bool set;
#endif #endif
struct clk_ops *ops; struct clk_ops *ops;
struct clk *parent;
struct clk_lookup lookup;
unsigned long rate; unsigned long rate;
unsigned long max_rate; unsigned long max_rate;
u32 flags; u32 flags;
u32 refcnt;
const char *name; const char *name;
u32 refcnt;
enum clk_state state;
struct clk *parent;
u32 div;
u32 mul;
const struct clk_mux_sel *inputs;
u32 reg; u32 reg;
u32 reg_shift; u32 reg_shift;
unsigned int clk_num;
enum clk_state state;
#ifdef CONFIG_DEBUG_FS
bool set;
#endif
/* PLL */ union {
struct {
unsigned int clk_num;
} periph;
struct {
unsigned long input_min; unsigned long input_min;
unsigned long input_max; unsigned long input_max;
unsigned long cf_min; unsigned long cf_min;
unsigned long cf_max; unsigned long cf_max;
unsigned long vco_min; unsigned long vco_min;
unsigned long vco_max; unsigned long vco_max;
const struct clk_pll_table *pll_table; const struct clk_pll_freq_table *freq_table;
int pll_lock_delay; int lock_delay;
} pll;
/* DIV */ struct {
u32 div;
u32 mul;
/* MUX */
const struct clk_mux_sel *inputs;
u32 sel; u32 sel;
u32 reg_mask; u32 reg_mask;
} mux;
/* Virtual cpu clock */ struct {
struct clk *main; struct clk *main;
struct clk *backup; struct clk *backup;
} cpu;
} u;
}; };
......
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment