Advertisement
Guest User

Untitled

a guest
Oct 31st, 2014
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.47 KB | None | 0 0
  1. diff --git a/drivers/clk/rockchip/clk.c b/drivers/clk/rockchip/clk.c
  2. index dec6f8d6..0f2cc0a 100644
  3. --- a/drivers/clk/rockchip/clk.c
  4. +++ b/drivers/clk/rockchip/clk.c
  5. @@ -41,6 +41,7 @@
  6. static struct clk *rockchip_clk_register_branch(const char *name,
  7. const char **parent_names, u8 num_parents, void __iomem *base,
  8. int muxdiv_offset, u8 mux_shift, u8 mux_width, u8 mux_flags,
  9. + struct clk_ops *muxops,
  10. u8 div_shift, u8 div_width, u8 div_flags,
  11. struct clk_div_table *div_table, int gate_offset,
  12. u8 gate_shift, u8 gate_flags, unsigned long flags,
  13. @@ -63,8 +64,13 @@ static struct clk *rockchip_clk_register_branch(const char *name,
  14. mux->mask = BIT(mux_width) - 1;
  15. mux->flags = mux_flags;
  16. mux->lock = lock;
  17. - mux_ops = (mux_flags & CLK_MUX_READ_ONLY) ? &clk_mux_ro_ops
  18. - : &clk_mux_ops;
  19. +
  20. + if (muxops)
  21. + mux_ops = muxops;
  22. + else if (mux_flags & CLK_MUX_READ_ONLY)
  23. + mux_ops = &clk_mux_ro_ops;
  24. + else
  25. + mux_ops = &clk_mux_ops;
  26. }
  27.  
  28. if (gate_offset >= 0) {
  29. @@ -265,6 +271,7 @@ void __init rockchip_clk_register_branches(
  30. list->parent_names, list->num_parents,
  31. reg_base, list->muxdiv_offset, list->mux_shift,
  32. list->mux_width, list->mux_flags,
  33. + list->mux_ops,
  34. list->div_shift, list->div_width,
  35. list->div_flags, list->div_table,
  36. list->gate_offset, list->gate_shift,
  37. diff --git a/drivers/clk/rockchip/clk.h b/drivers/clk/rockchip/clk.h
  38. index 6baf665..9c97fbc 100644
  39. --- a/drivers/clk/rockchip/clk.h
  40. +++ b/drivers/clk/rockchip/clk.h
  41. @@ -182,6 +182,7 @@ struct rockchip_clk_branch {
  42. u8 mux_shift;
  43. u8 mux_width;
  44. u8 mux_flags;
  45. + struct clk_ops *mux_ops;
  46. u8 div_shift;
  47. u8 div_width;
  48. u8 div_flags;
  49. @@ -212,6 +213,28 @@ struct rockchip_clk_branch {
  50. .gate_flags = gf, \
  51. }
  52.  
  53. +#define COMPOSITE_MUXOPS(_id, cname, pnames, f, mo, ms, mw, mf, mops, ds, dw,\
  54. + df, go, gs, gf) \
  55. + { \
  56. + .id = _id, \
  57. + .branch_type = branch_composite, \
  58. + .name = cname, \
  59. + .parent_names = pnames, \
  60. + .num_parents = ARRAY_SIZE(pnames), \
  61. + .flags = f, \
  62. + .muxdiv_offset = mo, \
  63. + .mux_shift = ms, \
  64. + .mux_width = mw, \
  65. + .mux_flags = mf, \
  66. + .mux_ops = mops, \
  67. + .div_shift = ds, \
  68. + .div_width = dw, \
  69. + .div_flags = df, \
  70. + .gate_offset = go, \
  71. + .gate_shift = gs, \
  72. + .gate_flags = gf, \
  73. + }
  74. +
  75. #define COMPOSITE_NOMUX(_id, cname, pname, f, mo, ds, dw, df, \
  76. go, gs, gf) \
  77. { \
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement