void clk_unregister_composite(struct clk *clk);
        struct clk_hw *clk_hw_register_composite(struct device *dev, const char *name,
                        const char * const *parent_names, int num_parents,
 ----- -void clk_hw_unregister_composite(struct clk_hw *hw);
 ----- -
 ----- -/**
 ----- - * struct clk_gpio - gpio gated clock
 ----- - *
 ----- - * @hw:         handle between common and hardware-specific interfaces
 ----- - * @gpiod:      gpio descriptor
 ----- - *
 ----- - * Clock with a gpio control for enabling and disabling the parent clock
 ----- - * or switching between two parents by asserting or deasserting the gpio.
 ----- - *
 ----- - * Implements .enable, .disable and .is_enabled or
 ----- - * .get_parent, .set_parent and .determine_rate depending on which clk_ops
 ----- - * is used.
 ----- - */
 ----- -struct clk_gpio {
 ----- -        struct clk_hw   hw;
 ----- -        struct gpio_desc *gpiod;
 ----- -};
 ----- -
 ----- -#define to_clk_gpio(_hw) container_of(_hw, struct clk_gpio, hw)
 ----- -
 ----- -extern const struct clk_ops clk_gpio_gate_ops;
 ----- -struct clk *clk_register_gpio_gate(struct device *dev, const char *name,
 ----- -                const char *parent_name, struct gpio_desc *gpiod,
 ----- -                unsigned long flags);
 ----- -struct clk_hw *clk_hw_register_gpio_gate(struct device *dev, const char *name,
 ----- -                const char *parent_name, struct gpio_desc *gpiod,
 ----- -                unsigned long flags);
 ----- -void clk_hw_unregister_gpio_gate(struct clk_hw *hw);
 ----- -
 ----- -extern const struct clk_ops clk_gpio_mux_ops;
 ----- -struct clk *clk_register_gpio_mux(struct device *dev, const char *name,
 ----- -                const char * const *parent_names, u8 num_parents, struct gpio_desc *gpiod,
 ----- -                unsigned long flags);
 ----- -struct clk_hw *clk_hw_register_gpio_mux(struct device *dev, const char *name,
 ----- -                const char * const *parent_names, u8 num_parents, struct gpio_desc *gpiod,
+                       struct clk_hw *mux_hw, const struct clk_ops *mux_ops,
+                       struct clk_hw *rate_hw, const struct clk_ops *rate_ops,
+                       struct clk_hw *gate_hw, const struct clk_ops *gate_ops,
+                       unsigned long flags);
++++++ +struct clk_hw *clk_hw_register_composite_pdata(struct device *dev,
++++++ +                const char *name,
++++++ +                const struct clk_parent_data *parent_data, int num_parents,
 +++++ +                struct clk_hw *mux_hw, const struct clk_ops *mux_ops,
 +++++ +                struct clk_hw *rate_hw, const struct clk_ops *rate_ops,
 +++++ +                struct clk_hw *gate_hw, const struct clk_ops *gate_ops,
                        unsigned long flags);
 ----- -void clk_hw_unregister_gpio_mux(struct clk_hw *hw);
 +++++ +void clk_hw_unregister_composite(struct clk_hw *hw);
        
      - /**
      -  * struct clk_gpio - gpio gated clock
      -  *
      -  * @hw:         handle between common and hardware-specific interfaces
      -  * @gpiod:      gpio descriptor
      -  *
      -  * Clock with a gpio control for enabling and disabling the parent clock
      -  * or switching between two parents by asserting or deasserting the gpio.
      -  *
      -  * Implements .enable, .disable and .is_enabled or
      -  * .get_parent, .set_parent and .determine_rate depending on which clk_ops
      -  * is used.
      -  */
      - struct clk_gpio {
      -         struct clk_hw   hw;
      -         struct gpio_desc *gpiod;
      - };
      - 
      - #define to_clk_gpio(_hw) container_of(_hw, struct clk_gpio, hw)
      - 
      - extern const struct clk_ops clk_gpio_gate_ops;
      - struct clk *clk_register_gpio_gate(struct device *dev, const char *name,
      -                 const char *parent_name, struct gpio_desc *gpiod,
      -                 unsigned long flags);
      - struct clk_hw *clk_hw_register_gpio_gate(struct device *dev, const char *name,
      -                 const char *parent_name, struct gpio_desc *gpiod,
      -                 unsigned long flags);
      - void clk_hw_unregister_gpio_gate(struct clk_hw *hw);
      - 
      - extern const struct clk_ops clk_gpio_mux_ops;
      - struct clk *clk_register_gpio_mux(struct device *dev, const char *name,
      -                 const char * const *parent_names, u8 num_parents, struct gpio_desc *gpiod,
      -                 unsigned long flags);
      - struct clk_hw *clk_hw_register_gpio_mux(struct device *dev, const char *name,
      -                 const char * const *parent_names, u8 num_parents, struct gpio_desc *gpiod,
      -                 unsigned long flags);
      - void clk_hw_unregister_gpio_mux(struct clk_hw *hw);
      - 
        struct clk *clk_register(struct device *dev, struct clk_hw *hw);
        struct clk *devm_clk_register(struct device *dev, struct clk_hw *hw);