Skip to content

Commit

Permalink
GPIO: xilinx: Use __raw_readl/__raw_writel IO functions
Browse files Browse the repository at this point in the history
This driver can be used on Xilinx ARM Zynq platform
where in_be32/out_be32 functions are not implemented.
Use __raw_readl/__raw_writel functions which are
implemented on Microblaze and PowerPC.
For ARM readl/writel functions are used instead.

The correct way how to implement this is to detect
endians directly on IP. But for the gpio case
without interrupt connected(it means without
interrupt logic) there are just 2 registers
data and tristate where auto detection can't be done.

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
  • Loading branch information
Michal Simek authored and Linus Walleij committed Jun 17, 2013
1 parent 74600ee commit cc090d6
Showing 1 changed file with 7 additions and 2 deletions.
9 changes: 7 additions & 2 deletions drivers/gpio/gpio-xilinx.c
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,13 @@
#define XGPIO_CHANNEL_OFFSET 0x8

/* Read/Write access to the GPIO registers */
#define xgpio_readreg(offset) in_be32(offset)
#define xgpio_writereg(offset, val) out_be32(offset, val)
#ifdef CONFIG_ARCH_ZYNQ
# define xgpio_readreg(offset) readl(offset)
# define xgpio_writereg(offset, val) writel(val, offset)
#else
# define xgpio_readreg(offset) __raw_readl(offset)
# define xgpio_writereg(offset, val) __raw_writel(val, offset)
#endif

/**
* struct xgpio_instance - Stores information about GPIO device
Expand Down

0 comments on commit cc090d6

Please sign in to comment.