gpio.c 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. /*
  2. * Coldfire generic GPIO support
  3. *
  4. * (C) Copyright 2009, Steven King <sfking@fdwdc.com>
  5. *
  6. * This program is free software; you can redistribute it and/or modify
  7. * it under the terms of the GNU General Public License as published by
  8. * the Free Software Foundation; version 2 of the License.
  9. *
  10. * This program is distributed in the hope that it will be useful,
  11. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13. * GNU General Public License for more details.
  14. */
  15. #include <linux/kernel.h>
  16. #include <linux/init.h>
  17. #include <asm/coldfire.h>
  18. #include <asm/mcfsim.h>
  19. #include <asm/mcfgpio.h>
  20. static struct mcf_gpio_chip mcf_gpio_chips[] = {
  21. {
  22. .gpio_chip = {
  23. .label = "PP",
  24. .request = mcf_gpio_request,
  25. .free = mcf_gpio_free,
  26. .direction_input = mcf_gpio_direction_input,
  27. .direction_output = mcf_gpio_direction_output,
  28. .get = mcf_gpio_get_value,
  29. .set = mcf_gpio_set_value,
  30. .ngpio = 8,
  31. },
  32. .pddr = (void __iomem *) MCFSIM_PADDR,
  33. .podr = (void __iomem *) MCFSIM_PADAT,
  34. .ppdr = (void __iomem *) MCFSIM_PADAT,
  35. },
  36. };
  37. static int __init mcf_gpio_init(void)
  38. {
  39. unsigned i = 0;
  40. while (i < ARRAY_SIZE(mcf_gpio_chips))
  41. (void)gpiochip_add((struct gpio_chip *)&mcf_gpio_chips[i++]);
  42. return 0;
  43. }
  44. core_initcall(mcf_gpio_init);