Device driver for TI LP8788 Power Management Unit

(Description)
The LP8788 has multiple functions.

(a) The I2C Interface
  Access registers through the I2C

(b) Regulator Driver
  4 BUCKs, 12 Digital LDOs and 10 Analog LDOs

(c) Battery Charger
  Configurable charging parameters

(d) Real Time Clock with programmable alarm
  Time counting and calendar for years 2000 - 2099

(e) Backlight Driver
  Brightness can be controlled by the pwm input or the i2c command

(f) Current Sinks
  3 current sinks are provided.
  Each current sink can be used for keyboard LED or vibrator.

(g) A/D Converter
  ADC results from registers
  (e.g. measuring battery voltage, temperature and so on)


(Driver architecture)

                 / regulator drivers   : ldos/bucks
                /  power supply driver : charger
  i2c    - mfd -   rtc driver          : rtc and alarm
(regmap)        \  backlight driver    : brightness
                 \ led                 : keyboard led


(Interrupt handling)
24 interrupts are used for the lp8788.
If the interrupt occurs, then each IRQ is handled in the irq threads.
Charger and RTC IRQs are passed from the main IRQ thread.

* Why don't use the regmap-irq interface
Rather than using the regmap-irq interface, LP8788 irq domain is allocated and
irq threads are created when lp8788_irq_init() is called.

(a) Interrupt enable registers vs Interrupt mask registers

  LP8788 has interrupt enable registers - not masked registers.
  If the bit is 1, then the IRQ can be generated by LP8788.
  Otherwise, the IRQ is ignored (masked)
  The bit operation of lp8788 is different from regmap-irq.

  For example, to enable bit0 interrupt, the mask and value are set as 
following.
    <lp8788>      bit mask = 0xfe, value = 0x01
    <regmap-irq>  bit mask = 0xfe, value = 0xfe

  So regmap-irq is not appropriate in lp8788 irq enable scheme.

(b) Debounce time

  To guarantee latest updated interrupt information, debounce timer is required.
  In the lp8788 driver, work queue is used for the delayed processing.
  There is no option in the reqmap-irq.

Best Regards,
Milo

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to