guowenxue
2024-09-26 339eff90ac6e178432f0fa203d259fcf27886fa9
commit | author | age
7d0d56 1 diff --git a/arch/arm64/boot/dts/freescale/Makefile b/arch/arm64/boot/dts/freescale/Makefile
W 2 index 7b1a129e6..1d5c6e770 100644
3 --- a/arch/arm64/boot/dts/freescale/Makefile
4 +++ b/arch/arm64/boot/dts/freescale/Makefile
5 @@ -412,3 +412,5 @@ dtb-$(CONFIG_ARCH_S32) += s32v234-evb.dtb \
6                s32v234-sbc.dtb
7  dtb-$(CONFIG_ARCH_MXC) += imx8qm-mek-sof-cs42888.dtb imx8qm-mek-sof-wm8960.dtb \
8                imx8qm-mek-revd-sof-wm8962.dtb imx8qm-mek-sof.dtb
9 +
10 +dtb-$(CONFIG_ARCH_MXC) += igkboard-imx8mp.dtb
11 diff --git a/arch/arm64/boot/dts/freescale/igkboard-imx8mp.dts b/arch/arm64/boot/dts/freescale/igkboard-imx8mp.dts
12 new file mode 100644
c6d260 13 index 000000000..31490ac6a
7d0d56 14 --- /dev/null
W 15 +++ b/arch/arm64/boot/dts/freescale/igkboard-imx8mp.dts
c6d260 16 @@ -0,0 +1,991 @@
7d0d56 17 +// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
6afea6 18 +/*
6f4428 19 + * Device Tree Source for LingYun IGKBoard(IoT Gateway Kits Board) - imx8mp
7d0d56 20 + * Copyright 2023 LingYun IoT System Studio.
W 21 + */
22 +
23 +/dts-v1/;
24 +
25 +#include <dt-bindings/usb/pd.h>
26 +#include "imx8mp.dtsi"
27 +
28 +/*+------------------------+
29 +  |       root node        |
30 +  +------------------------+*/
31 +/ {
32 +    model = "LingYun IoT Gateway Kits Board based on i.MX8MP";
33 +    compatible = "lingyun,igkboard-imx8mp", "fsl,imx8mp";
34 +
6f4428 35 +    /* console */
7d0d56 36 +    chosen {
W 37 +        stdout-path = &uart2;
38 +    };
39 +
40 +    /* MT53D512M32D2DS-053 WT:D, 2GB LPDDR4 */
41 +    memory@80000000 {
42 +        device_type = "memory";
6f4428 43 +        reg = <0x0 0x80000000 0 0x40000000>;
7d0d56 44 +    };
W 45 +
46 +    leds {
47 +        compatible = "gpio-leds";
48 +        pinctrl-names = "default";
49 +        pinctrl-0 = <&pinctrl_leds>;
50 +        status = "okay";
51 +
52 +        sysled {
53 +            label = "sysled";
54 +            gpios = <&gpio3 16 GPIO_ACTIVE_HIGH>;
7872ca 55 +            default-state = "on";
G 56 +            linux,default-trigger = "heartbeat";
57 +        };
58 +
59 +        ledred {
60 +            label = "redled";
61 +            gpios = <&gpio3 21 GPIO_ACTIVE_LOW>;
62 +            default-state = "off";
63 +        };
64 +
65 +        ledgreen {
66 +            label = "greenled";
67 +            gpios = <&gpio1 9 GPIO_ACTIVE_LOW>;
68 +            default-state = "off";
69 +        };
70 +
71 +        ledblue {
72 +            label = "blueled";
73 +            gpios = <&gpio1 14 GPIO_ACTIVE_LOW>;
74 +            default-state = "on";
f77a70 75 +            linux,default-trigger = "timer";
7872ca 76 +        };
G 77 +    };
78 +
79 +    keys {
80 +        compatible = "gpio-keys";
81 +        pinctrl-names = "default";
82 +        pinctrl-0 = <&pinctrl_keys>;
83 +        status = "okay";
84 +
85 +        key1 {
86 +            label = "K1";
87 +            gpios = <&gpio5 8 GPIO_ACTIVE_LOW>;
88 +            linux,code = <BTN_1>;
89 +        };
90 +
91 +        key2 {
92 +            label = "K2";
93 +            gpios = <&gpio5 9 GPIO_ACTIVE_LOW>;
94 +            linux,code = <BTN_2>;
95 +        };
96 +
97 +        key3 {
98 +            label = "K3";
99 +            gpios = <&gpio5 26 GPIO_ACTIVE_LOW>;
100 +            linux,code = <BTN_3>;
101 +        };
102 +
103 +        key4 {
104 +            label = "K4";
105 +            gpios = <&gpio5 27 GPIO_ACTIVE_LOW>;
106 +            linux,code = <BTN_4>;
7d0d56 107 +        };
35deae 108 +    };
G 109 +
110 +    sound-wm8960 {
111 +        compatible = "fsl,imx-audio-wm8960";
112 +        model = "wm8960-audio";
113 +        audio-cpu = <&sai3>;
114 +        audio-codec = <&codec>;
115 +        audio-asrc = <&easrc>;
116 +        //hp-det-gpio = <&gpio4 29 0>;
117 +        audio-routing =
118 +            "Headphone Jack", "HP_L",
119 +            "Headphone Jack", "HP_R",
120 +            "Ext Spk", "SPK_LP",
121 +            "Ext Spk", "SPK_LN",
122 +            "Ext Spk", "SPK_RP",
123 +            "Ext Spk", "SPK_RN",
124 +            "LINPUT1", "Mic Jack",
125 +            "LINPUT3", "Mic Jack",
126 +            "Mic Jack", "MICB";
7d0d56 127 +    };
6afea6 128 +
G 129 +    lvds0_panel {
130 +        compatible = "boe,ev121wxm-n10-1850";
131 +        backlight = <&lvds_backlight>;
132 +
133 +        port {
134 +            panel_lvds_in: endpoint {
135 +                remote-endpoint = <&lvds_out>;
136 +            };
137 +        };
138 +    };
139 +
140 +    lvds_backlight: lvds_backlight {
141 +        compatible = "pwm-backlight";
142 +        pwms = <&pwm2 0 100000 0>;
143 +        status = "okay";
144 +        enable-gpios = <&gpio1 13 GPIO_ACTIVE_HIGH>;
145 +        brightness-levels = < 0  1  2  3  4  5  6  7  8  9
146 +                     10 11 12 13 14 15 16 17 18 19
147 +                     20 21 22 23 24 25 26 27 28 29
148 +                     30 31 32 33 34 35 36 37 38 39
149 +                     40 41 42 43 44 45 46 47 48 49
150 +                     50 51 52 53 54 55 56 57 58 59
151 +                     60 61 62 63 64 65 66 67 68 69
152 +                     70 71 72 73 74 75 76 77 78 79
153 +                     80 81 82 83 84 85 86 87 88 89
154 +                     90 91 92 93 94 95 96 97 98 99
155 +                    100>;
156 +        default-brightness-level = <80>;
157 +    };
158 +
7d0d56 159 +};
W 160 +
161 +/*+------------------------+
162 +  |   power key & reset    |
163 +  +------------------------+*/
164 +
165 +&snvs_pwrkey {
166 +    status = "okay";
167 +};
168 +
169 +&wdog1 {
170 +    pinctrl-names = "default";
171 +    pinctrl-0 = <&pinctrl_wdog>;
172 +    fsl,ext-reset-output;
173 +    status = "okay";
174 +};
175 +
176 +/*+------------------------+
177 +  |    console usart2      |
178 +  +------------------------+*/
179 +&uart2 {
180 +    pinctrl-names = "default";
181 +    pinctrl-0 = <&pinctrl_uart2>;
182 +    status = "okay";
183 +};
184 +
185 +/*+------------------------+
186 +  |    8GB eMMC on SD3     |
187 +  +------------------------+*/
188 +
189 +/* KLM8G1GETF-B041 8GB eMMC */
190 +&usdhc3 {
191 +    pinctrl-names = "default", "state_100mhz", "state_200mhz";
192 +    pinctrl-0 = <&pinctrl_usdhc3>;
193 +    pinctrl-1 = <&pinctrl_usdhc3_100mhz>;
194 +    pinctrl-2 = <&pinctrl_usdhc3_200mhz>;
195 +    bus-width = <8>;
196 +    non-removable;
197 +    status = "okay";
198 +};
199 +
200 +/*+------------------------+
201 +  |     TF Card on SD2     |
202 +  +------------------------+*/
203 +
204 +&usdhc2 {
205 +    pinctrl-names = "default", "state_100mhz", "state_200mhz";
206 +    pinctrl-0 = <&pinctrl_usdhc2>, <&pinctrl_usdhc2_gpio>;
207 +    pinctrl-1 = <&pinctrl_usdhc2_100mhz>, <&pinctrl_usdhc2_gpio>;
208 +    pinctrl-2 = <&pinctrl_usdhc2_200mhz>, <&pinctrl_usdhc2_gpio>;
209 +    cd-gpios = <&gpio2 12 GPIO_ACTIVE_LOW>;
210 +    bus-width = <4>;
211 +    no-1-8-v;
212 +    status = "okay";
213 +};
214 +
215 +/*+------------------------+
216 +  | Typec USB for download |
217 +  +------------------------+*/
218 +
219 +&usb3_phy0 {
220 +    fsl,phy-tx-vref-tune = <6>;
221 +    fsl,phy-tx-rise-tune = <0>;
222 +    fsl,phy-tx-preemp-amp-tune = <3>;
223 +    fsl,phy-comp-dis-tune = <7>;
224 +    fsl,pcs-tx-deemph-3p5db = <0x21>;
225 +    fsl,phy-pcs-tx-swing-full = <0x7f>;
226 +    status = "okay";
227 +};
228 +
229 +&usb3_0 {
230 +    status = "okay";
231 +};
232 +
233 +&usb_dwc3_0 {
234 +    dr_mode = "peripheral";
235 +    hnp-disable;
236 +    srp-disable;
237 +    adp-disable;
238 +    status = "okay";
239 +};
240 +
241 +/*+------------------------+
242 +  | 2xUSB Host on USB Hub  |
243 +  +------------------------+*/
244 +
245 +/* Renesas USB 3.0 Hub uPD720210 */
246 +&usb3_phy1 {
247 +    fsl,phy-tx-preemp-amp-tune = <2>;
248 +    status = "okay";
249 +};
250 +
251 +&usb3_1 {
252 +    status = "okay";
253 +};
254 +
255 +&usb_dwc3_1 {
256 +    dr_mode = "host";
257 +    status = "okay";
258 +};
259 +
260 +/*+------------------------+
261 +  |        Ethernet        |
262 +  +------------------------+*/
263 +
264 +/* First 1000Mbps Ethernet For TSN on ENET */
265 +&eqos {
266 +    pinctrl-names = "default";
267 +    pinctrl-0 = <&pinctrl_eqos>;
268 +    phy-mode = "rgmii-id";
269 +    phy-handle = <&ethphy0>;
270 +    status = "okay";
271 +
272 +    mdio {
273 +        compatible = "snps,dwmac-mdio";
274 +        #address-cells = <1>;
275 +        #size-cells = <0>;
6f4428 276 +        clock-frequency = <5000000>;
7d0d56 277 +
W 278 +        ethphy0: ethernet-phy@0 { /* YT8521SH-CA */
279 +            compatible = "ethernet-phy-ieee802.3-c22";
280 +            reg = <0>;
281 +            eee-broken-1000t;
282 +        };
283 +    };
284 +};
285 +
6f4428 286 +/* Second 1000Mbps Ethernet on ENET1, test okay */
7d0d56 287 +&fec {
W 288 +    pinctrl-names = "default";
289 +    pinctrl-0 = <&pinctrl_fec>;
290 +    phy-mode = "rgmii-id";
291 +    phy-handle = <&ethphy1>;
292 +    fsl,magic-packet;
293 +    status = "okay";
294 +
295 +    mdio {
296 +        #address-cells = <1>;
297 +        #size-cells = <0>;
6f4428 298 +        clock-frequency = <5000000>;
7d0d56 299 +
W 300 +        ethphy1: ethernet-phy@0 { /* YT8521SH-CA */
301 +            compatible = "ethernet-phy-ieee802.3-c22";
302 +            reg = <0>;
303 +            eee-broken-1000t;
304 +        };
305 +    };
306 +};
307 +
308 +/*+------------------------+
500850 309 +  |      Misc Devices      |
G 310 +  +------------------------+*/
311 +
312 +/* Buzzer */
313 +&pwm1 {
314 +    pinctrl-names = "default";
315 +    pinctrl-0 = <&pinctrl_pwm1>;
316 +    status = "okay";
317 +};
318 +
2b23f8 319 +&i2c2 {
G 320 +    clock-frequency = <100000>;
321 +    pinctrl-names = "default";
322 +    pinctrl-0 = <&pinctrl_i2c2>;
323 +    status = "okay";
324 +
35deae 325 +    codec: wm8960@1a {
G 326 +        compatible = "wlf,wm8960";
327 +        reg = <0x1a>;
328 +        clocks = <&audio_blk_ctrl IMX8MP_CLK_AUDIO_BLK_CTRL_SAI3_MCLK1>;
329 +        clock-names = "mclk";
330 +        wlf,shared-lrclk;
2f7a23 331 +    };
G 332 +
c6d260 333 +    ov5640_0: ov5640_mipi@3c {
G 334 +        compatible = "ovti,ov5640";
335 +        reg = <0x3c>;
336 +        pinctrl-names = "default";
337 +        pinctrl-0 = <&pinctrl_csi0>;
338 +        clocks = <&clk IMX8MP_CLK_IPP_DO_CLKO2>;
339 +        clock-names = "xclk";
340 +        assigned-clocks = <&clk IMX8MP_CLK_IPP_DO_CLKO2>;
341 +        assigned-clock-parents = <&clk IMX8MP_CLK_24M>;
342 +        assigned-clock-rates = <24000000>;
343 +        csi_id = <0>;
344 +        powerdown-gpios = <&gpio2 11 GPIO_ACTIVE_HIGH>;
345 +        reset-gpios = <&gpio1 6 GPIO_ACTIVE_LOW>;
346 +        mclk = <24000000>;
347 +        mclk_source = <0>;
348 +        mipi_csi;
349 +        status = "okay";
350 +
351 +        port {
352 +            ov5640_mipi_0_ep: endpoint {
353 +                remote-endpoint = <&mipi_csi0_ep>;
354 +                data-lanes = <1 2>;
355 +                clock-lanes = <0>;
356 +            };
357 +        };
358 +    };
359 +
2f7a23 360 +    ms1112@4a {
G 361 +        compatible = "ms,ms1112";
362 +        reg = <0x4a>;
363 +        status = "okay";
364 +        #address-cells = <1>;
365 +        #size-cells = <0>;
366 +
367 +        channel@2 {
368 +                reg = <2>;
369 +                ti,gain = <0>;
370 +                ti,datarate = <3>;
371 +                ti,mode = <1>;
372 +        };
373 +
374 +        channel@3{
375 +                reg = <3>;
376 +                ti,gain = <0>;
377 +                ti,datarate = <3>;
378 +                ti,mode = <1>;
379 +        };
2b23f8 380 +    };
35deae 381 +
G 382 +    rtc1208@6f {
383 +        compatible = "isil,isl1208";
384 +        reg = <0x6f>;
385 +        status = "okay";
386 +    };
387 +};
388 +
389 +/*+------------------------+
390 +  |   WM8960 Audio Codec   |
391 +  +------------------------+*/
392 +
393 +&sai3 {
394 +    pinctrl-names = "default";
395 +    pinctrl-0 = <&pinctrl_sai3>;
396 +    assigned-clocks = <&clk IMX8MP_CLK_SAI3>;
397 +    assigned-clock-parents = <&clk IMX8MP_AUDIO_PLL1_OUT>;
398 +    assigned-clock-rates = <12288000>;
399 +    clocks = <&audio_blk_ctrl IMX8MP_CLK_AUDIO_BLK_CTRL_SAI3_IPG>, <&clk IMX8MP_CLK_DUMMY>,
400 +         <&audio_blk_ctrl IMX8MP_CLK_AUDIO_BLK_CTRL_SAI3_MCLK1>, <&clk IMX8MP_CLK_DUMMY>,
401 +         <&clk IMX8MP_CLK_DUMMY>;
402 +    clock-names = "bus", "mclk0", "mclk1", "mclk2", "mclk3";
403 +    fsl,sai-mclk-direction-output;
404 +    status = "okay";
405 +};
406 +
407 +&easrc {
408 +    fsl,asrc-rate  = <48000>;
409 +    status = "okay";
410 +};
411 +
412 +&xcvr {
413 +    #sound-dai-cells = <0>;
414 +    status = "okay";
415 +};
416 +
417 +&sdma2 {
418 +    status = "okay";
c6d260 419 +};
G 420 +
421 +/*+------------------------+
422 +  | MIPI-CSI OV5640 Camera |
423 +  +------------------------+*/
424 +
425 +&mipi_csi_0 {
426 +    #address-cells = <1>;
427 +    #size-cells = <0>;
428 +    status = "okay";
429 +
430 +    port@0 {
431 +        reg = <0>;
432 +        mipi_csi0_ep: endpoint {
433 +            remote-endpoint = <&ov5640_mipi_0_ep>;
434 +            data-lanes = <2>;
435 +            csis-hs-settle = <13>;
436 +            csis-clk-settle = <2>;
437 +            csis-wclk;
438 +        };
439 +    };
440 +};
441 +
442 +&vpu_g1 {
443 +    status = "okay";
444 +};
445 +
446 +&vpu_g2 {
447 +    status = "okay";
448 +};
449 +
450 +&vpu_vc8000e {
451 +    status = "okay";
452 +};
453 +
454 +&vpu_v4l2 {
455 +    status = "okay";
456 +};
457 +
458 +&cameradev {
459 +    status = "okay";
460 +};
461 +
462 +&isi_0 {
463 +    status = "okay";
464 +
465 +    cap_device {
466 +        status = "okay";
467 +    };
468 +
469 +    m2m_device {
470 +        status = "okay";
471 +    };
2b23f8 472 +};
G 473 +
500850 474 +/*+------------------------+
b8d029 475 +  |      HDMI Display      |
G 476 +  +------------------------+*/
477 +
478 +&irqsteer_hdmi {
479 +    status = "okay";
480 +};
481 +
482 +&hdmi_blk_ctrl {
483 +    status = "okay";
484 +};
485 +
486 +&hdmi_pavi {
487 +    status = "okay";
488 +};
489 +
490 +&hdmi {
491 +    status = "okay";
492 +};
493 +
494 +&hdmiphy {
495 +    status = "okay";
496 +};
497 +
498 +&lcdif3 {
499 +    status = "okay";
500 +
501 +    thres-low  = <1 2>;     /* (FIFO * 1 / 2) */
502 +    thres-high = <3 4>;     /* (FIFO * 3 / 4) */
503 +};
504 +
505 +/*+------------------------+
6afea6 506 +  |      LVDS Display      |
G 507 +  +------------------------+*/
508 +
509 +&pwm2 {
510 +    pinctrl-names = "default";
511 +    pinctrl-0 = <&pinctrl_pwm2>;
512 +    status = "okay";
513 +};
514 +
515 +&lcdif2 {
516 +    status = "okay";
517 +};
518 +
519 +&ldb {
520 +    status = "okay";
521 +
522 +    lvds-channel@0 {
523 +        fsl,data-mapping = "spwg";
524 +        fsl,data-width = <24>;
525 +        status = "okay";
526 +
527 +        /delete-node/ port@1;
528 +        port@1 {
529 +            reg = <1>;
530 +
531 +            lvds_out: endpoint {
532 +                remote-endpoint = <&panel_lvds_in>;
533 +            };
534 +        };
535 +    };
536 +};
537 +
538 +&ldb_phy {
539 +    status = "okay";
540 +};
541 +
542 +/*+------------------------+
ac4b9f 543 +  |  CAN/RS485 interface   |
G 544 +  +------------------------+*/
b8d029 545 +
ac4b9f 546 +/* RS485 */
G 547 +&uart3 {
548 +    pinctrl-names = "default";
549 +    pinctrl-0 = <&pinctrl_uart3>;
550 +    status = "okay";
551 +};
552 +
553 +/* CAN */
554 +&flexcan1 {
555 +    pinctrl-names = "default";
556 +    pinctrl-0 = <&pinctrl_flexcan1>;
557 +    status = "okay";
558 +};
559 +
560 +&flexcan2 {
561 +    pinctrl-names = "default";
562 +    pinctrl-0 = <&pinctrl_flexcan2>;
563 +    status = "okay";
564 +};
565 +
566 +/*+------------------------+
500850 567 +  |   MikroBUS interface   |
G 568 +  +------------------------+*/
569 +
570 +/* Same as RPi 40Pin extend interface: #32 */
571 +&pwm3 {
572 +    pinctrl-names = "default";
573 +    pinctrl-0 = <&pinctrl_pwm3>;
574 +    status = "okay";
575 +};
576 +
577 +/* Same as RPi 40Pin extend interface: #19, #21, #23, #24 */
578 +&uart1 {
579 +    pinctrl-names = "default";
580 +    pinctrl-0 = <&pinctrl_uart1>;
581 +    assigned-clocks = <&clk IMX8MP_CLK_UART1>;
582 +    assigned-clock-parents = <&clk IMX8MP_SYS_PLL1_80M>;
583 +    status = "okay";
584 +};
585 +
586 +/* Same as RPi 40Pin extend interface */
587 +&ecspi2 {
588 +    #address-cells = <1>;
589 +    #size-cells = <0>;
590 +    fsl,spi-num-chipselects = <1>;
591 +    pinctrl-names = "default";
592 +    pinctrl-0 = <&pinctrl_ecspi2>;
593 +    cs-gpios = <&gpio5 13 GPIO_ACTIVE_LOW>;
594 +    status = "okay";
595 +
596 +    spidev@0 {
597 +        compatible = "fsl,spidev", "semtech,sx1301";
598 +        reg = <0>;
599 +        spi-max-frequency = <2000000>;
600 +    };
601 +};
602 +
603 +/* Same as RPi 40Pin extend interface: #3, #5 */
604 +&i2c5 {
605 +    clock-frequency = <100000>;
606 +    pinctrl-names = "default";
607 +    pinctrl-0 = <&pinctrl_i2c5>;
608 +    status = "okay";
2b23f8 609 +
G 610 +    hdc1080@40 {
611 +        compatible = "ti,hdc1080";
612 +        reg = <0x40>;
613 +        status = "okay";
614 +    };
615 +
616 +    eeprom@50 {
617 +        compatible = "microchip,24c32", "atmel,24c32";
618 +        reg = <0x50>;
619 +        pagesize = <32>;
620 +        num-addresses = <8>;
621 +    };
500850 622 +};
G 623 +
624 +/*+------------------------+
7d0d56 625 +  |    PCA9450CHN PMIC     |
W 626 +  +------------------------+*/
627 +
628 +&i2c1 {
629 +    clock-frequency = <400000>;
500850 630 +    pinctrl-names = "default";
7d0d56 631 +    pinctrl-0 = <&pinctrl_i2c1>;
W 632 +    status = "okay";
633 +
634 +    pmic@25 {
635 +        compatible = "nxp,pca9450c";
636 +        reg = <0x25>;
637 +        pinctrl-names = "default";
638 +        pinctrl-0 = <&pinctrl_pmic>;
639 +        interrupt-parent = <&gpio1>;
640 +        interrupts = <3 IRQ_TYPE_LEVEL_LOW>;
641 +
642 +        regulators {
643 +            buck1: BUCK1 {
644 +                regulator-name = "BUCK1";
645 +                regulator-min-microvolt = <600000>;
646 +                regulator-max-microvolt = <2187500>;
647 +                regulator-boot-on;
648 +                regulator-always-on;
649 +                regulator-ramp-delay = <3125>;
650 +            };
651 +
652 +            buck2: BUCK2 {
653 +                regulator-name = "BUCK2";
654 +                regulator-min-microvolt = <600000>;
655 +                regulator-max-microvolt = <2187500>;
656 +                regulator-boot-on;
657 +                regulator-always-on;
658 +                regulator-ramp-delay = <3125>;
659 +                nxp,dvs-run-voltage = <950000>;
660 +                nxp,dvs-standby-voltage = <850000>;
661 +            };
662 +
663 +            buck4: BUCK4{
664 +                regulator-name = "BUCK4";
665 +                regulator-min-microvolt = <600000>;
666 +                regulator-max-microvolt = <3400000>;
667 +                regulator-boot-on;
668 +                regulator-always-on;
669 +            };
670 +
671 +            buck5: BUCK5{
672 +                regulator-name = "BUCK5";
673 +                regulator-min-microvolt = <600000>;
674 +                regulator-max-microvolt = <3400000>;
675 +                regulator-boot-on;
676 +                regulator-always-on;
677 +            };
678 +
679 +            buck6: BUCK6 {
680 +                regulator-name = "BUCK6";
681 +                regulator-min-microvolt = <600000>;
682 +                regulator-max-microvolt = <3400000>;
683 +                regulator-boot-on;
684 +                regulator-always-on;
685 +            };
686 +
687 +            ldo1: LDO1 {
688 +                regulator-name = "LDO1";
689 +                regulator-min-microvolt = <1600000>;
690 +                regulator-max-microvolt = <3300000>;
691 +                regulator-boot-on;
692 +                regulator-always-on;
693 +            };
694 +
695 +            ldo2: LDO2 {
696 +                regulator-name = "LDO2";
697 +                regulator-min-microvolt = <800000>;
698 +                regulator-max-microvolt = <1150000>;
699 +                regulator-boot-on;
700 +                regulator-always-on;
701 +            };
702 +
703 +            ldo3: LDO3 {
704 +                regulator-name = "LDO3";
705 +                regulator-min-microvolt = <800000>;
706 +                regulator-max-microvolt = <3300000>;
707 +                regulator-boot-on;
708 +                regulator-always-on;
709 +            };
710 +
711 +            ldo4: LDO4 {
712 +                regulator-name = "LDO4";
713 +                regulator-min-microvolt = <800000>;
714 +                regulator-max-microvolt = <3300000>;
715 +                regulator-boot-on;
716 +                regulator-always-on;
717 +            };
718 +
719 +            ldo5: LDO5 {
720 +                regulator-name = "LDO5";
721 +                regulator-min-microvolt = <1800000>;
722 +                regulator-max-microvolt = <3300000>;
723 +                regulator-boot-on;
724 +                regulator-always-on;
725 +            };
726 +        };
727 +    };
728 +};
729 +
730 +&iomuxc {
731 +    pinctrl-names = "default";
b8d029 732 +    pinctrl-0 = <&pinctrl_hog>;
G 733 +
734 +    pinctrl_hog: hoggrp {
735 +        fsl,pins = <
736 +            MX8MP_IOMUXC_HDMI_DDC_SCL__HDMIMIX_HDMI_SCL                 0x400001c2
737 +            MX8MP_IOMUXC_HDMI_DDC_SDA__HDMIMIX_HDMI_SDA                 0x400001c2
738 +            MX8MP_IOMUXC_HDMI_HPD__HDMIMIX_HDMI_HPD                     0x40000010
739 +            MX8MP_IOMUXC_HDMI_CEC__HDMIMIX_HDMI_CEC                     0x40000010
740 +            /*
741 +             * M.2 pin20 & pin21 need to be set to 11 for 88W9098 to select the
742 +             * default Reference Clock Frequency
743 +             */
744 +            MX8MP_IOMUXC_SD1_DATA7__GPIO2_IO09                          0x1c4
745 +        >;
746 +    };
7d0d56 747 +
500850 748 +    pinctrl_wdog: wdoggrp {
G 749 +        fsl,pins = <
750 +            MX8MP_IOMUXC_GPIO1_IO02__WDOG1_WDOG_B                       0xc6
751 +        >;
752 +    };
753 +
7d0d56 754 +    pinctrl_leds: ledsgrp {
W 755 +        fsl,pins = <
756 +            MX8MP_IOMUXC_NAND_READY_B__GPIO3_IO16                       0x140
7872ca 757 +            MX8MP_IOMUXC_GPIO1_IO14__GPIO1_IO14                         0x140
G 758 +            MX8MP_IOMUXC_GPIO1_IO09__GPIO1_IO09                         0x140
759 +            MX8MP_IOMUXC_SAI5_RXD0__GPIO3_IO21                          0x140
760 +        >;
761 +    };
762 +
763 +    pinctrl_keys: keysgrp {
764 +        fsl,pins = <
765 +            MX8MP_IOMUXC_ECSPI1_MISO__GPIO5_IO08                        0x140
766 +            MX8MP_IOMUXC_ECSPI1_SS0__GPIO5_IO09                         0x140
767 +            MX8MP_IOMUXC_UART3_RXD__GPIO5_IO26                          0x140
768 +            MX8MP_IOMUXC_UART3_TXD__GPIO5_IO27                          0x140
7d0d56 769 +        >;
W 770 +    };
771 +
6afea6 772 +    pinctrl_pwm1: pwm1grp { /* Buzzer */
7d0d56 773 +        fsl,pins = <
500850 774 +            MX8MP_IOMUXC_GPIO1_IO08__PWM1_OUT                           0x116
G 775 +        >;
776 +    };
777 +
6afea6 778 +    pinctrl_pwm2: pwm2grp { /* LVDS */
G 779 +        fsl,pins = <
780 +            MX8MP_IOMUXC_GPIO1_IO11__PWM2_OUT   0x116
781 +        >;
782 +    };
783 +
784 +    pinctrl_pwm3: pwm3grp { /* RPi#40Pin and MikroBUS */
500850 785 +        fsl,pins = <
G 786 +            MX8MP_IOMUXC_SAI5_RXC__PWM3_OUT                             0x116
787 +        >;
788 +    };
789 +
6afea6 790 +    pinctrl_uart1: uart1grp { /* RPi#40Pin and MikroBUS */
500850 791 +        fsl,pins = <
G 792 +            MX8MP_IOMUXC_UART1_RXD__UART1_DCE_RX                        0x140
793 +            MX8MP_IOMUXC_UART1_TXD__UART1_DCE_TX                        0x140
7d0d56 794 +        >;
W 795 +    };
796 +
6afea6 797 +    pinctrl_uart2: uart2grp { /* Console */
7d0d56 798 +        fsl,pins = <
W 799 +            MX8MP_IOMUXC_UART2_RXD__UART2_DCE_RX                        0x49
800 +            MX8MP_IOMUXC_UART2_TXD__UART2_DCE_TX                        0x49
801 +        >;
802 +    };
803 +
6afea6 804 +    pinctrl_uart3: uart3grp { /* RS485 */
ac4b9f 805 +        fsl,pins = <
G 806 +            MX8MP_IOMUXC_ECSPI1_SCLK__UART3_DCE_RX                      0x82
807 +            MX8MP_IOMUXC_ECSPI1_MOSI__UART3_DCE_TX                      0x82
808 +        >;
809 +    };
810 +
811 +    pinctrl_flexcan1: flexcan1grp {
812 +        fsl,pins = <
813 +            MX8MP_IOMUXC_SPDIF_TX__CAN1_TX                              0x154
814 +            MX8MP_IOMUXC_SPDIF_RX__CAN1_RX                              0x154
815 +        >;
816 +    };
817 +
818 +    pinctrl_flexcan2: flexcan2grp {
819 +        fsl,pins = <
820 +            MX8MP_IOMUXC_SAI5_MCLK__CAN2_RX                             0x154
821 +            MX8MP_IOMUXC_SAI5_RXD3__CAN2_TX                             0x154
822 +        >;
823 +    };
824 +
6afea6 825 +    pinctrl_ecspi2: ecspi2grp { /* RPi#40Pin and MikroBUS */
500850 826 +        fsl,pins = <
G 827 +            MX8MP_IOMUXC_ECSPI2_SCLK__ECSPI2_SCLK                       0x82
828 +            MX8MP_IOMUXC_ECSPI2_MOSI__ECSPI2_MOSI                       0x82
829 +            MX8MP_IOMUXC_ECSPI2_MISO__ECSPI2_MISO                       0x82
830 +            MX8MP_IOMUXC_ECSPI2_SS0__GPIO5_IO13                         0x40000
831 +        >;
832 +    };
833 +
6afea6 834 +    pinctrl_i2c1: i2c1grp { /* PMIC */
7d0d56 835 +        fsl,pins = <
W 836 +            MX8MP_IOMUXC_I2C1_SCL__I2C1_SCL                             0x400001c3
837 +            MX8MP_IOMUXC_I2C1_SDA__I2C1_SDA                             0x400001c3
838 +        >;
839 +    };
840 +
6afea6 841 +    pinctrl_i2c2: i2c2grp { /* WM8960, MS1112, ISL1208 */
2b23f8 842 +        fsl,pins = <
G 843 +            MX8MP_IOMUXC_I2C2_SCL__I2C2_SCL                             0x400001c2
844 +            MX8MP_IOMUXC_I2C2_SDA__I2C2_SDA                             0x400001c2
845 +        >;
846 +    };
847 +
6afea6 848 +    pinctrl_i2c5: i2c5grp { /* RPi#40Pin and MikroBUS, HDC1080, AT24C32 */
7d0d56 849 +        fsl,pins = <
500850 850 +            MX8MP_IOMUXC_SD1_CMD__I2C5_SDA                              0x400001c2
G 851 +            MX8MP_IOMUXC_SD1_CLK__I2C5_SCL                              0x400001c2
7d0d56 852 +        >;
W 853 +    };
854 +
35deae 855 +    pinctrl_sai3: sai3grp {
G 856 +        fsl,pins = <
857 +            MX8MP_IOMUXC_SAI3_TXFS__AUDIOMIX_SAI3_TX_SYNC               0xd6
858 +            MX8MP_IOMUXC_SAI3_TXC__AUDIOMIX_SAI3_TX_BCLK                0xd6
859 +            MX8MP_IOMUXC_SAI3_RXD__AUDIOMIX_SAI3_RX_DATA00              0xd6
860 +            MX8MP_IOMUXC_SAI3_TXD__AUDIOMIX_SAI3_TX_DATA00              0xd6
861 +            MX8MP_IOMUXC_SAI3_MCLK__AUDIOMIX_SAI3_MCLK                  0xd6
862 +            MX8MP_IOMUXC_SAI3_RXC__GPIO4_IO29                           0xd6
863 +        >;
864 +    };
865 +
c6d260 866 +    pinctrl_csi0: csi0_grp {
G 867 +         fsl,pins = <
868 +            MX8MP_IOMUXC_SD1_STROBE__GPIO2_IO11                         0x10 /* PWN */
869 +            MX8MP_IOMUXC_GPIO1_IO06__GPIO1_IO06                         0x10 /* RST */
870 +            MX8MP_IOMUXC_GPIO1_IO15__CCM_CLKO2                          0x50 /* MCLK */
871 +        >;
872 +    };
873 +
7d0d56 874 +    pinctrl_pmic: pmicirq {
W 875 +        fsl,pins = <
876 +            MX8MP_IOMUXC_GPIO1_IO03__GPIO1_IO03                         0x41
877 +        >;
878 +    };
879 +
880 +    pinctrl_usdhc2_gpio: usdhc2grp-gpio {
881 +        fsl,pins = <
882 +            MX8MP_IOMUXC_SD2_CD_B__GPIO2_IO12                           0x1c4
883 +        >;
884 +    };
885 +
886 +    pinctrl_usdhc2: usdhc2grp {
887 +        fsl,pins = <
888 +            MX8MP_IOMUXC_SD2_CLK__USDHC2_CLK                            0x190
889 +            MX8MP_IOMUXC_SD2_CMD__USDHC2_CMD                            0x1d0
890 +            MX8MP_IOMUXC_SD2_DATA0__USDHC2_DATA0                        0x1d0
891 +            MX8MP_IOMUXC_SD2_DATA1__USDHC2_DATA1                        0x1d0
892 +            MX8MP_IOMUXC_SD2_DATA2__USDHC2_DATA2                        0x1d0
893 +            MX8MP_IOMUXC_SD2_DATA3__USDHC2_DATA3                        0x1d0
894 +            MX8MP_IOMUXC_GPIO1_IO04__USDHC2_VSELECT                     0xc1
895 +        >;
896 +    };
897 +
898 +    pinctrl_usdhc2_100mhz: usdhc2grp-100mhz {
899 +        fsl,pins = <
900 +            MX8MP_IOMUXC_SD2_CLK__USDHC2_CLK                            0x194
901 +            MX8MP_IOMUXC_SD2_CMD__USDHC2_CMD                            0x1d4
902 +            MX8MP_IOMUXC_SD2_DATA0__USDHC2_DATA0                        0x1d4
903 +            MX8MP_IOMUXC_SD2_DATA1__USDHC2_DATA1                        0x1d4
904 +            MX8MP_IOMUXC_SD2_DATA2__USDHC2_DATA2                        0x1d4
905 +            MX8MP_IOMUXC_SD2_DATA3__USDHC2_DATA3                        0x1d4
906 +            MX8MP_IOMUXC_GPIO1_IO04__USDHC2_VSELECT                     0xc1
907 +        >;
908 +    };
909 +
910 +    pinctrl_usdhc2_200mhz: usdhc2grp-200mhz {
911 +        fsl,pins = <
912 +            MX8MP_IOMUXC_SD2_CLK__USDHC2_CLK                            0x196
913 +            MX8MP_IOMUXC_SD2_CMD__USDHC2_CMD                            0x1d6
914 +            MX8MP_IOMUXC_SD2_DATA0__USDHC2_DATA0                        0x1d6
915 +            MX8MP_IOMUXC_SD2_DATA1__USDHC2_DATA1                        0x1d6
916 +            MX8MP_IOMUXC_SD2_DATA2__USDHC2_DATA2                        0x1d6
917 +            MX8MP_IOMUXC_SD2_DATA3__USDHC2_DATA3                        0x1d6
918 +            MX8MP_IOMUXC_GPIO1_IO04__USDHC2_VSELECT                     0xc1
919 +        >;
920 +    };
921 +
922 +    pinctrl_usdhc3: usdhc3grp {
923 +        fsl,pins = <
924 +            MX8MP_IOMUXC_NAND_WE_B__USDHC3_CLK                          0x190
925 +            MX8MP_IOMUXC_NAND_WP_B__USDHC3_CMD                          0x1d0
926 +            MX8MP_IOMUXC_NAND_DATA04__USDHC3_DATA0                      0x1d0
927 +            MX8MP_IOMUXC_NAND_DATA05__USDHC3_DATA1                      0x1d0
928 +            MX8MP_IOMUXC_NAND_DATA06__USDHC3_DATA2                      0x1d0
929 +            MX8MP_IOMUXC_NAND_DATA07__USDHC3_DATA3                      0x1d0
930 +            MX8MP_IOMUXC_NAND_RE_B__USDHC3_DATA4                        0x1d0
931 +            MX8MP_IOMUXC_NAND_CE2_B__USDHC3_DATA5                       0x1d0
932 +            MX8MP_IOMUXC_NAND_CE3_B__USDHC3_DATA6                       0x1d0
933 +            MX8MP_IOMUXC_NAND_CLE__USDHC3_DATA7                         0x1d0
934 +            MX8MP_IOMUXC_NAND_CE1_B__USDHC3_STROBE                      0x190
935 +        >;
936 +    };
937 +
938 +    pinctrl_usdhc3_100mhz: usdhc3grp-100mhz {
939 +        fsl,pins = <
940 +            MX8MP_IOMUXC_NAND_WE_B__USDHC3_CLK                          0x194
941 +            MX8MP_IOMUXC_NAND_WP_B__USDHC3_CMD                          0x1d4
942 +            MX8MP_IOMUXC_NAND_DATA04__USDHC3_DATA0                      0x1d4
943 +            MX8MP_IOMUXC_NAND_DATA05__USDHC3_DATA1                      0x1d4
944 +            MX8MP_IOMUXC_NAND_DATA06__USDHC3_DATA2                      0x1d4
945 +            MX8MP_IOMUXC_NAND_DATA07__USDHC3_DATA3                      0x1d4
946 +            MX8MP_IOMUXC_NAND_RE_B__USDHC3_DATA4                        0x1d4
947 +            MX8MP_IOMUXC_NAND_CE2_B__USDHC3_DATA5                       0x1d4
948 +            MX8MP_IOMUXC_NAND_CE3_B__USDHC3_DATA6                       0x1d4
949 +            MX8MP_IOMUXC_NAND_CLE__USDHC3_DATA7                         0x1d4
950 +            MX8MP_IOMUXC_NAND_CE1_B__USDHC3_STROBE                      0x194
951 +        >;
952 +    };
953 +
954 +    pinctrl_usdhc3_200mhz: usdhc3grp-200mhz {
955 +        fsl,pins = <
956 +            MX8MP_IOMUXC_NAND_WE_B__USDHC3_CLK                          0x196
957 +            MX8MP_IOMUXC_NAND_WP_B__USDHC3_CMD                          0x1d6
958 +            MX8MP_IOMUXC_NAND_DATA04__USDHC3_DATA0                      0x1d6
959 +            MX8MP_IOMUXC_NAND_DATA05__USDHC3_DATA1                      0x1d6
960 +            MX8MP_IOMUXC_NAND_DATA06__USDHC3_DATA2                      0x1d6
961 +            MX8MP_IOMUXC_NAND_DATA07__USDHC3_DATA3                      0x1d6
962 +            MX8MP_IOMUXC_NAND_RE_B__USDHC3_DATA4                        0x1d6
963 +            MX8MP_IOMUXC_NAND_CE2_B__USDHC3_DATA5                       0x1d6
964 +            MX8MP_IOMUXC_NAND_CE3_B__USDHC3_DATA6                       0x1d6
965 +            MX8MP_IOMUXC_NAND_CLE__USDHC3_DATA7                         0x1d6
966 +            MX8MP_IOMUXC_NAND_CE1_B__USDHC3_STROBE                      0x196
967 +        >;
968 +    };
969 +
970 +    pinctrl_eqos: eqosgrp {
971 +        fsl,pins = <
972 +            MX8MP_IOMUXC_ENET_MDC__ENET_QOS_MDC                         0x2
973 +            MX8MP_IOMUXC_ENET_MDIO__ENET_QOS_MDIO                       0x2
974 +            MX8MP_IOMUXC_ENET_RD0__ENET_QOS_RGMII_RD0                   0x90
975 +            MX8MP_IOMUXC_ENET_RD1__ENET_QOS_RGMII_RD1                   0x90
976 +            MX8MP_IOMUXC_ENET_RD2__ENET_QOS_RGMII_RD2                   0x90
977 +            MX8MP_IOMUXC_ENET_RD3__ENET_QOS_RGMII_RD3                   0x90
978 +            MX8MP_IOMUXC_ENET_RXC__CCM_ENET_QOS_CLOCK_GENERATE_RX_CLK   0x90
979 +            MX8MP_IOMUXC_ENET_RX_CTL__ENET_QOS_RGMII_RX_CTL             0x90
980 +            MX8MP_IOMUXC_ENET_TD0__ENET_QOS_RGMII_TD0                   0x16
981 +            MX8MP_IOMUXC_ENET_TD1__ENET_QOS_RGMII_TD1                   0x16
982 +            MX8MP_IOMUXC_ENET_TD2__ENET_QOS_RGMII_TD2                   0x16
983 +            MX8MP_IOMUXC_ENET_TD3__ENET_QOS_RGMII_TD3                   0x16
984 +            MX8MP_IOMUXC_ENET_TX_CTL__ENET_QOS_RGMII_TX_CTL             0x16
985 +            MX8MP_IOMUXC_ENET_TXC__CCM_ENET_QOS_CLOCK_GENERATE_TX_CLK   0x16
986 +        >;
987 +    };
988 +
989 +    pinctrl_fec: fecgrp {
990 +        fsl,pins = <
991 +            MX8MP_IOMUXC_SAI1_RXD2__ENET1_MDC                           0x2
992 +            MX8MP_IOMUXC_SAI1_RXD3__ENET1_MDIO                          0x2
993 +            MX8MP_IOMUXC_SAI1_RXD4__ENET1_RGMII_RD0                     0x90
994 +            MX8MP_IOMUXC_SAI1_RXD5__ENET1_RGMII_RD1                     0x90
995 +            MX8MP_IOMUXC_SAI1_RXD6__ENET1_RGMII_RD2                     0x90
996 +            MX8MP_IOMUXC_SAI1_RXD7__ENET1_RGMII_RD3                     0x90
997 +            MX8MP_IOMUXC_SAI1_TXC__ENET1_RGMII_RXC                      0x90
998 +            MX8MP_IOMUXC_SAI1_TXFS__ENET1_RGMII_RX_CTL                  0x90
999 +            MX8MP_IOMUXC_SAI1_TXD0__ENET1_RGMII_TD0                     0x16
1000 +            MX8MP_IOMUXC_SAI1_TXD1__ENET1_RGMII_TD1                     0x16
1001 +            MX8MP_IOMUXC_SAI1_TXD2__ENET1_RGMII_TD2                     0x16
1002 +            MX8MP_IOMUXC_SAI1_TXD3__ENET1_RGMII_TD3                     0x16
1003 +            MX8MP_IOMUXC_SAI1_TXD4__ENET1_RGMII_TX_CTL                  0x16
1004 +            MX8MP_IOMUXC_SAI1_TXD5__ENET1_RGMII_TXC                     0x16
1005 +        >;
1006 +    };
1007 +};
1008 diff --git a/arch/arm64/configs/igkboard-imx8mp_defconfig b/arch/arm64/configs/igkboard-imx8mp_defconfig
1009 new file mode 100644
2f7a23 1010 index 000000000..b0f923742
7d0d56 1011 --- /dev/null
W 1012 +++ b/arch/arm64/configs/igkboard-imx8mp_defconfig
2f7a23 1013 @@ -0,0 +1,1103 @@
7d0d56 1014 +CONFIG_SYSVIPC=y
W 1015 +CONFIG_POSIX_MQUEUE=y
1016 +CONFIG_AUDIT=y
1017 +CONFIG_NO_HZ_IDLE=y
1018 +CONFIG_HIGH_RES_TIMERS=y
1019 +CONFIG_BPF_SYSCALL=y
1020 +CONFIG_BPF_JIT=y
1021 +CONFIG_PREEMPT=y
1022 +CONFIG_IRQ_TIME_ACCOUNTING=y
1023 +CONFIG_BSD_PROCESS_ACCT=y
1024 +CONFIG_BSD_PROCESS_ACCT_V3=y
1025 +CONFIG_TASKSTATS=y
1026 +CONFIG_TASK_XACCT=y
1027 +CONFIG_TASK_IO_ACCOUNTING=y
1028 +CONFIG_IKCONFIG=y
1029 +CONFIG_IKCONFIG_PROC=y
1030 +CONFIG_NUMA_BALANCING=y
1031 +CONFIG_MEMCG=y
1032 +CONFIG_BLK_CGROUP=y
1033 +CONFIG_CGROUP_PIDS=y
1034 +CONFIG_CGROUP_FREEZER=y
1035 +CONFIG_CGROUP_HUGETLB=y
1036 +CONFIG_CPUSETS=y
1037 +CONFIG_CGROUP_DEVICE=y
1038 +CONFIG_CGROUP_CPUACCT=y
1039 +CONFIG_CGROUP_PERF=y
1040 +CONFIG_CGROUP_BPF=y
f77a70 1041 +CONFIG_NAMESPACES=y
7d0d56 1042 +CONFIG_USER_NS=y
W 1043 +CONFIG_SCHED_AUTOGROUP=y
1044 +CONFIG_RELAY=y
1045 +CONFIG_BLK_DEV_INITRD=y
f77a70 1046 +CONFIG_EXPERT=y
7d0d56 1047 +CONFIG_KALLSYMS_ALL=y
W 1048 +CONFIG_PROFILING=y
1049 +CONFIG_ARCH_KEEMBAY=y
1050 +CONFIG_ARCH_NXP=y
1051 +CONFIG_ARCH_LAYERSCAPE=y
1052 +CONFIG_ARCH_MXC=y
1053 +CONFIG_ARCH_S32=y
1054 +CONFIG_SOC_S32V234=y
1055 +CONFIG_ARM64_VA_BITS_48=y
1056 +CONFIG_SCHED_MC=y
1057 +CONFIG_SCHED_SMT=y
1058 +CONFIG_NUMA=y
1059 +CONFIG_KEXEC=y
1060 +CONFIG_KEXEC_FILE=y
1061 +CONFIG_CRASH_DUMP=y
1062 +CONFIG_XEN=y
1063 +CONFIG_ARCH_FORCE_MAX_ORDER=14
1064 +CONFIG_COMPAT=y
1065 +CONFIG_RANDOMIZE_BASE=y
1066 +CONFIG_PM_DEBUG=y
1067 +CONFIG_PM_TEST_SUSPEND=y
1068 +CONFIG_WQ_POWER_EFFICIENT_DEFAULT=y
1069 +CONFIG_ENERGY_MODEL=y
1070 +CONFIG_ARM_PSCI_CPUIDLE=y
1071 +CONFIG_CPU_FREQ=y
1072 +CONFIG_CPU_FREQ_STAT=y
1073 +CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y
1074 +CONFIG_CPU_FREQ_GOV_POWERSAVE=y
1075 +CONFIG_CPU_FREQ_GOV_USERSPACE=y
1076 +CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
1077 +CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y
1078 +CONFIG_CPUFREQ_DT=y
1079 +CONFIG_ACPI_CPPC_CPUFREQ=m
1080 +CONFIG_ARM_SCPI_CPUFREQ=y
1081 +CONFIG_ARM_IMX_CPUFREQ_DT=y
1082 +CONFIG_ARM_SCMI_CPUFREQ=y
1083 +CONFIG_QORIQ_CPUFREQ=y
1084 +CONFIG_ACPI=y
1085 +CONFIG_ACPI_APEI=y
1086 +CONFIG_ACPI_APEI_GHES=y
1087 +CONFIG_ACPI_APEI_MEMORY_FAILURE=y
1088 +CONFIG_ACPI_APEI_EINJ=y
1089 +CONFIG_VIRTUALIZATION=y
1090 +CONFIG_KVM=y
1091 +CONFIG_JUMP_LABEL=y
1092 +CONFIG_MODULES=y
1093 +CONFIG_MODULE_UNLOAD=y
1094 +CONFIG_MODVERSIONS=y
1095 +# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
1096 +# CONFIG_COMPAT_BRK is not set
1097 +CONFIG_KSM=y
1098 +CONFIG_MEMORY_FAILURE=y
1099 +CONFIG_TRANSPARENT_HUGEPAGE=y
1100 +CONFIG_NET=y
1101 +CONFIG_PACKET=y
1102 +CONFIG_UNIX=y
1103 +CONFIG_TLS=y
1104 +CONFIG_TLS_DEVICE=y
1105 +CONFIG_INET=y
1106 +CONFIG_IP_MULTICAST=y
1107 +CONFIG_IP_PNP=y
1108 +CONFIG_IP_PNP_DHCP=y
1109 +CONFIG_IP_PNP_BOOTP=y
1110 +CONFIG_IPV6_SIT=m
1111 +CONFIG_NETFILTER=y
1112 +CONFIG_BRIDGE_NETFILTER=m
1113 +CONFIG_NETFILTER_NETLINK_OSF=m
1114 +CONFIG_NF_CONNTRACK=m
1115 +CONFIG_NF_CONNTRACK_EVENTS=y
1116 +CONFIG_NF_TABLES=y
1117 +CONFIG_NF_TABLES_INET=y
1118 +CONFIG_NF_TABLES_NETDEV=y
1119 +CONFIG_NFT_CT=m
1120 +CONFIG_NFT_MASQ=m
1121 +CONFIG_NFT_NAT=m
1122 +CONFIG_NFT_COMPAT=m
1123 +CONFIG_NFT_DUP_NETDEV=m
1124 +CONFIG_NFT_FWD_NETDEV=m
1125 +CONFIG_NF_FLOW_TABLE=m
1126 +CONFIG_NETFILTER_XT_MARK=m
1127 +CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m
1128 +CONFIG_NETFILTER_XT_TARGET_LOG=m
1129 +CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m
1130 +CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
1131 +CONFIG_NETFILTER_XT_MATCH_IPVS=m
1132 +CONFIG_IP_VS=m
1133 +CONFIG_NF_SOCKET_IPV4=m
1134 +CONFIG_NF_TPROXY_IPV4=m
1135 +CONFIG_IP_NF_IPTABLES=m
1136 +CONFIG_IP_NF_FILTER=m
1137 +CONFIG_IP_NF_TARGET_REJECT=m
1138 +CONFIG_IP_NF_NAT=m
1139 +CONFIG_IP_NF_TARGET_MASQUERADE=m
1140 +CONFIG_IP_NF_MANGLE=m
1141 +CONFIG_NF_SOCKET_IPV6=m
1142 +CONFIG_NF_TPROXY_IPV6=m
1143 +CONFIG_IP6_NF_IPTABLES=m
1144 +CONFIG_IP6_NF_FILTER=m
1145 +CONFIG_IP6_NF_TARGET_REJECT=m
1146 +CONFIG_IP6_NF_MANGLE=m
1147 +CONFIG_IP6_NF_NAT=m
1148 +CONFIG_IP6_NF_TARGET_MASQUERADE=m
1149 +CONFIG_NF_TABLES_BRIDGE=m
1150 +CONFIG_BRIDGE_NF_EBTABLES=m
1151 +CONFIG_BRIDGE=y
1152 +CONFIG_BRIDGE_VLAN_FILTERING=y
1153 +CONFIG_NET_DSA=m
1154 +CONFIG_VLAN_8021Q_GVRP=y
1155 +CONFIG_VLAN_8021Q_MVRP=y
1156 +CONFIG_LLC2=y
1157 +CONFIG_NET_SCHED=y
1158 +CONFIG_NET_SCH_MULTIQ=m
1159 +CONFIG_NET_SCH_CBS=m
1160 +CONFIG_NET_SCH_ETF=m
1161 +CONFIG_NET_SCH_TAPRIO=m
1162 +CONFIG_NET_SCH_MQPRIO=m
1163 +CONFIG_NET_SCH_INGRESS=m
1164 +CONFIG_NET_CLS_BASIC=m
1165 +CONFIG_NET_CLS_U32=m
1166 +CONFIG_NET_CLS_FLOWER=m
1167 +CONFIG_NET_CLS_ACT=y
1168 +CONFIG_NET_ACT_GACT=m
1169 +CONFIG_NET_ACT_MIRRED=m
1170 +CONFIG_NET_ACT_SKBEDIT=m
1171 +CONFIG_NET_ACT_GATE=m
1172 +CONFIG_TSN=y
1173 +CONFIG_QRTR=m
1174 +CONFIG_QRTR_SMD=m
1175 +CONFIG_QRTR_TUN=m
1176 +CONFIG_NET_PKTGEN=m
ac4b9f 1177 +CONFIG_CAN=y
G 1178 +CONFIG_CAN_ISOTP=y
7d0d56 1179 +CONFIG_BT=y
W 1180 +CONFIG_BT_RFCOMM=y
1181 +CONFIG_BT_RFCOMM_TTY=y
1182 +CONFIG_BT_BNEP=y
1183 +CONFIG_BT_BNEP_MC_FILTER=y
1184 +CONFIG_BT_BNEP_PROTO_FILTER=y
1185 +CONFIG_BT_HIDP=y
1186 +CONFIG_BT_LEDS=y
1187 +# CONFIG_BT_DEBUGFS is not set
1188 +CONFIG_BT_HCIBTUSB=m
1189 +CONFIG_BT_HCIUART=y
1190 +CONFIG_BT_HCIUART_BCSP=y
1191 +CONFIG_BT_HCIUART_ATH3K=y
1192 +CONFIG_BT_HCIUART_LL=y
1193 +CONFIG_BT_HCIUART_3WIRE=y
1194 +CONFIG_BT_HCIUART_BCM=y
1195 +CONFIG_BT_HCIUART_QCA=y
1196 +CONFIG_BT_HCIVHCI=y
1197 +CONFIG_BT_NXPUART=m
1198 +CONFIG_CFG80211=y
1199 +CONFIG_NL80211_TESTMODE=y
1200 +CONFIG_CFG80211_WEXT=y
1201 +CONFIG_MAC80211=y
1202 +CONFIG_MAC80211_LEDS=y
1203 +CONFIG_NFC=m
1204 +CONFIG_NFC_NCI=m
1205 +CONFIG_NFC_S3FWRN5_I2C=m
1206 +CONFIG_PCI=y
1207 +CONFIG_PCIEPORTBUS=y
1208 +CONFIG_PCI_IOV=y
1209 +CONFIG_PCI_PASID=y
1210 +CONFIG_HOTPLUG_PCI=y
1211 +CONFIG_HOTPLUG_PCI_ACPI=y
1212 +CONFIG_PCI_HOST_GENERIC=y
1213 +CONFIG_PCI_XGENE=y
1214 +CONFIG_PCIE_ALTERA=y
1215 +CONFIG_PCIE_ALTERA_MSI=y
1216 +CONFIG_PCI_HOST_THUNDER_PEM=y
1217 +CONFIG_PCI_HOST_THUNDER_ECAM=y
1218 +CONFIG_PCI_IMX6_HOST=y
1219 +CONFIG_PCI_IMX6_EP=y
1220 +CONFIG_PCI_LAYERSCAPE=y
1221 +CONFIG_PCI_HISI=y
1222 +CONFIG_PCIE_KIRIN=y
1223 +CONFIG_PCI_MESON=m
1224 +CONFIG_PCIE_LAYERSCAPE_GEN4=y
1225 +CONFIG_PCI_ENDPOINT=y
1226 +CONFIG_PCI_ENDPOINT_CONFIGFS=y
1227 +CONFIG_PCI_EPF_TEST=y
1228 +CONFIG_DEVTMPFS=y
1229 +CONFIG_DEVTMPFS_MOUNT=y
1230 +CONFIG_FW_LOADER_USER_HELPER=y
1231 +CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y
1232 +CONFIG_BRCMSTB_GISB_ARB=y
1233 +CONFIG_VEXPRESS_CONFIG=y
1234 +CONFIG_FSL_MC_UAPI_SUPPORT=y
1235 +CONFIG_ARM_SCMI_PROTOCOL=y
1236 +CONFIG_ARM_SCPI_PROTOCOL=y
1237 +CONFIG_EFI_CAPSULE_LOADER=y
1238 +CONFIG_IMX_DSP=y
1239 +CONFIG_IMX_SCU=y
1240 +CONFIG_IMX_SCU_PD=y
1241 +CONFIG_IMX_EL_ENCLAVE=y
1242 +CONFIG_GNSS=m
1243 +CONFIG_GNSS_MTK_SERIAL=m
1244 +CONFIG_MTD=y
1245 +CONFIG_MTD_CMDLINE_PARTS=y
1246 +CONFIG_MTD_BLOCK=y
1247 +CONFIG_MTD_CFI=y
1248 +CONFIG_MTD_CFI_ADV_OPTIONS=y
1249 +CONFIG_MTD_CFI_INTELEXT=y
1250 +CONFIG_MTD_CFI_AMDSTD=y
1251 +CONFIG_MTD_CFI_STAA=y
1252 +CONFIG_MTD_PHYSMAP=y
1253 +CONFIG_MTD_PHYSMAP_OF=y
1254 +CONFIG_MTD_DATAFLASH=y
1255 +CONFIG_MTD_SST25L=y
1256 +CONFIG_MTD_RAW_NAND=y
1257 +CONFIG_MTD_NAND_DENALI_DT=y
1258 +CONFIG_MTD_NAND_GPMI_NAND=y
1259 +CONFIG_MTD_NAND_FSL_IFC=y
1260 +CONFIG_MTD_SPI_NAND=y
1261 +CONFIG_MTD_SPI_NOR=y
1262 +# CONFIG_MTD_SPI_NOR_USE_4K_SECTORS is not set
1263 +CONFIG_MTD_UBI=y
1264 +CONFIG_BLK_DEV_LOOP=y
1265 +CONFIG_BLK_DEV_NBD=m
1266 +CONFIG_XEN_BLKDEV_BACKEND=m
1267 +CONFIG_VIRTIO_BLK=y
1268 +CONFIG_BLK_DEV_NVME=y
1269 +CONFIG_SRAM=y
1270 +CONFIG_PCI_ENDPOINT_TEST=y
2b23f8 1271 +CONFIG_EEPROM_AT24=y
7d0d56 1272 +CONFIG_UACCE=m
W 1273 +# CONFIG_SCSI_PROC_FS is not set
1274 +CONFIG_BLK_DEV_SD=y
1275 +CONFIG_SCSI_SAS_ATA=y
1276 +CONFIG_SCSI_HISI_SAS=y
1277 +CONFIG_SCSI_HISI_SAS_PCI=y
1278 +CONFIG_MEGARAID_SAS=y
1279 +CONFIG_SCSI_MPT3SAS=m
1280 +CONFIG_ATA=y
1281 +CONFIG_SATA_AHCI=y
1282 +CONFIG_SATA_AHCI_PLATFORM=y
1283 +CONFIG_AHCI_IMX=y
1284 +CONFIG_AHCI_CEVA=y
1285 +CONFIG_AHCI_XGENE=y
1286 +CONFIG_AHCI_QORIQ=y
1287 +CONFIG_SATA_SIL24=y
1288 +CONFIG_PATA_OF_PLATFORM=y
1289 +CONFIG_MD=y
1290 +CONFIG_BLK_DEV_MD=m
1291 +CONFIG_BLK_DEV_DM=m
1292 +CONFIG_DM_CRYPT=m
1293 +CONFIG_DM_MIRROR=m
1294 +CONFIG_DM_ZERO=m
1295 +CONFIG_NETDEVICES=y
1296 +CONFIG_MACVLAN=m
1297 +CONFIG_MACVTAP=m
1298 +CONFIG_TUN=y
1299 +CONFIG_VETH=m
1300 +CONFIG_VIRTIO_NET=y
1301 +CONFIG_NET_DSA_MSCC_FELIX=m
1302 +CONFIG_NET_DSA_SJA1105=m
1303 +CONFIG_NET_DSA_SJA1105_PTP=y
1304 +CONFIG_NET_DSA_SJA1105_TAS=y
1305 +CONFIG_NET_DSA_SJA1105_VL=y
1306 +CONFIG_AMD_XGBE=y
1307 +CONFIG_ATL1C=m
1308 +CONFIG_BCMGENET=m
1309 +CONFIG_BNX2X=m
1310 +CONFIG_SYSTEMPORT=m
1311 +CONFIG_MACB=y
1312 +CONFIG_THUNDER_NIC_PF=y
1313 +CONFIG_FEC=y
1314 +CONFIG_FEC_UIO=y
1315 +CONFIG_FSL_FMAN=y
1316 +CONFIG_FSL_DPAA_ETH=y
1317 +CONFIG_FSL_DPAA2_ETH=y
1318 +CONFIG_FSL_DPAA2_MAC=y
1319 +CONFIG_FSL_DPAA2_SWITCH=y
1320 +CONFIG_FSL_ENETC=y
1321 +CONFIG_FSL_ENETC_VF=y
1322 +CONFIG_FSL_ENETC_QOS=y
1323 +CONFIG_ENETC_TSN=y
1324 +CONFIG_HIX5HD2_GMAC=y
1325 +CONFIG_HNS_DSAF=y
1326 +CONFIG_HNS_ENET=y
1327 +CONFIG_HNS3=y
1328 +CONFIG_HNS3_HCLGE=y
1329 +CONFIG_HNS3_ENET=y
1330 +CONFIG_E1000=y
1331 +CONFIG_E1000E=y
1332 +CONFIG_IGB=y
1333 +CONFIG_IGBVF=y
1334 +CONFIG_MVMDIO=y
1335 +CONFIG_SKY2=y
1336 +CONFIG_MLX4_EN=m
1337 +CONFIG_MLX5_CORE=m
1338 +CONFIG_MLX5_CORE_EN=y
1339 +CONFIG_MSCC_OCELOT_SWITCH=y
1340 +CONFIG_QCOM_EMAC=m
1341 +CONFIG_RMNET=m
1342 +CONFIG_SMC91X=y
1343 +CONFIG_SMSC911X=y
1344 +CONFIG_STMMAC_ETH=y
1345 +CONFIG_DWMAC_GENERIC=m
1346 +CONFIG_AQUANTIA_PHY=y
1347 +CONFIG_BROADCOM_PHY=m
1348 +CONFIG_BCM54140_PHY=m
1349 +CONFIG_MARVELL_PHY=m
1350 +CONFIG_MARVELL_10G_PHY=m
1351 +CONFIG_MICREL_PHY=y
1352 +CONFIG_MICROSEMI_PHY=y
1353 +CONFIG_NXP_C45_TJA11XX_PHY=y
1354 +CONFIG_NXP_TJA11XX_PHY=y
1355 +CONFIG_AT803X_PHY=y
1356 +CONFIG_REALTEK_PHY=y
1357 +CONFIG_ROCKCHIP_PHY=y
1358 +CONFIG_VITESSE_PHY=y
ac4b9f 1359 +CONFIG_CAN_FLEXCAN=y
7d0d56 1360 +CONFIG_MDIO_BITBANG=y
W 1361 +CONFIG_MDIO_BUS_MUX_MULTIPLEXER=y
1362 +CONFIG_MDIO_BUS_MUX_MMIOREG=y
1363 +CONFIG_USB_PEGASUS=m
1364 +CONFIG_USB_RTL8150=m
1365 +CONFIG_USB_RTL8152=y
1366 +CONFIG_USB_LAN78XX=m
1367 +CONFIG_USB_USBNET=y
1368 +CONFIG_USB_NET_AX8817X=m
1369 +CONFIG_USB_NET_AX88179_178A=m
1370 +CONFIG_USB_NET_CDCETHER=m
1371 +CONFIG_USB_NET_CDC_NCM=m
1372 +CONFIG_USB_NET_DM9601=m
1373 +CONFIG_USB_NET_SR9800=m
1374 +CONFIG_USB_NET_SMSC75XX=m
1375 +CONFIG_USB_NET_SMSC95XX=m
1376 +CONFIG_USB_NET_NET1080=m
1377 +CONFIG_USB_NET_PLUSB=m
1378 +CONFIG_USB_NET_MCS7830=m
1379 +CONFIG_USB_NET_CDC_SUBSET=m
1380 +CONFIG_USB_NET_ZAURUS=m
1381 +CONFIG_HOSTAP=y
1382 +CONFIG_WL18XX=m
1383 +CONFIG_WLCORE_SDIO=m
1384 +CONFIG_XEN_NETDEV_BACKEND=m
1385 +CONFIG_IVSHMEM_NET=y
1386 +CONFIG_INPUT_EVDEV=y
1387 +CONFIG_KEYBOARD_ADC=m
1388 +CONFIG_KEYBOARD_GPIO=y
1389 +CONFIG_KEYBOARD_RPMSG=y
1390 +CONFIG_KEYBOARD_SNVS_PWRKEY=y
1391 +CONFIG_KEYBOARD_BBNSM_PWRKEY=y
1392 +CONFIG_KEYBOARD_IMX_SC_KEY=y
1393 +CONFIG_KEYBOARD_CROS_EC=y
1394 +CONFIG_INPUT_TOUCHSCREEN=y
1395 +CONFIG_TOUCHSCREEN_ATMEL_MXT=m
1396 +CONFIG_TOUCHSCREEN_EXC3000=m
1397 +CONFIG_TOUCHSCREEN_GOODIX=m
1398 +CONFIG_TOUCHSCREEN_EDT_FT5X06=m
1399 +CONFIG_TOUCHSCREEN_SYNAPTICS_DSX_I2C=m
1400 +CONFIG_INPUT_MISC=y
1401 +CONFIG_INPUT_PWM_BEEPER=m
1402 +CONFIG_INPUT_PWM_VIBRA=m
1403 +# CONFIG_SERIO_SERPORT is not set
1404 +CONFIG_SERIO_AMBAKMI=y
1405 +CONFIG_LEGACY_PTY_COUNT=16
1406 +CONFIG_SERIAL_8250=y
1407 +CONFIG_SERIAL_8250_CONSOLE=y
1408 +CONFIG_SERIAL_8250_EXTENDED=y
1409 +CONFIG_SERIAL_8250_SHARE_IRQ=y
1410 +CONFIG_SERIAL_8250_DW=y
1411 +CONFIG_SERIAL_OF_PLATFORM=y
1412 +CONFIG_SERIAL_AMBA_PL011=y
1413 +CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
1414 +CONFIG_SERIAL_IMX=y
1415 +CONFIG_SERIAL_IMX_CONSOLE=y
1416 +CONFIG_SERIAL_XILINX_PS_UART=y
1417 +CONFIG_SERIAL_XILINX_PS_UART_CONSOLE=y
1418 +CONFIG_SERIAL_FSL_LPUART=y
1419 +CONFIG_SERIAL_FSL_LPUART_CONSOLE=y
1420 +CONFIG_SERIAL_FSL_LINFLEXUART=y
1421 +CONFIG_SERIAL_FSL_LINFLEXUART_CONSOLE=y
1422 +CONFIG_SERIAL_DEV_BUS=y
1423 +CONFIG_VIRTIO_CONSOLE=y
1424 +CONFIG_IPMI_HANDLER=m
1425 +CONFIG_IPMI_DEVICE_INTERFACE=m
1426 +CONFIG_IPMI_SI=m
1427 +CONFIG_TCG_TPM=y
1428 +CONFIG_TCG_TIS_I2C_INFINEON=y
1429 +CONFIG_I2C_CHARDEV=y
1430 +CONFIG_I2C_MUX=y
1431 +CONFIG_I2C_MUX_GPIO=y
1432 +CONFIG_I2C_MUX_PCA954x=y
1433 +CONFIG_I2C_DESIGNWARE_PLATFORM=y
1434 +CONFIG_I2C_GPIO=m
1435 +CONFIG_I2C_IMX=y
1436 +CONFIG_I2C_IMX_LPI2C=y
1437 +CONFIG_I2C_RK3X=y
1438 +CONFIG_I2C_RPBUS=y
1439 +CONFIG_I2C_CROS_EC_TUNNEL=y
1440 +CONFIG_I2C_SLAVE_EEPROM=y
1441 +CONFIG_I3C=y
1442 +CONFIG_SVC_I3C_MASTER=y
1443 +CONFIG_SPI=y
1444 +CONFIG_SPI_CADENCE_QUADSPI=y
1445 +CONFIG_SPI_DESIGNWARE=m
1446 +CONFIG_SPI_DW_DMA=y
1447 +CONFIG_SPI_DW_MMIO=m
1448 +CONFIG_SPI_FSL_LPSPI=y
1449 +CONFIG_SPI_FSL_QUADSPI=y
1450 +CONFIG_SPI_NXP_FLEXSPI=y
1451 +CONFIG_SPI_IMX=y
1452 +CONFIG_SPI_FSL_DSPI=y
1453 +CONFIG_SPI_PL022=y
1454 +CONFIG_SPI_ROCKCHIP=y
1455 +CONFIG_SPI_SPIDEV=y
1456 +CONFIG_SPI_SLAVE=y
1457 +CONFIG_SPI_SLAVE_TIME=y
1458 +CONFIG_SPI_SLAVE_SYSTEM_CONTROL=y
1459 +CONFIG_SPMI=y
1460 +CONFIG_PPS_CLIENT_GPIO=y
1461 +CONFIG_PINCTRL_MAX77620=y
1462 +CONFIG_PINCTRL_SINGLE=y
1463 +CONFIG_PINCTRL_IMX8MM=y
1464 +CONFIG_PINCTRL_IMX8MN=y
1465 +CONFIG_PINCTRL_IMX8MP=y
1466 +CONFIG_PINCTRL_IMX8MQ=y
1467 +CONFIG_PINCTRL_IMX8QM=y
1468 +CONFIG_PINCTRL_IMX8QXP=y
1469 +CONFIG_PINCTRL_IMX8DXL=y
1470 +CONFIG_PINCTRL_IMX8ULP=y
1471 +CONFIG_PINCTRL_IMX93=y
1472 +CONFIG_PINCTRL_S32V234=y
f77a70 1473 +CONFIG_GPIO_SYSFS=y
7d0d56 1474 +CONFIG_GPIO_MXC=y
W 1475 +CONFIG_POWER_RESET_BRCMSTB=y
1476 +CONFIG_POWER_RESET_XGENE=y
1477 +CONFIG_POWER_RESET_SYSCON=y
1478 +CONFIG_SYSCON_REBOOT_MODE=y
1479 +CONFIG_BATTERY_SBS=m
1480 +CONFIG_BATTERY_BQ27XXX=y
1481 +CONFIG_BATTERY_MAX17042=m
1482 +CONFIG_CHARGER_BQ25890=m
1483 +CONFIG_CHARGER_BQ25980=m
1484 +CONFIG_SENSORS_ARM_SCMI=y
1485 +CONFIG_SENSORS_ARM_SCPI=y
1486 +CONFIG_SENSORS_FP9931=y
1487 +CONFIG_SENSORS_LM90=m
1488 +CONFIG_SENSORS_PWM_FAN=m
1489 +CONFIG_SENSORS_SL28CPLD=m
1490 +CONFIG_SENSORS_INA2XX=m
1491 +CONFIG_SENSORS_INA3221=m
1492 +CONFIG_THERMAL_WRITABLE_TRIPS=y
1493 +CONFIG_THERMAL_GOV_POWER_ALLOCATOR=y
1494 +CONFIG_CPU_THERMAL=y
1495 +CONFIG_THERMAL_EMULATION=y
1496 +CONFIG_IMX_SC_THERMAL=y
1497 +CONFIG_IMX8MM_THERMAL=y
1498 +CONFIG_DEVICE_THERMAL=y
1499 +CONFIG_QORIQ_THERMAL=y
1500 +CONFIG_WATCHDOG=y
1501 +CONFIG_SL28CPLD_WATCHDOG=m
1502 +CONFIG_ARM_SP805_WATCHDOG=y
1503 +CONFIG_ARM_SBSA_WATCHDOG=y
1504 +CONFIG_DW_WATCHDOG=y
1505 +CONFIG_IMX2_WDT=y
1506 +CONFIG_IMX_SC_WDT=y
1507 +CONFIG_IMX7ULP_WDT=y
1508 +CONFIG_ARM_SMC_WATCHDOG=y
1509 +CONFIG_XEN_WDT=y
1510 +CONFIG_MFD_ADP5585=y
1511 +CONFIG_MFD_BD9571MWV=y
1512 +CONFIG_MFD_AXP20X_I2C=y
1513 +CONFIG_MFD_IMX_FLEXIO=y
1514 +CONFIG_MFD_HI6421_PMIC=y
1515 +CONFIG_MFD_FP9931=y
1516 +CONFIG_MFD_MAX77620=y
1517 +CONFIG_MFD_MT6397=y
1518 +CONFIG_MFD_RK808=y
1519 +CONFIG_MFD_SEC_CORE=y
1520 +CONFIG_MFD_SL28CPLD=y
1521 +CONFIG_MFD_ROHM_BD718XX=y
1522 +CONFIG_MFD_WCD934X=m
1523 +CONFIG_REGULATOR_FIXED_VOLTAGE=y
1524 +CONFIG_REGULATOR_AXP20X=y
1525 +CONFIG_REGULATOR_BD718XX=y
1526 +CONFIG_REGULATOR_BD9571MWV=y
1527 +CONFIG_REGULATOR_FAN53555=y
1528 +CONFIG_REGULATOR_GPIO=y
1529 +CONFIG_REGULATOR_HI6421V530=y
1530 +CONFIG_REGULATOR_MAX77620=y
1531 +CONFIG_REGULATOR_MAX8973=y
1532 +CONFIG_REGULATOR_FP9931=y
1533 +CONFIG_REGULATOR_MP8859=y
1534 +CONFIG_REGULATOR_MT6358=y
1535 +CONFIG_REGULATOR_MT6397=y
1536 +CONFIG_REGULATOR_PCA9450=y
1537 +CONFIG_REGULATOR_PF8X00=y
1538 +CONFIG_REGULATOR_PFUZE100=y
1539 +CONFIG_REGULATOR_PWM=y
1540 +CONFIG_REGULATOR_QCOM_SPMI=y
1541 +CONFIG_REGULATOR_RK808=y
1542 +CONFIG_REGULATOR_S2MPS11=y
1543 +CONFIG_REGULATOR_TPS65132=m
1544 +CONFIG_REGULATOR_VCTRL=m
1545 +CONFIG_RC_CORE=m
1546 +CONFIG_RC_DECODERS=y
1547 +CONFIG_IR_IMON_DECODER=m
1548 +CONFIG_IR_JVC_DECODER=m
1549 +CONFIG_IR_MCE_KBD_DECODER=m
1550 +CONFIG_IR_NEC_DECODER=m
1551 +CONFIG_IR_RC5_DECODER=m
1552 +CONFIG_IR_RC6_DECODER=m
1553 +CONFIG_IR_RCMM_DECODER=m
1554 +CONFIG_IR_SANYO_DECODER=m
1555 +CONFIG_IR_SHARP_DECODER=m
1556 +CONFIG_IR_SONY_DECODER=m
1557 +CONFIG_IR_XMP_DECODER=m
1558 +CONFIG_RC_DEVICES=y
1559 +CONFIG_IR_GPIO_CIR=m
1560 +CONFIG_MEDIA_SUPPORT=y
f77a70 1561 +CONFIG_MEDIA_SUPPORT_FILTER=y
7d0d56 1562 +CONFIG_MEDIA_CAMERA_SUPPORT=y
W 1563 +CONFIG_MEDIA_ANALOG_TV_SUPPORT=y
1564 +CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y
1565 +CONFIG_MEDIA_SDR_SUPPORT=y
1566 +CONFIG_MEDIA_PLATFORM_SUPPORT=y
1567 +# CONFIG_DVB_NET is not set
1568 +CONFIG_MEDIA_USB_SUPPORT=y
1569 +CONFIG_USB_VIDEO_CLASS=m
1570 +CONFIG_V4L_PLATFORM_DRIVERS=y
1571 +CONFIG_SDR_PLATFORM_DRIVERS=y
1572 +CONFIG_V4L_MEM2MEM_DRIVERS=y
1573 +CONFIG_VIDEO_MX8_CAPTURE=y
1574 +CONFIG_VIDEO_MXC_CAPTURE=y
1575 +CONFIG_VIDEO_MXC_CSI_CAMERA=y
1576 +CONFIG_MXC_MIPI_CSI=y
1577 +CONFIG_MXC_CAMERA_OV5640_MIPI_V2=y
1578 +CONFIG_VIDEO_AMPHION_VPU=y
1579 +CONFIG_VIDEO_IMX8_JPEG=m
1580 +CONFIG_VIDEO_HANTRO=m
1581 +CONFIG_VIDEO_IMX219=m
1582 +CONFIG_VIDEO_OV5640=y
1583 +CONFIG_VIDEO_OV5645=m
1584 +CONFIG_VIDEO_AP1302=y
1585 +CONFIG_VIDEO_MT9M114=y
1586 +CONFIG_IMX_DPU_CORE=y
1587 +CONFIG_IMX8MM_LCDIF_CORE=y
1588 +CONFIG_IMX_LCDIFV3_CORE=y
1589 +CONFIG_DRM=y
1590 +CONFIG_DRM_I2C_NXP_TDA998X=m
1591 +CONFIG_DRM_MALI_DISPLAY=m
1592 +CONFIG_DRM_NOUVEAU=m
1593 +CONFIG_DRM_RCAR_DW_HDMI=m
1594 +CONFIG_DRM_PANEL_BOE_TV101WUM_NL6=m
1595 +CONFIG_DRM_PANEL_LVDS=m
1596 +CONFIG_DRM_PANEL_SIMPLE=y
1597 +CONFIG_DRM_PANEL_MANTIX_MLAF057WE51=m
1598 +CONFIG_DRM_PANEL_RAYDIUM_RM67191=y
1599 +CONFIG_DRM_PANEL_RAYDIUM_RM68200=y
1600 +CONFIG_DRM_PANEL_ROCKTECK_HIMAX8394F=y
1601 +CONFIG_DRM_PANEL_SEIKO_43WVF1G=y
1602 +CONFIG_DRM_PANEL_SITRONIX_ST7703=m
1603 +CONFIG_DRM_PANEL_TRULY_NT35597_WQXGA=m
1604 +CONFIG_DRM_PANEL_WKS_101WX001=y
1605 +CONFIG_DRM_DISPLAY_CONNECTOR=m
1606 +CONFIG_DRM_LONTIUM_LT8912B=m
1607 +CONFIG_DRM_LONTIUM_LT9611=m
1608 +CONFIG_DRM_LONTIUM_LT9611UXC=m
1609 +CONFIG_DRM_FSL_IMX_LVDS_BRIDGE=y
1610 +CONFIG_DRM_NWL_MIPI_DSI=y
1611 +CONFIG_DRM_NXP_SEIKO_43WVFIG=y
1612 +CONFIG_DRM_PARADE_PS8640=m
1613 +CONFIG_DRM_SII902X=m
1614 +CONFIG_DRM_SIMPLE_BRIDGE=m
1615 +CONFIG_DRM_THINE_THC63LVD1024=m
1616 +CONFIG_DRM_TI_SN65DSI86=m
1617 +CONFIG_DRM_I2C_ADV7511=y
1618 +CONFIG_DRM_I2C_ADV7511_AUDIO=y
1619 +CONFIG_DRM_DW_HDMI_AHB_AUDIO=m
1620 +CONFIG_DRM_DW_HDMI_I2S_AUDIO=m
1621 +CONFIG_DRM_DW_HDMI_GP_AUDIO=y
1622 +CONFIG_DRM_DW_HDMI_CEC=m
1623 +CONFIG_DRM_ITE_IT6263=y
1624 +CONFIG_DRM_ITE_IT6161=y
1625 +CONFIG_DRM_IMX=y
1626 +CONFIG_DRM_IMX_LCDIF_MUX_DISPLAY=y
1627 +CONFIG_DRM_IMX_PARALLEL_DISPLAY=y
1628 +CONFIG_DRM_IMX_TVE=y
1629 +CONFIG_DRM_IMX_LDB=y
1630 +CONFIG_DRM_IMX8QM_LDB=y
1631 +CONFIG_DRM_IMX8QXP_LDB=y
1632 +CONFIG_DRM_IMX8MP_LDB=y
1633 +CONFIG_DRM_IMX93_LDB=y
1634 +CONFIG_DRM_IMX_DW_MIPI_DSI=y
1635 +CONFIG_DRM_IMX93_PARALLEL_DISPLAY_FORMAT=y
1636 +CONFIG_DRM_IMX_HDMI=y
1637 +CONFIG_DRM_IMX_SEC_DSIM=y
1638 +CONFIG_DRM_IMX_DCNANO=y
1639 +CONFIG_DRM_IMX_DCSS=y
1640 +CONFIG_DRM_IMX_CDNS_MHDP=y
1641 +CONFIG_DRM_ETNAVIV=m
1642 +CONFIG_DRM_HISI_HIBMC=m
1643 +CONFIG_DRM_HISI_KIRIN=m
1644 +CONFIG_DRM_MXSFB=y
1645 +CONFIG_DRM_PL111=m
1646 +CONFIG_DRM_LIMA=m
1647 +CONFIG_DRM_PANFROST=m
1648 +CONFIG_FB=y
1649 +CONFIG_FB_ARMCLCD=y
1650 +CONFIG_FB_EFI=y
1651 +CONFIG_FB_MXC_EINK_V2_PANEL=y
1652 +CONFIG_BACKLIGHT_PWM=y
1653 +CONFIG_BACKLIGHT_LP855X=m
1654 +CONFIG_BACKLIGHT_GPIO=y
f77a70 1655 +CONFIG_FRAMEBUFFER_CONSOLE=y
7d0d56 1656 +CONFIG_LOGO=y
W 1657 +# CONFIG_LOGO_LINUX_MONO is not set
1658 +# CONFIG_LOGO_LINUX_VGA16 is not set
1659 +CONFIG_SOUND=y
1660 +CONFIG_SND=y
1661 +CONFIG_SND_ALOOP=m
1662 +CONFIG_SND_USB_AUDIO=m
1663 +CONFIG_SND_SOC=y
1664 +CONFIG_SND_SOC_FSL_ASRC=m
1665 +CONFIG_SND_SOC_FSL_MQS=m
1666 +CONFIG_SND_SOC_FSL_MICFIL=m
1667 +CONFIG_SND_SOC_FSL_EASRC=m
1668 +CONFIG_SND_SOC_FSL_XCVR=m
1669 +CONFIG_SND_SOC_FSL_ESAI_CLIENT=y
1670 +CONFIG_SND_SOC_FSL_RPMSG=m
1671 +CONFIG_SND_IMX_SOC=m
1672 +CONFIG_SND_SOC_IMX_SGTL5000=m
1673 +CONFIG_SND_SOC_IMX_SPDIF=m
1674 +CONFIG_SND_SOC_FSL_ASOC_CARD=m
1675 +CONFIG_SND_SOC_IMX_AUDMIX=m
1676 +CONFIG_SND_SOC_IMX_HDMI=m
1677 +CONFIG_SND_SOC_IMX_CARD=m
1678 +CONFIG_SND_SOC_IMX_PCM512X=m
1679 +CONFIG_SND_SOC_SOF_TOPLEVEL=y
1680 +CONFIG_SND_SOC_SOF_OF=m
1681 +CONFIG_SND_SOC_SOF_IMX_TOPLEVEL=y
1682 +CONFIG_SND_SOC_SOF_IMX8=m
1683 +CONFIG_SND_SOC_SOF_IMX8M=m
1684 +CONFIG_SND_SOC_SOF_IMX8ULP=m
1685 +CONFIG_SND_SOC_AK4613=m
1686 +CONFIG_SND_SOC_BT_SCO=y
1687 +CONFIG_SND_SOC_CROS_EC_CODEC=m
1688 +CONFIG_SND_SOC_CS42XX8_I2C=y
1689 +CONFIG_SND_SOC_DMIC=m
1690 +CONFIG_SND_SOC_ES7134=m
1691 +CONFIG_SND_SOC_ES7241=m
1692 +CONFIG_SND_SOC_GTM601=m
1693 +CONFIG_SND_SOC_MAX98357A=m
1694 +CONFIG_SND_SOC_MAX98927=m
1695 +CONFIG_SND_SOC_MSM8916_WCD_ANALOG=m
1696 +CONFIG_SND_SOC_MSM8916_WCD_DIGITAL=m
1697 +CONFIG_SND_SOC_PCM3168A_I2C=m
1698 +CONFIG_SND_SOC_RT5659=m
1699 +CONFIG_SND_SOC_SIMPLE_AMPLIFIER=m
1700 +CONFIG_SND_SOC_SIMPLE_MUX=m
1701 +CONFIG_SND_SOC_SPDIF=m
1702 +CONFIG_SND_SOC_TAS571X=m
1703 +CONFIG_SND_SOC_WCD934X=m
1704 +CONFIG_SND_SOC_WM8524=y
1705 +CONFIG_SND_SOC_WM8904=m
1706 +CONFIG_SND_SOC_WM8960=m
1707 +CONFIG_SND_SOC_WM8962=m
1708 +CONFIG_SND_SOC_WSA881X=m
1709 +CONFIG_SND_SOC_RPMSG_WM8960=m
1710 +CONFIG_SND_SOC_RPMSG_AK4497=m
1711 +CONFIG_SND_SOC_LPASS_WSA_MACRO=m
1712 +CONFIG_SND_SOC_LPASS_VA_MACRO=m
1713 +CONFIG_SND_SIMPLE_CARD=y
1714 +CONFIG_SND_AUDIO_GRAPH_CARD=y
f77a70 1715 +CONFIG_HID_A4TECH=y
G 1716 +CONFIG_HID_APPLE=y
1717 +CONFIG_HID_BELKIN=y
1718 +CONFIG_HID_CHERRY=y
1719 +CONFIG_HID_CHICONY=y
1720 +CONFIG_HID_CYPRESS=y
1721 +CONFIG_HID_EZKEY=y
1722 +CONFIG_HID_ITE=y
1723 +CONFIG_HID_KENSINGTON=y
1724 +CONFIG_HID_LOGITECH=y
1725 +CONFIG_HID_REDRAGON=y
1726 +CONFIG_HID_MICROSOFT=y
1727 +CONFIG_HID_MONTEREY=y
7d0d56 1728 +CONFIG_HID_MULTITOUCH=m
W 1729 +CONFIG_I2C_HID_ACPI=m
1730 +CONFIG_I2C_HID_OF=m
1731 +CONFIG_USB_CONN_GPIO=y
1732 +CONFIG_USB=y
1733 +CONFIG_USB_OTG=y
1734 +CONFIG_USB_XHCI_HCD=y
1735 +CONFIG_USB_XHCI_PCI_RENESAS=m
1736 +CONFIG_USB_EHCI_HCD=y
1737 +CONFIG_USB_EHCI_HCD_PLATFORM=y
1738 +CONFIG_USB_OHCI_HCD=y
1739 +CONFIG_USB_OHCI_HCD_PLATFORM=y
1740 +CONFIG_USB_HCD_TEST_MODE=y
1741 +CONFIG_USB_ACM=m
1742 +CONFIG_USB_STORAGE=y
1743 +CONFIG_USB_UAS=y
1744 +CONFIG_USB_CDNS_SUPPORT=y
1745 +CONFIG_USB_CDNS3=y
1746 +CONFIG_USB_CDNS3_GADGET=y
1747 +CONFIG_USB_CDNS3_HOST=y
1748 +CONFIG_USB_MUSB_HDRC=y
1749 +CONFIG_USB_DWC3=y
1750 +CONFIG_USB_DWC2=y
1751 +CONFIG_USB_CHIPIDEA=y
1752 +CONFIG_USB_CHIPIDEA_UDC=y
1753 +CONFIG_USB_CHIPIDEA_HOST=y
1754 +CONFIG_USB_ISP1760=y
1755 +CONFIG_USB_SERIAL=y
1756 +CONFIG_USB_SERIAL_CONSOLE=y
1757 +CONFIG_USB_SERIAL_GENERIC=y
1758 +CONFIG_USB_SERIAL_SIMPLE=y
1759 +CONFIG_USB_SERIAL_CP210X=m
1760 +CONFIG_USB_SERIAL_FTDI_SIO=y
1761 +CONFIG_USB_SERIAL_OPTION=m
1762 +CONFIG_USB_TEST=m
1763 +CONFIG_USB_EHSET_TEST_FIXTURE=y
1764 +CONFIG_USB_HSIC_USB3503=y
1765 +CONFIG_NOP_USB_XCEIV=y
1766 +CONFIG_USB_MXS_PHY=y
1767 +CONFIG_USB_ULPI=y
1768 +CONFIG_USB_GADGET=y
1769 +CONFIG_USB_SNP_UDC_PLAT=y
1770 +CONFIG_USB_BDC_UDC=y
1771 +CONFIG_USB_CONFIGFS=y
1772 +CONFIG_USB_CONFIGFS_SERIAL=y
1773 +CONFIG_USB_CONFIGFS_ACM=y
1774 +CONFIG_USB_CONFIGFS_OBEX=y
1775 +CONFIG_USB_CONFIGFS_NCM=y
1776 +CONFIG_USB_CONFIGFS_ECM=y
1777 +CONFIG_USB_CONFIGFS_ECM_SUBSET=y
1778 +CONFIG_USB_CONFIGFS_RNDIS=y
1779 +CONFIG_USB_CONFIGFS_EEM=y
1780 +CONFIG_USB_CONFIGFS_MASS_STORAGE=y
1781 +CONFIG_USB_CONFIGFS_F_LB_SS=y
1782 +CONFIG_USB_CONFIGFS_F_FS=y
1783 +CONFIG_USB_CONFIGFS_F_UAC1=y
1784 +CONFIG_USB_CONFIGFS_F_UAC1_LEGACY=y
1785 +CONFIG_USB_CONFIGFS_F_UAC2=y
1786 +CONFIG_USB_CONFIGFS_F_MIDI=y
1787 +CONFIG_USB_CONFIGFS_F_HID=y
1788 +CONFIG_USB_CONFIGFS_F_UVC=y
1789 +CONFIG_USB_ZERO=m
1790 +CONFIG_USB_AUDIO=m
1791 +CONFIG_USB_ETH=m
1792 +CONFIG_USB_MASS_STORAGE=m
1793 +CONFIG_USB_G_SERIAL=m
1794 +CONFIG_TYPEC=y
1795 +CONFIG_TYPEC_TCPM=y
1796 +CONFIG_TYPEC_TCPCI=y
1797 +CONFIG_TYPEC_FUSB302=m
1798 +CONFIG_TYPEC_TPS6598X=m
1799 +CONFIG_TYPEC_HD3SS3220=m
1800 +CONFIG_TYPEC_SWITCH_GPIO=y
1801 +CONFIG_MMC=y
1802 +CONFIG_MMC_BLOCK_MINORS=32
1803 +CONFIG_MMC_ARMMMCI=y
1804 +CONFIG_MMC_SDHCI=y
1805 +CONFIG_MMC_SDHCI_ACPI=y
1806 +CONFIG_MMC_SDHCI_PLTFM=y
1807 +CONFIG_MMC_SDHCI_OF_ARASAN=y
1808 +CONFIG_MMC_SDHCI_OF_ESDHC=y
1809 +CONFIG_MMC_SDHCI_CADENCE=y
1810 +CONFIG_MMC_SDHCI_ESDHC_IMX=y
1811 +CONFIG_MMC_SDHCI_F_SDH30=y
1812 +CONFIG_MMC_SPI=y
1813 +CONFIG_MMC_DW=y
1814 +CONFIG_MMC_DW_EXYNOS=y
1815 +CONFIG_MMC_DW_HI3798CV200=y
1816 +CONFIG_MMC_DW_K3=y
1817 +CONFIG_MMC_MTK=y
1818 +CONFIG_MMC_SDHCI_XENON=y
1819 +CONFIG_MMC_SDHCI_AM654=y
1820 +CONFIG_SCSI_UFSHCD=y
1821 +CONFIG_SCSI_UFSHCD_PLATFORM=y
1822 +CONFIG_NEW_LEDS=y
1823 +CONFIG_LEDS_CLASS=y
1824 +CONFIG_LEDS_CLASS_MULTICOLOR=m
1825 +CONFIG_LEDS_LM3692X=m
1826 +CONFIG_LEDS_PCA9532=m
1827 +CONFIG_LEDS_GPIO=y
1828 +CONFIG_LEDS_PCA995X=m
1829 +CONFIG_LEDS_PWM=y
1830 +CONFIG_LEDS_SYSCON=y
1831 +CONFIG_LEDS_TRIGGER_TIMER=y
1832 +CONFIG_LEDS_TRIGGER_DISK=y
1833 +CONFIG_LEDS_TRIGGER_HEARTBEAT=y
1834 +CONFIG_LEDS_TRIGGER_CPU=y
1835 +CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
1836 +CONFIG_LEDS_TRIGGER_PANIC=y
1837 +CONFIG_EDAC=y
1838 +CONFIG_EDAC_GHES=y
1839 +CONFIG_EDAC_LAYERSCAPE=m
1840 +CONFIG_EDAC_SYNOPSYS=y
1841 +CONFIG_RTC_CLASS=y
2b23f8 1842 +CONFIG_RTC_DRV_ISL1208=y
7d0d56 1843 +CONFIG_DMADEVICES=y
W 1844 +CONFIG_FSL_EDMA=y
1845 +CONFIG_FSL_QDMA=m
1846 +CONFIG_FSL_EDMA_V3=y
1847 +CONFIG_IMX_SDMA=y
1848 +CONFIG_MV_XOR_V2=y
1849 +CONFIG_MXS_DMA=y
1850 +CONFIG_MXC_PXP_V3=y
1851 +CONFIG_PL330_DMA=y
1852 +CONFIG_QCOM_HIDMA_MGMT=y
1853 +CONFIG_QCOM_HIDMA=y
1854 +CONFIG_DW_EDMA=y
1855 +CONFIG_DW_EDMA_PCIE=y
1856 +CONFIG_FSL_DPAA2_QDMA=m
1857 +CONFIG_DMATEST=y
1858 +CONFIG_DMABUF_HEAPS=y
1859 +CONFIG_DMABUF_HEAPS_SYSTEM=y
1860 +CONFIG_DMABUF_HEAPS_CMA=y
1861 +CONFIG_DMABUF_HEAPS_DSP=y
1862 +CONFIG_UIO_PCI_GENERIC=y
1863 +CONFIG_UIO_IVSHMEM=y
1864 +CONFIG_VFIO=y
1865 +CONFIG_VFIO_PCI=y
1866 +CONFIG_VFIO_FSL_MC=y
1867 +CONFIG_VIRTIO_PCI=y
1868 +CONFIG_VIRTIO_BALLOON=y
1869 +CONFIG_VIRTIO_MMIO=y
1870 +CONFIG_VIRTIO_IVSHMEM=y
1871 +CONFIG_XEN_GNTDEV=y
1872 +CONFIG_XEN_GRANT_DEV_ALLOC=y
1873 +CONFIG_STAGING=y
1874 +CONFIG_STAGING_MEDIA=y
1875 +CONFIG_VIDEO_IMX_CAPTURE=y
1876 +CONFIG_IMX8_MEDIA_DEVICE=m
1877 +CONFIG_MHDP_HDMIRX=y
1878 +CONFIG_MHDP_HDMIRX_CEC=y
1879 +CONFIG_FSL_DPAA2=y
1880 +CONFIG_FSL_PPFE=y
1881 +CONFIG_FSL_PPFE_UTIL_DISABLED=y
1882 +CONFIG_ETHOSU=y
1883 +CONFIG_CHROME_PLATFORMS=y
1884 +CONFIG_CROS_EC=y
1885 +CONFIG_CROS_EC_I2C=y
1886 +CONFIG_CROS_EC_SPI=y
1887 +CONFIG_CROS_EC_CHARDEV=m
1888 +CONFIG_CLK_VEXPRESS_OSC=y
1889 +CONFIG_COMMON_CLK_RK808=y
1890 +CONFIG_COMMON_CLK_SCMI=y
1891 +CONFIG_COMMON_CLK_SCPI=y
1892 +CONFIG_COMMON_CLK_CS2000_CP=y
1893 +CONFIG_COMMON_CLK_FSL_SAI=y
1894 +CONFIG_COMMON_CLK_S2MPS11=y
1895 +CONFIG_COMMON_CLK_XGENE=y
1896 +CONFIG_COMMON_CLK_PWM=y
1897 +CONFIG_COMMON_CLK_VC5=y
1898 +CONFIG_CLK_IMX8MM=y
1899 +CONFIG_CLK_IMX8MN=y
1900 +CONFIG_CLK_IMX8MP=y
1901 +CONFIG_CLK_IMX8MQ=y
1902 +CONFIG_CLK_IMX8QXP=y
1903 +CONFIG_CLK_IMX8ULP=y
1904 +CONFIG_CLK_IMX93=y
1905 +CONFIG_HWSPINLOCK=y
1906 +CONFIG_ARM_MHU=y
1907 +CONFIG_IMX_MBOX=y
1908 +CONFIG_PLATFORM_MHU=y
1909 +CONFIG_IOMMU_IO_PGTABLE_ARMV7S=y
1910 +CONFIG_ARM_SMMU=y
1911 +CONFIG_ARM_SMMU_V3=y
1912 +CONFIG_REMOTEPROC=y
1913 +CONFIG_IMX_REMOTEPROC=y
1914 +CONFIG_IMX_DSP_REMOTEPROC=m
1915 +CONFIG_RPMSG_CHAR=m
1916 +CONFIG_RPMSG_CTRL=m
1917 +CONFIG_RPMSG_QCOM_GLINK_RPM=y
1918 +CONFIG_SOUNDWIRE=m
1919 +CONFIG_SOUNDWIRE_QCOM=m
1920 +CONFIG_SOC_BRCMSTB=y
1921 +CONFIG_FSL_DPAA=y
1922 +CONFIG_FSL_MC_DPIO=y
1923 +CONFIG_FSL_RCPM=y
1924 +CONFIG_FSL_QIXIS=y
1925 +CONFIG_SOC_TI=y
1926 +CONFIG_EXTCON_PTN5150=m
1927 +CONFIG_EXTCON_USB_GPIO=y
1928 +CONFIG_EXTCON_USBC_CROS_EC=y
1929 +CONFIG_IIO=y
1930 +CONFIG_FXLS8962AF_I2C=m
1931 +CONFIG_IIO_ST_ACCEL_3AXIS=m
1932 +CONFIG_IMX8QXP_ADC=y
1933 +CONFIG_IMX93_ADC=y
2f7a23 1934 +CONFIG_MS1112=y
2b23f8 1935 +CONFIG_BMG160=m
7d0d56 1936 +CONFIG_IIO_ST_GYRO_3AXIS=m
2b23f8 1937 +CONFIG_MAX30100=m
G 1938 +CONFIG_MAX30102=m
1939 +CONFIG_DHT11=y
1940 +CONFIG_HDC100X=y
1941 +CONFIG_HTS221=y
7d0d56 1942 +CONFIG_FXOS8700_I2C=y
W 1943 +CONFIG_RPMSG_IIO_PEDOMETER=m
1944 +CONFIG_INV_MPU6050_I2C=m
1945 +CONFIG_IIO_ST_LSM6DSX=y
1946 +CONFIG_SENSORS_ISL29018=y
1947 +CONFIG_IIO_ST_MAGN_3AXIS=m
1948 +CONFIG_MPL3115=y
1949 +CONFIG_MS5611=m
1950 +CONFIG_MS5611_I2C=m
1951 +CONFIG_PWM=y
1952 +CONFIG_PWM_ADP5585=y
1953 +CONFIG_PWM_CROS_EC=m
1954 +CONFIG_PWM_FSL_FTM=m
1955 +CONFIG_PWM_IMX27=y
1956 +CONFIG_PWM_RPCHIP=y
1957 +CONFIG_PWM_SL28CPLD=m
1958 +CONFIG_SL28CPLD_INTC=y
1959 +CONFIG_RESET_IMX7=y
1960 +CONFIG_RESET_IMX8ULP_SIM=y
1961 +CONFIG_PHY_XGENE=y
1962 +CONFIG_PHY_MIXEL_LVDS=y
1963 +CONFIG_PHY_MIXEL_LVDS_COMBO=y
1964 +CONFIG_PHY_CADENCE_SALVO=y
1965 +CONFIG_PHY_FSL_IMX8MP_LVDS=y
1966 +CONFIG_PHY_FSL_IMX93_MIPI_DPHY=y
1967 +CONFIG_PHY_MIXEL_MIPI_DPHY=y
1968 +CONFIG_PHY_FSL_IMX8M_PCIE=y
1969 +CONFIG_PHY_FSL_IMX8Q_PCIE=y
1970 +CONFIG_PHY_SAMSUNG_HDMI_PHY=y
1971 +CONFIG_PHY_QCOM_USB_HS=y
1972 +CONFIG_PHY_SAMSUNG_USB2=y
1973 +CONFIG_ARM_CCI_PMU=m
1974 +CONFIG_ARM_CCN=m
1975 +CONFIG_ARM_CMN=m
1976 +CONFIG_ARM_SMMU_V3_PMU=m
1977 +CONFIG_ARM_DSU_PMU=m
1978 +CONFIG_FSL_IMX8_DDR_PMU=y
1979 +CONFIG_FSL_IMX9_DDR_PMU=y
1980 +CONFIG_ARM_SPE_PMU=m
1981 +CONFIG_ARM_DMC620_PMU=m
1982 +CONFIG_HISI_PMU=y
1983 +CONFIG_NVMEM_IMX_OCOTP=y
1984 +CONFIG_NVMEM_IMX_OCOTP_SCU=y
1985 +CONFIG_NVMEM_RMEM=m
1986 +CONFIG_FPGA=y
1987 +CONFIG_FPGA_BRIDGE=m
1988 +CONFIG_ALTERA_FREEZE_BRIDGE=m
1989 +CONFIG_FPGA_REGION=m
1990 +CONFIG_OF_FPGA_REGION=m
1991 +CONFIG_TEE=y
1992 +CONFIG_OPTEE=y
1993 +CONFIG_MUX_MMIO=y
1994 +CONFIG_SLIM_QCOM_CTRL=m
1995 +CONFIG_MXC_SIM=y
1996 +CONFIG_MXC_GPU_VIV=y
1997 +CONFIG_MXC_EMVSIM=y
1998 +CONFIG_EXT2_FS=y
1999 +CONFIG_EXT3_FS=y
2000 +CONFIG_EXT4_FS_POSIX_ACL=y
2001 +CONFIG_FANOTIFY=y
2002 +CONFIG_FANOTIFY_ACCESS_PERMISSIONS=y
2003 +CONFIG_QUOTA=y
2004 +CONFIG_AUTOFS4_FS=y
2005 +CONFIG_FUSE_FS=m
2006 +CONFIG_CUSE=m
2007 +CONFIG_OVERLAY_FS=m
2008 +CONFIG_VFAT_FS=y
f77a70 2009 +CONFIG_EXFAT_FS=y
G 2010 +CONFIG_NTFS_FS=y
2011 +CONFIG_NTFS_RW=y
2012 +CONFIG_NTFS3_FS=y
2013 +CONFIG_NTFS3_64BIT_CLUSTER=y
2014 +CONFIG_NTFS3_LZX_XPRESS=y
2015 +CONFIG_NTFS3_FS_POSIX_ACL=y
7d0d56 2016 +CONFIG_TMPFS_POSIX_ACL=y
W 2017 +CONFIG_HUGETLBFS=y
2018 +CONFIG_EFIVAR_FS=y
2019 +CONFIG_JFFS2_FS=y
2020 +CONFIG_NFS_FS=y
2021 +CONFIG_NFS_V4=y
2022 +CONFIG_NFS_V4_1=y
2023 +CONFIG_NFS_V4_2=y
2024 +CONFIG_ROOT_NFS=y
2025 +CONFIG_NLS_CODEPAGE_437=y
f77a70 2026 +CONFIG_NLS_CODEPAGE_936=y
G 2027 +CONFIG_NLS_CODEPAGE_950=y
2028 +CONFIG_NLS_CODEPAGE_874=y
7d0d56 2029 +CONFIG_NLS_ISO8859_1=y
f77a70 2030 +CONFIG_NLS_UTF8=y
7d0d56 2031 +CONFIG_TRUSTED_KEYS=m
W 2032 +# CONFIG_TRUSTED_KEYS_TPM is not set
2033 +# CONFIG_TRUSTED_KEYS_TEE is not set
2034 +CONFIG_SECURITY=y
2035 +CONFIG_CRYPTO_USER=y
2036 +CONFIG_CRYPTO_TEST=m
2037 +CONFIG_CRYPTO_ANUBIS=m
2038 +CONFIG_CRYPTO_ARIA=m
2039 +CONFIG_CRYPTO_BLOWFISH=m
2040 +CONFIG_CRYPTO_CAMELLIA=m
2041 +CONFIG_CRYPTO_CAST5=m
2042 +CONFIG_CRYPTO_CAST6=m
2043 +CONFIG_CRYPTO_FCRYPT=m
2044 +CONFIG_CRYPTO_KHAZAD=m
2045 +CONFIG_CRYPTO_SEED=m
2046 +CONFIG_CRYPTO_SERPENT=m
2047 +CONFIG_CRYPTO_TEA=m
2048 +CONFIG_CRYPTO_TWOFISH=m
2049 +CONFIG_CRYPTO_ARC4=m
2050 +CONFIG_CRYPTO_CFB=m
2051 +CONFIG_CRYPTO_CTS=m
2052 +CONFIG_CRYPTO_LRW=m
2053 +CONFIG_CRYPTO_OFB=m
2054 +CONFIG_CRYPTO_PCBC=m
2055 +CONFIG_CRYPTO_CHACHA20POLY1305=m
2056 +CONFIG_CRYPTO_ECHAINIV=y
2057 +CONFIG_CRYPTO_TLS=m
f77a70 2058 +CONFIG_CRYPTO_BLAKE2B=m
7d0d56 2059 +CONFIG_CRYPTO_MD4=m
W 2060 +CONFIG_CRYPTO_RMD160=m
2061 +CONFIG_CRYPTO_STREEBOG=m
2062 +CONFIG_CRYPTO_VMAC=m
2063 +CONFIG_CRYPTO_WP512=m
2064 +CONFIG_CRYPTO_XCBC=m
f77a70 2065 +CONFIG_CRYPTO_XXHASH=m
G 2066 +CONFIG_CRYPTO_LZO=y
2067 +CONFIG_CRYPTO_ZSTD=y
7d0d56 2068 +CONFIG_CRYPTO_ANSI_CPRNG=y
W 2069 +CONFIG_CRYPTO_USER_API_HASH=m
2070 +CONFIG_CRYPTO_USER_API_SKCIPHER=m
2071 +CONFIG_CRYPTO_USER_API_RNG=m
2072 +CONFIG_CRYPTO_USER_API_AEAD=m
2073 +CONFIG_CRYPTO_CHACHA20_NEON=m
2074 +CONFIG_CRYPTO_GHASH_ARM64_CE=y
2075 +CONFIG_CRYPTO_SHA1_ARM64_CE=y
2076 +CONFIG_CRYPTO_SHA2_ARM64_CE=y
2077 +CONFIG_CRYPTO_SHA512_ARM64_CE=m
2078 +CONFIG_CRYPTO_SHA3_ARM64=m
2079 +CONFIG_CRYPTO_SM3_ARM64_CE=m
2080 +CONFIG_CRYPTO_POLYVAL_ARM64_CE=m
2081 +CONFIG_CRYPTO_AES_ARM64_CE_BLK=y
2082 +CONFIG_CRYPTO_AES_ARM64_BS=m
2083 +CONFIG_CRYPTO_AES_ARM64_CE_CCM=y
2084 +CONFIG_CRYPTO_CRCT10DIF_ARM64_CE=m
2085 +CONFIG_CRYPTO_DEV_FSL_CAAM_SECVIO=m
2086 +CONFIG_CRYPTO_DEV_FSL_CAAM=m
2087 +CONFIG_CRYPTO_DEV_FSL_CAAM_SM_TEST=m
2088 +CONFIG_CRYPTO_DEV_FSL_DPAA2_CAAM=m
2089 +CONFIG_CRYPTO_DEV_CCREE=m
2090 +CONFIG_CRYPTO_DEV_HISI_SEC2=m
2091 +CONFIG_CRYPTO_DEV_HISI_ZIP=m
2092 +CONFIG_CRYPTO_DEV_HISI_HPRE=m
2093 +CONFIG_CRYPTO_DEV_HISI_TRNG=m
2094 +CONFIG_CRYPTO_DEV_AMLOGIC_GXL=m
2095 +CONFIG_INDIRECT_PIO=y
2096 +CONFIG_CRC_CCITT=m
2097 +CONFIG_CRC8=y
2098 +CONFIG_CMA_SIZE_MBYTES=32
2099 +CONFIG_PRINTK_TIME=y
2100 +CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT=y
2101 +CONFIG_DEBUG_INFO_REDUCED=y
2102 +CONFIG_MAGIC_SYSRQ=y
2103 +CONFIG_DEBUG_FS=y
2104 +# CONFIG_SCHED_DEBUG is not set
2105 +# CONFIG_DEBUG_PREEMPT is not set
2106 +# CONFIG_FTRACE is not set
2107 +CONFIG_CORESIGHT=y
2108 +CONFIG_CORESIGHT_LINK_AND_SINK_TMC=y
2109 +CONFIG_CORESIGHT_CATU=m
2110 +CONFIG_CORESIGHT_SINK_TPIU=m
2111 +CONFIG_CORESIGHT_SINK_ETBV10=m
2112 +CONFIG_CORESIGHT_SOURCE_ETM4X=y
2113 +CONFIG_CORESIGHT_STM=m
2114 +CONFIG_CORESIGHT_CPU_DEBUG=m
2115 +CONFIG_CORESIGHT_CTI=m
2116 +CONFIG_MEMTEST=y
2f7a23 2117 diff --git a/drivers/iio/adc/Kconfig b/drivers/iio/adc/Kconfig
G 2118 index 3946eb595..15278c13c 100644
2119 --- a/drivers/iio/adc/Kconfig
2120 +++ b/drivers/iio/adc/Kconfig
2121 @@ -1164,6 +1164,18 @@ config TI_ADC161S626
2122        This driver can also be built as a module. If so, the module will be
2123        called ti-adc161s626.
2124  
2125 +config MS1112
2126 +    tristate "Ruimeng Technology MS1112 ADC"
2127 +    depends on I2C
2128 +    select IIO_BUFFER
2129 +    select IIO_TRIGGERED_BUFFER
2130 +    help
2131 +      If you say yes here you get support for Ruimeng Technology ADS1015
2132 +      ADC chip.
2133 +
2134 +      This driver can also be built as a module. If so, the module will be
2135 +      called ms1112.
2136 +
2137  config TI_ADS1015
2138      tristate "Texas Instruments ADS1015 ADC"
2139      depends on I2C
2140 diff --git a/drivers/iio/adc/Makefile b/drivers/iio/adc/Makefile
2141 index 83233c38c..f403164cf 100644
2142 --- a/drivers/iio/adc/Makefile
2143 +++ b/drivers/iio/adc/Makefile
2144 @@ -104,6 +104,7 @@ obj-$(CONFIG_TI_ADC12138) += ti-adc12138.o
2145  obj-$(CONFIG_TI_ADC108S102) += ti-adc108s102.o
2146  obj-$(CONFIG_TI_ADC128S052) += ti-adc128s052.o
2147  obj-$(CONFIG_TI_ADC161S626) += ti-adc161s626.o
2148 +obj-$(CONFIG_MS1112) += ms1112.o
2149  obj-$(CONFIG_TI_ADS1015) += ti-ads1015.o
2150  obj-$(CONFIG_TI_ADS7950) += ti-ads7950.o
2151  obj-$(CONFIG_TI_ADS8344) += ti-ads8344.o
2152 diff --git a/drivers/iio/adc/ms1112.c b/drivers/iio/adc/ms1112.c
2153 new file mode 100644
2154 index 000000000..cf8ea5c66
2155 --- /dev/null
2156 +++ b/drivers/iio/adc/ms1112.c
2157 @@ -0,0 +1,569 @@
2158 +// SPDX-License-Identifier: GPL-2.0-only
2159 +/*
2160 + * MS1112 - Ruimeng Technology Analog-to-Digital Converter
2161 + *
2162 + * Copyright (c) 2024, LingYun IoT System Studio.
2163 + *
2164 + * IIO driver for MS1112 ADC 7-bit I2C slave address: 0x4A
2165 + */
2166 +
2167 +#include <linux/init.h>
2168 +#include <linux/module.h>
2169 +#include <linux/errno.h>
2170 +#include <linux/gpio.h>
2171 +#include <linux/cdev.h>
2172 +#include <linux/device.h>
2173 +#include <linux/of_gpio.h>
2174 +#include <linux/semaphore.h>
2175 +#include <linux/timer.h>
2176 +#include <linux/i2c.h>
2177 +#include <asm/uaccess.h>
2178 +#include <asm/io.h>
2179 +#include <linux/iio/iio.h>
2180 +#include <linux/iio/driver.h>
2181 +
2182 +#define MS1112_DRV_NAME                "ms1112"
2183 +
2184 +#define MS1112_CONV_REG                0x00
2185 +#define MS1112_CFG_REG                0x01
2186 +#define MS1112_DEFAULT_CONFIG        0xFC
2187 +
2188 +#define MS1112_CHANNELS                4
2189 +#define MS1112_CFG_DR_SHIFT            2
2190 +#define MS1112_CFG_MOD_SHIFT        4
2191 +#define MS1112_CFG_PGA_SHIFT        0
2192 +#define MS1112_CFG_MUX_SHIFT        5
2193 +
2194 +#define MS1112_CFG_DR_MASK            GENMASK(3, 2)
2195 +#define MS1112_CFG_MOD_MASK            BIT(4)
2196 +#define MS1112_CFG_PGA_MASK            GENMASK(1, 0)
2197 +#define MS1112_CFG_MUX_MASK            GENMASK(6, 5)
2198 +
2199 +#define MS1112_DEFAULT_PGA            0
2200 +#define MS1112_DEFAULT_DATA_RATE    3
2201 +#define MS1112_DEFAULT_CHAN            2
2202 +#define MS1112_DEFAULT_MODE            1
2203 +
2204 +#define MS1112_CONTINUOUS            0
2205 +#define MS1112_SINGLESHOT            1
2206 +
2207 +struct ms1112_chip_data {
2208 +    struct iio_chan_spec const    *channels;
2209 +    int                            num_channels;
2210 +    const struct iio_info        *info;
2211 +    const int                    *data_rate;
2212 +    const int                    data_rate_len;
2213 +    const int                    *scale;
2214 +    const int                    scale_len;
2215 +    bool                        has_comparator;
2216 +};
2217 +
2218 +enum ms1112_channels {
2219 +    MS1112_AIN0_AIN1 = 0,
2220 +    MS1112_AIN2,
2221 +    MS1112_AIN0,
2222 +    MS1112_AIN1,
2223 +    MS1112_TIMESTAMP,
2224 +};
2225 +
2226 +static const int ms1112_data_rate[] = {
2227 +    240,60,30,15
2228 +};
2229 +
2230 +static const int ms1112_fullscale_range[] = {
2231 +    2048
2232 +};
2233 +
2234 +static const int ms1112_scale[] = { /* 12bit ADC */
2235 +    2048,11,
2236 +    2048,13,
2237 +    2048,14,
2238 +    2048,15
2239 +};
2240 +
2241 +#define FIT_CHECK(_testbits, _fitbits)                \
2242 +    (                                                \
2243 +        (_fitbits) *                                \
2244 +        !!sizeof(struct {                            \
2245 +        static_assert((_testbits) <= (_fitbits));    \
2246 +        int pad;                                    \
2247 +        })                                            \
2248 +    )
2249 +
2250 +#define MS1112_V_CHAN(_chan, _addr, _realbits, _shift, _event_spec, _num_event_specs) { \
2251 +    .type = IIO_VOLTAGE,                \
2252 +    .indexed = 1,                        \
2253 +    .address = _addr,                    \
2254 +    .channel = _chan,                    \
2255 +    .info_mask_separate = BIT(IIO_CHAN_INFO_RAW) |    \
2256 +    BIT(IIO_CHAN_INFO_SCALE) |                        \
2257 +    BIT(IIO_CHAN_INFO_SAMP_FREQ),                    \
2258 +    .info_mask_shared_by_all_available =            \
2259 +    BIT(IIO_CHAN_INFO_SCALE) |                        \
2260 +    BIT(IIO_CHAN_INFO_SAMP_FREQ),                    \
2261 +    .scan_index = _addr,                            \
2262 +    .scan_type = {                                    \
2263 +        .sign = 's',                                \
2264 +        .realbits = (_realbits),                    \
2265 +        .storagebits = FIT_CHECK((_realbits) + (_shift), 16),    \
2266 +        .shift = (_shift),                            \
2267 +        .endianness = IIO_CPU,                        \
2268 +    },                                                \
2269 +    .event_spec = (_event_spec),                    \
2270 +    .num_event_specs = (_num_event_specs),            \
2271 +    .datasheet_name = "AIN"#_chan,                    \
2272 +}
2273 +
2274 +#define MS1112_V_DIFF_CHAN(_chan, _chan2, _addr, _realbits, _shift, _event_spec, _num_event_specs) { \
2275 +    .type = IIO_VOLTAGE,                            \
2276 +    .differential = 1,                                \
2277 +    .indexed = 1,                                    \
2278 +    .address = _addr,                                \
2279 +    .channel = _chan,                                \
2280 +    .channel2 = _chan2,                                \
2281 +    .info_mask_separate = BIT(IIO_CHAN_INFO_RAW) |    \
2282 +    BIT(IIO_CHAN_INFO_SCALE) |                        \
2283 +    BIT(IIO_CHAN_INFO_SAMP_FREQ),                    \
2284 +    .info_mask_shared_by_all_available =            \
2285 +    BIT(IIO_CHAN_INFO_SCALE) |                        \
2286 +    BIT(IIO_CHAN_INFO_SAMP_FREQ),                    \
2287 +    .scan_index = _addr,                            \
2288 +    .scan_type = {                                    \
2289 +        .sign = 's',                                \
2290 +        .realbits = (_realbits),                    \
2291 +        .storagebits = FIT_CHECK((_realbits) + (_shift), 16),    \
2292 +        .shift = (_shift),                            \
2293 +        .endianness = IIO_CPU,                        \
2294 +    },                                                \
2295 +    .event_spec = (_event_spec),                    \
2296 +    .num_event_specs = (_num_event_specs),            \
2297 +    .datasheet_name = "AIN"#_chan"-AIN"#_chan2,        \
2298 +}
2299 +
2300 +struct ms1112_channel_data {
2301 +    bool enabled;
2302 +    unsigned int pga;
2303 +    unsigned int data_rate;
2304 +    unsigned int mode;
2305 +};
2306 +
2307 +struct ms1112_thresh_data {
2308 +    int high_thresh;
2309 +    int low_thresh;
2310 +};
2311 +
2312 +struct ms1112_data {
2313 +    struct ms1112_channel_data channel_data[MS1112_CHANNELS];
2314 +    struct ms1112_thresh_data thresh_data[MS1112_CHANNELS];
2315 +    const struct ms1112_chip_data *chip;
2316 +    struct mutex lock;
2317 +    void *private_data;
2318 +    struct i2c_client *client;
2319 +};
2320 +
2321 +/* MS1112 don't use the register address */
2322 +static int ms1112_read_regs(struct ms1112_data *dev, uint8_t reg, void *buf, uint8_t size)
2323 +{
2324 +    int                    ret = 0;
2325 +    struct i2c_msg        msg[1];
2326 +    struct i2c_client    *client = dev->client;
2327 +
2328 +    msg[0].addr  = client->addr;
2329 +    msg[0].flags = I2C_M_RD;
2330 +    msg[0].buf     = buf;
2331 +    msg[0].len     = size;
2332 +
2333 +    ret = i2c_transfer(client->adapter, msg, 1);
2334 +    if(ret != 1) {
2335 +        dev_err(&dev->client->dev, "%s() i2c_transfer error, ret=%d\n", __func__, ret);
2336 +        ret = -EREMOTEIO;
2337 +    }
2338 +
2339 +    return ret;
2340 +}
2341 +
2342 +/* MS1112 don't use the register address */
2343 +static s32 ms1112_write_regs(struct ms1112_data *dev, uint8_t reg, uint8_t *data, uint8_t bytes)
2344 +{
2345 +    int                    ret = 0;
2346 +    struct i2c_msg        msg;
2347 +    struct i2c_client    *client = dev->client;
2348 +
2349 +    msg.addr  = client->addr;
2350 +    msg.flags = 0;
2351 +    msg.buf   = data;
2352 +    msg.len   = bytes;
2353 +
2354 +    ret = i2c_transfer(client->adapter, &msg, 1);
2355 +    if(ret != 1) {
2356 +        dev_err(&dev->client->dev, "%s() i2c_transfer error, ret=%d\n", __func__, ret);
2357 +        ret = -EREMOTEIO;
2358 +    }
2359 +
2360 +    return ret;
2361 +}
2362 +
2363 +static int ms1112_readdata(struct ms1112_data *dev,unsigned int *val)
2364 +{
2365 +    unsigned char    buf[3];
2366 +    unsigned char    rx_data[3];
2367 +    int                rv = 0;
2368 +
2369 +    rv = ms1112_read_regs(dev, MS1112_CONV_REG, rx_data, 3);
2370 +    if(rv<0) {
2371 +        return rv;
2372 +    }
2373 +
2374 +    buf[0] = rx_data[0];
2375 +    buf[1] = rx_data[1];
2376 +    buf[2] = rx_data[2];
2377 +
2378 +    *val = (buf[0]<<8) | buf[1];
2379 +    return rv;
2380 +}
2381 +
2382 +static int ms1112_get_adc_result(struct ms1112_data *data, int chan, int *val)
2383 +{
2384 +    int            ret = 0;
2385 +    int            pga, dr , mode;
2386 +    uint8_t        mask, cfg;
2387 +
2388 +    if (chan < 0 || chan >= MS1112_CHANNELS)
2389 +        return -EINVAL;
2390 +
2391 +    mode = data->channel_data[chan].mode;
2392 +    pga = data->channel_data[chan].pga;
2393 +    dr = data->channel_data[chan].data_rate;
2394 +
2395 +    mask = MS1112_CFG_MUX_MASK | MS1112_CFG_PGA_MASK |
2396 +        MS1112_CFG_DR_MASK | MS1112_CFG_MOD_MASK | MS1112_SINGLESHOT << 7;
2397 +
2398 +    cfg = chan << MS1112_CFG_MUX_SHIFT | pga << MS1112_CFG_PGA_SHIFT |
2399 +        dr << MS1112_CFG_DR_SHIFT | mode << MS1112_CFG_MOD_SHIFT | MS1112_SINGLESHOT << 7;
2400 +
2401 +    cfg = (cfg & mask);
2402 +
2403 +    ms1112_write_regs(data, MS1112_CFG_REG, &cfg, 1);
2404 +
2405 +    ret = ms1112_readdata(data,val);
2406 +    return ret;
2407 +}
2408 +
2409 +static int ms1112_set_scale(struct ms1112_data *data, struct iio_chan_spec const *chan,
2410 +        int scale, int uscale)
2411 +{
2412 +    int i;
2413 +    int fullscale = div_s64((scale * 1000000LL + uscale) <<
2414 +            (chan->scan_type.realbits - 1), 1000000);
2415 +
2416 +    for (i = 0; i < ARRAY_SIZE(ms1112_fullscale_range); i++) {
2417 +        if (ms1112_fullscale_range[i] == fullscale) {
2418 +            data->channel_data[chan->address].pga = i;
2419 +            return 0;
2420 +        }
2421 +    }
2422 +
2423 +    return -EINVAL;
2424 +}
2425 +
2426 +static int ms1112_set_data_rate(struct ms1112_data *data, int chan, int rate)
2427 +{
2428 +    int i;
2429 +
2430 +    for (i = 0; i < data->chip->data_rate_len; i++) {
2431 +        if (data->chip->data_rate[i] == rate) {
2432 +            data->channel_data[chan].data_rate = i;
2433 +            return 0;
2434 +        }
2435 +    }
2436 +
2437 +    return -EINVAL;
2438 +}
2439 +
2440 +static int ms1112_read_avail(struct iio_dev *indio_dev,
2441 +        struct iio_chan_spec const *chan,
2442 +        const int **vals, int *type, int *length,
2443 +        long mask)
2444 +{
2445 +    struct ms1112_data *data = iio_priv(indio_dev);
2446 +
2447 +    if (chan->type != IIO_VOLTAGE)
2448 +        return -EINVAL;
2449 +
2450 +    switch (mask) {
2451 +        case IIO_CHAN_INFO_SCALE:
2452 +            *type = IIO_VAL_FRACTIONAL_LOG2;
2453 +            *vals =  data->chip->scale;
2454 +            *length = data->chip->scale_len;
2455 +            return IIO_AVAIL_LIST;
2456 +        case IIO_CHAN_INFO_SAMP_FREQ:
2457 +            *type = IIO_VAL_INT;
2458 +            *vals = data->chip->data_rate;
2459 +            *length = data->chip->data_rate_len;
2460 +            return IIO_AVAIL_LIST;
2461 +        default:
2462 +            return -EINVAL;
2463 +    }
2464 +}
2465 +
2466 +static int ms1112_read_raw(struct iio_dev *indio_dev, struct iio_chan_spec const *chan, int *val, int *val2, long mask)
2467 +{
2468 +    int ret, idx;
2469 +    struct ms1112_data *data = iio_priv(indio_dev);
2470 +
2471 +    mutex_lock(&data->lock);
2472 +    switch (mask) {
2473 +        case IIO_CHAN_INFO_RAW:
2474 +
2475 +            ret = iio_device_claim_direct_mode(indio_dev);
2476 +            if (ret)
2477 +                break;
2478 +
2479 +            ret = ms1112_get_adc_result(data, chan->address, val);
2480 +            if (ret < 0) {
2481 +                goto release_direct;
2482 +            }
2483 +
2484 +            *val = sign_extend32(*val >> chan->scan_type.shift,
2485 +                    chan->scan_type.realbits - 1);
2486 +
2487 +            ret = IIO_VAL_INT;
2488 +release_direct:
2489 +            iio_device_release_direct_mode(indio_dev);
2490 +            break;
2491 +
2492 +        case IIO_CHAN_INFO_SCALE:
2493 +            idx = data->channel_data[chan->address].pga;
2494 +            *val = ms1112_fullscale_range[idx];
2495 +            *val2 = chan->scan_type.realbits - 1;
2496 +            ret = IIO_VAL_FRACTIONAL_LOG2;
2497 +            break;
2498 +        case IIO_CHAN_INFO_SAMP_FREQ:
2499 +            idx = data->channel_data[chan->address].data_rate;
2500 +            *val = data->chip->data_rate[idx];
2501 +            ret = IIO_VAL_INT;
2502 +            break;
2503 +        default:
2504 +            ret = -EINVAL;
2505 +            break;
2506 +    }
2507 +    mutex_unlock(&data->lock);
2508 +
2509 +    return ret;
2510 +}
2511 +
2512 +static int ms1112_write_raw(struct iio_dev *indio_dev,
2513 +        struct iio_chan_spec const *chan, int val,
2514 +        int val2, long mask)
2515 +{
2516 +    struct ms1112_data *data = iio_priv(indio_dev);
2517 +    int ret;
2518 +
2519 +    mutex_lock(&data->lock);
2520 +    switch (mask) {
2521 +        case IIO_CHAN_INFO_SCALE:
2522 +            ret = ms1112_set_scale(data, chan, val, val2);
2523 +            break;
2524 +        case IIO_CHAN_INFO_SAMP_FREQ:
2525 +            ret = ms1112_set_data_rate(data, chan->address, val);
2526 +            break;
2527 +        default:
2528 +            ret = -EINVAL;
2529 +            break;
2530 +    }
2531 +    mutex_unlock(&data->lock);
2532 +
2533 +    return ret;
2534 +}
2535 +
2536 +static const struct iio_info ms1112_info = {
2537 +    .read_raw = ms1112_read_raw,
2538 +    .write_raw = ms1112_write_raw,
2539 +    .read_avail = ms1112_read_avail,
2540 +};
2541 +
2542 +
2543 +static const struct iio_chan_spec ms1112_channels[] = {
2544 +    MS1112_V_DIFF_CHAN(0, 1, MS1112_AIN0_AIN1, 16, 0, NULL, 0),
2545 +    MS1112_V_CHAN(2, MS1112_AIN2, 16, 0, NULL, 0),
2546 +    MS1112_V_CHAN(0, MS1112_AIN0, 16, 0, NULL, 0),
2547 +    MS1112_V_CHAN(1, MS1112_AIN1, 16, 0, NULL, 0),
2548 +    IIO_CHAN_SOFT_TIMESTAMP(MS1112_TIMESTAMP),
2549 +};
2550 +
2551 +static int ms1112_client_get_channels_config(struct i2c_client *client)
2552 +{
2553 +    struct iio_dev *indio_dev = i2c_get_clientdata(client);
2554 +    struct ms1112_data *data = iio_priv(indio_dev);
2555 +    struct device *dev = &client->dev;
2556 +    struct fwnode_handle *node;
2557 +    int i = -1;
2558 +
2559 +    device_for_each_child_node(dev, node) {
2560 +        u32 pval;
2561 +        unsigned int channel;
2562 +        unsigned int pga = MS1112_DEFAULT_PGA;
2563 +        unsigned int data_rate = MS1112_DEFAULT_DATA_RATE;
2564 +        unsigned int mode = MS1112_DEFAULT_MODE;
2565 +
2566 +        if (fwnode_property_read_u32(node, "reg", &pval)) {
2567 +            dev_err(dev, "invalid reg on %pfw\n", node);
2568 +            continue;
2569 +        }
2570 +
2571 +        channel = pval;
2572 +        if (channel >= MS1112_CHANNELS) {
2573 +            dev_err(dev, "invalid channel index %d on %pfw\n",
2574 +                    channel, node);
2575 +            continue;
2576 +        }
2577 +
2578 +        if (!fwnode_property_read_u32(node, "ti,gain", &pval)) {
2579 +            pga = pval;
2580 +            if (pga > 3 ) {
2581 +                dev_err(dev, "invalid gain on %pfw\n", node);
2582 +                fwnode_handle_put(node);
2583 +                return -EINVAL;
2584 +            }
2585 +        }
2586 +
2587 +        if (!fwnode_property_read_u32(node, "ti,datarate", &pval)) {
2588 +            data_rate = pval;
2589 +            if (data_rate > 3) {
2590 +                dev_err(dev, "invalid data_rate on %pfw\n", node);
2591 +                fwnode_handle_put(node);
2592 +                return -EINVAL;
2593 +            }
2594 +        }
2595 +
2596 +        if (!fwnode_property_read_u32(node, "ti,mode", &pval)) {
2597 +            mode = pval;
2598 +            if (mode > 1) {
2599 +                dev_err(dev, "invalid mode on %pfw\n", node);
2600 +                fwnode_handle_put(node);
2601 +                return -EINVAL;
2602 +            }
2603 +        }
2604 +
2605 +
2606 +        data->channel_data[channel].pga = pga;
2607 +        data->channel_data[channel].data_rate = data_rate;
2608 +        data->channel_data[channel].mode = mode;
2609 +        i++;
2610 +    }
2611 +
2612 +    return i < 0 ? -EINVAL : 0;
2613 +}
2614 +
2615 +static void ms1112_get_channels_config(struct i2c_client *client)
2616 +{
2617 +    unsigned int k;
2618 +
2619 +    struct iio_dev *indio_dev = i2c_get_clientdata(client);
2620 +    struct ms1112_data *data = iio_priv(indio_dev);
2621 +
2622 +    if (!ms1112_client_get_channels_config(client))
2623 +        return;
2624 +
2625 +    /* fallback on default configuration */
2626 +    for (k = 0; k < MS1112_CHANNELS; ++k) {
2627 +        data->channel_data[k].pga = MS1112_DEFAULT_PGA;
2628 +        data->channel_data[k].data_rate = MS1112_DEFAULT_DATA_RATE;
2629 +        data->channel_data[k].mode = MS1112_DEFAULT_MODE;
2630 +    }
2631 +}
2632 +
2633 +static int ms1112_probe(struct i2c_client *client,const struct i2c_device_id *id)
2634 +{
2635 +    struct iio_dev *indio_dev;
2636 +    const struct ms1112_chip_data *chip;
2637 +    struct ms1112_data *data;
2638 +    int ret;
2639 +    int i;
2640 +
2641 +    chip = device_get_match_data(&client->dev);
2642 +    if (!chip)
2643 +        chip = (const struct ms1112_chip_data *)id->driver_data;
2644 +    if (!chip)
2645 +        return dev_err_probe(&client->dev, -EINVAL, "Unknown chip\n");
2646 +
2647 +    indio_dev = devm_iio_device_alloc(&client->dev, sizeof(*indio_dev));
2648 +    if (!indio_dev)
2649 +        return -ENOMEM;
2650 +
2651 +    data = iio_priv(indio_dev);
2652 +    i2c_set_clientdata(client, indio_dev);
2653 +
2654 +    mutex_init(&data->lock);
2655 +
2656 +    indio_dev->name = MS1112_DRV_NAME;
2657 +    indio_dev->info = chip->info;
2658 +    indio_dev->modes = INDIO_DIRECT_MODE;
2659 +    indio_dev->channels = chip->channels;
2660 +    indio_dev->num_channels = chip->num_channels;
2661 +    data->chip = chip;
2662 +    data->client = client;
2663 +
2664 +    for (i = 0; i < MS1112_CHANNELS; i++) {
2665 +        int realbits = indio_dev->channels[i].scan_type.realbits;
2666 +
2667 +        data->thresh_data[i].low_thresh = -1 << (realbits - 1);
2668 +        data->thresh_data[i].high_thresh = (1 << (realbits - 1)) - 1;
2669 +    }
2670 +
2671 +    /* we need to keep this ABI the same as used by hwmon ADS1015 driver */
2672 +    ms1112_get_channels_config(client);
2673 +
2674 +    ret = iio_device_register(indio_dev);
2675 +    if (ret)
2676 +        dev_err(&client->dev, "Failed to register IIO device\n");
2677 +    return ret;
2678 +}
2679 +
2680 +static void ms1112_remove(struct i2c_client *client)
2681 +{
2682 +    struct iio_dev *indio_dev = i2c_get_clientdata(client);
2683 +
2684 +    iio_device_unregister(indio_dev);
2685 +
2686 +}
2687 +
2688 +static const struct ms1112_chip_data ms1112_data = {
2689 +    .channels    = ms1112_channels,
2690 +    .num_channels    = ARRAY_SIZE(ms1112_channels),
2691 +    .info        = &ms1112_info,
2692 +    .data_rate    = ms1112_data_rate,
2693 +    .data_rate_len    = ARRAY_SIZE(ms1112_data_rate),
2694 +    .scale        = ms1112_scale,
2695 +    .scale_len    = ARRAY_SIZE(ms1112_scale),
2696 +    .has_comparator = false,
2697 +};
2698 +
2699 +static const struct i2c_device_id ms1112_id[] = {
2700 +    { "ms1112", (kernel_ulong_t)&ms1112_data },
2701 +    {}
2702 +};
2703 +MODULE_DEVICE_TABLE(i2c, ms1112_id);
2704 +
2705 +static const struct of_device_id ms1112_of_match[] = {
2706 +    { .compatible = "ms,ms1112" },
2707 +    { },
2708 +};
2709 +MODULE_DEVICE_TABLE(of, ms1112_of_match);
2710 +
2711 +static struct i2c_driver ms1112_driver = {
2712 +    .driver = {
2713 +        .owner = THIS_MODULE,
2714 +        .name = "ms1112",
2715 +        .of_match_table = ms1112_of_match,
2716 +    },
2717 +    .probe = ms1112_probe,
2718 +    .remove = ms1112_remove,
2719 +    .id_table    = ms1112_id,
2720 +};
2721 +
2722 +module_i2c_driver(ms1112_driver);
2723 +
2724 +MODULE_AUTHOR("Tang Junfeng");
2725 +MODULE_DESCRIPTION("MS1112 IIO ADC Driver");
2726 +MODULE_LICENSE("GPL");