diff options
author | Imre Kaloz <kaloz@openwrt.org> | 2015-04-12 20:48:13 +0000 |
---|---|---|
committer | Imre Kaloz <kaloz@openwrt.org> | 2015-04-12 20:48:13 +0000 |
commit | 09722d0bdcce6a021ec20bdefc158878ce49b8dc (patch) | |
tree | 6105c778c0aae2c0ddbafe2da57df7b93026b124 /target/linux/ppc40x/patches-3.18/121-usb-isp116x-hcd-ppc405-register-access.patch | |
parent | e55532b7af58979b92027d4194fe9e102c381ec7 (diff) | |
download | upstream-09722d0bdcce6a021ec20bdefc158878ce49b8dc.tar.gz upstream-09722d0bdcce6a021ec20bdefc158878ce49b8dc.tar.bz2 upstream-09722d0bdcce6a021ec20bdefc158878ce49b8dc.zip |
ppc40x: upgrade to 3.18
left "broken" as I'm not sure if my only board is to blame.. testers welcomed
Signed-off-by: Imre Kaloz <kaloz@openwrt.org>
SVN-Revision: 45406
Diffstat (limited to 'target/linux/ppc40x/patches-3.18/121-usb-isp116x-hcd-ppc405-register-access.patch')
-rw-r--r-- | target/linux/ppc40x/patches-3.18/121-usb-isp116x-hcd-ppc405-register-access.patch | 110 |
1 files changed, 110 insertions, 0 deletions
diff --git a/target/linux/ppc40x/patches-3.18/121-usb-isp116x-hcd-ppc405-register-access.patch b/target/linux/ppc40x/patches-3.18/121-usb-isp116x-hcd-ppc405-register-access.patch new file mode 100644 index 0000000000..4fb47181bc --- /dev/null +++ b/target/linux/ppc40x/patches-3.18/121-usb-isp116x-hcd-ppc405-register-access.patch @@ -0,0 +1,110 @@ +--- a/drivers/usb/host/isp116x.h ++++ b/drivers/usb/host/isp116x.h +@@ -354,21 +354,63 @@ struct isp116x_ep { + #define isp116x_check_platform_delay(h) 0 + #endif + ++#ifdef CONFIG_PPC ++static inline void isp116x_writew(u16 val, void __iomem *addr) ++{ ++ writew(cpu_to_le16(val), addr); ++} ++ ++static inline u16 isp116x_readw(void __iomem *addr) ++{ ++ return le16_to_cpu(readw(addr)); ++} ++ ++static inline void isp116x_raw_writew(u16 val, void __iomem *addr) ++{ ++ writew(cpu_to_le16(val), addr); ++} ++ ++static inline u16 isp116x_raw_readw(void __iomem *addr) ++{ ++ return le16_to_cpu(readw(addr)); ++} ++#else ++static inline void isp116x_writew(u16 val, void __iomem *addr) ++{ ++ writew(val, addr); ++} ++ ++static inline u16 isp116x_readw(void __iomem *addr) ++{ ++ return readw(addr); ++} ++ ++static inline void isp116x_raw_writew(u16 val, void __iomem *addr) ++{ ++ __raw_writew(val, addr); ++} ++ ++static inline u16 isp116x_raw_readw(void __iomem *addr) ++{ ++ return __raw_readw(addr); ++} ++#endif ++ + static inline void isp116x_write_addr(struct isp116x *isp116x, unsigned reg) + { +- writew(reg & 0xff, isp116x->addr_reg); ++ isp116x_writew(reg & 0xff, isp116x->addr_reg); + isp116x_delay(isp116x, 300); + } + + static inline void isp116x_write_data16(struct isp116x *isp116x, u16 val) + { +- writew(val, isp116x->data_reg); ++ isp116x_writew(val, isp116x->data_reg); + isp116x_delay(isp116x, 150); + } + + static inline void isp116x_raw_write_data16(struct isp116x *isp116x, u16 val) + { +- __raw_writew(val, isp116x->data_reg); ++ isp116x_raw_writew(val, isp116x->data_reg); + isp116x_delay(isp116x, 150); + } + +@@ -376,7 +418,7 @@ static inline u16 isp116x_read_data16(st + { + u16 val; + +- val = readw(isp116x->data_reg); ++ val = isp116x_readw(isp116x->data_reg); + isp116x_delay(isp116x, 150); + return val; + } +@@ -385,16 +427,16 @@ static inline u16 isp116x_raw_read_data1 + { + u16 val; + +- val = __raw_readw(isp116x->data_reg); ++ val = isp116x_raw_readw(isp116x->data_reg); + isp116x_delay(isp116x, 150); + return val; + } + + static inline void isp116x_write_data32(struct isp116x *isp116x, u32 val) + { +- writew(val & 0xffff, isp116x->data_reg); ++ isp116x_writew(val & 0xffff, isp116x->data_reg); + isp116x_delay(isp116x, 150); +- writew(val >> 16, isp116x->data_reg); ++ isp116x_writew(val >> 16, isp116x->data_reg); + isp116x_delay(isp116x, 150); + } + +@@ -402,9 +444,9 @@ static inline u32 isp116x_read_data32(st + { + u32 val; + +- val = (u32) readw(isp116x->data_reg); ++ val = (u32) isp116x_readw(isp116x->data_reg); + isp116x_delay(isp116x, 150); +- val |= ((u32) readw(isp116x->data_reg)) << 16; ++ val |= ((u32) isp116x_readw(isp116x->data_reg)) << 16; + isp116x_delay(isp116x, 150); + return val; + } |