2019-06-04 11:11:33 +03:00
// SPDX-License-Identifier: GPL-2.0-only
2005-04-17 02:20:36 +04:00
/*
* Hardware parameter area specific to Sharp SL series devices
*
* Copyright ( c ) 2005 Richard Purdie
*
* Based on Sharp ' s 2.4 kernel patches
*/
# include <linux/kernel.h>
2007-12-27 16:19:44 +03:00
# include <linux/module.h>
2005-04-17 02:20:36 +04:00
# include <linux/string.h>
# include <asm/mach/sharpsl_param.h>
2013-09-27 02:23:02 +04:00
# include <asm/memory.h>
2005-04-17 02:20:36 +04:00
/*
* Certain hardware parameters determined at the time of device manufacture ,
* typically including LCD parameters are loaded by the bootloader at the
* address PARAM_BASE . As the kernel will overwrite them , we need to store
* them early in the boot process , then pass them to the appropriate drivers .
2007-05-11 23:40:30 +04:00
* Not all devices use all parameters but the format is common to all .
2005-04-17 02:20:36 +04:00
*/
2005-06-20 21:51:07 +04:00
# ifdef CONFIG_ARCH_SA1100
2005-04-17 02:20:36 +04:00
# define PARAM_BASE 0xe8ffc000
2013-09-27 02:23:02 +04:00
# define param_start(x) (void *)(x)
2005-04-17 02:20:36 +04:00
# else
# define PARAM_BASE 0xa0000a00
2013-09-27 02:23:02 +04:00
# define param_start(x) __va(x)
2005-04-17 02:20:36 +04:00
# endif
# define MAGIC_CHG(a,b,c,d) ( ( d << 24 ) | ( c << 16 ) | ( b << 8 ) | a )
# define COMADJ_MAGIC MAGIC_CHG('C','M','A','D')
# define UUID_MAGIC MAGIC_CHG('U','U','I','D')
# define TOUCH_MAGIC MAGIC_CHG('T','U','C','H')
# define AD_MAGIC MAGIC_CHG('B','V','A','D')
# define PHAD_MAGIC MAGIC_CHG('P','H','A','D')
struct sharpsl_param_info sharpsl_param ;
2007-12-27 16:19:44 +03:00
EXPORT_SYMBOL ( sharpsl_param ) ;
2005-04-17 02:20:36 +04:00
void sharpsl_save_param ( void )
{
2013-09-27 02:23:02 +04:00
memcpy ( & sharpsl_param , param_start ( PARAM_BASE ) , sizeof ( struct sharpsl_param_info ) ) ;
2005-04-17 02:20:36 +04:00
if ( sharpsl_param . comadj_keyword ! = COMADJ_MAGIC )
sharpsl_param . comadj = - 1 ;
if ( sharpsl_param . phad_keyword ! = PHAD_MAGIC )
sharpsl_param . phadadj = - 1 ;
if ( sharpsl_param . uuid_keyword ! = UUID_MAGIC )
sharpsl_param . uuid [ 0 ] = - 1 ;
if ( sharpsl_param . touch_keyword ! = TOUCH_MAGIC )
sharpsl_param . touch_xp = - 1 ;
if ( sharpsl_param . adadj_keyword ! = AD_MAGIC )
sharpsl_param . adadj = - 1 ;
}