diff options
author | Victor Kamensky <victor.kamensky@linaro.org> | 2014-04-15 13:37:49 -0400 |
---|---|---|
committer | Tony Lindgren <tony@atomide.com> | 2014-05-08 10:09:55 -0400 |
commit | be2d62844819b3536233b7fc726b8f17d9fa7f05 (patch) | |
tree | cd08893e9fa6ef6c5cbf9432be46f1b92368b2fe /arch/arm/plat-omap | |
parent | f6f3b50f996b938b034b14b5084108b2acfcae7d (diff) |
ARM: OMAP: debug-leds: raw read and write endian fix
All OMAP IP blocks expect LE data, but CPU may operate in BE mode.
Need to use endian neutral functions to read/write h/w registers.
I.e instead of __raw_read[lw] and __raw_write[lw] functions code
need to use read[lw]_relaxed and write[lw]_relaxed functions.
If the first simply reads/writes register, the second will byteswap
it if host operates in BE mode.
Changes are trivial sed like replacement of __raw_xxx functions
with xxx_relaxed variant.
Signed-off-by: Victor Kamensky <victor.kamensky@linaro.org>
Signed-off-by: Taras Kondratiuk <taras.kondratiuk@linaro.org>
Signed-off-by: Tony Lindgren <tony@atomide.com>
Diffstat (limited to 'arch/arm/plat-omap')
-rw-r--r-- | arch/arm/plat-omap/debug-leds.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/arch/arm/plat-omap/debug-leds.c b/arch/arm/plat-omap/debug-leds.c index aa7ebc6bcd65..48b69de89a5d 100644 --- a/arch/arm/plat-omap/debug-leds.c +++ b/arch/arm/plat-omap/debug-leds.c | |||
@@ -85,12 +85,12 @@ static void dbg_led_set(struct led_classdev *cdev, | |||
85 | struct dbg_led *led = container_of(cdev, struct dbg_led, cdev); | 85 | struct dbg_led *led = container_of(cdev, struct dbg_led, cdev); |
86 | u16 reg; | 86 | u16 reg; |
87 | 87 | ||
88 | reg = __raw_readw(&fpga->leds); | 88 | reg = readw_relaxed(&fpga->leds); |
89 | if (b != LED_OFF) | 89 | if (b != LED_OFF) |
90 | reg |= led->mask; | 90 | reg |= led->mask; |
91 | else | 91 | else |
92 | reg &= ~led->mask; | 92 | reg &= ~led->mask; |
93 | __raw_writew(reg, &fpga->leds); | 93 | writew_relaxed(reg, &fpga->leds); |
94 | } | 94 | } |
95 | 95 | ||
96 | static enum led_brightness dbg_led_get(struct led_classdev *cdev) | 96 | static enum led_brightness dbg_led_get(struct led_classdev *cdev) |
@@ -98,7 +98,7 @@ static enum led_brightness dbg_led_get(struct led_classdev *cdev) | |||
98 | struct dbg_led *led = container_of(cdev, struct dbg_led, cdev); | 98 | struct dbg_led *led = container_of(cdev, struct dbg_led, cdev); |
99 | u16 reg; | 99 | u16 reg; |
100 | 100 | ||
101 | reg = __raw_readw(&fpga->leds); | 101 | reg = readw_relaxed(&fpga->leds); |
102 | return (reg & led->mask) ? LED_FULL : LED_OFF; | 102 | return (reg & led->mask) ? LED_FULL : LED_OFF; |
103 | } | 103 | } |
104 | 104 | ||
@@ -112,7 +112,7 @@ static int fpga_probe(struct platform_device *pdev) | |||
112 | return -ENODEV; | 112 | return -ENODEV; |
113 | 113 | ||
114 | fpga = ioremap(iomem->start, resource_size(iomem)); | 114 | fpga = ioremap(iomem->start, resource_size(iomem)); |
115 | __raw_writew(0xff, &fpga->leds); | 115 | writew_relaxed(0xff, &fpga->leds); |
116 | 116 | ||
117 | for (i = 0; i < ARRAY_SIZE(dbg_leds); i++) { | 117 | for (i = 0; i < ARRAY_SIZE(dbg_leds); i++) { |
118 | struct dbg_led *led; | 118 | struct dbg_led *led; |
@@ -138,15 +138,15 @@ static int fpga_probe(struct platform_device *pdev) | |||
138 | 138 | ||
139 | static int fpga_suspend_noirq(struct device *dev) | 139 | static int fpga_suspend_noirq(struct device *dev) |
140 | { | 140 | { |
141 | fpga_led_state = __raw_readw(&fpga->leds); | 141 | fpga_led_state = readw_relaxed(&fpga->leds); |
142 | __raw_writew(0xff, &fpga->leds); | 142 | writew_relaxed(0xff, &fpga->leds); |
143 | 143 | ||
144 | return 0; | 144 | return 0; |
145 | } | 145 | } |
146 | 146 | ||
147 | static int fpga_resume_noirq(struct device *dev) | 147 | static int fpga_resume_noirq(struct device *dev) |
148 | { | 148 | { |
149 | __raw_writew(~fpga_led_state, &fpga->leds); | 149 | writew_relaxed(~fpga_led_state, &fpga->leds); |
150 | return 0; | 150 | return 0; |
151 | } | 151 | } |
152 | 152 | ||