sh: lockless gpio_set_value()
authorMagnus Damm <damm@igel.co.jp>
Thu, 25 Dec 2008 09:17:26 +0000 (18:17 +0900)
committerPaul Mundt <lethal@linux-sh.org>
Tue, 27 Jan 2009 05:49:10 +0000 (14:49 +0900)
commit3292094e88ce6b76714dad8ec4b43d7c5c12ada2
tree0469a3523b1794a9ecb9f5df99ce3d726d442b2a
parent0fc64cc0a27288e77ee8e12648d59632649371fc
sh: lockless gpio_set_value()

This patch optimizes the gpio data register handling for gpio_set_value().

Instead of using the good old spinlock-plus-read-modify-write strategy
we now use a shadow register and atomic operations.

This improves the bitbanging mmc performance on Migo-R from 26 Kbytes/s
to 40 Kbytes/s.

Signed-off-by: Magnus Damm <damm@igel.co.jp>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
arch/sh/include/asm/gpio.h
arch/sh/kernel/gpio.c