lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <568F9960.9040209@gmail.com>
Date:	Fri, 8 Jan 2016 12:11:28 +0100
From:	Matthias Brugger <matthias.bgg@...il.com>
To:	Geliang Tang <geliangtang@....com>,
	Michael Turquette <mturquette@...libre.com>,
	Stephen Boyd <sboyd@...eaurora.org>,
	Shawn Guo <shawnguo@...nel.org>,
	Sascha Hauer <kernel@...gutronix.de>,
	Joachim Eastwood <manabian@...il.com>,
	Tero Kristo <t-kristo@...com>
Cc:	linux-kernel@...r.kernel.org, linux-mediatek@...ts.infradead.org,
	linux-omap@...r.kernel.org, linux-clk@...r.kernel.org,
	linux-arm-kernel@...ts.infradead.org
Subject: Re: [PATCH] clk: move the common clock's to_clk_*(_hw) macros to
 clk-provider.h



On 06/01/16 16:00, Geliang Tang wrote:
> to_clk_*(_hw) macros have been repeatedly defined in many places.
> This patch moves all the to_clk_*(_hw) definations in the common
> clock framework to public header clk-provider.h, and drop the local
> definations.
>

s/definations/definitions

> Signed-off-by: Geliang Tang <geliangtang@....com>
> ---
>   drivers/clk/clk-composite.c          |  2 --
>   drivers/clk/clk-divider.c            |  2 --
>   drivers/clk/clk-fixed-factor.c       |  2 --
>   drivers/clk/clk-fixed-rate.c         |  2 --
>   drivers/clk/clk-fractional-divider.c |  2 --
>   drivers/clk/clk-gate.c               |  2 --
>   drivers/clk/clk-gpio.c               |  2 --
>   drivers/clk/clk-multiplier.c         |  2 --
>   drivers/clk/clk-mux.c                |  2 --
>   drivers/clk/imx/clk-busy.c           |  4 ++--
>   drivers/clk/imx/clk-fixup-div.c      |  5 ++---
>   drivers/clk/imx/clk-fixup-mux.c      |  2 --
>   drivers/clk/imx/clk-gate-exclusive.c |  2 +-
>   drivers/clk/mediatek/clk-gate.c      |  8 ++++----
>   drivers/clk/mediatek/clk-gate.h      |  2 +-
>   drivers/clk/mvebu/common.c           |  2 --
>   drivers/clk/mvebu/kirkwood.c         |  2 --
>   drivers/clk/mxs/clk-div.c            |  2 +-
>   drivers/clk/nxp/clk-lpc18xx-ccu.c    |  2 --
>   drivers/clk/st/clkgen-mux.c          |  9 ++++-----
>   drivers/clk/ti/composite.c           |  2 --
>   drivers/clk/ti/divider.c             |  2 --
>   drivers/clk/ti/gate.c                |  2 --
>   drivers/clk/ti/mux.c                 |  2 --
>   include/linux/clk-provider.h         | 18 ++++++++++++++++++
>   25 files changed, 33 insertions(+), 51 deletions(-)
>
> diff --git a/drivers/clk/clk-composite.c b/drivers/clk/clk-composite.c
> index 4735de0..1f903e1f8 100644
> --- a/drivers/clk/clk-composite.c
> +++ b/drivers/clk/clk-composite.c
> @@ -19,8 +19,6 @@
>   #include <linux/err.h>
>   #include <linux/slab.h>
>
> -#define to_clk_composite(_hw) container_of(_hw, struct clk_composite, hw)
> -
>   static u8 clk_composite_get_parent(struct clk_hw *hw)
>   {
>   	struct clk_composite *composite = to_clk_composite(hw);
> diff --git a/drivers/clk/clk-divider.c b/drivers/clk/clk-divider.c
> index ded3ff4..c8bea2b 100644
> --- a/drivers/clk/clk-divider.c
> +++ b/drivers/clk/clk-divider.c
> @@ -28,8 +28,6 @@
>    * parent - fixed parent.  No clk_set_parent support
>    */
>
> -#define to_clk_divider(_hw) container_of(_hw, struct clk_divider, hw)
> -
>   #define div_mask(width)	((1 << (width)) - 1)
>
>   static unsigned int _get_table_maxdiv(const struct clk_div_table *table,
> diff --git a/drivers/clk/clk-fixed-factor.c b/drivers/clk/clk-fixed-factor.c
> index 83de57a..f0ddf37 100644
> --- a/drivers/clk/clk-fixed-factor.c
> +++ b/drivers/clk/clk-fixed-factor.c
> @@ -23,8 +23,6 @@
>    * parent - fixed parent.  No clk_set_parent support
>    */
>
> -#define to_clk_fixed_factor(_hw) container_of(_hw, struct clk_fixed_factor, hw)
> -
>   static unsigned long clk_factor_recalc_rate(struct clk_hw *hw,
>   		unsigned long parent_rate)
>   {
> diff --git a/drivers/clk/clk-fixed-rate.c b/drivers/clk/clk-fixed-rate.c
> index f85ec8d..e156beb 100644
> --- a/drivers/clk/clk-fixed-rate.c
> +++ b/drivers/clk/clk-fixed-rate.c
> @@ -26,8 +26,6 @@
>    * parent - fixed parent.  No clk_set_parent support
>    */
>
> -#define to_clk_fixed_rate(_hw) container_of(_hw, struct clk_fixed_rate, hw)
> -
>   static unsigned long clk_fixed_rate_recalc_rate(struct clk_hw *hw,
>   		unsigned long parent_rate)
>   {
> diff --git a/drivers/clk/clk-fractional-divider.c b/drivers/clk/clk-fractional-divider.c
> index 5c4955e..1abcd76 100644
> --- a/drivers/clk/clk-fractional-divider.c
> +++ b/drivers/clk/clk-fractional-divider.c
> @@ -16,8 +16,6 @@
>   #include <linux/slab.h>
>   #include <linux/rational.h>
>
> -#define to_clk_fd(_hw) container_of(_hw, struct clk_fractional_divider, hw)
> -
>   static unsigned long clk_fd_recalc_rate(struct clk_hw *hw,
>   					unsigned long parent_rate)
>   {
> diff --git a/drivers/clk/clk-gate.c b/drivers/clk/clk-gate.c
> index de0b322..d0d8ec8 100644
> --- a/drivers/clk/clk-gate.c
> +++ b/drivers/clk/clk-gate.c
> @@ -26,8 +26,6 @@
>    * parent - fixed parent.  No clk_set_parent support
>    */
>
> -#define to_clk_gate(_hw) container_of(_hw, struct clk_gate, hw)
> -
>   /*
>    * It works on following logic:
>    *
> diff --git a/drivers/clk/clk-gpio.c b/drivers/clk/clk-gpio.c
> index 19fed65..cbbea29 100644
> --- a/drivers/clk/clk-gpio.c
> +++ b/drivers/clk/clk-gpio.c
> @@ -31,8 +31,6 @@
>    * parent - fixed parent.  No clk_set_parent support
>    */
>
> -#define to_clk_gpio(_hw) container_of(_hw, struct clk_gpio, hw)
> -
>   static int clk_gpio_gate_enable(struct clk_hw *hw)
>   {
>   	struct clk_gpio *clk = to_clk_gpio(hw);
> diff --git a/drivers/clk/clk-multiplier.c b/drivers/clk/clk-multiplier.c
> index fe78065..9e449c7 100644
> --- a/drivers/clk/clk-multiplier.c
> +++ b/drivers/clk/clk-multiplier.c
> @@ -14,8 +14,6 @@
>   #include <linux/of.h>
>   #include <linux/slab.h>
>
> -#define to_clk_multiplier(_hw) container_of(_hw, struct clk_multiplier, hw)
> -
>   static unsigned long __get_mult(struct clk_multiplier *mult,
>   				unsigned long rate,
>   				unsigned long parent_rate)
> diff --git a/drivers/clk/clk-mux.c b/drivers/clk/clk-mux.c
> index 5ed03c8..252188f 100644
> --- a/drivers/clk/clk-mux.c
> +++ b/drivers/clk/clk-mux.c
> @@ -26,8 +26,6 @@
>    * parent - parent is adjustable through clk_set_parent
>    */
>
> -#define to_clk_mux(_hw) container_of(_hw, struct clk_mux, hw)
> -
>   static u8 clk_mux_get_parent(struct clk_hw *hw)
>   {
>   	struct clk_mux *mux = to_clk_mux(hw);
> diff --git a/drivers/clk/imx/clk-busy.c b/drivers/clk/imx/clk-busy.c
> index 4bb1bc4..5cc9959 100644
> --- a/drivers/clk/imx/clk-busy.c
> +++ b/drivers/clk/imx/clk-busy.c
> @@ -38,7 +38,7 @@ struct clk_busy_divider {
>
>   static inline struct clk_busy_divider *to_clk_busy_divider(struct clk_hw *hw)
>   {
> -	struct clk_divider *div = container_of(hw, struct clk_divider, hw);
> +	struct clk_divider *div = to_clk_divider(hw);
>
>   	return container_of(div, struct clk_busy_divider, div);
>   }
> @@ -123,7 +123,7 @@ struct clk_busy_mux {
>
>   static inline struct clk_busy_mux *to_clk_busy_mux(struct clk_hw *hw)
>   {
> -	struct clk_mux *mux = container_of(hw, struct clk_mux, hw);
> +	struct clk_mux *mux = to_clk_mux(hw);
>
>   	return container_of(mux, struct clk_busy_mux, mux);
>   }
> diff --git a/drivers/clk/imx/clk-fixup-div.c b/drivers/clk/imx/clk-fixup-div.c
> index 21db020..ce572273 100644
> --- a/drivers/clk/imx/clk-fixup-div.c
> +++ b/drivers/clk/imx/clk-fixup-div.c
> @@ -15,7 +15,6 @@
>   #include <linux/slab.h>
>   #include "clk.h"
>
> -#define to_clk_div(_hw) container_of(_hw, struct clk_divider, hw)
>   #define div_mask(d)	((1 << (d->width)) - 1)
>
>   /**
> @@ -35,7 +34,7 @@ struct clk_fixup_div {
>
>   static inline struct clk_fixup_div *to_clk_fixup_div(struct clk_hw *hw)
>   {
> -	struct clk_divider *divider = to_clk_div(hw);
> +	struct clk_divider *divider = to_clk_divider(hw);
>
>   	return container_of(divider, struct clk_fixup_div, divider);
>   }
> @@ -60,7 +59,7 @@ static int clk_fixup_div_set_rate(struct clk_hw *hw, unsigned long rate,
>   			    unsigned long parent_rate)
>   {
>   	struct clk_fixup_div *fixup_div = to_clk_fixup_div(hw);
> -	struct clk_divider *div = to_clk_div(hw);
> +	struct clk_divider *div = to_clk_divider(hw);
>   	unsigned int divider, value;
>   	unsigned long flags = 0;
>   	u32 val;
> diff --git a/drivers/clk/imx/clk-fixup-mux.c b/drivers/clk/imx/clk-fixup-mux.c
> index 0d40b35..c9b327e 100644
> --- a/drivers/clk/imx/clk-fixup-mux.c
> +++ b/drivers/clk/imx/clk-fixup-mux.c
> @@ -15,8 +15,6 @@
>   #include <linux/slab.h>
>   #include "clk.h"
>
> -#define to_clk_mux(_hw) container_of(_hw, struct clk_mux, hw)
> -
>   /**
>    * struct clk_fixup_mux - imx integer fixup multiplexer clock
>    * @mux: the parent class
> diff --git a/drivers/clk/imx/clk-gate-exclusive.c b/drivers/clk/imx/clk-gate-exclusive.c
> index c12f5f2..3bd9dee 100644
> --- a/drivers/clk/imx/clk-gate-exclusive.c
> +++ b/drivers/clk/imx/clk-gate-exclusive.c
> @@ -31,7 +31,7 @@ struct clk_gate_exclusive {
>
>   static int clk_gate_exclusive_enable(struct clk_hw *hw)
>   {
> -	struct clk_gate *gate = container_of(hw, struct clk_gate, hw);
> +	struct clk_gate *gate = to_clk_gate(hw);
>   	struct clk_gate_exclusive *exgate = container_of(gate,
>   					struct clk_gate_exclusive, gate);
>   	u32 val = readl(gate->reg);
> diff --git a/drivers/clk/mediatek/clk-gate.c b/drivers/clk/mediatek/clk-gate.c
> index 576bdb7..2a76901 100644
> --- a/drivers/clk/mediatek/clk-gate.c
> +++ b/drivers/clk/mediatek/clk-gate.c
> @@ -25,7 +25,7 @@
>
>   static int mtk_cg_bit_is_cleared(struct clk_hw *hw)
>   {
> -	struct mtk_clk_gate *cg = to_clk_gate(hw);
> +	struct mtk_clk_gate *cg = to_mtk_clk_gate(hw);
>   	u32 val;
>
>   	regmap_read(cg->regmap, cg->sta_ofs, &val);
> @@ -37,7 +37,7 @@ static int mtk_cg_bit_is_cleared(struct clk_hw *hw)
>
>   static int mtk_cg_bit_is_set(struct clk_hw *hw)
>   {
> -	struct mtk_clk_gate *cg = to_clk_gate(hw);
> +	struct mtk_clk_gate *cg = to_mtk_clk_gate(hw);
>   	u32 val;
>
>   	regmap_read(cg->regmap, cg->sta_ofs, &val);
> @@ -49,14 +49,14 @@ static int mtk_cg_bit_is_set(struct clk_hw *hw)
>
>   static void mtk_cg_set_bit(struct clk_hw *hw)
>   {
> -	struct mtk_clk_gate *cg = to_clk_gate(hw);
> +	struct mtk_clk_gate *cg = to_mtk_clk_gate(hw);
>
>   	regmap_write(cg->regmap, cg->set_ofs, BIT(cg->bit));
>   }
>
>   static void mtk_cg_clr_bit(struct clk_hw *hw)
>   {
> -	struct mtk_clk_gate *cg = to_clk_gate(hw);
> +	struct mtk_clk_gate *cg = to_mtk_clk_gate(hw);
>
>   	regmap_write(cg->regmap, cg->clr_ofs, BIT(cg->bit));
>   }
> diff --git a/drivers/clk/mediatek/clk-gate.h b/drivers/clk/mediatek/clk-gate.h
> index 11e25c9..b182160 100644
> --- a/drivers/clk/mediatek/clk-gate.h
> +++ b/drivers/clk/mediatek/clk-gate.h
> @@ -29,7 +29,7 @@ struct mtk_clk_gate {
>   	u8		bit;
>   };
>
> -static inline struct mtk_clk_gate *to_clk_gate(struct clk_hw *hw)
> +static inline struct mtk_clk_gate *to_mtk_clk_gate(struct clk_hw *hw)
>   {
>   	return container_of(hw, struct mtk_clk_gate, hw);
>   }
> diff --git a/drivers/clk/mvebu/common.c b/drivers/clk/mvebu/common.c
> index 28aac67..daa6ebd 100644
> --- a/drivers/clk/mvebu/common.c
> +++ b/drivers/clk/mvebu/common.c
> @@ -199,8 +199,6 @@ struct clk_gating_ctrl {
>   	u32 saved_reg;
>   };
>
> -#define to_clk_gate(_hw) container_of(_hw, struct clk_gate, hw)
> -
>   static struct clk_gating_ctrl *ctrl;
>
>   static struct clk *clk_gating_get_src(
> diff --git a/drivers/clk/mvebu/kirkwood.c b/drivers/clk/mvebu/kirkwood.c
> index 99550f2..a2a8d61 100644
> --- a/drivers/clk/mvebu/kirkwood.c
> +++ b/drivers/clk/mvebu/kirkwood.c
> @@ -256,8 +256,6 @@ static const struct clk_muxing_soc_desc kirkwood_mux_desc[] __initconst = {
>   		11, 1, 0 },
>   };
>
> -#define to_clk_mux(_hw) container_of(_hw, struct clk_mux, hw)
> -
>   static struct clk *clk_muxing_get_src(
>   	struct of_phandle_args *clkspec, void *data)
>   {
> diff --git a/drivers/clk/mxs/clk-div.c b/drivers/clk/mxs/clk-div.c
> index 049ee27..f75e989 100644
> --- a/drivers/clk/mxs/clk-div.c
> +++ b/drivers/clk/mxs/clk-div.c
> @@ -33,7 +33,7 @@ struct clk_div {
>
>   static inline struct clk_div *to_clk_div(struct clk_hw *hw)
>   {
> -	struct clk_divider *divider = container_of(hw, struct clk_divider, hw);
> +	struct clk_divider *divider = to_clk_divider(hw);
>
>   	return container_of(divider, struct clk_div, divider);
>   }
> diff --git a/drivers/clk/nxp/clk-lpc18xx-ccu.c b/drivers/clk/nxp/clk-lpc18xx-ccu.c
> index 13aabbb..08ab3c5 100644
> --- a/drivers/clk/nxp/clk-lpc18xx-ccu.c
> +++ b/drivers/clk/nxp/clk-lpc18xx-ccu.c
> @@ -28,8 +28,6 @@
>   #define CCU_BRANCH_IS_BUS	BIT(0)
>   #define CCU_BRANCH_HAVE_DIV2	BIT(1)
>
> -#define to_clk_gate(_hw) container_of(_hw, struct clk_gate, hw)
> -
>   struct lpc18xx_branch_clk_data {
>   	const char **name;
>   	int num;
> diff --git a/drivers/clk/st/clkgen-mux.c b/drivers/clk/st/clkgen-mux.c
> index 5dc5ce2..0d9a74b 100644
> --- a/drivers/clk/st/clkgen-mux.c
> +++ b/drivers/clk/st/clkgen-mux.c
> @@ -822,11 +822,10 @@ err:
>   		if (!clk_data->clks[i])
>   			continue;
>
> -		composite = container_of(__clk_get_hw(clk_data->clks[i]),
> -					 struct clk_composite, hw);
> -		kfree(container_of(composite->gate_hw, struct clk_gate, hw));
> -		kfree(container_of(composite->rate_hw, struct clk_divider, hw));
> -		kfree(container_of(composite->mux_hw, struct clk_mux, hw));
> +		composite = to_clk_composite(__clk_get_hw(clk_data->clks[i]));
> +		kfree(to_clk_gate(composite->gate_hw));
> +		kfree(to_clk_divider(composite->rate_hw));
> +		kfree(to_clk_mux(composite->mux_hw));
>   	}
>
>   	kfree(clk_data->clks);
> diff --git a/drivers/clk/ti/composite.c b/drivers/clk/ti/composite.c
> index dbef218..43345c4 100644
> --- a/drivers/clk/ti/composite.c
> +++ b/drivers/clk/ti/composite.c
> @@ -28,8 +28,6 @@
>   #undef pr_fmt
>   #define pr_fmt(fmt) "%s: " fmt, __func__
>
> -#define to_clk_divider(_hw) container_of(_hw, struct clk_divider, hw)
> -
>   static unsigned long ti_composite_recalc_rate(struct clk_hw *hw,
>   					      unsigned long parent_rate)
>   {
> diff --git a/drivers/clk/ti/divider.c b/drivers/clk/ti/divider.c
> index df25583..b4e5de1 100644
> --- a/drivers/clk/ti/divider.c
> +++ b/drivers/clk/ti/divider.c
> @@ -26,8 +26,6 @@
>   #undef pr_fmt
>   #define pr_fmt(fmt) "%s: " fmt, __func__
>
> -#define to_clk_divider(_hw) container_of(_hw, struct clk_divider, hw)
> -
>   #define div_mask(d)	((1 << ((d)->width)) - 1)
>
>   static unsigned int _get_table_maxdiv(const struct clk_div_table *table)
> diff --git a/drivers/clk/ti/gate.c b/drivers/clk/ti/gate.c
> index 5429d35..bc05f27 100644
> --- a/drivers/clk/ti/gate.c
> +++ b/drivers/clk/ti/gate.c
> @@ -24,8 +24,6 @@
>
>   #include "clock.h"
>
> -#define to_clk_divider(_hw) container_of(_hw, struct clk_divider, hw)
> -
>   #undef pr_fmt
>   #define pr_fmt(fmt) "%s: " fmt, __func__
>
> diff --git a/drivers/clk/ti/mux.c b/drivers/clk/ti/mux.c
> index dab9ba8..618ded9 100644
> --- a/drivers/clk/ti/mux.c
> +++ b/drivers/clk/ti/mux.c
> @@ -26,8 +26,6 @@
>   #undef pr_fmt
>   #define pr_fmt(fmt) "%s: " fmt, __func__
>
> -#define to_clk_mux(_hw) container_of(_hw, struct clk_mux, hw)
> -
>   static u8 ti_clk_mux_get_parent(struct clk_hw *hw)
>   {
>   	struct clk_mux *mux = to_clk_mux(hw);
> diff --git a/include/linux/clk-provider.h b/include/linux/clk-provider.h
> index 1143e38..ad1d69c 100644
> --- a/include/linux/clk-provider.h
> +++ b/include/linux/clk-provider.h
> @@ -276,6 +276,8 @@ struct clk_fixed_rate {
>   	u8		flags;
>   };
>
> +#define to_clk_fixed_rate(_hw) container_of(_hw, struct clk_fixed_rate, hw)
> +
>   extern const struct clk_ops clk_fixed_rate_ops;
>   struct clk *clk_register_fixed_rate(struct device *dev, const char *name,
>   		const char *parent_name, unsigned long flags,
> @@ -314,6 +316,8 @@ struct clk_gate {
>   	spinlock_t	*lock;
>   };
>
> +#define to_clk_gate(_hw) container_of(_hw, struct clk_gate, hw)
> +
>   #define CLK_GATE_SET_TO_DISABLE		BIT(0)
>   #define CLK_GATE_HIWORD_MASK		BIT(1)
>
> @@ -376,6 +380,8 @@ struct clk_divider {
>   	spinlock_t	*lock;
>   };
>
> +#define to_clk_divider(_hw) container_of(_hw, struct clk_divider, hw)
> +
>   #define CLK_DIVIDER_ONE_BASED		BIT(0)
>   #define CLK_DIVIDER_POWER_OF_TWO	BIT(1)
>   #define CLK_DIVIDER_ALLOW_ZERO		BIT(2)
> @@ -440,6 +446,8 @@ struct clk_mux {
>   	spinlock_t	*lock;
>   };
>
> +#define to_clk_mux(_hw) container_of(_hw, struct clk_mux, hw)
> +
>   #define CLK_MUX_INDEX_ONE		BIT(0)
>   #define CLK_MUX_INDEX_BIT		BIT(1)
>   #define CLK_MUX_HIWORD_MASK		BIT(2)
> @@ -483,6 +491,8 @@ struct clk_fixed_factor {
>   	unsigned int	div;
>   };
>
> +#define to_clk_fixed_factor(_hw) container_of(_hw, struct clk_fixed_factor, hw)
> +
>   extern const struct clk_ops clk_fixed_factor_ops;
>   struct clk *clk_register_fixed_factor(struct device *dev, const char *name,
>   		const char *parent_name, unsigned long flags,
> @@ -514,6 +524,8 @@ struct clk_fractional_divider {
>   	spinlock_t	*lock;
>   };
>
> +#define to_clk_fd(_hw) container_of(_hw, struct clk_fractional_divider, hw)
> +
>   extern const struct clk_ops clk_fractional_divider_ops;
>   struct clk *clk_register_fractional_divider(struct device *dev,
>   		const char *name, const char *parent_name, unsigned long flags,
> @@ -550,6 +562,8 @@ struct clk_multiplier {
>   	spinlock_t	*lock;
>   };
>
> +#define to_clk_multiplier(_hw) container_of(_hw, struct clk_multiplier, hw)
> +
>   #define CLK_MULTIPLIER_ZERO_BYPASS		BIT(0)
>   #define CLK_MULTIPLIER_ROUND_CLOSEST	BIT(1)
>
> @@ -579,6 +593,8 @@ struct clk_composite {
>   	const struct clk_ops	*gate_ops;
>   };
>
> +#define to_clk_composite(_hw) container_of(_hw, struct clk_composite, hw)
> +
>   struct clk *clk_register_composite(struct device *dev, const char *name,
>   		const char * const *parent_names, int num_parents,
>   		struct clk_hw *mux_hw, const struct clk_ops *mux_ops,
> @@ -601,6 +617,8 @@ struct clk_gpio {
>   	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, unsigned gpio, bool active_low,
>

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ