* AB8500 Multi-Functional Device (MFD) Required parent device properties: - compatible : contains "stericsson,ab8500" or "stericsson,ab8505"; - interrupts : contains the IRQ line for the AB8500 - interrupt-controller : describes the AB8500 as an Interrupt Controller (has its own domain) - #interrupt-cells : should be 2, for 2-cell format - The first cell is the AB8500 local IRQ number - The second cell is used to specify optional parameters - bits[3:0] trigger type and level flags: 1 = low-to-high edge triggered 2 = high-to-low edge triggered 4 = active high level-sensitive 8 = active low level-sensitive The AB8500 consists of a large and varied group of sub-devices: Device IRQ Names Supply Names Description ------ --------- ------------ ----------- ab8500-bm : : : Battery Manager ab8500-btemp : : : Battery Temperature ab8500-charger : : : Battery Charger ab8500-codec : : : Audio Codec ab8500-fg : : vddadc : Fuel Gauge : NCONV_ACCU : : Accumulate N Sample Conversion : BATT_OVV : : Battery Over Voltage : LOW_BAT_F : : LOW threshold battery voltage : CC_INT_CALIB : : Coulomb Counter Internal Calibration : CCEOC : : Coulomb Counter End of Conversion ab8500-btemp : : vtvout : Battery Temperature : BAT_CTRL_INDB : : Battery Removal Indicator : BTEMP_LOW : : Btemp < BtempLow, if battery temperature is lower than -10°C : BTEMP_LOW_MEDIUM : : BtempLow < Btemp < BtempMedium,if battery temperature is between -10 and 0°C : BTEMP_MEDIUM_HIGH : : BtempMedium < Btemp < BtempHigh,if battery temperature is between 0°C and MaxTemp : BTEMP_HIGH : : Btemp > BtempHigh, if battery temperature is higher than MaxTemp ab8500-charger : : vddadc : Charger interface : MAIN_CH_UNPLUG_DET : : main charger unplug detection management (not in 8505) : MAIN_CHARGE_PLUG_DET : : main charger plug detection management (not in 8505) : MAIN_EXT_CH_NOT_OK : : main charger not OK : MAIN_CH_TH_PROT_R : : Die temp is above main charger : MAIN_CH_TH_PROT_F : : Die temp is below main charger : VBUS_DET_F : : VBUS falling detected : VBUS_DET_R : : VBUS rising detected : USB_LINK_STATUS : : USB link status has changed : USB_CH_TH_PROT_R : : Die temp is above usb charger : USB_CH_TH_PROT_F : : Die temp is below usb charger : USB_CHARGER_NOT_OKR : : allowed USB charger not ok detection : VBUS_OVV : : Overvoltage on Vbus ball detected (USB charge is stopped) : CH_WD_EXP : : Charger watchdog detected ab8500-gpadc : HW_CONV_END : vddadc : Analogue to Digital Converter SW_CONV_END : : ab8500-gpio : : : GPIO Controller (AB8500) ab8505-gpio : : : GPIO Controller (AB8505) ab8500-ponkey : ONKEY_DBF : : Power-on Key ONKEY_DBR : : ab8500-pwm : : : Pulse Width Modulator ab8500-regulator : : : Regulators (AB8500) ab8505-regulator : : : Regulators (AB8505) ab8500-rtc : 60S : : Real Time Clock : ALARM : : ab8500-sysctrl : : : System Control ab8500-usb : ID_WAKEUP_R : vddulpivio18 : Universal Serial Bus : ID_WAKEUP_F : v-ape : : VBUS_DET_F : musb_1v8 : : VBUS_DET_R : : : USB_LINK_STATUS : : : USB_ADP_PROBE_PLUG : : : USB_ADP_PROBE_UNPLUG : : Required child device properties: - compatible : "stericsson,ab8500-[bm|btemp|charger|fg|gpadc|gpio|ponkey| pwm|regulator|rtc|sysctrl|usb]"; A few child devices require ADC channels from the GPADC node. Those follow the standard bindings from iio/iio-bindings.txt and iio/adc/adc.txt abx500-temp : io-channels "aux1" and "aux2" for measuring external temperatures. ab8500-fg : io-channel "main_bat_v" for measuring main battery voltage, ab8500-btemp : io-channels "btemp_ball" and "bat_ctrl" for measuring the battery voltage. ab8500-charger : io-channels "main_charger_v", "main_charger_c", "vbus_v", "usb_charger_c" for measuring voltage and current of the different charging supplies. Optional child device properties: - interrupts : contains the device IRQ(s) using the 2-cell format (see above) - interrupt-names : contains names of IRQ resource in the order in which they were supplied in the interrupts property - -supply : contains a phandle to the regulator supply node in Device Tree Non-standard child device properties: - Audio CODEC: - stericsson,amic[1|2]-type-single-ended : Single-ended Analoge Mic (default: differential) - stericsson,amic1a-bias-vamic2 : Analoge Mic wishes to use a non-standard Vamic - stericsson,amic1b-bias-vamic2 : Analoge Mic wishes to use a non-standard Vamic - stericsson,amic2-bias-vamic1 : Analoge Mic wishes to use a non-standard Vamic - stericsson,earpeice-cmv : Earpeice voltage (only: 950 | 1100 | 1270 | 1580) ab8500 { compatible = "stericsson,ab8500"; interrupts = <0 40 0x4>; interrupt-controller; #interrupt-cells = <2>; ab8500-rtc { compatible = "stericsson,ab8500-rtc"; interrupts = <17 0x4 18 0x4>; interrupt-names = "60S", "ALARM"; }; ab8500-gpadc { compatible = "stericsson,ab8500-gpadc"; interrupts = <32 0x4 39 0x4>; interrupt-names = "HW_CONV_END", "SW_CONV_END"; vddadc-supply = <&ab8500_ldo_tvout_reg>; #address-cells = <1>; #size-cells = <0>; #io-channel-cells = <1>; /* GPADC channels */ bat_ctrl: channel@1 { reg = <0x01>; }; btemp_ball: channel@2 { reg = <0x02>; }; main_charger_v: channel@3 { reg = <0x03>; }; acc_detect1: channel@4 { reg = <0x04>; }; acc_detect2: channel@5 { reg = <0x05>; }; adc_aux1: channel@6 { reg = <0x06>; }; adc_aux2: channel@7 { reg = <0x07>; }; main_batt_v: channel@8 { reg = <0x08>; }; vbus_v: channel@9 { reg = <0x09>; }; main_charger_c: channel@a { reg = <0x0a>; }; usb_charger_c: channel@b { reg = <0x0b>; }; bk_bat_v: channel@c { reg = <0x0c>; }; die_temp: channel@d { reg = <0x0d>; }; usb_id: channel@e { reg = <0x0e>; }; xtal_temp: channel@12 { reg = <0x12>; }; vbat_true_meas: channel@13 { reg = <0x13>; }; bat_ctrl_and_ibat: channel@1c { reg = <0x1c>; }; vbat_meas_and_ibat: channel@1d { reg = <0x1d>; }; vbat_true_meas_and_ibat: channel@1e { reg = <0x1e>; }; bat_temp_and_ibat: channel@1f { reg = <0x1f>; }; }; ab8500_temp { compatible = "stericsson,abx500-temp"; io-channels = <&gpadc 0x06>, <&gpadc 0x07>; io-channel-name = "aux1", "aux2"; }; ab8500_battery: ab8500_battery { stericsson,battery-type = "LIPO"; thermistor-on-batctrl; }; ab8500_fg { compatible = "stericsson,ab8500-fg"; battery = <&ab8500_battery>; io-channels = <&gpadc 0x08>; io-channel-name = "main_bat_v"; }; ab8500_btemp { compatible = "stericsson,ab8500-btemp"; battery = <&ab8500_battery>; io-channels = <&gpadc 0x02>, <&gpadc 0x01>; io-channel-name = "btemp_ball", "bat_ctrl"; }; ab8500_charger { compatible = "stericsson,ab8500-charger"; battery = <&ab8500_battery>; vddadc-supply = <&ab8500_ldo_tvout_reg>; io-channels = <&gpadc 0x03>, <&gpadc 0x0a>, <&gpadc 0x09>, <&gpadc 0x0b>; io-channel-name = "main_charger_v", "main_charger_c", "vbus_v", "usb_charger_c"; }; ab8500-usb { compatible = "stericsson,ab8500-usb"; interrupts = < 90 0x4 96 0x4 14 0x4 15 0x4 79 0x4 74 0x4 75 0x4>; interrupt-names = "ID_WAKEUP_R", "ID_WAKEUP_F", "VBUS_DET_F", "VBUS_DET_R", "USB_LINK_STATUS", "USB_ADP_PROBE_PLUG", "USB_ADP_PROBE_UNPLUG"; vddulpivio18-supply = <&ab8500_ldo_intcore_reg>; v-ape-supply = <&db8500_vape_reg>; musb_1v8-supply = <&db8500_vsmps2_reg>; }; ab8500-ponkey { compatible = "stericsson,ab8500-ponkey"; interrupts = <6 0x4 7 0x4>; interrupt-names = "ONKEY_DBF", "ONKEY_DBR"; }; ab8500-sysctrl { compatible = "stericsson,ab8500-sysctrl"; }; ab8500-pwm { compatible = "stericsson,ab8500-pwm"; }; codec: ab8500-codec { compatible = "stericsson,ab8500-codec"; stericsson,earpeice-cmv = <950>; /* Units in mV. */ }; ab8500-regulators { compatible = "stericsson,ab8500-regulator"; ab8500_ldo_aux1_reg: ab8500_ldo_aux1 { /* * See: Documentation/devicetree/bindings/regulator/regulator.txt * for more information on regulators */ }; }; };