2015-08-19 20:19 GMT+02:00 Govindraj Raja <govindraj.r...@imgtec.com>: > From: Govindraj Raja <govindraj.r...@imgtec.com> > > usb stack utilizes the clr/set_bits macros > also usb stack needs phy_to_bus/bus_to_phys functions. > Thus adding these macro and functions for mips platform. > > This makes usb stack usable with mips platform. > Also fixes a checkpatch warning with virt_to_phys > forward declaration. > > Signed-off-by: Govindraj Raja <govindraj.r...@imgtec.com> > --- > arch/mips/include/asm/io.h | 71 > +++++++++++++++++++++++++++++++++++++++++++++- > 1 file changed, 70 insertions(+), 1 deletion(-) > > diff --git a/arch/mips/include/asm/io.h b/arch/mips/include/asm/io.h > index a7ab087..8dc521c 100644 > --- a/arch/mips/include/asm/io.h > +++ b/arch/mips/include/asm/io.h > @@ -117,7 +117,7 @@ static inline void set_io_port_base(unsigned long base) > * Change virtual addresses to physical addresses and vv. > * These are trivial on the 1:1 Linux/MIPS mapping > */ > -static inline phys_addr_t virt_to_phys(volatile void * address) > +static inline phys_addr_t virt_to_phys(volatile void *address)
please do not make cosmetic fixes and code changes in the same commit. Because this file is imported from Linux kernel, you could ignore this style error until we do a resync with the current kernel sources. > { > #ifndef CONFIG_64BIT > return CPHYSADDR(address); > @@ -504,4 +504,73 @@ static inline void unmap_physmem(void *vaddr, unsigned > long flags) > > } > > +#define out_arch(type, endian, a, v) __raw_write##type(cpu_to_##endian(v), > a) > +#define in_arch(type, endian, a) endian##_to_cpu(__raw_read##type(a)) > + > +#define out_le32(a, v) out_arch(l, le32, a, v) > +#define out_le16(a, v) out_arch(w, le16, a, v) > + > +#define in_le32(a) in_arch(l, le32, a) > +#define in_le16(a) in_arch(w, le16, a) > + > +#define out_be32(a, v) out_arch(l, be32, a, v) > +#define out_be16(a, v) out_arch(w, be16, a, v) > + > +#define in_be32(a) in_arch(l, be32, a) > +#define in_be16(a) in_arch(w, be16, a) > + > +#define out_8(a, v) __raw_writeb(v, a) > +#define in_8(a) __raw_readb(a) > + > +/* > + * 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) > + > +#ifdef CONFIG_PHYS_TO_BUS > + > +extern inline unsigned long phys_to_bus(unsigned long phys) > +{ > + return (unsigned long)virt_to_phys((void *)phys); > +} > + > +extern inline unsigned long bus_to_phys(unsigned long bus) > +{ > + return (unsigned long)phys_to_virt(bus); > +} > + > +#endif could you move those two functions to arch/mips/lib/io.c and mark it with __weak? Funtions declared with "extern inline" seems to have issues with gcc-5.x. Also marking them with __weak would one allow to create SoC specific implementations if needed. > + > + > #endif /* _ASM_IO_H */ > -- > 1.9.1 > -- - Daniel _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot