Tom Rini | 53633a8 | 2024-02-29 12:33:36 -0500 | [diff] [blame] | 1 | # SPDX-License-Identifier: GPL-2.0-only |
| 2 | %YAML 1.2 |
| 3 | --- |
| 4 | $id: http://devicetree.org/schemas/iio/adc/qcom,spmi-vadc.yaml# |
| 5 | $schema: http://devicetree.org/meta-schemas/core.yaml# |
| 6 | |
| 7 | title: Qualcomm's SPMI PMIC ADC |
| 8 | |
| 9 | maintainers: |
| 10 | - Andy Gross <agross@kernel.org> |
| 11 | - Bjorn Andersson <bjorn.andersson@linaro.org> |
| 12 | |
| 13 | description: | |
| 14 | SPMI PMIC voltage ADC (VADC) provides interface to clients to read |
| 15 | voltage. The VADC is a 15-bit sigma-delta ADC. |
| 16 | SPMI PMIC5/PMIC7 voltage ADC (ADC) provides interface to clients to read |
| 17 | voltage. The VADC is a 16-bit sigma-delta ADC. |
| 18 | |
| 19 | properties: |
| 20 | compatible: |
| 21 | oneOf: |
| 22 | - items: |
| 23 | - const: qcom,pms405-adc |
| 24 | - const: qcom,spmi-adc-rev2 |
| 25 | - enum: |
| 26 | - qcom,spmi-vadc |
| 27 | - qcom,spmi-adc5 |
| 28 | - qcom,spmi-adc-rev2 |
| 29 | - qcom,spmi-adc7 |
| 30 | |
| 31 | reg: |
| 32 | description: VADC base address in the SPMI PMIC register map |
| 33 | maxItems: 1 |
| 34 | |
| 35 | '#address-cells': |
| 36 | const: 1 |
| 37 | |
| 38 | '#size-cells': |
| 39 | const: 0 |
| 40 | |
| 41 | '#io-channel-cells': |
| 42 | const: 1 |
| 43 | |
| 44 | interrupts: |
| 45 | maxItems: 1 |
| 46 | description: |
| 47 | End of conversion interrupt. |
| 48 | |
| 49 | required: |
| 50 | - compatible |
| 51 | - reg |
| 52 | - '#address-cells' |
| 53 | - '#size-cells' |
| 54 | - '#io-channel-cells' |
| 55 | |
| 56 | patternProperties: |
| 57 | "^channel@[0-9a-f]+$": |
| 58 | type: object |
| 59 | additionalProperties: false |
| 60 | description: | |
| 61 | Represents the external channels which are connected to the ADC. |
| 62 | For compatible property "qcom,spmi-vadc" following channels, also known as |
| 63 | reference point channels, are used for result calibration and their channel |
| 64 | configuration nodes should be defined: |
| 65 | VADC_REF_625MV and/or VADC_SPARE1(based on PMIC version) VADC_REF_1250MV, |
| 66 | VADC_GND_REF and VADC_VDD_VADC. |
| 67 | |
| 68 | properties: |
| 69 | reg: |
| 70 | maxItems: 1 |
| 71 | description: | |
| 72 | ADC channel number. |
| 73 | See include/dt-bindings/iio/qcom,spmi-vadc.h |
| 74 | For PMIC7 ADC, the channel numbers are specified separately per PMIC |
| 75 | in the PMIC-specific files in include/dt-bindings/iio/. |
| 76 | |
| 77 | label: |
| 78 | $ref: /schemas/types.yaml#/definitions/string |
| 79 | description: | |
| 80 | ADC input of the platform as seen in the schematics. |
| 81 | For thermistor inputs connected to generic AMUX or GPIO inputs |
| 82 | these can vary across platform for the same pins. Hence select |
| 83 | the platform schematics name for this channel. |
| 84 | |
| 85 | qcom,decimation: |
| 86 | $ref: /schemas/types.yaml#/definitions/uint32 |
| 87 | description: | |
| 88 | This parameter is used to decrease ADC sampling rate. |
| 89 | Quicker measurements can be made by reducing decimation ratio. |
| 90 | |
| 91 | qcom,pre-scaling: |
| 92 | description: | |
| 93 | Used for scaling the channel input signal before the signal is |
| 94 | fed to VADC. The configuration for this node is to know the |
| 95 | pre-determined ratio and use it for post scaling. It is a pair of |
| 96 | integers, denoting the numerator and denominator of the fraction by which |
| 97 | input signal is multiplied. For example, <1 3> indicates the signal is scaled |
| 98 | down to 1/3 of its value before ADC measurement. |
| 99 | If property is not found default value depending on chip will be used. |
| 100 | $ref: /schemas/types.yaml#/definitions/uint32-array |
| 101 | oneOf: |
| 102 | - items: |
| 103 | - const: 1 |
| 104 | - enum: [ 1, 3, 4, 6, 20, 8, 10, 16 ] |
| 105 | - items: |
| 106 | - const: 10 |
| 107 | - const: 81 |
| 108 | |
| 109 | qcom,ratiometric: |
| 110 | description: | |
| 111 | Channel calibration type. |
| 112 | - For compatible property "qcom,spmi-vadc", if this property is |
| 113 | specified VADC will use the VDD reference (1.8V) and GND for |
| 114 | channel calibration. If property is not found, channel will be |
| 115 | calibrated with 0.625V and 1.25V reference channels, also |
| 116 | known as absolute calibration. |
| 117 | - For compatible property "qcom,spmi-adc5", "qcom,spmi-adc7" and |
| 118 | "qcom,spmi-adc-rev2", if this property is specified VADC will use |
| 119 | the VDD reference (1.875V) and GND for channel calibration. If |
| 120 | property is not found, channel will be calibrated with 0V and 1.25V |
| 121 | reference channels, also known as absolute calibration. |
| 122 | type: boolean |
| 123 | |
| 124 | qcom,hw-settle-time: |
| 125 | $ref: /schemas/types.yaml#/definitions/uint32 |
| 126 | description: | |
| 127 | Time between AMUX getting configured and the ADC starting |
| 128 | conversion. The 'hw_settle_time' is an index used from valid values |
| 129 | and programmed in hardware to achieve the hardware settling delay. |
| 130 | |
| 131 | qcom,avg-samples: |
| 132 | $ref: /schemas/types.yaml#/definitions/uint32 |
| 133 | description: | |
| 134 | Number of samples to be used for measurement. |
| 135 | Averaging provides the option to obtain a single measurement |
| 136 | from the ADC that is an average of multiple samples. The value |
| 137 | selected is 2^(value). |
| 138 | |
| 139 | required: |
| 140 | - reg |
| 141 | |
| 142 | allOf: |
| 143 | - if: |
| 144 | properties: |
| 145 | compatible: |
| 146 | contains: |
| 147 | const: qcom,spmi-vadc |
| 148 | |
| 149 | then: |
| 150 | patternProperties: |
| 151 | "^channel@[0-9a-f]+$": |
| 152 | properties: |
| 153 | qcom,decimation: |
| 154 | enum: [ 512, 1024, 2048, 4096 ] |
| 155 | default: 512 |
| 156 | |
| 157 | qcom,hw-settle-time: |
| 158 | enum: [ 0, 100, 200, 300, 400, 500, 600, 700, 800, 900, 1, 2, |
| 159 | 4, 6, 8, 10 ] |
| 160 | default: 0 |
| 161 | |
| 162 | qcom,avg-samples: |
| 163 | enum: [ 1, 2, 4, 8, 16, 32, 64, 128, 256, 512 ] |
| 164 | default: 1 |
| 165 | |
| 166 | - if: |
| 167 | properties: |
| 168 | compatible: |
| 169 | contains: |
| 170 | const: qcom,spmi-adc-rev2 |
| 171 | |
| 172 | then: |
| 173 | patternProperties: |
| 174 | "^channel@[0-9a-f]+$": |
| 175 | properties: |
| 176 | qcom,decimation: |
| 177 | enum: [ 256, 512, 1024 ] |
| 178 | default: 1024 |
| 179 | |
| 180 | qcom,hw-settle-time: |
| 181 | enum: [ 0, 100, 200, 300, 400, 500, 600, 700, 800, 900, 1, 2, |
| 182 | 4, 6, 8, 10 ] |
| 183 | default: 0 |
| 184 | |
| 185 | qcom,avg-samples: |
| 186 | enum: [ 1, 2, 4, 8, 16 ] |
| 187 | default: 1 |
| 188 | |
| 189 | - if: |
| 190 | properties: |
| 191 | compatible: |
| 192 | contains: |
| 193 | const: qcom,spmi-adc5 |
| 194 | |
| 195 | then: |
| 196 | patternProperties: |
| 197 | "^channel@[0-9a-f]+$": |
| 198 | properties: |
| 199 | qcom,decimation: |
| 200 | enum: [ 250, 420, 840 ] |
| 201 | default: 840 |
| 202 | |
| 203 | qcom,hw-settle-time: |
| 204 | enum: [ 15, 100, 200, 300, 400, 500, 600, 700, 800, 900, 1, 2, |
| 205 | 4, 6, 8, 10, 16, 32, 64, 128 ] |
| 206 | default: 15 |
| 207 | |
| 208 | qcom,avg-samples: |
| 209 | enum: [ 1, 2, 4, 8, 16 ] |
| 210 | default: 1 |
| 211 | |
| 212 | - if: |
| 213 | properties: |
| 214 | compatible: |
| 215 | contains: |
| 216 | const: qcom,spmi-adc7 |
| 217 | |
| 218 | then: |
| 219 | patternProperties: |
| 220 | "^channel@[0-9a-f]+$": |
| 221 | properties: |
| 222 | qcom,decimation: |
| 223 | enum: [ 85, 340, 1360 ] |
| 224 | default: 1360 |
| 225 | |
| 226 | qcom,hw-settle-time: |
| 227 | enum: [ 15, 100, 200, 300, 400, 500, 600, 700, 1000, 2000, 4000, |
| 228 | 8000, 16000, 32000, 64000, 128000 ] |
| 229 | default: 15 |
| 230 | |
| 231 | qcom,avg-samples: |
| 232 | enum: [ 1, 2, 4, 8, 16 ] |
| 233 | default: 1 |
| 234 | |
| 235 | additionalProperties: false |
| 236 | |
| 237 | examples: |
| 238 | - | |
Tom Rini | 93743d2 | 2024-04-01 09:08:13 -0400 | [diff] [blame] | 239 | pmic { |
Tom Rini | 53633a8 | 2024-02-29 12:33:36 -0500 | [diff] [blame] | 240 | #address-cells = <1>; |
| 241 | #size-cells = <0>; |
Tom Rini | 93743d2 | 2024-04-01 09:08:13 -0400 | [diff] [blame] | 242 | |
| 243 | adc@3100 { |
Tom Rini | 53633a8 | 2024-02-29 12:33:36 -0500 | [diff] [blame] | 244 | compatible = "qcom,spmi-vadc"; |
| 245 | reg = <0x3100>; |
| 246 | interrupts = <0x0 0x31 0x0 0x1>; |
| 247 | #address-cells = <1>; |
| 248 | #size-cells = <0>; |
| 249 | #io-channel-cells = <1>; |
| 250 | |
| 251 | /* Channel node */ |
| 252 | channel@39 { |
| 253 | reg = <0x39>; |
| 254 | qcom,decimation = <512>; |
| 255 | qcom,ratiometric; |
| 256 | qcom,hw-settle-time = <200>; |
| 257 | qcom,avg-samples = <1>; |
| 258 | qcom,pre-scaling = <1 3>; |
| 259 | }; |
| 260 | |
| 261 | channel@9 { |
| 262 | reg = <0x9>; |
| 263 | }; |
| 264 | |
| 265 | channel@a { |
| 266 | reg = <0xa>; |
| 267 | }; |
| 268 | |
| 269 | channel@e { |
| 270 | reg = <0xe>; |
| 271 | }; |
| 272 | |
| 273 | channel@f { |
| 274 | reg = <0xf>; |
| 275 | }; |
| 276 | }; |
| 277 | }; |
| 278 | |
| 279 | - | |
| 280 | #include <dt-bindings/iio/qcom,spmi-adc7-pmk8350.h> |
| 281 | #include <dt-bindings/iio/qcom,spmi-adc7-pm8350.h> |
| 282 | #include <dt-bindings/interrupt-controller/irq.h> |
| 283 | |
Tom Rini | 93743d2 | 2024-04-01 09:08:13 -0400 | [diff] [blame] | 284 | pmic { |
Tom Rini | 53633a8 | 2024-02-29 12:33:36 -0500 | [diff] [blame] | 285 | #address-cells = <1>; |
| 286 | #size-cells = <0>; |
Tom Rini | 93743d2 | 2024-04-01 09:08:13 -0400 | [diff] [blame] | 287 | |
Tom Rini | 53633a8 | 2024-02-29 12:33:36 -0500 | [diff] [blame] | 288 | adc@3100 { |
| 289 | reg = <0x3100>; |
| 290 | compatible = "qcom,spmi-adc7"; |
| 291 | #address-cells = <1>; |
| 292 | #size-cells = <0>; |
| 293 | #io-channel-cells = <1>; |
| 294 | |
| 295 | /* Other properties are omitted */ |
| 296 | channel@44 { |
| 297 | reg = <PMK8350_ADC7_AMUX_THM1_100K_PU>; |
| 298 | qcom,ratiometric; |
| 299 | qcom,hw-settle-time = <200>; |
| 300 | label = "xo_therm"; |
| 301 | }; |
| 302 | |
| 303 | channel@47 { |
| 304 | reg = <PM8350_ADC7_AMUX_THM4_100K_PU(1)>; |
| 305 | qcom,ratiometric; |
| 306 | qcom,hw-settle-time = <200>; |
| 307 | label = "conn_therm"; |
| 308 | }; |
| 309 | }; |
| 310 | }; |