diff options
Diffstat (limited to 'arch/powerpc/sysdev/fsl_85xx_l2ctlr.c')
| -rw-r--r-- | arch/powerpc/sysdev/fsl_85xx_l2ctlr.c | 67 | 
1 files changed, 35 insertions, 32 deletions
diff --git a/arch/powerpc/sysdev/fsl_85xx_l2ctlr.c b/arch/powerpc/sysdev/fsl_85xx_l2ctlr.c index cc8d6556d79..afc2dbf3701 100644 --- a/arch/powerpc/sysdev/fsl_85xx_l2ctlr.c +++ b/arch/powerpc/sysdev/fsl_85xx_l2ctlr.c @@ -1,5 +1,5 @@  /* - * Copyright 2009-2010 Freescale Semiconductor, Inc. + * Copyright 2009-2010, 2012 Freescale Semiconductor, Inc.   *   * QorIQ (P1/P2) L2 controller init for Cache-SRAM instantiation   * @@ -21,6 +21,7 @@   */  #include <linux/kernel.h> +#include <linux/module.h>  #include <linux/of_platform.h>  #include <asm/io.h> @@ -30,24 +31,21 @@ static char *sram_size;  static char *sram_offset;  struct mpc85xx_l2ctlr __iomem *l2ctlr; -static long get_cache_sram_size(void) +static int get_cache_sram_params(struct sram_parameters *sram_params)  { -	unsigned long val; +	unsigned long long addr; +	unsigned int size; -	if (!sram_size || (strict_strtoul(sram_size, 0, &val) < 0)) +	if (!sram_size || (kstrtouint(sram_size, 0, &size) < 0))  		return -EINVAL; -	return val; -} - -static long get_cache_sram_offset(void) -{ -	unsigned long val; - -	if (!sram_offset || (strict_strtoul(sram_offset, 0, &val) < 0)) +	if (!sram_offset || (kstrtoull(sram_offset, 0, &addr) < 0))  		return -EINVAL; -	return val; +	sram_params->sram_offset = addr; +	sram_params->sram_size = size; + +	return 0;  }  static int __init get_size_from_cmdline(char *str) @@ -71,8 +69,7 @@ static int __init get_offset_from_cmdline(char *str)  __setup("cache-sram-size=", get_size_from_cmdline);  __setup("cache-sram-offset=", get_offset_from_cmdline); -static int __devinit mpc85xx_l2ctlr_of_probe(struct platform_device *dev, -					  const struct of_device_id *match) +static int mpc85xx_l2ctlr_of_probe(struct platform_device *dev)  {  	long rval;  	unsigned int rem; @@ -93,17 +90,9 @@ static int __devinit mpc85xx_l2ctlr_of_probe(struct platform_device *dev,  	}  	l2cache_size = *prop; -	sram_params.sram_size  = get_cache_sram_size(); -	if (sram_params.sram_size <= 0) { +	if (get_cache_sram_params(&sram_params)) {  		dev_err(&dev->dev, -			"Entire L2 as cache, Aborting Cache-SRAM stuff\n"); -		return -EINVAL; -	} - -	sram_params.sram_offset  = get_cache_sram_offset(); -	if (sram_params.sram_offset <= 0) { -		dev_err(&dev->dev, -			"Entire L2 as cache, provide a valid sram offset\n"); +			"Entire L2 as cache, provide valid sram offset and size\n");  		return -EINVAL;  	} @@ -125,14 +114,14 @@ static int __devinit mpc85xx_l2ctlr_of_probe(struct platform_device *dev,  	 * Write bits[0-17] to srbar0  	 */  	out_be32(&l2ctlr->srbar0, -		sram_params.sram_offset & L2SRAM_BAR_MSK_LO18); +		lower_32_bits(sram_params.sram_offset) & L2SRAM_BAR_MSK_LO18);  	/*  	 * Write bits[18-21] to srbare0  	 */  #ifdef CONFIG_PHYS_64BIT  	out_be32(&l2ctlr->srbarea0, -		(sram_params.sram_offset >> 32) & L2SRAM_BARE_MSK_HI4); +		upper_32_bits(sram_params.sram_offset) & L2SRAM_BARE_MSK_HI4);  #endif  	clrsetbits_be32(&l2ctlr->ctl, L2CR_L2E, L2CR_L2FI); @@ -171,7 +160,7 @@ static int __devinit mpc85xx_l2ctlr_of_probe(struct platform_device *dev,  	return 0;  } -static int __devexit mpc85xx_l2ctlr_of_remove(struct platform_device *dev) +static int mpc85xx_l2ctlr_of_remove(struct platform_device *dev)  {  	BUG_ON(!l2ctlr); @@ -201,27 +190,41 @@ static struct of_device_id mpc85xx_l2ctlr_of_match[] = {  	{  		.compatible = "fsl,p1022-l2-cache-controller",  	}, +	{ +		.compatible = "fsl,mpc8548-l2-cache-controller", +	}, +	{	.compatible = "fsl,mpc8544-l2-cache-controller",}, +	{	.compatible = "fsl,mpc8572-l2-cache-controller",}, +	{	.compatible = "fsl,mpc8536-l2-cache-controller",}, +	{	.compatible = "fsl,p1021-l2-cache-controller",}, +	{	.compatible = "fsl,p1012-l2-cache-controller",}, +	{	.compatible = "fsl,p1025-l2-cache-controller",}, +	{	.compatible = "fsl,p1016-l2-cache-controller",}, +	{	.compatible = "fsl,p1024-l2-cache-controller",}, +	{	.compatible = "fsl,p1015-l2-cache-controller",}, +	{	.compatible = "fsl,p1010-l2-cache-controller",}, +	{	.compatible = "fsl,bsc9131-l2-cache-controller",},  	{},  }; -static struct of_platform_driver mpc85xx_l2ctlr_of_platform_driver = { +static struct platform_driver mpc85xx_l2ctlr_of_platform_driver = {  	.driver	= {  		.name		= "fsl-l2ctlr",  		.owner		= THIS_MODULE,  		.of_match_table	= mpc85xx_l2ctlr_of_match,  	},  	.probe		= mpc85xx_l2ctlr_of_probe, -	.remove		= __devexit_p(mpc85xx_l2ctlr_of_remove), +	.remove		= mpc85xx_l2ctlr_of_remove,  };  static __init int mpc85xx_l2ctlr_of_init(void)  { -	return of_register_platform_driver(&mpc85xx_l2ctlr_of_platform_driver); +	return platform_driver_register(&mpc85xx_l2ctlr_of_platform_driver);  }  static void __exit mpc85xx_l2ctlr_of_exit(void)  { -	of_unregister_platform_driver(&mpc85xx_l2ctlr_of_platform_driver); +	platform_driver_unregister(&mpc85xx_l2ctlr_of_platform_driver);  }  subsys_initcall(mpc85xx_l2ctlr_of_init);  | 
