Qualcomm Technologies, Inc. TADC Specific Bindings TADC (Telemetry ADC) is a 10 bit resolution ADC which has 8 channels: battery temperature, skin temperature, die temperature, battery current, battery voltage, input current, input voltage, and OTG current. ======================= Required Node Structure ======================= A TADC must be described in two levels of devices nodes. ======================= First Level Node - TADC ======================= - reg Usage: required Value type: Definition: Address and size of the TADC register block. TADC specific properties: - compatible Usage: required Value type: Definition: Must be "qcom,tadc". - interrupts Usage: required Value type: Definition: Peripheral interrupt specifier. - interrupt-names Usage: required Value type: Definition: Interrupt names. This list must match up 1-to-1 with the interrupts specified in the 'interrupts' property. ============================================= Second Level Nodes - TADC Thermistor Channels ============================================= - reg Usage: required Value type: Definition: The 0 based channel number. TADC thermistor channel specific properties: - qcom,rbias Usage: required Value type: Definition: The bias resistor value. - qcom,therm-at-25degc Usage: required Value type: Definition: The thermistor resistance at 25 DegC. - qcom,beta-coefficient Usage: required Value type: Definition: The beta coefficeent or B-parameter of the thermistor. =============================================== Second Level Nodes - TADC Scale/Offset Channels =============================================== - reg Usage: required Value type: Definition: The 0 based channel number. TADC scale/offset channel specific properties: - qcom,scale Usage: required Value type: Definition: The RAW scaling factor. - qcom,offset Usage: optional Value type: Definition: The offset after scaling. ======= Example ======= smb138x_tadc: qcom,tadc@3600 { compatible = "qcom,tadc"; #address-cells = <1>; #size-cells = <0>; #io-channel-cells = <1>; interrupts = <0x36 0x0 IRQ_TYPE_EDGE_BOTH>; interrupt-names = "eoc"; batt_temp@0 { reg = <0>; qcom,rbias = <68100>; qcom,rtherm-at-25degc = <68000>; qcom,beta-coefficient = <3450>; }; skin_temp@1 { reg = <1>; qcom,rbias = <33000>; qcom,rtherm-at-25degc = <68000>; qcom,beta-coefficient = <3450>; }; die_temp@2 { reg = <2>; qcom,scale = <(-1032)>; qcom,offset = <344125>; }; batt_i@3 { reg = <3>; qcom,channel = <3>; qcom,scale = <20000000>; }; batt_v@4 { reg = <4>; qcom,scale = <5000000>; }; input_i@5 { reg = <5>; qcom,scale = <14285714>; }; input_v@6 { reg = <6>; qcom,scale = <25000000>; }; otg_i@7 { reg = <7>; qcom,scale = <5714286>; }; };