* Texas Instrument OMAP SCM bandgap bindings

In the System Control Module, OMAP supplies a voltage reference
and a temperature sensor feature that are gathered in the band
gap voltage and temperature sensor (VBGAPTS) module. The band
gap provides current and voltage reference for its internal
circuits and other analog IP blocks. The analog-to-digital
converter (ADC) produces an output value that is proportional
to the silicon temperature.

Required properties:
- compatible : Should be:
  - "ti,omap4430-bandgap" : for OMAP4430 bandgap
  - "ti,omap4460-bandgap" : for OMAP4460 bandgap
  - "ti,omap4470-bandgap" : for OMAP4470 bandgap
  - "ti,omap5430-bandgap" : for OMAP5430 bandgap
- interrupts : this entry should indicate which interrupt line
the talert signal is routed to;
Specific:
- ti,tshut-gpio : this entry should be used to inform which GPIO
line the tshut signal is routed to;
- regs : this entry must also be specified and it is specific
to each bandgap version, because the mapping may change from
soc to soc, apart of depending on available features.

Example:
OMAP4430:
bandgap {
	reg = <0x4a002260 0x4 0x4a00232C 0x4>;
	compatible = "ti,omap4430-bandgap";
};

OMAP4460:
bandgap {
	reg = <0x4a002260 0x4
		0x4a00232C 0x4
		0x4a002378 0x18>;
	compatible = "ti,omap4460-bandgap";
	interrupts = <0 126 4>; /* talert */
	ti,tshut-gpio = <86>;
};

OMAP4470:
bandgap {
	reg = <0x4a002260 0x4
		0x4a00232C 0x4
		0x4a002378 0x18>;
	compatible = "ti,omap4470-bandgap";
	interrupts = <0 126 4>; /* talert */
	ti,tshut-gpio = <86>;
};

OMAP5430:
bandgap {
	reg = <0x4a0021e0 0xc
		0x4a00232c 0xc
		0x4a002380 0x2c
		0x4a0023C0 0x3c>;
	compatible = "ti,omap5430-bandgap";
};
