@ -147,13 +147,13 @@ extern void __iounmap(void *addr);
*/
# ifdef iomem_valid_addr
# 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 ; \
} )
} )
# define __arch_iounmap __iounmap
# endif
@ -238,6 +238,43 @@ static inline void sync(void)
}
/*
* Clear and set bits in one shot . These macros can be used to clear and
* set multiple bits in a register using a single call . These macros can
* also be used to set a multiple - bit bit pattern using a mask , by
* specifying the mask in the ' clear ' parameter and the new bit pattern
* in the ' set ' parameter .
*/
# define clrbits(type, addr, clear) \
out_ # # type ( ( addr ) , in_ # # type ( addr ) & ~ ( clear ) )
# define setbits(type, addr, set) \
out_ # # type ( ( addr ) , in_ # # type ( addr ) | ( set ) )
# define clrsetbits(type, addr, clear, set) \
out_ # # type ( ( addr ) , ( in_ # # type ( addr ) & ~ ( clear ) ) | ( set ) )
# define clrbits_be32(addr, clear) clrbits(be32, addr, clear)
# define setbits_be32(addr, set) setbits(be32, addr, set)
# define clrsetbits_be32(addr, clear, set) clrsetbits(be32, addr, clear, set)
# define clrbits_le32(addr, clear) clrbits(le32, addr, clear)
# define setbits_le32(addr, set) setbits(le32, addr, set)
# define clrsetbits_le32(addr, clear, set) clrsetbits(le32, addr, clear, set)
# define clrbits_be16(addr, clear) clrbits(be16, addr, clear)
# define setbits_be16(addr, set) setbits(be16, addr, set)
# define clrsetbits_be16(addr, clear, set) clrsetbits(be16, addr, clear, set)
# define clrbits_le16(addr, clear) clrbits(le16, addr, clear)
# define setbits_le16(addr, set) setbits(le16, addr, set)
# define clrsetbits_le16(addr, clear, set) clrsetbits(le16, addr, clear, set)
# define clrbits_8(addr, clear) clrbits(8, addr, clear)
# define setbits_8(addr, set) setbits(8, addr, set)
# define clrsetbits_8(addr, clear, set) clrsetbits(8, addr, clear, set)
/*
* Given a physical address and a length , return a virtual address
* that can be used to access the memory range with the caching
* properties specified by " flags " .
@ -261,7 +298,7 @@ static inline void unmap_physmem(void *vaddr, unsigned long flags)
}
static inline phys_addr_t virt_to_phys ( void * vaddr )
static inline phys_addr_t virt_to_phys ( void * vaddr )
{
return ( phys_addr_t ) ( vaddr ) ;
}