nsc_gpio.h 1.4 KB

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