1*4882a593Smuzhiyun* AB8500 Multi-Functional Device (MFD) 2*4882a593Smuzhiyun 3*4882a593SmuzhiyunRequired parent device properties: 4*4882a593Smuzhiyun- compatible : contains "stericsson,ab8500" or "stericsson,ab8505"; 5*4882a593Smuzhiyun- interrupts : contains the IRQ line for the AB8500 6*4882a593Smuzhiyun- interrupt-controller : describes the AB8500 as an Interrupt Controller (has its own domain) 7*4882a593Smuzhiyun- #interrupt-cells : should be 2, for 2-cell format 8*4882a593Smuzhiyun - The first cell is the AB8500 local IRQ number 9*4882a593Smuzhiyun - The second cell is used to specify optional parameters 10*4882a593Smuzhiyun - bits[3:0] trigger type and level flags: 11*4882a593Smuzhiyun 1 = low-to-high edge triggered 12*4882a593Smuzhiyun 2 = high-to-low edge triggered 13*4882a593Smuzhiyun 4 = active high level-sensitive 14*4882a593Smuzhiyun 8 = active low level-sensitive 15*4882a593Smuzhiyun 16*4882a593SmuzhiyunThe AB8500 consists of a large and varied group of sub-devices: 17*4882a593Smuzhiyun 18*4882a593SmuzhiyunDevice IRQ Names Supply Names Description 19*4882a593Smuzhiyun------ --------- ------------ ----------- 20*4882a593Smuzhiyunab8500-bm : : : Battery Manager 21*4882a593Smuzhiyunab8500-btemp : : : Battery Temperature 22*4882a593Smuzhiyunab8500-charger : : : Battery Charger 23*4882a593Smuzhiyunab8500-codec : : : Audio Codec 24*4882a593Smuzhiyunab8500-fg : : vddadc : Fuel Gauge 25*4882a593Smuzhiyun : NCONV_ACCU : : Accumulate N Sample Conversion 26*4882a593Smuzhiyun : BATT_OVV : : Battery Over Voltage 27*4882a593Smuzhiyun : LOW_BAT_F : : LOW threshold battery voltage 28*4882a593Smuzhiyun : CC_INT_CALIB : : Coulomb Counter Internal Calibration 29*4882a593Smuzhiyun : CCEOC : : Coulomb Counter End of Conversion 30*4882a593Smuzhiyunab8500-btemp : : vtvout : Battery Temperature 31*4882a593Smuzhiyun : BAT_CTRL_INDB : : Battery Removal Indicator 32*4882a593Smuzhiyun : BTEMP_LOW : : Btemp < BtempLow, if battery temperature is lower than -10°C 33*4882a593Smuzhiyun : BTEMP_LOW_MEDIUM : : BtempLow < Btemp < BtempMedium,if battery temperature is between -10 and 0°C 34*4882a593Smuzhiyun : BTEMP_MEDIUM_HIGH : : BtempMedium < Btemp < BtempHigh,if battery temperature is between 0°C and MaxTemp 35*4882a593Smuzhiyun : BTEMP_HIGH : : Btemp > BtempHigh, if battery temperature is higher than MaxTemp 36*4882a593Smuzhiyunab8500-charger : : vddadc : Charger interface 37*4882a593Smuzhiyun : MAIN_CH_UNPLUG_DET : : main charger unplug detection management (not in 8505) 38*4882a593Smuzhiyun : MAIN_CHARGE_PLUG_DET : : main charger plug detection management (not in 8505) 39*4882a593Smuzhiyun : MAIN_EXT_CH_NOT_OK : : main charger not OK 40*4882a593Smuzhiyun : MAIN_CH_TH_PROT_R : : Die temp is above main charger 41*4882a593Smuzhiyun : MAIN_CH_TH_PROT_F : : Die temp is below main charger 42*4882a593Smuzhiyun : VBUS_DET_F : : VBUS falling detected 43*4882a593Smuzhiyun : VBUS_DET_R : : VBUS rising detected 44*4882a593Smuzhiyun : USB_LINK_STATUS : : USB link status has changed 45*4882a593Smuzhiyun : USB_CH_TH_PROT_R : : Die temp is above usb charger 46*4882a593Smuzhiyun : USB_CH_TH_PROT_F : : Die temp is below usb charger 47*4882a593Smuzhiyun : USB_CHARGER_NOT_OKR : : allowed USB charger not ok detection 48*4882a593Smuzhiyun : VBUS_OVV : : Overvoltage on Vbus ball detected (USB charge is stopped) 49*4882a593Smuzhiyun : CH_WD_EXP : : Charger watchdog detected 50*4882a593Smuzhiyunab8500-gpadc : HW_CONV_END : vddadc : Analogue to Digital Converter 51*4882a593Smuzhiyun SW_CONV_END : : 52*4882a593Smuzhiyunab8500-gpio : : : GPIO Controller (AB8500) 53*4882a593Smuzhiyunab8505-gpio : : : GPIO Controller (AB8505) 54*4882a593Smuzhiyunab8500-ponkey : ONKEY_DBF : : Power-on Key 55*4882a593Smuzhiyun ONKEY_DBR : : 56*4882a593Smuzhiyunab8500-pwm : : : Pulse Width Modulator 57*4882a593Smuzhiyunab8500-regulator : : : Regulators (AB8500) 58*4882a593Smuzhiyunab8505-regulator : : : Regulators (AB8505) 59*4882a593Smuzhiyunab8500-rtc : 60S : : Real Time Clock 60*4882a593Smuzhiyun : ALARM : : 61*4882a593Smuzhiyunab8500-sysctrl : : : System Control 62*4882a593Smuzhiyunab8500-usb : ID_WAKEUP_R : vddulpivio18 : Universal Serial Bus 63*4882a593Smuzhiyun : ID_WAKEUP_F : v-ape : 64*4882a593Smuzhiyun : VBUS_DET_F : musb_1v8 : 65*4882a593Smuzhiyun : VBUS_DET_R : : 66*4882a593Smuzhiyun : USB_LINK_STATUS : : 67*4882a593Smuzhiyun : USB_ADP_PROBE_PLUG : : 68*4882a593Smuzhiyun : USB_ADP_PROBE_UNPLUG : : 69*4882a593Smuzhiyun 70*4882a593SmuzhiyunRequired child device properties: 71*4882a593Smuzhiyun- compatible : "stericsson,ab8500-[bm|btemp|charger|fg|gpadc|gpio|ponkey| 72*4882a593Smuzhiyun pwm|regulator|rtc|sysctrl|usb]"; 73*4882a593Smuzhiyun 74*4882a593Smuzhiyun A few child devices require ADC channels from the GPADC node. Those follow the 75*4882a593Smuzhiyun standard bindings from iio/iio-bindings.txt and iio/adc/adc.txt 76*4882a593Smuzhiyun 77*4882a593Smuzhiyun abx500-temp : io-channels "aux1" and "aux2" for measuring external 78*4882a593Smuzhiyun temperatures. 79*4882a593Smuzhiyun ab8500-fg : io-channel "main_bat_v" for measuring main battery voltage, 80*4882a593Smuzhiyun ab8500-btemp : io-channels "btemp_ball" and "bat_ctrl" for measuring the 81*4882a593Smuzhiyun battery voltage. 82*4882a593Smuzhiyun ab8500-charger : io-channels "main_charger_v", "main_charger_c", "vbus_v", 83*4882a593Smuzhiyun "usb_charger_c" for measuring voltage and current of the 84*4882a593Smuzhiyun different charging supplies. 85*4882a593Smuzhiyun 86*4882a593SmuzhiyunOptional child device properties: 87*4882a593Smuzhiyun- interrupts : contains the device IRQ(s) using the 2-cell format (see above) 88*4882a593Smuzhiyun- interrupt-names : contains names of IRQ resource in the order in which they were 89*4882a593Smuzhiyun supplied in the interrupts property 90*4882a593Smuzhiyun- <supply_name>-supply : contains a phandle to the regulator supply node in Device Tree 91*4882a593Smuzhiyun 92*4882a593SmuzhiyunNon-standard child device properties: 93*4882a593Smuzhiyun - Audio CODEC: 94*4882a593Smuzhiyun - stericsson,amic[1|2]-type-single-ended : Single-ended Analoge Mic (default: differential) 95*4882a593Smuzhiyun - stericsson,amic1a-bias-vamic2 : Analoge Mic wishes to use a non-standard Vamic 96*4882a593Smuzhiyun - stericsson,amic1b-bias-vamic2 : Analoge Mic wishes to use a non-standard Vamic 97*4882a593Smuzhiyun - stericsson,amic2-bias-vamic1 : Analoge Mic wishes to use a non-standard Vamic 98*4882a593Smuzhiyun - stericsson,earpeice-cmv : Earpeice voltage (only: 950 | 1100 | 1270 | 1580) 99*4882a593Smuzhiyun 100*4882a593Smuzhiyunab8500 { 101*4882a593Smuzhiyun compatible = "stericsson,ab8500"; 102*4882a593Smuzhiyun interrupts = <0 40 0x4>; 103*4882a593Smuzhiyun interrupt-controller; 104*4882a593Smuzhiyun #interrupt-cells = <2>; 105*4882a593Smuzhiyun 106*4882a593Smuzhiyun ab8500-rtc { 107*4882a593Smuzhiyun compatible = "stericsson,ab8500-rtc"; 108*4882a593Smuzhiyun interrupts = <17 0x4 109*4882a593Smuzhiyun 18 0x4>; 110*4882a593Smuzhiyun interrupt-names = "60S", "ALARM"; 111*4882a593Smuzhiyun }; 112*4882a593Smuzhiyun 113*4882a593Smuzhiyun ab8500-gpadc { 114*4882a593Smuzhiyun compatible = "stericsson,ab8500-gpadc"; 115*4882a593Smuzhiyun interrupts = <32 0x4 116*4882a593Smuzhiyun 39 0x4>; 117*4882a593Smuzhiyun interrupt-names = "HW_CONV_END", "SW_CONV_END"; 118*4882a593Smuzhiyun vddadc-supply = <&ab8500_ldo_tvout_reg>; 119*4882a593Smuzhiyun #address-cells = <1>; 120*4882a593Smuzhiyun #size-cells = <0>; 121*4882a593Smuzhiyun #io-channel-cells = <1>; 122*4882a593Smuzhiyun 123*4882a593Smuzhiyun /* GPADC channels */ 124*4882a593Smuzhiyun bat_ctrl: channel@1 { 125*4882a593Smuzhiyun reg = <0x01>; 126*4882a593Smuzhiyun }; 127*4882a593Smuzhiyun btemp_ball: channel@2 { 128*4882a593Smuzhiyun reg = <0x02>; 129*4882a593Smuzhiyun }; 130*4882a593Smuzhiyun main_charger_v: channel@3 { 131*4882a593Smuzhiyun reg = <0x03>; 132*4882a593Smuzhiyun }; 133*4882a593Smuzhiyun acc_detect1: channel@4 { 134*4882a593Smuzhiyun reg = <0x04>; 135*4882a593Smuzhiyun }; 136*4882a593Smuzhiyun acc_detect2: channel@5 { 137*4882a593Smuzhiyun reg = <0x05>; 138*4882a593Smuzhiyun }; 139*4882a593Smuzhiyun adc_aux1: channel@6 { 140*4882a593Smuzhiyun reg = <0x06>; 141*4882a593Smuzhiyun }; 142*4882a593Smuzhiyun adc_aux2: channel@7 { 143*4882a593Smuzhiyun reg = <0x07>; 144*4882a593Smuzhiyun }; 145*4882a593Smuzhiyun main_batt_v: channel@8 { 146*4882a593Smuzhiyun reg = <0x08>; 147*4882a593Smuzhiyun }; 148*4882a593Smuzhiyun vbus_v: channel@9 { 149*4882a593Smuzhiyun reg = <0x09>; 150*4882a593Smuzhiyun }; 151*4882a593Smuzhiyun main_charger_c: channel@a { 152*4882a593Smuzhiyun reg = <0x0a>; 153*4882a593Smuzhiyun }; 154*4882a593Smuzhiyun usb_charger_c: channel@b { 155*4882a593Smuzhiyun reg = <0x0b>; 156*4882a593Smuzhiyun }; 157*4882a593Smuzhiyun bk_bat_v: channel@c { 158*4882a593Smuzhiyun reg = <0x0c>; 159*4882a593Smuzhiyun }; 160*4882a593Smuzhiyun die_temp: channel@d { 161*4882a593Smuzhiyun reg = <0x0d>; 162*4882a593Smuzhiyun }; 163*4882a593Smuzhiyun usb_id: channel@e { 164*4882a593Smuzhiyun reg = <0x0e>; 165*4882a593Smuzhiyun }; 166*4882a593Smuzhiyun xtal_temp: channel@12 { 167*4882a593Smuzhiyun reg = <0x12>; 168*4882a593Smuzhiyun }; 169*4882a593Smuzhiyun vbat_true_meas: channel@13 { 170*4882a593Smuzhiyun reg = <0x13>; 171*4882a593Smuzhiyun }; 172*4882a593Smuzhiyun bat_ctrl_and_ibat: channel@1c { 173*4882a593Smuzhiyun reg = <0x1c>; 174*4882a593Smuzhiyun }; 175*4882a593Smuzhiyun vbat_meas_and_ibat: channel@1d { 176*4882a593Smuzhiyun reg = <0x1d>; 177*4882a593Smuzhiyun }; 178*4882a593Smuzhiyun vbat_true_meas_and_ibat: channel@1e { 179*4882a593Smuzhiyun reg = <0x1e>; 180*4882a593Smuzhiyun }; 181*4882a593Smuzhiyun bat_temp_and_ibat: channel@1f { 182*4882a593Smuzhiyun reg = <0x1f>; 183*4882a593Smuzhiyun }; 184*4882a593Smuzhiyun }; 185*4882a593Smuzhiyun 186*4882a593Smuzhiyun ab8500_temp { 187*4882a593Smuzhiyun compatible = "stericsson,abx500-temp"; 188*4882a593Smuzhiyun io-channels = <&gpadc 0x06>, 189*4882a593Smuzhiyun <&gpadc 0x07>; 190*4882a593Smuzhiyun io-channel-name = "aux1", "aux2"; 191*4882a593Smuzhiyun }; 192*4882a593Smuzhiyun 193*4882a593Smuzhiyun ab8500_battery: ab8500_battery { 194*4882a593Smuzhiyun stericsson,battery-type = "LIPO"; 195*4882a593Smuzhiyun thermistor-on-batctrl; 196*4882a593Smuzhiyun }; 197*4882a593Smuzhiyun 198*4882a593Smuzhiyun ab8500_fg { 199*4882a593Smuzhiyun compatible = "stericsson,ab8500-fg"; 200*4882a593Smuzhiyun battery = <&ab8500_battery>; 201*4882a593Smuzhiyun io-channels = <&gpadc 0x08>; 202*4882a593Smuzhiyun io-channel-name = "main_bat_v"; 203*4882a593Smuzhiyun }; 204*4882a593Smuzhiyun 205*4882a593Smuzhiyun ab8500_btemp { 206*4882a593Smuzhiyun compatible = "stericsson,ab8500-btemp"; 207*4882a593Smuzhiyun battery = <&ab8500_battery>; 208*4882a593Smuzhiyun io-channels = <&gpadc 0x02>, 209*4882a593Smuzhiyun <&gpadc 0x01>; 210*4882a593Smuzhiyun io-channel-name = "btemp_ball", 211*4882a593Smuzhiyun "bat_ctrl"; 212*4882a593Smuzhiyun }; 213*4882a593Smuzhiyun 214*4882a593Smuzhiyun ab8500_charger { 215*4882a593Smuzhiyun compatible = "stericsson,ab8500-charger"; 216*4882a593Smuzhiyun battery = <&ab8500_battery>; 217*4882a593Smuzhiyun vddadc-supply = <&ab8500_ldo_tvout_reg>; 218*4882a593Smuzhiyun io-channels = <&gpadc 0x03>, 219*4882a593Smuzhiyun <&gpadc 0x0a>, 220*4882a593Smuzhiyun <&gpadc 0x09>, 221*4882a593Smuzhiyun <&gpadc 0x0b>; 222*4882a593Smuzhiyun io-channel-name = "main_charger_v", 223*4882a593Smuzhiyun "main_charger_c", 224*4882a593Smuzhiyun "vbus_v", 225*4882a593Smuzhiyun "usb_charger_c"; 226*4882a593Smuzhiyun }; 227*4882a593Smuzhiyun 228*4882a593Smuzhiyun ab8500-usb { 229*4882a593Smuzhiyun compatible = "stericsson,ab8500-usb"; 230*4882a593Smuzhiyun interrupts = < 90 0x4 231*4882a593Smuzhiyun 96 0x4 232*4882a593Smuzhiyun 14 0x4 233*4882a593Smuzhiyun 15 0x4 234*4882a593Smuzhiyun 79 0x4 235*4882a593Smuzhiyun 74 0x4 236*4882a593Smuzhiyun 75 0x4>; 237*4882a593Smuzhiyun interrupt-names = "ID_WAKEUP_R", 238*4882a593Smuzhiyun "ID_WAKEUP_F", 239*4882a593Smuzhiyun "VBUS_DET_F", 240*4882a593Smuzhiyun "VBUS_DET_R", 241*4882a593Smuzhiyun "USB_LINK_STATUS", 242*4882a593Smuzhiyun "USB_ADP_PROBE_PLUG", 243*4882a593Smuzhiyun "USB_ADP_PROBE_UNPLUG"; 244*4882a593Smuzhiyun vddulpivio18-supply = <&ab8500_ldo_intcore_reg>; 245*4882a593Smuzhiyun v-ape-supply = <&db8500_vape_reg>; 246*4882a593Smuzhiyun musb_1v8-supply = <&db8500_vsmps2_reg>; 247*4882a593Smuzhiyun }; 248*4882a593Smuzhiyun 249*4882a593Smuzhiyun ab8500-ponkey { 250*4882a593Smuzhiyun compatible = "stericsson,ab8500-ponkey"; 251*4882a593Smuzhiyun interrupts = <6 0x4 252*4882a593Smuzhiyun 7 0x4>; 253*4882a593Smuzhiyun interrupt-names = "ONKEY_DBF", "ONKEY_DBR"; 254*4882a593Smuzhiyun }; 255*4882a593Smuzhiyun 256*4882a593Smuzhiyun ab8500-sysctrl { 257*4882a593Smuzhiyun compatible = "stericsson,ab8500-sysctrl"; 258*4882a593Smuzhiyun }; 259*4882a593Smuzhiyun 260*4882a593Smuzhiyun ab8500-pwm { 261*4882a593Smuzhiyun compatible = "stericsson,ab8500-pwm"; 262*4882a593Smuzhiyun }; 263*4882a593Smuzhiyun 264*4882a593Smuzhiyun codec: ab8500-codec { 265*4882a593Smuzhiyun compatible = "stericsson,ab8500-codec"; 266*4882a593Smuzhiyun 267*4882a593Smuzhiyun stericsson,earpeice-cmv = <950>; /* Units in mV. */ 268*4882a593Smuzhiyun }; 269*4882a593Smuzhiyun 270*4882a593Smuzhiyun ab8500-regulators { 271*4882a593Smuzhiyun compatible = "stericsson,ab8500-regulator"; 272*4882a593Smuzhiyun 273*4882a593Smuzhiyun ab8500_ldo_aux1_reg: ab8500_ldo_aux1 { 274*4882a593Smuzhiyun /* 275*4882a593Smuzhiyun * See: Documentation/devicetree/bindings/regulator/regulator.txt 276*4882a593Smuzhiyun * for more information on regulators 277*4882a593Smuzhiyun */ 278*4882a593Smuzhiyun }; 279*4882a593Smuzhiyun }; 280*4882a593Smuzhiyun}; 281