clk: Add non CONFIG_HAVE_CLK routines
Subsystems (12)
v3 cover clk: Add non CONFIG_HAVE_CLK routines
Hi,
I am resending this patchset as Andrew didn't get few patches of this set. Also i have updated patches with Acked-by or Reviewed by of people who replied with these strings.
Last time there were few discussion over this patchset which can be found at
http://lkml.org/lkml/2012/4/24/154
Many drivers are shared between architectures that may or may not have HAVE_CLK selected for them. To remove compilation errors for them we enclose clk_*() calls in these drivers within #ifdef CONFIG_HAVE_CLK, #endif.
This patchset removes the need of these CONFIG_HAVE_CLK statements, by introducing dummy routines when HAVE_CLK is not selected by platforms. So, definition of these routines will always be available. These calls will return error for platforms that don't select HAVE_CLK.
V2->V3:
- Dummy routines now return NULL or 0.
- All user drivers must fail if clk_get returned error other than NULL.
- All user drivers don't need to validate their clk pointer before every call to clk_*() routines.
- Patches dropped earlier are again taken back, as they were following similar approach to what is implemented now.
Viresh Kumar (12):
clk: Add non CONFIG_HAVE_CLK routines
clk: Remove redundant depends on from drivers/Kconfig i2c/i2c-pxa: Remove conditional compilation of clk code usb/marvell: Remove conditional compilation of clk code usb/musb: Remove conditional compilation of clk code ata/pata_arasan: Remove conditional compilation of clk code ata/sata_mv: Remove conditional compilation of clk code net/c_can: Remove conditional compilation of clk code net/stmmac: Remove conditional compilation of clk code gadget/m66592: Remove conditional compilation of clk code gadget/r8a66597: Remove conditional compilation of clk code usb/host/r8a66597: Remove conditional compilation of clk code
drivers/ata/pata_arasan_cf.c | 14 +-- drivers/ata/sata_mv.c | 10 -- drivers/clk/Kconfig | 2 - drivers/i2c/busses/i2c-pxa.c | 7 - drivers/net/can/c_can/c_can_platform.c | 8 - drivers/net/ethernet/stmicro/stmmac/stmmac.h | 41 ----- drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 33 ++-- drivers/usb/gadget/m66592-udc.c | 9 +- drivers/usb/gadget/m66592-udc.h | 5 - drivers/usb/gadget/r8a66597-udc.c | 11 +- drivers/usb/gadget/r8a66597-udc.h | 5 - drivers/usb/host/r8a66597-hcd.c | 12 -- drivers/usb/host/r8a66597.h | 5 - drivers/usb/musb/musb_core.h | 8 - include/linux/clk.h | 168 +++++++++++++------- include/linux/platform_data/mv_usb.h | 9 - 16 files changed, 131 insertions(+), 216 deletions(-)
Signature · 1 line
1.7.9
PATCH RESEND v3 1/12 clk: Add non CONFIG_HAVE_CLK routines
Many drivers are shared between architectures that may or may not have HAVE_CLK selected for them. To remove compilation errors for them we enclose clk_*() calls in these drivers within #ifdef CONFIG_HAVE_CLK, #endif.
This patch removes the need of these CONFIG_HAVE_CLK statements, by introducing dummy routines when HAVE_CLK is not selected by platforms. So, definition of these routines will always be available. These calls will return error for platforms that don't select HAVE_CLK.
--- include/linux/clk.h | 168 +++++++++++++++++++++++++++++++++------------------ 1 files changed, 109 insertions(+), 59 deletions(-)
include/linux/clk.h +109 -59
@@ -84,6 +84,43 @@ int clk_notifier_unregister(struct clk *clk, struct notifier_block *nb);#endif /* !CONFIG_COMMON_CLK */ /** +* clk_prepare - prepare a clock source +* @clk: clock source +* +* This prepares the clock source for use. +* +* Must not be called from within atomic context. +*/ +#ifdef CONFIG_HAVE_CLK_PREPARE +int clk_prepare (struct clk *clk); +#else +static inline int clk_prepare (struct clk *clk) +{ +might_sleep (); +return 0 ; +} +#endif + +/** +* clk_unprepare - undo preparation of a clock source +* @clk: clock source +* +* This undoes a previously prepared clock. The caller must balance +* the number of prepare and unprepare calls. +* +* Must not be called from within atomic context. +*/ +#ifdef CONFIG_HAVE_CLK_PREPARE +void clk_unprepare (struct clk *clk); +#else +static inline void clk_unprepare (struct clk *clk) +{ +might_sleep (); +} +#endif + +#ifdef CONFIG_HAVE_CLK +/** * clk_get - lookup and obtain a reference to a clock producer. * @dev: device for clock "consumer" * @id: clock comsumer ID
@@ -121,24 +158,6 @@ struct clk *clk_get(struct device *dev, const char *id);struct clk *devm_clk_get (struct device *dev,const char *id);/** -* clk_prepare - prepare a clock source -* @clk: clock source -* -* This prepares the clock source for use. -* -* Must not be called from within atomic context. -*/ -#ifdef CONFIG_HAVE_CLK_PREPARE -int clk_prepare (struct clk *clk); -#else -static inline int clk_prepare (struct clk *clk) -{ -might_sleep (); -return 0 ; -} -#endif - -/** * clk_enable - inform the system when the clock source should be running. * @clk: clock source *
@@ -166,47 +185,6 @@ int clk_enable(struct clk *clk);*/ void clk_disable (struct clk *clk); - -/** -* clk_unprepare - undo preparation of a clock source -* @clk: clock source -* -* This undoes a previously prepared clock. The caller must balance -* the number of prepare and unprepare calls. -* -* Must not be called from within atomic context. -*/ -#ifdef CONFIG_HAVE_CLK_PREPARE -void clk_unprepare (struct clk *clk); -#else -static inline void clk_unprepare (struct clk *clk) -{ -might_sleep (); -} -#endif - -/* clk_prepare_enable helps cases using clk_enable in non-atomic context. */ -static inline int clk_prepare_enable (struct clk *clk) -{ -int ret; - - ret =clk_prepare (clk); -if (ret) -return ret; - ret =clk_enable (clk); -if (ret) -clk_unprepare (clk); - -return ret; -} - -/* clk_disable_unprepare helps cases using clk_disable in non-atomic context. */ -static inline void clk_disable_unprepare (struct clk *clk) -{ -clk_disable (clk); -clk_unprepare (clk); -} -/** * clk_get_rate - obtain the current clock rate (in Hz) for a clock source. * This is only valid once the clock source has been enabled.
@@ -297,6 +275,78 @@ struct clk *clk_get_parent(struct clk *clk);*/ struct clk *clk_get_sys (const char *dev_id,const char *con_id); +#else /* !CONFIG_HAVE_CLK */ + +static inline struct clk *clk_get (struct device *dev,const char *id) +{ +return NULL ; +} + +static inline struct clk *devm_clk_get (struct device *dev,const char *id) +{ +return NULL ; +} + +static inline void clk_put (struct clk *clk) {} + +static inline void devm_clk_put (struct device *dev,struct clk *clk) {} + +static inline int clk_enable (struct clk *clk) +{ +return 0 ; +} + +static inline void clk_disable (struct clk *clk) {} + +static inline unsigned long clk_get_rate (struct clk *clk) +{ +return 0 ; +} + +static inline int clk_set_rate (struct clk *clk,unsigned long rate) +{ +return 0 ; +} + +static inline long clk_round_rate (struct clk *clk,unsigned long rate) +{ +return 0 ; +} + +static inline int clk_set_parent (struct clk *clk,struct clk *parent) +{ +return 0 ; +} + +static inline struct clk *clk_get_parent (struct clk *clk) +{ +return NULL ; +} + +#endif + +/* clk_prepare_enable helps cases using clk_enable in non-atomic context. */ +static inline int clk_prepare_enable (struct clk *clk) +{ +int ret; + + ret =clk_prepare (clk); +if (ret) +return ret; + ret =clk_enable (clk); +if (ret) +clk_unprepare (clk); + +return ret; +} + +/* clk_disable_unprepare helps cases using clk_disable in non-atomic context. */ +static inline void clk_disable_unprepare (struct clk *clk) +{ +clk_disable (clk); +clk_unprepare (clk); +} +/** * clk_add_alias - add a new clock alias * @alias: name for clock alias
Signature · 1 line
1.7.9
PATCH RESEND v3 2/12 clk: Remove redundant depends on from drivers/Kconfig
In reply to Viresh Kumarmenu "Common Clock Framework" has "depends on COMMON_CLK" and so configs defined within menu don't require these "depends on COMMON_CLK again".
--- drivers/clk/Kconfig | 2 -- 1 files changed, 0 insertions(+), 2 deletions(-)
drivers/clk/Kconfig +0 -2
@@ -24,7 +24,6 @@ menu "Common Clock Framework" config COMMON_CLK_DISABLE_UNUSED bool "Disabled unused clocks at boot" - depends on COMMON_CLK ---help--- Traverses the entire clock tree and disables any clocks that are enabled in hardware but have not been enabled by any device drivers.
@@ -35,7 +34,6 @@ config COMMON_CLK_DISABLE_UNUSED config COMMON_CLK_DEBUG bool "DebugFS representation of clock tree" - depends on COMMON_CLK select DEBUG_FS ---help--- Creates a directory hierchy in debugfs for visualizing the clk
Signature · 1 line
1.7.9
PATCH RESEND v3 3/12 i2c/i2c-pxa: Remove conditional compilation of clk code
In reply to Viresh KumarFrom: Viresh Kumar <[email protected]>
With addition of dummy clk_*() calls for non CONFIG_HAVE_CLK cases in clk.h, there is no need to have clk code enclosed in #ifdef CONFIG_HAVE_CLK, #endif macros.
pxa i2c also has these dummy macros defined locally. Remove them as they aren't required anymore.
--- drivers/i2c/busses/i2c-pxa.c | 7 ------- 1 files changed, 0 insertions(+), 7 deletions(-)
drivers/i2c/busses/i2c-pxa.c +0 -7
@@ -41,13 +41,6 @@#include <asm/irq.h> -#ifndef CONFIG_HAVE_CLK -#define clk_get (dev, id) NULL -#define clk_put (clk) do { } while (0) -#define clk_disable (clk) do { } while (0) -#define clk_enable (clk) do { } while (0) -#endif -struct pxa_reg_layout {u32 ibmr;u32 idbr;
Signature · 1 line
1.7.9
PATCH RESEND v3 4/12 usb/marvell: Remove conditional compilation of clk code
In reply to Viresh KumarFrom: Viresh Kumar <[email protected]>
With addition of dummy clk_*() calls for non CONFIG_HAVE_CLK cases in clk.h, there is no need to have clk code enclosed in #ifdef CONFIG_HAVE_CLK, #endif macros.
Marvell usb also has these dummy macros defined locally. Remove them as they aren't required anymore.
--- include/linux/platform_data/mv_usb.h | 9 --------- 1 files changed, 0 insertions(+), 9 deletions(-)
include/linux/platform_data/mv_usb.h +0 -9
@@ -52,13 +52,4 @@ struct mv_usb_platform_data {int (*set_vbus)(unsigned int vbus); int (*private_init)(void __iomem *opregs, void __iomem *phyregs); }; - -#ifndef CONFIG_HAVE_CLK -/* Dummy stub for clk framework */ -#define clk_get (dev, id) NULL -#define clk_put (clock) do {} while (0) -#define clk_enable (clock) do {} while (0) -#define clk_disable (clock) do {} while (0) -#endif -#endif
Signature · 1 line
1.7.9
PATCH RESEND v3 5/12 usb/musb: Remove conditional compilation of clk code
In reply to Viresh KumarFrom: Viresh Kumar <[email protected]>
With addition of dummy clk_*() calls for non CONFIG_HAVE_CLK cases in clk.h, there is no need to have clk code enclosed in #ifdef CONFIG_HAVE_CLK, #endif macros.
musb also has these dummy macros defined locally. Remove them as they aren't required anymore.
--- drivers/usb/musb/musb_core.h | 8 -------- 1 files changed, 0 insertions(+), 8 deletions(-)
drivers/usb/musb/musb_core.h +0 -8
@@ -81,14 +81,6 @@ struct musb_ep;#define is_peripheral_active (m) (!(m)->is_host)#define is_host_active (m) ((m)->is_host) -#ifndef CONFIG_HAVE_CLK -/* Dummy stub for clk framework */ -#define clk_get (dev, id) NULL -#define clk_put (clock) do {} while (0) -#define clk_enable (clock) do {} while (0) -#define clk_disable (clock) do {} while (0) -#endif -#ifdef CONFIG_PROC_FS #include <linux/fs.h> #define MUSB_CONFIG_PROC_FS
Signature · 1 line
1.7.9
PATCH RESEND v3 6/12 ata/pata_arasan: Remove conditional compilation of clk code
In reply to Viresh KumarWith addition of dummy clk_*() calls for non CONFIG_HAVE_CLK cases in clk.h, there is no need to have clk code enclosed in #ifdef CONFIG_HAVE_CLK, #endif macros.
--- drivers/ata/pata_arasan_cf.c | 14 +------------- 1 files changed, 1 insertions(+), 13 deletions(-)
drivers/ata/pata_arasan_cf.c +1 -13
@@ -184,10 +184,8 @@struct arasan_cf_dev {/* pointer to ata_host structure */ struct ata_host *host; -/* clk structure, only if HAVE_CLK is defined */ -#ifdef CONFIG_HAVE_CLK +/* clk structure */ struct clk *clk; -#endif /* physical base address of controller */ dma_addr_t pbase;
@@ -312,13 +310,11 @@ static int cf_init(struct arasan_cf_dev *acdev)unsigned long flags;int ret =0 ; -#ifdef CONFIG_HAVE_CLK ret =clk_enable (acdev->clk);if (ret) {dev_dbg (acdev->host->dev,"clock enable failed" );return ret; } -#endif spin_lock_irqsave (&acdev->host->lock, flags);/* configure CF interface clock */
@@ -344,9 +340,7 @@ static void cf_exit(struct arasan_cf_dev *acdev)writel (readl (acdev->vbase +OP_MODE ) & ~CFHOST_ENB , acdev->vbase +OP_MODE );spin_unlock_irqrestore (&acdev->host->lock, flags); -#ifdef CONFIG_HAVE_CLK clk_disable (acdev->clk); -#endif }static void dma_callback (void *dev)
@@ -828,13 +822,11 @@ static int __devinit arasan_cf_probe(struct platform_device *pdev)return -ENOMEM ; } -#ifdef CONFIG_HAVE_CLK acdev->clk =clk_get (&pdev->dev,NULL );if (IS_ERR (acdev->clk)) {dev_warn (&pdev->dev,"Clock not found\n" );return PTR_ERR (acdev->clk); } -#endif /* allocate host */ host =ata_host_alloc (&pdev->dev,1 );
@@ -899,9 +891,7 @@ static int __devinit arasan_cf_probe(struct platform_device *pdev) &arasan_cf_sht); free_clk: -#ifdef CONFIG_HAVE_CLK clk_put (acdev->clk); -#endif return ret; }
@@ -912,9 +902,7 @@ static int __devexit arasan_cf_remove(struct platform_device *pdev)ata_host_detach (host);cf_exit (acdev); -#ifdef CONFIG_HAVE_CLK clk_put (acdev->clk); -#endif return 0 ; }
Signature · 1 line
1.7.9
PATCH RESEND v3 7/12 ata/sata_mv: Remove conditional compilation of clk code
In reply to Viresh KumarWith addition of dummy clk_*() calls for non CONFIG_HAVE_CLK cases in clk.h, there is no need to have clk code enclosed in #ifdef CONFIG_HAVE_CLK, #endif macros.
--- drivers/ata/sata_mv.c | 10 ---------- 1 files changed, 0 insertions(+), 10 deletions(-)
drivers/ata/sata_mv.c +0 -10
@@ -551,9 +551,7 @@ struct mv_host_priv {u32 irq_mask_offset;u32 unmask_all_irqs; -#if defined(CONFIG_HAVE_CLK )struct clk *clk; -#endif /* * These consistent DMA memory pools give us guaranteed * alignment for hardware-accessed data structures,
@@ -4063,13 +4061,11 @@ static int mv_platform_probe(struct platform_device *pdev) resource_size(res)); hpriv->base -=SATAHC0_REG_BASE ; -#if defined(CONFIG_HAVE_CLK ) hpriv->clk =clk_get (&pdev->dev,NULL );if (IS_ERR (hpriv->clk))dev_notice (&pdev->dev,"cannot get clkdev\n" );else clk_enable (hpriv->clk); -#endif /* * (Re-)program MBUS remapping windows if we are asked to.
@@ -4096,12 +4092,10 @@ static int mv_platform_probe(struct platform_device *pdev)return 0 ; err: -#if defined(CONFIG_HAVE_CLK )if (!IS_ERR (hpriv->clk)) {clk_disable (hpriv->clk);clk_put (hpriv->clk); } -#endif return rc; }
@@ -4117,17 +4111,13 @@ err: static int __devexit mv_platform_remove(struct platform_device *pdev) {struct ata_host *host =platform_get_drvdata (pdev); -#if defined(CONFIG_HAVE_CLK )struct mv_host_priv *hpriv = host->private_data; -#endif ata_host_detach (host); -#if defined(CONFIG_HAVE_CLK )if (!IS_ERR (hpriv->clk)) {clk_disable (hpriv->clk);clk_put (hpriv->clk); } -#endif return 0 ; }
Signature · 1 line
1.7.9
Re: [PATCH V3 Resend 07/12] ata/sata_mv: Remove conditional compilation of clk code
Quoted 3 lines · On Tue, 8 May 2012 09:22:34 +0530 Viresh Kumar <[email protected]> wrote:
With addition of dummy clk_*() calls for non
CONFIG_HAVE_CLKcases inclk.h, there is no need to have clk code enclosed in #ifdefCONFIG_HAVE_CLK, #endif macros.
There have been significant changes to drivers/ata/sata_mv.c in linux-next so I have reworked the patch as below.
I notice that with x86_64 allmodconfig (CONFIG_HAVE_CLK=n), this patch adds quite a lot of program text:
text data bss dec hex filename 26926 2657 7648 37231 916f drivers/ata/sata_mv.o 27528 2657 7832 38017 9481 drivers/ata/sata_mv.o
This is an unacceptable increase for a purely cosmetic change!
For some reason, ata-pata_arasan-remove-conditional-compilation-of-clk-code.patch shrinks drivers/ata/pata_arasan_cf.o by 60 bytes, so that's good.
drivers/net/can/c_can/c_can_platform.o got 18 bytes bigger, which we can live with.
I checked a few other patches and didn't see similar code bloat.
I note that usb-musb-remove-conditional-compilation-of-clk-code.patch accidentally fixed the build of drivers/usb/musb/ux500.c. In the mainline kernel I get
drivers/usb/musb/ux500.c: In function 'ux500_probe':drivers/usb/musb/ux500.c:89: error: expected expression before 'do' drivers/usb/musb/ux500.c: In function 'ux500_resume':drivers/usb/musb/ux500.c:175: error: expected expression before 'do'
possibly because this driver isn't supposed to be built with x86_64 allmodconfig, but someone obviously has a borked clk_enable() definition. drivers/usb/gadget/pxa25x_udc.c does it wrongly.
Anyway, I will drop ata-sata_mv-remove-conditional-compilation-of-clk-code.patch - please grab current linux-next and see what we can do about the code size issue?
Thanks.
From: Viresh Kumar <[email protected]>
Subject: ata/sata_mv: remove conditional compilation of clk code
With addition of dummy clk_*() calls for non CONFIG_HAVE_CLK cases in clk.h, there is no need to have clk code enclosed in #ifdef CONFIG_HAVE_CLK, #endif macros.
---
drivers/ata/sata_mv.c | 14 -------------- 1 file changed, 14 deletions(-)
drivers/ata/sata_mv.c renamed from drivers/ata/sata_mv.c~ata-sata_mv-remove-conditional-compilation-of-clk-code +0 -14
@@ -551,10 +551,8 @@ struct mv_host_priv {u32 irq_mask_offset;u32 unmask_all_irqs; -#if defined(CONFIG_HAVE_CLK )struct clk *clk;struct clk **port_clks; -#endif /* * These consistent DMA memory pools give us guaranteed * alignment for hardware-accessed data structures,
@@ -4028,9 +4026,7 @@ static int mv_platform_probe(struct platstruct resource *res;int n_ports =0 ;int rc; -#if defined(CONFIG_HAVE_CLK )int port; -#endif ata_print_version_once (&pdev->dev,DRV_VERSION );
@@ -4058,13 +4054,11 @@ static int mv_platform_probe(struct platif (!host || !hpriv)return -ENOMEM ; -#if defined(CONFIG_HAVE_CLK ) hpriv->port_clks =devm_kzalloc (&pdev->dev,sizeof (struct clk *) * n_ports,GFP_KERNEL );if (!hpriv->port_clks)return -ENOMEM ; -#endif host->private_data = hpriv; hpriv->n_ports = n_ports; hpriv->board_idx = chip_soc;
@@ -4074,7 +4068,6 @@ static int mv_platform_probe(struct plat resource_size(res)); hpriv->base -=SATAHC0_REG_BASE ; -#if defined(CONFIG_HAVE_CLK ) hpriv->clk =clk_get (&pdev->dev,NULL );if (IS_ERR (hpriv->clk))dev_notice (&pdev->dev,"cannot get optional clkdev\n" );
@@ -4088,7 +4081,6 @@ static int mv_platform_probe(struct platif (!IS_ERR (hpriv->port_clks[port]))clk_prepare_enable (hpriv->port_clks[port]); } -#endif /* * (Re-)program MBUS remapping windows if we are asked to.
@@ -4115,7 +4107,6 @@ static int mv_platform_probe(struct platreturn 0 ; err: -#if defined(CONFIG_HAVE_CLK )if (!IS_ERR (hpriv->clk)) {clk_disable_unprepare (hpriv->clk);clk_put (hpriv->clk);
@@ -4126,7 +4117,6 @@ err:clk_put (hpriv->port_clks[port]); } } -#endif return rc; }
@@ -4142,13 +4132,10 @@ err: static int __devexit mv_platform_remove(struct platform_device *pdev) {struct ata_host *host =platform_get_drvdata (pdev); -#if defined(CONFIG_HAVE_CLK )struct mv_host_priv *hpriv = host->private_data;int port; -#endif ata_host_detach (host); -#if defined(CONFIG_HAVE_CLK )if (!IS_ERR (hpriv->clk)) {clk_disable_unprepare (hpriv->clk);clk_put (hpriv->clk);
@@ -4159,7 +4146,6 @@ static int __devexit mv_platform_remove(clk_put (hpriv->port_clks[port]); } } -#endif return 0 ; }
_
PATCH RESEND v3 8/12 net/c_can: Remove conditional compilation of clk code
In reply to Viresh KumarWith addition of dummy clk_*() calls for non CONFIG_HAVE_CLK cases in clk.h, there is no need to have clk code enclosed in #ifdef CONFIG_HAVE_CLK, #endif macros.
--- drivers/net/can/c_can/c_can_platform.c | 8 -------- 1 files changed, 0 insertions(+), 8 deletions(-)
drivers/net/can/c_can/c_can_platform.c +0 -8
@@ -73,7 +73,6 @@ static int __devinit c_can_plat_probe(struct platform_device *pdev)struct c_can_priv *priv;struct resource *mem;int irq; -#ifdef CONFIG_HAVE_CLK struct clk *clk;/* get the appropriate clk */
@@ -83,7 +82,6 @@ static int __devinit c_can_plat_probe(struct platform_device *pdev) ret = -ENODEV ; goto exit; } -#endif /* get the platform data */ mem =platform_get_resource (pdev,IORESOURCE_MEM ,0 );
@@ -118,10 +116,8 @@ static int __devinit c_can_plat_probe(struct platform_device *pdev) dev->irq = irq; priv->regs = addr; -#ifdef CONFIG_HAVE_CLK priv->can.clock.freq =clk_get_rate (clk); priv->priv = clk; -#endif switch (mem->flags &IORESOURCE_MEM_TYPE_MASK ) {case IORESOURCE_MEM_32BIT :
@@ -157,10 +153,8 @@ exit_iounmap: exit_release_mem:release_mem_region (mem->start,resource_size (mem)); exit_free_clk: -#ifdef CONFIG_HAVE_CLKclk_put (clk); exit: -#endifdev_err (&pdev->dev,"probe failed\n" );return ret;
@@ -181,9 +175,7 @@ static int __devexit c_can_plat_remove(struct platform_device *pdev) mem =platform_get_resource (pdev,IORESOURCE_MEM ,0 );release_mem_region (mem->start,resource_size (mem)); -#ifdef CONFIG_HAVE_CLK clk_put (priv->priv); -#endif return 0 ; }
Signature · 1 line
1.7.9
Re: [PATCH V3 Resend 08/12] net/c_can: Remove conditional compilation of clk code
From: Viresh Kumar <[email protected]>
Date: Tue, 8 May 2012 09:22:35 +0530
Quoted 5 lines
With addition of dummy clk_*() calls for non
CONFIG_HAVE_CLKcases inclk.h, there is no need to have clk code enclosed in #ifdefCONFIG_HAVE_CLK, #endif macros.Signed-off-by Viresh Kumar <[email protected]>
PATCH RESEND v3 9/12 net/stmmac: Remove conditional compilation of clk code
In reply to Viresh KumarWith addition of dummy clk_*() calls for non CONFIG_HAVE_CLK cases in clk.h, there is no need to have clk code enclosed in #ifdef CONFIG_HAVE_CLK, #endif macros.
This also fixes error paths of probe(), as a goto is required in this patch.
--- drivers/net/ethernet/stmicro/stmmac/stmmac.h | 41 --------------------- drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 33 +++++++++-------- 2 files changed, 17 insertions(+), 57 deletions(-)
drivers/net/ethernet/stmicro/stmmac/stmmac.h +0 -41
@@ -81,9 +81,7 @@ struct stmmac_priv {struct stmmac_counters mmc;struct dma_features dma_cap;int hw_cap_support; -#ifdef CONFIG_HAVE_CLK struct clk *stmmac_clk; -#endif int clk_csr; };
@@ -103,42 +101,3 @@ int stmmac_dvr_remove(struct net_device *ndev);struct stmmac_priv *stmmac_dvr_probe (struct device *device,struct plat_stmmacenet_data *plat_dat,void __iomem *addr); - -#ifdef CONFIG_HAVE_CLK -static inline int stmmac_clk_enable (struct stmmac_priv *priv) -{ -if (!IS_ERR (priv->stmmac_clk)) -return clk_enable (priv->stmmac_clk); - -return 0 ; -} - -static inline void stmmac_clk_disable (struct stmmac_priv *priv) -{ -if (IS_ERR (priv->stmmac_clk)) -return ; - -clk_disable (priv->stmmac_clk); -} -static inline int stmmac_clk_get (struct stmmac_priv *priv) -{ - priv->stmmac_clk =clk_get (priv->device,NULL ); - -if (IS_ERR (priv->stmmac_clk)) -return PTR_ERR (priv->stmmac_clk); - -return 0 ; -} -#else -static inline int stmmac_clk_enable (struct stmmac_priv *priv) -{ -return 0 ; -} -static inline void stmmac_clk_disable (struct stmmac_priv *priv) -{ -} -static inline int stmmac_clk_get (struct stmmac_priv *priv) -{ -return 0 ; -} -#endif /* CONFIG_HAVE_CLK */
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +17 -16
@@ -28,6 +28,7 @@https://bugzilla.stlinux.com/ *******************************************************************************/ +#include <linux/clk.h> #include <linux/kernel.h> #include <linux/interrupt.h> #include <linux/ip.h>
@@ -165,12 +166,8 @@ static void stmmac_verify_args(void)static void stmmac_clk_csr_set (struct stmmac_priv *priv) { -#ifdef CONFIG_HAVE_CLK u32 clk_rate; -if (IS_ERR (priv->stmmac_clk)) -return ; - clk_rate =clk_get_rate (priv->stmmac_clk);/* Platform provided default clk_csr would be assumed valid
@@ -192,7 +189,6 @@ static void stmmac_clk_csr_set(struct stmmac_priv *priv)* we can not estimate the proper divider as it is not known * the frequency of clk_csr_i. So we do not change the default * divider. */ -#endif }#if defined(STMMAC_XMIT_DEBUG ) || defined(STMMAC_RX_DEBUG )
@@ -971,7 +967,7 @@ static int stmmac_open(struct net_device *dev) } else priv->tm->enable =1 ;#endif -stmmac_clk_enable (priv); +clk_enable (priv->stmmac_clk);stmmac_check_ether_addr (priv);
@@ -1075,7 +1071,7 @@ open_error:if (priv->phydev)phy_disconnect (priv->phydev); -stmmac_clk_disable (priv); +clk_disable (priv->stmmac_clk);return ret; }
@@ -1128,7 +1124,7 @@ static int stmmac_release(struct net_device *dev)#ifdef CONFIG_STMMAC_DEBUG_FS stmmac_exit_fs ();#endif -stmmac_clk_disable (priv); +clk_disable (priv->stmmac_clk);return 0 ; }
@@ -1922,11 +1918,14 @@ struct stmmac_priv *stmmac_dvr_probe(struct device *device, ret =register_netdev (ndev);if (ret) {pr_err ("%s: ERROR %i registering the device\n" , __func__, ret); - goto error; + goto error_netdev_register; } -if (stmmac_clk_get (priv)) + priv->stmmac_clk =clk_get (priv->device,NULL ); +if (IS_ERR (priv->stmmac_clk)) {pr_warning ("%s: warning: cannot get CSR clock\n" , __func__); + goto error_clk_get; + }/* If a specific clk_csr value is passed from the platform * this means that the CSR Clock Range selection cannot be
@@ -1944,15 +1943,17 @@ struct stmmac_priv *stmmac_dvr_probe(struct device *device,if (ret <0 ) {pr_debug ("%s: MDIO bus (id: %d) registration failed" , __func__, priv->plat->bus_id); - goto error; + goto error_mdio_register; }return priv; -error: -netif_napi_del (&priv->napi); - +error_mdio_register: +clk_put (priv->stmmac_clk); +error_clk_get:unregister_netdev (ndev); +error_netdev_register: +netif_napi_del (&priv->napi);free_netdev (ndev);return NULL ;
@@ -2020,7 +2021,7 @@ int stmmac_suspend(struct net_device *ndev)else {stmmac_set_mac (priv->ioaddr, false);/* Disable clock in case of PWM is off */ -stmmac_clk_disable (priv); +clk_disable (priv->stmmac_clk); }spin_unlock (&priv->lock);return 0 ;
@@ -2044,7 +2045,7 @@ int stmmac_resume(struct net_device *ndev) priv->hw->mac->pmt (priv->ioaddr,0 ); else/* enable the clk prevously disabled */ -stmmac_clk_enable (priv ); + clk_enable(priv->stmmac_clk);netif_device_attach (ndev);
Signature · 1 line
1.7.9
Re: [PATCH V3 Resend 09/12] net/stmmac: Remove conditional compilation of clk code
From: Viresh Kumar <[email protected]>
Date: Tue, 8 May 2012 09:22:36 +0530
Quoted 7 lines
With addition of dummy clk_*() calls for non
CONFIG_HAVE_CLKcases inclk.h, there is no need to have clk code enclosed in #ifdefCONFIG_HAVE_CLK, #endif macros.This also fixes error paths of
probe(), as a goto is required in this patch.Signed-off-by Viresh Kumar <[email protected]>
PATCH RESEND v3 10/12 gadget/m66592: Remove conditional compilation of clk code
In reply to Viresh KumarWith addition of dummy clk_*() calls for non CONFIG_HAVE_CLK cases in clk.h, there is no need to have clk code enclosed in #ifdef CONFIG_HAVE_CLK, #endif macros.
--- drivers/usb/gadget/m66592-udc.c | 9 +-------- drivers/usb/gadget/m66592-udc.h | 5 ----- 2 files changed, 1 insertions(+), 13 deletions(-)
drivers/usb/gadget/m66592-udc.c +1 -8
@@ -1583,12 +1583,10 @@ static int __exit m66592_remove(struct platform_device *pdev)iounmap (m66592->reg);free_irq (platform_get_irq (pdev,0 ), m66592);m66592_free_request (&m66592->ep[0 ].ep, m66592->ep0_req); -#ifdef CONFIG_HAVE_CLK if (m66592->pdata->on_chip) {clk_disable (m66592->clk);clk_put (m66592->clk); } -#endif kfree (m66592);return 0 ; }
@@ -1602,9 +1600,7 @@ static int __init m66592_probe(struct platform_device *pdev)struct resource *res, *ires;void __iomem *reg =NULL ;struct m66592 *m66592 =NULL ; -#ifdef CONFIG_HAVE_CLK char clk_name[8 ]; -#endif int ret =0 ;int i;
@@ -1671,7 +1667,6 @@ static int __init m66592_probe(struct platform_device *pdev) goto clean_up; } -#ifdef CONFIG_HAVE_CLK if (m66592->pdata->on_chip) {snprintf (clk_name,sizeof (clk_name),"usbf%d" , pdev->id); m66592->clk =clk_get (&pdev->dev, clk_name);
@@ -1683,7 +1678,7 @@ static int __init m66592_probe(struct platform_device *pdev) }clk_enable (m66592->clk); } -#endif +INIT_LIST_HEAD (&m66592->gadget.ep_list); m66592->gadget.ep0 = &m66592->ep[0 ].ep;INIT_LIST_HEAD (&m66592->gadget.ep0->ep_list);
@@ -1731,13 +1726,11 @@ err_add_udc:m66592_free_request (&m66592->ep[0 ].ep, m66592->ep0_req); clean_up3: -#ifdef CONFIG_HAVE_CLK if (m66592->pdata->on_chip) {clk_disable (m66592->clk);clk_put (m66592->clk); } clean_up2: -#endif free_irq (ires->start, m66592); clean_up:if (m66592) {
drivers/usb/gadget/m66592-udc.h +0 -5
@@ -13,10 +13,7 @@#ifndef __M66592_UDC_H__#define __M66592_UDC_H__ -#ifdef CONFIG_HAVE_CLK #include <linux/clk.h> -#endif -#include <linux/usb/m66592.h> #define M66592_SYSCFG 0x00
@@ -468,9 +465,7 @@ struct m66592_ep {struct m66592 {spinlock_t lock;void __iomem *reg; -#ifdef CONFIG_HAVE_CLK struct clk *clk; -#endif struct m66592_platdata *pdata;unsigned long irq_trigger;
Signature · 1 line
1.7.9
PATCH RESEND v3 11/12 gadget/r8a66597: Remove conditional compilation of clk code
In reply to Viresh KumarWith addition of dummy clk_*() calls for non CONFIG_HAVE_CLK cases in clk.h, there is no need to have clk code enclosed in #ifdef CONFIG_HAVE_CLK, #endif macros.
--- drivers/usb/gadget/r8a66597-udc.c | 11 +++-------- drivers/usb/gadget/r8a66597-udc.h | 5 ----- 2 files changed, 3 insertions(+), 13 deletions(-)
drivers/usb/gadget/r8a66597-udc.c +3 -8
@@ -1818,12 +1818,12 @@ static int __exit r8a66597_remove(struct platform_device *pdev)iounmap (r8a66597->sudmac_reg);free_irq (platform_get_irq (pdev,0 ), r8a66597);r8a66597_free_request (&r8a66597->ep[0 ].ep, r8a66597->ep0_req); -#ifdef CONFIG_HAVE_CLK +if (r8a66597->pdata->on_chip) {clk_disable (r8a66597->clk);clk_put (r8a66597->clk); } -#endif +device_unregister (&r8a66597->gadget.dev);kfree (r8a66597);return 0 ;
@@ -1855,9 +1855,7 @@ static int __init r8a66597_sudmac_ioremap(struct r8a66597 *r8a66597,static int __init r8a66597_probe (struct platform_device *pdev) { -#ifdef CONFIG_HAVE_CLK char clk_name[8 ]; -#endif struct resource *res, *ires;int irq;void __iomem *reg =NULL ;
@@ -1921,7 +1919,6 @@ static int __init r8a66597_probe(struct platform_device *pdev) r8a66597->timer.data = (unsigned long )r8a66597; r8a66597->reg = reg; -#ifdef CONFIG_HAVE_CLK if (r8a66597->pdata->on_chip) {snprintf (clk_name,sizeof (clk_name),"usb%d" , pdev->id); r8a66597->clk =clk_get (&pdev->dev, clk_name);
@@ -1933,7 +1930,7 @@ static int __init r8a66597_probe(struct platform_device *pdev) }clk_enable (r8a66597->clk); } -#endif +if (r8a66597->pdata->sudmac) { ret =r8a66597_sudmac_ioremap (r8a66597, pdev);if (ret <0 )
@@ -1993,13 +1990,11 @@ err_add_udc: clean_up3:free_irq (irq, r8a66597); clean_up2: -#ifdef CONFIG_HAVE_CLK if (r8a66597->pdata->on_chip) {clk_disable (r8a66597->clk);clk_put (r8a66597->clk); } clean_up_dev: -#endif device_unregister (&r8a66597->gadget.dev); clean_up:if (r8a66597) {
drivers/usb/gadget/r8a66597-udc.h +0 -5
@@ -13,10 +13,7 @@#ifndef __R8A66597_H__#define __R8A66597_H__ -#ifdef CONFIG_HAVE_CLK #include <linux/clk.h> -#endif -#include <linux/usb/r8a66597.h> #define R8A66597_MAX_SAMPLING 10
@@ -92,9 +89,7 @@ struct r8a66597 {void __iomem *reg;void __iomem *sudmac_reg; -#ifdef CONFIG_HAVE_CLK struct clk *clk; -#endif struct r8a66597_platdata *pdata;struct usb_gadget gadget;
Signature · 1 line
1.7.9
PATCH RESEND v3 12/12 usb/host/r8a66597: Remove conditional compilation of clk code
In reply to Viresh KumarWith addition of dummy clk_*() calls for non CONFIG_HAVE_CLK cases in clk.h, there is no need to have clk code enclosed in #ifdef CONFIG_HAVE_CLK, #endif macros.
--- drivers/usb/host/r8a66597-hcd.c | 12 ------------ drivers/usb/host/r8a66597.h | 5 ----- 2 files changed, 0 insertions(+), 17 deletions(-)
drivers/usb/host/r8a66597-hcd.c +0 -12
@@ -95,9 +95,7 @@ static int r8a66597_clock_enable(struct r8a66597 *r8a66597)int i =0 ;if (r8a66597->pdata->on_chip) { -#ifdef CONFIG_HAVE_CLK clk_enable (r8a66597->clk); -#endif do { r8a66597_write(r8a66597, SCKE, SYSCFG0); tmp = r8a66597_read(r8a66597, SYSCFG0);
@@ -141,9 +139,7 @@ static void r8a66597_clock_disable(struct r8a66597 *r8a66597)udelay (1 );if (r8a66597->pdata->on_chip) { -#ifdef CONFIG_HAVE_CLK clk_disable (r8a66597->clk); -#endif }else {r8a66597_bclr (r8a66597,PLLC ,SYSCFG0 );r8a66597_bclr (r8a66597,XCKE ,SYSCFG0 );
@@ -2406,19 +2402,15 @@ static int __devexit r8a66597_remove(struct platform_device *pdev)del_timer_sync (&r8a66597->rh_timer);usb_remove_hcd (hcd);iounmap (r8a66597->reg); -#ifdef CONFIG_HAVE_CLK if (r8a66597->pdata->on_chip)clk_put (r8a66597->clk); -#endif usb_put_hcd (hcd);return 0 ; }static int __devinit r8a66597_probe (struct platform_device *pdev) { -#ifdef CONFIG_HAVE_CLK char clk_name[8 ]; -#endif struct resource *res =NULL , *ires;int irq =-1 ;void __iomem *reg =NULL ;
@@ -2482,7 +2474,6 @@ static int __devinit r8a66597_probe(struct platform_device *pdev) r8a66597->irq_sense_low = irq_trigger ==IRQF_TRIGGER_LOW ;if (r8a66597->pdata->on_chip) { -#ifdef CONFIG_HAVE_CLK snprintf (clk_name,sizeof (clk_name),"usb%d" , pdev->id); r8a66597->clk =clk_get (&pdev->dev, clk_name);if (IS_ERR (r8a66597->clk)) {
@@ -2491,7 +2482,6 @@ static int __devinit r8a66597_probe(struct platform_device *pdev) ret =PTR_ERR (r8a66597->clk); goto clean_up2; } -#endif r8a66597->max_root_hub =1 ; }else r8a66597->max_root_hub =2 ;
@@ -2531,11 +2521,9 @@ static int __devinit r8a66597_probe(struct platform_device *pdev)return 0 ; clean_up3: -#ifdef CONFIG_HAVE_CLK if (r8a66597->pdata->on_chip)clk_put (r8a66597->clk); clean_up2: -#endif usb_put_hcd (hcd); clean_up:
drivers/usb/host/r8a66597.h +0 -5
@@ -26,10 +26,7 @@#ifndef __R8A66597_H__#define __R8A66597_H__ -#ifdef CONFIG_HAVE_CLK #include <linux/clk.h> -#endif -#include <linux/usb/r8a66597.h> #define R8A66597_MAX_NUM_PIPE 10
@@ -113,9 +110,7 @@ struct r8a66597_root_hub {struct r8a66597 {spinlock_t lock;void __iomem *reg; -#ifdef CONFIG_HAVE_CLK struct clk *clk; -#endif struct r8a66597_platdata *pdata;struct r8a66597_device device0;struct r8a66597_root_hub root_hub[R8A66597_MAX_ROOT_HUB ];
Signature · 1 line
1.7.9