From 7c803be2eb3cae245dedda438776e08fb122250f Mon Sep 17 00:00:00 2001 From: Wolfgang Denk Date: Tue, 16 Sep 2008 18:02:19 +0200 Subject: TQM8xx: Fix CFI flash driver support for all TQM8xx based boards After switching to using the CFI flash driver, the correct remapping of the flash banks was forgotten. Also, some boards were not adapted, and the old legacy flash driver was not removed yet. Signed-off-by: Wolfgang Denk --- include/configs/FPS850L.h | 2 ++ include/configs/FPS860L.h | 2 ++ include/configs/HMI10.h | 2 +- include/configs/SM850.h | 17 +++++++++++------ include/configs/TQM823L.h | 2 ++ include/configs/TQM823M.h | 2 ++ include/configs/TQM850L.h | 2 ++ include/configs/TQM850M.h | 2 ++ include/configs/TQM855L.h | 2 ++ include/configs/TQM855M.h | 2 ++ include/configs/TQM860L.h | 2 ++ include/configs/TQM860M.h | 4 +++- include/configs/TQM862L.h | 2 ++ include/configs/TQM862M.h | 4 +++- include/configs/TQM866M.h | 4 +++- include/configs/virtlab2.h | 2 ++ 16 files changed, 43 insertions(+), 10 deletions(-) (limited to 'include') diff --git a/include/configs/FPS850L.h b/include/configs/FPS850L.h index dd8051d6377..c9d6c912919 100644 --- a/include/configs/FPS850L.h +++ b/include/configs/FPS850L.h @@ -211,6 +211,8 @@ #define CFG_USE_PPCENV /* Environment embedded in sect .ppcenv */ +#define CONFIG_MISC_INIT_R /* Make sure to remap flashes correctly */ + /*----------------------------------------------------------------------- * Dynamic MTD partition support */ diff --git a/include/configs/FPS860L.h b/include/configs/FPS860L.h index 1af28b39f54..bf20a0d733f 100644 --- a/include/configs/FPS860L.h +++ b/include/configs/FPS860L.h @@ -211,6 +211,8 @@ #define CFG_USE_PPCENV /* Environment embedded in sect .ppcenv */ +#define CONFIG_MISC_INIT_R /* Make sure to remap flashes correctly */ + /*----------------------------------------------------------------------- * Dynamic MTD partition support */ diff --git a/include/configs/HMI10.h b/include/configs/HMI10.h index 807781c1c23..c58cb8c52a2 100644 --- a/include/configs/HMI10.h +++ b/include/configs/HMI10.h @@ -1,5 +1,5 @@ /* - * (C) Copyright 2000-2005 + * (C) Copyright 2000-2008 * Wolfgang Denk, DENX Software Engineering, wd@denx.de. * * See file CREDITS for list of people who contributed to this diff --git a/include/configs/SM850.h b/include/configs/SM850.h index d30c7bcf476..c896b586382 100644 --- a/include/configs/SM850.h +++ b/include/configs/SM850.h @@ -1,5 +1,5 @@ /* - * (C) Copyright 2000 + * (C) Copyright 2000-2008 * Wolfgang Denk, DENX Software Engineering, wd@denx.de. * * See file CREDITS for list of people who contributed to this @@ -157,16 +157,21 @@ /*----------------------------------------------------------------------- * FLASH organization */ +/* use CFI flash driver */ +#define CFG_FLASH_CFI 1 /* Flash is CFI conformant */ +#define CONFIG_FLASH_CFI_DRIVER 1 /* Use the common driver */ +#define CFG_FLASH_BANKS_LIST { CFG_FLASH_BASE, CFG_FLASH_BASE+flash_info[0].size } +#define CFG_FLASH_EMPTY_INFO +#define CFG_FLASH_USE_BUFFER_WRITE 1 #define CFG_MAX_FLASH_BANKS 2 /* max number of memory banks */ -#define CFG_MAX_FLASH_SECT 67 /* max number of sectors on one chip */ - -#define CFG_FLASH_ERASE_TOUT 120000 /* Timeout for Flash Erase (in ms) */ -#define CFG_FLASH_WRITE_TOUT 500 /* Timeout for Flash Write (in ms) */ +#define CFG_MAX_FLASH_SECT 71 /* max number of sectors on one chip */ #define CONFIG_ENV_IS_IN_FLASH 1 -#define CONFIG_ENV_OFFSET 0x8000 /* Offset of Environment Sector */ +#define CONFIG_ENV_OFFSET 0x8000 /* Offset of Environment Sector */ #define CONFIG_ENV_SIZE 0x4000 /* Total Size of Environment Sector */ +#define CONFIG_MISC_INIT_R /* Make sure to remap flashes correctly */ + /*----------------------------------------------------------------------- * Hardware Information Block */ diff --git a/include/configs/TQM823L.h b/include/configs/TQM823L.h index 631190295cc..dc4582ff5b5 100644 --- a/include/configs/TQM823L.h +++ b/include/configs/TQM823L.h @@ -225,6 +225,8 @@ #define CFG_USE_PPCENV /* Environment embedded in sect .ppcenv */ +#define CONFIG_MISC_INIT_R /* Make sure to remap flashes correctly */ + /*----------------------------------------------------------------------- * Dynamic MTD partition support */ diff --git a/include/configs/TQM823M.h b/include/configs/TQM823M.h index 53272e17220..7ea73427b93 100644 --- a/include/configs/TQM823M.h +++ b/include/configs/TQM823M.h @@ -221,6 +221,8 @@ #define CFG_USE_PPCENV /* Environment embedded in sect .ppcenv */ +#define CONFIG_MISC_INIT_R /* Make sure to remap flashes correctly */ + /*----------------------------------------------------------------------- * Dynamic MTD partition support */ diff --git a/include/configs/TQM850L.h b/include/configs/TQM850L.h index 812cea16c05..473c3900665 100644 --- a/include/configs/TQM850L.h +++ b/include/configs/TQM850L.h @@ -210,6 +210,8 @@ #define CFG_USE_PPCENV /* Environment embedded in sect .ppcenv */ +#define CONFIG_MISC_INIT_R /* Make sure to remap flashes correctly */ + /*----------------------------------------------------------------------- * Dynamic MTD partition support */ diff --git a/include/configs/TQM850M.h b/include/configs/TQM850M.h index 512c55dc0ce..4de5a33aa4f 100644 --- a/include/configs/TQM850M.h +++ b/include/configs/TQM850M.h @@ -210,6 +210,8 @@ #define CFG_USE_PPCENV /* Environment embedded in sect .ppcenv */ +#define CONFIG_MISC_INIT_R /* Make sure to remap flashes correctly */ + /*----------------------------------------------------------------------- * Dynamic MTD partition support */ diff --git a/include/configs/TQM855L.h b/include/configs/TQM855L.h index 36e2fbf2e2d..2ba94c8cc3b 100644 --- a/include/configs/TQM855L.h +++ b/include/configs/TQM855L.h @@ -215,6 +215,8 @@ #define CFG_USE_PPCENV /* Environment embedded in sect .ppcenv */ +#define CONFIG_MISC_INIT_R /* Make sure to remap flashes correctly */ + /*----------------------------------------------------------------------- * Dynamic MTD partition support */ diff --git a/include/configs/TQM855M.h b/include/configs/TQM855M.h index 2da1f3ae09c..7699d51c075 100644 --- a/include/configs/TQM855M.h +++ b/include/configs/TQM855M.h @@ -250,6 +250,8 @@ #define CFG_USE_PPCENV /* Environment embedded in sect .ppcenv */ +#define CONFIG_MISC_INIT_R /* Make sure to remap flashes correctly */ + /*----------------------------------------------------------------------- * Dynamic MTD partition support */ diff --git a/include/configs/TQM860L.h b/include/configs/TQM860L.h index 87462a56112..23d0dd6c897 100644 --- a/include/configs/TQM860L.h +++ b/include/configs/TQM860L.h @@ -214,6 +214,8 @@ #define CFG_USE_PPCENV /* Environment embedded in sect .ppcenv */ +#define CONFIG_MISC_INIT_R /* Make sure to remap flashes correctly */ + /*----------------------------------------------------------------------- * Dynamic MTD partition support */ diff --git a/include/configs/TQM860M.h b/include/configs/TQM860M.h index 9dc874550c5..e8d2ec43d70 100644 --- a/include/configs/TQM860M.h +++ b/include/configs/TQM860M.h @@ -1,5 +1,5 @@ /* - * (C) Copyright 2000-2005 + * (C) Copyright 2000-2008 * Wolfgang Denk, DENX Software Engineering, wd@denx.de. * * See file CREDITS for list of people who contributed to this @@ -215,6 +215,8 @@ #define CFG_USE_PPCENV /* Environment embedded in sect .ppcenv */ +#define CONFIG_MISC_INIT_R /* Make sure to remap flashes correctly */ + /*----------------------------------------------------------------------- * Dynamic MTD partition support */ diff --git a/include/configs/TQM862L.h b/include/configs/TQM862L.h index c039e9d3e30..74c815b88a6 100644 --- a/include/configs/TQM862L.h +++ b/include/configs/TQM862L.h @@ -218,6 +218,8 @@ #define CFG_USE_PPCENV /* Environment embedded in sect .ppcenv */ +#define CONFIG_MISC_INIT_R /* Make sure to remap flashes correctly */ + /*----------------------------------------------------------------------- * Dynamic MTD partition support */ diff --git a/include/configs/TQM862M.h b/include/configs/TQM862M.h index cc5ee6da076..a5fc38db03b 100644 --- a/include/configs/TQM862M.h +++ b/include/configs/TQM862M.h @@ -1,5 +1,5 @@ /* - * (C) Copyright 2000-2005 + * (C) Copyright 2000-2008 * Wolfgang Denk, DENX Software Engineering, wd@denx.de. * * See file CREDITS for list of people who contributed to this @@ -219,6 +219,8 @@ #define CFG_USE_PPCENV /* Environment embedded in sect .ppcenv */ +#define CONFIG_MISC_INIT_R /* Make sure to remap flashes correctly */ + /*----------------------------------------------------------------------- * Dynamic MTD partition support */ diff --git a/include/configs/TQM866M.h b/include/configs/TQM866M.h index bf3bbb264a3..9e14d995ab9 100644 --- a/include/configs/TQM866M.h +++ b/include/configs/TQM866M.h @@ -1,5 +1,5 @@ /* - * (C) Copyright 2000-2005 + * (C) Copyright 2000-2008 * Wolfgang Denk, DENX Software Engineering, wd@denx.de. * * See file CREDITS for list of people who contributed to this @@ -259,6 +259,8 @@ #define CFG_USE_PPCENV /* Environment embedded in sect .ppcenv */ +#define CONFIG_MISC_INIT_R /* Make sure to remap flashes correctly */ + /*----------------------------------------------------------------------- * Dynamic MTD partition support */ diff --git a/include/configs/virtlab2.h b/include/configs/virtlab2.h index 10dbed96ff2..f3f43c3d265 100644 --- a/include/configs/virtlab2.h +++ b/include/configs/virtlab2.h @@ -219,6 +219,8 @@ #define CFG_USE_PPCENV /* Environment embedded in sect .ppcenv */ +#define CONFIG_MISC_INIT_R /* Make sure to remap flashes correctly */ + /*----------------------------------------------------------------------- * Dynamic MTD partition support */ -- cgit v1.2.3 From dd820b03a2f45e86e7960e26729a3b58e3dda44a Mon Sep 17 00:00:00 2001 From: Wolfgang Denk Date: Thu, 18 Sep 2008 13:57:32 +0200 Subject: ADS5121: fix typo in "rootpath" default setting Signed-off-by: Wolfgang Denk --- include/configs/ads5121.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'include') diff --git a/include/configs/ads5121.h b/include/configs/ads5121.h index d99f23fcd06..d6f7e02bc86 100644 --- a/include/configs/ads5121.h +++ b/include/configs/ads5121.h @@ -421,7 +421,7 @@ #define CONFIG_HOSTNAME ads5121 #define CONFIG_BOOTFILE ads5121/uImage -#define CONFIG_ROOTPATH /opt/eldk/pcc_6xx +#define CONFIG_ROOTPATH /opt/eldk/ppc_6xx #define CONFIG_LOADADDR 400000 /* default location for tftp and bootm */ -- cgit v1.2.3 From b5d10a13525c07ec6374adf840d7c87553b5f189 Mon Sep 17 00:00:00 2001 From: Nobuhiro Iwamatsu Date: Thu, 18 Sep 2008 19:34:36 +0900 Subject: sh: Fix compile warning Signed-off-by: Nobuhiro Iwamatsu --- include/asm-sh/cache.h | 14 ++++--- include/asm-sh/io.h | 109 ++++++++++++++++++++++++++----------------------- include/asm-sh/pci.h | 1 + 3 files changed, 68 insertions(+), 56 deletions(-) (limited to 'include') diff --git a/include/asm-sh/cache.h b/include/asm-sh/cache.h index 25b409b6b04..2cfc0a79447 100644 --- a/include/asm-sh/cache.h +++ b/include/asm-sh/cache.h @@ -3,29 +3,31 @@ #if defined(CONFIG_SH4) || defined(CONFIG_SH4A) +int cache_control(unsigned int cmd); + #define L1_CACHE_BYTES 32 struct __large_struct { unsigned long buf[100]; }; #define __m(x) (*(struct __large_struct *)(x)) -void dcache_wback_range (u32 start, u32 end) +void dcache_wback_range(u32 start, u32 end) { u32 v; start &= ~(L1_CACHE_BYTES - 1); for (v = start; v < end; v += L1_CACHE_BYTES) { - asm volatile ("ocbwb %0": /* no output */ - :"m" (__m (v))); + asm volatile ("ocbwb %0" : /* no output */ + : "m" (__m(v))); } } -void dcache_invalid_range (u32 start, u32 end) +void dcache_invalid_range(u32 start, u32 end) { u32 v; start &= ~(L1_CACHE_BYTES - 1); for (v = start; v < end; v += L1_CACHE_BYTES) { - asm volatile ("ocbi %0": /* no output */ - :"m" (__m (v))); + asm volatile ("ocbi %0" : /* no output */ + : "m" (__m(v))); } } #endif /* CONFIG_SH4 || CONFIG_SH4A */ diff --git a/include/asm-sh/io.h b/include/asm-sh/io.h index 740029300c2..adc3f81ed67 100644 --- a/include/asm-sh/io.h +++ b/include/asm-sh/io.h @@ -34,9 +34,9 @@ #define __arch_getw(a) (*(volatile unsigned short *)(a)) #define __arch_getl(a) (*(volatile unsigned int *)(a)) -#define __arch_putb(v,a) (*(volatile unsigned char *)(a) = (v)) -#define __arch_putw(v,a) (*(volatile unsigned short *)(a) = (v)) -#define __arch_putl(v,a) (*(volatile unsigned int *)(a) = (v)) +#define __arch_putb(v, a) (*(volatile unsigned char *)(a) = (v)) +#define __arch_putw(v, a) (*(volatile unsigned short *)(a) = (v)) +#define __arch_putl(v, a) (*(volatile unsigned int *)(a) = (v)) extern void __raw_writesb(unsigned int addr, const void *data, int bytelen); extern void __raw_writesw(unsigned int addr, const void *data, int wordlen); @@ -46,9 +46,9 @@ extern void __raw_readsb(unsigned int addr, void *data, int bytelen); extern void __raw_readsw(unsigned int addr, void *data, int wordlen); extern void __raw_readsl(unsigned int addr, void *data, int longlen); -#define __raw_writeb(v,a) __arch_putb(v,a) -#define __raw_writew(v,a) __arch_putw(v,a) -#define __raw_writel(v,a) __arch_putl(v,a) +#define __raw_writeb(v, a) __arch_putb(v, a) +#define __raw_writew(v, a) __arch_putw(v, a) +#define __raw_writel(v, a) __arch_putl(v, a) #define __raw_readb(a) __arch_getb(a) #define __raw_readw(a) __arch_getw(a) @@ -59,13 +59,13 @@ extern void __raw_readsl(unsigned int addr, void *data, int longlen); * properly. Spell it out to the compiler in some cases. * These are only valid for small values of "off" (< 1<<12) */ -#define __raw_base_writeb(val,base,off) __arch_base_putb(val,base,off) -#define __raw_base_writew(val,base,off) __arch_base_putw(val,base,off) -#define __raw_base_writel(val,base,off) __arch_base_putl(val,base,off) +#define __raw_base_writeb(val, base, off) __arch_base_putb(val, base, off) +#define __raw_base_writew(val, base, off) __arch_base_putw(val, base, off) +#define __raw_base_writel(val, base, off) __arch_base_putl(val, base, off) -#define __raw_base_readb(base,off) __arch_base_getb(base,off) -#define __raw_base_readw(base,off) __arch_base_getw(base,off) -#define __raw_base_readl(base,off) __arch_base_getl(base,off) +#define __raw_base_readb(base, off) __arch_base_getb(base, off) +#define __raw_base_readw(base, off) __arch_base_getw(base, off) +#define __raw_base_readl(base, off) __arch_base_getl(base, off) /* * Now, pick up the machine-defined IO definitions @@ -91,36 +91,43 @@ extern void __raw_readsl(unsigned int addr, void *data, int longlen); * * The {in,out}[bwl] macros are for emulating x86-style PCI/ISA IO space. */ -#define outb(v,p) __raw_writeb(v, p) -#define outw(v,p) __raw_writew(cpu_to_le16(v),p) -#define outl(v,p) __raw_writel(cpu_to_le32(v),p) +#define outb(v, p) __raw_writeb(v, p) +#define outw(v, p) __raw_writew(cpu_to_le16(v), p) +#define outl(v, p) __raw_writel(cpu_to_le32(v), p) #define inb(p) ({ unsigned int __v = __raw_readb(p); __v; }) #define inw(p) ({ unsigned int __v = __le16_to_cpu(__raw_readw(p)); __v; }) #define inl(p) ({ unsigned int __v = __le32_to_cpu(__raw_readl(p)); __v; }) -#define outsb(p,d,l) __raw_writesb(p,d,l) -#define outsw(p,d,l) __raw_writesw(p,d,l) -#define outsl(p,d,l) __raw_writesl(p,d,l) +#define outsb(p, d, l) __raw_writesb(p, d, l) +#define outsw(p, d, l) __raw_writesw(p, d, l) +#define outsl(p, d, l) __raw_writesl(p, d, l) -#define insb(p,d,l) __raw_readsb(p,d,l) -#define insw(p,d,l) __raw_readsw(p,d,l) -#define insl(p,d,l) __raw_readsl(p,d,l) +#define insb(p, d, l) __raw_readsb(p, d, l) +#define insw(p, d, l) __raw_readsw(p, d, l) +#define insl(p, d, l) __raw_readsl(p, d, l) -#define outb_p(val,port) outb((val),(port)) -#define outw_p(val,port) outw((val),(port)) -#define outl_p(val,port) outl((val),(port)) +#define outb_p(val, port) outb((val), (port)) +#define outw_p(val, port) outw((val), (port)) +#define outl_p(val, port) outl((val), (port)) #define inb_p(port) inb((port)) #define inw_p(port) inw((port)) #define inl_p(port) inl((port)) -#define outsb_p(port,from,len) outsb(port,from,len) -#define outsw_p(port,from,len) outsw(port,from,len) -#define outsl_p(port,from,len) outsl(port,from,len) -#define insb_p(port,to,len) insb(port,to,len) -#define insw_p(port,to,len) insw(port,to,len) -#define insl_p(port,to,len) insl(port,to,len) - +#define outsb_p(port, from, len) outsb(port, from, len) +#define outsw_p(port, from, len) outsw(port, from, len) +#define outsl_p(port, from, len) outsl(port, from, len) +#define insb_p(port, to, len) insb(port, to, len) +#define insw_p(port, to, len) insw(port, to, len) +#define insl_p(port, to, len) insl(port, to, len) + +/* for U-Boot PCI */ +#define out_8(port, val) outb(val, port) +#define out_le16(port, val) outw(val, port) +#define out_le32(port, val) outl(val, port) +#define in_8(port) inb(port) +#define in_le16(port) inw(port) +#define in_le32(port) inl(port) /* * ioremap and friends. * @@ -128,7 +135,7 @@ extern void __raw_readsl(unsigned int addr, void *data, int longlen); * linux/Documentation/IO-mapping.txt. If you want a * physical address, use __ioremap instead. */ -extern void * __ioremap(unsigned long offset, size_t size, unsigned long flags); +extern void *__ioremap(unsigned long offset, size_t size, unsigned long flags); extern void __iounmap(void *addr); /* @@ -139,20 +146,20 @@ extern void __iounmap(void *addr); * iomem_to_phys(off) */ #ifdef iomem_valid_addr -#define __arch_ioremap(off,sz,nocache) \ +#define __arch_ioremap(off, sz, nocache) \ ({ \ unsigned long _off = (off), _size = (sz); \ void *_ret = (void *)0; \ if (iomem_valid_addr(_off, _size)) \ - _ret = __ioremap(iomem_to_phys(_off),_size,0); \ + _ret = __ioremap(iomem_to_phys(_off), _size, 0); \ _ret; \ }) #define __arch_iounmap __iounmap #endif -#define ioremap(off,sz) __arch_ioremap((off),(sz),0) -#define ioremap_nocache(off,sz) __arch_ioremap((off),(sz),1) +#define ioremap(off, sz) __arch_ioremap((off), (sz), 0) +#define ioremap_nocache(off, sz) __arch_ioremap((off), (sz), 1) #define iounmap(_addr) __arch_iounmap(_addr) /* @@ -180,19 +187,21 @@ extern void _memset_io(unsigned long, int, size_t); #ifdef __mem_pci #define readb(c) ({ unsigned int __v = __raw_readb(__mem_pci(c)); __v; }) -#define readw(c) ({ unsigned int __v = le16_to_cpu(__raw_readw(__mem_pci(c))); __v; }) -#define readl(c) ({ unsigned int __v = le32_to_cpu(__raw_readl(__mem_pci(c))); __v; }) +#define readw(c)\ + ({ unsigned int __v = le16_to_cpu(__raw_readw(__mem_pci(c))); __v; }) +#define readl(c)\ + ({ unsigned int __v = le32_to_cpu(__raw_readl(__mem_pci(c))); __v; }) -#define writeb(v,c) __raw_writeb(v,__mem_pci(c)) -#define writew(v,c) __raw_writew(cpu_to_le16(v),__mem_pci(c)) -#define writel(v,c) __raw_writel(cpu_to_le32(v),__mem_pci(c)) +#define writeb(v, c) __raw_writeb(v, __mem_pci(c)) +#define writew(v, c) __raw_writew(cpu_to_le16(v), __mem_pci(c)) +#define writel(v, c) __raw_writel(cpu_to_le32(v), __mem_pci(c)) -#define memset_io(c,v,l) _memset_io(__mem_pci(c),(v),(l)) -#define memcpy_fromio(a,c,l) _memcpy_fromio((a),__mem_pci(c),(l)) -#define memcpy_toio(c,a,l) _memcpy_toio(__mem_pci(c),(a),(l)) +#define memset_io(c, v, l) _memset_io(__mem_pci(c), (v), (l)) +#define memcpy_fromio(a, c, l) _memcpy_fromio((a), __mem_pci(c), (l)) +#define memcpy_toio(c, a, l) _memcpy_toio(__mem_pci(c), (a), (l)) -#define eth_io_copy_and_sum(s,c,l,b) \ - eth_copy_and_sum((s),__mem_pci(c),(l),(b)) +#define eth_io_copy_and_sum(s, c, l, b) \ + eth_copy_and_sum((s), __mem_pci(c), (l), (b)) static inline int check_signature(unsigned long io_addr, const unsigned char *signature, @@ -216,11 +225,11 @@ out: #define readb(addr) __raw_readb(addr) #define readw(addr) __raw_readw(addr) #define readl(addr) __raw_readl(addr) -#define writeb(v,addr) __raw_writeb(v, addr) -#define writew(v,addr) __raw_writew(v, addr) -#define writel(v,addr) __raw_writel(v, addr) +#define writeb(v, addr) __raw_writeb(v, addr) +#define writew(v, addr) __raw_writew(v, addr) +#define writel(v, addr) __raw_writel(v, addr) -#define check_signature(io,sig,len) (0) +#define check_signature(io, sig, len) (0) #endif /* __mem_pci */ diff --git a/include/asm-sh/pci.h b/include/asm-sh/pci.h index bc59491c8a2..040c532132c 100644 --- a/include/asm-sh/pci.h +++ b/include/asm-sh/pci.h @@ -36,6 +36,7 @@ int pci_sh7780_init(struct pci_controller *hose); #error "Not support PCI." #endif +int pci_sh4_init(struct pci_controller *hose); /* PCI dword read for sh4 */ int pci_sh4_read_config_dword(struct pci_controller *hose, pci_dev_t dev, int offset, u32 *value); -- cgit v1.2.3