fsl_soc: Factor fsl_get_sys_freq() out of the wdt and spi inits.
PATCH 1/1 fsl_soc: Factor fsl_get_sys_freq() out of the wdt and spi inits.
--- arch/powerpc/sysdev/fsl_soc.c | 70 ++++++++++++++++++---------------------- arch/powerpc/sysdev/fsl_soc.h | 1 + 2 files changed, 33 insertions(+), 38 deletions(-)
arch/powerpc/sysdev/fsl_soc.c +32 -38
@@ -75,6 +75,33 @@ phys_addr_t get_immrbase(void)EXPORT_SYMBOL (get_immrbase); +static u32 sysfreq =-1 ; + +u32 fsl_get_sys_freq (void ) +{ +struct device_node *soc; +const u32 *prop; +int size; + +if (sysfreq !=-1 ) +return sysfreq; + + soc =of_find_node_by_type (NULL ,"soc" ); +if (!soc) +return -1 ; + + prop =of_get_property (soc,"clock-frequency" , &size); +if (!prop || size !=sizeof (*prop) || *prop ==0 ) + prop =of_get_property (soc,"bus-frequency" , &size); + +if (prop && size ==sizeof (*prop)) + sysfreq = *prop; + +of_node_put (soc); +return sysfreq; +} +EXPORT_SYMBOL (fsl_get_sys_freq); +#if defined(CONFIG_CPM2 ) || defined(CONFIG_QUICC_ENGINE ) || defined(CONFIG_8xx)static u32 brgfreq =-1 ;
@@ -516,9 +543,9 @@ arch_initcall(fsl_i2c_of_init);static int __init mpc83xx_wdt_init (void ) {struct resource r; -struct device_node *soc, *np; +struct device_node *np;struct platform_device *dev; -const unsigned int *freq; +u32 freq =fsl_get_sys_freq ();int ret; np =of_find_compatible_node (NULL ,"watchdog" ,"mpc83xx_wdt" );
@@ -528,19 +555,6 @@ static int __init mpc83xx_wdt_init(void) goto nodev; } - soc =of_find_node_by_type (NULL ,"soc" ); - -if (!soc) { - ret = -ENODEV ; - goto nosoc; - } - - freq =of_get_property (soc,"bus-frequency" ,NULL ); -if (!freq) { - ret = -ENODEV ; - goto err; - } -memset (&r,0 ,sizeof (r)); ret =of_address_to_resource (np,0 , &r);
@@ -553,20 +567,16 @@ static int __init mpc83xx_wdt_init(void) goto err; } - ret =platform_device_add_data (dev, freq,sizeof (int )); + ret =platform_device_add_data (dev, &freq,sizeof (freq));if (ret) goto unreg; -of_node_put (soc);of_node_put (np); -return 0 ; unreg:platform_device_unregister (dev); err: -of_node_put (soc); -nosoc:of_node_put (np); nodev:return ret;
@@ -830,25 +840,9 @@ int __init fsl_spi_init(struct spi_board_info *board_infos, sysclk =get_brgfreq ();#endif if (sysclk ==-1 ) { -struct device_node *np; -const u32 *freq; -int size; - - np =of_find_node_by_type (NULL ,"soc" ); -if (!np) + sysclk =fsl_get_sys_freq (); +if (sysclk ==-1 )return -ENODEV ; - - freq =of_get_property (np,"clock-frequency" , &size); -if (!freq || size !=sizeof (*freq) || *freq ==0 ) { - freq =of_get_property (np,"bus-frequency" , &size); -if (!freq || size !=sizeof (*freq) || *freq ==0 ) { -of_node_put (np); -return -ENODEV ; - } - } - - sysclk = *freq; -of_node_put (np); } ret = of_fsl_spi_probe(NULL, "fsl,spi", sysclk, board_infos,
arch/powerpc/sysdev/fsl_soc.h +1 -0
@@ -7,6 +7,7 @@extern phys_addr_t get_immrbase (void );extern u32 get_brgfreq (void );extern u32 get_baudrate (void ); +extern u32 fsl_get_sys_freq (void );struct spi_board_info ;
Signature · 1 line
1.5.4.4
Quoted 18 lines · Scott Wood
Signed-off-by Scott Wood <[email protected]>--- arch/powerpc/sysdev/fsl_soc.c | 70 ++++++++++++++++++---------------------- arch/powerpc/sysdev/fsl_soc.h | 1 + 2 files changed, 33 insertions(+), 38 deletions(-)arch/powerpc/sysdev/fsl_soc.c +4
-0@@ -75,6 +75,33 @@ phys_addr_t get_immrbase(void)EXPORT_SYMBOL (get_immrbase); +static u32 sysfreq =-1 ; + +u32 fsl_get_sys_freq (void ) +{
arch/powerpc/sysdev/fsl_soc.c phys_addr_t get_immrbase(void) · line 91
Quoted 10 lines
arch/powerpc/sysdev/fsl_soc.c +10
-0+struct device_node *soc; +const u32 *prop; +int size; + +if (sysfreq !=-1 ) +return sysfreq; + + soc =of_find_node_by_type (NULL ,"soc" ); +if (!soc) +return -1 ;
Um.. can we finally decide on compatible for the soc nodes, and add there compatible matching from the start?
Quoted 109 lines
arch/powerpc/sysdev/fsl_soc.c +18
-38+ + prop =of_get_property (soc,"clock-frequency" , &size); +if (!prop || size !=sizeof (*prop) || *prop ==0 ) + prop =of_get_property (soc,"bus-frequency" , &size); + +if (prop && size ==sizeof (*prop)) + sysfreq = *prop; + +of_node_put (soc); +return sysfreq; +} +EXPORT_SYMBOL (fsl_get_sys_freq); +#if defined(CONFIG_CPM2 ) || defined(CONFIG_QUICC_ENGINE ) || defined(CONFIG_8xx)static u32 brgfreq =-1 ;@@ -516,9 +543,9 @@ arch_initcall(fsl_i2c_of_init);static int __init mpc83xx_wdt_init (void ) {struct resource r; -struct device_node *soc, *np; +struct device_node *np;struct platform_device *dev; -const unsigned int *freq; +u32 freq =fsl_get_sys_freq ();int ret; np =of_find_compatible_node (NULL ,"watchdog" ,"mpc83xx_wdt" );@@ -528,19 +555,6 @@ static int __init mpc83xx_wdt_init(void) goto nodev; } - soc =of_find_node_by_type (NULL ,"soc" ); - -if (!soc) { - ret = -ENODEV ; - goto nosoc; - } - - freq =of_get_property (soc,"bus-frequency" ,NULL ); -if (!freq) { - ret = -ENODEV ; - goto err; - } -memset (&r,0 ,sizeof (r)); ret =of_address_to_resource (np,0 , &r);@@ -553,20 +567,16 @@ static int __init mpc83xx_wdt_init(void) goto err; } - ret =platform_device_add_data (dev, freq,sizeof (int )); + ret =platform_device_add_data (dev, &freq,sizeof (freq));if (ret) goto unreg; -of_node_put (soc);of_node_put (np); -return 0 ; unreg:platform_device_unregister (dev); err: -of_node_put (soc); -nosoc:of_node_put (np); nodev:return ret;@@ -830,25 +840,9 @@ int __init fsl_spi_init(struct spi_board_info *board_infos, sysclk =get_brgfreq ();#endif if (sysclk ==-1 ) { -struct device_node *np; -const u32 *freq; -int size; - - np =of_find_node_by_type (NULL ,"soc" ); -if (!np) + sysclk =fsl_get_sys_freq (); +if (sysclk ==-1 )return -ENODEV ; - - freq =of_get_property (np,"clock-frequency" , &size); -if (!freq || size !=sizeof (*freq) || *freq ==0 ) { - freq =of_get_property (np,"bus-frequency" , &size); -if (!freq || size !=sizeof (*freq) || *freq ==0 ) { -of_node_put (np); -return -ENODEV ; - } - } - - sysclk = *freq; -of_node_put (np); } ret = of_fsl_spi_probe(NULL, "fsl,spi", sysclk, board_infos,arch/powerpc/sysdev/fsl_soc.h +1
-0@@ -7,6 +7,7 @@extern phys_addr_t get_immrbase (void );extern u32 get_brgfreq (void );extern u32 get_baudrate (void ); +extern u32 fsl_get_sys_freq (void );struct spi_board_info ;
Signature · 3 lines
Anton Vorontsov email: [email protected] irc://irc.freenode.net/bd2
Quoted 7 lines · Anton Vorontsov
Quoted 7 lines
arch/powerpc/sysdev/fsl_soc.c +7
-0+u32 fsl_get_sys_freq (void ) +{ +struct device_node *soc; +const u32 *prop; +int size; + +if (sysfreq !=-1 )
Quoted 8 lines
arch/powerpc/sysdev/fsl_soc.c phys_addr_t get_immrbase(void) · line 91
Quoted 5 lines
arch/powerpc/sysdev/fsl_soc.c +5
-0+return sysfreq; + + soc =of_find_node_by_type (NULL ,"soc" ); +if (!soc) +return -1 ;Um.. can we finally decide on compatible for the soc nodes, and add there compatible matching from the start?
This is just a code reorganization; any change in what we match on should be a separate patch.
-Scott
Quoted 16 lines · Scott Wood
Quoted 6 lines · Anton Vorontsov
Quoted 6 lines
arch/powerpc/sysdev/fsl_soc.c +6
-0+u32 fsl_get_sys_freq (void ) +{ +struct device_node *soc; +const u32 *prop; +int size; +Quoted 8 lines
arch/powerpc/sysdev/fsl_soc.c phys_addr_t get_immrbase(void) · line 91
Quoted 6 lines
arch/powerpc/sysdev/fsl_soc.c +6
-0+if (sysfreq !=-1 ) +return sysfreq; + + soc =of_find_node_by_type (NULL ,"soc" ); +if (!soc) +return -1 ;Um.. can we finally decide on compatible for the soc nodes, and add there compatible matching from the start?
Quoted 1 line
This is just a code reorganization; any change in what we match on should be a separate patch.
I agree and Scott has posted a version of this long ago.
- k
Quoted 17 lines · Scott Wood
Quoted 7 lines · Anton Vorontsov
Quoted 7 lines
arch/powerpc/sysdev/fsl_soc.c +7
-0+u32 fsl_get_sys_freq (void ) +{ +struct device_node *soc; +const u32 *prop; +int size; + +if (sysfreq !=-1 )Quoted 8 lines
arch/powerpc/sysdev/fsl_soc.c phys_addr_t get_immrbase(void) · line 91
Quoted 5 lines
arch/powerpc/sysdev/fsl_soc.c +5
-0+return sysfreq; + + soc =of_find_node_by_type (NULL ,"soc" ); +if (!soc) +return -1 ;Um.. can we finally decide on compatible for the soc nodes, and add there compatible matching from the start?
Quoted 2 lines
This is just a code reorganization; any change in what we match on should be a separate patch.
Yes, it makes sense of course. Just wanted to get rid of the device_type asap, because I'm going to submit mpc836x_rdk board, and I'd preferred to submit it w/o device_type = "soc"... Oh well, ok.. later.
Signature · 3 lines
Anton Vorontsov email: [email protected] irc://irc.freenode.net/bd2
Kumar Gala
AppliedQuoted 6 lines · Scott Wood
Signed-off-by Scott Wood <[email protected]>---
arch/powerpc/sysdev/fsl_soc.c| 70 ++++++++++++++++++---------------------- arch/powerpc/sysdev/fsl_soc.h | 1 + 2 files changed, 33 insertions(+), 38 deletions(-)
applied.
- k