sx150x.h 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. /*
  2. * Driver for the Semtech SX150x I2C GPIO Expanders
  3. *
  4. * Copyright (c) 2010, The Linux Foundation. All rights reserved.
  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 version 2 and
  8. * only version 2 as published by the Free Software Foundation.
  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. #ifndef __LINUX_I2C_SX150X_H
  16. #define __LINUX_I2C_SX150X_H
  17. /**
  18. * struct sx150x_platform_data - config data for SX150x driver
  19. * @gpio_base: The index number of the first GPIO assigned to this
  20. * GPIO expander. The expander will create a block of
  21. * consecutively numbered gpios beginning at the given base,
  22. * with the size of the block depending on the model of the
  23. * expander chip.
  24. * @oscio_is_gpo: If set to true, the driver will configure OSCIO as a GPO
  25. * instead of as an oscillator, increasing the size of the
  26. * GP(I)O pool created by this expander by one. The
  27. * output-only GPO pin will be added at the end of the block.
  28. * @io_pullup_ena: A bit-mask which enables or disables the pull-up resistor
  29. * for each IO line in the expander. Setting the bit at
  30. * position n will enable the pull-up for the IO at
  31. * the corresponding offset. For chips with fewer than
  32. * 16 IO pins, high-end bits are ignored.
  33. * @io_pulldn_ena: A bit-mask which enables-or disables the pull-down
  34. * resistor for each IO line in the expander. Setting the
  35. * bit at position n will enable the pull-down for the IO at
  36. * the corresponding offset. For chips with fewer than
  37. * 16 IO pins, high-end bits are ignored.
  38. * @io_open_drain_ena: A bit-mask which enables-or disables open-drain
  39. * operation for each IO line in the expander. Setting the
  40. * bit at position n enables open-drain operation for
  41. * the IO at the corresponding offset. Clearing the bit
  42. * enables regular push-pull operation for that IO.
  43. * For chips with fewer than 16 IO pins, high-end bits
  44. * are ignored.
  45. * @io_polarity: A bit-mask which enables polarity inversion for each IO line
  46. * in the expander. Setting the bit at position n inverts
  47. * the polarity of that IO line, while clearing it results
  48. * in normal polarity. For chips with fewer than 16 IO pins,
  49. * high-end bits are ignored.
  50. * @irq_summary: The 'summary IRQ' line to which the GPIO expander's INT line
  51. * is connected, via which it reports interrupt events
  52. * across all GPIO lines. This must be a real,
  53. * pre-existing IRQ line.
  54. * Setting this value < 0 disables the irq_chip functionality
  55. * of the driver.
  56. * @irq_base: The first 'virtual IRQ' line at which our block of GPIO-based
  57. * IRQ lines will appear. Similarly to gpio_base, the expander
  58. * will create a block of irqs beginning at this number.
  59. * This value is ignored if irq_summary is < 0.
  60. * @reset_during_probe: If set to true, the driver will trigger a full
  61. * reset of the chip at the beginning of the probe
  62. * in order to place it in a known state.
  63. */
  64. struct sx150x_platform_data {
  65. unsigned gpio_base;
  66. bool oscio_is_gpo;
  67. u16 io_pullup_ena;
  68. u16 io_pulldn_ena;
  69. u16 io_open_drain_ena;
  70. u16 io_polarity;
  71. int irq_summary;
  72. unsigned irq_base;
  73. bool reset_during_probe;
  74. };
  75. #endif /* __LINUX_I2C_SX150X_H */