Loading arch/arm/mach-msm/clock-local2.c +15 −0 Original line number Diff line number Diff line Loading @@ -52,6 +52,7 @@ struct clk_freq_tbl rcg_dummy_freq = F_END; #define D_REG(x) (*(x)->base + (x)->cmd_rcgr_reg + 0x10) #define CBCR_REG(x) (*(x)->base + (x)->cbcr_reg) #define BCR_REG(x) (*(x)->base + (x)->bcr_reg) #define RST_REG(x) (*(x)->base + (x)->reset_reg) #define VOTE_REG(x) (*(x)->base + (x)->vote_reg) #define GATE_EN_REG(x) (*(x)->base + (x)->en_reg) Loading Loading @@ -973,8 +974,22 @@ static enum handoff gate_clk_handoff(struct clk *c) return HANDOFF_DISABLED_CLK; } static int reset_clk_rst(struct clk *c, enum clk_reset_action action) { struct reset_clk *rst = to_reset_clk(c); if (!rst->reset_reg) return -EPERM; return __branch_clk_reset(RST_REG(rst), action); } struct clk_ops clk_ops_empty; struct clk_ops clk_ops_rst = { .reset = reset_clk_rst, }; struct clk_ops clk_ops_rcg = { .enable = rcg_clk_prepare, .set_rate = rcg_clk_set_rate, Loading arch/arm/mach-msm/clock-local2.h +17 −0 Original line number Diff line number Diff line Loading @@ -138,6 +138,22 @@ static inline struct local_vote_clk *to_local_vote_clk(struct clk *clk) return container_of(clk, struct local_vote_clk, c); } /** * struct reset_clk - Reset clock * @c: clk * @reset_reg: block reset register * @base: pointer to base address of ioremapped registers. */ struct reset_clk { struct clk c; const u32 reset_reg; void *const __iomem *base; }; static inline struct reset_clk *to_reset_clk(struct clk *clk) { return container_of(clk, struct reset_clk, c); } /** * struct measure_clk - for rate measurement debug use * @sample_ticks: sample period in reference clock ticks Loading Loading @@ -198,6 +214,7 @@ extern struct clk_ops clk_ops_byte; extern struct clk_ops clk_ops_pixel; extern struct clk_ops clk_ops_edppixel; extern struct clk_ops clk_ops_gate; extern struct clk_ops clk_ops_rst; enum handoff pixel_rcg_handoff(struct clk *clk); enum handoff byte_rcg_handoff(struct clk *clk); Loading Loading
arch/arm/mach-msm/clock-local2.c +15 −0 Original line number Diff line number Diff line Loading @@ -52,6 +52,7 @@ struct clk_freq_tbl rcg_dummy_freq = F_END; #define D_REG(x) (*(x)->base + (x)->cmd_rcgr_reg + 0x10) #define CBCR_REG(x) (*(x)->base + (x)->cbcr_reg) #define BCR_REG(x) (*(x)->base + (x)->bcr_reg) #define RST_REG(x) (*(x)->base + (x)->reset_reg) #define VOTE_REG(x) (*(x)->base + (x)->vote_reg) #define GATE_EN_REG(x) (*(x)->base + (x)->en_reg) Loading Loading @@ -973,8 +974,22 @@ static enum handoff gate_clk_handoff(struct clk *c) return HANDOFF_DISABLED_CLK; } static int reset_clk_rst(struct clk *c, enum clk_reset_action action) { struct reset_clk *rst = to_reset_clk(c); if (!rst->reset_reg) return -EPERM; return __branch_clk_reset(RST_REG(rst), action); } struct clk_ops clk_ops_empty; struct clk_ops clk_ops_rst = { .reset = reset_clk_rst, }; struct clk_ops clk_ops_rcg = { .enable = rcg_clk_prepare, .set_rate = rcg_clk_set_rate, Loading
arch/arm/mach-msm/clock-local2.h +17 −0 Original line number Diff line number Diff line Loading @@ -138,6 +138,22 @@ static inline struct local_vote_clk *to_local_vote_clk(struct clk *clk) return container_of(clk, struct local_vote_clk, c); } /** * struct reset_clk - Reset clock * @c: clk * @reset_reg: block reset register * @base: pointer to base address of ioremapped registers. */ struct reset_clk { struct clk c; const u32 reset_reg; void *const __iomem *base; }; static inline struct reset_clk *to_reset_clk(struct clk *clk) { return container_of(clk, struct reset_clk, c); } /** * struct measure_clk - for rate measurement debug use * @sample_ticks: sample period in reference clock ticks Loading Loading @@ -198,6 +214,7 @@ extern struct clk_ops clk_ops_byte; extern struct clk_ops clk_ops_pixel; extern struct clk_ops clk_ops_edppixel; extern struct clk_ops clk_ops_gate; extern struct clk_ops clk_ops_rst; enum handoff pixel_rcg_handoff(struct clk *clk); enum handoff byte_rcg_handoff(struct clk *clk); Loading