Commit | Line | Data |
---|---|---|
fe3a168a JC |
1 | /** |
2 | nsc_gpio.c | |
3 | ||
4 | National Semiconductor GPIO common access methods. | |
5 | ||
6 | struct nsc_gpio_ops abstracts the low-level access | |
7 | operations for the GPIO units on 2 NSC chip families; the GEODE | |
8 | integrated CPU, and the PC-8736[03456] integrated PC-peripheral | |
9 | chips. | |
10 | ||
11 | The GPIO units on these chips have the same pin architecture, but | |
12 | the access methods differ. Thus, scx200_gpio and pc8736x_gpio | |
13 | implement their own versions of these routines; and use the common | |
14 | file-operations routines implemented in nsc_gpio module. | |
15 | ||
16 | Copyright (c) 2005 Jim Cromie <jim.cromie@gmail.com> | |
17 | ||
18 | NB: this work was tested on the Geode SC-1100 and PC-87366 chips. | |
19 | NSC sold the GEODE line to AMD, and the PC-8736x line to Winbond. | |
20 | */ | |
21 | ||
22 | struct nsc_gpio_ops { | |
23 | struct module* owner; | |
24 | u32 (*gpio_config) (unsigned iminor, u32 mask, u32 bits); | |
f31000e5 | 25 | void (*gpio_dump) (struct nsc_gpio_ops *amp, unsigned iminor); |
fe3a168a JC |
26 | int (*gpio_get) (unsigned iminor); |
27 | void (*gpio_set) (unsigned iminor, int state); | |
fe3a168a JC |
28 | void (*gpio_change) (unsigned iminor); |
29 | int (*gpio_current) (unsigned iminor); | |
f31000e5 | 30 | struct device* dev; /* for dev_dbg() support, set in init */ |
fe3a168a JC |
31 | }; |
32 | ||
1a66fdf0 JC |
33 | extern ssize_t nsc_gpio_write(struct file *file, const char __user *data, |
34 | size_t len, loff_t *ppos); | |
35 | ||
36 | extern ssize_t nsc_gpio_read(struct file *file, char __user *buf, | |
37 | size_t len, loff_t *ppos); | |
f31000e5 JC |
38 | |
39 | extern void nsc_gpio_dump(struct nsc_gpio_ops *amp, unsigned index); | |
40 |