|
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); |
|
25 void (*gpio_dump) (struct nsc_gpio_ops *amp, unsigned iminor); |
|
26 int (*gpio_get) (unsigned iminor); |
|
27 void (*gpio_set) (unsigned iminor, int state); |
|
28 void (*gpio_change) (unsigned iminor); |
|
29 int (*gpio_current) (unsigned iminor); |
|
30 struct device* dev; /* for dev_dbg() support, set in init */ |
|
31 }; |
|
32 |
|
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); |
|
38 |
|
39 extern void nsc_gpio_dump(struct nsc_gpio_ops *amp, unsigned index); |
|
40 |