Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 116168
b: refs/heads/master
c: 2967dab
h: refs/heads/master
v: v3
  • Loading branch information
Magnus Damm authored and Paul Mundt committed Oct 20, 2008
1 parent 8dcc924 commit 126137a
Show file tree
Hide file tree
Showing 10 changed files with 594 additions and 18 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 25627c7fd71269e2658b6872eef65719ee80b9aa
refs/heads/master: 2967dab1ae37e30f1b71316513b49fd25c42eabe
3 changes: 3 additions & 0 deletions trunk/arch/sh/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,9 @@ config GENERIC_HARDIRQS_NO__DO_IRQ
config GENERIC_IRQ_PROBE
def_bool y

config GENERIC_GPIO
def_bool n

config GENERIC_CALIBRATE_DELAY
bool

Expand Down
3 changes: 0 additions & 3 deletions trunk/arch/sh/boards/board-ap325rxa.c
Original file line number Diff line number Diff line change
Expand Up @@ -294,9 +294,6 @@ static struct platform_device *ap325rxa_devices[] __initdata = {
};

static struct i2c_board_info __initdata ap325rxa_i2c_devices[] = {
{
I2C_BOARD_INFO("pcf8563", 0x51),
},
};

static int __init ap325rxa_devices_setup(void)
Expand Down
92 changes: 90 additions & 2 deletions trunk/arch/sh/include/asm/gpio.h
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
/*
* include/asm-sh/gpio.h
*
* Copyright (C) 2007 Markus Brunner, Mark Jonas
* Generic GPIO API and pinmux table support for SuperH.
*
* Addresses for the Pin Function Controller
* Copyright (c) 2008 Magnus Damm
*
* This file is subject to the terms and conditions of the GNU General Public
* License. See the file "COPYING" in the main directory of this archive
Expand All @@ -16,4 +16,92 @@
#include <cpu/gpio.h>
#endif

typedef unsigned short pinmux_enum_t;
typedef unsigned char pinmux_flag_t;

#define PINMUX_TYPE_NONE 0
#define PINMUX_TYPE_FUNCTION 1
#define PINMUX_TYPE_GPIO 2
#define PINMUX_TYPE_OUTPUT 3
#define PINMUX_TYPE_INPUT 4
#define PINMUX_TYPE_INPUT_PULLUP 5
#define PINMUX_TYPE_INPUT_PULLDOWN 6

#define PINMUX_FLAG_TYPE (0x7)
#define PINMUX_FLAG_WANT_PULLUP (1 << 3)
#define PINMUX_FLAG_WANT_PULLDOWN (1 << 4)

struct pinmux_gpio {
pinmux_enum_t enum_id;
pinmux_flag_t flags;
};

#define PINMUX_GPIO(gpio, data_or_mark) [gpio] = { data_or_mark }
#define PINMUX_DATA(data_or_mark, ids...) data_or_mark, ids, 0

struct pinmux_cfg_reg {
unsigned long reg, reg_width, field_width;
unsigned long *cnt;
pinmux_enum_t *enum_ids;
};

#define PINMUX_CFG_REG(name, r, r_width, f_width) \
.reg = r, .reg_width = r_width, .field_width = f_width, \
.cnt = (unsigned long [r_width / f_width]) {}, \
.enum_ids = (pinmux_enum_t [(r_width / f_width) * (1 << f_width)]) \

struct pinmux_data_reg {
unsigned long reg, reg_width;
pinmux_enum_t *enum_ids;
};

#define PINMUX_DATA_REG(name, r, r_width) \
.reg = r, .reg_width = r_width, \
.enum_ids = (pinmux_enum_t [r_width]) \

struct pinmux_range {
pinmux_enum_t begin;
pinmux_enum_t end;
};

struct pinmux_info {
char *name;
pinmux_enum_t reserved_id;
struct pinmux_range data;
struct pinmux_range input;
struct pinmux_range input_pd;
struct pinmux_range input_pu;
struct pinmux_range output;
struct pinmux_range mark;
struct pinmux_range function;

unsigned first_gpio, last_gpio;

struct pinmux_gpio *gpios;
struct pinmux_cfg_reg *cfg_regs;
struct pinmux_data_reg *data_regs;

pinmux_enum_t *gpio_data;
unsigned int gpio_data_size;

unsigned long *gpio_in_use;
};

int register_pinmux(struct pinmux_info *pip);

int __gpio_request(unsigned gpio);
static inline int gpio_request(unsigned gpio, const char *label)
{
return __gpio_request(gpio);
}
void gpio_free(unsigned gpio);
int gpio_direction_input(unsigned gpio);
int gpio_direction_output(unsigned gpio, int value);
int gpio_get_value(unsigned gpio);
void gpio_set_value(unsigned gpio, int value);
static inline int gpio_export(unsigned gpio, bool direction_may_change)
{
return 0;
}

#endif /* __ASM_SH_GPIO_H */
2 changes: 1 addition & 1 deletion trunk/arch/sh/kernel/Makefile_32
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
extra-y := head_32.o init_task.o vmlinux.lds

obj-y := debugtraps.o io.o io_generic.o irq.o machvec.o process_32.o \
ptrace_32.o setup.o signal_32.o sys_sh.o sys_sh32.o \
ptrace_32.o setup.o signal_32.o sys_sh.o sys_sh32.o gpio.o \
syscalls_32.o time_32.o topology.o traps.o traps_32.o

obj-y += cpu/ timers/
Expand Down
2 changes: 1 addition & 1 deletion trunk/arch/sh/kernel/Makefile_64
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
extra-y := head_64.o init_task.o vmlinux.lds

obj-y := debugtraps.o io.o io_generic.o irq.o machvec.o process_64.o \
ptrace_64.o setup.o signal_64.o sys_sh.o sys_sh64.o \
ptrace_64.o setup.o signal_64.o sys_sh.o sys_sh64.o gpio.o \
syscalls_64.o time_64.o topology.o traps.o traps_64.o

obj-y += cpu/ timers/
Expand Down
Loading

0 comments on commit 126137a

Please sign in to comment.