500-ssb-add-function-to-return-number-of-gpio-lines.patch 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. --- a/drivers/ssb/embedded.c
  2. +++ b/drivers/ssb/embedded.c
  3. @@ -171,6 +171,18 @@ u32 ssb_gpio_polarity(struct ssb_bus *bu
  4. }
  5. EXPORT_SYMBOL(ssb_gpio_polarity);
  6. +int ssb_gpio_count(struct ssb_bus *bus)
  7. +{
  8. + if (ssb_chipco_available(&bus->chipco))
  9. + return SSB_GPIO_CHIPCO_LINES;
  10. + else if (ssb_extif_available(&bus->extif))
  11. + return SSB_GPIO_EXTIF_LINES;
  12. + else
  13. + SSB_WARN_ON(1);
  14. + return 0;
  15. +}
  16. +EXPORT_SYMBOL(ssb_gpio_count);
  17. +
  18. #ifdef CONFIG_SSB_DRIVER_GIGE
  19. static int gige_pci_init_callback(struct ssb_bus *bus, unsigned long data)
  20. {
  21. --- a/include/linux/ssb/ssb_embedded.h
  22. +++ b/include/linux/ssb/ssb_embedded.h
  23. @@ -7,6 +7,9 @@
  24. extern int ssb_watchdog_timer_set(struct ssb_bus *bus, u32 ticks);
  25. +#define SSB_GPIO_EXTIF_LINES 5
  26. +#define SSB_GPIO_CHIPCO_LINES 16
  27. +
  28. /* Generic GPIO API */
  29. u32 ssb_gpio_in(struct ssb_bus *bus, u32 mask);
  30. u32 ssb_gpio_out(struct ssb_bus *bus, u32 mask, u32 value);
  31. @@ -14,5 +17,6 @@ u32 ssb_gpio_outen(struct ssb_bus *bus,
  32. u32 ssb_gpio_control(struct ssb_bus *bus, u32 mask, u32 value);
  33. u32 ssb_gpio_intmask(struct ssb_bus *bus, u32 mask, u32 value);
  34. u32 ssb_gpio_polarity(struct ssb_bus *bus, u32 mask, u32 value);
  35. +int ssb_gpio_count(struct ssb_bus *bus);
  36. #endif /* LINUX_SSB_EMBEDDED_H_ */