blob: e834763ac2a521bd02ff6a7704d30576657cd10c [file] [log] [blame]
Magnus Damm7fdda672010-02-10 20:10:55 +09001/*
2 * Generic GPIO API and pinmux table support
3 *
4 * Copyright (c) 2008 Magnus Damm
5 *
6 * This file is subject to the terms and conditions of the GNU General Public
7 * License. See the file "COPYING" in the main directory of this archive
8 * for more details.
9 */
10#ifndef __ASM_ARCH_GPIO_H
11#define __ASM_ARCH_GPIO_H
12
13#include <linux/kernel.h>
14#include <linux/errno.h>
Kuninori Morimoto4f3d7f62012-06-25 03:41:09 -070015#include <linux/io.h>
Magnus Damm7fdda672010-02-10 20:10:55 +090016
Kuninori Morimoto4f3d7f62012-06-25 03:41:09 -070017/*
18 * FIXME !!
19 *
20 * current gpio frame work doesn't have
21 * the method to control only pull up/down/free.
22 * this function should be replaced by correct gpio function
23 */
Arnd Bergmann0a4b04d2012-09-14 20:08:08 +000024static inline void __init gpio_direction_none(void __iomem * addr)
Kuninori Morimoto4f3d7f62012-06-25 03:41:09 -070025{
26 __raw_writeb(0x00, addr);
27}
28
Arnd Bergmann0a4b04d2012-09-14 20:08:08 +000029static inline void __init gpio_request_pullup(void __iomem * addr)
Kuninori Morimoto4f3d7f62012-06-25 03:41:09 -070030{
31 u8 data = __raw_readb(addr);
32
33 data &= 0x0F;
34 data |= 0xC0;
35 __raw_writeb(data, addr);
36}
37
Arnd Bergmann0a4b04d2012-09-14 20:08:08 +000038static inline void __init gpio_request_pulldown(void __iomem * addr)
Kuninori Morimoto4f3d7f62012-06-25 03:41:09 -070039{
40 u8 data = __raw_readb(addr);
41
42 data &= 0x0F;
43 data |= 0xA0;
44
45 __raw_writeb(data, addr);
46}
47
Magnus Damm7fdda672010-02-10 20:10:55 +090048#endif /* __ASM_ARCH_GPIO_H */