Support Nuvoton NPCM Video Capture/Encode Engine
Subsystems (4)
v9 cover Support Nuvoton NPCM Video Capture/Encode Engine
This patch series add DTS node, dt-bindings document and drivers for Video Capture/Differentiation Engine (VCD) and Encoding Compression Engine (ECE) present on Nuvoton NPCM SoCs.
VCD can capture/differentiate video data from digital or analog sources, then the ECE will compress the data into HEXTILE format which is defined in Remote Framebuffer Protocol (RFC 6143, chapter 7.7.4. Hextile Encoding).
The output of v4l2-compliance:
v4l2-compliance 1.23.0-4965, 64 bits, 64-bit time_t v4l2-compliance SHA: d0964d133053 2022-11-06 14:46:45
Compliance test for npcm-video device /dev/video0:
Driver Info:
Driver name : npcm-video
Card type : NPCM Video Engine
Bus info : platform:npcm-video
Driver version : 5.15.50
Capabilities : 0x85200001 Video Capture
Read/Write
Streaming
Extended Pix Format
Device Capabilities
Device Caps : 0x05200001
Video Capture
Read/Write
Streaming
Extended Pix Format
Required ioctls:
test VIDIOC_QUERYCAP: OK
test invalid ioctls: OK
Allow for multiple opens:
test second /dev/video0 open: OK
test VIDIOC_QUERYCAP: OK
test VIDIOC_G/S_PRIORITY: OK
test for unlimited opens: OK
Debug ioctls:
test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported) test VIDIOC_LOG_STATUS: OK (Not Supported)
Input ioctls:
test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported) test VIDIOC_G/S_FREQUENCY: OK (Not Supported) test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported) test VIDIOC_ENUMAUDIO: OK (Not Supported)
test VIDIOC_G/S/ENUMINPUT: OK
test VIDIOC_G/S_AUDIO: OK (Not Supported)
Inputs: 1 Audio Inputs: 0 Tuners: 0
Output ioctls:
test VIDIOC_G/S_MODULATOR: OK (Not Supported) test VIDIOC_G/S_FREQUENCY: OK (Not Supported) test VIDIOC_ENUMAUDOUT: OK (Not Supported) test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported) test VIDIOC_G/S_AUDOUT: OK (Not Supported)
Outputs: 0 Audio Outputs: 0 Modulators: 0
Input/Output configuration ioctls:
test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported) test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK test VIDIOC_DV_TIMINGS_CAP: OK
test VIDIOC_G/S_EDID: OK (Not Supported)
Control ioctls (Input 0):
test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK
test VIDIOC_QUERYCTRL: OK
test VIDIOC_G/S_CTRL: OK
test VIDIOC_G/S/TRY_EXT_CTRLS: OK
warn: /usr/src/debug/v4l-utils/1.22.1-r0/utils/v4l2-compliance/v4l2-test-controls.cpp(1070): V4L2_CID_DV_RX_POWER_PRESENT not found for input 0
test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK
test VIDIOC_G/S_JPEGCOMP: OK (Not Supported)
Standard Controls: 1 Private Controls: 2
Format ioctls (Input 0):
test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK
warn: /usr/src/debug/v4l-utils/1.22.1-r0/utils/v4l2-compliance/v4l2-test-formats.cpp(1411): S_PARM is supported for buftype 1, but not for ENUM_FRAMEINTERVALS
test VIDIOC_G/S_PARM: OK
test VIDIOC_G_FBUF: OK (Not Supported)
test VIDIOC_G_FMT: OK
test VIDIOC_TRY_FMT: OK
test VIDIOC_S_FMT: OK
test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported)
test Cropping: OK (Not Supported)
test Composing: OK (Not Supported)
test Scaling: OK (Not Supported)
Codec ioctls (Input 0):
test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported) test VIDIOC_G_ENC_INDEX: OK (Not Supported) test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported)
Buffer ioctls (Input 0):
test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK test VIDIOC_EXPBUF: OK
test Requests: OK (Not Supported)
Total for npcm-video device /dev/video0: 45, Succeeded: 45, Failed: 0, Warnings: 2
Changes in v9:
- Change ECE node name to "video-codec".
- Drop redundant "bindings for" in commit subject of patch 2/7.
- Refine the format of VCD/ECE dt-binding document.
Changes in v8:
- Let VCD/ECE to be 2 separate nodes and update dt-binding documents.
- Move register definitions out to a local header file.
- Driver refinements (add error handling for memory allocation, remove unnecessary condition check and introduce "goto"s to handle similar error recovery paths).
- Correct properties and typo in GFXI dt-binding document.
Changes in v7:
- Add uapi documents for driver-specific controls.
- Implement driver-specific controls for switching capture mode and getting the count of compressed HEXTILE rectangles.
- Drop unnecessary "enum_framesizes" and "enum_frameintervals" functions.
- Include the output of v4l2-compliance in cover letter.
Changes in v6:
- Support NPCM845 and add compatible "nuvoton,npcm845-video".
- Correct pixel format to V4L2_PIX_FMT_HEXTILE which is newly added in this patch series.
Changes in v5:
- Simplify function prefix "nuvoton_" to "npcm_".
- Increase VCD_BUSY_TIMEOUT_US and ECE_POLL_TIMEOUT_US to 300ms to prevent polling timeout when ECC is enabled or system is busy.
Changes in v4:
- Fix compile warning reported by kernel test robot.
Changes in v3:
- Add video driver entry in MAINTAINERS.
- Change config name to CONFIG_VIDEO_NPCM_VCD_ECE.
- Reduce the waiting time after resetting the VCD/ECE module.
- Correct data types of some variables.
Changes in v2:
- Add Hextile document and locate with vendor formats.
Marvin Lin (7):
ARM: dts: nuvoton: Add node for NPCM VCD and ECE engine
media: dt-binding: nuvoton: Add NPCM VCD and ECE engine
dt-bindings: arm: nuvoton: Add bindings for NPCM GFXI
media: v4l: Add HEXTILE compressed format
media: v4l2-ctrls: Reserve user control base for NPCM video controls
media: uapi: Add controls for NPCM video driver
media: nuvoton: Add driver for NPCM video capture and encode engine
.../bindings/arm/npcm/nuvoton,gfxi.yaml | 39 + .../bindings/media/nuvoton,npcm-ece.yaml | 43 + .../bindings/media/nuvoton,npcm-vcd.yaml | 72 + .../userspace-api/media/drivers/index.rst | 1 + .../media/drivers/npcm-video.rst | 67 + .../media/v4l/pixfmt-reserved.rst | 7 + MAINTAINERS | 12 + arch/arm/boot/dts/nuvoton-common-npcm7xx.dtsi | 23 + drivers/media/platform/Kconfig | 1 + drivers/media/platform/Makefile | 1 + drivers/media/platform/nuvoton/Kconfig | 15 + drivers/media/platform/nuvoton/Makefile | 2 + drivers/media/platform/nuvoton/npcm-regs.h | 171 ++ drivers/media/platform/nuvoton/npcm-video.c | 1924 +++++++++++++++++ drivers/media/v4l2-core/v4l2-ioctl.c | 1 + include/uapi/linux/npcm-video.h | 41 + include/uapi/linux/v4l2-controls.h | 6 + include/uapi/linux/videodev2.h | 1 + 18 files changed, 2427 insertions(+) create mode 100644 Documentation/devicetree/bindings/arm/npcm/nuvoton,gfxi.yaml create mode 100644 Documentation/devicetree/bindings/media/nuvoton,npcm-ece.yaml create mode 100644 Documentation/devicetree/bindings/media/nuvoton,npcm-vcd.yaml create mode 100644 Documentation/userspace-api/media/drivers/npcm-video.rst create mode 100644 drivers/media/platform/nuvoton/Kconfig create mode 100644 drivers/media/platform/nuvoton/Makefile create mode 100644 drivers/media/platform/nuvoton/npcm-regs.h create mode 100644 drivers/media/platform/nuvoton/npcm-video.c create mode 100644 include/uapi/linux/npcm-video.h
Signature · 1 line
2.34.1
PATCH v9 1/7 ARM: dts: nuvoton: Add node for NPCM VCD and ECE engine
Add node for Video Capture/Differentiation Engine (VCD) and Encoding Compression Engine (ECE) present on Nuvoton NPCM SoCs. Tested with Nuvoton NPCM750 evaluation board.
--- arch/arm/boot/dts/nuvoton-common-npcm7xx.dtsi | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+)
arch/arm/boot/dts/nuvoton-common-npcm7xx.dtsi +23 -0
@@ -179,6 +179,24 @@ fiux: spi@fb001000 { status = "disabled"; }; + vcd: vcd@f0810000 { + compatible = "nuvoton,npcm750-vcd"; + reg = <0xf0810000 0x10000>; + interrupts = <GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>; + resets = <&rstc NPCM7XX_RESET_IPSRST2 NPCM7XX_RESET_VCD>; + nuvoton,sysgcr = <&gcr>; + nuvoton,sysgfxi = <&gfxi>; + nuvoton,ece = <&ece>; + status = "disabled"; + }; + + ece: video-codec@f0820000 { + compatible = "nuvoton,npcm750-ece"; + reg = <0xf0820000 0x2000>; + resets = <&rstc NPCM7XX_RESET_IPSRST2 NPCM7XX_RESET_ECE>; + status = "disabled"; + }; + apb { #address-cells = <1>; #size-cells = <1>;
@@ -554,6 +572,11 @@ i2c15: i2c@8f000 { pinctrl-0 = <&smb15_pins>; status = "disabled"; }; + + gfxi: gfxi@e000 { + compatible = "nuvoton,npcm750-gfxi", "syscon"; + reg = <0xe000 0x100>; + }; }; };
Signature · 1 line
2.34.1
PATCH v9 2/7 media: dt-binding: nuvoton: Add NPCM VCD and ECE engine
In reply to Marvin LinAdd dt-binding document for Video Capture/Differentiation Engine (VCD) and Encoding Compression Engine (ECE) present on Nuvoton NPCM SoCs.
--- .../bindings/media/nuvoton,npcm-ece.yaml | 43 +++++++++++ .../bindings/media/nuvoton,npcm-vcd.yaml | 72 +++++++++++++++++++ 2 files changed, 115 insertions(+) create mode 100644 Documentation/devicetree/bindings/media/nuvoton,npcm-ece.yaml create mode 100644 Documentation/devicetree/bindings/media/nuvoton,npcm-vcd.yaml
Documentation/devicetree/bindings/media/nuvoton,npcm-ece.yaml new file +43 -0
@@ -0,0 +1,43 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/media/nuvoton,npcm-ece.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Nuvoton NPCM Encoding Compression Engine + +maintainers: + - Joseph Liu <[email protected]> + - Marvin Lin <[email protected]> + +description: | + Video Encoding Compression Engine (ECE) present on Nuvoton NPCM SoCs. + +properties: + compatible: + enum: + - nuvoton,npcm750-ece + - nuvoton,npcm845-ece + + reg: + maxItems: 1 + + resets: + maxItems: 1 + +required: + - compatible + - reg + - resets + +additionalProperties: false + +examples: + - | + #include <dt-bindings/reset/nuvoton,npcm7xx-reset.h> + + ece: video-codec@f0820000 { + compatible = "nuvoton,npcm750-ece"; + reg = <0xf0820000 0x2000>; + resets = <&rstc NPCM7XX_RESET_IPSRST2 NPCM7XX_RESET_ECE>; + };
Documentation/devicetree/bindings/media/nuvoton,npcm-vcd.yaml new file +72 -0
72 lines not on this page · raw message
Signature · 1 line
2.34.1
Re: [PATCH v9 2/7] media: dt-binding: nuvoton: Add NPCM VCD and ECE engine
Quoted 8 lines · Marvin Lin
Add dt-binding document for Video Capture/Differentiation Engine (VCD) and Encoding Compression Engine (ECE) present on Nuvoton NPCM SoCs.
Signed-off-by Marvin Lin <[email protected]>--- .../bindings/media/nuvoton,npcm-ece.yaml | 43 +++++++++++ .../bindings/media/nuvoton,npcm-vcd.yaml | 72 +++++++++++++++++++ 2 files changed, 115 insertions(+)
Best regards,
Krzysztof
Re: [PATCH v9 2/7] media: dt-binding: nuvoton: Add NPCM VCD and ECE engine
Quoted 11 lines · Marvin Lin
Quoted 8 lines
Add dt-binding document for Video Capture/Differentiation Engine (VCD) and Encoding Compression Engine (ECE) present on Nuvoton NPCM SoCs.
Signed-off-by Marvin Lin <[email protected]>--- .../bindings/media/nuvoton,npcm-ece.yaml | 43 +++++++++++ .../bindings/media/nuvoton,npcm-vcd.yaml | 72 +++++++++++++++++++ 2 files changed, 115 insertions(+)
Quoted 5 lines
Reviewed-by Krzysztof Kozlowski <[email protected]>Best regards,
Krzysztof
Thank you for your review!
Regards,
Marvin
PATCH v9 3/7 dt-bindings: arm: nuvoton: Add bindings for NPCM GFXI
In reply to Marvin LinAdd dt-bindings document for Graphics Core Information (GFXI) node. It is used by NPCM video driver to retrieve Graphics core information.
--- .../bindings/arm/npcm/nuvoton,gfxi.yaml | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 Documentation/devicetree/bindings/arm/npcm/nuvoton,gfxi.yaml
Documentation/devicetree/bindings/arm/npcm/nuvoton,gfxi.yaml new file +39 -0
@@ -0,0 +1,39 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/arm/npcm/nuvoton,gfxi.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Graphics Core Information block in Nuvoton SoCs + +maintainers: + - Joseph Liu <[email protected]> + - Marvin Lin <[email protected]> + +description: + The Graphics Core Information (GFXI) are a block of registers in Nuvoton SoCs + that analyzes Graphics core behavior and provides information in registers. + +properties: + compatible: + items: + - enum: + - nuvoton,npcm750-gfxi + - nuvoton,npcm845-gfxi + - const: syscon + + reg: + maxItems: 1 + +required: + - compatible + - reg + +additionalProperties: false + +examples: + - | + gfxi: gfxi@e000 { + compatible = "nuvoton,npcm750-gfxi", "syscon"; + reg = <0xe000 0x100>; + };
Signature · 1 line
2.34.1
PATCH v9 4/7 media: v4l: Add HEXTILE compressed format
In reply to Marvin LinAdd HEXTILE compressed format which is defined in Remote Framebuffer Protocol (RFC 6143, chapter 7.7.4 Hextile Encoding) and is used by Encoding Compression Engine (ECE) present on Nuvoton NPCM SoCs.
--- Documentation/userspace-api/media/v4l/pixfmt-reserved.rst | 7 +++++++ drivers/media/v4l2-core/v4l2-ioctl.c | 1 + include/uapi/linux/videodev2.h | 1 + 3 files changed, 9 insertions(+)
Documentation/userspace-api/media/v4l/pixfmt-reserved.rst +7 -0
@@ -275,6 +275,13 @@ please make a proposal on the linux-media mailing list. Decoder's implementation can be found here, `aspeed_codec <https://github.com/AspeedTech-BMC/aspeed_codec/>`__ + * .. _V4L2-PIX-FMT-HEXTILE: + + - ``V4L2_PIX_FMT_HEXTILE`` + - 'HXTL' + - Compressed format used by Nuvoton NPCM video driver. This format is + defined in Remote Framebuffer Protocol (RFC 6143, chapter 7.7.4 Hextile + Encoding). .. raw:: latex \normalsize
drivers/media/v4l2-core/v4l2-ioctl.c +1 -0
@@ -1494,6 +1494,7 @@ static void v4l_fill_fmtdesc(struct v4l2_fmtdesc *fmt)case V4L2_PIX_FMT_QC08C : descr ="QCOM Compressed 8-bit Format" ;break ;case V4L2_PIX_FMT_QC10C : descr ="QCOM Compressed 10-bit Format" ;break ;case V4L2_PIX_FMT_AJPG : descr ="Aspeed JPEG" ;break ; +case V4L2_PIX_FMT_HEXTILE : descr ="Hextile Compressed Format" ;break ;default :if (fmt->description[0 ])return ;
include/uapi/linux/videodev2.h +1 -0
@@ -778,6 +778,7 @@ struct v4l2_pix_format {#define V4L2_PIX_FMT_QC08C v4l2_fourcc('Q', '0', '8', 'C')/* Qualcomm 8-bit compressed */ #define V4L2_PIX_FMT_QC10C v4l2_fourcc('Q', '1', '0', 'C')/* Qualcomm 10-bit compressed */ #define V4L2_PIX_FMT_AJPG v4l2_fourcc('A', 'J', 'P', 'G')/* Aspeed JPEG */ +#define V4L2_PIX_FMT_HEXTILE v4l2_fourcc('H', 'X', 'T', 'L')/* Hextile compressed */ /* 10bit raw packed, 32 bytes for every 25 pixels, last LSB 6 bits unused */ #define V4L2_PIX_FMT_IPU3_SBGGR10 v4l2_fourcc('i', 'p', '3', 'b')/* IPU3 packed 10-bit BGGR bayer */
Signature · 1 line
2.34.1
PATCH v9 5/7 media: v4l2-ctrls: Reserve user control base for NPCM video controls
In reply to Marvin LinAdd a control base and reserve 16 controls for Nuvoton NPCM video controls.
--- include/uapi/linux/v4l2-controls.h | 6 ++++++ 1 file changed, 6 insertions(+)
include/uapi/linux/v4l2-controls.h +6 -0
@@ -199,6 +199,12 @@ enum v4l2_colorfx {*/ #define V4L2_CID_USER_ASPEED_BASE (V4L2_CID_USER_BASE + 0x11a0) +/* +* The base for Nuvoton NPCM driver controls. +* We reserve 16 controls for this driver. +*/ +#define V4L2_CID_USER_NPCM_BASE (V4L2_CID_USER_BASE + 0x11b0) +/* MPEG-class control IDs */ /* The MPEG controls are applicable to all codec controls * and the 'MPEG' part of the define is historical */
Signature · 1 line
2.34.1
PATCH v9 6/7 media: uapi: Add controls for NPCM video driver
In reply to Marvin LinCreate controls for Nuvoton NPCM video driver to support setting capture mode of Video Capture/Differentiation (VCD) engine and getting the count of HEXTILE rectangles that is compressed by Encoding Compression Engine (ECE).
--- .../userspace-api/media/drivers/index.rst | 1 + .../media/drivers/npcm-video.rst | 67 +++++++++++++++++++ include/uapi/linux/npcm-video.h | 41 ++++++++++++ 3 files changed, 109 insertions(+) create mode 100644 Documentation/userspace-api/media/drivers/npcm-video.rst create mode 100644 include/uapi/linux/npcm-video.h
Documentation/userspace-api/media/drivers/index.rst +1 -0
@@ -38,6 +38,7 @@ For more details see the file COPYING in the source distribution of Linux. imx-uapi max2175 meye-uapi + npcm-video omap3isp-uapi st-vgxy61 uvcvideo
Documentation/userspace-api/media/drivers/npcm-video.rst new file +67 -0
67 lines not on this page · raw message
include/uapi/linux/npcm-video.h new file +41 -0
41 lines not on this page · raw message
Signature · 1 line
2.34.1
PATCH v9 7/7 media: nuvoton: Add driver for NPCM video capture and encode engine
In reply to Marvin LinAdd driver for Video Capture/Differentiation Engine (VCD) and Encoding Compression Engine (ECE) present on Nuvoton NPCM SoCs. The VCD can capture and differentiate video data from digital or analog sources, then the ECE will compress the data into HEXTILE format. This driver implements V4L2 interfaces and provides user controls to support KVM feature, also tested with VNC Viewer and openbmc/obmc-ikvm.
--- MAINTAINERS | 12 + drivers/media/platform/Kconfig | 1 + drivers/media/platform/Makefile | 1 + drivers/media/platform/nuvoton/Kconfig | 15 + drivers/media/platform/nuvoton/Makefile | 2 + drivers/media/platform/nuvoton/npcm-regs.h | 171 ++ drivers/media/platform/nuvoton/npcm-video.c | 1924 +++++++++++++++++++ 7 files changed, 2126 insertions(+) create mode 100644 drivers/media/platform/nuvoton/Kconfig create mode 100644 drivers/media/platform/nuvoton/Makefile create mode 100644 drivers/media/platform/nuvoton/npcm-regs.h create mode 100644 drivers/media/platform/nuvoton/npcm-video.c
MAINTAINERS +12 -0
@@ -2570,6 +2570,18 @@ F: drivers/rtc/rtc-nct3018y.c F: include/dt-bindings/clock/nuvoton,npcm7xx-clock.h F: include/dt-bindings/clock/nuvoton,npcm845-clk.h +ARM/NUVOTON NPCM VIDEO ENGINE DRIVER +M: Joseph Liu <[email protected]> +M: Marvin Lin <[email protected]> +L: [email protected] +L: [email protected] (moderated for non-subscribers) +S: Maintained +F: Documentation/devicetree/bindings/media/nuvoton,npcm-ece.yaml +F: Documentation/devicetree/bindings/media/nuvoton,npcm-vcd.yaml +F: Documentation/userspace-api/media/drivers/npcm-video.rst +F: drivers/media/platform/nuvoton/ +F: include/uapi/linux/npcm-video.h + ARM/NUVOTON WPCM450 ARCHITECTURE M: Jonathan Neuschäfer <[email protected]> L: [email protected] (moderated for non-subscribers)
drivers/media/platform/Kconfig +1 -0
@@ -73,6 +73,7 @@ source "drivers/media/platform/intel/Kconfig" source "drivers/media/platform/marvell/Kconfig" source "drivers/media/platform/mediatek/Kconfig" source "drivers/media/platform/microchip/Kconfig" +source "drivers/media/platform/nuvoton/Kconfig" source "drivers/media/platform/nvidia/Kconfig" source "drivers/media/platform/nxp/Kconfig" source "drivers/media/platform/qcom/Kconfig"
drivers/media/platform/Makefile +1 -0
@@ -16,6 +16,7 @@ obj-y += intel/ obj-y += marvell/ obj-y += mediatek/ obj-y += microchip/ +obj-y += nuvoton/ obj-y += nvidia/ obj-y += nxp/ obj-y += qcom/
drivers/media/platform/nuvoton/Kconfig new file +15 -0
@@ -0,0 +1,15 @@ +# SPDX-License-Identifier: GPL-2.0-only + +comment "Nuvoton media platform drivers" + +config VIDEO_NPCM_VCD_ECE + tristate "Nuvoton NPCM Video Capture/Encode Engine driver" + depends on V4L_PLATFORM_DRIVERS + depends on VIDEO_DEV + select VIDEOBUF2_DMA_CONTIG + help + Support for the Video Capture/Differentiation Engine (VCD) and + Encoding Compression Engine (ECE) present on Nuvoton NPCM SoCs. + The VCD can capture and differentiate video data from digital or + analog sources, then the ECE will compress the data into HEXTILE + format.
drivers/media/platform/nuvoton/Makefile new file +2 -0
@@ -0,0 +1,2 @@ +# SPDX-License-Identifier: GPL-2.0-only +obj-$(CONFIG_VIDEO_NPCM_VCD_ECE) += npcm-video.o
drivers/media/platform/nuvoton/npcm-regs.h new file +171 -0
171 lines not on this page · raw message
drivers/media/platform/nuvoton/npcm-video.c new file +1924 -0
1,924 lines not on this page · raw message
Signature · 1 line
2.34.1
Re: [PATCH v9 7/7] media: nuvoton: Add driver for NPCM video capture and encode engine
Hi Marvin,
Still something to look at...
W dniu 20.12.2022 o 10:40, Marvin Lin pisze:
Quoted 553 lines
Add driver for Video Capture/Differentiation Engine (VCD) and Encoding Compression Engine (ECE) present on Nuvoton NPCM SoCs. The VCD can capture and differentiate video data from digital or analog sources, then the ECE will compress the data into HEXTILE format. This driver implements V4L2 interfaces and provides user controls to support KVM feature, also tested with VNC Viewer and openbmc/obmc-ikvm.
Signed-off-by Marvin Lin <[email protected]>--- MAINTAINERS | 12 + drivers/media/platform/Kconfig | 1 + drivers/media/platform/Makefile | 1 + drivers/media/platform/nuvoton/Kconfig | 15 + drivers/media/platform/nuvoton/Makefile | 2 + drivers/media/platform/nuvoton/npcm-regs.h | 171 ++ drivers/media/platform/nuvoton/npcm-video.c | 1924 +++++++++++++++++++ 7 files changed, 2126 insertions(+)create mode 100644
drivers/media/platform/nuvoton/Kconfigcreate mode 100644drivers/media/platform/nuvoton/Makefilecreate mode 100644drivers/media/platform/nuvoton/npcm-regs.hcreate mode 100644drivers/media/platform/nuvoton/npcm-video.cMAINTAINERS +12
-0@@ -2570,6 +2570,18 @@ F: drivers/rtc/rtc-nct3018y.c F: include/dt-bindings/clock/nuvoton,npcm7xx-clock.h F: include/dt-bindings/clock/nuvoton,npcm845-clk.h +ARM/NUVOTON NPCM VIDEO ENGINE DRIVER +M: Joseph Liu <[email protected]> +M: Marvin Lin <[email protected]> +L: [email protected] +L: [email protected] (moderated for non-subscribers) +S: Maintained +F: Documentation/devicetree/bindings/media/nuvoton,npcm-ece.yaml +F: Documentation/devicetree/bindings/media/nuvoton,npcm-vcd.yaml +F: Documentation/userspace-api/media/drivers/npcm-video.rst +F: drivers/media/platform/nuvoton/ +F: include/uapi/linux/npcm-video.h + ARM/NUVOTON WPCM450 ARCHITECTURE M: Jonathan Neuschäfer <[email protected]> L: [email protected] (moderated for non-subscribers)drivers/media/platform/Kconfig +1
-0@@ -73,6 +73,7 @@ source "drivers/media/platform/intel/Kconfig" source "drivers/media/platform/marvell/Kconfig" source "drivers/media/platform/mediatek/Kconfig" source "drivers/media/platform/microchip/Kconfig" +source "drivers/media/platform/nuvoton/Kconfig" source "drivers/media/platform/nvidia/Kconfig" source "drivers/media/platform/nxp/Kconfig" source "drivers/media/platform/qcom/Kconfig"drivers/media/platform/Makefile +1
-0@@ -16,6 +16,7 @@ obj-y += intel/ obj-y += marvell/ obj-y += mediatek/ obj-y += microchip/ +obj-y += nuvoton/ obj-y += nvidia/ obj-y += nxp/ obj-y += qcom/drivers/media/platform/nuvoton/Kconfig new file +15
-0@@ -0,0 +1,15 @@ +# SPDX-License-Identifier: GPL-2.0-only + +comment "Nuvoton media platform drivers" + +config VIDEO_NPCM_VCD_ECE + tristate "Nuvoton NPCM Video Capture/Encode Engine driver" + depends on V4L_PLATFORM_DRIVERS + depends on VIDEO_DEV + select VIDEOBUF2_DMA_CONTIG + help + Support for the Video Capture/Differentiation Engine (VCD) and + Encoding Compression Engine (ECE) present on Nuvoton NPCM SoCs. + The VCD can capture and differentiate video data from digital or + analog sources, then the ECE will compress the data into HEXTILE + format.drivers/media/platform/nuvoton/Makefile new file +2
-0@@ -0,0 +1,2 @@ +# SPDX-License-Identifier: GPL-2.0-only +obj-$(CONFIG_VIDEO_NPCM_VCD_ECE) += npcm-video.odrivers/media/platform/nuvoton/npcm-regs.h new file +171
-0@@ -0,0 +1,171 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* +* Register definition header for NPCM video driver +* +* Copyright (C) 2022 Nuvoton Technologies +*/ + +#ifndef _NPCM_REGS_H +#define _NPCM_REGS_H + +/* VCD Registers */ +#define VCD_DIFF_TBL 0x0000 +#define VCD_FBA_ADR 0x8000 +#define VCD_FBB_ADR 0x8004 + +#define VCD_FB_LP 0x8008 +#define VCD_FBA_LP GENMASK(15, 0) +#define VCD_FBB_LP GENMASK(31, 16) + +#define VCD_CAP_RES 0x800c +#define VCD_CAP_RES_VERT_RES GENMASK(10, 0) +#define VCD_CAP_RES_HOR_RES GENMASK(26, 16) + +#define VCD_MODE 0x8014 +#define VCD_MODE_VCDE BIT(0) +#define VCD_MODE_CM565 BIT(1) +#define VCD_MODE_IDBC BIT(3) +#define VCD_MODE_COLOR_CNVRT GENMASK(5, 4) +#define VCD_MODE_COLOR_CNVRT_NO_CNVRT 0 +#define VCD_MODE_COLOR_CNVRT_RGB_222 1 +#define VCD_MODE_COLOR_CNVRT_666_MODE 2 +#define VCD_MODE_COLOR_CNVRT_RGB_888 3 +#define VCD_MODE_KVM_BW_SET BIT(16) + +#define VCD_CMD 0x8018 +#define VCD_CMD_GO BIT(0) +#define VCD_CMD_RST BIT(1) +#define VCD_CMD_OPERATION GENMASK(6, 4) +#define VCD_CMD_OPERATION_CAPTURE 0 +#define VCD_CMD_OPERATION_COMPARE 2 + +#define VCD_STAT 0x801c +#define VCD_STAT_DONE BIT(0) +#define VCD_STAT_IFOT BIT(2) +#define VCD_STAT_IFOR BIT(3) +#define VCD_STAT_BUSY BIT(30) +#define VCD_STAT_CLEAR 0x3fff + +#define VCD_INTE 0x8020 +#define VCD_INTE_DONE_IE BIT(0) +#define VCD_INTE_IFOT_IE BIT(2) +#define VCD_INTE_IFOR_IE BIT(3) + +#define VCD_RCHG 0x8028 +#define VCD_RCHG_TIM_PRSCL GENMASK(12, 9) + +#define VCD_FIFO 0x805c +#define VCD_FIFO_TH 0x100350ff + +#define VCD_MAX_SRC_BUFFER_SIZE 0x500000/* 1920 x 1200 x 2 bpp */ +#define VCD_KVM_BW_PCLK 120000000UL +#define VCD_BUSY_TIMEOUT_US 300000 + +/* ECE Registers */ +#define ECE_DDA_CTRL 0x0000 +#define ECE_DDA_CTRL_ECEEN BIT(0) +#define ECE_DDA_CTRL_INTEN BIT(8) + +#define ECE_DDA_STS 0x0004 +#define ECE_DDA_STS_CDREADY BIT(8) +#define ECE_DDA_STS_ACDRDY BIT(10) + +#define ECE_FBR_BA 0x0008 +#define ECE_ED_BA 0x000c +#define ECE_RECT_XY 0x0010 + +#define ECE_RECT_DIMEN 0x0014 +#define ECE_RECT_DIMEN_WR GENMASK(10, 0) +#define ECE_RECT_DIMEN_WLTR GENMASK(14, 11) +#define ECE_RECT_DIMEN_HR GENMASK(26, 16) +#define ECE_RECT_DIMEN_HLTR GENMASK(30, 27) + +#define ECE_RESOL 0x001c +#define ECE_RESOL_FB_LP_512 0 +#define ECE_RESOL_FB_LP_1024 1 +#define ECE_RESOL_FB_LP_2048 2 +#define ECE_RESOL_FB_LP_2560 3 +#define ECE_RESOL_FB_LP_4096 4 + +#define ECE_HEX_CTRL 0x0040 +#define ECE_HEX_CTRL_ENCDIS BIT(0) +#define ECE_HEX_CTRL_ENC_GAP GENMASK(12, 8) + +#define ECE_HEX_RECT_OFFSET 0x0048 +#define ECE_HEX_RECT_OFFSET_MASK GENMASK(22, 0) + +#define ECE_TILE_W 16 +#define ECE_TILE_H 16 +#define ECE_POLL_TIMEOUT_US 300000 + +/* GCR Registers */ +#define INTCR 0x3c +#define INTCR_GFXIFDIS GENMASK(9, 8) +#define INTCR_DEHS BIT(27) + +#define INTCR2 0x60 +#define INTCR2_GIRST2 BIT(2) +#define INTCR2_GIHCRST BIT(5) +#define INTCR2_GIVCRST BIT(6) + +#define INTCR3 0x9c +#define INTCR3_GMMAP GENMASK(10, 8) +#define INTCR3_GMMAP_128MB 0 +#define INTCR3_GMMAP_256MB 1 +#define INTCR3_GMMAP_512MB 2 +#define INTCR3_GMMAP_1GB 3 +#define INTCR3_GMMAP_2GB 4 + +#define INTCR4 0xc0 +#define INTCR4_GMMAP GENMASK(22, 16) +#define INTCR4_GMMAP_512MB 0x1f +#define INTCR4_GMMAP_512MB_ECC 0x1b +#define INTCR4_GMMAP_1GB 0x3f +#define INTCR4_GMMAP_1GB_ECC 0x37 +#define INTCR4_GMMAP_2GB 0x7f +#define INTCR4_GMMAP_2GB_ECC 0x6f + +#define ADDR_GMMAP_128MB 0x07000000 +#define ADDR_GMMAP_256MB 0x0f000000 +#define ADDR_GMMAP_512MB 0x1f000000 +#define ADDR_GMMAP_512MB_ECC 0x1b000000 +#define ADDR_GMMAP_1GB 0x3f000000 +#define ADDR_GMMAP_1GB_ECC 0x37000000 +#define ADDR_GMMAP_2GB 0x7f000000 +#define ADDR_GMMAP_2GB_ECC 0x6f000000 + +#define GMMAP_LENGTH 0xc00000/* 4MB preserved, total 16MB */ + +#define MFSEL1 0x0c +#define MFSEL1_DVH1SEL BIT(27) + +/* GFXI Register */ +#define DISPST 0x00 +#define DISPST_HSCROFF BIT(1) +#define DISPST_MGAMODE BIT(7) + +#define HVCNTL 0x10 +#define HVCNTL_MASK GENMASK(7, 0) + +#define HVCNTH 0x14 +#define HVCNTH_MASK GENMASK(2, 0) + +#define VVCNTL 0x20 +#define VVCNTL_MASK GENMASK(7, 0) + +#define VVCNTH 0x24 +#define VVCNTH_MASK GENMASK(2, 0) + +#define GPLLINDIV 0x40 +#define GPLLINDIV_MASK GENMASK(5, 0) +#define GPLLINDIV_GPLLFBDV8 BIT(7) + +#define GPLLFBDIV 0x44 +#define GPLLFBDIV_MASK GENMASK(7, 0) + +#define GPLLST 0x48 +#define GPLLST_PLLOTDIV1 GENMASK(2, 0) +#define GPLLST_PLLOTDIV2 GENMASK(5, 3) +#define GPLLST_GPLLFBDV109 GENMASK(7, 6) + +#endif /* _NPCM_REGS_H */ drivers/media/platform/nuvoton/npcm-video.c new file +272
-0@@ -0,0 +1,1924 @@ +// SPDX-License-Identifier: GPL-2.0 +/* +* Driver for Video Capture/Differentiation Engine (VCD) and Encoding +* Compression Engine (ECE) present on Nuvoton NPCM SoCs. +* +* Copyright (C) 2022 Nuvoton Technologies +*/ + +#include <linux/atomic.h> +#include <linux/bitfield.h> +#include <linux/bitmap.h> +#include <linux/clk.h> +#include <linux/delay.h> +#include <linux/device.h> +#include <linux/dma-mapping.h> +#include <linux/interrupt.h> +#include <linux/jiffies.h> +#include <linux/mfd/syscon.h> +#include <linux/module.h> +#include <linux/mutex.h> +#include <linux/of.h> +#include <linux/of_irq.h> +#include <linux/of_platform.h> +#include <linux/of_reserved_mem.h> +#include <linux/platform_device.h> +#include <linux/regmap.h> +#include <linux/reset.h> +#include <linux/sched.h> +#include <linux/spinlock.h> +#include <linux/string.h> +#include <linux/v4l2-controls.h> +#include <linux/videodev2.h> +#include <linux/wait.h> +#include <linux/workqueue.h> +#include <media/v4l2-ctrls.h> +#include <media/v4l2-dev.h> +#include <media/v4l2-device.h> +#include <media/v4l2-dv-timings.h> +#include <media/v4l2-event.h> +#include <media/v4l2-ioctl.h> +#include <media/videobuf2-dma-contig.h> +#include <uapi/linux/npcm-video.h> +#include "npcm-regs.h" + +#define DEVICE_NAME "npcm-video" +#define MAX_FRAME_RATE 60 +#define MAX_WIDTH 1920 +#define MAX_HEIGHT 1200 +#define MIN_WIDTH 320 +#define MIN_HEIGHT 240 +#define MIN_LP 512 +#define MAX_LP 4096 +#define RECT_W 16 +#define RECT_H 16 +#define BITMAP_SIZE 32 + +struct npcm_video_addr { +size_t size; +dma_addr_t dma; +void *virt; +}; + +struct npcm_video_buffer { +struct vb2_v4l2_buffer vb; +struct list_head link; +}; + +#define to_npcm_video_buffer (x) \ + container_of((x), struct npcm_video_buffer, vb) + +enum { +VIDEO_STREAMING , +VIDEO_FRAME_INPRG , +VIDEO_STOPPED , +}; + +struct rect_list { +struct v4l2_clip clip; +struct list_head list; +}; + +struct rect_list_info { +struct rect_list *list; +struct rect_list *first; +struct list_head *head; +unsigned int index; +unsigned int tile_perline; +unsigned int tile_perrow; +unsigned int offset_perline; +unsigned int tile_size; +unsigned int tile_cnt; +}; + +struct npcm_ece { +struct regmap *regmap; +atomic_t clients; +struct reset_control *reset; +}; + +struct npcm_video { +struct regmap *gcr_regmap; +struct regmap *gfx_regmap; +struct regmap *vcd_regmap; + +struct device *dev; +struct v4l2_ctrl_handler ctrl_handler; +struct v4l2_device v4l2_dev; +struct v4l2_pix_format pix_fmt; +struct v4l2_bt_timings active_timings; +struct v4l2_bt_timings detected_timings; +u32 v4l2_input_status; +struct vb2_queue queue; +struct video_device vdev; +struct mutex video_lock;/* v4l2 and videobuf2 lock */ + +struct list_head buffers; +spinlock_t lock;/* buffer list lock */ +unsigned long flags; +unsigned int sequence; + +size_t max_buffer_size; +struct npcm_video_addr src; +struct reset_control *reset; +struct npcm_ece ece; + +unsigned int frame_rate; +unsigned int vb_index; +u32 bytesperline; +u8 bytesperpixel; +u32 rect_cnt; +u8 num_buffers; +struct list_head *list; +u32 *rect; +int ctrl_cmd; +int op_cmd; +}; + +#define to_npcm_video (x) container_of((x), struct npcm_video, v4l2_dev) + +static const struct v4l2_dv_timings_cap npcm_video_timings_cap = { + .type =V4L2_DV_BT_656_1120 , + .bt = { + .min_width =MIN_WIDTH , + .max_width =MAX_WIDTH , + .min_height =MIN_HEIGHT , + .max_height =MAX_HEIGHT , + .min_pixelclock =6574080 ,/* 640 x 480 x 24Hz */ + .max_pixelclock =138240000 ,/* 1920 x 1200 x 60Hz */ + .standards =V4L2_DV_BT_STD_CEA861 |V4L2_DV_BT_STD_DMT | +V4L2_DV_BT_STD_CVT |V4L2_DV_BT_STD_GTF , + .capabilities =V4L2_DV_BT_CAP_PROGRESSIVE | +V4L2_DV_BT_CAP_REDUCED_BLANKING | +V4L2_DV_BT_CAP_CUSTOM , + }, +}; + +static DECLARE_BITMAP(bitmap, BITMAP_SIZE); + +static void npcm_video_ece_prepend_rect_header (u8 *addr,u16 x,u16 y,u16 w, +u16 h) +{ +__be16 x_pos =cpu_to_be16 (x); +__be16 y_pos =cpu_to_be16 (y); +__be16 width =cpu_to_be16 (w); +__be16 height =cpu_to_be16 (h); +__be32 encoding =cpu_to_be32 (5 );/* Hextile encoding */ + +memcpy (addr, &x_pos,2 ); +memcpy (addr +2 , &y_pos,2 ); +memcpy (addr +4 , &width,2 ); +memcpy (addr +6 , &height,2 ); +memcpy (addr +8 , &encoding,4 ); +} + +static unsigned int npcm_video_ece_get_ed_size (struct npcm_video *video, +u32 offset,u8 *addr) +{ +struct regmap *ece = video->ece.regmap; +u32 size, gap, val; +int ret; + + ret =regmap_read_poll_timeout (ece,ECE_DDA_STS , val, + (val &ECE_DDA_STS_CDREADY ), +0 ,ECE_POLL_TIMEOUT_US ); + +if (ret) { +dev_warn (video->dev,"Wait for ECE_DDA_STS_CDREADY timeout\n" ); +return 0 ; + } + + size =readl (addr + offset); + +regmap_read (ece,ECE_HEX_CTRL , &val); + gap =FIELD_GET (ECE_HEX_CTRL_ENC_GAP , val); + +dev_dbg (video->dev,"offset = %u, ed_size = %u, gap = %u\n" , offset, + size, gap); + +return size + gap; +} + +static void npcm_video_ece_enc_rect (struct npcm_video *video,u32 r_off_x, +u32 r_off_y,u32 r_w,u32 r_h) +{ +struct regmap *ece = video->ece.regmap; +u32 rect_offset = (r_off_y * video->bytesperline) + (r_off_x *2 ); +u32 temp; +u32 w_tile; +u32 h_tile; +u32 w_size =ECE_TILE_W ; +u32 h_size =ECE_TILE_H ; + +regmap_update_bits (ece,ECE_DDA_CTRL ,ECE_DDA_CTRL_ECEEN ,0 ); +regmap_update_bits (ece,ECE_DDA_CTRL ,ECE_DDA_CTRL_ECEEN , +ECE_DDA_CTRL_ECEEN ); +regmap_write (ece,ECE_DDA_STS ,ECE_DDA_STS_CDREADY | +ECE_DDA_STS_ACDRDY ); +regmap_write (ece,ECE_RECT_XY , rect_offset); + + w_tile = r_w /ECE_TILE_W ; + h_tile = r_h /ECE_TILE_H ; + +if (r_w %ECE_TILE_W ) { + w_tile +=1 ; + w_size = r_w %ECE_TILE_W ; + } + +if (r_h %ECE_TILE_H || !h_tile) { + h_tile +=1 ; + h_size = r_h %ECE_TILE_H ; + } + + temp =FIELD_PREP (ECE_RECT_DIMEN_WLTR , w_size -1 ) | +FIELD_PREP (ECE_RECT_DIMEN_HLTR , h_size -1 ) | +FIELD_PREP (ECE_RECT_DIMEN_WR , w_tile -1 ) | +FIELD_PREP (ECE_RECT_DIMEN_HR , h_tile -1 ); + +regmap_write (ece,ECE_RECT_DIMEN , temp); +} + +static u32 npcm_video_ece_read_rect_offset (struct npcm_video *video) +{ +struct regmap *ece = video->ece.regmap; +u32 offset; + +regmap_read (ece,ECE_HEX_RECT_OFFSET , &offset); +return FIELD_GET (ECE_HEX_RECT_OFFSET_MASK , offset); +} + +/* +* Set the line pitch (in bytes) for the frame buffers. +* Can be on of those values: 512, 1024, 2048, 2560 or 4096 bytes. +*/ +static void npcm_video_ece_set_lp (struct npcm_video *video,u32 pitch) +{ +u32 lp; +struct regmap *ece = video->ece.regmap; + +switch (pitch) { +case 512 : + lp =ECE_RESOL_FB_LP_512 ; +break ; +case 1024 : + lp =ECE_RESOL_FB_LP_1024 ; +break ; +case 2048 : + lp =ECE_RESOL_FB_LP_2048 ; +break ; +case 2560 : + lp =ECE_RESOL_FB_LP_2560 ; +break ; +case 4096 :
drivers/media/platform/nuvoton/npcm-video.c line 282
Quoted 10 lines
drivers/media/platform/nuvoton/npcm-video.c new file +10
-0+ lp =ECE_RESOL_FB_LP_4096 ; +break ; +default : +return ; + } + +regmap_write (ece,ECE_RESOL , lp); +} + +static void npcm_video_ece_set_fb_addr (struct npcm_video *video,u32 buffer)
static inline void?
drivers/media/platform/nuvoton/npcm-video.c line 289
Quoted 7 lines
drivers/media/platform/nuvoton/npcm-video.c new file +7
-0+{ +struct regmap *ece = video->ece.regmap; + +regmap_write (ece,ECE_FBR_BA , buffer); +} + +static void npcm_video_ece_set_enc_dba (struct npcm_video *video,u32 addr)
ditto
drivers/media/platform/nuvoton/npcm-video.c line 296
Quoted 7 lines
drivers/media/platform/nuvoton/npcm-video.c new file +7
-0+{ +struct regmap *ece = video->ece.regmap; + +regmap_write (ece,ECE_ED_BA , addr); +} + +static void npcm_video_ece_clear_rect_offset (struct npcm_video *video)
ditto
Quoted 23 lines
drivers/media/platform/nuvoton/npcm-video.c new file +23
-0+{ +struct regmap *ece = video->ece.regmap; + +regmap_write (ece,ECE_HEX_RECT_OFFSET ,0 ); +} + +static void npcm_video_ece_ctrl_reset (struct npcm_video *video) +{ +struct regmap *ece = video->ece.regmap; + +regmap_update_bits (ece,ECE_DDA_CTRL ,ECE_DDA_CTRL_ECEEN ,0 ); +regmap_update_bits (ece,ECE_HEX_CTRL ,ECE_HEX_CTRL_ENCDIS , +ECE_HEX_CTRL_ENCDIS ); +regmap_update_bits (ece,ECE_DDA_CTRL ,ECE_DDA_CTRL_ECEEN , +ECE_DDA_CTRL_ECEEN ); +regmap_update_bits (ece,ECE_HEX_CTRL ,ECE_HEX_CTRL_ENCDIS ,0 ); + +npcm_video_ece_clear_rect_offset (video); +} + +static void npcm_video_ece_ip_reset (struct npcm_video *video) +{ +/*
drivers/media/platform/nuvoton/npcm-video.c line 329
Quoted 10 lines
drivers/media/platform/nuvoton/npcm-video.c new file +10
-0+* After resetting a module and clearing the reset bit, it should wait +* at least 10 us before accessing the module. +*/ +reset_control_assert (video->ece.reset); +usleep_range (10 ,20 ); +reset_control_deassert (video->ece.reset); +usleep_range (10 ,20 ); +} + +static int npcm_video_ece_init (struct npcm_video *video)
static inline int? But...
drivers/media/platform/nuvoton/npcm-video.c line 334
Quoted 5 lines
drivers/media/platform/nuvoton/npcm-video.c new file +5
-0+{ +npcm_video_ece_ip_reset (video); +npcm_video_ece_ctrl_reset (video); + +return 0 ;
...the return value is not inspected by the only caller anyway, so why not
static inline void?
drivers/media/platform/nuvoton/npcm-video.c line 347
Quoted 13 lines
drivers/media/platform/nuvoton/npcm-video.c new file +13
-0+} + +static int npcm_video_ece_stop (struct npcm_video *video) +{ +struct regmap *ece = video->ece.regmap; + +regmap_update_bits (ece,ECE_DDA_CTRL ,ECE_DDA_CTRL_ECEEN ,0 ); +regmap_update_bits (ece,ECE_DDA_CTRL ,ECE_DDA_CTRL_INTEN ,0 ); +regmap_update_bits (ece,ECE_HEX_CTRL ,ECE_HEX_CTRL_ENCDIS , +ECE_HEX_CTRL_ENCDIS ); +npcm_video_ece_clear_rect_offset (video); + +return 0 ;
Nobody inspects this return value. Either void, or check the return value at call site and handle a non-zero failure.
Quoted 197 lines
drivers/media/platform/nuvoton/npcm-video.c new file +197
-0+} + +static bool npcm_video_alloc_buf (struct npcm_video *video, +struct npcm_video_addr *addr,size_t size) +{ +if (size >VCD_MAX_SRC_BUFFER_SIZE ) + size =VCD_MAX_SRC_BUFFER_SIZE ; + + addr->virt =dma_alloc_coherent (video->dev, size, &addr->dma, +GFP_KERNEL ); + +if (!addr->virt) +return false; + + addr->size = size; +return true; +} + +static void npcm_video_free_buf (struct npcm_video *video, +struct npcm_video_addr *addr) +{ +dma_free_coherent (video->dev, addr->size, addr->virt, addr->dma); + addr->size =0 ; + addr->dma =0ULL ; + addr->virt =NULL ; +} + +static void npcm_video_free_diff_table (struct npcm_video *video) +{ +struct list_head *head, *pos, *nx; +struct rect_list *tmp; +unsigned int i; + +for (i =0 ; i < video->num_buffers; i++) { + head = &video->list[i]; +list_for_each_safe (pos, nx, head) { + tmp = list_entry(pos, struct rect_list, list); +list_del (&tmp->list); +kfree (tmp); + } + } +} + +static int npcm_video_add_rect (struct npcm_video *video,unsigned int index, +u32 x,u32 y,u32 w,u32 h) +{ +struct list_head *head = &video->list[index]; +struct rect_list *list =NULL ; +struct v4l2_rect *r; + + list =kzalloc (sizeof (*list),GFP_KERNEL ); +if (!list) +return 0 ; + + r = &list->clip.c; + r->left = x; + r->top = y; + r->width = w; + r->height = h; + +list_add_tail (&list->list, head); +return 1 ; +} + +static void npcm_video_merge_rect (struct npcm_video *video, +struct rect_list_info *info) +{ +struct list_head *head = info->head; +struct rect_list *list = info->list; +struct rect_list *first = info->first; +struct v4l2_rect *r = &list->clip.c; +struct v4l2_rect *f = &first->clip.c; + +if (!first) { + first = list; + info->first = first; +list_add_tail (&list->list, head); + video->rect_cnt++; + }else { +if ((r->left == (f->left + f->width)) && r->top == f->top) { + f->width += r->width; +kfree (list); + }else if ((r->top == (f->top + f->height)) && + (r->left == f->left)) { + f->height += r->height; +kfree (list); + }else if (((r->top > f->top) && + (r->top < (f->top + f->height))) && + ((r->left > f->left) && + (r->left < (f->left + f->width)))) { +kfree (list); + }else { +list_add_tail (&list->list, head); + video->rect_cnt++; + info->first = list; + } + } +} + +static struct rect_list *npcm_video_new_rect (struct npcm_video *video, +unsigned int offset, +unsigned int index) +{ +struct v4l2_bt_timings *act = &video->active_timings; +struct rect_list *list =NULL ; +struct v4l2_rect *r; + + list =kzalloc (sizeof (*list),GFP_KERNEL ); +if (!list) +return NULL ; + + r = &list->clip.c; + + r->left = (offset <<4 ); + r->top = (index >>2 ); + r->width =RECT_W ; + r->height =RECT_H ; +if ((r->left +RECT_W ) > act->width) + r->width = act->width - r->left; +if ((r->top +RECT_H ) > act->height) + r->height = act->height - r->top; + +return list; +} + +static int npcm_video_find_rect (struct npcm_video *video, +struct rect_list_info *info, +unsigned int offset) +{ +if (offset < info->tile_perline) { + info->list =npcm_video_new_rect (video, offset, info->index); +if (!info->list) +return -ENOMEM ; + +npcm_video_merge_rect (video, info); + } +return 0 ; +} + +static int npcm_video_build_table (struct npcm_video *video, +struct rect_list_info *info) +{ +int ret; +unsigned int j, bit; +u32 value; +struct regmap *vcd = video->vcd_regmap; + +for (j =0 ; j < info->offset_perline; j +=4 ) { +regmap_read (vcd,VCD_DIFF_TBL + (j + info->index), &value); + +bitmap_from_arr32 (bitmap, &value,BITMAP_SIZE ); + +for_each_set_bit (bit, bitmap,BITMAP_SIZE ) { + ret =npcm_video_find_rect (video, info, bit + (j <<3 )); +if (ret <0 ) +return ret; + } + } + info->index +=64 ; +return info->tile_perline; +} + +static int npcm_video_get_rect_list (struct npcm_video *video, +unsigned int index) +{ +struct v4l2_bt_timings *act = &video->active_timings; +struct rect_list_info info; +int ret =0 ; +unsigned int mod, tile_cnt =0 ; + +memset (&info,0 ,sizeof (struct rect_list_info )); + info.head = &video->list[index]; + + info.tile_perline = act->width >>4 ; + mod = act->width %RECT_W ; +if (mod !=0 ) + info.tile_perline +=1 ; + + info.tile_perrow = act->height >>4 ; + mod = act->height %RECT_H ; +if (mod !=0 ) + info.tile_perrow +=1 ; + + info.tile_size = info.tile_perrow * info.tile_perline; + + info.offset_perline = info.tile_perline >>5 ; + mod = info.tile_perline %32 ; +if (mod !=0 ) + info.offset_perline +=1 ; + + info.offset_perline *=4 ; + + do { + ret = npcm_video_build_table(video, &info); + if (ret < 0) + return ret; + tile_cnt += ret;
drivers/media/platform/nuvoton/npcm-video.c line 554
Quoted 10 lines
drivers/media/platform/nuvoton/npcm-video.c new file +10
-0+ }while (tile_cnt < info.tile_size); + +return ret; +} + +static unsigned int npcm_video_get_rect_count (struct npcm_video *video) +{ +struct list_head *head, *pos, *nx; +struct rect_list *tmp; +unsigned int count;
unsigned int count = 0;
otherwise if the below condition is not met, ...
drivers/media/platform/nuvoton/npcm-video.c line 564
Quoted 10 lines
drivers/media/platform/nuvoton/npcm-video.c new file +10
-0+ +if (video->list && video->rect) { + count = video->rect[video->vb_index]; + head = &video->list[video->vb_index]; + +list_for_each_safe (pos, nx, head) { + tmp = list_entry(pos, struct rect_list, list); +list_del (&tmp->list); +kfree (tmp); + }
why does a function whose name implies merely getting a number actually remove all elements from some list? count equals video->rect[video->vb_index]; and everthing else looks like a(n indented?) side effect. This should be somehow commented in the code.
drivers/media/platform/nuvoton/npcm-video.c line 567
Quoted 3 lines
drivers/media/platform/nuvoton/npcm-video.c new file +3
-0+ } + +return count;
... an undefined number is returned
Which makes me wonder if the compiler is not warning about using a possibly uninitialized value.
Quoted 46 lines
drivers/media/platform/nuvoton/npcm-video.c new file +46
-0+} + +static u8 npcm_video_is_mga (struct npcm_video *video) +{ +struct regmap *gfxi = video->gfx_regmap; +u32 dispst; + +regmap_read (gfxi,DISPST , &dispst); +return ((dispst &DISPST_MGAMODE ) ==DISPST_MGAMODE ); +} + +static u32 npcm_video_hres (struct npcm_video *video) +{ +struct regmap *gfxi = video->gfx_regmap; +u32 hvcnth, hvcntl, apb_hor_res; + +regmap_read (gfxi,HVCNTH , &hvcnth); +regmap_read (gfxi,HVCNTL , &hvcntl); + apb_hor_res = (((hvcnth &HVCNTH_MASK ) <<8 ) + + (hvcntl &HVCNTL_MASK ) +1 ); + +return apb_hor_res; +} + +static u32 npcm_video_vres (struct npcm_video *video) +{ +struct regmap *gfxi = video->gfx_regmap; +u32 vvcnth, vvcntl, apb_ver_res; + +regmap_read (gfxi,VVCNTH , &vvcnth); +regmap_read (gfxi,VVCNTL , &vvcntl); + + apb_ver_res = (((vvcnth &VVCNTH_MASK ) <<8 ) + (vvcntl &VVCNTL_MASK )); + +return apb_ver_res; +} + +static int npcm_video_capres (struct npcm_video *video,u32 hor_res, +u32 vert_res) +{ +struct regmap *vcd = video->vcd_regmap; +u32 res, cap_res; + +if (hor_res >MAX_WIDTH || vert_res >MAX_HEIGHT ) +return -EINVAL ; +
drivers/media/platform/nuvoton/npcm-video.c line 623
Quoted 10 lines
drivers/media/platform/nuvoton/npcm-video.c new file +10
-0+ res =FIELD_PREP (VCD_CAP_RES_VERT_RES , vert_res) | +FIELD_PREP (VCD_CAP_RES_HOR_RES , hor_res); + +regmap_write (vcd,VCD_CAP_RES , res); +regmap_read (vcd,VCD_CAP_RES , &cap_res); + +if (cap_res != res) +return -EINVAL ; + +return 0 ;
The return value is not handled by the caller
Quoted 43 lines
drivers/media/platform/nuvoton/npcm-video.c new file +43
-0+} + +static void npcm_video_vcd_ip_reset (struct npcm_video *video) +{ +/* +* After resetting a module and clearing the reset bit, it should wait +* at least 10 us before accessing the module. +*/ +reset_control_assert (video->reset); +usleep_range (10 ,20 ); +reset_control_deassert (video->reset); +usleep_range (10 ,20 ); +} + +static void npcm_video_vcd_state_machine_reset (struct npcm_video *video) +{ +struct regmap *vcd = video->vcd_regmap; +u32 stat; +int ret; + +regmap_update_bits (vcd,VCD_MODE ,VCD_MODE_VCDE ,0 ); + +regmap_update_bits (vcd,VCD_MODE ,VCD_MODE_IDBC ,0 ); + +regmap_update_bits (vcd,VCD_CMD ,VCD_CMD_RST ,VCD_CMD_RST ); + + ret =regmap_read_poll_timeout (vcd,VCD_STAT , stat, + (stat &VCD_STAT_DONE ),0 , +ECE_POLL_TIMEOUT_US ); + +if (ret) { +dev_warn (video->dev,"Wait for VCD_STAT_DONE timeout\n" ); +return ; + } + +regmap_write (vcd,VCD_STAT ,VCD_STAT_CLEAR ); + +regmap_update_bits (vcd,VCD_MODE ,VCD_MODE_VCDE ,VCD_MODE_VCDE ); + +regmap_update_bits (vcd,VCD_MODE ,VCD_MODE_IDBC ,VCD_MODE_IDBC ); +} + +static int npcm_video_gfx_reset (struct npcm_video *video)
drivers/media/platform/nuvoton/npcm-video.c line 676
Quoted 10 lines
drivers/media/platform/nuvoton/npcm-video.c new file +10
-0+{ +struct regmap *gcr = video->gcr_regmap; + +regmap_update_bits (gcr,INTCR2 ,INTCR2_GIRST2 ,INTCR2_GIRST2 ); + +npcm_video_vcd_state_machine_reset (video); + +regmap_update_bits (gcr,INTCR2 ,INTCR2_GIRST2 ,0 ); + +return 0 ;
Never inspected by callers
Quoted 95 lines
drivers/media/platform/nuvoton/npcm-video.c new file +95
-0+} + +static void npcm_video_kvm_bw (struct npcm_video *video,u8 bandwidth) +{ +struct regmap *vcd = video->vcd_regmap; + +if (!npcm_video_is_mga (video)) + bandwidth =1 ; + +if (bandwidth) +regmap_update_bits (vcd,VCD_MODE ,VCD_MODE_KVM_BW_SET , +VCD_MODE_KVM_BW_SET ); +else +regmap_update_bits (vcd,VCD_MODE ,VCD_MODE_KVM_BW_SET ,0 ); +} + +static u32 npcm_video_pclk (struct npcm_video *video) +{ +struct regmap *gfxi = video->gfx_regmap; +u32 tmp, pllfbdiv, pllinotdiv, gpllfbdiv; +u8 gpllfbdv109, gpllfbdv8, gpllindiv; +u8 gpllst_pllotdiv1, gpllst_pllotdiv2; + +regmap_read (gfxi,GPLLST , &tmp); + gpllfbdv109 =FIELD_GET (GPLLST_GPLLFBDV109 , tmp); + gpllst_pllotdiv1 =FIELD_GET (GPLLST_PLLOTDIV1 , tmp); + gpllst_pllotdiv2 =FIELD_GET (GPLLST_PLLOTDIV2 , tmp); + +regmap_read (gfxi,GPLLINDIV , &tmp); + gpllfbdv8 =FIELD_GET (GPLLINDIV_GPLLFBDV8 , tmp); + gpllindiv =FIELD_GET (GPLLINDIV_MASK , tmp); + +regmap_read (gfxi,GPLLFBDIV , &tmp); + gpllfbdiv =FIELD_GET (GPLLFBDIV_MASK , tmp); + + pllfbdiv = (512 * gpllfbdv109 +256 * gpllfbdv8 + gpllfbdiv); + pllinotdiv = (gpllindiv * gpllst_pllotdiv1 * gpllst_pllotdiv2); +if (pllfbdiv ==0 || pllinotdiv ==0 ) +return 0 ; + +return ((pllfbdiv *25000 ) / pllinotdiv) *1000 ; +} + +static int npcm_video_get_bpp (struct npcm_video *video) +{ +struct regmap *vcd = video->vcd_regmap; +u32 mode, color_cnvr; + +regmap_read (vcd,VCD_MODE , &mode); + + color_cnvr =FIELD_GET (VCD_MODE_COLOR_CNVRT , mode); + +switch (color_cnvr) { +case VCD_MODE_COLOR_CNVRT_NO_CNVRT : +return 2 ; +case VCD_MODE_COLOR_CNVRT_RGB_222 : +case VCD_MODE_COLOR_CNVRT_666_MODE : +return 1 ; +case VCD_MODE_COLOR_CNVRT_RGB_888 : +return 4 ; + } +return 0 ; +} + +/* +* Pitch must be a power of 2, >= linebytes, +* at least 512, and no more than 4096. +*/ +static void npcm_video_set_linepitch (struct npcm_video *video,u32 linebytes) +{ +struct regmap *vcd = video->vcd_regmap; +u32 pitch =MIN_LP ; + +while ((pitch < linebytes) && (pitch <MAX_LP )) + pitch *=2 ; + +regmap_write (vcd,VCD_FB_LP ,FIELD_PREP (VCD_FBA_LP , pitch) | +FIELD_PREP (VCD_FBB_LP , pitch)); +} + +static u32 npcm_video_get_linepitch (struct npcm_video *video) +{ +struct regmap *vcd = video->vcd_regmap; +u32 linepitch; + +regmap_read (vcd,VCD_FB_LP , &linepitch); + +return FIELD_GET (VCD_FBA_LP , linepitch); +} + +static int npcm_video_command (struct npcm_video *video,u32 value) +{ +struct regmap *vcd = video->vcd_regmap; +u32 cmd; +
drivers/media/platform/nuvoton/npcm-video.c line 781
Quoted 10 lines
drivers/media/platform/nuvoton/npcm-video.c new file +10
-0+regmap_write (vcd,VCD_STAT ,VCD_STAT_CLEAR ); + +regmap_read (vcd,VCD_CMD , &cmd); + cmd |=FIELD_PREP (VCD_CMD_OPERATION , value); + +regmap_write (vcd,VCD_CMD , cmd); +regmap_update_bits (vcd,VCD_CMD ,VCD_CMD_GO ,VCD_CMD_GO ); + video->op_cmd = value; + +return 0 ;
Never inspected by caller
Quoted 29 lines
drivers/media/platform/nuvoton/npcm-video.c new file +29
-0+} + +static int npcm_video_init_reg (struct npcm_video *video) +{ +struct regmap *gcr = video->gcr_regmap; +struct regmap *vcd = video->vcd_regmap; + +/* Selects Data Enable */ +regmap_update_bits (gcr,INTCR ,INTCR_DEHS ,0 ); + +/* Enable display of KVM GFX and access to memory */ +regmap_update_bits (gcr,INTCR ,INTCR_GFXIFDIS ,0 ); + +/* Active Vertical/Horizontal Counters Reset */ +regmap_update_bits (gcr,INTCR2 ,INTCR2_GIHCRST |INTCR2_GIVCRST , +INTCR2_GIHCRST |INTCR2_GIVCRST ); + +/* Select KVM GFX input */ +regmap_update_bits (gcr,MFSEL1 ,MFSEL1_DVH1SEL ,0 ); + +/* Reset video modules */ +npcm_video_vcd_ip_reset (video); +npcm_video_gfx_reset (video); + +/* Set the FIFO thresholds */ +regmap_write (vcd,VCD_FIFO ,VCD_FIFO_TH ); + +/* Set video mode */ + regmap_update_bits(vcd, VCD_MODE, 0xffffffff,
drivers/media/platform/nuvoton/npcm-video.c line 820
Quoted 10 lines
drivers/media/platform/nuvoton/npcm-video.c new file +10
-0+VCD_MODE_VCDE |VCD_MODE_CM565 | + VCD_MODE_IDBC | VCD_MODE_KVM_BW_SET); + +regmap_write (vcd,VCD_RCHG ,FIELD_PREP (VCD_RCHG_TIM_PRSCL ,0xf )); + +return 0 ; +} + +static int npcm_video_start_frame (struct npcm_video *video) +{
One of the callers ignores the return value, but not the other. Why?
Regards,
Andrzej
Quoted 1,104 lines
drivers/media/platform/nuvoton/npcm-video.c new file +1104
-0+unsigned long flags; +struct npcm_video_buffer *buf; +struct regmap *vcd = video->vcd_regmap; +u32 val; +int ret; + +if (video->v4l2_input_status) { +dev_dbg (video->dev,"No video signal; skip capture frame\n" ); +return 0 ; + } + + ret =regmap_read_poll_timeout (vcd,VCD_STAT , val, + !(val &VCD_STAT_BUSY ),1000 , +VCD_BUSY_TIMEOUT_US ); + +if (ret) { +dev_err (video->dev,"Wait for VCD_STAT_BUSY timeout\n" ); +return -EBUSY ; + } + +spin_lock_irqsave (&video->lock, flags); + buf =list_first_entry_or_null (&video->buffers, + struct npcm_video_buffer, link); +if (!buf) { +spin_unlock_irqrestore (&video->lock, flags); +dev_dbg (video->dev,"No empty buffers; skip capture frame\n" ); +return 0 ; + } + +set_bit (VIDEO_FRAME_INPRG , &video->flags); +spin_unlock_irqrestore (&video->lock, flags); + +npcm_video_vcd_state_machine_reset (video); + +regmap_update_bits (vcd,VCD_INTE ,VCD_INTE_DONE_IE |VCD_INTE_IFOT_IE | +VCD_INTE_IFOR_IE ,VCD_INTE_DONE_IE | +VCD_INTE_IFOT_IE |VCD_INTE_IFOR_IE ); + +npcm_video_command (video, video->ctrl_cmd); + +return 0 ; +} + +static void npcm_video_bufs_done (struct npcm_video *video, +enum vb2_buffer_state state) +{ +unsigned long flags; +struct npcm_video_buffer *buf; + +spin_lock_irqsave (&video->lock, flags); +list_for_each_entry (buf, &video->buffers, link) +vb2_buffer_done (&buf->vb.vb2_buf, state); +INIT_LIST_HEAD (&video->buffers); +spin_unlock_irqrestore (&video->lock, flags); +} + +static void npcm_video_get_diff_rect (struct npcm_video *video, +unsigned int index) +{ +u32 width = video->active_timings.width; +u32 height = video->active_timings.height; + +if (video->op_cmd !=VCD_CMD_OPERATION_CAPTURE ) { + video->rect_cnt =0 ; +npcm_video_get_rect_list (video, index); + video->rect[index] = video->rect_cnt; + }else { + video->rect[index] =npcm_video_add_rect (video, index,0 ,0 , + width, height); + } +} + +static irqreturn_t npcm_video_irq (int irq,void *arg) +{ +struct npcm_video *video = arg; +struct regmap *vcd = video->vcd_regmap; +struct npcm_video_buffer *buf; +struct rect_list *rect_list; +struct v4l2_rect *rect; +u32 status, ed_offset; +void *addr; +dma_addr_t vb_dma_addr; +unsigned int index, ed_size, total_size; + +regmap_read (vcd,VCD_STAT , &status); +dev_dbg (video->dev,"VCD irq status 0x%x\n" , status); + +regmap_write (vcd,VCD_INTE ,0 ); +regmap_write (vcd,VCD_STAT ,VCD_STAT_CLEAR ); + +if (test_bit (VIDEO_STOPPED , &video->flags) || + !test_bit (VIDEO_STREAMING , &video->flags)) { +clear_bit (VIDEO_FRAME_INPRG , &video->flags); +return IRQ_NONE ; + } + +if (status &VCD_STAT_DONE ) { +spin_lock (&video->lock); + buf =list_first_entry_or_null (&video->buffers, + struct npcm_video_buffer, + link); + +if (!buf) { +spin_unlock (&video->lock); +clear_bit (VIDEO_FRAME_INPRG , &video->flags); +return IRQ_NONE ; + } + + addr =vb2_plane_vaddr (&buf->vb.vb2_buf,0 ); + vb_dma_addr =vb2_dma_contig_plane_dma_addr (&buf->vb.vb2_buf, +0 ); + index = buf->vb.vb2_buf.index; + +npcm_video_ece_ctrl_reset (video); +npcm_video_ece_clear_rect_offset (video); + +npcm_video_ece_set_fb_addr (video, video->src.dma); + +/* Set base address of encoded data to video buffer */ +npcm_video_ece_set_enc_dba (video, vb_dma_addr); + +npcm_video_ece_set_lp (video, video->bytesperline); +npcm_video_get_diff_rect (video, index); + + total_size =0 ; + +list_for_each_entry (rect_list, &video->list[index], list) { + rect = &rect_list->clip.c; + ed_offset =npcm_video_ece_read_rect_offset (video); + +npcm_video_ece_enc_rect (video, rect->left, + rect->top, rect->width, + rect->height); + ed_size =npcm_video_ece_get_ed_size (video, + ed_offset, + addr); + +npcm_video_ece_prepend_rect_header (addr + ed_offset, + rect->left, + rect->top, + rect->width, + rect->height); + + total_size += ed_size; + } + +vb2_set_plane_payload (&buf->vb.vb2_buf,0 , total_size); + buf->vb.vb2_buf.timestamp =ktime_get_ns (); + buf->vb.sequence = video->sequence++; + buf->vb.field =V4L2_FIELD_NONE ; +vb2_buffer_done (&buf->vb.vb2_buf,VB2_BUF_STATE_DONE ); +list_del (&buf->link); + +spin_unlock (&video->lock); + +clear_bit (VIDEO_FRAME_INPRG , &video->flags); + } + +if (status &VCD_STAT_IFOR || status &VCD_STAT_IFOT ) { +dev_warn (video->dev,"VCD FIFO overrun or over thresholds\n" ); +npcm_video_vcd_ip_reset (video); +npcm_video_gfx_reset (video); +npcm_video_start_frame (video); + } + +return IRQ_HANDLED ; +} + +static void npcm_video_clear_gmmap (struct npcm_video *video) +{ +struct regmap *gcr = video->gcr_regmap; +u32 intcr, gmmap; +void __iomem *baseptr; + +if (of_device_is_compatible (video->dev->of_node, +"nuvoton,npcm750-vcd" )) { +regmap_read (gcr,INTCR3 , &intcr); + gmmap =FIELD_GET (INTCR3_GMMAP , intcr); + +switch (gmmap) { +case INTCR3_GMMAP_128MB : + baseptr =ioremap_wc (ADDR_GMMAP_128MB ,GMMAP_LENGTH ); +break ; +case INTCR3_GMMAP_256MB : + baseptr =ioremap_wc (ADDR_GMMAP_256MB ,GMMAP_LENGTH ); +break ; +case INTCR3_GMMAP_512MB : + baseptr =ioremap_wc (ADDR_GMMAP_512MB ,GMMAP_LENGTH ); +break ; +case INTCR3_GMMAP_1GB : + baseptr =ioremap_wc (ADDR_GMMAP_1GB ,GMMAP_LENGTH ); +break ; +case INTCR3_GMMAP_2GB : + baseptr =ioremap_wc (ADDR_GMMAP_2GB ,GMMAP_LENGTH ); +break ; + } + }else if (of_device_is_compatible (video->dev->of_node, +"nuvoton,npcm845-vcd" )) { +regmap_read (gcr,INTCR4 , &intcr); + gmmap =FIELD_GET (INTCR4_GMMAP , intcr); + +switch (gmmap) { +case INTCR4_GMMAP_512MB : + baseptr =ioremap_wc (ADDR_GMMAP_512MB ,GMMAP_LENGTH ); +break ; +case INTCR4_GMMAP_512MB_ECC : + baseptr =ioremap_wc (ADDR_GMMAP_512MB_ECC , +GMMAP_LENGTH ); +break ; +case INTCR4_GMMAP_1GB : + baseptr =ioremap_wc (ADDR_GMMAP_1GB ,GMMAP_LENGTH ); +break ; +case INTCR4_GMMAP_1GB_ECC : + baseptr =ioremap_wc (ADDR_GMMAP_1GB_ECC ,GMMAP_LENGTH ); +break ; +case INTCR4_GMMAP_2GB : + baseptr =ioremap_wc (ADDR_GMMAP_2GB ,GMMAP_LENGTH ); +break ; +case INTCR4_GMMAP_2GB_ECC : + baseptr =ioremap_wc (ADDR_GMMAP_2GB_ECC ,GMMAP_LENGTH ); +break ; + } + } + +memset (baseptr,0 ,GMMAP_LENGTH ); +iounmap (baseptr); +} + +static void npcm_video_get_resolution (struct npcm_video *video) +{ +struct v4l2_bt_timings *act = &video->active_timings; +struct v4l2_bt_timings *det = &video->detected_timings; +struct regmap *gfxi; +u32 dispst; + + video->v4l2_input_status =0 ; + + det->width =npcm_video_hres (video); + det->height =npcm_video_vres (video); + +if (act->width != det->width || act->height != det->height) { +dev_dbg (video->dev,"Resolution changed\n" ); + +npcm_video_bufs_done (video,VB2_BUF_STATE_ERROR ); + +if (npcm_video_hres (video) >0 &&npcm_video_vres (video) >0 ) { + gfxi = video->gfx_regmap; + +if (test_bit (VIDEO_STREAMING , &video->flags)) { +/* +* Wait for resolution is available, +* and it is also captured by host. +*/ +do { +mdelay (100 ); +regmap_read (gfxi,DISPST , &dispst); + }while (npcm_video_vres (video) <100 || +npcm_video_pclk (video) ==0 || + (dispst &DISPST_HSCROFF )); + } + + det->width =npcm_video_hres (video); + det->height =npcm_video_vres (video); + det->pixelclock =npcm_video_pclk (video); + } + } + +if (det->width ==0 || det->height ==0 ) { + det->width =MIN_WIDTH ; + det->height =MIN_HEIGHT ; +npcm_video_clear_gmmap (video); + video->v4l2_input_status =V4L2_IN_ST_NO_SIGNAL ; + } + +dev_dbg (video->dev,"Got resolution[%dx%d] -> [%dx%d], status %d\n" , + act->width, act->height, det->width, det->height, + video->v4l2_input_status); +} + +static void npcm_video_set_resolution (struct npcm_video *video) +{ +struct v4l2_bt_timings *act = &video->active_timings; +struct regmap *vcd = video->vcd_regmap; +u32 mode; + +/* Set video frame physical address */ +regmap_write (vcd,VCD_FBA_ADR , video->src.dma); +regmap_write (vcd,VCD_FBB_ADR , video->src.dma); + +npcm_video_capres (video, act->width, act->height); + + video->bytesperpixel =npcm_video_get_bpp (video); +npcm_video_set_linepitch (video, act->width * video->bytesperpixel); + + video->bytesperline =npcm_video_get_linepitch (video); + +npcm_video_kvm_bw (video, act->pixelclock >VCD_KVM_BW_PCLK ); + +npcm_video_gfx_reset (video); + +regmap_read (vcd,VCD_MODE , &mode); + +clear_bit (VIDEO_FRAME_INPRG , &video->flags); + +dev_dbg (video->dev,"VCD mode = 0x%x, %s mode\n" , mode, +npcm_video_is_mga (video) ?"Hi Res" :"VGA" ); + +dev_dbg (video->dev, +"Digital mode: %d x %d x %d, pixelclock %lld, bytesperline %d\n" , + act->width, act->height, video->bytesperpixel, act->pixelclock, + video->bytesperline); +} + +static int npcm_video_start (struct npcm_video *video) +{ +int rc; + + rc =npcm_video_init_reg (video); +if (rc) +return rc; + +npcm_video_get_resolution (video); + + video->active_timings = video->detected_timings; + + video->max_buffer_size =VCD_MAX_SRC_BUFFER_SIZE ; +if (!npcm_video_alloc_buf (video, &video->src, video->max_buffer_size)) +return -ENOMEM ; + +npcm_video_set_resolution (video); + + video->pix_fmt.width = video->active_timings.width; + video->pix_fmt.height = video->active_timings.height; + video->pix_fmt.sizeimage = video->max_buffer_size; + video->pix_fmt.bytesperline = video->bytesperline; + +if (atomic_inc_return (&video->ece.clients) ==1 ) { +npcm_video_ece_init (video); +npcm_video_ece_set_fb_addr (video, video->src.dma); +npcm_video_ece_set_lp (video, video->bytesperline); + +dev_dbg (video->dev,"ECE open: client %d\n" , +atomic_read (&video->ece.clients)); + } + +return 0 ; +} + +static void npcm_video_stop (struct npcm_video *video) +{ +unsigned long flags; +struct regmap *vcd = video->vcd_regmap; + +spin_lock_irqsave (&video->lock, flags); +set_bit (VIDEO_STOPPED , &video->flags); +spin_unlock_irqrestore (&video->lock, flags); + +regmap_write (vcd,VCD_INTE ,0 ); +regmap_write (vcd,VCD_MODE ,0 ); +regmap_write (vcd,VCD_RCHG ,0 ); +regmap_write (vcd,VCD_STAT ,VCD_STAT_CLEAR ); + +if (video->src.size) +npcm_video_free_buf (video, &video->src); + +if (video->list) +npcm_video_free_diff_table (video); + +kfree (video->list); + video->list =NULL ; + +kfree (video->rect); + video->rect =NULL ; + + video->v4l2_input_status =V4L2_IN_ST_NO_SIGNAL ; + video->flags =0 ; + video->ctrl_cmd =VCD_CMD_OPERATION_CAPTURE ; + +if (atomic_dec_return (&video->ece.clients) ==0 ) { +npcm_video_ece_stop (video); +dev_dbg (video->dev,"ECE close: client %d\n" , +atomic_read (&video->ece.clients)); + } +} + +static int npcm_video_querycap (struct file *file,void *fh, +struct v4l2_capability *cap) +{ +strscpy (cap->driver,DEVICE_NAME ,sizeof (cap->driver)); +strscpy (cap->card,"NPCM Video Engine" ,sizeof (cap->card)); +snprintf (cap->bus_info,sizeof (cap->bus_info),"platform:%s" , +DEVICE_NAME ); + +return 0 ; +} + +static int npcm_video_enum_format (struct file *file,void *fh, +struct v4l2_fmtdesc *f) +{ +if (f->index) +return -EINVAL ; + + f->pixelformat =V4L2_PIX_FMT_HEXTILE ; + +return 0 ; +} + +static int npcm_video_get_format (struct file *file,void *fh, +struct v4l2_format *f) +{ +struct npcm_video *video =video_drvdata (file); + + f->fmt.pix = video->pix_fmt; + +return 0 ; +} + +static int npcm_video_enum_input (struct file *file,void *fh, +struct v4l2_input *inp) +{ +struct npcm_video *video =video_drvdata (file); + +if (inp->index) +return -EINVAL ; + +strscpy (inp->name,"Host VGA capture" ,sizeof (inp->name)); + inp->type =V4L2_INPUT_TYPE_CAMERA ; + inp->capabilities =V4L2_IN_CAP_DV_TIMINGS ; + inp->status = video->v4l2_input_status; + +return 0 ; +} + +static int npcm_video_get_input (struct file *file,void *fh,unsigned int *i) +{ + *i =0 ; + +return 0 ; +} + +static int npcm_video_set_input (struct file *file,void *fh,unsigned int i) +{ +if (i) +return -EINVAL ; + +return 0 ; +} + +static int npcm_video_get_parm (struct file *file,void *fh, +struct v4l2_streamparm *a) +{ +struct npcm_video *video =video_drvdata (file); + + a->parm.capture.capability =V4L2_CAP_TIMEPERFRAME ; + a->parm.capture.readbuffers =3 ; + a->parm.capture.timeperframe.numerator =1 ; +if (!video->frame_rate) + a->parm.capture.timeperframe.denominator =MAX_FRAME_RATE ; +else + a->parm.capture.timeperframe.denominator = video->frame_rate; + +return 0 ; +} + +static int npcm_video_set_parm (struct file *file,void *fh, +struct v4l2_streamparm *a) +{ +unsigned int frame_rate =0 ; + + a->parm.capture.capability =V4L2_CAP_TIMEPERFRAME ; + a->parm.capture.readbuffers =3 ; + +if (a->parm.capture.timeperframe.numerator) + frame_rate = a->parm.capture.timeperframe.denominator / + a->parm.capture.timeperframe.numerator; + +if (!frame_rate || frame_rate >MAX_FRAME_RATE ) { + frame_rate =0 ; + a->parm.capture.timeperframe.denominator =MAX_FRAME_RATE ; + a->parm.capture.timeperframe.numerator =1 ; + } + +return 0 ; +} + +static int npcm_video_set_dv_timings (struct file *file,void *fh, +struct v4l2_dv_timings *timings) +{ +struct npcm_video *video =video_drvdata (file); + +if (timings->bt.width == video->active_timings.width && + timings->bt.height == video->active_timings.height) +return 0 ; + +if (vb2_is_busy (&video->queue)) { +dev_err (video->dev,"%s device busy\n" , __func__); +return -EBUSY ; + } + + video->active_timings = timings->bt; + +npcm_video_set_resolution (video); + + video->pix_fmt.width = timings->bt.width; + video->pix_fmt.height = timings->bt.height; + video->pix_fmt.sizeimage = video->max_buffer_size; + video->pix_fmt.bytesperline = video->bytesperline; + + timings->type =V4L2_DV_BT_656_1120 ; + +return 0 ; +} + +static int npcm_video_get_dv_timings (struct file *file,void *fh, +struct v4l2_dv_timings *timings) +{ +struct npcm_video *video =video_drvdata (file); + + timings->type =V4L2_DV_BT_656_1120 ; + timings->bt = video->active_timings; + +return 0 ; +} + +static int npcm_video_query_dv_timings (struct file *file,void *fh, +struct v4l2_dv_timings *timings) +{ +struct npcm_video *video =video_drvdata (file); + +npcm_video_get_resolution (video); + + timings->type =V4L2_DV_BT_656_1120 ; + timings->bt = video->detected_timings; + +return video->v4l2_input_status ? -ENOLINK :0 ; +} + +static int npcm_video_enum_dv_timings (struct file *file,void *fh, +struct v4l2_enum_dv_timings *timings) +{ +return v4l2_enum_dv_timings_cap (timings, &npcm_video_timings_cap, +NULL ,NULL ); +} + +static int npcm_video_dv_timings_cap (struct file *file,void *fh, +struct v4l2_dv_timings_cap *cap) +{ + *cap = npcm_video_timings_cap; + +return 0 ; +} + +static int npcm_video_sub_event (struct v4l2_fh *fh, +const struct v4l2_event_subscription *sub) +{ +switch (sub->type) { +case V4L2_EVENT_SOURCE_CHANGE : +return v4l2_src_change_event_subscribe (fh, sub); + } + +return v4l2_ctrl_subscribe_event (fh, sub); +} + +static const struct v4l2_ioctl_ops npcm_video_ioctls = { + .vidioc_querycap = npcm_video_querycap, + + .vidioc_enum_fmt_vid_cap = npcm_video_enum_format, + .vidioc_g_fmt_vid_cap = npcm_video_get_format, + .vidioc_s_fmt_vid_cap = npcm_video_get_format, + .vidioc_try_fmt_vid_cap = npcm_video_get_format, + + .vidioc_reqbufs = vb2_ioctl_reqbufs, + .vidioc_querybuf = vb2_ioctl_querybuf, + .vidioc_qbuf = vb2_ioctl_qbuf, + .vidioc_expbuf = vb2_ioctl_expbuf, + .vidioc_dqbuf = vb2_ioctl_dqbuf, + .vidioc_create_bufs = vb2_ioctl_create_bufs, + .vidioc_prepare_buf = vb2_ioctl_prepare_buf, + .vidioc_streamon = vb2_ioctl_streamon, + .vidioc_streamoff = vb2_ioctl_streamoff, + + .vidioc_enum_input = npcm_video_enum_input, + .vidioc_g_input = npcm_video_get_input, + .vidioc_s_input = npcm_video_set_input, + + .vidioc_g_parm = npcm_video_get_parm, + .vidioc_s_parm = npcm_video_set_parm, + + .vidioc_s_dv_timings = npcm_video_set_dv_timings, + .vidioc_g_dv_timings = npcm_video_get_dv_timings, + .vidioc_query_dv_timings = npcm_video_query_dv_timings, + .vidioc_enum_dv_timings = npcm_video_enum_dv_timings, + .vidioc_dv_timings_cap = npcm_video_dv_timings_cap, + + .vidioc_subscribe_event = npcm_video_sub_event, + .vidioc_unsubscribe_event = v4l2_event_unsubscribe, +}; + +static int npcm_video_set_ctrl (struct v4l2_ctrl *ctrl) +{ +struct npcm_video *video =container_of (ctrl->handler, + struct npcm_video, + ctrl_handler); + +switch (ctrl->id) { +case V4L2_CID_NPCM_CAPTURE_MODE : +if (ctrl->val ==V4L2_NPCM_CAPTURE_MODE_COMPLETE ) + video->ctrl_cmd =VCD_CMD_OPERATION_CAPTURE ; +else if (ctrl->val ==V4L2_NPCM_CAPTURE_MODE_DIFF ) + video->ctrl_cmd =VCD_CMD_OPERATION_COMPARE ; +break ; +default : +return -EINVAL ; + } + +return 0 ; +} + +static int npcm_video_get_volatile_ctrl (struct v4l2_ctrl *ctrl) +{ +struct npcm_video *video =container_of (ctrl->handler, + struct npcm_video, + ctrl_handler); + +switch (ctrl->id) { +case V4L2_CID_NPCM_RECT_COUNT : + ctrl->val =npcm_video_get_rect_count (video); +break ; +default : +return -EINVAL ; + } + +return 0 ; +} + +static const struct v4l2_ctrl_ops npcm_video_ctrl_ops = { + .s_ctrl = npcm_video_set_ctrl, + .g_volatile_ctrl = npcm_video_get_volatile_ctrl, +}; + +static const struct v4l2_ctrl_config npcm_ctrl_capture_mode = { + .ops = &npcm_video_ctrl_ops, + .id =V4L2_CID_NPCM_CAPTURE_MODE , + .name ="NPCM Video Capture Mode" , + .type =V4L2_CTRL_TYPE_INTEGER , + .min =0 , + .max =V4L2_NPCM_CAPTURE_MODE_DIFF , + .step =1 , + .def =0 , +}; + +static const struct v4l2_ctrl_config npcm_ctrl_rect_count = { + .ops = &npcm_video_ctrl_ops, + .id =V4L2_CID_NPCM_RECT_COUNT , + .name ="NPCM Compressed Hextile Rectangle Count" , + .type =V4L2_CTRL_TYPE_INTEGER , + .flags =V4L2_CTRL_FLAG_VOLATILE , + .min =0 , + .max = (MAX_WIDTH /RECT_W ) * (MAX_HEIGHT /RECT_H ), + .step =1 , + .def =0 , +}; + +static int npcm_video_open (struct file *file) +{ +int rc; +struct npcm_video *video =video_drvdata (file); + +mutex_lock (&video->video_lock); + + rc =v4l2_fh_open (file); +if (rc) { +mutex_unlock (&video->video_lock); +return rc; + } + +if (v4l2_fh_is_singular_file (file)) +npcm_video_start (video); + +mutex_unlock (&video->video_lock); + +return 0 ; +} + +static int npcm_video_release (struct file *file) +{ +int rc; +struct npcm_video *video =video_drvdata (file); + +mutex_lock (&video->video_lock); + +if (v4l2_fh_is_singular_file (file)) +npcm_video_stop (video); + + rc =_vb2_fop_release (file,NULL ); + +mutex_unlock (&video->video_lock); + +return rc; +} + +static const struct v4l2_file_operations npcm_video_v4l2_fops = { + .owner =THIS_MODULE , + .read = vb2_fop_read, + .poll = vb2_fop_poll, + .unlocked_ioctl = video_ioctl2, + .mmap = vb2_fop_mmap, + .open = npcm_video_open, + .release = npcm_video_release, +}; + +static int npcm_video_queue_setup (struct vb2_queue *q, +unsigned int *num_buffers, +unsigned int *num_planes, +unsigned int sizes[], +struct device *alloc_devs[]) +{ +struct npcm_video *video =vb2_get_drv_priv (q); +unsigned int i; + +if (*num_planes) { +if (sizes[0 ] < video->max_buffer_size) +return -EINVAL ; + +return 0 ; + } + + *num_planes =1 ; + sizes[0 ] = video->max_buffer_size; + +kfree (video->rect); + video->rect =NULL ; + + video->rect =kcalloc (*num_buffers,sizeof (*video->rect),GFP_KERNEL ); +if (!video->rect) +return -ENOMEM ; + +if (video->list) { +npcm_video_free_diff_table (video); +kfree (video->list); + video->list =NULL ; + } + + video->list =kzalloc (sizeof (*video->list) * *num_buffers,GFP_KERNEL ); +if (!video->list) { +kfree (video->rect); +return -ENOMEM ; + } + +for (i =0 ; i < *num_buffers; i++) +INIT_LIST_HEAD (&video->list[i]); + + video->num_buffers = *num_buffers; + +return 0 ; +} + +static int npcm_video_buf_prepare (struct vb2_buffer *vb) +{ +struct npcm_video *video =vb2_get_drv_priv (vb->vb2_queue); + +if (vb2_plane_size (vb,0 ) < video->max_buffer_size) +return -EINVAL ; + +return 0 ; +} + +static int npcm_video_start_streaming (struct vb2_queue *q,unsigned int count) +{ +int rc; +struct npcm_video *video =vb2_get_drv_priv (q); + + video->sequence =0 ; + + rc =npcm_video_start_frame (video); +if (rc) { +npcm_video_bufs_done (video,VB2_BUF_STATE_QUEUED ); +return rc; + } + +set_bit (VIDEO_STREAMING , &video->flags); +return 0 ; +} + +static void npcm_video_stop_streaming (struct vb2_queue *q) +{ +struct npcm_video *video =vb2_get_drv_priv (q); +struct regmap *vcd = video->vcd_regmap; + +clear_bit (VIDEO_STREAMING , &video->flags); + +regmap_write (vcd,VCD_INTE ,0 ); +regmap_write (vcd,VCD_STAT ,VCD_STAT_CLEAR ); +npcm_video_gfx_reset (video); + +npcm_video_bufs_done (video,VB2_BUF_STATE_ERROR ); + + video->ctrl_cmd =VCD_CMD_OPERATION_CAPTURE ; +} + +static void npcm_video_buf_queue (struct vb2_buffer *vb) +{ +struct npcm_video *video =vb2_get_drv_priv (vb->vb2_queue); +struct vb2_v4l2_buffer *vbuf =to_vb2_v4l2_buffer (vb); +struct npcm_video_buffer *nvb =to_npcm_video_buffer (vbuf); +unsigned long flags; + +spin_lock_irqsave (&video->lock, flags); +list_add_tail (&nvb->link, &video->buffers); +spin_unlock_irqrestore (&video->lock, flags); +} + +static void npcm_video_buf_finish (struct vb2_buffer *vb) +{ +struct npcm_video *video =vb2_get_drv_priv (vb->vb2_queue); +struct regmap *vcd = video->vcd_regmap; +u32 val; +int ret; + + ret =regmap_read_poll_timeout (vcd,VCD_STAT , val, + !(val &VCD_STAT_BUSY ),1000 , +VCD_BUSY_TIMEOUT_US ); + +if (ret) { +dev_warn (video->dev,"Wait for VCD_STAT_BUSY timeout\n" ); +return ; + } + +/* Capture next frame when a video buffer is dequeued */ +npcm_video_start_frame (video); + + video->vb_index = vb->index; +} + +static const struct vb2_ops npcm_video_vb2_ops = { + .queue_setup = npcm_video_queue_setup, + .wait_prepare = vb2_ops_wait_prepare, + .wait_finish = vb2_ops_wait_finish, + .buf_prepare = npcm_video_buf_prepare, + .buf_finish = npcm_video_buf_finish, + .start_streaming = npcm_video_start_streaming, + .stop_streaming = npcm_video_stop_streaming, + .buf_queue = npcm_video_buf_queue, +}; + +static int npcm_video_setup_video (struct npcm_video *video) +{ +struct v4l2_device *v4l2_dev = &video->v4l2_dev; +struct video_device *vdev = &video->vdev; +struct vb2_queue *vbq = &video->queue; +int rc; + + video->pix_fmt.pixelformat =V4L2_PIX_FMT_HEXTILE ; + video->pix_fmt.field =V4L2_FIELD_NONE ; + video->pix_fmt.colorspace =V4L2_COLORSPACE_SRGB ; + video->v4l2_input_status =V4L2_IN_ST_NO_SIGNAL ; + + rc =v4l2_device_register (video->dev, v4l2_dev); +if (rc) { +dev_err (video->dev,"Failed to register v4l2 device\n" ); +return rc; + } + +v4l2_ctrl_handler_init (&video->ctrl_handler,2 ); +v4l2_ctrl_new_custom (&video->ctrl_handler, &npcm_ctrl_capture_mode, +NULL ); +v4l2_ctrl_new_custom (&video->ctrl_handler, &npcm_ctrl_rect_count,NULL ); + +if (video->ctrl_handler.error) { +dev_err (video->dev,"Failed to init controls: %d\n" , + video->ctrl_handler.error); + + rc = video->ctrl_handler.error; + goto rel_ctrl_handler; + } + + v4l2_dev->ctrl_handler = &video->ctrl_handler; + + vbq->type =V4L2_BUF_TYPE_VIDEO_CAPTURE ; + vbq->io_modes =VB2_MMAP |VB2_READ |VB2_DMABUF ; + vbq->dev = v4l2_dev->dev; + vbq->lock = &video->video_lock; + vbq->ops = &npcm_video_vb2_ops; + vbq->mem_ops = &vb2_dma_contig_memops; + vbq->drv_priv = video; + vbq->buf_struct_size =sizeof (struct npcm_video_buffer ); + vbq->timestamp_flags =V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC ; + vbq->min_buffers_needed =3 ; + + rc =vb2_queue_init (vbq); +if (rc) { +dev_err (video->dev,"Failed to init vb2 queue\n" ); + goto rel_ctrl_handler; + } + + vdev->queue = vbq; + vdev->fops = &npcm_video_v4l2_fops; + vdev->device_caps =V4L2_CAP_VIDEO_CAPTURE |V4L2_CAP_READWRITE | +V4L2_CAP_STREAMING ; + vdev->v4l2_dev = v4l2_dev; +strscpy (vdev->name,DEVICE_NAME ,sizeof (vdev->name)); + vdev->vfl_type =VFL_TYPE_VIDEO ; + vdev->vfl_dir =VFL_DIR_RX ; + vdev->release = video_device_release_empty; + vdev->ioctl_ops = &npcm_video_ioctls; + vdev->lock = &video->video_lock; + +video_set_drvdata (vdev, video); + rc =video_register_device (vdev,VFL_TYPE_VIDEO ,0 ); +if (rc) { +dev_err (video->dev,"Failed to register video device\n" ); + goto rel_vb_queue; + } + +return 0 ; + +rel_vb_queue: +vb2_queue_release (vbq); +rel_ctrl_handler: +v4l2_ctrl_handler_free (&video->ctrl_handler); +v4l2_device_unregister (v4l2_dev); + +return rc; +} + +static int npcm_video_init (struct npcm_video *video) +{ +int irq; +int rc; +struct device *dev = video->dev; + + irq =irq_of_parse_and_map (dev->of_node,0 ); +if (!irq) { +dev_err (dev,"Failed to find VCD IRQ\n" ); +return -ENODEV ; + } + + rc =devm_request_threaded_irq (dev, irq,NULL , npcm_video_irq, +IRQF_ONESHOT ,DEVICE_NAME , video); +if (rc <0 ) { +dev_err (dev,"Failed to request IRQ %d\n" , irq); +return rc; + } + +of_reserved_mem_device_init (dev); + + rc =dma_set_mask_and_coherent (dev,DMA_BIT_MASK (32 )); +if (rc) { +dev_err (dev,"Failed to set DMA mask\n" ); +of_reserved_mem_device_release (dev); + } + +return rc; +} + +static const struct regmap_config npcm_video_regmap_cfg = { + .reg_bits =32 , + .reg_stride =4 , + .val_bits =32 , + .max_register =VCD_FIFO , +}; + +static const struct regmap_config npcm_video_ece_regmap_cfg = { + .reg_bits =32 , + .reg_stride =4 , + .val_bits =32 , + .max_register =ECE_HEX_RECT_OFFSET , +}; + +static int npcm_video_probe (struct platform_device *pdev) +{ +int rc; +void __iomem *regs; +struct npcm_video *video =kzalloc (sizeof (*video),GFP_KERNEL ); +struct device_node *ece_node; +struct platform_device *ece_pdev; + +if (!video) +return -ENOMEM ; + + video->frame_rate =MAX_FRAME_RATE ; + video->dev = &pdev->dev; +spin_lock_init (&video->lock); +mutex_init (&video->video_lock); +INIT_LIST_HEAD (&video->buffers); + + regs =devm_platform_ioremap_resource (pdev,0 ); +if (IS_ERR (regs)) { +dev_err (&pdev->dev,"Failed to parse VCD reg in DTS\n" ); +return PTR_ERR (regs); + } + + video->vcd_regmap =devm_regmap_init_mmio (&pdev->dev, regs, + &npcm_video_regmap_cfg); +if (IS_ERR (video->vcd_regmap)) { +dev_err (&pdev->dev,"Failed to initialize VCD regmap\n" ); +return PTR_ERR (video->vcd_regmap); + } + + ece_node =of_parse_phandle (video->dev->of_node,"nuvoton,ece" ,0 ); +if (IS_ERR (ece_node)) { +dev_err (&pdev->dev,"Failed to get ECE phandle in DTS\n" ); +return PTR_ERR (ece_node); + } + + ece_pdev =of_find_device_by_node (ece_node); +of_node_put (ece_node); +if (IS_ERR (ece_pdev)) { +dev_err (&pdev->dev,"Failed to find ECE device\n" ); +return PTR_ERR (ece_pdev); + } + + regs =devm_platform_ioremap_resource (ece_pdev,0 ); +if (IS_ERR (regs)) { +dev_err (&pdev->dev,"Failed to parse ECE reg in DTS\n" ); +return PTR_ERR (regs); + } + + video->ece.regmap =devm_regmap_init_mmio (&pdev->dev, regs, + &npcm_video_ece_regmap_cfg); +if (IS_ERR (video->ece.regmap)) { +dev_err (&pdev->dev,"Failed to initialize ECE regmap\n" ); +return PTR_ERR (video->ece.regmap); + } + + video->reset =devm_reset_control_get (&pdev->dev,NULL ); +if (IS_ERR (video->reset)) { +dev_err (&pdev->dev,"Failed to get VCD reset control in DTS\n" ); +return PTR_ERR (video->reset); + } + + video->ece.reset =devm_reset_control_get (&ece_pdev->dev,NULL ); +if (IS_ERR (video->ece.reset)) { +dev_err (&pdev->dev,"Failed to get ECE reset control in DTS\n" ); +return PTR_ERR (video->ece.reset); + } + + video->gcr_regmap =syscon_regmap_lookup_by_phandle (pdev->dev.of_node, +"nuvoton,sysgcr" ); +if (IS_ERR (video->gcr_regmap)) +return PTR_ERR (video->gcr_regmap); + + video->gfx_regmap =syscon_regmap_lookup_by_phandle (pdev->dev.of_node, +"nuvoton,sysgfxi" ); +if (IS_ERR (video->gfx_regmap)) +return PTR_ERR (video->gfx_regmap); + + rc =npcm_video_init (video); +if (rc) +return rc; + + rc =npcm_video_setup_video (video); +if (rc) +return rc; + +dev_info (video->dev,"NPCM video driver probed\n" ); + +return 0 ; +} + +static int npcm_video_remove (struct platform_device *pdev) +{ +struct device *dev = &pdev->dev; +struct v4l2_device *v4l2_dev =dev_get_drvdata (dev); +struct npcm_video *video =to_npcm_video (v4l2_dev); + +video_unregister_device (&video->vdev); + +vb2_queue_release (&video->queue); + +v4l2_ctrl_handler_free (&video->ctrl_handler); + +v4l2_device_unregister (v4l2_dev); + +npcm_video_ece_stop (video); + +of_reserved_mem_device_release (dev); + +return 0 ; +} + +static const struct of_device_id npcm_video_match[] = { + { .compatible ="nuvoton,npcm750-vcd" }, + { .compatible ="nuvoton,npcm845-vcd" }, + {}, +}; + +MODULE_DEVICE_TABLE (of, npcm_video_match); + +static struct platform_driver npcm_video_driver = { + .driver = { + .name =DEVICE_NAME , + .of_match_table = npcm_video_match, + }, + .probe = npcm_video_probe, + .remove = npcm_video_remove, +}; + +module_platform_driver (npcm_video_driver); + +MODULE_AUTHOR ("Joseph Liu<[email protected]>" ); +MODULE_AUTHOR ("Marvin Lin<[email protected]>" ); +MODULE_DESCRIPTION ("Driver for Nuvoton NPCM Video Capture/Encode Engine" ); +MODULE_LICENSE ("GPL" );
Re: [PATCH v9 7/7] media: nuvoton: Add driver for NPCM video capture and encode engine
Hi Andrzej,
Thanks for the review.
Quoted 25 lines
Quoted 1 line
+static void
npcm_video_ece_set_fb_addr(struct npcm_video *video, u32 buffer)static inline void?
Quoted 1 line
+static void
npcm_video_ece_set_enc_dba(struct npcm_video *video, u32 addr)ditto
Quoted 1 line
+static void
npcm_video_ece_clear_rect_offset(struct npcm_video *video)ditto
Quoted 1 line
+static int
npcm_video_ece_init(struct npcm_video *video)static inline int? But...
drivers/media/platform/nuvoton/npcm-video.c line 334
Quoted 5 lines
drivers/media/platform/nuvoton/npcm-video.c new file +5
-0+{ +npcm_video_ece_ip_reset (video); +npcm_video_ece_ctrl_reset (video); + +return 0 ;...the return value is not inspected by the only caller anyway, so why not
Quoted 1 line
static inline void?
OK, I'll declare these functions as static inline void.
Quoted 6 lines
Quoted 6 lines
drivers/media/platform/nuvoton/npcm-video.c new file +6
-0+static int npcm_video_ece_stop (struct npcm_video *video) +{ +struct regmap *ece = video->ece.regmap; + +regmap_update_bits (ece,ECE_DDA_CTRL ,ECE_DDA_CTRL_ECEEN ,0 ); +regmap_update_bits (ece,ECE_DDA_CTRL ,ECE_DDA_CTRL_INTEN ,0 );
Quoted 8 lines
drivers/media/platform/nuvoton/npcm-video.c line 334
Quoted 5 lines
drivers/media/platform/nuvoton/npcm-video.c new file +5
-0+regmap_update_bits (ece,ECE_HEX_CTRL ,ECE_HEX_CTRL_ENCDIS , +ECE_HEX_CTRL_ENCDIS ); +npcm_video_ece_clear_rect_offset (video); + +return 0 ;Nobody inspects this return value. Either void, or check the return value at call site and handle a non-zero failure.
OK, will change to void.
Quoted 25 lines
drivers/media/platform/nuvoton/npcm-video.c line 554
Quoted 5 lines
drivers/media/platform/nuvoton/npcm-video.c new file +5
-0+static unsigned int npcm_video_get_rect_count (struct npcm_video *video) +{ +struct list_head *head, *pos, *nx; +struct rect_list *tmp; +unsigned int count;unsigned int count = 0;otherwise if the below condition is not met, ...
drivers/media/platform/nuvoton/npcm-video.c line 564
Quoted 10 lines
drivers/media/platform/nuvoton/npcm-video.c new file +10
-0+ +if (video->list && video->rect) { + count = video->rect[video->vb_index]; + head = &video->list[video->vb_index]; + +list_for_each_safe (pos, nx, head) { + tmp = list_entry(pos, struct rect_list, list); +list_del (&tmp->list); +kfree (tmp); + }why does a function whose name implies merely getting a number actually remove all elements from some list? count equals video->rect[video->vb_index]; and everthing else looks like a(n indented?) side effect. This should be somehow commented in the code.
Quoted 8 lines
drivers/media/platform/nuvoton/npcm-video.c line 567
Quoted 3 lines
drivers/media/platform/nuvoton/npcm-video.c new file +3
-0+ } + +return count;... an undefined number is returned
Which makes me wonder if the compiler is not warning about using a possibly uninitialized value.
You are right, this is not the right place to remove the rect_list. It makes more sense to remove the list right after the associated video buffer gets dequeued.
I'll do that change.
Quoted 54 lines
Quoted 9 lines
drivers/media/platform/nuvoton/npcm-video.c new file +9
-0+static int npcm_video_capres (struct npcm_video *video,u32 hor_res, +u32 vert_res) +{ +struct regmap *vcd = video->vcd_regmap; +u32 res, cap_res; + +if (hor_res >MAX_WIDTH || vert_res >MAX_HEIGHT ) +return -EINVAL ; +drivers/media/platform/nuvoton/npcm-video.c line 623
Quoted 10 lines
drivers/media/platform/nuvoton/npcm-video.c new file +10
-0+ res =FIELD_PREP (VCD_CAP_RES_VERT_RES , vert_res) | +FIELD_PREP (VCD_CAP_RES_HOR_RES , hor_res); + +regmap_write (vcd,VCD_CAP_RES , res); +regmap_read (vcd,VCD_CAP_RES , &cap_res); + +if (cap_res != res) +return -EINVAL ; + +return 0 ;The return value is not handled by the caller
drivers/media/platform/nuvoton/npcm-video.c line 676
Quoted 11 lines
drivers/media/platform/nuvoton/npcm-video.c new file +11
-0+static int npcm_video_gfx_reset (struct npcm_video *video) +{ +struct regmap *gcr = video->gcr_regmap; + +regmap_update_bits (gcr,INTCR2 ,INTCR2_GIRST2 ,INTCR2_GIRST2 ); + +npcm_video_vcd_state_machine_reset (video); + +regmap_update_bits (gcr,INTCR2 ,INTCR2_GIRST2 ,0 ); + +return 0 ;Never inspected by callers
Quoted 5 lines
drivers/media/platform/nuvoton/npcm-video.c new file +5
-0+static int npcm_video_command (struct npcm_video *video,u32 value) +{ +struct regmap *vcd = video->vcd_regmap; +u32 cmd; +drivers/media/platform/nuvoton/npcm-video.c line 781
Quoted 10 lines
drivers/media/platform/nuvoton/npcm-video.c new file +10
-0+regmap_write (vcd,VCD_STAT ,VCD_STAT_CLEAR ); + +regmap_read (vcd,VCD_CMD , &cmd); + cmd |=FIELD_PREP (VCD_CMD_OPERATION , value); + +regmap_write (vcd,VCD_CMD , cmd); +regmap_update_bits (vcd,VCD_CMD ,VCD_CMD_GO ,VCD_CMD_GO ); + video->op_cmd = value; + +return 0 ;Never inspected by caller
Quoted 4 lines
drivers/media/platform/nuvoton/npcm-video.c line 820
Quoted 2 lines
drivers/media/platform/nuvoton/npcm-video.c new file +2
-0+static int npcm_video_start_frame (struct npcm_video *video) +{One of the callers ignores the return value, but not the other. Why?
These problems will be addressed in the next patch. Thank you.
Regards,
Marvin
kernel test robot
build botRe: [PATCH v9 7/7] media: nuvoton: Add driver for NPCM video capture and encode engine
In reply to Marvin LinI love your patch! Perhaps something to improve:
Hi Marvin,
I love your patch! Perhaps something to improve:
[auto build test WARNING on media-tree/master]
[also build test WARNING on linus/master next-20221220] [cannot apply to robh/for-next v6.1]
[If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Marvin-Lin/Support-Nuvoton-NPCM-Video-Capture-Encode-Engine/20221220-175013 base: git://linuxtv.org/media_tree.git master patch link: https://lore.kernel.org/r/20221220094055.3011916-8-milkfafa%40gmail.com patch subject: [PATCH v9 7/7] media: nuvoton: Add driver for NPCM video capture and encode engine config: hexagon-allmodconfig compiler: clang version 16.0.0 (https://github.com/llvm/llvm-project f5700e7b69048de958172fb513b336564e7f8709)
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://github.com/intel-lab-lkp/linux/commit/e37f65b3251b5953005dcdcf39d153c87b40c083
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Marvin-Lin/Support-Nuvoton-NPCM-Video-Capture-Encode-Engine/20221220-175013
git checkout e37f65b3251b5953005dcdcf39d153c87b40c083
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=hexagon olddefconfig
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=hexagon SHELL=/bin/bash drivers/media/platform/nuvoton/ drivers/media/platform/verisilicon/ drivers/net/ethernet/marvell/prestera/ drivers/pwm/ kernel/trace/ sound/soc/qcom/qdsp6/ sound/usb/
If you fix the issue, kindly add following tag where applicable | Reported-by: kernel test robot <[email protected]>
All warnings (new ones prefixed by >>):
In file included from drivers/media/platform/nuvoton/npcm-video.c:15:
In file included from include/linux/dma-mapping.h:10:
In file included from include/linux/scatterlist.h:9:
In file included from arch/hexagon/include/asm/io.h:334:
include/asm-generic/io.h:547:31: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
val = __raw_readb(PCI_IOBASE + addr);
~~~~~~~~~~ ^
include/asm-generic/io.h:560:61: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
val = __le16_to_cpu((__le16 __force)__raw_readw(PCI_IOBASE + addr));
~~~~~~~~~~ ^
include/uapi/linux/byteorder/little_endian.h:37:51: note: expanded from macro '__le16_to_cpu'
#define __le16_to_cpu(x) ((__force __u16)(__le16)(x))
^
In file included from drivers/media/platform/nuvoton/npcm-video.c:15:
In file included from include/linux/dma-mapping.h:10:
In file included from include/linux/scatterlist.h:9:
In file included from arch/hexagon/include/asm/io.h:334:
include/asm-generic/io.h:573:61: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
val = __le32_to_cpu((__le32 __force)__raw_readl(PCI_IOBASE + addr));
~~~~~~~~~~ ^
include/uapi/linux/byteorder/little_endian.h:35:51: note: expanded from macro '__le32_to_cpu'
#define __le32_to_cpu(x) ((__force __u32)(__le32)(x))
^
In file included from drivers/media/platform/nuvoton/npcm-video.c:15:
In file included from include/linux/dma-mapping.h:10:
In file included from include/linux/scatterlist.h:9:
In file included from arch/hexagon/include/asm/io.h:334:
include/asm-generic/io.h:584:33: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
__raw_writeb(value, PCI_IOBASE + addr);
~~~~~~~~~~ ^
include/asm-generic/io.h:594:59: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
__raw_writew((u16 __force)cpu_to_le16(value), PCI_IOBASE + addr);
~~~~~~~~~~ ^
include/asm-generic/io.h:604:59: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
__raw_writel((u32 __force)cpu_to_le32(value), PCI_IOBASE + addr);
~~~~~~~~~~ ^
>> drivers/media/platform/nuvoton/npcm-video.c:556:6: warning: variable 'count' is used uninitialized whenever 'if' condition is false [-Wsometimes-uninitialized]
if (video->list && video->rect) {
^~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/media/platform/nuvoton/npcm-video.c:567:9: note: uninitialized use occurs here
return count;
^~~~~
drivers/media/platform/nuvoton/npcm-video.c:556:2: note: remove the 'if' if its condition is always true
if (video->list && video->rect) {
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/media/platform/nuvoton/npcm-video.c:556:6: warning: variable 'count' is used uninitialized whenever '&&' condition is false [-Wsometimes-uninitialized]
if (video->list && video->rect) {
^~~~~~~~~~~
drivers/media/platform/nuvoton/npcm-video.c:567:9: note: uninitialized use occurs here
return count;
^~~~~
drivers/media/platform/nuvoton/npcm-video.c:556:6: note: remove the '&&' if its condition is always true
if (video->list && video->rect) {
^~~~~~~~~~~~~~
drivers/media/platform/nuvoton/npcm-video.c:554:20: note: initialize the variable 'count' to silence this warning
unsigned int count;
^
= 0
>> drivers/media/platform/nuvoton/npcm-video.c:1017:13: warning: variable 'baseptr' is used uninitialized whenever 'if' condition is false [-Wsometimes-uninitialized]
} else if (of_device_is_compatible(video->dev->of_node,
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/media/platform/nuvoton/npcm-video.c:1045:9: note: uninitialized use occurs here
memset(baseptr, 0, GMMAP_LENGTH);
^~~~~~~
drivers/media/platform/nuvoton/npcm-video.c:1017:9: note: remove the 'if' if its condition is always true
} else if (of_device_is_compatible(video->dev->of_node,
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/media/platform/nuvoton/npcm-video.c:993:23: note: initialize the variable 'baseptr' to silence this warning
void __iomem *baseptr;
^
= NULL9 warnings generated.
vim +556 drivers/media/platform/nuvoton/npcm-video.c
549
550 static unsigned int npcm_video_get_rect_count(struct npcm_video *video)
551 {
552 struct list_head *head, *pos, *nx;
553 struct rect_list *tmp;
554 unsigned int count;
555
> 556 if (video->list && video->rect) { 557 count = video->rect[video->vb_index];
558 head = &video->list[video->vb_index];
559
560 list_for_each_safe(pos, nx, head) {
561 tmp = list_entry(pos, struct rect_list, list);
562 list_del(&tmp->list);
563 kfree(tmp);
564 }
565 }
566
567 return count;
568 }
569
Signature · 2 lines
0-DAY CI Kernel Test Service https://01.org/lkp
#
# Automatically generated file; DO NOT EDIT.
# Linux/hexagon 6.1.0-rc4 Kernel Configuration
#CONFIG_CC_VERSION_TEXT="clang version 16.0.0 (git://gitmirror/llvm_project f5700e7b69048de958172fb513b336564e7f8709)" CONFIG_GCC_VERSION=0CONFIG_CC_IS_CLANG=yCONFIG_CLANG_VERSION=160000CONFIG_AS_IS_LLVM=yCONFIG_AS_VERSION=160000CONFIG_LD_VERSION=0CONFIG_LD_IS_LLD=yCONFIG_LLD_VERSION=160000CONFIG_RUST_IS_AVAILABLE=yCONFIG_CC_HAS_ASM_GOTO_OUTPUT=yCONFIG_TOOLS_SUPPORT_RELR=yCONFIG_CC_HAS_ASM_INLINE=yCONFIG_CC_HAS_NO_PROFILE_FN_ATTR=yCONFIG_PAHOLE_VERSION=123CONFIG_CONSTRUCTORS=yCONFIG_IRQ_WORK=y
#
# General setup
#CONFIG_INIT_ENV_ARG_LIMIT=32CONFIG_COMPILE_TEST=y
# CONFIG_WERROR is not setCONFIG_LOCALVERSION=""CONFIG_BUILD_SALT=""CONFIG_DEFAULT_INIT=""CONFIG_DEFAULT_HOSTNAME="(none)"CONFIG_SYSVIPC=yCONFIG_SYSVIPC_SYSCTL=yCONFIG_POSIX_MQUEUE=yCONFIG_POSIX_MQUEUE_SYSCTL=yCONFIG_WATCH_QUEUE=yCONFIG_CROSS_MEMORY_ATTACH=yCONFIG_USELIB=yCONFIG_AUDIT=y
#
# IRQ subsystem
#CONFIG_GENERIC_IRQ_PROBE=yCONFIG_GENERIC_IRQ_SHOW=yCONFIG_GENERIC_IRQ_INJECTION=yCONFIG_GENERIC_IRQ_CHIP=yCONFIG_IRQ_DOMAIN=yCONFIG_IRQ_SIM=yCONFIG_IRQ_DOMAIN_HIERARCHY=yCONFIG_IRQ_FASTEOI_HIERARCHY_HANDLERS=yCONFIG_GENERIC_MSI_IRQ=yCONFIG_GENERIC_MSI_IRQ_DOMAIN=yCONFIG_GENERIC_IRQ_DEBUGFS=y
# end of IRQ subsystem
CONFIG_GENERIC_CLOCKEVENTS=yCONFIG_GENERIC_CLOCKEVENTS_BROADCAST=yCONFIG_TIME_KUNIT_TEST=mCONFIG_CONTEXT_TRACKING=yCONFIG_CONTEXT_TRACKING_IDLE=y
#
# Timers subsystem
#CONFIG_TICK_ONESHOT=yCONFIG_NO_HZ_COMMON=y
# CONFIG_HZ_PERIODIC is not setCONFIG_NO_HZ_IDLE=yCONFIG_NO_HZ=yCONFIG_HIGH_RES_TIMERS=y
# end of Timers subsystem
CONFIG_BPF=y
#
# BPF subsystem
#CONFIG_BPF_SYSCALL=yCONFIG_BPF_UNPRIV_DEFAULT_OFF=yCONFIG_USERMODE_DRIVER=y
# end of BPF subsystem
CONFIG_PREEMPT_NONE_BUILD=yCONFIG_PREEMPT_NONE=y
#
# CPU/Task time and stats accounting
#CONFIG_TICK_CPU_ACCOUNTING=yCONFIG_BSD_PROCESS_ACCT=yCONFIG_BSD_PROCESS_ACCT_V3=yCONFIG_TASKSTATS=yCONFIG_TASK_DELAY_ACCT=yCONFIG_TASK_XACCT=yCONFIG_TASK_IO_ACCOUNTING=yCONFIG_PSI=yCONFIG_PSI_DEFAULT_DISABLED=y
# end of CPU/Task time and stats accounting
CONFIG_CPU_ISOLATION=y
#
# RCU Subsystem
#CONFIG_TREE_RCU=yCONFIG_RCU_EXPERT=yCONFIG_SRCU=yCONFIG_TREE_SRCU=yCONFIG_TASKS_RCU_GENERIC=yCONFIG_FORCE_TASKS_RCU=yCONFIG_TASKS_RCU=yCONFIG_FORCE_TASKS_RUDE_RCU=yCONFIG_TASKS_RUDE_RCU=yCONFIG_FORCE_TASKS_TRACE_RCU=yCONFIG_TASKS_TRACE_RCU=yCONFIG_RCU_STALL_COMMON=yCONFIG_RCU_NEED_SEGCBLIST=yCONFIG_RCU_FANOUT=32CONFIG_RCU_FANOUT_LEAF=16CONFIG_RCU_NOCB_CPU=yCONFIG_RCU_NOCB_CPU_DEFAULT_ALL=yCONFIG_TASKS_TRACE_RCU_READ_MB=y
# end of RCU Subsystem
CONFIG_BUILD_BIN2C=yCONFIG_IKCONFIG=mCONFIG_IKCONFIG_PROC=yCONFIG_IKHEADERS=mCONFIG_LOG_BUF_SHIFT=17CONFIG_LOG_CPU_MAX_BUF_SHIFT=12CONFIG_PRINTK_SAFE_LOG_BUF_SHIFT=13CONFIG_PRINTK_INDEX=y
#
# Scheduler features
#
# end of Scheduler features
CONFIG_CC_IMPLICIT_FALLTHROUGH="-Wimplicit-fallthrough" CONFIG_GCC12_NO_ARRAY_BOUNDS=y CONFIG_CGROUPS=yCONFIG_PAGE_COUNTER=y CONFIG_CGROUP_FAVOR_DYNMODS=yCONFIG_MEMCG=yCONFIG_MEMCG_KMEM=yCONFIG_BLK_CGROUP=yCONFIG_CGROUP_WRITEBACK=y CONFIG_CGROUP_SCHED=y CONFIG_FAIR_GROUP_SCHED=y CONFIG_CFS_BANDWIDTH=yCONFIG_RT_GROUP_SCHED=yCONFIG_CGROUP_PIDS=yCONFIG_CGROUP_RDMA=yCONFIG_CGROUP_FREEZER=yCONFIG_CPUSETS=yCONFIG_PROC_PID_CPUSET=y CONFIG_CGROUP_DEVICE=yCONFIG_CGROUP_CPUACCT=yCONFIG_CGROUP_PERF=yCONFIG_CGROUP_BPF=yCONFIG_CGROUP_MISC=yCONFIG_CGROUP_DEBUG=y CONFIG_SOCK_CGROUP_DATA=yCONFIG_NAMESPACES=yCONFIG_UTS_NS=yCONFIG_IPC_NS=yCONFIG_USER_NS=yCONFIG_PID_NS=yCONFIG_NET_NS=yCONFIG_CHECKPOINT_RESTORE=y CONFIG_SCHED_AUTOGROUP=y CONFIG_SYSFS_DEPRECATED=y CONFIG_SYSFS_DEPRECATED_V2=yCONFIG_RELAY=yCONFIG_BLK_DEV_INITRD=y CONFIG_INITRAMFS_SOURCE=""CONFIG_RD_GZIP=yCONFIG_RD_BZIP2=yCONFIG_RD_LZMA=yCONFIG_RD_XZ=yCONFIG_RD_LZO=yCONFIG_RD_LZ4=yCONFIG_RD_ZSTD=yCONFIG_BOOT_CONFIG=y CONFIG_BOOT_CONFIG_EMBED=y CONFIG_BOOT_CONFIG_EMBED_FILE="" CONFIG_INITRAMFS_PRESERVE_MTIME=y CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set CONFIG_LD_ORPHAN_WARN=yCONFIG_SYSCTL=yCONFIG_EXPERT=yCONFIG_MULTIUSER=yCONFIG_SGETMASK_SYSCALL=y CONFIG_SYSFS_SYSCALL=yCONFIG_FHANDLE=yCONFIG_POSIX_TIMERS=yCONFIG_PRINTK=yCONFIG_BUG=yCONFIG_ELF_CORE=yCONFIG_BASE_FULL=yCONFIG_FUTEX=yCONFIG_FUTEX_PI=yCONFIG_EPOLL=yCONFIG_SIGNALFD=yCONFIG_TIMERFD=yCONFIG_EVENTFD=yCONFIG_SHMEM=yCONFIG_AIO=yCONFIG_IO_URING=yCONFIG_ADVISE_SYSCALLS=yCONFIG_MEMBARRIER=yCONFIG_KALLSYMS=yCONFIG_KALLSYMS_ALL=y CONFIG_KALLSYMS_BASE_RELATIVE=yCONFIG_KCMP=yCONFIG_EMBEDDED=yCONFIG_HAVE_PERF_EVENTS=y CONFIG_PERF_USE_VMALLOC=yCONFIG_PC104=y
#
# Kernel Performance Events And Counters
#CONFIG_PERF_EVENTS=yCONFIG_DEBUG_PERF_USE_VMALLOC=y
# end of Kernel Performance Events And Counters
CONFIG_SYSTEM_DATA_VERIFICATION=yCONFIG_PROFILING=yCONFIG_TRACEPOINTS=y
# end of General setup
#
# Linux Kernel Configuration for Hexagon
#CONFIG_HEXAGON=yCONFIG_HEXAGON_PHYS_OFFSET=yCONFIG_FRAME_POINTER=yCONFIG_LOCKDEP_SUPPORT=yCONFIG_EARLY_PRINTK=yCONFIG_MMU=yCONFIG_GENERIC_CSUM=yCONFIG_GENERIC_HWEIGHT=yCONFIG_STACKTRACE_SUPPORT=yCONFIG_GENERIC_BUG=y
#
# Machine selection
#CONFIG_HEXAGON_COMET=yCONFIG_HEXAGON_ARCH_VERSION=2CONFIG_CMDLINE=""CONFIG_SMP=yCONFIG_NR_CPUS=6CONFIG_PAGE_SIZE_4KB=y
# CONFIG_PAGE_SIZE_16KB is not set
# CONFIG_PAGE_SIZE_64KB is not set
# CONFIG_PAGE_SIZE_256KB is not set
# CONFIG_HZ_100 is not setCONFIG_HZ_250=y
# CONFIG_HZ_300 is not set
# CONFIG_HZ_1000 is not setCONFIG_HZ=250CONFIG_SCHED_HRTICK=y
# end of Machine selection
#
# General architecture-dependent options
#CONFIG_CRASH_CORE=yCONFIG_TRACE_IRQFLAGS_SUPPORT=yCONFIG_HAVE_ARCH_TRACEHOOK=yCONFIG_GENERIC_SMP_IDLE_THREAD=yCONFIG_ARCH_32BIT_OFF_T=yCONFIG_LTO_NONE=yCONFIG_MODULES_USE_ELF_RELA=yCONFIG_PGTABLE_LEVELS=2CONFIG_PAGE_SIZE_LESS_THAN_64KB=yCONFIG_PAGE_SIZE_LESS_THAN_256KB=yCONFIG_ISA_BUS_API=yCONFIG_COMPAT_32BIT_TIME=yCONFIG_ARCH_NO_PREEMPT=yCONFIG_LOCK_EVENT_COUNTS=yCONFIG_ARCH_WANT_LD_ORPHAN_WARN=y
#
# GCOV-based kernel profiling
#CONFIG_GCOV_KERNEL=y
# end of GCOV-based kernel profiling # end of General architecture-dependent options
CONFIG_RT_MUTEXES=yCONFIG_BASE_SMALL=0CONFIG_MODULE_SIG_FORMAT=yCONFIG_MODULES=yCONFIG_MODULE_FORCE_LOAD=yCONFIG_MODULE_UNLOAD=yCONFIG_MODULE_FORCE_UNLOAD=yCONFIG_MODULE_UNLOAD_TAINT_TRACKING=yCONFIG_MODVERSIONS=yCONFIG_MODULE_SRCVERSION_ALL=yCONFIG_MODULE_SIG=yCONFIG_MODULE_SIG_FORCE=yCONFIG_MODULE_SIG_ALL=yCONFIG_MODULE_SIG_SHA1=y
# CONFIG_MODULE_SIG_SHA224 is not set
# CONFIG_MODULE_SIG_SHA256 is not set
# CONFIG_MODULE_SIG_SHA384 is not set
# CONFIG_MODULE_SIG_SHA512 is not setCONFIG_MODULE_SIG_HASH="sha1"CONFIG_MODULE_COMPRESS_NONE=y
# CONFIG_MODULE_COMPRESS_GZIP is not set
# CONFIG_MODULE_COMPRESS_XZ is not set
# CONFIG_MODULE_COMPRESS_ZSTD is not setCONFIG_MODULE_ALLOW_MISSING_NAMESPACE_IMPORTS=yCONFIG_MODPROBE_PATH="/sbin/modprobe"CONFIG_MODULES_TREE_LOOKUP=yCONFIG_BLOCK=yCONFIG_BLOCK_LEGACY_AUTOLOAD=yCONFIG_BLK_RQ_ALLOC_TIME=yCONFIG_BLK_CGROUP_RWSTAT=yCONFIG_BLK_DEV_BSG_COMMON=yCONFIG_BLK_ICQ=yCONFIG_BLK_DEV_BSGLIB=yCONFIG_BLK_DEV_INTEGRITY=yCONFIG_BLK_DEV_INTEGRITY_T10=mCONFIG_BLK_DEV_ZONED=yCONFIG_BLK_DEV_THROTTLING=yCONFIG_BLK_DEV_THROTTLING_LOW=yCONFIG_BLK_WBT=yCONFIG_BLK_WBT_MQ=yCONFIG_BLK_CGROUP_IOLATENCY=yCONFIG_BLK_CGROUP_FC_APPID=yCONFIG_BLK_CGROUP_IOCOST=yCONFIG_BLK_CGROUP_IOPRIO=yCONFIG_BLK_DEBUG_FS=yCONFIG_BLK_DEBUG_FS_ZONED=yCONFIG_BLK_SED_OPAL=yCONFIG_BLK_INLINE_ENCRYPTION=yCONFIG_BLK_INLINE_ENCRYPTION_FALLBACK=y
#
# Partition Types
#CONFIG_PARTITION_ADVANCED=yCONFIG_ACORN_PARTITION=yCONFIG_ACORN_PARTITION_CUMANA=yCONFIG_ACORN_PARTITION_EESOX=yCONFIG_ACORN_PARTITION_ICS=yCONFIG_ACORN_PARTITION_ADFS=yCONFIG_ACORN_PARTITION_POWERTEC=yCONFIG_ACORN_PARTITION_RISCIX=yCONFIG_AIX_PARTITION=yCONFIG_OSF_PARTITION=yCONFIG_AMIGA_PARTITION=yCONFIG_ATARI_PARTITION=yCONFIG_MAC_PARTITION=yCONFIG_MSDOS_PARTITION=yCONFIG_BSD_DISKLABEL=yCONFIG_MINIX_SUBPARTITION=yCONFIG_SOLARIS_X86_PARTITION=yCONFIG_UNIXWARE_DISKLABEL=yCONFIG_LDM_PARTITION=yCONFIG_LDM_DEBUG=yCONFIG_SGI_PARTITION=yCONFIG_ULTRIX_PARTITION=yCONFIG_SUN_PARTITION=yCONFIG_KARMA_PARTITION=yCONFIG_EFI_PARTITION=yCONFIG_SYSV68_PARTITION=yCONFIG_CMDLINE_PARTITION=y
# end of Partition Types
CONFIG_BLK_MQ_VIRTIO=yCONFIG_BLK_MQ_RDMA=yCONFIG_BLOCK_HOLDER_DEPRECATED=yCONFIG_BLK_MQ_STACKING=y
#
# IO Schedulers
#CONFIG_MQ_IOSCHED_DEADLINE=yCONFIG_MQ_IOSCHED_KYBER=mCONFIG_IOSCHED_BFQ=mCONFIG_BFQ_GROUP_IOSCHED=yCONFIG_BFQ_CGROUP_DEBUG=y
# end of IO Schedulers
CONFIG_PADATA=yCONFIG_ASN1=yCONFIG_UNINLINE_SPIN_UNLOCK=yCONFIG_FREEZER=y
#
# Executable file formats
#CONFIG_BINFMT_ELF=yCONFIG_ELFCORE=yCONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=yCONFIG_BINFMT_SCRIPT=mCONFIG_BINFMT_MISC=mCONFIG_COREDUMP=y
# end of Executable file formats
#
# Memory Management options
#CONFIG_ZPOOL=yCONFIG_SWAP=yCONFIG_ZSWAP=yCONFIG_ZSWAP_DEFAULT_ON=y
# CONFIG_ZSWAP_COMPRESSOR_DEFAULT_DEFLATE is not set CONFIG_ZSWAP_COMPRESSOR_DEFAULT_LZO=y
# CONFIG_ZSWAP_COMPRESSOR_DEFAULT_842 is not set # CONFIG_ZSWAP_COMPRESSOR_DEFAULT_LZ4 is not set # CONFIG_ZSWAP_COMPRESSOR_DEFAULT_LZ4HC is not set # CONFIG_ZSWAP_COMPRESSOR_DEFAULT_ZSTD is not set CONFIG_ZSWAP_COMPRESSOR_DEFAULT="lzo" CONFIG_ZSWAP_ZPOOL_DEFAULT_ZBUD=y
# CONFIG_ZSWAP_ZPOOL_DEFAULT_Z3FOLD is not set # CONFIG_ZSWAP_ZPOOL_DEFAULT_ZSMALLOC is not set CONFIG_ZSWAP_ZPOOL_DEFAULT="zbud" CONFIG_ZBUD=yCONFIG_Z3FOLD=mCONFIG_ZSMALLOC=mCONFIG_ZSMALLOC_STAT=y
#
# SLAB allocator options
#
# CONFIG_SLAB is not setCONFIG_SLUB=y
# CONFIG_SLOB is not setCONFIG_SLAB_MERGE_DEFAULT=y
# CONFIG_SLAB_FREELIST_RANDOM is not set
# CONFIG_SLAB_FREELIST_HARDENED is not set
# CONFIG_SLUB_STATS is not setCONFIG_SLUB_CPU_PARTIAL=y
# end of SLAB allocator options
CONFIG_SHUFFLE_PAGE_ALLOCATOR=yCONFIG_COMPAT_BRK=yCONFIG_FLATMEM=yCONFIG_MEMORY_ISOLATION=yCONFIG_SPLIT_PTLOCK_CPUS=4CONFIG_MEMORY_BALLOON=yCONFIG_BALLOON_COMPACTION=yCONFIG_COMPACTION=yCONFIG_COMPACT_UNEVICTABLE_DEFAULT=1CONFIG_PAGE_REPORTING=yCONFIG_MIGRATION=yCONFIG_CONTIG_ALLOC=yCONFIG_MMU_NOTIFIER=yCONFIG_KSM=yCONFIG_DEFAULT_MMAP_MIN_ADDR=4096CONFIG_FRONTSWAP=yCONFIG_CMA=yCONFIG_CMA_DEBUG=yCONFIG_CMA_DEBUGFS=yCONFIG_CMA_SYSFS=yCONFIG_CMA_AREAS=7CONFIG_PAGE_IDLE_FLAG=yCONFIG_IDLE_PAGE_TRACKING=yCONFIG_HMM_MIRROR=yCONFIG_VM_EVENT_COUNTERS=yCONFIG_PERCPU_STATS=yCONFIG_GUP_TEST=yCONFIG_ANON_VMA_NAME=yCONFIG_USERFAULTFD=yCONFIG_LRU_GEN=yCONFIG_LRU_GEN_ENABLED=yCONFIG_LRU_GEN_STATS=y
#
# Data Access Monitoring
#CONFIG_DAMON=yCONFIG_DAMON_VADDR=yCONFIG_DAMON_PADDR=yCONFIG_DAMON_SYSFS=yCONFIG_DAMON_DBGFS=yCONFIG_DAMON_RECLAIM=yCONFIG_DAMON_LRU_SORT=y
# end of Data Access Monitoring # end of Memory Management options
CONFIG_NET=yCONFIG_NET_INGRESS=yCONFIG_NET_EGRESS=yCONFIG_NET_REDIRECT=yCONFIG_SKB_EXTENSIONS=y
#
# Networking options
#CONFIG_PACKET=mCONFIG_PACKET_DIAG=mCONFIG_UNIX=mCONFIG_UNIX_SCM=yCONFIG_AF_UNIX_OOB=yCONFIG_UNIX_DIAG=mCONFIG_TLS=mCONFIG_TLS_DEVICE=yCONFIG_TLS_TOE=yCONFIG_XFRM=yCONFIG_XFRM_OFFLOAD=yCONFIG_XFRM_ALGO=mCONFIG_XFRM_USER=mCONFIG_XFRM_INTERFACE=mCONFIG_XFRM_SUB_POLICY=yCONFIG_XFRM_MIGRATE=yCONFIG_XFRM_STATISTICS=yCONFIG_XFRM_AH=mCONFIG_XFRM_ESP=mCONFIG_XFRM_IPCOMP=mCONFIG_NET_KEY=mCONFIG_NET_KEY_MIGRATE=yCONFIG_XFRM_ESPINTCP=yCONFIG_SMC=mCONFIG_SMC_DIAG=mCONFIG_XDP_SOCKETS=yCONFIG_XDP_SOCKETS_DIAG=mCONFIG_INET=yCONFIG_IP_MULTICAST=yCONFIG_IP_ADVANCED_ROUTER=yCONFIG_IP_FIB_TRIE_STATS=yCONFIG_IP_MULTIPLE_TABLES=yCONFIG_IP_ROUTE_MULTIPATH=yCONFIG_IP_ROUTE_VERBOSE=yCONFIG_IP_ROUTE_CLASSID=yCONFIG_IP_PNP=yCONFIG_IP_PNP_DHCP=yCONFIG_IP_PNP_BOOTP=yCONFIG_IP_PNP_RARP=yCONFIG_NET_IPIP=mCONFIG_NET_IPGRE_DEMUX=mCONFIG_NET_IP_TUNNEL=mCONFIG_NET_IPGRE=mCONFIG_NET_IPGRE_BROADCAST=yCONFIG_IP_MROUTE_COMMON=yCONFIG_IP_MROUTE=yCONFIG_IP_MROUTE_MULTIPLE_TABLES=yCONFIG_IP_PIMSM_V1=yCONFIG_IP_PIMSM_V2=yCONFIG_SYN_COOKIES=yCONFIG_NET_IPVTI=mCONFIG_NET_UDP_TUNNEL=mCONFIG_NET_FOU=mCONFIG_NET_FOU_IP_TUNNELS=yCONFIG_INET_AH=mCONFIG_INET_ESP=mCONFIG_INET_ESP_OFFLOAD=mCONFIG_INET_ESPINTCP=yCONFIG_INET_IPCOMP=mCONFIG_INET_XFRM_TUNNEL=mCONFIG_INET_TUNNEL=mCONFIG_INET_DIAG=mCONFIG_INET_TCP_DIAG=mCONFIG_INET_UDP_DIAG=mCONFIG_INET_RAW_DIAG=mCONFIG_INET_DIAG_DESTROY=yCONFIG_TCP_CONG_ADVANCED=yCONFIG_TCP_CONG_BIC=mCONFIG_TCP_CONG_CUBIC=mCONFIG_TCP_CONG_WESTWOOD=mCONFIG_TCP_CONG_HTCP=mCONFIG_TCP_CONG_HSTCP=mCONFIG_TCP_CONG_HYBLA=mCONFIG_TCP_CONG_VEGAS=mCONFIG_TCP_CONG_NV=mCONFIG_TCP_CONG_SCALABLE=mCONFIG_TCP_CONG_LP=mCONFIG_TCP_CONG_VENO=mCONFIG_TCP_CONG_YEAH=mCONFIG_TCP_CONG_ILLINOIS=mCONFIG_TCP_CONG_DCTCP=mCONFIG_TCP_CONG_CDG=mCONFIG_TCP_CONG_BBR=mCONFIG_DEFAULT_RENO=yCONFIG_DEFAULT_TCP_CONG="reno"CONFIG_TCP_MD5SIG=yCONFIG_IPV6=mCONFIG_IPV6_ROUTER_PREF=yCONFIG_IPV6_ROUTE_INFO=yCONFIG_IPV6_OPTIMISTIC_DAD=yCONFIG_INET6_AH=mCONFIG_INET6_ESP=mCONFIG_INET6_ESP_OFFLOAD=mCONFIG_INET6_ESPINTCP=yCONFIG_INET6_IPCOMP=mCONFIG_IPV6_MIP6=mCONFIG_IPV6_ILA=mCONFIG_INET6_XFRM_TUNNEL=mCONFIG_INET6_TUNNEL=mCONFIG_IPV6_VTI=mCONFIG_IPV6_SIT=mCONFIG_IPV6_SIT_6RD=yCONFIG_IPV6_NDISC_NODETYPE=yCONFIG_IPV6_TUNNEL=mCONFIG_IPV6_GRE=mCONFIG_IPV6_FOU=mCONFIG_IPV6_FOU_TUNNEL=mCONFIG_IPV6_MULTIPLE_TABLES=yCONFIG_IPV6_SUBTREES=yCONFIG_IPV6_MROUTE=yCONFIG_IPV6_MROUTE_MULTIPLE_TABLES=yCONFIG_IPV6_PIMSM_V2=yCONFIG_IPV6_SEG6_LWTUNNEL=yCONFIG_IPV6_SEG6_HMAC=yCONFIG_IPV6_RPL_LWTUNNEL=yCONFIG_IPV6_IOAM6_LWTUNNEL=yCONFIG_NETLABEL=yCONFIG_MPTCP=yCONFIG_INET_MPTCP_DIAG=mCONFIG_MPTCP_KUNIT_TEST=mCONFIG_NETWORK_SECMARK=yCONFIG_NET_PTP_CLASSIFY=yCONFIG_NETWORK_PHY_TIMESTAMPING=yCONFIG_NETFILTER=yCONFIG_NETFILTER_ADVANCED=yCONFIG_BRIDGE_NETFILTER=m
#
# Core Netfilter Configuration
#CONFIG_NETFILTER_INGRESS=yCONFIG_NETFILTER_EGRESS=yCONFIG_NETFILTER_SKIP_EGRESS=yCONFIG_NETFILTER_NETLINK=mCONFIG_NETFILTER_FAMILY_BRIDGE=yCONFIG_NETFILTER_FAMILY_ARP=yCONFIG_NETFILTER_NETLINK_HOOK=mCONFIG_NETFILTER_NETLINK_ACCT=mCONFIG_NETFILTER_NETLINK_QUEUE=mCONFIG_NETFILTER_NETLINK_LOG=mCONFIG_NETFILTER_NETLINK_OSF=mCONFIG_NF_CONNTRACK=mCONFIG_NF_LOG_SYSLOG=mCONFIG_NETFILTER_CONNCOUNT=mCONFIG_NF_CONNTRACK_MARK=yCONFIG_NF_CONNTRACK_SECMARK=yCONFIG_NF_CONNTRACK_ZONES=yCONFIG_NF_CONNTRACK_PROCFS=yCONFIG_NF_CONNTRACK_EVENTS=yCONFIG_NF_CONNTRACK_TIMEOUT=yCONFIG_NF_CONNTRACK_TIMESTAMP=yCONFIG_NF_CONNTRACK_LABELS=yCONFIG_NF_CT_PROTO_DCCP=yCONFIG_NF_CT_PROTO_GRE=yCONFIG_NF_CT_PROTO_SCTP=yCONFIG_NF_CT_PROTO_UDPLITE=yCONFIG_NF_CONNTRACK_AMANDA=mCONFIG_NF_CONNTRACK_FTP=mCONFIG_NF_CONNTRACK_H323=mCONFIG_NF_CONNTRACK_IRC=mCONFIG_NF_CONNTRACK_BROADCAST=mCONFIG_NF_CONNTRACK_NETBIOS_NS=mCONFIG_NF_CONNTRACK_SNMP=mCONFIG_NF_CONNTRACK_PPTP=mCONFIG_NF_CONNTRACK_SANE=mCONFIG_NF_CONNTRACK_SIP=mCONFIG_NF_CONNTRACK_TFTP=mCONFIG_NF_CT_NETLINK=mCONFIG_NF_CT_NETLINK_TIMEOUT=mCONFIG_NF_CT_NETLINK_HELPER=mCONFIG_NETFILTER_NETLINK_GLUE_CT=yCONFIG_NF_NAT=mCONFIG_NF_NAT_AMANDA=mCONFIG_NF_NAT_FTP=mCONFIG_NF_NAT_IRC=mCONFIG_NF_NAT_SIP=mCONFIG_NF_NAT_TFTP=mCONFIG_NF_NAT_REDIRECT=yCONFIG_NF_NAT_MASQUERADE=yCONFIG_NETFILTER_SYNPROXY=mCONFIG_NF_TABLES=mCONFIG_NF_TABLES_INET=yCONFIG_NF_TABLES_NETDEV=yCONFIG_NFT_NUMGEN=mCONFIG_NFT_CT=mCONFIG_NFT_FLOW_OFFLOAD=mCONFIG_NFT_CONNLIMIT=mCONFIG_NFT_LOG=mCONFIG_NFT_LIMIT=mCONFIG_NFT_MASQ=mCONFIG_NFT_REDIR=mCONFIG_NFT_NAT=mCONFIG_NFT_TUNNEL=m
# CONFIG_NFT_OBJREF is not setCONFIG_NFT_QUEUE=mCONFIG_NFT_QUOTA=mCONFIG_NFT_REJECT=mCONFIG_NFT_REJECT_INET=mCONFIG_NFT_COMPAT=mCONFIG_NFT_HASH=mCONFIG_NFT_FIB=mCONFIG_NFT_FIB_INET=mCONFIG_NFT_XFRM=mCONFIG_NFT_SOCKET=mCONFIG_NFT_OSF=mCONFIG_NFT_TPROXY=mCONFIG_NFT_SYNPROXY=mCONFIG_NF_DUP_NETDEV=mCONFIG_NFT_DUP_NETDEV=mCONFIG_NFT_FWD_NETDEV=mCONFIG_NFT_FIB_NETDEV=mCONFIG_NFT_REJECT_NETDEV=mCONFIG_NF_FLOW_TABLE_INET=mCONFIG_NF_FLOW_TABLE=mCONFIG_NF_FLOW_TABLE_PROCFS=yCONFIG_NETFILTER_XTABLES=m
#
# Xtables combined modules
#CONFIG_NETFILTER_XT_MARK=mCONFIG_NETFILTER_XT_CONNMARK=mCONFIG_NETFILTER_XT_SET=m
#
# Xtables targets
#CONFIG_NETFILTER_XT_TARGET_AUDIT=mCONFIG_NETFILTER_XT_TARGET_CHECKSUM=mCONFIG_NETFILTER_XT_TARGET_CLASSIFY=mCONFIG_NETFILTER_XT_TARGET_CONNMARK=mCONFIG_NETFILTER_XT_TARGET_CONNSECMARK=mCONFIG_NETFILTER_XT_TARGET_CT=mCONFIG_NETFILTER_XT_TARGET_DSCP=mCONFIG_NETFILTER_XT_TARGET_HL=mCONFIG_NETFILTER_XT_TARGET_HMARK=mCONFIG_NETFILTER_XT_TARGET_IDLETIMER=mCONFIG_NETFILTER_XT_TARGET_LED=mCONFIG_NETFILTER_XT_TARGET_LOG=mCONFIG_NETFILTER_XT_TARGET_MARK=mCONFIG_NETFILTER_XT_NAT=mCONFIG_NETFILTER_XT_TARGET_NETMAP=mCONFIG_NETFILTER_XT_TARGET_NFLOG=mCONFIG_NETFILTER_XT_TARGET_NFQUEUE=mCONFIG_NETFILTER_XT_TARGET_NOTRACK=mCONFIG_NETFILTER_XT_TARGET_RATEEST=mCONFIG_NETFILTER_XT_TARGET_REDIRECT=mCONFIG_NETFILTER_XT_TARGET_MASQUERADE=mCONFIG_NETFILTER_XT_TARGET_TEE=mCONFIG_NETFILTER_XT_TARGET_TPROXY=mCONFIG_NETFILTER_XT_TARGET_TRACE=mCONFIG_NETFILTER_XT_TARGET_SECMARK=mCONFIG_NETFILTER_XT_TARGET_TCPMSS=mCONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m
#
# Xtables matches
#CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=mCONFIG_NETFILTER_XT_MATCH_BPF=mCONFIG_NETFILTER_XT_MATCH_CGROUP=mCONFIG_NETFILTER_XT_MATCH_CLUSTER=mCONFIG_NETFILTER_XT_MATCH_COMMENT=mCONFIG_NETFILTER_XT_MATCH_CONNBYTES=mCONFIG_NETFILTER_XT_MATCH_CONNLABEL=mCONFIG_NETFILTER_XT_MATCH_CONNLIMIT=mCONFIG_NETFILTER_XT_MATCH_CONNMARK=mCONFIG_NETFILTER_XT_MATCH_CONNTRACK=mCONFIG_NETFILTER_XT_MATCH_CPU=mCONFIG_NETFILTER_XT_MATCH_DCCP=mCONFIG_NETFILTER_XT_MATCH_DEVGROUP=mCONFIG_NETFILTER_XT_MATCH_DSCP=mCONFIG_NETFILTER_XT_MATCH_ECN=mCONFIG_NETFILTER_XT_MATCH_ESP=mCONFIG_NETFILTER_XT_MATCH_HASHLIMIT=mCONFIG_NETFILTER_XT_MATCH_HELPER=mCONFIG_NETFILTER_XT_MATCH_HL=mCONFIG_NETFILTER_XT_MATCH_IPCOMP=mCONFIG_NETFILTER_XT_MATCH_IPRANGE=mCONFIG_NETFILTER_XT_MATCH_IPVS=mCONFIG_NETFILTER_XT_MATCH_L2TP=mCONFIG_NETFILTER_XT_MATCH_LENGTH=mCONFIG_NETFILTER_XT_MATCH_LIMIT=mCONFIG_NETFILTER_XT_MATCH_MAC=mCONFIG_NETFILTER_XT_MATCH_MARK=mCONFIG_NETFILTER_XT_MATCH_MULTIPORT=mCONFIG_NETFILTER_XT_MATCH_NFACCT=mCONFIG_NETFILTER_XT_MATCH_OSF=mCONFIG_NETFILTER_XT_MATCH_OWNER=mCONFIG_NETFILTER_XT_MATCH_POLICY=mCONFIG_NETFILTER_XT_MATCH_PHYSDEV=mCONFIG_NETFILTER_XT_MATCH_PKTTYPE=mCONFIG_NETFILTER_XT_MATCH_QUOTA=mCONFIG_NETFILTER_XT_MATCH_RATEEST=mCONFIG_NETFILTER_XT_MATCH_REALM=mCONFIG_NETFILTER_XT_MATCH_RECENT=mCONFIG_NETFILTER_XT_MATCH_SCTP=mCONFIG_NETFILTER_XT_MATCH_SOCKET=mCONFIG_NETFILTER_XT_MATCH_STATE=mCONFIG_NETFILTER_XT_MATCH_STATISTIC=mCONFIG_NETFILTER_XT_MATCH_STRING=mCONFIG_NETFILTER_XT_MATCH_TCPMSS=mCONFIG_NETFILTER_XT_MATCH_TIME=mCONFIG_NETFILTER_XT_MATCH_U32=m
# end of Core Netfilter Configuration
CONFIG_IP_SET=mCONFIG_IP_SET_MAX=256CONFIG_IP_SET_BITMAP_IP=mCONFIG_IP_SET_BITMAP_IPMAC=mCONFIG_IP_SET_BITMAP_PORT=mCONFIG_IP_SET_HASH_IP=mCONFIG_IP_SET_HASH_IPMARK=mCONFIG_IP_SET_HASH_IPPORT=mCONFIG_IP_SET_HASH_IPPORTIP=mCONFIG_IP_SET_HASH_IPPORTNET=mCONFIG_IP_SET_HASH_IPMAC=mCONFIG_IP_SET_HASH_MAC=mCONFIG_IP_SET_HASH_NETPORTNET=mCONFIG_IP_SET_HASH_NET=mCONFIG_IP_SET_HASH_NETNET=mCONFIG_IP_SET_HASH_NETPORT=mCONFIG_IP_SET_HASH_NETIFACE=mCONFIG_IP_SET_LIST_SET=mCONFIG_IP_VS=mCONFIG_IP_VS_IPV6=yCONFIG_IP_VS_DEBUG=yCONFIG_IP_VS_TAB_BITS=12
#
# IPVS transport protocol load balancing support
#CONFIG_IP_VS_PROTO_TCP=yCONFIG_IP_VS_PROTO_UDP=yCONFIG_IP_VS_PROTO_AH_ESP=yCONFIG_IP_VS_PROTO_ESP=yCONFIG_IP_VS_PROTO_AH=yCONFIG_IP_VS_PROTO_SCTP=y
#
# IPVS scheduler
#CONFIG_IP_VS_RR=mCONFIG_IP_VS_WRR=mCONFIG_IP_VS_LC=mCONFIG_IP_VS_WLC=mCONFIG_IP_VS_FO=mCONFIG_IP_VS_OVF=mCONFIG_IP_VS_LBLC=mCONFIG_IP_VS_LBLCR=mCONFIG_IP_VS_DH=mCONFIG_IP_VS_SH=mCONFIG_IP_VS_MH=mCONFIG_IP_VS_SED=mCONFIG_IP_VS_NQ=mCONFIG_IP_VS_TWOS=m
#
# IPVS SH scheduler
#CONFIG_IP_VS_SH_TAB_BITS=8
#
# IPVS MH scheduler
#CONFIG_IP_VS_MH_TAB_INDEX=12
#
# IPVS application helper
#CONFIG_IP_VS_FTP=mCONFIG_IP_VS_NFCT=yCONFIG_IP_VS_PE_SIP=m
#
# IP: Netfilter Configuration
#CONFIG_NF_DEFRAG_IPV4=mCONFIG_NF_SOCKET_IPV4=mCONFIG_NF_TPROXY_IPV4=mCONFIG_NF_TABLES_IPV4=yCONFIG_NFT_REJECT_IPV4=mCONFIG_NFT_DUP_IPV4=mCONFIG_NFT_FIB_IPV4=mCONFIG_NF_TABLES_ARP=yCONFIG_NF_DUP_IPV4=mCONFIG_NF_LOG_ARP=mCONFIG_NF_LOG_IPV4=mCONFIG_NF_REJECT_IPV4=mCONFIG_NF_NAT_SNMP_BASIC=mCONFIG_NF_NAT_PPTP=mCONFIG_NF_NAT_H323=mCONFIG_IP_NF_IPTABLES=mCONFIG_IP_NF_MATCH_AH=mCONFIG_IP_NF_MATCH_ECN=mCONFIG_IP_NF_MATCH_RPFILTER=mCONFIG_IP_NF_MATCH_TTL=mCONFIG_IP_NF_FILTER=mCONFIG_IP_NF_TARGET_REJECT=mCONFIG_IP_NF_TARGET_SYNPROXY=mCONFIG_IP_NF_NAT=mCONFIG_IP_NF_TARGET_MASQUERADE=mCONFIG_IP_NF_TARGET_NETMAP=mCONFIG_IP_NF_TARGET_REDIRECT=mCONFIG_IP_NF_MANGLE=mCONFIG_IP_NF_TARGET_CLUSTERIP=mCONFIG_IP_NF_TARGET_ECN=mCONFIG_IP_NF_TARGET_TTL=mCONFIG_IP_NF_RAW=mCONFIG_IP_NF_SECURITY=mCONFIG_IP_NF_ARPTABLES=mCONFIG_IP_NF_ARPFILTER=mCONFIG_IP_NF_ARP_MANGLE=m
# end of IP: Netfilter Configuration
#
# IPv6: Netfilter Configuration
#CONFIG_NF_SOCKET_IPV6=mCONFIG_NF_TPROXY_IPV6=mCONFIG_NF_TABLES_IPV6=yCONFIG_NFT_REJECT_IPV6=mCONFIG_NFT_DUP_IPV6=mCONFIG_NFT_FIB_IPV6=mCONFIG_NF_DUP_IPV6=mCONFIG_NF_REJECT_IPV6=mCONFIG_NF_LOG_IPV6=mCONFIG_IP6_NF_IPTABLES=mCONFIG_IP6_NF_MATCH_AH=mCONFIG_IP6_NF_MATCH_EUI64=mCONFIG_IP6_NF_MATCH_FRAG=mCONFIG_IP6_NF_MATCH_OPTS=mCONFIG_IP6_NF_MATCH_HL=mCONFIG_IP6_NF_MATCH_IPV6HEADER=mCONFIG_IP6_NF_MATCH_MH=mCONFIG_IP6_NF_MATCH_RPFILTER=mCONFIG_IP6_NF_MATCH_RT=mCONFIG_IP6_NF_MATCH_SRH=mCONFIG_IP6_NF_TARGET_HL=mCONFIG_IP6_NF_FILTER=mCONFIG_IP6_NF_TARGET_REJECT=mCONFIG_IP6_NF_TARGET_SYNPROXY=mCONFIG_IP6_NF_MANGLE=mCONFIG_IP6_NF_RAW=mCONFIG_IP6_NF_SECURITY=mCONFIG_IP6_NF_NAT=mCONFIG_IP6_NF_TARGET_MASQUERADE=mCONFIG_IP6_NF_TARGET_NPT=m
# end of IPv6: Netfilter Configuration
CONFIG_NF_DEFRAG_IPV6=mCONFIG_NF_TABLES_BRIDGE=mCONFIG_NFT_BRIDGE_META=mCONFIG_NFT_BRIDGE_REJECT=mCONFIG_NF_CONNTRACK_BRIDGE=mCONFIG_BRIDGE_NF_EBTABLES=mCONFIG_BRIDGE_EBT_BROUTE=mCONFIG_BRIDGE_EBT_T_FILTER=mCONFIG_BRIDGE_EBT_T_NAT=mCONFIG_BRIDGE_EBT_802_3=mCONFIG_BRIDGE_EBT_AMONG=mCONFIG_BRIDGE_EBT_ARP=mCONFIG_BRIDGE_EBT_IP=mCONFIG_BRIDGE_EBT_IP6=mCONFIG_BRIDGE_EBT_LIMIT=mCONFIG_BRIDGE_EBT_MARK=mCONFIG_BRIDGE_EBT_PKTTYPE=mCONFIG_BRIDGE_EBT_STP=mCONFIG_BRIDGE_EBT_VLAN=mCONFIG_BRIDGE_EBT_ARPREPLY=mCONFIG_BRIDGE_EBT_DNAT=mCONFIG_BRIDGE_EBT_MARK_T=mCONFIG_BRIDGE_EBT_REDIRECT=mCONFIG_BRIDGE_EBT_SNAT=mCONFIG_BRIDGE_EBT_LOG=mCONFIG_BRIDGE_EBT_NFLOG=mCONFIG_BPFILTER=yCONFIG_IP_DCCP=mCONFIG_INET_DCCP_DIAG=m
#
# DCCP CCIDs Configuration
#CONFIG_IP_DCCP_CCID2_DEBUG=yCONFIG_IP_DCCP_CCID3=yCONFIG_IP_DCCP_CCID3_DEBUG=yCONFIG_IP_DCCP_TFRC_LIB=yCONFIG_IP_DCCP_TFRC_DEBUG=y
# end of DCCP CCIDs Configuration
#
# DCCP Kernel Hacking
#CONFIG_IP_DCCP_DEBUG=y
# end of DCCP Kernel Hacking
CONFIG_IP_SCTP=mCONFIG_SCTP_DBG_OBJCNT=yCONFIG_SCTP_DEFAULT_COOKIE_HMAC_MD5=y
# CONFIG_SCTP_DEFAULT_COOKIE_HMAC_SHA1 is not set
# CONFIG_SCTP_DEFAULT_COOKIE_HMAC_NONE is not setCONFIG_SCTP_COOKIE_HMAC_MD5=yCONFIG_SCTP_COOKIE_HMAC_SHA1=yCONFIG_INET_SCTP_DIAG=mCONFIG_RDS=mCONFIG_RDS_RDMA=mCONFIG_RDS_TCP=mCONFIG_RDS_DEBUG=yCONFIG_TIPC=mCONFIG_TIPC_MEDIA_IB=yCONFIG_TIPC_MEDIA_UDP=yCONFIG_TIPC_CRYPTO=yCONFIG_TIPC_DIAG=mCONFIG_ATM=mCONFIG_ATM_CLIP=mCONFIG_ATM_CLIP_NO_ICMP=yCONFIG_ATM_LANE=mCONFIG_ATM_MPOA=mCONFIG_ATM_BR2684=mCONFIG_ATM_BR2684_IPFILTER=yCONFIG_L2TP=mCONFIG_L2TP_DEBUGFS=mCONFIG_L2TP_V3=yCONFIG_L2TP_IP=mCONFIG_L2TP_ETH=mCONFIG_STP=mCONFIG_GARP=mCONFIG_MRP=mCONFIG_BRIDGE=mCONFIG_BRIDGE_IGMP_SNOOPING=yCONFIG_BRIDGE_VLAN_FILTERING=yCONFIG_BRIDGE_MRP=yCONFIG_BRIDGE_CFM=yCONFIG_NET_DSA=mCONFIG_NET_DSA_TAG_AR9331=mCONFIG_NET_DSA_TAG_BRCM_COMMON=mCONFIG_NET_DSA_TAG_BRCM=mCONFIG_NET_DSA_TAG_BRCM_LEGACY=mCONFIG_NET_DSA_TAG_BRCM_PREPEND=mCONFIG_NET_DSA_TAG_HELLCREEK=mCONFIG_NET_DSA_TAG_GSWIP=mCONFIG_NET_DSA_TAG_DSA_COMMON=mCONFIG_NET_DSA_TAG_DSA=mCONFIG_NET_DSA_TAG_EDSA=mCONFIG_NET_DSA_TAG_MTK=mCONFIG_NET_DSA_TAG_KSZ=mCONFIG_NET_DSA_TAG_OCELOT=mCONFIG_NET_DSA_TAG_OCELOT_8021Q=mCONFIG_NET_DSA_TAG_QCA=mCONFIG_NET_DSA_TAG_RTL4_A=mCONFIG_NET_DSA_TAG_RTL8_4=mCONFIG_NET_DSA_TAG_RZN1_A5PSW=mCONFIG_NET_DSA_TAG_LAN9303=mCONFIG_NET_DSA_TAG_SJA1105=mCONFIG_NET_DSA_TAG_TRAILER=mCONFIG_NET_DSA_TAG_XRS700X=mCONFIG_VLAN_8021Q=mCONFIG_VLAN_8021Q_GVRP=yCONFIG_VLAN_8021Q_MVRP=yCONFIG_LLC=mCONFIG_LLC2=mCONFIG_ATALK=mCONFIG_DEV_APPLETALK=mCONFIG_IPDDP=mCONFIG_IPDDP_ENCAP=yCONFIG_X25=mCONFIG_LAPB=mCONFIG_PHONET=mCONFIG_6LOWPAN=mCONFIG_6LOWPAN_DEBUGFS=yCONFIG_6LOWPAN_NHC=mCONFIG_6LOWPAN_NHC_DEST=mCONFIG_6LOWPAN_NHC_FRAGMENT=mCONFIG_6LOWPAN_NHC_HOP=mCONFIG_6LOWPAN_NHC_IPV6=mCONFIG_6LOWPAN_NHC_MOBILITY=mCONFIG_6LOWPAN_NHC_ROUTING=mCONFIG_6LOWPAN_NHC_UDP=mCONFIG_6LOWPAN_GHC_EXT_HDR_HOP=mCONFIG_6LOWPAN_GHC_UDP=mCONFIG_6LOWPAN_GHC_ICMPV6=mCONFIG_6LOWPAN_GHC_EXT_HDR_DEST=mCONFIG_6LOWPAN_GHC_EXT_HDR_FRAG=mCONFIG_6LOWPAN_GHC_EXT_HDR_ROUTE=mCONFIG_IEEE802154=mCONFIG_IEEE802154_NL802154_EXPERIMENTAL=yCONFIG_IEEE802154_SOCKET=mCONFIG_IEEE802154_6LOWPAN=mCONFIG_MAC802154=mCONFIG_NET_SCHED=y
#
# Queueing/Scheduling
#CONFIG_NET_SCH_CBQ=mCONFIG_NET_SCH_HTB=mCONFIG_NET_SCH_HFSC=mCONFIG_NET_SCH_ATM=mCONFIG_NET_SCH_PRIO=mCONFIG_NET_SCH_MULTIQ=mCONFIG_NET_SCH_RED=mCONFIG_NET_SCH_SFB=mCONFIG_NET_SCH_SFQ=mCONFIG_NET_SCH_TEQL=mCONFIG_NET_SCH_TBF=mCONFIG_NET_SCH_CBS=mCONFIG_NET_SCH_ETF=mCONFIG_NET_SCH_TAPRIO=mCONFIG_NET_SCH_GRED=mCONFIG_NET_SCH_DSMARK=mCONFIG_NET_SCH_NETEM=mCONFIG_NET_SCH_DRR=mCONFIG_NET_SCH_MQPRIO=mCONFIG_NET_SCH_SKBPRIO=mCONFIG_NET_SCH_CHOKE=mCONFIG_NET_SCH_QFQ=mCONFIG_NET_SCH_CODEL=mCONFIG_NET_SCH_FQ_CODEL=mCONFIG_NET_SCH_CAKE=mCONFIG_NET_SCH_FQ=mCONFIG_NET_SCH_HHF=mCONFIG_NET_SCH_PIE=mCONFIG_NET_SCH_FQ_PIE=mCONFIG_NET_SCH_INGRESS=mCONFIG_NET_SCH_PLUG=mCONFIG_NET_SCH_ETS=mCONFIG_NET_SCH_DEFAULT=y
# CONFIG_DEFAULT_FQ is not set
# CONFIG_DEFAULT_CODEL is not set
# CONFIG_DEFAULT_FQ_CODEL is not set
# CONFIG_DEFAULT_FQ_PIE is not set
# CONFIG_DEFAULT_SFQ is not setCONFIG_DEFAULT_PFIFO_FAST=yCONFIG_DEFAULT_NET_SCH="pfifo_fast"
#
# Classification
#CONFIG_NET_CLS=yCONFIG_NET_CLS_BASIC=mCONFIG_NET_CLS_TCINDEX=mCONFIG_NET_CLS_ROUTE4=mCONFIG_NET_CLS_FW=mCONFIG_NET_CLS_U32=mCONFIG_CLS_U32_PERF=yCONFIG_CLS_U32_MARK=yCONFIG_NET_CLS_RSVP=mCONFIG_NET_CLS_RSVP6=mCONFIG_NET_CLS_FLOW=mCONFIG_NET_CLS_CGROUP=mCONFIG_NET_CLS_BPF=mCONFIG_NET_CLS_FLOWER=mCONFIG_NET_CLS_MATCHALL=mCONFIG_NET_EMATCH=yCONFIG_NET_EMATCH_STACK=32CONFIG_NET_EMATCH_CMP=mCONFIG_NET_EMATCH_NBYTE=mCONFIG_NET_EMATCH_U32=mCONFIG_NET_EMATCH_META=mCONFIG_NET_EMATCH_TEXT=mCONFIG_NET_EMATCH_CANID=mCONFIG_NET_EMATCH_IPSET=mCONFIG_NET_EMATCH_IPT=mCONFIG_NET_CLS_ACT=yCONFIG_NET_ACT_POLICE=mCONFIG_NET_ACT_GACT=mCONFIG_GACT_PROB=yCONFIG_NET_ACT_MIRRED=mCONFIG_NET_ACT_SAMPLE=mCONFIG_NET_ACT_IPT=mCONFIG_NET_ACT_NAT=mCONFIG_NET_ACT_PEDIT=mCONFIG_NET_ACT_SIMP=mCONFIG_NET_ACT_SKBEDIT=mCONFIG_NET_ACT_CSUM=mCONFIG_NET_ACT_MPLS=mCONFIG_NET_ACT_VLAN=mCONFIG_NET_ACT_BPF=mCONFIG_NET_ACT_CONNMARK=mCONFIG_NET_ACT_CTINFO=mCONFIG_NET_ACT_SKBMOD=mCONFIG_NET_ACT_IFE=mCONFIG_NET_ACT_TUNNEL_KEY=mCONFIG_NET_ACT_CT=mCONFIG_NET_ACT_GATE=mCONFIG_NET_IFE_SKBMARK=mCONFIG_NET_IFE_SKBPRIO=mCONFIG_NET_IFE_SKBTCINDEX=mCONFIG_NET_TC_SKB_EXT=yCONFIG_NET_SCH_FIFO=yCONFIG_DCB=yCONFIG_DNS_RESOLVER=mCONFIG_BATMAN_ADV=mCONFIG_BATMAN_ADV_BATMAN_V=yCONFIG_BATMAN_ADV_BLA=yCONFIG_BATMAN_ADV_DAT=yCONFIG_BATMAN_ADV_NC=yCONFIG_BATMAN_ADV_MCAST=yCONFIG_BATMAN_ADV_DEBUG=yCONFIG_BATMAN_ADV_TRACING=yCONFIG_OPENVSWITCH=mCONFIG_OPENVSWITCH_GRE=mCONFIG_OPENVSWITCH_VXLAN=mCONFIG_OPENVSWITCH_GENEVE=mCONFIG_VSOCKETS=mCONFIG_VSOCKETS_DIAG=mCONFIG_VSOCKETS_LOOPBACK=mCONFIG_VIRTIO_VSOCKETS=mCONFIG_VIRTIO_VSOCKETS_COMMON=mCONFIG_NETLINK_DIAG=mCONFIG_MPLS=yCONFIG_NET_MPLS_GSO=mCONFIG_MPLS_ROUTING=mCONFIG_MPLS_IPTUNNEL=mCONFIG_NET_NSH=mCONFIG_HSR=mCONFIG_NET_SWITCHDEV=yCONFIG_NET_L3_MASTER_DEV=yCONFIG_QRTR=mCONFIG_QRTR_SMD=mCONFIG_QRTR_TUN=mCONFIG_QRTR_MHI=mCONFIG_NET_NCSI=yCONFIG_NCSI_OEM_CMD_GET_MAC=yCONFIG_NCSI_OEM_CMD_KEEP_PHY=yCONFIG_PCPU_DEV_REFCNT=yCONFIG_RPS=yCONFIG_RFS_ACCEL=yCONFIG_SOCK_RX_QUEUE_MAPPING=yCONFIG_XPS=yCONFIG_HWBM=yCONFIG_CGROUP_NET_PRIO=yCONFIG_CGROUP_NET_CLASSID=yCONFIG_NET_RX_BUSY_POLL=yCONFIG_BQL=yCONFIG_BPF_STREAM_PARSER=yCONFIG_NET_FLOW_LIMIT=y
#
# Network testing
#CONFIG_NET_PKTGEN=mCONFIG_NET_DROP_MONITOR=m
# end of Network testing # end of Networking options
CONFIG_HAMRADIO=y
#
# Packet Radio protocols
#CONFIG_AX25=mCONFIG_AX25_DAMA_SLAVE=yCONFIG_NETROM=mCONFIG_ROSE=m
#
# AX.25 network device drivers
#CONFIG_MKISS=mCONFIG_6PACK=mCONFIG_BPQETHER=mCONFIG_BAYCOM_SER_FDX=mCONFIG_BAYCOM_SER_HDX=mCONFIG_BAYCOM_PAR=mCONFIG_BAYCOM_EPP=mCONFIG_YAM=m
# end of AX.25 network device drivers
CONFIG_CAN=mCONFIG_CAN_RAW=mCONFIG_CAN_BCM=mCONFIG_CAN_GW=mCONFIG_CAN_J1939=mCONFIG_CAN_ISOTP=mCONFIG_BT=mCONFIG_BT_BREDR=yCONFIG_BT_RFCOMM=mCONFIG_BT_RFCOMM_TTY=yCONFIG_BT_BNEP=mCONFIG_BT_BNEP_MC_FILTER=yCONFIG_BT_BNEP_PROTO_FILTER=yCONFIG_BT_CMTP=mCONFIG_BT_HIDP=mCONFIG_BT_HS=yCONFIG_BT_LE=yCONFIG_BT_6LOWPAN=mCONFIG_BT_LEDS=yCONFIG_BT_MSFTEXT=yCONFIG_BT_AOSPEXT=yCONFIG_BT_DEBUGFS=yCONFIG_BT_SELFTEST=yCONFIG_BT_SELFTEST_ECDH=yCONFIG_BT_SELFTEST_SMP=y
#
# Bluetooth device drivers
#CONFIG_BT_INTEL=mCONFIG_BT_BCM=mCONFIG_BT_RTL=mCONFIG_BT_QCA=mCONFIG_BT_MTK=mCONFIG_BT_HCIBTUSB=mCONFIG_BT_HCIBTUSB_AUTOSUSPEND=yCONFIG_BT_HCIBTUSB_BCM=yCONFIG_BT_HCIBTUSB_MTK=yCONFIG_BT_HCIBTUSB_RTL=yCONFIG_BT_HCIBTSDIO=mCONFIG_BT_HCIUART=mCONFIG_BT_HCIUART_SERDEV=yCONFIG_BT_HCIUART_H4=yCONFIG_BT_HCIUART_BCSP=yCONFIG_BT_HCIUART_ATH3K=yCONFIG_BT_HCIUART_LL=yCONFIG_BT_HCIUART_3WIRE=yCONFIG_BT_HCIUART_INTEL=yCONFIG_BT_HCIUART_BCM=yCONFIG_BT_HCIUART_QCA=yCONFIG_BT_HCIUART_AG6XX=yCONFIG_BT_HCIUART_MRVL=yCONFIG_BT_HCIBCM203X=mCONFIG_BT_HCIBPA10X=mCONFIG_BT_HCIBFUSB=mCONFIG_BT_HCIDTL1=mCONFIG_BT_HCIBT3C=mCONFIG_BT_HCIBLUECARD=mCONFIG_BT_HCIVHCI=mCONFIG_BT_MRVL=mCONFIG_BT_MRVL_SDIO=mCONFIG_BT_ATH3K=mCONFIG_BT_MTKSDIO=mCONFIG_BT_MTKUART=mCONFIG_BT_QCOMSMD=mCONFIG_BT_HCIRSI=mCONFIG_BT_VIRTIO=m
# end of Bluetooth device drivers
CONFIG_AF_RXRPC=mCONFIG_AF_RXRPC_IPV6=yCONFIG_AF_RXRPC_INJECT_LOSS=yCONFIG_AF_RXRPC_DEBUG=yCONFIG_RXKAD=yCONFIG_AF_KCM=mCONFIG_STREAM_PARSER=yCONFIG_MCTP=yCONFIG_MCTP_FLOWS=yCONFIG_FIB_RULES=yCONFIG_WIRELESS=yCONFIG_WIRELESS_EXT=yCONFIG_WEXT_CORE=yCONFIG_WEXT_PROC=yCONFIG_WEXT_SPY=yCONFIG_WEXT_PRIV=yCONFIG_CFG80211=mCONFIG_NL80211_TESTMODE=yCONFIG_CFG80211_DEVELOPER_WARNINGS=yCONFIG_CFG80211_CERTIFICATION_ONUS=yCONFIG_CFG80211_REQUIRE_SIGNED_REGDB=yCONFIG_CFG80211_USE_KERNEL_REGDB_KEYS=yCONFIG_CFG80211_EXTRA_REGDB_KEYDIR=""CONFIG_CFG80211_REG_CELLULAR_HINTS=yCONFIG_CFG80211_REG_RELAX_NO_IR=yCONFIG_CFG80211_DEFAULT_PS=yCONFIG_CFG80211_DEBUGFS=yCONFIG_CFG80211_CRDA_SUPPORT=yCONFIG_CFG80211_WEXT=yCONFIG_CFG80211_WEXT_EXPORT=yCONFIG_LIB80211=mCONFIG_LIB80211_CRYPT_WEP=mCONFIG_LIB80211_CRYPT_CCMP=mCONFIG_LIB80211_CRYPT_TKIP=mCONFIG_LIB80211_DEBUG=yCONFIG_MAC80211=mCONFIG_MAC80211_HAS_RC=yCONFIG_MAC80211_RC_MINSTREL=yCONFIG_MAC80211_RC_DEFAULT_MINSTREL=yCONFIG_MAC80211_RC_DEFAULT="minstrel_ht"CONFIG_MAC80211_MESH=yCONFIG_MAC80211_LEDS=yCONFIG_MAC80211_DEBUGFS=yCONFIG_MAC80211_MESSAGE_TRACING=yCONFIG_MAC80211_DEBUG_MENU=yCONFIG_MAC80211_NOINLINE=yCONFIG_MAC80211_VERBOSE_DEBUG=yCONFIG_MAC80211_MLME_DEBUG=yCONFIG_MAC80211_STA_DEBUG=yCONFIG_MAC80211_HT_DEBUG=yCONFIG_MAC80211_OCB_DEBUG=yCONFIG_MAC80211_IBSS_DEBUG=yCONFIG_MAC80211_PS_DEBUG=yCONFIG_MAC80211_MPL_DEBUG=yCONFIG_MAC80211_MPATH_DEBUG=yCONFIG_MAC80211_MHWMP_DEBUG=yCONFIG_MAC80211_MESH_SYNC_DEBUG=yCONFIG_MAC80211_MESH_CSA_DEBUG=yCONFIG_MAC80211_MESH_PS_DEBUG=yCONFIG_MAC80211_TDLS_DEBUG=yCONFIG_MAC80211_DEBUG_COUNTERS=yCONFIG_MAC80211_STA_HASH_MAX_SIZE=0CONFIG_RFKILL=mCONFIG_RFKILL_LEDS=yCONFIG_RFKILL_INPUT=yCONFIG_RFKILL_GPIO=mCONFIG_NET_9P=mCONFIG_NET_9P_FD=mCONFIG_NET_9P_VIRTIO=mCONFIG_NET_9P_RDMA=mCONFIG_NET_9P_DEBUG=yCONFIG_CAIF=mCONFIG_CAIF_DEBUG=yCONFIG_CAIF_NETDEV=mCONFIG_CAIF_USB=mCONFIG_CEPH_LIB=mCONFIG_CEPH_LIB_PRETTYDEBUG=yCONFIG_CEPH_LIB_USE_DNS_RESOLVER=yCONFIG_NFC=mCONFIG_NFC_DIGITAL=mCONFIG_NFC_NCI=mCONFIG_NFC_NCI_SPI=mCONFIG_NFC_NCI_UART=mCONFIG_NFC_HCI=mCONFIG_NFC_SHDLC=y
#
# Near Field Communication (NFC) devices
#CONFIG_NFC_TRF7970A=mCONFIG_NFC_SIM=mCONFIG_NFC_PORT100=mCONFIG_NFC_VIRTUAL_NCI=mCONFIG_NFC_FDP=mCONFIG_NFC_FDP_I2C=mCONFIG_NFC_PN544=mCONFIG_NFC_PN544_I2C=mCONFIG_NFC_PN533=mCONFIG_NFC_PN533_USB=mCONFIG_NFC_PN533_I2C=mCONFIG_NFC_PN532_UART=mCONFIG_NFC_MICROREAD=mCONFIG_NFC_MICROREAD_I2C=mCONFIG_NFC_MRVL=mCONFIG_NFC_MRVL_USB=mCONFIG_NFC_MRVL_UART=mCONFIG_NFC_MRVL_I2C=mCONFIG_NFC_MRVL_SPI=mCONFIG_NFC_ST21NFCA=mCONFIG_NFC_ST21NFCA_I2C=mCONFIG_NFC_ST_NCI=mCONFIG_NFC_ST_NCI_I2C=mCONFIG_NFC_ST_NCI_SPI=mCONFIG_NFC_NXP_NCI=mCONFIG_NFC_NXP_NCI_I2C=mCONFIG_NFC_S3FWRN5=mCONFIG_NFC_S3FWRN5_I2C=mCONFIG_NFC_S3FWRN82_UART=mCONFIG_NFC_ST95HF=m
# end of Near Field Communication (NFC) devices
CONFIG_PSAMPLE=mCONFIG_NET_IFE=mCONFIG_LWTUNNEL=yCONFIG_LWTUNNEL_BPF=yCONFIG_DST_CACHE=yCONFIG_GRO_CELLS=yCONFIG_SOCK_VALIDATE_XMIT=yCONFIG_NET_SELFTESTS=mCONFIG_NET_SOCK_MSG=yCONFIG_NET_DEVLINK=yCONFIG_PAGE_POOL=yCONFIG_PAGE_POOL_STATS=yCONFIG_FAILOVER=mCONFIG_ETHTOOL_NETLINK=yCONFIG_NETDEV_ADDR_LIST_TEST=m
#
# Device Drivers
#CONFIG_PCCARD=mCONFIG_PCMCIA=mCONFIG_PCMCIA_LOAD_CIS=y
#
# PC-card bridges
#
#
# Generic Driver Options
#CONFIG_AUXILIARY_BUS=yCONFIG_UEVENT_HELPER=yCONFIG_UEVENT_HELPER_PATH=""CONFIG_DEVTMPFS=yCONFIG_DEVTMPFS_MOUNT=yCONFIG_DEVTMPFS_SAFE=yCONFIG_STANDALONE=yCONFIG_PREVENT_FIRMWARE_BUILD=y
#
# Firmware loader
#CONFIG_FW_LOADER=yCONFIG_FW_LOADER_PAGED_BUF=yCONFIG_FW_LOADER_SYSFS=yCONFIG_EXTRA_FIRMWARE=""CONFIG_FW_LOADER_USER_HELPER=yCONFIG_FW_LOADER_USER_HELPER_FALLBACK=yCONFIG_FW_LOADER_COMPRESS=yCONFIG_FW_LOADER_COMPRESS_XZ=yCONFIG_FW_LOADER_COMPRESS_ZSTD=yCONFIG_FW_UPLOAD=y
# end of Firmware loader
CONFIG_WANT_DEV_COREDUMP=yCONFIG_ALLOW_DEV_COREDUMP=yCONFIG_DEV_COREDUMP=yCONFIG_DEBUG_DRIVER=yCONFIG_DEBUG_DEVRES=yCONFIG_DEBUG_TEST_DRIVER_REMOVE=yCONFIG_TEST_ASYNC_DRIVER_PROBE=mCONFIG_GENERIC_CPU_DEVICES=yCONFIG_SOC_BUS=yCONFIG_REGMAP=yCONFIG_REGMAP_AC97=mCONFIG_REGMAP_I2C=mCONFIG_REGMAP_SLIMBUS=mCONFIG_REGMAP_SPI=yCONFIG_REGMAP_SPMI=mCONFIG_REGMAP_W1=mCONFIG_REGMAP_MMIO=yCONFIG_REGMAP_IRQ=yCONFIG_REGMAP_SOUNDWIRE=mCONFIG_REGMAP_SOUNDWIRE_MBQ=mCONFIG_REGMAP_SCCB=mCONFIG_REGMAP_I3C=mCONFIG_REGMAP_SPI_AVMM=mCONFIG_DMA_SHARED_BUFFER=yCONFIG_DMA_FENCE_TRACE=y
# end of Generic Driver Options
#
# Bus devices
#CONFIG_ARM_INTEGRATOR_LM=yCONFIG_BT1_APB=yCONFIG_BT1_AXI=yCONFIG_MOXTET=mCONFIG_INTEL_IXP4XX_EB=yCONFIG_QCOM_EBI2=yCONFIG_MHI_BUS=mCONFIG_MHI_BUS_DEBUG=yCONFIG_MHI_BUS_EP=m
# end of Bus devices
CONFIG_CONNECTOR=m
#
# Firmware Drivers
#
#
# ARM System Control and Management Interface Protocol #CONFIG_ARM_SCMI_PROTOCOL=m CONFIG_ARM_SCMI_HAVE_TRANSPORT=y CONFIG_ARM_SCMI_HAVE_SHMEM=y CONFIG_ARM_SCMI_HAVE_MSG=y CONFIG_ARM_SCMI_TRANSPORT_MAILBOX=y CONFIG_ARM_SCMI_TRANSPORT_VIRTIO=y CONFIG_ARM_SCMI_TRANSPORT_VIRTIO_VERSION1_COMPLIANCE=y CONFIG_ARM_SCMI_TRANSPORT_VIRTIO_ATOMIC_ENABLE=y CONFIG_ARM_SCMI_POWER_DOMAIN=m CONFIG_ARM_SCMI_POWER_CONTROL=m
# end of ARM System Control and Management Interface Protocol
CONFIG_ARM_SCPI_PROTOCOL=mCONFIG_ARM_SCPI_POWER_DOMAIN=mCONFIG_FIRMWARE_MEMMAP=yCONFIG_MTK_ADSP_IPC=mCONFIG_QCOM_SCM=mCONFIG_QCOM_SCM_DOWNLOAD_MODE_DEFAULT=yCONFIG_TURRIS_MOX_RWTM=mCONFIG_BCM47XX_NVRAM=yCONFIG_BCM47XX_SPROM=yCONFIG_TEE_BNXT_FW=mCONFIG_CS_DSP=mCONFIG_GOOGLE_FIRMWARE=yCONFIG_GOOGLE_COREBOOT_TABLE=mCONFIG_GOOGLE_MEMCONSOLE=mCONFIG_GOOGLE_FRAMEBUFFER_COREBOOT=mCONFIG_GOOGLE_MEMCONSOLE_COREBOOT=mCONFIG_GOOGLE_VPD=mCONFIG_IMX_DSP=mCONFIG_IMX_SCU=yCONFIG_IMX_SCU_PD=y
#
# Tegra firmware driver
#
# end of Tegra firmware driver # end of Firmware Drivers
CONFIG_GNSS=mCONFIG_GNSS_SERIAL=mCONFIG_GNSS_MTK_SERIAL=mCONFIG_GNSS_SIRF_SERIAL=mCONFIG_GNSS_UBX_SERIAL=mCONFIG_GNSS_USB=mCONFIG_MTD=mCONFIG_MTD_TESTS=m
#
# Partition parsers
#CONFIG_MTD_AR7_PARTS=mCONFIG_MTD_BCM63XX_PARTS=yCONFIG_MTD_BRCM_U_BOOT=mCONFIG_MTD_CMDLINE_PARTS=mCONFIG_MTD_OF_PARTS=mCONFIG_MTD_OF_PARTS_BCM4908=yCONFIG_MTD_OF_PARTS_LINKSYS_NS=yCONFIG_MTD_PARSER_IMAGETAG=mCONFIG_MTD_PARSER_TRX=mCONFIG_MTD_SHARPSL_PARTS=mCONFIG_MTD_REDBOOT_PARTS=mCONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED=yCONFIG_MTD_REDBOOT_PARTS_READONLY=yCONFIG_MTD_QCOMSMEM_PARTS=m
# end of Partition parsers
#
# User Modules And Translation Layers
#CONFIG_MTD_BLKDEVS=mCONFIG_MTD_BLOCK=mCONFIG_MTD_BLOCK_RO=m
#
# Note that in some cases UBI block is preferred. See MTD_UBI_BLOCK. #CONFIG_FTL=mCONFIG_NFTL=mCONFIG_NFTL_RW=yCONFIG_INFTL=mCONFIG_RFD_FTL=mCONFIG_SSFDC=mCONFIG_SM_FTL=mCONFIG_MTD_OOPS=mCONFIG_MTD_PSTORE=mCONFIG_MTD_SWAP=mCONFIG_MTD_PARTITIONED_MASTER=y
#
# RAM/ROM/Flash chip drivers
#CONFIG_MTD_CFI=mCONFIG_MTD_JEDECPROBE=mCONFIG_MTD_GEN_PROBE=mCONFIG_MTD_CFI_ADV_OPTIONS=yCONFIG_MTD_CFI_NOSWAP=y
# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
# CONFIG_MTD_CFI_LE_BYTE_SWAP is not setCONFIG_MTD_CFI_GEOMETRY=yCONFIG_MTD_MAP_BANK_WIDTH_1=yCONFIG_MTD_MAP_BANK_WIDTH_2=yCONFIG_MTD_MAP_BANK_WIDTH_4=yCONFIG_MTD_MAP_BANK_WIDTH_8=yCONFIG_MTD_MAP_BANK_WIDTH_16=yCONFIG_MTD_MAP_BANK_WIDTH_32=yCONFIG_MTD_CFI_I1=yCONFIG_MTD_CFI_I2=yCONFIG_MTD_CFI_I4=yCONFIG_MTD_CFI_I8=yCONFIG_MTD_OTP=yCONFIG_MTD_CFI_INTELEXT=mCONFIG_MTD_CFI_AMDSTD=mCONFIG_MTD_CFI_STAA=mCONFIG_MTD_CFI_UTIL=mCONFIG_MTD_RAM=mCONFIG_MTD_ROM=mCONFIG_MTD_ABSENT=m
# end of RAM/ROM/Flash chip drivers
#
# Mapping drivers for chip access
#CONFIG_MTD_COMPLEX_MAPPINGS=yCONFIG_MTD_PHYSMAP=mCONFIG_MTD_PHYSMAP_COMPAT=yCONFIG_MTD_PHYSMAP_START=0x8000000CONFIG_MTD_PHYSMAP_LEN=0CONFIG_MTD_PHYSMAP_BANKWIDTH=2CONFIG_MTD_PHYSMAP_OF=yCONFIG_MTD_PHYSMAP_BT1_ROM=yCONFIG_MTD_PHYSMAP_VERSATILE=yCONFIG_MTD_PHYSMAP_GEMINI=yCONFIG_MTD_PHYSMAP_GPIO_ADDR=yCONFIG_MTD_SC520CDP=mCONFIG_MTD_NETSC520=mCONFIG_MTD_TS5500=mCONFIG_MTD_PCMCIA=mCONFIG_MTD_PCMCIA_ANONYMOUS=yCONFIG_MTD_PLATRAM=m
# end of Mapping drivers for chip access
#
# Self-contained MTD device drivers
#CONFIG_MTD_DATAFLASH=mCONFIG_MTD_DATAFLASH_WRITE_VERIFY=yCONFIG_MTD_DATAFLASH_OTP=yCONFIG_MTD_MCHP23K256=mCONFIG_MTD_MCHP48L640=mCONFIG_MTD_SPEAR_SMI=mCONFIG_MTD_SST25L=mCONFIG_MTD_SLRAM=mCONFIG_MTD_PHRAM=mCONFIG_MTD_MTDRAM=mCONFIG_MTDRAM_TOTAL_SIZE=4096CONFIG_MTDRAM_ERASE_SIZE=128CONFIG_MTD_BLOCK2MTD=m
#
# Disk-On-Chip Device Drivers
#CONFIG_MTD_DOCG3=mCONFIG_BCH_CONST_M=14CONFIG_BCH_CONST_T=4
# end of Self-contained MTD device drivers
#
# NAND
#CONFIG_MTD_NAND_CORE=mCONFIG_MTD_ONENAND=mCONFIG_MTD_ONENAND_VERIFY_WRITE=yCONFIG_MTD_ONENAND_GENERIC=mCONFIG_MTD_ONENAND_SAMSUNG=mCONFIG_MTD_ONENAND_OTP=yCONFIG_MTD_ONENAND_2X_PROGRAM=yCONFIG_MTD_RAW_NAND=m
#
# Raw/parallel NAND flash controllers
#CONFIG_MTD_NAND_DENALI=mCONFIG_MTD_NAND_DENALI_DT=mCONFIG_MTD_NAND_AMS_DELTA=mCONFIG_MTD_NAND_OMAP2=mCONFIG_MTD_NAND_OMAP_BCH=yCONFIG_MTD_NAND_OMAP_BCH_BUILD=mCONFIG_MTD_NAND_SHARPSL=mCONFIG_MTD_NAND_ATMEL=mCONFIG_MTD_NAND_MARVELL=mCONFIG_MTD_NAND_SLC_LPC32XX=mCONFIG_MTD_NAND_MLC_LPC32XX=mCONFIG_MTD_NAND_BRCMNAND=mCONFIG_MTD_NAND_BRCMNAND_BCM63XX=mCONFIG_MTD_NAND_BRCMNAND_BCMA=mCONFIG_MTD_NAND_BRCMNAND_BCMBCA=mCONFIG_MTD_NAND_BRCMNAND_BRCMSTB=mCONFIG_MTD_NAND_BRCMNAND_IPROC=mCONFIG_MTD_NAND_BCM47XXNFLASH=mCONFIG_MTD_NAND_OXNAS=mCONFIG_MTD_NAND_GPMI_NAND=mCONFIG_MTD_NAND_FSL_IFC=mCONFIG_MTD_NAND_VF610_NFC=mCONFIG_MTD_NAND_MXC=mCONFIG_MTD_NAND_SH_FLCTL=mCONFIG_MTD_NAND_DAVINCI=mCONFIG_MTD_NAND_TXX9NDFMC=mCONFIG_MTD_NAND_JZ4780=mCONFIG_MTD_NAND_INGENIC_ECC=yCONFIG_MTD_NAND_JZ4740_ECC=mCONFIG_MTD_NAND_JZ4725B_BCH=mCONFIG_MTD_NAND_JZ4780_BCH=mCONFIG_MTD_NAND_FSMC=mCONFIG_MTD_NAND_SUNXI=mCONFIG_MTD_NAND_HISI504=mCONFIG_MTD_NAND_QCOM=mCONFIG_MTD_NAND_MTK=mCONFIG_MTD_NAND_MXIC=mCONFIG_MTD_NAND_TEGRA=mCONFIG_MTD_NAND_STM32_FMC2=mCONFIG_MTD_NAND_MESON=mCONFIG_MTD_NAND_GPIO=mCONFIG_MTD_NAND_PLATFORM=mCONFIG_MTD_NAND_CADENCE=mCONFIG_MTD_NAND_ARASAN=mCONFIG_MTD_NAND_INTEL_LGM=mCONFIG_MTD_NAND_RENESAS=m
#
# Misc
#CONFIG_MTD_NAND_NANDSIM=mCONFIG_MTD_NAND_DISKONCHIP=mCONFIG_MTD_NAND_DISKONCHIP_PROBE_ADVANCED=yCONFIG_MTD_NAND_DISKONCHIP_PROBE_ADDRESS=0CONFIG_MTD_NAND_DISKONCHIP_PROBE_HIGH=yCONFIG_MTD_NAND_DISKONCHIP_BBTWRITE=yCONFIG_MTD_SPI_NAND=m
#
# ECC engine support
#CONFIG_MTD_NAND_ECC=yCONFIG_MTD_NAND_ECC_SW_HAMMING=yCONFIG_MTD_NAND_ECC_SW_HAMMING_SMC=yCONFIG_MTD_NAND_ECC_SW_BCH=yCONFIG_MTD_NAND_ECC_MXIC=yCONFIG_MTD_NAND_ECC_MEDIATEK=m
# end of ECC engine support # end of NAND
#
# LPDDR & LPDDR2 PCM memory drivers
#CONFIG_MTD_LPDDR=mCONFIG_MTD_QINFO_PROBE=m
# end of LPDDR & LPDDR2 PCM memory drivers
CONFIG_MTD_SPI_NOR=mCONFIG_MTD_SPI_NOR_USE_4K_SECTORS=y
# CONFIG_MTD_SPI_NOR_SWP_DISABLE is not setCONFIG_MTD_SPI_NOR_SWP_DISABLE_ON_VOLATILE=y
# CONFIG_MTD_SPI_NOR_SWP_KEEP is not setCONFIG_SPI_HISI_SFC=mCONFIG_SPI_NXP_SPIFI=mCONFIG_MTD_UBI=mCONFIG_MTD_UBI_WL_THRESHOLD=4096CONFIG_MTD_UBI_BEB_LIMIT=20CONFIG_MTD_UBI_FASTMAP=yCONFIG_MTD_UBI_GLUEBI=mCONFIG_MTD_UBI_BLOCK=yCONFIG_MTD_HYPERBUS=mCONFIG_HBMC_AM654=mCONFIG_DTC=yCONFIG_OF=yCONFIG_OF_UNITTEST=yCONFIG_OF_ALL_DTBS=yCONFIG_OF_FLATTREE=yCONFIG_OF_EARLY_FLATTREE=yCONFIG_OF_KOBJ=yCONFIG_OF_DYNAMIC=yCONFIG_OF_ADDRESS=yCONFIG_OF_IRQ=yCONFIG_OF_RESERVED_MEM=yCONFIG_OF_RESOLVE=yCONFIG_OF_OVERLAY=yCONFIG_PARPORT=mCONFIG_PARPORT_AX88796=mCONFIG_PARPORT_1284=yCONFIG_PARPORT_NOT_PC=yCONFIG_BLK_DEV=yCONFIG_BLK_DEV_NULL_BLK=mCONFIG_BLK_DEV_NULL_BLK_FAULT_INJECTION=yCONFIG_CDROM=mCONFIG_ZRAM=mCONFIG_ZRAM_DEF_COMP_LZORLE=y
# CONFIG_ZRAM_DEF_COMP_ZSTD is not set
# CONFIG_ZRAM_DEF_COMP_LZ4 is not set
# CONFIG_ZRAM_DEF_COMP_LZO is not set
# CONFIG_ZRAM_DEF_COMP_LZ4HC is not set
# CONFIG_ZRAM_DEF_COMP_842 is not setCONFIG_ZRAM_DEF_COMP="lzo-rle"CONFIG_ZRAM_WRITEBACK=yCONFIG_ZRAM_MEMORY_TRACKING=yCONFIG_BLK_DEV_LOOP=mCONFIG_BLK_DEV_LOOP_MIN_COUNT=8CONFIG_BLK_DEV_DRBD=mCONFIG_DRBD_FAULT_INJECTION=yCONFIG_BLK_DEV_NBD=mCONFIG_BLK_DEV_RAM=mCONFIG_BLK_DEV_RAM_COUNT=16CONFIG_BLK_DEV_RAM_SIZE=4096
# CONFIG_CDROM_PKTCDVD is not setCONFIG_ATA_OVER_ETH=mCONFIG_VIRTIO_BLK=mCONFIG_BLK_DEV_RBD=mCONFIG_BLK_DEV_UBLK=mCONFIG_BLK_DEV_RNBD=yCONFIG_BLK_DEV_RNBD_CLIENT=mCONFIG_BLK_DEV_RNBD_SERVER=m
#
# NVME Support
#CONFIG_NVME_COMMON=mCONFIG_NVME_CORE=mCONFIG_NVME_MULTIPATH=yCONFIG_NVME_VERBOSE_ERRORS=yCONFIG_NVME_HWMON=yCONFIG_NVME_FABRICS=mCONFIG_NVME_RDMA=mCONFIG_NVME_FC=mCONFIG_NVME_TCP=mCONFIG_NVME_AUTH=yCONFIG_NVME_APPLE=mCONFIG_NVME_TARGET=mCONFIG_NVME_TARGET_PASSTHRU=yCONFIG_NVME_TARGET_LOOP=mCONFIG_NVME_TARGET_RDMA=mCONFIG_NVME_TARGET_FC=mCONFIG_NVME_TARGET_FCLOOP=mCONFIG_NVME_TARGET_TCP=mCONFIG_NVME_TARGET_AUTH=y
# end of NVME Support
#
# Misc devices
#CONFIG_SENSORS_LIS3LV02D=mCONFIG_AD525X_DPOT=mCONFIG_AD525X_DPOT_I2C=mCONFIG_AD525X_DPOT_SPI=mCONFIG_DUMMY_IRQ=mCONFIG_ICS932S401=mCONFIG_ATMEL_SSC=mCONFIG_ENCLOSURE_SERVICES=mCONFIG_GEHC_ACHC=mCONFIG_HI6421V600_IRQ=mCONFIG_QCOM_COINCELL=mCONFIG_QCOM_FASTRPC=mCONFIG_APDS9802ALS=mCONFIG_ISL29003=mCONFIG_ISL29020=mCONFIG_SENSORS_TSL2550=mCONFIG_SENSORS_BH1770=mCONFIG_SENSORS_APDS990X=mCONFIG_HMC6352=mCONFIG_DS1682=mCONFIG_LATTICE_ECP3_CONFIG=mCONFIG_SRAM=yCONFIG_XILINX_SDFEC=mCONFIG_MISC_RTSX=mCONFIG_HISI_HIKEY_USB=mCONFIG_OPEN_DICE=mCONFIG_VCPU_STALL_DETECTOR=mCONFIG_C2PORT=m
#
# EEPROM support
#CONFIG_EEPROM_AT24=mCONFIG_EEPROM_AT25=mCONFIG_EEPROM_LEGACY=mCONFIG_EEPROM_MAX6875=mCONFIG_EEPROM_93CX6=mCONFIG_EEPROM_93XX46=mCONFIG_EEPROM_IDT_89HPESX=mCONFIG_EEPROM_EE1004=m
# end of EEPROM support
#
# Texas Instruments shared transport line discipline #CONFIG_TI_ST=m
# end of Texas Instruments shared transport line discipline
CONFIG_SENSORS_LIS3_SPI=mCONFIG_SENSORS_LIS3_I2C=m
#
# Altera FPGA firmware download module (requires I2C) #CONFIG_ALTERA_STAPL=mCONFIG_ECHO=mCONFIG_MISC_RTSX_USB=mCONFIG_UACCE=mCONFIG_PVPANIC=yCONFIG_PVPANIC_MMIO=m
# end of Misc devices
#
# SCSI device support
#CONFIG_SCSI_MOD=mCONFIG_RAID_ATTRS=mCONFIG_SCSI_COMMON=mCONFIG_SCSI=mCONFIG_SCSI_DMA=yCONFIG_SCSI_NETLINK=yCONFIG_SCSI_PROC_FS=y
#
# SCSI support type (disk, tape, CD-ROM)
#CONFIG_BLK_DEV_SD=mCONFIG_CHR_DEV_ST=mCONFIG_BLK_DEV_SR=mCONFIG_CHR_DEV_SG=mCONFIG_BLK_DEV_BSG=yCONFIG_CHR_DEV_SCH=mCONFIG_SCSI_ENCLOSURE=mCONFIG_SCSI_CONSTANTS=yCONFIG_SCSI_LOGGING=yCONFIG_SCSI_SCAN_ASYNC=y
#
# SCSI Transports
#CONFIG_SCSI_SPI_ATTRS=mCONFIG_SCSI_FC_ATTRS=mCONFIG_SCSI_ISCSI_ATTRS=mCONFIG_SCSI_SAS_ATTRS=mCONFIG_SCSI_SAS_LIBSAS=mCONFIG_SCSI_SAS_ATA=yCONFIG_SCSI_SAS_HOST_SMP=yCONFIG_SCSI_SRP_ATTRS=m
# end of SCSI Transports
CONFIG_SCSI_LOWLEVEL=yCONFIG_ISCSI_TCP=mCONFIG_ISCSI_BOOT_SYSFS=mCONFIG_SCSI_HISI_SAS=mCONFIG_SCSI_HISI_SAS_DEBUGFS_DEFAULT_ENABLE=yCONFIG_LIBFC=mCONFIG_LIBFCOE=mCONFIG_SCSI_FDOMAIN=mCONFIG_SCSI_DEBUG=mCONFIG_SCSI_VIRTIO=mCONFIG_SCSI_LOWLEVEL_PCMCIA=yCONFIG_PCMCIA_AHA152X=mCONFIG_PCMCIA_FDOMAIN=mCONFIG_PCMCIA_NINJA_SCSI=mCONFIG_PCMCIA_QLOGIC=mCONFIG_PCMCIA_SYM53C500=mCONFIG_SCSI_DH=yCONFIG_SCSI_DH_RDAC=mCONFIG_SCSI_DH_HP_SW=mCONFIG_SCSI_DH_EMC=mCONFIG_SCSI_DH_ALUA=m
# end of SCSI device support
CONFIG_ATA=mCONFIG_SATA_HOST=yCONFIG_PATA_TIMINGS=yCONFIG_ATA_VERBOSE_ERROR=yCONFIG_ATA_FORCE=yCONFIG_SATA_PMP=y
#
# Controllers with non-SFF native interface
#CONFIG_SATA_AHCI_PLATFORM=mCONFIG_AHCI_BRCM=mCONFIG_AHCI_DA850=mCONFIG_AHCI_DM816=mCONFIG_AHCI_DWC=mCONFIG_AHCI_ST=mCONFIG_AHCI_IMX=mCONFIG_AHCI_CEVA=mCONFIG_AHCI_MTK=mCONFIG_AHCI_MVEBU=mCONFIG_AHCI_SUNXI=mCONFIG_AHCI_TEGRA=mCONFIG_AHCI_XGENE=mCONFIG_AHCI_QORIQ=mCONFIG_SATA_FSL=mCONFIG_SATA_GEMINI=mCONFIG_SATA_AHCI_SEATTLE=mCONFIG_ATA_SFF=y
#
# SFF controllers with custom DMA interface
#CONFIG_ATA_BMDMA=y
#
# SATA SFF controllers with BMDMA
#CONFIG_SATA_DWC=mCONFIG_SATA_DWC_OLD_DMA=yCONFIG_SATA_HIGHBANK=mCONFIG_SATA_MV=mCONFIG_SATA_RCAR=m
#
# PATA SFF controllers with BMDMA
#CONFIG_PATA_ARASAN_CF=m
# CONFIG_PATA_BK3710 is not setCONFIG_PATA_FTIDE010=mCONFIG_PATA_IMX=mCONFIG_PATA_PXA=m
#
# PIO-only SFF controllers
#CONFIG_PATA_IXP4XX_CF=mCONFIG_PATA_PCMCIA=mCONFIG_PATA_PLATFORM=mCONFIG_PATA_OF_PLATFORM=mCONFIG_PATA_SAMSUNG_CF=m
#
# Generic fallback / legacy drivers
#CONFIG_MD=yCONFIG_BLK_DEV_MD=mCONFIG_MD_LINEAR=mCONFIG_MD_RAID0=mCONFIG_MD_RAID1=mCONFIG_MD_RAID10=mCONFIG_MD_RAID456=mCONFIG_MD_MULTIPATH=mCONFIG_MD_FAULTY=mCONFIG_MD_CLUSTER=mCONFIG_BCACHE=mCONFIG_BCACHE_DEBUG=y CONFIG_BCACHE_CLOSURES_DEBUG=y CONFIG_BCACHE_ASYNC_REGISTRATION=y CONFIG_BLK_DEV_DM_BUILTIN=yCONFIG_BLK_DEV_DM=mCONFIG_DM_DEBUG=yCONFIG_DM_BUFIO=m CONFIG_DM_DEBUG_BLOCK_MANAGER_LOCKING=y CONFIG_DM_DEBUG_BLOCK_STACK_TRACING=y CONFIG_DM_BIO_PRISON=m CONFIG_DM_PERSISTENT_DATA=m CONFIG_DM_UNSTRIPED=mCONFIG_DM_CRYPT=mCONFIG_DM_SNAPSHOT=m CONFIG_DM_THIN_PROVISIONING=mCONFIG_DM_CACHE=mCONFIG_DM_CACHE_SMQ=mCONFIG_DM_WRITECACHE=mCONFIG_DM_EBS=mCONFIG_DM_ERA=mCONFIG_DM_CLONE=mCONFIG_DM_MIRROR=mCONFIG_DM_LOG_USERSPACE=mCONFIG_DM_RAID=mCONFIG_DM_ZERO=mCONFIG_DM_MULTIPATH=mCONFIG_DM_MULTIPATH_QL=m CONFIG_DM_MULTIPATH_ST=m CONFIG_DM_MULTIPATH_HST=m CONFIG_DM_MULTIPATH_IOA=mCONFIG_DM_DELAY=mCONFIG_DM_DUST=mCONFIG_DM_UEVENT=yCONFIG_DM_FLAKEY=mCONFIG_DM_VERITY=m CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG=y CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG_SECONDARY_KEYRING=y CONFIG_DM_VERITY_FEC=yCONFIG_DM_SWITCH=mCONFIG_DM_LOG_WRITES=mCONFIG_DM_INTEGRITY=mCONFIG_DM_ZONED=mCONFIG_DM_AUDIT=yCONFIG_TARGET_CORE=mCONFIG_TCM_IBLOCK=mCONFIG_TCM_FILEIO=mCONFIG_TCM_PSCSI=mCONFIG_TCM_USER2=mCONFIG_LOOPBACK_TARGET=mCONFIG_TCM_FC=mCONFIG_ISCSI_TARGET=mCONFIG_SBP_TARGET=m
#
# IEEE 1394 (FireWire) support
#CONFIG_FIREWIRE=mCONFIG_FIREWIRE_SBP2=mCONFIG_FIREWIRE_NET=m
# end of IEEE 1394 (FireWire) support
CONFIG_NETDEVICES=yCONFIG_MII=mCONFIG_NET_CORE=yCONFIG_BONDING=mCONFIG_DUMMY=mCONFIG_WIREGUARD=mCONFIG_WIREGUARD_DEBUG=yCONFIG_EQUALIZER=mCONFIG_IFB=mCONFIG_NET_TEAM=mCONFIG_NET_TEAM_MODE_BROADCAST=mCONFIG_NET_TEAM_MODE_ROUNDROBIN=mCONFIG_NET_TEAM_MODE_RANDOM=mCONFIG_NET_TEAM_MODE_ACTIVEBACKUP=mCONFIG_NET_TEAM_MODE_LOADBALANCE=mCONFIG_MACVLAN=mCONFIG_MACVTAP=mCONFIG_IPVLAN_L3S=yCONFIG_IPVLAN=mCONFIG_IPVTAP=mCONFIG_VXLAN=mCONFIG_GENEVE=mCONFIG_BAREUDP=mCONFIG_GTP=mCONFIG_AMT=mCONFIG_MACSEC=mCONFIG_NETCONSOLE=mCONFIG_NETCONSOLE_DYNAMIC=yCONFIG_NETPOLL=yCONFIG_NET_POLL_CONTROLLER=yCONFIG_TUN=mCONFIG_TAP=mCONFIG_TUN_VNET_CROSS_LE=yCONFIG_VETH=mCONFIG_VIRTIO_NET=mCONFIG_NLMON=mCONFIG_NET_VRF=mCONFIG_VSOCKMON=mCONFIG_MHI_NET=mCONFIG_ARCNET=mCONFIG_ARCNET_1201=mCONFIG_ARCNET_1051=mCONFIG_ARCNET_RAW=mCONFIG_ARCNET_CAP=m
CONFIG_ARCNET_COM90xx=m
CONFIG_ARCNET_COM90xxIO=mCONFIG_ARCNET_RIM_I=mCONFIG_ARCNET_COM20020=mCONFIG_ARCNET_COM20020_CS=mCONFIG_ATM_DRIVERS=yCONFIG_ATM_DUMMY=mCONFIG_ATM_TCP=mCONFIG_CAIF_DRIVERS=yCONFIG_CAIF_TTY=mCONFIG_CAIF_VIRTIO=m
#
# Distributed Switch Architecture drivers
#CONFIG_B53=mCONFIG_B53_SPI_DRIVER=mCONFIG_B53_MDIO_DRIVER=mCONFIG_B53_MMAP_DRIVER=mCONFIG_B53_SRAB_DRIVER=mCONFIG_B53_SERDES=mCONFIG_NET_DSA_BCM_SF2=mCONFIG_NET_DSA_LOOP=mCONFIG_NET_DSA_HIRSCHMANN_HELLCREEK=mCONFIG_NET_DSA_LANTIQ_GSWIP=mCONFIG_NET_DSA_MT7530=mCONFIG_NET_DSA_MV88E6060=mCONFIG_NET_DSA_MICROCHIP_KSZ_COMMON=mCONFIG_NET_DSA_MICROCHIP_KSZ9477_I2C=mCONFIG_NET_DSA_MICROCHIP_KSZ_SPI=mCONFIG_NET_DSA_MICROCHIP_KSZ8863_SMI=mCONFIG_NET_DSA_MV88E6XXX=mCONFIG_NET_DSA_MV88E6XXX_PTP=yCONFIG_NET_DSA_MSCC_SEVILLE=mCONFIG_NET_DSA_AR9331=mCONFIG_NET_DSA_QCA8K=mCONFIG_NET_DSA_SJA1105=mCONFIG_NET_DSA_SJA1105_PTP=yCONFIG_NET_DSA_SJA1105_TAS=yCONFIG_NET_DSA_SJA1105_VL=yCONFIG_NET_DSA_XRS700X=mCONFIG_NET_DSA_XRS700X_I2C=mCONFIG_NET_DSA_XRS700X_MDIO=mCONFIG_NET_DSA_REALTEK=mCONFIG_NET_DSA_REALTEK_MDIO=mCONFIG_NET_DSA_REALTEK_SMI=mCONFIG_NET_DSA_REALTEK_RTL8365MB=mCONFIG_NET_DSA_REALTEK_RTL8366RB=mCONFIG_NET_DSA_SMSC_LAN9303=mCONFIG_NET_DSA_SMSC_LAN9303_I2C=mCONFIG_NET_DSA_SMSC_LAN9303_MDIO=mCONFIG_NET_DSA_VITESSE_VSC73XX=mCONFIG_NET_DSA_VITESSE_VSC73XX_SPI=mCONFIG_NET_DSA_VITESSE_VSC73XX_PLATFORM=m
# end of Distributed Switch Architecture drivers
CONFIG_ETHERNET=yCONFIG_MDIO=mCONFIG_NET_VENDOR_3COM=yCONFIG_PCMCIA_3C574=mCONFIG_PCMCIA_3C589=mCONFIG_NET_VENDOR_ACTIONS=yCONFIG_OWL_EMAC=mCONFIG_NET_VENDOR_ALACRITECH=yCONFIG_ALTERA_TSE=mCONFIG_NET_VENDOR_AMAZON=yCONFIG_NET_VENDOR_AMD=yCONFIG_PCMCIA_NMCLAN=mCONFIG_AMD_XGBE=mCONFIG_AMD_XGBE_DCB=yCONFIG_NET_XGENE=mCONFIG_NET_XGENE_V2=mCONFIG_NET_VENDOR_AQUANTIA=yCONFIG_NET_VENDOR_ARC=yCONFIG_ARC_EMAC_CORE=mCONFIG_ARC_EMAC=mCONFIG_EMAC_ROCKCHIP=mCONFIG_NET_VENDOR_ASIX=yCONFIG_SPI_AX88796C=mCONFIG_SPI_AX88796C_COMPRESSION=yCONFIG_NET_VENDOR_BROADCOM=yCONFIG_B44=mCONFIG_BCM4908_ENET=mCONFIG_BCMGENET=mCONFIG_BGMAC=mCONFIG_BGMAC_BCMA=mCONFIG_BGMAC_PLATFORM=mCONFIG_SYSTEMPORT=mCONFIG_NET_VENDOR_CADENCE=yCONFIG_MACB=mCONFIG_MACB_USE_HWSTAMP=yCONFIG_NET_CALXEDA_XGMAC=mCONFIG_NET_VENDOR_CAVIUM=yCONFIG_NET_VENDOR_CIRRUS=y
CONFIG_CS89x0=m
CONFIG_CS89x0_PLATFORM=mCONFIG_EP93XX_ETH=mCONFIG_NET_VENDOR_CORTINA=yCONFIG_GEMINI_ETHERNET=mCONFIG_NET_VENDOR_DAVICOM=yCONFIG_DM9000=mCONFIG_DM9000_FORCE_SIMPLE_PHY_POLL=yCONFIG_DM9051=mCONFIG_DNET=mCONFIG_NET_VENDOR_ENGLEDER=yCONFIG_TSNEP=mCONFIG_TSNEP_SELFTESTS=yCONFIG_NET_VENDOR_EZCHIP=yCONFIG_EZCHIP_NPS_MANAGEMENT_ENET=mCONFIG_NET_VENDOR_FARADAY=yCONFIG_FTMAC100=mCONFIG_FTGMAC100=mCONFIG_NET_VENDOR_FREESCALE=yCONFIG_FEC=mCONFIG_FSL_FMAN=mCONFIG_FSL_PQ_MDIO=mCONFIG_FSL_XGMAC_MDIO=mCONFIG_GIANFAR=mCONFIG_FSL_DPAA2_SWITCH=mCONFIG_FSL_ENETC_IERB=mCONFIG_NET_VENDOR_FUJITSU=yCONFIG_PCMCIA_FMVJ18X=mCONFIG_NET_VENDOR_FUNGIBLE=yCONFIG_NET_VENDOR_GOOGLE=yCONFIG_NET_VENDOR_HISILICON=yCONFIG_HIX5HD2_GMAC=mCONFIG_HISI_FEMAC=mCONFIG_HIP04_ETH=mCONFIG_HI13X1_GMAC=yCONFIG_HNS_MDIO=mCONFIG_HNS=mCONFIG_HNS_DSAF=mCONFIG_HNS_ENET=mCONFIG_NET_VENDOR_HUAWEI=yCONFIG_NET_VENDOR_I825XX=yCONFIG_NET_VENDOR_INTEL=yCONFIG_NET_VENDOR_WANGXUN=yCONFIG_KORINA=mCONFIG_NET_VENDOR_ADI=yCONFIG_ADIN1110=mCONFIG_NET_VENDOR_LITEX=yCONFIG_LITEX_LITEETH=mCONFIG_NET_VENDOR_MARVELL=yCONFIG_MV643XX_ETH=mCONFIG_MVMDIO=mCONFIG_MVNETA_BM_ENABLE=mCONFIG_MVNETA=mCONFIG_MVNETA_BM=mCONFIG_MVPP2=mCONFIG_MVPP2_PTP=yCONFIG_PXA168_ETH=mCONFIG_PRESTERA=mCONFIG_NET_VENDOR_MEDIATEK=yCONFIG_NET_MEDIATEK_SOC_WED=yCONFIG_NET_MEDIATEK_SOC=mCONFIG_NET_MEDIATEK_STAR_EMAC=mCONFIG_NET_VENDOR_MELLANOX=yCONFIG_MLXSW_CORE=mCONFIG_MLXSW_CORE_HWMON=yCONFIG_MLXSW_CORE_THERMAL=yCONFIG_MLXSW_I2C=mCONFIG_MLXSW_MINIMAL=mCONFIG_MLXFW=mCONFIG_MLXBF_GIGE=mCONFIG_NET_VENDOR_MICREL=yCONFIG_KS8842=mCONFIG_KS8851=mCONFIG_KS8851_MLL=mCONFIG_NET_VENDOR_MICROCHIP=yCONFIG_ENC28J60=mCONFIG_ENC28J60_WRITEVERIFY=yCONFIG_ENCX24J600=mCONFIG_LAN966X_SWITCH=mCONFIG_SPARX5_SWITCH=mCONFIG_NET_VENDOR_MICROSEMI=yCONFIG_MSCC_OCELOT_SWITCH_LIB=mCONFIG_MSCC_OCELOT_SWITCH=mCONFIG_NET_VENDOR_MICROSOFT=yCONFIG_NET_VENDOR_NI=yCONFIG_NI_XGE_MANAGEMENT_ENET=mCONFIG_NET_VENDOR_NATSEMI=yCONFIG_NET_VENDOR_NETRONOME=yCONFIG_NET_VENDOR_8390=yCONFIG_PCMCIA_AXNET=mCONFIG_AX88796=mCONFIG_AX88796_93CX6=yCONFIG_PCMCIA_PCNET=mCONFIG_LPC_ENET=mCONFIG_ETHOC=mCONFIG_NET_VENDOR_PENSANDO=yCONFIG_NET_VENDOR_QUALCOMM=yCONFIG_QCA7000=mCONFIG_QCA7000_SPI=mCONFIG_QCA7000_UART=mCONFIG_QCOM_EMAC=mCONFIG_RMNET=mCONFIG_NET_VENDOR_RENESAS=yCONFIG_SH_ETH=mCONFIG_RAVB=mCONFIG_NET_VENDOR_ROCKER=yCONFIG_NET_VENDOR_SAMSUNG=yCONFIG_SXGBE_ETH=mCONFIG_NET_VENDOR_SEEQ=yCONFIG_NET_VENDOR_SOLARFLARE=yCONFIG_NET_VENDOR_SMSC=yCONFIG_SMC91X=mCONFIG_PCMCIA_SMC91C92=m
# CONFIG_SMC911X is not setCONFIG_SMSC911X=mCONFIG_NET_VENDOR_SOCIONEXT=yCONFIG_SNI_AVE=mCONFIG_SNI_NETSEC=mCONFIG_NET_VENDOR_STMICRO=yCONFIG_STMMAC_ETH=mCONFIG_STMMAC_SELFTESTS=yCONFIG_STMMAC_PLATFORM=mCONFIG_DWMAC_DWC_QOS_ETH=mCONFIG_DWMAC_GENERIC=mCONFIG_DWMAC_ANARION=mCONFIG_DWMAC_INGENIC=mCONFIG_DWMAC_IPQ806X=mCONFIG_DWMAC_LPC18XX=mCONFIG_DWMAC_MEDIATEK=mCONFIG_DWMAC_MESON=mCONFIG_DWMAC_OXNAS=mCONFIG_DWMAC_QCOM_ETHQOS=mCONFIG_DWMAC_ROCKCHIP=mCONFIG_DWMAC_SOCFPGA=mCONFIG_DWMAC_STI=mCONFIG_DWMAC_STM32=mCONFIG_DWMAC_SUNXI=mCONFIG_DWMAC_SUN8I=mCONFIG_DWMAC_IMX8=mCONFIG_DWMAC_INTEL_PLAT=mCONFIG_DWMAC_VISCONTI=mCONFIG_NET_VENDOR_SUNPLUS=yCONFIG_SP7021_EMAC=mCONFIG_NET_VENDOR_SYNOPSYS=yCONFIG_DWC_XLGMAC=mCONFIG_NET_VENDOR_VERTEXCOM=yCONFIG_MSE102X=mCONFIG_NET_VENDOR_VIA=yCONFIG_VIA_RHINE=mCONFIG_VIA_RHINE_MMIO=yCONFIG_VIA_VELOCITY=mCONFIG_NET_VENDOR_WIZNET=yCONFIG_WIZNET_W5100=mCONFIG_WIZNET_W5300=m
# CONFIG_WIZNET_BUS_DIRECT is not set
# CONFIG_WIZNET_BUS_INDIRECT is not setCONFIG_WIZNET_BUS_ANY=yCONFIG_WIZNET_W5100_SPI=mCONFIG_NET_VENDOR_XILINX=yCONFIG_XILINX_EMACLITE=mCONFIG_XILINX_AXI_EMAC=mCONFIG_XILINX_LL_TEMAC=mCONFIG_NET_VENDOR_XIRCOM=yCONFIG_PCMCIA_XIRC2PS=mCONFIG_QCOM_IPA=mCONFIG_PHYLINK=mCONFIG_PHYLIB=mCONFIG_SWPHY=yCONFIG_LED_TRIGGER_PHY=yCONFIG_FIXED_PHY=mCONFIG_SFP=m
#
# MII PHY device drivers
#CONFIG_AMD_PHY=mCONFIG_MESON_GXL_PHY=mCONFIG_ADIN_PHY=mCONFIG_ADIN1100_PHY=mCONFIG_AQUANTIA_PHY=mCONFIG_AX88796B_PHY=mCONFIG_BROADCOM_PHY=mCONFIG_BCM54140_PHY=mCONFIG_BCM63XX_PHY=mCONFIG_BCM7XXX_PHY=mCONFIG_BCM84881_PHY=mCONFIG_BCM87XX_PHY=mCONFIG_BCM_CYGNUS_PHY=mCONFIG_BCM_NET_PHYLIB=mCONFIG_BCM_NET_PHYPTP=mCONFIG_CICADA_PHY=mCONFIG_CORTINA_PHY=mCONFIG_DAVICOM_PHY=mCONFIG_ICPLUS_PHY=mCONFIG_LXT_PHY=mCONFIG_INTEL_XWAY_PHY=mCONFIG_LSI_ET1011C_PHY=mCONFIG_MARVELL_PHY=mCONFIG_MARVELL_10G_PHY=mCONFIG_MARVELL_88X2222_PHY=mCONFIG_MAXLINEAR_GPHY=mCONFIG_MEDIATEK_GE_PHY=mCONFIG_MICREL_PHY=mCONFIG_MICROCHIP_PHY=mCONFIG_MICROCHIP_T1_PHY=mCONFIG_MICROSEMI_PHY=mCONFIG_MOTORCOMM_PHY=mCONFIG_NATIONAL_PHY=mCONFIG_NXP_C45_TJA11XX_PHY=mCONFIG_NXP_TJA11XX_PHY=mCONFIG_AT803X_PHY=mCONFIG_QSEMI_PHY=mCONFIG_REALTEK_PHY=mCONFIG_RENESAS_PHY=mCONFIG_ROCKCHIP_PHY=mCONFIG_SMSC_PHY=mCONFIG_STE10XP=mCONFIG_TERANETICS_PHY=mCONFIG_DP83822_PHY=mCONFIG_DP83TC811_PHY=mCONFIG_DP83848_PHY=mCONFIG_DP83867_PHY=mCONFIG_DP83869_PHY=mCONFIG_DP83TD510_PHY=mCONFIG_VITESSE_PHY=mCONFIG_XILINX_GMII2RGMII=mCONFIG_MICREL_KS8995MA=mCONFIG_PSE_CONTROLLER=yCONFIG_PSE_REGULATOR=mCONFIG_CAN_DEV=mCONFIG_CAN_VCAN=mCONFIG_CAN_VXCAN=mCONFIG_CAN_NETLINK=yCONFIG_CAN_CALC_BITTIMING=yCONFIG_CAN_RX_OFFLOAD=yCONFIG_CAN_AT91=mCONFIG_CAN_CAN327=mCONFIG_CAN_FLEXCAN=mCONFIG_CAN_GRCAN=mCONFIG_CAN_SLCAN=mCONFIG_CAN_SUN4I=mCONFIG_CAN_XILINXCAN=mCONFIG_CAN_C_CAN=mCONFIG_CAN_C_CAN_PLATFORM=mCONFIG_CAN_CC770=mCONFIG_CAN_CC770_ISA=mCONFIG_CAN_CC770_PLATFORM=mCONFIG_CAN_CTUCANFD=mCONFIG_CAN_CTUCANFD_PLATFORM=mCONFIG_CAN_IFI_CANFD=mCONFIG_CAN_M_CAN=mCONFIG_CAN_M_CAN_PLATFORM=mCONFIG_CAN_M_CAN_TCAN4X5X=mCONFIG_CAN_RCAR=mCONFIG_CAN_RCAR_CANFD=mCONFIG_CAN_SJA1000=mCONFIG_CAN_EMS_PCMCIA=mCONFIG_CAN_PEAK_PCMCIA=mCONFIG_CAN_SJA1000_ISA=mCONFIG_CAN_SJA1000_PLATFORM=mCONFIG_CAN_SOFTING=mCONFIG_CAN_SOFTING_CS=m
#
# CAN SPI interfaces
#CONFIG_CAN_HI311X=mCONFIG_CAN_MCP251X=mCONFIG_CAN_MCP251XFD=mCONFIG_CAN_MCP251XFD_SANITY=y
# end of CAN SPI interfaces
#
# CAN USB interfaces
#CONFIG_CAN_8DEV_USB=mCONFIG_CAN_EMS_USB=mCONFIG_CAN_ESD_USB=mCONFIG_CAN_ETAS_ES58X=mCONFIG_CAN_GS_USB=mCONFIG_CAN_KVASER_USB=mCONFIG_CAN_MCBA_USB=mCONFIG_CAN_PEAK_USB=mCONFIG_CAN_UCAN=m
# end of CAN USB interfaces
CONFIG_CAN_DEBUG_DEVICES=y
#
# MCTP Device Drivers
#CONFIG_MCTP_SERIAL=mCONFIG_MCTP_TRANSPORT_I2C=m
# end of MCTP Device Drivers
CONFIG_MDIO_DEVICE=mCONFIG_MDIO_BUS=mCONFIG_FWNODE_MDIO=mCONFIG_OF_MDIO=mCONFIG_MDIO_DEVRES=mCONFIG_MDIO_SUN4I=mCONFIG_MDIO_XGENE=mCONFIG_MDIO_ASPEED=mCONFIG_MDIO_BITBANG=mCONFIG_MDIO_BCM_IPROC=mCONFIG_MDIO_BCM_UNIMAC=mCONFIG_MDIO_CAVIUM=mCONFIG_MDIO_GPIO=mCONFIG_MDIO_HISI_FEMAC=mCONFIG_MDIO_I2C=mCONFIG_MDIO_MVUSB=mCONFIG_MDIO_MSCC_MIIM=mCONFIG_MDIO_MOXART=mCONFIG_MDIO_OCTEON=mCONFIG_MDIO_IPQ4019=mCONFIG_MDIO_IPQ8064=m
#
# MDIO Multiplexers
#CONFIG_MDIO_BUS_MUX=mCONFIG_MDIO_BUS_MUX_MESON_G12A=mCONFIG_MDIO_BUS_MUX_BCM6368=mCONFIG_MDIO_BUS_MUX_BCM_IPROC=mCONFIG_MDIO_BUS_MUX_GPIO=mCONFIG_MDIO_BUS_MUX_MULTIPLEXER=mCONFIG_MDIO_BUS_MUX_MMIOREG=m
#
# PCS device drivers
#CONFIG_PCS_XPCS=mCONFIG_PCS_LYNX=mCONFIG_PCS_RZN1_MIIC=mCONFIG_PCS_ALTERA_TSE=m
# end of PCS device drivers
CONFIG_PLIP=mCONFIG_PPP=mCONFIG_PPP_BSDCOMP=mCONFIG_PPP_DEFLATE=mCONFIG_PPP_FILTER=yCONFIG_PPP_MPPE=mCONFIG_PPP_MULTILINK=yCONFIG_PPPOATM=mCONFIG_PPPOE=mCONFIG_PPTP=mCONFIG_PPPOL2TP=mCONFIG_PPP_ASYNC=mCONFIG_PPP_SYNC_TTY=mCONFIG_SLIP=mCONFIG_SLHC=mCONFIG_SLIP_COMPRESSED=yCONFIG_SLIP_SMART=yCONFIG_SLIP_MODE_SLIP6=y
#
# Host-side USB support is needed for USB Network Adapter support #CONFIG_USB_NET_DRIVERS=mCONFIG_USB_CATC=mCONFIG_USB_KAWETH=mCONFIG_USB_PEGASUS=mCONFIG_USB_RTL8150=mCONFIG_USB_RTL8152=mCONFIG_USB_LAN78XX=mCONFIG_USB_USBNET=mCONFIG_USB_NET_AX8817X=mCONFIG_USB_NET_AX88179_178A=mCONFIG_USB_NET_CDCETHER=mCONFIG_USB_NET_CDC_EEM=mCONFIG_USB_NET_CDC_NCM=m CONFIG_USB_NET_HUAWEI_CDC_NCM=m CONFIG_USB_NET_CDC_MBIM=mCONFIG_USB_NET_DM9601=mCONFIG_USB_NET_SR9700=mCONFIG_USB_NET_SR9800=mCONFIG_USB_NET_SMSC75XX=mCONFIG_USB_NET_SMSC95XX=mCONFIG_USB_NET_GL620A=mCONFIG_USB_NET_NET1080=mCONFIG_USB_NET_PLUSB=mCONFIG_USB_NET_MCS7830=mCONFIG_USB_NET_RNDIS_HOST=m CONFIG_USB_NET_CDC_SUBSET_ENABLE=m CONFIG_USB_NET_CDC_SUBSET=mCONFIG_USB_ALI_M5632=yCONFIG_USB_AN2720=yCONFIG_USB_BELKIN=yCONFIG_USB_ARMLINUX=yCONFIG_USB_EPSON2888=yCONFIG_USB_KC2190=yCONFIG_USB_NET_ZAURUS=mCONFIG_USB_NET_CX82310_ETH=mCONFIG_USB_NET_KALMIA=mCONFIG_USB_NET_QMI_WWAN=mCONFIG_USB_HSO=mCONFIG_USB_NET_INT51X1=mCONFIG_USB_CDC_PHONET=mCONFIG_USB_IPHETH=mCONFIG_USB_SIERRA_NET=mCONFIG_USB_VL600=mCONFIG_USB_NET_CH9200=mCONFIG_USB_NET_AQC111=mCONFIG_USB_RTL8153_ECM=mCONFIG_WLAN=yCONFIG_WLAN_VENDOR_ADMTEK=yCONFIG_ATH_COMMON=mCONFIG_WLAN_VENDOR_ATH=yCONFIG_ATH_DEBUG=yCONFIG_ATH_TRACEPOINTS=y CONFIG_ATH_REG_DYNAMIC_USER_REG_HINTS=y CONFIG_ATH_REG_DYNAMIC_USER_CERT_TESTING=y CONFIG_ATH9K_HW=mCONFIG_ATH9K_COMMON=mCONFIG_ATH9K_COMMON_DEBUG=yCONFIG_ATH9K_DFS_DEBUGFS=y CONFIG_ATH9K_BTCOEX_SUPPORT=yCONFIG_ATH9K=mCONFIG_ATH9K_AHB=yCONFIG_ATH9K_DEBUGFS=y CONFIG_ATH9K_STATION_STATISTICS=yCONFIG_ATH9K_TX99=yCONFIG_ATH9K_DFS_CERTIFIED=yCONFIG_ATH9K_DYNACK=yCONFIG_ATH9K_RFKILL=yCONFIG_ATH9K_CHANNEL_CONTEXT=yCONFIG_ATH9K_PCOEM=yCONFIG_ATH9K_HTC=mCONFIG_ATH9K_HTC_DEBUGFS=yCONFIG_ATH9K_HWRNG=yCONFIG_ATH9K_COMMON_SPECTRAL=yCONFIG_CARL9170=mCONFIG_CARL9170_LEDS=yCONFIG_CARL9170_DEBUGFS=yCONFIG_CARL9170_WPC=yCONFIG_CARL9170_HWRNG=yCONFIG_ATH6KL=mCONFIG_ATH6KL_SDIO=mCONFIG_ATH6KL_USB=mCONFIG_ATH6KL_DEBUG=yCONFIG_ATH6KL_TRACING=yCONFIG_ATH6KL_REGDOMAIN=yCONFIG_AR5523=mCONFIG_ATH10K=mCONFIG_ATH10K_CE=yCONFIG_ATH10K_SDIO=mCONFIG_ATH10K_USB=mCONFIG_ATH10K_SNOC=mCONFIG_ATH10K_DEBUG=yCONFIG_ATH10K_DEBUGFS=yCONFIG_ATH10K_SPECTRAL=yCONFIG_ATH10K_TRACING=yCONFIG_ATH10K_DFS_CERTIFIED=yCONFIG_WCN36XX=mCONFIG_WCN36XX_DEBUGFS=yCONFIG_ATH11K=mCONFIG_ATH11K_AHB=mCONFIG_ATH11K_DEBUG=yCONFIG_ATH11K_DEBUGFS=yCONFIG_ATH11K_TRACING=yCONFIG_ATH11K_SPECTRAL=yCONFIG_WLAN_VENDOR_ATMEL=yCONFIG_ATMEL=mCONFIG_PCMCIA_ATMEL=mCONFIG_AT76C50X_USB=mCONFIG_WLAN_VENDOR_BROADCOM=yCONFIG_B43=mCONFIG_B43_BCMA=yCONFIG_B43_SSB=yCONFIG_B43_BUSES_BCMA_AND_SSB=y
# CONFIG_B43_BUSES_BCMA is not set
# CONFIG_B43_BUSES_SSB is not setCONFIG_B43_SDIO=yCONFIG_B43_BCMA_PIO=yCONFIG_B43_PIO=yCONFIG_B43_PHY_G=yCONFIG_B43_PHY_N=yCONFIG_B43_PHY_LP=yCONFIG_B43_PHY_HT=yCONFIG_B43_LEDS=yCONFIG_B43_HWRNG=yCONFIG_B43_DEBUG=yCONFIG_B43LEGACY=mCONFIG_B43LEGACY_LEDS=yCONFIG_B43LEGACY_HWRNG=yCONFIG_B43LEGACY_DEBUG=yCONFIG_B43LEGACY_DMA=yCONFIG_B43LEGACY_PIO=y CONFIG_B43LEGACY_DMA_AND_PIO_MODE=y
# CONFIG_B43LEGACY_DMA_MODE is not set
# CONFIG_B43LEGACY_PIO_MODE is not set CONFIG_BRCMUTIL=mCONFIG_BRCMSMAC=mCONFIG_BRCMSMAC_LEDS=yCONFIG_BRCMFMAC=mCONFIG_BRCMFMAC_PROTO_BCDC=yCONFIG_BRCMFMAC_SDIO=yCONFIG_BRCMFMAC_USB=yCONFIG_BRCM_TRACING=yCONFIG_BRCMDBG=yCONFIG_WLAN_VENDOR_CISCO=yCONFIG_AIRO_CS=mCONFIG_WLAN_VENDOR_INTEL=y CONFIG_WLAN_VENDOR_INTERSIL=yCONFIG_HOSTAP=mCONFIG_HOSTAP_FIRMWARE=yCONFIG_HOSTAP_FIRMWARE_NVRAM=yCONFIG_HOSTAP_CS=mCONFIG_HERMES=mCONFIG_HERMES_PRISM=yCONFIG_HERMES_CACHE_FW_ON_INIT=yCONFIG_PCMCIA_HERMES=mCONFIG_PCMCIA_SPECTRUM=mCONFIG_ORINOCO_USB=mCONFIG_P54_COMMON=mCONFIG_P54_USB=mCONFIG_P54_SPI=mCONFIG_P54_SPI_DEFAULT_EEPROM=yCONFIG_P54_LEDS=yCONFIG_WLAN_VENDOR_MARVELL=yCONFIG_LIBERTAS=mCONFIG_LIBERTAS_USB=mCONFIG_LIBERTAS_CS=mCONFIG_LIBERTAS_SDIO=mCONFIG_LIBERTAS_SPI=mCONFIG_LIBERTAS_DEBUG=yCONFIG_LIBERTAS_MESH=yCONFIG_LIBERTAS_THINFIRM=m CONFIG_LIBERTAS_THINFIRM_DEBUG=y CONFIG_LIBERTAS_THINFIRM_USB=mCONFIG_MWIFIEX=mCONFIG_MWIFIEX_SDIO=mCONFIG_MWIFIEX_USB=mCONFIG_WLAN_VENDOR_MEDIATEK=yCONFIG_MT7601U=mCONFIG_MT76_CORE=mCONFIG_MT76_LEDS=yCONFIG_MT76_USB=mCONFIG_MT76_SDIO=m
CONFIG_MT76x02_LIB=m
CONFIG_MT76x02_USB=mCONFIG_MT76_CONNAC_LIB=m
CONFIG_MT76x0_COMMON=m
CONFIG_MT76x0U=m
CONFIG_MT76x2_COMMON=m
CONFIG_MT76x2U=mCONFIG_MT7615_COMMON=mCONFIG_MT7663_USB_SDIO_COMMON=mCONFIG_MT7663U=mCONFIG_MT7663S=mCONFIG_MT7921_COMMON=mCONFIG_MT7921S=mCONFIG_MT7921U=mCONFIG_WLAN_VENDOR_MICROCHIP=yCONFIG_WILC1000=mCONFIG_WILC1000_SDIO=mCONFIG_WILC1000_SPI=mCONFIG_WILC1000_HW_OOB_INTR=y CONFIG_WLAN_VENDOR_PURELIFI=yCONFIG_PLFXLC=mCONFIG_WLAN_VENDOR_RALINK=yCONFIG_RT2X00=mCONFIG_RT2500USB=mCONFIG_RT73USB=mCONFIG_RT2800USB=mCONFIG_RT2800USB_RT33XX=yCONFIG_RT2800USB_RT35XX=yCONFIG_RT2800USB_RT3573=yCONFIG_RT2800USB_RT53XX=yCONFIG_RT2800USB_RT55XX=yCONFIG_RT2800USB_UNKNOWN=yCONFIG_RT2800_LIB=mCONFIG_RT2X00_LIB_USB=mCONFIG_RT2X00_LIB=mCONFIG_RT2X00_LIB_FIRMWARE=yCONFIG_RT2X00_LIB_CRYPTO=yCONFIG_RT2X00_LIB_LEDS=yCONFIG_RT2X00_LIB_DEBUGFS=yCONFIG_RT2X00_DEBUG=yCONFIG_WLAN_VENDOR_REALTEK=yCONFIG_RTL8187=mCONFIG_RTL8187_LEDS=yCONFIG_RTL_CARDS=mCONFIG_RTL8192CU=mCONFIG_RTLWIFI=mCONFIG_RTLWIFI_USB=mCONFIG_RTLWIFI_DEBUG=yCONFIG_RTL8192C_COMMON=mCONFIG_RTL8XXXU=mCONFIG_RTL8XXXU_UNTESTED=yCONFIG_RTW88=mCONFIG_RTW89=mCONFIG_WLAN_VENDOR_RSI=yCONFIG_RSI_91X=mCONFIG_RSI_DEBUGFS=yCONFIG_RSI_SDIO=mCONFIG_RSI_USB=mCONFIG_RSI_COEX=yCONFIG_WLAN_VENDOR_SILABS=yCONFIG_WFX=mCONFIG_WLAN_VENDOR_ST=yCONFIG_CW1200=mCONFIG_CW1200_WLAN_SDIO=mCONFIG_CW1200_WLAN_SPI=mCONFIG_WLAN_VENDOR_TI=yCONFIG_WL1251=mCONFIG_WL1251_SPI=mCONFIG_WL1251_SDIO=mCONFIG_WL12XX=mCONFIG_WL18XX=mCONFIG_WLCORE=mCONFIG_WLCORE_SPI=mCONFIG_WLCORE_SDIO=mCONFIG_WILINK_PLATFORM_DATA=y CONFIG_WLAN_VENDOR_ZYDAS=yCONFIG_USB_ZD1201=mCONFIG_ZD1211RW=mCONFIG_ZD1211RW_DEBUG=yCONFIG_WLAN_VENDOR_QUANTENNA=yCONFIG_PCMCIA_RAYCS=mCONFIG_PCMCIA_WL3501=mCONFIG_MAC80211_HWSIM=mCONFIG_USB_NET_RNDIS_WLAN=mCONFIG_VIRT_WIFI=mCONFIG_WAN=yCONFIG_HDLC=mCONFIG_HDLC_RAW=mCONFIG_HDLC_RAW_ETH=mCONFIG_HDLC_CISCO=mCONFIG_HDLC_FR=mCONFIG_HDLC_PPP=mCONFIG_HDLC_X25=mCONFIG_FSL_UCC_HDLC=mCONFIG_SLIC_DS26522=mCONFIG_LAPBETHER=mCONFIG_IEEE802154_DRIVERS=mCONFIG_IEEE802154_FAKELB=m CONFIG_IEEE802154_AT86RF230=m CONFIG_IEEE802154_MRF24J40=mCONFIG_IEEE802154_CC2520=mCONFIG_IEEE802154_ATUSB=mCONFIG_IEEE802154_ADF7242=mCONFIG_IEEE802154_CA8210=m CONFIG_IEEE802154_CA8210_DEBUGFS=y CONFIG_IEEE802154_MCR20A=mCONFIG_IEEE802154_HWSIM=m
#
# Wireless WAN
#CONFIG_WWAN=mCONFIG_WWAN_DEBUGFS=yCONFIG_WWAN_HWSIM=mCONFIG_MHI_WWAN_CTRL=mCONFIG_MHI_WWAN_MBIM=mCONFIG_QCOM_BAM_DMUX=mCONFIG_RPMSG_WWAN_CTRL=m
# end of Wireless WAN
CONFIG_NETDEVSIM=mCONFIG_NET_FAILOVER=mCONFIG_ISDN=yCONFIG_ISDN_CAPI=yCONFIG_CAPI_TRACE=yCONFIG_ISDN_CAPI_MIDDLEWARE=yCONFIG_MISDN=mCONFIG_MISDN_DSP=mCONFIG_MISDN_L1OIP=m
#
# mISDN hardware drivers
#CONFIG_MISDN_HFCUSB=m
#
# Input device support
#CONFIG_INPUT=yCONFIG_INPUT_LEDS=mCONFIG_INPUT_FF_MEMLESS=mCONFIG_INPUT_SPARSEKMAP=mCONFIG_INPUT_MATRIXKMAP=mCONFIG_INPUT_VIVALDIFMAP=m
#
# Userland interfaces
#CONFIG_INPUT_MOUSEDEV=mCONFIG_INPUT_MOUSEDEV_PSAUX=yCONFIG_INPUT_MOUSEDEV_SCREEN_X=1024CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768CONFIG_INPUT_JOYDEV=mCONFIG_INPUT_EVDEV=mCONFIG_INPUT_EVBUG=m
#
# Input Device Drivers
#CONFIG_INPUT_KEYBOARD=yCONFIG_KEYBOARD_ADC=mCONFIG_KEYBOARD_ADP5588=mCONFIG_KEYBOARD_ADP5589=mCONFIG_KEYBOARD_ATKBD=mCONFIG_KEYBOARD_QT1050=mCONFIG_KEYBOARD_QT1070=mCONFIG_KEYBOARD_QT2160=mCONFIG_KEYBOARD_CLPS711X=mCONFIG_KEYBOARD_DLINK_DIR685=mCONFIG_KEYBOARD_LKKBD=mCONFIG_KEYBOARD_EP93XX=mCONFIG_KEYBOARD_GPIO=mCONFIG_KEYBOARD_GPIO_POLLED=mCONFIG_KEYBOARD_TCA6416=mCONFIG_KEYBOARD_TCA8418=mCONFIG_KEYBOARD_MATRIX=mCONFIG_KEYBOARD_LM8323=mCONFIG_KEYBOARD_LM8333=mCONFIG_KEYBOARD_MAX7359=mCONFIG_KEYBOARD_MCS=mCONFIG_KEYBOARD_MPR121=mCONFIG_KEYBOARD_SNVS_PWRKEY=mCONFIG_KEYBOARD_IMX=mCONFIG_KEYBOARD_IMX_SC_KEY=mCONFIG_KEYBOARD_NEWTON=mCONFIG_KEYBOARD_OPENCORES=mCONFIG_KEYBOARD_PINEPHONE=mCONFIG_KEYBOARD_PMIC8XXX=mCONFIG_KEYBOARD_SAMSUNG=mCONFIG_KEYBOARD_GOLDFISH_EVENTS=mCONFIG_KEYBOARD_STOWAWAY=mCONFIG_KEYBOARD_ST_KEYSCAN=mCONFIG_KEYBOARD_SUNKBD=mCONFIG_KEYBOARD_SH_KEYSC=mCONFIG_KEYBOARD_STMPE=mCONFIG_KEYBOARD_IQS62X=mCONFIG_KEYBOARD_OMAP4=mCONFIG_KEYBOARD_TM2_TOUCHKEY=mCONFIG_KEYBOARD_XTKBD=mCONFIG_KEYBOARD_CROS_EC=mCONFIG_KEYBOARD_CAP11XX=mCONFIG_KEYBOARD_BCM=mCONFIG_KEYBOARD_MT6779=mCONFIG_KEYBOARD_MTK_PMIC=mCONFIG_KEYBOARD_CYPRESS_SF=mCONFIG_INPUT_MOUSE=yCONFIG_MOUSE_PS2=mCONFIG_MOUSE_PS2_ALPS=yCONFIG_MOUSE_PS2_BYD=yCONFIG_MOUSE_PS2_LOGIPS2PP=yCONFIG_MOUSE_PS2_SYNAPTICS=yCONFIG_MOUSE_PS2_SYNAPTICS_SMBUS=yCONFIG_MOUSE_PS2_CYPRESS=yCONFIG_MOUSE_PS2_TRACKPOINT=yCONFIG_MOUSE_PS2_ELANTECH=yCONFIG_MOUSE_PS2_ELANTECH_SMBUS=yCONFIG_MOUSE_PS2_SENTELIC=yCONFIG_MOUSE_PS2_TOUCHKIT=yCONFIG_MOUSE_PS2_FOCALTECH=yCONFIG_MOUSE_PS2_SMBUS=yCONFIG_MOUSE_SERIAL=mCONFIG_MOUSE_APPLETOUCH=mCONFIG_MOUSE_BCM5974=mCONFIG_MOUSE_CYAPA=mCONFIG_MOUSE_ELAN_I2C=mCONFIG_MOUSE_ELAN_I2C_I2C=yCONFIG_MOUSE_ELAN_I2C_SMBUS=yCONFIG_MOUSE_VSXXXAA=mCONFIG_MOUSE_GPIO=mCONFIG_MOUSE_SYNAPTICS_I2C=mCONFIG_MOUSE_SYNAPTICS_USB=mCONFIG_INPUT_JOYSTICK=yCONFIG_JOYSTICK_ANALOG=mCONFIG_JOYSTICK_A3D=mCONFIG_JOYSTICK_ADC=mCONFIG_JOYSTICK_ADI=mCONFIG_JOYSTICK_COBRA=mCONFIG_JOYSTICK_GF2K=mCONFIG_JOYSTICK_GRIP=mCONFIG_JOYSTICK_GRIP_MP=mCONFIG_JOYSTICK_GUILLEMOT=mCONFIG_JOYSTICK_INTERACT=mCONFIG_JOYSTICK_SIDEWINDER=mCONFIG_JOYSTICK_TMDC=mCONFIG_JOYSTICK_IFORCE=mCONFIG_JOYSTICK_IFORCE_USB=mCONFIG_JOYSTICK_IFORCE_232=mCONFIG_JOYSTICK_WARRIOR=mCONFIG_JOYSTICK_MAGELLAN=mCONFIG_JOYSTICK_SPACEORB=mCONFIG_JOYSTICK_SPACEBALL=mCONFIG_JOYSTICK_STINGER=mCONFIG_JOYSTICK_TWIDJOY=mCONFIG_JOYSTICK_ZHENHUA=mCONFIG_JOYSTICK_DB9=mCONFIG_JOYSTICK_GAMECON=mCONFIG_JOYSTICK_TURBOGRAFX=mCONFIG_JOYSTICK_AS5011=mCONFIG_JOYSTICK_JOYDUMP=mCONFIG_JOYSTICK_XPAD=mCONFIG_JOYSTICK_XPAD_FF=yCONFIG_JOYSTICK_XPAD_LEDS=yCONFIG_JOYSTICK_WALKERA0701=mCONFIG_JOYSTICK_PSXPAD_SPI=mCONFIG_JOYSTICK_PSXPAD_SPI_FF=yCONFIG_JOYSTICK_PXRC=mCONFIG_JOYSTICK_QWIIC=mCONFIG_JOYSTICK_FSIA6B=mCONFIG_JOYSTICK_SENSEHAT=mCONFIG_INPUT_TABLET=yCONFIG_TABLET_USB_ACECAD=mCONFIG_TABLET_USB_AIPTEK=mCONFIG_TABLET_USB_HANWANG=mCONFIG_TABLET_USB_KBTAB=mCONFIG_TABLET_USB_PEGASUS=mCONFIG_TABLET_SERIAL_WACOM4=mCONFIG_INPUT_TOUCHSCREEN=yCONFIG_TOUCHSCREEN_ADS7846=mCONFIG_TOUCHSCREEN_AD7877=mCONFIG_TOUCHSCREEN_AD7879=mCONFIG_TOUCHSCREEN_AD7879_I2C=mCONFIG_TOUCHSCREEN_AD7879_SPI=mCONFIG_TOUCHSCREEN_ADC=mCONFIG_TOUCHSCREEN_AR1021_I2C=mCONFIG_TOUCHSCREEN_ATMEL_MXT=mCONFIG_TOUCHSCREEN_ATMEL_MXT_T37=yCONFIG_TOUCHSCREEN_AUO_PIXCIR=mCONFIG_TOUCHSCREEN_BU21013=mCONFIG_TOUCHSCREEN_BU21029=mCONFIG_TOUCHSCREEN_CHIPONE_ICN8318=mCONFIG_TOUCHSCREEN_CY8CTMA140=mCONFIG_TOUCHSCREEN_CY8CTMG110=mCONFIG_TOUCHSCREEN_CYTTSP_CORE=mCONFIG_TOUCHSCREEN_CYTTSP_I2C=mCONFIG_TOUCHSCREEN_CYTTSP_SPI=mCONFIG_TOUCHSCREEN_CYTTSP4_CORE=mCONFIG_TOUCHSCREEN_CYTTSP4_I2C=mCONFIG_TOUCHSCREEN_CYTTSP4_SPI=mCONFIG_TOUCHSCREEN_DA9052=mCONFIG_TOUCHSCREEN_DYNAPRO=mCONFIG_TOUCHSCREEN_HAMPSHIRE=mCONFIG_TOUCHSCREEN_EETI=mCONFIG_TOUCHSCREEN_EGALAX=mCONFIG_TOUCHSCREEN_EGALAX_SERIAL=mCONFIG_TOUCHSCREEN_EXC3000=mCONFIG_TOUCHSCREEN_FUJITSU=mCONFIG_TOUCHSCREEN_GOODIX=mCONFIG_TOUCHSCREEN_HIDEEP=mCONFIG_TOUCHSCREEN_HYCON_HY46XX=mCONFIG_TOUCHSCREEN_ILI210X=mCONFIG_TOUCHSCREEN_ILITEK=mCONFIG_TOUCHSCREEN_IPROC=mCONFIG_TOUCHSCREEN_S6SY761=mCONFIG_TOUCHSCREEN_GUNZE=mCONFIG_TOUCHSCREEN_EKTF2127=mCONFIG_TOUCHSCREEN_ELAN=mCONFIG_TOUCHSCREEN_ELO=mCONFIG_TOUCHSCREEN_WACOM_W8001=mCONFIG_TOUCHSCREEN_WACOM_I2C=mCONFIG_TOUCHSCREEN_MAX11801=mCONFIG_TOUCHSCREEN_MCS5000=mCONFIG_TOUCHSCREEN_MMS114=mCONFIG_TOUCHSCREEN_MELFAS_MIP4=mCONFIG_TOUCHSCREEN_MSG2638=mCONFIG_TOUCHSCREEN_MTOUCH=mCONFIG_TOUCHSCREEN_IMAGIS=mCONFIG_TOUCHSCREEN_IMX6UL_TSC=mCONFIG_TOUCHSCREEN_INEXIO=mCONFIG_TOUCHSCREEN_MK712=mCONFIG_TOUCHSCREEN_PENMOUNT=mCONFIG_TOUCHSCREEN_EDT_FT5X06=mCONFIG_TOUCHSCREEN_RASPBERRYPI_FW=mCONFIG_TOUCHSCREEN_MIGOR=mCONFIG_TOUCHSCREEN_TOUCHRIGHT=mCONFIG_TOUCHSCREEN_TOUCHWIN=mCONFIG_TOUCHSCREEN_TI_AM335X_TSC=mCONFIG_TOUCHSCREEN_UCB1400=mCONFIG_TOUCHSCREEN_PIXCIR=mCONFIG_TOUCHSCREEN_WDT87XX_I2C=mCONFIG_TOUCHSCREEN_WM831X=mCONFIG_TOUCHSCREEN_WM97XX=mCONFIG_TOUCHSCREEN_WM9705=yCONFIG_TOUCHSCREEN_WM9712=yCONFIG_TOUCHSCREEN_WM9713=yCONFIG_TOUCHSCREEN_USB_COMPOSITE=mCONFIG_TOUCHSCREEN_MXS_LRADC=mCONFIG_TOUCHSCREEN_MX25=mCONFIG_TOUCHSCREEN_MC13783=mCONFIG_TOUCHSCREEN_USB_EGALAX=yCONFIG_TOUCHSCREEN_USB_PANJIT=yCONFIG_TOUCHSCREEN_USB_3M=yCONFIG_TOUCHSCREEN_USB_ITM=yCONFIG_TOUCHSCREEN_USB_ETURBO=yCONFIG_TOUCHSCREEN_USB_GUNZE=yCONFIG_TOUCHSCREEN_USB_DMC_TSC10=yCONFIG_TOUCHSCREEN_USB_IRTOUCH=yCONFIG_TOUCHSCREEN_USB_IDEALTEK=yCONFIG_TOUCHSCREEN_USB_GENERAL_TOUCH=yCONFIG_TOUCHSCREEN_USB_GOTOP=yCONFIG_TOUCHSCREEN_USB_JASTEC=yCONFIG_TOUCHSCREEN_USB_ELO=yCONFIG_TOUCHSCREEN_USB_E2I=yCONFIG_TOUCHSCREEN_USB_ZYTRONIC=yCONFIG_TOUCHSCREEN_USB_ETT_TC45USB=yCONFIG_TOUCHSCREEN_USB_NEXIO=yCONFIG_TOUCHSCREEN_USB_EASYTOUCH=yCONFIG_TOUCHSCREEN_TOUCHIT213=mCONFIG_TOUCHSCREEN_TS4800=mCONFIG_TOUCHSCREEN_TSC_SERIO=mCONFIG_TOUCHSCREEN_TSC200X_CORE=mCONFIG_TOUCHSCREEN_TSC2004=mCONFIG_TOUCHSCREEN_TSC2005=mCONFIG_TOUCHSCREEN_TSC2007=mCONFIG_TOUCHSCREEN_TSC2007_IIO=yCONFIG_TOUCHSCREEN_PCAP=mCONFIG_TOUCHSCREEN_RM_TS=mCONFIG_TOUCHSCREEN_SILEAD=mCONFIG_TOUCHSCREEN_SIS_I2C=mCONFIG_TOUCHSCREEN_ST1232=mCONFIG_TOUCHSCREEN_STMFTS=mCONFIG_TOUCHSCREEN_STMPE=mCONFIG_TOUCHSCREEN_SUN4I=mCONFIG_TOUCHSCREEN_SUR40=mCONFIG_TOUCHSCREEN_SURFACE3_SPI=mCONFIG_TOUCHSCREEN_SX8654=mCONFIG_TOUCHSCREEN_TPS6507X=mCONFIG_TOUCHSCREEN_ZET6223=mCONFIG_TOUCHSCREEN_ZFORCE=mCONFIG_TOUCHSCREEN_COLIBRI_VF50=mCONFIG_TOUCHSCREEN_ROHM_BU21023=mCONFIG_TOUCHSCREEN_IQS5XX=mCONFIG_TOUCHSCREEN_ZINITIX=mCONFIG_INPUT_MISC=yCONFIG_INPUT_88PM80X_ONKEY=mCONFIG_INPUT_AD714X=mCONFIG_INPUT_AD714X_I2C=mCONFIG_INPUT_AD714X_SPI=mCONFIG_INPUT_ARIEL_PWRBUTTON=mCONFIG_INPUT_ARIZONA_HAPTICS=mCONFIG_INPUT_ATC260X_ONKEY=mCONFIG_INPUT_ATMEL_CAPTOUCH=mCONFIG_INPUT_BMA150=mCONFIG_INPUT_E3X0_BUTTON=mCONFIG_INPUT_PM8941_PWRKEY=mCONFIG_INPUT_PM8XXX_VIBRATOR=mCONFIG_INPUT_PMIC8XXX_PWRKEY=mCONFIG_INPUT_MAX77650_ONKEY=mCONFIG_INPUT_MAX77693_HAPTIC=mCONFIG_INPUT_MC13783_PWRBUTTON=mCONFIG_INPUT_MMA8450=mCONFIG_INPUT_GPIO_BEEPER=mCONFIG_INPUT_GPIO_DECODER=mCONFIG_INPUT_GPIO_VIBRA=mCONFIG_INPUT_CPCAP_PWRBUTTON=mCONFIG_INPUT_ATI_REMOTE2=mCONFIG_INPUT_KEYSPAN_REMOTE=mCONFIG_INPUT_KXTJ9=mCONFIG_INPUT_POWERMATE=mCONFIG_INPUT_YEALINK=mCONFIG_INPUT_CM109=mCONFIG_INPUT_REGULATOR_HAPTIC=mCONFIG_INPUT_RETU_PWRBUTTON=mCONFIG_INPUT_TPS65218_PWRBUTTON=mCONFIG_INPUT_AXP20X_PEK=mCONFIG_INPUT_UINPUT=mCONFIG_INPUT_PCF50633_PMU=mCONFIG_INPUT_PCF8574=mCONFIG_INPUT_PWM_BEEPER=mCONFIG_INPUT_PWM_VIBRA=mCONFIG_INPUT_GPIO_ROTARY_ENCODER=mCONFIG_INPUT_DA7280_HAPTICS=mCONFIG_INPUT_DA9052_ONKEY=mCONFIG_INPUT_DA9063_ONKEY=mCONFIG_INPUT_WM831X_ON=mCONFIG_INPUT_PCAP=mCONFIG_INPUT_ADXL34X=mCONFIG_INPUT_ADXL34X_I2C=mCONFIG_INPUT_ADXL34X_SPI=mCONFIG_INPUT_IBM_PANEL=mCONFIG_INPUT_IMS_PCU=mCONFIG_INPUT_IQS269A=mCONFIG_INPUT_IQS626A=mCONFIG_INPUT_IQS7222=mCONFIG_INPUT_CMA3000=mCONFIG_INPUT_CMA3000_I2C=mCONFIG_INPUT_DRV260X_HAPTICS=mCONFIG_INPUT_DRV2665_HAPTICS=mCONFIG_INPUT_DRV2667_HAPTICS=mCONFIG_INPUT_HISI_POWERKEY=mCONFIG_INPUT_RAVE_SP_PWRBUTTON=mCONFIG_INPUT_SC27XX_VIBRA=mCONFIG_INPUT_RT5120_PWRKEY=mCONFIG_RMI4_CORE=mCONFIG_RMI4_I2C=mCONFIG_RMI4_SPI=mCONFIG_RMI4_SMB=mCONFIG_RMI4_F03=yCONFIG_RMI4_F03_SERIO=mCONFIG_RMI4_2D_SENSOR=yCONFIG_RMI4_F11=yCONFIG_RMI4_F12=yCONFIG_RMI4_F30=yCONFIG_RMI4_F34=yCONFIG_RMI4_F3A=yCONFIG_RMI4_F54=yCONFIG_RMI4_F55=y
#
# Hardware I/O ports
#CONFIG_SERIO=mCONFIG_SERIO_SERPORT=mCONFIG_SERIO_PARKBD=mCONFIG_SERIO_LIBPS2=mCONFIG_SERIO_RAW=mCONFIG_SERIO_ALTERA_PS2=mCONFIG_SERIO_PS2MULT=mCONFIG_SERIO_ARC_PS2=mCONFIG_SERIO_APBPS2=mCONFIG_SERIO_OLPC_APSP=mCONFIG_SERIO_SUN4I_PS2=mCONFIG_SERIO_GPIO_PS2=mCONFIG_USERIO=mCONFIG_GAMEPORT=mCONFIG_GAMEPORT_NS558=mCONFIG_GAMEPORT_L4=m
# end of Hardware I/O ports # end of Input device support
#
# Character devices
#CONFIG_TTY=yCONFIG_VT=yCONFIG_CONSOLE_TRANSLATIONS=yCONFIG_VT_CONSOLE=yCONFIG_HW_CONSOLE=yCONFIG_VT_HW_CONSOLE_BINDING=yCONFIG_UNIX98_PTYS=yCONFIG_LEGACY_PTYS=yCONFIG_LEGACY_PTY_COUNT=256CONFIG_LDISC_AUTOLOAD=y
#
# Serial drivers
#CONFIG_SERIAL_EARLYCON=yCONFIG_SERIAL_8250=mCONFIG_SERIAL_8250_DEPRECATED_OPTIONS=yCONFIG_SERIAL_8250_16550A_VARIANTS=yCONFIG_SERIAL_8250_FINTEK=yCONFIG_SERIAL_8250_DMA=yCONFIG_SERIAL_8250_CS=mCONFIG_SERIAL_8250_MEN_MCB=mCONFIG_SERIAL_8250_NR_UARTS=4CONFIG_SERIAL_8250_RUNTIME_UARTS=4CONFIG_SERIAL_8250_EXTENDED=yCONFIG_SERIAL_8250_MANY_PORTS=yCONFIG_SERIAL_8250_ASPEED_VUART=mCONFIG_SERIAL_8250_SHARE_IRQ=yCONFIG_SERIAL_8250_DETECT_IRQ=yCONFIG_SERIAL_8250_RSA=yCONFIG_SERIAL_8250_DWLIB=yCONFIG_SERIAL_8250_BCM2835AUX=mCONFIG_SERIAL_8250_DW=mCONFIG_SERIAL_8250_EM=mCONFIG_SERIAL_8250_IOC3=mCONFIG_SERIAL_8250_RT288X=yCONFIG_SERIAL_8250_OMAP=mCONFIG_SERIAL_8250_LPC18XX=mCONFIG_SERIAL_8250_MT6577=mCONFIG_SERIAL_8250_UNIPHIER=mCONFIG_SERIAL_8250_INGENIC=mCONFIG_SERIAL_8250_PXA=mCONFIG_SERIAL_8250_TEGRA=mCONFIG_SERIAL_8250_BCM7271=mCONFIG_SERIAL_OF_PLATFORM=m
#
# Non-8250 serial port support
#CONFIG_SERIAL_AMBA_PL010=mCONFIG_SERIAL_ATMEL=yCONFIG_SERIAL_ATMEL_CONSOLE=yCONFIG_SERIAL_ATMEL_PDC=yCONFIG_SERIAL_ATMEL_TTYAT=yCONFIG_SERIAL_KGDB_NMI=yCONFIG_SERIAL_MESON=mCONFIG_SERIAL_MESON_CONSOLE=yCONFIG_SERIAL_CLPS711X=mCONFIG_SERIAL_SAMSUNG=mCONFIG_SERIAL_SAMSUNG_UARTS_4=yCONFIG_SERIAL_SAMSUNG_UARTS=4CONFIG_SERIAL_SAMSUNG_CONSOLE=yCONFIG_SERIAL_TEGRA=mCONFIG_SERIAL_TEGRA_TCU=mCONFIG_SERIAL_MAX3100=mCONFIG_SERIAL_MAX310X=mCONFIG_SERIAL_IMX=mCONFIG_SERIAL_IMX_CONSOLE=mCONFIG_SERIAL_IMX_EARLYCON=yCONFIG_SERIAL_UARTLITE=mCONFIG_SERIAL_UARTLITE_NR_UARTS=1CONFIG_SERIAL_SH_SCI=mCONFIG_SERIAL_SH_SCI_NR_UARTS=2CONFIG_SERIAL_SH_SCI_DMA=yCONFIG_SERIAL_HS_LPC32XX=mCONFIG_SERIAL_CORE=yCONFIG_SERIAL_CORE_CONSOLE=yCONFIG_CONSOLE_POLL=yCONFIG_SERIAL_MSM=mCONFIG_SERIAL_QCOM_GENI=mCONFIG_SERIAL_QCOM_GENI_CONSOLE=yCONFIG_SERIAL_VT8500=yCONFIG_SERIAL_VT8500_CONSOLE=yCONFIG_SERIAL_OMAP=mCONFIG_SERIAL_SIFIVE=mCONFIG_SERIAL_LANTIQ=mCONFIG_SERIAL_QE=mCONFIG_SERIAL_SCCNXP=mCONFIG_SERIAL_SC16IS7XX_CORE=mCONFIG_SERIAL_SC16IS7XX=mCONFIG_SERIAL_SC16IS7XX_I2C=yCONFIG_SERIAL_SC16IS7XX_SPI=yCONFIG_SERIAL_TIMBERDALE=mCONFIG_SERIAL_BCM63XX=mCONFIG_SERIAL_ALTERA_JTAGUART=mCONFIG_SERIAL_ALTERA_UART=mCONFIG_SERIAL_ALTERA_UART_MAXPORTS=4CONFIG_SERIAL_ALTERA_UART_BAUDRATE=115200CONFIG_SERIAL_MXS_AUART=mCONFIG_SERIAL_XILINX_PS_UART=mCONFIG_SERIAL_MPS2_UART_CONSOLE=yCONFIG_SERIAL_MPS2_UART=yCONFIG_SERIAL_ARC=mCONFIG_SERIAL_ARC_NR_PORTS=1CONFIG_SERIAL_FSL_LPUART=mCONFIG_SERIAL_FSL_LPUART_CONSOLE=yCONFIG_SERIAL_FSL_LINFLEXUART=mCONFIG_SERIAL_CONEXANT_DIGICOLOR=mCONFIG_SERIAL_ST_ASC=mCONFIG_SERIAL_MEN_Z135=mCONFIG_SERIAL_SPRD=mCONFIG_SERIAL_STM32=mCONFIG_SERIAL_MVEBU_UART=yCONFIG_SERIAL_MVEBU_CONSOLE=yCONFIG_SERIAL_OWL=mCONFIG_SERIAL_RDA=yCONFIG_SERIAL_RDA_CONSOLE=yCONFIG_SERIAL_MILBEAUT_USIO=mCONFIG_SERIAL_MILBEAUT_USIO_PORTS=4CONFIG_SERIAL_LITEUART=mCONFIG_SERIAL_LITEUART_MAX_PORTS=1CONFIG_SERIAL_SUNPLUS=mCONFIG_SERIAL_SUNPLUS_CONSOLE=y
# end of Serial drivers
CONFIG_SERIAL_MCTRL_GPIO=yCONFIG_SERIAL_NONSTANDARD=yCONFIG_N_HDLC=mCONFIG_GOLDFISH_TTY=mCONFIG_N_GSM=mCONFIG_NULL_TTY=mCONFIG_HVC_DRIVER=yCONFIG_RPMSG_TTY=mCONFIG_SERIAL_DEV_BUS=mCONFIG_TTY_PRINTK=mCONFIG_TTY_PRINTK_LEVEL=6CONFIG_PRINTER=mCONFIG_LP_CONSOLE=yCONFIG_PPDEV=mCONFIG_VIRTIO_CONSOLE=mCONFIG_IPMI_HANDLER=mCONFIG_IPMI_PLAT_DATA=yCONFIG_IPMI_PANIC_EVENT=yCONFIG_IPMI_PANIC_STRING=yCONFIG_IPMI_DEVICE_INTERFACE=mCONFIG_IPMI_SI=mCONFIG_IPMI_SSIF=mCONFIG_IPMI_IPMB=mCONFIG_IPMI_WATCHDOG=mCONFIG_IPMI_POWEROFF=mCONFIG_IPMI_KCS_BMC=mCONFIG_ASPEED_KCS_IPMI_BMC=mCONFIG_NPCM7XX_KCS_IPMI_BMC=mCONFIG_IPMI_KCS_BMC_CDEV_IPMI=mCONFIG_IPMI_KCS_BMC_SERIO=mCONFIG_ASPEED_BT_IPMI_BMC=mCONFIG_IPMB_DEVICE_INTERFACE=mCONFIG_HW_RANDOM=mCONFIG_HW_RANDOM_TIMERIOMEM=mCONFIG_HW_RANDOM_ATMEL=mCONFIG_HW_RANDOM_BA431=mCONFIG_HW_RANDOM_BCM2835=mCONFIG_HW_RANDOM_IPROC_RNG200=mCONFIG_HW_RANDOM_IXP4XX=mCONFIG_HW_RANDOM_OMAP=mCONFIG_HW_RANDOM_OMAP3_ROM=mCONFIG_HW_RANDOM_VIRTIO=mCONFIG_HW_RANDOM_IMX_RNGC=mCONFIG_HW_RANDOM_NOMADIK=mCONFIG_HW_RANDOM_STM32=mCONFIG_HW_RANDOM_POLARFIRE_SOC=mCONFIG_HW_RANDOM_MESON=mCONFIG_HW_RANDOM_MTK=mCONFIG_HW_RANDOM_EXYNOS=mCONFIG_HW_RANDOM_NPCM=mCONFIG_HW_RANDOM_KEYSTONE=mCONFIG_HW_RANDOM_CCTRNG=mCONFIG_HW_RANDOM_XIPHERA=m
#
# PCMCIA character devices
#CONFIG_SYNCLINK_CS=mCONFIG_CARDMAN_4000=mCONFIG_CARDMAN_4040=mCONFIG_SCR24X=mCONFIG_IPWIRELESS=m
# end of PCMCIA character devices
CONFIG_DEVMEM=yCONFIG_TCG_TPM=yCONFIG_TCG_TIS_CORE=mCONFIG_TCG_TIS=mCONFIG_TCG_TIS_SPI=mCONFIG_TCG_TIS_SPI_CR50=yCONFIG_TCG_TIS_I2C=mCONFIG_TCG_TIS_SYNQUACER=mCONFIG_TCG_TIS_I2C_CR50=mCONFIG_TCG_TIS_I2C_ATMEL=mCONFIG_TCG_TIS_I2C_INFINEON=mCONFIG_TCG_TIS_I2C_NUVOTON=mCONFIG_TCG_ATMEL=mCONFIG_TCG_VTPM_PROXY=mCONFIG_TCG_TIS_ST33ZP24=mCONFIG_TCG_TIS_ST33ZP24_I2C=mCONFIG_TCG_TIS_ST33ZP24_SPI=mCONFIG_XILLYBUS_CLASS=mCONFIG_XILLYBUS=mCONFIG_XILLYBUS_OF=mCONFIG_XILLYUSB=mCONFIG_RANDOM_TRUST_CPU=yCONFIG_RANDOM_TRUST_BOOTLOADER=y
# end of Character devices
#
# I2C support
#CONFIG_I2C=mCONFIG_I2C_BOARDINFO=yCONFIG_I2C_COMPAT=yCONFIG_I2C_CHARDEV=mCONFIG_I2C_MUX=m
#
# Multiplexer I2C Chip support
#CONFIG_I2C_ARB_GPIO_CHALLENGE=mCONFIG_I2C_MUX_GPIO=mCONFIG_I2C_MUX_GPMUX=mCONFIG_I2C_MUX_LTC4306=mCONFIG_I2C_MUX_PCA9541=m
CONFIG_I2C_MUX_PCA954x=mCONFIG_I2C_MUX_PINCTRL=mCONFIG_I2C_MUX_REG=mCONFIG_I2C_DEMUX_PINCTRL=mCONFIG_I2C_MUX_MLXCPLD=m
# end of Multiplexer I2C Chip support
CONFIG_I2C_HELPER_AUTO=yCONFIG_I2C_SMBUS=mCONFIG_I2C_ALGOBIT=mCONFIG_I2C_ALGOPCA=m
#
# I2C Hardware Bus support
#CONFIG_I2C_HIX5HD2=m
#
# I2C system bus drivers (mostly embedded / system-on-chip) #CONFIG_I2C_ALTERA=mCONFIG_I2C_ASPEED=mCONFIG_I2C_AT91=m CONFIG_I2C_AT91_SLAVE_EXPERIMENTAL=m CONFIG_I2C_AXXIA=mCONFIG_I2C_BCM2835=mCONFIG_I2C_BCM_IPROC=mCONFIG_I2C_BCM_KONA=mCONFIG_I2C_BRCMSTB=mCONFIG_I2C_CADENCE=mCONFIG_I2C_CBUS_GPIO=mCONFIG_I2C_DAVINCI=mCONFIG_I2C_DESIGNWARE_CORE=m CONFIG_I2C_DESIGNWARE_SLAVE=y CONFIG_I2C_DESIGNWARE_PLATFORM=m CONFIG_I2C_DIGICOLOR=mCONFIG_I2C_EMEV2=mCONFIG_I2C_EXYNOS5=mCONFIG_I2C_GPIO=mCONFIG_I2C_GPIO_FAULT_INJECTOR=y CONFIG_I2C_HIGHLANDER=mCONFIG_I2C_HISI=mCONFIG_I2C_IMG=mCONFIG_I2C_IMX=mCONFIG_I2C_IMX_LPI2C=mCONFIG_I2C_IOP3XX=mCONFIG_I2C_JZ4780=mCONFIG_I2C_KEMPLD=mCONFIG_I2C_LPC2K=mCONFIG_I2C_MESON=mCONFIG_I2C_MICROCHIP_CORE=mCONFIG_I2C_MT65XX=mCONFIG_I2C_MT7621=mCONFIG_I2C_MV64XXX=mCONFIG_I2C_MXS=mCONFIG_I2C_NPCM=mCONFIG_I2C_OCORES=mCONFIG_I2C_OMAP=mCONFIG_I2C_OWL=mCONFIG_I2C_APPLE=mCONFIG_I2C_PCA_PLATFORM=mCONFIG_I2C_PNX=mCONFIG_I2C_PXA=mCONFIG_I2C_PXA_SLAVE=yCONFIG_I2C_QCOM_CCI=mCONFIG_I2C_QCOM_GENI=mCONFIG_I2C_QUP=mCONFIG_I2C_RIIC=mCONFIG_I2C_RK3X=mCONFIG_I2C_RZV2M=mCONFIG_I2C_S3C2410=mCONFIG_I2C_SH_MOBILE=mCONFIG_I2C_SIMTEC=mCONFIG_I2C_ST=mCONFIG_I2C_STM32F4=mCONFIG_I2C_STM32F7=mCONFIG_I2C_SUN6I_P2WI=mCONFIG_I2C_SYNQUACER=mCONFIG_I2C_TEGRA_BPMP=mCONFIG_I2C_UNIPHIER=mCONFIG_I2C_UNIPHIER_F=mCONFIG_I2C_VERSATILE=mCONFIG_I2C_WMT=mCONFIG_I2C_XILINX=mCONFIG_I2C_XLP9XX=mCONFIG_I2C_RCAR=m
#
# External I2C/SMBus adapter drivers
#CONFIG_I2C_DIOLAN_U2C=mCONFIG_I2C_DLN2=mCONFIG_I2C_CP2615=mCONFIG_I2C_PARPORT=mCONFIG_I2C_ROBOTFUZZ_OSIF=mCONFIG_I2C_TAOS_EVM=mCONFIG_I2C_TINY_USB=mCONFIG_I2C_VIPERBOARD=m
#
# Other I2C/SMBus bus drivers
#CONFIG_I2C_MLXCPLD=mCONFIG_I2C_CROS_EC_TUNNEL=mCONFIG_I2C_FSI=mCONFIG_I2C_VIRTIO=m
# end of I2C Hardware Bus support
CONFIG_I2C_STUB=mCONFIG_I2C_SLAVE=yCONFIG_I2C_SLAVE_EEPROM=mCONFIG_I2C_SLAVE_TESTUNIT=mCONFIG_I2C_DEBUG_CORE=yCONFIG_I2C_DEBUG_ALGO=yCONFIG_I2C_DEBUG_BUS=y
# end of I2C support
CONFIG_I3C=mCONFIG_CDNS_I3C_MASTER=mCONFIG_DW_I3C_MASTER=mCONFIG_SVC_I3C_MASTER=mCONFIG_MIPI_I3C_HCI=mCONFIG_SPI=yCONFIG_SPI_DEBUG=yCONFIG_SPI_MASTER=yCONFIG_SPI_MEM=y
#
# SPI Master Controller Drivers
#CONFIG_SPI_ALTERA=mCONFIG_SPI_ALTERA_CORE=mCONFIG_SPI_ALTERA_DFL=mCONFIG_SPI_AR934X=mCONFIG_SPI_ATH79=mCONFIG_SPI_ARMADA_3700=mCONFIG_SPI_ASPEED_SMC=mCONFIG_SPI_ATMEL=mCONFIG_SPI_AT91_USART=mCONFIG_SPI_ATMEL_QUADSPI=mCONFIG_SPI_AXI_SPI_ENGINE=mCONFIG_SPI_BCM2835=mCONFIG_SPI_BCM2835AUX=mCONFIG_SPI_BCM63XX=mCONFIG_SPI_BCM63XX_HSSPI=mCONFIG_SPI_BCM_QSPI=mCONFIG_SPI_BITBANG=mCONFIG_SPI_BUTTERFLY=mCONFIG_SPI_CADENCE=mCONFIG_SPI_CADENCE_QUADSPI=mCONFIG_SPI_CADENCE_XSPI=mCONFIG_SPI_CLPS711X=mCONFIG_SPI_DESIGNWARE=mCONFIG_SPI_DW_DMA=yCONFIG_SPI_DW_MMIO=mCONFIG_SPI_DW_BT1=mCONFIG_SPI_DW_BT1_DIRMAP=yCONFIG_SPI_DLN2=mCONFIG_SPI_EP93XX=mCONFIG_SPI_FSI=mCONFIG_SPI_FSL_LPSPI=mCONFIG_SPI_FSL_QUADSPI=mCONFIG_SPI_GXP=mCONFIG_SPI_HISI_KUNPENG=mCONFIG_SPI_HISI_SFC_V3XX=mCONFIG_SPI_NXP_FLEXSPI=mCONFIG_SPI_GPIO=mCONFIG_SPI_IMG_SPFI=mCONFIG_SPI_IMX=mCONFIG_SPI_INGENIC=mCONFIG_SPI_INTEL=mCONFIG_SPI_INTEL_PLATFORM=mCONFIG_SPI_JCORE=mCONFIG_SPI_LM70_LLP=mCONFIG_SPI_LP8841_RTC=mCONFIG_SPI_FSL_LIB=mCONFIG_SPI_FSL_SPI=mCONFIG_SPI_FSL_DSPI=mCONFIG_SPI_MESON_SPICC=mCONFIG_SPI_MESON_SPIFC=mCONFIG_SPI_MICROCHIP_CORE=mCONFIG_SPI_MICROCHIP_CORE_QSPI=mCONFIG_SPI_MT65XX=mCONFIG_SPI_MT7621=mCONFIG_SPI_MTK_NOR=mCONFIG_SPI_MTK_SNFI=mCONFIG_SPI_NPCM_FIU=mCONFIG_SPI_NPCM_PSPI=mCONFIG_SPI_LANTIQ_SSC=mCONFIG_SPI_OC_TINY=mCONFIG_SPI_OMAP24XX=mCONFIG_SPI_TI_QSPI=mCONFIG_SPI_OMAP_100K=mCONFIG_SPI_ORION=mCONFIG_SPI_PIC32=mCONFIG_SPI_PIC32_SQI=mCONFIG_SPI_PXA2XX=mCONFIG_SPI_ROCKCHIP=mCONFIG_SPI_ROCKCHIP_SFC=mCONFIG_SPI_RPCIF=mCONFIG_SPI_RSPI=mCONFIG_SPI_QUP=mCONFIG_SPI_QCOM_GENI=mCONFIG_SPI_S3C64XX=mCONFIG_SPI_SC18IS602=mCONFIG_SPI_SH_MSIOF=mCONFIG_SPI_SH=mCONFIG_SPI_SH_HSPI=mCONFIG_SPI_SIFIVE=mCONFIG_SPI_SLAVE_MT27XX=mCONFIG_SPI_SPRD=mCONFIG_SPI_SPRD_ADI=mCONFIG_SPI_STM32=mCONFIG_SPI_STM32_QSPI=mCONFIG_SPI_ST_SSC4=mCONFIG_SPI_SUN4I=mCONFIG_SPI_SUN6I=mCONFIG_SPI_SUNPLUS_SP7021=mCONFIG_SPI_SYNQUACER=mCONFIG_SPI_MXIC=mCONFIG_SPI_TEGRA210_QUAD=mCONFIG_SPI_TEGRA114=mCONFIG_SPI_TEGRA20_SFLASH=mCONFIG_SPI_TEGRA20_SLINK=mCONFIG_SPI_UNIPHIER=mCONFIG_SPI_XCOMM=mCONFIG_SPI_XILINX=mCONFIG_SPI_XLP=mCONFIG_SPI_XTENSA_XTFPGA=mCONFIG_SPI_ZYNQ_QSPI=mCONFIG_SPI_ZYNQMP_GQSPI=mCONFIG_SPI_AMD=m
#
# SPI Multiplexer support
#CONFIG_SPI_MUX=m
#
# SPI Protocol Masters
#CONFIG_SPI_SPIDEV=mCONFIG_SPI_LOOPBACK_TEST=mCONFIG_SPI_TLE62X0=mCONFIG_SPI_SLAVE=yCONFIG_SPI_SLAVE_TIME=mCONFIG_SPI_SLAVE_SYSTEM_CONTROL=mCONFIG_SPI_DYNAMIC=yCONFIG_SPMI=mCONFIG_SPMI_HISI3670=mCONFIG_SPMI_MSM_PMIC_ARB=mCONFIG_SPMI_MTK_PMIF=mCONFIG_HSI=mCONFIG_HSI_BOARDINFO=y
#
# HSI controllers
#
#
# HSI clients
#CONFIG_HSI_CHAR=mCONFIG_PPS=mCONFIG_PPS_DEBUG=y
#
# PPS clients support
#CONFIG_PPS_CLIENT_KTIMER=mCONFIG_PPS_CLIENT_LDISC=mCONFIG_PPS_CLIENT_PARPORT=mCONFIG_PPS_CLIENT_GPIO=m
#
# PPS generators support
#
#
# PTP clock support
#CONFIG_PTP_1588_CLOCK=mCONFIG_PTP_1588_CLOCK_OPTIONAL=mCONFIG_PTP_1588_CLOCK_DTE=mCONFIG_PTP_1588_CLOCK_QORIQ=mCONFIG_DP83640_PHY=mCONFIG_PTP_1588_CLOCK_INES=mCONFIG_PTP_1588_CLOCK_IDT82P33=mCONFIG_PTP_1588_CLOCK_IDTCM=m
# end of PTP clock support
CONFIG_PINCTRL=yCONFIG_GENERIC_PINCTRL_GROUPS=yCONFIG_PINMUX=yCONFIG_GENERIC_PINMUX_FUNCTIONS=yCONFIG_PINCONF=yCONFIG_GENERIC_PINCONF=yCONFIG_DEBUG_PINCTRL=yCONFIG_PINCTRL_AMD=yCONFIG_PINCTRL_AT91PIO4=yCONFIG_PINCTRL_AXP209=mCONFIG_PINCTRL_BM1880=yCONFIG_PINCTRL_CY8C95X0=mCONFIG_PINCTRL_DA850_PUPD=mCONFIG_PINCTRL_DA9062=mCONFIG_PINCTRL_EQUILIBRIUM=mCONFIG_PINCTRL_INGENIC=yCONFIG_PINCTRL_LPC18XX=yCONFIG_PINCTRL_MCP23S08_I2C=mCONFIG_PINCTRL_MCP23S08_SPI=mCONFIG_PINCTRL_MCP23S08=mCONFIG_PINCTRL_MICROCHIP_SGPIO=mCONFIG_PINCTRL_OCELOT=mCONFIG_PINCTRL_PISTACHIO=yCONFIG_PINCTRL_ROCKCHIP=mCONFIG_PINCTRL_SINGLE=mCONFIG_PINCTRL_STMFX=mCONFIG_PINCTRL_OWL=yCONFIG_PINCTRL_S500=yCONFIG_PINCTRL_S700=yCONFIG_PINCTRL_S900=yCONFIG_PINCTRL_ASPEED=yCONFIG_PINCTRL_ASPEED_G4=yCONFIG_PINCTRL_ASPEED_G5=yCONFIG_PINCTRL_ASPEED_G6=yCONFIG_PINCTRL_BCM281XX=yCONFIG_PINCTRL_BCM2835=mCONFIG_PINCTRL_BCM4908=mCONFIG_PINCTRL_BCM63XX=yCONFIG_PINCTRL_BCM6318=yCONFIG_PINCTRL_BCM6328=yCONFIG_PINCTRL_BCM6358=yCONFIG_PINCTRL_BCM6362=yCONFIG_PINCTRL_BCM6368=yCONFIG_PINCTRL_BCM63268=yCONFIG_PINCTRL_IPROC_GPIO=yCONFIG_PINCTRL_CYGNUS_MUX=yCONFIG_PINCTRL_NS=yCONFIG_PINCTRL_NSP_GPIO=yCONFIG_PINCTRL_NS2_MUX=yCONFIG_PINCTRL_NSP_MUX=yCONFIG_PINCTRL_BERLIN=yCONFIG_PINCTRL_AS370=yCONFIG_PINCTRL_BERLIN_BG4CT=yCONFIG_PINCTRL_MADERA=mCONFIG_PINCTRL_CS47L15=yCONFIG_PINCTRL_CS47L35=yCONFIG_PINCTRL_CS47L85=yCONFIG_PINCTRL_CS47L90=yCONFIG_PINCTRL_CS47L92=yCONFIG_PINCTRL_IMX=mCONFIG_PINCTRL_IMX8MM=mCONFIG_PINCTRL_IMX8MN=mCONFIG_PINCTRL_IMX8MP=mCONFIG_PINCTRL_IMX8MQ=m
#
# Intel pinctrl drivers
#
# end of Intel pinctrl drivers
#
# MediaTek pinctrl drivers
#CONFIG_EINT_MTK=yCONFIG_PINCTRL_MTK=yCONFIG_PINCTRL_MTK_V2=yCONFIG_PINCTRL_MTK_MOORE=yCONFIG_PINCTRL_MTK_PARIS=yCONFIG_PINCTRL_MT2701=yCONFIG_PINCTRL_MT7623=yCONFIG_PINCTRL_MT7629=yCONFIG_PINCTRL_MT8135=yCONFIG_PINCTRL_MT8127=yCONFIG_PINCTRL_MT2712=yCONFIG_PINCTRL_MT6765=mCONFIG_PINCTRL_MT6779=mCONFIG_PINCTRL_MT6795=yCONFIG_PINCTRL_MT6797=yCONFIG_PINCTRL_MT7622=yCONFIG_PINCTRL_MT7986=yCONFIG_PINCTRL_MT8167=yCONFIG_PINCTRL_MT8173=yCONFIG_PINCTRL_MT8183=yCONFIG_PINCTRL_MT8186=yCONFIG_PINCTRL_MT8188=yCONFIG_PINCTRL_MT8192=yCONFIG_PINCTRL_MT8195=yCONFIG_PINCTRL_MT8365=yCONFIG_PINCTRL_MT8516=yCONFIG_PINCTRL_MT6397=y
# end of MediaTek pinctrl drivers
CONFIG_PINCTRL_MESON=mCONFIG_PINCTRL_WPCM450=mCONFIG_PINCTRL_NPCM7XX=yCONFIG_PINCTRL_PXA=yCONFIG_PINCTRL_PXA25X=mCONFIG_PINCTRL_PXA27X=mCONFIG_PINCTRL_MSM=mCONFIG_PINCTRL_APQ8064=mCONFIG_PINCTRL_APQ8084=mCONFIG_PINCTRL_IPQ4019=mCONFIG_PINCTRL_IPQ8064=mCONFIG_PINCTRL_IPQ8074=mCONFIG_PINCTRL_IPQ6018=mCONFIG_PINCTRL_MSM8226=mCONFIG_PINCTRL_MSM8660=mCONFIG_PINCTRL_MSM8960=mCONFIG_PINCTRL_MDM9607=mCONFIG_PINCTRL_MDM9615=mCONFIG_PINCTRL_MSM8X74=mCONFIG_PINCTRL_MSM8909=mCONFIG_PINCTRL_MSM8916=mCONFIG_PINCTRL_MSM8953=mCONFIG_PINCTRL_MSM8976=mCONFIG_PINCTRL_MSM8994=mCONFIG_PINCTRL_MSM8996=mCONFIG_PINCTRL_MSM8998=mCONFIG_PINCTRL_QCM2290=mCONFIG_PINCTRL_QCS404=mCONFIG_PINCTRL_QCOM_SPMI_PMIC=mCONFIG_PINCTRL_QCOM_SSBI_PMIC=mCONFIG_PINCTRL_SC7180=mCONFIG_PINCTRL_SC7280=mCONFIG_PINCTRL_SC7280_LPASS_LPI=mCONFIG_PINCTRL_SC8180X=mCONFIG_PINCTRL_SC8280XP=mCONFIG_PINCTRL_SDM660=mCONFIG_PINCTRL_SDM845=mCONFIG_PINCTRL_SDX55=mCONFIG_PINCTRL_SM6115=mCONFIG_PINCTRL_SM6125=mCONFIG_PINCTRL_SM6350=mCONFIG_PINCTRL_SM6375=mCONFIG_PINCTRL_SDX65=mCONFIG_PINCTRL_SM8150=mCONFIG_PINCTRL_SM8250=mCONFIG_PINCTRL_SM8250_LPASS_LPI=mCONFIG_PINCTRL_SM8350=mCONFIG_PINCTRL_SM8450=mCONFIG_PINCTRL_SM8450_LPASS_LPI=mCONFIG_PINCTRL_SC8280XP_LPASS_LPI=mCONFIG_PINCTRL_LPASS_LPI=m
#
# Renesas pinctrl drivers
#CONFIG_PINCTRL_RENESAS=yCONFIG_PINCTRL_SH_PFC=yCONFIG_PINCTRL_SH_PFC_GPIO=yCONFIG_PINCTRL_SH_FUNC_GPIO=yCONFIG_PINCTRL_PFC_EMEV2=yCONFIG_PINCTRL_PFC_R8A77995=yCONFIG_PINCTRL_PFC_R8A7794=yCONFIG_PINCTRL_PFC_R8A77990=yCONFIG_PINCTRL_PFC_R8A7779=yCONFIG_PINCTRL_PFC_R8A7790=yCONFIG_PINCTRL_PFC_R8A77950=yCONFIG_PINCTRL_PFC_R8A77951=yCONFIG_PINCTRL_PFC_R8A7778=yCONFIG_PINCTRL_PFC_R8A7793=yCONFIG_PINCTRL_PFC_R8A7791=yCONFIG_PINCTRL_PFC_R8A77965=yCONFIG_PINCTRL_PFC_R8A77960=yCONFIG_PINCTRL_PFC_R8A77961=yCONFIG_PINCTRL_PFC_R8A779F0=yCONFIG_PINCTRL_PFC_R8A7792=yCONFIG_PINCTRL_PFC_R8A77980=yCONFIG_PINCTRL_PFC_R8A77970=yCONFIG_PINCTRL_PFC_R8A779A0=yCONFIG_PINCTRL_PFC_R8A779G0=yCONFIG_PINCTRL_PFC_R8A7740=yCONFIG_PINCTRL_PFC_R8A73A4=yCONFIG_PINCTRL_RZA1=yCONFIG_PINCTRL_RZA2=yCONFIG_PINCTRL_RZG2L=yCONFIG_PINCTRL_PFC_R8A77470=yCONFIG_PINCTRL_PFC_R8A7745=yCONFIG_PINCTRL_PFC_R8A7742=yCONFIG_PINCTRL_PFC_R8A7743=yCONFIG_PINCTRL_PFC_R8A7744=yCONFIG_PINCTRL_PFC_R8A774C0=yCONFIG_PINCTRL_PFC_R8A774E1=yCONFIG_PINCTRL_PFC_R8A774A1=yCONFIG_PINCTRL_PFC_R8A774B1=yCONFIG_PINCTRL_RZN1=yCONFIG_PINCTRL_RZV2M=yCONFIG_PINCTRL_PFC_SH7203=yCONFIG_PINCTRL_PFC_SH7264=yCONFIG_PINCTRL_PFC_SH7269=yCONFIG_PINCTRL_PFC_SH7720=yCONFIG_PINCTRL_PFC_SH7722=yCONFIG_PINCTRL_PFC_SH7734=yCONFIG_PINCTRL_PFC_SH7757=yCONFIG_PINCTRL_PFC_SH7785=yCONFIG_PINCTRL_PFC_SH7786=yCONFIG_PINCTRL_PFC_SH73A0=yCONFIG_PINCTRL_PFC_SH7723=yCONFIG_PINCTRL_PFC_SH7724=yCONFIG_PINCTRL_PFC_SHX3=y
# end of Renesas pinctrl drivers
CONFIG_PINCTRL_SAMSUNG=yCONFIG_PINCTRL_EXYNOS=yCONFIG_PINCTRL_EXYNOS_ARM=yCONFIG_PINCTRL_EXYNOS_ARM64=yCONFIG_PINCTRL_S3C24XX=yCONFIG_PINCTRL_S3C64XX=yCONFIG_PINCTRL_SPRD=mCONFIG_PINCTRL_SPRD_SC9860=mCONFIG_PINCTRL_STARFIVE_JH7100=mCONFIG_PINCTRL_STM32=yCONFIG_PINCTRL_STM32F429=yCONFIG_PINCTRL_STM32F469=yCONFIG_PINCTRL_STM32F746=yCONFIG_PINCTRL_STM32F769=yCONFIG_PINCTRL_STM32H743=yCONFIG_PINCTRL_STM32MP135=yCONFIG_PINCTRL_STM32MP157=yCONFIG_PINCTRL_TI_IODELAY=mCONFIG_PINCTRL_UNIPHIER=yCONFIG_PINCTRL_UNIPHIER_LD4=yCONFIG_PINCTRL_UNIPHIER_PRO4=yCONFIG_PINCTRL_UNIPHIER_SLD8=yCONFIG_PINCTRL_UNIPHIER_PRO5=yCONFIG_PINCTRL_UNIPHIER_PXS2=yCONFIG_PINCTRL_UNIPHIER_LD6B=yCONFIG_PINCTRL_UNIPHIER_LD11=yCONFIG_PINCTRL_UNIPHIER_LD20=yCONFIG_PINCTRL_UNIPHIER_PXS3=yCONFIG_PINCTRL_UNIPHIER_NX1=yCONFIG_PINCTRL_VISCONTI=yCONFIG_PINCTRL_TMPV7700=yCONFIG_GPIOLIB=yCONFIG_GPIOLIB_FASTPATH_LIMIT=512CONFIG_OF_GPIO=yCONFIG_GPIOLIB_IRQCHIP=yCONFIG_DEBUG_GPIO=yCONFIG_GPIO_SYSFS=yCONFIG_GPIO_CDEV=yCONFIG_GPIO_CDEV_V1=yCONFIG_GPIO_GENERIC=yCONFIG_GPIO_REGMAP=yCONFIG_GPIO_MAX730X=m
#
# Memory mapped GPIO drivers
#CONFIG_GPIO_74XX_MMIO=mCONFIG_GPIO_ALTERA=mCONFIG_GPIO_ASPEED=mCONFIG_GPIO_ASPEED_SGPIO=yCONFIG_GPIO_ATH79=mCONFIG_GPIO_RASPBERRYPI_EXP=mCONFIG_GPIO_BCM_KONA=yCONFIG_GPIO_BCM_XGS_IPROC=mCONFIG_GPIO_BRCMSTB=mCONFIG_GPIO_CADENCE=mCONFIG_GPIO_CLPS711X=mCONFIG_GPIO_DWAPB=mCONFIG_GPIO_EIC_SPRD=mCONFIG_GPIO_EM=mCONFIG_GPIO_FTGPIO010=yCONFIG_GPIO_GENERIC_PLATFORM=mCONFIG_GPIO_GRGPIO=mCONFIG_GPIO_HISI=mCONFIG_GPIO_HLWD=mCONFIG_GPIO_IMX_SCU=yCONFIG_GPIO_IOP=mCONFIG_GPIO_LOGICVC=mCONFIG_GPIO_LPC18XX=mCONFIG_GPIO_LPC32XX=mCONFIG_GPIO_MB86S7X=mCONFIG_GPIO_MENZ127=mCONFIG_GPIO_MPC8XXX=yCONFIG_GPIO_MT7621=yCONFIG_GPIO_MXC=mCONFIG_GPIO_MXS=yCONFIG_GPIO_PMIC_EIC_SPRD=mCONFIG_GPIO_PXA=yCONFIG_GPIO_RCAR=mCONFIG_GPIO_RDA=yCONFIG_GPIO_ROCKCHIP=mCONFIG_GPIO_SAMA5D2_PIOBU=mCONFIG_GPIO_SIFIVE=yCONFIG_GPIO_SIOX=mCONFIG_GPIO_SNPS_CREG=yCONFIG_GPIO_SPRD=mCONFIG_GPIO_STP_XWAY=yCONFIG_GPIO_SYSCON=mCONFIG_GPIO_TEGRA=mCONFIG_GPIO_TEGRA186=mCONFIG_GPIO_TS4800=mCONFIG_GPIO_UNIPHIER=mCONFIG_GPIO_VISCONTI=mCONFIG_GPIO_WCD934X=mCONFIG_GPIO_XGENE_SB=mCONFIG_GPIO_XILINX=mCONFIG_GPIO_XLP=mCONFIG_GPIO_AMD_FCH=mCONFIG_GPIO_IDT3243X=m
# end of Memory mapped GPIO drivers
#
# I2C GPIO expanders
#CONFIG_GPIO_ADNP=mCONFIG_GPIO_GW_PLD=mCONFIG_GPIO_MAX7300=mCONFIG_GPIO_MAX732X=mCONFIG_GPIO_PCA953X=mCONFIG_GPIO_PCA953X_IRQ=yCONFIG_GPIO_PCA9570=mCONFIG_GPIO_PCF857X=mCONFIG_GPIO_TPIC2810=mCONFIG_GPIO_TS4900=m
# end of I2C GPIO expanders
#
# MFD GPIO expanders
#CONFIG_GPIO_ARIZONA=mCONFIG_GPIO_BD9571MWV=mCONFIG_GPIO_DA9052=mCONFIG_GPIO_DLN2=mCONFIG_GPIO_KEMPLD=mCONFIG_GPIO_LP3943=mCONFIG_GPIO_LP873X=mCONFIG_GPIO_LP87565=mCONFIG_GPIO_MADERA=mCONFIG_GPIO_MAX77650=mCONFIG_GPIO_SL28CPLD=mCONFIG_GPIO_STMPE=yCONFIG_GPIO_TPS65086=mCONFIG_GPIO_TPS65218=mCONFIG_GPIO_TPS65912=mCONFIG_GPIO_TQMX86=mCONFIG_GPIO_UCB1400=mCONFIG_GPIO_WM831X=mCONFIG_GPIO_WM8994=m
# end of MFD GPIO expanders
#
# SPI GPIO expanders
#CONFIG_GPIO_74X164=mCONFIG_GPIO_MAX3191X=mCONFIG_GPIO_MAX7301=mCONFIG_GPIO_MC33880=mCONFIG_GPIO_PISOSR=mCONFIG_GPIO_XRA1403=mCONFIG_GPIO_MOXTET=m
# end of SPI GPIO expanders
#
# USB GPIO expanders
#CONFIG_GPIO_VIPERBOARD=m
# end of USB GPIO expanders
#
# Virtual GPIO drivers
#CONFIG_GPIO_AGGREGATOR=mCONFIG_GPIO_MOCKUP=mCONFIG_GPIO_VIRTIO=mCONFIG_GPIO_SIM=m
# end of Virtual GPIO drivers
CONFIG_W1=mCONFIG_W1_CON=y
#
# 1-wire Bus Masters
#CONFIG_W1_MASTER_DS2490=mCONFIG_W1_MASTER_DS2482=mCONFIG_W1_MASTER_MXC=mCONFIG_W1_MASTER_DS1WM=mCONFIG_W1_MASTER_GPIO=mCONFIG_W1_MASTER_SGI=m
# end of 1-wire Bus Masters
#
# 1-wire Slaves
#CONFIG_W1_SLAVE_THERM=mCONFIG_W1_SLAVE_SMEM=mCONFIG_W1_SLAVE_DS2405=mCONFIG_W1_SLAVE_DS2408=mCONFIG_W1_SLAVE_DS2408_READBACK=yCONFIG_W1_SLAVE_DS2413=mCONFIG_W1_SLAVE_DS2406=mCONFIG_W1_SLAVE_DS2423=mCONFIG_W1_SLAVE_DS2805=mCONFIG_W1_SLAVE_DS2430=mCONFIG_W1_SLAVE_DS2431=mCONFIG_W1_SLAVE_DS2433=mCONFIG_W1_SLAVE_DS2433_CRC=yCONFIG_W1_SLAVE_DS2438=mCONFIG_W1_SLAVE_DS250X=mCONFIG_W1_SLAVE_DS2780=mCONFIG_W1_SLAVE_DS2781=mCONFIG_W1_SLAVE_DS28E04=mCONFIG_W1_SLAVE_DS28E17=m
# end of 1-wire Slaves
CONFIG_POWER_RESET=yCONFIG_POWER_RESET_ATC260X=mCONFIG_POWER_RESET_BRCMKONA=yCONFIG_POWER_RESET_BRCMSTB=yCONFIG_POWER_RESET_GEMINI_POWEROFF=yCONFIG_POWER_RESET_GPIO=yCONFIG_POWER_RESET_GPIO_RESTART=yCONFIG_POWER_RESET_LINKSTATION=mCONFIG_POWER_RESET_OCELOT_RESET=y
# CONFIG_POWER_RESET_LTC2952 is not setCONFIG_POWER_RESET_MT6323=yCONFIG_POWER_RESET_REGULATOR=yCONFIG_POWER_RESET_RESTART=yCONFIG_POWER_RESET_TPS65086=yCONFIG_POWER_RESET_KEYSTONE=yCONFIG_POWER_RESET_SYSCON=yCONFIG_POWER_RESET_SYSCON_POWEROFF=yCONFIG_POWER_RESET_RMOBILE=mCONFIG_REBOOT_MODE=mCONFIG_SYSCON_REBOOT_MODE=mCONFIG_POWER_RESET_SC27XX=mCONFIG_NVMEM_REBOOT_MODE=mCONFIG_POWER_SUPPLY=yCONFIG_POWER_SUPPLY_DEBUG=yCONFIG_PDA_POWER=mCONFIG_GENERIC_ADC_BATTERY=mCONFIG_IP5XXX_POWER=mCONFIG_WM831X_BACKUP=mCONFIG_WM831X_POWER=mCONFIG_TEST_POWER=mCONFIG_CHARGER_ADP5061=mCONFIG_BATTERY_ACT8945A=mCONFIG_BATTERY_CPCAP=mCONFIG_BATTERY_CW2015=mCONFIG_BATTERY_DS2760=mCONFIG_BATTERY_DS2780=mCONFIG_BATTERY_DS2781=mCONFIG_BATTERY_DS2782=mCONFIG_BATTERY_LEGO_EV3=mCONFIG_BATTERY_OLPC=mCONFIG_BATTERY_SAMSUNG_SDI=yCONFIG_BATTERY_INGENIC=mCONFIG_BATTERY_SBS=mCONFIG_CHARGER_SBS=mCONFIG_MANAGER_SBS=mCONFIG_BATTERY_BQ27XXX=mCONFIG_BATTERY_BQ27XXX_I2C=mCONFIG_BATTERY_BQ27XXX_HDQ=mCONFIG_BATTERY_BQ27XXX_DT_UPDATES_NVM=yCONFIG_BATTERY_DA9052=mCONFIG_CHARGER_DA9150=mCONFIG_BATTERY_DA9150=mCONFIG_CHARGER_AXP20X=mCONFIG_BATTERY_AXP20X=mCONFIG_AXP20X_POWER=mCONFIG_BATTERY_MAX17040=mCONFIG_BATTERY_MAX17042=mCONFIG_BATTERY_MAX1721X=mCONFIG_CHARGER_PCF50633=mCONFIG_CHARGER_CPCAP=mCONFIG_CHARGER_ISP1704=mCONFIG_CHARGER_MAX8903=mCONFIG_CHARGER_LP8727=mCONFIG_CHARGER_GPIO=mCONFIG_CHARGER_MANAGER=mCONFIG_CHARGER_LT3651=mCONFIG_CHARGER_LTC4162L=mCONFIG_CHARGER_MAX14577=mCONFIG_CHARGER_DETECTOR_MAX14656=mCONFIG_CHARGER_MAX77650=mCONFIG_CHARGER_MAX77693=mCONFIG_CHARGER_MAX77976=mCONFIG_CHARGER_MP2629=mCONFIG_CHARGER_MT6360=mCONFIG_CHARGER_MT6370=mCONFIG_CHARGER_QCOM_SMBB=mCONFIG_CHARGER_BQ2415X=mCONFIG_CHARGER_BQ24190=mCONFIG_CHARGER_BQ24257=mCONFIG_CHARGER_BQ24735=mCONFIG_CHARGER_BQ2515X=mCONFIG_CHARGER_BQ25890=mCONFIG_CHARGER_BQ25980=mCONFIG_CHARGER_BQ256XX=mCONFIG_CHARGER_SMB347=mCONFIG_CHARGER_TPS65217=mCONFIG_BATTERY_GAUGE_LTC2941=mCONFIG_BATTERY_GOLDFISH=mCONFIG_BATTERY_RT5033=mCONFIG_CHARGER_RT9455=mCONFIG_CHARGER_CROS_USBPD=mCONFIG_CHARGER_CROS_PCHG=mCONFIG_CHARGER_SC2731=mCONFIG_FUEL_GAUGE_SC27XX=mCONFIG_CHARGER_UCS1002=mCONFIG_CHARGER_BD99954=mCONFIG_RN5T618_POWER=mCONFIG_BATTERY_ACER_A500=mCONFIG_BATTERY_UG3105=mCONFIG_HWMON=mCONFIG_HWMON_VID=mCONFIG_HWMON_DEBUG_CHIP=y
#
# Native drivers
#CONFIG_SENSORS_AD7314=m CONFIG_SENSORS_AD7414=m CONFIG_SENSORS_AD7418=m CONFIG_SENSORS_ADM1025=m CONFIG_SENSORS_ADM1026=m CONFIG_SENSORS_ADM1029=m CONFIG_SENSORS_ADM1031=m CONFIG_SENSORS_ADM1177=m CONFIG_SENSORS_ADM9240=m CONFIG_SENSORS_ADT7X10=m CONFIG_SENSORS_ADT7310=m CONFIG_SENSORS_ADT7410=m CONFIG_SENSORS_ADT7411=m CONFIG_SENSORS_ADT7462=m CONFIG_SENSORS_ADT7470=m CONFIG_SENSORS_ADT7475=m CONFIG_SENSORS_AHT10=m CONFIG_SENSORS_AQUACOMPUTER_D5NEXT=m CONFIG_SENSORS_AS370=m CONFIG_SENSORS_ASC7621=m CONFIG_SENSORS_AXI_FAN_CONTROL=m CONFIG_SENSORS_ARM_SCMI=m CONFIG_SENSORS_ARM_SCPI=m CONFIG_SENSORS_ASB100=m CONFIG_SENSORS_ASPEED=m CONFIG_SENSORS_ATXP1=m CONFIG_SENSORS_BT1_PVT=m CONFIG_SENSORS_BT1_PVT_ALARMS=y CONFIG_SENSORS_CORSAIR_CPRO=m CONFIG_SENSORS_CORSAIR_PSU=m CONFIG_SENSORS_DRIVETEMP=m CONFIG_SENSORS_DS620=m CONFIG_SENSORS_DS1621=m CONFIG_SENSORS_DA9052_ADC=m CONFIG_SENSORS_SPARX5=m CONFIG_SENSORS_F71805F=m CONFIG_SENSORS_F71882FG=m CONFIG_SENSORS_F75375S=m CONFIG_SENSORS_GSC=m CONFIG_SENSORS_MC13783_ADC=m CONFIG_SENSORS_FSCHMD=m CONFIG_SENSORS_FTSTEUTATES=m CONFIG_SENSORS_GL518SM=m CONFIG_SENSORS_GL520SM=m CONFIG_SENSORS_G760A=m CONFIG_SENSORS_G762=m CONFIG_SENSORS_GPIO_FAN=m CONFIG_SENSORS_HIH6130=m CONFIG_SENSORS_IBMAEM=m CONFIG_SENSORS_IBMPEX=m CONFIG_SENSORS_IIO_HWMON=m CONFIG_SENSORS_IT87=m CONFIG_SENSORS_JC42=m CONFIG_SENSORS_POWR1220=m CONFIG_SENSORS_LAN966X=m CONFIG_SENSORS_LINEAGE=m CONFIG_SENSORS_LTC2945=m CONFIG_SENSORS_LTC2947=m CONFIG_SENSORS_LTC2947_I2C=m CONFIG_SENSORS_LTC2947_SPI=m CONFIG_SENSORS_LTC2990=m CONFIG_SENSORS_LTC2992=m CONFIG_SENSORS_LTC4151=m CONFIG_SENSORS_LTC4215=m CONFIG_SENSORS_LTC4222=m CONFIG_SENSORS_LTC4245=m CONFIG_SENSORS_LTC4260=m CONFIG_SENSORS_LTC4261=m CONFIG_SENSORS_MAX1111=m CONFIG_SENSORS_MAX127=m CONFIG_SENSORS_MAX16065=m CONFIG_SENSORS_MAX1619=m CONFIG_SENSORS_MAX1668=m CONFIG_SENSORS_MAX197=m CONFIG_SENSORS_MAX31722=m CONFIG_SENSORS_MAX31730=m CONFIG_SENSORS_MAX31760=m CONFIG_SENSORS_MAX6620=m CONFIG_SENSORS_MAX6621=m CONFIG_SENSORS_MAX6639=m CONFIG_SENSORS_MAX6650=m CONFIG_SENSORS_MAX6697=m CONFIG_SENSORS_MAX31790=m CONFIG_SENSORS_MCP3021=m CONFIG_SENSORS_MLXREG_FAN=m CONFIG_SENSORS_TC654=m CONFIG_SENSORS_TPS23861=m CONFIG_SENSORS_MENF21BMC_HWMON=m CONFIG_SENSORS_MR75203=m CONFIG_SENSORS_ADCXX=m CONFIG_SENSORS_LM63=m CONFIG_SENSORS_LM70=m CONFIG_SENSORS_LM73=m CONFIG_SENSORS_LM75=m CONFIG_SENSORS_LM77=m CONFIG_SENSORS_LM78=m CONFIG_SENSORS_LM80=m CONFIG_SENSORS_LM83=m CONFIG_SENSORS_LM85=m CONFIG_SENSORS_LM87=m CONFIG_SENSORS_LM90=m CONFIG_SENSORS_LM92=m CONFIG_SENSORS_LM93=m CONFIG_SENSORS_LM95234=m CONFIG_SENSORS_LM95241=m CONFIG_SENSORS_LM95245=m CONFIG_SENSORS_PC87360=m CONFIG_SENSORS_PC87427=m CONFIG_SENSORS_NTC_THERMISTOR=m CONFIG_SENSORS_NCT6683=m CONFIG_SENSORS_NCT6775_CORE=m CONFIG_SENSORS_NCT6775=m CONFIG_SENSORS_NCT6775_I2C=m CONFIG_SENSORS_NCT7802=m CONFIG_SENSORS_NCT7904=m CONFIG_SENSORS_NPCM7XX=m CONFIG_SENSORS_NSA320=m CONFIG_SENSORS_NZXT_KRAKEN2=m CONFIG_SENSORS_NZXT_SMART2=m CONFIG_SENSORS_OCC_P8_I2C=m CONFIG_SENSORS_OCC_P9_SBE=m CONFIG_SENSORS_OCC=m CONFIG_SENSORS_PCF8591=m CONFIG_SENSORS_PECI_CPUTEMP=m CONFIG_SENSORS_PECI_DIMMTEMP=m CONFIG_SENSORS_PECI=mCONFIG_PMBUS=mCONFIG_SENSORS_PMBUS=m CONFIG_SENSORS_ADM1266=m CONFIG_SENSORS_ADM1275=m CONFIG_SENSORS_BEL_PFE=m CONFIG_SENSORS_BPA_RS600=m CONFIG_SENSORS_DELTA_AHE50DC_FAN=m CONFIG_SENSORS_FSP_3Y=m CONFIG_SENSORS_IBM_CFFPS=m CONFIG_SENSORS_DPS920AB=m CONFIG_SENSORS_INSPUR_IPSPS=m CONFIG_SENSORS_IR35221=m CONFIG_SENSORS_IR36021=m CONFIG_SENSORS_IR38064=m CONFIG_SENSORS_IR38064_REGULATOR=y CONFIG_SENSORS_IRPS5401=m CONFIG_SENSORS_ISL68137=m CONFIG_SENSORS_LM25066=m CONFIG_SENSORS_LM25066_REGULATOR=y CONFIG_SENSORS_LT7182S=m CONFIG_SENSORS_LTC2978=m CONFIG_SENSORS_LTC2978_REGULATOR=y CONFIG_SENSORS_LTC3815=m CONFIG_SENSORS_MAX15301=m CONFIG_SENSORS_MAX16064=m CONFIG_SENSORS_MAX16601=m CONFIG_SENSORS_MAX20730=m CONFIG_SENSORS_MAX20751=m CONFIG_SENSORS_MAX31785=m CONFIG_SENSORS_MAX34440=m CONFIG_SENSORS_MAX8688=m CONFIG_SENSORS_MP2888=m CONFIG_SENSORS_MP2975=m CONFIG_SENSORS_MP5023=m CONFIG_SENSORS_PIM4328=m CONFIG_SENSORS_PLI1209BC=m CONFIG_SENSORS_PLI1209BC_REGULATOR=y CONFIG_SENSORS_PM6764TR=m CONFIG_SENSORS_PXE1610=m CONFIG_SENSORS_Q54SJ108A2=m CONFIG_SENSORS_STPDDC60=m CONFIG_SENSORS_TPS40422=m CONFIG_SENSORS_TPS53679=m CONFIG_SENSORS_TPS546D24=m CONFIG_SENSORS_UCD9000=m CONFIG_SENSORS_UCD9200=m CONFIG_SENSORS_XDPE152=m CONFIG_SENSORS_XDPE122=m CONFIG_SENSORS_XDPE122_REGULATOR=y CONFIG_SENSORS_ZL6100=m CONFIG_SENSORS_PWM_FAN=m CONFIG_SENSORS_RASPBERRYPI_HWMON=m CONFIG_SENSORS_SL28CPLD=m CONFIG_SENSORS_SBTSI=m CONFIG_SENSORS_SBRMI=m CONFIG_SENSORS_SHT15=m CONFIG_SENSORS_SHT21=m CONFIG_SENSORS_SHT3x=m CONFIG_SENSORS_SHT4x=m CONFIG_SENSORS_SHTC1=m CONFIG_SENSORS_SY7636A=m CONFIG_SENSORS_DME1737=m CONFIG_SENSORS_EMC1403=m CONFIG_SENSORS_EMC2103=m CONFIG_SENSORS_EMC2305=m CONFIG_SENSORS_EMC6W201=m CONFIG_SENSORS_SMSC47M1=m CONFIG_SENSORS_SMSC47M192=m CONFIG_SENSORS_SMSC47B397=m CONFIG_SENSORS_SCH56XX_COMMON=m CONFIG_SENSORS_SCH5627=m CONFIG_SENSORS_SCH5636=m CONFIG_SENSORS_STTS751=m CONFIG_SENSORS_SMM665=m CONFIG_SENSORS_ADC128D818=m CONFIG_SENSORS_ADS7828=m CONFIG_SENSORS_ADS7871=m CONFIG_SENSORS_AMC6821=m CONFIG_SENSORS_INA209=m CONFIG_SENSORS_INA2XX=m CONFIG_SENSORS_INA238=m CONFIG_SENSORS_INA3221=m CONFIG_SENSORS_TC74=m CONFIG_SENSORS_THMC50=m CONFIG_SENSORS_TMP102=m CONFIG_SENSORS_TMP103=m CONFIG_SENSORS_TMP108=m CONFIG_SENSORS_TMP401=m CONFIG_SENSORS_TMP421=m CONFIG_SENSORS_TMP464=m CONFIG_SENSORS_TMP513=m CONFIG_SENSORS_VT1211=m CONFIG_SENSORS_W83773G=m CONFIG_SENSORS_W83781D=m CONFIG_SENSORS_W83791D=m CONFIG_SENSORS_W83792D=m CONFIG_SENSORS_W83793=m CONFIG_SENSORS_W83795=m CONFIG_SENSORS_W83795_FANCTRL=y CONFIG_SENSORS_W83L785TS=m CONFIG_SENSORS_W83L786NG=m CONFIG_SENSORS_W83627HF=m CONFIG_SENSORS_W83627EHF=m CONFIG_SENSORS_WM831X=m CONFIG_SENSORS_INTEL_M10_BMC_HWMON=m CONFIG_THERMAL=yCONFIG_THERMAL_NETLINK=y CONFIG_THERMAL_STATISTICS=y CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0 CONFIG_THERMAL_OF=y CONFIG_THERMAL_WRITABLE_TRIPS=y CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y
# CONFIG_THERMAL_DEFAULT_GOV_FAIR_SHARE is not set # CONFIG_THERMAL_DEFAULT_GOV_USER_SPACE is not set CONFIG_THERMAL_GOV_FAIR_SHARE=y CONFIG_THERMAL_GOV_STEP_WISE=y CONFIG_THERMAL_GOV_BANG_BANG=y CONFIG_THERMAL_GOV_USER_SPACE=y CONFIG_CPU_THERMAL=y CONFIG_DEVFREQ_THERMAL=y CONFIG_THERMAL_EMULATION=y CONFIG_THERMAL_MMIO=m CONFIG_HISI_THERMAL=mCONFIG_IMX_THERMAL=m CONFIG_IMX_SC_THERMAL=m CONFIG_IMX8MM_THERMAL=m CONFIG_K3_THERMAL=mCONFIG_QORIQ_THERMAL=m CONFIG_SPEAR_THERMAL=m CONFIG_SUN8I_THERMAL=m CONFIG_ROCKCHIP_THERMAL=m CONFIG_RCAR_THERMAL=m CONFIG_RCAR_GEN3_THERMAL=m CONFIG_RZG2L_THERMAL=m CONFIG_KIRKWOOD_THERMAL=m CONFIG_DOVE_THERMAL=m CONFIG_ARMADA_THERMAL=m CONFIG_DA9062_THERMAL=m CONFIG_MTK_THERMAL=m
#
# Intel thermal drivers
#
#
# ACPI INT340X thermal drivers
#
# end of ACPI INT340X thermal drivers # end of Intel thermal drivers
#
# Broadcom thermal drivers
#CONFIG_BCM2711_THERMAL=mCONFIG_BCM2835_THERMAL=mCONFIG_BRCMSTB_THERMAL=mCONFIG_BCM_NS_THERMAL=mCONFIG_BCM_SR_THERMAL=m
# end of Broadcom thermal drivers
#
# Texas Instruments thermal drivers
#CONFIG_TI_SOC_THERMAL=mCONFIG_TI_THERMAL=yCONFIG_OMAP3_THERMAL=yCONFIG_OMAP4_THERMAL=yCONFIG_OMAP5_THERMAL=yCONFIG_DRA752_THERMAL=y
# end of Texas Instruments thermal drivers
#
# Samsung thermal drivers
#CONFIG_EXYNOS_THERMAL=m
# end of Samsung thermal drivers
#
# NVIDIA Tegra thermal drivers
#CONFIG_TEGRA_SOCTHERM=mCONFIG_TEGRA_BPMP_THERMAL=mCONFIG_TEGRA30_TSENSOR=m
# end of NVIDIA Tegra thermal drivers
CONFIG_GENERIC_ADC_THERMAL=m
#
# Qualcomm thermal drivers
#CONFIG_QCOM_TSENS=mCONFIG_QCOM_SPMI_ADC_TM5=mCONFIG_QCOM_SPMI_TEMP_ALARM=m
# end of Qualcomm thermal drivers
CONFIG_UNIPHIER_THERMAL=mCONFIG_SPRD_THERMAL=mCONFIG_KHADAS_MCU_FAN_THERMAL=mCONFIG_WATCHDOG=yCONFIG_WATCHDOG_CORE=yCONFIG_WATCHDOG_NOWAYOUT=yCONFIG_WATCHDOG_HANDLE_BOOT_ENABLED=yCONFIG_WATCHDOG_OPEN_TIMEOUT=0CONFIG_WATCHDOG_SYSFS=yCONFIG_WATCHDOG_HRTIMER_PRETIMEOUT=y
#
# Watchdog Pretimeout Governors
#CONFIG_WATCHDOG_PRETIMEOUT_GOV=y CONFIG_WATCHDOG_PRETIMEOUT_GOV_SEL=m CONFIG_WATCHDOG_PRETIMEOUT_GOV_NOOP=m CONFIG_WATCHDOG_PRETIMEOUT_GOV_PANIC=m
# CONFIG_WATCHDOG_PRETIMEOUT_DEFAULT_GOV_NOOP is not set CONFIG_WATCHDOG_PRETIMEOUT_DEFAULT_GOV_PANIC=y
#
# Watchdog Device Drivers
#CONFIG_SOFT_WATCHDOG=mCONFIG_SOFT_WATCHDOG_PRETIMEOUT=yCONFIG_DA9052_WATCHDOG=mCONFIG_DA9055_WATCHDOG=mCONFIG_DA9063_WATCHDOG=mCONFIG_DA9062_WATCHDOG=mCONFIG_GPIO_WATCHDOG=mCONFIG_MENF21BMC_WATCHDOG=mCONFIG_MENZ069_WATCHDOG=mCONFIG_WM831X_WATCHDOG=mCONFIG_XILINX_WATCHDOG=mCONFIG_ZIIRAVE_WATCHDOG=mCONFIG_RAVE_SP_WATCHDOG=mCONFIG_MLX_WDT=mCONFIG_SL28CPLD_WATCHDOG=mCONFIG_ARMADA_37XX_WATCHDOG=mCONFIG_ASM9260_WATCHDOG=mCONFIG_AT91RM9200_WATCHDOG=mCONFIG_AT91SAM9X_WATCHDOG=mCONFIG_SAMA5D4_WATCHDOG=mCONFIG_CADENCE_WATCHDOG=mCONFIG_FTWDT010_WATCHDOG=mCONFIG_S3C2410_WATCHDOG=mCONFIG_DW_WATCHDOG=mCONFIG_EP93XX_WATCHDOG=mCONFIG_OMAP_WATCHDOG=mCONFIG_PNX4008_WATCHDOG=mCONFIG_DAVINCI_WATCHDOG=mCONFIG_K3_RTI_WATCHDOG=mCONFIG_RN5T618_WATCHDOG=mCONFIG_SUNXI_WATCHDOG=mCONFIG_NPCM7XX_WATCHDOG=mCONFIG_STMP3XXX_RTC_WATCHDOG=mCONFIG_TS4800_WATCHDOG=mCONFIG_TS72XX_WATCHDOG=mCONFIG_MAX63XX_WATCHDOG=mCONFIG_MAX77620_WATCHDOG=mCONFIG_IMX2_WDT=mCONFIG_IMX7ULP_WDT=mCONFIG_RETU_WATCHDOG=mCONFIG_MOXART_WDT=mCONFIG_ST_LPC_WATCHDOG=mCONFIG_TEGRA_WATCHDOG=mCONFIG_QCOM_WDT=mCONFIG_MESON_GXBB_WATCHDOG=mCONFIG_MESON_WATCHDOG=mCONFIG_MEDIATEK_WATCHDOG=mCONFIG_DIGICOLOR_WATCHDOG=mCONFIG_LPC18XX_WATCHDOG=mCONFIG_RENESAS_WDT=mCONFIG_RENESAS_RZAWDT=mCONFIG_RENESAS_RZN1WDT=mCONFIG_RENESAS_RZG2LWDT=mCONFIG_ASPEED_WATCHDOG=mCONFIG_UNIPHIER_WATCHDOG=mCONFIG_RTD119X_WATCHDOG=yCONFIG_REALTEK_OTTO_WDT=mCONFIG_SPRD_WATCHDOG=mCONFIG_PM8916_WATCHDOG=mCONFIG_VISCONTI_WATCHDOG=mCONFIG_MSC313E_WATCHDOG=mCONFIG_APPLE_WATCHDOG=mCONFIG_SUNPLUS_WATCHDOG=mCONFIG_SC520_WDT=mCONFIG_KEMPLD_WDT=mCONFIG_BCM47XX_WDT=mCONFIG_BCM2835_WDT=mCONFIG_BCM_KONA_WDT=mCONFIG_BCM_KONA_WDT_DEBUG=yCONFIG_BCM7038_WDT=mCONFIG_IMGPDC_WDT=mCONFIG_MPC5200_WDT=yCONFIG_MEN_A21_WDT=mCONFIG_UML_WATCHDOG=m
#
# USB-based Watchdog Cards
#CONFIG_USBPCWATCHDOG=mCONFIG_SSB_POSSIBLE=yCONFIG_SSB=mCONFIG_SSB_SPROM=yCONFIG_SSB_BLOCKIO=yCONFIG_SSB_PCMCIAHOST_POSSIBLE=yCONFIG_SSB_PCMCIAHOST=yCONFIG_SSB_SDIOHOST_POSSIBLE=yCONFIG_SSB_SDIOHOST=yCONFIG_SSB_HOST_SOC=yCONFIG_SSB_DRIVER_GPIO=yCONFIG_BCMA_POSSIBLE=yCONFIG_BCMA=mCONFIG_BCMA_BLOCKIO=yCONFIG_BCMA_HOST_SOC=yCONFIG_BCMA_DRIVER_MIPS=yCONFIG_BCMA_PFLASH=yCONFIG_BCMA_SFLASH=yCONFIG_BCMA_NFLASH=yCONFIG_BCMA_DRIVER_GMAC_CMN=yCONFIG_BCMA_DRIVER_GPIO=yCONFIG_BCMA_DEBUG=y
#
# Multifunction device drivers
#CONFIG_MFD_CORE=yCONFIG_MFD_ACT8945A=mCONFIG_MFD_SUN4I_GPADC=mCONFIG_MFD_AT91_USART=yCONFIG_MFD_ATMEL_FLEXCOM=mCONFIG_MFD_ATMEL_HLCDC=mCONFIG_MFD_ATMEL_SMC=yCONFIG_MFD_BCM590XX=mCONFIG_MFD_BD9571MWV=mCONFIG_MFD_AXP20X=mCONFIG_MFD_AXP20X_I2C=mCONFIG_MFD_CROS_EC_DEV=mCONFIG_MFD_MADERA=mCONFIG_MFD_MADERA_I2C=mCONFIG_MFD_MADERA_SPI=mCONFIG_MFD_CS47L15=yCONFIG_MFD_CS47L35=yCONFIG_MFD_CS47L85=yCONFIG_MFD_CS47L90=yCONFIG_MFD_CS47L92=yCONFIG_MFD_ASIC3=yCONFIG_PMIC_DA9052=yCONFIG_MFD_DA9052_SPI=yCONFIG_MFD_DA9062=mCONFIG_MFD_DA9063=mCONFIG_MFD_DA9150=mCONFIG_MFD_DLN2=mCONFIG_MFD_ENE_KB3930=mCONFIG_MFD_EXYNOS_LPASS=mCONFIG_MFD_GATEWORKS_GSC=mCONFIG_MFD_MC13XXX=mCONFIG_MFD_MC13XXX_SPI=mCONFIG_MFD_MC13XXX_I2C=mCONFIG_MFD_MP2629=mCONFIG_MFD_MXS_LRADC=mCONFIG_MFD_MX25_TSADC=mCONFIG_MFD_HI6421_PMIC=mCONFIG_MFD_HI6421_SPMI=mCONFIG_MFD_HI655X_PMIC=mCONFIG_HTC_PASIC3=mCONFIG_MFD_IQS62X=mCONFIG_MFD_KEMPLD=mCONFIG_MFD_88PM800=mCONFIG_MFD_88PM805=mCONFIG_MFD_MAX14577=mCONFIG_MFD_MAX77650=mCONFIG_MFD_MAX77686=mCONFIG_MFD_MAX77693=mCONFIG_MFD_MAX77714=mCONFIG_MFD_MAX8907=mCONFIG_MFD_MT6360=mCONFIG_MFD_MT6370=mCONFIG_MFD_MT6397=mCONFIG_MFD_MENF21BMC=mCONFIG_MFD_OCELOT=mCONFIG_EZX_PCAP=yCONFIG_MFD_CPCAP=mCONFIG_MFD_VIPERBOARD=mCONFIG_MFD_NTXEC=mCONFIG_MFD_RETU=mCONFIG_MFD_PCF50633=mCONFIG_PCF50633_ADC=mCONFIG_PCF50633_GPIO=mCONFIG_UCB1400_CORE=mCONFIG_MFD_PM8XXX=mCONFIG_MFD_SPMI_PMIC=mCONFIG_MFD_SY7636A=mCONFIG_MFD_RT4831=mCONFIG_MFD_RT5033=mCONFIG_MFD_RT5120=m
# CONFIG_MFD_RK808 is not setCONFIG_MFD_RN5T618=mCONFIG_MFD_SI476X_CORE=mCONFIG_MFD_SIMPLE_MFD_I2C=mCONFIG_MFD_SL28CPLD=mCONFIG_MFD_SM501=mCONFIG_MFD_SM501_GPIO=yCONFIG_MFD_SKY81452=mCONFIG_MFD_SC27XX_PMIC=mCONFIG_ABX500_CORE=yCONFIG_MFD_STMPE=y
#
# STMicroelectronics STMPE Interface Drivers
#CONFIG_STMPE_SPI=y
# end of STMicroelectronics STMPE Interface Drivers
CONFIG_MFD_SUN6I_PRCM=yCONFIG_MFD_SYSCON=yCONFIG_MFD_TI_AM335X_TSCADC=mCONFIG_MFD_LP3943=mCONFIG_MFD_TI_LMU=mCONFIG_MFD_OMAP_USB_HOST=yCONFIG_TPS6105X=mCONFIG_TPS65010=mCONFIG_TPS6507X=mCONFIG_MFD_TPS65086=mCONFIG_MFD_TPS65217=mCONFIG_MFD_TI_LP873X=mCONFIG_MFD_TI_LP87565=mCONFIG_MFD_TPS65218=mCONFIG_MFD_TPS65912=mCONFIG_MFD_TPS65912_I2C=mCONFIG_MFD_TPS65912_SPI=mCONFIG_MFD_WL1273_CORE=mCONFIG_MFD_LM3533=mCONFIG_MFD_TQMX86=mCONFIG_MFD_ARIZONA=mCONFIG_MFD_ARIZONA_I2C=mCONFIG_MFD_ARIZONA_SPI=mCONFIG_MFD_CS47L24=yCONFIG_MFD_WM5102=yCONFIG_MFD_WM5110=yCONFIG_MFD_WM8997=yCONFIG_MFD_WM8998=yCONFIG_MFD_WM831X=yCONFIG_MFD_WM831X_SPI=yCONFIG_MFD_WM8994=mCONFIG_MFD_STW481X=mCONFIG_MFD_STM32_LPTIMER=mCONFIG_MFD_STM32_TIMERS=mCONFIG_MFD_STMFX=mCONFIG_MFD_WCD934X=mCONFIG_MFD_ATC260X=mCONFIG_MFD_ATC260X_I2C=mCONFIG_MFD_KHADAS_MCU=mCONFIG_MFD_ACER_A500_EC=mCONFIG_MFD_QCOM_PM8008=mCONFIG_RAVE_SP_CORE=mCONFIG_MFD_INTEL_M10_BMC=mCONFIG_MFD_RSMU_I2C=mCONFIG_MFD_RSMU_SPI=m
# end of Multifunction device drivers
CONFIG_REGULATOR=yCONFIG_REGULATOR_DEBUG=yCONFIG_REGULATOR_FIXED_VOLTAGE=mCONFIG_REGULATOR_VIRTUAL_CONSUMER=mCONFIG_REGULATOR_USERSPACE_CONSUMER=mCONFIG_REGULATOR_88PG86X=mCONFIG_REGULATOR_88PM800=mCONFIG_REGULATOR_ACT8865=mCONFIG_REGULATOR_ACT8945A=mCONFIG_REGULATOR_AD5398=mCONFIG_REGULATOR_ANATOP=mCONFIG_REGULATOR_ARIZONA_LDO1=mCONFIG_REGULATOR_ARIZONA_MICSUPP=mCONFIG_REGULATOR_ARM_SCMI=mCONFIG_REGULATOR_ATC260X=mCONFIG_REGULATOR_AXP20X=mCONFIG_REGULATOR_BCM590XX=mCONFIG_REGULATOR_BD9571MWV=mCONFIG_REGULATOR_CPCAP=mCONFIG_REGULATOR_CROS_EC=mCONFIG_REGULATOR_DA9052=mCONFIG_REGULATOR_DA9062=mCONFIG_REGULATOR_DA9063=mCONFIG_REGULATOR_DA9121=mCONFIG_REGULATOR_DA9210=mCONFIG_REGULATOR_DA9211=mCONFIG_REGULATOR_FAN53555=mCONFIG_REGULATOR_FAN53880=mCONFIG_REGULATOR_GPIO=mCONFIG_REGULATOR_HI6421=mCONFIG_REGULATOR_HI6421V530=mCONFIG_REGULATOR_HI655X=mCONFIG_REGULATOR_HI6421V600=mCONFIG_REGULATOR_ISL9305=mCONFIG_REGULATOR_ISL6271A=mCONFIG_REGULATOR_LM363X=mCONFIG_REGULATOR_LP3971=mCONFIG_REGULATOR_LP3972=mCONFIG_REGULATOR_LP872X=mCONFIG_REGULATOR_LP873X=mCONFIG_REGULATOR_LP8755=mCONFIG_REGULATOR_LP87565=mCONFIG_REGULATOR_LTC3589=mCONFIG_REGULATOR_LTC3676=mCONFIG_REGULATOR_MAX14577=mCONFIG_REGULATOR_MAX1586=mCONFIG_REGULATOR_MAX77620=mCONFIG_REGULATOR_MAX77650=mCONFIG_REGULATOR_MAX8649=mCONFIG_REGULATOR_MAX8660=mCONFIG_REGULATOR_MAX8893=mCONFIG_REGULATOR_MAX8907=mCONFIG_REGULATOR_MAX8952=mCONFIG_REGULATOR_MAX8973=mCONFIG_REGULATOR_MAX20086=mCONFIG_REGULATOR_MAX77686=mCONFIG_REGULATOR_MAX77693=mCONFIG_REGULATOR_MAX77802=mCONFIG_REGULATOR_MAX77826=mCONFIG_REGULATOR_MC13XXX_CORE=mCONFIG_REGULATOR_MC13783=mCONFIG_REGULATOR_MC13892=mCONFIG_REGULATOR_MCP16502=mCONFIG_REGULATOR_MP5416=mCONFIG_REGULATOR_MP8859=mCONFIG_REGULATOR_MP886X=mCONFIG_REGULATOR_MPQ7920=mCONFIG_REGULATOR_MT6311=mCONFIG_REGULATOR_MT6315=mCONFIG_REGULATOR_MT6323=mCONFIG_REGULATOR_MT6331=mCONFIG_REGULATOR_MT6332=mCONFIG_REGULATOR_MT6358=mCONFIG_REGULATOR_MT6359=mCONFIG_REGULATOR_MT6360=mCONFIG_REGULATOR_MT6370=mCONFIG_REGULATOR_MT6380=mCONFIG_REGULATOR_MT6397=mCONFIG_REGULATOR_PBIAS=mCONFIG_REGULATOR_PCA9450=mCONFIG_REGULATOR_PCAP=mCONFIG_REGULATOR_PCF50633=mCONFIG_REGULATOR_PF8X00=mCONFIG_REGULATOR_PFUZE100=mCONFIG_REGULATOR_PV88060=mCONFIG_REGULATOR_PV88080=mCONFIG_REGULATOR_PV88090=mCONFIG_REGULATOR_PWM=mCONFIG_REGULATOR_QCOM_RPMH=mCONFIG_REGULATOR_QCOM_SMD_RPM=mCONFIG_REGULATOR_QCOM_SPMI=mCONFIG_REGULATOR_QCOM_USB_VBUS=mCONFIG_REGULATOR_RASPBERRYPI_TOUCHSCREEN_ATTINY=mCONFIG_REGULATOR_RN5T618=mCONFIG_REGULATOR_RT4801=mCONFIG_REGULATOR_RT4831=mCONFIG_REGULATOR_RT5033=mCONFIG_REGULATOR_RT5120=mCONFIG_REGULATOR_RT5190A=mCONFIG_REGULATOR_RT5759=mCONFIG_REGULATOR_RT6160=mCONFIG_REGULATOR_RT6245=mCONFIG_REGULATOR_RTQ2134=mCONFIG_REGULATOR_RTMV20=mCONFIG_REGULATOR_RTQ6752=mCONFIG_REGULATOR_S2MPA01=mCONFIG_REGULATOR_S2MPS11=mCONFIG_REGULATOR_S5M8767=mCONFIG_REGULATOR_SC2731=mCONFIG_REGULATOR_SKY81452=mCONFIG_REGULATOR_SLG51000=mCONFIG_REGULATOR_STM32_BOOSTER=mCONFIG_REGULATOR_STM32_VREFBUF=mCONFIG_REGULATOR_STM32_PWR=yCONFIG_REGULATOR_TI_ABB=mCONFIG_REGULATOR_STW481X_VMMC=yCONFIG_REGULATOR_SY7636A=mCONFIG_REGULATOR_SY8106A=mCONFIG_REGULATOR_SY8824X=mCONFIG_REGULATOR_SY8827N=mCONFIG_REGULATOR_TPS51632=mCONFIG_REGULATOR_TPS6105X=mCONFIG_REGULATOR_TPS62360=mCONFIG_REGULATOR_TPS6286X=mCONFIG_REGULATOR_TPS65023=mCONFIG_REGULATOR_TPS6507X=mCONFIG_REGULATOR_TPS65086=mCONFIG_REGULATOR_TPS65132=mCONFIG_REGULATOR_TPS65217=mCONFIG_REGULATOR_TPS65218=mCONFIG_REGULATOR_TPS6524X=mCONFIG_REGULATOR_TPS65912=mCONFIG_REGULATOR_TPS68470=mCONFIG_REGULATOR_UNIPHIER=mCONFIG_REGULATOR_VCTRL=mCONFIG_REGULATOR_WM831X=mCONFIG_REGULATOR_WM8994=mCONFIG_REGULATOR_QCOM_LABIBB=mCONFIG_RC_CORE=mCONFIG_LIRC=yCONFIG_RC_MAP=mCONFIG_RC_DECODERS=yCONFIG_IR_IMON_DECODER=mCONFIG_IR_JVC_DECODER=mCONFIG_IR_MCE_KBD_DECODER=mCONFIG_IR_NEC_DECODER=mCONFIG_IR_RC5_DECODER=mCONFIG_IR_RC6_DECODER=mCONFIG_IR_RCMM_DECODER=mCONFIG_IR_SANYO_DECODER=mCONFIG_IR_SHARP_DECODER=mCONFIG_IR_SONY_DECODER=mCONFIG_IR_XMP_DECODER=mCONFIG_RC_DEVICES=yCONFIG_IR_ENE=mCONFIG_IR_FINTEK=mCONFIG_IR_GPIO_CIR=mCONFIG_IR_GPIO_TX=mCONFIG_IR_HIX5HD2=mCONFIG_IR_IGORPLUGUSB=mCONFIG_IR_IGUANA=mCONFIG_IR_IMON=mCONFIG_IR_IMON_RAW=mCONFIG_IR_ITE_CIR=mCONFIG_IR_MCEUSB=mCONFIG_IR_MESON=mCONFIG_IR_MESON_TX=mCONFIG_IR_MTK=mCONFIG_IR_NUVOTON=mCONFIG_IR_PWM_TX=mCONFIG_IR_REDRAT3=mCONFIG_IR_RX51=mCONFIG_IR_SERIAL=mCONFIG_IR_SERIAL_TRANSMITTER=yCONFIG_IR_SPI=mCONFIG_IR_STREAMZAP=mCONFIG_IR_SUNXI=mCONFIG_IR_TOY=mCONFIG_IR_TTUSBIR=mCONFIG_IR_WINBOND_CIR=mCONFIG_RC_ATI_REMOTE=mCONFIG_RC_LOOPBACK=mCONFIG_RC_ST=mCONFIG_RC_XBOX_DVD=mCONFIG_IR_IMG=mCONFIG_IR_IMG_RAW=yCONFIG_IR_IMG_HW=yCONFIG_IR_IMG_NEC=yCONFIG_IR_IMG_JVC=yCONFIG_IR_IMG_SONY=yCONFIG_IR_IMG_SHARP=yCONFIG_IR_IMG_SANYO=yCONFIG_IR_IMG_RC5=yCONFIG_IR_IMG_RC6=yCONFIG_CEC_CORE=mCONFIG_CEC_NOTIFIER=yCONFIG_CEC_PIN=y
#
# CEC support
#CONFIG_MEDIA_CEC_RC=yCONFIG_CEC_PIN_ERROR_INJ=yCONFIG_MEDIA_CEC_SUPPORT=yCONFIG_CEC_CH7322=mCONFIG_CEC_CROS_EC=mCONFIG_CEC_MESON_AO=mCONFIG_CEC_MESON_G12A_AO=mCONFIG_CEC_GPIO=mCONFIG_CEC_SAMSUNG_S5P=mCONFIG_CEC_STI=mCONFIG_CEC_STM32=mCONFIG_CEC_TEGRA=mCONFIG_USB_PULSE8_CEC=mCONFIG_USB_RAINSHADOW_CEC=m
# end of CEC support
CONFIG_MEDIA_SUPPORT=mCONFIG_MEDIA_SUPPORT_FILTER=yCONFIG_MEDIA_SUBDRV_AUTOSELECT=y
#
# Media device types
#CONFIG_MEDIA_CAMERA_SUPPORT=yCONFIG_MEDIA_ANALOG_TV_SUPPORT=yCONFIG_MEDIA_DIGITAL_TV_SUPPORT=yCONFIG_MEDIA_RADIO_SUPPORT=yCONFIG_MEDIA_SDR_SUPPORT=yCONFIG_MEDIA_PLATFORM_SUPPORT=yCONFIG_MEDIA_TEST_SUPPORT=y
# end of Media device types
CONFIG_VIDEO_DEV=mCONFIG_MEDIA_CONTROLLER=yCONFIG_DVB_CORE=m
#
# Video4Linux options
#CONFIG_VIDEO_V4L2_I2C=yCONFIG_VIDEO_V4L2_SUBDEV_API=yCONFIG_VIDEO_ADV_DEBUG=yCONFIG_VIDEO_FIXED_MINOR_RANGES=yCONFIG_VIDEO_TUNER=mCONFIG_V4L2_JPEG_HELPER=mCONFIG_V4L2_H264=mCONFIG_V4L2_VP9=mCONFIG_V4L2_MEM2MEM_DEV=mCONFIG_V4L2_FLASH_LED_CLASS=mCONFIG_V4L2_FWNODE=mCONFIG_V4L2_ASYNC=mCONFIG_VIDEOBUF_GEN=mCONFIG_VIDEOBUF_VMALLOC=mCONFIG_VIDEOBUF_DMA_CONTIG=m
# end of Video4Linux options
#
# Media controller options
#CONFIG_MEDIA_CONTROLLER_DVB=yCONFIG_MEDIA_CONTROLLER_REQUEST_API=y
# end of Media controller options
#
# Digital TV options
#CONFIG_DVB_MMAP=yCONFIG_DVB_NET=yCONFIG_DVB_MAX_ADAPTERS=16CONFIG_DVB_DYNAMIC_MINORS=yCONFIG_DVB_DEMUX_SECTION_LOSS_LOG=yCONFIG_DVB_ULE_DEBUG=y
# end of Digital TV options
#
# Media drivers
#
#
# Drivers filtered as selected at 'Filter media drivers' #
#
# Media drivers
#CONFIG_MEDIA_USB_SUPPORT=y
#
# Webcam devices
#CONFIG_USB_GSPCA=mCONFIG_USB_GSPCA_BENQ=mCONFIG_USB_GSPCA_CONEX=mCONFIG_USB_GSPCA_CPIA1=mCONFIG_USB_GSPCA_DTCS033=mCONFIG_USB_GSPCA_ETOMS=mCONFIG_USB_GSPCA_FINEPIX=mCONFIG_USB_GSPCA_JEILINJ=mCONFIG_USB_GSPCA_JL2005BCD=mCONFIG_USB_GSPCA_KINECT=mCONFIG_USB_GSPCA_KONICA=mCONFIG_USB_GSPCA_MARS=mCONFIG_USB_GSPCA_MR97310A=mCONFIG_USB_GSPCA_NW80X=mCONFIG_USB_GSPCA_OV519=mCONFIG_USB_GSPCA_OV534=mCONFIG_USB_GSPCA_OV534_9=mCONFIG_USB_GSPCA_PAC207=mCONFIG_USB_GSPCA_PAC7302=mCONFIG_USB_GSPCA_PAC7311=mCONFIG_USB_GSPCA_SE401=mCONFIG_USB_GSPCA_SN9C2028=mCONFIG_USB_GSPCA_SN9C20X=mCONFIG_USB_GSPCA_SONIXB=mCONFIG_USB_GSPCA_SONIXJ=mCONFIG_USB_GSPCA_SPCA1528=mCONFIG_USB_GSPCA_SPCA500=mCONFIG_USB_GSPCA_SPCA501=mCONFIG_USB_GSPCA_SPCA505=mCONFIG_USB_GSPCA_SPCA506=mCONFIG_USB_GSPCA_SPCA508=mCONFIG_USB_GSPCA_SPCA561=mCONFIG_USB_GSPCA_SQ905=mCONFIG_USB_GSPCA_SQ905C=mCONFIG_USB_GSPCA_SQ930X=mCONFIG_USB_GSPCA_STK014=mCONFIG_USB_GSPCA_STK1135=mCONFIG_USB_GSPCA_STV0680=mCONFIG_USB_GSPCA_SUNPLUS=mCONFIG_USB_GSPCA_T613=mCONFIG_USB_GSPCA_TOPRO=mCONFIG_USB_GSPCA_TOUPTEK=mCONFIG_USB_GSPCA_TV8532=mCONFIG_USB_GSPCA_VC032X=mCONFIG_USB_GSPCA_VICAM=mCONFIG_USB_GSPCA_XIRLINK_CIT=mCONFIG_USB_GSPCA_ZC3XX=mCONFIG_USB_GL860=mCONFIG_USB_M5602=mCONFIG_USB_STV06XX=mCONFIG_USB_PWC=mCONFIG_USB_PWC_DEBUG=yCONFIG_USB_PWC_INPUT_EVDEV=yCONFIG_USB_S2255=mCONFIG_VIDEO_USBTV=mCONFIG_USB_VIDEO_CLASS=mCONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y
#
# Analog TV USB devices
#CONFIG_VIDEO_GO7007=mCONFIG_VIDEO_GO7007_USB=mCONFIG_VIDEO_GO7007_LOADER=mCONFIG_VIDEO_GO7007_USB_S2250_BOARD=mCONFIG_VIDEO_HDPVR=mCONFIG_VIDEO_PVRUSB2=mCONFIG_VIDEO_PVRUSB2_SYSFS=yCONFIG_VIDEO_PVRUSB2_DVB=yCONFIG_VIDEO_PVRUSB2_DEBUGIFC=yCONFIG_VIDEO_STK1160_COMMON=mCONFIG_VIDEO_STK1160=m
#
# Analog/digital TV USB devices
#CONFIG_VIDEO_AU0828=mCONFIG_VIDEO_AU0828_V4L2=yCONFIG_VIDEO_AU0828_RC=yCONFIG_VIDEO_CX231XX=mCONFIG_VIDEO_CX231XX_RC=yCONFIG_VIDEO_CX231XX_ALSA=mCONFIG_VIDEO_CX231XX_DVB=m
#
# Digital TV USB devices
#CONFIG_DVB_AS102=mCONFIG_DVB_B2C2_FLEXCOP_USB=mCONFIG_DVB_B2C2_FLEXCOP_USB_DEBUG=yCONFIG_DVB_USB_V2=mCONFIG_DVB_USB_AF9015=mCONFIG_DVB_USB_AF9035=mCONFIG_DVB_USB_ANYSEE=mCONFIG_DVB_USB_AU6610=mCONFIG_DVB_USB_AZ6007=mCONFIG_DVB_USB_CE6230=mCONFIG_DVB_USB_DVBSKY=mCONFIG_DVB_USB_EC168=mCONFIG_DVB_USB_GL861=mCONFIG_DVB_USB_LME2510=mCONFIG_DVB_USB_MXL111SF=mCONFIG_DVB_USB_RTL28XXU=mCONFIG_DVB_USB_ZD1301=mCONFIG_DVB_USB=mCONFIG_DVB_USB_DEBUG=yCONFIG_DVB_USB_A800=mCONFIG_DVB_USB_AF9005=mCONFIG_DVB_USB_AF9005_REMOTE=mCONFIG_DVB_USB_AZ6027=mCONFIG_DVB_USB_CINERGY_T2=mCONFIG_DVB_USB_CXUSB=mCONFIG_DVB_USB_CXUSB_ANALOG=yCONFIG_DVB_USB_DIB0700=mCONFIG_DVB_USB_DIB3000MC=mCONFIG_DVB_USB_DIBUSB_MB=mCONFIG_DVB_USB_DIBUSB_MB_FAULTY=yCONFIG_DVB_USB_DIBUSB_MC=mCONFIG_DVB_USB_DIGITV=mCONFIG_DVB_USB_DTT200U=mCONFIG_DVB_USB_DTV5100=mCONFIG_DVB_USB_DW2102=mCONFIG_DVB_USB_GP8PSK=mCONFIG_DVB_USB_M920X=mCONFIG_DVB_USB_NOVA_T_USB2=mCONFIG_DVB_USB_OPERA1=mCONFIG_DVB_USB_PCTV452E=mCONFIG_DVB_USB_TECHNISAT_USB2=mCONFIG_DVB_USB_TTUSB2=mCONFIG_DVB_USB_UMT_010=mCONFIG_DVB_USB_VP702X=mCONFIG_DVB_USB_VP7045=mCONFIG_SMS_USB_DRV=m
#
# Webcam, TV (analog/digital) USB devices
#CONFIG_VIDEO_EM28XX=mCONFIG_VIDEO_EM28XX_V4L2=mCONFIG_VIDEO_EM28XX_ALSA=mCONFIG_VIDEO_EM28XX_DVB=mCONFIG_VIDEO_EM28XX_RC=m
#
# Software defined radio USB devices
#CONFIG_USB_AIRSPY=mCONFIG_USB_HACKRF=mCONFIG_USB_MSI2500=mCONFIG_RADIO_ADAPTERS=mCONFIG_RADIO_SAA7706H=mCONFIG_RADIO_SHARK=mCONFIG_RADIO_SHARK2=mCONFIG_RADIO_SI4713=mCONFIG_RADIO_SI476X=mCONFIG_RADIO_TEA575X=mCONFIG_RADIO_TEA5764=mCONFIG_RADIO_TEF6862=mCONFIG_RADIO_WL1273=mCONFIG_USB_DSBR=mCONFIG_USB_KEENE=mCONFIG_USB_MA901=mCONFIG_USB_MR800=mCONFIG_USB_RAREMONO=mCONFIG_RADIO_SI470X=mCONFIG_USB_SI470X=mCONFIG_I2C_SI470X=mCONFIG_USB_SI4713=mCONFIG_PLATFORM_SI4713=mCONFIG_I2C_SI4713=mCONFIG_RADIO_WL128X=mCONFIG_V4L_RADIO_ISA_DRIVERS=yCONFIG_RADIO_AZTECH=mCONFIG_RADIO_CADET=mCONFIG_RADIO_GEMTEK=mCONFIG_RADIO_ISA=mCONFIG_RADIO_RTRACK=mCONFIG_RADIO_RTRACK2=mCONFIG_RADIO_SF16FMI=mCONFIG_RADIO_SF16FMR2=mCONFIG_RADIO_TERRATEC=mCONFIG_RADIO_TRUST=mCONFIG_RADIO_TYPHOON=mCONFIG_RADIO_ZOLTRIX=mCONFIG_MEDIA_PLATFORM_DRIVERS=yCONFIG_V4L_PLATFORM_DRIVERS=yCONFIG_SDR_PLATFORM_DRIVERS=yCONFIG_DVB_PLATFORM_DRIVERS=yCONFIG_V4L_MEM2MEM_DRIVERS=yCONFIG_VIDEO_MEM2MEM_DEINTERLACE=mCONFIG_VIDEO_MUX=m
#
# Allegro DVT media platform drivers
#CONFIG_VIDEO_ALLEGRO_DVT=m
#
# Amlogic media platform drivers
#CONFIG_VIDEO_MESON_GE2D=m
#
# Amphion drivers
#CONFIG_VIDEO_AMPHION_VPU=m
#
# Aspeed media platform drivers
#CONFIG_VIDEO_ASPEED=m
#
# Atmel media platform drivers
#CONFIG_VIDEO_ATMEL_ISI=m
#
# Cadence media platform drivers
#CONFIG_VIDEO_CADENCE_CSI2RX=mCONFIG_VIDEO_CADENCE_CSI2TX=m
#
# Chips&Media media platform drivers
#CONFIG_VIDEO_CODA=mCONFIG_VIDEO_IMX_VDOA=m
#
# Intel media platform drivers
#
CONFIG_VIDEO_PXA27x=m
#
# Marvell media platform drivers
#CONFIG_VIDEO_MMP_CAMERA=m
#
# Mediatek media platform drivers
#CONFIG_VIDEO_MEDIATEK_JPEG=mCONFIG_VIDEO_MEDIATEK_MDP=mCONFIG_VIDEO_MEDIATEK_VCODEC_SCP=yCONFIG_VIDEO_MEDIATEK_VCODEC_VPU=yCONFIG_VIDEO_MEDIATEK_VCODEC=mCONFIG_VIDEO_MEDIATEK_VPU=mCONFIG_VIDEO_MEDIATEK_MDP3=m
#
# Microchip Technology, Inc. media platform drivers #CONFIG_VIDEO_MICROCHIP_ISC=m CONFIG_VIDEO_MICROCHIP_XISC=m CONFIG_VIDEO_MICROCHIP_ISC_BASE=m CONFIG_VIDEO_MICROCHIP_CSI2DC=m
#
# Nuvoton media platform drivers
#CONFIG_VIDEO_NPCM_VCD_ECE=m
#
# NVidia media platform drivers
#CONFIG_VIDEO_TEGRA_VDE=m
#
# NXP media platform drivers
#CONFIG_VIDEO_IMX7_CSI=mCONFIG_VIDEO_IMX_MIPI_CSIS=mCONFIG_VIDEO_IMX_PXP=mCONFIG_VIDEO_MX2_EMMAPRP=mCONFIG_VIDEO_DW100=mCONFIG_VIDEO_IMX8_JPEG=m
#
# Qualcomm media platform drivers
#CONFIG_VIDEO_QCOM_CAMSS=mCONFIG_VIDEO_QCOM_VENUS=m
#
# Renesas media platform drivers
#CONFIG_VIDEO_RENESAS_CEU=mCONFIG_VIDEO_RCAR_ISP=mCONFIG_VIDEO_SH_VOU=mCONFIG_VIDEO_RCAR_CSI2=mCONFIG_VIDEO_RCAR_VIN=mCONFIG_VIDEO_RZG2L_CSI2=mCONFIG_VIDEO_RZG2L_CRU=mCONFIG_VIDEO_RENESAS_FCP=mCONFIG_VIDEO_RENESAS_FDP1=mCONFIG_VIDEO_RENESAS_JPU=mCONFIG_VIDEO_RENESAS_VSP1=mCONFIG_VIDEO_RCAR_DRIF=m
#
# Rockchip media platform drivers
#CONFIG_VIDEO_ROCKCHIP_RGA=mCONFIG_VIDEO_ROCKCHIP_ISP1=m
#
# Samsung media platform drivers
#CONFIG_VIDEO_SAMSUNG_EXYNOS_GSC=mCONFIG_VIDEO_SAMSUNG_EXYNOS4_IS=mCONFIG_VIDEO_EXYNOS4_IS_COMMON=mCONFIG_VIDEO_S5P_FIMC=mCONFIG_VIDEO_S5P_MIPI_CSIS=mCONFIG_VIDEO_EXYNOS_FIMC_LITE=mCONFIG_VIDEO_EXYNOS4_FIMC_IS=mCONFIG_VIDEO_EXYNOS4_ISP_DMA_CAPTURE=yCONFIG_VIDEO_SAMSUNG_S5P_G2D=mCONFIG_VIDEO_SAMSUNG_S5P_JPEG=mCONFIG_VIDEO_SAMSUNG_S5P_MFC=m
#
# STMicroelectronics media platform drivers
#CONFIG_VIDEO_STI_BDISP=mCONFIG_DVB_C8SECTPFE=mCONFIG_VIDEO_STI_DELTA=mCONFIG_VIDEO_STI_DELTA_MJPEG=yCONFIG_VIDEO_STI_DELTA_DRIVER=mCONFIG_VIDEO_STI_HVA=mCONFIG_VIDEO_STI_HVA_DEBUGFS=yCONFIG_VIDEO_STM32_DCMI=mCONFIG_VIDEO_STM32_DMA2D=m
#
# Sunxi media platform drivers
#CONFIG_VIDEO_SUN4I_CSI=m
#
# Texas Instruments drivers
#CONFIG_VIDEO_TI_VPDMA=mCONFIG_VIDEO_TI_SC=mCONFIG_VIDEO_TI_CSC=mCONFIG_VIDEO_TI_CAL=mCONFIG_VIDEO_TI_CAL_MC=yCONFIG_VIDEO_TI_VPE=mCONFIG_VIDEO_TI_VPE_DEBUG=yCONFIG_VIDEO_AM437X_VPFE=mCONFIG_VIDEO_DAVINCI_VPIF_DISPLAY=mCONFIG_VIDEO_DAVINCI_VPIF_CAPTURE=mCONFIG_VIDEO_DAVINCI_VPBE_DISPLAY=mCONFIG_VIDEO_OMAP2_VOUT_VRFB=yCONFIG_VIDEO_OMAP2_VOUT=mCONFIG_VIDEO_OMAP3=mCONFIG_VIDEO_OMAP3_DEBUG=y
#
# Verisilicon media platform drivers
#CONFIG_VIDEO_HANTRO=mCONFIG_VIDEO_HANTRO_IMX8M=yCONFIG_VIDEO_HANTRO_SAMA5D4=yCONFIG_VIDEO_HANTRO_ROCKCHIP=yCONFIG_VIDEO_HANTRO_SUNXI=y
#
# VIA media platform drivers
#
#
# Xilinx media platform drivers
#CONFIG_VIDEO_XILINX=mCONFIG_VIDEO_XILINX_CSI2RXSS=mCONFIG_VIDEO_XILINX_TPG=mCONFIG_VIDEO_XILINX_VTC=m
#
# MMC/SDIO DVB adapters
#CONFIG_SMS_SDIO_DRV=mCONFIG_V4L_TEST_DRIVERS=yCONFIG_VIDEO_VIM2M=mCONFIG_VIDEO_VICODEC=mCONFIG_VIDEO_VIMC=mCONFIG_VIDEO_VIVID=mCONFIG_VIDEO_VIVID_CEC=yCONFIG_VIDEO_VIVID_MAX_DEVS=64CONFIG_VIDEO_VISL=mCONFIG_VISL_DEBUGFS=yCONFIG_DVB_TEST_DRIVERS=yCONFIG_DVB_VIDTV=m
#
# FireWire (IEEE 1394) Adapters
#CONFIG_DVB_FIREDTV=mCONFIG_DVB_FIREDTV_INPUT=yCONFIG_MEDIA_COMMON_OPTIONS=y
#
# common driver options # CONFIG_CYPRESS_FIRMWARE=m CONFIG_TTPCI_EEPROM=m CONFIG_VIDEO_CX2341X=m CONFIG_VIDEO_TVEEPROM=m CONFIG_DVB_B2C2_FLEXCOP=m CONFIG_DVB_B2C2_FLEXCOP_DEBUG=y CONFIG_SMS_SIANO_MDTV=m CONFIG_SMS_SIANO_RC=y CONFIG_SMS_SIANO_DEBUGFS=y CONFIG_VIDEO_V4L2_TPG=m CONFIG_VIDEOBUF2_CORE=m CONFIG_VIDEOBUF2_V4L2=m CONFIG_VIDEOBUF2_MEMOPS=m CONFIG_VIDEOBUF2_DMA_CONTIG=m CONFIG_VIDEOBUF2_VMALLOC=m CONFIG_VIDEOBUF2_DMA_SG=m # end of Media drivers
#
# Media ancillary drivers
#CONFIG_MEDIA_ATTACH=y
#
# IR I2C driver auto-selected by 'Autoselect ancillary drivers' #CONFIG_VIDEO_IR_I2C=m
#
# Camera sensor devices
#CONFIG_VIDEO_APTINA_PLL=mCONFIG_VIDEO_CCS_PLL=mCONFIG_VIDEO_AR0521=mCONFIG_VIDEO_HI556=mCONFIG_VIDEO_HI846=mCONFIG_VIDEO_HI847=mCONFIG_VIDEO_IMX208=mCONFIG_VIDEO_IMX214=mCONFIG_VIDEO_IMX219=mCONFIG_VIDEO_IMX258=mCONFIG_VIDEO_IMX274=mCONFIG_VIDEO_IMX290=mCONFIG_VIDEO_IMX319=mCONFIG_VIDEO_IMX334=mCONFIG_VIDEO_IMX335=mCONFIG_VIDEO_IMX355=mCONFIG_VIDEO_IMX412=mCONFIG_VIDEO_MAX9271_LIB=mCONFIG_VIDEO_MT9M001=mCONFIG_VIDEO_MT9M032=mCONFIG_VIDEO_MT9M111=mCONFIG_VIDEO_MT9P031=mCONFIG_VIDEO_MT9T001=mCONFIG_VIDEO_MT9T112=mCONFIG_VIDEO_MT9V011=mCONFIG_VIDEO_MT9V032=mCONFIG_VIDEO_MT9V111=mCONFIG_VIDEO_NOON010PC30=mCONFIG_VIDEO_OG01A1B=mCONFIG_VIDEO_OV02A10=mCONFIG_VIDEO_OV08D10=mCONFIG_VIDEO_OV08X40=mCONFIG_VIDEO_OV13858=mCONFIG_VIDEO_OV13B10=mCONFIG_VIDEO_OV2640=mCONFIG_VIDEO_OV2659=mCONFIG_VIDEO_OV2680=mCONFIG_VIDEO_OV2685=mCONFIG_VIDEO_OV2740=mCONFIG_VIDEO_OV4689=mCONFIG_VIDEO_OV5640=mCONFIG_VIDEO_OV5645=mCONFIG_VIDEO_OV5647=mCONFIG_VIDEO_OV5670=mCONFIG_VIDEO_OV5675=mCONFIG_VIDEO_OV5693=mCONFIG_VIDEO_OV5695=mCONFIG_VIDEO_OV6650=mCONFIG_VIDEO_OV7251=mCONFIG_VIDEO_OV7640=mCONFIG_VIDEO_OV7670=mCONFIG_VIDEO_OV772X=mCONFIG_VIDEO_OV7740=mCONFIG_VIDEO_OV8856=mCONFIG_VIDEO_OV9282=mCONFIG_VIDEO_OV9640=mCONFIG_VIDEO_OV9650=mCONFIG_VIDEO_OV9734=mCONFIG_VIDEO_RDACM20=mCONFIG_VIDEO_RDACM21=mCONFIG_VIDEO_RJ54N1=mCONFIG_VIDEO_S5C73M3=mCONFIG_VIDEO_S5K5BAF=mCONFIG_VIDEO_S5K6A3=mCONFIG_VIDEO_S5K6AA=mCONFIG_VIDEO_SR030PC30=mCONFIG_VIDEO_ST_VGXY61=mCONFIG_VIDEO_VS6624=mCONFIG_VIDEO_CCS=mCONFIG_VIDEO_ET8EK8=mCONFIG_VIDEO_M5MOLS=m
# end of Camera sensor devices
#
# Lens drivers
#CONFIG_VIDEO_AD5820=mCONFIG_VIDEO_AK7375=mCONFIG_VIDEO_DW9714=mCONFIG_VIDEO_DW9768=mCONFIG_VIDEO_DW9807_VCM=m
# end of Lens drivers
#
# Flash devices
#CONFIG_VIDEO_ADP1653=mCONFIG_VIDEO_LM3560=mCONFIG_VIDEO_LM3646=m
# end of Flash devices
#
# Audio decoders, processors and mixers
#CONFIG_VIDEO_CS3308=mCONFIG_VIDEO_CS5345=mCONFIG_VIDEO_CS53L32A=mCONFIG_VIDEO_MSP3400=mCONFIG_VIDEO_SONY_BTF_MPX=mCONFIG_VIDEO_TDA1997X=mCONFIG_VIDEO_TDA7432=mCONFIG_VIDEO_TDA9840=mCONFIG_VIDEO_TEA6415C=mCONFIG_VIDEO_TEA6420=mCONFIG_VIDEO_TLV320AIC23B=mCONFIG_VIDEO_TVAUDIO=mCONFIG_VIDEO_UDA1342=mCONFIG_VIDEO_VP27SMPX=mCONFIG_VIDEO_WM8739=mCONFIG_VIDEO_WM8775=m
# end of Audio decoders, processors and mixers
#
# RDS decoders
#CONFIG_VIDEO_SAA6588=m
# end of RDS decoders
#
# Video decoders
#CONFIG_VIDEO_ADV7180=mCONFIG_VIDEO_ADV7183=mCONFIG_VIDEO_ADV748X=mCONFIG_VIDEO_ADV7604=mCONFIG_VIDEO_ADV7604_CEC=yCONFIG_VIDEO_ADV7842=mCONFIG_VIDEO_ADV7842_CEC=yCONFIG_VIDEO_BT819=mCONFIG_VIDEO_BT856=mCONFIG_VIDEO_BT866=mCONFIG_VIDEO_ISL7998X=mCONFIG_VIDEO_KS0127=mCONFIG_VIDEO_MAX9286=mCONFIG_VIDEO_ML86V7667=mCONFIG_VIDEO_SAA7110=mCONFIG_VIDEO_SAA711X=mCONFIG_VIDEO_TC358743=mCONFIG_VIDEO_TC358743_CEC=yCONFIG_VIDEO_TVP514X=mCONFIG_VIDEO_TVP5150=mCONFIG_VIDEO_TVP7002=mCONFIG_VIDEO_TW2804=mCONFIG_VIDEO_TW9903=mCONFIG_VIDEO_TW9906=mCONFIG_VIDEO_TW9910=mCONFIG_VIDEO_VPX3220=m
#
# Video and audio decoders
#CONFIG_VIDEO_SAA717X=mCONFIG_VIDEO_CX25840=m
# end of Video decoders
#
# Video encoders
#CONFIG_VIDEO_AD9389B=mCONFIG_VIDEO_ADV7170=mCONFIG_VIDEO_ADV7175=mCONFIG_VIDEO_ADV7343=mCONFIG_VIDEO_ADV7393=mCONFIG_VIDEO_ADV7511=mCONFIG_VIDEO_ADV7511_CEC=yCONFIG_VIDEO_AK881X=mCONFIG_VIDEO_SAA7127=mCONFIG_VIDEO_SAA7185=mCONFIG_VIDEO_THS8200=m
# end of Video encoders
#
# Video improvement chips
#CONFIG_VIDEO_UPD64031A=mCONFIG_VIDEO_UPD64083=m
# end of Video improvement chips
#
# Audio/Video compression chips
#CONFIG_VIDEO_SAA6752HS=m
# end of Audio/Video compression chips
#
# SDR tuner chips
#CONFIG_SDR_MAX2175=m
# end of SDR tuner chips
#
# Miscellaneous helper chips
#CONFIG_VIDEO_I2C=mCONFIG_VIDEO_M52790=mCONFIG_VIDEO_ST_MIPID02=mCONFIG_VIDEO_THS7303=m
# end of Miscellaneous helper chips
#
# Media SPI Adapters
#CONFIG_CXD2880_SPI_DRV=mCONFIG_VIDEO_GS1662=m
# end of Media SPI Adapters
CONFIG_MEDIA_TUNER=m
#
# Customize TV tuners
#CONFIG_MEDIA_TUNER_E4000=mCONFIG_MEDIA_TUNER_FC0011=mCONFIG_MEDIA_TUNER_FC0012=mCONFIG_MEDIA_TUNER_FC0013=mCONFIG_MEDIA_TUNER_FC2580=mCONFIG_MEDIA_TUNER_IT913X=mCONFIG_MEDIA_TUNER_M88RS6000T=mCONFIG_MEDIA_TUNER_MAX2165=mCONFIG_MEDIA_TUNER_MC44S803=mCONFIG_MEDIA_TUNER_MSI001=mCONFIG_MEDIA_TUNER_MT2060=mCONFIG_MEDIA_TUNER_MT2063=mCONFIG_MEDIA_TUNER_MT20XX=mCONFIG_MEDIA_TUNER_MT2131=mCONFIG_MEDIA_TUNER_MT2266=mCONFIG_MEDIA_TUNER_MXL301RF=mCONFIG_MEDIA_TUNER_MXL5005S=mCONFIG_MEDIA_TUNER_MXL5007T=mCONFIG_MEDIA_TUNER_QM1D1B0004=mCONFIG_MEDIA_TUNER_QM1D1C0042=mCONFIG_MEDIA_TUNER_QT1010=mCONFIG_MEDIA_TUNER_R820T=mCONFIG_MEDIA_TUNER_SI2157=mCONFIG_MEDIA_TUNER_SIMPLE=mCONFIG_MEDIA_TUNER_TDA18212=mCONFIG_MEDIA_TUNER_TDA18218=mCONFIG_MEDIA_TUNER_TDA18250=mCONFIG_MEDIA_TUNER_TDA18271=mCONFIG_MEDIA_TUNER_TDA827X=mCONFIG_MEDIA_TUNER_TDA8290=mCONFIG_MEDIA_TUNER_TDA9887=mCONFIG_MEDIA_TUNER_TEA5761=mCONFIG_MEDIA_TUNER_TEA5767=mCONFIG_MEDIA_TUNER_TUA9001=mCONFIG_MEDIA_TUNER_XC2028=mCONFIG_MEDIA_TUNER_XC4000=mCONFIG_MEDIA_TUNER_XC5000=m
# end of Customize TV tuners
#
# Customise DVB Frontends
#
#
# Multistandard (satellite) frontends
#CONFIG_DVB_M88DS3103=mCONFIG_DVB_MXL5XX=mCONFIG_DVB_STB0899=mCONFIG_DVB_STB6100=m
CONFIG_DVB_STV090x=mCONFIG_DVB_STV0910=m
CONFIG_DVB_STV6110x=mCONFIG_DVB_STV6111=m
#
# Multistandard (cable + terrestrial) frontends
#CONFIG_DVB_DRXK=mCONFIG_DVB_MN88472=mCONFIG_DVB_MN88473=mCONFIG_DVB_SI2165=mCONFIG_DVB_TDA18271C2DD=m
#
# DVB-S (satellite) frontends
#CONFIG_DVB_CX24110=mCONFIG_DVB_CX24116=mCONFIG_DVB_CX24117=mCONFIG_DVB_CX24120=mCONFIG_DVB_CX24123=mCONFIG_DVB_DS3000=mCONFIG_DVB_MB86A16=mCONFIG_DVB_MT312=mCONFIG_DVB_S5H1420=mCONFIG_DVB_SI21XX=mCONFIG_DVB_STB6000=mCONFIG_DVB_STV0288=mCONFIG_DVB_STV0299=mCONFIG_DVB_STV0900=mCONFIG_DVB_STV6110=mCONFIG_DVB_TDA10071=mCONFIG_DVB_TDA10086=mCONFIG_DVB_TDA8083=mCONFIG_DVB_TDA8261=mCONFIG_DVB_TDA826X=mCONFIG_DVB_TS2020=mCONFIG_DVB_TUA6100=mCONFIG_DVB_TUNER_CX24113=mCONFIG_DVB_TUNER_ITD1000=mCONFIG_DVB_VES1X93=mCONFIG_DVB_ZL10036=mCONFIG_DVB_ZL10039=m
#
# DVB-T (terrestrial) frontends
#CONFIG_DVB_AF9013=mCONFIG_DVB_AS102_FE=mCONFIG_DVB_CX22700=mCONFIG_DVB_CX22702=mCONFIG_DVB_CXD2820R=mCONFIG_DVB_CXD2841ER=mCONFIG_DVB_DIB3000MB=mCONFIG_DVB_DIB3000MC=mCONFIG_DVB_DIB7000M=mCONFIG_DVB_DIB7000P=mCONFIG_DVB_DIB9000=mCONFIG_DVB_DRXD=mCONFIG_DVB_EC100=mCONFIG_DVB_GP8PSK_FE=mCONFIG_DVB_L64781=mCONFIG_DVB_MT352=mCONFIG_DVB_NXT6000=mCONFIG_DVB_RTL2830=mCONFIG_DVB_RTL2832=mCONFIG_DVB_RTL2832_SDR=mCONFIG_DVB_S5H1432=mCONFIG_DVB_SI2168=mCONFIG_DVB_SP887X=mCONFIG_DVB_STV0367=mCONFIG_DVB_TDA10048=mCONFIG_DVB_TDA1004X=mCONFIG_DVB_ZD1301_DEMOD=mCONFIG_DVB_ZL10353=mCONFIG_DVB_CXD2880=m
#
# DVB-C (cable) frontends
#CONFIG_DVB_STV0297=mCONFIG_DVB_TDA10021=mCONFIG_DVB_TDA10023=mCONFIG_DVB_VES1820=m
#
# ATSC (North American/Korean Terrestrial/Cable DTV) frontends #CONFIG_DVB_AU8522=mCONFIG_DVB_AU8522_DTV=mCONFIG_DVB_AU8522_V4L=mCONFIG_DVB_BCM3510=mCONFIG_DVB_LG2160=mCONFIG_DVB_LGDT3305=mCONFIG_DVB_LGDT3306A=mCONFIG_DVB_LGDT330X=mCONFIG_DVB_MXL692=mCONFIG_DVB_NXT200X=mCONFIG_DVB_OR51132=mCONFIG_DVB_OR51211=mCONFIG_DVB_S5H1409=mCONFIG_DVB_S5H1411=m
#
# ISDB-T (terrestrial) frontends
#CONFIG_DVB_DIB8000=mCONFIG_DVB_MB86A20S=mCONFIG_DVB_S921=m
#
# ISDB-S (satellite) & ISDB-T (terrestrial) frontends #CONFIG_DVB_MN88443X=mCONFIG_DVB_TC90522=m
#
# Digital terrestrial only tuners/PLL
#CONFIG_DVB_PLL=mCONFIG_DVB_TUNER_DIB0070=mCONFIG_DVB_TUNER_DIB0090=m
#
# SEC control devices for DVB-S
#CONFIG_DVB_A8293=mCONFIG_DVB_AF9033=mCONFIG_DVB_ASCOT2E=mCONFIG_DVB_ATBM8830=mCONFIG_DVB_HELENE=mCONFIG_DVB_HORUS3A=mCONFIG_DVB_ISL6405=mCONFIG_DVB_ISL6421=mCONFIG_DVB_ISL6423=mCONFIG_DVB_IX2505V=mCONFIG_DVB_LGS8GL5=mCONFIG_DVB_LGS8GXX=mCONFIG_DVB_LNBH25=mCONFIG_DVB_LNBH29=mCONFIG_DVB_LNBP21=mCONFIG_DVB_LNBP22=mCONFIG_DVB_M88RS2000=m
CONFIG_DVB_TDA665x=mCONFIG_DVB_DRX39XYJ=m
#
# Common Interface (EN50221) controller drivers
#CONFIG_DVB_CXD2099=mCONFIG_DVB_SP2=m
# end of Customise DVB Frontends
#
# Tools to develop new frontends
#CONFIG_DVB_DUMMY_FE=m
# end of Media ancillary drivers
5,775 lines not shown · raw message
Part of this message is not shown here. View the raw message.