ARM: ux500: Provide a means to obtain the SMSC9115 clock when DT is enabled
Subsystems (8)
PATCH 1/4 ARM: ux500: Provide a means to obtain the SMSC9115 clock when DT is enabled
Device Tree names devices differently to how some frameworks expect them. Until we can move a platform over to the new way of obtaining resources, we have to use the OF_DEV_AUXDATA() macros to craft a device name which can be used in searches during allocation time.
--- arch/arm/mach-ux500/cpu-db8500.c | 1 + 1 file changed, 1 insertion(+)
arch/arm/mach-ux500/cpu-db8500.c +1 -0
@@ -284,6 +284,7 @@ static struct of_dev_auxdata u8500_auxdata_lookup[] __initdata = {OF_DEV_AUXDATA ("st,nomadik-i2c" ,0x80128000 ,"nmk-i2c.2" ,NULL ),OF_DEV_AUXDATA ("st,nomadik-i2c" ,0x80110000 ,"nmk-i2c.3" ,NULL ),OF_DEV_AUXDATA ("st,nomadik-i2c" ,0x8012a000 ,"nmk-i2c.4" ,NULL ), +OF_DEV_AUXDATA ("smsc,lan9115" ,0x50000000 ,"smsc911x" ,NULL ),/* Requires device name bindings. */ OF_DEV_AUXDATA("stericsson,nmk_pinctrl", 0, "pinctrl-db8500", NULL),/* Requires clock name and DMA bindings. */
Signature · 1 line
1.7.9.5
PATCH 2/4 clk: ux500: Ensure the FMSC clock is obtainable
The FMSC clock is traditionally used for NAND flash devices when used on the ux500 series platforms. This patch makes it searchable during a clock-name search.
--- drivers/clk/ux500/u8500_clk.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/clk/ux500/u8500_clk.c +1 -1
@@ -324,7 +324,7 @@ void u8500_clk_init(void) clk =clk_reg_prcc_pclk ("p3_pclk0" ,"per3clk" ,U8500_CLKRST3_BASE ,BIT (0 ),0 ); -clk_register_clkdev (clk,NULL ,"fsmc" ); +clk_register_clkdev (clk,"fsmc" ,NULL ); clk =clk_reg_prcc_pclk ("p3_pclk1" ,"per3clk" ,U8500_CLKRST3_BASE ,BIT (1 ),0 );
Signature · 1 line
1.7.9.5
Re: [PATCH 2/4] clk: ux500: Ensure the FMSC clock is obtainable
Quoting Lee Jones (2012-12-19 09:19:45)
Quoted 7 lines
The FMSC clock is traditionally used for NAND flash devices when used on the ux500 series platforms. This patch makes it searchable during a clock-name search.
Cc Mike Turquette <[email protected]>Cc Ulf Hansson <[email protected]>Signed-off-by Lee Jones <[email protected]>
Who do you want this series to go through?
Regards,
Mike
Quoted 19 lines
--- drivers/clk/ux500/u8500_clk.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)drivers/clk/ux500/u8500_clk.c +1
-1@@ -324,7 +324,7 @@ void u8500_clk_init(void) clk =clk_reg_prcc_pclk ("p3_pclk0" ,"per3clk" ,U8500_CLKRST3_BASE ,BIT (0 ),0 ); -clk_register_clkdev (clk,NULL ,"fsmc" ); +clk_register_clkdev (clk,"fsmc" ,NULL ); clk =clk_reg_prcc_pclk ("p3_pclk1" ,"per3clk" ,U8500_CLKRST3_BASE ,BIT (1 ),0 );Signature · 1 line
1.7.9.5
Re: [PATCH 2/4] clk: ux500: Ensure the FMSC clock is obtainable
Quoted 5 lines · Mike Turquette
Quoting Lee Jones (2012-12-19 09:19:45)
Quoted 4 lines
The FMSC clock is traditionally used for NAND flash devices when used on the ux500 series platforms. This patch makes it searchable during a clock-name search.
Quoted 7 lines
Quoted 3 lines
Cc Mike Turquette <[email protected]>Cc Ulf Hansson <[email protected]>Signed-off-by Lee Jones <[email protected]>Acked-by Mike Turquette <[email protected]>Who do you want this series to go through?
To be honest I don't really mind. I can take them through the arm-soc tree with "[1/4] ARM ...", but I still need an Ack from the SMSC911x maintainer for "[4/4] ...", before I can do that.
Still waiting for that. :(
Quoted 19 lines
Quoted 19 lines
--- drivers/clk/ux500/u8500_clk.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)drivers/clk/ux500/u8500_clk.c +1
-1@@ -324,7 +324,7 @@ void u8500_clk_init(void) clk =clk_reg_prcc_pclk ("p3_pclk0" ,"per3clk" ,U8500_CLKRST3_BASE ,BIT (0 ),0 ); -clk_register_clkdev (clk,NULL ,"fsmc" ); +clk_register_clkdev (clk,"fsmc" ,NULL ); clk =clk_reg_prcc_pclk ("p3_pclk1" ,"per3clk" ,U8500_CLKRST3_BASE ,BIT (1 ),0 );Signature · 1 line
1.7.9.5
Signature · 4 lines
Lee Jones Linaro ST-Ericsson Landing Team Lead Linaro.org ? Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog
PATCH 3/4 clk: ux500: Provide an alias for the SMSC911x Ethernet chip
In reply to Lee JonesIn the case of some of the ux500 platforms, an Ethernet chip is placed on an extended bus which is traditionally used as a NAND flash chip placeholder. The p3_pclk0 clock is used to control it, so we are required to provide and easy way to access it from the SMSC911x driver. We do this using an alias provided by this patch.
--- drivers/clk/ux500/u8500_clk.c | 1 + 1 file changed, 1 insertion(+)
drivers/clk/ux500/u8500_clk.c +1 -0
@@ -325,6 +325,7 @@ void u8500_clk_init(void) clk =clk_reg_prcc_pclk ("p3_pclk0" ,"per3clk" ,U8500_CLKRST3_BASE ,BIT (0 ),0 );clk_register_clkdev (clk,"fsmc" ,NULL ); +clk_register_clkdev (clk,NULL ,"smsc911x" ); clk =clk_reg_prcc_pclk ("p3_pclk1" ,"per3clk" ,U8500_CLKRST3_BASE ,BIT (1 ),0 );
Signature · 1 line
1.7.9.5
Re: [PATCH 3/4] clk: ux500: Provide an alias for the SMSC911x Ethernet chip
Quoted 28 lines · Lee Jones
In the case of some of the ux500 platforms, an Ethernet chip is placed on an extended bus which is traditionally used as a NAND flash chip placeholder. The
p3_pclk0clock is used to control it, so we are required to provide and easy way to access it from the SMSC911x driver. We do this using an alias provided by this patch.Cc Mike Turquette <[email protected]>Cc Ulf Hansson <[email protected]>Signed-off-by Lee Jones <[email protected]>--- drivers/clk/ux500/u8500_clk.c | 1 + 1 file changed, 1 insertion(+)drivers/clk/ux500/u8500_clk.c +1
-0@@ -325,6 +325,7 @@ void u8500_clk_init(void) clk =clk_reg_prcc_pclk ("p3_pclk0" ,"per3clk" ,U8500_CLKRST3_BASE ,BIT (0 ),0 );clk_register_clkdev (clk,"fsmc" ,NULL ); +clk_register_clkdev (clk,NULL ,"smsc911x" ); clk =clk_reg_prcc_pclk ("p3_pclk1" ,"per3clk" ,U8500_CLKRST3_BASE ,BIT (1 ),0 );Signature · 1 line
1.7.9.5
I still need a maintiner Ack for this before I can push it.
Mike?
Signature · 4 lines
Lee Jones Linaro ST-Ericsson Landing Team Lead Linaro.org ? Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog
Ulf Hansson
Acked-byRe: [PATCH 3/4] clk: ux500: Provide an alias for the SMSC911x Ethernet chip
Quoted 33 lines · Lee Jones
Quoted 26 lines · Lee Jones
In the case of some of the ux500 platforms, an Ethernet chip is placed on an extended bus which is traditionally used as a NAND flash chip placeholder. The
p3_pclk0clock is used to control it, so we are required to provide and easy way to access it from the SMSC911x driver. We do this using an alias provided by this patch.Cc Mike Turquette <[email protected]>Cc Ulf Hansson <[email protected]>Signed-off-by Lee Jones <[email protected]>--- drivers/clk/ux500/u8500_clk.c | 1 + 1 file changed, 1 insertion(+)drivers/clk/ux500/u8500_clk.c +1
-1@@ -325,6 +325,7 @@ void u8500_clk_init(void) clk =clk_reg_prcc_pclk ("p3_pclk0" ,"per3clk" ,U8500_CLKRST3_BASE ,BIT (0 ),0 );clk_register_clkdev (clk,"fsmc" ,NULL ); +clk_register_clkdev (clk,NULL ,"smsc911x" ); clk =clk_reg_prcc_pclk ("p3_pclk1" ,"per3clk" ,U8500_CLKRST3_BASE ,BIT (1 ),0 ); --Quoted 2 lines
1.7.9.5
I still need a maintiner Ack for this before I can push it.
Quoted 7 lines
Mike?
--
Lee Jones
Linaro ST-Ericsson Landing Team Lead
Linaro.org ? Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog
Mike Turquette
Acked-byRe: [PATCH 3/4] clk: ux500: Provide an alias for the SMSC911x Ethernet chip
In reply to Lee JonesQuoting Lee Jones (2013-01-09 00:56:36)
Quoted 33 lines · Lee Jones
Quoted 29 lines
In the case of some of the ux500 platforms, an Ethernet chip is placed on an extended bus which is traditionally used as a NAND flash chip placeholder. The
p3_pclk0clock is used to control it, so we are required to provide and easy way to access it from the SMSC911x driver. We do this using an alias provided by this patch.Cc Mike Turquette <[email protected]>Cc Ulf Hansson <[email protected]>Signed-off-by Lee Jones <[email protected]>--- drivers/clk/ux500/u8500_clk.c | 1 + 1 file changed, 1 insertion(+)drivers/clk/ux500/u8500_clk.c +1
-0@@ -325,6 +325,7 @@ void u8500_clk_init(void) clk =clk_reg_prcc_pclk ("p3_pclk0" ,"per3clk" ,U8500_CLKRST3_BASE ,BIT (0 ),0 );clk_register_clkdev (clk,"fsmc" ,NULL ); +clk_register_clkdev (clk,NULL ,"smsc911x" ); clk =clk_reg_prcc_pclk ("p3_pclk1" ,"per3clk" ,U8500_CLKRST3_BASE ,BIT (1 ),0 );Signature · 1 line
1.7.9.5I still need a maintiner Ack for this before I can push it.
Quoted 2 lines
Mike?
Quoted 5 lines
Signature · 4 lines
Lee Jones Linaro ST-Ericsson Landing Team Lead Linaro.org ? Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog
PATCH 4/4 net/smsc911x: Provide common clock functionality
In reply to Lee JonesSome platforms provide clocks which require enabling before the SMSC911x chip will power on. This patch uses the new common clk framework to do just that. If no clock is provided, it will just be ignored and the driver will continue to assume that no clock is required for the chip to run successfully.
--- drivers/net/ethernet/smsc/smsc911x.c | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-)
drivers/net/ethernet/smsc/smsc911x.c +30 -1
@@ -33,6 +33,7 @@#define pr_fmt (fmt) KBUILD_MODNAME ": " fmt#include <linux/crc32.h> +#include <linux/clk.h> #include <linux/delay.h> #include <linux/errno.h> #include <linux/etherdevice.h>
@@ -144,6 +145,9 @@ struct smsc911x_data {/* regulators */ struct regulator_bulk_data supplies[SMSC911X_NUM_SUPPLIES ]; + +/* clock */ +struct clk *clk; };/* Easy access to information */
@@ -369,7 +373,7 @@ out: }/* -* enable resources, currently just regulators. +* enable regulator and clock resources. */ static int smsc911x_enable_resources (struct platform_device *pdev) {
@@ -382,6 +386,13 @@ static int smsc911x_enable_resources(struct platform_device *pdev)if (ret)netdev_err (ndev,"failed to enable regulators %d\n" , ret); + +if (pdata->clk) { + ret =clk_prepare_enable (pdata->clk); +if (ret <0 ) +netdev_err (ndev,"failed to enable clock %d\n" , ret); + } +return ret; }
@@ -396,6 +407,10 @@ static int smsc911x_disable_resources(struct platform_device *pdev) ret =regulator_bulk_disable (ARRAY_SIZE (pdata->supplies), pdata->supplies); + +if (pdata->clk) +clk_disable_unprepare (pdata->clk); +return ret; }
@@ -421,6 +436,14 @@ static int smsc911x_request_resources(struct platform_device *pdev)if (ret)netdev_err (ndev,"couldn't get regulators %d\n" , ret); + +/* Request clock */ + pdata->clk =clk_get (&pdev->dev,NULL ); +if (IS_ERR (pdata->clk)) { +netdev_warn (ndev,"couldn't get clock %d\n" ,PTR_ERR (pdata->clk)); + pdata->clk =NULL ; + } +return ret; }
@@ -436,6 +459,12 @@ static void smsc911x_free_resources(struct platform_device *pdev)/* Free regulators */ regulator_bulk_free (ARRAY_SIZE (pdata->supplies), pdata->supplies); + +/* Free clock */ +if (pdata->clk) { +clk_put (pdata->clk); + pdata->clk =NULL ; + } }/* waits for MAC not busy, with timeout. Only called by smsc911x_mac_read
Signature · 1 line
1.7.9.5
Re: [PATCH 4/4] net/smsc911x: Provide common clock functionality
Quoted 9 lines · Lee Jones
Some platforms provide clocks which require enabling before the SMSC911x chip will power on. This patch uses the new common clk framework to do just that. If no clock is provided, it will just be ignored and the driver will continue to assume that no clock is required for the chip to run successfully.
Cc Steve Glendinning <[email protected]>Cc netdev at vger.kernel.orgSigned-off-by Lee Jones <[email protected]>
Seems to me like it'll do the trick.
Yours,
Linus Walleij
Re: [PATCH 4/4] net/smsc911x: Provide common clock functionality
Quoted 8 lines · Linus Walleij
Quoted 6 lines · Lee Jones
Some platforms provide clocks which require enabling before the SMSC911x chip will power on. This patch uses the new common clk framework to do just that. If no clock is provided, it will just be ignored and the driver will continue to assume that no clock is required for the chip to run successfully.
Quoted 6 lines
Quoted 3 lines
Cc Steve Glendinning <[email protected]>Cc netdev at vger.kernel.orgSigned-off-by Lee Jones <[email protected]>Seems to me like it'll do the trick.
Acked-by Linus Walleij <[email protected]>
This looks fairly dangerous. What about those platforms which use this driver, but don't provide a clock for it?
It looks like this will result in those platforms losing their ethernet support. There's at least a bunch of the ARM evaluation boards which make use of this driver...
Re: [PATCH 4/4] net/smsc911x: Provide common clock functionality
Quoted 16 lines · Russell King - ARM Linux
Quoted 8 lines · Linus Walleij
Quoted 6 lines · Lee Jones
Some platforms provide clocks which require enabling before the SMSC911x chip will power on. This patch uses the new common clk framework to do just that. If no clock is provided, it will just be ignored and the driver will continue to assume that no clock is required for the chip to run successfully.
Quoted 6 lines
Quoted 3 lines
Cc Steve Glendinning <[email protected]>Cc netdev at vger.kernel.orgSigned-off-by Lee Jones <[email protected]>Seems to me like it'll do the trick.
Acked-by Linus Walleij <[email protected]>
Quoted 6 lines
This looks fairly dangerous. What about those platforms which use this driver, but don't provide a clock for it?
It looks like this will result in those platforms losing their ethernet support. There's at least a bunch of the ARM evaluation boards which make use of this driver...
Right, but nothing should regress. If no clock is provided the driver moves on during the request and will refuse to prepare, enable and disable there after.
Unless I've made a mistake somewhere? If so, I'd be happy to fixup.
Signature · 4 lines
Lee Jones Linaro ST-Ericsson Landing Team Lead Linaro.org ? Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog
Re: [PATCH 4/4] net/smsc911x: Provide common clock functionality
Quoted 25 lines · Lee Jones
Quoted 16 lines · Russell King - ARM Linux
Quoted 8 lines · Linus Walleij
Quoted 6 lines · Lee Jones
Some platforms provide clocks which require enabling before the SMSC911x chip will power on. This patch uses the new common clk framework to do just that. If no clock is provided, it will just be ignored and the driver will continue to assume that no clock is required for the chip to run successfully.
Quoted 6 lines
Quoted 3 lines
Cc Steve Glendinning <[email protected]>Cc netdev at vger.kernel.orgSigned-off-by Lee Jones <[email protected]>Seems to me like it'll do the trick.
Acked-by Linus Walleij <[email protected]>Quoted 6 lines
This looks fairly dangerous. What about those platforms which use this driver, but don't provide a clock for it?
It looks like this will result in those platforms losing their ethernet support. There's at least a bunch of the ARM evaluation boards which make use of this driver...
Quoted 5 lines
Right, but nothing should regress. If no clock is provided the driver moves on during the request and will refuse to prepare, enable and disable there after.
Unless I've made a mistake somewhere? If so, I'd be happy to fixup.
No, but... don't use NULL for that. Use IS_ERR(pdata->clk) instead.
Re: [PATCH 4/4] net/smsc911x: Provide common clock functionality
Quoted 26 lines · Russell King - ARM Linux
Quoted 25 lines · Lee Jones
Quoted 22 lines · Russell King - ARM Linux
Quoted 8 lines · Linus Walleij
Quoted 6 lines · Lee Jones
Some platforms provide clocks which require enabling before the SMSC911x chip will power on. This patch uses the new common clk framework to do just that. If no clock is provided, it will just be ignored and the driver will continue to assume that no clock is required for the chip to run successfully.
Quoted 6 lines
Quoted 3 lines
Cc Steve Glendinning <[email protected]>Cc netdev at vger.kernel.orgSigned-off-by Lee Jones <[email protected]>Seems to me like it'll do the trick.
Acked-by Linus Walleij <[email protected]>This looks fairly dangerous. What about those platforms which use this driver, but don't provide a clock for it?
It looks like this will result in those platforms losing their ethernet support. There's at least a bunch of the ARM evaluation boards which make use of this driver...
Quoted 7 lines
Quoted 5 lines
Right, but nothing should regress. If no clock is provided the driver moves on during the request and will refuse to prepare, enable and disable there after.
Unless I've made a mistake somewhere? If so, I'd be happy to fixup.
No, but... don't use NULL for that. Use
IS_ERR(pdata->clk)instead.
I'm a bit confused. I do use IS_ERR, then if there was a problem pdata->clk is set to NULL, then we test for NULL thereafter:
Quoted 6 lines
/* Request clock */
pdata->clk=clk_get(&pdev->dev, NULL);if (IS_ERR(pdata->clk)) { netdev_warn(ndev, "couldn't get clock %d\n", PTR_ERR(pdata->clk)); pdata->clk = NULL; }
Are you saying remove "pdata->clk = NULL;" and test for IS_ERR every time?
Signature · 4 lines
Lee Jones Linaro ST-Ericsson Landing Team Lead Linaro.org ? Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog
Re: [PATCH 4/4] net/smsc911x: Provide common clock functionality
Quoted 2 lines · Lee Jones
Are you saying remove "
pdata->clk= NULL;" and test forIS_ERRevery time?
Exactly.
PATCH v2 4/4 net/smsc911x: Provide common clock functionality
Some platforms provide clocks which require enabling before the SMSC911x chip will power on. This patch uses the new common clk framework to do just that. If no clock is provided, it will just be ignored and the driver will continue to assume that no clock is required for the chip to run successfully.
--- drivers/net/ethernet/smsc/smsc911x.c | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-)
drivers/net/ethernet/smsc/smsc911x.c +28 -1
@@ -33,6 +33,7 @@#define pr_fmt (fmt) KBUILD_MODNAME ": " fmt#include <linux/crc32.h> +#include <linux/clk.h> #include <linux/delay.h> #include <linux/errno.h> #include <linux/etherdevice.h>
@@ -144,6 +145,9 @@ struct smsc911x_data {/* regulators */ struct regulator_bulk_data supplies[SMSC911X_NUM_SUPPLIES ]; + +/* clock */ +struct clk *clk; };/* Easy access to information */
@@ -369,7 +373,7 @@ out: }/* -* enable resources, currently just regulators. +* enable regulator and clock resources. */ static int smsc911x_enable_resources (struct platform_device *pdev) {
@@ -382,6 +386,13 @@ static int smsc911x_enable_resources(struct platform_device *pdev)if (ret)netdev_err (ndev,"failed to enable regulators %d\n" , ret); + +if (IS_ERR (pdata->clk)) { + ret =clk_prepare_enable (pdata->clk); +if (ret <0 ) +netdev_err (ndev,"failed to enable clock %d\n" , ret); + } +return ret; }
@@ -396,6 +407,10 @@ static int smsc911x_disable_resources(struct platform_device *pdev) ret =regulator_bulk_disable (ARRAY_SIZE (pdata->supplies), pdata->supplies); + +if (IS_ERR (pdata->clk)) +clk_disable_unprepare (pdata->clk); +return ret; }
@@ -421,6 +436,12 @@ static int smsc911x_request_resources(struct platform_device *pdev)if (ret)netdev_err (ndev,"couldn't get regulators %d\n" , ret); + +/* Request clock */ + pdata->clk =clk_get (&pdev->dev,NULL ); +if (IS_ERR (pdata->clk)) +netdev_warn (ndev,"couldn't get clock %li\n" ,PTR_ERR (pdata->clk)); +return ret; }
@@ -436,6 +457,12 @@ static void smsc911x_free_resources(struct platform_device *pdev)/* Free regulators */ regulator_bulk_free (ARRAY_SIZE (pdata->supplies), pdata->supplies); + +/* Free clock */ +if (IS_ERR (pdata->clk)) { +clk_put (pdata->clk); + pdata->clk =NULL ; + } }/* waits for MAC not busy, with timeout. Only called by smsc911x_mac_read
Signature · 1 line
1.7.9.5
Re: [PATCH 4/4 v2] net/smsc911x: Provide common clock functionality
drivers/net/ethernet/smsc/smsc911x.c static int smsc911x_enable_resources(struct platform_device *pdev) · line 394
Quoted 5 lines · Lee Jones
drivers/net/ethernet/smsc/smsc911x.c +5
-0+if (IS_ERR (pdata->clk)) { + ret =clk_prepare_enable (pdata->clk); +if (ret <0 ) +netdev_err (ndev,"failed to enable clock %d\n" , ret); + }
I think you got all of these backwards now, shouldn't it be if (!IS_ERR(pdata->clk)) { } ...?
It's late here but enlighten me if I don't get it.
drivers/net/ethernet/smsc/smsc911x.c static int smsc911x_disable_resources(struct platform_device *pdev) · line 412
Quoted 2 lines
drivers/net/ethernet/smsc/smsc911x.c +2
-0+if (IS_ERR (pdata->clk)) +clk_disable_unprepare (pdata->clk);
Dito.
drivers/net/ethernet/smsc/smsc911x.c static int smsc911x_request_resources(struct platform_device *pdev) · line 443
Quoted 4 lines
drivers/net/ethernet/smsc/smsc911x.c +4
-0+/* Request clock */ + pdata->clk =clk_get (&pdev->dev,NULL ); +if (IS_ERR (pdata->clk)) +netdev_warn (ndev,"couldn't get clock %li\n" ,PTR_ERR (pdata->clk));
This one seems correct though.
drivers/net/ethernet/smsc/smsc911x.c static void smsc911x_free_resources(struct platform_device *pdev) · line 465
Quoted 5 lines
drivers/net/ethernet/smsc/smsc911x.c +5
-0+/* Free clock */ +if (IS_ERR (pdata->clk)) { +clk_put (pdata->clk); + pdata->clk =NULL ; + }
Should be !IS_ERR()
Yours,
Linus Walleij
Re: [PATCH 4/4 v2] net/smsc911x: Provide common clock functionality
No, you're right, I'm a moron.
Will fix up and resend when I'm back to work.
Sent from my mobile Linux device.
Quoted 33 lines · Linus Walleij
drivers/net/ethernet/smsc/smsc911x.c static int smsc911x_enable_resources(struct platform_device *pdev)
Quoted 4 lines · Lee Jones
drivers/net/ethernet/smsc/smsc911x.c +4
-0+if (IS_ERR (pdata->clk)) { + ret =clk_prepare_enable (pdata->clk); +if (ret <0 ) + netdev_err(ndev, "failed to enable clock %d\n",ret);
Quoted 1 line
+ }
I think you got all of these backwards now, shouldn't it be if (!IS_ERR(pdata->clk)) { } ...?
It's late here but enlighten me if I don't get it.
drivers/net/ethernet/smsc/smsc911x.c static int smsc911x_disable_resources(struct platform_device *pdev) · line 412
Quoted 2 lines
drivers/net/ethernet/smsc/smsc911x.c +2
-0+if (IS_ERR (pdata->clk)) +clk_disable_unprepare (pdata->clk);Dito.
drivers/net/ethernet/smsc/smsc911x.c static int smsc911x_request_resources(struct platform_device *pdev)
Quoted 4 lines
drivers/net/ethernet/smsc/smsc911x.c +4
-0+/* Request clock */ + pdata->clk =clk_get (&pdev->dev,NULL ); +if (IS_ERR (pdata->clk)) + netdev_warn(ndev, "couldn't get clock %li\n",
PTR_ERR(pdata->clk));This one seems correct though.
drivers/net/ethernet/smsc/smsc911x.c static void smsc911x_free_resources(struct platform_device *pdev) · line 465
Quoted 5 lines
drivers/net/ethernet/smsc/smsc911x.c +5
-0+/* Free clock */ +if (IS_ERR (pdata->clk)) { +clk_put (pdata->clk); + pdata->clk =NULL ; + }
Quoted 5 lines
Should be !IS_ERR()
Yours,
Linus Walleij
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20121227/73803030/attachment-0001.html>
PATCH v3 4/4 net/smsc911x: Provide common clock functionality
In reply to Lee JonesSome platforms provide clocks which require enabling before the SMSC911x chip will power on. This patch uses the new common clk framework to do just that. If no clock is provided, it will just be ignored and the driver will continue to assume that no clock is required for the chip to run successfully.
--- drivers/net/ethernet/smsc/smsc911x.c | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-)
drivers/net/ethernet/smsc/smsc911x.c +28 -1
@@ -33,6 +33,7 @@#define pr_fmt (fmt) KBUILD_MODNAME ": " fmt#include <linux/crc32.h> +#include <linux/clk.h> #include <linux/delay.h> #include <linux/errno.h> #include <linux/etherdevice.h>
@@ -144,6 +145,9 @@ struct smsc911x_data {/* regulators */ struct regulator_bulk_data supplies[SMSC911X_NUM_SUPPLIES ]; + +/* clock */ +struct clk *clk; };/* Easy access to information */
@@ -369,7 +373,7 @@ out: }/* -* enable resources, currently just regulators. +* enable regulator and clock resources. */ static int smsc911x_enable_resources (struct platform_device *pdev) {
@@ -382,6 +386,13 @@ static int smsc911x_enable_resources(struct platform_device *pdev)if (ret)netdev_err (ndev,"failed to enable regulators %d\n" , ret); + +if (!IS_ERR (pdata->clk)) { + ret =clk_prepare_enable (pdata->clk); +if (ret <0 ) +netdev_err (ndev,"failed to enable clock %d\n" , ret); + } +return ret; }
@@ -396,6 +407,10 @@ static int smsc911x_disable_resources(struct platform_device *pdev) ret =regulator_bulk_disable (ARRAY_SIZE (pdata->supplies), pdata->supplies); + +if (!IS_ERR (pdata->clk)) +clk_disable_unprepare (pdata->clk); +return ret; }
@@ -421,6 +436,12 @@ static int smsc911x_request_resources(struct platform_device *pdev)if (ret)netdev_err (ndev,"couldn't get regulators %d\n" , ret); + +/* Request clock */ + pdata->clk =clk_get (&pdev->dev,NULL ); +if (IS_ERR (pdata->clk)) +netdev_warn (ndev,"couldn't get clock %li\n" ,PTR_ERR (pdata->clk)); +return ret; }
@@ -436,6 +457,12 @@ static void smsc911x_free_resources(struct platform_device *pdev)/* Free regulators */ regulator_bulk_free (ARRAY_SIZE (pdata->supplies), pdata->supplies); + +/* Free clock */ +if (!IS_ERR (pdata->clk)) { +clk_put (pdata->clk); + pdata->clk =NULL ; + } }/* waits for MAC not busy, with timeout. Only called by smsc911x_mac_read
Signature · 1 line
1.7.9.5
Re: [PATCH 4/4 v3] net/smsc911x: Provide common clock functionality
Quoted 9 lines · Lee Jones
Some platforms provide clocks which require enabling before the SMSC911x chip will power on. This patch uses the new common clk framework to do just that. If no clock is provided, it will just be ignored and the driver will continue to assume that no clock is required for the chip to run successfully.
Cc Steve Glendinning <[email protected]>Cc netdev at vger.kernel.orgSigned-off-by Lee Jones <[email protected]>
Looks all right to me now:
Yours,
Linus Walleij
Re: [PATCH 4/4 v3] net/smsc911x: Provide common clock functionality
Quoted 8 lines · Linus Walleij
Quoted 6 lines · Lee Jones
Some platforms provide clocks which require enabling before the SMSC911x chip will power on. This patch uses the new common clk framework to do just that. If no clock is provided, it will just be ignored and the driver will continue to assume that no clock is required for the chip to run successfully.
Quoted 6 lines
Quoted 3 lines
Cc Steve Glendinning <[email protected]>Cc netdev at vger.kernel.orgSigned-off-by Lee Jones <[email protected]>Looks all right to me now:
Reviewed-by Linus Walleij <[email protected]>
Great, thanks Linus.
Who will take this patch now?
Signature · 4 lines
Lee Jones Linaro ST-Ericsson Landing Team Lead Linaro.org ? Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog
Re: [PATCH 4/4 v3] net/smsc911x: Provide common clock functionality
In reply to Linus WalleijQuoted 8 lines · Linus Walleij
Quoted 6 lines · Lee Jones
Some platforms provide clocks which require enabling before the SMSC911x chip will power on. This patch uses the new common clk framework to do just that. If no clock is provided, it will just be ignored and the driver will continue to assume that no clock is required for the chip to run successfully.
Quoted 6 lines
Quoted 3 lines
Cc Steve Glendinning <[email protected]>Cc netdev at vger.kernel.orgSigned-off-by Lee Jones <[email protected]>Looks all right to me now:
Reviewed-by Linus Walleij <[email protected]>
I still need a maintiner Ack for this before I can push it.
Anyone?
Signature · 4 lines
Lee Jones Linaro ST-Ericsson Landing Team Lead Linaro.org ? Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog
Ulf Hansson
Reviewed-byRe: [PATCH 4/4 v3] net/smsc911x: Provide common clock functionality
Quoted 21 lines · Lee Jones
Quoted 8 lines · Linus Walleij
Quoted 6 lines · Lee Jones
Some platforms provide clocks which require enabling before the SMSC911x chip will power on. This patch uses the new common clk framework to do just that. If no clock is provided, it will just be ignored and the driver will continue to assume that no clock is required for the chip to run successfully.
Quoted 6 lines
Quoted 3 lines
Cc Steve Glendinning <[email protected]>Cc netdev at vger.kernel.orgSigned-off-by Lee Jones <[email protected]>Looks all right to me now:
Reviewed-by Linus Walleij <[email protected]>I still need a maintiner Ack for this before I can push it.
Anyone?
Quoted 10 lines
--
Lee Jones
Linaro ST-Ericsson Landing Team Lead
Linaro.org ? Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo at vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH 4/4 v3] net/smsc911x: Provide common clock functionality
In reply to Lee JonesQuoted 14 lines · Lee Jones
Quoted 12 lines · Linus Walleij
Quoted 9 lines · Lee Jones
Some platforms provide clocks which require enabling before the SMSC911x chip will power on. This patch uses the new common clk framework to do just that. If no clock is provided, it will just be ignored and the driver will continue to assume that no clock is required for the chip to run successfully.
Cc Steve Glendinning <[email protected]>Cc netdev at vger.kernel.orgSigned-off-by Lee Jones <[email protected]>
Quoted 6 lines
Quoted 2 lines
Looks all right to me now:
Reviewed-by Linus Walleij <[email protected]>I still need a maintiner Ack for this before I can push it.
Anyone?
Steve is there sometimes. But I'd ask David Miller to ACK it if he's OK with the change.
Yours,
Linus Walleij
Re: [PATCH 4/4 v3] net/smsc911x: Provide common clock functionality
Quoted 16 lines
Quoted 16 lines
Quoted 7 lines
Quoted 7 lines
Some platforms provide clocks which require enabling before the SMSC911x chip will power on. This patch uses the new common clk framework to do just that. If no clock is provided, it will just be ignored and the driver will continue to assume that no clock is required for the chip to run successfully.
Quoted 6 lines
Quoted 3 lines
Cc Steve Glendinning <[email protected]>Cc netdev at vger.kernel.orgSigned-off-by Lee Jones <[email protected]>Looks all right to me now:
Reviewed-by Linus Walleij <[email protected]>I still need a maintiner Ack for this before I can push it.
Quoted 7 lines
Quoted 1 line
Anyone?
Steve is there sometimes. But I'd ask David Miller to ACK it if he's OK with the change.
Yours,
Linus Walleij
Hi David,
Does this [1] patch look okay to you too?
It's the last Ack I require before I can push the set.
[1] https://patchwork.kernel.org/patch/1926971/
Signature · 4 lines
Lee Jones Linaro ST-Ericsson Landing Team Lead Linaro.org ? Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog
Re: [PATCH 4/4 v3] net/smsc911x: Provide common clock functionality
From: Lee Jones <[email protected]>
Date: Thu, 17 Jan 2013 10:47:44 +0000
Quoted 1 line
I'm fine with this:
Re: [PATCH 4/4] net/smsc911x: Provide common clock functionality
In reply to Lee JonesQuoted 100 lines · Lee Jones
Some platforms provide clocks which require enabling before the SMSC911x chip will power on. This patch uses the new common clk framework to do just that. If no clock is provided, it will just be ignored and the driver will continue to assume that no clock is required for the chip to run successfully.
Cc Steve Glendinning <[email protected]>Cc netdev at vger.kernel.orgSigned-off-by Lee Jones <[email protected]>--- drivers/net/ethernet/smsc/smsc911x.c | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-)drivers/net/ethernet/smsc/smsc911x.c +30
-1@@ -33,6 +33,7 @@#define pr_fmt (fmt) KBUILD_MODNAME ": " fmt#include <linux/crc32.h> +#include <linux/clk.h> #include <linux/delay.h> #include <linux/errno.h> #include <linux/etherdevice.h> @@ -144,6 +145,9 @@ struct smsc911x_data {/* regulators */ struct regulator_bulk_data supplies[SMSC911X_NUM_SUPPLIES ]; + +/* clock */ +struct clk *clk; };/* Easy access to information */ @@ -369,7 +373,7 @@ out: }/* -* enable resources, currently just regulators. +* enable regulator and clock resources. */ static int smsc911x_enable_resources (struct platform_device *pdev) {@@ -382,6 +386,13 @@ static int smsc911x_enable_resources(struct platform_device *pdev)if (ret)netdev_err (ndev,"failed to enable regulators %d\n" , ret); + +if (pdata->clk) { + ret =clk_prepare_enable (pdata->clk); +if (ret <0 ) +netdev_err (ndev,"failed to enable clock %d\n" , ret); + } +return ret; }@@ -396,6 +407,10 @@ static int smsc911x_disable_resources(struct platform_device *pdev) ret =regulator_bulk_disable (ARRAY_SIZE (pdata->supplies), pdata->supplies); + +if (pdata->clk) +clk_disable_unprepare (pdata->clk); +return ret; }@@ -421,6 +436,14 @@ static int smsc911x_request_resources(struct platform_device *pdev)if (ret)netdev_err (ndev,"couldn't get regulators %d\n" , ret); + +/* Request clock */ + pdata->clk =clk_get (&pdev->dev,NULL ); +if (IS_ERR (pdata->clk)) { +netdev_warn (ndev,"couldn't get clock %d\n" ,PTR_ERR (pdata->clk)); + pdata->clk =NULL ; + } +return ret; }@@ -436,6 +459,12 @@ static void smsc911x_free_resources(struct platform_device *pdev)/* Free regulators */ regulator_bulk_free (ARRAY_SIZE (pdata->supplies), pdata->supplies); + +/* Free clock */ +if (pdata->clk) { +clk_put (pdata->clk); + pdata->clk =NULL ; + } }/* waits for MAC not busy, with timeout. Only called by smsc911x_mac_read Signature · 1 line
1.7.9.5
I still need a maintiner Ack for this before I can push it.
Mike?
Signature · 4 lines
Lee Jones Linaro ST-Ericsson Landing Team Lead Linaro.org ? Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog
Quoted 6 lines · Lee Jones
Device Tree names devices differently to how some frameworks expect them. Until we can move a platform over to the new way of obtaining resources, we have to use the
OF_DEV_AUXDATA()macros to craft a device name which can be used in searches during allocation time.Signed-off-by Lee Jones <[email protected]>
I think that the best way to fix this regression is to gather ACKs from the involved subsystems and push it throug ARM SoC directly.
I thing Cc: stable at kernel.org needs to be added to all patches in this set as well.
Yours,
Linus Walleij