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); | |
28 | void (*gpio_set_high)(unsigned iminor); | |
29 | void (*gpio_set_low) (unsigned iminor); | |
30 | void (*gpio_change) (unsigned iminor); | |
31 | int (*gpio_current) (unsigned iminor); | |
f31000e5 | 32 | struct device* dev; /* for dev_dbg() support, set in init */ |
fe3a168a JC |
33 | }; |
34 | ||
1a66fdf0 JC |
35 | extern ssize_t nsc_gpio_write(struct file *file, const char __user *data, |
36 | size_t len, loff_t *ppos); | |
37 | ||
38 | extern ssize_t nsc_gpio_read(struct file *file, char __user *buf, | |
39 | size_t len, loff_t *ppos); | |
f31000e5 JC |
40 | |
41 | extern void nsc_gpio_dump(struct nsc_gpio_ops *amp, unsigned index); | |
42 |