Basic StarFive JH7110 RISC-V SoC support
Subsystems (13)
cover Basic StarFive JH7110 RISC-V SoC support
This series adds basic support for the StarFive JH7110 RISC-V SoC to boot up and get a serial console. This series includes basic clock, reset, pinctrl and uart drivers, which are necessary for booting. It's should be noted that the reset and clock driver codes of JH7110 are partly common with those of JH7100, so the common codes are factored out and can be reused by drivers of JH7110 and other more SoCs from StarFive.
The JH7110 is the upgraded version of JH7100 and also the first official released version of JH71XX series SoCs from StarFive Technology Ltd. The VisionFive 2 boards equipped with JH7110 SoCs are launched recently [1]. More information and support can visit RVspace wiki [2].
This series is also available at
https://github.com/hal-feng/linux/commits/visionfive2-minimal
[1] https://www.cnx-software.com/2022/08/23/starfive-visionfive-2-quad-core-risc-v-sbc-linux/
[2] https://wiki.rvspace.org/
Emil Renner Berthing (17):
dt-bindings: riscv: Add StarFive JH7110 bindings
dt-bindings: timer: Add StarFive JH7110 clint
dt-bindings: interrupt-controller: Add StarFive JH7110 plic
dt-bindings: sifive-l2-cache: Support StarFive JH71x0 SoCs
soc: sifive: l2 cache: Convert to platform driver
soc: sifive: l2 cache: Add StarFive JH71x0 support
reset: starfive: jh7100: Use 32bit I/O on 32bit registers
dt-bindings: reset: Add StarFive JH7110 reset definitions
clk: starfive: Factor out common clock driver code
dt-bindings: clock: Add StarFive JH7110 system clock definitions
dt-bindings: clock: Add starfive,jh7110-clkgen-sys bindings
clk: starfive: Add StarFive JH7110 system clock driver
dt-bindings: clock: Add StarFive JH7110 always-on definitions
dt-bindings: clock: Add starfive,jh7110-clkgen-aon bindings
clk: starfive: Add StarFive JH7110 always-on clock driver
RISC-V: Add initial StarFive JH7110 device tree
RISC-V: Add StarFive JH7110 VisionFive2 board device tree
Hal Feng (8):
reset: starfive: jh7100: Use regmap APIs to operate registers
reset: starfive: jh7100: Move necessary properties to device tree
reset: starfive: Rename 'reset-starfive-jh7100.c' to
'reset-starfive.c'
dt-bindings: reset: Add starfive,jh7110-reset bindings
reset: starfive: Add StarFive JH7110 SoC support
clk: starfive: Use regmap APIs to operate registers
RISC-V: defconfig: Enable CONFIG_SERIAL_8250_DW
RISC-V: Add StarFive JH7100 and JH7110 SoC Kconfig options
Jianlong Huang (5):
pinctrl: Create subdirectory for StarFive drivers
pinctrl: starfive: Rename "pinctrl-starfive" to
"pinctrl-starfive-jh7100"
dt-bindings: pinctrl: Add StarFive JH7110 pinctrl definitions
dt-bindings: pinctrl: Add StarFive JH7110 pinctrl bindings
pinctrl: starfive: Add StarFive JH7110 driver
.../clock/starfive,jh7110-clkgen-aon.yaml | 62 ++
.../clock/starfive,jh7110-clkgen-sys.yaml | 69 ++
.../sifive,plic-1.0.0.yaml | 1 +
.../pinctrl/starfive,jh7100-pinctrl.yaml | 2 +-
.../pinctrl/starfive,jh7110-pinctrl.yaml | 202 ++++
.../bindings/reset/starfive,jh7100-reset.yaml | 20 +
.../bindings/reset/starfive,jh7110-reset.yaml | 54 +
.../bindings/riscv/sifive-l2-cache.yaml | 4 +
.../devicetree/bindings/riscv/starfive.yaml | 3 +
.../bindings/timer/sifive,clint.yaml | 1 +
MAINTAINERS | 27 +-
arch/riscv/Kconfig.socs | 28 +-
arch/riscv/boot/dts/starfive/Makefile | 3 +-
.../dts/starfive/jh7100-beaglev-starlight.dts | 2 +-
arch/riscv/boot/dts/starfive/jh7100.dtsi | 3 +
.../jh7110-starfive-visionfive-v2.dts | 91 ++
arch/riscv/boot/dts/starfive/jh7110.dtsi | 449 +++++++++
arch/riscv/configs/defconfig | 1 +
drivers/clk/starfive/Kconfig | 29 +-
drivers/clk/starfive/Makefile | 6 +-
.../clk/starfive/clk-starfive-jh7100-audio.c | 138 +--
drivers/clk/starfive/clk-starfive-jh7100.c | 836 +++++-----------
drivers/clk/starfive/clk-starfive-jh7100.h | 112 ---
.../clk/starfive/clk-starfive-jh7110-aon.c | 161 +++
.../clk/starfive/clk-starfive-jh7110-sys.c | 648 ++++++++++++
drivers/clk/starfive/clk-starfive.c | 349 +++++++
drivers/clk/starfive/clk-starfive.h | 112 +++
drivers/pinctrl/Kconfig | 18 +-
drivers/pinctrl/Makefile | 2 +-
drivers/pinctrl/starfive/Kconfig | 37 +
drivers/pinctrl/starfive/Makefile | 8 +
drivers/pinctrl/starfive/pinctrl-jh7110-aon.c | 718 ++++++++++++++
drivers/pinctrl/starfive/pinctrl-jh7110-sys.c | 925 +++++++++++++++++
.../pinctrl-starfive-jh7100.c} | 10 +-
drivers/pinctrl/starfive/pinctrl-starfive.c | 539 ++++++++++
drivers/pinctrl/starfive/pinctrl-starfive.h | 131 +++
drivers/reset/Kconfig | 7 +-
drivers/reset/Makefile | 2 +-
drivers/reset/reset-starfive-jh7100.c | 173 ----
drivers/reset/reset-starfive.c | 218 ++++
drivers/soc/Makefile | 2 +-
drivers/soc/sifive/Kconfig | 2 +-
drivers/soc/sifive/sifive_l2_cache.c | 86 +-
.../dt-bindings/clock/starfive-jh7110-aon.h | 26 +
.../dt-bindings/clock/starfive-jh7110-sys.h | 215 ++++
...l-starfive.h => pinctrl-starfive-jh7100.h} | 6 +-
.../pinctrl/pinctrl-starfive-jh7110.h | 931 ++++++++++++++++++
include/dt-bindings/reset/starfive-jh7110.h | 154 +++
48 files changed, 6604 insertions(+), 1019 deletions(-)
create mode 100644 Documentation/devicetree/bindings/clock/starfive,jh7110-clkgen-aon.yaml
create mode 100644 Documentation/devicetree/bindings/clock/starfive,jh7110-clkgen-sys.yaml
create mode 100644 Documentation/devicetree/bindings/pinctrl/starfive,jh7110-pinctrl.yaml
create mode 100644 Documentation/devicetree/bindings/reset/starfive,jh7110-reset.yaml
create mode 100644 arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-v2.dts
create mode 100644 arch/riscv/boot/dts/starfive/jh7110.dtsi
delete mode 100644 drivers/clk/starfive/clk-starfive-jh7100.h
create mode 100644 drivers/clk/starfive/clk-starfive-jh7110-aon.c
create mode 100644 drivers/clk/starfive/clk-starfive-jh7110-sys.c
create mode 100644 drivers/clk/starfive/clk-starfive.c
create mode 100644 drivers/clk/starfive/clk-starfive.h
create mode 100644 drivers/pinctrl/starfive/Kconfig
create mode 100644 drivers/pinctrl/starfive/Makefile
create mode 100644 drivers/pinctrl/starfive/pinctrl-jh7110-aon.c
create mode 100644 drivers/pinctrl/starfive/pinctrl-jh7110-sys.c
rename drivers/pinctrl/{pinctrl-starfive.c => starfive/pinctrl-starfive-jh7100.c} (99%)
create mode 100644 drivers/pinctrl/starfive/pinctrl-starfive.c
create mode 100644 drivers/pinctrl/starfive/pinctrl-starfive.h
delete mode 100644 drivers/reset/reset-starfive-jh7100.c
create mode 100644 drivers/reset/reset-starfive.c
create mode 100644 include/dt-bindings/clock/starfive-jh7110-aon.h
create mode 100644 include/dt-bindings/clock/starfive-jh7110-sys.h
rename include/dt-bindings/pinctrl/{pinctrl-starfive.h => pinctrl-starfive-jh7100.h} (98%)
create mode 100644 include/dt-bindings/pinctrl/pinctrl-starfive-jh7110.h
create mode 100644 include/dt-bindings/reset/starfive-jh7110.hSignature · 1 line
2.17.1
PATCH 1/30 dt-bindings: riscv: Add StarFive JH7110 bindings
From: Emil Renner Berthing <[email protected]>
Add device tree bindings for the StarFive JH7110 RISC-V SoC and the VisionFive2 board for it.
--- Documentation/devicetree/bindings/riscv/starfive.yaml | 3 +++ 1 file changed, 3 insertions(+)
Documentation/devicetree/bindings/riscv/starfive.yaml +3 -0
@@ -21,6 +21,9 @@ properties: - items: - const: beagle,beaglev-starlight-jh7100-r0 - const: starfive,jh7100 + - items: + - const: starfive,visionfive-v2 + - const: starfive,jh7110 additionalProperties: true
Signature · 1 line
2.17.1
Re: [PATCH v1 01/30] dt-bindings: riscv: Add StarFive JH7110 bindings
Quoted 1 line · Hal Feng
From: Emil Renner Berthing <[email protected]>
Drop last "bindings" from subject, it's redundant.
Quoted 15 lines
Add device tree bindings for the StarFive JH7110 RISC-V SoC and the VisionFive2 board for it.
Signed-off-by Emil Renner Berthing <[email protected]>Signed-off-by Hal Feng <[email protected]>--- Documentation/devicetree/bindings/riscv/starfive.yaml | 3 +++ 1 file changed, 3 insertions(+)Documentation/devicetree/bindings/riscv/starfive.yaml +0
-0
Documentation/devicetree/bindings/riscv/starfive.yaml properties: · line 23
Quoted 3 lines
Documentation/devicetree/bindings/riscv/starfive.yaml +0
-0@@ -21,6 +21,9 @@ properties: - items: - const: beagle,beaglev-starlight-jh7100-r0 - const: starfive,jh7100
Blank line.
Documentation/devicetree/bindings/riscv/starfive.yaml properties: · line 29
Quoted 6 lines
Documentation/devicetree/bindings/riscv/starfive.yaml +3
-0+ - items: + - const: starfive,visionfive-v2 + - const: starfive,jh7110 additionalProperties: true
Best regards,
Krzysztof
Re: [PATCH v1 01/30] dt-bindings: riscv: Add StarFive JH7110 bindings
Quoted 4 lines · Krzysztof Kozlowski
Quoted 1 line · Hal Feng
From: Emil Renner Berthing <[email protected]>
Drop last "bindings" from subject, it's redundant.
Will fix. Thanks.
Quoted 11 lines
Quoted 11 lines
Add device tree bindings for the StarFive JH7110 RISC-V SoC and the VisionFive2 board for it.
Signed-off-by Emil Renner Berthing <[email protected]>Signed-off-by Hal Feng <[email protected]>--- Documentation/devicetree/bindings/riscv/starfive.yaml | 3 +++ 1 file changed, 3 insertions(+)
Quoted 10 lines
Documentation/devicetree/bindings/riscv/starfive.yaml properties: · line 23
Quoted 8 lines
Documentation/devicetree/bindings/riscv/starfive.yaml +0
-0@@ -21,6 +21,9 @@ properties: - items: - const: beagle,beaglev-starlight-jh7100-r0 - const: starfive,jh7100Blank line.
Will fix. Thanks.
Best Regards,
Hal
PATCH 2/30 dt-bindings: timer: Add StarFive JH7110 clint
In reply to Hal FengFrom: Emil Renner Berthing <[email protected]>
Add compatible string for the StarFive JH7110 clint.
--- Documentation/devicetree/bindings/timer/sifive,clint.yaml | 1 + 1 file changed, 1 insertion(+)
Documentation/devicetree/bindings/timer/sifive,clint.yaml +1 -0
@@ -26,6 +26,7 @@ properties: - enum: - sifive,fu540-c000-clint - starfive,jh7100-clint + - starfive,jh7110-clint - canaan,k210-clint - const: sifive,clint0
Signature · 1 line
2.17.1
Re: [PATCH v1 02/30] dt-bindings: timer: Add StarFive JH7110 clint
Quoted 6 lines · Hal Feng
From: Emil Renner Berthing <[email protected]>
Add compatible string for the StarFive JH7110 clint.
Signed-off-by Emil Renner Berthing <[email protected]>Signed-off-by Hal Feng <[email protected]>
Best regards,
Krzysztof
_______________________________________________
linux-riscv mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-riscv
PATCH 3/30 dt-bindings: interrupt-controller: Add StarFive JH7110 plic
In reply to Hal FengFrom: Emil Renner Berthing <[email protected]>
Add compatible string for StarFive JH7110 plic.
--- .../bindings/interrupt-controller/sifive,plic-1.0.0.yaml | 1 + 1 file changed, 1 insertion(+)
Documentation/devicetree/bindings/interrupt-controller/sifive,plic-1.0.0.yaml +1 -0
@@ -60,6 +60,7 @@ properties: - enum: - sifive,fu540-c000-plic - starfive,jh7100-plic + - starfive,jh7110-plic - canaan,k210-plic - const: sifive,plic-1.0.0 - items:
Signature · 1 line
2.17.1
Re: [PATCH v1 03/30] dt-bindings: interrupt-controller: Add StarFive JH7110 plic
Quoted 6 lines · Hal Feng
From: Emil Renner Berthing <[email protected]>
Add compatible string for StarFive JH7110 plic.
Signed-off-by Emil Renner Berthing <[email protected]>Signed-off-by Hal Feng <[email protected]>
Best regards,
Krzysztof
PATCH 4/30 dt-bindings: sifive-l2-cache: Support StarFive JH71x0 SoCs
In reply to Hal FengFrom: Emil Renner Berthing <[email protected]>
This cache controller is also used on the StarFive JH7100 and JH7110 SoCs.
--- Documentation/devicetree/bindings/riscv/sifive-l2-cache.yaml | 4 ++++ 1 file changed, 4 insertions(+)
Documentation/devicetree/bindings/riscv/sifive-l2-cache.yaml +4 -0
@@ -24,6 +24,8 @@ select: enum: - sifive,fu540-c000-ccache - sifive,fu740-c000-ccache + - starfive,jh7100-ccache + - starfive,jh7110-ccache required: - compatible
@@ -35,6 +37,8 @@ properties: - enum: - sifive,fu540-c000-ccache - sifive,fu740-c000-ccache + - starfive,jh7100-ccache + - starfive,jh7110-ccache - const: cache - items: - const: microchip,mpfs-ccache
Signature · 7 lines
2.17.1 _______________________________________________ linux-riscv mailing list [email protected] http://lists.infradead.org/mailman/listinfo/linux-riscv
Re: [PATCH v1 04/30] dt-bindings: sifive-l2-cache: Support StarFive JH71x0 SoCs
Quoted 4 lines · Hal Feng
From: Emil Renner Berthing <[email protected]>
This cache controller is also used on the StarFive JH7100 and JH7110 SoCs.
Best regards,
Krzysztof
Conor Dooley
maintainerRe: [PATCH v1 04/30] dt-bindings: sifive-l2-cache: Support StarFive JH71x0 SoCs
In reply to Hal FengQuoted 4 lines · Hal Feng
From: Emil Renner Berthing <[email protected]>
This cache controller is also used on the StarFive JH7100 and JH7110 SoCs.
Ditto this patch, hopefully [0] will have landed as 6.1 material before you get around to an actual v2.
Thanks,
Conor
0 - https://lore.kernel.org/linux-riscv/[email protected]/
Quoted 37 lines
Signed-off-by Emil Renner Berthing <[email protected]>Signed-off-by Hal Feng <[email protected]>--- Documentation/devicetree/bindings/riscv/sifive-l2-cache.yaml | 4 ++++ 1 file changed, 4 insertions(+)Documentation/devicetree/bindings/riscv/sifive-l2-cache.yaml +4
-0@@ -24,6 +24,8 @@ select: enum: - sifive,fu540-c000-ccache - sifive,fu740-c000-ccache + - starfive,jh7100-ccache + - starfive,jh7110-ccache required: - compatible@@ -35,6 +37,8 @@ properties: - enum: - sifive,fu540-c000-ccache - sifive,fu740-c000-ccache + - starfive,jh7100-ccache + - starfive,jh7110-ccache - const: cache - items: - const: microchip,mpfs-ccacheSignature · 7 lines
2.17.1 _______________________________________________ linux-riscv mailing list [email protected] http://lists.infradead.org/mailman/listinfo/linux-riscv
_______________________________________________
linux-riscv mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-riscv
Re: [PATCH v1 04/30] dt-bindings: sifive-l2-cache: Support StarFive JH71x0 SoCs
Quoted 6 lines · Conor Dooley
Quoted 4 lines · Hal Feng
From: Emil Renner Berthing <[email protected]>
This cache controller is also used on the StarFive JH7100 and JH7110 SoCs.
Quoted 7 lines
Ditto this patch, hopefully [0] will have landed as 6.1 material before you get around to an actual v2.
Thanks,
Conor
Also, the l2 cache is being proprely named the ccache (composable cache) as it is not necessarily an L2 cache.
Signature · 9 lines
Ben _______________________________________________ linux-riscv mailing list [email protected] http://lists.infradead.org/mailman/listinfo/linux-riscv
Re: [PATCH v1 04/30] dt-bindings: sifive-l2-cache: Support StarFive JH71x0 SoCs
Quoted 10 lines · Ben Dooks
Quoted 9 lines · Conor Dooley
Quoted 4 lines · Hal Feng
From: Emil Renner Berthing <[email protected]>
This cache controller is also used on the StarFive JH7100 and JH7110 SoCs.
Ditto this patch, hopefully [0] will have landed as 6.1 material before you get around to an actual v2.
Quoted 8 lines
Quoted 4 lines
Thanks,
ConorAlso, the l2 cache is being proprely named the ccache (composable cache) as it is not necessarily an L2 cache.
Thanks for reminding. I will modify the code, based on the patches from Zong Li. I hope his patch series will be merged as soon as possible.
Best regards,
Hal
_______________________________________________
linux-riscv mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-riscv
PATCH 5/30 soc: sifive: l2 cache: Convert to platform driver
In reply to Hal FengFrom: Emil Renner Berthing <[email protected]>
This converts the driver to use the builtin_platform_driver_probe macro to initialize the driver. This macro ends up calling device_initcall as was used previously, but also allocates a platform device which gives us access to much nicer APIs such as platform_ioremap_resource, platform_get_irq and dev_err_probe.
--- drivers/soc/sifive/sifive_l2_cache.c | 79 ++++++++++++++-------------- 1 file changed, 40 insertions(+), 39 deletions(-)
drivers/soc/sifive/sifive_l2_cache.c +40 -39
@@ -7,9 +7,9 @@*/ #include <linux/debugfs.h> #include <linux/interrupt.h> -#include <linux/of_irq.h> -#include <linux/of_address.h> -#include <linux/device.h> +#include <linux/io.h> +#include <linux/mod_devicetable.h> +#include <linux/platform_device.h> #include <asm/cacheinfo.h> #include <soc/sifive/sifive_l2_cache.h>
@@ -96,12 +96,6 @@ static void l2_config_read(void)pr_info ("L2CACHE: Index of the largest way enabled: %d\n" , regval); } -static const struct of_device_id sifive_l2_ids[] = { - { .compatible ="sifive,fu540-c000-ccache" }, - { .compatible ="sifive,fu740-c000-ccache" }, - {/* end of table */ }, -}; -static ATOMIC_NOTIFIER_HEAD (l2_err_chain);int register_sifive_l2_error_notifier (struct notifier_block *nb)
@@ -192,36 +186,29 @@ static irqreturn_t l2_int_handler(int irq, void *device)return IRQ_HANDLED ; } -static int __init sifive_l2_init (void ) +static int __init sifive_l2_probe (struct platform_device *pdev) { -struct device_node *np; -struct resource res; -int i, rc, intr_num; - - np =of_find_matching_node (NULL , sifive_l2_ids); -if (!np) -return -ENODEV ; - -if (of_address_to_resource (np,0 , &res)) -return -ENODEV ; - - l2_base =ioremap (res.start,resource_size (&res)); -if (!l2_base) -return -ENOMEM ; - - intr_num =of_property_count_u32_elems (np,"interrupts" ); -if (!intr_num) { -pr_err ("L2CACHE: no interrupts property\n" ); -return -ENODEV ; - } - -for (i =0 ; i < intr_num; i++) { - g_irq[i] =irq_of_parse_and_map (np, i); - rc =request_irq (g_irq[i], l2_int_handler,0 ,"l2_ecc" ,NULL ); -if (rc) { -pr_err ("L2CACHE: Could not request IRQ %d\n" , g_irq[i]); -return rc; - } +struct device *dev = &pdev->dev; +int nirqs; +int ret; +int i; + + l2_base =devm_platform_ioremap_resource (pdev,0 ); +if (IS_ERR (l2_base)) +return PTR_ERR (l2_base); + + nirqs =platform_irq_count (pdev); +if (nirqs <=0 ) +return dev_err_probe (dev, -ENODEV ,"no interrupts\n" ); + +for (i =0 ; i < nirqs; i++) { + g_irq[i] =platform_get_irq (pdev, i); +if (g_irq[i] <0 ) +return g_irq[i]; + + ret =devm_request_irq (dev, g_irq[i], l2_int_handler,0 , pdev->name,NULL ); +if (ret) +return dev_err_probe (dev, ret,"Could not request IRQ %d\n" , g_irq[i]); }l2_config_read ();
@@ -234,4 +221,18 @@ static int __init sifive_l2_init(void)#endif return 0 ; } -device_initcall (sifive_l2_init); + +static const struct of_device_id sifive_l2_match[] = { + { .compatible ="sifive,fu540-c000-ccache" }, + { .compatible ="sifive,fu740-c000-ccache" }, + {/* sentinel */ } +}; + +static struct platform_driver sifive_l2_driver = { + .driver = { + .name ="sifive_l2_cache" , + .of_match_table = sifive_l2_match, + .suppress_bind_attrs = true, + }, +}; +builtin_platform_driver_probe (sifive_l2_driver, sifive_l2_probe);
Signature · 7 lines
2.17.1 _______________________________________________ linux-riscv mailing list [email protected] http://lists.infradead.org/mailman/listinfo/linux-riscv
Conor Dooley
maintainerRe: [PATCH v1 05/30] soc: sifive: l2 cache: Convert to platform driver
Quoted 7 lines · Hal Feng
From: Emil Renner Berthing <[email protected]>
This converts the driver to use the
builtin_platform_driver_probemacro to initialize the driver. This macro ends up callingdevice_initcallas was used previously, but also allocates a platform device which gives us access to much nicer APIs such asplatform_ioremap_resource,platform_get_irqanddev_err_probe.
You should resend the series ignoring this comment, but for v2, I think you should pay attention to following patchset:
https://lore.kernel.org/linux-riscv/[email protected]/
Hopefully by the time you get to a v2, that patchset will have been applied as 6.1 material..
Thanks,
Conor.
Quoted 124 lines
Signed-off-by Emil Renner Berthing <[email protected]>Signed-off-by Hal Feng <[email protected]>--- drivers/soc/sifive/sifive_l2_cache.c | 79 ++++++++++++++-------------- 1 file changed, 40 insertions(+), 39 deletions(-)drivers/soc/sifive/sifive_l2_cache.c +40
-39@@ -7,9 +7,9 @@*/ #include <linux/debugfs.h> #include <linux/interrupt.h> -#include <linux/of_irq.h> -#include <linux/of_address.h> -#include <linux/device.h> +#include <linux/io.h> +#include <linux/mod_devicetable.h> +#include <linux/platform_device.h> #include <asm/cacheinfo.h> #include <soc/sifive/sifive_l2_cache.h> @@ -96,12 +96,6 @@ static void l2_config_read(void)pr_info ("L2CACHE: Index of the largest way enabled: %d\n" , regval); } -static const struct of_device_id sifive_l2_ids[] = { - { .compatible ="sifive,fu540-c000-ccache" }, - { .compatible ="sifive,fu740-c000-ccache" }, - {/* end of table */ }, -}; -static ATOMIC_NOTIFIER_HEAD (l2_err_chain);int register_sifive_l2_error_notifier (struct notifier_block *nb)@@ -192,36 +186,29 @@ static irqreturn_t l2_int_handler(int irq, void *device)return IRQ_HANDLED ; } -static int __init sifive_l2_init (void ) +static int __init sifive_l2_probe (struct platform_device *pdev) { -struct device_node *np; -struct resource res; -int i, rc, intr_num; - - np =of_find_matching_node (NULL , sifive_l2_ids); -if (!np) -return -ENODEV ; - -if (of_address_to_resource (np,0 , &res)) -return -ENODEV ; - - l2_base =ioremap (res.start,resource_size (&res)); -if (!l2_base) -return -ENOMEM ; - - intr_num =of_property_count_u32_elems (np,"interrupts" ); -if (!intr_num) { -pr_err ("L2CACHE: no interrupts property\n" ); -return -ENODEV ; - } - -for (i =0 ; i < intr_num; i++) { - g_irq[i] =irq_of_parse_and_map (np, i); - rc =request_irq (g_irq[i], l2_int_handler,0 ,"l2_ecc" ,NULL ); -if (rc) { -pr_err ("L2CACHE: Could not request IRQ %d\n" , g_irq[i]); -return rc; - } +struct device *dev = &pdev->dev; +int nirqs; +int ret; +int i; + + l2_base =devm_platform_ioremap_resource (pdev,0 ); +if (IS_ERR (l2_base)) +return PTR_ERR (l2_base); + + nirqs =platform_irq_count (pdev); +if (nirqs <=0 ) +return dev_err_probe (dev, -ENODEV ,"no interrupts\n" ); + +for (i =0 ; i < nirqs; i++) { + g_irq[i] =platform_get_irq (pdev, i); +if (g_irq[i] <0 ) +return g_irq[i]; + + ret =devm_request_irq (dev, g_irq[i], l2_int_handler,0 , pdev->name,NULL ); +if (ret) +return dev_err_probe (dev, ret,"Could not request IRQ %d\n" , g_irq[i]); }l2_config_read ();@@ -234,4 +221,18 @@ static int __init sifive_l2_init(void)#endif return 0 ; } -device_initcall (sifive_l2_init); + +static const struct of_device_id sifive_l2_match[] = { + { .compatible ="sifive,fu540-c000-ccache" }, + { .compatible ="sifive,fu740-c000-ccache" }, + {/* sentinel */ } +}; + +static struct platform_driver sifive_l2_driver = { + .driver = { + .name ="sifive_l2_cache" , + .of_match_table = sifive_l2_match, + .suppress_bind_attrs = true, + }, +}; +builtin_platform_driver_probe (sifive_l2_driver, sifive_l2_probe);Signature · 7 lines
2.17.1 _______________________________________________ linux-riscv mailing list [email protected] http://lists.infradead.org/mailman/listinfo/linux-riscv
_______________________________________________
linux-riscv mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-riscv
Re: [PATCH v1 05/30] soc: sifive: l2 cache: Convert to platform driver
In reply to Hal FengQuoted 7 lines · Hal Feng
From: Emil Renner Berthing <[email protected]>
This converts the driver to use the
builtin_platform_driver_probemacro to initialize the driver. This macro ends up callingdevice_initcallas was used previously, but also allocates a platform device which gives us access to much nicer APIs such asplatform_ioremap_resource,platform_get_irqanddev_err_probe.
This is useful, but also there are other changes currently being sorted out by Zong Li (cc'd into this message) which have already been reviewed and are hopefully queued for the next kernel release.
Quoted 73 lines
Signed-off-by Emil Renner Berthing <[email protected]>Signed-off-by Hal Feng <[email protected]>--- drivers/soc/sifive/sifive_l2_cache.c | 79 ++++++++++++++-------------- 1 file changed, 40 insertions(+), 39 deletions(-)drivers/soc/sifive/sifive_l2_cache.c +6
-38@@ -7,9 +7,9 @@*/ #include <linux/debugfs.h> #include <linux/interrupt.h> -#include <linux/of_irq.h> -#include <linux/of_address.h> -#include <linux/device.h> +#include <linux/io.h> +#include <linux/mod_devicetable.h> +#include <linux/platform_device.h> #include <asm/cacheinfo.h> #include <soc/sifive/sifive_l2_cache.h> @@ -96,12 +96,6 @@ static void l2_config_read(void)pr_info ("L2CACHE: Index of the largest way enabled: %d\n" , regval); } -static const struct of_device_id sifive_l2_ids[] = { - { .compatible ="sifive,fu540-c000-ccache" }, - { .compatible ="sifive,fu740-c000-ccache" }, - {/* end of table */ }, -}; -static ATOMIC_NOTIFIER_HEAD (l2_err_chain);int register_sifive_l2_error_notifier (struct notifier_block *nb)@@ -192,36 +186,29 @@ static irqreturn_t l2_int_handler(int irq, void *device)return IRQ_HANDLED ; } -static int __init sifive_l2_init (void ) +static int __init sifive_l2_probe (struct platform_device *pdev) { -struct device_node *np; -struct resource res; -int i, rc, intr_num; - - np =of_find_matching_node (NULL , sifive_l2_ids); -if (!np) -return -ENODEV ; - -if (of_address_to_resource (np,0 , &res)) -return -ENODEV ; - - l2_base =ioremap (res.start,resource_size (&res)); -if (!l2_base) -return -ENOMEM ; - - intr_num =of_property_count_u32_elems (np,"interrupts" ); -if (!intr_num) { -pr_err ("L2CACHE: no interrupts property\n" ); -return -ENODEV ; - } - -for (i =0 ; i < intr_num; i++) { - g_irq[i] =irq_of_parse_and_map (np, i); - rc =request_irq (g_irq[i], l2_int_handler,0 ,"l2_ecc" ,NULL ); -if (rc) { -pr_err ("L2CACHE: Could not request IRQ %d\n" , g_irq[i]); -return rc; - } +struct device *dev = &pdev->dev; +int nirqs;
drivers/soc/sifive/sifive_l2_cache.c static irqreturn_t l2_int_handler(int irq, void *device) · line 202
Quoted 10 lines
drivers/soc/sifive/sifive_l2_cache.c +10
-0+int ret; +int i; + + l2_base =devm_platform_ioremap_resource (pdev,0 ); +if (IS_ERR (l2_base)) +return PTR_ERR (l2_base); + + nirqs =platform_irq_count (pdev); +if (nirqs <=0 ) +return dev_err_probe (dev, -ENODEV ,"no interrupts\n" );
I wonder if zero irqs is an actual issue here?
drivers/soc/sifive/sifive_l2_cache.c static irqreturn_t l2_int_handler(int irq, void *device) · line 205
Quoted 2 lines
drivers/soc/sifive/sifive_l2_cache.c +2
-0+for (i =0 ; i < nirqs; i++) { + g_irq[i] =platform_get_irq (pdev, i);
I wonder if we need to keep g_irq[] around now? Is it going to be useful in the future?
Quoted 29 lines
drivers/soc/sifive/sifive_l2_cache.c +21
-1+if (g_irq[i] <0 ) +return g_irq[i]; + + ret =devm_request_irq (dev, g_irq[i], l2_int_handler,0 , pdev->name,NULL ); +if (ret) +return dev_err_probe (dev, ret,"Could not request IRQ %d\n" , g_irq[i]); }l2_config_read ();@@ -234,4 +221,18 @@ static int __init sifive_l2_init(void)#endif return 0 ; } -device_initcall (sifive_l2_init); + +static const struct of_device_id sifive_l2_match[] = { + { .compatible ="sifive,fu540-c000-ccache" }, + { .compatible ="sifive,fu740-c000-ccache" }, + {/* sentinel */ } +}; + +static struct platform_driver sifive_l2_driver = { + .driver = { + .name ="sifive_l2_cache" , + .of_match_table = sifive_l2_match, + .suppress_bind_attrs = true, + }, +}; +builtin_platform_driver_probe (sifive_l2_driver, sifive_l2_probe);
Re: [PATCH v1 05/30] soc: sifive: l2 cache: Convert to platform driver
Quoted 10 lines · Ben Dooks
Quoted 7 lines · Hal Feng
From: Emil Renner Berthing <[email protected]>
This converts the driver to use the
builtin_platform_driver_probemacro to initialize the driver. This macro ends up callingdevice_initcallas was used previously, but also allocates a platform device which gives us access to much nicer APIs such asplatform_ioremap_resource,platform_get_irqanddev_err_probe.
Quoted 6 lines
This is useful, but also there are other changes currently being sorted out by Zong Li (cc'd into this message) which have already been reviewed and are hopefully queued for the next kernel release.
Quoted 2 lines
Signed-off-by Emil Renner Berthing <[email protected]>Signed-off-by Hal Feng <[email protected]>
I'm ok with something like this being merged, but please note that if we ever want to support the JH7100 which uses registers in this peripheral to flush the cache for its non-coherent DMAs then this driver needs to be loaded before other peripherals or we will trigger the 2nd warning in arch/riscv/mm/dma-noncoherent.c. I'm not sure we can do that when it's a platform driver. See this patch for an alternative to support the JH71x0s:
https://github.com/esmil/linux/commit/9c5b29da56ae29159c9572c5bb195fe3a1b535c5
/Emil
Quoted 124 lines
Quoted 70 lines
drivers/soc/sifive/sifive_l2_cache.c | 79 ++++++++++++++-------------- 1 file changed, 40 insertions(+), 39 deletions(-)drivers/soc/sifive/sifive_l2_cache.c +6
-38@@ -7,9 +7,9 @@*/ #include <linux/debugfs.h> #include <linux/interrupt.h> -#include <linux/of_irq.h> -#include <linux/of_address.h> -#include <linux/device.h> +#include <linux/io.h> +#include <linux/mod_devicetable.h> +#include <linux/platform_device.h> #include <asm/cacheinfo.h> #include <soc/sifive/sifive_l2_cache.h> @@ -96,12 +96,6 @@ static void l2_config_read(void)pr_info ("L2CACHE: Index of the largest way enabled: %d\n" , regval); } -static const struct of_device_id sifive_l2_ids[] = { - { .compatible ="sifive,fu540-c000-ccache" }, - { .compatible ="sifive,fu740-c000-ccache" }, - {/* end of table */ }, -}; -static ATOMIC_NOTIFIER_HEAD (l2_err_chain);int register_sifive_l2_error_notifier (struct notifier_block *nb)@@ -192,36 +186,29 @@ static irqreturn_t l2_int_handler(int irq, void *device)return IRQ_HANDLED ; } -static int __init sifive_l2_init (void ) +static int __init sifive_l2_probe (struct platform_device *pdev) { -struct device_node *np; -struct resource res; -int i, rc, intr_num; - - np =of_find_matching_node (NULL , sifive_l2_ids); -if (!np) -return -ENODEV ; - -if (of_address_to_resource (np,0 , &res)) -return -ENODEV ; - - l2_base =ioremap (res.start,resource_size (&res)); -if (!l2_base) -return -ENOMEM ; - - intr_num =of_property_count_u32_elems (np,"interrupts" ); -if (!intr_num) { -pr_err ("L2CACHE: no interrupts property\n" ); -return -ENODEV ; - } - -for (i =0 ; i < intr_num; i++) { - g_irq[i] =irq_of_parse_and_map (np, i); - rc =request_irq (g_irq[i], l2_int_handler,0 ,"l2_ecc" ,NULL ); -if (rc) { -pr_err ("L2CACHE: Could not request IRQ %d\n" , g_irq[i]); -return rc; - } +struct device *dev = &pdev->dev; +int nirqs;drivers/soc/sifive/sifive_l2_cache.c static irqreturn_t l2_int_handler(int irq, void *device) · line 202
Quoted 10 lines
drivers/soc/sifive/sifive_l2_cache.c +10
-0+int ret; +int i; + + l2_base =devm_platform_ioremap_resource (pdev,0 ); +if (IS_ERR (l2_base)) +return PTR_ERR (l2_base); + + nirqs =platform_irq_count (pdev); +if (nirqs <=0 ) +return dev_err_probe (dev, -ENODEV ,"no interrupts\n" );I wonder if zero irqs is an actual issue here?
drivers/soc/sifive/sifive_l2_cache.c static irqreturn_t l2_int_handler(int irq, void *device) · line 205
Quoted 2 lines
drivers/soc/sifive/sifive_l2_cache.c +2
-0+for (i =0 ; i < nirqs; i++) { + g_irq[i] =platform_get_irq (pdev, i);I wonder if we need to keep g_irq[] around now? Is it going to be useful in the future?
Quoted 19 lines
drivers/soc/sifive/sifive_l2_cache.c +11
-1+if (g_irq[i] <0 ) +return g_irq[i]; + + ret =devm_request_irq (dev, g_irq[i], l2_int_handler,0 , pdev->name,NULL ); +if (ret) +return dev_err_probe (dev, ret,"Could not request IRQ %d\n" , g_irq[i]); }l2_config_read ();@@ -234,4 +221,18 @@ static int __init sifive_l2_init(void)#endif return 0 ; } -device_initcall (sifive_l2_init); + +static const struct of_device_id sifive_l2_match[] = { + { .compatible ="sifive,fu540-c000-ccache" }, + { .compatible ="sifive,fu740-c000-ccache" }, + {/* sentinel */ }drivers/soc/sifive/sifive_l2_cache.c static int __init sifive_l2_init(void) · line 238
Quoted 10 lines
drivers/soc/sifive/sifive_l2_cache.c +10
-0+}; + +static struct platform_driver sifive_l2_driver = { + .driver = { + .name ="sifive_l2_cache" , + .of_match_table = sifive_l2_match, + .suppress_bind_attrs = true, + }, +}; +builtin_platform_driver_probe (sifive_l2_driver, sifive_l2_probe);_______________________________________________
linux-riscv mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-riscv
Re: [PATCH v1 05/30] soc: sifive: l2 cache: Convert to platform driver
Quoted 27 lines · Emil Renner Berthing
Quoted 10 lines · Ben Dooks
Quoted 7 lines · Hal Feng
From: Emil Renner Berthing <[email protected]>
This converts the driver to use the
builtin_platform_driver_probemacro to initialize the driver. This macro ends up callingdevice_initcallas was used previously, but also allocates a platform device which gives us access to much nicer APIs such asplatform_ioremap_resource,platform_get_irqanddev_err_probe.Quoted 6 lines
This is useful, but also there are other changes currently being sorted out by Zong Li (cc'd into this message) which have already been reviewed and are hopefully queued for the next kernel release.
Quoted 2 lines
Signed-off-by Emil Renner Berthing <[email protected]>Signed-off-by Hal Feng <[email protected]>I'm ok with something like this being merged, but please note that if we ever want to support the JH7100 which uses registers in this peripheral to flush the cache for its non-coherent DMAs then this driver needs to be loaded before other peripherals or we will trigger the 2nd warning in
arch/riscv/mm/dma-noncoherent.c. I'm not sure we can do that when it's a platform driver. See this patch for an alternative to support the JH71x0s:
https://github.com/esmil/linux/commit/9c5b29da56ae29159c9572c5bb195fe3a1b535c5
Quoted 1 line
/Emil
Are you replying to your own patch that does the conversion to platform driver and then saying that it could actually cause issues?
I'm all for dropping this for the moment and keeping the old early init for the ccache.
Quoted 130 lines
Quoted 116 lines
Quoted 70 lines
drivers/soc/sifive/sifive_l2_cache.c | 79 ++++++++++++++-------------- 1 file changed, 40 insertions(+), 39 deletions(-)drivers/soc/sifive/sifive_l2_cache.c +6
-38@@ -7,9 +7,9 @@*/ #include <linux/debugfs.h> #include <linux/interrupt.h> -#include <linux/of_irq.h> -#include <linux/of_address.h> -#include <linux/device.h> +#include <linux/io.h> +#include <linux/mod_devicetable.h> +#include <linux/platform_device.h> #include <asm/cacheinfo.h> #include <soc/sifive/sifive_l2_cache.h> @@ -96,12 +96,6 @@ static void l2_config_read(void)pr_info ("L2CACHE: Index of the largest way enabled: %d\n" , regval); } -static const struct of_device_id sifive_l2_ids[] = { - { .compatible ="sifive,fu540-c000-ccache" }, - { .compatible ="sifive,fu740-c000-ccache" }, - {/* end of table */ }, -}; -static ATOMIC_NOTIFIER_HEAD (l2_err_chain);int register_sifive_l2_error_notifier (struct notifier_block *nb)@@ -192,36 +186,29 @@ static irqreturn_t l2_int_handler(int irq, void *device)return IRQ_HANDLED ; } -static int __init sifive_l2_init (void ) +static int __init sifive_l2_probe (struct platform_device *pdev) { -struct device_node *np; -struct resource res; -int i, rc, intr_num; - - np =of_find_matching_node (NULL , sifive_l2_ids); -if (!np) -return -ENODEV ; - -if (of_address_to_resource (np,0 , &res)) -return -ENODEV ; - - l2_base =ioremap (res.start,resource_size (&res)); -if (!l2_base) -return -ENOMEM ; - - intr_num =of_property_count_u32_elems (np,"interrupts" ); -if (!intr_num) { -pr_err ("L2CACHE: no interrupts property\n" ); -return -ENODEV ; - } - -for (i =0 ; i < intr_num; i++) { - g_irq[i] =irq_of_parse_and_map (np, i); - rc =request_irq (g_irq[i], l2_int_handler,0 ,"l2_ecc" ,NULL ); -if (rc) { -pr_err ("L2CACHE: Could not request IRQ %d\n" , g_irq[i]); -return rc; - } +struct device *dev = &pdev->dev; +int nirqs;drivers/soc/sifive/sifive_l2_cache.c static irqreturn_t l2_int_handler(int irq, void *device) · line 202
Quoted 10 lines
drivers/soc/sifive/sifive_l2_cache.c +10
-0+int ret; +int i; + + l2_base =devm_platform_ioremap_resource (pdev,0 ); +if (IS_ERR (l2_base)) +return PTR_ERR (l2_base); + + nirqs =platform_irq_count (pdev); +if (nirqs <=0 ) +return dev_err_probe (dev, -ENODEV ,"no interrupts\n" );I wonder if zero irqs is an actual issue here?
drivers/soc/sifive/sifive_l2_cache.c static irqreturn_t l2_int_handler(int irq, void *device) · line 205
Quoted 2 lines
drivers/soc/sifive/sifive_l2_cache.c +2
-0+for (i =0 ; i < nirqs; i++) { + g_irq[i] =platform_get_irq (pdev, i);I wonder if we need to keep g_irq[] around now? Is it going to be useful in the future?
Quoted 27 lines
drivers/soc/sifive/sifive_l2_cache.c +19
-1+if (g_irq[i] <0 ) +return g_irq[i]; + + ret =devm_request_irq (dev, g_irq[i], l2_int_handler,0 , pdev->name,NULL ); +if (ret) +return dev_err_probe (dev, ret,"Could not request IRQ %d\n" , g_irq[i]); }l2_config_read ();@@ -234,4 +221,18 @@ static int __init sifive_l2_init(void)#endif return 0 ; } -device_initcall (sifive_l2_init); + +static const struct of_device_id sifive_l2_match[] = { + { .compatible ="sifive,fu540-c000-ccache" }, + { .compatible ="sifive,fu740-c000-ccache" }, + {/* sentinel */ } +}; + +static struct platform_driver sifive_l2_driver = { + .driver = { + .name ="sifive_l2_cache" , + .of_match_table = sifive_l2_match, + .suppress_bind_attrs = true, + },Quoted 8 lines
drivers/soc/sifive/sifive_l2_cache.c static int __init sifive_l2_init(void) · line 238
Quoted 2 lines
drivers/soc/sifive/sifive_l2_cache.c +2
-0+}; +builtin_platform_driver_probe (sifive_l2_driver, sifive_l2_probe);_______________________________________________
linux-riscv mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-riscv_______________________________________________
linux-riscv mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-riscv
Signature · 10 lines
Ben Dooks http://www.codethink.co.uk/ Senior Engineer Codethink - Providing Genius https://www.codethink.co.uk/privacy.html _______________________________________________ linux-riscv mailing list [email protected] http://lists.infradead.org/mailman/listinfo/linux-riscv
Re: [PATCH v1 05/30] soc: sifive: l2 cache: Convert to platform driver
Quoted 29 lines · Ben Dooks
Quoted 27 lines · Emil Renner Berthing
Quoted 10 lines · Ben Dooks
Quoted 7 lines · Hal Feng
From: Emil Renner Berthing <[email protected]>
This converts the driver to use the
builtin_platform_driver_probemacro to initialize the driver. This macro ends up callingdevice_initcallas was used previously, but also allocates a platform device which gives us access to much nicer APIs such asplatform_ioremap_resource,platform_get_irqanddev_err_probe.Quoted 6 lines
This is useful, but also there are other changes currently being sorted out by Zong Li (cc'd into this message) which have already been reviewed and are hopefully queued for the next kernel release.
Quoted 2 lines
Signed-off-by Emil Renner Berthing <[email protected]>Signed-off-by Hal Feng <[email protected]>I'm ok with something like this being merged, but please note that if we ever want to support the JH7100 which uses registers in this peripheral to flush the cache for its non-coherent DMAs then this driver needs to be loaded before other peripherals or we will trigger the 2nd warning in
arch/riscv/mm/dma-noncoherent.c. I'm not sure we can do that when it's a platform driver. See this patch for an alternative to support the JH71x0s:
https://github.com/esmil/linux/commit/9c5b29da56ae29159c9572c5bb195fe3a1b535c5
Quoted 5 lines
Quoted 1 line
/Emil
Are you replying to your own patch that does the conversion to platform driver and then saying that it could actually cause issues?
Yes, I can see it seems odd, but this patch lived for a while in the kernel repo for the JH7100 until I rebased on 6.0-rc1 and realized the above.
Hal Feng must have based his patches on a version of the code before that when preparing this series.
Quoted 2 lines
I'm all for dropping this for the moment and keeping the old early init for the ccache.
Cool.
/Emil
Quoted 137 lines
Quoted 125 lines
Quoted 116 lines
Quoted 70 lines
drivers/soc/sifive/sifive_l2_cache.c | 79 ++++++++++++++-------------- 1 file changed, 40 insertions(+), 39 deletions(-)drivers/soc/sifive/sifive_l2_cache.c +6
-38@@ -7,9 +7,9 @@*/ #include <linux/debugfs.h> #include <linux/interrupt.h> -#include <linux/of_irq.h> -#include <linux/of_address.h> -#include <linux/device.h> +#include <linux/io.h> +#include <linux/mod_devicetable.h> +#include <linux/platform_device.h> #include <asm/cacheinfo.h> #include <soc/sifive/sifive_l2_cache.h> @@ -96,12 +96,6 @@ static void l2_config_read(void)pr_info ("L2CACHE: Index of the largest way enabled: %d\n" , regval); } -static const struct of_device_id sifive_l2_ids[] = { - { .compatible ="sifive,fu540-c000-ccache" }, - { .compatible ="sifive,fu740-c000-ccache" }, - {/* end of table */ }, -}; -static ATOMIC_NOTIFIER_HEAD (l2_err_chain);int register_sifive_l2_error_notifier (struct notifier_block *nb)@@ -192,36 +186,29 @@ static irqreturn_t l2_int_handler(int irq, void *device)return IRQ_HANDLED ; } -static int __init sifive_l2_init (void ) +static int __init sifive_l2_probe (struct platform_device *pdev) { -struct device_node *np; -struct resource res; -int i, rc, intr_num; - - np =of_find_matching_node (NULL , sifive_l2_ids); -if (!np) -return -ENODEV ; - -if (of_address_to_resource (np,0 , &res)) -return -ENODEV ; - - l2_base =ioremap (res.start,resource_size (&res)); -if (!l2_base) -return -ENOMEM ; - - intr_num =of_property_count_u32_elems (np,"interrupts" ); -if (!intr_num) { -pr_err ("L2CACHE: no interrupts property\n" ); -return -ENODEV ; - } - -for (i =0 ; i < intr_num; i++) { - g_irq[i] =irq_of_parse_and_map (np, i); - rc =request_irq (g_irq[i], l2_int_handler,0 ,"l2_ecc" ,NULL ); -if (rc) { -pr_err ("L2CACHE: Could not request IRQ %d\n" , g_irq[i]); -return rc; - } +struct device *dev = &pdev->dev; +int nirqs;drivers/soc/sifive/sifive_l2_cache.c static irqreturn_t l2_int_handler(int irq, void *device) · line 202
Quoted 10 lines
drivers/soc/sifive/sifive_l2_cache.c +10
-0+int ret; +int i; + + l2_base =devm_platform_ioremap_resource (pdev,0 ); +if (IS_ERR (l2_base)) +return PTR_ERR (l2_base); + + nirqs =platform_irq_count (pdev); +if (nirqs <=0 ) +return dev_err_probe (dev, -ENODEV ,"no interrupts\n" );I wonder if zero irqs is an actual issue here?
drivers/soc/sifive/sifive_l2_cache.c static irqreturn_t l2_int_handler(int irq, void *device) · line 205
Quoted 2 lines
drivers/soc/sifive/sifive_l2_cache.c +2
-0+for (i =0 ; i < nirqs; i++) { + g_irq[i] =platform_get_irq (pdev, i);I wonder if we need to keep g_irq[] around now? Is it going to be useful in the future?
Quoted 27 lines
drivers/soc/sifive/sifive_l2_cache.c +19
-1+if (g_irq[i] <0 ) +return g_irq[i]; + + ret =devm_request_irq (dev, g_irq[i], l2_int_handler,0 , pdev->name,NULL ); +if (ret) +return dev_err_probe (dev, ret,"Could not request IRQ %d\n" , g_irq[i]); }l2_config_read ();@@ -234,4 +221,18 @@ static int __init sifive_l2_init(void)#endif return 0 ; } -device_initcall (sifive_l2_init); + +static const struct of_device_id sifive_l2_match[] = { + { .compatible ="sifive,fu540-c000-ccache" }, + { .compatible ="sifive,fu740-c000-ccache" }, + {/* sentinel */ } +}; + +static struct platform_driver sifive_l2_driver = { + .driver = { + .name ="sifive_l2_cache" , + .of_match_table = sifive_l2_match, + .suppress_bind_attrs = true, + },Quoted 8 lines
drivers/soc/sifive/sifive_l2_cache.c static int __init sifive_l2_init(void) · line 238
Quoted 2 lines
drivers/soc/sifive/sifive_l2_cache.c +2
-0+}; +builtin_platform_driver_probe (sifive_l2_driver, sifive_l2_probe);_______________________________________________
linux-riscv mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-riscvQuoted 5 lines
_______________________________________________
linux-riscv mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-riscv--
Ben Dooks http://www.codethink.co.uk/
Senior Engineer Codethink - Providing Genius
Conor Dooley
maintainerRe: [PATCH v1 05/30] soc: sifive: l2 cache: Convert to platform driver
Quoted 42 lines · Emil Renner Berthing
Quoted 29 lines · Ben Dooks
Quoted 27 lines · Emil Renner Berthing
Quoted 10 lines · Ben Dooks
Quoted 7 lines · Hal Feng
From: Emil Renner Berthing <[email protected]>
This converts the driver to use the
builtin_platform_driver_probemacro to initialize the driver. This macro ends up callingdevice_initcallas was used previously, but also allocates a platform device which gives us access to much nicer APIs such asplatform_ioremap_resource,platform_get_irqanddev_err_probe.Quoted 6 lines
This is useful, but also there are other changes currently being sorted out by Zong Li (cc'd into this message) which have already been reviewed and are hopefully queued for the next kernel release.
Quoted 2 lines
Signed-off-by Emil Renner Berthing <[email protected]>Signed-off-by Hal Feng <[email protected]>I'm ok with something like this being merged, but please note that if we ever want to support the JH7100 which uses registers in this peripheral to flush the cache for its non-coherent DMAs then this driver needs to be loaded before other peripherals or we will trigger the 2nd warning in
arch/riscv/mm/dma-noncoherent.c. I'm not sure we can do that when it's a platform driver. See this patch for an alternative to support the JH71x0s:
https://github.com/esmil/linux/commit/9c5b29da56ae29159c9572c5bb195fe3a1b535c5Quoted 5 lines
Quoted 1 line
/Emil
Are you replying to your own patch that does the conversion to platform driver and then saying that it could actually cause issues?
Yes, I can see it seems odd, but this patch lived for a while in the kernel repo for the JH7100 until I rebased on 6.0-rc1 and realized the above.
Hal Feng must have based his patches on a version of the code before that when preparing this series.
Quoted 4 lines
Quoted 2 lines
I'm all for dropping this for the moment and keeping the old early init for the ccache.
Cool.
FWIW, if converting to a platform driver will inhibit using the driver for doing non-coherent stuff I would like to NAK the patch :)
Quoted 140 lines
/Emil
Quoted 137 lines
Quoted 125 lines
Quoted 116 lines
Quoted 70 lines
drivers/soc/sifive/sifive_l2_cache.c | 79 ++++++++++++++-------------- 1 file changed, 40 insertions(+), 39 deletions(-)drivers/soc/sifive/sifive_l2_cache.c +6
-38@@ -7,9 +7,9 @@*/ #include <linux/debugfs.h> #include <linux/interrupt.h> -#include <linux/of_irq.h> -#include <linux/of_address.h> -#include <linux/device.h> +#include <linux/io.h> +#include <linux/mod_devicetable.h> +#include <linux/platform_device.h> #include <asm/cacheinfo.h> #include <soc/sifive/sifive_l2_cache.h> @@ -96,12 +96,6 @@ static void l2_config_read(void)pr_info ("L2CACHE: Index of the largest way enabled: %d\n" , regval); } -static const struct of_device_id sifive_l2_ids[] = { - { .compatible ="sifive,fu540-c000-ccache" }, - { .compatible ="sifive,fu740-c000-ccache" }, - {/* end of table */ }, -}; -static ATOMIC_NOTIFIER_HEAD (l2_err_chain);int register_sifive_l2_error_notifier (struct notifier_block *nb)@@ -192,36 +186,29 @@ static irqreturn_t l2_int_handler(int irq, void *device)return IRQ_HANDLED ; } -static int __init sifive_l2_init (void ) +static int __init sifive_l2_probe (struct platform_device *pdev) { -struct device_node *np; -struct resource res; -int i, rc, intr_num; - - np =of_find_matching_node (NULL , sifive_l2_ids); -if (!np) -return -ENODEV ; - -if (of_address_to_resource (np,0 , &res)) -return -ENODEV ; - - l2_base =ioremap (res.start,resource_size (&res)); -if (!l2_base) -return -ENOMEM ; - - intr_num =of_property_count_u32_elems (np,"interrupts" ); -if (!intr_num) { -pr_err ("L2CACHE: no interrupts property\n" ); -return -ENODEV ; - } - -for (i =0 ; i < intr_num; i++) { - g_irq[i] =irq_of_parse_and_map (np, i); - rc =request_irq (g_irq[i], l2_int_handler,0 ,"l2_ecc" ,NULL ); -if (rc) { -pr_err ("L2CACHE: Could not request IRQ %d\n" , g_irq[i]); -return rc; - } +struct device *dev = &pdev->dev; +int nirqs;drivers/soc/sifive/sifive_l2_cache.c static irqreturn_t l2_int_handler(int irq, void *device) · line 202
Quoted 10 lines
drivers/soc/sifive/sifive_l2_cache.c +10
-0+int ret; +int i; + + l2_base =devm_platform_ioremap_resource (pdev,0 ); +if (IS_ERR (l2_base)) +return PTR_ERR (l2_base); + + nirqs =platform_irq_count (pdev); +if (nirqs <=0 ) +return dev_err_probe (dev, -ENODEV ,"no interrupts\n" );I wonder if zero irqs is an actual issue here?
drivers/soc/sifive/sifive_l2_cache.c static irqreturn_t l2_int_handler(int irq, void *device) · line 205
Quoted 2 lines
drivers/soc/sifive/sifive_l2_cache.c +2
-0+for (i =0 ; i < nirqs; i++) { + g_irq[i] =platform_get_irq (pdev, i);I wonder if we need to keep g_irq[] around now? Is it going to be useful in the future?
Quoted 27 lines
drivers/soc/sifive/sifive_l2_cache.c +19
-1+if (g_irq[i] <0 ) +return g_irq[i]; + + ret =devm_request_irq (dev, g_irq[i], l2_int_handler,0 , pdev->name,NULL ); +if (ret) +return dev_err_probe (dev, ret,"Could not request IRQ %d\n" , g_irq[i]); }l2_config_read ();@@ -234,4 +221,18 @@ static int __init sifive_l2_init(void)#endif return 0 ; } -device_initcall (sifive_l2_init); + +static const struct of_device_id sifive_l2_match[] = { + { .compatible ="sifive,fu540-c000-ccache" }, + { .compatible ="sifive,fu740-c000-ccache" }, + {/* sentinel */ } +}; + +static struct platform_driver sifive_l2_driver = { + .driver = { + .name ="sifive_l2_cache" , + .of_match_table = sifive_l2_match, + .suppress_bind_attrs = true, + },Quoted 8 lines
drivers/soc/sifive/sifive_l2_cache.c static int __init sifive_l2_init(void) · line 238
Quoted 2 lines
drivers/soc/sifive/sifive_l2_cache.c +2
-0+}; +builtin_platform_driver_probe (sifive_l2_driver, sifive_l2_probe);_______________________________________________
linux-riscv mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-riscvQuoted 5 lines
_______________________________________________
linux-riscv mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-riscv--
Ben Dooks http://www.codethink.co.uk/
Senior Engineer Codethink - Providing Genius
Re: [PATCH v1 05/30] soc: sifive: l2 cache: Convert to platform driver
Quoted 43 lines · Conor Dooley
Quoted 42 lines · Emil Renner Berthing
Quoted 29 lines · Ben Dooks
Quoted 27 lines · Emil Renner Berthing
Quoted 10 lines · Ben Dooks
Quoted 7 lines · Hal Feng
From: Emil Renner Berthing <[email protected]>
This converts the driver to use the
builtin_platform_driver_probemacro to initialize the driver. This macro ends up callingdevice_initcallas was used previously, but also allocates a platform device which gives us access to much nicer APIs such asplatform_ioremap_resource,platform_get_irqanddev_err_probe.Quoted 6 lines
This is useful, but also there are other changes currently being sorted out by Zong Li (cc'd into this message) which have already been reviewed and are hopefully queued for the next kernel release.
Quoted 2 lines
Signed-off-by Emil Renner Berthing <[email protected]>Signed-off-by Hal Feng <[email protected]>I'm ok with something like this being merged, but please note that if we ever want to support the JH7100 which uses registers in this peripheral to flush the cache for its non-coherent DMAs then this driver needs to be loaded before other peripherals or we will trigger the 2nd warning in
arch/riscv/mm/dma-noncoherent.c. I'm not sure we can do that when it's a platform driver. See this patch for an alternative to support the JH71x0s:
https://github.com/esmil/linux/commit/9c5b29da56ae29159c9572c5bb195fe3a1b535c5Quoted 5 lines
Quoted 1 line
/Emil
Are you replying to your own patch that does the conversion to platform driver and then saying that it could actually cause issues?
Yes, I can see it seems odd, but this patch lived for a while in the kernel repo for the JH7100 until I rebased on 6.0-rc1 and realized the above.
Hal Feng must have based his patches on a version of the code before that when preparing this series.
Quoted 8 lines
Quoted 4 lines
Quoted 2 lines
I'm all for dropping this for the moment and keeping the old early init for the ccache.
Cool.
FWIW, if converting to a platform driver will inhibit using the driver for doing non-coherent stuff I would like to NAK the patch :)
Yeah, I agree, and this patch will be dropped on the next version.
Quoted 16 lines · Hal Feng
This series is also available at
https://github.com/hal-feng/linux/commits/visionfive2-minimal[1] https://www.cnx-software.com/2022/08/23/starfive-visionfive-2-quad-core-risc-v-sbc-linux/
[2] https://wiki.rvspace.org/Emil Renner Berthing (17):
dt-bindings: riscv: Add StarFive JH7110 bindings
dt-bindings: timer: Add StarFive JH7110 clint
dt-bindings: interrupt-controller: Add StarFive JH7110 plic
dt-bindings: sifive-l2-cache: Support StarFive JH71x0 SoCs
soc: sifive: l2 cache: Convert to platform driver
soc: sifive: l2 cache: Add StarFive JH71x0 support
reset: starfive: jh7100: Use 32bit I/O on 32bit registers
dt-bindings: reset: Add StarFive JH7110 reset definitions
clk: starfive: Factor out common clock driver code
Quoted 8 lines
dt-bindings: clock: Add StarFive JH7110 system clock definitions
dt-bindings: clock: Add starfive,jh7110-clkgen-sys bindings
clk: starfive: Add StarFive JH7110 system clock driver
dt-bindings: clock: Add StarFive JH7110 always-on definitions
dt-bindings: clock: Add starfive,jh7110-clkgen-aon bindings
clk: starfive: Add StarFive JH7110 always-on clock driver
RISC-V: Add initial StarFive JH7110 device tree
RISC-V: Add StarFive JH7110 VisionFive2 board device tree
Where is the rest of patches? Lists got only 5 of them. Anyway this is a bit too big patchset. Split per subsystem.
Best regards,
Krzysztof
Conor Dooley
maintainerQuoted 27 lines · Krzysztof Kozlowski
Quoted 16 lines · Hal Feng
This series is also available at
https://github.com/hal-feng/linux/commits/visionfive2-minimal[1] https://www.cnx-software.com/2022/08/23/starfive-visionfive-2-quad-core-risc-v-sbc-linux/
[2] https://wiki.rvspace.org/Emil Renner Berthing (17):
dt-bindings: riscv: Add StarFive JH7110 bindings
dt-bindings: timer: Add StarFive JH7110 clint
dt-bindings: interrupt-controller: Add StarFive JH7110 plic
dt-bindings: sifive-l2-cache: Support StarFive JH71x0 SoCs
soc: sifive: l2 cache: Convert to platform driver
soc: sifive: l2 cache: Add StarFive JH71x0 support
reset: starfive: jh7100: Use 32bit I/O on 32bit registers
dt-bindings: reset: Add StarFive JH7110 reset definitions
clk: starfive: Factor out common clock driver codeQuoted 8 lines
dt-bindings: clock: Add StarFive JH7110 system clock definitions
dt-bindings: clock: Add starfive,jh7110-clkgen-sys bindings
clk: starfive: Add StarFive JH7110 system clock driver
dt-bindings: clock: Add StarFive JH7110 always-on definitions
dt-bindings: clock: Add starfive,jh7110-clkgen-aon bindings
clk: starfive: Add StarFive JH7110 always-on clock driver
RISC-V: Add initial StarFive JH7110 device tree
RISC-V: Add StarFive JH7110 VisionFive2 board device tree
Quoted 2 lines
Where is the rest of patches? Lists got only 5 of them. Anyway this is a bit too big patchset. Split per subsystem.
They seem to be coming in over time in dribs and drabs. I assume it is not a mailing list problem given how many lists are CCed on the mail and the fact that they have different providers.
For v2 (or multiple v2s) please fix up your process so that this gets sent normally and not a couple of patches every hour.
Thanks,
Conor.
Quoted 30 lines · Conor Dooley
Quoted 29 lines · Krzysztof Kozlowski
Quoted 26 lines · Hal Feng
This series is also available at
https://github.com/hal-feng/linux/commits/visionfive2-minimal[1]
https://www.cnx-software.com/2022/08/23/starfive-visionfive-2-quad-c
ore-risc-v-sbc-linux/
[2] https://wiki.rvspace.org/Emil Renner Berthing (17):
dt-bindings: riscv: Add StarFive JH7110 bindings
dt-bindings: timer: Add StarFive JH7110 clint
dt-bindings: interrupt-controller: Add StarFive JH7110 plic
dt-bindings: sifive-l2-cache: Support StarFive JH71x0 SoCs
soc: sifive: l2 cache: Convert to platform driver
soc: sifive: l2 cache: Add StarFive JH71x0 support
reset: starfive: jh7100: Use 32bit I/O on 32bit registers
dt-bindings: reset: Add StarFive JH7110 reset definitions
clk: starfive: Factor out common clock driver code
dt-bindings: clock: Add StarFive JH7110 system clock definitions
dt-bindings: clock: Add starfive,jh7110-clkgen-sys bindings
clk: starfive: Add StarFive JH7110 system clock driver
dt-bindings: clock: Add StarFive JH7110 always-on definitions
dt-bindings: clock: Add starfive,jh7110-clkgen-aon bindings
clk: starfive: Add StarFive JH7110 always-on clock driver
RISC-V: Add initial StarFive JH7110 device tree
RISC-V: Add StarFive JH7110 VisionFive2 board device tree
Quoted 4 lines
Quoted 2 lines
Where is the rest of patches? Lists got only 5 of them. Anyway this is a bit too big patchset. Split per subsystem.
They seem to be coming in over time in dribs and drabs. I assume it is not
a
Quoted 1 line
mailing list problem given how many lists are CCed on the mail and the
fact
Quoted 4 lines
that they have different providers.
For v2 (or multiple v2s) please fix up your process so that this gets sent normally and not a couple of patches every hour.
Our email server has technical issue and we are aware of this. Will fix in next revision. Sorry for the inconvenience caused.
Best Regards,
Hal
_______________________________________________
linux-riscv mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-riscv
PATCH 6/30 soc: sifive: l2 cache: Add StarFive JH71x0 support
In reply to Hal FengFrom: Emil Renner Berthing <[email protected]>
This adds support for the StarFive JH7100 and JH7110 SoCs which also feature this SiFive cache controller.
Unfortunately the interrupt for uncorrected data is broken on the JH7100 and fires continuously, so add a quirk to not register a handler for it.
--- arch/riscv/Kconfig.socs | 1 + drivers/soc/Makefile | 2 +- drivers/soc/sifive/Kconfig | 2 +- drivers/soc/sifive/sifive_l2_cache.c | 7 +++++++ 4 files changed, 10 insertions(+), 2 deletions(-)
arch/riscv/Kconfig.socs +1 -0
@@ -22,6 +22,7 @@ config SOC_STARFIVE bool "StarFive SoCs" select PINCTRL select RESET_CONTROLLER + select SIFIVE_L2 select SIFIVE_PLIC help This enables support for StarFive SoC platform hardware.
drivers/soc/Makefile +1 -1
@@ -26,7 +26,7 @@ obj-y += qcom/ obj-y += renesas/ obj-y += rockchip/ obj-$(CONFIG_SOC_SAMSUNG) += samsung/ -obj-$(CONFIG_SOC_SIFIVE) += sifive/ +obj-y += sifive/ obj-y += sunxi/ obj-$(CONFIG_ARCH_TEGRA) += tegra/ obj-y += ti/
drivers/soc/sifive/Kconfig +1 -1
@@ -1,6 +1,6 @@ # SPDX-License-Identifier: GPL-2.0 -if SOC_SIFIVE +if SOC_SIFIVE || SOC_STARFIVE config SIFIVE_L2 bool "Sifive L2 Cache controller"
drivers/soc/sifive/sifive_l2_cache.c +7 -0
@@ -10,6 +10,7 @@#include <linux/io.h> #include <linux/mod_devicetable.h> #include <linux/platform_device.h> +#include <linux/property.h> #include <asm/cacheinfo.h> #include <soc/sifive/sifive_l2_cache.h>
@@ -189,6 +190,7 @@ static irqreturn_t l2_int_handler(int irq, void *device)static int __init sifive_l2_probe (struct platform_device *pdev) {struct device *dev = &pdev->dev; +unsigned long quirks = (uintptr_t )device_get_match_data (dev);int nirqs;int ret;int i;
@@ -206,6 +208,9 @@ static int __init sifive_l2_probe(struct platform_device *pdev)if (g_irq[i] <0 )return g_irq[i]; +if (quirks &BIT (i)) +continue ; + ret =devm_request_irq (dev, g_irq[i], l2_int_handler,0 , pdev->name,NULL );if (ret)return dev_err_probe (dev, ret,"Could not request IRQ %d\n" , g_irq[i]);
@@ -225,6 +230,8 @@ static int __init sifive_l2_probe(struct platform_device *pdev)static const struct of_device_id sifive_l2_match[] = { { .compatible ="sifive,fu540-c000-ccache" }, { .compatible ="sifive,fu740-c000-ccache" }, + { .compatible ="starfive,jh7100-ccache" , .data = (void *)BIT (DATA_UNCORR ) }, + { .compatible ="starfive,jh7110-ccache" }, {/* sentinel */ } };
Signature · 1 line
2.17.1
PATCH 7/30 reset: starfive: jh7100: Use 32bit I/O on 32bit registers
In reply to Hal FengFrom: Emil Renner Berthing <[email protected]>
We currently use 64bit I/O on the 32bit registers. This works because there are an even number of assert and status registers, so they're only ever accessed in pairs on 64bit boundaries.
There are however other reset controllers for audio and video on the JH7100 SoC with only one status register that isn't 64bit aligned so 64bit I/O results in an unaligned access exception.
Switch to 32bit I/O in preparation for supporting these resets too.
--- drivers/reset/reset-starfive-jh7100.c | 41 +++++++++++++-------------- 1 file changed, 20 insertions(+), 21 deletions(-)
drivers/reset/reset-starfive-jh7100.c +20 -21
@@ -7,7 +7,6 @@#include <linux/bitmap.h> #include <linux/io.h> -#include <linux/io-64-nonatomic-lo-hi.h> #include <linux/iopoll.h> #include <linux/mod_devicetable.h> #include <linux/platform_device.h>
@@ -34,16 +33,16 @@* lines don't though, so store the expected value of the status registers when * all lines are asserted. */ -static const u64 jh7100_reset_asserted[2 ] = { +static const u32 jh7100_reset_asserted[4 ] = {/* STATUS0 */ -BIT_ULL_MASK (JH7100_RST_U74 ) | -BIT_ULL_MASK (JH7100_RST_VP6_DRESET ) | -BIT_ULL_MASK (JH7100_RST_VP6_BRESET ) | +BIT (JH7100_RST_U74 %32 ) | +BIT (JH7100_RST_VP6_DRESET %32 ) | +BIT (JH7100_RST_VP6_BRESET %32 ),/* STATUS1 */ -BIT_ULL_MASK (JH7100_RST_HIFI4_DRESET ) | -BIT_ULL_MASK (JH7100_RST_HIFI4_BRESET ), +BIT (JH7100_RST_HIFI4_DRESET %32 ) | +BIT (JH7100_RST_HIFI4_BRESET %32 ),/* STATUS2 */ -BIT_ULL_MASK (JH7100_RST_E24 ) | +BIT (JH7100_RST_E24 %32 ),/* STATUS3 */ 0 , };
@@ -65,12 +64,12 @@ static int jh7100_reset_update(struct reset_controller_dev *rcdev, unsigned long id, bool assert) {struct jh7100_reset *data =jh7100_reset_from (rcdev); -unsigned long offset =BIT_ULL_WORD (id); -u64 mask =BIT_ULL_MASK (id); -void __iomem *reg_assert = data->base +JH7100_RESET_ASSERT0 + offset *sizeof (u64); -void __iomem *reg_status = data->base +JH7100_RESET_STATUS0 + offset *sizeof (u64); -u64 done = jh7100_reset_asserted[offset] & mask; -u64 value; +unsigned long offset = id /32 ; +u32 mask =BIT (id %32 ); +void __iomem *reg_assert = data->base +JH7100_RESET_ASSERT0 + offset *sizeof (u32); +void __iomem *reg_status = data->base +JH7100_RESET_STATUS0 + offset *sizeof (u32); +u32 done = jh7100_reset_asserted[offset] & mask; +u32 value;unsigned long flags;int ret;
@@ -79,15 +78,15 @@ static int jh7100_reset_update(struct reset_controller_dev *rcdev,spin_lock_irqsave (&data->lock, flags); - value =readq (reg_assert); + value =readl (reg_assert);if (assert) value |= mask;else value &= ~mask; -writeq (value, reg_assert); +writel (value, reg_assert);/* if the associated clock is gated, deasserting might otherwise hang forever */ - ret =readq_poll_timeout_atomic (reg_status, value, (value & mask) == done,0 ,1000 ); + ret =readl_poll_timeout_atomic (reg_status, value, (value & mask) == done,0 ,1000 );spin_unlock_irqrestore (&data->lock, flags);return ret;
@@ -121,10 +120,10 @@ static int jh7100_reset_status(struct reset_controller_dev *rcdev, unsigned long id) {struct jh7100_reset *data =jh7100_reset_from (rcdev); -unsigned long offset =BIT_ULL_WORD (id); -u64 mask =BIT_ULL_MASK (id); -void __iomem *reg_status = data->base +JH7100_RESET_STATUS0 + offset *sizeof (u64); -u64 value =readq (reg_status); +unsigned long offset = id /32 ; +u32 mask =BIT (id %32 ); +void __iomem *reg_status = data->base +JH7100_RESET_STATUS0 + offset *sizeof (u32); +u32 value =readl (reg_status);return !((value ^ jh7100_reset_asserted[offset]) & mask); }
Signature · 1 line
2.17.1
PATCH 8/30 reset: starfive: jh7100: Use regmap APIs to operate registers
In reply to Hal FengReset registers address region is shared with clock controller on the new StarFive JH7110 SoC. Change to use regmap framework to allow base address sharing and preparation for JH7110 reset support.
--- drivers/reset/reset-starfive-jh7100.c | 61 +++++++++++++++------------ 1 file changed, 34 insertions(+), 27 deletions(-)
drivers/reset/reset-starfive-jh7100.c +34 -27
@@ -3,15 +3,14 @@* Reset driver for the StarFive JH7100 SoC * * Copyright (C) 2021 Emil Renner Berthing <[email protected]> +* Copyright (C) 2021-2022 StarFive Technology Co., Ltd. */ -#include <linux/bitmap.h> -#include <linux/io.h> -#include <linux/iopoll.h> -#include <linux/mod_devicetable.h> +#include <linux/mfd/syscon.h> +#include <linux/of.h> #include <linux/platform_device.h> +#include <linux/regmap.h> #include <linux/reset-controller.h> -#include <linux/spinlock.h> #include <dt-bindings/reset/starfive-jh7100.h>
@@ -49,9 +48,7 @@ static const u32 jh7100_reset_asserted[4] = {struct jh7100_reset {struct reset_controller_dev rcdev; -/* protect registers against concurrent read-modify-write */ -spinlock_t lock; -void __iomem *base; +struct regmap *regmap; }; static inline struct jh7100_reset *
@@ -64,31 +61,34 @@ static int jh7100_reset_update(struct reset_controller_dev *rcdev, unsigned long id, bool assert) {struct jh7100_reset *data =jh7100_reset_from (rcdev); -unsigned long offset = id /32 ; +u32 offset = id /32 ;u32 mask =BIT (id %32 ); -void __iomem *reg_assert = data->base +JH7100_RESET_ASSERT0 + offset *sizeof (u32); -void __iomem *reg_status = data->base +JH7100_RESET_STATUS0 + offset *sizeof (u32); +u32 reg_assert =JH7100_RESET_ASSERT0 + offset *sizeof (u32); +u32 reg_status =JH7100_RESET_STATUS0 + offset *sizeof (u32);u32 done = jh7100_reset_asserted[offset] & mask;u32 value; -unsigned long flags;int ret;if (!assert) done ^= mask; -spin_lock_irqsave (&data->lock, flags); - - value =readl (reg_assert);if (assert) - value |= mask; + ret =regmap_update_bits (data->regmap, reg_assert, mask, mask);else - value &= ~mask; -writel (value, reg_assert); + ret =regmap_update_bits (data->regmap, reg_assert, mask,0 ); + +if (ret) +return ret;/* if the associated clock is gated, deasserting might otherwise hang forever */ - ret =readl_poll_timeout_atomic (reg_status, value, (value & mask) == done,0 ,1000 ); + ret =regmap_read_poll_timeout_atomic (data->regmap, + reg_status, + value, (value & mask) == done, +0 ,1000 ); +if (ret) +dev_warn (rcdev->dev,"id:%ld bank:%d, mask:%#x assert:%#x status:%#x ret:%d\n" , + id, offset, mask, reg_assert, reg_status, ret); -spin_unlock_irqrestore (&data->lock, flags);return ret; }
@@ -120,10 +120,15 @@ static int jh7100_reset_status(struct reset_controller_dev *rcdev, unsigned long id) {struct jh7100_reset *data =jh7100_reset_from (rcdev); -unsigned long offset = id /32 ; +u32 offset = id /32 ;u32 mask =BIT (id %32 ); -void __iomem *reg_status = data->base +JH7100_RESET_STATUS0 + offset *sizeof (u32); -u32 value =readl (reg_status); +u32 reg_status =JH7100_RESET_STATUS0 + offset *sizeof (u32); +u32 value; +int ret; + + ret =regmap_read (data->regmap, reg_status, &value); +if (ret) +return ret;return !((value ^ jh7100_reset_asserted[offset]) & mask); }
@@ -143,16 +148,18 @@ static int __init jh7100_reset_probe(struct platform_device *pdev)if (!data)return -ENOMEM ; - data->base =devm_platform_ioremap_resource (pdev,0 ); -if (IS_ERR (data->base)) -return PTR_ERR (data->base); + data->regmap =device_node_to_regmap (pdev->dev.of_node); +if (IS_ERR (data->regmap)) { +dev_err (&pdev->dev,"failed to get regmap (error %ld)\n" , +PTR_ERR (data->regmap)); +return PTR_ERR (data->regmap); + } data->rcdev.ops = &jh7100_reset_ops; data->rcdev.owner =THIS_MODULE ; data->rcdev.nr_resets =JH7100_RSTN_END ; data->rcdev.dev = &pdev->dev; data->rcdev.of_node = pdev->dev.of_node; -spin_lock_init (&data->lock);return devm_reset_controller_register (&pdev->dev, &data->rcdev); }
Signature · 1 line
2.17.1
PATCH 9/30 reset: starfive: jh7100: Move necessary properties to device tree
In reply to Hal FengStore the necessary properties in device tree instead of .c file, in order to apply this reset driver to other StarFive SoCs.
--- .../bindings/reset/starfive,jh7100-reset.yaml | 20 ++++++++ arch/riscv/boot/dts/starfive/jh7100.dtsi | 3 ++ drivers/reset/reset-starfive-jh7100.c | 50 +++++++++++++------ 3 files changed, 57 insertions(+), 16 deletions(-)
Documentation/devicetree/bindings/reset/starfive,jh7100-reset.yaml +20 -0
@@ -20,19 +20,39 @@ properties: "#reset-cells": const: 1 + starfive,assert-offset: + description: Offset of the first ASSERT register + $ref: /schemas/types.yaml#/definitions/uint32 + + starfive,status-offset: + description: Offset of the first STATUS register + $ref: /schemas/types.yaml#/definitions/uint32 + + starfive,nr-resets: + description: Number of reset signals + $ref: /schemas/types.yaml#/definitions/uint32 + required: - compatible - reg - "#reset-cells" + - starfive,assert-offset + - starfive,status-offset + - starfive,nr-resets additionalProperties: false examples: - | + #include <dt-bindings/reset/starfive-jh7100.h> + reset-controller@11840000 { compatible = "starfive,jh7100-reset"; reg = <0x11840000 0x10000>; #reset-cells = <1>; + starfive,assert-offset = <0x0>; + starfive,status-offset= <0x10>; + starfive,nr-resets = <JH7100_RSTN_END>; }; ...
arch/riscv/boot/dts/starfive/jh7100.dtsi +3 -0
@@ -145,6 +145,9 @@ compatible = "starfive,jh7100-reset"; reg = <0x0 0x11840000 0x0 0x10000>; #reset-cells = <1>; + starfive,assert-offset = <0x0>; + starfive,status-offset= <0x10>; + starfive,nr-resets = <JH7100_RSTN_END>; }; i2c0: i2c@118b0000 {
drivers/reset/reset-starfive-jh7100.c +34 -16
97 lines not on this page · raw message
Signature · 1 line
2.17.1
Rob Herring
maintainerRe: [PATCH v1 09/30] reset: starfive: jh7100: Move necessary properties to device tree
Quoted 27 lines · Hal Feng
Store the necessary properties in device tree instead of .c file, in order to apply this reset driver to other StarFive SoCs.
Signed-off-by Hal Feng <[email protected]>--- .../bindings/reset/starfive,jh7100-reset.yaml | 20 ++++++++ arch/riscv/boot/dts/starfive/jh7100.dtsi | 3 ++ drivers/reset/reset-starfive-jh7100.c | 50 +++++++++++++------ 3 files changed, 57 insertions(+), 16 deletions(-)Documentation/devicetree/bindings/reset/starfive,jh7100-reset.yaml +9
-0@@ -20,19 +20,39 @@ properties: "#reset-cells": const: 1 + starfive,assert-offset: + description: Offset of the first ASSERT register + $ref: /schemas/types.yaml#/definitions/uint32 + + starfive,status-offset: + description: Offset of the first STATUS register + $ref: /schemas/types.yaml#/definitions/uint32 + + starfive,nr-resets:
Documentation/devicetree/bindings/reset/starfive,jh7100-reset.yaml properties: · line 41
Quoted 10 lines
Documentation/devicetree/bindings/reset/starfive,jh7100-reset.yaml +6
-0+ description: Number of reset signals + $ref: /schemas/types.yaml#/definitions/uint32 + required: - compatible - reg - "#reset-cells" + - starfive,assert-offset + - starfive,status-offset + - starfive,nr-resets
Adding required properties is a red flag. You can't add required properties to an existing binding. That breaks the ABI unless the OS deals with the properties being absent. If the OS has to do that, then why add them in the first place? All this should be implied by the compatible string.
Rob
_______________________________________________
linux-riscv mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-riscv
Re: [PATCH v1 09/30] reset: starfive: jh7100: Move necessary properties to device tree
Quoted 37 lines · Rob Herring
Quoted 35 lines · Hal Feng
Store the necessary properties in device tree instead of .c file, in order to apply this reset driver to other StarFive SoCs.
Signed-off-by Hal Feng <[email protected]>--- .../bindings/reset/starfive,jh7100-reset.yaml | 20 ++++++++ arch/riscv/boot/dts/starfive/jh7100.dtsi | 3 ++ drivers/reset/reset-starfive-jh7100.c | 50 +++++++++++++------ 3 files changed, 57 insertions(+), 16 deletions(-)Documentation/devicetree/bindings/reset/starfive,jh7100-reset.yaml +13
-0@@ -20,19 +20,39 @@ properties: "#reset-cells": const: 1 + starfive,assert-offset: + description: Offset of the first ASSERT register + $ref: /schemas/types.yaml#/definitions/uint32 + + starfive,status-offset: + description: Offset of the first STATUS register + $ref: /schemas/types.yaml#/definitions/uint32 + + starfive,nr-resets: + description: Number of reset signals + $ref: /schemas/types.yaml#/definitions/uint32 + required: - compatible - reg - "#reset-cells" + - starfive,assert-offset
Quoted 8 lines
Documentation/devicetree/bindings/reset/starfive,jh7100-reset.yaml properties: · line 41
Quoted 2 lines
Documentation/devicetree/bindings/reset/starfive,jh7100-reset.yaml +2
-0+ - starfive,status-offset + - starfive,nr-resetsAdding required properties is a red flag. You can't add required properties to an existing binding. That breaks the ABI unless the OS deals with the properties being absent. If the OS has to do that, then why add them in the first place? All this should be implied by the compatible string.
Indeed. I really don't understand why this is even necessary. As mentioned in my reply to the clock driver my original code just had a combined driver for the whole CRG (clock and reset generator I presume), and then you just need a simple node like this:
syscrg: clock-controller@13020000 {
compatible = "starfive,jh7110-syscrg";
reg = <0x0 0x13020000 0x0 0x10000>;
clocks = <&osc>, <&gmac1_rmii_refin>,
<&gmac1_rgmii_rxin>,
<&i2stx_bclk_ext>, <&i2stx_lrck_ext>,
<&i2srx_bclk_ext>, <&i2srx_lrck_ext>,
<&tdm_ext>, <&mclk_ext>;
clock-names = "osc", "gmac1_rmii_refin",
"gmac1_rgmii_rxin",
"i2stx_bclk_ext", "i2stx_lrck_ext",
"i2srx_bclk_ext", "i2srx_lrck_ext",
"tdm_ext", "mclk_ext";
#clock-cells = <1>;
#reset-cells = <1>;
};/Emil
PATCH 10/30 reset: starfive: Rename 'reset-starfive-jh7100.c' to 'reset-starfive.c'
In reply to Hal FengSo this reset driver can be compatible with other StarFive SoCs. No functional change.
---
MAINTAINERS | 9 +--
drivers/reset/Kconfig | 6 +-
drivers/reset/Makefile | 2 +-
...set-starfive-jh7100.c => reset-starfive.c} | 68 +++++++++----------
4 files changed, 43 insertions(+), 42 deletions(-)
rename drivers/reset/{reset-starfive-jh7100.c => reset-starfive.c} (70%)MAINTAINERS +5 -4
@@ -19411,12 +19411,13 @@ F: Documentation/devicetree/bindings/pinctrl/starfive,jh7100-pinctrl.yaml F: drivers/pinctrl/pinctrl-starfive.c F: include/dt-bindings/pinctrl/pinctrl-starfive.h -STARFIVE JH7100 RESET CONTROLLER DRIVER +STARFIVE RESET CONTROLLER DRIVER M: Emil Renner Berthing <[email protected]> +M: Hal Feng <[email protected]> S: Maintained -F: Documentation/devicetree/bindings/reset/starfive,jh7100-reset.yaml -F: drivers/reset/reset-starfive-jh7100.c -F: include/dt-bindings/reset/starfive-jh7100.h +F: Documentation/devicetree/bindings/reset/starfive* +F: drivers/reset/reset-starfive.c +F: include/dt-bindings/reset/starfive* STATIC BRANCH/CALL M: Peter Zijlstra <[email protected]>
drivers/reset/Kconfig +3 -3
@@ -225,12 +225,12 @@ config RESET_SOCFPGA This enables the reset driver for the SoCFPGA ARMv7 platforms. This driver gets initialized early during platform init calls. -config RESET_STARFIVE_JH7100 - bool "StarFive JH7100 Reset Driver" +config RESET_STARFIVE + bool "StarFive SoC Reset Driver" depends on SOC_STARFIVE || COMPILE_TEST default SOC_STARFIVE help - This enables the reset controller driver for the StarFive JH7100 SoC. + This enables the reset controller driver for the StarFive SoCs. config RESET_SUNPLUS bool "Sunplus SoCs Reset Driver" if COMPILE_TEST
drivers/reset/Makefile +1 -1
@@ -29,7 +29,7 @@ obj-$(CONFIG_RESET_RZG2L_USBPHY_CTRL) += reset-rzg2l-usbphy-ctrl.o obj-$(CONFIG_RESET_SCMI) += reset-scmi.o obj-$(CONFIG_RESET_SIMPLE) += reset-simple.o obj-$(CONFIG_RESET_SOCFPGA) += reset-socfpga.o -obj-$(CONFIG_RESET_STARFIVE_JH7100) += reset-starfive-jh7100.o +obj-$(CONFIG_RESET_STARFIVE) += reset-starfive.o obj-$(CONFIG_RESET_SUNPLUS) += reset-sunplus.o obj-$(CONFIG_RESET_SUNXI) += reset-sunxi.o obj-$(CONFIG_RESET_TI_SCI) += reset-ti-sci.o
drivers/reset/reset-starfive.c renamed from drivers/reset/reset-starfive-jh7100.c +34 -34
136 lines not on this page · raw message
Signature · 1 line
2.17.1
PATCH 11/30 dt-bindings: reset: Add StarFive JH7110 reset definitions
In reply to Hal FengFrom: Emil Renner Berthing <[email protected]>
Add resets for the StarFive JH7110 reset controller.
--- include/dt-bindings/reset/starfive-jh7110.h | 154 ++++++++++++++++++++ 1 file changed, 154 insertions(+) create mode 100644 include/dt-bindings/reset/starfive-jh7110.h
include/dt-bindings/reset/starfive-jh7110.h new file +154 -0
@@ -0,0 +1,154 @@ +/* SPDX-License-Identifier: GPL-2.0 OR MIT */ +/* +* Copyright (C) 2021-2022 Emil Renner Berthing <[email protected]> +*/ + +#ifndef __DT_BINDINGS_RESET_STARFIVE_JH7110_H__ +#define __DT_BINDINGS_RESET_STARFIVE_JH7110_H__ + +/* syscrg_rst */ +#define JH7110_SYSRST_JTAG2APB 0 +#define JH7110_SYSRST_SYSCON 1 +#define JH7110_SYSRST_IOMUX 2 +#define JH7110_SYSRST_BUS 3 +#define JH7110_SYSRST_DEBUG 4 +#define JH7110_SYSRST_CORE0 5 +#define JH7110_SYSRST_CORE1 6 +#define JH7110_SYSRST_CORE2 7 +#define JH7110_SYSRST_CORE3 8 +#define JH7110_SYSRST_CORE4 9 +#define JH7110_SYSRST_CORE0_ST 10 +#define JH7110_SYSRST_CORE1_ST 11 +#define JH7110_SYSRST_CORE2_ST 12 +#define JH7110_SYSRST_CORE3_ST 13 +#define JH7110_SYSRST_CORE4_ST 14 +#define JH7110_SYSRST_TRACE0 15 +#define JH7110_SYSRST_TRACE1 16 +#define JH7110_SYSRST_TRACE2 17 +#define JH7110_SYSRST_TRACE3 18 +#define JH7110_SYSRST_TRACE4 19 +#define JH7110_SYSRST_TRACE_COM 20 +#define JH7110_SYSRST_GPU_APB 21 +#define JH7110_SYSRST_GPU_DOMA 22 +#define JH7110_SYSRST_NOC_BUS_APB_BUS 23 +#define JH7110_SYSRST_NOC_BUS_AXICFG0_AXI 24 +#define JH7110_SYSRST_NOC_BUS_CPU_AXI 25 +#define JH7110_SYSRST_NOC_BUS_DISP_AXI 26 +#define JH7110_SYSRST_NOC_BUS_GPU_AXI 27 +#define JH7110_SYSRST_NOC_BUS_ISP_AXI 28 +#define JH7110_SYSRST_NOC_BUS_DDRC 29 +#define JH7110_SYSRST_NOC_BUS_STG_AXI 30 +#define JH7110_SYSRST_NOC_BUS_VDEC_AXI 31 + +#define JH7110_SYSRST_NOC_BUS_VENC_AXI 32 +#define JH7110_SYSRST_AXI_CFG1_DEC_AHB 33 +#define JH7110_SYSRST_AXI_CFG1_DEC_MAIN 34 +#define JH7110_SYSRST_AXI_CFG0_DEC_MAIN 35 +#define JH7110_SYSRST_AXI_CFG0_DEC_MAIN_DIV 36 +#define JH7110_SYSRST_AXI_CFG0_DEC_HIFI4 37 +#define JH7110_SYSRST_DDR_AXI 38 +#define JH7110_SYSRST_DDR_OSC 39 +#define JH7110_SYSRST_DDR_APB 40 +#define JH7110_SYSRST_DOM_ISP_TOP_N 41 +#define JH7110_SYSRST_DOM_ISP_TOP_AXI 42 +#define JH7110_SYSRST_DOM_VOUT_TOP_SRC 43 +#define JH7110_SYSRST_CODAJ12_AXI 44 +#define JH7110_SYSRST_CODAJ12_CORE 45 +#define JH7110_SYSRST_CODAJ12_APB 46 +#define JH7110_SYSRST_WAVE511_AXI 47 +#define JH7110_SYSRST_WAVE511_BPU 48 +#define JH7110_SYSRST_WAVE511_VCE 49 +#define JH7110_SYSRST_WAVE511_APB 50 +#define JH7110_SYSRST_VDEC_JPG_ARB_JPG 51 +#define JH7110_SYSRST_VDEC_JPG_ARB_MAIN 52 +#define JH7110_SYSRST_AXIMEM0_AXI 53 +#define JH7110_SYSRST_WAVE420L_AXI 54 +#define JH7110_SYSRST_WAVE420L_BPU 55 +#define JH7110_SYSRST_WAVE420L_VCE 56 +#define JH7110_SYSRST_WAVE420L_APB 57 +#define JH7110_SYSRST_AXIMEM1_AXI 58 +#define JH7110_SYSRST_AXIMEM2_AXI 59 +#define JH7110_SYSRST_INTMEM 60 +#define JH7110_SYSRST_QSPI_AHB 61 +#define JH7110_SYSRST_QSPI_APB 62 +#define JH7110_SYSRST_QSPI_REF 63 + +#define JH7110_SYSRST_SDIO0_AHB 64 +#define JH7110_SYSRST_SDIO1_AHB 65 +#define JH7110_SYSRST_GMAC1_AXI 66 +#define JH7110_SYSRST_GMAC1_AHB 67 +#define JH7110_SYSRST_MAILBOX 68 +#define JH7110_SYSRST_SPI0_APB 69 +#define JH7110_SYSRST_SPI1_APB 70 +#define JH7110_SYSRST_SPI2_APB 71 +#define JH7110_SYSRST_SPI3_APB 72 +#define JH7110_SYSRST_SPI4_APB 73 +#define JH7110_SYSRST_SPI5_APB 74 +#define JH7110_SYSRST_SPI6_APB 75 +#define JH7110_SYSRST_I2C0_APB 76 +#define JH7110_SYSRST_I2C1_APB 77 +#define JH7110_SYSRST_I2C2_APB 78 +#define JH7110_SYSRST_I2C3_APB 79 +#define JH7110_SYSRST_I2C4_APB 80 +#define JH7110_SYSRST_I2C5_APB 81 +#define JH7110_SYSRST_I2C6_APB 82 +#define JH7110_SYSRST_UART0_APB 83 +#define JH7110_SYSRST_UART0_CORE 84 +#define JH7110_SYSRST_UART1_APB 85 +#define JH7110_SYSRST_UART1_CORE 86 +#define JH7110_SYSRST_UART2_APB 87 +#define JH7110_SYSRST_UART2_CORE 88 +#define JH7110_SYSRST_UART3_APB 89 +#define JH7110_SYSRST_UART3_CORE 90 +#define JH7110_SYSRST_UART4_APB 91 +#define JH7110_SYSRST_UART4_CORE 92 +#define JH7110_SYSRST_UART5_APB 93 +#define JH7110_SYSRST_UART5_CORE 94 +#define JH7110_SYSRST_SPDIF_APB 95 + +#define JH7110_SYSRST_PWMDAC_APB 96 +#define JH7110_SYSRST_PDM_DMIC 97 +#define JH7110_SYSRST_PDM_APB 98 +#define JH7110_SYSRST_I2SRX_APB 99 +#define JH7110_SYSRST_I2SRX_BCLK 100 +#define JH7110_SYSRST_I2STX0_APB 101 +#define JH7110_SYSRST_I2STX0_BCLK 102 +#define JH7110_SYSRST_I2STX1_APB 103 +#define JH7110_SYSRST_I2STX1_BCLK 104 +#define JH7110_SYSRST_TDM_AHB 105 +#define JH7110_SYSRST_TDM_CORE 106 +#define JH7110_SYSRST_TDM_APB 107 +#define JH7110_SYSRST_PWM_APB 108 +#define JH7110_SYSRST_WDT_APB 109 +#define JH7110_SYSRST_WDT_CORE 110 +#define JH7110_SYSRST_CAN0_APB 111 +#define JH7110_SYSRST_CAN0_CORE 112 +#define JH7110_SYSRST_CAN0_TIMER 113 +#define JH7110_SYSRST_CAN1_APB 114 +#define JH7110_SYSRST_CAN1_CORE 115 +#define JH7110_SYSRST_CAN1_TIMER 116 +#define JH7110_SYSRST_TIMER_APB 117 +#define JH7110_SYSRST_TIMER0 118 +#define JH7110_SYSRST_TIMER1 119 +#define JH7110_SYSRST_TIMER2 120 +#define JH7110_SYSRST_TIMER3 121 +#define JH7110_SYSRST_INT_CTRL_APB 122 +#define JH7110_SYSRST_TEMP_APB 123 +#define JH7110_SYSRST_TEMP_CORE 124 +#define JH7110_SYSRST_JTAG_CERTIFICATION 125 + +#define JH7110_SYSRST_END 126 + +/* aoncrg_rst */ +#define JH7110_AONRST_GMAC0_AXI 0 +#define JH7110_AONRST_GMAC0_AHB 1 +#define JH7110_AONRST_AON_IOMUX 2 +#define JH7110_AONRST_PMU_APB 3 +#define JH7110_AONRST_PMU_WKUP 4 +#define JH7110_AONRST_RTC_APB 5 +#define JH7110_AONRST_RTC_CAL 6 +#define JH7110_AONRST_RTC_32K 7 + +#define JH7110_AONRST_END 8 + +#endif /* __DT_BINDINGS_RESET_STARFIVE_JH7110_H__ */
Signature · 1 line
2.17.1
PATCH 12/30 dt-bindings: reset: Add starfive,jh7110-reset bindings
In reply to Hal FengAdd bindings for the reset controller on the JH7110 RISC-V SoC by StarFive Technology Ltd.
--- .../bindings/reset/starfive,jh7110-reset.yaml | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 Documentation/devicetree/bindings/reset/starfive,jh7110-reset.yaml
Documentation/devicetree/bindings/reset/starfive,jh7110-reset.yaml new file +54 -0
@@ -0,0 +1,54 @@ +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/reset/starfive,jh7110-reset.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: StarFive JH7110 SoC Reset Controller Device Tree Bindings + +maintainers: + - Emil Renner Berthing <[email protected]> + - Hal Feng <[email protected]> + +properties: + compatible: + enum: + - starfive,jh7110-reset + + "#reset-cells": + const: 1 + + starfive,assert-offset: + description: Offset of the first ASSERT register + $ref: /schemas/types.yaml#/definitions/uint32 + + starfive,status-offset: + description: Offset of the first STATUS register + $ref: /schemas/types.yaml#/definitions/uint32 + + starfive,nr-resets: + description: Number of reset signals + $ref: /schemas/types.yaml#/definitions/uint32 + +required: + - compatible + - "#reset-cells" + - starfive,assert-offset + - starfive,status-offset + - starfive,nr-resets + +additionalProperties: false + +examples: + - | + #include <dt-bindings/reset/starfive-jh7110.h> + + syscrg_rst: reset-controller@13020000 { + compatible = "starfive,jh7110-reset"; + #reset-cells = <1>; + starfive,assert-offset = <0x2F8>; + starfive,status-offset= <0x308>; + starfive,nr-resets = <JH7110_SYSRST_END>; + }; + +...
Signature · 1 line
2.17.1
Rob Herring
maintainerRe: [PATCH v1 12/30] dt-bindings: reset: Add starfive,jh7110-reset bindings
Quoted 9 lines · Hal Feng
Add bindings for the reset controller on the JH7110 RISC-V SoC by StarFive Technology Ltd.
Signed-off-by Hal Feng <[email protected]>--- .../bindings/reset/starfive,jh7110-reset.yaml | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 Documentation/devicetree/bindings/reset/starfive,jh7110-reset.yaml
My bot found errors running 'make DT_CHECKER_FLAGS=-m dt_binding_check' on your patch (DT_CHECKER_FLAGS is new in v5.13):
yamllint warnings/errors:
dtschema/dtc warnings/errors:Documentation/devicetree/bindings/reset/starfive,jh7110-reset.example.dts:18:18: fatal error: dt-bindings/reset/starfive-jh7110.h: No such file or directory
18 | #include <dt-bindings/reset/starfive-jh7110.h>
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
make[1]: *** [scripts/Makefile.lib:384: Documentation/devicetree/bindings/reset/starfive,jh7110-reset.example.dtb] Error 1 make[1]: *** Waiting for unfinished jobs....
make: *** [Makefile:1420: dt_binding_check] Error 2
doc reference errors (make refcheckdocs):
See https://patchwork.ozlabs.org/patch/
This check can fail if there are any dependencies. The base for a patch series is generally the most recent rc1.
If you already ran 'make dt_binding_check' and didn't see the above error(s), then make sure 'yamllint' is installed and dt-schema is up to date:
pip3 install dtschema --upgrade
Please check and re-submit.
Rob Herring
maintainerRe: [PATCH v1 12/30] dt-bindings: reset: Add starfive,jh7110-reset bindings
Quoted 16 lines · Rob Herring
Quoted 9 lines · Hal Feng
Add bindings for the reset controller on the JH7110 RISC-V SoC by StarFive Technology Ltd.
Signed-off-by Hal Feng <[email protected]>--- .../bindings/reset/starfive,jh7110-reset.yaml | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 Documentation/devicetree/bindings/reset/starfive,jh7110-reset.yamlMy bot found errors running 'make DT_CHECKER_FLAGS=-m
dt_binding_check' on your patch (DT_CHECKER_FLAGSis new in v5.13):yamllint warnings/errors:
Quoted 8 lines
dtschema/dtc warnings/errors:
Documentation/devicetree/bindings/reset/starfive,jh7110-reset.example.dts:18:18: fatal error:dt-bindings/reset/starfive-jh7110.h: No such file or directory
18 | #include <dt-bindings/reset/starfive-jh7110.h>| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~compilation terminated.
make[1]: *** [scripts/Makefile.lib:384:Documentation/devicetree/bindings/reset/starfive,jh7110-reset.example.dtb] Error 1 make[1]: *** Waiting for unfinished jobs....
make: *** [Makefile:1420:dt_binding_check] Error 2
Looks to be because this series got moderated and came in waves. In any case, patches 11 and 12 can be combined. Same for any other bindings and binding headers.
Rob
Rob Herring
maintainerRe: [PATCH v1 12/30] dt-bindings: reset: Add starfive,jh7110-reset bindings
In reply to Hal FengQuoted 21 lines · Hal Feng
Add bindings for the reset controller on the JH7110 RISC-V SoC by StarFive Technology Ltd.
Signed-off-by Hal Feng <[email protected]>--- .../bindings/reset/starfive,jh7110-reset.yaml | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 Documentation/devicetree/bindings/reset/starfive,jh7110-reset.yamlDocumentation/devicetree/bindings/reset/starfive,jh7110-reset.yaml new file +6
-0@@ -0,0 +1,54 @@ +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/reset/starfive,jh7110-reset.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# +
Documentation/devicetree/bindings/reset/starfive,jh7110-reset.yaml line 16
Quoted 10 lines
Documentation/devicetree/bindings/reset/starfive,jh7110-reset.yaml new file +10
-0+title: StarFive JH7110 SoC Reset Controller Device Tree Bindings + +maintainers: + - Emil Renner Berthing <[email protected]> + - Hal Feng <[email protected]> + +properties: + compatible: + enum: + - starfive,jh7110-reset
'reg' needed? Is this a sub-block of something else?
Documentation/devicetree/bindings/reset/starfive,jh7110-reset.yaml line 27
Quoted 11 lines
Documentation/devicetree/bindings/reset/starfive,jh7110-reset.yaml new file +11
-0+ + "#reset-cells": + const: 1 + + starfive,assert-offset: + description: Offset of the first ASSERT register + $ref: /schemas/types.yaml#/definitions/uint32 + + starfive,status-offset: + description: Offset of the first STATUS register + $ref: /schemas/types.yaml#/definitions/uint32
These can't be implied from the compatible string?
Documentation/devicetree/bindings/reset/starfive,jh7110-reset.yaml line 31
Quoted 4 lines
Documentation/devicetree/bindings/reset/starfive,jh7110-reset.yaml new file +4
-0+ + starfive,nr-resets: + description: Number of reset signals + $ref: /schemas/types.yaml#/definitions/uint32
Why do you need this? Most bindings don't. If just to validate 'resets' args, then don't.
Quoted 27 lines
Documentation/devicetree/bindings/reset/starfive,jh7110-reset.yaml new file +23
-0+ +required: + - compatible + - "#reset-cells" + - starfive,assert-offset + - starfive,status-offset + - starfive,nr-resets + +additionalProperties: false + +examples: + - | + #include <dt-bindings/reset/starfive-jh7110.h> + + syscrg_rst: reset-controller@13020000 { + compatible = "starfive,jh7110-reset"; + #reset-cells = <1>; + starfive,assert-offset = <0x2F8>; + starfive,status-offset= <0x308>; + starfive,nr-resets = <JH7110_SYSRST_END>; + }; + +...Signature · 1 line
2.17.1
Re: [PATCH v1 12/30] dt-bindings: reset: Add starfive,jh7110-reset bindings
Quoted 26 lines · Rob Herring
Quoted 25 lines · Hal Feng
Add bindings for the reset controller on the JH7110 RISC-V SoC by StarFive Technology Ltd.
Signed-off-by Hal Feng <[email protected]>--- .../bindings/reset/starfive,jh7110-reset.yaml | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 Documentation/devicetree/bindings/reset/starfive,jh7110-reset.yamlDocumentation/devicetree/bindings/reset/starfive,jh7110-reset.yaml new file +10
-0@@ -0,0 +1,54 @@ +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/reset/starfive,jh7110-reset.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: StarFive JH7110 SoC Reset Controller Device Tree Bindings + +maintainers: + - Emil Renner Berthing <[email protected]>
Quoted 8 lines
Documentation/devicetree/bindings/reset/starfive,jh7110-reset.yaml line 16
Quoted 6 lines
Documentation/devicetree/bindings/reset/starfive,jh7110-reset.yaml new file +6
-0+ - Hal Feng <[email protected]> + +properties: + compatible: + enum: + - starfive,jh7110-reset'reg' needed? Is this a sub-block of something else?
Yes, the reset node is a child node of the syscon node, see patch 27 for detail. You might not see the complete patches at that time due to technical issue of our smtp email server. Again, I feel so sorry about that.
syscrg: syscrg@13020000 {
compatible = "syscon", "simple-mfd";
reg = <0x0 0x13020000 0x0 0x10000>;
syscrg_clk: clock-controller@13020000 {
compatible = "starfive,jh7110-clkgen-sys";
clocks = <&osc>, <&gmac1_rmii_refin>,
<&gmac1_rgmii_rxin>,
<&i2stx_bclk_ext>, <&i2stx_lrck_ext>,
<&i2srx_bclk_ext>, <&i2srx_lrck_ext>,
<&tdm_ext>, <&mclk_ext>;
clock-names = "osc", "gmac1_rmii_refin",
"gmac1_rgmii_rxin",
"i2stx_bclk_ext", "i2stx_lrck_ext",
"i2srx_bclk_ext", "i2srx_lrck_ext",
"tdm_ext", "mclk_ext";
#clock-cells = <1>;
};
syscrg_rst: reset-controller@13020000 {
compatible = "starfive,jh7110-reset";
#reset-cells = <1>;
starfive,assert-offset = <0x2F8>;
starfive,status-offset= <0x308>;
starfive,nr-resets = <JH7110_SYSRST_END>;
};
};In this case, we get the memory mapped space through the parent node with syscon APIs. You can see patch 13 for detail.
static int reset_starfive_register(struct platform_device *pdev, const u32 *asserted)
{
struct starfive_reset *data;
int ret;
data = devm_kzalloc(&pdev->dev, sizeof(*data), GFP_KERNEL);
if (!data)
return -ENOMEM;
data->regmap = device_node_to_regmap(pdev->dev.of_node); //for JH7100
if (IS_ERR(data->regmap)) {
data->regmap = syscon_node_to_regmap(pdev->dev.of_node->parent); //for JH7110
if (IS_ERR(data->regmap)) {
dev_err(&pdev->dev, "failed to get regmap (error %ld)\n",
PTR_ERR(data->regmap));
return PTR_ERR(data->regmap);
}
}
...
}We use this method to avoid errors when remapping the same address in two different drivers, because clock and reset of StarFive JH7110 share a common register address region. For similar implementation, refer to file [1] and [2].
[1] arch/riscv/boot/dts/canaan/k210.dtsi
sysctl: syscon@50440000 {
compatible = "canaan,k210-sysctl",
"syscon", "simple-mfd";
reg = <0x50440000 0x100>;
clocks = <&sysclk K210_CLK_APB1>;
clock-names = "pclk";
sysclk: clock-controller {
#clock-cells = <1>;
compatible = "canaan,k210-clk";
clocks = <&in0>;
};
sysrst: reset-controller {
compatible = "canaan,k210-rst";
#reset-cells = <1>;
};
reboot: syscon-reboot {
compatible = "syscon-reboot";
regmap = <&sysctl>;
offset = <48>;
mask = <1>;
value = <1>;
};
};[2] drivers/reset/reset-k210.c
Quoted 14 lines
Documentation/devicetree/bindings/reset/starfive,jh7110-reset.yaml line 27
Quoted 12 lines
Documentation/devicetree/bindings/reset/starfive,jh7110-reset.yaml new file +11
-0+ + "#reset-cells": + const: 1 + + starfive,assert-offset: + description: Offset of the first ASSERT register + $ref: /schemas/types.yaml#/definitions/uint32 + + starfive,status-offset: + description: Offset of the first STATUS register + $ref: /schemas/types.yaml#/definitions/uint32These can't be implied from the compatible string?
These two properties are the key differences among different reset controllers. There are five memory regions for clock and reset in StarFive JH7110 SoC. They are "syscrg", "aoncrg", "stgcrg", "ispcrg" and "voutcrg". Each memory region has different reset ASSERT/STATUS register offset and different number of reset signals. After storing them in dt, the reset driver can register all reset controllers with the same compatible string. All we expect is that all reset controllers in a single SoC use the same compatible string for matching and the reset driver can be applied to all StarFive SoCs using different compatible strings. Just like
arch/riscv/boot/dts/starfive/jh7100.dtsi:
rstgen: reset-controller@11840000 {
compatible = "starfive,jh7100-reset";
reg = <0x0 0x11840000 0x0 0x10000>;
#reset-cells = <1>;
starfive,assert-offset = <0x0>;
starfive,status-offset= <0x10>;
starfive,nr-resets = <JH7100_RSTN_END>;
};arch/riscv/boot/dts/starfive/jh7110.dtsi:
syscrg: syscrg@13020000 {
compatible = "syscon", "simple-mfd";
reg = <0x0 0x13020000 0x0 0x10000>;
syscrg_clk: clock-controller@13020000 {
compatible = "starfive,jh7110-clkgen-sys";
...
};
syscrg_rst: reset-controller@13020000 {
compatible = "starfive,jh7110-reset";
#reset-cells = <1>;
starfive,assert-offset = <0x2F8>;
starfive,status-offset= <0x308>;
starfive,nr-resets = <JH7110_SYSRST_END>;
};
};
aoncrg: aoncrg@17000000 {
compatible = "syscon", "simple-mfd";
reg = <0x0 0x17000000 0x0 0x10000>;
aoncrg_clk: clock-controller@17000000 {
compatible = "starfive,jh7110-clkgen-aon";
...
};
aoncrg_rst: reset-controller@17000000 {
compatible = "starfive,jh7110-reset";
#reset-cells = <1>;
starfive,assert-offset = <0x38>;
starfive,status-offset= <0x3C>;
starfive,nr-resets = <JH7110_AONRST_END>;
};
};
stgcrg: stgcrg@10230000 { //Not submmited yet
compatible = "syscon", "simple-mfd";
reg = <0x0 0x10230000 0x0 0x10000>;
stgcrg_clk: clock-controller@10230000 {
compatible = "starfive,jh7110-clkgen-stg";
...
};
stgcrg_rst: reset-controller@10230000 {
compatible = "starfive,jh7110-reset";
#reset-cells = <1>;
starfive,assert-offset = <0x74>;
starfive,status-offset= <0x78>;
starfive,nr-resets = <JH7110_STGRST_END>;
};
};
...Quoted 8 lines
Documentation/devicetree/bindings/reset/starfive,jh7110-reset.yaml line 31
Quoted 5 lines
Documentation/devicetree/bindings/reset/starfive,jh7110-reset.yaml new file +4
-0+ + starfive,nr-resets: + description: Number of reset signals + $ref: /schemas/types.yaml#/definitions/uint32Why do you need this? Most bindings don't. If just to validate 'resets' args, then don't.
Can be removed. Instead, the reset driver should includes some related binding headers or defines some macros for pointing out the number of reset signals of each reset controller.
Best regards,
Hal
Quoted 30 lines
Quoted 29 lines
Documentation/devicetree/bindings/reset/starfive,jh7110-reset.yaml new file +23
-0+ +required: + - compatible + - "#reset-cells" + - starfive,assert-offset + - starfive,status-offset + - starfive,nr-resets + +additionalProperties: false + +examples: + - | + #include <dt-bindings/reset/starfive-jh7110.h> + + syscrg_rst: reset-controller@13020000 { + compatible = "starfive,jh7110-reset"; + #reset-cells = <1>; + starfive,assert-offset = <0x2F8>; + starfive,status-offset= <0x308>; + starfive,nr-resets = <JH7110_SYSRST_END>; + }; + +...Signature · 1 line
2.17.1
Re: [PATCH v1 12/30] dt-bindings: reset: Add starfive,jh7110-reset bindings
Quoted 54 lines · Hal Feng
Quoted 26 lines · Rob Herring
Quoted 25 lines · Hal Feng
Add bindings for the reset controller on the JH7110 RISC-V SoC by StarFive Technology Ltd.
Signed-off-by Hal Feng <[email protected]>--- .../bindings/reset/starfive,jh7110-reset.yaml | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 Documentation/devicetree/bindings/reset/starfive,jh7110-reset.yamlDocumentation/devicetree/bindings/reset/starfive,jh7110-reset.yaml new file +10
-0@@ -0,0 +1,54 @@ +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/reset/starfive,jh7110-reset.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: StarFive JH7110 SoC Reset Controller Device Tree Bindings + +maintainers: + - Emil Renner Berthing <[email protected]>Quoted 8 lines
Documentation/devicetree/bindings/reset/starfive,jh7110-reset.yaml line 16
Quoted 6 lines
Documentation/devicetree/bindings/reset/starfive,jh7110-reset.yaml new file +6
-0+ - Hal Feng <[email protected]> + +properties: + compatible: + enum: + - starfive,jh7110-reset'reg' needed? Is this a sub-block of something else?
Yes, the reset node is a child node of the syscon node, see patch 27 for detail. You might not see the complete patches at that time due to technical issue of our smtp email server. Again, I feel so sorry about that.
syscrg: syscrg@13020000 { compatible = "syscon", "simple-mfd"; reg = <0x0 0x13020000 0x0 0x10000>; syscrg_clk: clock-controller@13020000 { compatible = "starfive,jh7110-clkgen-sys"; clocks = <&osc>, <&gmac1_rmii_refin>, <&gmac1_rgmii_rxin>, <&i2stx_bclk_ext>, <&i2stx_lrck_ext>, <&i2srx_bclk_ext>, <&i2srx_lrck_ext>, <&tdm_ext>, <&mclk_ext>; clock-names = "osc", "gmac1_rmii_refin", "gmac1_rgmii_rxin", "i2stx_bclk_ext", "i2stx_lrck_ext",
Quoted 8 lines
"i2srx_bclk_ext", "i2srx_lrck_ext",
"tdm_ext", "mclk_ext";
#clock-cells = <1>;
};
syscrg_rst: reset-controller@13020000 {
compatible = "starfive,jh7110-reset";
#reset-cells = <1>;So the answer to the "reg needed?" is what? You have unit address but no reg, so this is not correct.
Quoted 11 lines
starfive,assert-offset = <0x2F8>; starfive,status-offset= <0x308>; starfive,nr-resets = <JH7110_SYSRST_END>; }; };In this case, we get the memory mapped space through the parent node with syscon APIs. You can see patch 13 for detail.
static int
reset_starfive_register(struct platform_device *pdev, const u32 *asserted){
(...)
Quoted 16 lines
Quoted 15 lines
Documentation/devicetree/bindings/reset/starfive,jh7110-reset.yaml line 27
Quoted 13 lines
Documentation/devicetree/bindings/reset/starfive,jh7110-reset.yaml new file +11
-0+ + "#reset-cells": + const: 1 + + starfive,assert-offset: + description: Offset of the first ASSERT register + $ref: /schemas/types.yaml#/definitions/uint32 + + starfive,status-offset: + description: Offset of the first STATUS register + $ref: /schemas/types.yaml#/definitions/uint32These can't be implied from the compatible string?
Quoted 1 line
These two properties are the key differences among different reset controllers.
Different as in different compatibles? Please answer the questions...
Quoted 4 lines
There are five memory regions for clock and reset in StarFive JH7110 SoC. They are "syscrg", "aoncrg", "stgcrg", "ispcrg" and "voutcrg". Each memory region has different reset ASSERT/STATUS register offset and different number of reset signals.
Then these are not exactly the same devices, so using one compatible for them does not look correct.
Quoted 2 lines
After storing them in dt, the reset driver can register all reset controllers with the same compatible string.
Which is not how the compatible should be used...
Quoted 3 lines
All we expect is that all reset
controllers in a single SoC use the same compatible string for matching and the reset driver can be applied to all StarFive SoCs using different compatible strings.
Keep driver out of the talks.
Quoted 1 line
Just like
Existing bad pattern is not an argument to keep it going. Fix bad patterns instead.
Quoted 87 lines
arch/riscv/boot/dts/starfive/jh7100.dtsi:rstgen: reset-controller@11840000 { compatible = "starfive,jh7100-reset"; reg = <0x0 0x11840000 0x0 0x10000>; #reset-cells = <1>; starfive,assert-offset = <0x0>; starfive,status-offset= <0x10>; starfive,nr-resets = <JH7100_RSTN_END>; };
arch/riscv/boot/dts/starfive/jh7110.dtsi:syscrg: syscrg@13020000 { compatible = "syscon", "simple-mfd"; reg = <0x0 0x13020000 0x0 0x10000>; syscrg_clk: clock-controller@13020000 { compatible = "starfive,jh7110-clkgen-sys"; ... }; syscrg_rst: reset-controller@13020000 { compatible = "starfive,jh7110-reset"; #reset-cells = <1>; starfive,assert-offset = <0x2F8>; starfive,status-offset= <0x308>; starfive,nr-resets = <JH7110_SYSRST_END>; }; }; aoncrg: aoncrg@17000000 { compatible = "syscon", "simple-mfd"; reg = <0x0 0x17000000 0x0 0x10000>; aoncrg_clk: clock-controller@17000000 { compatible = "starfive,jh7110-clkgen-aon"; ... }; aoncrg_rst: reset-controller@17000000 { compatible = "starfive,jh7110-reset"; #reset-cells = <1>; starfive,assert-offset = <0x38>; starfive,status-offset= <0x3C>; starfive,nr-resets = <JH7110_AONRST_END>; }; }; stgcrg: stgcrg@10230000 { //Not submmited yet compatible = "syscon", "simple-mfd"; reg = <0x0 0x10230000 0x0 0x10000>; stgcrg_clk: clock-controller@10230000 { compatible = "starfive,jh7110-clkgen-stg"; ... }; stgcrg_rst: reset-controller@10230000 { compatible = "starfive,jh7110-reset"; #reset-cells = <1>; starfive,assert-offset = <0x74>; starfive,status-offset= <0x78>; starfive,nr-resets = <JH7110_STGRST_END>; }; }; ...Quoted 8 lines
Documentation/devicetree/bindings/reset/starfive,jh7110-reset.yaml line 31
Quoted 5 lines
Documentation/devicetree/bindings/reset/starfive,jh7110-reset.yaml new file +4
-0+ + starfive,nr-resets: + description: Number of reset signals + $ref: /schemas/types.yaml#/definitions/uint32Why do you need this? Most bindings don't. If just to validate 'resets' args, then don't.
Can be removed. Instead, the reset driver should includes some related binding headers or defines some macros for pointing out the number of reset signals of each reset controller.
Best regards,
HalQuoted 2 lines
Quoted 15 lines
Quoted 7 lines
Quoted 7 lines
Documentation/devicetree/bindings/reset/starfive,jh7110-reset.yaml new file +7
-0+ +required: + - compatible + - "#reset-cells" + - starfive,assert-offset + - starfive,status-offset + - starfive,nr-resetsQuoted 8 lines
Documentation/devicetree/bindings/reset/starfive,jh7110-reset.yaml line 46
Quoted 8 lines
Documentation/devicetree/bindings/reset/starfive,jh7110-reset.yaml new file +8
-0+ +additionalProperties: false + +examples: + - | + #include <dt-bindings/reset/starfive-jh7110.h> + + syscrg_rst: reset-controller@13020000 {
Please test your patches.
Best regards,
Krzysztof
Re: [PATCH v1 12/30] dt-bindings: reset: Add starfive,jh7110-reset bindings
Quoted 60 lines · Krzysztof Kozlowski
Quoted 59 lines · Hal Feng
Quoted 26 lines · Rob Herring
Quoted 25 lines · Hal Feng
Add bindings for the reset controller on the JH7110 RISC-V SoC by StarFive Technology Ltd.
Signed-off-by Hal Feng <[email protected]>--- .../bindings/reset/starfive,jh7110-reset.yaml | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 Documentation/devicetree/bindings/reset/starfive,jh7110-reset.yamlDocumentation/devicetree/bindings/reset/starfive,jh7110-reset.yaml new file +10
-0@@ -0,0 +1,54 @@ +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/reset/starfive,jh7110-reset.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: StarFive JH7110 SoC Reset Controller Device Tree Bindings + +maintainers: + - Emil Renner Berthing <[email protected]>Quoted 8 lines
Documentation/devicetree/bindings/reset/starfive,jh7110-reset.yaml line 16
Quoted 6 lines
Documentation/devicetree/bindings/reset/starfive,jh7110-reset.yaml new file +6
-0+ - Hal Feng <[email protected]> + +properties: + compatible: + enum: + - starfive,jh7110-reset'reg' needed? Is this a sub-block of something else?
Yes, the reset node is a child node of the syscon node, see patch 27 for detail. You might not see the complete patches at that time due to technical issue of our smtp email server. Again, I feel so sorry about that.
syscrg: syscrg@13020000 { compatible = "syscon", "simple-mfd"; reg = <0x0 0x13020000 0x0 0x10000>; syscrg_clk: clock-controller@13020000 { compatible = "starfive,jh7110-clkgen-sys"; clocks = <&osc>, <&gmac1_rmii_refin>, <&gmac1_rgmii_rxin>, <&i2stx_bclk_ext>, <&i2stx_lrck_ext>, <&i2srx_bclk_ext>, <&i2srx_lrck_ext>, <&tdm_ext>, <&mclk_ext>; clock-names = "osc", "gmac1_rmii_refin", "gmac1_rgmii_rxin", "i2stx_bclk_ext", "i2stx_lrck_ext", "i2srx_bclk_ext", "i2srx_lrck_ext", "tdm_ext", "mclk_ext"; #clock-cells = <1>; };
Quoted 6 lines
Quoted 3 lines
syscrg_rst: reset-controller@13020000 { compatible = "starfive,jh7110-reset"; #reset-cells = <1>;So the answer to the "reg needed?" is what? You have unit address but no reg, so this is not correct.
Not needed in the reset-controller node, but needed in its parent node. I am sorry for missing description to point it out in the bindings. I will rewrite all bindings for the next version. Unit address here should be deleted.
Quoted 18 lines
Quoted 12 lines
starfive,assert-offset = <0x2F8>; starfive,status-offset= <0x308>; starfive,nr-resets = <JH7110_SYSRST_END>; }; };In this case, we get the memory mapped space through the parent node with syscon APIs. You can see patch 13 for detail.
static int
reset_starfive_register(struct platform_device *pdev, const u32 *asserted){(...)
Quoted 2 lines
Quoted 2 lines
Quoted 13 lines
Quoted 5 lines
Quoted 5 lines
Quoted 5 lines
Documentation/devicetree/bindings/reset/starfive,jh7110-reset.yaml new file +5
-0+ + "#reset-cells": + const: 1 + + starfive,assert-offset:Quoted 8 lines
Quoted 8 lines
Documentation/devicetree/bindings/reset/starfive,jh7110-reset.yaml line 27
Quoted 6 lines
Documentation/devicetree/bindings/reset/starfive,jh7110-reset.yaml new file +6
-0+ description: Offset of the first ASSERT register + $ref: /schemas/types.yaml#/definitions/uint32 + + starfive,status-offset: + description: Offset of the first STATUS register + $ref: /schemas/types.yaml#/definitions/uint32These can't be implied from the compatible string?
Definitely can. We do this is for simplifying the reset driver. Otherwise, we may need to define more compatibles because there are multiple reset blocks in JH7110. Another case can be found at
https://elixir.bootlin.com/linux/latest/source/Documentation/devicetree/bindings/reset/altr,rst-mgr.yaml
Quoted 11 lines
Quoted 2 lines
These two properties are the key differences among different reset controllers.
Different as in different compatibles? Please answer the questions..>
Quoted 4 lines
There are five memory regions for clock and reset in StarFive JH7110 SoC. They are "syscrg", "aoncrg", "stgcrg", "ispcrg" and "voutcrg". Each memory region has different reset ASSERT/STATUS register offset and different number of reset signals.
Then these are not exactly the same devices, so using one compatible for them does not look correct.
One compatible can just be matched by one device? I think this is what confuses me.
Best regards,
Hal
Quoted 127 lines
Quoted 3 lines
After storing them in dt, the reset driver can register all reset controllers with the same compatible string.
Which is not how the compatible should be used...
Quoted 3 lines
All we expect is that all reset
controllers in a single SoC use the same compatible string for matching and the reset driver can be applied to all StarFive SoCs using different compatible strings.Keep driver out of the talks.
Quoted 1 line
Just like
Existing bad pattern is not an argument to keep it going. Fix bad patterns instead.
Quoted 87 lines
arch/riscv/boot/dts/starfive/jh7100.dtsi:rstgen: reset-controller@11840000 { compatible = "starfive,jh7100-reset"; reg = <0x0 0x11840000 0x0 0x10000>; #reset-cells = <1>; starfive,assert-offset = <0x0>; starfive,status-offset= <0x10>; starfive,nr-resets = <JH7100_RSTN_END>; };
arch/riscv/boot/dts/starfive/jh7110.dtsi:syscrg: syscrg@13020000 { compatible = "syscon", "simple-mfd"; reg = <0x0 0x13020000 0x0 0x10000>; syscrg_clk: clock-controller@13020000 { compatible = "starfive,jh7110-clkgen-sys"; ... }; syscrg_rst: reset-controller@13020000 { compatible = "starfive,jh7110-reset"; #reset-cells = <1>; starfive,assert-offset = <0x2F8>; starfive,status-offset= <0x308>; starfive,nr-resets = <JH7110_SYSRST_END>; }; }; aoncrg: aoncrg@17000000 { compatible = "syscon", "simple-mfd"; reg = <0x0 0x17000000 0x0 0x10000>; aoncrg_clk: clock-controller@17000000 { compatible = "starfive,jh7110-clkgen-aon"; ... }; aoncrg_rst: reset-controller@17000000 { compatible = "starfive,jh7110-reset"; #reset-cells = <1>; starfive,assert-offset = <0x38>; starfive,status-offset= <0x3C>; starfive,nr-resets = <JH7110_AONRST_END>; }; }; stgcrg: stgcrg@10230000 { //Not submmited yet compatible = "syscon", "simple-mfd"; reg = <0x0 0x10230000 0x0 0x10000>; stgcrg_clk: clock-controller@10230000 { compatible = "starfive,jh7110-clkgen-stg"; ... }; stgcrg_rst: reset-controller@10230000 { compatible = "starfive,jh7110-reset"; #reset-cells = <1>; starfive,assert-offset = <0x74>; starfive,status-offset= <0x78>; starfive,nr-resets = <JH7110_STGRST_END>; }; }; ...Quoted 8 lines
Documentation/devicetree/bindings/reset/starfive,jh7110-reset.yaml line 31
Quoted 5 lines
Documentation/devicetree/bindings/reset/starfive,jh7110-reset.yaml new file +4
-0+ + starfive,nr-resets: + description: Number of reset signals + $ref: /schemas/types.yaml#/definitions/uint32Why do you need this? Most bindings don't. If just to validate 'resets' args, then don't.
Can be removed. Instead, the reset driver should includes some related binding headers or defines some macros for pointing out the number of reset signals of each reset controller.
Best regards,
HalQuoted 2 lines
Quoted 15 lines
Quoted 7 lines
Quoted 7 lines
Documentation/devicetree/bindings/reset/starfive,jh7110-reset.yaml new file +7
-0+ +required: + - compatible + - "#reset-cells" + - starfive,assert-offset + - starfive,status-offset + - starfive,nr-resetsQuoted 8 lines
Documentation/devicetree/bindings/reset/starfive,jh7110-reset.yaml line 46
Quoted 8 lines
Documentation/devicetree/bindings/reset/starfive,jh7110-reset.yaml new file +8
-0+ +additionalProperties: false + +examples: + - | + #include <dt-bindings/reset/starfive-jh7110.h> + + syscrg_rst: reset-controller@13020000 {Please test your patches.
Best regards,
Krzysztof
Re: [PATCH v1 12/30] dt-bindings: reset: Add starfive,jh7110-reset bindings
Quoted 30 lines · Hal Feng
Quoted 30 lines
Quoted 30 lines
Quoted 6 lines
Documentation/devicetree/bindings/reset/starfive,jh7110-reset.yaml line 16
Quoted 4 lines
Documentation/devicetree/bindings/reset/starfive,jh7110-reset.yaml new file +4
-0+properties: + compatible: + enum: + - starfive,jh7110-reset'reg' needed? Is this a sub-block of something else?
Yes, the reset node is a child node of the syscon node, see patch 27 for detail. You might not see the complete patches at that time due to technical issue of our smtp email server. Again, I feel so sorry about that.
syscrg: syscrg@13020000 { compatible = "syscon", "simple-mfd"; reg = <0x0 0x13020000 0x0 0x10000>; syscrg_clk: clock-controller@13020000 { compatible = "starfive,jh7110-clkgen-sys"; clocks = <&osc>, <&gmac1_rmii_refin>, <&gmac1_rgmii_rxin>, <&i2stx_bclk_ext>, <&i2stx_lrck_ext>, <&i2srx_bclk_ext>, <&i2srx_lrck_ext>, <&tdm_ext>, <&mclk_ext>; clock-names = "osc", "gmac1_rmii_refin", "gmac1_rgmii_rxin", "i2stx_bclk_ext", "i2stx_lrck_ext", "i2srx_bclk_ext", "i2srx_lrck_ext", "tdm_ext", "mclk_ext"; #clock-cells = <1>; };
Quoted 8 lines
Quoted 6 lines
Quoted 3 lines
syscrg_rst: reset-controller@13020000 { compatible = "starfive,jh7110-reset"; #reset-cells = <1>;So the answer to the "reg needed?" is what? You have unit address but no reg, so this is not correct.
Not needed in the reset-controller node, but needed in its parent node.
We do not talk about parent node. Rob's question was in this bindings. Is this document a binding for the parent node or for this node?
Quoted 36 lines
I am sorry
for missing description to point it out in the bindings. I will rewrite all bindings for the next version. Unit address here should be deleted.Quoted 18 lines
Quoted 12 lines
starfive,assert-offset = <0x2F8>; starfive,status-offset= <0x308>; starfive,nr-resets = <JH7110_SYSRST_END>; }; };In this case, we get the memory mapped space through the parent node with syscon APIs. You can see patch 13 for detail.
static int
reset_starfive_register(struct platform_device *pdev, const u32 *asserted){(...)
Quoted 2 lines
Quoted 2 lines
Quoted 13 lines
Quoted 5 lines
Quoted 5 lines
Quoted 5 lines
Documentation/devicetree/bindings/reset/starfive,jh7110-reset.yaml new file +5
-0+ + "#reset-cells": + const: 1 + + starfive,assert-offset:Quoted 8 lines
Quoted 8 lines
Documentation/devicetree/bindings/reset/starfive,jh7110-reset.yaml line 27
Quoted 6 lines
Documentation/devicetree/bindings/reset/starfive,jh7110-reset.yaml new file +6
-0+ description: Offset of the first ASSERT register + $ref: /schemas/types.yaml#/definitions/uint32 + + starfive,status-offset: + description: Offset of the first STATUS register + $ref: /schemas/types.yaml#/definitions/uint32These can't be implied from the compatible string?
Quoted 1 line
Definitely can. We do this is for simplifying the reset driver.
The role of the bindings is not to simplify some specific driver in some specific OS...
Quoted 3 lines
Otherwise, we may need to define more compatibles because there are multiple reset blocks in JH7110. Another case can be found at
https://elixir.bootlin.com/linux/latest/source/Documentation/devicetree/bindings/reset/altr,rst-mgr.yaml
And why is this a problem? You have different hardware, so should have different compatibles. Otherwise we would have a compatible "all,everything" and use it in all possible devices.
Quoted 8 lines
Quoted 8 lines
Quoted 1 line
These two properties are the key differences among different reset controllers.
Different as in different compatibles? Please answer the questions..>
Quoted 4 lines
There are five memory regions for clock and reset in StarFive JH7110 SoC. They are "syscrg", "aoncrg", "stgcrg", "ispcrg" and "voutcrg". Each memory region has different reset ASSERT/STATUS register offset and different number of reset signals.
Quoted 5 lines
Quoted 2 lines
Then these are not exactly the same devices, so using one compatible for them does not look correct.
One compatible can just be matched by one device? I think this is what confuses me.
I don't understand the question.
Quoted 4 lines
Best regards,
Hal
Trim the replies - no need to quote everything (entire message following last reply/quote).
Best regards,
Krzysztof
Re: [PATCH v1 12/30] dt-bindings: reset: Add starfive,jh7110-reset bindings
Hey Hal Feng,
Quoted 8 lines · Krzysztof Kozlowski
Quoted 8 lines
Quoted 8 lines
Quoted 1 line
These two properties are the key differences among different reset controllers.
Different as in different compatibles? Please answer the questions..>
Quoted 4 lines
There are five memory regions for clock and reset in StarFive JH7110 SoC. They are "syscrg", "aoncrg", "stgcrg", "ispcrg" and "voutcrg". Each memory region has different reset ASSERT/STATUS register offset and different number of reset signals.
Quoted 7 lines
Quoted 5 lines
Quoted 2 lines
Then these are not exactly the same devices, so using one compatible for them does not look correct.
One compatible can just be matched by one device? I think this is what confuses me.
I don't understand the question.
If two SoCs have exactly the same device/peripheral then they _can_ use the same compatible. If they share some common, viable feature-set then one can "fall back" to the other depending on what your Venn diagram of common features looks like. I've not been following this too closely, but I think what Krzysztof is suggesting is that you have a jh7100 and a jh7110 compatible. Then in your driver you just "know" that if you match against jh7110 which values to use for register offsets & vice versa for a match against the jh7100. There's many examples over the tree for how to handle this sort of thing rather than including it in the devicetree.
Maybe Rob and Krzysztof will scream at me for this description, but devicetree is about how periperhals etc are connected together in the system not about the internals of a given peripheral.
Following that logic, the devicetree should not contain register offsets etc that are a known quanitity once you've determined that you are running on vendor,soc-foo.
Hopefully that helps with your confusion somewhat? Conor.
Re: [PATCH v1 12/30] dt-bindings: reset: Add starfive,jh7110-reset bindings
Quoted 34 lines · Conor Dooley
Hey Hal Feng,
Quoted 8 lines · Krzysztof Kozlowski
Quoted 8 lines
Quoted 8 lines
Quoted 1 line
These two properties are the key differences among different reset controllers.
Different as in different compatibles? Please answer the questions..>
Quoted 4 lines
There are five memory regions for clock and reset in StarFive JH7110 SoC. They are "syscrg", "aoncrg", "stgcrg", "ispcrg" and "voutcrg". Each memory region has different reset ASSERT/STATUS register offset and different number of reset signals.
Quoted 7 lines
Quoted 5 lines
Quoted 2 lines
Then these are not exactly the same devices, so using one compatible for them does not look correct.
One compatible can just be matched by one device? I think this is what confuses me.
I don't understand the question.
If two SoCs have exactly the same device/peripheral then they _can_ use the same compatible. If they share some common, viable feature-set then one can "fall back" to the other depending on what your Venn diagram of common features looks like. I've not been following this too closely, but I think what Krzysztof is suggesting is that you have a jh7100 and a jh7110 compatible. Then in your driver you just "know" that if you match against jh7110 which values to use for register offsets & vice versa for a match against the jh7100. There's many examples over the tree for how to handle this sort of thing rather than including it in the devicetree.
Maybe Rob and Krzysztof will scream at me for this description, but devicetree is about how periperhals etc are connected together in the system not about the internals of a given peripheral.
Quoted 6 lines
Following that logic, the devicetree should not contain register offsets etc that are a known quanitity once you've determined that you are running on vendor,soc-foo.
Hopefully that helps with your confusion somewhat? Conor.
Yes, anyway, thank you for the detailed reply.
Best regards,
Hal
Re: [PATCH v1 12/30] dt-bindings: reset: Add starfive,jh7110-reset bindings
In reply to Krzysztof KozlowskiQuoted 35 lines · Krzysztof Kozlowski
Quoted 34 lines · Hal Feng
Quoted 34 lines
Quoted 33 lines
Quoted 6 lines
Documentation/devicetree/bindings/reset/starfive,jh7110-reset.yaml line 16
Quoted 4 lines
Documentation/devicetree/bindings/reset/starfive,jh7110-reset.yaml new file +4
-0+properties: + compatible: + enum: + - starfive,jh7110-reset'reg' needed? Is this a sub-block of something else?
Yes, the reset node is a child node of the syscon node, see patch 27 for detail. You might not see the complete patches at that time due to technical issue of our smtp email server. Again, I feel so sorry about that.
syscrg: syscrg@13020000 { compatible = "syscon", "simple-mfd"; reg = <0x0 0x13020000 0x0 0x10000>; syscrg_clk: clock-controller@13020000 { compatible = "starfive,jh7110-clkgen-sys"; clocks = <&osc>, <&gmac1_rmii_refin>, <&gmac1_rgmii_rxin>, <&i2stx_bclk_ext>, <&i2stx_lrck_ext>, <&i2srx_bclk_ext>, <&i2srx_lrck_ext>, <&tdm_ext>, <&mclk_ext>; clock-names = "osc", "gmac1_rmii_refin", "gmac1_rgmii_rxin", "i2stx_bclk_ext", "i2stx_lrck_ext", "i2srx_bclk_ext", "i2srx_lrck_ext", "tdm_ext", "mclk_ext"; #clock-cells = <1>; }; syscrg_rst: reset-controller@13020000 { compatible = "starfive,jh7110-reset"; #reset-cells = <1>;
Quoted 7 lines
Quoted 4 lines
Quoted 2 lines
So the answer to the "reg needed?" is what? You have unit address but no reg, so this is not correct.
Not needed in the reset-controller node, but needed in its parent node.
We do not talk about parent node. Rob's question was in this bindings. Is this document a binding for the parent node or for this node?
This node. So not needed.
Quoted 42 lines
Quoted 37 lines
I am sorry
for missing description to point it out in the bindings. I will rewrite all bindings for the next version. Unit address here should be deleted.Quoted 18 lines
Quoted 12 lines
starfive,assert-offset = <0x2F8>; starfive,status-offset= <0x308>; starfive,nr-resets = <JH7110_SYSRST_END>; }; };In this case, we get the memory mapped space through the parent node with syscon APIs. You can see patch 13 for detail.
static int
reset_starfive_register(struct platform_device *pdev, const u32 *asserted){(...)
Quoted 2 lines
Quoted 2 lines
Quoted 13 lines
Quoted 5 lines
Quoted 5 lines
Quoted 5 lines
Documentation/devicetree/bindings/reset/starfive,jh7110-reset.yaml new file +5
-0+ + "#reset-cells": + const: 1 + + starfive,assert-offset:Quoted 8 lines
Quoted 8 lines
Documentation/devicetree/bindings/reset/starfive,jh7110-reset.yaml line 27
Quoted 6 lines
Documentation/devicetree/bindings/reset/starfive,jh7110-reset.yaml new file +6
-0+ description: Offset of the first ASSERT register + $ref: /schemas/types.yaml#/definitions/uint32 + + starfive,status-offset: + description: Offset of the first STATUS register + $ref: /schemas/types.yaml#/definitions/uint32These can't be implied from the compatible string?
Quoted 1 line
Definitely can. We do this is for simplifying the reset driver.
The role of the bindings is not to simplify some specific driver in some specific OS...
Quoted 7 lines
Quoted 3 lines
Otherwise, we may need to define more compatibles because there are multiple reset blocks in JH7110. Another case can be found at
https://elixir.bootlin.com/linux/latest/source/Documentation/devicetree/bindings/reset/altr,rst-mgr.yamlAnd why is this a problem? You have different hardware, so should have different compatibles. Otherwise we would have a compatible "all,everything" and use it in all possible devices.
Okay, I get it. Thanks a lot.
Best regards,
Hal
Re: [PATCH v1 12/30] dt-bindings: reset: Add starfive,jh7110-reset bindings
In reply to Hal FengQuoted 126 lines · Hal Feng
Quoted 26 lines · Rob Herring
Quoted 25 lines · Hal Feng
Add bindings for the reset controller on the JH7110 RISC-V SoC by StarFive Technology Ltd.
Signed-off-by Hal Feng <[email protected]>--- .../bindings/reset/starfive,jh7110-reset.yaml | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 Documentation/devicetree/bindings/reset/starfive,jh7110-reset.yamlDocumentation/devicetree/bindings/reset/starfive,jh7110-reset.yaml new file +10
-0@@ -0,0 +1,54 @@ +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/reset/starfive,jh7110-reset.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: StarFive JH7110 SoC Reset Controller Device Tree Bindings + +maintainers: + - Emil Renner Berthing <[email protected]>Quoted 8 lines
Documentation/devicetree/bindings/reset/starfive,jh7110-reset.yaml line 16
Quoted 6 lines
Documentation/devicetree/bindings/reset/starfive,jh7110-reset.yaml new file +6
-0+ - Hal Feng <[email protected]> + +properties: + compatible: + enum: + - starfive,jh7110-reset'reg' needed? Is this a sub-block of something else?
Yes, the reset node is a child node of the syscon node, see patch 27 for detail. You might not see the complete patches at that time due to technical issue of our smtp email server. Again, I feel so sorry about that.
syscrg: syscrg@13020000 { compatible = "syscon", "simple-mfd"; reg = <0x0 0x13020000 0x0 0x10000>; syscrg_clk: clock-controller@13020000 { compatible = "starfive,jh7110-clkgen-sys"; clocks = <&osc>, <&gmac1_rmii_refin>, <&gmac1_rgmii_rxin>, <&i2stx_bclk_ext>, <&i2stx_lrck_ext>, <&i2srx_bclk_ext>, <&i2srx_lrck_ext>, <&tdm_ext>, <&mclk_ext>; clock-names = "osc", "gmac1_rmii_refin", "gmac1_rgmii_rxin", "i2stx_bclk_ext", "i2stx_lrck_ext", "i2srx_bclk_ext", "i2srx_lrck_ext", "tdm_ext", "mclk_ext"; #clock-cells = <1>; }; syscrg_rst: reset-controller@13020000 { compatible = "starfive,jh7110-reset"; #reset-cells = <1>; starfive,assert-offset = <0x2F8>; starfive,status-offset= <0x308>; starfive,nr-resets = <JH7110_SYSRST_END>; }; };In this case, we get the memory mapped space through the parent node with syscon APIs. You can see patch 13 for detail.
static int
reset_starfive_register(struct platform_device *pdev, const u32 *asserted){ struct starfive_reset *data; int ret; data = devm_kzalloc(&pdev->dev, sizeof(*data), GFP_KERNEL); if (!data) return -ENOMEM; data->regmap = device_node_to_regmap(pdev->dev.of_node); //for JH7100 if (IS_ERR(data->regmap)) { data->regmap = syscon_node_to_regmap(pdev->dev.of_node->parent); //for JH7110 if (IS_ERR(data->regmap)) { dev_err(&pdev->dev, "failed to get regmap (error %ld)\n", PTR_ERR(data->regmap)); return PTR_ERR(data->regmap); } } ... }We use this method to avoid errors when remapping the same address in two different drivers, because clock and reset of StarFive JH7110 share a common register address region. For similar implementation, refer to file [1] and [2].
[1]
arch/riscv/boot/dts/canaan/k210.dtsisysctl: syscon@50440000 { compatible = "canaan,k210-sysctl", "syscon", "simple-mfd"; reg = <0x50440000 0x100>; clocks = <&sysclk K210_CLK_APB1>; clock-names = "pclk"; sysclk: clock-controller { #clock-cells = <1>; compatible = "canaan,k210-clk"; clocks = <&in0>; }; sysrst: reset-controller { compatible = "canaan,k210-rst"; #reset-cells = <1>; }; reboot: syscon-reboot { compatible = "syscon-reboot"; regmap = <&sysctl>; offset = <48>; mask = <1>; value = <1>; }; };
Quoted 1 line
[2]
drivers/reset/reset-k210.c
Here the syscon makes a little more sense since the same memory area does at least 3 different things, but on the JH7110 it is a dedicated "clock and reset generator", CRG. So this is much better modelled with a single driver taking care of both the clock and resets like the original driver did. If you do
git grep reset_controller_register drivers/clk
..you can see that there are lots of other drivers for such peripherals that combine clock and reset.
Quoted 145 lines
Quoted 14 lines
Documentation/devicetree/bindings/reset/starfive,jh7110-reset.yaml line 27
Quoted 12 lines
Documentation/devicetree/bindings/reset/starfive,jh7110-reset.yaml new file +11
-0+ + "#reset-cells": + const: 1 + + starfive,assert-offset: + description: Offset of the first ASSERT register + $ref: /schemas/types.yaml#/definitions/uint32 + + starfive,status-offset: + description: Offset of the first STATUS register + $ref: /schemas/types.yaml#/definitions/uint32These can't be implied from the compatible string?
These two properties are the key differences among different reset controllers. There are five memory regions for clock and reset in StarFive JH7110 SoC. They are "syscrg", "aoncrg", "stgcrg", "ispcrg" and "voutcrg". Each memory region has different reset ASSERT/STATUS register offset and different number of reset signals. After storing them in dt, the reset driver can register all reset controllers with the same compatible string. All we expect is that all reset controllers in a single SoC use the same compatible string for matching and the reset driver can be applied to all StarFive SoCs using different compatible strings. Just like
arch/riscv/boot/dts/starfive/jh7100.dtsi:rstgen: reset-controller@11840000 { compatible = "starfive,jh7100-reset"; reg = <0x0 0x11840000 0x0 0x10000>; #reset-cells = <1>; starfive,assert-offset = <0x0>; starfive,status-offset= <0x10>; starfive,nr-resets = <JH7100_RSTN_END>; };
arch/riscv/boot/dts/starfive/jh7110.dtsi:syscrg: syscrg@13020000 { compatible = "syscon", "simple-mfd"; reg = <0x0 0x13020000 0x0 0x10000>; syscrg_clk: clock-controller@13020000 { compatible = "starfive,jh7110-clkgen-sys"; ... }; syscrg_rst: reset-controller@13020000 { compatible = "starfive,jh7110-reset"; #reset-cells = <1>; starfive,assert-offset = <0x2F8>; starfive,status-offset= <0x308>; starfive,nr-resets = <JH7110_SYSRST_END>; }; }; aoncrg: aoncrg@17000000 { compatible = "syscon", "simple-mfd"; reg = <0x0 0x17000000 0x0 0x10000>; aoncrg_clk: clock-controller@17000000 { compatible = "starfive,jh7110-clkgen-aon"; ... }; aoncrg_rst: reset-controller@17000000 { compatible = "starfive,jh7110-reset"; #reset-cells = <1>; starfive,assert-offset = <0x38>; starfive,status-offset= <0x3C>; starfive,nr-resets = <JH7110_AONRST_END>; }; }; stgcrg: stgcrg@10230000 { //Not submmited yet compatible = "syscon", "simple-mfd"; reg = <0x0 0x10230000 0x0 0x10000>; stgcrg_clk: clock-controller@10230000 { compatible = "starfive,jh7110-clkgen-stg"; ... }; stgcrg_rst: reset-controller@10230000 { compatible = "starfive,jh7110-reset"; #reset-cells = <1>; starfive,assert-offset = <0x74>; starfive,status-offset= <0x78>; starfive,nr-resets = <JH7110_STGRST_END>; }; }; ...Quoted 8 lines
Documentation/devicetree/bindings/reset/starfive,jh7110-reset.yaml line 31
Quoted 5 lines
Documentation/devicetree/bindings/reset/starfive,jh7110-reset.yaml new file +4
-0+ + starfive,nr-resets: + description: Number of reset signals + $ref: /schemas/types.yaml#/definitions/uint32Why do you need this? Most bindings don't. If just to validate 'resets' args, then don't.
Can be removed. Instead, the reset driver should includes some related binding headers or defines some macros for pointing out the number of reset signals of each reset controller.
Best regards,
HalQuoted 21 lines
Quoted 21 lines
Documentation/devicetree/bindings/reset/starfive,jh7110-reset.yaml new file +19
-0+ +required: + - compatible + - "#reset-cells" + - starfive,assert-offset + - starfive,status-offset + - starfive,nr-resets + +additionalProperties: false + +examples: + - | + #include <dt-bindings/reset/starfive-jh7110.h> + + syscrg_rst: reset-controller@13020000 { + compatible = "starfive,jh7110-reset"; + #reset-cells = <1>; + starfive,assert-offset = <0x2F8>; + starfive,status-offset= <0x308>;Quoted 9 lines
Quoted 8 lines
Documentation/devicetree/bindings/reset/starfive,jh7110-reset.yaml new file +4
-1+ starfive,nr-resets = <JH7110_SYSRST_END>; + }; + +... --2.17.1
_______________________________________________
linux-riscv mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-riscv
PATCH 13/30 reset: starfive: Add StarFive JH7110 SoC support
In reply to Hal FengMake the driver be compatible with StarFive JH7110 SoC. Note that the register base address of clock controller is the same with the reset controller one. So we store the property 'reg' in the parent node of node 'reset-controller' and use syscon APIs to get regmap structure.
--- drivers/reset/reset-starfive.c | 35 +++++++++++++++++++++++++++------- 1 file changed, 28 insertions(+), 7 deletions(-)
drivers/reset/reset-starfive.c +28 -7
@@ -8,7 +8,7 @@#include <linux/mfd/syscon.h> #include <linux/of.h> -#include <linux/platform_device.h> +#include <linux/of_device.h> #include <linux/regmap.h> #include <linux/reset-controller.h>
@@ -134,7 +134,7 @@ static const struct reset_control_ops starfive_reset_ops = { .status = starfive_reset_status, }; -static int __init starfive_reset_probe (struct platform_device *pdev) +static int reset_starfive_register (struct platform_device *pdev,const u32 *asserted) {struct starfive_reset *data;int ret;
@@ -145,9 +145,12 @@ static int __init starfive_reset_probe(struct platform_device *pdev) data->regmap =device_node_to_regmap (pdev->dev.of_node);if (IS_ERR (data->regmap)) { -dev_err (&pdev->dev,"failed to get regmap (error %ld)\n" , -PTR_ERR (data->regmap)); -return PTR_ERR (data->regmap); + data->regmap =syscon_node_to_regmap (pdev->dev.of_node->parent); +if (IS_ERR (data->regmap)) { +dev_err (&pdev->dev,"failed to get regmap (error %ld)\n" , +PTR_ERR (data->regmap)); +return PTR_ERR (data->regmap); + } } ret = of_property_read_u32(pdev->dev.of_node, "starfive,assert-offset",
@@ -177,16 +180,34 @@ static int __init starfive_reset_probe(struct platform_device *pdev) data->rcdev.dev = &pdev->dev; data->rcdev.of_node = pdev->dev.of_node; - data->asserted = jh7100_reset_asserted; + data->asserted = asserted;return devm_reset_controller_register (&pdev->dev, &data->rcdev); }static const struct of_device_id starfive_reset_dt_ids[] = { - { .compatible ="starfive,jh7100-reset" }, + { + .compatible ="starfive,jh7100-reset" , + .data = jh7100_reset_asserted, + }, + { + .compatible ="starfive,jh7110-reset" , + .data =NULL , + }, {/* sentinel */ } }; +static int __init starfive_reset_probe (struct platform_device *pdev) +{ +const struct of_device_id *match; + + match =of_match_device (starfive_reset_dt_ids, &pdev->dev); +if (!match) +return -EINVAL ; + +return reset_starfive_register (pdev, (u32 *)(match->data)); +} +static struct platform_driver starfive_reset_driver = { .driver = { .name ="starfive-reset" ,
Signature · 1 line
2.17.1
PATCH 14/30 clk: starfive: Factor out common clock driver code
In reply to Hal FengFrom: Emil Renner Berthing <[email protected]>
The clock control registers on the StarFive SoCs work identically, so factor out the code then drivers for different SoCs can share it without depending on each other. No functional change.
--- MAINTAINERS | 9 +- drivers/clk/starfive/Kconfig | 7 +- drivers/clk/starfive/Makefile | 3 +- .../clk/starfive/clk-starfive-jh7100-audio.c | 127 +-- drivers/clk/starfive/clk-starfive-jh7100.c | 825 ++++++------------ drivers/clk/starfive/clk-starfive-jh7100.h | 112 --- drivers/clk/starfive/clk-starfive.c | 333 +++++++ drivers/clk/starfive/clk-starfive.h | 114 +++ 8 files changed, 779 insertions(+), 751 deletions(-) delete mode 100644 drivers/clk/starfive/clk-starfive-jh7100.h create mode 100644 drivers/clk/starfive/clk-starfive.c create mode 100644 drivers/clk/starfive/clk-starfive.h
MAINTAINERS +5 -4
@@ -19396,12 +19396,13 @@ M: Ion Badulescu <[email protected]> S: Odd Fixes F: drivers/net/ethernet/adaptec/starfire* -STARFIVE JH7100 CLOCK DRIVERS +STARFIVE CLOCK DRIVERS M: Emil Renner Berthing <[email protected]> +M: Xingyu Wu <[email protected]> S: Maintained -F: Documentation/devicetree/bindings/clock/starfive,jh7100-*.yaml -F: drivers/clk/starfive/clk-starfive-jh7100* -F: include/dt-bindings/clock/starfive-jh7100*.h +F: Documentation/devicetree/bindings/clock/starfive* +F: drivers/clk/starfive/ +F: include/dt-bindings/clock/starfive* STARFIVE JH7100 PINCTRL DRIVER M: Emil Renner Berthing <[email protected]>
drivers/clk/starfive/Kconfig +6 -1
@@ -1,8 +1,12 @@ # SPDX-License-Identifier: GPL-2.0 +config CLK_STARFIVE + bool + config CLK_STARFIVE_JH7100 bool "StarFive JH7100 clock support" depends on SOC_STARFIVE || COMPILE_TEST + select CLK_STARFIVE default SOC_STARFIVE help Say yes here to support the clock controller on the StarFive JH7100
@@ -10,7 +14,8 @@ config CLK_STARFIVE_JH7100 config CLK_STARFIVE_JH7100_AUDIO tristate "StarFive JH7100 audio clock support" - depends on CLK_STARFIVE_JH7100 + depends on SOC_STARFIVE || COMPILE_TEST + select CLK_STARFIVE default m if SOC_STARFIVE help Say Y or M here to support the audio clocks on the StarFive JH7100
drivers/clk/starfive/Makefile +2 -1
@@ -1,4 +1,5 @@ # SPDX-License-Identifier: GPL-2.0 -# StarFive Clock +obj-$(CONFIG_CLK_STARFIVE) += clk-starfive.o + obj-$(CONFIG_CLK_STARFIVE_JH7100) += clk-starfive-jh7100.o obj-$(CONFIG_CLK_STARFIVE_JH7100_AUDIO) += clk-starfive-jh7100-audio.o
drivers/clk/starfive/clk-starfive-jh7100-audio.c +65 -62
164 lines not on this page · raw message
drivers/clk/starfive/clk-starfive-jh7100.c +254 -571
870 lines not on this page · raw message
drivers/clk/starfive/clk-starfive-jh7100.h deleted +0 -112
112 lines not on this page · raw message
drivers/clk/starfive/clk-starfive.c new file +333 -0
333 lines not on this page · raw message
drivers/clk/starfive/clk-starfive.h new file +114 -0
114 lines not on this page · raw message
Signature · 1 line
2.17.1
Stephen Boyd
maintainerRe: [PATCH v1 14/30] clk: starfive: Factor out common clock driver code
Quoting Hal Feng (2022-09-29 10:54:59)
Quoted 5 lines
From: Emil Renner Berthing <[email protected]>
The clock control registers on the StarFive SoCs work identically, so factor out the code then drivers for different SoCs can share it without depending on each other. No functional change.
Sounds great! No functional change! But to verify that it is pretty hard. Can you generate the patch with git format-patch -M -C and not rename anything initially? I hope that will allow us to see that really nothing has changed except code is moved from one file to another. Then the next patch can be the sed command to rename to starfive.
As the patch is right now, I'm not particularly interested in going through 700 lines to make sure nothing really changed.
PATCH 15/30 clk: starfive: Use regmap APIs to operate registers
In reply to Hal FengClock registers address region is shared with reset controller on the new StarFive JH7110 SoC. Change to use regmap framework to allow base address sharing and preparation for JH7110 clock support.
--- .../clk/starfive/clk-starfive-jh7100-audio.c | 11 ++-- drivers/clk/starfive/clk-starfive-jh7100.c | 11 ++-- drivers/clk/starfive/clk-starfive.c | 66 ++++++++++++------- drivers/clk/starfive/clk-starfive.h | 4 +- 4 files changed, 56 insertions(+), 36 deletions(-)
drivers/clk/starfive/clk-starfive-jh7100-audio.c +7 -4
@@ -9,6 +9,7 @@#include <linux/clk-provider.h> #include <linux/device.h> #include <linux/kernel.h> +#include <linux/mfd/syscon.h> #include <linux/mod_devicetable.h> #include <linux/module.h> #include <linux/of_device.h>
@@ -108,11 +109,13 @@ static int jh7100_audclk_probe(struct platform_device *pdev)if (!priv)return -ENOMEM ; -spin_lock_init (&priv->rmw_lock); priv->dev = &pdev->dev; - priv->base =devm_platform_ioremap_resource (pdev,0 ); -if (IS_ERR (priv->base)) -return PTR_ERR (priv->base); + priv->regmap =device_node_to_regmap (priv->dev->of_node); +if (IS_ERR (priv->regmap)) { +dev_err (priv->dev,"failed to get regmap (error %ld)\n" , +PTR_ERR (priv->regmap)); +return PTR_ERR (priv->regmap); + }for (idx =0 ; idx <JH7100_AUDCLK_END ; idx++) {u32 max = jh7100_audclk_data[idx].max;
drivers/clk/starfive/clk-starfive-jh7100.c +7 -4
@@ -10,6 +10,7 @@#include <linux/clk-provider.h> #include <linux/device.h> #include <linux/init.h> +#include <linux/mfd/syscon.h> #include <linux/mod_devicetable.h> #include <linux/platform_device.h>
@@ -295,11 +296,13 @@ static int __init clk_starfive_jh7100_probe(struct platform_device *pdev)if (!priv)return -ENOMEM ; -spin_lock_init (&priv->rmw_lock); priv->dev = &pdev->dev; - priv->base =devm_platform_ioremap_resource (pdev,0 ); -if (IS_ERR (priv->base)) -return PTR_ERR (priv->base); + priv->regmap =device_node_to_regmap (priv->dev->of_node); +if (IS_ERR (priv->regmap)) { +dev_err (priv->dev,"failed to get regmap (error %ld)\n" , +PTR_ERR (priv->regmap)); +return PTR_ERR (priv->regmap); + } priv->pll[0 ] =devm_clk_hw_register_fixed_factor (priv->dev,"pll0_out" ,"osc_sys" ,0 ,40 ,1 );
drivers/clk/starfive/clk-starfive.c +41 -25
143 lines not on this page · raw message
drivers/clk/starfive/clk-starfive.h +1 -3
@@ -101,10 +101,8 @@ struct starfive_clk { };struct starfive_clk_priv { -/* protect clk enable and set rate/parent from happening at the same time */ -spinlock_t rmw_lock;struct device *dev; -void __iomem *base; +struct regmap *regmap;struct clk_hw *pll[3 ];struct starfive_clk reg[]; };
Signature · 1 line
2.17.1
Stephen Boyd
maintainerRe: [PATCH v1 15/30] clk: starfive: Use regmap APIs to operate registers
Quoting Hal Feng (2022-09-29 10:56:02)
Quoted 4 lines
Clock registers address region is shared with reset controller on the new StarFive JH7110 SoC. Change to use regmap framework to allow base address sharing and preparation for JH7110 clock support.
Do the reset and clk parts share actual registers, where we would need to lock between rmw? Or is regmap just nice to have because it wraps up the register APIs with some extra features?
Quoted 3 lines
Signed-off-by Hal Feng <[email protected]>---
[...]
Quoted 13 lines
drivers/clk/starfive/clk-starfive-jh7100.c +1
-0@@ -10,6 +10,7 @@#include <linux/clk-provider.h> #include <linux/device.h> #include <linux/init.h> +#include <linux/mfd/syscon.h> #include <linux/mod_devicetable.h> #include <linux/platform_device.h>
drivers/clk/starfive/clk-starfive-jh7100.c static int __init clk_starfive_jh7100_probe(struct platform_device *pdev) · line 300
Quoted 9 lines
drivers/clk/starfive/clk-starfive-jh7100.c +1
-4@@ -295,11 +296,13 @@ static int __init clk_starfive_jh7100_probe(struct platform_device *pdev)if (!priv)return -ENOMEM ; -spin_lock_init (&priv->rmw_lock); priv->dev = &pdev->dev; - priv->base =devm_platform_ioremap_resource (pdev,0 ); -if (IS_ERR (priv->base)) -return PTR_ERR (priv->base); + priv->regmap =device_node_to_regmap (priv->dev->of_node);
This is sad. Why do we need to make a syscon? Can we instead use the auxiliary bus to make a reset device that either gets a regmap made here in this driver or uses a void __iomem * mapped with ioremap (priv->base)?
Quoted 4 lines
drivers/clk/starfive/clk-starfive-jh7100.c +4
-0+if (IS_ERR (priv->regmap)) { +dev_err (priv->dev,"failed to get regmap (error %ld)\n" , +PTR_ERR (priv->regmap)); +return PTR_ERR (priv->regmap);
Re: [PATCH v1 15/30] clk: starfive: Use regmap APIs to operate registers
Quoted 10 lines · Stephen Boyd
Quoting Hal Feng (2022-09-29 10:56:02)
Quoted 4 lines
Clock registers address region is shared with reset controller on the new StarFive JH7110 SoC. Change to use regmap framework to allow base address sharing and preparation for JH7110 clock support.
Do the reset and clk parts share actual registers, where we would need to lock between rmw? Or is regmap just nice to have because it wraps up the register APIs with some extra features?
No, the registers aren't shared, but on the JH7100 clock and reset had separate ranges, but on the JH7110 there is just one memory range for each "CRG", clock and reset generator I presume, and the reset registers are placed after the clock registers in the same range.
Quoted 20 lines
Quoted 3 lines
Signed-off-by Hal Feng <[email protected]>---
[...]
Quoted 16 lines
drivers/clk/starfive/clk-starfive-jh7100.c +1
-0@@ -10,6 +10,7 @@#include <linux/clk-provider.h> #include <linux/device.h> #include <linux/init.h> +#include <linux/mfd/syscon.h> #include <linux/mod_devicetable.h> #include <linux/platform_device.h> @@ -295,11 +296,13 @@ static int __init clk_starfive_jh7100_probe(struct platform_device *pdev)if (!priv)return -ENOMEM ;
Quoted 11 lines
drivers/clk/starfive/clk-starfive-jh7100.c static int __init clk_starfive_jh7100_probe(struct platform_device *pdev) · line 300
Quoted 6 lines
drivers/clk/starfive/clk-starfive-jh7100.c +1
-4-spin_lock_init (&priv->rmw_lock); priv->dev = &pdev->dev; - priv->base =devm_platform_ioremap_resource (pdev,0 ); -if (IS_ERR (priv->base)) -return PTR_ERR (priv->base); + priv->regmap =device_node_to_regmap (priv->dev->of_node);This is sad. Why do we need to make a syscon? Can we instead use the auxiliary bus to make a reset device that either gets a regmap made here in this driver or uses a void
__iomem* mapped with ioremap (priv->base)?
In my original code the clock driver just registers the resets too similar to other combined clock and reset drivers. I wonder what you think about that approach:
https://github.com/esmil/linux/commit/36f15e1b827b02d7f493dc5fce31060b21976e68
and
https://github.com/esmil/linux/commit/4ccafadb72968480aa3dd28c227fcccae411c13b#diff-ffec81f902f810cb210012c25e8d88217ea5b4021419a4206d1fd4dd19edfce8R471
Quoted 9 lines
drivers/clk/starfive/clk-starfive-jh7100.c static int __init clk_starfive_jh7100_probe(struct platform_device *pdev) · line 304
Quoted 4 lines
drivers/clk/starfive/clk-starfive-jh7100.c +4
-0+if (IS_ERR (priv->regmap)) { +dev_err (priv->dev,"failed to get regmap (error %ld)\n" , +PTR_ERR (priv->regmap)); +return PTR_ERR (priv->regmap);_______________________________________________
linux-riscv mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-riscv
Stephen Boyd
maintainerRe: [PATCH v1 15/30] clk: starfive: Use regmap APIs to operate registers
Quoting Emil Renner Berthing (2022-10-05 06:14:44)
Quoted 16 lines
Quoted 4 lines
Quoted 4 lines
drivers/clk/starfive/clk-starfive-jh7100-audio.c +0
-0@@ -295,11 +296,13 @@ static int __init clk_starfive_jh7100_probe(struct platform_device *pdev)if (!priv)return -ENOMEM ;Quoted 11 lines
drivers/clk/starfive/clk-starfive-jh7100-audio.c static int jh7100_audclk_probe(struct platform_device *pdev) · line 113
Quoted 6 lines
drivers/clk/starfive/clk-starfive-jh7100-audio.c +1
-4-spin_lock_init (&priv->rmw_lock); priv->dev = &pdev->dev; - priv->base =devm_platform_ioremap_resource (pdev,0 ); -if (IS_ERR (priv->base)) -return PTR_ERR (priv->base); + priv->regmap =device_node_to_regmap (priv->dev->of_node);This is sad. Why do we need to make a syscon? Can we instead use the auxiliary bus to make a reset device that either gets a regmap made here in this driver or uses a void
__iomem* mapped with ioremap (priv->base)?
Quoted 6 lines
In my original code the clock driver just registers the resets too similar to other combined clock and reset drivers. I wonder what you think about that approach:
https://github.com/esmil/linux/commit/36f15e1b827b02d7f493dc5fce31060b21976e68
and
https://github.com/esmil/linux/commit/4ccafadb72968480aa3dd28c227fcccae411c13b#diff-ffec81f902f810cb210012c25e8d88217ea5b4021419a4206d1fd4dd19edfce8R471
I think we should use auxiliary bus and split the driver logically into a reset driver in drivers/reset and a clk driver in drivers/clk. That way the appropriate maintainers can review the code. There is only one platform device with a single reg property and node in DT, but there are two drivers.
Re: [PATCH v1 15/30] clk: starfive: Use regmap APIs to operate registers
Quoted 24 lines · Stephen Boyd
Quoting Emil Renner Berthing (2022-10-05 06:14:44)
Quoted 16 lines
Quoted 4 lines
Quoted 4 lines
drivers/clk/starfive/clk-starfive-jh7100-audio.c +0
-0@@ -295,11 +296,13 @@ static int __init clk_starfive_jh7100_probe(struct platform_device *pdev)if (!priv)return -ENOMEM ;Quoted 11 lines
drivers/clk/starfive/clk-starfive-jh7100-audio.c static int jh7100_audclk_probe(struct platform_device *pdev) · line 113
Quoted 6 lines
drivers/clk/starfive/clk-starfive-jh7100-audio.c +1
-4-spin_lock_init (&priv->rmw_lock); priv->dev = &pdev->dev; - priv->base =devm_platform_ioremap_resource (pdev,0 ); -if (IS_ERR (priv->base)) -return PTR_ERR (priv->base); + priv->regmap =device_node_to_regmap (priv->dev->of_node);This is sad. Why do we need to make a syscon? Can we instead use the auxiliary bus to make a reset device that either gets a regmap made here in this driver or uses a void
__iomem* mapped with ioremap (priv->base)?Quoted 6 lines
In my original code the clock driver just registers the resets too similar to other combined clock and reset drivers. I wonder what you think about that approach:
https://github.com/esmil/linux/commit/36f15e1b827b02d7f493dc5fce31060b21976e68
and
https://github.com/esmil/linux/commit/4ccafadb72968480aa3dd28c227fcccae411c13b#diff-ffec81f902f810cb210012c25e8d88217ea5b4021419a4206d1fd4dd19edfce8R471
Quoted 5 lines
I think we should use auxiliary bus and split the driver logically into a reset driver in
drivers/resetand a clk driver indrivers/clk. That way the appropriate maintainers can review the code. There is only one platform device with a single reg property and node in DT, but there are two drivers.
Yes, I agree that the reset driver and the clock driver should be split. However, I think using auxiliary bus is a little bit complicated in this case, because the reset is not a part of functionality of the clock in JH7110. They just share a common register base address. I think it is better to use ioremap for the same address, and the dt will be like
syscrg_clk: clock-controller@13020000 {
compatible = "starfive,jh7110-clkgen-sys";
reg = <0x0 0x13020000 0x0 0x10000>;
...
};
syscrg_rst: reset-controller@13020000 {
compatible = "starfive,jh7110-reset-sys";
reg = <0x0 0x13020000 0x0 0x10000>;
...
};What do you think of this approach? I would appreciate your suggestions.
Best regards,
Hal
Conor Dooley
maintainerRe: [PATCH v1 15/30] clk: starfive: Use regmap APIs to operate registers
Quoted 48 lines · Hal Feng
Quoted 24 lines · Stephen Boyd
Quoting Emil Renner Berthing (2022-10-05 06:14:44)
Quoted 16 lines
Quoted 4 lines
Quoted 4 lines
drivers/clk/starfive/clk-starfive-jh7100-audio.c +0
-0@@ -295,11 +296,13 @@ static int __init clk_starfive_jh7100_probe(struct platform_device *pdev)if (!priv)return -ENOMEM ;Quoted 11 lines
drivers/clk/starfive/clk-starfive-jh7100-audio.c static int jh7100_audclk_probe(struct platform_device *pdev) · line 113
Quoted 6 lines
drivers/clk/starfive/clk-starfive-jh7100-audio.c +1
-4-spin_lock_init (&priv->rmw_lock); priv->dev = &pdev->dev; - priv->base =devm_platform_ioremap_resource (pdev,0 ); -if (IS_ERR (priv->base)) -return PTR_ERR (priv->base); + priv->regmap =device_node_to_regmap (priv->dev->of_node);This is sad. Why do we need to make a syscon? Can we instead use the auxiliary bus to make a reset device that either gets a regmap made here in this driver or uses a void
__iomem* mapped with ioremap (priv->base)?Quoted 6 lines
In my original code the clock driver just registers the resets too similar to other combined clock and reset drivers. I wonder what you think about that approach:
https://github.com/esmil/linux/commit/36f15e1b827b02d7f493dc5fce31060b21976e68
and
https://github.com/esmil/linux/commit/4ccafadb72968480aa3dd28c227fcccae411c13b#diff-ffec81f902f810cb210012c25e8d88217ea5b4021419a4206d1fd4dd19edfce8R471Quoted 5 lines
I think we should use auxiliary bus and split the driver logically into a reset driver in
drivers/resetand a clk driver indrivers/clk. That way the appropriate maintainers can review the code. There is only one platform device with a single reg property and node in DT, but there are two drivers.Yes, I agree that the reset driver and the clock driver should be split. However, I think using auxiliary bus is a little bit complicated in this case, because the reset is not a part of functionality of the clock in JH7110. They just share a common register base address. I think it is better to use ioremap for the same address, and the dt will be like
syscrg_clk: clock-controller@13020000 { compatible = "starfive,jh7110-clkgen-sys"; reg = <0x0 0x13020000 0x0 0x10000>; ... }; syscrg_rst: reset-controller@13020000 { compatible = "starfive,jh7110-reset-sys"; reg = <0x0 0x13020000 0x0 0x10000>; ... };
Quoted 1 line
What do you think of this approach? I would appreciate your suggestions.
No, the dtb checks will all start warning for this.
Aux bus is not that difficult, you can likely copy much of what I did recently in clk-mpfs.c
Quoted 3 lines
Best regards,
Hal
Re: [PATCH v1 15/30] clk: starfive: Use regmap APIs to operate registers
Quoted 49 lines · Conor Dooley
Quoted 48 lines · Hal Feng
Quoted 24 lines · Stephen Boyd
Quoting Emil Renner Berthing (2022-10-05 06:14:44)
Quoted 16 lines
Quoted 4 lines
Quoted 4 lines
drivers/clk/starfive/clk-starfive-jh7100-audio.c +0
-0@@ -295,11 +296,13 @@ static int __init clk_starfive_jh7100_probe(struct platform_device *pdev)if (!priv)return -ENOMEM ;Quoted 11 lines
drivers/clk/starfive/clk-starfive-jh7100-audio.c static int jh7100_audclk_probe(struct platform_device *pdev) · line 113
Quoted 6 lines
drivers/clk/starfive/clk-starfive-jh7100-audio.c +1
-4-spin_lock_init (&priv->rmw_lock); priv->dev = &pdev->dev; - priv->base =devm_platform_ioremap_resource (pdev,0 ); -if (IS_ERR (priv->base)) -return PTR_ERR (priv->base); + priv->regmap =device_node_to_regmap (priv->dev->of_node);This is sad. Why do we need to make a syscon? Can we instead use the auxiliary bus to make a reset device that either gets a regmap made here in this driver or uses a void
__iomem* mapped with ioremap (priv->base)?Quoted 6 lines
In my original code the clock driver just registers the resets too similar to other combined clock and reset drivers. I wonder what you think about that approach:
https://github.com/esmil/linux/commit/36f15e1b827b02d7f493dc5fce31060b21976e68
and
https://github.com/esmil/linux/commit/4ccafadb72968480aa3dd28c227fcccae411c13b#diff-ffec81f902f810cb210012c25e8d88217ea5b4021419a4206d1fd4dd19edfce8R471Quoted 5 lines
I think we should use auxiliary bus and split the driver logically into a reset driver in
drivers/resetand a clk driver indrivers/clk. That way the appropriate maintainers can review the code. There is only one platform device with a single reg property and node in DT, but there are two drivers.Yes, I agree that the reset driver and the clock driver should be split. However, I think using auxiliary bus is a little bit complicated in this case, because the reset is not a part of functionality of the clock in JH7110. They just share a common register base address. I think it is better to use ioremap for the same address, and the dt will be like
syscrg_clk: clock-controller@13020000 { compatible = "starfive,jh7110-clkgen-sys"; reg = <0x0 0x13020000 0x0 0x10000>; ... }; syscrg_rst: reset-controller@13020000 { compatible = "starfive,jh7110-reset-sys"; reg = <0x0 0x13020000 0x0 0x10000>; ... };
Quoted 4 lines
Quoted 1 line
What do you think of this approach? I would appreciate your suggestions.
No, the dtb checks will all start warning for this.
Aux bus is not that difficult, you can likely copy much of what I did recently inclk-mpfs.c
Thanks for reminding and your helpful example.
Best regards,
Hal
Stephen Boyd
maintainerRe: [PATCH v1 15/30] clk: starfive: Use regmap APIs to operate registers
In reply to Hal FengQuoting Hal Feng (2022-10-22 21:11:41)
Quoted 11 lines · Stephen Boyd
Quoted 5 lines
I think we should use auxiliary bus and split the driver logically into a reset driver in
drivers/resetand a clk driver indrivers/clk. That way the appropriate maintainers can review the code. There is only one platform device with a single reg property and node in DT, but there are two drivers.Yes, I agree that the reset driver and the clock driver should be split. However, I think using auxiliary bus is a little bit complicated in this case, because the reset is not a part of functionality of the clock in JH7110. They just share a common register base address.
That is why auxiliary bus exists.
Quoted 14 lines
I think it is
better to use ioremap for the same address, and the dt will be likesyscrg_clk: clock-controller@13020000 { compatible = "starfive,jh7110-clkgen-sys"; reg = <0x0 0x13020000 0x0 0x10000>; ... }; syscrg_rst: reset-controller@13020000 { compatible = "starfive,jh7110-reset-sys"; reg = <0x0 0x13020000 0x0 0x10000>; ... };
Quoted 2 lines
What do you think of this approach? I would appreciate your suggestions.
We shouldn't have two different nodes with the same reg property. Please ioremap in whatever driver probes and creates the auxiliary device(s) and then pass the void __iomem * to it.
Re: [PATCH v1 15/30] clk: starfive: Use regmap APIs to operate registers
Quoted 29 lines · Stephen Boyd
Quoting Hal Feng (2022-10-22 21:11:41)
Quoted 11 lines · Stephen Boyd
Quoted 5 lines
I think we should use auxiliary bus and split the driver logically into a reset driver in
drivers/resetand a clk driver indrivers/clk. That way the appropriate maintainers can review the code. There is only one platform device with a single reg property and node in DT, but there are two drivers.Yes, I agree that the reset driver and the clock driver should be split. However, I think using auxiliary bus is a little bit complicated in this case, because the reset is not a part of functionality of the clock in JH7110. They just share a common register base address.
That is why auxiliary bus exists.
Quoted 14 lines
I think it is
better to use ioremap for the same address, and the dt will be likesyscrg_clk: clock-controller@13020000 { compatible = "starfive,jh7110-clkgen-sys"; reg = <0x0 0x13020000 0x0 0x10000>; ... }; syscrg_rst: reset-controller@13020000 { compatible = "starfive,jh7110-reset-sys"; reg = <0x0 0x13020000 0x0 0x10000>; ... };
Quoted 6 lines
Quoted 2 lines
What do you think of this approach? I would appreciate your suggestions.
We shouldn't have two different nodes with the same reg property. Please ioremap in whatever driver probes and creates the auxiliary device(s) and then pass the void
__iomem* to it.
Okay, I will use auxiliary bus for clock and reset driver on the next version.
Best regards,
Hal
PATCH 16/30 dt-bindings: clock: Add StarFive JH7110 system clock definitions
In reply to Hal FengFrom: Emil Renner Berthing <[email protected]>
Add all clock outputs for the StarFive JH7110 system clock generator.
--- .../dt-bindings/clock/starfive-jh7110-sys.h | 215 ++++++++++++++++++ 1 file changed, 215 insertions(+) create mode 100644 include/dt-bindings/clock/starfive-jh7110-sys.h
include/dt-bindings/clock/starfive-jh7110-sys.h new file +215 -0
@@ -0,0 +1,215 @@ +/* SPDX-License-Identifier: GPL-2.0 OR MIT */ +/* +* Copyright 2022 Emil Renner Berthing <[email protected]> +*/ + +#ifndef __DT_BINDINGS_CLOCK_STARFIVE_JH7110_SYS_H__ +#define __DT_BINDINGS_CLOCK_STARFIVE_JH7110_SYS_H__ + +#define JH7110_SYSCLK_CPU_ROOT 0 +#define JH7110_SYSCLK_CPU_CORE 1 +#define JH7110_SYSCLK_CPU_BUS 2 +#define JH7110_SYSCLK_GPU_ROOT 3 +#define JH7110_SYSCLK_PERH_ROOT 4 +#define JH7110_SYSCLK_BUS_ROOT 5 +#define JH7110_SYSCLK_NOCSTG_BUS 6 +#define JH7110_SYSCLK_AXI_CFG0 7 +#define JH7110_SYSCLK_STG_AXIAHB 8 +#define JH7110_SYSCLK_AHB0 9 +#define JH7110_SYSCLK_AHB1 10 +#define JH7110_SYSCLK_APB_BUS_FUNC 11 +#define JH7110_SYSCLK_APB0 12 +#define JH7110_SYSCLK_PLL0_DIV2 13 +#define JH7110_SYSCLK_PLL1_DIV2 14 +#define JH7110_SYSCLK_PLL2_DIV2 15 +#define JH7110_SYSCLK_AUDIO_ROOT 16 +#define JH7110_SYSCLK_MCLK_INNER 17 +#define JH7110_SYSCLK_MCLK 18 +#define JH7110_SYSCLK_MCLK_OUT 19 +#define JH7110_SYSCLK_ISP_2X 20 +#define JH7110_SYSCLK_ISP_AXI 21 +#define JH7110_SYSCLK_GCLK0 22 +#define JH7110_SYSCLK_GCLK1 23 +#define JH7110_SYSCLK_GCLK2 24 +#define JH7110_SYSCLK_CORE 25 +#define JH7110_SYSCLK_CORE1 26 +#define JH7110_SYSCLK_CORE2 27 +#define JH7110_SYSCLK_CORE3 28 +#define JH7110_SYSCLK_CORE4 29 +#define JH7110_SYSCLK_DEBUG 30 +#define JH7110_SYSCLK_RTC_TOGGLE 31 +#define JH7110_SYSCLK_TRACE0 32 +#define JH7110_SYSCLK_TRACE1 33 +#define JH7110_SYSCLK_TRACE2 34 +#define JH7110_SYSCLK_TRACE3 35 +#define JH7110_SYSCLK_TRACE4 36 +#define JH7110_SYSCLK_TRACE_COM 37 +#define JH7110_SYSCLK_NOC_BUS_CPU_AXI 38 +#define JH7110_SYSCLK_NOC_BUS_AXICFG0_AXI 39 +#define JH7110_SYSCLK_OSC_DIV2 40 +#define JH7110_SYSCLK_PLL1_DIV4 41 +#define JH7110_SYSCLK_PLL1_DIV8 42 +#define JH7110_SYSCLK_DDR_BUS 43 +#define JH7110_SYSCLK_DDR_AXI 44 +#define JH7110_SYSCLK_GPU_CORE 45 +#define JH7110_SYSCLK_GPU_CORE_CLK 46 +#define JH7110_SYSCLK_GPU_SYS_CLK 47 +#define JH7110_SYSCLK_GPU_APB 48 +#define JH7110_SYSCLK_GPU_RTC_TOGGLE 49 +#define JH7110_SYSCLK_NOC_BUS_GPU_AXI 50 +#define JH7110_SYSCLK_ISP_TOP_ISPCORE_2X 51 +#define JH7110_SYSCLK_ISP_TOP_ISP_AXI 52 +#define JH7110_SYSCLK_NOC_BUS_ISP_AXI 53 +#define JH7110_SYSCLK_HIFI4_CORE 54 +#define JH7110_SYSCLK_HIFI4_AXI 55 +#define JH7110_SYSCLK_AXI_CFG1_DEC_MAIN 56 +#define JH7110_SYSCLK_AXI_CFG1_DEC_AHB 57 +#define JH7110_SYSCLK_VOUT_SRC 58 +#define JH7110_SYSCLK_VOUT_AXI 59 +#define JH7110_SYSCLK_NOC_BUS_DISP_AXI 60 +#define JH7110_SYSCLK_VOUT_TOP_VOUT_AHB 61 +#define JH7110_SYSCLK_VOUT_TOP_VOUT_AXI 62 +#define JH7110_SYSCLK_VOUT_TOP_HDMITX0_MCLK 63 +#define JH7110_SYSCLK_VOUT_TOP_MIPIPHY_REF 64 +#define JH7110_SYSCLK_JPEGC_AXI 65 +#define JH7110_SYSCLK_CODAJ12_AXI 66 +#define JH7110_SYSCLK_CODAJ12_CORE 67 +#define JH7110_SYSCLK_CODAJ12_APB 68 +#define JH7110_SYSCLK_VDEC_AXI 69 +#define JH7110_SYSCLK_WAVE511_AXI 70 +#define JH7110_SYSCLK_WAVE511_BPU 71 +#define JH7110_SYSCLK_WAVE511_VCE 72 +#define JH7110_SYSCLK_WAVE511_APB 73 +#define JH7110_SYSCLK_VDEC_JPG_ARB_JPG 74 +#define JH7110_SYSCLK_VDEC_JPG_ARB_MAIN 75 +#define JH7110_SYSCLK_NOC_BUS_VDEC_AXI 76 +#define JH7110_SYSCLK_VENC_AXI 77 +#define JH7110_SYSCLK_WAVE420L_AXI 78 +#define JH7110_SYSCLK_WAVE420L_BPU 79 +#define JH7110_SYSCLK_WAVE420L_VCE 80 +#define JH7110_SYSCLK_WAVE420L_APB 81 +#define JH7110_SYSCLK_NOC_BUS_VENC_AXI 82 +#define JH7110_SYSCLK_AXI_CFG0_DEC_MAIN_DIV 83 +#define JH7110_SYSCLK_AXI_CFG0_DEC_MAIN 84 +#define JH7110_SYSCLK_AXI_CFG0_DEC_HIFI4 85 +#define JH7110_SYSCLK_AXIMEM2_128B_AXI 86 +#define JH7110_SYSCLK_QSPI_AHB 87 +#define JH7110_SYSCLK_QSPI_APB 88 +#define JH7110_SYSCLK_QSPI_REF_SRC 89 +#define JH7110_SYSCLK_QSPI_REF 90 +#define JH7110_SYSCLK_SDIO0_AHB 91 +#define JH7110_SYSCLK_SDIO1_AHB 92 +#define JH7110_SYSCLK_SDIO0_SDCARD 93 +#define JH7110_SYSCLK_SDIO1_SDCARD 94 +#define JH7110_SYSCLK_USB_125M 95 +#define JH7110_SYSCLK_NOC_BUS_STG_AXI 96 +#define JH7110_SYSCLK_GMAC1_AHB 97 +#define JH7110_SYSCLK_GMAC1_AXI 98 +#define JH7110_SYSCLK_GMAC_SRC 99 +#define JH7110_SYSCLK_GMAC1_GTXCLK 100 +#define JH7110_SYSCLK_GMAC1_RMII_RTX 101 +#define JH7110_SYSCLK_GMAC1_PTP 102 +#define JH7110_SYSCLK_GMAC1_RX 103 +#define JH7110_SYSCLK_GMAC1_RX_INV 104 +#define JH7110_SYSCLK_GMAC1_TX 105 +#define JH7110_SYSCLK_GMAC1_TX_INV 106 +#define JH7110_SYSCLK_GMAC1_GTXC 107 +#define JH7110_SYSCLK_GMAC0_GTXCLK 108 +#define JH7110_SYSCLK_GMAC0_PTP 109 +#define JH7110_SYSCLK_GMAC_PHY 110 +#define JH7110_SYSCLK_GMAC0_GTXC 111 +#define JH7110_SYSCLK_IOMUX 112 +#define JH7110_SYSCLK_MAILBOX 113 +#define JH7110_SYSCLK_INT_CTRL_APB 114 +#define JH7110_SYSCLK_CAN0_APB 115 +#define JH7110_SYSCLK_CAN0_TIMER 116 +#define JH7110_SYSCLK_CAN0_CAN 117 +#define JH7110_SYSCLK_CAN1_APB 118 +#define JH7110_SYSCLK_CAN1_TIMER 119 +#define JH7110_SYSCLK_CAN1_CAN 120 +#define JH7110_SYSCLK_PWM_APB 121 +#define JH7110_SYSCLK_WDT_APB 122 +#define JH7110_SYSCLK_WDT_CORE 123 +#define JH7110_SYSCLK_TIMER_APB 124 +#define JH7110_SYSCLK_TIMER0 125 +#define JH7110_SYSCLK_TIMER1 126 +#define JH7110_SYSCLK_TIMER2 127 +#define JH7110_SYSCLK_TIMER3 128 +#define JH7110_SYSCLK_TEMP_APB 129 +#define JH7110_SYSCLK_TEMP_CORE 130 +#define JH7110_SYSCLK_SPI0_APB 131 +#define JH7110_SYSCLK_SPI1_APB 132 +#define JH7110_SYSCLK_SPI2_APB 133 +#define JH7110_SYSCLK_SPI3_APB 134 +#define JH7110_SYSCLK_SPI4_APB 135 +#define JH7110_SYSCLK_SPI5_APB 136 +#define JH7110_SYSCLK_SPI6_APB 137 +#define JH7110_SYSCLK_I2C0_APB 138 +#define JH7110_SYSCLK_I2C1_APB 139 +#define JH7110_SYSCLK_I2C2_APB 140 +#define JH7110_SYSCLK_I2C3_APB 141 +#define JH7110_SYSCLK_I2C4_APB 142 +#define JH7110_SYSCLK_I2C5_APB 143 +#define JH7110_SYSCLK_I2C6_APB 144 +#define JH7110_SYSCLK_UART0_APB 145 +#define JH7110_SYSCLK_UART0_CORE 146 +#define JH7110_SYSCLK_UART1_APB 147 +#define JH7110_SYSCLK_UART1_CORE 148 +#define JH7110_SYSCLK_UART2_APB 149 +#define JH7110_SYSCLK_UART2_CORE 150 +#define JH7110_SYSCLK_UART3_APB 151 +#define JH7110_SYSCLK_UART3_CORE 152 +#define JH7110_SYSCLK_UART4_APB 153 +#define JH7110_SYSCLK_UART4_CORE 154 +#define JH7110_SYSCLK_UART5_APB 155 +#define JH7110_SYSCLK_UART5_CORE 156 +#define JH7110_SYSCLK_PWMDAC_APB 157 +#define JH7110_SYSCLK_PWMDAC_CORE 158 +#define JH7110_SYSCLK_SPDIF_APB 159 +#define JH7110_SYSCLK_SPDIF_CORE 160 +#define JH7110_SYSCLK_I2STX0_APB 161 +#define JH7110_SYSCLK_I2STX0_BCLK_MST 162 +#define JH7110_SYSCLK_I2STX0_BCLK_MST_INV 163 +#define JH7110_SYSCLK_I2STX0_LRCK_MST 164 +#define JH7110_SYSCLK_I2STX0_BCLK 165 +#define JH7110_SYSCLK_I2STX0_BCLK_INV 166 +#define JH7110_SYSCLK_I2STX0_LRCK 167 +#define JH7110_SYSCLK_I2STX1_APB 168 +#define JH7110_SYSCLK_I2STX1_BCLK_MST 169 +#define JH7110_SYSCLK_I2STX1_BCLK_MST_INV 170 +#define JH7110_SYSCLK_I2STX1_LRCK_MST 171 +#define JH7110_SYSCLK_I2STX1_BCLK 172 +#define JH7110_SYSCLK_I2STX1_BCLK_INV 173 +#define JH7110_SYSCLK_I2STX1_LRCK 174 +#define JH7110_SYSCLK_I2SRX_APB 175 +#define JH7110_SYSCLK_I2SRX_BCLK_MST 176 +#define JH7110_SYSCLK_I2SRX_BCLK_MST_INV 177 +#define JH7110_SYSCLK_I2SRX_LRCK_MST 178 +#define JH7110_SYSCLK_I2SRX_BCLK 179 +#define JH7110_SYSCLK_I2SRX_BCLK_INV 180 +#define JH7110_SYSCLK_I2SRX_LRCK 181 +#define JH7110_SYSCLK_PDM_DMIC 182 +#define JH7110_SYSCLK_PDM_APB 183 +#define JH7110_SYSCLK_TDM_AHB 184 +#define JH7110_SYSCLK_TDM_APB 185 +#define JH7110_SYSCLK_TDM_INTERNAL 186 +#define JH7110_SYSCLK_TDM_CLK_TDM 187 +#define JH7110_SYSCLK_TDM_CLK_TDM_N 188 +#define JH7110_SYSCLK_JTAG_CERTIFICATION_TRNG 189 + +#define JH7110_SYSCLK_PLL0_OUT 190 +#define JH7110_SYSCLK_PLL1_OUT 191 +#define JH7110_SYSCLK_PLL2_OUT 192 +#define JH7110_SYSCLK_PCLK2_MUX_FUNC_PCLK 193 +#define JH7110_SYSCLK_U2_PCLK_MUX_PCLK 194 +#define JH7110_SYSCLK_APB_BUS 195 +#define JH7110_SYSCLK_AXI_CFG1 196 +#define JH7110_SYSCLK_APB12 197 +#define JH7110_SYSCLK_VOUT_ROOT 198 +#define JH7110_SYSCLK_VENC_ROOT 199 +#define JH7110_SYSCLK_VDEC_ROOT 200 +#define JH7110_SYSCLK_GMACUSB_ROOT 201 + +#define JH7110_SYSCLK_END 202 + +#endif /* __DT_BINDINGS_CLOCK_STARFIVE_JH7110_SYS_H__ */
Signature · 1 line
2.17.1
PATCH 17/30 dt-bindings: clock: Add starfive,jh7110-clkgen-sys bindings
In reply to Hal FengFrom: Emil Renner Berthing <[email protected]>
Add bindings for the system clock generator on the JH7110 RISC-V SoC by StarFive Technology Ltd.
--- .../clock/starfive,jh7110-clkgen-sys.yaml | 69 +++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 Documentation/devicetree/bindings/clock/starfive,jh7110-clkgen-sys.yaml
Documentation/devicetree/bindings/clock/starfive,jh7110-clkgen-sys.yaml new file +69 -0
@@ -0,0 +1,69 @@ +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/clock/starfive,jh7110-clkgen-sys.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: StarFive JH7110 System Clock Generator + +maintainers: + - Emil Renner Berthing <[email protected]> + - Xingyu Wu <[email protected]> + +properties: + compatible: + const: starfive,jh7110-clkgen-sys + + clocks: + items: + - description: Main Oscillator (24 MHz) + - description: RMII reference clock + - description: RGMII RX clock + - description: I2S TX bit clock + - description: I2S TX left/right clock + - description: I2S RX bit clock + - description: I2S RX left/right clock + - description: TDM + - description: mclk + + clock-names: + items: + - const: osc + - const: gmac1_rmii_refin + - const: gmac1_rgmii_rxin + - const: i2stx_bclk_ext + - const: i2stx_lrck_ext + - const: i2srx_bclk_ext + - const: i2srx_lrck_ext + - const: tdm_ext + - const: mclk_ext + + '#clock-cells': + const: 1 + description: + See <dt-bindings/clock/starfive-jh7110-sys.h> for valid indices. + +required: + - compatible + - clocks + - clock-names + - '#clock-cells' + +additionalProperties: false + +examples: + - | + syscrg_clk: clock-controller@13020000 { + compatible = "starfive,jh7110-clkgen-sys"; + clocks = <&osc>, <&gmac1_rmii_refin>, + <&gmac1_rgmii_rxin>, + <&i2stx_bclk_ext>, <&i2stx_lrck_ext>, + <&i2srx_bclk_ext>, <&i2srx_lrck_ext>, + <&tdm_ext>, <&mclk_ext>; + clock-names = "osc", "gmac1_rmii_refin", + "gmac1_rgmii_rxin", + "i2stx_bclk_ext", "i2stx_lrck_ext", + "i2srx_bclk_ext", "i2srx_lrck_ext", + "tdm_ext", "mclk_ext"; + #clock-cells = <1>; + };
Signature · 1 line
2.17.1
Rob Herring
maintainerRe: [PATCH v1 17/30] dt-bindings: clock: Add starfive,jh7110-clkgen-sys bindings
Quoted 5 lines · Hal Feng
From: Emil Renner Berthing <[email protected]>
Add bindings for the system clock generator on the JH7110 RISC-V SoC by StarFive Technology Ltd.
Quoted 7 lines
Signed-off-by Emil Renner Berthing <[email protected]>Signed-off-by Hal Feng <[email protected]>--- .../clock/starfive,jh7110-clkgen-sys.yaml | 69 +++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 Documentation/devicetree/bindings/clock/starfive,jh7110-clkgen-sys.yaml
My bot found errors running 'make DT_CHECKER_FLAGS=-m dt_binding_check' on your patch (DT_CHECKER_FLAGS is new in v5.13):
yamllint warnings/errors:
dtschema/dtc warnings/errors:
Documentation/devicetree/bindings/clock/starfive,jh7110-clkgen-sys.example.dts:18.47-31.11: Warning (unit_address_vs_reg): /example-0/clock-controller@13020000: node has a unit name, but no reg or ranges property
doc reference errors (make refcheckdocs):
See https://patchwork.ozlabs.org/patch/
This check can fail if there are any dependencies. The base for a patch series is generally the most recent rc1.
If you already ran 'make dt_binding_check' and didn't see the above error(s), then make sure 'yamllint' is installed and dt-schema is up to date:
pip3 install dtschema --upgrade
Please check and re-submit.
Re: [PATCH v1 17/30] dt-bindings: clock: Add starfive,jh7110-clkgen-sys bindings
In reply to Hal FengQuoted 7 lines · Hal Feng
From: Emil Renner Berthing <[email protected]>
Add bindings for the system clock generator on the JH7110 RISC-V SoC by StarFive Technology Ltd.
Signed-off-by Emil Renner Berthing <[email protected]>Signed-off-by Hal Feng <[email protected]>
(...)
Quoted 6 lines
Documentation/devicetree/bindings/clock/starfive,jh7110-clkgen-sys.yaml new file +6
-0+ '#clock-cells': + const: 1 + description: + See <dt-bindings/clock/starfive-jh7110-sys.h> for valid indices. + +required:
Documentation/devicetree/bindings/clock/starfive,jh7110-clkgen-sys.yaml line 56
Quoted 10 lines
Documentation/devicetree/bindings/clock/starfive,jh7110-clkgen-sys.yaml new file +10
-0+ - compatible + - clocks + - clock-names + - '#clock-cells' + +additionalProperties: false + +examples: + - | + syscrg_clk: clock-controller@13020000 {
Does not look like you tested the bindings. Please run make dt_binding_check (see Documentation/devicetree/bindings/writing-schema.rst for instructions).
Documentation/devicetree/bindings/clock/starfive,jh7110-clkgen-sys.yaml line 69
Quoted 13 lines
Documentation/devicetree/bindings/clock/starfive,jh7110-clkgen-sys.yaml new file +13
-0+ compatible = "starfive,jh7110-clkgen-sys"; + clocks = <&osc>, <&gmac1_rmii_refin>, + <&gmac1_rgmii_rxin>, + <&i2stx_bclk_ext>, <&i2stx_lrck_ext>, + <&i2srx_bclk_ext>, <&i2srx_lrck_ext>, + <&tdm_ext>, <&mclk_ext>; + clock-names = "osc", "gmac1_rmii_refin", + "gmac1_rgmii_rxin", + "i2stx_bclk_ext", "i2stx_lrck_ext", + "i2srx_bclk_ext", "i2srx_lrck_ext", + "tdm_ext", "mclk_ext"; + #clock-cells = <1>; + };
Best regards,
Krzysztof
_______________________________________________
linux-riscv mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-riscv
Re: [PATCH v1 17/30] dt-bindings: clock: Add starfive,jh7110-clkgen-sys bindings
Quoted 23 lines · Krzysztof Kozlowski
Quoted 7 lines · Hal Feng
From: Emil Renner Berthing <[email protected]>
Add bindings for the system clock generator on the JH7110 RISC-V SoC by StarFive Technology Ltd.
Signed-off-by Emil Renner Berthing <[email protected]>Signed-off-by Hal Feng <[email protected]>(...)
Quoted 12 lines
Documentation/devicetree/bindings/clock/starfive,jh7110-clkgen-sys.yaml new file +12
-0+ '#clock-cells': + const: 1 + description: + See <dt-bindings/clock/starfive-jh7110-sys.h> for valid indices. + +required: + - compatible + - clocks + - clock-names + - '#clock-cells' + +additionalProperties: false
Quoted 8 lines
Documentation/devicetree/bindings/clock/starfive,jh7110-clkgen-sys.yaml line 56
Quoted 4 lines
Documentation/devicetree/bindings/clock/starfive,jh7110-clkgen-sys.yaml new file +4
-0+ +examples: + - | + syscrg_clk: clock-controller@13020000 {Does not look like you tested the bindings. Please run
make dt_binding_check(seeDocumentation/devicetree/bindings/writing-schema.rstfor instructions).
Will rewrite the bindings and test them. Thanks.
Best regards,
Hal
PATCH 18/30 clk: starfive: Add StarFive JH7110 system clock driver
In reply to Hal FengFrom: Emil Renner Berthing <[email protected]>
Add driver for the StarFive JH7110 system clock controller.
--- drivers/clk/starfive/Kconfig | 9 + drivers/clk/starfive/Makefile | 2 + .../clk/starfive/clk-starfive-jh7110-sys.c | 648 ++++++++++++++++++ drivers/clk/starfive/clk-starfive.h | 2 +- 4 files changed, 660 insertions(+), 1 deletion(-) create mode 100644 drivers/clk/starfive/clk-starfive-jh7110-sys.c
drivers/clk/starfive/Kconfig +9 -0
@@ -20,3 +20,12 @@ config CLK_STARFIVE_JH7100_AUDIO help Say Y or M here to support the audio clocks on the StarFive JH7100 SoC. + +config CLK_STARFIVE_JH7110_SYS + bool "StarFive JH7110 system clock support" + depends on SOC_STARFIVE || COMPILE_TEST + select CLK_STARFIVE + default SOC_STARFIVE + help + Say yes here to support the system clock controller on the + StarFive JH7110 SoC.
drivers/clk/starfive/Makefile +2 -0
@@ -3,3 +3,5 @@ obj-$(CONFIG_CLK_STARFIVE) += clk-starfive.o obj-$(CONFIG_CLK_STARFIVE_JH7100) += clk-starfive-jh7100.o obj-$(CONFIG_CLK_STARFIVE_JH7100_AUDIO) += clk-starfive-jh7100-audio.o + +obj-$(CONFIG_CLK_STARFIVE_JH7110_SYS) += clk-starfive-jh7110-sys.o
drivers/clk/starfive/clk-starfive-jh7110-sys.c new file +648 -0
648 lines not on this page · raw message
drivers/clk/starfive/clk-starfive.h +1 -1
@@ -103,7 +103,7 @@ struct starfive_clk {struct starfive_clk_priv {struct device *dev;struct regmap *regmap; -struct clk_hw *pll[3 ]; +struct clk_hw *pll[12 ];struct starfive_clk reg[]; };
Signature · 1 line
2.17.1
PATCH 19/30 dt-bindings: clock: Add StarFive JH7110 always-on definitions
In reply to Hal FengFrom: Emil Renner Berthing <[email protected]>
Add all clock outputs for the StarFive JH7110 always-on clock generator.
--- .../dt-bindings/clock/starfive-jh7110-aon.h | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 include/dt-bindings/clock/starfive-jh7110-aon.h
include/dt-bindings/clock/starfive-jh7110-aon.h new file +26 -0
@@ -0,0 +1,26 @@ +/* SPDX-License-Identifier: GPL-2.0 OR MIT */ +/* +* Copyright 2022 Emil Renner Berthing <[email protected]> +*/ + +#ifndef __DT_BINDINGS_CLOCK_STARFIVE_JH7110_AON_H__ +#define __DT_BINDINGS_CLOCK_STARFIVE_JH7110_AON_H__ + +#define JH7110_AONCLK_OSC_DIV4 0 +#define JH7110_AONCLK_APB_FUNC 1 +#define JH7110_AONCLK_GMAC0_AHB 2 +#define JH7110_AONCLK_GMAC0_AXI 3 +#define JH7110_AONCLK_GMAC0_RMII_RTX 4 +#define JH7110_AONCLK_GMAC0_TX 5 +#define JH7110_AONCLK_GMAC0_TX_INV 6 +#define JH7110_AONCLK_GMAC0_RX 7 +#define JH7110_AONCLK_GMAC0_RX_INV 8 +#define JH7110_AONCLK_OTPC_APB 9 +#define JH7110_AONCLK_RTC_APB 10 +#define JH7110_AONCLK_RTC_INTERNAL 11 +#define JH7110_AONCLK_RTC_32K 12 +#define JH7110_AONCLK_RTC_CAL 13 + +#define JH7110_AONCLK_END 14 + +#endif /* __DT_BINDINGS_CLOCK_STARFIVE_JH7110_H__ */
Signature · 1 line
2.17.1
PATCH 20/30 dt-bindings: clock: Add starfive,jh7110-clkgen-aon bindings
In reply to Hal FengFrom: Emil Renner Berthing <[email protected]>
Add bindings for the always-on clock generator on the JH7110 RISC-V SoC by StarFive Technology Ltd.
--- .../clock/starfive,jh7110-clkgen-aon.yaml | 62 +++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 Documentation/devicetree/bindings/clock/starfive,jh7110-clkgen-aon.yaml
Documentation/devicetree/bindings/clock/starfive,jh7110-clkgen-aon.yaml new file +62 -0
@@ -0,0 +1,62 @@ +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/clock/starfive,jh7110-clkgen-aon.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: StarFive JH7110 Always-On Clock Generator + +maintainers: + - Emil Renner Berthing <[email protected]> + - Xingyu Wu <[email protected]> + +properties: + compatible: + const: starfive,jh7110-clkgen-aon + + clocks: + items: + - description: Main Oscillator + - description: RTC clock + - description: RMII reference clock + - description: RGMII RX clock + - description: STG AXI/AHB clock + - description: APB Bus clock + + clock-names: + items: + - const: osc + - const: clk_rtc + - const: gmac0_rmii_refin + - const: gmac0_rgmii_rxin + - const: stg_axiahb + - const: apb_bus_func + + '#clock-cells': + const: 1 + description: + See <dt-bindings/clock/starfive-jh7110-aon.h> for valid indices. + +required: + - compatible + - clocks + - clock-names + - '#clock-cells' + +additionalProperties: false + +examples: + - | + #include <dt-bindings/clock/starfive-jh7110-sys.h> + + aoncrg: clock-controller@17000000 { + compatible = "starfive,jh7110-aoncrg"; + clocks = <&osc>, <&clk_rtc>, + <&gmac0_rmii_refin>, <&gmac0_rgmii_rxin>, + <&syscrg JH7110_SYSCLK_STG_AXIAHB>, + <&syscrg JH7110_SYSCLK_APB_BUS_FUNC>; + clock-names = "osc", "clk_rtc", + "gmac0_rmii_refin", "gmac0_rgmii_rxin", + "stg_axiahb", "apb_bus_func"; + #clock-cells = <1>; + };
Signature · 1 line
2.17.1
Re: [PATCH v1 20/30] dt-bindings: clock: Add starfive,jh7110-clkgen-aon bindings
Quoted 5 lines · Hal Feng
From: Emil Renner Berthing <[email protected]>
Add bindings for the always-on clock generator on the JH7110 RISC-V SoC by StarFive Technology Ltd.
(...)
Documentation/devicetree/bindings/clock/starfive,jh7110-clkgen-aon.yaml line 52
Quoted 8 lines
Documentation/devicetree/bindings/clock/starfive,jh7110-clkgen-aon.yaml new file +8
-0+ +additionalProperties: false + +examples: + - | + #include <dt-bindings/clock/starfive-jh7110-sys.h> + + aoncrg: clock-controller@17000000 {
Does not look like you tested the bindings. Please run make dt_binding_check (see Documentation/devicetree/bindings/writing-schema.rst for instructions).
Best regards,
Krzysztof
_______________________________________________
linux-riscv mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-riscv
Re: [PATCH v1 20/30] dt-bindings: clock: Add starfive,jh7110-clkgen-aon bindings
Quoted 9 lines · Krzysztof Kozlowski
Quoted 5 lines · Hal Feng
From: Emil Renner Berthing <[email protected]>
Add bindings for the always-on clock generator on the JH7110 RISC-V SoC by StarFive Technology Ltd.
(...)
Quoted 12 lines
Documentation/devicetree/bindings/clock/starfive,jh7110-clkgen-aon.yaml line 52
Quoted 8 lines
Documentation/devicetree/bindings/clock/starfive,jh7110-clkgen-aon.yaml new file +8
-0+ +additionalProperties: false + +examples: + - | + #include <dt-bindings/clock/starfive-jh7110-sys.h> + + aoncrg: clock-controller@17000000 {Does not look like you tested the bindings. Please run
make dt_binding_check(seeDocumentation/devicetree/bindings/writing-schema.rstfor instructions).
Will rewrite the bindings and test them. Thanks.
Best regards,
Hal
Rob Herring
maintainerRe: [PATCH v1 20/30] dt-bindings: clock: Add starfive,jh7110-clkgen-aon bindings
In reply to Hal FengQuoted 46 lines · Hal Feng
From: Emil Renner Berthing <[email protected]>
Add bindings for the always-on clock generator on the JH7110 RISC-V SoC by StarFive Technology Ltd.
Signed-off-by Emil Renner Berthing <[email protected]>Signed-off-by Hal Feng <[email protected]>--- .../clock/starfive,jh7110-clkgen-aon.yaml | 62 +++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 Documentation/devicetree/bindings/clock/starfive,jh7110-clkgen-aon.yamlDocumentation/devicetree/bindings/clock/starfive,jh7110-clkgen-aon.yaml new file +28
-0@@ -0,0 +1,62 @@ +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/clock/starfive,jh7110-clkgen-aon.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: StarFive JH7110 Always-On Clock Generator + +maintainers: + - Emil Renner Berthing <[email protected]> + - Xingyu Wu <[email protected]> + +properties: + compatible: + const: starfive,jh7110-clkgen-aon + + clocks: + items: + - description: Main Oscillator + - description: RTC clock + - description: RMII reference clock + - description: RGMII RX clock + - description: STG AXI/AHB clock + - description: APB Bus clock + + clock-names: + items: + - const: osc
Documentation/devicetree/bindings/clock/starfive,jh7110-clkgen-aon.yaml line 38
Quoted 10 lines
Documentation/devicetree/bindings/clock/starfive,jh7110-clkgen-aon.yaml new file +10
-0+ - const: clk_rtc + - const: gmac0_rmii_refin + - const: gmac0_rgmii_rxin + - const: stg_axiahb + - const: apb_bus_func + + '#clock-cells': + const: 1 + description: + See <dt-bindings/clock/starfive-jh7110-aon.h> for valid indices.
No 'reg'? How do you access this h/w then? If it is part of some block, we need to see the full picture.
Rob
_______________________________________________
linux-riscv mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-riscv
PATCH 21/30 clk: starfive: Add StarFive JH7110 always-on clock driver
In reply to Hal FengFrom: Emil Renner Berthing <[email protected]>
Add driver for the StarFive JH7110 always-on clock controller.
--- drivers/clk/starfive/Kconfig | 9 + drivers/clk/starfive/Makefile | 1 + .../clk/starfive/clk-starfive-jh7110-aon.c | 161 ++++++++++++++++++ 3 files changed, 171 insertions(+) create mode 100644 drivers/clk/starfive/clk-starfive-jh7110-aon.c
drivers/clk/starfive/Kconfig +9 -0
@@ -29,3 +29,12 @@ config CLK_STARFIVE_JH7110_SYS help Say yes here to support the system clock controller on the StarFive JH7110 SoC. + +config CLK_STARFIVE_JH7110_AON + tristate "StarFive JH7110 always-on clock support" + depends on SOC_STARFIVE || COMPILE_TEST + select CLK_STARFIVE + default m if SOC_STARFIVE + help + Say yes here to support the always-on clock controller on the + StarFive JH7110 SoC.
drivers/clk/starfive/Makefile +1 -0
@@ -5,3 +5,4 @@ obj-$(CONFIG_CLK_STARFIVE_JH7100) += clk-starfive-jh7100.o obj-$(CONFIG_CLK_STARFIVE_JH7100_AUDIO) += clk-starfive-jh7100-audio.o obj-$(CONFIG_CLK_STARFIVE_JH7110_SYS) += clk-starfive-jh7110-sys.o +obj-$(CONFIG_CLK_STARFIVE_JH7110_AON) += clk-starfive-jh7110-aon.o
drivers/clk/starfive/clk-starfive-jh7110-aon.c new file +161 -0
161 lines not on this page · raw message
Signature · 1 line
2.17.1
PATCH 22/30 pinctrl: Create subdirectory for StarFive drivers
In reply to Hal FengFrom: Jianlong Huang <[email protected]>
Move the StarFive JH7100 pinctrl driver to a new subdirectory in preparation for adding more StarFive pinctrl drivers. No functional change.
---
drivers/pinctrl/Kconfig | 18 +-----------------
drivers/pinctrl/Makefile | 2 +-
drivers/pinctrl/starfive/Kconfig | 19 +++++++++++++++++++
drivers/pinctrl/starfive/Makefile | 3 +++
.../pinctrl/{ => starfive}/pinctrl-starfive.c | 8 ++++----
5 files changed, 28 insertions(+), 22 deletions(-)
create mode 100644 drivers/pinctrl/starfive/Kconfig
create mode 100644 drivers/pinctrl/starfive/Makefile
rename drivers/pinctrl/{ => starfive}/pinctrl-starfive.c (99%)drivers/pinctrl/Kconfig +1 -17
@@ -412,23 +412,6 @@ config PINCTRL_ST select PINCONF select GPIOLIB_IRQCHIP -config PINCTRL_STARFIVE - tristate "Pinctrl and GPIO driver for the StarFive JH7100 SoC" - depends on SOC_STARFIVE || COMPILE_TEST - depends on OF - default SOC_STARFIVE - select GENERIC_PINCTRL_GROUPS - select GENERIC_PINMUX_FUNCTIONS - select GENERIC_PINCONF - select GPIOLIB - select GPIOLIB_IRQCHIP - select OF_GPIO - help - Say yes here to support pin control on the StarFive JH7100 SoC. - This also provides an interface to the GPIO pins not used by other - peripherals supporting inputs, outputs, configuring pull-up/pull-down - and interrupts on input changes. - config PINCTRL_STMFX tristate "STMicroelectronics STMFX GPIO expander pinctrl driver" depends on I2C
@@ -526,6 +509,7 @@ source "drivers/pinctrl/renesas/Kconfig" source "drivers/pinctrl/samsung/Kconfig" source "drivers/pinctrl/spear/Kconfig" source "drivers/pinctrl/sprd/Kconfig" +source "drivers/pinctrl/starfive/Kconfig" source "drivers/pinctrl/stm32/Kconfig" source "drivers/pinctrl/sunplus/Kconfig" source "drivers/pinctrl/sunxi/Kconfig"
drivers/pinctrl/Makefile +1 -1
@@ -43,7 +43,6 @@ obj-$(CONFIG_PINCTRL_RK805) += pinctrl-rk805.o obj-$(CONFIG_PINCTRL_ROCKCHIP) += pinctrl-rockchip.o obj-$(CONFIG_PINCTRL_SINGLE) += pinctrl-single.o obj-$(CONFIG_PINCTRL_ST) += pinctrl-st.o -obj-$(CONFIG_PINCTRL_STARFIVE) += pinctrl-starfive.o obj-$(CONFIG_PINCTRL_STMFX) += pinctrl-stmfx.o obj-$(CONFIG_PINCTRL_SX150X) += pinctrl-sx150x.o obj-$(CONFIG_PINCTRL_TB10X) += pinctrl-tb10x.o
@@ -70,6 +69,7 @@ obj-$(CONFIG_PINCTRL_RENESAS) += renesas/ obj-$(CONFIG_PINCTRL_SAMSUNG) += samsung/ obj-$(CONFIG_PINCTRL_SPEAR) += spear/ obj-y += sprd/ +obj-$(CONFIG_SOC_STARFIVE) += starfive/ obj-$(CONFIG_PINCTRL_STM32) += stm32/ obj-y += sunplus/ obj-$(CONFIG_PINCTRL_SUNXI) += sunxi/
drivers/pinctrl/starfive/Kconfig new file +19 -0
@@ -0,0 +1,19 @@ +# SPDX-License-Identifier: GPL-2.0-only + +config PINCTRL_STARFIVE + tristate "Pinctrl and GPIO driver for the StarFive JH7100 SoC" + depends on SOC_STARFIVE || COMPILE_TEST + depends on OF + select GENERIC_PINCTRL_GROUPS + select GENERIC_PINMUX_FUNCTIONS + select GENERIC_PINCONF + select GPIOLIB + select GPIOLIB_IRQCHIP + select OF_GPIO + default SOC_STARFIVE + help + Say yes here to support pin control on the StarFive JH7100 SoC. + This also provides an interface to the GPIO pins not used by other + peripherals supporting inputs, outputs, configuring pull-up/pull-down + and interrupts on input changes. +
drivers/pinctrl/starfive/Makefile new file +3 -0
@@ -0,0 +1,3 @@ +# SPDX-License-Identifier: GPL-2.0 + +obj-$(CONFIG_PINCTRL_STARFIVE) += pinctrl-starfive.o
drivers/pinctrl/starfive/pinctrl-starfive.c renamed from drivers/pinctrl/pinctrl-starfive.c +4 -4
@@ -22,10 +22,10 @@#include <dt-bindings/pinctrl/pinctrl-starfive.h> -#include "core.h" -#include "pinctrl-utils.h" -#include "pinmux.h" -#include "pinconf.h" +#include "../core.h" +#include "../pinctrl-utils.h" +#include "../pinmux.h" +#include "../pinconf.h" #define DRIVER_NAME "pinctrl-starfive"
Signature · 1 line
2.17.1
Linus Walleij
AppliedRe: [PATCH v1 22/30] pinctrl: Create subdirectory for StarFive drivers
Quoted 8 lines · Hal Feng
From: Jianlong Huang <[email protected]>
Move the StarFive JH7100 pinctrl driver to a new subdirectory in preparation for adding more StarFive pinctrl drivers. No functional change.
Signed-off-by Jianlong Huang <[email protected]>Signed-off-by Hal Feng <[email protected]>
I applied this patch for v6.1 so you don't have to reiterate it, it's clearly just infrastructure that you'll need going forward.
Yours,
Linus Walleij
PATCH 23/30 pinctrl: starfive: Rename "pinctrl-starfive" to "pinctrl-starfive-jh7100"
In reply to Hal FengFrom: Jianlong Huang <[email protected]>
Add the SoC name to make it more clear. Also the next generation StarFive SoCs will use "pinctrl-starfive" as the core of StarFive pinctrl driver. No functional change.
---
.../bindings/pinctrl/starfive,jh7100-pinctrl.yaml | 2 +-
arch/riscv/boot/dts/starfive/jh7100-beaglev-starlight.dts | 2 +-
drivers/pinctrl/starfive/Kconfig | 2 +-
drivers/pinctrl/starfive/Makefile | 2 +-
.../{pinctrl-starfive.c => pinctrl-starfive-jh7100.c} | 2 +-
.../{pinctrl-starfive.h => pinctrl-starfive-jh7100.h} | 6 +++---
6 files changed, 8 insertions(+), 8 deletions(-)
rename drivers/pinctrl/starfive/{pinctrl-starfive.c => pinctrl-starfive-jh7100.c} (99%)
rename include/dt-bindings/pinctrl/{pinctrl-starfive.h => pinctrl-starfive-jh7100.h} (98%)Documentation/devicetree/bindings/pinctrl/starfive,jh7100-pinctrl.yaml +1 -1
@@ -165,7 +165,7 @@ examples: - | #include <dt-bindings/clock/starfive-jh7100.h> #include <dt-bindings/reset/starfive-jh7100.h> - #include <dt-bindings/pinctrl/pinctrl-starfive.h> + #include <dt-bindings/pinctrl/pinctrl-starfive-jh7100.h> soc { #address-cells = <2>;
arch/riscv/boot/dts/starfive/jh7100-beaglev-starlight.dts +1 -1
@@ -8,7 +8,7 @@ #include "jh7100.dtsi" #include <dt-bindings/gpio/gpio.h> #include <dt-bindings/leds/common.h> -#include <dt-bindings/pinctrl/pinctrl-starfive.h> +#include <dt-bindings/pinctrl/pinctrl-starfive-jh7100.h> / { model = "BeagleV Starlight Beta";
drivers/pinctrl/starfive/Kconfig +1 -1
@@ -1,6 +1,6 @@ # SPDX-License-Identifier: GPL-2.0-only -config PINCTRL_STARFIVE +config PINCTRL_STARFIVE_JH7100 tristate "Pinctrl and GPIO driver for the StarFive JH7100 SoC" depends on SOC_STARFIVE || COMPILE_TEST depends on OF
drivers/pinctrl/starfive/Makefile +1 -1
@@ -1,3 +1,3 @@ # SPDX-License-Identifier: GPL-2.0 -obj-$(CONFIG_PINCTRL_STARFIVE) += pinctrl-starfive.o +obj-$(CONFIG_PINCTRL_STARFIVE_JH7100) += pinctrl-starfive-jh7100.o
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c renamed from drivers/pinctrl/starfive/pinctrl-starfive.c +1 -1
@@ -20,7 +20,7 @@#include <linux/pinctrl/pinctrl.h> #include <linux/pinctrl/pinmux.h> -#include <dt-bindings/pinctrl/pinctrl-starfive.h> +#include <dt-bindings/pinctrl/pinctrl-starfive-jh7100.h> #include "../core.h" #include "../pinctrl-utils.h"
include/dt-bindings/pinctrl/pinctrl-starfive-jh7100.h renamed from include/dt-bindings/pinctrl/pinctrl-starfive.h +3 -3
@@ -3,8 +3,8 @@* Copyright (C) 2021 Emil Renner Berthing <[email protected]> */ -#ifndef __DT_BINDINGS_PINCTRL_STARFIVE_H__ -#define __DT_BINDINGS_PINCTRL_STARFIVE_H__ +#ifndef __DT_BINDINGS_PINCTRL_STARFIVE_JH7100_H__ +#define __DT_BINDINGS_PINCTRL_STARFIVE_JH7100_H__#define PAD_GPIO_OFFSET 0#define PAD_FUNC_SHARE_OFFSET 64
@@ -272,4 +272,4 @@#define GPI_NONE 0xff -#endif /* __DT_BINDINGS_PINCTRL_STARFIVE_H__ */ +#endif /* __DT_BINDINGS_PINCTRL_STARFIVE_JH7100_H__ */
Signature · 1 line
2.17.1
Re: [PATCH v1 23/30] pinctrl: starfive: Rename "pinctrl-starfive" to "pinctrl-starfive-jh7100"
Quoted 8 lines · Hal Feng
From: Jianlong Huang <[email protected]>
Add the SoC name to make it more clear. Also the next generation StarFive SoCs will use "pinctrl-starfive" as the core of StarFive pinctrl driver. No functional change.
Signed-off-by Jianlong Huang <[email protected]>Signed-off-by Hal Feng <[email protected]>
Quoted 11 lines
---
.../bindings/pinctrl/starfive,jh7100-pinctrl.yaml | 2 +-
arch/riscv/boot/dts/starfive/jh7100-beaglev-starlight.dts | 2 +-
drivers/pinctrl/starfive/Kconfig | 2 +-
drivers/pinctrl/starfive/Makefile | 2 +-
.../{pinctrl-starfive.c => pinctrl-starfive-jh7100.c} | 2 +-
.../{pinctrl-starfive.h => pinctrl-starfive-jh7100.h} | 6 +++---
6 files changed, 8 insertions(+), 8 deletions(-)
rename drivers/pinctrl/starfive/{pinctrl-starfive.c => pinctrl-starfive-jh7100.c} (99%)
rename include/dt-bindings/pinctrl/{pinctrl-starfive.h => pinctrl-starfive-jh7100.h} (98%)Would be good to pull this out separately and apply for 6.1. It's kind of messy with cross tree dependencies.
Re: [PATCH v1 23/30] pinctrl: starfive: Rename "pinctrl-starfive" to "pinctrl-starfive-jh7100"
Quoted 21 lines · Rob Herring
Quoted 8 lines · Hal Feng
From: Jianlong Huang <[email protected]>
Add the SoC name to make it more clear. Also the next generation StarFive SoCs will use "pinctrl-starfive" as the core of StarFive pinctrl driver. No functional change.
Signed-off-by Jianlong Huang <[email protected]>Signed-off-by Hal Feng <[email protected]>Quoted 11 lines
--- .../bindings/pinctrl/starfive,jh7100-pinctrl.yaml | 2 +- arch/riscv/boot/dts/starfive/jh7100-beaglev-starlight.dts | 2 +- drivers/pinctrl/starfive/Kconfig | 2 +- drivers/pinctrl/starfive/Makefile | 2 +- .../{pinctrl-starfive.c => pinctrl-starfive-jh7100.c} | 2 +- .../{pinctrl-starfive.h => pinctrl-starfive-jh7100.h} | 6 +++--- 6 files changed, 8 insertions(+), 8 deletions(-) rename drivers/pinctrl/starfive/{pinctrl-starfive.c => pinctrl-starfive-jh7100.c} (99%) rename include/dt-bindings/pinctrl/{pinctrl-starfive.h => pinctrl-starfive-jh7100.h} (98%)
Quoted 4 lines
Reviewed-by Rob Herring <[email protected]>Would be good to pull this out separately and apply for 6.1. It's kind of messy with cross tree dependencies.
OK I applied this for V6.1.
Yours,
Linus Walleij
Re: [PATCH v1 23/30] pinctrl: starfive: Rename "pinctrl-starfive" to "pinctrl-starfive-jh7100"
Quoted 22 lines · Linus Walleij
Quoted 21 lines · Rob Herring
Quoted 19 lines · Hal Feng
From: Jianlong Huang <[email protected]>
Add the SoC name to make it more clear. Also the next generation StarFive SoCs will use "pinctrl-starfive" as the core of StarFive pinctrl driver. No functional change.
Signed-off-by Jianlong Huang <[email protected]>Signed-off-by Hal Feng <[email protected]>--- .../bindings/pinctrl/starfive,jh7100-pinctrl.yaml | 2 +- arch/riscv/boot/dts/starfive/jh7100-beaglev-starlight.dts | 2 +- drivers/pinctrl/starfive/Kconfig | 2 +- drivers/pinctrl/starfive/Makefile | 2 +- .../{pinctrl-starfive.c => pinctrl-starfive-jh7100.c} | 2 +- .../{pinctrl-starfive.h => pinctrl-starfive-jh7100.h} | 6 +++--- 6 files changed, 8 insertions(+), 8 deletions(-) rename drivers/pinctrl/starfive/{pinctrl-starfive.c => pinctrl-starfive-jh7100.c} (99%) rename include/dt-bindings/pinctrl/{pinctrl-starfive.h => pinctrl-starfive-jh7100.h} (98%)
Quoted 6 lines
Quoted 4 lines
Reviewed-by Rob Herring <[email protected]>Would be good to pull this out separately and apply for 6.1. It's kind of messy with cross tree dependencies.
OK I applied this for V6.1.
Will this need to be done immutably so it can be pulled into the riscv tree in case this gets applied as a late change for 6.1:
https://lore.kernel.org/linux-riscv/[email protected]/
Thanks,
Conor.
Re: [PATCH v1 23/30] pinctrl: starfive: Rename "pinctrl-starfive" to "pinctrl-starfive-jh7100"
Quoted 25 lines · Conor Dooley
Quoted 24 lines · Linus Walleij
Quoted 23 lines · Rob Herring
Quoted 8 lines · Hal Feng
From: Jianlong Huang <[email protected]>
Add the SoC name to make it more clear. Also the next generation StarFive SoCs will use "pinctrl-starfive" as the core of StarFive pinctrl driver. No functional change.
Signed-off-by Jianlong Huang <[email protected]>Signed-off-by Hal Feng <[email protected]>Quoted 11 lines
--- .../bindings/pinctrl/starfive,jh7100-pinctrl.yaml | 2 +- arch/riscv/boot/dts/starfive/jh7100-beaglev-starlight.dts | 2 +- drivers/pinctrl/starfive/Kconfig | 2 +- drivers/pinctrl/starfive/Makefile | 2 +- .../{pinctrl-starfive.c => pinctrl-starfive-jh7100.c} | 2 +- .../{pinctrl-starfive.h => pinctrl-starfive-jh7100.h} | 6 +++--- 6 files changed, 8 insertions(+), 8 deletions(-) rename drivers/pinctrl/starfive/{pinctrl-starfive.c => pinctrl-starfive-jh7100.c} (99%) rename include/dt-bindings/pinctrl/{pinctrl-starfive.h => pinctrl-starfive-jh7100.h} (98%)Reviewed-by Rob Herring <[email protected]>
Quoted 8 lines
Quoted 4 lines
Quoted 2 lines
Would be good to pull this out separately and apply for 6.1. It's kind of messy with cross tree dependencies.
OK I applied this for V6.1.
Will this need to be done immutably so it can be pulled into the riscv tree in case this gets applied as a late change for 6.1:
https://lore.kernel.org/linux-riscv/[email protected]/
Always one finger on the fast-forward button have we? ;)
Rob's point was that I should apply this for v6.1 so that exactly that kind of cross-dependencies and immutable branches could be avoided for the v6.2 development cycle.
The merge window is already open, it's a bit late for completely new stuff I think.
Yours,
Linus Walleij
Re: [PATCH v1 23/30] pinctrl: starfive: Rename "pinctrl-starfive" to "pinctrl-starfive-jh7100"
Quoted 29 lines · Linus Walleij
Quoted 28 lines · Conor Dooley
Quoted 27 lines · Linus Walleij
Quoted 25 lines · Rob Herring
Quoted 8 lines · Hal Feng
From: Jianlong Huang <[email protected]>
Add the SoC name to make it more clear. Also the next generation StarFive SoCs will use "pinctrl-starfive" as the core of StarFive pinctrl driver. No functional change.
Signed-off-by Jianlong Huang <[email protected]>Signed-off-by Hal Feng <[email protected]>Quoted 11 lines
--- .../bindings/pinctrl/starfive,jh7100-pinctrl.yaml | 2 +- arch/riscv/boot/dts/starfive/jh7100-beaglev-starlight.dts | 2 +- drivers/pinctrl/starfive/Kconfig | 2 +- drivers/pinctrl/starfive/Makefile | 2 +- .../{pinctrl-starfive.c => pinctrl-starfive-jh7100.c} | 2 +- .../{pinctrl-starfive.h => pinctrl-starfive-jh7100.h} | 6 +++--- 6 files changed, 8 insertions(+), 8 deletions(-) rename drivers/pinctrl/starfive/{pinctrl-starfive.c => pinctrl-starfive-jh7100.c} (99%) rename include/dt-bindings/pinctrl/{pinctrl-starfive.h => pinctrl-starfive-jh7100.h} (98%)Reviewed-by Rob Herring <[email protected]>Would be good to pull this out separately and apply for 6.1. It's kind of messy with cross tree dependencies.
Quoted 7 lines
Quoted 5 lines
Quoted 1 line
OK I applied this for V6.1.
Will this need to be done immutably so it can be pulled into the riscv tree in case this gets applied as a late change for 6.1:
https://lore.kernel.org/linux-riscv/[email protected]/Always one finger on the fast-forward button have we? ;)
Dunno what you mean by that mate, sorry!
I just saw the mail wanted to have the decency to reply to that fellow & tell him to rebase after rc1 to avoid a conflict.
Quoted 6 lines
Rob's point was that I should apply this for v6.1 so that exactly that kind of cross-dependencies and immutable branches could be avoided for the v6.2 development cycle.
The merge window is already open, it's a bit late for completely new stuff I think.
History suggests otherwise, but I'd be lying if I said I disagreed.
_______________________________________________
linux-riscv mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-riscv
Re: [PATCH v1 23/30] pinctrl: starfive: Rename "pinctrl-starfive" to "pinctrl-starfive-jh7100"
Quoted 36 lines · Conor Dooley
Quoted 35 lines · Linus Walleij
Quoted 33 lines · Conor Dooley
Quoted 22 lines · Linus Walleij
Quoted 21 lines · Rob Herring
Quoted 19 lines · Hal Feng
From: Jianlong Huang <[email protected]>
Add the SoC name to make it more clear. Also the next generation StarFive SoCs will use "pinctrl-starfive" as the core of StarFive pinctrl driver. No functional change.
Signed-off-by Jianlong Huang <[email protected]>Signed-off-by Hal Feng <[email protected]>--- .../bindings/pinctrl/starfive,jh7100-pinctrl.yaml | 2 +- arch/riscv/boot/dts/starfive/jh7100-beaglev-starlight.dts | 2 +- drivers/pinctrl/starfive/Kconfig | 2 +- drivers/pinctrl/starfive/Makefile | 2 +- .../{pinctrl-starfive.c => pinctrl-starfive-jh7100.c} | 2 +- .../{pinctrl-starfive.h => pinctrl-starfive-jh7100.h} | 6 +++--- 6 files changed, 8 insertions(+), 8 deletions(-) rename drivers/pinctrl/starfive/{pinctrl-starfive.c => pinctrl-starfive-jh7100.c} (99%) rename include/dt-bindings/pinctrl/{pinctrl-starfive.h => pinctrl-starfive-jh7100.h} (98%)Quoted 6 lines
Quoted 4 lines
Reviewed-by Rob Herring <[email protected]>Would be good to pull this out separately and apply for 6.1. It's kind of messy with cross tree dependencies.
OK I applied this for V6.1.
Will this need to be done immutably so it can be pulled into the riscv tree in case this gets applied as a late change for 6.1:
https://lore.kernel.org/linux-riscv/[email protected]/
Quoted 5 lines
Quoted 1 line
Always one finger on the fast-forward button have we? ;)
Dunno what you mean by that mate, sorry!
I just saw the mail wanted to have the decency to reply to that fellow
s/wanted/want
Quoted 10 lines
& tell him to rebase after rc1 to avoid a conflict.
Quoted 6 lines
Rob's point was that I should apply this for v6.1 so that exactly that kind of cross-dependencies and immutable branches could be avoided for the v6.2 development cycle.
The merge window is already open, it's a bit late for completely new stuff I think.
History suggests otherwise, but I'd be lying if I said I disagreed.
_______________________________________________
linux-riscv mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-riscv
Re: [PATCH v1 23/30] pinctrl: starfive: Rename "pinctrl-starfive" to "pinctrl-starfive-jh7100"
In reply to Linus WalleijHi Linus,
Quoted 22 lines · Linus Walleij
Quoted 21 lines · Rob Herring
Quoted 19 lines · Hal Feng
From: Jianlong Huang <[email protected]>
Add the SoC name to make it more clear. Also the next generation StarFive SoCs will use "pinctrl-starfive" as the core of StarFive pinctrl driver. No functional change.
Signed-off-by Jianlong Huang <[email protected]>Signed-off-by Hal Feng <[email protected]>--- .../bindings/pinctrl/starfive,jh7100-pinctrl.yaml | 2 +- arch/riscv/boot/dts/starfive/jh7100-beaglev-starlight.dts | 2 +- drivers/pinctrl/starfive/Kconfig | 2 +- drivers/pinctrl/starfive/Makefile | 2 +- .../{pinctrl-starfive.c => pinctrl-starfive-jh7100.c} | 2 +- .../{pinctrl-starfive.h => pinctrl-starfive-jh7100.h} | 6 +++--- 6 files changed, 8 insertions(+), 8 deletions(-) rename drivers/pinctrl/starfive/{pinctrl-starfive.c => pinctrl-starfive-jh7100.c} (99%) rename include/dt-bindings/pinctrl/{pinctrl-starfive.h => pinctrl-starfive-jh7100.h} (98%)
Quoted 6 lines
Quoted 4 lines
Reviewed-by Rob Herring <[email protected]>Would be good to pull this out separately and apply for 6.1. It's kind of messy with cross tree dependencies.
OK I applied this for V6.1.
Isn't the name of the DT bindings header file part of the DT bindings, i.e. it cannot be changed afterwards?
As of v5.17, it is in active use by arch/riscv/boot/dts/starfive/jh7100-beaglev-starlight.dts.
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]
In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
PATCH 24/30 dt-bindings: pinctrl: Add StarFive JH7110 pinctrl definitions
In reply to Hal FengFrom: Jianlong Huang <[email protected]>
Add pinctrl definitions for StarFive JH7110 SoC.
--- .../pinctrl/pinctrl-starfive-jh7110.h | 931 ++++++++++++++++++ 1 file changed, 931 insertions(+) create mode 100644 include/dt-bindings/pinctrl/pinctrl-starfive-jh7110.h
include/dt-bindings/pinctrl/pinctrl-starfive-jh7110.h new file +931 -0
@@ -0,0 +1,931 @@ +/* SPDX-License-Identifier: GPL-2.0 OR MIT */ +/* +* Copyright (C) 2022 StarFive Technology Co., Ltd. +*/ + +#ifndef __DT_BINDINGS_PINCTRL_STARFIVE_JH7110_H__ +#define __DT_BINDINGS_PINCTRL_STARFIVE_JH7110_H__ + +/* aon_iomux pin */ +#define PAD_TESTEN 0 +#define PAD_RGPIO0 1 +#define PAD_RGPIO1 2 +#define PAD_RGPIO2 3 +#define PAD_RGPIO3 4 +#define PAD_RSTN 5 +#define PAD_GMAC0_MDC 6 +#define PAD_GMAC0_MDIO 7 +#define PAD_GMAC0_RXD0 8 +#define PAD_GMAC0_RXD1 9 +#define PAD_GMAC0_RXD2 10 +#define PAD_GMAC0_RXD3 11 +#define PAD_GMAC0_RXDV 12 +#define PAD_GMAC0_RXC 13 +#define PAD_GMAC0_TXD0 14 +#define PAD_GMAC0_TXD1 15 +#define PAD_GMAC0_TXD2 16 +#define PAD_GMAC0_TXD3 17 +#define PAD_GMAC0_TXEN 18 +#define PAD_GMAC0_TXC 19 + +/* aon_iomux dout */ +#define GPO_AON_CLK_32K_OUT 2 +#define GPO_AON_PTC0_PWM4 3 +#define GPO_AON_PTC0_PWM5 4 +#define GPO_AON_PTC0_PWM6 5 +#define GPO_AON_PTC0_PWM7 6 +#define GPO_AON_CLK_GCLK0 7 +#define GPO_AON_CLK_GCLK1 8 +#define GPO_AON_CLK_GCLK2 9 + +/* aon_iomux doen */ +#define OEN_AON_PTC0_OE_N_4 2 +#define OEN_AON_PTC0_OE_N_5 3 +#define OEN_AON_PTC0_OE_N_6 4 +#define OEN_AON_PTC0_OE_N_7 5 + +/* aon_iomux gin */ +#define GPI_AON_PMU_GPIO_WAKEUP_0 0 +#define GPI_AON_PMU_GPIO_WAKEUP_1 1 +#define GPI_AON_PMU_GPIO_WAKEUP_2 2 +#define GPI_AON_PMU_GPIO_WAKEUP_3 3 + +/* aon_iomux gmac0 syscon */ +#define PADCFG_PAD_GMAC0_MDC_SYSCON 0x58 +#define PADCFG_PAD_GMAC0_MDIO_SYSCON 0x5c +#define PADCFG_PAD_GMAC0_RXD0_SYSCON 0x60 +#define PADCFG_PAD_GMAC0_RXD1_SYSCON 0x64 +#define PADCFG_PAD_GMAC0_RXD2_SYSCON 0x68 +#define PADCFG_PAD_GMAC0_RXD3_SYSCON 0x6c +#define PADCFG_PAD_GMAC0_RXDV_SYSCON 0x70 +#define PADCFG_PAD_GMAC0_RXC_SYSCON 0x74 +#define PADCFG_PAD_GMAC0_TXD0_SYSCON 0x78 +#define PADCFG_PAD_GMAC0_TXD1_SYSCON 0x7c +#define PADCFG_PAD_GMAC0_TXD2_SYSCON 0x80 +#define PADCFG_PAD_GMAC0_TXD3_SYSCON 0x84 +#define PADCFG_PAD_GMAC0_TXEN_SYSCON 0x88 +#define PADCFG_PAD_GMAC0_TXC_SYSCON 0x8c + +/* aon_iomux func sel */ +#define AON_IOMUX_CFGSAIF_144_ADDR 0x90 +#define PAD_GMAC0_RXC_FUNC_SEL_SHIFT 0x0 +#define PAD_GMAC0_RXC_FUNC_SEL_MASK 0x3 + +#define PAD_GMAC0_RXC_FUNC_SEL \ + AON_IOMUX_CFGSAIF_144_ADDR \ + PAD_GMAC0_RXC_FUNC_SEL_SHIFT \ + PAD_GMAC0_RXC_FUNC_SEL_MASK + +/* sys_iomux pin */ +#define PAD_GPIO0 0 +#define PAD_GPIO1 1 +#define PAD_GPIO2 2 +#define PAD_GPIO3 3 +#define PAD_GPIO4 4 +#define PAD_GPIO5 5 +#define PAD_GPIO6 6 +#define PAD_GPIO7 7 +#define PAD_GPIO8 8 +#define PAD_GPIO9 9 +#define PAD_GPIO10 10 +#define PAD_GPIO11 11 +#define PAD_GPIO12 12 +#define PAD_GPIO13 13 +#define PAD_GPIO14 14 +#define PAD_GPIO15 15 +#define PAD_GPIO16 16 +#define PAD_GPIO17 17 +#define PAD_GPIO18 18 +#define PAD_GPIO19 19 +#define PAD_GPIO20 20 +#define PAD_GPIO21 21 +#define PAD_GPIO22 22 +#define PAD_GPIO23 23 +#define PAD_GPIO24 24 +#define PAD_GPIO25 25 +#define PAD_GPIO26 26 +#define PAD_GPIO27 27 +#define PAD_GPIO28 28 +#define PAD_GPIO29 29 +#define PAD_GPIO30 30 +#define PAD_GPIO31 31 +#define PAD_GPIO32 32 +#define PAD_GPIO33 33 +#define PAD_GPIO34 34 +#define PAD_GPIO35 35 +#define PAD_GPIO36 36 +#define PAD_GPIO37 37 +#define PAD_GPIO38 38 +#define PAD_GPIO39 39 +#define PAD_GPIO40 40 +#define PAD_GPIO41 41 +#define PAD_GPIO42 42 +#define PAD_GPIO43 43 +#define PAD_GPIO44 44 +#define PAD_GPIO45 45 +#define PAD_GPIO46 46 +#define PAD_GPIO47 47 +#define PAD_GPIO48 48 +#define PAD_GPIO49 49 +#define PAD_GPIO50 50 +#define PAD_GPIO51 51 +#define PAD_GPIO52 52 +#define PAD_GPIO53 53 +#define PAD_GPIO54 54 +#define PAD_GPIO55 55 +#define PAD_GPIO56 56 +#define PAD_GPIO57 57 +#define PAD_GPIO58 58 +#define PAD_GPIO59 59 +#define PAD_GPIO60 60 +#define PAD_GPIO61 61 +#define PAD_GPIO62 62 +#define PAD_GPIO63 63 +#define PAD_SD0_CLK 64 +#define PAD_SD0_CMD 65 +#define PAD_SD0_DATA0 66 +#define PAD_SD0_DATA1 67 +#define PAD_SD0_DATA2 68 +#define PAD_SD0_DATA3 69 +#define PAD_SD0_DATA4 70 +#define PAD_SD0_DATA5 71 +#define PAD_SD0_DATA6 72 +#define PAD_SD0_DATA7 73 +#define PAD_SD0_STRB 74 +#define PAD_GMAC1_MDC 75 +#define PAD_GMAC1_MDIO 76 +#define PAD_GMAC1_RXD0 77 +#define PAD_GMAC1_RXD1 78 +#define PAD_GMAC1_RXD2 79 +#define PAD_GMAC1_RXD3 80 +#define PAD_GMAC1_RXDV 81 +#define PAD_GMAC1_RXC 82 +#define PAD_GMAC1_TXD0 83 +#define PAD_GMAC1_TXD1 84 +#define PAD_GMAC1_TXD2 85 +#define PAD_GMAC1_TXD3 86 +#define PAD_GMAC1_TXEN 87 +#define PAD_GMAC1_TXC 88 +#define PAD_QSPI_SCLK 89 +#define PAD_QSPI_CSn0 90 +#define PAD_QSPI_DATA0 91 +#define PAD_QSPI_DATA1 92 +#define PAD_QSPI_DATA2 93 +#define PAD_QSPI_DATA3 94 + +#define GPO_LOW 0 +#define GPO_HIGH 1 +#define GPO_WAVE511_0_O_UART_TXSOUT 2 +#define GPO_CAN0_CTRL_STBY 3 +#define GPO_CAN0_CTRL_TST_NEXT_BIT 4 +#define GPO_CAN0_CTRL_TST_SAMPLE_POINT 5 +#define GPO_CAN0_CTRL_TXD 6 +#define GPO_USB0_DRIVE_VBUS_IO 7 +#define GPO_QSPI0_CSN1 8 +#define GPO_SPDIF0_SPDIFO 9 +#define GPO_HDMI0_CEC_SDA_OUT 10 +#define GPO_HDMI0_DDC_SCL_OUT 11 +#define GPO_HDMI0_DDC_SDA_OUT 12 +#define GPO_WDT0_WDOGRES 13 +#define GPO_I2C0_IC_CLK_OUT_A 14 +#define GPO_I2C0_IC_DATA_OUT_A 15 +#define GPO_SDIO0_BACK_END_POWER 16 +#define GPO_SDIO0_CARD_POWER_EN 17 +#define GPO_SDIO0_CCMD_OD_PULLUP_EN_N 18 +#define GPO_SDIO0_RST_N 19 +#define GPO_UART0_SOUT 20 +#define GPO_JTAG_DSP_TDO 21 +#define GPO_JTAG_CPU_CERTIFICATION_TDO 22 +#define GPO_PDM_4MIC0_DMIC_MCLK 23 +#define GPO_PTC0_PWM_0 24 +#define GPO_PTC0_PWM_1 25 +#define GPO_PTC0_PWM_2 26 +#define GPO_PTC0_PWM_3 27 +#define GPO_PWMDAC0_LEFT_OUTPUT 28 +#define GPO_PWMDAC0_RIGHT_OUTPUT 29 +#define GPO_SPI0_SSPCLKOUT 30 +#define GPO_SPI0_SSPFSSOUT 31 +#define GPO_SPI0_SSPTXD 32 +#define GPO_GMAC0_CLK_PHY 33 +#define GPO_I2SRX0_BCLK_MST 34 +#define GPO_I2SRX0_LRCK_MST 35 +#define GPO_I2STX0_BCLK_MST 36 +#define GPO_I2STX0_LRCK_MST 37 +#define GPO_CRG0_MCLK_OUT 38 +#define GPO_TDM0_CLK_MST 39 +#define GPO_TDM0_PCM_SYNCOUT 40 +#define GPO_TDM0_PCM_TXD 41 +#define GPO_U7MC_TRACE0_TDATA_0 42 +#define GPO_U7MC_TRACE0_TDATA_1 43 +#define GPO_U7MC_TRACE0_TDATA_2 44 +#define GPO_U7MC_TRACE0_TDATA_3 45 +#define GPO_U7MC_TRACE0_TREF 46 +#define GPO_CAN1_CTRL_STBY 47 +#define GPO_CAN1_CTRL_TST_NEXT_BIT 48 +#define GPO_CAN1_CTRL_TST_SAMPLE_POINT 49 +#define GPO_CAN1_CTRL_TXD 50 +#define GPO_I2C1_IC_CLK_OUT_A 51 +#define GPO_I2C1_IC_DATA_OUT_A 52 +#define GPO_SDIO1_BACK_END_POWER 53 +#define GPO_SDIO1_CARD_POWER_EN 54 +#define GPO_SDIO1_CCLK_OUT 55 +#define GPO_SDIO1_CCMD_OD_PULLUP_EN_N 56 +#define GPO_SDIO1_CCMD_OUT 57 +#define GPO_SDIO1_CDATA_OUT_0 58 +#define GPO_SDIO1_CDATA_OUT_1 59 +#define GPO_SDIO1_CDATA_OUT_2 60 +#define GPO_SDIO1_CDATA_OUT_3 61 +#define GPO_SDIO1_CDATA_OUT_4 62 +#define GPO_SDIO1_CDATA_OUT_5 63 +#define GPO_SDIO1_CDATA_OUT_6 64 +#define GPO_SDIO1_CDATA_OUT_7 65 +#define GPO_SDIO1_RST_N 66 +#define GPO_UART1_RTS_N 67 +#define GPO_UART1_SOUT 68 +#define GPO_I2STX_4CH1_SDO0 69 +#define GPO_I2STX_4CH1_SDO1 70 +#define GPO_I2STX_4CH1_SDO2 71 +#define GPO_I2STX_4CH1_SDO3 72 +#define GPO_SPI1_SSPCLKOUT 73 +#define GPO_SPI1_SSPFSSOUT 74 +#define GPO_SPI1_SSPTXD 75 +#define GPO_I2C2_IC_CLK_OUT_A 76 +#define GPO_I2C2_IC_DATA_OUT_A 77 +#define GPO_UART2_RTS_N 78 +#define GPO_UART2_SOUT 79 +#define GPO_SPI2_SSPCLKOUT 80 +#define GPO_SPI2_SSPFSSOUT 81 +#define GPO_SPI2_SSPTXD 82 +#define GPO_I2C3_IC_CLK_OUT_A 83 +#define GPO_I2C3_IC_DATA_OUT_A 84 +#define GPO_UART3_SOUT 85 +#define GPO_SPI3_SSPCLKOUT 86 +#define GPO_SPI3_SSPFSSOUT 87 +#define GPO_SPI3_SSPTXD 88 +#define GPO_I2C4_IC_CLK_OUT_A 89 +#define GPO_I2C4_IC_DATA_OUT_A 90 +#define GPO_UART4_RTS_N 91 +#define GPO_UART4_SOUT 92 +#define GPO_SPI4_SSPCLKOUT 93 +#define GPO_SPI4_SSPFSSOUT 94 +#define GPO_SPI4_SSPTXD 95 +#define GPO_I2C5_IC_CLK_OUT_A 96 +#define GPO_I2C5_IC_DATA_OUT_A 97 +#define GPO_UART5_RTS_N 98 +#define GPO_UART5_SOUT 99 +#define GPO_SPI5_SSPCLKOUT 100 +#define GPO_SPI5_SSPFSSOUT 101 +#define GPO_SPI5_SSPTXD 102 +#define GPO_I2C6_IC_CLK_OUT_A 103 +#define GPO_I2C6_IC_DATA_OUT_A 104 +#define GPO_SPI6_SSPCLKOUT 105 +#define GPO_SPI6_SSPFSSOUT 106 +#define GPO_SPI6_SSPTXD 107 +#define GPO_NONE 108 + +#define OEN_LOW 0 +#define OEN_HIGH 1 +#define OEN_HDMI0_CEC_SDA_OEN 2 +#define OEN_HDMI0_DDC_SCL_OEN 3 +#define OEN_HDMI0_DDC_SDA_OEN 4 +#define OEN_I2C0_IC_CLK_OE 5 +#define OEN_I2C0_IC_DATA_OE 6 +#define OEN_JTAG_DSP_TDO_OEN 7 +#define OEN_JTAG_CPU_CERTIFICATION_TDO_OE 8 +#define OEN_PTC0_PWM_0_OE_N 9 +#define OEN_PTC0_PWM_1_OE_N 10 +#define OEN_PTC0_PWM_2_OE_N 11 +#define OEN_PTC0_PWM_3_OE_N 12 +#define OEN_SPI0_NSSPCTLOE 13 +#define OEN_SPI0_NSSPOE 14 +#define OEN_TDM0_NPCM_SYNCOE 15 +#define OEN_TDM0_NPCM_TXDOE 16 +#define OEN_I2C1_IC_CLK_OE 17 +#define OEN_I2C1_IC_DATA_OE 18 +#define OEN_SDIO1_CCMD_OUT_EN 19 +#define OEN_SDIO1_CDATA_OUT_EN_0 20 +#define OEN_SDIO1_CDATA_OUT_EN_1 21 +#define OEN_SDIO1_CDATA_OUT_EN_2 22 +#define OEN_SDIO1_CDATA_OUT_EN_3 23 +#define OEN_SDIO1_CDATA_OUT_EN_4 24 +#define OEN_SDIO1_CDATA_OUT_EN_5 25 +#define OEN_SDIO1_CDATA_OUT_EN_6 26 +#define OEN_SDIO1_CDATA_OUT_EN_7 27 +#define OEN_SPI1_NSSPCTLOE 28 +#define OEN_SPI1_NSSPOE 29 +#define OEN_I2C2_IC_CLK_OE 30 +#define OEN_I2C2_IC_DATA_OE 31 +#define OEN_SPI2_NSSPCTLOE 32 +#define OEN_SPI2_NSSPOE 33 +#define OEN_I2C3_IC_CLK_OE 34 +#define OEN_I2C3_IC_DATA_OE 35 +#define OEN_SPI3_NSSPCTLOE 36 +#define OEN_SPI3_NSSPOE 37 +#define OEN_I2C4_IC_CLK_OE 38 +#define OEN_I2C4_IC_DATA_OE 39 +#define OEN_SPI4_NSSPCTLOE 40 +#define OEN_SPI4_NSSPOE 41 +#define OEN_I2C5_IC_CLK_OE 42 +#define OEN_I2C5_IC_DATA_OE 43 +#define OEN_SPI5_NSSPCTLOE 44 +#define OEN_SPI5_NSSPOE 45 +#define OEN_I2C6_IC_CLK_OE 46 +#define OEN_I2C6_IC_DATA_OE 47 +#define OEN_SPI6_NSSPCTLOE 48 +#define OEN_SPI6_NSSPOE 49 +#define OEN_NONE 50 + +#define GPI_WAVE511_0_I_UART_RXSIN 0 +#define GPI_CAN0_CTRL_RXD 1 +#define GPI_USB0_OVERCURRENT_N_IO 2 +#define GPI_SPDIF0_SPDIFI 3 +#define GPI_JTAG_CPU_CERTIFICATION_BYPASS_TRSTN 4 +#define GPI_HDMI0_CEC_SDA_IN 5 +#define GPI_HDMI0_DDC_SCL_IN 6 +#define GPI_HDMI0_DDC_SDA_IN 7 +#define GPI_HDMI0_HPD 8 +#define GPI_I2C0_IC_CLK_IN_A 9 +#define GPI_I2C0_IC_DATA_IN_A 10 +#define GPI_SDIO0_CARD_DETECT_N 11 +#define GPI_SDIO0_CARD_INT_N 12 +#define GPI_SDIO0_CARD_WRITE_PRT 13 +#define GPI_UART0_SIN 14 +#define GPI_JTAG_DSP_TCK 15 +#define GPI_JTAG_DSP_TDI 16 +#define GPI_JTAG_DSP_TMS 17 +#define GPI_JTAG_DSP_TRST_N 18 +#define GPI_JTAG_CPU_CERTIFICATION_TDI 19 +#define GPI_JTAG_CPU_CERTIFICATION_TMS 20 +#define GPI_PDM_4MIC0_DMIC0_DIN 21 +#define GPI_PDM_4MIC0_DMIC1_DIN 22 +#define GPI_I2SRX0_EXT_SDIN0 23 +#define GPI_I2SRX0_EXT_SDIN1 24 +#define GPI_I2SRX0_EXT_SDIN2 25 +#define GPI_SPI0_SSPCLKIN 26 +#define GPI_SPI0_SSPFSSIN 27 +#define GPI_SPI0_SSPRXD 28 +#define GPI_JTAG_CPU_CERTIFICATION_TCK 29 +#define GPI_CRG0_EXT_MCLK 30 +#define GPI_I2SRX0_BCLK_SLV 31 +#define GPI_I2SRX0_LRCK_SLV 32 +#define GPI_I2STX0_BCLK_SLV 33 +#define GPI_I2STX0_LRCK_SLV 34 +#define GPI_TDM0_CLK_SLV 35 +#define GPI_TDM0_PCM_RXD 36 +#define GPI_TDM0_PCM_SYNCIN 37 +#define GPI_CAN1_CTRL_RXD 38 +#define GPI_I2C1_IC_CLK_IN_A 39 +#define GPI_I2C1_IC_DATA_IN_A 40 +#define GPI_SDIO1_CARD_DETECT_N 41 +#define GPI_SDIO1_CARD_INT_N 42 +#define GPI_SDIO1_CARD_WRITE_PRT 43 +#define GPI_SDIO1_CCMD_IN 44 +#define GPI_SDIO1_CDATA_IN_0 45 +#define GPI_SDIO1_CDATA_IN_1 46 +#define GPI_SDIO1_CDATA_IN_2 47 +#define GPI_SDIO1_CDATA_IN_3 48 +#define GPI_SDIO1_CDATA_IN_4 49 +#define GPI_SDIO1_CDATA_IN_5 50 +#define GPI_SDIO1_CDATA_IN_6 51 +#define GPI_SDIO1_CDATA_IN_7 52 +#define GPI_SDIO1_DATA_STROBE 53 +#define GPI_UART1_CTS_N 54 +#define GPI_UART1_SIN 55 +#define GPI_SPI1_SSPCLKIN 56 +#define GPI_SPI1_SSPFSSIN 57 +#define GPI_SPI1_SSPRXD 58 +#define GPI_I2C2_IC_CLK_IN_A 59 +#define GPI_I2C2_IC_DATA_IN_A 60 +#define GPI_UART2_CTS_N 61 +#define GPI_UART2_SIN 62 +#define GPI_SPI2_SSPCLKIN 63 +#define GPI_SPI2_SSPFSSIN 64 +#define GPI_SPI2_SSPRXD 65 +#define GPI_I2C3_IC_CLK_IN_A 66 +#define GPI_I2C3_IC_DATA_IN_A 67 +#define GPI_UART3_SIN 68 +#define GPI_SPI3_SSPCLKIN 69 +#define GPI_SPI3_SSPFSSIN 70 +#define GPI_SPI3_SSPRXD 71 +#define GPI_I2C4_IC_CLK_IN_A 72 +#define GPI_I2C4_IC_DATA_IN_A 73 +#define GPI_UART4_CTS_N 74 +#define GPI_UART4_SIN 75 +#define GPI_SPI4_SSPCLKIN 76 +#define GPI_SPI4_SSPFSSIN 77 +#define GPI_SPI4_SSPRXD 78 +#define GPI_I2C5_IC_CLK_IN_A 79 +#define GPI_I2C5_IC_DATA_IN_A 80 +#define GPI_UART5_CTS_N 81 +#define GPI_UART5_SIN 82 +#define GPI_SPI5_SSPCLKIN 83 +#define GPI_SPI5_SSPFSSIN 84 +#define GPI_SPI5_SSPRXD 85 +#define GPI_I2C6_IC_CLK_IN_A 86 +#define GPI_I2C6_IC_DATA_IN_A 87 +#define GPI_SPI6_SSPCLKIN 88 +#define GPI_SPI6_SSPFSSIN 89 +#define GPI_SPI6_SSPRXD 90 +#define GPI_NONE 91 + +/* sys_iomux syscon */ +#define PADCFG_PAD_GMAC1_MDC_SYSCON 0x24c +#define PADCFG_PAD_GMAC1_MDIO_SYSCON 0x250 +#define PADCFG_PAD_GMAC1_RXD0_SYSCON 0x254 +#define PADCFG_PAD_GMAC1_RXD1_SYSCON 0x258 +#define PADCFG_PAD_GMAC1_RXD2_SYSCON 0x25c +#define PADCFG_PAD_GMAC1_RXD3_SYSCON 0x260 +#define PADCFG_PAD_GMAC1_RXDV_SYSCON 0x264 +#define PADCFG_PAD_GMAC1_RXC_SYSCON 0x268 +#define PADCFG_PAD_GMAC1_TXD0_SYSCON 0x26c +#define PADCFG_PAD_GMAC1_TXD1_SYSCON 0x270 +#define PADCFG_PAD_GMAC1_TXD2_SYSCON 0x274 +#define PADCFG_PAD_GMAC1_TXD3_SYSCON 0x278 +#define PADCFG_PAD_GMAC1_TXEN_SYSCON 0x27c +#define PADCFG_PAD_GMAC1_TXC_SYSCON 0x280 + +/* sys_iomux func sel setting */ +#define SYS_IOMUX_CFGSAIF_668_ADDR 0x29c +#define PAD_GMAC1_RXC_FUNC_SEL_SHIFT 0x0 +#define PAD_GMAC1_RXC_FUNC_SEL_MASK 0x3 +#define PAD_GPIO10_FUNC_SEL_SHIFT 0x2 +#define PAD_GPIO10_FUNC_SEL_MASK 0x1C +#define PAD_GPIO11_FUNC_SEL_SHIFT 0x5 +#define PAD_GPIO11_FUNC_SEL_MASK 0xE0 +#define PAD_GPIO12_FUNC_SEL_SHIFT 0x8 +#define PAD_GPIO12_FUNC_SEL_MASK 0x700 +#define PAD_GPIO13_FUNC_SEL_SHIFT 0xB +#define PAD_GPIO13_FUNC_SEL_MASK 0x3800 +#define PAD_GPIO14_FUNC_SEL_SHIFT 0xE +#define PAD_GPIO14_FUNC_SEL_MASK 0x1C000 +#define PAD_GPIO15_FUNC_SEL_SHIFT 0x11 +#define PAD_GPIO15_FUNC_SEL_MASK 0xE0000 +#define PAD_GPIO16_FUNC_SEL_SHIFT 0x14 +#define PAD_GPIO16_FUNC_SEL_MASK 0x700000 +#define PAD_GPIO17_FUNC_SEL_SHIFT 0x17 +#define PAD_GPIO17_FUNC_SEL_MASK 0x3800000 +#define PAD_GPIO18_FUNC_SEL_SHIFT 0x1A +#define PAD_GPIO18_FUNC_SEL_MASK 0x1C000000 +#define PAD_GPIO19_FUNC_SEL_SHIFT 0x1D +#define PAD_GPIO19_FUNC_SEL_MASK 0xE0000000 +#define SYS_IOMUX_CFGSAIF_672_ADDR 0x2a0 +#define PAD_GPIO20_FUNC_SEL_SHIFT 0x0 +#define PAD_GPIO20_FUNC_SEL_MASK 0x7 +#define PAD_GPIO21_FUNC_SEL_SHIFT 0x3 +#define PAD_GPIO21_FUNC_SEL_MASK 0x38 +#define PAD_GPIO22_FUNC_SEL_SHIFT 0x6 +#define PAD_GPIO22_FUNC_SEL_MASK 0x1C0 +#define PAD_GPIO23_FUNC_SEL_SHIFT 0x9 +#define PAD_GPIO23_FUNC_SEL_MASK 0xE00 +#define PAD_GPIO24_FUNC_SEL_SHIFT 0xC +#define PAD_GPIO24_FUNC_SEL_MASK 0x7000 +#define PAD_GPIO25_FUNC_SEL_SHIFT 0xF +#define PAD_GPIO25_FUNC_SEL_MASK 0x38000 +#define PAD_GPIO26_FUNC_SEL_SHIFT 0x12 +#define PAD_GPIO26_FUNC_SEL_MASK 0x1C0000 +#define PAD_GPIO27_FUNC_SEL_SHIFT 0x15 +#define PAD_GPIO27_FUNC_SEL_MASK 0xE00000 +#define PAD_GPIO28_FUNC_SEL_SHIFT 0x18 +#define PAD_GPIO28_FUNC_SEL_MASK 0x7000000 +#define PAD_GPIO29_FUNC_SEL_SHIFT 0x1B +#define PAD_GPIO29_FUNC_SEL_MASK 0x38000000 +#define SYS_IOMUX_CFGSAIF_676_ADDR 0x2a4 +#define PAD_GPIO30_FUNC_SEL_SHIFT 0x0 +#define PAD_GPIO30_FUNC_SEL_MASK 0x7 +#define PAD_GPIO31_FUNC_SEL_SHIFT 0x3 +#define PAD_GPIO31_FUNC_SEL_MASK 0x38 +#define PAD_GPIO32_FUNC_SEL_SHIFT 0x6 +#define PAD_GPIO32_FUNC_SEL_MASK 0x1C0 +#define PAD_GPIO33_FUNC_SEL_SHIFT 0x9 +#define PAD_GPIO33_FUNC_SEL_MASK 0xE00 +#define PAD_GPIO34_FUNC_SEL_SHIFT 0xC +#define PAD_GPIO34_FUNC_SEL_MASK 0x7000 +#define PAD_GPIO35_FUNC_SEL_SHIFT 0xF +#define PAD_GPIO35_FUNC_SEL_MASK 0x18000 +#define PAD_GPIO36_FUNC_SEL_SHIFT 0x11 +#define PAD_GPIO36_FUNC_SEL_MASK 0xE0000 +#define PAD_GPIO37_FUNC_SEL_SHIFT 0x14 +#define PAD_GPIO37_FUNC_SEL_MASK 0x700000 +#define PAD_GPIO38_FUNC_SEL_SHIFT 0x17 +#define PAD_GPIO38_FUNC_SEL_MASK 0x3800000 +#define PAD_GPIO39_FUNC_SEL_SHIFT 0x1A +#define PAD_GPIO39_FUNC_SEL_MASK 0x1C000000 +#define PAD_GPIO40_FUNC_SEL_SHIFT 0x1D +#define PAD_GPIO40_FUNC_SEL_MASK 0xE0000000 +#define SYS_IOMUX_CFGSAIF_680_ADDR 0x2a8 +#define PAD_GPIO41_FUNC_SEL_SHIFT 0x0 +#define PAD_GPIO41_FUNC_SEL_MASK 0x7 +#define PAD_GPIO42_FUNC_SEL_SHIFT 0x3 +#define PAD_GPIO42_FUNC_SEL_MASK 0x38 +#define PAD_GPIO43_FUNC_SEL_SHIFT 0x6 +#define PAD_GPIO43_FUNC_SEL_MASK 0x1C0 +#define PAD_GPIO44_FUNC_SEL_SHIFT 0x9 +#define PAD_GPIO44_FUNC_SEL_MASK 0xE00 +#define PAD_GPIO45_FUNC_SEL_SHIFT 0xC +#define PAD_GPIO45_FUNC_SEL_MASK 0x7000 +#define PAD_GPIO46_FUNC_SEL_SHIFT 0xF +#define PAD_GPIO46_FUNC_SEL_MASK 0x38000 +#define PAD_GPIO47_FUNC_SEL_SHIFT 0x12 +#define PAD_GPIO47_FUNC_SEL_MASK 0x1C0000 +#define PAD_GPIO48_FUNC_SEL_SHIFT 0x15 +#define PAD_GPIO48_FUNC_SEL_MASK 0xE00000 +#define PAD_GPIO49_FUNC_SEL_SHIFT 0x18 +#define PAD_GPIO49_FUNC_SEL_MASK 0x7000000 +#define PAD_GPIO50_FUNC_SEL_SHIFT 0x1B +#define PAD_GPIO50_FUNC_SEL_MASK 0x38000000 +#define PAD_GPIO51_FUNC_SEL_SHIFT 0x1E +#define PAD_GPIO51_FUNC_SEL_MASK 0xC0000000 +#define SYS_IOMUX_CFGSAIF_684_ADDR 0x2ac +#define PAD_GPIO52_FUNC_SEL_SHIFT 0x0 +#define PAD_GPIO52_FUNC_SEL_MASK 0x3 +#define PAD_GPIO53_FUNC_SEL_SHIFT 0x2 +#define PAD_GPIO53_FUNC_SEL_MASK 0xC +#define PAD_GPIO54_FUNC_SEL_SHIFT 0x4 +#define PAD_GPIO54_FUNC_SEL_MASK 0x30 +#define PAD_GPIO55_FUNC_SEL_SHIFT 0x6 +#define PAD_GPIO55_FUNC_SEL_MASK 0x1C0 +#define PAD_GPIO56_FUNC_SEL_SHIFT 0x9 +#define PAD_GPIO56_FUNC_SEL_MASK 0xE00 +#define PAD_GPIO57_FUNC_SEL_SHIFT 0xC +#define PAD_GPIO57_FUNC_SEL_MASK 0x7000 +#define PAD_GPIO58_FUNC_SEL_SHIFT 0xF +#define PAD_GPIO58_FUNC_SEL_MASK 0x38000 +#define PAD_GPIO59_FUNC_SEL_SHIFT 0x12 +#define PAD_GPIO59_FUNC_SEL_MASK 0x1C0000 +#define PAD_GPIO60_FUNC_SEL_SHIFT 0x15 +#define PAD_GPIO60_FUNC_SEL_MASK 0xE00000 +#define PAD_GPIO61_FUNC_SEL_SHIFT 0x18 +#define PAD_GPIO61_FUNC_SEL_MASK 0x7000000 +#define PAD_GPIO62_FUNC_SEL_SHIFT 0x1B +#define PAD_GPIO62_FUNC_SEL_MASK 0x38000000 +#define PAD_GPIO63_FUNC_SEL_SHIFT 0x1E +#define PAD_GPIO63_FUNC_SEL_MASK 0xC0000000 +#define SYS_IOMUX_CFGSAIF_688_ADDR 0x2b0 +#define PAD_GPIO6_FUNC_SEL_SHIFT 0x0 +#define PAD_GPIO6_FUNC_SEL_MASK 0x3 +#define PAD_GPIO7_FUNC_SEL_SHIFT 0x2 +#define PAD_GPIO7_FUNC_SEL_MASK 0x1C +#define PAD_GPIO8_FUNC_SEL_SHIFT 0x5 +#define PAD_GPIO8_FUNC_SEL_MASK 0xE0 +#define PAD_GPIO9_FUNC_SEL_SHIFT 0x8 +#define PAD_GPIO9_FUNC_SEL_MASK 0x700 +#define ISP_VIN_DVP_DATA0_FUNC_SEL_SHIFT 0xB +#define ISP_VIN_DVP_DATA0_FUNC_SEL_MASK 0x3800 +#define ISP_VIN_DVP_DATA10_FUNC_SEL_SHIFT 0xE +#define ISP_VIN_DVP_DATA10_FUNC_SEL_MASK 0x1C000 +#define ISP_VIN_DVP_DATA11_FUNC_SEL_SHIFT 0x11 +#define ISP_VIN_DVP_DATA11_FUNC_SEL_MASK 0xE0000 +#define ISP_VIN_DVP_DATA1_FUNC_SEL_SHIFT 0x14 +#define ISP_VIN_DVP_DATA1_FUNC_SEL_MASK 0x700000 +#define ISP_VIN_DVP_DATA2_FUNC_SEL_SHIFT 0x17 +#define ISP_VIN_DVP_DATA2_FUNC_SEL_MASK 0x3800000 +#define ISP_VIN_DVP_DATA3_FUNC_SEL_SHIFT 0x1A +#define ISP_VIN_DVP_DATA3_FUNC_SEL_MASK 0x1C000000 +#define ISP_VIN_DVP_DATA4_FUNC_SEL_SHIFT 0x1D +#define ISP_VIN_DVP_DATA4_FUNC_SEL_MASK 0xE0000000 +#define SYS_IOMUX_CFGSAIF_692_ADDR 0x2b4 +#define ISP_VIN_DVP_DATA5_FUNC_SEL_SHIFT 0x0 +#define ISP_VIN_DVP_DATA5_FUNC_SEL_MASK 0x7 +#define ISP_VIN_DVP_DATA6_FUNC_SEL_SHIFT 0x3 +#define ISP_VIN_DVP_DATA6_FUNC_SEL_MASK 0x38 +#define ISP_VIN_DVP_DATA7_FUNC_SEL_SHIFT 0x6 +#define ISP_VIN_DVP_DATA7_FUNC_SEL_MASK 0x1C0 +#define ISP_VIN_DVP_DATA8_FUNC_SEL_SHIFT 0x9 +#define ISP_VIN_DVP_DATA8_FUNC_SEL_MASK 0xE00 +#define ISP_VIN_DVP_DATA9_FUNC_SEL_SHIFT 0xC +#define ISP_VIN_DVP_DATA9_FUNC_SEL_MASK 0x7000 +#define ISP_VIN_DVP_HVALID_FUNC_SEL_SHIFT 0xF +#define ISP_VIN_DVP_HVALID_FUNC_SEL_MASK 0x38000 +#define ISP_VIN_DVP_VVALID_FUNC_SEL_SHIFT 0x12 +#define ISP_VIN_DVP_VVALID_FUNC_SEL_MASK 0x1C0000 +#define DVP_CLK_FUNC_SEL_SHIFT 0x15 +#define DVP_CLK_FUNC_SEL_MASK 0xE00000 + +#define PAD_GMAC1_RXC_FUNC_SEL \ + SYS_IOMUX_CFGSAIF_668_ADDR \ + PAD_GMAC1_RXC_FUNC_SEL_SHIFT \ + PAD_GMAC1_RXC_FUNC_SEL_MASK +#define PAD_GPIO10_FUNC_SEL \ + SYS_IOMUX_CFGSAIF_668_ADDR \ + PAD_GPIO10_FUNC_SEL_SHIFT \ + PAD_GPIO10_FUNC_SEL_MASK +#define PAD_GPIO11_FUNC_SEL \ + SYS_IOMUX_CFGSAIF_668_ADDR \ + PAD_GPIO11_FUNC_SEL_SHIFT \ + PAD_GPIO11_FUNC_SEL_MASK +#define PAD_GPIO12_FUNC_SEL \ + SYS_IOMUX_CFGSAIF_668_ADDR \ + PAD_GPIO12_FUNC_SEL_SHIFT \ + PAD_GPIO12_FUNC_SEL_MASK +#define PAD_GPIO13_FUNC_SEL \ + SYS_IOMUX_CFGSAIF_668_ADDR \ + PAD_GPIO13_FUNC_SEL_SHIFT \ + PAD_GPIO13_FUNC_SEL_MASK +#define PAD_GPIO14_FUNC_SEL \ + SYS_IOMUX_CFGSAIF_668_ADDR \ + PAD_GPIO14_FUNC_SEL_SHIFT \ + PAD_GPIO14_FUNC_SEL_MASK +#define PAD_GPIO15_FUNC_SEL \ + SYS_IOMUX_CFGSAIF_668_ADDR \ + PAD_GPIO15_FUNC_SEL_SHIFT \ + PAD_GPIO15_FUNC_SEL_MASK +#define PAD_GPIO16_FUNC_SEL \ + SYS_IOMUX_CFGSAIF_668_ADDR \ + PAD_GPIO16_FUNC_SEL_SHIFT \ + PAD_GPIO16_FUNC_SEL_MASK +#define PAD_GPIO17_FUNC_SEL \ + SYS_IOMUX_CFGSAIF_668_ADDR \ + PAD_GPIO17_FUNC_SEL_SHIFT \ + PAD_GPIO17_FUNC_SEL_MASK +#define PAD_GPIO18_FUNC_SEL \ + SYS_IOMUX_CFGSAIF_668_ADDR \ + PAD_GPIO18_FUNC_SEL_SHIFT \ + PAD_GPIO18_FUNC_SEL_MASK +#define PAD_GPIO19_FUNC_SEL \ + SYS_IOMUX_CFGSAIF_668_ADDR \ + PAD_GPIO19_FUNC_SEL_SHIFT \ + PAD_GPIO19_FUNC_SEL_MASK +#define PAD_GPIO20_FUNC_SEL \ + SYS_IOMUX_CFGSAIF_672_ADDR \ + PAD_GPIO20_FUNC_SEL_SHIFT \ + PAD_GPIO20_FUNC_SEL_MASK +#define PAD_GPIO21_FUNC_SEL \ + SYS_IOMUX_CFGSAIF_672_ADDR \ + PAD_GPIO21_FUNC_SEL_SHIFT \ + PAD_GPIO21_FUNC_SEL_MASK +#define PAD_GPIO22_FUNC_SEL \ + SYS_IOMUX_CFGSAIF_672_ADDR \ + PAD_GPIO22_FUNC_SEL_SHIFT \ + PAD_GPIO22_FUNC_SEL_MASK +#define PAD_GPIO23_FUNC_SEL \ + SYS_IOMUX_CFGSAIF_672_ADDR \ + PAD_GPIO23_FUNC_SEL_SHIFT \ + PAD_GPIO23_FUNC_SEL_MASK +#define PAD_GPIO24_FUNC_SEL \ + SYS_IOMUX_CFGSAIF_672_ADDR \ + PAD_GPIO24_FUNC_SEL_SHIFT \ + PAD_GPIO24_FUNC_SEL_MASK +#define PAD_GPIO25_FUNC_SEL \ + SYS_IOMUX_CFGSAIF_672_ADDR \ + PAD_GPIO25_FUNC_SEL_SHIFT \ + PAD_GPIO25_FUNC_SEL_MASK +#define PAD_GPIO26_FUNC_SEL \ + SYS_IOMUX_CFGSAIF_672_ADDR \ + PAD_GPIO26_FUNC_SEL_SHIFT \ + PAD_GPIO26_FUNC_SEL_MASK +#define PAD_GPIO27_FUNC_SEL \ + SYS_IOMUX_CFGSAIF_672_ADDR \ + PAD_GPIO27_FUNC_SEL_SHIFT \ + PAD_GPIO27_FUNC_SEL_MASK +#define PAD_GPIO28_FUNC_SEL \ + SYS_IOMUX_CFGSAIF_672_ADDR \ + PAD_GPIO28_FUNC_SEL_SHIFT \ + PAD_GPIO28_FUNC_SEL_MASK +#define PAD_GPIO29_FUNC_SEL \ + SYS_IOMUX_CFGSAIF_672_ADDR \ + PAD_GPIO29_FUNC_SEL_SHIFT \ + PAD_GPIO29_FUNC_SEL_MASK +#define PAD_GPIO30_FUNC_SEL \ + SYS_IOMUX_CFGSAIF_676_ADDR \ + PAD_GPIO30_FUNC_SEL_SHIFT \ + PAD_GPIO30_FUNC_SEL_MASK +#define PAD_GPIO31_FUNC_SEL \ + SYS_IOMUX_CFGSAIF_676_ADDR \ + PAD_GPIO31_FUNC_SEL_SHIFT \ + PAD_GPIO31_FUNC_SEL_MASK +#define PAD_GPIO32_FUNC_SEL \ + SYS_IOMUX_CFGSAIF_676_ADDR \ + PAD_GPIO32_FUNC_SEL_SHIFT \ + PAD_GPIO32_FUNC_SEL_MASK +#define PAD_GPIO33_FUNC_SEL \ + SYS_IOMUX_CFGSAIF_676_ADDR \ + PAD_GPIO33_FUNC_SEL_SHIFT \ + PAD_GPIO33_FUNC_SEL_MASK +#define PAD_GPIO34_FUNC_SEL \ + SYS_IOMUX_CFGSAIF_676_ADDR \ + PAD_GPIO34_FUNC_SEL_SHIFT \ + PAD_GPIO34_FUNC_SEL_MASK +#define PAD_GPIO35_FUNC_SEL \ + SYS_IOMUX_CFGSAIF_676_ADDR \ + PAD_GPIO35_FUNC_SEL_SHIFT \ + PAD_GPIO35_FUNC_SEL_MASK +#define PAD_GPIO36_FUNC_SEL \ + SYS_IOMUX_CFGSAIF_676_ADDR \ + PAD_GPIO36_FUNC_SEL_SHIFT \ + PAD_GPIO36_FUNC_SEL_MASK +#define PAD_GPIO37_FUNC_SEL \ + SYS_IOMUX_CFGSAIF_676_ADDR \ + PAD_GPIO37_FUNC_SEL_SHIFT \ + PAD_GPIO37_FUNC_SEL_MASK +#define PAD_GPIO38_FUNC_SEL \ + SYS_IOMUX_CFGSAIF_676_ADDR \ + PAD_GPIO38_FUNC_SEL_SHIFT \ + PAD_GPIO38_FUNC_SEL_MASK +#define PAD_GPIO39_FUNC_SEL \ + SYS_IOMUX_CFGSAIF_676_ADDR \ + PAD_GPIO39_FUNC_SEL_SHIFT \ + PAD_GPIO39_FUNC_SEL_MASK +#define PAD_GPIO40_FUNC_SEL \ + SYS_IOMUX_CFGSAIF_676_ADDR \ + PAD_GPIO40_FUNC_SEL_SHIFT \ + PAD_GPIO40_FUNC_SEL_MASK +#define PAD_GPIO41_FUNC_SEL \ + SYS_IOMUX_CFGSAIF_680_ADDR \ + PAD_GPIO41_FUNC_SEL_SHIFT \ + PAD_GPIO41_FUNC_SEL_MASK +#define PAD_GPIO42_FUNC_SEL \ + SYS_IOMUX_CFGSAIF_680_ADDR \ + PAD_GPIO42_FUNC_SEL_SHIFT \ + PAD_GPIO42_FUNC_SEL_MASK +#define PAD_GPIO43_FUNC_SEL \ + SYS_IOMUX_CFGSAIF_680_ADDR \ + PAD_GPIO43_FUNC_SEL_SHIFT \ + PAD_GPIO43_FUNC_SEL_MASK +#define PAD_GPIO44_FUNC_SEL \ + SYS_IOMUX_CFGSAIF_680_ADDR \ + PAD_GPIO44_FUNC_SEL_SHIFT \ + PAD_GPIO44_FUNC_SEL_MASK +#define PAD_GPIO45_FUNC_SEL \ + SYS_IOMUX_CFGSAIF_680_ADDR \ + PAD_GPIO45_FUNC_SEL_SHIFT \ + PAD_GPIO45_FUNC_SEL_MASK +#define PAD_GPIO46_FUNC_SEL \ + SYS_IOMUX_CFGSAIF_680_ADDR \ + PAD_GPIO46_FUNC_SEL_SHIFT \ + PAD_GPIO46_FUNC_SEL_MASK +#define PAD_GPIO47_FUNC_SEL \ + SYS_IOMUX_CFGSAIF_680_ADDR \ + PAD_GPIO47_FUNC_SEL_SHIFT \ + PAD_GPIO47_FUNC_SEL_MASK +#define PAD_GPIO48_FUNC_SEL \ + SYS_IOMUX_CFGSAIF_680_ADDR \ + PAD_GPIO48_FUNC_SEL_SHIFT \ + PAD_GPIO48_FUNC_SEL_MASK +#define PAD_GPIO49_FUNC_SEL \ + SYS_IOMUX_CFGSAIF_680_ADDR \ + PAD_GPIO49_FUNC_SEL_SHIFT \ + PAD_GPIO49_FUNC_SEL_MASK +#define PAD_GPIO50_FUNC_SEL \ + SYS_IOMUX_CFGSAIF_680_ADDR \ + PAD_GPIO50_FUNC_SEL_SHIFT \ + PAD_GPIO50_FUNC_SEL_MASK +#define PAD_GPIO51_FUNC_SEL \ + SYS_IOMUX_CFGSAIF_680_ADDR \ + PAD_GPIO51_FUNC_SEL_SHIFT \ + PAD_GPIO51_FUNC_SEL_MASK +#define PAD_GPIO52_FUNC_SEL \ + SYS_IOMUX_CFGSAIF_684_ADDR \ + PAD_GPIO52_FUNC_SEL_SHIFT \ + PAD_GPIO52_FUNC_SEL_MASK +#define PAD_GPIO53_FUNC_SEL \ + SYS_IOMUX_CFGSAIF_684_ADDR \ + PAD_GPIO53_FUNC_SEL_SHIFT \ + PAD_GPIO53_FUNC_SEL_MASK +#define PAD_GPIO54_FUNC_SEL \ + SYS_IOMUX_CFGSAIF_684_ADDR \ + PAD_GPIO54_FUNC_SEL_SHIFT \ + PAD_GPIO54_FUNC_SEL_MASK +#define PAD_GPIO55_FUNC_SEL \ + SYS_IOMUX_CFGSAIF_684_ADDR \ + PAD_GPIO55_FUNC_SEL_SHIFT \ + PAD_GPIO55_FUNC_SEL_MASK +#define PAD_GPIO56_FUNC_SEL \ + SYS_IOMUX_CFGSAIF_684_ADDR \ + PAD_GPIO56_FUNC_SEL_SHIFT \ + PAD_GPIO56_FUNC_SEL_MASK +#define PAD_GPIO57_FUNC_SEL \ + SYS_IOMUX_CFGSAIF_684_ADDR \ + PAD_GPIO57_FUNC_SEL_SHIFT \ + PAD_GPIO57_FUNC_SEL_MASK +#define PAD_GPIO58_FUNC_SEL \ + SYS_IOMUX_CFGSAIF_684_ADDR \ + PAD_GPIO58_FUNC_SEL_SHIFT \ + PAD_GPIO58_FUNC_SEL_MASK +#define PAD_GPIO59_FUNC_SEL \ + SYS_IOMUX_CFGSAIF_684_ADDR \ + PAD_GPIO59_FUNC_SEL_SHIFT \ + PAD_GPIO59_FUNC_SEL_MASK +#define PAD_GPIO60_FUNC_SEL \ + SYS_IOMUX_CFGSAIF_684_ADDR \ + PAD_GPIO60_FUNC_SEL_SHIFT \ + PAD_GPIO60_FUNC_SEL_MASK +#define PAD_GPIO61_FUNC_SEL \ + SYS_IOMUX_CFGSAIF_684_ADDR \ + PAD_GPIO61_FUNC_SEL_SHIFT \ + PAD_GPIO61_FUNC_SEL_MASK +#define PAD_GPIO62_FUNC_SEL \ + SYS_IOMUX_CFGSAIF_684_ADDR \ + PAD_GPIO62_FUNC_SEL_SHIFT \ + PAD_GPIO62_FUNC_SEL_MASK +#define PAD_GPIO63_FUNC_SEL \ + SYS_IOMUX_CFGSAIF_684_ADDR \ + PAD_GPIO63_FUNC_SEL_SHIFT \ + PAD_GPIO63_FUNC_SEL_MASK +#define PAD_GPIO6_FUNC_SEL \ + SYS_IOMUX_CFGSAIF_688_ADDR \ + PAD_GPIO6_FUNC_SEL_SHIFT \ + PAD_GPIO6_FUNC_SEL_MASK +#define PAD_GPIO7_FUNC_SEL \ + SYS_IOMUX_CFGSAIF_688_ADDR \ + PAD_GPIO7_FUNC_SEL_SHIFT \ + PAD_GPIO7_FUNC_SEL_MASK +#define PAD_GPIO8_FUNC_SEL \ + SYS_IOMUX_CFGSAIF_688_ADDR \ + PAD_GPIO8_FUNC_SEL_SHIFT \ + PAD_GPIO8_FUNC_SEL_MASK +#define PAD_GPIO9_FUNC_SEL \ + SYS_IOMUX_CFGSAIF_688_ADDR \ + PAD_GPIO9_FUNC_SEL_SHIFT \ + PAD_GPIO9_FUNC_SEL_MASK +#define ISP_VIN_DVP_DATA0_FUNC_SEL \ + SYS_IOMUX_CFGSAIF_688_ADDR \ + ISP_VIN_DVP_DATA0_FUNC_SEL_SHIFT \ + ISP_VIN_DVP_DATA0_FUNC_SEL_MASK +#define ISP_VIN_DVP_DATA10_FUNC_SEL \ + SYS_IOMUX_CFGSAIF_688_ADDR \ + ISP_VIN_DVP_DATA10_FUNC_SEL_SHIFT \ + ISP_VIN_DVP_DATA10_FUNC_SEL_MASK +#define ISP_VIN_DVP_DATA11_FUNC_SEL \ + SYS_IOMUX_CFGSAIF_688_ADDR \ + ISP_VIN_DVP_DATA11_FUNC_SEL_SHIFT \ + ISP_VIN_DVP_DATA11_FUNC_SEL_MASK +#define ISP_VIN_DVP_DATA1_FUNC_SEL \ + SYS_IOMUX_CFGSAIF_688_ADDR \ + ISP_VIN_DVP_DATA1_FUNC_SEL_SHIFT \ + ISP_VIN_DVP_DATA1_FUNC_SEL_MASK +#define ISP_VIN_DVP_DATA2_FUNC_SEL \ + SYS_IOMUX_CFGSAIF_688_ADDR \ + ISP_VIN_DVP_DATA2_FUNC_SEL_SHIFT \ + ISP_VIN_DVP_DATA2_FUNC_SEL_MASK +#define ISP_VIN_DVP_DATA3_FUNC_SEL \ + SYS_IOMUX_CFGSAIF_688_ADDR \ + ISP_VIN_DVP_DATA3_FUNC_SEL_SHIFT \ + ISP_VIN_DVP_DATA3_FUNC_SEL_MASK +#define ISP_VIN_DVP_DATA4_FUNC_SEL \ + SYS_IOMUX_CFGSAIF_688_ADDR \ + ISP_VIN_DVP_DATA4_FUNC_SEL_SHIFT \ + ISP_VIN_DVP_DATA4_FUNC_SEL_MASK +#define ISP_VIN_DVP_DATA5_FUNC_SEL \ + SYS_IOMUX_CFGSAIF_692_ADDR \ + ISP_VIN_DVP_DATA5_FUNC_SEL_SHIFT \ + ISP_VIN_DVP_DATA5_FUNC_SEL_MASK +#define ISP_VIN_DVP_DATA6_FUNC_SEL \ + SYS_IOMUX_CFGSAIF_692_ADDR \ + ISP_VIN_DVP_DATA6_FUNC_SEL_SHIFT \ + ISP_VIN_DVP_DATA6_FUNC_SEL_MASK +#define ISP_VIN_DVP_DATA7_FUNC_SEL \ + SYS_IOMUX_CFGSAIF_692_ADDR \ + ISP_VIN_DVP_DATA7_FUNC_SEL_SHIFT \ + ISP_VIN_DVP_DATA7_FUNC_SEL_MASK +#define ISP_VIN_DVP_DATA8_FUNC_SEL \ + SYS_IOMUX_CFGSAIF_692_ADDR \ + ISP_VIN_DVP_DATA8_FUNC_SEL_SHIFT \ + ISP_VIN_DVP_DATA8_FUNC_SEL_MASK +#define ISP_VIN_DVP_DATA9_FUNC_SEL \ + SYS_IOMUX_CFGSAIF_692_ADDR \ + ISP_VIN_DVP_DATA9_FUNC_SEL_SHIFT \ + ISP_VIN_DVP_DATA9_FUNC_SEL_MASK +#define ISP_VIN_DVP_HVALID_FUNC_SEL \ + SYS_IOMUX_CFGSAIF_692_ADDR \ + ISP_VIN_DVP_HVALID_FUNC_SEL_SHIFT \ + ISP_VIN_DVP_HVALID_FUNC_SEL_MASK +#define ISP_VIN_DVP_VVALID_FUNC_SEL \ + SYS_IOMUX_CFGSAIF_692_ADDR \ + ISP_VIN_DVP_VVALID_FUNC_SEL_SHIFT \ + ISP_VIN_DVP_VVALID_FUNC_SEL_MASK +#define DVP_CLK_FUNC_SEL \ + SYS_IOMUX_CFGSAIF_692_ADDR \ + DVP_CLK_FUNC_SEL_SHIFT \ + DVP_CLK_FUNC_SEL_MASK + +/* POS[0] */ +#define TESTEN_POS (data) (((data) << 0x0) & 0x1) + +/* SMT[0] POS[1] */ +#define RSTN_SMT (data) (((data) << 0x0) & 0x1) +#define RSTN_POS (data) (((data) << 0x1) & 0x2) + +/* DS[1:0] */ +#define OSC_DS (data) (((data) << 0x0) & 0x3) + +/* sys ioconfig */ +/* IE[0] DS[2:1] PU[3] PD[4] SLEW[5] SMT[6] POS[7] */ +#define GPIO_IE (data) (((data) << 0x0) & 0x1) +#define GPIO_DS (data) (((data) << 0x1) & 0x6) +#define GPIO_PU (data) (((data) << 0x3) & 0x8) +#define GPIO_PD (data) (((data) << 0x4) & 0x7) +#define GPIO_SLEW (data) (((data) << 0x5) & 0x20) +#define GPIO_SMT (data) (((data) << 0x6) & 0x40) +#define GPIO_POS (data) (((data) << 0x7) & 0x80) + +#define IO (config) ((config) & 0xFF) +#define DOUT (dout) ((dout) & 0xFF) +#define DOEN (doen) ((doen) & 0xFF) +#define DIN (din_reg) ((din_reg) & 0xFF) + +/* syscon value */ +#define IO_3_3V 0/* 00: 3.3v */ +#define IO_2_5V 1/* 01: 2.5v */ +#define IO_1_8V 2/* 10: 1.8v */ + +#endif
Signature · 1 line
2.17.1
Re: [PATCH v1 24/30] dt-bindings: pinctrl: Add StarFive JH7110 pinctrl definitions
Quoted 74 lines · Hal Feng
From: Jianlong Huang <[email protected]>
Add pinctrl definitions for StarFive JH7110 SoC.
Signed-off-by Jianlong Huang <[email protected]>Signed-off-by Hal Feng <[email protected]>--- .../pinctrl/pinctrl-starfive-jh7110.h | 931 ++++++++++++++++++ 1 file changed, 931 insertions(+) create mode 100644 include/dt-bindings/pinctrl/pinctrl-starfive-jh7110.hinclude/dt-bindings/pinctrl/pinctrl-starfive-jh7110.h new file +57
-0@@ -0,0 +1,931 @@ +/* SPDX-License-Identifier: GPL-2.0 OR MIT */ +/* +* Copyright (C) 2022 StarFive Technology Co., Ltd. +*/ + +#ifndef __DT_BINDINGS_PINCTRL_STARFIVE_JH7110_H__ +#define __DT_BINDINGS_PINCTRL_STARFIVE_JH7110_H__ + +/* aon_iomux pin */ +#define PAD_TESTEN 0 +#define PAD_RGPIO0 1 +#define PAD_RGPIO1 2 +#define PAD_RGPIO2 3 +#define PAD_RGPIO3 4 +#define PAD_RSTN 5 +#define PAD_GMAC0_MDC 6 +#define PAD_GMAC0_MDIO 7 +#define PAD_GMAC0_RXD0 8 +#define PAD_GMAC0_RXD1 9 +#define PAD_GMAC0_RXD2 10 +#define PAD_GMAC0_RXD3 11 +#define PAD_GMAC0_RXDV 12 +#define PAD_GMAC0_RXC 13 +#define PAD_GMAC0_TXD0 14 +#define PAD_GMAC0_TXD1 15 +#define PAD_GMAC0_TXD2 16 +#define PAD_GMAC0_TXD3 17 +#define PAD_GMAC0_TXEN 18 +#define PAD_GMAC0_TXC 19 + +/* aon_iomux dout */ +#define GPO_AON_CLK_32K_OUT 2 +#define GPO_AON_PTC0_PWM4 3 +#define GPO_AON_PTC0_PWM5 4 +#define GPO_AON_PTC0_PWM6 5 +#define GPO_AON_PTC0_PWM7 6 +#define GPO_AON_CLK_GCLK0 7 +#define GPO_AON_CLK_GCLK1 8 +#define GPO_AON_CLK_GCLK2 9 + +/* aon_iomux doen */ +#define OEN_AON_PTC0_OE_N_4 2 +#define OEN_AON_PTC0_OE_N_5 3 +#define OEN_AON_PTC0_OE_N_6 4 +#define OEN_AON_PTC0_OE_N_7 5 + +/* aon_iomux gin */ +#define GPI_AON_PMU_GPIO_WAKEUP_0 0 +#define GPI_AON_PMU_GPIO_WAKEUP_1 1 +#define GPI_AON_PMU_GPIO_WAKEUP_2 2 +#define GPI_AON_PMU_GPIO_WAKEUP_3 3 + +/* aon_iomux gmac0 syscon */ +#define PADCFG_PAD_GMAC0_MDC_SYSCON 0x58 +#define PADCFG_PAD_GMAC0_MDIO_SYSCON 0x5c +#define PADCFG_PAD_GMAC0_RXD0_SYSCON 0x60 +#define PADCFG_PAD_GMAC0_RXD1_SYSCON 0x64
include/dt-bindings/pinctrl/pinctrl-starfive-jh7110.h line 67
Quoted 10 lines
include/dt-bindings/pinctrl/pinctrl-starfive-jh7110.h new file +10
-0+#define PADCFG_PAD_GMAC0_RXD2_SYSCON 0x68 +#define PADCFG_PAD_GMAC0_RXD3_SYSCON 0x6c +#define PADCFG_PAD_GMAC0_RXDV_SYSCON 0x70 +#define PADCFG_PAD_GMAC0_RXC_SYSCON 0x74 +#define PADCFG_PAD_GMAC0_TXD0_SYSCON 0x78 +#define PADCFG_PAD_GMAC0_TXD1_SYSCON 0x7c +#define PADCFG_PAD_GMAC0_TXD2_SYSCON 0x80 +#define PADCFG_PAD_GMAC0_TXD3_SYSCON 0x84 +#define PADCFG_PAD_GMAC0_TXEN_SYSCON 0x88 +#define PADCFG_PAD_GMAC0_TXC_SYSCON 0x8c
Register values do not belong to bindings. D
include/dt-bindings/pinctrl/pinctrl-starfive-jh7110.h line 72
Quoted 5 lines
include/dt-bindings/pinctrl/pinctrl-starfive-jh7110.h new file +5
-0+ +/* aon_iomux func sel */ +#define AON_IOMUX_CFGSAIF_144_ADDR 0x90 +#define PAD_GMAC0_RXC_FUNC_SEL_SHIFT 0x0 +#define PAD_GMAC0_RXC_FUNC_SEL_MASK 0x3
Register values do not belong to bindings. D
Quoted 352 lines
include/dt-bindings/pinctrl/pinctrl-starfive-jh7110.h new file +352
-0+ +#define PAD_GMAC0_RXC_FUNC_SEL \ + AON_IOMUX_CFGSAIF_144_ADDR \ + PAD_GMAC0_RXC_FUNC_SEL_SHIFT \ + PAD_GMAC0_RXC_FUNC_SEL_MASK + +/* sys_iomux pin */ +#define PAD_GPIO0 0 +#define PAD_GPIO1 1 +#define PAD_GPIO2 2 +#define PAD_GPIO3 3 +#define PAD_GPIO4 4 +#define PAD_GPIO5 5 +#define PAD_GPIO6 6 +#define PAD_GPIO7 7 +#define PAD_GPIO8 8 +#define PAD_GPIO9 9 +#define PAD_GPIO10 10 +#define PAD_GPIO11 11 +#define PAD_GPIO12 12 +#define PAD_GPIO13 13 +#define PAD_GPIO14 14 +#define PAD_GPIO15 15 +#define PAD_GPIO16 16 +#define PAD_GPIO17 17 +#define PAD_GPIO18 18 +#define PAD_GPIO19 19 +#define PAD_GPIO20 20 +#define PAD_GPIO21 21 +#define PAD_GPIO22 22 +#define PAD_GPIO23 23 +#define PAD_GPIO24 24 +#define PAD_GPIO25 25 +#define PAD_GPIO26 26 +#define PAD_GPIO27 27 +#define PAD_GPIO28 28 +#define PAD_GPIO29 29 +#define PAD_GPIO30 30 +#define PAD_GPIO31 31 +#define PAD_GPIO32 32 +#define PAD_GPIO33 33 +#define PAD_GPIO34 34 +#define PAD_GPIO35 35 +#define PAD_GPIO36 36 +#define PAD_GPIO37 37 +#define PAD_GPIO38 38 +#define PAD_GPIO39 39 +#define PAD_GPIO40 40 +#define PAD_GPIO41 41 +#define PAD_GPIO42 42 +#define PAD_GPIO43 43 +#define PAD_GPIO44 44 +#define PAD_GPIO45 45 +#define PAD_GPIO46 46 +#define PAD_GPIO47 47 +#define PAD_GPIO48 48 +#define PAD_GPIO49 49 +#define PAD_GPIO50 50 +#define PAD_GPIO51 51 +#define PAD_GPIO52 52 +#define PAD_GPIO53 53 +#define PAD_GPIO54 54 +#define PAD_GPIO55 55 +#define PAD_GPIO56 56 +#define PAD_GPIO57 57 +#define PAD_GPIO58 58 +#define PAD_GPIO59 59 +#define PAD_GPIO60 60 +#define PAD_GPIO61 61 +#define PAD_GPIO62 62 +#define PAD_GPIO63 63 +#define PAD_SD0_CLK 64 +#define PAD_SD0_CMD 65 +#define PAD_SD0_DATA0 66 +#define PAD_SD0_DATA1 67 +#define PAD_SD0_DATA2 68 +#define PAD_SD0_DATA3 69 +#define PAD_SD0_DATA4 70 +#define PAD_SD0_DATA5 71 +#define PAD_SD0_DATA6 72 +#define PAD_SD0_DATA7 73 +#define PAD_SD0_STRB 74 +#define PAD_GMAC1_MDC 75 +#define PAD_GMAC1_MDIO 76 +#define PAD_GMAC1_RXD0 77 +#define PAD_GMAC1_RXD1 78 +#define PAD_GMAC1_RXD2 79 +#define PAD_GMAC1_RXD3 80 +#define PAD_GMAC1_RXDV 81 +#define PAD_GMAC1_RXC 82 +#define PAD_GMAC1_TXD0 83 +#define PAD_GMAC1_TXD1 84 +#define PAD_GMAC1_TXD2 85 +#define PAD_GMAC1_TXD3 86 +#define PAD_GMAC1_TXEN 87 +#define PAD_GMAC1_TXC 88 +#define PAD_QSPI_SCLK 89 +#define PAD_QSPI_CSn0 90 +#define PAD_QSPI_DATA0 91 +#define PAD_QSPI_DATA1 92 +#define PAD_QSPI_DATA2 93 +#define PAD_QSPI_DATA3 94 + +#define GPO_LOW 0 +#define GPO_HIGH 1 +#define GPO_WAVE511_0_O_UART_TXSOUT 2 +#define GPO_CAN0_CTRL_STBY 3 +#define GPO_CAN0_CTRL_TST_NEXT_BIT 4 +#define GPO_CAN0_CTRL_TST_SAMPLE_POINT 5 +#define GPO_CAN0_CTRL_TXD 6 +#define GPO_USB0_DRIVE_VBUS_IO 7 +#define GPO_QSPI0_CSN1 8 +#define GPO_SPDIF0_SPDIFO 9 +#define GPO_HDMI0_CEC_SDA_OUT 10 +#define GPO_HDMI0_DDC_SCL_OUT 11 +#define GPO_HDMI0_DDC_SDA_OUT 12 +#define GPO_WDT0_WDOGRES 13 +#define GPO_I2C0_IC_CLK_OUT_A 14 +#define GPO_I2C0_IC_DATA_OUT_A 15 +#define GPO_SDIO0_BACK_END_POWER 16 +#define GPO_SDIO0_CARD_POWER_EN 17 +#define GPO_SDIO0_CCMD_OD_PULLUP_EN_N 18 +#define GPO_SDIO0_RST_N 19 +#define GPO_UART0_SOUT 20 +#define GPO_JTAG_DSP_TDO 21 +#define GPO_JTAG_CPU_CERTIFICATION_TDO 22 +#define GPO_PDM_4MIC0_DMIC_MCLK 23 +#define GPO_PTC0_PWM_0 24 +#define GPO_PTC0_PWM_1 25 +#define GPO_PTC0_PWM_2 26 +#define GPO_PTC0_PWM_3 27 +#define GPO_PWMDAC0_LEFT_OUTPUT 28 +#define GPO_PWMDAC0_RIGHT_OUTPUT 29 +#define GPO_SPI0_SSPCLKOUT 30 +#define GPO_SPI0_SSPFSSOUT 31 +#define GPO_SPI0_SSPTXD 32 +#define GPO_GMAC0_CLK_PHY 33 +#define GPO_I2SRX0_BCLK_MST 34 +#define GPO_I2SRX0_LRCK_MST 35 +#define GPO_I2STX0_BCLK_MST 36 +#define GPO_I2STX0_LRCK_MST 37 +#define GPO_CRG0_MCLK_OUT 38 +#define GPO_TDM0_CLK_MST 39 +#define GPO_TDM0_PCM_SYNCOUT 40 +#define GPO_TDM0_PCM_TXD 41 +#define GPO_U7MC_TRACE0_TDATA_0 42 +#define GPO_U7MC_TRACE0_TDATA_1 43 +#define GPO_U7MC_TRACE0_TDATA_2 44 +#define GPO_U7MC_TRACE0_TDATA_3 45 +#define GPO_U7MC_TRACE0_TREF 46 +#define GPO_CAN1_CTRL_STBY 47 +#define GPO_CAN1_CTRL_TST_NEXT_BIT 48 +#define GPO_CAN1_CTRL_TST_SAMPLE_POINT 49 +#define GPO_CAN1_CTRL_TXD 50 +#define GPO_I2C1_IC_CLK_OUT_A 51 +#define GPO_I2C1_IC_DATA_OUT_A 52 +#define GPO_SDIO1_BACK_END_POWER 53 +#define GPO_SDIO1_CARD_POWER_EN 54 +#define GPO_SDIO1_CCLK_OUT 55 +#define GPO_SDIO1_CCMD_OD_PULLUP_EN_N 56 +#define GPO_SDIO1_CCMD_OUT 57 +#define GPO_SDIO1_CDATA_OUT_0 58 +#define GPO_SDIO1_CDATA_OUT_1 59 +#define GPO_SDIO1_CDATA_OUT_2 60 +#define GPO_SDIO1_CDATA_OUT_3 61 +#define GPO_SDIO1_CDATA_OUT_4 62 +#define GPO_SDIO1_CDATA_OUT_5 63 +#define GPO_SDIO1_CDATA_OUT_6 64 +#define GPO_SDIO1_CDATA_OUT_7 65 +#define GPO_SDIO1_RST_N 66 +#define GPO_UART1_RTS_N 67 +#define GPO_UART1_SOUT 68 +#define GPO_I2STX_4CH1_SDO0 69 +#define GPO_I2STX_4CH1_SDO1 70 +#define GPO_I2STX_4CH1_SDO2 71 +#define GPO_I2STX_4CH1_SDO3 72 +#define GPO_SPI1_SSPCLKOUT 73 +#define GPO_SPI1_SSPFSSOUT 74 +#define GPO_SPI1_SSPTXD 75 +#define GPO_I2C2_IC_CLK_OUT_A 76 +#define GPO_I2C2_IC_DATA_OUT_A 77 +#define GPO_UART2_RTS_N 78 +#define GPO_UART2_SOUT 79 +#define GPO_SPI2_SSPCLKOUT 80 +#define GPO_SPI2_SSPFSSOUT 81 +#define GPO_SPI2_SSPTXD 82 +#define GPO_I2C3_IC_CLK_OUT_A 83 +#define GPO_I2C3_IC_DATA_OUT_A 84 +#define GPO_UART3_SOUT 85 +#define GPO_SPI3_SSPCLKOUT 86 +#define GPO_SPI3_SSPFSSOUT 87 +#define GPO_SPI3_SSPTXD 88 +#define GPO_I2C4_IC_CLK_OUT_A 89 +#define GPO_I2C4_IC_DATA_OUT_A 90 +#define GPO_UART4_RTS_N 91 +#define GPO_UART4_SOUT 92 +#define GPO_SPI4_SSPCLKOUT 93 +#define GPO_SPI4_SSPFSSOUT 94 +#define GPO_SPI4_SSPTXD 95 +#define GPO_I2C5_IC_CLK_OUT_A 96 +#define GPO_I2C5_IC_DATA_OUT_A 97 +#define GPO_UART5_RTS_N 98 +#define GPO_UART5_SOUT 99 +#define GPO_SPI5_SSPCLKOUT 100 +#define GPO_SPI5_SSPFSSOUT 101 +#define GPO_SPI5_SSPTXD 102 +#define GPO_I2C6_IC_CLK_OUT_A 103 +#define GPO_I2C6_IC_DATA_OUT_A 104 +#define GPO_SPI6_SSPCLKOUT 105 +#define GPO_SPI6_SSPFSSOUT 106 +#define GPO_SPI6_SSPTXD 107 +#define GPO_NONE 108 + +#define OEN_LOW 0 +#define OEN_HIGH 1 +#define OEN_HDMI0_CEC_SDA_OEN 2 +#define OEN_HDMI0_DDC_SCL_OEN 3 +#define OEN_HDMI0_DDC_SDA_OEN 4 +#define OEN_I2C0_IC_CLK_OE 5 +#define OEN_I2C0_IC_DATA_OE 6 +#define OEN_JTAG_DSP_TDO_OEN 7 +#define OEN_JTAG_CPU_CERTIFICATION_TDO_OE 8 +#define OEN_PTC0_PWM_0_OE_N 9 +#define OEN_PTC0_PWM_1_OE_N 10 +#define OEN_PTC0_PWM_2_OE_N 11 +#define OEN_PTC0_PWM_3_OE_N 12 +#define OEN_SPI0_NSSPCTLOE 13 +#define OEN_SPI0_NSSPOE 14 +#define OEN_TDM0_NPCM_SYNCOE 15 +#define OEN_TDM0_NPCM_TXDOE 16 +#define OEN_I2C1_IC_CLK_OE 17 +#define OEN_I2C1_IC_DATA_OE 18 +#define OEN_SDIO1_CCMD_OUT_EN 19 +#define OEN_SDIO1_CDATA_OUT_EN_0 20 +#define OEN_SDIO1_CDATA_OUT_EN_1 21 +#define OEN_SDIO1_CDATA_OUT_EN_2 22 +#define OEN_SDIO1_CDATA_OUT_EN_3 23 +#define OEN_SDIO1_CDATA_OUT_EN_4 24 +#define OEN_SDIO1_CDATA_OUT_EN_5 25 +#define OEN_SDIO1_CDATA_OUT_EN_6 26 +#define OEN_SDIO1_CDATA_OUT_EN_7 27 +#define OEN_SPI1_NSSPCTLOE 28 +#define OEN_SPI1_NSSPOE 29 +#define OEN_I2C2_IC_CLK_OE 30 +#define OEN_I2C2_IC_DATA_OE 31 +#define OEN_SPI2_NSSPCTLOE 32 +#define OEN_SPI2_NSSPOE 33 +#define OEN_I2C3_IC_CLK_OE 34 +#define OEN_I2C3_IC_DATA_OE 35 +#define OEN_SPI3_NSSPCTLOE 36 +#define OEN_SPI3_NSSPOE 37 +#define OEN_I2C4_IC_CLK_OE 38 +#define OEN_I2C4_IC_DATA_OE 39 +#define OEN_SPI4_NSSPCTLOE 40 +#define OEN_SPI4_NSSPOE 41 +#define OEN_I2C5_IC_CLK_OE 42 +#define OEN_I2C5_IC_DATA_OE 43 +#define OEN_SPI5_NSSPCTLOE 44 +#define OEN_SPI5_NSSPOE 45 +#define OEN_I2C6_IC_CLK_OE 46 +#define OEN_I2C6_IC_DATA_OE 47 +#define OEN_SPI6_NSSPCTLOE 48 +#define OEN_SPI6_NSSPOE 49 +#define OEN_NONE 50 + +#define GPI_WAVE511_0_I_UART_RXSIN 0 +#define GPI_CAN0_CTRL_RXD 1 +#define GPI_USB0_OVERCURRENT_N_IO 2 +#define GPI_SPDIF0_SPDIFI 3 +#define GPI_JTAG_CPU_CERTIFICATION_BYPASS_TRSTN 4 +#define GPI_HDMI0_CEC_SDA_IN 5 +#define GPI_HDMI0_DDC_SCL_IN 6 +#define GPI_HDMI0_DDC_SDA_IN 7 +#define GPI_HDMI0_HPD 8 +#define GPI_I2C0_IC_CLK_IN_A 9 +#define GPI_I2C0_IC_DATA_IN_A 10 +#define GPI_SDIO0_CARD_DETECT_N 11 +#define GPI_SDIO0_CARD_INT_N 12 +#define GPI_SDIO0_CARD_WRITE_PRT 13 +#define GPI_UART0_SIN 14 +#define GPI_JTAG_DSP_TCK 15 +#define GPI_JTAG_DSP_TDI 16 +#define GPI_JTAG_DSP_TMS 17 +#define GPI_JTAG_DSP_TRST_N 18 +#define GPI_JTAG_CPU_CERTIFICATION_TDI 19 +#define GPI_JTAG_CPU_CERTIFICATION_TMS 20 +#define GPI_PDM_4MIC0_DMIC0_DIN 21 +#define GPI_PDM_4MIC0_DMIC1_DIN 22 +#define GPI_I2SRX0_EXT_SDIN0 23 +#define GPI_I2SRX0_EXT_SDIN1 24 +#define GPI_I2SRX0_EXT_SDIN2 25 +#define GPI_SPI0_SSPCLKIN 26 +#define GPI_SPI0_SSPFSSIN 27 +#define GPI_SPI0_SSPRXD 28 +#define GPI_JTAG_CPU_CERTIFICATION_TCK 29 +#define GPI_CRG0_EXT_MCLK 30 +#define GPI_I2SRX0_BCLK_SLV 31 +#define GPI_I2SRX0_LRCK_SLV 32 +#define GPI_I2STX0_BCLK_SLV 33 +#define GPI_I2STX0_LRCK_SLV 34 +#define GPI_TDM0_CLK_SLV 35 +#define GPI_TDM0_PCM_RXD 36 +#define GPI_TDM0_PCM_SYNCIN 37 +#define GPI_CAN1_CTRL_RXD 38 +#define GPI_I2C1_IC_CLK_IN_A 39 +#define GPI_I2C1_IC_DATA_IN_A 40 +#define GPI_SDIO1_CARD_DETECT_N 41 +#define GPI_SDIO1_CARD_INT_N 42 +#define GPI_SDIO1_CARD_WRITE_PRT 43 +#define GPI_SDIO1_CCMD_IN 44 +#define GPI_SDIO1_CDATA_IN_0 45 +#define GPI_SDIO1_CDATA_IN_1 46 +#define GPI_SDIO1_CDATA_IN_2 47 +#define GPI_SDIO1_CDATA_IN_3 48 +#define GPI_SDIO1_CDATA_IN_4 49 +#define GPI_SDIO1_CDATA_IN_5 50 +#define GPI_SDIO1_CDATA_IN_6 51 +#define GPI_SDIO1_CDATA_IN_7 52 +#define GPI_SDIO1_DATA_STROBE 53 +#define GPI_UART1_CTS_N 54 +#define GPI_UART1_SIN 55 +#define GPI_SPI1_SSPCLKIN 56 +#define GPI_SPI1_SSPFSSIN 57 +#define GPI_SPI1_SSPRXD 58 +#define GPI_I2C2_IC_CLK_IN_A 59 +#define GPI_I2C2_IC_DATA_IN_A 60 +#define GPI_UART2_CTS_N 61 +#define GPI_UART2_SIN 62 +#define GPI_SPI2_SSPCLKIN 63 +#define GPI_SPI2_SSPFSSIN 64 +#define GPI_SPI2_SSPRXD 65 +#define GPI_I2C3_IC_CLK_IN_A 66 +#define GPI_I2C3_IC_DATA_IN_A 67 +#define GPI_UART3_SIN 68 +#define GPI_SPI3_SSPCLKIN 69 +#define GPI_SPI3_SSPFSSIN 70 +#define GPI_SPI3_SSPRXD 71 +#define GPI_I2C4_IC_CLK_IN_A 72 +#define GPI_I2C4_IC_DATA_IN_A 73 +#define GPI_UART4_CTS_N 74 +#define GPI_UART4_SIN 75 +#define GPI_SPI4_SSPCLKIN 76 +#define GPI_SPI4_SSPFSSIN 77 +#define GPI_SPI4_SSPRXD 78 +#define GPI_I2C5_IC_CLK_IN_A 79 +#define GPI_I2C5_IC_DATA_IN_A 80 +#define GPI_UART5_CTS_N 81 +#define GPI_UART5_SIN 82 +#define GPI_SPI5_SSPCLKIN 83 +#define GPI_SPI5_SSPFSSIN 84 +#define GPI_SPI5_SSPRXD 85 +#define GPI_I2C6_IC_CLK_IN_A 86
include/dt-bindings/pinctrl/pinctrl-starfive-jh7110.h line 434
Quoted 10 lines
include/dt-bindings/pinctrl/pinctrl-starfive-jh7110.h new file +10
-0+#define GPI_I2C6_IC_DATA_IN_A 87 +#define GPI_SPI6_SSPCLKIN 88 +#define GPI_SPI6_SSPFSSIN 89 +#define GPI_SPI6_SSPRXD 90 +#define GPI_NONE 91 + +/* sys_iomux syscon */ +#define PADCFG_PAD_GMAC1_MDC_SYSCON 0x24c +#define PADCFG_PAD_GMAC1_MDIO_SYSCON 0x250 +#define PADCFG_PAD_GMAC1_RXD0_SYSCON 0x254
Register values do not belong to bindings. Drop everything also below.
include/dt-bindings/pinctrl/pinctrl-starfive-jh7110.h line 440
Quoted 6 lines
include/dt-bindings/pinctrl/pinctrl-starfive-jh7110.h new file +6
-0+#define PADCFG_PAD_GMAC1_RXD1_SYSCON 0x258 +#define PADCFG_PAD_GMAC1_RXD2_SYSCON 0x25c +#define PADCFG_PAD_GMAC1_RXD3_SYSCON 0x260 +#define PADCFG_PAD_GMAC1_RXDV_SYSCON 0x264 +#define PADCFG_PAD_GMAC1_RXC_SYSCON 0x268 +#define PADCFG_PAD_GMAC1_TXD0_SYSCON 0x26c
Best regards,
Krzysztof
_______________________________________________
linux-riscv mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-riscv
PATCH 25/30 dt-bindings: pinctrl: Add StarFive JH7110 pinctrl bindings
In reply to Hal FengFrom: Jianlong Huang <[email protected]>
Add pinctrl bindings for StarFive JH7110 SoC.
--- .../pinctrl/starfive,jh7110-pinctrl.yaml | 202 ++++++++++++++++++ 1 file changed, 202 insertions(+) create mode 100644 Documentation/devicetree/bindings/pinctrl/starfive,jh7110-pinctrl.yaml
Documentation/devicetree/bindings/pinctrl/starfive,jh7110-pinctrl.yaml new file +202 -0
@@ -0,0 +1,202 @@ +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/pinctrl/starfive,jh7110-pinctrl.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: StarFive JH7110 Pin Controller Device Tree Bindings + +description: | + Bindings for the JH7110 RISC-V SoC from StarFive Technology Ltd. + +maintainers: + - Jianlong Huang <[email protected]> + +properties: + compatible: + enum: + - starfive,jh7110-sys-pinctrl + - starfive,jh7110-aon-pinctrl + + reg: + minItems: 2 + maxItems: 2 + + reg-names: + items: + - const: control + + clocks: + maxItems: 1 + + resets: + maxItems: 1 + + "#gpio-cells": + const: 2 + + interrupts: + maxItems: 1 + description: The GPIO parent interrupt. + + interrupt-controller: true + + "#interrupt-cells": + const: 2 + + ngpios: + enum: + - 64 + - 4 + +required: + - compatible + - reg + - reg-names + - clocks + - "#gpio-cells" + - interrupts + - interrupt-controller + - "#interrupt-cells" + +patternProperties: + '-[0-9]+$': + type: object + patternProperties: + '-pins$': + type: object + description: | + A pinctrl node should contain at least one subnode representing the + pinctrl groups available on the machine. Each subnode will list the + pins it needs, and how they should be configured, with regard to + muxer configuration, system signal configuration, pin groups for + vin/vout module, pin voltage, mux functions for output, mux functions + for output enable, mux functions for input. + + properties: + starfive,pins: + description: | + The list of pin identifiers that properties in the node apply to. + This should be set using the PAD_GPIOX macros. + This has to be specified. + $ref: /schemas/types.yaml#/definitions/uint32 + minimum: 0 + maximum: 63 + + starfive,pinmux: + description: | + The list of GPIOs and their mux functions that properties in the + node apply to. This should be set using the PAD_GPIOX_FUNC_SEL + macro with its value. + This is optional for some pins. + The value of PAD_GPIOX_FUNC_SEL macro can selects: + 0: GPIOX mux function 0, + 1: GPIOX mux function 1, + 2: GPIOX mux function 2. + + starfive,pin-ioconfig: + description: | + This is used to configure the core settings of system signals. + The combination of GPIO_IE or GPIO_DS or GPIO_PU or GPIO_PD or + GPIO_SLEW or GPIO_SMT or GPIO_POS. + $ref: /schemas/types.yaml#/definitions/uint32 + + starfive,padmux: + description: | + The padmux is for vin/vout module to select pin groups. + 0: vout will be set at pins from PAD_GPIO7 to PAD_GPIO34, + when PAD_GPIOX_FUNC_SEL is set as 1. + vin will be set at pins from PAD_GPIO6 to PAD_GPIO20. + when PAD_GPIOX_FUNC_SEL is set as 2. + 1: vout will be set at pins from PAD_GPIO36 to PAD_GPIO63, + when PAD_GPIOX_FUNC_SEL is set as 1. + vin will be set at pins from PAD_GPIO21 to PAD_GPIO35. + when PAD_GPIOX_FUNC_SEL is set as 2. + 2: vin will be set at pins from PAD_GPIO36 to PAD_GPIO50, + when PAD_GPIOX_FUNC_SEL is set as 2 + $ref: /schemas/types.yaml#/definitions/uint32 + enum: [0, 1, 2] + + starfive,pin-syscon: + description: | + This is used to set pin voltage, + 0: 3.3V, 1: 2.5V, 2: 1.8V. + $ref: /schemas/types.yaml#/definitions/uint32 + enum: [0, 1, 2] + + starfive,pin-gpio-dout: + description: | + This is used to set their mux functions for output. + This should be set using the GPO_XXX macro, + such as GPO_LOW, GPO_UART0_SOUT. + $ref: /schemas/types.yaml#/definitions/uint32 + minimum: 0 + maximum: 107 + + starfive,pin-gpio-doen: + description: | + This is used to set their mux functions for output enable. + This should be set using the OEN_XXX macro, + such as OEN_LOW, OEN_I2C0_IC_CLK_OE. + $ref: /schemas/types.yaml#/definitions/uint32 + minimum: 0 + maximum: 49 + + starfive,pin-gpio-din: + description: | + This is used to set their mux functions for input. + This should be set using the GPI_XXX macro, + such as GPI_CAN0_CTRL_RXD, GPI_I2C0_IC_CLK_IN_A. + $ref: /schemas/types.yaml#/definitions/uint32 + minimum: 0 + maximum: 90 + + additionalProperties: false + + additionalProperties: false + +additionalProperties: false + +examples: + - | + #include <dt-bindings/clock/starfive-jh7110-sys.h> + #include <dt-bindings/reset/starfive-jh7110.h> + #include <dt-bindings/pinctrl/pinctrl-starfive-jh7110.h> + + gpio: gpio@13040000 { + compatible = "starfive,jh7110-sys-pinctrl"; + reg = <0x0 0x13040000 0x0 0x10000>; + reg-names = "control"; + clocks = <&clkgen JH7110_SYS_IOMUX_PCLK>; + resets = <&rstgen RSTN_U0_SYS_IOMUX_PRESETN>; + interrupts = <86>; + interrupt-controller; + #gpio-cells = <2>; + ngpios = <64>; + status = "okay"; + + uart0_pins: uart0-pins { + uart0-pins-tx { + starfive,pins = <PAD_GPIO5>; + starfive,pin-ioconfig = <IO(GPIO_IE(1) | GPIO_DS(3))>; + starfive,pin-gpio-dout = <GPO_UART0_SOUT>; + starfive,pin-gpio-doen = <OEN_LOW>; + }; + + uart0-pins-rx { + starfive,pins = <PAD_GPIO6>; + starfive,pinmux = <PAD_GPIO6_FUNC_SEL 0>; + starfive,pin-ioconfig = <IO(GPIO_IE(1) | GPIO_PU(1))>; + starfive,pin-gpio-doen = <OEN_HIGH>; + starfive,pin-gpio-din = <GPI_UART0_SIN>; + }; + }; + }; + + &uart0 { + pinctrl-names = "default"; + pinctrl-0 = <&uart0_pins>; + status = "okay"; + }; + +...
Signature · 1 line
2.17.1
Re: [PATCH v1 25/30] dt-bindings: pinctrl: Add StarFive JH7110 pinctrl bindings
Quoted 26 lines · Hal Feng
From: Jianlong Huang <[email protected]>
Add pinctrl bindings for StarFive JH7110 SoC.
Signed-off-by Jianlong Huang <[email protected]>Signed-off-by Hal Feng <[email protected]>--- .../pinctrl/starfive,jh7110-pinctrl.yaml | 202 ++++++++++++++++++ 1 file changed, 202 insertions(+) create mode 100644 Documentation/devicetree/bindings/pinctrl/starfive,jh7110-pinctrl.yamlDocumentation/devicetree/bindings/pinctrl/starfive,jh7110-pinctrl.yaml new file +9
-0@@ -0,0 +1,202 @@ +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/pinctrl/starfive,jh7110-pinctrl.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: StarFive JH7110 Pin Controller Device Tree Bindings + +description: |
Documentation/devicetree/bindings/pinctrl/starfive,jh7110-pinctrl.yaml line 19
Quoted 10 lines
Documentation/devicetree/bindings/pinctrl/starfive,jh7110-pinctrl.yaml new file +10
-0+ Bindings for the JH7110 RISC-V SoC from StarFive Technology Ltd. + +maintainers: + - Jianlong Huang <[email protected]> + +properties: + compatible: + enum: + - starfive,jh7110-sys-pinctrl + - starfive,jh7110-aon-pinctrl
Wrong indentation.
Does not look like you tested the bindings. Please run make dt_binding_check (see Documentation/devicetree/bindings/writing-schema.rst for instructions).
Documentation/devicetree/bindings/pinctrl/starfive,jh7110-pinctrl.yaml line 22
Quoted 3 lines
Documentation/devicetree/bindings/pinctrl/starfive,jh7110-pinctrl.yaml new file +3
-0+ + reg: + minItems: 2
No need.
Documentation/devicetree/bindings/pinctrl/starfive,jh7110-pinctrl.yaml line 27
Quoted 5 lines
Documentation/devicetree/bindings/pinctrl/starfive,jh7110-pinctrl.yaml new file +5
-0+ maxItems: 2 + + reg-names: + items: + - const: control
This does not match reg at all. Again - not tested.
Quoted 13 lines
Documentation/devicetree/bindings/pinctrl/starfive,jh7110-pinctrl.yaml new file +13
-0+ + clocks: + maxItems: 1 + + resets: + maxItems: 1 + + "#gpio-cells": + const: 2 + + interrupts: + maxItems: 1 + description: The GPIO parent interrupt.
Documentation/devicetree/bindings/pinctrl/starfive,jh7110-pinctrl.yaml line 50
Quoted 10 lines
Documentation/devicetree/bindings/pinctrl/starfive,jh7110-pinctrl.yaml new file +10
-0+ + interrupt-controller: true + + "#interrupt-cells": + const: 2 + + ngpios: + enum: + - 64 + - 4
Wrong indentation. Increasing order.
Documentation/devicetree/bindings/pinctrl/starfive,jh7110-pinctrl.yaml line 62
Quoted 12 lines
Documentation/devicetree/bindings/pinctrl/starfive,jh7110-pinctrl.yaml new file +12
-0+ +required: + - compatible + - reg + - reg-names + - clocks + - "#gpio-cells" + - interrupts + - interrupt-controller + - "#interrupt-cells" + +patternProperties:
This goes before required block
Documentation/devicetree/bindings/pinctrl/starfive,jh7110-pinctrl.yaml line 63
Quoted 1 line
Documentation/devicetree/bindings/pinctrl/starfive,jh7110-pinctrl.yaml new file +1
-0+ '-[0-9]+$':
Too loose pattern. Need some more specific pattern. What do you exactly match here?
Missing description.
Quoted 4 lines
Documentation/devicetree/bindings/pinctrl/starfive,jh7110-pinctrl.yaml new file +4
-0+ type: object + patternProperties: + '-pins$': + type: object
Documentation/devicetree/bindings/pinctrl/starfive,jh7110-pinctrl.yaml line 77
Quoted 10 lines
Documentation/devicetree/bindings/pinctrl/starfive,jh7110-pinctrl.yaml new file +10
-0+ description: | + A pinctrl node should contain at least one subnode representing the + pinctrl groups available on the machine. Each subnode will list the + pins it needs, and how they should be configured, with regard to + muxer configuration, system signal configuration, pin groups for + vin/vout module, pin voltage, mux functions for output, mux functions + for output enable, mux functions for input. + + properties: + starfive,pins:
No, use generic pinctrl bindings.
Documentation/devicetree/bindings/pinctrl/starfive,jh7110-pinctrl.yaml line 86
Quoted 9 lines
Documentation/devicetree/bindings/pinctrl/starfive,jh7110-pinctrl.yaml new file +9
-0+ description: | + The list of pin identifiers that properties in the node apply to. + This should be set using the PAD_GPIOX macros. + This has to be specified. + $ref: /schemas/types.yaml#/definitions/uint32 + minimum: 0 + maximum: 63 + + starfive,pinmux:
No, use generic pinctrl bindings.
Quoted 31 lines
Documentation/devicetree/bindings/pinctrl/starfive,jh7110-pinctrl.yaml new file +31
-0+ description: | + The list of GPIOs and their mux functions that properties in the + node apply to. This should be set using the PAD_GPIOX_FUNC_SEL + macro with its value. + This is optional for some pins. + The value of PAD_GPIOX_FUNC_SEL macro can selects: + 0: GPIOX mux function 0, + 1: GPIOX mux function 1, + 2: GPIOX mux function 2. + + starfive,pin-ioconfig: + description: | + This is used to configure the core settings of system signals. + The combination of GPIO_IE or GPIO_DS or GPIO_PU or GPIO_PD or + GPIO_SLEW or GPIO_SMT or GPIO_POS. + $ref: /schemas/types.yaml#/definitions/uint32 + + starfive,padmux: + description: | + The padmux is for vin/vout module to select pin groups. + 0: vout will be set at pins from PAD_GPIO7 to PAD_GPIO34, + when PAD_GPIOX_FUNC_SEL is set as 1. + vin will be set at pins from PAD_GPIO6 to PAD_GPIO20. + when PAD_GPIOX_FUNC_SEL is set as 2. + 1: vout will be set at pins from PAD_GPIO36 to PAD_GPIO63, + when PAD_GPIOX_FUNC_SEL is set as 1. + vin will be set at pins from PAD_GPIO21 to PAD_GPIO35. + when PAD_GPIOX_FUNC_SEL is set as 2. + 2: vin will be set at pins from PAD_GPIO36 to PAD_GPIO50, + when PAD_GPIOX_FUNC_SEL is set as 2 + $ref: /schemas/types.yaml#/definitions/uint32
Documentation/devicetree/bindings/pinctrl/starfive,jh7110-pinctrl.yaml line 127
Quoted 10 lines
Documentation/devicetree/bindings/pinctrl/starfive,jh7110-pinctrl.yaml new file +10
-0+ enum: [0, 1, 2] + + starfive,pin-syscon: + description: | + This is used to set pin voltage, + 0: 3.3V, 1: 2.5V, 2: 1.8V. + $ref: /schemas/types.yaml#/definitions/uint32 + enum: [0, 1, 2] + + starfive,pin-gpio-dout:
No, use generic pinctrl bindings.
Documentation/devicetree/bindings/pinctrl/starfive,jh7110-pinctrl.yaml line 136
Quoted 9 lines
Documentation/devicetree/bindings/pinctrl/starfive,jh7110-pinctrl.yaml new file +9
-0+ description: | + This is used to set their mux functions for output. + This should be set using the GPO_XXX macro, + such as GPO_LOW, GPO_UART0_SOUT. + $ref: /schemas/types.yaml#/definitions/uint32 + minimum: 0 + maximum: 107 + + starfive,pin-gpio-doen:
No, use generic pinctrl bindings.
Documentation/devicetree/bindings/pinctrl/starfive,jh7110-pinctrl.yaml line 145
Quoted 9 lines
Documentation/devicetree/bindings/pinctrl/starfive,jh7110-pinctrl.yaml new file +9
-0+ description: | + This is used to set their mux functions for output enable. + This should be set using the OEN_XXX macro, + such as OEN_LOW, OEN_I2C0_IC_CLK_OE. + $ref: /schemas/types.yaml#/definitions/uint32 + minimum: 0 + maximum: 49 + + starfive,pin-gpio-din:
No, use generic pinctrl bindings.
Documentation/devicetree/bindings/pinctrl/starfive,jh7110-pinctrl.yaml line 158
Quoted 13 lines
Documentation/devicetree/bindings/pinctrl/starfive,jh7110-pinctrl.yaml new file +13
-0+ description: | + This is used to set their mux functions for input. + This should be set using the GPI_XXX macro, + such as GPI_CAN0_CTRL_RXD, GPI_I2C0_IC_CLK_IN_A. + $ref: /schemas/types.yaml#/definitions/uint32 + minimum: 0 + maximum: 90 + + additionalProperties: false + + additionalProperties: false + +additionalProperties: false
Missing allof to generic pinctrl bindings.
Quoted 10 lines
Documentation/devicetree/bindings/pinctrl/starfive,jh7110-pinctrl.yaml new file +10
-0+ +examples: + - | + #include <dt-bindings/clock/starfive-jh7110-sys.h> + #include <dt-bindings/reset/starfive-jh7110.h> + #include <dt-bindings/pinctrl/pinctrl-starfive-jh7110.h> + + gpio: gpio@13040000 { + compatible = "starfive,jh7110-sys-pinctrl"; + reg = <0x0 0x13040000 0x0 0x10000>;
Documentation/devicetree/bindings/pinctrl/starfive,jh7110-pinctrl.yaml line 178
Quoted 10 lines
Documentation/devicetree/bindings/pinctrl/starfive,jh7110-pinctrl.yaml new file +10
-0+ reg-names = "control"; + clocks = <&clkgen JH7110_SYS_IOMUX_PCLK>; + resets = <&rstgen RSTN_U0_SYS_IOMUX_PRESETN>; + interrupts = <86>; + interrupt-controller; + #gpio-cells = <2>; + ngpios = <64>; + status = "okay"; + + uart0_pins: uart0-pins {
Explain me please how it can possible match your pattern: '-[0-9]+$':
You really wrote something which was not tested and cannot work.
Quoted 11 lines
Documentation/devicetree/bindings/pinctrl/starfive,jh7110-pinctrl.yaml new file +11
-0+ uart0-pins-tx { + starfive,pins = <PAD_GPIO5>; + starfive,pin-ioconfig = <IO(GPIO_IE(1) | GPIO_DS(3))>; + starfive,pin-gpio-dout = <GPO_UART0_SOUT>; + starfive,pin-gpio-doen = <OEN_LOW>; + }; + + uart0-pins-rx { + starfive,pins = <PAD_GPIO6>; + starfive,pinmux = <PAD_GPIO6_FUNC_SEL 0>; + starfive,pin-ioconfig = <IO(GPIO_IE(1) | GPIO_PU(1))>;
Documentation/devicetree/bindings/pinctrl/starfive,jh7110-pinctrl.yaml line 199
Quoted 10 lines
Documentation/devicetree/bindings/pinctrl/starfive,jh7110-pinctrl.yaml new file +10
-0+ starfive,pin-gpio-doen = <OEN_HIGH>; + starfive,pin-gpio-din = <GPI_UART0_SIN>; + }; + }; + }; + + &uart0 { + pinctrl-names = "default"; + pinctrl-0 = <&uart0_pins>; + status = "okay";
Drop, obvious.
Documentation/devicetree/bindings/pinctrl/starfive,jh7110-pinctrl.yaml line 202
Quoted 3 lines
Documentation/devicetree/bindings/pinctrl/starfive,jh7110-pinctrl.yaml new file +3
-0+ }; + +...
Best regards,
Krzysztof
_______________________________________________
linux-riscv mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-riscv
Rob Herring
maintainerRe: [PATCH v1 25/30] dt-bindings: pinctrl: Add StarFive JH7110 pinctrl bindings
In reply to Hal FengQuoted 11 lines · Hal Feng
From: Jianlong Huang <[email protected]>
Add pinctrl bindings for StarFive JH7110 SoC.
Signed-off-by Jianlong Huang <[email protected]>Signed-off-by Hal Feng <[email protected]>--- .../pinctrl/starfive,jh7110-pinctrl.yaml | 202 ++++++++++++++++++ 1 file changed, 202 insertions(+) create mode 100644 Documentation/devicetree/bindings/pinctrl/starfive,jh7110-pinctrl.yaml
My bot found errors running 'make DT_CHECKER_FLAGS=-m dt_binding_check' on your patch (DT_CHECKER_FLAGS is new in v5.13):
yamllint warnings/errors:./Documentation/devicetree/bindings/pinctrl/starfive,jh7110-pinctrl.yaml:18:5: [warning] wrong indentation: expected 6 but found 4 (indentation) ./Documentation/devicetree/bindings/pinctrl/starfive,jh7110-pinctrl.yaml:49:5: [warning] wrong indentation: expected 6 but found 4 (indentation)
dtschema/dtc warnings/errors:./Documentation/devicetree/bindings/pinctrl/starfive,jh7110-pinctrl.yaml: error checking schema file /builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/pinctrl/starfive,jh7110-pinctrl.yaml: ignoring, error in schema: patternProperties: -[0-9]+$: patternProperties: -pins$: properties: starfive,pinmux Documentation/devicetree/bindings/pinctrl/starfive,jh7110-pinctrl.example.dts:21:18: fatal error: dt-bindings/clock/starfive-jh7110-sys.h: No such file or directory
21 | #include <dt-bindings/clock/starfive-jh7110-sys.h>
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
make[1]: *** [scripts/Makefile.lib:384: Documentation/devicetree/bindings/pinctrl/starfive,jh7110-pinctrl.example.dtb] Error 1 make[1]: *** Waiting for unfinished jobs....
make: *** [Makefile:1420: dt_binding_check] Error 2
doc reference errors (make refcheckdocs):
See https://patchwork.ozlabs.org/patch/
This check can fail if there are any dependencies. The base for a patch series is generally the most recent rc1.
If you already ran 'make dt_binding_check' and didn't see the above error(s), then make sure 'yamllint' is installed and dt-schema is up to date:
pip3 install dtschema --upgrade
Please check and re-submit.
Re: [PATCH v1 25/30] dt-bindings: pinctrl: Add StarFive JH7110 pinctrl bindings
In reply to Hal FengQuoted 108 lines · 在 2022-09-30星期五的 15:38 +0800,Hal Feng写道:
From: Jianlong Huang <[email protected]>
Add pinctrl bindings for StarFive JH7110 SoC.
Signed-off-by Jianlong Huang <[email protected]>Signed-off-by Hal Feng <[email protected]>---
.../pinctrl/starfive,jh7110-pinctrl.yaml | 202
++++++++++++++++++1 file changed, 202 insertions(+)create mode 100644
Documentation/devicetree/bindings/pinctrl/starfive,jh7110-pinctrl.yamldiff --git a/Documentation/devicetree/bindings/pinctrl/starfive,jh7110-
pinctrl.yamlb/Documentation/devicetree/bindings/pinctrl/starfive,jh7110-pinctrl.yaml
new file mode 100644
index 000000000000..482012ad8a14Documentation/devicetree/bindings/pinctrl/starfive,jh7110- new file +0
-0
pinctrl.yamlDocumentation/devicetree/bindings/pinctrl/starfive,jh7110- new file +4
-0@@ -0,0 +1,202 @@ +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause +%YAML 1.2 +--- +$id:http://devicetree.org/schemas/pinctrl/starfive,jh7110-pinctrl.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#Documentation/devicetree/bindings/pinctrl/starfive,jh7110- new file +64
-0+ +title: StarFive JH7110 Pin Controller Device Tree Bindings + +description: | + Bindings for the JH7110 RISC-V SoC from StarFive Technology Ltd. + +maintainers: + - Jianlong Huang <[email protected]> + +properties: + compatible: + enum: + - starfive,jh7110-sys-pinctrl + - starfive,jh7110-aon-pinctrl + + reg: + minItems: 2 + maxItems: 2 + + reg-names: + items: + - const: control + + clocks: + maxItems: 1 + + resets: + maxItems: 1 + + "#gpio-cells": + const: 2 + + interrupts: + maxItems: 1 + description: The GPIO parent interrupt. + + interrupt-controller: true + + "#interrupt-cells": + const: 2 + + ngpios: + enum: + - 64 + - 4 + +required: + - compatible + - reg + - reg-names + - clocks + - "#gpio-cells" + - interrupts + - interrupt-controller + - "#interrupt-cells" + +patternProperties: + '-[0-9]+$': + type: object + patternProperties: + '-pins$': + type: object + description: | + A pinctrl node should contain at least one subnoderepresenting the
+ pinctrl groups available on the machine. Each subnode will list the
+ pins it needs, and how they should be configured, with regard to
+ muxer configuration, system signal configuration, pin groups for
+ vin/vout module, pin voltage, mux functions for output, mux functions
+ for output enable, mux functions for input.
+
+ properties:
+ starfive,pins:
Quoted 8 lines
+ description: |
+ The list of pin identifiers that properties in the node apply to.
+ This should be set using thePAD_GPIOXmacros. + This has to be specified.
+ $ref: /schemas/types.yaml#/definitions/uint32 + minimum: 0
+ maximum: 63
Hi,
I am adapting for Pine64's Star64 board, which utilizes a JH7110 SoC.
It does not features a USB overcurrent pin as GPIO, thus this pin needs to be routed in PIO controller to fixed 1 (by writing 1 to SYS_IOMUX_CFGSAIF__SYSCFG_FMUX_32[22:16]).
I think this kind of situation needs to be considered as part of DT binding.
BTW if you have any difficulty refactoring the DT binding to standard pinconf one, I am free to provide help.
Thanks,
Icenowy Zheng
Quoted 119 lines
+
+ starfive,pinmux:
+ description: |
+ The list of GPIOs and their mux functions that properties in the
+ node apply to. This should be set using thePAD_GPIOX_FUNC_SEL
+ macro with its value.
+ This is optional for some pins.
+ The value ofPAD_GPIOX_FUNC_SELmacro can selects:
+ 0: GPIOX mux function 0,
+ 1: GPIOX mux function 1,
+ 2: GPIOX mux function 2.
+
+ starfive,pin-ioconfig:
+ description: |
+ This is used to configure the core settings of system signals.
+ The combination ofGPIO_IEorGPIO_DSorGPIO_PUorGPIO_PDor
+GPIO_SLEWorGPIO_SMTorGPIO_POS.
+ $ref: /schemas/types.yaml#/definitions/uint32 +
+ starfive,padmux:
+ description: |
+ The padmux is for vin/vout module to select pin groups.
+ 0: vout will be set at pins fromPAD_GPIO7toPAD_GPIO34,
+ whenPAD_GPIOX_FUNC_SELis set as 1.
+ vin will be set at pins fromPAD_GPIO6toPAD_GPIO20.
+ whenPAD_GPIOX_FUNC_SELis set as 2.
+ 1: vout will be set at pins fromPAD_GPIO36toPAD_GPIO63,
+ whenPAD_GPIOX_FUNC_SELis set as 1.
+ vin will be set at pins fromPAD_GPIO21toPAD_GPIO35.
+ whenPAD_GPIOX_FUNC_SELis set as 2.
+ 2: vin will be set at pins fromPAD_GPIO36toPAD_GPIO50,
+ whenPAD_GPIOX_FUNC_SELis set as 2
+ $ref: /schemas/types.yaml#/definitions/uint32 + enum: [0, 1, 2]Documentation/devicetree/bindings/pinctrl/starfive,jh7110- new file +20
-0+ + starfive,pin-syscon: + description: | + This is used to set pin voltage, + 0: 3.3V, 1: 2.5V, 2: 1.8V. + $ref: /schemas/types.yaml#/definitions/uint32 + enum: [0, 1, 2] + + starfive,pin-gpio-dout: + description: | + This is used to set their mux functions for output. + This should be set using the GPO_XXX macro, + such as GPO_LOW, GPO_UART0_SOUT. + $ref: /schemas/types.yaml#/definitions/uint32 + minimum: 0 + maximum: 107 + + starfive,pin-gpio-doen: + description: | + This is used to set their mux functions for outputenable.
+ This should be set using theOEN_XXXmacro, + such asOEN_LOW,OEN_I2C0_IC_CLK_OE. + $ref: /schemas/types.yaml#/definitions/uint32 + minimum: 0
+ maximum: 49Documentation/devicetree/bindings/pinctrl/starfive,jh7110- new file +49
-0+ + starfive,pin-gpio-din: + description: | + This is used to set their mux functions for input. + This should be set using the GPI_XXX macro, + such as GPI_CAN0_CTRL_RXD, GPI_I2C0_IC_CLK_IN_A. + $ref: /schemas/types.yaml#/definitions/uint32 + minimum: 0 + maximum: 90 + + additionalProperties: false + + additionalProperties: false + +additionalProperties: false + +examples: + - | + #include <dt-bindings/clock/starfive-jh7110-sys.h> + #include <dt-bindings/reset/starfive-jh7110.h> + #include <dt-bindings/pinctrl/pinctrl-starfive-jh7110.h> + + gpio: gpio@13040000 { + compatible = "starfive,jh7110-sys-pinctrl"; + reg = <0x0 0x13040000 0x0 0x10000>; + reg-names = "control"; + clocks = <&clkgen JH7110_SYS_IOMUX_PCLK>; + resets = <&rstgen RSTN_U0_SYS_IOMUX_PRESETN>; + interrupts = <86>; + interrupt-controller; + #gpio-cells = <2>; + ngpios = <64>; + status = "okay"; + + uart0_pins: uart0-pins { + uart0-pins-tx { + starfive,pins = <PAD_GPIO5>; + starfive,pin-ioconfig = <IO(GPIO_IE(1) | GPIO_DS(3))>; + starfive,pin-gpio-dout = <GPO_UART0_SOUT>; + starfive,pin-gpio-doen = <OEN_LOW>; + }; + + uart0-pins-rx { + starfive,pins = <PAD_GPIO6>; + starfive,pinmux = <PAD_GPIO6_FUNC_SEL 0>; + starfive,pin-ioconfig = <IO(GPIO_IE(1) | GPIO_PU(1))>; + starfive,pin-gpio-doen = <OEN_HIGH>; + starfive,pin-gpio-din = <GPI_UART0_SIN>; + };
Documentation/devicetree/bindings/pinctrl/starfive,jh7110-
Quoted 10 lines
Documentation/devicetree/bindings/pinctrl/starfive,jh7110- new file +10
-0+ }; + }; + + &uart0 { + pinctrl-names = "default"; + pinctrl-0 = <&uart0_pins>; + status = "okay"; + }; + +...
_______________________________________________
linux-riscv mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-riscv
PATCH 26/30 pinctrl: starfive: Add StarFive JH7110 driver
In reply to Hal FengFrom: Jianlong Huang <[email protected]>
Add pinctrl driver for StarFive JH7110 SoC.
--- MAINTAINERS | 9 +- drivers/pinctrl/starfive/Kconfig | 20 + drivers/pinctrl/starfive/Makefile | 5 + drivers/pinctrl/starfive/pinctrl-jh7110-aon.c | 718 ++++++++++++++ drivers/pinctrl/starfive/pinctrl-jh7110-sys.c | 925 ++++++++++++++++++ drivers/pinctrl/starfive/pinctrl-starfive.c | 539 ++++++++++ drivers/pinctrl/starfive/pinctrl-starfive.h | 131 +++ 7 files changed, 2343 insertions(+), 4 deletions(-) create mode 100644 drivers/pinctrl/starfive/pinctrl-jh7110-aon.c create mode 100644 drivers/pinctrl/starfive/pinctrl-jh7110-sys.c create mode 100644 drivers/pinctrl/starfive/pinctrl-starfive.c create mode 100644 drivers/pinctrl/starfive/pinctrl-starfive.h
MAINTAINERS +5 -4
@@ -19404,13 +19404,14 @@ F: Documentation/devicetree/bindings/clock/starfive* F: drivers/clk/starfive/ F: include/dt-bindings/clock/starfive* -STARFIVE JH7100 PINCTRL DRIVER +STARFIVE PINCTRL DRIVER M: Emil Renner Berthing <[email protected]> +M: Jianlong Huang <[email protected]> L: [email protected] S: Maintained -F: Documentation/devicetree/bindings/pinctrl/starfive,jh7100-pinctrl.yaml -F: drivers/pinctrl/pinctrl-starfive.c -F: include/dt-bindings/pinctrl/pinctrl-starfive.h +F: Documentation/devicetree/bindings/pinctrl/starfive* +F: drivers/pinctrl/starfive/ +F: include/dt-bindings/pinctrl/pinctrl-starfive* STARFIVE RESET CONTROLLER DRIVER M: Emil Renner Berthing <[email protected]>
drivers/pinctrl/starfive/Kconfig +20 -0
@@ -17,3 +17,23 @@ config PINCTRL_STARFIVE_JH7100 peripherals supporting inputs, outputs, configuring pull-up/pull-down and interrupts on input changes. +config PINCTRL_STARFIVE + bool + select GENERIC_PINCTRL_GROUPS + select GENERIC_PINMUX_FUNCTIONS + select GENERIC_PINCONF + select GPIOLIB + select GPIOLIB_IRQCHIP + select OF_GPIO + +config PINCTRL_STARFIVE_JH7110 + bool "Pinctrl and GPIO driver for the StarFive JH7110 SoC" + depends on SOC_STARFIVE || COMPILE_TEST + depends on OF + select PINCTRL_STARFIVE + default SOC_STARFIVE + help + Say yes here to support pin control on the StarFive JH7110 SoC. + This also provides an interface to the GPIO pins not used by other + peripherals supporting inputs, outputs, configuring pull-up/pull-down + and interrupts on input changes.
drivers/pinctrl/starfive/Makefile +5 -0
@@ -1,3 +1,8 @@ # SPDX-License-Identifier: GPL-2.0 +# Core +obj-$(CONFIG_PINCTRL_STARFIVE) += pinctrl-starfive.o + +# SoC Drivers obj-$(CONFIG_PINCTRL_STARFIVE_JH7100) += pinctrl-starfive-jh7100.o +obj-$(CONFIG_PINCTRL_STARFIVE_JH7110) += pinctrl-jh7110-sys.o pinctrl-jh7110-aon.o
drivers/pinctrl/starfive/pinctrl-jh7110-aon.c new file +718 -0
718 lines not on this page · raw message
drivers/pinctrl/starfive/pinctrl-jh7110-sys.c new file +925 -0
925 lines not on this page · raw message
drivers/pinctrl/starfive/pinctrl-starfive.c new file +539 -0
539 lines not on this page · raw message
drivers/pinctrl/starfive/pinctrl-starfive.h new file +131 -0
131 lines not on this page · raw message
Signature · 1 line
2.17.1
kernel test robot
build botRe: [PATCH v1 26/30] pinctrl: starfive: Add StarFive JH7110 driver
I love your patch! Perhaps something to improve:
Hi Hal,
I love your patch! Perhaps something to improve:
[auto build test WARNING on linus/master]
[also build test WARNING on v6.0-rc7 next-20220930]
[cannot apply to clk/clk-next linusw-pinctrl/devel pza/reset/next] [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/Hal-Feng/Basic-StarFive-JH7110-RISC-V-SoC-support/20220930-202655 base: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 987a926c1d8a40e4256953b04771fbdb63bc7938 config: riscv-buildonly-randconfig-r006-20220926 compiler: clang version 16.0.0 (https://github.com/llvm/llvm-project 791a7ae1ba3efd6bca96338e10ffde557ba83920)
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
# install riscv cross compiling tool for clang build
# apt-get install binutils-riscv64-linux-gnu
# https://github.com/intel-lab-lkp/linux/commit/9ef892ebb8b08cc65ab165f4962864e12b5c216d
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Hal-Feng/Basic-StarFive-JH7110-RISC-V-SoC-support/20220930-202655
git checkout 9ef892ebb8b08cc65ab165f4962864e12b5c216d
# 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=riscv SHELL=/bin/bash drivers/pinctrl/starfive/
If you fix the issue, kindly add following tag where applicable | Reported-by: kernel test robot <[email protected]>
All warnings (new ones prefixed by >>):
>> drivers/pinctrl/starfive/pinctrl-starfive.c:462:51: warning: variable 'value' is uninitialized when used here [-Wuninitialized]
ret = info->starfive_iopad_sel_func(pdev, pctl, value);
^~~~~
drivers/pinctrl/starfive/pinctrl-starfive.c:397:11: note: initialize the variable 'value' to silence this warning
u32 value;
^
= 0 drivers/pinctrl/starfive/pinctrl-starfive.c:32:1: warning: unused function 'starfive_pinctrl_find_group_by_name' [-Wunused-function] starfive_pinctrl_find_group_by_name(struct pinctrl_dev *pctldev,
^
2 warnings generated.
vim +/value +462 drivers/pinctrl/starfive/pinctrl-starfive.c
386
387 int starfive_pinctrl_probe(struct platform_device *pdev,
388 const struct starfive_pinctrl_soc_info *info)
389 {
390 struct device *dev = &pdev->dev;
391 struct pinctrl_desc *starfive_pinctrl_desc;
392 struct starfive_pinctrl *pctl;
393 struct resource *res;
394 struct reset_control *rst;
395 struct clk *clk;
396 int ret, i;
397 u32 value;
398
399 if (!info || !info->pins || !info->npins) {
400 dev_err(&pdev->dev, "wrong pinctrl info\n");
401 return -EINVAL;
402 }
403
404 pctl = devm_kzalloc(&pdev->dev, sizeof(*pctl), GFP_KERNEL);
405 if (!pctl)
406 return -ENOMEM;
407
408 pctl->pin_regs = devm_kmalloc_array(&pdev->dev, info->npins,
409 sizeof(*pctl->pin_regs),
410 GFP_KERNEL);
411 if (!pctl->pin_regs)
412 return -ENOMEM;
413
414 for (i = 0; i < info->npins; i++) {
415 pctl->pin_regs[i].io_conf_reg = -1;
416 pctl->pin_regs[i].gpo_dout_reg = -1;
417 pctl->pin_regs[i].gpo_doen_reg = -1;
418 pctl->pin_regs[i].func_sel_reg = -1;
419 pctl->pin_regs[i].syscon_reg = -1;
420 pctl->pin_regs[i].pad_sel_reg = -1;
421 }
422
423 pctl->padctl_base = devm_platform_ioremap_resource_byname(pdev, "control");
424 if (IS_ERR(pctl->padctl_base))
425 return PTR_ERR(pctl->padctl_base);
426
427 res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "gpio");
428 if (res) {
429 pctl->gpio_base = devm_ioremap_resource(dev, res);
430 if (IS_ERR(pctl->gpio_base))
431 return PTR_ERR(pctl->gpio_base);
432 }
433
434 clk = devm_clk_get_optional(dev, NULL);
435 if (IS_ERR(clk))
436 return dev_err_probe(dev, PTR_ERR(clk), "could not get clock\n");
437
438 rst = devm_reset_control_get_exclusive(dev, NULL);
439 if (IS_ERR(rst))
440 return dev_err_probe(dev, PTR_ERR(rst), "could not get reset\n");
441
442 if (clk) {
443 ret = clk_prepare_enable(clk);
444 if (ret)
445 return dev_err_probe(dev, ret, "could not enable clock\n");
446
447 ret = devm_add_action_or_reset(dev, starfive_disable_clock, clk);
448 if (ret)
449 return ret;
450 }
451
452 /*
453 * We don't want to assert reset and risk undoing pin muxing for the
454 * early boot serial console, but let's make sure the reset line is
455 * deasserted in case someone runs a really minimal bootloader.
456 */
457 ret = reset_control_deassert(rst);
458 if (ret)
459 return dev_err_probe(dev, ret, "could not deassert reset\n");
460
461 if (info->starfive_iopad_sel_func) {
> 462 ret = info->starfive_iopad_sel_func(pdev, pctl, value);
463 if (ret)
464 return ret;
465 }
466
467 starfive_pinctrl_desc = devm_kzalloc(&pdev->dev,
468 sizeof(*starfive_pinctrl_desc),
469 GFP_KERNEL);
470 if (!starfive_pinctrl_desc)
471 return -ENOMEM;
472
473 raw_spin_lock_init(&pctl->lock);
474
475 starfive_pinctrl_desc->name = dev_name(&pdev->dev);
476 starfive_pinctrl_desc->pins = info->pins;
477 starfive_pinctrl_desc->npins = info->npins;
478 starfive_pinctrl_desc->pctlops = &starfive_pctrl_ops;
479 starfive_pinctrl_desc->pmxops = &starfive_pmx_ops;
480 starfive_pinctrl_desc->confops = &starfive_pinconf_ops;
481 starfive_pinctrl_desc->owner = THIS_MODULE;
482
483 mutex_init(&pctl->mutex);
484
485 pctl->info = info;
486 pctl->dev = &pdev->dev;
487 platform_set_drvdata(pdev, pctl);
488 pctl->gc.parent = dev;
489 ret = devm_pinctrl_register_and_init(&pdev->dev,
490 starfive_pinctrl_desc, pctl,
491 &pctl->pctl_dev);
492 if (ret) {
493 dev_err(&pdev->dev,
494 "could not register starfive pinctrl driver\n");
495 return ret;
496 }
497
498 ret = pinctrl_enable(pctl->pctl_dev);
499 if (ret) {
500 dev_err(&pdev->dev,
501 "pin controller failed to start\n");
502 return ret;
503 }
504
505 if (info->starfive_gpio_register) {
506 ret = info->starfive_gpio_register(pdev, pctl);
507 if (ret) {
508 dev_err(&pdev->dev,
509 "starfive_gpio_register failed to register\n");
510 return ret;
511 }
512 }
513
514 return 0;
515 }
516 EXPORT_SYMBOL_GPL(starfive_pinctrl_probe);
517
Signature · 2 lines
0-DAY CI Kernel Test Service https://01.org/lkp
#
# Automatically generated file; DO NOT EDIT.
# Linux/riscv 6.0.0-rc7 Kernel Configuration
#CONFIG_CC_VERSION_TEXT="clang version 16.0.0 (git://gitmirror/llvm_project 791a7ae1ba3efd6bca96338e10ffde557ba83920)" 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_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=yCONFIG_BUILDTIME_TABLE_SORT=yCONFIG_THREAD_INFO_IN_TASK=y
#
# General setup
#CONFIG_BROKEN_ON_SMP=yCONFIG_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_POSIX_MQUEUE=yCONFIG_WATCH_QUEUE=yCONFIG_CROSS_MEMORY_ATTACH=y
# CONFIG_USELIB is not set
# CONFIG_AUDIT is not setCONFIG_HAVE_ARCH_AUDITSYSCALL=y
#
# IRQ subsystem
#CONFIG_GENERIC_IRQ_SHOW=yCONFIG_GENERIC_IRQ_SHOW_LEVEL=yCONFIG_GENERIC_IRQ_INJECTION=yCONFIG_GENERIC_IRQ_CHIP=yCONFIG_IRQ_DOMAIN=yCONFIG_IRQ_DOMAIN_HIERARCHY=yCONFIG_IRQ_FASTEOI_HIERARCHY_HANDLERS=yCONFIG_GENERIC_MSI_IRQ=yCONFIG_GENERIC_MSI_IRQ_DOMAIN=yCONFIG_IRQ_FORCED_THREADING=yCONFIG_SPARSE_IRQ=yCONFIG_GENERIC_IRQ_DEBUGFS=y
# end of IRQ subsystem
CONFIG_GENERIC_IRQ_MULTI_HANDLER=yCONFIG_ARCH_CLOCKSOURCE_INIT=yCONFIG_GENERIC_TIME_VSYSCALL=yCONFIG_GENERIC_CLOCKEVENTS=yCONFIG_TIME_KUNIT_TEST=yCONFIG_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=yCONFIG_HAVE_EBPF_JIT=y
#
# BPF subsystem
#CONFIG_BPF_SYSCALL=y
# CONFIG_BPF_UNPRIV_DEFAULT_OFF is not setCONFIG_USERMODE_DRIVER=y
# end of BPF subsystem
CONFIG_PREEMPT_BUILD=y
# CONFIG_PREEMPT_NONE is not set
# CONFIG_PREEMPT_VOLUNTARY is not setCONFIG_PREEMPT=yCONFIG_PREEMPT_COUNT=yCONFIG_PREEMPTION=y
#
# CPU/Task time and stats accounting
#CONFIG_TICK_CPU_ACCOUNTING=y
# CONFIG_VIRT_CPU_ACCOUNTING_GEN is not setCONFIG_IRQ_TIME_ACCOUNTING=yCONFIG_BSD_PROCESS_ACCT=y
# CONFIG_BSD_PROCESS_ACCT_V3 is not set
# CONFIG_TASKSTATS is not setCONFIG_PSI=y
# CONFIG_PSI_DEFAULT_DISABLED is not set
# end of CPU/Task time and stats accounting
CONFIG_CPU_ISOLATION=y
#
# RCU Subsystem
#CONFIG_TREE_RCU=yCONFIG_PREEMPT_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=64CONFIG_RCU_FANOUT_LEAF=16CONFIG_RCU_BOOST=yCONFIG_RCU_BOOST_DELAY=500
# CONFIG_RCU_EXP_KTHREAD is not set
# CONFIG_RCU_NOCB_CPU is not set
# CONFIG_TASKS_TRACE_RCU_READ_MB is not set
# end of RCU Subsystem
CONFIG_IKCONFIG=y
# CONFIG_IKCONFIG_PROC is not setCONFIG_IKHEADERS=yCONFIG_LOG_BUF_SHIFT=17CONFIG_PRINTK_SAFE_LOG_BUF_SHIFT=13CONFIG_PRINTK_INDEX=yCONFIG_GENERIC_SCHED_CLOCK=y
#
# Scheduler features
#
# end of Scheduler features
CONFIG_CC_HAS_INT128=y CONFIG_CC_IMPLICIT_FALLTHROUGH="-Wimplicit-fallthrough" CONFIG_GCC12_NO_ARRAY_BOUNDS=y CONFIG_ARCH_SUPPORTS_INT128=yCONFIG_CGROUPS=yCONFIG_PAGE_COUNTER=y
# CONFIG_CGROUP_FAVOR_DYNMODS is not set CONFIG_MEMCG=yCONFIG_MEMCG_KMEM=yCONFIG_CGROUP_SCHED=y CONFIG_FAIR_GROUP_SCHED=y
# CONFIG_CFS_BANDWIDTH is not set CONFIG_RT_GROUP_SCHED=y
# CONFIG_CGROUP_PIDS is not set CONFIG_CGROUP_RDMA=yCONFIG_CGROUP_FREEZER=yCONFIG_CGROUP_DEVICE=yCONFIG_CGROUP_CPUACCT=y
# CONFIG_CGROUP_BPF is not set CONFIG_CGROUP_MISC=yCONFIG_CGROUP_DEBUG=y
# CONFIG_NAMESPACES is not set
# CONFIG_CHECKPOINT_RESTORE is not set CONFIG_SCHED_AUTOGROUP=y CONFIG_SYSFS_DEPRECATED=y CONFIG_SYSFS_DEPRECATED_V2=y
# CONFIG_RELAY is not set CONFIG_BLK_DEV_INITRD=y CONFIG_INITRAMFS_SOURCE=""CONFIG_RD_GZIP=yCONFIG_RD_BZIP2=yCONFIG_RD_LZMA=yCONFIG_RD_XZ=yCONFIG_RD_LZO=y
# CONFIG_RD_LZ4 is not setCONFIG_RD_ZSTD=yCONFIG_BOOT_CONFIG=y
# CONFIG_BOOT_CONFIG_EMBED is not set
# CONFIG_INITRAMFS_PRESERVE_MTIME is not set
# CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE is not set CONFIG_CC_OPTIMIZE_FOR_SIZE=y CONFIG_SYSCTL_EXCEPTION_TRACE=y CONFIG_EXPERT=yCONFIG_MULTIUSER=y
# CONFIG_SGETMASK_SYSCALL is not set
# CONFIG_SYSFS_SYSCALL is not set CONFIG_FHANDLE=yCONFIG_POSIX_TIMERS=yCONFIG_PRINTK=y
# CONFIG_BUG is not setCONFIG_ELF_CORE=yCONFIG_BASE_FULL=yCONFIG_FUTEX=yCONFIG_FUTEX_PI=yCONFIG_EPOLL=yCONFIG_SIGNALFD=y
# CONFIG_TIMERFD is not setCONFIG_EVENTFD=y
# CONFIG_SHMEM is not setCONFIG_AIO=yCONFIG_IO_URING=yCONFIG_ADVISE_SYSCALLS=yCONFIG_MEMBARRIER=yCONFIG_KALLSYMS=yCONFIG_KALLSYMS_ALL=y CONFIG_KALLSYMS_BASE_RELATIVE=yCONFIG_KCMP=yCONFIG_RSEQ=y
# CONFIG_DEBUG_RSEQ is not set CONFIG_EMBEDDED=yCONFIG_HAVE_PERF_EVENTS=y
# CONFIG_PC104 is not set
#
# Kernel Performance Events And Counters
#
# CONFIG_PERF_EVENTS is not set
# end of Kernel Performance Events And Counters
CONFIG_SYSTEM_DATA_VERIFICATION=yCONFIG_PROFILING=yCONFIG_TRACEPOINTS=y
# end of General setup
CONFIG_64BIT=yCONFIG_RISCV=yCONFIG_ARCH_MMAP_RND_BITS_MIN=18CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=8CONFIG_ARCH_MMAP_RND_BITS_MAX=24CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MAX=17CONFIG_RISCV_SBI=yCONFIG_MMU=yCONFIG_PAGE_OFFSET=0xff60000000000000CONFIG_KASAN_SHADOW_OFFSET=0xdfffffff00000000CONFIG_ARCH_FLATMEM_ENABLE=yCONFIG_ARCH_SPARSEMEM_ENABLE=yCONFIG_ARCH_SELECT_MEMORY_MODEL=yCONFIG_ARCH_SUPPORTS_UPROBES=yCONFIG_STACKTRACE_SUPPORT=yCONFIG_GENERIC_CALIBRATE_DELAY=yCONFIG_GENERIC_CSUM=yCONFIG_GENERIC_HWEIGHT=yCONFIG_FIX_EARLYCON_MEM=yCONFIG_PGTABLE_LEVELS=5CONFIG_LOCKDEP_SUPPORT=y
#
# SoC selection
#
# CONFIG_SOC_MICROCHIP_POLARFIRE is not set
# CONFIG_SOC_SIFIVE is not setCONFIG_SOC_STARFIVE=y
# CONFIG_SOC_VIRT is not set
# end of SoC selection
#
# CPU errata selection
#CONFIG_ERRATA_SIFIVE=y
# CONFIG_ERRATA_SIFIVE_CIP_453 is not set
# CONFIG_ERRATA_SIFIVE_CIP_1200 is not setCONFIG_ERRATA_THEAD=yCONFIG_ERRATA_THEAD_PBMT=y
# CONFIG_ERRATA_THEAD_CMO is not set
# end of CPU errata selection
#
# Platform type
#CONFIG_NONPORTABLE=y
# CONFIG_ARCH_RV32I is not setCONFIG_ARCH_RV64I=yCONFIG_CMODEL_MEDLOW=y
# CONFIG_CMODEL_MEDANY is not set
# CONFIG_SMP is not setCONFIG_TUNE_GENERIC=yCONFIG_RISCV_ALTERNATIVE=yCONFIG_RISCV_ALTERNATIVE_EARLY=yCONFIG_RISCV_ISA_C=y
# CONFIG_RISCV_ISA_SVPBMT is not setCONFIG_CC_HAS_ZICBOM=y
# CONFIG_RISCV_ISA_ZICBOM is not setCONFIG_FPU=y
# end of Platform type
#
# Kernel features
#
# CONFIG_HZ_100 is not set
# CONFIG_HZ_250 is not setCONFIG_HZ_300=y
# CONFIG_HZ_1000 is not setCONFIG_HZ=300CONFIG_SCHED_HRTICK=y
# CONFIG_RISCV_SBI_V01 is not setCONFIG_KEXEC=yCONFIG_KEXEC_FILE=yCONFIG_ARCH_HAS_KEXEC_PURGATORY=y
# CONFIG_CRASH_DUMP is not set
# CONFIG_COMPAT is not set
# end of Kernel features
#
# Boot options
#CONFIG_CMDLINE=""CONFIG_EFI_STUB=yCONFIG_EFI=yCONFIG_PHYS_RAM_BASE_FIXED=yCONFIG_PHYS_RAM_BASE=0x80000000
# end of Boot options
#
# Power management options
#CONFIG_PM=y
# CONFIG_PM_DEBUG is not setCONFIG_PM_CLK=yCONFIG_PM_GENERIC_DOMAINS=yCONFIG_WQ_POWER_EFFICIENT_DEFAULT=yCONFIG_PM_GENERIC_DOMAINS_OF=y
# end of Power management options
#
# CPU Power Management
#
#
# CPU Idle
#
# CONFIG_CPU_IDLE is not set
# end of CPU Idle # end of CPU Power Management
# CONFIG_VIRTUALIZATION is not set
#
# General architecture-dependent options
#CONFIG_CRASH_CORE=yCONFIG_KEXEC_CORE=yCONFIG_KEXEC_ELF=y
# CONFIG_JUMP_LABEL is not setCONFIG_HAVE_64BIT_ALIGNED_ACCESS=yCONFIG_HAVE_KPROBES=yCONFIG_HAVE_KRETPROBES=yCONFIG_HAVE_KPROBES_ON_FTRACE=yCONFIG_HAVE_FUNCTION_ERROR_INJECTION=yCONFIG_TRACE_IRQFLAGS_SUPPORT=yCONFIG_HAVE_ARCH_TRACEHOOK=yCONFIG_HAVE_DMA_CONTIGUOUS=yCONFIG_GENERIC_SMP_IDLE_THREAD=yCONFIG_GENERIC_IDLE_POLL_SETUP=yCONFIG_ARCH_HAS_FORTIFY_SOURCE=yCONFIG_ARCH_HAS_SET_MEMORY=yCONFIG_ARCH_HAS_SET_DIRECT_MAP=yCONFIG_HAVE_ARCH_THREAD_STRUCT_WHITELIST=yCONFIG_HAVE_ASM_MODVERSIONS=yCONFIG_HAVE_REGS_AND_STACK_ACCESS_API=yCONFIG_HAVE_RSEQ=yCONFIG_HAVE_FUNCTION_ARG_ACCESS_API=yCONFIG_HAVE_PERF_REGS=yCONFIG_HAVE_PERF_USER_STACK_DUMP=yCONFIG_HAVE_ARCH_JUMP_LABEL=yCONFIG_HAVE_ARCH_JUMP_LABEL_RELATIVE=yCONFIG_HAVE_ARCH_SECCOMP=yCONFIG_HAVE_ARCH_SECCOMP_FILTER=y
# CONFIG_SECCOMP is not setCONFIG_HAVE_STACKPROTECTOR=y
# CONFIG_STACKPROTECTOR is not setCONFIG_LTO_NONE=yCONFIG_HAVE_CONTEXT_TRACKING_USER=yCONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=yCONFIG_HAVE_IRQ_TIME_ACCOUNTING=yCONFIG_HAVE_MOVE_PUD=yCONFIG_HAVE_MOVE_PMD=yCONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=yCONFIG_ARCH_WANT_HUGE_PMD_SHARE=yCONFIG_ARCH_HAS_ELF_RANDOMIZE=yCONFIG_HAVE_ARCH_MMAP_RND_BITS=yCONFIG_ARCH_MMAP_RND_BITS=18CONFIG_PAGE_SIZE_LESS_THAN_64KB=yCONFIG_PAGE_SIZE_LESS_THAN_256KB=yCONFIG_ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT=yCONFIG_CLONE_BACKWARDS=yCONFIG_COMPAT_32BIT_TIME=yCONFIG_HAVE_ARCH_VMAP_STACK=yCONFIG_VMAP_STACK=yCONFIG_ARCH_OPTIONAL_KERNEL_RWX=yCONFIG_ARCH_OPTIONAL_KERNEL_RWX_DEFAULT=yCONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y
# CONFIG_STRICT_KERNEL_RWX is not setCONFIG_ARCH_HAS_STRICT_MODULE_RWX=yCONFIG_LOCK_EVENT_COUNTS=yCONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=yCONFIG_ARCH_SUPPORTS_PAGE_TABLE_CHECK=y
#
# GCOV-based kernel profiling
#
# CONFIG_GCOV_KERNEL is not setCONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y
# end of GCOV-based kernel profiling
CONFIG_HAVE_GCC_PLUGINS=y
# end of General architecture-dependent options
CONFIG_RT_MUTEXES=yCONFIG_BASE_SMALL=0
# CONFIG_MODULES is not set
# CONFIG_BLOCK is not setCONFIG_ASN1=yCONFIG_UNINLINE_SPIN_UNLOCK=yCONFIG_ARCH_SUPPORTS_ATOMIC_RMW=yCONFIG_ARCH_USE_QUEUED_RWLOCKS=yCONFIG_ARCH_HAS_MMIOWB=yCONFIG_FREEZER=y
#
# Executable file formats
#CONFIG_BINFMT_ELF=yCONFIG_BINFMT_ELF_KUNIT_TEST=yCONFIG_ELFCORE=yCONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=yCONFIG_BINFMT_SCRIPT=yCONFIG_ARCH_HAS_BINFMT_FLAT=y
# CONFIG_BINFMT_FLAT is not set
# CONFIG_BINFMT_MISC is not setCONFIG_COREDUMP=y
# end of Executable file formats
#
# Memory Management options
#
#
# SLAB allocator options
#CONFIG_SLAB=y
# CONFIG_SLUB is not set
# CONFIG_SLOB is not setCONFIG_SLAB_MERGE_DEFAULT=yCONFIG_SLAB_FREELIST_RANDOM=y
# CONFIG_SLAB_FREELIST_HARDENED is not set
# end of SLAB allocator options
# CONFIG_SHUFFLE_PAGE_ALLOCATOR is not set
# CONFIG_COMPAT_BRK is not setCONFIG_SELECT_MEMORY_MODEL=yCONFIG_FLATMEM_MANUAL=y
# CONFIG_SPARSEMEM_MANUAL is not setCONFIG_FLATMEM=yCONFIG_SPARSEMEM_VMEMMAP_ENABLE=yCONFIG_MEMORY_ISOLATION=yCONFIG_EXCLUSIVE_SYSTEM_RAM=yCONFIG_SPLIT_PTLOCK_CPUS=4CONFIG_ARCH_ENABLE_SPLIT_PMD_PTLOCK=yCONFIG_COMPACTION=y
# CONFIG_PAGE_REPORTING is not setCONFIG_MIGRATION=yCONFIG_CONTIG_ALLOC=yCONFIG_PHYS_ADDR_T_64BIT=yCONFIG_KSM=yCONFIG_DEFAULT_MMAP_MIN_ADDR=4096CONFIG_ARCH_WANT_GENERAL_HUGETLB=y
# CONFIG_TRANSPARENT_HUGEPAGE is not setCONFIG_NEED_PER_CPU_KM=yCONFIG_CMA=y
# CONFIG_CMA_DEBUG is not set
# CONFIG_CMA_DEBUGFS is not set
# CONFIG_CMA_SYSFS is not setCONFIG_CMA_AREAS=7CONFIG_GENERIC_EARLY_IOREMAP=yCONFIG_PAGE_IDLE_FLAG=y
# CONFIG_IDLE_PAGE_TRACKING is not setCONFIG_ARCH_HAS_CURRENT_STACK_POINTER=yCONFIG_ZONE_DMA32=y
# CONFIG_VM_EVENT_COUNTERS is not setCONFIG_PERCPU_STATS=y
# CONFIG_GUP_TEST is not setCONFIG_ARCH_HAS_PTE_SPECIAL=yCONFIG_ANON_VMA_NAME=yCONFIG_USERFAULTFD=y
#
# Data Access Monitoring
#CONFIG_DAMON=yCONFIG_DAMON_KUNIT_TEST=yCONFIG_DAMON_VADDR=yCONFIG_DAMON_PADDR=yCONFIG_DAMON_VADDR_KUNIT_TEST=yCONFIG_DAMON_SYSFS=y
# CONFIG_DAMON_DBGFS is not set
# CONFIG_DAMON_RECLAIM is not setCONFIG_DAMON_LRU_SORT=y
# end of Data Access Monitoring # end of Memory Management options
CONFIG_NET=yCONFIG_NET_EGRESS=yCONFIG_SKB_EXTENSIONS=y
#
# Networking options
#CONFIG_PACKET=y
# CONFIG_PACKET_DIAG is not setCONFIG_UNIX=yCONFIG_UNIX_SCM=yCONFIG_AF_UNIX_OOB=y
# CONFIG_UNIX_DIAG is not setCONFIG_TLS=y
# CONFIG_TLS_DEVICE is not set
# CONFIG_TLS_TOE is not setCONFIG_XFRM=yCONFIG_XFRM_OFFLOAD=yCONFIG_XFRM_ALGO=yCONFIG_XFRM_USER=y
# CONFIG_XFRM_INTERFACE is not setCONFIG_XFRM_SUB_POLICY=yCONFIG_XFRM_MIGRATE=y
# CONFIG_XFRM_STATISTICS is not setCONFIG_XFRM_AH=yCONFIG_XFRM_ESP=yCONFIG_XFRM_IPCOMP=yCONFIG_NET_KEY=y
# CONFIG_NET_KEY_MIGRATE is not setCONFIG_XDP_SOCKETS=yCONFIG_XDP_SOCKETS_DIAG=yCONFIG_INET=yCONFIG_IP_MULTICAST=y
# CONFIG_IP_ADVANCED_ROUTER is not setCONFIG_IP_ROUTE_CLASSID=y
# CONFIG_IP_PNP is not setCONFIG_NET_IPIP=yCONFIG_NET_IPGRE_DEMUX=yCONFIG_NET_IP_TUNNEL=yCONFIG_NET_IPGRE=y
# CONFIG_NET_IPGRE_BROADCAST is not setCONFIG_IP_MROUTE_COMMON=y
# CONFIG_IP_MROUTE is not set
# CONFIG_SYN_COOKIES is not setCONFIG_NET_IPVTI=yCONFIG_NET_UDP_TUNNEL=yCONFIG_NET_FOU=yCONFIG_NET_FOU_IP_TUNNELS=yCONFIG_INET_AH=yCONFIG_INET_ESP=yCONFIG_INET_ESP_OFFLOAD=y
# CONFIG_INET_ESPINTCP is not setCONFIG_INET_IPCOMP=yCONFIG_INET_XFRM_TUNNEL=yCONFIG_INET_TUNNEL=y
# CONFIG_INET_DIAG is not set
# CONFIG_TCP_CONG_ADVANCED is not setCONFIG_TCP_CONG_CUBIC=yCONFIG_DEFAULT_TCP_CONG="cubic"CONFIG_TCP_MD5SIG=yCONFIG_IPV6=y
# CONFIG_IPV6_ROUTER_PREF is not set
# CONFIG_IPV6_OPTIMISTIC_DAD is not setCONFIG_INET6_AH=yCONFIG_INET6_ESP=yCONFIG_INET6_ESP_OFFLOAD=y
# CONFIG_INET6_ESPINTCP is not set
# CONFIG_INET6_IPCOMP is not setCONFIG_IPV6_MIP6=yCONFIG_IPV6_ILA=yCONFIG_INET6_TUNNEL=yCONFIG_IPV6_VTI=yCONFIG_IPV6_SIT=yCONFIG_IPV6_SIT_6RD=yCONFIG_IPV6_NDISC_NODETYPE=yCONFIG_IPV6_TUNNEL=yCONFIG_IPV6_GRE=yCONFIG_IPV6_FOU=yCONFIG_IPV6_FOU_TUNNEL=yCONFIG_IPV6_MULTIPLE_TABLES=yCONFIG_IPV6_SUBTREES=yCONFIG_IPV6_MROUTE=yCONFIG_IPV6_MROUTE_MULTIPLE_TABLES=yCONFIG_IPV6_PIMSM_V2=y
# CONFIG_IPV6_SEG6_LWTUNNEL is not set
# CONFIG_IPV6_SEG6_HMAC is not setCONFIG_IPV6_RPL_LWTUNNEL=yCONFIG_IPV6_IOAM6_LWTUNNEL=y
# CONFIG_MPTCP is not setCONFIG_NETWORK_SECMARK=yCONFIG_NET_PTP_CLASSIFY=y
# CONFIG_NETWORK_PHY_TIMESTAMPING is not setCONFIG_NETFILTER=yCONFIG_NETFILTER_ADVANCED=yCONFIG_BRIDGE_NETFILTER=y
#
# Core Netfilter Configuration
#
# CONFIG_NETFILTER_INGRESS is not setCONFIG_NETFILTER_EGRESS=yCONFIG_NETFILTER_NETLINK=yCONFIG_NETFILTER_FAMILY_BRIDGE=yCONFIG_NETFILTER_NETLINK_HOOK=yCONFIG_NETFILTER_NETLINK_ACCT=yCONFIG_NETFILTER_NETLINK_QUEUE=yCONFIG_NETFILTER_NETLINK_LOG=yCONFIG_NETFILTER_NETLINK_OSF=y
# CONFIG_NF_CONNTRACK is not setCONFIG_NF_LOG_SYSLOG=yCONFIG_NF_TABLES=y
# CONFIG_NF_TABLES_INET is not set
# CONFIG_NF_TABLES_NETDEV is not setCONFIG_NFT_NUMGEN=y
# CONFIG_NFT_LOG is not setCONFIG_NFT_LIMIT=y
# CONFIG_NFT_TUNNEL is not setCONFIG_NFT_OBJREF=yCONFIG_NFT_QUEUE=y
# CONFIG_NFT_QUOTA is not setCONFIG_NFT_REJECT=y
# CONFIG_NFT_COMPAT is not setCONFIG_NFT_HASH=y
# CONFIG_NFT_XFRM is not setCONFIG_NFT_SOCKET=yCONFIG_NFT_OSF=yCONFIG_NFT_TPROXY=yCONFIG_NETFILTER_XTABLES=y
#
# Xtables combined modules
#CONFIG_NETFILTER_XT_MARK=y
# CONFIG_NETFILTER_XT_SET is not set
#
# Xtables targets
#CONFIG_NETFILTER_XT_TARGET_CLASSIFY=yCONFIG_NETFILTER_XT_TARGET_HMARK=yCONFIG_NETFILTER_XT_TARGET_IDLETIMER=yCONFIG_NETFILTER_XT_TARGET_LED=yCONFIG_NETFILTER_XT_TARGET_LOG=yCONFIG_NETFILTER_XT_TARGET_MARK=yCONFIG_NETFILTER_XT_TARGET_NFLOG=yCONFIG_NETFILTER_XT_TARGET_NFQUEUE=yCONFIG_NETFILTER_XT_TARGET_RATEEST=yCONFIG_NETFILTER_XT_TARGET_TEE=yCONFIG_NETFILTER_XT_TARGET_SECMARK=yCONFIG_NETFILTER_XT_TARGET_TCPMSS=y
#
# Xtables matches
#CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=yCONFIG_NETFILTER_XT_MATCH_BPF=y
# CONFIG_NETFILTER_XT_MATCH_CGROUP is not setCONFIG_NETFILTER_XT_MATCH_COMMENT=yCONFIG_NETFILTER_XT_MATCH_CPU=y
# CONFIG_NETFILTER_XT_MATCH_DCCP is not setCONFIG_NETFILTER_XT_MATCH_DEVGROUP=yCONFIG_NETFILTER_XT_MATCH_DSCP=yCONFIG_NETFILTER_XT_MATCH_ECN=yCONFIG_NETFILTER_XT_MATCH_ESP=y
# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not setCONFIG_NETFILTER_XT_MATCH_HL=y
# CONFIG_NETFILTER_XT_MATCH_IPCOMP is not setCONFIG_NETFILTER_XT_MATCH_IPRANGE=yCONFIG_NETFILTER_XT_MATCH_L2TP=yCONFIG_NETFILTER_XT_MATCH_LENGTH=yCONFIG_NETFILTER_XT_MATCH_LIMIT=yCONFIG_NETFILTER_XT_MATCH_MAC=y
# CONFIG_NETFILTER_XT_MATCH_MARK is not setCONFIG_NETFILTER_XT_MATCH_MULTIPORT=yCONFIG_NETFILTER_XT_MATCH_NFACCT=yCONFIG_NETFILTER_XT_MATCH_OSF=y
# CONFIG_NETFILTER_XT_MATCH_OWNER is not setCONFIG_NETFILTER_XT_MATCH_POLICY=yCONFIG_NETFILTER_XT_MATCH_PHYSDEV=y
# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
# CONFIG_NETFILTER_XT_MATCH_RATEEST is not setCONFIG_NETFILTER_XT_MATCH_REALM=y
# CONFIG_NETFILTER_XT_MATCH_RECENT is not setCONFIG_NETFILTER_XT_MATCH_SCTP=y
# CONFIG_NETFILTER_XT_MATCH_SOCKET is not set
# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not setCONFIG_NETFILTER_XT_MATCH_STRING=yCONFIG_NETFILTER_XT_MATCH_TCPMSS=yCONFIG_NETFILTER_XT_MATCH_TIME=yCONFIG_NETFILTER_XT_MATCH_U32=y
# end of Core Netfilter Configuration
CONFIG_IP_SET=yCONFIG_IP_SET_MAX=256
# CONFIG_IP_SET_BITMAP_IP is not setCONFIG_IP_SET_BITMAP_IPMAC=yCONFIG_IP_SET_BITMAP_PORT=yCONFIG_IP_SET_HASH_IP=yCONFIG_IP_SET_HASH_IPMARK=yCONFIG_IP_SET_HASH_IPPORT=y
# CONFIG_IP_SET_HASH_IPPORTIP is not set
# CONFIG_IP_SET_HASH_IPPORTNET is not setCONFIG_IP_SET_HASH_IPMAC=yCONFIG_IP_SET_HASH_MAC=yCONFIG_IP_SET_HASH_NETPORTNET=yCONFIG_IP_SET_HASH_NET=yCONFIG_IP_SET_HASH_NETNET=y
# CONFIG_IP_SET_HASH_NETPORT is not set
# CONFIG_IP_SET_HASH_NETIFACE is not setCONFIG_IP_SET_LIST_SET=yCONFIG_IP_VS=yCONFIG_IP_VS_IPV6=y
# CONFIG_IP_VS_DEBUG is not setCONFIG_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=y
# CONFIG_IP_VS_PROTO_SCTP is not set
#
# IPVS scheduler
#CONFIG_IP_VS_RR=yCONFIG_IP_VS_WRR=y
# CONFIG_IP_VS_LC is not setCONFIG_IP_VS_WLC=yCONFIG_IP_VS_FO=yCONFIG_IP_VS_OVF=y
# CONFIG_IP_VS_LBLC is not set
# CONFIG_IP_VS_LBLCR is not setCONFIG_IP_VS_DH=yCONFIG_IP_VS_SH=yCONFIG_IP_VS_MH=yCONFIG_IP_VS_SED=yCONFIG_IP_VS_NQ=yCONFIG_IP_VS_TWOS=y
#
# IPVS SH scheduler
#CONFIG_IP_VS_SH_TAB_BITS=8
#
# IPVS MH scheduler
#CONFIG_IP_VS_MH_TAB_INDEX=12
#
# IPVS application helper
#
#
# IP: Netfilter Configuration
#CONFIG_NF_DEFRAG_IPV4=yCONFIG_NF_SOCKET_IPV4=yCONFIG_NF_TPROXY_IPV4=y
# CONFIG_NF_TABLES_IPV4 is not set
# CONFIG_NF_TABLES_ARP is not setCONFIG_NF_DUP_IPV4=y
# CONFIG_NF_LOG_ARP is not set
# CONFIG_NF_LOG_IPV4 is not set
# CONFIG_NF_REJECT_IPV4 is not setCONFIG_IP_NF_IPTABLES=y
# CONFIG_IP_NF_MATCH_AH is not setCONFIG_IP_NF_MATCH_ECN=y
# CONFIG_IP_NF_MATCH_TTL is not set
# CONFIG_IP_NF_FILTER is not set
# CONFIG_IP_NF_MANGLE is not set
# CONFIG_IP_NF_RAW is not set
# CONFIG_IP_NF_ARPTABLES is not set
# end of IP: Netfilter Configuration
#
# IPv6: Netfilter Configuration
#CONFIG_NF_SOCKET_IPV6=y
# CONFIG_NF_TPROXY_IPV6 is not set
# CONFIG_NF_TABLES_IPV6 is not setCONFIG_NF_DUP_IPV6=yCONFIG_NF_REJECT_IPV6=yCONFIG_NF_LOG_IPV6=yCONFIG_IP6_NF_IPTABLES=y
# CONFIG_IP6_NF_MATCH_AH is not setCONFIG_IP6_NF_MATCH_EUI64=yCONFIG_IP6_NF_MATCH_FRAG=yCONFIG_IP6_NF_MATCH_OPTS=yCONFIG_IP6_NF_MATCH_HL=yCONFIG_IP6_NF_MATCH_IPV6HEADER=yCONFIG_IP6_NF_MATCH_MH=y
# CONFIG_IP6_NF_MATCH_RT is not setCONFIG_IP6_NF_MATCH_SRH=y
# CONFIG_IP6_NF_FILTER is not set
# CONFIG_IP6_NF_MANGLE is not set
# CONFIG_IP6_NF_RAW is not set
# end of IPv6: Netfilter Configuration
CONFIG_NF_DEFRAG_IPV6=yCONFIG_NF_TABLES_BRIDGE=y
# CONFIG_NFT_BRIDGE_META is not setCONFIG_BRIDGE_NF_EBTABLES=y
# CONFIG_BRIDGE_EBT_BROUTE is not setCONFIG_BRIDGE_EBT_T_FILTER=yCONFIG_BRIDGE_EBT_T_NAT=yCONFIG_BRIDGE_EBT_802_3=yCONFIG_BRIDGE_EBT_AMONG=y
# CONFIG_BRIDGE_EBT_ARP is not setCONFIG_BRIDGE_EBT_IP=yCONFIG_BRIDGE_EBT_IP6=yCONFIG_BRIDGE_EBT_LIMIT=yCONFIG_BRIDGE_EBT_MARK=yCONFIG_BRIDGE_EBT_PKTTYPE=yCONFIG_BRIDGE_EBT_STP=yCONFIG_BRIDGE_EBT_VLAN=yCONFIG_BRIDGE_EBT_ARPREPLY=yCONFIG_BRIDGE_EBT_DNAT=yCONFIG_BRIDGE_EBT_MARK_T=yCONFIG_BRIDGE_EBT_REDIRECT=yCONFIG_BRIDGE_EBT_SNAT=yCONFIG_BRIDGE_EBT_LOG=yCONFIG_BRIDGE_EBT_NFLOG=yCONFIG_BPFILTER=yCONFIG_IP_DCCP=y
#
# DCCP CCIDs Configuration
#
# CONFIG_IP_DCCP_CCID2_DEBUG is not set
# CONFIG_IP_DCCP_CCID3 is not set
# end of DCCP CCIDs Configuration
#
# DCCP Kernel Hacking
#
# CONFIG_IP_DCCP_DEBUG is not set
# end of DCCP Kernel Hacking
CONFIG_IP_SCTP=yCONFIG_SCTP_DBG_OBJCNT=y
# CONFIG_SCTP_DEFAULT_COOKIE_HMAC_MD5 is not setCONFIG_SCTP_DEFAULT_COOKIE_HMAC_SHA1=y
# CONFIG_SCTP_DEFAULT_COOKIE_HMAC_NONE is not set
# CONFIG_SCTP_COOKIE_HMAC_MD5 is not setCONFIG_SCTP_COOKIE_HMAC_SHA1=yCONFIG_RDS=yCONFIG_RDS_TCP=y
# CONFIG_RDS_DEBUG is not set
# CONFIG_TIPC is not setCONFIG_ATM=yCONFIG_ATM_CLIP=y
# CONFIG_ATM_CLIP_NO_ICMP is not set
# CONFIG_ATM_LANE is not setCONFIG_ATM_BR2684=yCONFIG_ATM_BR2684_IPFILTER=yCONFIG_L2TP=yCONFIG_L2TP_DEBUGFS=y
# CONFIG_L2TP_V3 is not setCONFIG_STP=yCONFIG_BRIDGE=y
# CONFIG_BRIDGE_IGMP_SNOOPING is not set
# CONFIG_BRIDGE_MRP is not set
# CONFIG_BRIDGE_CFM is not set
# CONFIG_VLAN_8021Q is not set
# CONFIG_DECNET is not setCONFIG_LLC=yCONFIG_LLC2=y
# CONFIG_ATALK is not set
# CONFIG_X25 is not setCONFIG_LAPB=yCONFIG_PHONET=yCONFIG_6LOWPAN=yCONFIG_6LOWPAN_DEBUGFS=yCONFIG_6LOWPAN_NHC=yCONFIG_6LOWPAN_NHC_DEST=yCONFIG_6LOWPAN_NHC_FRAGMENT=yCONFIG_6LOWPAN_NHC_HOP=yCONFIG_6LOWPAN_NHC_IPV6=yCONFIG_6LOWPAN_NHC_MOBILITY=yCONFIG_6LOWPAN_NHC_ROUTING=y
# CONFIG_6LOWPAN_NHC_UDP is not setCONFIG_6LOWPAN_GHC_EXT_HDR_HOP=y
# CONFIG_6LOWPAN_GHC_UDP is not setCONFIG_6LOWPAN_GHC_ICMPV6=yCONFIG_6LOWPAN_GHC_EXT_HDR_DEST=yCONFIG_6LOWPAN_GHC_EXT_HDR_FRAG=yCONFIG_6LOWPAN_GHC_EXT_HDR_ROUTE=yCONFIG_IEEE802154=yCONFIG_IEEE802154_NL802154_EXPERIMENTAL=yCONFIG_IEEE802154_SOCKET=y
# CONFIG_IEEE802154_6LOWPAN is not set
# CONFIG_MAC802154 is not setCONFIG_NET_SCHED=y
#
# Queueing/Scheduling
#CONFIG_NET_SCH_CBQ=yCONFIG_NET_SCH_HTB=y
# CONFIG_NET_SCH_HFSC is not setCONFIG_NET_SCH_ATM=y
# CONFIG_NET_SCH_PRIO is not setCONFIG_NET_SCH_MULTIQ=y
# CONFIG_NET_SCH_RED is not setCONFIG_NET_SCH_SFB=yCONFIG_NET_SCH_SFQ=y
# CONFIG_NET_SCH_TEQL is not setCONFIG_NET_SCH_TBF=yCONFIG_NET_SCH_CBS=yCONFIG_NET_SCH_ETF=yCONFIG_NET_SCH_TAPRIO=yCONFIG_NET_SCH_GRED=yCONFIG_NET_SCH_DSMARK=y
# CONFIG_NET_SCH_NETEM is not setCONFIG_NET_SCH_DRR=y
# CONFIG_NET_SCH_MQPRIO is not setCONFIG_NET_SCH_SKBPRIO=yCONFIG_NET_SCH_CHOKE=y
# CONFIG_NET_SCH_QFQ is not setCONFIG_NET_SCH_CODEL=y
# CONFIG_NET_SCH_FQ_CODEL is not set
# CONFIG_NET_SCH_CAKE is not setCONFIG_NET_SCH_FQ=y
# CONFIG_NET_SCH_HHF is not set
# CONFIG_NET_SCH_PIE is not set
# CONFIG_NET_SCH_PLUG is not set
# CONFIG_NET_SCH_ETS is not setCONFIG_NET_SCH_DEFAULT=y
# CONFIG_DEFAULT_FQ is not setCONFIG_DEFAULT_CODEL=y
# CONFIG_DEFAULT_SFQ is not set
# CONFIG_DEFAULT_PFIFO_FAST is not setCONFIG_DEFAULT_NET_SCH="pfifo_fast"
#
# Classification
#CONFIG_NET_CLS=yCONFIG_NET_CLS_BASIC=y
# CONFIG_NET_CLS_TCINDEX is not setCONFIG_NET_CLS_ROUTE4=yCONFIG_NET_CLS_FW=y
# CONFIG_NET_CLS_U32 is not setCONFIG_NET_CLS_RSVP=yCONFIG_NET_CLS_RSVP6=yCONFIG_NET_CLS_FLOW=y
# CONFIG_NET_CLS_CGROUP is not setCONFIG_NET_CLS_BPF=yCONFIG_NET_CLS_FLOWER=y
# CONFIG_NET_CLS_MATCHALL is not set
# CONFIG_NET_EMATCH is not set
# CONFIG_NET_CLS_ACT is not setCONFIG_NET_SCH_FIFO=y
# CONFIG_DCB is not setCONFIG_DNS_RESOLVER=y
# CONFIG_BATMAN_ADV is not setCONFIG_OPENVSWITCH=yCONFIG_OPENVSWITCH_GRE=y
# CONFIG_VSOCKETS is not setCONFIG_NETLINK_DIAG=yCONFIG_MPLS=yCONFIG_NET_MPLS_GSO=yCONFIG_NET_NSH=yCONFIG_HSR=yCONFIG_NET_SWITCHDEV=yCONFIG_NET_L3_MASTER_DEV=yCONFIG_QRTR=y
# CONFIG_QRTR_SMD is not set
# CONFIG_QRTR_TUN is not set
# CONFIG_NET_NCSI is not set
# CONFIG_CGROUP_NET_PRIO is not set
# CONFIG_CGROUP_NET_CLASSID is not setCONFIG_NET_RX_BUSY_POLL=yCONFIG_BQL=y
#
# Network testing
#CONFIG_NET_PKTGEN=yCONFIG_NET_DROP_MONITOR=y
# end of Network testing # end of Networking options
CONFIG_HAMRADIO=y
#
# Packet Radio protocols
#CONFIG_AX25=y
# CONFIG_AX25_DAMA_SLAVE is not set
# CONFIG_NETROM is not setCONFIG_ROSE=y
#
# AX.25 network device drivers
#CONFIG_BPQETHER=y
# CONFIG_BAYCOM_SER_FDX is not set
# CONFIG_BAYCOM_SER_HDX is not setCONFIG_BAYCOM_PAR=y
# CONFIG_YAM is not set
# end of AX.25 network device drivers
# CONFIG_CAN is not set
# CONFIG_BT is not setCONFIG_AF_RXRPC=yCONFIG_AF_RXRPC_IPV6=yCONFIG_AF_RXRPC_INJECT_LOSS=yCONFIG_AF_RXRPC_DEBUG=y
# CONFIG_RXKAD is not setCONFIG_AF_KCM=yCONFIG_STREAM_PARSER=yCONFIG_MCTP=yCONFIG_MCTP_TEST=yCONFIG_FIB_RULES=y
# CONFIG_WIRELESS is not set
# CONFIG_RFKILL is not setCONFIG_NET_9P=y
# CONFIG_NET_9P_FD is not setCONFIG_NET_9P_VIRTIO=y
# CONFIG_NET_9P_DEBUG is not setCONFIG_CAIF=y
# CONFIG_CAIF_DEBUG is not setCONFIG_CAIF_NETDEV=y
# CONFIG_CAIF_USB is not setCONFIG_CEPH_LIB=y
# CONFIG_CEPH_LIB_PRETTYDEBUG is not set
# CONFIG_CEPH_LIB_USE_DNS_RESOLVER is not setCONFIG_NFC=y
# CONFIG_NFC_DIGITAL is not setCONFIG_NFC_NCI=y
# CONFIG_NFC_HCI is not set
#
# Near Field Communication (NFC) devices
#CONFIG_NFC_VIRTUAL_NCI=yCONFIG_NFC_FDP=y
# CONFIG_NFC_FDP_I2C is not setCONFIG_NFC_PN533=yCONFIG_NFC_PN533_USB=yCONFIG_NFC_PN533_I2C=y
# CONFIG_NFC_MRVL_USB is not setCONFIG_NFC_ST_NCI=yCONFIG_NFC_ST_NCI_I2C=yCONFIG_NFC_NXP_NCI=yCONFIG_NFC_NXP_NCI_I2C=y
# CONFIG_NFC_S3FWRN5_I2C is not set
# end of Near Field Communication (NFC) devices
CONFIG_PSAMPLE=y
# CONFIG_NET_IFE is not setCONFIG_LWTUNNEL=yCONFIG_LWTUNNEL_BPF=yCONFIG_DST_CACHE=yCONFIG_GRO_CELLS=yCONFIG_NET_SOCK_MSG=yCONFIG_PAGE_POOL=yCONFIG_PAGE_POOL_STATS=yCONFIG_FAILOVER=y
# CONFIG_ETHTOOL_NETLINK is not setCONFIG_NETDEV_ADDR_LIST_TEST=y
#
# Device Drivers
#CONFIG_HAVE_PCI=yCONFIG_PCI=yCONFIG_PCI_DOMAINS=yCONFIG_PCI_DOMAINS_GENERIC=yCONFIG_PCIEPORTBUS=yCONFIG_HOTPLUG_PCI_PCIE=yCONFIG_PCIEAER=yCONFIG_PCIEAER_INJECT=y
# CONFIG_PCIE_ECRC is not set
# CONFIG_PCIEASPM is not setCONFIG_PCIE_PME=y
# CONFIG_PCIE_DPC is not set
# CONFIG_PCIE_PTM is not setCONFIG_PCI_MSI=yCONFIG_PCI_MSI_IRQ_DOMAIN=y
# CONFIG_PCI_QUIRKS is not setCONFIG_PCI_DEBUG=yCONFIG_PCI_REALLOC_ENABLE_AUTO=yCONFIG_PCI_STUB=yCONFIG_PCI_PF_STUB=yCONFIG_PCI_ATS=yCONFIG_PCI_DOE=yCONFIG_PCI_ECAM=yCONFIG_PCI_IOV=yCONFIG_PCI_PRI=y
# CONFIG_PCI_PASID is not set
# CONFIG_PCIE_BUS_TUNE_OFF is not set
# CONFIG_PCIE_BUS_DEFAULT is not setCONFIG_PCIE_BUS_SAFE=y
# CONFIG_PCIE_BUS_PERFORMANCE is not set
# CONFIG_PCIE_BUS_PEER2PEER is not set
# CONFIG_VGA_ARB is not setCONFIG_HOTPLUG_PCI=y
# CONFIG_HOTPLUG_PCI_CPCI is not set
# CONFIG_HOTPLUG_PCI_SHPC is not set
#
# PCI controller drivers
#
# CONFIG_PCI_AARDVARK is not setCONFIG_PCIE_XILINX_NWL=yCONFIG_PCI_FTPCI100=y
# CONFIG_PCI_TEGRA is not setCONFIG_PCIE_RCAR_HOST=yCONFIG_PCI_HOST_COMMON=y
# CONFIG_PCI_HOST_GENERIC is not set
# CONFIG_PCIE_XILINX is not setCONFIG_PCIE_XILINX_CPM=y
# CONFIG_PCI_XGENE is not setCONFIG_PCI_V3_SEMI=y
# CONFIG_PCI_VERSATILE is not setCONFIG_PCIE_ALTERA=y
# CONFIG_PCIE_ALTERA_MSI is not setCONFIG_PCI_HOST_THUNDER_PEM=yCONFIG_PCI_HOST_THUNDER_ECAM=yCONFIG_PCIE_ROCKCHIP=yCONFIG_PCIE_ROCKCHIP_HOST=yCONFIG_PCIE_MEDIATEK=y
# CONFIG_PCIE_MEDIATEK_GEN3 is not set
# CONFIG_PCIE_BRCMSTB is not set
# CONFIG_PCIE_MICROCHIP_HOST is not setCONFIG_PCIE_APPLE_MSI_DOORBELL_ADDR=0xfffff000CONFIG_PCIE_APPLE=yCONFIG_PCIE_MT7621=y
#
# DesignWare PCI Core Support
#CONFIG_PCIE_DW=yCONFIG_PCIE_DW_HOST=y
# CONFIG_PCIE_DW_PLAT_HOST is not setCONFIG_PCI_EXYNOS=yCONFIG_PCI_IMX6=y
# CONFIG_PCIE_SPEAR13XX is not set
# CONFIG_PCI_KEYSTONE_HOST is not set
# CONFIG_PCI_LAYERSCAPE is not setCONFIG_PCI_HISI=y
# CONFIG_PCIE_QCOM is not setCONFIG_PCIE_ARMADA_8K=yCONFIG_PCIE_ARTPEC6=yCONFIG_PCIE_ARTPEC6_HOST=yCONFIG_PCIE_ROCKCHIP_DW_HOST=yCONFIG_PCIE_INTEL_GW=y
# CONFIG_PCIE_KEEMBAY_HOST is not setCONFIG_PCIE_KIRIN=yCONFIG_PCIE_HISI_STB=yCONFIG_PCI_MESON=y
# CONFIG_PCIE_TEGRA194_HOST is not set
# CONFIG_PCIE_VISCONTI_HOST is not setCONFIG_PCIE_UNIPHIER=yCONFIG_PCIE_AL=yCONFIG_PCIE_FU740=y
# end of DesignWare PCI Core Support
#
# Mobiveil PCIe Core Support
#
# CONFIG_PCIE_MOBIVEIL_PLAT is not set
# CONFIG_PCIE_LAYERSCAPE_GEN4 is not set
# end of Mobiveil PCIe Core Support
#
# Cadence PCIe controllers support
#CONFIG_PCIE_CADENCE=yCONFIG_PCIE_CADENCE_HOST=y
# CONFIG_PCIE_CADENCE_PLAT_HOST is not setCONFIG_PCI_J721E=yCONFIG_PCI_J721E_HOST=y
# end of Cadence PCIe controllers support # end of PCI controller drivers
#
# PCI Endpoint
#
# CONFIG_PCI_ENDPOINT is not set
# end of PCI Endpoint
#
# PCI switch controller drivers
#CONFIG_PCI_SW_SWITCHTEC=y
# end of PCI switch controller drivers
CONFIG_CXL_BUS=yCONFIG_CXL_PCI=yCONFIG_CXL_MEM_RAW_COMMANDS=y
# CONFIG_CXL_MEM is not setCONFIG_CXL_PORT=yCONFIG_PCCARD=y
# CONFIG_PCMCIA is not setCONFIG_CARDBUS=y
#
# PC-card bridges
#CONFIG_YENTA=y
# CONFIG_YENTA_O2 is not setCONFIG_YENTA_RICOH=y
# CONFIG_YENTA_TI is not set
# CONFIG_YENTA_TOSHIBA is not set
# CONFIG_RAPIDIO is not set
#
# Generic Driver Options
#CONFIG_AUXILIARY_BUS=y
# CONFIG_UEVENT_HELPER is not setCONFIG_DEVTMPFS=y
# CONFIG_DEVTMPFS_MOUNT is not setCONFIG_DEVTMPFS_SAFE=y
# CONFIG_STANDALONE is not set
# CONFIG_PREVENT_FIRMWARE_BUILD is not set
#
# Firmware loader
#CONFIG_FW_LOADER=y CONFIG_FW_LOADER_PAGED_BUF=y CONFIG_FW_LOADER_SYSFS=y CONFIG_EXTRA_FIRMWARE="" CONFIG_FW_LOADER_USER_HELPER=y
# CONFIG_FW_LOADER_USER_HELPER_FALLBACK is not set # CONFIG_FW_LOADER_COMPRESS is not set CONFIG_FW_UPLOAD=y
# end of Firmware loader
CONFIG_WANT_DEV_COREDUMP=y
# CONFIG_ALLOW_DEV_COREDUMP is not setCONFIG_DEBUG_DRIVER=yCONFIG_DEBUG_DEVRES=yCONFIG_DEBUG_TEST_DRIVER_REMOVE=yCONFIG_PM_QOS_KUNIT_TEST=yCONFIG_DRIVER_PE_KUNIT_TEST=yCONFIG_SOC_BUS=yCONFIG_REGMAP=yCONFIG_REGMAP_AC97=yCONFIG_REGMAP_I2C=yCONFIG_REGMAP_SLIMBUS=yCONFIG_REGMAP_SPMI=yCONFIG_REGMAP_W1=yCONFIG_REGMAP_MMIO=yCONFIG_REGMAP_IRQ=yCONFIG_REGMAP_SOUNDWIRE=yCONFIG_REGMAP_I3C=yCONFIG_DMA_SHARED_BUFFER=y
# CONFIG_DMA_FENCE_TRACE is not set
# end of Generic Driver Options
#
# Bus devices
#
# CONFIG_ARM_INTEGRATOR_LM is not set
# CONFIG_BT1_APB is not setCONFIG_BT1_AXI=yCONFIG_HISILICON_LPC=y
# CONFIG_INTEL_IXP4XX_EB is not setCONFIG_QCOM_EBI2=y
# CONFIG_MHI_BUS is not set
# CONFIG_MHI_BUS_EP is not set
# end of Bus devices
CONFIG_CONNECTOR=y
# CONFIG_PROC_EVENTS is not set
#
# Firmware Drivers
#
#
# ARM System Control and Management Interface Protocol #CONFIG_ARM_SCMI_PROTOCOL=y CONFIG_ARM_SCMI_HAVE_TRANSPORT=y CONFIG_ARM_SCMI_HAVE_MSG=y
# CONFIG_ARM_SCMI_TRANSPORT_MAILBOX is not set 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 is not set CONFIG_ARM_SCMI_POWER_CONTROL=y
# end of ARM System Control and Management Interface Protocol
# CONFIG_ARM_SCPI_PROTOCOL is not setCONFIG_ARM_SCPI_POWER_DOMAIN=yCONFIG_FIRMWARE_MEMMAP=yCONFIG_MTK_ADSP_IPC=yCONFIG_QCOM_SCM=yCONFIG_QCOM_SCM_DOWNLOAD_MODE_DEFAULT=yCONFIG_SYSFB=yCONFIG_SYSFB_SIMPLEFB=yCONFIG_TURRIS_MOX_RWTM=y
# CONFIG_BCM47XX_NVRAM is not setCONFIG_GOOGLE_FIRMWARE=y
# CONFIG_GOOGLE_COREBOOT_TABLE is not set
#
# EFI (Extensible Firmware Interface) Support
#CONFIG_EFI_ESRT=yCONFIG_EFI_PARAMS_FROM_FDT=yCONFIG_EFI_RUNTIME_WRAPPERS=yCONFIG_EFI_GENERIC_STUB=y
# CONFIG_EFI_BOOTLOADER_CONTROL is not setCONFIG_EFI_CAPSULE_LOADER=yCONFIG_EFI_TEST=yCONFIG_RESET_ATTACK_MITIGATION=y
# CONFIG_EFI_RCI2_TABLE is not setCONFIG_EFI_DISABLE_PCI_DMA=yCONFIG_EFI_DISABLE_RUNTIME=y
# CONFIG_EFI_COCO_SECRET is not set
# end of EFI (Extensible Firmware Interface) Support
CONFIG_IMX_DSP=yCONFIG_IMX_SCU=y
# CONFIG_IMX_SCU_PD is not set
#
# Tegra firmware driver
#
# end of Tegra firmware driver # end of Firmware Drivers
CONFIG_GNSS=yCONFIG_GNSS_USB=yCONFIG_MTD=y
#
# Partition parsers
#CONFIG_MTD_AR7_PARTS=yCONFIG_MTD_BCM63XX_PARTS=y
# CONFIG_MTD_CMDLINE_PARTS is not setCONFIG_MTD_OF_PARTS=y
# CONFIG_MTD_OF_PARTS_BCM4908 is not setCONFIG_MTD_OF_PARTS_LINKSYS_NS=yCONFIG_MTD_PARSER_IMAGETAG=yCONFIG_MTD_PARSER_TRX=yCONFIG_MTD_SHARPSL_PARTS=y
# CONFIG_MTD_REDBOOT_PARTS is not set
# end of Partition parsers
#
# User Modules And Translation Layers
#
# CONFIG_MTD_OOPS is not setCONFIG_MTD_PARTITIONED_MASTER=y
#
# RAM/ROM/Flash chip drivers
#CONFIG_MTD_CFI=yCONFIG_MTD_JEDECPROBE=yCONFIG_MTD_GEN_PROBE=y
# CONFIG_MTD_CFI_ADV_OPTIONS is not setCONFIG_MTD_MAP_BANK_WIDTH_1=yCONFIG_MTD_MAP_BANK_WIDTH_2=yCONFIG_MTD_MAP_BANK_WIDTH_4=yCONFIG_MTD_CFI_I1=yCONFIG_MTD_CFI_I2=y
# CONFIG_MTD_CFI_INTELEXT is not setCONFIG_MTD_CFI_AMDSTD=y
# CONFIG_MTD_CFI_STAA is not setCONFIG_MTD_CFI_UTIL=yCONFIG_MTD_RAM=yCONFIG_MTD_ROM=yCONFIG_MTD_ABSENT=y
# end of RAM/ROM/Flash chip drivers
#
# Mapping drivers for chip access
#
# CONFIG_MTD_COMPLEX_MAPPINGS is not setCONFIG_MTD_PHYSMAP=yCONFIG_MTD_PHYSMAP_COMPAT=yCONFIG_MTD_PHYSMAP_START=0x8000000CONFIG_MTD_PHYSMAP_LEN=0CONFIG_MTD_PHYSMAP_BANKWIDTH=2
# CONFIG_MTD_PHYSMAP_OF is not setCONFIG_MTD_SC520CDP=yCONFIG_MTD_NETSC520=yCONFIG_MTD_TS5500=yCONFIG_MTD_INTEL_VR_NOR=yCONFIG_MTD_PLATRAM=y
# end of Mapping drivers for chip access
#
# Self-contained MTD device drivers
#
# CONFIG_MTD_PMC551 is not setCONFIG_MTD_SPEAR_SMI=yCONFIG_MTD_SLRAM=yCONFIG_MTD_PHRAM=yCONFIG_MTD_MTDRAM=yCONFIG_MTDRAM_TOTAL_SIZE=4096CONFIG_MTDRAM_ERASE_SIZE=128
#
# Disk-On-Chip Device Drivers
#
# CONFIG_MTD_DOCG3 is not set
# end of Self-contained MTD device drivers
#
# NAND
#CONFIG_MTD_NAND_CORE=y
# CONFIG_MTD_ONENAND is not set
# CONFIG_MTD_RAW_NAND is not set
#
# ECC engine support
#CONFIG_MTD_NAND_ECC=yCONFIG_MTD_NAND_ECC_SW_HAMMING=y
# CONFIG_MTD_NAND_ECC_SW_HAMMING_SMC is not setCONFIG_MTD_NAND_ECC_SW_BCH=yCONFIG_MTD_NAND_ECC_MXIC=y
# CONFIG_MTD_NAND_ECC_MEDIATEK is not set
# end of ECC engine support # end of NAND
#
# LPDDR & LPDDR2 PCM memory drivers
#CONFIG_MTD_LPDDR=yCONFIG_MTD_QINFO_PROBE=y
# end of LPDDR & LPDDR2 PCM memory drivers
CONFIG_MTD_UBI=yCONFIG_MTD_UBI_WL_THRESHOLD=4096CONFIG_MTD_UBI_BEB_LIMIT=20CONFIG_MTD_UBI_FASTMAP=yCONFIG_MTD_UBI_GLUEBI=y
# CONFIG_MTD_HYPERBUS is not setCONFIG_DTC=yCONFIG_OF=yCONFIG_OF_UNITTEST=y
# CONFIG_OF_ALL_DTBS is not setCONFIG_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_OF_DMA_DEFAULT_COHERENT=yCONFIG_PARPORT=y
# CONFIG_PARPORT_PC is not set
# CONFIG_PARPORT_AX88796 is not set
# CONFIG_PARPORT_1284 is not set
#
# NVME Support
#
# end of NVME Support
#
# Misc devices
#CONFIG_SENSORS_LIS3LV02D=yCONFIG_AD525X_DPOT=yCONFIG_AD525X_DPOT_I2C=y
# CONFIG_DUMMY_IRQ is not setCONFIG_PHANTOM=yCONFIG_TIFM_CORE=yCONFIG_TIFM_7XX1=yCONFIG_ICS932S401=y
# CONFIG_ATMEL_SSC is not setCONFIG_ENCLOSURE_SERVICES=yCONFIG_HI6421V600_IRQ=y
# CONFIG_HP_ILO is not setCONFIG_QCOM_COINCELL=y
# CONFIG_QCOM_FASTRPC is not setCONFIG_APDS9802ALS=yCONFIG_ISL29003=y
# CONFIG_ISL29020 is not setCONFIG_SENSORS_TSL2550=yCONFIG_SENSORS_BH1770=yCONFIG_SENSORS_APDS990X=yCONFIG_HMC6352=yCONFIG_DS1682=y
# CONFIG_PCH_PHUB is not setCONFIG_SRAM=y
# CONFIG_DW_XDATA_PCIE is not setCONFIG_PCI_ENDPOINT_TEST=y
# CONFIG_XILINX_SDFEC is not setCONFIG_MISC_RTSX=yCONFIG_HISI_HIKEY_USB=yCONFIG_OPEN_DICE=y
# CONFIG_VCPU_STALL_DETECTOR is not set
# CONFIG_C2PORT is not set
#
# EEPROM support
#CONFIG_EEPROM_AT24=yCONFIG_EEPROM_LEGACY=y
# CONFIG_EEPROM_MAX6875 is not setCONFIG_EEPROM_93CX6=y
# CONFIG_EEPROM_IDT_89HPESX is not setCONFIG_EEPROM_EE1004=y
# end of EEPROM support
CONFIG_CB710_CORE=y
# CONFIG_CB710_DEBUG is not setCONFIG_CB710_DEBUG_ASSUMPTIONS=y
#
# Texas Instruments shared transport line discipline #
# end of Texas Instruments shared transport line discipline
CONFIG_SENSORS_LIS3_I2C=yCONFIG_ALTERA_STAPL=yCONFIG_GENWQE=yCONFIG_GENWQE_PLATFORM_ERROR_RECOVERY=0CONFIG_ECHO=yCONFIG_BCM_VK=yCONFIG_MISC_ALCOR_PCI=yCONFIG_MISC_RTSX_PCI=yCONFIG_MISC_RTSX_USB=yCONFIG_HABANA_AI=y
# CONFIG_UACCE is not setCONFIG_PVPANIC=yCONFIG_PVPANIC_MMIO=y
# CONFIG_PVPANIC_PCI is not set
# end of Misc devices
#
# SCSI device support
#CONFIG_SCSI_MOD=y
# end of SCSI device support
# CONFIG_FUSION is not set
#
# IEEE 1394 (FireWire) support
#
# CONFIG_FIREWIRE is not setCONFIG_FIREWIRE_NOSY=y
# end of IEEE 1394 (FireWire) support
# CONFIG_NETDEVICES is not set
#
# Input device support
#CONFIG_INPUT=yCONFIG_INPUT_LEDS=yCONFIG_INPUT_FF_MEMLESS=y
# CONFIG_INPUT_SPARSEKMAP is not setCONFIG_INPUT_MATRIXKMAP=yCONFIG_INPUT_VIVALDIFMAP=y
#
# Userland interfaces
#
# CONFIG_INPUT_MOUSEDEV is not setCONFIG_INPUT_JOYDEV=yCONFIG_INPUT_EVDEV=y
# CONFIG_INPUT_EVBUG is not set
#
# Input Device Drivers
#
# CONFIG_INPUT_KEYBOARD is not setCONFIG_INPUT_MOUSE=y
# CONFIG_MOUSE_PS2 is not setCONFIG_MOUSE_SERIAL=yCONFIG_MOUSE_APPLETOUCH=y
# CONFIG_MOUSE_BCM5974 is not setCONFIG_MOUSE_CYAPA=yCONFIG_MOUSE_ELAN_I2C=y
# CONFIG_MOUSE_ELAN_I2C_I2C is not set
# CONFIG_MOUSE_ELAN_I2C_SMBUS is not setCONFIG_MOUSE_VSXXXAA=yCONFIG_MOUSE_GPIO=yCONFIG_MOUSE_SYNAPTICS_I2C=y
# CONFIG_MOUSE_SYNAPTICS_USB is not setCONFIG_INPUT_JOYSTICK=y
# CONFIG_JOYSTICK_ANALOG is not set
# CONFIG_JOYSTICK_A3D is not set
# CONFIG_JOYSTICK_ADC is not setCONFIG_JOYSTICK_ADI=y
# CONFIG_JOYSTICK_COBRA is not set
# CONFIG_JOYSTICK_GF2K is not set
# CONFIG_JOYSTICK_GRIP is not setCONFIG_JOYSTICK_GRIP_MP=yCONFIG_JOYSTICK_GUILLEMOT=yCONFIG_JOYSTICK_INTERACT=yCONFIG_JOYSTICK_SIDEWINDER=y
# CONFIG_JOYSTICK_TMDC is not setCONFIG_JOYSTICK_IFORCE=y
# CONFIG_JOYSTICK_IFORCE_USB is not setCONFIG_JOYSTICK_IFORCE_232=y
# CONFIG_JOYSTICK_WARRIOR is not setCONFIG_JOYSTICK_MAGELLAN=yCONFIG_JOYSTICK_SPACEORB=yCONFIG_JOYSTICK_SPACEBALL=yCONFIG_JOYSTICK_STINGER=yCONFIG_JOYSTICK_TWIDJOY=y
# CONFIG_JOYSTICK_ZHENHUA is not setCONFIG_JOYSTICK_DB9=y
# CONFIG_JOYSTICK_GAMECON is not setCONFIG_JOYSTICK_TURBOGRAFX=y
# CONFIG_JOYSTICK_AS5011 is not set
# CONFIG_JOYSTICK_JOYDUMP is not set
# CONFIG_JOYSTICK_XPAD is not setCONFIG_JOYSTICK_WALKERA0701=yCONFIG_JOYSTICK_PXRC=y
# CONFIG_JOYSTICK_QWIIC is not setCONFIG_JOYSTICK_FSIA6B=y
# CONFIG_JOYSTICK_SENSEHAT is not set
# CONFIG_INPUT_TABLET is not setCONFIG_INPUT_TOUCHSCREEN=y
# CONFIG_TOUCHSCREEN_AD7879 is not setCONFIG_TOUCHSCREEN_ADC=y
# CONFIG_TOUCHSCREEN_AR1021_I2C is not set
# CONFIG_TOUCHSCREEN_ATMEL_MXT is not setCONFIG_TOUCHSCREEN_AUO_PIXCIR=y
# CONFIG_TOUCHSCREEN_BU21013 is not setCONFIG_TOUCHSCREEN_BU21029=yCONFIG_TOUCHSCREEN_CHIPONE_ICN8318=yCONFIG_TOUCHSCREEN_CY8CTMA140=yCONFIG_TOUCHSCREEN_CY8CTMG110=y
# CONFIG_TOUCHSCREEN_CYTTSP_CORE is not setCONFIG_TOUCHSCREEN_CYTTSP4_CORE=y
# CONFIG_TOUCHSCREEN_CYTTSP4_I2C is not setCONFIG_TOUCHSCREEN_DA9034=y
# CONFIG_TOUCHSCREEN_DYNAPRO is not setCONFIG_TOUCHSCREEN_HAMPSHIRE=y
# CONFIG_TOUCHSCREEN_EETI is not set
# CONFIG_TOUCHSCREEN_EGALAX is not setCONFIG_TOUCHSCREEN_EGALAX_SERIAL=y
# CONFIG_TOUCHSCREEN_EXC3000 is not setCONFIG_TOUCHSCREEN_FUJITSU=yCONFIG_TOUCHSCREEN_GOODIX=yCONFIG_TOUCHSCREEN_HIDEEP=yCONFIG_TOUCHSCREEN_HYCON_HY46XX=yCONFIG_TOUCHSCREEN_ILI210X=y
# CONFIG_TOUCHSCREEN_ILITEK is not set
# CONFIG_TOUCHSCREEN_IPROC is not setCONFIG_TOUCHSCREEN_S6SY761=y
# CONFIG_TOUCHSCREEN_GUNZE is not setCONFIG_TOUCHSCREEN_EKTF2127=y
# CONFIG_TOUCHSCREEN_ELAN is not setCONFIG_TOUCHSCREEN_ELO=yCONFIG_TOUCHSCREEN_WACOM_W8001=yCONFIG_TOUCHSCREEN_WACOM_I2C=yCONFIG_TOUCHSCREEN_MAX11801=y
# CONFIG_TOUCHSCREEN_MCS5000 is not setCONFIG_TOUCHSCREEN_MMS114=yCONFIG_TOUCHSCREEN_MELFAS_MIP4=yCONFIG_TOUCHSCREEN_MSG2638=yCONFIG_TOUCHSCREEN_MTOUCH=yCONFIG_TOUCHSCREEN_IMAGIS=yCONFIG_TOUCHSCREEN_IMX6UL_TSC=yCONFIG_TOUCHSCREEN_INEXIO=yCONFIG_TOUCHSCREEN_MK712=yCONFIG_TOUCHSCREEN_PENMOUNT=y
# CONFIG_TOUCHSCREEN_EDT_FT5X06 is not setCONFIG_TOUCHSCREEN_RASPBERRYPI_FW=yCONFIG_TOUCHSCREEN_MIGOR=yCONFIG_TOUCHSCREEN_TOUCHRIGHT=y
# CONFIG_TOUCHSCREEN_TOUCHWIN is not setCONFIG_TOUCHSCREEN_UCB1400=yCONFIG_TOUCHSCREEN_PIXCIR=yCONFIG_TOUCHSCREEN_WDT87XX_I2C=yCONFIG_TOUCHSCREEN_WM831X=yCONFIG_TOUCHSCREEN_WM97XX=y
# CONFIG_TOUCHSCREEN_WM9705 is not setCONFIG_TOUCHSCREEN_WM9712=yCONFIG_TOUCHSCREEN_WM9713=y
# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
# CONFIG_TOUCHSCREEN_MXS_LRADC is not setCONFIG_TOUCHSCREEN_MX25=yCONFIG_TOUCHSCREEN_MC13783=y
# CONFIG_TOUCHSCREEN_TOUCHIT213 is not setCONFIG_TOUCHSCREEN_TS4800=y
# CONFIG_TOUCHSCREEN_TSC_SERIO is not setCONFIG_TOUCHSCREEN_TSC200X_CORE=yCONFIG_TOUCHSCREEN_TSC2004=yCONFIG_TOUCHSCREEN_TSC2007=y
# CONFIG_TOUCHSCREEN_TSC2007_IIO is not setCONFIG_TOUCHSCREEN_RM_TS=y
# CONFIG_TOUCHSCREEN_SILEAD is not setCONFIG_TOUCHSCREEN_SIS_I2C=y
# CONFIG_TOUCHSCREEN_ST1232 is not setCONFIG_TOUCHSCREEN_STMFTS=y
# CONFIG_TOUCHSCREEN_SUN4I is not setCONFIG_TOUCHSCREEN_SX8654=yCONFIG_TOUCHSCREEN_TPS6507X=yCONFIG_TOUCHSCREEN_ZET6223=y
# CONFIG_TOUCHSCREEN_ZFORCE is not setCONFIG_TOUCHSCREEN_ROHM_BU21023=y
# CONFIG_TOUCHSCREEN_IQS5XX is not setCONFIG_TOUCHSCREEN_ZINITIX=y
# CONFIG_INPUT_MISC is not setCONFIG_RMI4_CORE=yCONFIG_RMI4_I2C=yCONFIG_RMI4_SMB=yCONFIG_RMI4_F03=yCONFIG_RMI4_F03_SERIO=yCONFIG_RMI4_2D_SENSOR=yCONFIG_RMI4_F11=yCONFIG_RMI4_F12=yCONFIG_RMI4_F30=yCONFIG_RMI4_F34=y
# CONFIG_RMI4_F3A is not setCONFIG_RMI4_F55=y
#
# Hardware I/O ports
#CONFIG_SERIO=y
# CONFIG_SERIO_PARKBD is not setCONFIG_SERIO_PCIPS2=y
# CONFIG_SERIO_LIBPS2 is not set
# CONFIG_SERIO_RAW is not setCONFIG_SERIO_ALTERA_PS2=y
# CONFIG_SERIO_PS2MULT is not set
# CONFIG_SERIO_ARC_PS2 is not setCONFIG_SERIO_APBPS2=yCONFIG_SERIO_OLPC_APSP=y
# CONFIG_SERIO_SUN4I_PS2 is not setCONFIG_SERIO_GPIO_PS2=yCONFIG_USERIO=yCONFIG_GAMEPORT=yCONFIG_GAMEPORT_NS558=y
# CONFIG_GAMEPORT_L4 is not set
# CONFIG_GAMEPORT_EMU10K1 is not set
# CONFIG_GAMEPORT_FM801 is not set
# end of Hardware I/O ports # end of Input device support
#
# Character devices
#
# CONFIG_TTY is not set
# CONFIG_SERIAL_DEV_BUS is not setCONFIG_PRINTER=y
# CONFIG_LP_CONSOLE is not setCONFIG_PPDEV=yCONFIG_IPMI_HANDLER=yCONFIG_IPMI_PLAT_DATA=yCONFIG_IPMI_PANIC_EVENT=yCONFIG_IPMI_PANIC_STRING=y
# CONFIG_IPMI_DEVICE_INTERFACE is not setCONFIG_IPMI_SI=yCONFIG_IPMI_SSIF=y
# CONFIG_IPMI_IPMB is not setCONFIG_IPMI_WATCHDOG=y
# CONFIG_IPMI_POWEROFF is not setCONFIG_IPMI_KCS_BMC=yCONFIG_ASPEED_KCS_IPMI_BMC=yCONFIG_NPCM7XX_KCS_IPMI_BMC=yCONFIG_IPMI_KCS_BMC_CDEV_IPMI=yCONFIG_IPMI_KCS_BMC_SERIO=y
# CONFIG_ASPEED_BT_IPMI_BMC is not setCONFIG_IPMB_DEVICE_INTERFACE=yCONFIG_HW_RANDOM=y
# CONFIG_HW_RANDOM_TIMERIOMEM is not setCONFIG_HW_RANDOM_ATMEL=y
# CONFIG_HW_RANDOM_BA431 is not setCONFIG_HW_RANDOM_BCM2835=yCONFIG_HW_RANDOM_IPROC_RNG200=yCONFIG_HW_RANDOM_IXP4XX=yCONFIG_HW_RANDOM_OMAP=yCONFIG_HW_RANDOM_OMAP3_ROM=y
# CONFIG_HW_RANDOM_VIRTIO is not setCONFIG_HW_RANDOM_IMX_RNGC=yCONFIG_HW_RANDOM_NOMADIK=yCONFIG_HW_RANDOM_STM32=yCONFIG_HW_RANDOM_MESON=yCONFIG_HW_RANDOM_MTK=y
# CONFIG_HW_RANDOM_EXYNOS is not setCONFIG_HW_RANDOM_NPCM=y
# CONFIG_HW_RANDOM_KEYSTONE is not setCONFIG_HW_RANDOM_CCTRNG=yCONFIG_HW_RANDOM_XIPHERA=yCONFIG_HW_RANDOM_CN10K=yCONFIG_APPLICOM=y
# CONFIG_DEVMEM is not setCONFIG_DEVPORT=y
# CONFIG_TCG_TPM is not setCONFIG_XILLYBUS_CLASS=yCONFIG_XILLYBUS=y
# CONFIG_XILLYBUS_PCIE is not setCONFIG_XILLYBUS_OF=yCONFIG_XILLYUSB=yCONFIG_RANDOM_TRUST_CPU=y
# CONFIG_RANDOM_TRUST_BOOTLOADER is not set
# end of Character devices
#
# I2C support
#CONFIG_I2C=yCONFIG_I2C_BOARDINFO=y
# CONFIG_I2C_COMPAT is not setCONFIG_I2C_CHARDEV=yCONFIG_I2C_MUX=y
#
# Multiplexer I2C Chip support
#CONFIG_I2C_ARB_GPIO_CHALLENGE=yCONFIG_I2C_MUX_GPIO=y
# CONFIG_I2C_MUX_GPMUX is not setCONFIG_I2C_MUX_LTC4306=yCONFIG_I2C_MUX_PCA9541=y
CONFIG_I2C_MUX_PCA954x=yCONFIG_I2C_MUX_PINCTRL=yCONFIG_I2C_MUX_REG=y
# CONFIG_I2C_DEMUX_PINCTRL is not setCONFIG_I2C_MUX_MLXCPLD=y
# end of Multiplexer I2C Chip support
# CONFIG_I2C_HELPER_AUTO is not setCONFIG_I2C_SMBUS=y
#
# I2C Algorithms
#CONFIG_I2C_ALGOBIT=y
# CONFIG_I2C_ALGOPCF is not setCONFIG_I2C_ALGOPCA=y
# end of I2C Algorithms
#
# I2C Hardware Bus support
#
#
# PC SMBus host controller drivers
#CONFIG_I2C_CCGX_UCSI=yCONFIG_I2C_ALI1535=y
# CONFIG_I2C_ALI1563 is not set
# CONFIG_I2C_ALI15X3 is not set
# CONFIG_I2C_AMD756 is not setCONFIG_I2C_AMD8111=yCONFIG_I2C_HIX5HD2=yCONFIG_I2C_I801=yCONFIG_I2C_ISCH=yCONFIG_I2C_PIIX4=yCONFIG_I2C_NFORCE2=yCONFIG_I2C_NVIDIA_GPU=y
# CONFIG_I2C_SIS5595 is not setCONFIG_I2C_SIS630=yCONFIG_I2C_SIS96X=yCONFIG_I2C_VIA=yCONFIG_I2C_VIAPRO=y
#
# I2C system bus drivers (mostly embedded / system-on-chip) #CONFIG_I2C_ALTERA=y
# CONFIG_I2C_ASPEED is not setCONFIG_I2C_AT91=y
# CONFIG_I2C_AT91_SLAVE_EXPERIMENTAL is not set CONFIG_I2C_AXXIA=yCONFIG_I2C_BCM2835=y
# CONFIG_I2C_BCM_IPROC is not set CONFIG_I2C_BCM_KONA=y
# CONFIG_I2C_BRCMSTB is not set CONFIG_I2C_CADENCE=y
# CONFIG_I2C_CBUS_GPIO is not set CONFIG_I2C_DAVINCI=yCONFIG_I2C_DESIGNWARE_CORE=y
# CONFIG_I2C_DESIGNWARE_SLAVE is not set CONFIG_I2C_DESIGNWARE_PLATFORM=y
# CONFIG_I2C_DESIGNWARE_PCI is not set
# CONFIG_I2C_DIGICOLOR is not set
# CONFIG_I2C_EG20T is not set
# CONFIG_I2C_EMEV2 is not set
# CONFIG_I2C_EXYNOS5 is not set
# CONFIG_I2C_GPIO is not set CONFIG_I2C_HIGHLANDER=yCONFIG_I2C_HISI=yCONFIG_I2C_IMG=y
# CONFIG_I2C_IMX is not setCONFIG_I2C_IMX_LPI2C=yCONFIG_I2C_IOP3XX=y
# CONFIG_I2C_JZ4780 is not setCONFIG_I2C_KEMPLD=yCONFIG_I2C_LPC2K=yCONFIG_I2C_MESON=yCONFIG_I2C_MICROCHIP_CORE=yCONFIG_I2C_MT65XX=y
# CONFIG_I2C_MT7621 is not set
# CONFIG_I2C_MV64XXX is not set
# CONFIG_I2C_MXS is not set
# CONFIG_I2C_NPCM is not setCONFIG_I2C_OCORES=yCONFIG_I2C_OMAP=yCONFIG_I2C_OWL=yCONFIG_I2C_APPLE=yCONFIG_I2C_PCA_PLATFORM=yCONFIG_I2C_PNX=yCONFIG_I2C_PXA=yCONFIG_I2C_PXA_SLAVE=yCONFIG_I2C_QCOM_CCI=yCONFIG_I2C_QUP=yCONFIG_I2C_RIIC=yCONFIG_I2C_RK3X=yCONFIG_I2C_RZV2M=y
# CONFIG_I2C_S3C2410 is not set CONFIG_I2C_SH_MOBILE=y
# CONFIG_I2C_SIMTEC is not setCONFIG_I2C_SPRD=yCONFIG_I2C_ST=yCONFIG_I2C_STM32F4=yCONFIG_I2C_STM32F7=y
# CONFIG_I2C_SUN6I_P2WI is not set CONFIG_I2C_SYNQUACER=yCONFIG_I2C_TEGRA=y
# CONFIG_I2C_TEGRA_BPMP is not set
# CONFIG_I2C_UNIPHIER is not set CONFIG_I2C_UNIPHIER_F=y
# CONFIG_I2C_VERSATILE is not setCONFIG_I2C_WMT=yCONFIG_I2C_THUNDERX=yCONFIG_I2C_XILINX=y
# CONFIG_I2C_XLP9XX is not set
# CONFIG_I2C_RCAR is not set
#
# External I2C/SMBus adapter drivers
#CONFIG_I2C_DIOLAN_U2C=y
# CONFIG_I2C_DLN2 is not set
# CONFIG_I2C_CP2615 is not set
# CONFIG_I2C_PARPORT is not setCONFIG_I2C_ROBOTFUZZ_OSIF=y
# CONFIG_I2C_TINY_USB is not setCONFIG_I2C_VIPERBOARD=y
#
# Other I2C/SMBus bus drivers
#
# CONFIG_I2C_MLXCPLD is not setCONFIG_I2C_CROS_EC_TUNNEL=y
# CONFIG_I2C_VIRTIO is not set
# end of I2C Hardware Bus support
CONFIG_I2C_SLAVE=yCONFIG_I2C_SLAVE_EEPROM=yCONFIG_I2C_SLAVE_TESTUNIT=yCONFIG_I2C_DEBUG_CORE=y
# CONFIG_I2C_DEBUG_ALGO is not setCONFIG_I2C_DEBUG_BUS=y
# end of I2C support
CONFIG_I3C=y
# CONFIG_CDNS_I3C_MASTER is not setCONFIG_DW_I3C_MASTER=yCONFIG_SVC_I3C_MASTER=yCONFIG_MIPI_I3C_HCI=y
# CONFIG_SPI is not setCONFIG_SPMI=yCONFIG_SPMI_HISI3670=yCONFIG_SPMI_MSM_PMIC_ARB=yCONFIG_SPMI_MTK_PMIF=yCONFIG_HSI=yCONFIG_HSI_BOARDINFO=y
#
# HSI controllers
#
#
# HSI clients
#CONFIG_HSI_CHAR=yCONFIG_PPS=y
# CONFIG_PPS_DEBUG is not set
#
# PPS clients support
#
# CONFIG_PPS_CLIENT_KTIMER is not setCONFIG_PPS_CLIENT_PARPORT=y
# CONFIG_PPS_CLIENT_GPIO is not set
#
# PPS generators support
#
#
# PTP clock support
#CONFIG_PTP_1588_CLOCK=yCONFIG_PTP_1588_CLOCK_OPTIONAL=yCONFIG_PTP_1588_CLOCK_DTE=yCONFIG_PTP_1588_CLOCK_QORIQ=y
#
# Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks. #CONFIG_PTP_1588_CLOCK_PCH=yCONFIG_PTP_1588_CLOCK_IDT82P33=y
# CONFIG_PTP_1588_CLOCK_IDTCM is not set
# end of PTP clock support
CONFIG_PINCTRL=yCONFIG_GENERIC_PINCTRL_GROUPS=yCONFIG_PINMUX=yCONFIG_GENERIC_PINMUX_FUNCTIONS=yCONFIG_PINCONF=yCONFIG_GENERIC_PINCONF=y
# CONFIG_DEBUG_PINCTRL is not setCONFIG_PINCTRL_AMD=yCONFIG_PINCTRL_AS3722=y
# CONFIG_PINCTRL_AT91PIO4 is not setCONFIG_PINCTRL_AXP209=y
# CONFIG_PINCTRL_BM1880 is not setCONFIG_PINCTRL_DA850_PUPD=yCONFIG_PINCTRL_DA9062=yCONFIG_PINCTRL_EQUILIBRIUM=y
# CONFIG_PINCTRL_INGENIC is not set
# CONFIG_PINCTRL_LPC18XX is not setCONFIG_PINCTRL_MCP23S08_I2C=yCONFIG_PINCTRL_MCP23S08=yCONFIG_PINCTRL_MICROCHIP_SGPIO=y
# CONFIG_PINCTRL_OCELOT is not set
# CONFIG_PINCTRL_PISTACHIO is not set
# CONFIG_PINCTRL_ROCKCHIP is not setCONFIG_PINCTRL_SINGLE=yCONFIG_PINCTRL_STMFX=y
# CONFIG_PINCTRL_SX150X is not setCONFIG_PINCTRL_OWL=y
# CONFIG_PINCTRL_S500 is not setCONFIG_PINCTRL_S700=y
# CONFIG_PINCTRL_S900 is not setCONFIG_PINCTRL_ASPEED=y
# CONFIG_PINCTRL_ASPEED_G4 is not setCONFIG_PINCTRL_ASPEED_G5=y
# CONFIG_PINCTRL_ASPEED_G6 is not set
# CONFIG_PINCTRL_BCM281XX is not set
# CONFIG_PINCTRL_BCM2835 is not set
# CONFIG_PINCTRL_BCM4908 is not setCONFIG_PINCTRL_BCM63XX=yCONFIG_PINCTRL_BCM6318=yCONFIG_PINCTRL_BCM6328=yCONFIG_PINCTRL_BCM6358=y
# CONFIG_PINCTRL_BCM6362 is not set
# CONFIG_PINCTRL_BCM6368 is not setCONFIG_PINCTRL_BCM63268=y
# CONFIG_PINCTRL_IPROC_GPIO is not setCONFIG_PINCTRL_CYGNUS_MUX=y
# CONFIG_PINCTRL_NS is not setCONFIG_PINCTRL_NSP_GPIO=y
# CONFIG_PINCTRL_NS2_MUX is not set
# CONFIG_PINCTRL_NSP_MUX is not setCONFIG_PINCTRL_BERLIN=yCONFIG_PINCTRL_AS370=yCONFIG_PINCTRL_BERLIN_BG4CT=yCONFIG_PINCTRL_MADERA=yCONFIG_PINCTRL_CS47L90=y
#
# 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=y
# CONFIG_PINCTRL_MT8135 is not setCONFIG_PINCTRL_MT8127=y
# CONFIG_PINCTRL_MT2712 is not set
# CONFIG_PINCTRL_MT6765 is not set
# CONFIG_PINCTRL_MT6779 is not set
# CONFIG_PINCTRL_MT6795 is not setCONFIG_PINCTRL_MT6797=yCONFIG_PINCTRL_MT7622=y
# CONFIG_PINCTRL_MT7986 is not set
# CONFIG_PINCTRL_MT8167 is not setCONFIG_PINCTRL_MT8173=yCONFIG_PINCTRL_MT8183=yCONFIG_PINCTRL_MT8186=y
# CONFIG_PINCTRL_MT8192 is not setCONFIG_PINCTRL_MT8195=y
# CONFIG_PINCTRL_MT8365 is not set
# CONFIG_PINCTRL_MT8516 is not set
# CONFIG_PINCTRL_MT6397 is not set
# end of MediaTek pinctrl drivers
CONFIG_PINCTRL_MESON=yCONFIG_PINCTRL_WPCM450=yCONFIG_PINCTRL_NPCM7XX=yCONFIG_PINCTRL_PXA=yCONFIG_PINCTRL_PXA25X=y
# CONFIG_PINCTRL_PXA27X is not setCONFIG_PINCTRL_MSM=yCONFIG_PINCTRL_APQ8064=yCONFIG_PINCTRL_APQ8084=yCONFIG_PINCTRL_IPQ4019=yCONFIG_PINCTRL_IPQ8064=yCONFIG_PINCTRL_IPQ8074=yCONFIG_PINCTRL_IPQ6018=yCONFIG_PINCTRL_MSM8226=y
# CONFIG_PINCTRL_MSM8660 is not setCONFIG_PINCTRL_MSM8960=yCONFIG_PINCTRL_MDM9607=yCONFIG_PINCTRL_MDM9615=y
# CONFIG_PINCTRL_MSM8X74 is not setCONFIG_PINCTRL_MSM8909=yCONFIG_PINCTRL_MSM8916=yCONFIG_PINCTRL_MSM8953=yCONFIG_PINCTRL_MSM8976=y
# CONFIG_PINCTRL_MSM8994 is not set
# CONFIG_PINCTRL_MSM8996 is not setCONFIG_PINCTRL_MSM8998=yCONFIG_PINCTRL_QCM2290=yCONFIG_PINCTRL_QCS404=yCONFIG_PINCTRL_QCOM_SPMI_PMIC=y
# CONFIG_PINCTRL_QCOM_SSBI_PMIC is not set
# CONFIG_PINCTRL_SC7180 is not setCONFIG_PINCTRL_SC7280=y
# CONFIG_PINCTRL_SC7280_LPASS_LPI is not setCONFIG_PINCTRL_SC8180X=yCONFIG_PINCTRL_SC8280XP=y
# CONFIG_PINCTRL_SDM660 is not setCONFIG_PINCTRL_SDM845=y
# CONFIG_PINCTRL_SDX55 is not setCONFIG_PINCTRL_SM6115=yCONFIG_PINCTRL_SM6125=yCONFIG_PINCTRL_SM6350=yCONFIG_PINCTRL_SM6375=yCONFIG_PINCTRL_SDX65=yCONFIG_PINCTRL_SM8150=y
# CONFIG_PINCTRL_SM8250 is not set
# CONFIG_PINCTRL_SM8250_LPASS_LPI is not set
# CONFIG_PINCTRL_SM8350 is not setCONFIG_PINCTRL_SM8450=yCONFIG_PINCTRL_LPASS_LPI=y
#
# 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=y
# CONFIG_PINCTRL_PFC_R8A7790 is not setCONFIG_PINCTRL_PFC_R8A77950=y
# CONFIG_PINCTRL_PFC_R8A77951 is not setCONFIG_PINCTRL_PFC_R8A7778=yCONFIG_PINCTRL_PFC_R8A7793=yCONFIG_PINCTRL_PFC_R8A7791=y
# CONFIG_PINCTRL_PFC_R8A77965 is not setCONFIG_PINCTRL_PFC_R8A77960=y
# CONFIG_PINCTRL_PFC_R8A77961 is not set
# CONFIG_PINCTRL_PFC_R8A779F0 is not setCONFIG_PINCTRL_PFC_R8A7792=y
# CONFIG_PINCTRL_PFC_R8A77980 is not setCONFIG_PINCTRL_PFC_R8A77970=yCONFIG_PINCTRL_PFC_R8A779A0=y
# CONFIG_PINCTRL_PFC_R8A779G0 is not set
# CONFIG_PINCTRL_PFC_R8A7740 is not set
# CONFIG_PINCTRL_PFC_R8A73A4 is not setCONFIG_PINCTRL_RZA1=y
# CONFIG_PINCTRL_RZA2 is not setCONFIG_PINCTRL_RZG2L=yCONFIG_PINCTRL_PFC_R8A77470=y
# CONFIG_PINCTRL_PFC_R8A7745 is not set
# CONFIG_PINCTRL_PFC_R8A7742 is not set
# CONFIG_PINCTRL_PFC_R8A7743 is not set
# CONFIG_PINCTRL_PFC_R8A7744 is not set
# CONFIG_PINCTRL_PFC_R8A774C0 is not setCONFIG_PINCTRL_PFC_R8A774E1=y
# CONFIG_PINCTRL_PFC_R8A774A1 is not setCONFIG_PINCTRL_PFC_R8A774B1=y
# CONFIG_PINCTRL_RZN1 is not set
# CONFIG_PINCTRL_RZV2M is not setCONFIG_PINCTRL_PFC_SH7203=yCONFIG_PINCTRL_PFC_SH7264=y
# CONFIG_PINCTRL_PFC_SH7269 is not setCONFIG_PINCTRL_PFC_SH7720=yCONFIG_PINCTRL_PFC_SH7722=y
# CONFIG_PINCTRL_PFC_SH7734 is not setCONFIG_PINCTRL_PFC_SH7757=y
# CONFIG_PINCTRL_PFC_SH7785 is not setCONFIG_PINCTRL_PFC_SH7786=y
# CONFIG_PINCTRL_PFC_SH73A0 is not setCONFIG_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=y
# CONFIG_PINCTRL_EXYNOS_ARM64 is not setCONFIG_PINCTRL_S3C24XX=yCONFIG_PINCTRL_S3C64XX=yCONFIG_PINCTRL_SPRD=yCONFIG_PINCTRL_SPRD_SC9860=yCONFIG_PINCTRL_STARFIVE_JH7100=yCONFIG_PINCTRL_STARFIVE=yCONFIG_PINCTRL_STARFIVE_JH7110=yCONFIG_PINCTRL_STM32=yCONFIG_PINCTRL_STM32F429=yCONFIG_PINCTRL_STM32F469=yCONFIG_PINCTRL_STM32F746=y
# CONFIG_PINCTRL_STM32F769 is not setCONFIG_PINCTRL_STM32H743=yCONFIG_PINCTRL_STM32MP135=y
# CONFIG_PINCTRL_STM32MP157 is not setCONFIG_PINCTRL_TI_IODELAY=y
# CONFIG_PINCTRL_UNIPHIER is not set
# CONFIG_PINCTRL_TMPV7700 is not setCONFIG_GPIOLIB=yCONFIG_GPIOLIB_FASTPATH_LIMIT=512CONFIG_OF_GPIO=yCONFIG_GPIOLIB_IRQCHIP=y
# CONFIG_DEBUG_GPIO is not setCONFIG_GPIO_SYSFS=yCONFIG_GPIO_CDEV=y
# CONFIG_GPIO_CDEV_V1 is not setCONFIG_GPIO_GENERIC=yCONFIG_GPIO_REGMAP=yCONFIG_GPIO_MAX730X=y
#
# Memory mapped GPIO drivers
#CONFIG_GPIO_74XX_MMIO=yCONFIG_GPIO_ALTERA=yCONFIG_GPIO_ASPEED=y
# CONFIG_GPIO_ASPEED_SGPIO is not set
# CONFIG_GPIO_ATH79 is not set
# CONFIG_GPIO_RASPBERRYPI_EXP is not set
# CONFIG_GPIO_BCM_KONA is not setCONFIG_GPIO_BCM_XGS_IPROC=y
# CONFIG_GPIO_BRCMSTB is not setCONFIG_GPIO_CADENCE=yCONFIG_GPIO_CLPS711X=yCONFIG_GPIO_DWAPB=yCONFIG_GPIO_EIC_SPRD=yCONFIG_GPIO_EM=y
# CONFIG_GPIO_FTGPIO010 is not set
# CONFIG_GPIO_GENERIC_PLATFORM is not setCONFIG_GPIO_GRGPIO=y
# CONFIG_GPIO_HISI is not setCONFIG_GPIO_HLWD=yCONFIG_GPIO_IOP=y
# CONFIG_GPIO_LOGICVC is not setCONFIG_GPIO_LPC18XX=y
# CONFIG_GPIO_LPC32XX is not set
# CONFIG_GPIO_MB86S7X is not setCONFIG_GPIO_MENZ127=yCONFIG_GPIO_MPC8XXX=y
# CONFIG_GPIO_MT7621 is not setCONFIG_GPIO_MXC=yCONFIG_GPIO_MXS=y
# CONFIG_GPIO_PMIC_EIC_SPRD is not set
# CONFIG_GPIO_PXA is not setCONFIG_GPIO_RCAR=y
# CONFIG_GPIO_RDA is not setCONFIG_GPIO_ROCKCHIP=y
# CONFIG_GPIO_SAMA5D2_PIOBU is not set
# CONFIG_GPIO_SIFIVE is not setCONFIG_GPIO_SIOX=y
# CONFIG_GPIO_SNPS_CREG is not setCONFIG_GPIO_SPRD=y
# CONFIG_GPIO_STP_XWAY is not set
# CONFIG_GPIO_SYSCON is not setCONFIG_GPIO_TEGRA=y
# CONFIG_GPIO_TEGRA186 is not setCONFIG_GPIO_TS4800=yCONFIG_GPIO_THUNDERX=y
# CONFIG_GPIO_UNIPHIER is not set
# CONFIG_GPIO_VISCONTI is not setCONFIG_GPIO_VX855=y
# CONFIG_GPIO_WCD934X is not set
# CONFIG_GPIO_XGENE_SB is not setCONFIG_GPIO_XILINX=yCONFIG_GPIO_XLP=yCONFIG_GPIO_AMD_FCH=yCONFIG_GPIO_IDT3243X=y
# end of Memory mapped GPIO drivers
#
# I2C GPIO expanders
#
# CONFIG_GPIO_ADP5588 is not set
# CONFIG_GPIO_ADNP is not setCONFIG_GPIO_GW_PLD=yCONFIG_GPIO_MAX7300=y
# CONFIG_GPIO_MAX732X is not setCONFIG_GPIO_PCA953X=y
# CONFIG_GPIO_PCA953X_IRQ is not setCONFIG_GPIO_PCA9570=y
# CONFIG_GPIO_PCF857X is not set
# CONFIG_GPIO_TPIC2810 is not setCONFIG_GPIO_TS4900=y
# end of I2C GPIO expanders
#
# MFD GPIO expanders
#CONFIG_GPIO_ADP5520=y
# CONFIG_GPIO_ARIZONA is not setCONFIG_GPIO_BD71815=yCONFIG_GPIO_BD71828=y
# CONFIG_GPIO_BD9571MWV is not set
# CONFIG_GPIO_DLN2 is not setCONFIG_GPIO_JANZ_TTL=yCONFIG_GPIO_KEMPLD=yCONFIG_GPIO_LP3943=yCONFIG_GPIO_LP87565=yCONFIG_GPIO_MADERA=y
# CONFIG_GPIO_RC5T583 is not setCONFIG_GPIO_SL28CPLD=yCONFIG_GPIO_TC3589X=y
# CONFIG_GPIO_TIMBERDALE is not setCONFIG_GPIO_TPS65086=yCONFIG_GPIO_TPS65218=y
# CONFIG_GPIO_TPS6586X is not setCONFIG_GPIO_TPS65912=yCONFIG_GPIO_TQMX86=yCONFIG_GPIO_TWL4030=yCONFIG_GPIO_UCB1400=y
# CONFIG_GPIO_WM831X is not set
# CONFIG_GPIO_WM8994 is not set
# end of MFD GPIO expanders
#
# PCI GPIO expanders
#CONFIG_GPIO_AMD8111=yCONFIG_GPIO_BT8XX=yCONFIG_GPIO_MLXBF=yCONFIG_GPIO_MLXBF2=yCONFIG_GPIO_ML_IOH=yCONFIG_GPIO_PCH=y
# CONFIG_GPIO_PCI_IDIO_16 is not setCONFIG_GPIO_PCIE_IDIO_24=yCONFIG_GPIO_RDC321X=y
# end of PCI GPIO expanders
#
# USB GPIO expanders
#CONFIG_GPIO_VIPERBOARD=y
# end of USB GPIO expanders
#
# Virtual GPIO drivers
#
# CONFIG_GPIO_AGGREGATOR is not set
# CONFIG_GPIO_MOCKUP is not setCONFIG_GPIO_VIRTIO=y
# CONFIG_GPIO_SIM is not set
# end of Virtual GPIO drivers
CONFIG_W1=y
# CONFIG_W1_CON is not set
#
# 1-wire Bus Masters
#CONFIG_W1_MASTER_MATROX=yCONFIG_W1_MASTER_DS2490=yCONFIG_W1_MASTER_DS2482=yCONFIG_W1_MASTER_MXC=y
# CONFIG_W1_MASTER_DS1WM is not set
# CONFIG_W1_MASTER_GPIO is not setCONFIG_W1_MASTER_SGI=y
# end of 1-wire Bus Masters
#
# 1-wire Slaves
#
# CONFIG_W1_SLAVE_THERM is not set
# CONFIG_W1_SLAVE_SMEM is not setCONFIG_W1_SLAVE_DS2405=yCONFIG_W1_SLAVE_DS2408=y
# CONFIG_W1_SLAVE_DS2408_READBACK is not set
# CONFIG_W1_SLAVE_DS2413 is not setCONFIG_W1_SLAVE_DS2406=yCONFIG_W1_SLAVE_DS2423=y
# CONFIG_W1_SLAVE_DS2805 is not set
# CONFIG_W1_SLAVE_DS2430 is not set
# CONFIG_W1_SLAVE_DS2431 is not setCONFIG_W1_SLAVE_DS2433=yCONFIG_W1_SLAVE_DS2433_CRC=yCONFIG_W1_SLAVE_DS2438=yCONFIG_W1_SLAVE_DS250X=yCONFIG_W1_SLAVE_DS2780=yCONFIG_W1_SLAVE_DS2781=yCONFIG_W1_SLAVE_DS28E04=y
# CONFIG_W1_SLAVE_DS28E17 is not set
# end of 1-wire Slaves
CONFIG_POWER_RESET=y CONFIG_POWER_RESET_AS3722=y
# CONFIG_POWER_RESET_BRCMKONA is not set CONFIG_POWER_RESET_BRCMSTB=y
# CONFIG_POWER_RESET_GEMINI_POWEROFF is not set # CONFIG_POWER_RESET_GPIO is not set CONFIG_POWER_RESET_GPIO_RESTART=y CONFIG_POWER_RESET_OCELOT_RESET=y CONFIG_POWER_RESET_PIIX4_POWEROFF=y
# CONFIG_POWER_RESET_LTC2952 is not set CONFIG_POWER_RESET_MT6323=y
# CONFIG_POWER_RESET_REGULATOR is not set CONFIG_POWER_RESET_RESTART=y CONFIG_POWER_RESET_TPS65086=y
# CONFIG_POWER_RESET_KEYSTONE is not set CONFIG_POWER_RESET_SYSCON=y CONFIG_POWER_RESET_SYSCON_POWEROFF=y
# CONFIG_POWER_RESET_RMOBILE is not set CONFIG_REBOOT_MODE=y
# CONFIG_SYSCON_REBOOT_MODE is not set
# CONFIG_POWER_RESET_SC27XX is not set CONFIG_NVMEM_REBOOT_MODE=y CONFIG_POWER_SUPPLY=y CONFIG_POWER_SUPPLY_DEBUG=y
# CONFIG_POWER_SUPPLY_HWMON is not set
# CONFIG_PDA_POWER is not set
# CONFIG_GENERIC_ADC_BATTERY is not set CONFIG_IP5XXX_POWER=y CONFIG_WM831X_BACKUP=y CONFIG_WM831X_POWER=yCONFIG_TEST_POWER=y
# CONFIG_CHARGER_ADP5061 is not set CONFIG_BATTERY_ACT8945A=y
# CONFIG_BATTERY_CW2015 is not set CONFIG_BATTERY_DS2760=y CONFIG_BATTERY_DS2780=y CONFIG_BATTERY_DS2781=y CONFIG_BATTERY_DS2782=y
# CONFIG_BATTERY_LEGO_EV3 is not set CONFIG_BATTERY_SAMSUNG_SDI=y CONFIG_BATTERY_INGENIC=y
# CONFIG_BATTERY_WM97XX is not set CONFIG_BATTERY_SBS=y
# CONFIG_CHARGER_SBS is not set CONFIG_MANAGER_SBS=y CONFIG_BATTERY_BQ27XXX=y CONFIG_BATTERY_BQ27XXX_I2C=y CONFIG_BATTERY_BQ27XXX_HDQ=y
# CONFIG_BATTERY_BQ27XXX_DT_UPDATES_NVM is not set CONFIG_BATTERY_DA9030=y CONFIG_CHARGER_AXP20X=y CONFIG_BATTERY_AXP20X=y
# CONFIG_AXP20X_POWER is not set CONFIG_BATTERY_MAX17040=y CONFIG_BATTERY_MAX17042=y CONFIG_BATTERY_MAX1721X=y CONFIG_BATTERY_TWL4030_MADC=y CONFIG_CHARGER_PCF50633=y
# CONFIG_BATTERY_RX51 is not set CONFIG_CHARGER_ISP1704=y
# CONFIG_CHARGER_MAX8903 is not set CONFIG_CHARGER_TWL4030=y CONFIG_CHARGER_LP8727=y CONFIG_CHARGER_GPIO=y CONFIG_CHARGER_MANAGER=y CONFIG_CHARGER_LT3651=y CONFIG_CHARGER_LTC4162L=y CONFIG_CHARGER_DETECTOR_MAX14656=y
# CONFIG_CHARGER_MAX77976 is not set CONFIG_CHARGER_MAX8998=y
# CONFIG_CHARGER_MP2629 is not set CONFIG_CHARGER_MT6360=y
# CONFIG_CHARGER_QCOM_SMBB is not set
# CONFIG_CHARGER_BQ2415X is not set CONFIG_CHARGER_BQ24190=y CONFIG_CHARGER_BQ24257=y CONFIG_CHARGER_BQ24735=y
# CONFIG_CHARGER_BQ2515X is not set
# CONFIG_CHARGER_BQ25890 is not set CONFIG_CHARGER_BQ25980=y CONFIG_CHARGER_BQ256XX=y CONFIG_CHARGER_SMB347=y CONFIG_CHARGER_TPS65090=y
# CONFIG_CHARGER_TPS65217 is not set CONFIG_BATTERY_GAUGE_LTC2941=y
# CONFIG_BATTERY_GOLDFISH is not set CONFIG_BATTERY_RT5033=y
# CONFIG_CHARGER_RT9455 is not set CONFIG_CHARGER_SC2731=y
# CONFIG_FUEL_GAUGE_SC27XX is not set CONFIG_CHARGER_UCS1002=y CONFIG_CHARGER_BD99954=y CONFIG_RN5T618_POWER=y
# CONFIG_BATTERY_ACER_A500 is not set CONFIG_BATTERY_UG3105=yCONFIG_HWMON=yCONFIG_HWMON_VID=y CONFIG_HWMON_DEBUG_CHIP=y
#
# Native drivers
#CONFIG_SENSORS_AD7414=y
# CONFIG_SENSORS_AD7418 is not set CONFIG_SENSORS_ADM1025=y CONFIG_SENSORS_ADM1026=y CONFIG_SENSORS_ADM1029=y CONFIG_SENSORS_ADM1031=y CONFIG_SENSORS_ADM1177=y CONFIG_SENSORS_ADM9240=y CONFIG_SENSORS_ADT7X10=y CONFIG_SENSORS_ADT7410=y
# CONFIG_SENSORS_ADT7411 is not set CONFIG_SENSORS_ADT7462=y CONFIG_SENSORS_ADT7470=y
# CONFIG_SENSORS_ADT7475 is not set CONFIG_SENSORS_AHT10=y CONFIG_SENSORS_AS370=y
# CONFIG_SENSORS_ASC7621 is not set CONFIG_SENSORS_AXI_FAN_CONTROL=y
# CONFIG_SENSORS_ARM_SCMI is not set CONFIG_SENSORS_ASB100=y CONFIG_SENSORS_ASPEED=y CONFIG_SENSORS_ATXP1=y CONFIG_SENSORS_BT1_PVT=y
# CONFIG_SENSORS_BT1_PVT_ALARMS is not set # CONFIG_SENSORS_CORSAIR_CPRO is not set CONFIG_SENSORS_CORSAIR_PSU=y
# CONFIG_SENSORS_DS620 is not set CONFIG_SENSORS_DS1621=y CONFIG_SENSORS_I5K_AMB=y CONFIG_SENSORS_SPARX5=y CONFIG_SENSORS_F71805F=y CONFIG_SENSORS_F71882FG=y CONFIG_SENSORS_F75375S=y CONFIG_SENSORS_GSC=y CONFIG_SENSORS_MC13783_ADC=y CONFIG_SENSORS_FSCHMD=y
# CONFIG_SENSORS_FTSTEUTATES is not set CONFIG_SENSORS_GL518SM=y
# CONFIG_SENSORS_GL520SM is not set
# CONFIG_SENSORS_G760A is not set
# CONFIG_SENSORS_G762 is not set
# CONFIG_SENSORS_GPIO_FAN is not set
# CONFIG_SENSORS_HIH6130 is not set CONFIG_SENSORS_IBMAEM=y CONFIG_SENSORS_IBMPEX=y
# CONFIG_SENSORS_IIO_HWMON is not set CONFIG_SENSORS_IT87=y CONFIG_SENSORS_JC42=y CONFIG_SENSORS_POWR1220=y CONFIG_SENSORS_LAN966X=y CONFIG_SENSORS_LINEAGE=y CONFIG_SENSORS_LTC2945=y
# CONFIG_SENSORS_LTC2947_I2C is not set CONFIG_SENSORS_LTC2990=y
# CONFIG_SENSORS_LTC2992 is not set CONFIG_SENSORS_LTC4151=y
# CONFIG_SENSORS_LTC4215 is not set CONFIG_SENSORS_LTC4222=y CONFIG_SENSORS_LTC4245=y
# CONFIG_SENSORS_LTC4260 is not set
# CONFIG_SENSORS_LTC4261 is not set CONFIG_SENSORS_MAX127=y CONFIG_SENSORS_MAX16065=y
# CONFIG_SENSORS_MAX1619 is not set CONFIG_SENSORS_MAX1668=y
# CONFIG_SENSORS_MAX197 is not set CONFIG_SENSORS_MAX31730=y
# CONFIG_SENSORS_MAX6620 is not set CONFIG_SENSORS_MAX6621=y CONFIG_SENSORS_MAX6639=y CONFIG_SENSORS_MAX6650=y
# CONFIG_SENSORS_MAX6697 is not set
# CONFIG_SENSORS_MAX31790 is not set CONFIG_SENSORS_MCP3021=y CONFIG_SENSORS_TC654=y
# CONFIG_SENSORS_TPS23861 is not set CONFIG_SENSORS_MENF21BMC_HWMON=y
# CONFIG_SENSORS_MR75203 is not set
# CONFIG_SENSORS_LM63 is not set
# CONFIG_SENSORS_LM73 is not set CONFIG_SENSORS_LM75=y CONFIG_SENSORS_LM77=y CONFIG_SENSORS_LM78=y CONFIG_SENSORS_LM80=y CONFIG_SENSORS_LM83=y
# CONFIG_SENSORS_LM85 is not set CONFIG_SENSORS_LM87=y CONFIG_SENSORS_LM90=y
# CONFIG_SENSORS_LM92 is not set CONFIG_SENSORS_LM93=y
# CONFIG_SENSORS_LM95234 is not set
# CONFIG_SENSORS_LM95241 is not set CONFIG_SENSORS_LM95245=y CONFIG_SENSORS_PC87360=y CONFIG_SENSORS_PC87427=y
# CONFIG_SENSORS_NTC_THERMISTOR is not set # CONFIG_SENSORS_NCT6683 is not set CONFIG_SENSORS_NCT6775_CORE=y
# CONFIG_SENSORS_NCT6775 is not set CONFIG_SENSORS_NCT6775_I2C=y CONFIG_SENSORS_NCT7802=y CONFIG_SENSORS_NCT7904=y CONFIG_SENSORS_NPCM7XX=y
# CONFIG_SENSORS_NSA320 is not set CONFIG_SENSORS_OCC_P8_I2C=y CONFIG_SENSORS_OCC=y
# CONFIG_SENSORS_PCF8591 is not set CONFIG_PMBUS=yCONFIG_SENSORS_PMBUS=y
# CONFIG_SENSORS_ADM1266 is not set CONFIG_SENSORS_ADM1275=y CONFIG_SENSORS_BEL_PFE=y
# CONFIG_SENSORS_BPA_RS600 is not set
# CONFIG_SENSORS_DELTA_AHE50DC_FAN is not set CONFIG_SENSORS_FSP_3Y=y CONFIG_SENSORS_IBM_CFFPS=y CONFIG_SENSORS_DPS920AB=y CONFIG_SENSORS_INSPUR_IPSPS=y CONFIG_SENSORS_IR35221=y CONFIG_SENSORS_IR36021=y
# CONFIG_SENSORS_IR38064 is not set
# CONFIG_SENSORS_IRPS5401 is not set CONFIG_SENSORS_ISL68137=y CONFIG_SENSORS_LM25066=y
# CONFIG_SENSORS_LM25066_REGULATOR is not set # CONFIG_SENSORS_LT7182S is not set CONFIG_SENSORS_LTC2978=y
# CONFIG_SENSORS_LTC2978_REGULATOR is not set # CONFIG_SENSORS_LTC3815 is not set CONFIG_SENSORS_MAX15301=y CONFIG_SENSORS_MAX16064=y CONFIG_SENSORS_MAX16601=y CONFIG_SENSORS_MAX20730=y CONFIG_SENSORS_MAX20751=y
# CONFIG_SENSORS_MAX31785 is not set CONFIG_SENSORS_MAX34440=y
# CONFIG_SENSORS_MAX8688 is not set
# CONFIG_SENSORS_MP2888 is not set CONFIG_SENSORS_MP2975=y
# CONFIG_SENSORS_MP5023 is not set CONFIG_SENSORS_PIM4328=y CONFIG_SENSORS_PLI1209BC=y CONFIG_SENSORS_PLI1209BC_REGULATOR=y CONFIG_SENSORS_PM6764TR=y CONFIG_SENSORS_PXE1610=y CONFIG_SENSORS_Q54SJ108A2=y CONFIG_SENSORS_STPDDC60=y CONFIG_SENSORS_TPS40422=y CONFIG_SENSORS_TPS53679=y CONFIG_SENSORS_UCD9000=y CONFIG_SENSORS_UCD9200=y CONFIG_SENSORS_XDPE152=y CONFIG_SENSORS_XDPE122=y
# CONFIG_SENSORS_XDPE122_REGULATOR is not set # CONFIG_SENSORS_ZL6100 is not set
# CONFIG_SENSORS_PWM_FAN is not set CONFIG_SENSORS_RASPBERRYPI_HWMON=y CONFIG_SENSORS_SL28CPLD=y CONFIG_SENSORS_SBTSI=y CONFIG_SENSORS_SBRMI=y CONFIG_SENSORS_SHT15=y
# CONFIG_SENSORS_SHT21 is not set
# CONFIG_SENSORS_SHT3x is not set CONFIG_SENSORS_SHT4x=y
# CONFIG_SENSORS_SHTC1 is not set
# CONFIG_SENSORS_SIS5595 is not set CONFIG_SENSORS_SY7636A=y
# CONFIG_SENSORS_DME1737 is not set CONFIG_SENSORS_EMC1403=y CONFIG_SENSORS_EMC2103=y CONFIG_SENSORS_EMC6W201=y
# CONFIG_SENSORS_SMSC47M1 is not set CONFIG_SENSORS_SMSC47M192=y CONFIG_SENSORS_SMSC47B397=y CONFIG_SENSORS_SCH56XX_COMMON=y CONFIG_SENSORS_SCH5627=y CONFIG_SENSORS_SCH5636=y CONFIG_SENSORS_STTS751=y CONFIG_SENSORS_SMM665=y
# CONFIG_SENSORS_ADC128D818 is not set CONFIG_SENSORS_ADS7828=y
# CONFIG_SENSORS_AMC6821 is not set CONFIG_SENSORS_INA209=y CONFIG_SENSORS_INA2XX=y CONFIG_SENSORS_INA238=y CONFIG_SENSORS_INA3221=y
# CONFIG_SENSORS_TC74 is not set CONFIG_SENSORS_THMC50=y CONFIG_SENSORS_TMP102=y CONFIG_SENSORS_TMP103=y CONFIG_SENSORS_TMP108=y CONFIG_SENSORS_TMP401=y CONFIG_SENSORS_TMP421=y CONFIG_SENSORS_TMP464=y CONFIG_SENSORS_TMP513=y
# CONFIG_SENSORS_VIA686A is not set
# CONFIG_SENSORS_VT1211 is not set CONFIG_SENSORS_VT8231=y CONFIG_SENSORS_W83773G=y CONFIG_SENSORS_W83781D=y
# CONFIG_SENSORS_W83791D is not set CONFIG_SENSORS_W83792D=y CONFIG_SENSORS_W83793=y CONFIG_SENSORS_W83795=y CONFIG_SENSORS_W83795_FANCTRL=y CONFIG_SENSORS_W83L785TS=y
# CONFIG_SENSORS_W83L786NG is not set CONFIG_SENSORS_W83627HF=y CONFIG_SENSORS_W83627EHF=y
# CONFIG_SENSORS_WM831X is not set CONFIG_THERMAL=yCONFIG_THERMAL_NETLINK=y CONFIG_THERMAL_STATISTICS=y CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0 CONFIG_THERMAL_HWMON=y
# CONFIG_THERMAL_OF is not set
# CONFIG_THERMAL_WRITABLE_TRIPS is not set # CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE is not set CONFIG_THERMAL_DEFAULT_GOV_FAIR_SHARE=y
# CONFIG_THERMAL_DEFAULT_GOV_USER_SPACE is not set CONFIG_THERMAL_GOV_FAIR_SHARE=y
# CONFIG_THERMAL_GOV_STEP_WISE is not set CONFIG_THERMAL_GOV_BANG_BANG=y
# CONFIG_THERMAL_GOV_USER_SPACE is not set # CONFIG_DEVFREQ_THERMAL is not set
# CONFIG_THERMAL_EMULATION is not set CONFIG_THERMAL_MMIO=y CONFIG_HISI_THERMAL=yCONFIG_IMX_THERMAL=y CONFIG_IMX_SC_THERMAL=y CONFIG_IMX8MM_THERMAL=y CONFIG_K3_THERMAL=y
# CONFIG_SPEAR_THERMAL is not set
# CONFIG_SUN8I_THERMAL is not set CONFIG_ROCKCHIP_THERMAL=y CONFIG_RCAR_THERMAL=y
# CONFIG_RCAR_GEN3_THERMAL is not set CONFIG_RZG2L_THERMAL=y
# CONFIG_KIRKWOOD_THERMAL is not set CONFIG_DOVE_THERMAL=y CONFIG_ARMADA_THERMAL=y
# CONFIG_DA9062_THERMAL is not set CONFIG_MTK_THERMAL=y
#
# Intel thermal drivers
#
#
# ACPI INT340X thermal drivers
#
# end of ACPI INT340X thermal drivers # end of Intel thermal drivers
#
# Broadcom thermal drivers
#CONFIG_BRCMSTB_THERMAL=yCONFIG_BCM_NS_THERMAL=yCONFIG_BCM_SR_THERMAL=y
# end of Broadcom thermal drivers
#
# Texas Instruments thermal drivers
#CONFIG_TI_SOC_THERMAL=y
# CONFIG_TI_THERMAL is not set
# CONFIG_OMAP3_THERMAL is not setCONFIG_OMAP4_THERMAL=y
# CONFIG_OMAP5_THERMAL is not setCONFIG_DRA752_THERMAL=y
# end of Texas Instruments thermal drivers
#
# Samsung thermal drivers
#
# end of Samsung thermal drivers
#
# NVIDIA Tegra thermal drivers
#CONFIG_TEGRA_SOCTHERM=yCONFIG_TEGRA_BPMP_THERMAL=yCONFIG_TEGRA30_TSENSOR=y
# end of NVIDIA Tegra thermal drivers
CONFIG_GENERIC_ADC_THERMAL=y
#
# Qualcomm thermal drivers
#CONFIG_QCOM_SPMI_ADC_TM5=y
# CONFIG_QCOM_SPMI_TEMP_ALARM is not set
# end of Qualcomm thermal drivers
CONFIG_SPRD_THERMAL=y
# CONFIG_KHADAS_MCU_FAN_THERMAL is not setCONFIG_WATCHDOG=yCONFIG_WATCHDOG_CORE=y
# CONFIG_WATCHDOG_NOWAYOUT is not set
# CONFIG_WATCHDOG_HANDLE_BOOT_ENABLED is not setCONFIG_WATCHDOG_OPEN_TIMEOUT=0CONFIG_WATCHDOG_SYSFS=y
# CONFIG_WATCHDOG_HRTIMER_PRETIMEOUT is not set
#
# Watchdog Pretimeout Governors
#
# CONFIG_WATCHDOG_PRETIMEOUT_GOV is not set
#
# Watchdog Device Drivers
#
# CONFIG_SOFT_WATCHDOG is not set
# CONFIG_DA9052_WATCHDOG is not set
# CONFIG_DA9055_WATCHDOG is not set
# CONFIG_DA9063_WATCHDOG is not setCONFIG_DA9062_WATCHDOG=yCONFIG_GPIO_WATCHDOG=yCONFIG_GPIO_WATCHDOG_ARCH_INITCALL=yCONFIG_MENF21BMC_WATCHDOG=yCONFIG_MENZ069_WATCHDOG=yCONFIG_WM831X_WATCHDOG=y
# CONFIG_XILINX_WATCHDOG is not setCONFIG_ZIIRAVE_WATCHDOG=yCONFIG_SL28CPLD_WATCHDOG=y
# CONFIG_ARMADA_37XX_WATCHDOG is not set
# CONFIG_ASM9260_WATCHDOG is not setCONFIG_AT91RM9200_WATCHDOG=y
# CONFIG_AT91SAM9X_WATCHDOG is not setCONFIG_SAMA5D4_WATCHDOG=yCONFIG_CADENCE_WATCHDOG=yCONFIG_FTWDT010_WATCHDOG=y
# CONFIG_S3C2410_WATCHDOG is not setCONFIG_DW_WATCHDOG=yCONFIG_EP93XX_WATCHDOG=yCONFIG_OMAP_WATCHDOG=yCONFIG_PNX4008_WATCHDOG=y
# CONFIG_DAVINCI_WATCHDOG is not set
# CONFIG_K3_RTI_WATCHDOG is not setCONFIG_RN5T618_WATCHDOG=yCONFIG_SUNXI_WATCHDOG=y
# CONFIG_NPCM7XX_WATCHDOG is not setCONFIG_TWL4030_WATCHDOG=y
# CONFIG_STMP3XXX_RTC_WATCHDOG is not set
# CONFIG_TS4800_WATCHDOG is not setCONFIG_TS72XX_WATCHDOG=yCONFIG_MAX63XX_WATCHDOG=yCONFIG_MAX77620_WATCHDOG=y
# CONFIG_IMX2_WDT is not set
# CONFIG_IMX7ULP_WDT is not set
# CONFIG_RETU_WATCHDOG is not setCONFIG_MOXART_WDT=y
# CONFIG_ST_LPC_WATCHDOG is not setCONFIG_TEGRA_WATCHDOG=yCONFIG_QCOM_WDT=yCONFIG_MESON_GXBB_WATCHDOG=yCONFIG_MESON_WATCHDOG=y
# CONFIG_MEDIATEK_WATCHDOG is not setCONFIG_DIGICOLOR_WATCHDOG=yCONFIG_LPC18XX_WATCHDOG=yCONFIG_RENESAS_WDT=y
# CONFIG_RENESAS_RZAWDT is not set
# CONFIG_RENESAS_RZN1WDT is not set
# CONFIG_RENESAS_RZG2LWDT is not setCONFIG_ASPEED_WATCHDOG=yCONFIG_STPMIC1_WATCHDOG=yCONFIG_UNIPHIER_WATCHDOG=yCONFIG_RTD119X_WATCHDOG=y
# CONFIG_REALTEK_OTTO_WDT is not setCONFIG_SPRD_WATCHDOG=y
# CONFIG_PM8916_WATCHDOG is not setCONFIG_VISCONTI_WATCHDOG=yCONFIG_MSC313E_WATCHDOG=yCONFIG_APPLE_WATCHDOG=yCONFIG_SUNPLUS_WATCHDOG=yCONFIG_ALIM7101_WDT=yCONFIG_SC520_WDT=yCONFIG_I6300ESB_WDT=yCONFIG_KEMPLD_WDT=yCONFIG_RDC321X_WDT=yCONFIG_BCM47XX_WDT=y
# CONFIG_BCM2835_WDT is not set
# CONFIG_BCM_KONA_WDT is not setCONFIG_BCM7038_WDT=yCONFIG_IMGPDC_WDT=y
# CONFIG_MPC5200_WDT is not set
# CONFIG_MEN_A21_WDT is not setCONFIG_UML_WATCHDOG=y
#
# PCI-based Watchdog Cards
#CONFIG_PCIPCWATCHDOG=yCONFIG_WDTPCI=y
#
# USB-based Watchdog Cards
#
# CONFIG_USBPCWATCHDOG is not setCONFIG_SSB_POSSIBLE=yCONFIG_SSB=yCONFIG_SSB_SPROM=yCONFIG_SSB_PCIHOST_POSSIBLE=yCONFIG_SSB_PCIHOST=yCONFIG_SSB_SDIOHOST_POSSIBLE=yCONFIG_SSB_SDIOHOST=yCONFIG_SSB_DRIVER_PCICORE_POSSIBLE=y
# CONFIG_SSB_DRIVER_PCICORE is not setCONFIG_SSB_DRIVER_GPIO=yCONFIG_BCMA_POSSIBLE=yCONFIG_BCMA=yCONFIG_BCMA_HOST_PCI_POSSIBLE=y
# CONFIG_BCMA_HOST_PCI is not setCONFIG_BCMA_HOST_SOC=yCONFIG_BCMA_DRIVER_PCI=y
# CONFIG_BCMA_DRIVER_MIPS is not set
# CONFIG_BCMA_SFLASH is not set
# CONFIG_BCMA_DRIVER_GMAC_CMN is not set
# CONFIG_BCMA_DRIVER_GPIO is not setCONFIG_BCMA_DEBUG=y
#
# Multifunction device drivers
#CONFIG_MFD_CORE=yCONFIG_MFD_ACT8945A=y
# CONFIG_MFD_SUN4I_GPADC is not setCONFIG_MFD_AS3711=yCONFIG_MFD_AS3722=yCONFIG_PMIC_ADP5520=y
# CONFIG_MFD_AAT2870_CORE is not set
# CONFIG_MFD_AT91_USART is not setCONFIG_MFD_ATMEL_FLEXCOM=yCONFIG_MFD_ATMEL_HLCDC=yCONFIG_MFD_BCM590XX=yCONFIG_MFD_BD9571MWV=yCONFIG_MFD_AXP20X=yCONFIG_MFD_AXP20X_I2C=y
# CONFIG_MFD_CROS_EC_DEV is not setCONFIG_MFD_MADERA=yCONFIG_MFD_MADERA_I2C=y
# CONFIG_MFD_CS47L15 is not set
# CONFIG_MFD_CS47L35 is not set
# CONFIG_MFD_CS47L85 is not setCONFIG_MFD_CS47L90=y
# CONFIG_MFD_CS47L92 is not set
# CONFIG_MFD_ASIC3 is not setCONFIG_PMIC_DA903X=y
# CONFIG_MFD_DA9052_I2C is not set
# CONFIG_MFD_DA9055 is not setCONFIG_MFD_DA9062=y
# CONFIG_MFD_DA9063 is not set
# CONFIG_MFD_DA9150 is not setCONFIG_MFD_DLN2=y
# CONFIG_MFD_ENE_KB3930 is not setCONFIG_MFD_EXYNOS_LPASS=yCONFIG_MFD_GATEWORKS_GSC=yCONFIG_MFD_MC13XXX=yCONFIG_MFD_MC13XXX_I2C=yCONFIG_MFD_MP2629=yCONFIG_MFD_MXS_LRADC=yCONFIG_MFD_MX25_TSADC=yCONFIG_MFD_HI6421_PMIC=yCONFIG_MFD_HI6421_SPMI=y
# CONFIG_MFD_HI655X_PMIC is not set
# CONFIG_HTC_PASIC3 is not setCONFIG_HTC_I2CPLD=y
# CONFIG_LPC_ICH is not setCONFIG_LPC_SCH=y
# CONFIG_MFD_IQS62X is not setCONFIG_MFD_JANZ_CMODIO=yCONFIG_MFD_KEMPLD=yCONFIG_MFD_88PM800=yCONFIG_MFD_88PM805=y
# CONFIG_MFD_88PM860X is not set
# CONFIG_MFD_MAX14577 is not set
# CONFIG_MFD_MAX77620 is not set
# CONFIG_MFD_MAX77650 is not setCONFIG_MFD_MAX77686=y
# CONFIG_MFD_MAX77693 is not set
# CONFIG_MFD_MAX77714 is not setCONFIG_MFD_MAX77843=yCONFIG_MFD_MAX8907=y
# CONFIG_MFD_MAX8925 is not set
# CONFIG_MFD_MAX8997 is not setCONFIG_MFD_MAX8998=yCONFIG_MFD_MT6360=yCONFIG_MFD_MT6397=yCONFIG_MFD_MENF21BMC=yCONFIG_MFD_VIPERBOARD=yCONFIG_MFD_NTXEC=yCONFIG_MFD_RETU=yCONFIG_MFD_PCF50633=yCONFIG_PCF50633_ADC=y
# CONFIG_PCF50633_GPIO is not setCONFIG_UCB1400_CORE=yCONFIG_MFD_PM8XXX=yCONFIG_MFD_SPMI_PMIC=yCONFIG_MFD_RDC321X=y
# CONFIG_MFD_RT4831 is not setCONFIG_MFD_RT5033=yCONFIG_MFD_RC5T583=y
# CONFIG_MFD_RK808 is not setCONFIG_MFD_RN5T618=y
# CONFIG_MFD_SEC_CORE is not setCONFIG_MFD_SI476X_CORE=yCONFIG_MFD_SIMPLE_MFD_I2C=yCONFIG_MFD_SL28CPLD=yCONFIG_MFD_SM501=yCONFIG_MFD_SM501_GPIO=y
# CONFIG_MFD_SKY81452 is not set
# CONFIG_ABX500_CORE is not set
# CONFIG_MFD_STMPE is not setCONFIG_MFD_SUN6I_PRCM=yCONFIG_MFD_SYSCON=y
# CONFIG_MFD_TI_AM335X_TSCADC is not setCONFIG_MFD_LP3943=yCONFIG_MFD_LP8788=y
# CONFIG_MFD_TI_LMU is not setCONFIG_MFD_OMAP_USB_HOST=y
# CONFIG_MFD_PALMAS is not set
# CONFIG_TPS6105X is not setCONFIG_TPS65010=y
# CONFIG_TPS6507X is not setCONFIG_MFD_TPS65086=yCONFIG_MFD_TPS65090=yCONFIG_MFD_TPS65217=y
# CONFIG_MFD_TI_LP873X is not setCONFIG_MFD_TI_LP87565=yCONFIG_MFD_TPS65218=yCONFIG_MFD_TPS6586X=y
# CONFIG_MFD_TPS65910 is not setCONFIG_MFD_TPS65912=yCONFIG_MFD_TPS65912_I2C=yCONFIG_TWL4030_CORE=yCONFIG_MFD_TWL4030_AUDIO=y
# CONFIG_TWL6040_CORE is not setCONFIG_MFD_WL1273_CORE=yCONFIG_MFD_LM3533=yCONFIG_MFD_TIMBERDALE=yCONFIG_MFD_TC3589X=yCONFIG_MFD_TQMX86=yCONFIG_MFD_VX855=y
# CONFIG_MFD_LOCHNAGAR is not setCONFIG_MFD_ARIZONA=yCONFIG_MFD_ARIZONA_I2C=yCONFIG_MFD_CS47L24=yCONFIG_MFD_WM5102=y
# CONFIG_MFD_WM5110 is not set
# CONFIG_MFD_WM8997 is not set
# CONFIG_MFD_WM8998 is not setCONFIG_MFD_WM8400=yCONFIG_MFD_WM831X=yCONFIG_MFD_WM831X_I2C=y
# CONFIG_MFD_WM8350_I2C is not setCONFIG_MFD_WM8994=yCONFIG_MFD_STW481X=yCONFIG_MFD_ROHM_BD718XX=yCONFIG_MFD_ROHM_BD71828=y
# CONFIG_MFD_ROHM_BD957XMUF is not set
# CONFIG_MFD_STM32_LPTIMER is not setCONFIG_MFD_STM32_TIMERS=yCONFIG_MFD_STPMIC1=yCONFIG_MFD_STMFX=yCONFIG_MFD_WCD934X=y
# CONFIG_MFD_ATC260X_I2C is not setCONFIG_MFD_KHADAS_MCU=yCONFIG_MFD_ACER_A500_EC=yCONFIG_MFD_QCOM_PM8008=y
# CONFIG_MFD_RSMU_I2C is not set
# end of Multifunction device drivers
CONFIG_REGULATOR=yCONFIG_REGULATOR_DEBUG=yCONFIG_REGULATOR_FIXED_VOLTAGE=yCONFIG_REGULATOR_VIRTUAL_CONSUMER=yCONFIG_REGULATOR_USERSPACE_CONSUMER=yCONFIG_REGULATOR_88PG86X=yCONFIG_REGULATOR_88PM800=y
# CONFIG_REGULATOR_ACT8865 is not setCONFIG_REGULATOR_ACT8945A=y
# CONFIG_REGULATOR_AD5398 is not setCONFIG_REGULATOR_ANATOP=y
# CONFIG_REGULATOR_ARIZONA_LDO1 is not set
# CONFIG_REGULATOR_ARIZONA_MICSUPP is not setCONFIG_REGULATOR_ARM_SCMI=yCONFIG_REGULATOR_AS3711=y
# CONFIG_REGULATOR_AS3722 is not set
# CONFIG_REGULATOR_AXP20X is not setCONFIG_REGULATOR_BCM590XX=yCONFIG_REGULATOR_BD71815=y
# CONFIG_REGULATOR_BD71828 is not set
# CONFIG_REGULATOR_BD718XX is not set
# CONFIG_REGULATOR_BD9571MWV is not set
# CONFIG_REGULATOR_CROS_EC is not set
# CONFIG_REGULATOR_DA9062 is not set
# CONFIG_REGULATOR_DA9121 is not setCONFIG_REGULATOR_DA9210=yCONFIG_REGULATOR_DA9211=y
# CONFIG_REGULATOR_FAN53555 is not setCONFIG_REGULATOR_FAN53880=yCONFIG_REGULATOR_GPIO=yCONFIG_REGULATOR_HI6421=yCONFIG_REGULATOR_HI6421V530=yCONFIG_REGULATOR_HI6421V600=y
# CONFIG_REGULATOR_ISL9305 is not set
# CONFIG_REGULATOR_ISL6271A is not set
# CONFIG_REGULATOR_LP3971 is not setCONFIG_REGULATOR_LP3972=yCONFIG_REGULATOR_LP872X=yCONFIG_REGULATOR_LP8755=yCONFIG_REGULATOR_LP87565=yCONFIG_REGULATOR_LP8788=yCONFIG_REGULATOR_LTC3589=yCONFIG_REGULATOR_LTC3676=yCONFIG_REGULATOR_MAX1586=y
# CONFIG_REGULATOR_MAX77620 is not setCONFIG_REGULATOR_MAX77650=yCONFIG_REGULATOR_MAX8649=yCONFIG_REGULATOR_MAX8660=yCONFIG_REGULATOR_MAX8893=yCONFIG_REGULATOR_MAX8907=yCONFIG_REGULATOR_MAX8952=yCONFIG_REGULATOR_MAX8998=y
# CONFIG_REGULATOR_MAX20086 is not setCONFIG_REGULATOR_MAX77686=yCONFIG_REGULATOR_MAX77693=y
# CONFIG_REGULATOR_MAX77802 is not set
# CONFIG_REGULATOR_MAX77826 is not set
# CONFIG_REGULATOR_MC13783 is not set
# CONFIG_REGULATOR_MC13892 is not setCONFIG_REGULATOR_MCP16502=yCONFIG_REGULATOR_MP5416=yCONFIG_REGULATOR_MP8859=y
# CONFIG_REGULATOR_MP886X is not setCONFIG_REGULATOR_MPQ7920=yCONFIG_REGULATOR_MT6311=y
# CONFIG_REGULATOR_MT6315 is not setCONFIG_REGULATOR_MT6323=yCONFIG_REGULATOR_MT6358=y
# CONFIG_REGULATOR_MT6359 is not set
# CONFIG_REGULATOR_MT6360 is not setCONFIG_REGULATOR_MT6380=yCONFIG_REGULATOR_MT6397=yCONFIG_REGULATOR_PBIAS=yCONFIG_REGULATOR_PCA9450=y
# CONFIG_REGULATOR_PCF50633 is not setCONFIG_REGULATOR_PF8X00=yCONFIG_REGULATOR_PFUZE100=yCONFIG_REGULATOR_PV88060=yCONFIG_REGULATOR_PV88080=y
# CONFIG_REGULATOR_PV88090 is not setCONFIG_REGULATOR_PWM=y
# CONFIG_REGULATOR_QCOM_RPMH is not set
# CONFIG_REGULATOR_QCOM_SMD_RPM is not setCONFIG_REGULATOR_QCOM_SPMI=yCONFIG_REGULATOR_QCOM_USB_VBUS=yCONFIG_REGULATOR_RASPBERRYPI_TOUCHSCREEN_ATTINY=yCONFIG_REGULATOR_RC5T583=yCONFIG_REGULATOR_RN5T618=yCONFIG_REGULATOR_ROHM=y
# CONFIG_REGULATOR_RT4801 is not setCONFIG_REGULATOR_RT5033=y
# CONFIG_REGULATOR_RT5190A is not set
# CONFIG_REGULATOR_RT5759 is not set
# CONFIG_REGULATOR_RT6160 is not setCONFIG_REGULATOR_RT6245=y
# CONFIG_REGULATOR_RTQ2134 is not setCONFIG_REGULATOR_RTMV20=yCONFIG_REGULATOR_RTQ6752=yCONFIG_REGULATOR_S2MPA01=y
# CONFIG_REGULATOR_S2MPS11 is not setCONFIG_REGULATOR_S5M8767=y
# CONFIG_REGULATOR_SC2731 is not setCONFIG_REGULATOR_SLG51000=y
# CONFIG_REGULATOR_STM32_BOOSTER is not setCONFIG_REGULATOR_STM32_VREFBUF=y
# CONFIG_REGULATOR_STM32_PWR is not setCONFIG_REGULATOR_STPMIC1=yCONFIG_REGULATOR_TI_ABB=y
# CONFIG_REGULATOR_STW481X_VMMC is not setCONFIG_REGULATOR_SY7636A=yCONFIG_REGULATOR_SY8106A=yCONFIG_REGULATOR_SY8824X=y
# CONFIG_REGULATOR_SY8827N is not setCONFIG_REGULATOR_TPS51632=yCONFIG_REGULATOR_TPS62360=yCONFIG_REGULATOR_TPS6286X=yCONFIG_REGULATOR_TPS65023=yCONFIG_REGULATOR_TPS6507X=y
# CONFIG_REGULATOR_TPS65086 is not setCONFIG_REGULATOR_TPS65090=y
# CONFIG_REGULATOR_TPS65132 is not set
# CONFIG_REGULATOR_TPS65217 is not setCONFIG_REGULATOR_TPS65218=yCONFIG_REGULATOR_TPS6586X=yCONFIG_REGULATOR_TPS65912=y
# CONFIG_REGULATOR_TPS68470 is not setCONFIG_REGULATOR_TWL4030=yCONFIG_REGULATOR_UNIPHIER=yCONFIG_REGULATOR_VCTRL=y
# CONFIG_REGULATOR_WM831X is not setCONFIG_REGULATOR_WM8400=y
# CONFIG_REGULATOR_WM8994 is not setCONFIG_REGULATOR_QCOM_LABIBB=yCONFIG_RC_CORE=yCONFIG_BPF_LIRC_MODE2=yCONFIG_LIRC=y
# CONFIG_RC_MAP is not setCONFIG_RC_DECODERS=yCONFIG_IR_IMON_DECODER=yCONFIG_IR_JVC_DECODER=y
# CONFIG_IR_MCE_KBD_DECODER is not setCONFIG_IR_NEC_DECODER=y
# CONFIG_IR_RC5_DECODER is not set
# CONFIG_IR_RC6_DECODER is not set
# CONFIG_IR_RCMM_DECODER is not setCONFIG_IR_SANYO_DECODER=yCONFIG_IR_SHARP_DECODER=yCONFIG_IR_SONY_DECODER=y
# CONFIG_IR_XMP_DECODER is not setCONFIG_RC_DEVICES=yCONFIG_IR_ENE=yCONFIG_IR_FINTEK=yCONFIG_IR_GPIO_CIR=yCONFIG_IR_GPIO_TX=y
# CONFIG_IR_HIX5HD2 is not setCONFIG_IR_IGORPLUGUSB=yCONFIG_IR_IGUANA=yCONFIG_IR_IMON=yCONFIG_IR_IMON_RAW=yCONFIG_IR_ITE_CIR=y
# CONFIG_IR_MCEUSB is not set
# CONFIG_IR_MESON is not setCONFIG_IR_MESON_TX=y
# CONFIG_IR_MTK is not set
# CONFIG_IR_NUVOTON is not set
# CONFIG_IR_PWM_TX is not set
# CONFIG_IR_REDRAT3 is not setCONFIG_IR_RX51=yCONFIG_IR_SERIAL=yCONFIG_IR_SERIAL_TRANSMITTER=yCONFIG_IR_STREAMZAP=yCONFIG_IR_SUNXI=y
# CONFIG_IR_TOY is not setCONFIG_IR_TTUSBIR=yCONFIG_IR_WINBOND_CIR=y
# CONFIG_RC_ATI_REMOTE is not set
# CONFIG_RC_LOOPBACK is not setCONFIG_RC_ST=yCONFIG_RC_XBOX_DVD=yCONFIG_IR_IMG=yCONFIG_IR_IMG_RAW=y
# CONFIG_IR_IMG_HW is not setCONFIG_CEC_CORE=yCONFIG_CEC_NOTIFIER=y
#
# CEC support
#
# CONFIG_MEDIA_CEC_RC is not set
# CONFIG_MEDIA_CEC_SUPPORT is not set
# end of CEC support
CONFIG_MEDIA_SUPPORT=y
# CONFIG_MEDIA_SUPPORT_FILTER is not set
# CONFIG_MEDIA_SUBDRV_AUTOSELECT is not set
#
# 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
#
# Media core support
#
# CONFIG_VIDEO_DEV is not setCONFIG_MEDIA_CONTROLLER=yCONFIG_DVB_CORE=y
# end of Media core support
#
# Media controller options
#CONFIG_MEDIA_CONTROLLER_DVB=y
# end of Media controller options
#
# Digital TV options
#
# CONFIG_DVB_NET is not setCONFIG_DVB_MAX_ADAPTERS=16
# CONFIG_DVB_DYNAMIC_MINORS is not setCONFIG_DVB_DEMUX_SECTION_LOSS_LOG=yCONFIG_DVB_ULE_DEBUG=y
# end of Digital TV options
#
# Media drivers
#
#
# Media drivers
#
# CONFIG_MEDIA_USB_SUPPORT is not set
# CONFIG_MEDIA_PCI_SUPPORT is not set
# CONFIG_MEDIA_PLATFORM_DRIVERS is not set
#
# MMC/SDIO DVB adapters
#
# CONFIG_SMS_SDIO_DRV is not setCONFIG_DVB_TEST_DRIVERS=yCONFIG_DVB_VIDTV=y
# end of Media drivers
#
# Media ancillary drivers
#CONFIG_MEDIA_TUNER=y
#
# Customize TV tuners
#CONFIG_MEDIA_TUNER_FC0011=yCONFIG_MEDIA_TUNER_FC0012=yCONFIG_MEDIA_TUNER_FC0013=yCONFIG_MEDIA_TUNER_IT913X=y
# CONFIG_MEDIA_TUNER_M88RS6000T is not setCONFIG_MEDIA_TUNER_MAX2165=yCONFIG_MEDIA_TUNER_MC44S803=yCONFIG_MEDIA_TUNER_MT2060=yCONFIG_MEDIA_TUNER_MT2063=yCONFIG_MEDIA_TUNER_MT20XX=yCONFIG_MEDIA_TUNER_MT2131=yCONFIG_MEDIA_TUNER_MT2266=yCONFIG_MEDIA_TUNER_MXL301RF=yCONFIG_MEDIA_TUNER_MXL5005S=y
# CONFIG_MEDIA_TUNER_MXL5007T is not setCONFIG_MEDIA_TUNER_QM1D1B0004=yCONFIG_MEDIA_TUNER_QM1D1C0042=y
# CONFIG_MEDIA_TUNER_QT1010 is not setCONFIG_MEDIA_TUNER_R820T=y
# CONFIG_MEDIA_TUNER_SI2157 is not setCONFIG_MEDIA_TUNER_SIMPLE=y
# CONFIG_MEDIA_TUNER_TDA18212 is not setCONFIG_MEDIA_TUNER_TDA18218=yCONFIG_MEDIA_TUNER_TDA18250=y
# CONFIG_MEDIA_TUNER_TDA18271 is not setCONFIG_MEDIA_TUNER_TDA827X=y
# CONFIG_MEDIA_TUNER_TDA8290 is not setCONFIG_MEDIA_TUNER_TDA9887=yCONFIG_MEDIA_TUNER_TEA5761=yCONFIG_MEDIA_TUNER_TEA5767=yCONFIG_MEDIA_TUNER_TUA9001=y
# CONFIG_MEDIA_TUNER_XC2028 is not set
# CONFIG_MEDIA_TUNER_XC4000 is not setCONFIG_MEDIA_TUNER_XC5000=y
# end of Customize TV tuners
#
# Customise DVB Frontends
#
#
# Multistandard (satellite) frontends
#
# CONFIG_DVB_M88DS3103 is not setCONFIG_DVB_MXL5XX=yCONFIG_DVB_STB0899=yCONFIG_DVB_STB6100=y
CONFIG_DVB_STV090x=yCONFIG_DVB_STV0910=y
CONFIG_DVB_STV6110x=yCONFIG_DVB_STV6111=y
#
# Multistandard (cable + terrestrial) frontends
#CONFIG_DVB_DRXK=yCONFIG_DVB_MN88472=yCONFIG_DVB_MN88473=y
# CONFIG_DVB_SI2165 is not setCONFIG_DVB_TDA18271C2DD=y
#
# DVB-S (satellite) frontends
#CONFIG_DVB_CX24110=yCONFIG_DVB_CX24116=yCONFIG_DVB_CX24117=yCONFIG_DVB_CX24120=y
# CONFIG_DVB_CX24123 is not setCONFIG_DVB_DS3000=yCONFIG_DVB_MB86A16=yCONFIG_DVB_MT312=yCONFIG_DVB_S5H1420=y
# CONFIG_DVB_SI21XX is not set
# CONFIG_DVB_STB6000 is not set
# CONFIG_DVB_STV0288 is not setCONFIG_DVB_STV0299=yCONFIG_DVB_STV0900=yCONFIG_DVB_STV6110=yCONFIG_DVB_TDA10071=yCONFIG_DVB_TDA10086=yCONFIG_DVB_TDA8083=y
# CONFIG_DVB_TDA8261 is not setCONFIG_DVB_TDA826X=yCONFIG_DVB_TS2020=yCONFIG_DVB_TUA6100=yCONFIG_DVB_TUNER_CX24113=yCONFIG_DVB_TUNER_ITD1000=yCONFIG_DVB_VES1X93=yCONFIG_DVB_ZL10036=yCONFIG_DVB_ZL10039=y
#
# DVB-T (terrestrial) frontends
#CONFIG_DVB_AF9013=yCONFIG_DVB_CX22700=y
# CONFIG_DVB_CX22702 is not setCONFIG_DVB_CXD2820R=y
# CONFIG_DVB_CXD2841ER is not set
# CONFIG_DVB_DIB3000MB is not set
# CONFIG_DVB_DIB3000MC is not set
# CONFIG_DVB_DIB7000M is not setCONFIG_DVB_DIB7000P=yCONFIG_DVB_DIB9000=yCONFIG_DVB_DRXD=yCONFIG_DVB_EC100=y
# CONFIG_DVB_L64781 is not set
# CONFIG_DVB_MT352 is not setCONFIG_DVB_NXT6000=y
# CONFIG_DVB_RTL2830 is not set
# CONFIG_DVB_RTL2832 is not setCONFIG_DVB_S5H1432=yCONFIG_DVB_SI2168=yCONFIG_DVB_SP887X=yCONFIG_DVB_STV0367=yCONFIG_DVB_TDA10048=yCONFIG_DVB_TDA1004X=yCONFIG_DVB_ZD1301_DEMOD=y
# CONFIG_DVB_ZL10353 is not set
#
# DVB-C (cable) frontends
#
# CONFIG_DVB_STV0297 is not set
# CONFIG_DVB_TDA10021 is not setCONFIG_DVB_TDA10023=y
# CONFIG_DVB_VES1820 is not set
#
# ATSC (North American/Korean Terrestrial/Cable DTV) frontends #
# CONFIG_DVB_AU8522_DTV is not set CONFIG_DVB_BCM3510=y
# CONFIG_DVB_LG2160 is not setCONFIG_DVB_LGDT3305=yCONFIG_DVB_LGDT3306A=y
# CONFIG_DVB_LGDT330X is not setCONFIG_DVB_MXL692=y
# CONFIG_DVB_NXT200X is not setCONFIG_DVB_OR51132=y
# CONFIG_DVB_OR51211 is not setCONFIG_DVB_S5H1409=y
# CONFIG_DVB_S5H1411 is not set
#
# ISDB-T (terrestrial) frontends
#
# CONFIG_DVB_DIB8000 is not set
# CONFIG_DVB_MB86A20S is not set
# CONFIG_DVB_S921 is not set
#
# ISDB-S (satellite) & ISDB-T (terrestrial) frontends #CONFIG_DVB_MN88443X=yCONFIG_DVB_TC90522=y
#
# Digital terrestrial only tuners/PLL
#
# CONFIG_DVB_PLL is not set
# CONFIG_DVB_TUNER_DIB0070 is not setCONFIG_DVB_TUNER_DIB0090=y
#
# SEC control devices for DVB-S
#
# CONFIG_DVB_A8293 is not set
# CONFIG_DVB_AF9033 is not setCONFIG_DVB_ASCOT2E=yCONFIG_DVB_ATBM8830=yCONFIG_DVB_HELENE=y
# CONFIG_DVB_HORUS3A is not setCONFIG_DVB_ISL6405=y
# CONFIG_DVB_ISL6421 is not set
# CONFIG_DVB_ISL6423 is not setCONFIG_DVB_IX2505V=yCONFIG_DVB_LGS8GL5=yCONFIG_DVB_LGS8GXX=yCONFIG_DVB_LNBH25=yCONFIG_DVB_LNBH29=yCONFIG_DVB_LNBP21=y
# CONFIG_DVB_LNBP22 is not setCONFIG_DVB_M88RS2000=y
CONFIG_DVB_TDA665x=yCONFIG_DVB_DRX39XYJ=y
#
# Common Interface (EN50221) controller drivers
#
# CONFIG_DVB_CXD2099 is not setCONFIG_DVB_SP2=y
# end of Customise DVB Frontends
#
# Tools to develop new frontends
#CONFIG_DVB_DUMMY_FE=y
# end of Media ancillary drivers
#
# Graphics support
#CONFIG_APERTURE_HELPERS=yCONFIG_IMX_IPUV3_CORE=yCONFIG_DRM=yCONFIG_DRM_MIPI_DSI=y
# CONFIG_DRM_DEBUG_MM is not set
# CONFIG_DRM_DEBUG_SELFTEST is not setCONFIG_DRM_KUNIT_TEST=yCONFIG_DRM_KMS_HELPER=yCONFIG_DRM_DEBUG_DP_MST_TOPOLOGY_REFS=y
# CONFIG_DRM_DEBUG_MODESET_LOCK is not set
# CONFIG_DRM_FBDEV_EMULATION is not setCONFIG_DRM_LOAD_EDID_FIRMWARE=yCONFIG_DRM_DP_AUX_BUS=yCONFIG_DRM_DISPLAY_HELPER=yCONFIG_DRM_DISPLAY_DP_HELPER=yCONFIG_DRM_DISPLAY_HDCP_HELPER=yCONFIG_DRM_DISPLAY_HDMI_HELPER=y
# CONFIG_DRM_DP_AUX_CHARDEV is not setCONFIG_DRM_DP_CEC=yCONFIG_DRM_TTM=yCONFIG_DRM_VRAM_HELPER=yCONFIG_DRM_TTM_HELPER=yCONFIG_DRM_GEM_CMA_HELPER=yCONFIG_DRM_GEM_SHMEM_HELPER=yCONFIG_DRM_SCHED=y
#
# I2C encoder or helper chips
#CONFIG_DRM_I2C_CH7006=yCONFIG_DRM_I2C_SIL164=yCONFIG_DRM_I2C_NXP_TDA998X=yCONFIG_DRM_I2C_NXP_TDA9950=y
# end of I2C encoder or helper chips
#
# ARM devices
#CONFIG_DRM_HDLCD=y
# CONFIG_DRM_HDLCD_SHOW_UNDERRUN is not setCONFIG_DRM_MALI_DISPLAY=y
# CONFIG_DRM_KOMEDA is not set
# end of ARM devices
# CONFIG_DRM_RADEON is not set
# CONFIG_DRM_AMDGPU is not setCONFIG_DRM_NOUVEAU=y
# CONFIG_NOUVEAU_LEGACY_CTX_SUPPORT is not setCONFIG_NOUVEAU_DEBUG=5CONFIG_NOUVEAU_DEBUG_DEFAULT=3CONFIG_NOUVEAU_DEBUG_MMU=yCONFIG_NOUVEAU_DEBUG_PUSH=y
# CONFIG_DRM_NOUVEAU_BACKLIGHT is not set
# CONFIG_DRM_KMB_DISPLAY is not set
# CONFIG_DRM_VGEM is not setCONFIG_DRM_VKMS=yCONFIG_DRM_EXYNOS=y
#
# CRTCs
#
# CONFIG_DRM_EXYNOS_FIMD is not setCONFIG_DRM_EXYNOS5433_DECON=y
# CONFIG_DRM_EXYNOS7_DECON is not set
# CONFIG_DRM_EXYNOS_MIXER is not set
# CONFIG_DRM_EXYNOS_VIDI is not set
#
# Encoders and Bridges
#
# CONFIG_DRM_EXYNOS_DSI is not setCONFIG_DRM_EXYNOS_HDMI=y
# CONFIG_DRM_EXYNOS_MIC is not set
#
# Sub-drivers
#CONFIG_DRM_EXYNOS_G2D=yCONFIG_DRM_EXYNOS_IPP=yCONFIG_DRM_EXYNOS_FIMC=yCONFIG_DRM_EXYNOS_ROTATOR=y
# CONFIG_DRM_EXYNOS_SCALER is not set
# CONFIG_DRM_EXYNOS_GSC is not setCONFIG_DRM_ROCKCHIP=yCONFIG_ROCKCHIP_VOP=y
# CONFIG_ROCKCHIP_VOP2 is not setCONFIG_ROCKCHIP_ANALOGIX_DP=y
# CONFIG_ROCKCHIP_CDN_DP is not set
# CONFIG_ROCKCHIP_DW_HDMI is not set
# CONFIG_ROCKCHIP_DW_MIPI_DSI is not set
# CONFIG_ROCKCHIP_INNO_HDMI is not set
# CONFIG_ROCKCHIP_LVDS is not set
# CONFIG_ROCKCHIP_RGB is not setCONFIG_ROCKCHIP_RK3066_HDMI=yCONFIG_DRM_UDL=yCONFIG_DRM_AST=yCONFIG_DRM_MGAG200=y
# CONFIG_DRM_RCAR_DW_HDMI is not setCONFIG_DRM_RCAR_USE_LVDS=yCONFIG_DRM_RCAR_MIPI_DSI=y
# CONFIG_DRM_SUN4I is not setCONFIG_DRM_QXL=y
# CONFIG_DRM_VIRTIO_GPU is not set
# CONFIG_DRM_MSM is not setCONFIG_DRM_PANEL=y
#
# Display Panels
#CONFIG_DRM_PANEL_ARM_VERSATILE=y
# CONFIG_DRM_PANEL_ASUS_Z00T_TM5P5_NT35596 is not set CONFIG_DRM_PANEL_BOE_BF060Y8M_AJ0=y CONFIG_DRM_PANEL_BOE_HIMAX8279D=y
# CONFIG_DRM_PANEL_BOE_TV101WUM_NL6 is not set # CONFIG_DRM_PANEL_DSI_CM is not set CONFIG_DRM_PANEL_LVDS=y CONFIG_DRM_PANEL_SIMPLE=y
# CONFIG_DRM_PANEL_EDP is not set CONFIG_DRM_PANEL_EBBG_FT8719=y CONFIG_DRM_PANEL_ELIDA_KD35T133=y
# CONFIG_DRM_PANEL_FEIXIN_K101_IM2BA02 is not set CONFIG_DRM_PANEL_FEIYANG_FY07024DI26A30D=y
# CONFIG_DRM_PANEL_ILITEK_ILI9881C is not set CONFIG_DRM_PANEL_INNOLUX_P079ZCA=y
# CONFIG_DRM_PANEL_JDI_LT070ME05000 is not set CONFIG_DRM_PANEL_JDI_R63452=y
# CONFIG_DRM_PANEL_KHADAS_TS050 is not set
# CONFIG_DRM_PANEL_KINGDISPLAY_KD097D04 is not set CONFIG_DRM_PANEL_LEADTEK_LTK050H3146W=y
# CONFIG_DRM_PANEL_LEADTEK_LTK500HD1829 is not set # CONFIG_DRM_PANEL_NOVATEK_NT35510 is not set CONFIG_DRM_PANEL_NOVATEK_NT35560=y CONFIG_DRM_PANEL_NOVATEK_NT35950=y CONFIG_DRM_PANEL_NOVATEK_NT36672A=y CONFIG_DRM_PANEL_MANTIX_MLAF057WE51=y CONFIG_DRM_PANEL_OLIMEX_LCD_OLINUXINO=y CONFIG_DRM_PANEL_ORISETECH_OTM8009A=y CONFIG_DRM_PANEL_OSD_OSD101T2587_53TS=y CONFIG_DRM_PANEL_PANASONIC_VVX10F034N00=y CONFIG_DRM_PANEL_RASPBERRYPI_TOUCHSCREEN=y CONFIG_DRM_PANEL_RAYDIUM_RM67191=y CONFIG_DRM_PANEL_RAYDIUM_RM68200=y CONFIG_DRM_PANEL_RONBO_RB070D30=y CONFIG_DRM_PANEL_SAMSUNG_ATNA33XC20=y CONFIG_DRM_PANEL_SAMSUNG_S6D16D0=y CONFIG_DRM_PANEL_SAMSUNG_S6E3HA2=y CONFIG_DRM_PANEL_SAMSUNG_S6E63J0X03=y CONFIG_DRM_PANEL_SAMSUNG_S6E63M0=y CONFIG_DRM_PANEL_SAMSUNG_S6E63M0_DSI=y CONFIG_DRM_PANEL_SAMSUNG_S6E88A0_AMS452EF01=y CONFIG_DRM_PANEL_SAMSUNG_S6E8AA0=y CONFIG_DRM_PANEL_SAMSUNG_SOFEF00=y CONFIG_DRM_PANEL_SEIKO_43WVF1G=y CONFIG_DRM_PANEL_SHARP_LQ101R1SX01=y CONFIG_DRM_PANEL_SHARP_LS037V7DW01=y
# CONFIG_DRM_PANEL_SHARP_LS043T1LE01 is not set # CONFIG_DRM_PANEL_SHARP_LS060T1SX01 is not set # CONFIG_DRM_PANEL_SITRONIX_ST7701 is not set CONFIG_DRM_PANEL_SITRONIX_ST7703=y CONFIG_DRM_PANEL_SONY_TULIP_TRULY_NT35521=y CONFIG_DRM_PANEL_TDO_TL070WSH30=y CONFIG_DRM_PANEL_TRULY_NT35597_WQXGA=y CONFIG_DRM_PANEL_VISIONOX_RM69299=y
# CONFIG_DRM_PANEL_XINPENG_XPP055C272 is not set
# end of Display Panels
CONFIG_DRM_BRIDGE=yCONFIG_DRM_PANEL_BRIDGE=y
#
# Display Interface Bridges
#
# CONFIG_DRM_CDNS_DSI is not setCONFIG_DRM_CHIPONE_ICN6211=yCONFIG_DRM_CHRONTEL_CH7033=yCONFIG_DRM_CROS_EC_ANX7688=yCONFIG_DRM_DISPLAY_CONNECTOR=yCONFIG_DRM_FSL_LDB=yCONFIG_DRM_ITE_IT6505=yCONFIG_DRM_LONTIUM_LT8912B=yCONFIG_DRM_LONTIUM_LT9211=yCONFIG_DRM_LONTIUM_LT9611=y
# CONFIG_DRM_LONTIUM_LT9611UXC is not setCONFIG_DRM_ITE_IT66121=yCONFIG_DRM_LVDS_CODEC=yCONFIG_DRM_MEGACHIPS_STDPXXXX_GE_B850V3_FW=y
# CONFIG_DRM_NWL_MIPI_DSI is not setCONFIG_DRM_NXP_PTN3460=yCONFIG_DRM_PARADE_PS8622=yCONFIG_DRM_PARADE_PS8640=yCONFIG_DRM_SIL_SII8620=y
# CONFIG_DRM_SII902X is not setCONFIG_DRM_SII9234=y
# CONFIG_DRM_SIMPLE_BRIDGE is not setCONFIG_DRM_THINE_THC63LVD1024=yCONFIG_DRM_TOSHIBA_TC358762=yCONFIG_DRM_TOSHIBA_TC358764=yCONFIG_DRM_TOSHIBA_TC358767=y
# CONFIG_DRM_TOSHIBA_TC358768 is not set
# CONFIG_DRM_TOSHIBA_TC358775 is not setCONFIG_DRM_TI_DLPC3433=yCONFIG_DRM_TI_TFP410=y
# CONFIG_DRM_TI_SN65DSI83 is not setCONFIG_DRM_TI_SN65DSI86=yCONFIG_DRM_TI_TPD12S015=y
# CONFIG_DRM_ANALOGIX_ANX6345 is not set
# CONFIG_DRM_ANALOGIX_ANX78XX is not setCONFIG_DRM_ANALOGIX_DP=yCONFIG_DRM_ANALOGIX_ANX7625=y
# CONFIG_DRM_I2C_ADV7511 is not setCONFIG_DRM_CDNS_MHDP8546=yCONFIG_DRM_CDNS_MHDP8546_J721E=yCONFIG_DRM_IMX8QM_LDB=y
# CONFIG_DRM_IMX8QXP_LDB is not set
# CONFIG_DRM_IMX8QXP_PIXEL_COMBINER is not setCONFIG_DRM_IMX8QXP_PIXEL_LINK=yCONFIG_DRM_IMX8QXP_PIXEL_LINK_TO_DPI=yCONFIG_DRM_DW_HDMI=yCONFIG_DRM_DW_HDMI_AHB_AUDIO=yCONFIG_DRM_DW_HDMI_I2S_AUDIO=yCONFIG_DRM_DW_HDMI_GP_AUDIO=yCONFIG_DRM_DW_HDMI_CEC=y
# end of Display Interface Bridges
CONFIG_DRM_IMX=yCONFIG_DRM_IMX_PARALLEL_DISPLAY=yCONFIG_DRM_IMX_TVE=yCONFIG_DRM_IMX_LDB=yCONFIG_DRM_IMX_HDMI=yCONFIG_DRM_INGENIC=yCONFIG_DRM_INGENIC_IPU=y
# CONFIG_DRM_V3D is not setCONFIG_DRM_VC4=yCONFIG_DRM_VC4_HDMI_CEC=y
# CONFIG_DRM_ETNAVIV is not setCONFIG_DRM_HISI_HIBMC=y
# CONFIG_DRM_LOGICVC is not setCONFIG_DRM_MXS=y
# CONFIG_DRM_MXSFB is not setCONFIG_DRM_IMX_LCDIF=y
# CONFIG_DRM_ARCPGU is not setCONFIG_DRM_BOCHS=y
# CONFIG_DRM_CIRRUS_QEMU is not set
# CONFIG_DRM_GM12U320 is not setCONFIG_DRM_SIMPLEDRM=yCONFIG_DRM_PL111=y
# CONFIG_DRM_TVE200 is not setCONFIG_DRM_LIMA=yCONFIG_DRM_PANFROST=yCONFIG_DRM_ASPEED_GFX=yCONFIG_DRM_MCDE=yCONFIG_DRM_TIDSS=yCONFIG_DRM_GUD=yCONFIG_DRM_SSD130X=yCONFIG_DRM_SSD130X_I2C=yCONFIG_DRM_SPRD=yCONFIG_DRM_LEGACY=yCONFIG_DRM_TDFX=yCONFIG_DRM_R128=y
# CONFIG_DRM_MGA is not set
# CONFIG_DRM_VIA is not set
# CONFIG_DRM_SAVAGE is not setCONFIG_DRM_PANEL_ORIENTATION_QUIRKS=yCONFIG_DRM_NOMODESET=y
#
# Frame buffer Devices
#CONFIG_FB_CMDLINE=yCONFIG_FB_NOTIFY=yCONFIG_FB=yCONFIG_FIRMWARE_EDID=yCONFIG_FB_DDC=yCONFIG_FB_CFB_FILLRECT=yCONFIG_FB_CFB_COPYAREA=yCONFIG_FB_CFB_IMAGEBLIT=yCONFIG_FB_CFB_REV_PIXELS_IN_BYTE=yCONFIG_FB_SYS_FILLRECT=yCONFIG_FB_SYS_COPYAREA=yCONFIG_FB_SYS_IMAGEBLIT=y
# CONFIG_FB_FOREIGN_ENDIAN is not setCONFIG_FB_SYS_FOPS=yCONFIG_FB_DEFERRED_IO=yCONFIG_FB_SVGALIB=yCONFIG_FB_BACKLIGHT=yCONFIG_FB_MODE_HELPERS=yCONFIG_FB_TILEBLITTING=y
#
# Frame buffer hardware drivers
#CONFIG_FB_CIRRUS=yCONFIG_FB_PM2=y
# CONFIG_FB_PM2_FIFO_DISCONNECT is not setCONFIG_FB_CLPS711X=y
# CONFIG_FB_IMX is not setCONFIG_FB_CYBER2000=y
# CONFIG_FB_CYBER2000_DDC is not setCONFIG_FB_ARC=y
# CONFIG_FB_CONTROL is not set
# CONFIG_FB_ASILIANT is not setCONFIG_FB_IMSTT=yCONFIG_FB_UVESA=yCONFIG_FB_EFI=yCONFIG_FB_GBE=yCONFIG_FB_GBE_MEM=4CONFIG_FB_PVR2=y
# CONFIG_FB_OPENCORES is not setCONFIG_FB_S1D13XXX=yCONFIG_FB_ATMEL=y
# CONFIG_FB_NVIDIA is not setCONFIG_FB_RIVA=yCONFIG_FB_RIVA_I2C=y
# CONFIG_FB_RIVA_DEBUG is not setCONFIG_FB_RIVA_BACKLIGHT=yCONFIG_FB_I740=y
# CONFIG_FB_MATROX is not setCONFIG_FB_RADEON=yCONFIG_FB_RADEON_I2C=yCONFIG_FB_RADEON_BACKLIGHT=yCONFIG_FB_RADEON_DEBUG=yCONFIG_FB_ATY128=yCONFIG_FB_ATY128_BACKLIGHT=yCONFIG_FB_ATY=yCONFIG_FB_ATY_CT=yCONFIG_FB_ATY_GENERIC_LCD=yCONFIG_FB_ATY_GX=y
# CONFIG_FB_ATY_BACKLIGHT is not set
# CONFIG_FB_S3 is not setCONFIG_FB_SAVAGE=y
# CONFIG_FB_SAVAGE_I2C is not set
# CONFIG_FB_SAVAGE_ACCEL is not set
# CONFIG_FB_SIS is not setCONFIG_FB_VIA=yCONFIG_FB_VIA_DIRECT_PROCFS=y
# CONFIG_FB_VIA_X_COMPATIBILITY is not set
# CONFIG_FB_NEOMAGIC is not setCONFIG_FB_KYRO=yCONFIG_FB_3DFX=yCONFIG_FB_3DFX_ACCEL=y
# CONFIG_FB_3DFX_I2C is not setCONFIG_FB_VOODOO1=yCONFIG_FB_VT8623=yCONFIG_FB_TRIDENT=yCONFIG_FB_ARK=y
# CONFIG_FB_PM3 is not setCONFIG_FB_CARMINE=yCONFIG_FB_CARMINE_DRAM_EVAL=y
# CONFIG_CARMINE_DRAM_CUSTOM is not setCONFIG_FB_WM8505=y
# CONFIG_FB_WMT_GE_ROPS is not setCONFIG_FB_PXA168=yCONFIG_FB_W100=yCONFIG_FB_SH_MOBILE_LCDC=yCONFIG_FB_TMIO=y
# CONFIG_FB_TMIO_ACCELL is not set
# CONFIG_FB_S3C is not set
# CONFIG_FB_SM501 is not set
# CONFIG_FB_SMSCUFX is not set
# CONFIG_FB_UDL is not setCONFIG_FB_IBM_GXT4500=y
# CONFIG_FB_GOLDFISH is not setCONFIG_FB_DA8XX=y
# CONFIG_FB_VIRTUAL is not setCONFIG_FB_METRONOME=yCONFIG_FB_MB862XX=yCONFIG_FB_MB862XX_PCI_GDC=y
# CONFIG_FB_MB862XX_I2C is not setCONFIG_FB_BROADSHEET=yCONFIG_FB_SSD1307=yCONFIG_FB_SM712=y
# CONFIG_FB_OMAP_LCD_H3 is not set
# CONFIG_FB_OMAP2 is not setCONFIG_MMP_DISP=yCONFIG_MMP_DISP_CONTROLLER=y
# CONFIG_MMP_FB is not set
# end of Frame buffer Devices
#
# Backlight & LCD device support
#CONFIG_LCD_CLASS_DEVICE=yCONFIG_LCD_PLATFORM=yCONFIG_BACKLIGHT_CLASS_DEVICE=yCONFIG_BACKLIGHT_ATMEL_LCDC=yCONFIG_BACKLIGHT_KTD253=yCONFIG_BACKLIGHT_LM3533=yCONFIG_BACKLIGHT_OMAP1=y
# CONFIG_BACKLIGHT_PWM is not setCONFIG_BACKLIGHT_DA903X=y
# CONFIG_BACKLIGHT_QCOM_WLED is not setCONFIG_BACKLIGHT_WM831X=yCONFIG_BACKLIGHT_ADP5520=y
# CONFIG_BACKLIGHT_ADP8860 is not set
# CONFIG_BACKLIGHT_ADP8870 is not setCONFIG_BACKLIGHT_PCF50633=y
# CONFIG_BACKLIGHT_LM3630A is not set
# CONFIG_BACKLIGHT_LM3639 is not setCONFIG_BACKLIGHT_LP855X=yCONFIG_BACKLIGHT_LP8788=y
# CONFIG_BACKLIGHT_PANDORA is not setCONFIG_BACKLIGHT_TPS65217=y
# CONFIG_BACKLIGHT_AS3711 is not setCONFIG_BACKLIGHT_GPIO=yCONFIG_BACKLIGHT_LV5207LP=yCONFIG_BACKLIGHT_BD6107=yCONFIG_BACKLIGHT_ARCXCNN=y
# CONFIG_BACKLIGHT_LED is not set
# end of Backlight & LCD device support
CONFIG_VGASTATE=yCONFIG_VIDEOMODE_HELPERS=yCONFIG_HDMI=yCONFIG_LOGO=yCONFIG_LOGO_LINUX_MONO=yCONFIG_LOGO_LINUX_VGA16=y
# CONFIG_LOGO_LINUX_CLUT224 is not set
# end of Graphics support
CONFIG_SOUND=yCONFIG_SOUND_OSS_CORE=yCONFIG_SOUND_OSS_CORE_PRECLAIM=yCONFIG_SND=yCONFIG_SND_TIMER=yCONFIG_SND_PCM=yCONFIG_SND_PCM_ELD=yCONFIG_SND_PCM_IEC958=yCONFIG_SND_DMAENGINE_PCM=yCONFIG_SND_HWDEP=yCONFIG_SND_SEQ_DEVICE=yCONFIG_SND_RAWMIDI=yCONFIG_SND_COMPRESS_OFFLOAD=yCONFIG_SND_JACK=yCONFIG_SND_JACK_INPUT_DEV=yCONFIG_SND_OSSEMUL=yCONFIG_SND_MIXER_OSS=yCONFIG_SND_PCM_OSS=yCONFIG_SND_PCM_OSS_PLUGINS=yCONFIG_SND_PCM_TIMER=yCONFIG_SND_HRTIMER=yCONFIG_SND_DYNAMIC_MINORS=yCONFIG_SND_MAX_CARDS=32
# CONFIG_SND_SUPPORT_OLD_API is not setCONFIG_SND_PROC_FS=yCONFIG_SND_VERBOSE_PROCFS=y
# CONFIG_SND_VERBOSE_PRINTK is not set
# CONFIG_SND_CTL_FAST_LOOKUP is not setCONFIG_SND_DEBUG=yCONFIG_SND_DEBUG_VERBOSE=yCONFIG_SND_PCM_XRUN_DEBUG=yCONFIG_SND_CTL_INPUT_VALIDATION=y
# CONFIG_SND_CTL_DEBUG is not setCONFIG_SND_JACK_INJECTION_DEBUG=yCONFIG_SND_VMASTER=yCONFIG_SND_CTL_LED=yCONFIG_SND_SEQUENCER=yCONFIG_SND_SEQ_DUMMY=yCONFIG_SND_SEQUENCER_OSS=yCONFIG_SND_SEQ_HRTIMER_DEFAULT=yCONFIG_SND_SEQ_MIDI_EVENT=yCONFIG_SND_SEQ_MIDI=yCONFIG_SND_SEQ_MIDI_EMUL=yCONFIG_SND_SEQ_VIRMIDI=yCONFIG_SND_MPU401_UART=yCONFIG_SND_OPL3_LIB=yCONFIG_SND_OPL3_LIB_SEQ=yCONFIG_SND_VX_LIB=yCONFIG_SND_AC97_CODEC=yCONFIG_SND_DRIVERS=yCONFIG_SND_DUMMY=y
# CONFIG_SND_ALOOP is not setCONFIG_SND_VIRMIDI=yCONFIG_SND_MTPAV=y
# CONFIG_SND_MTS64 is not setCONFIG_SND_SERIAL_U16550=yCONFIG_SND_MPU401=yCONFIG_SND_PORTMAN2X4=yCONFIG_SND_AC97_POWER_SAVE=yCONFIG_SND_AC97_POWER_SAVE_DEFAULT=0CONFIG_SND_PCI=y
# CONFIG_SND_AD1889 is not set
# CONFIG_SND_ATIIXP is not setCONFIG_SND_ATIIXP_MODEM=y
# CONFIG_SND_AU8810 is not setCONFIG_SND_AU8820=yCONFIG_SND_AU8830=yCONFIG_SND_AW2=yCONFIG_SND_BT87X=y
# CONFIG_SND_BT87X_OVERCLOCK is not setCONFIG_SND_CA0106=yCONFIG_SND_CMIPCI=yCONFIG_SND_OXYGEN_LIB=yCONFIG_SND_OXYGEN=y
# CONFIG_SND_CS4281 is not setCONFIG_SND_CS46XX=y
# CONFIG_SND_CS46XX_NEW_DSP is not set
# CONFIG_SND_CS5535AUDIO is not setCONFIG_SND_CTXFI=yCONFIG_SND_DARLA20=yCONFIG_SND_GINA20=y
# CONFIG_SND_LAYLA20 is not set
# CONFIG_SND_DARLA24 is not setCONFIG_SND_GINA24=yCONFIG_SND_LAYLA24=y
# CONFIG_SND_MONA is not setCONFIG_SND_MIA=yCONFIG_SND_ECHO3G=yCONFIG_SND_INDIGO=y
# CONFIG_SND_INDIGOIO is not setCONFIG_SND_INDIGODJ=y
# CONFIG_SND_INDIGOIOX is not setCONFIG_SND_INDIGODJX=yCONFIG_SND_ENS1370=y
# CONFIG_SND_ENS1371 is not setCONFIG_SND_FM801=y
# CONFIG_SND_HDSP is not set
# CONFIG_SND_HDSPM is not setCONFIG_SND_ICE1724=y
# CONFIG_SND_INTEL8X0 is not set
# CONFIG_SND_INTEL8X0M is not set
# CONFIG_SND_KORG1212 is not set
# CONFIG_SND_LOLA is not setCONFIG_SND_LX6464ES=yCONFIG_SND_MIXART=y
# CONFIG_SND_NM256 is not setCONFIG_SND_PCXHR=yCONFIG_SND_RIPTIDE=y
# CONFIG_SND_RME32 is not setCONFIG_SND_RME96=yCONFIG_SND_RME9652=yCONFIG_SND_VIA82XX=yCONFIG_SND_VIA82XX_MODEM=yCONFIG_SND_VIRTUOSO=yCONFIG_SND_VX222=y
# CONFIG_SND_YMFPCI is not set
#
# HD-Audio
#CONFIG_SND_HDA=yCONFIG_SND_HDA_GENERIC_LEDS=yCONFIG_SND_HDA_INTEL=y
# CONFIG_SND_HDA_HWDEP is not setCONFIG_SND_HDA_RECONFIG=yCONFIG_SND_HDA_INPUT_BEEP=yCONFIG_SND_HDA_INPUT_BEEP_MODE=1CONFIG_SND_HDA_PATCH_LOADER=yCONFIG_SND_HDA_CODEC_REALTEK=yCONFIG_SND_HDA_CODEC_ANALOG=yCONFIG_SND_HDA_CODEC_SIGMATEL=y
# CONFIG_SND_HDA_CODEC_VIA is not setCONFIG_SND_HDA_CODEC_HDMI=yCONFIG_SND_HDA_CODEC_CIRRUS=yCONFIG_SND_HDA_CODEC_CS8409=yCONFIG_SND_HDA_CODEC_CONEXANT=yCONFIG_SND_HDA_CODEC_CA0110=y
# CONFIG_SND_HDA_CODEC_CA0132 is not set
# CONFIG_SND_HDA_CODEC_CMEDIA is not setCONFIG_SND_HDA_CODEC_SI3054=yCONFIG_SND_HDA_GENERIC=yCONFIG_SND_HDA_POWER_SAVE_DEFAULT=0CONFIG_SND_HDA_INTEL_HDMI_SILENT_STREAM=y
# end of HD-Audio
CONFIG_SND_HDA_CORE=yCONFIG_SND_HDA_DSP_LOADER=yCONFIG_SND_HDA_COMPONENT=yCONFIG_SND_HDA_EXT_CORE=yCONFIG_SND_HDA_PREALLOC_SIZE=64CONFIG_SND_INTEL_DSP_CONFIG=yCONFIG_SND_PXA2XX_LIB=yCONFIG_SND_USB=y
# CONFIG_SND_USB_AUDIO is not setCONFIG_SND_USB_UA101=yCONFIG_SND_USB_CAIAQ=yCONFIG_SND_USB_CAIAQ_INPUT=yCONFIG_SND_USB_US122L=y
# CONFIG_SND_USB_6FIRE is not setCONFIG_SND_USB_HIFACE=yCONFIG_SND_BCD2000=yCONFIG_SND_USB_LINE6=yCONFIG_SND_USB_POD=y
# CONFIG_SND_USB_PODHD is not setCONFIG_SND_USB_TONEPORT=y
# CONFIG_SND_USB_VARIAX is not setCONFIG_SND_SOC=yCONFIG_SND_SOC_AC97_BUS=yCONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=yCONFIG_SND_SOC_COMPRESS=yCONFIG_SND_SOC_TOPOLOGY=y
# CONFIG_SND_SOC_TOPOLOGY_KUNIT_TEST is not setCONFIG_SND_SOC_UTILS_KUNIT_TEST=y
# CONFIG_SND_SOC_ADI is not set
# CONFIG_SND_SOC_AMD_ACP is not setCONFIG_SND_AMD_ACP_CONFIG=y
# CONFIG_SND_ATMEL_SOC is not setCONFIG_SND_BCM2835_SOC_I2S=yCONFIG_SND_SOC_CYGNUS=y
# CONFIG_SND_BCM63XX_I2S_WHISTLER is not set
# CONFIG_SND_EP93XX_SOC is not setCONFIG_SND_DESIGNWARE_I2S=yCONFIG_SND_DESIGNWARE_PCM=y
#
# SoC Audio for Freescale CPUs
#
#
# Common SoC Audio options for Freescale CPUs:
#
# CONFIG_SND_SOC_FSL_ASRC is not setCONFIG_SND_SOC_FSL_SAI=y
# CONFIG_SND_SOC_FSL_MQS is not setCONFIG_SND_SOC_FSL_AUDMIX=yCONFIG_SND_SOC_FSL_SSI=y
# CONFIG_SND_SOC_FSL_SPDIF is not set
# CONFIG_SND_SOC_FSL_ESAI is not setCONFIG_SND_SOC_FSL_MICFIL=yCONFIG_SND_SOC_FSL_XCVR=yCONFIG_SND_SOC_FSL_AUD2HTX=yCONFIG_SND_SOC_FSL_UTILS=y
# CONFIG_SND_SOC_FSL_RPMSG is not setCONFIG_SND_SOC_IMX_AUDMUX=y
# CONFIG_SND_IMX_SOC is not set
# end of SoC Audio for Freescale CPUs
# CONFIG_SND_I2S_HI6210_I2S is not setCONFIG_SND_JZ4740_SOC_I2S=y
# CONFIG_SND_KIRKWOOD_SOC is not set
# CONFIG_SND_SOC_IMG is not set
# CONFIG_SND_SOC_INTEL_SST_TOPLEVEL is not setCONFIG_SND_SOC_INTEL_KEEMBAY=yCONFIG_SND_SOC_INTEL_AVS=y
#
# Intel AVS Machine drivers
#
#
# Available DSP configurations
#CONFIG_SND_SOC_INTEL_AVS_MACH_DA7219=y CONFIG_SND_SOC_INTEL_AVS_MACH_DMIC=y
# CONFIG_SND_SOC_INTEL_AVS_MACH_HDAUDIO is not set CONFIG_SND_SOC_INTEL_AVS_MACH_I2S_TEST=y CONFIG_SND_SOC_INTEL_AVS_MACH_MAX98357A=y
# CONFIG_SND_SOC_INTEL_AVS_MACH_MAX98373 is not set CONFIG_SND_SOC_INTEL_AVS_MACH_NAU8825=y
# CONFIG_SND_SOC_INTEL_AVS_MACH_RT274 is not set CONFIG_SND_SOC_INTEL_AVS_MACH_RT286=y
# CONFIG_SND_SOC_INTEL_AVS_MACH_RT298 is not set # CONFIG_SND_SOC_INTEL_AVS_MACH_RT5682 is not set # CONFIG_SND_SOC_INTEL_AVS_MACH_SSM4567 is not set
# end of Intel AVS Machine drivers
CONFIG_SND_SOC_MEDIATEK=y CONFIG_SND_SOC_MT8186=y
# CONFIG_SND_SOC_MT8186_MT6366_DA7219_MAX98357 is not set CONFIG_SND_SOC_MT8186_MT6366_RT1019_RT5682S=y CONFIG_SND_SOC_MTK_BTCVSD=y
# CONFIG_SND_SOC_MT8195 is not set
#
# ASoC support for Amlogic platforms
#CONFIG_SND_MESON_AIU=yCONFIG_SND_MESON_AXG_FIFO=y
# CONFIG_SND_MESON_AXG_FRDDR is not setCONFIG_SND_MESON_AXG_TODDR=yCONFIG_SND_MESON_AXG_TDM_FORMATTER=yCONFIG_SND_MESON_AXG_TDM_INTERFACE=y
# CONFIG_SND_MESON_AXG_TDMIN is not setCONFIG_SND_MESON_AXG_TDMOUT=yCONFIG_SND_MESON_AXG_SOUND_CARD=yCONFIG_SND_MESON_AXG_SPDIFOUT=yCONFIG_SND_MESON_AXG_SPDIFIN=y
# CONFIG_SND_MESON_AXG_PDM is not setCONFIG_SND_MESON_CARD_UTILS=yCONFIG_SND_MESON_CODEC_GLUE=yCONFIG_SND_MESON_GX_SOUND_CARD=yCONFIG_SND_MESON_G12A_TOACODEC=yCONFIG_SND_MESON_G12A_TOHDMITX=yCONFIG_SND_SOC_MESON_T9015=y
# end of ASoC support for Amlogic platforms
# CONFIG_SND_MXS_SOC is not setCONFIG_SND_PXA2XX_SOC=y
# CONFIG_SND_SOC_QCOM is not setCONFIG_SND_SOC_ROCKCHIP=yCONFIG_SND_SOC_ROCKCHIP_I2S=y
# CONFIG_SND_SOC_ROCKCHIP_I2S_TDM is not setCONFIG_SND_SOC_ROCKCHIP_PDM=y
# CONFIG_SND_SOC_ROCKCHIP_SPDIF is not setCONFIG_SND_SOC_ROCKCHIP_MAX98090=y
# CONFIG_SND_SOC_ROCKCHIP_RT5645 is not setCONFIG_SND_SOC_RK3288_HDMI_ANALOG=yCONFIG_SND_SOC_SAMSUNG=yCONFIG_SND_S3C24XX_I2S=y
# CONFIG_SND_SAMSUNG_PCM is not setCONFIG_SND_SAMSUNG_SPDIF=yCONFIG_SND_SAMSUNG_I2S=yCONFIG_SND_SOC_SAMSUNG_NEO1973_WM8753=yCONFIG_SND_SOC_SAMSUNG_SMDK_WM8580=yCONFIG_SND_SOC_SAMSUNG_SMDK_WM8994=yCONFIG_SND_SOC_SAMSUNG_S3C24XX_UDA134X=yCONFIG_SND_SOC_SAMSUNG_SIMTEC=yCONFIG_SND_SOC_SAMSUNG_SIMTEC_TLV320AIC23=yCONFIG_SND_SOC_SAMSUNG_SIMTEC_HERMES=yCONFIG_SND_SOC_SAMSUNG_H1940_UDA1380=yCONFIG_SND_SOC_SAMSUNG_RX1950_UDA1380=y
# CONFIG_SND_SOC_SMARTQ is not set
# CONFIG_SND_SOC_SAMSUNG_SMDK_SPDIF is not set
# CONFIG_SND_SOC_SMDK_WM8994_PCM is not setCONFIG_SND_SOC_TOBERMORY=yCONFIG_SND_SOC_LOWLAND=y
# CONFIG_SND_SOC_LITTLEMILL is not setCONFIG_SND_SOC_SNOW=y
# CONFIG_SND_SOC_ODROID is not set
# CONFIG_SND_SOC_ARNDALE is not setCONFIG_SND_SOC_SAMSUNG_ARIES_WM8994=yCONFIG_SND_SOC_SAMSUNG_MIDAS_WM1811=y
#
# SoC Audio support for Renesas SoCs
#
# CONFIG_SND_SOC_SH4_FSI is not setCONFIG_SND_SOC_RCAR=yCONFIG_SND_SOC_RZ=y
# end of SoC Audio support for Renesas SoCs
CONFIG_SND_SOC_SOF_TOPLEVEL=y CONFIG_SND_SOC_SOF_PCI_DEV=y CONFIG_SND_SOC_SOF_PCI=y
# CONFIG_SND_SOC_SOF_ACPI is not set
# CONFIG_SND_SOC_SOF_OF is not set CONFIG_SND_SOC_SOF_CLIENT=y CONFIG_SND_SOC_SOF_DEVELOPER_SUPPORT=y
# CONFIG_SND_SOC_SOF_FORCE_PROBE_WORKQUEUE is not set CONFIG_SND_SOC_SOF_NOCODEC=y CONFIG_SND_SOC_SOF_NOCODEC_SUPPORT=y CONFIG_SND_SOC_SOF_STRICT_ABI_CHECKS=y CONFIG_SND_SOC_SOF_DEBUG=y CONFIG_SND_SOC_SOF_FORCE_NOCODEC_MODE=y
# CONFIG_SND_SOC_SOF_DEBUG_XRUN_STOP is not set # CONFIG_SND_SOC_SOF_DEBUG_VERBOSE_IPC is not set CONFIG_SND_SOC_SOF_DEBUG_FORCE_IPC_POSITION=y CONFIG_SND_SOC_SOF_DEBUG_ENABLE_DEBUGFS_CACHE=y CONFIG_SND_SOC_SOF_DEBUG_ENABLE_FIRMWARE_TRACE=y CONFIG_SND_SOC_SOF_DEBUG_IPC_FLOOD_TEST=y CONFIG_SND_SOC_SOF_DEBUG_IPC_FLOOD_TEST_NUM=2
# CONFIG_SND_SOC_SOF_DEBUG_IPC_MSG_INJECTOR is not set # CONFIG_SND_SOC_SOF_DEBUG_RETAIN_DSP_CONTEXT is not set CONFIG_SND_SOC_SOF=yCONFIG_SND_SOC_SOF_IPC3=y CONFIG_SND_SOC_SOF_AMD_TOPLEVEL=y CONFIG_SND_SOC_SOF_AMD_COMMON=y CONFIG_SND_SOC_SOF_AMD_RENOIR=y
# CONFIG_SND_SOC_SOF_INTEL_TOPLEVEL is not set CONFIG_SND_SOC_SPRD=y CONFIG_SND_SOC_SPRD_MCDT=y
# CONFIG_SND_SOC_STI is not set
#
# STMicroelectronics STM32 SOC audio support
#CONFIG_SND_SOC_STM32_SAI=y
# CONFIG_SND_SOC_STM32_I2S is not setCONFIG_SND_SOC_STM32_SPDIFRX=y
# end of STMicroelectronics STM32 SOC audio support
#
# Allwinner SoC Audio support
#
# CONFIG_SND_SUN4I_CODEC is not setCONFIG_SND_SUN8I_CODEC=yCONFIG_SND_SUN8I_CODEC_ANALOG=yCONFIG_SND_SUN50I_CODEC_ANALOG=y
# CONFIG_SND_SUN4I_I2S is not set
# CONFIG_SND_SUN4I_SPDIF is not setCONFIG_SND_SUN8I_ADDA_PR_REGMAP=y
# end of Allwinner SoC Audio support
CONFIG_SND_SOC_TEGRA=yCONFIG_SND_SOC_TEGRA20_AC97=yCONFIG_SND_SOC_TEGRA20_DAS=y
# CONFIG_SND_SOC_TEGRA20_I2S is not setCONFIG_SND_SOC_TEGRA20_SPDIF=yCONFIG_SND_SOC_TEGRA30_AHUB=y
# CONFIG_SND_SOC_TEGRA30_I2S is not set
# CONFIG_SND_SOC_TEGRA210_AHUB is not setCONFIG_SND_SOC_TEGRA210_DMIC=y
# CONFIG_SND_SOC_TEGRA210_I2S is not setCONFIG_SND_SOC_TEGRA210_OPE=yCONFIG_SND_SOC_TEGRA186_ASRC=yCONFIG_SND_SOC_TEGRA186_DSPK=yCONFIG_SND_SOC_TEGRA210_ADMAIF=yCONFIG_SND_SOC_TEGRA210_MVC=yCONFIG_SND_SOC_TEGRA210_SFC=yCONFIG_SND_SOC_TEGRA210_AMX=y
# CONFIG_SND_SOC_TEGRA210_ADX is not setCONFIG_SND_SOC_TEGRA210_MIXER=yCONFIG_SND_SOC_TEGRA_AUDIO_GRAPH_CARD=yCONFIG_SND_SOC_TEGRA_MACHINE_DRV=y
# CONFIG_SND_SOC_TEGRA_RT5640 is not setCONFIG_SND_SOC_TEGRA_WM8753=y
# CONFIG_SND_SOC_TEGRA_WM8903 is not setCONFIG_SND_SOC_TEGRA_WM9712=yCONFIG_SND_SOC_TEGRA_TRIMSLICE=y
# CONFIG_SND_SOC_TEGRA_ALC5632 is not setCONFIG_SND_SOC_TEGRA_MAX98090=yCONFIG_SND_SOC_TEGRA_RT5677=y
# CONFIG_SND_SOC_TEGRA_SGTL5000 is not set
#
# Audio support for Texas Instruments SoCs
#CONFIG_SND_SOC_TI_EDMA_PCM=yCONFIG_SND_SOC_TI_SDMA_PCM=yCONFIG_SND_SOC_TI_UDMA_PCM=y
#
# Texas Instruments DAI support for:
#CONFIG_SND_SOC_DAVINCI_ASP=yCONFIG_SND_SOC_DAVINCI_MCASP=y
# CONFIG_SND_SOC_DAVINCI_VCIF is not setCONFIG_SND_SOC_OMAP_DMIC=yCONFIG_SND_SOC_OMAP_MCBSP=yCONFIG_SND_SOC_OMAP_MCPDM=y
#
# Audio support for boards with Texas Instruments SoCs #CONFIG_SND_SOC_OMAP3_TWL4030=y CONFIG_SND_SOC_OMAP_HDMI=y CONFIG_SND_SOC_J721E_EVM=y
# end of Audio support for Texas Instruments SoCs
CONFIG_SND_SOC_UNIPHIER=y CONFIG_SND_SOC_UNIPHIER_AIO=y CONFIG_SND_SOC_UNIPHIER_LD11=y CONFIG_SND_SOC_UNIPHIER_PXS2=y CONFIG_SND_SOC_UNIPHIER_EVEA_CODEC=y CONFIG_SND_SOC_XILINX_I2S=y
# CONFIG_SND_SOC_XILINX_AUDIO_FORMATTER is not set CONFIG_SND_SOC_XILINX_SPDIF=y CONFIG_SND_SOC_XTFPGA_I2S=y CONFIG_SND_SOC_I2C_AND_SPI=y
#
# CODEC drivers
#
# CONFIG_SND_SOC_ALL_CODECS is not setCONFIG_SND_SOC_WM_HUBS=y
# CONFIG_SND_SOC_AC97_CODEC is not setCONFIG_SND_SOC_ADAU_UTILS=yCONFIG_SND_SOC_ADAU1372=yCONFIG_SND_SOC_ADAU1372_I2C=yCONFIG_SND_SOC_ADAU1701=y
# CONFIG_SND_SOC_ADAU1761_I2C is not setCONFIG_SND_SOC_ADAU7002=yCONFIG_SND_SOC_ADAU7118=yCONFIG_SND_SOC_ADAU7118_HW=yCONFIG_SND_SOC_ADAU7118_I2C=yCONFIG_SND_SOC_AK4118=yCONFIG_SND_SOC_AK4375=y
# CONFIG_SND_SOC_AK4458 is not set
# CONFIG_SND_SOC_AK4554 is not set
# CONFIG_SND_SOC_AK4613 is not set
# CONFIG_SND_SOC_AK4642 is not setCONFIG_SND_SOC_AK5386=yCONFIG_SND_SOC_AK5558=y
# CONFIG_SND_SOC_ALC5623 is not set
# CONFIG_SND_SOC_AW8738 is not set
# CONFIG_SND_SOC_BD28623 is not setCONFIG_SND_SOC_BT_SCO=yCONFIG_SND_SOC_CROS_EC_CODEC=yCONFIG_SND_SOC_CS35L32=yCONFIG_SND_SOC_CS35L33=yCONFIG_SND_SOC_CS35L34=yCONFIG_SND_SOC_CS35L35=yCONFIG_SND_SOC_CS35L36=y
# CONFIG_SND_SOC_CS35L41_I2C is not setCONFIG_SND_SOC_CS35L45_TABLES=yCONFIG_SND_SOC_CS35L45=yCONFIG_SND_SOC_CS35L45_I2C=yCONFIG_SND_SOC_CS42L42=yCONFIG_SND_SOC_CS42L51=yCONFIG_SND_SOC_CS42L51_I2C=y
# CONFIG_SND_SOC_CS42L52 is not set
# CONFIG_SND_SOC_CS42L56 is not setCONFIG_SND_SOC_CS42L73=yCONFIG_SND_SOC_CS4234=yCONFIG_SND_SOC_CS4265=y
# CONFIG_SND_SOC_CS4270 is not setCONFIG_SND_SOC_CS4271=yCONFIG_SND_SOC_CS4271_I2C=yCONFIG_SND_SOC_CS42XX8=yCONFIG_SND_SOC_CS42XX8_I2C=yCONFIG_SND_SOC_CS43130=yCONFIG_SND_SOC_CS4341=y
# CONFIG_SND_SOC_CS4349 is not setCONFIG_SND_SOC_CS53L30=yCONFIG_SND_SOC_CX2072X=y
# CONFIG_SND_SOC_JZ4740_CODEC is not set
# CONFIG_SND_SOC_JZ4725B_CODEC is not setCONFIG_SND_SOC_JZ4760_CODEC=yCONFIG_SND_SOC_JZ4770_CODEC=yCONFIG_SND_SOC_L3=y
# CONFIG_SND_SOC_DA7213 is not setCONFIG_SND_SOC_DA7219=yCONFIG_SND_SOC_DMIC=yCONFIG_SND_SOC_HDMI_CODEC=yCONFIG_SND_SOC_ES7134=yCONFIG_SND_SOC_ES7241=yCONFIG_SND_SOC_ES8316=yCONFIG_SND_SOC_ES8328=yCONFIG_SND_SOC_ES8328_I2C=y
# CONFIG_SND_SOC_GTM601 is not setCONFIG_SND_SOC_HDA=yCONFIG_SND_SOC_ICS43432=y
# CONFIG_SND_SOC_INNO_RK3036 is not setCONFIG_SND_SOC_MAX98088=yCONFIG_SND_SOC_MAX98090=yCONFIG_SND_SOC_MAX98095=yCONFIG_SND_SOC_MAX98357A=y
# CONFIG_SND_SOC_MAX98504 is not setCONFIG_SND_SOC_MAX9867=yCONFIG_SND_SOC_MAX98927=yCONFIG_SND_SOC_MAX98520=yCONFIG_SND_SOC_MAX98373=yCONFIG_SND_SOC_MAX98373_I2C=yCONFIG_SND_SOC_MAX98373_SDW=y
# CONFIG_SND_SOC_MAX98390 is not set
# CONFIG_SND_SOC_MAX98396 is not set
# CONFIG_SND_SOC_MAX9860 is not set
# CONFIG_SND_SOC_MSM8916_WCD_ANALOG is not set
# CONFIG_SND_SOC_MSM8916_WCD_DIGITAL is not setCONFIG_SND_SOC_PCM1681=yCONFIG_SND_SOC_PCM1789=yCONFIG_SND_SOC_PCM1789_I2C=y
# CONFIG_SND_SOC_PCM179X_I2C is not setCONFIG_SND_SOC_PCM186X=yCONFIG_SND_SOC_PCM186X_I2C=yCONFIG_SND_SOC_PCM3060=yCONFIG_SND_SOC_PCM3060_I2C=yCONFIG_SND_SOC_PCM3168A=yCONFIG_SND_SOC_PCM3168A_I2C=y
# CONFIG_SND_SOC_PCM5102A is not set
CONFIG_SND_SOC_PCM512x=y
CONFIG_SND_SOC_PCM512x_I2C=y
# CONFIG_SND_SOC_RK3328 is not setCONFIG_SND_SOC_RL6231=yCONFIG_SND_SOC_RL6347A=yCONFIG_SND_SOC_RT286=yCONFIG_SND_SOC_RT1015P=yCONFIG_SND_SOC_RT1308_SDW=yCONFIG_SND_SOC_RT1316_SDW=yCONFIG_SND_SOC_RT5616=yCONFIG_SND_SOC_RT5631=yCONFIG_SND_SOC_RT5640=yCONFIG_SND_SOC_RT5659=yCONFIG_SND_SOC_RT5677=y
# CONFIG_SND_SOC_RT5682_SDW is not setCONFIG_SND_SOC_RT5682S=yCONFIG_SND_SOC_RT700=yCONFIG_SND_SOC_RT700_SDW=y
# CONFIG_SND_SOC_RT711_SDW is not set
# CONFIG_SND_SOC_RT711_SDCA_SDW is not setCONFIG_SND_SOC_RT715=yCONFIG_SND_SOC_RT715_SDW=y
# CONFIG_SND_SOC_RT715_SDCA_SDW is not setCONFIG_SND_SOC_RT9120=y
# CONFIG_SND_SOC_SDW_MOCKUP is not setCONFIG_SND_SOC_SGTL5000=yCONFIG_SND_SOC_SIGMADSP=yCONFIG_SND_SOC_SIGMADSP_I2C=yCONFIG_SND_SOC_SIMPLE_AMPLIFIER=y
# CONFIG_SND_SOC_SIMPLE_MUX is not setCONFIG_SND_SOC_SPDIF=yCONFIG_SND_SOC_SSM2305=yCONFIG_SND_SOC_SSM2518=yCONFIG_SND_SOC_SSM2602=yCONFIG_SND_SOC_SSM2602_I2C=y
# CONFIG_SND_SOC_SSM4567 is not setCONFIG_SND_SOC_STA32X=yCONFIG_SND_SOC_STA350=yCONFIG_SND_SOC_STI_SAS=yCONFIG_SND_SOC_TAS2552=yCONFIG_SND_SOC_TAS2562=yCONFIG_SND_SOC_TAS2764=yCONFIG_SND_SOC_TAS2770=yCONFIG_SND_SOC_TAS2780=y
# CONFIG_SND_SOC_TAS5086 is not set
# CONFIG_SND_SOC_TAS571X is not set
# CONFIG_SND_SOC_TAS5720 is not set
# CONFIG_SND_SOC_TAS5805M is not setCONFIG_SND_SOC_TAS6424=yCONFIG_SND_SOC_TDA7419=yCONFIG_SND_SOC_TFA9879=y
# CONFIG_SND_SOC_TFA989X is not set
# CONFIG_SND_SOC_TLV320ADC3XXX is not setCONFIG_SND_SOC_TLV320AIC23=yCONFIG_SND_SOC_TLV320AIC23_I2C=yCONFIG_SND_SOC_TLV320AIC31XX=y
# CONFIG_SND_SOC_TLV320AIC32X4_I2C is not setCONFIG_SND_SOC_TLV320AIC3X=yCONFIG_SND_SOC_TLV320AIC3X_I2C=y
# CONFIG_SND_SOC_TLV320ADCX140 is not setCONFIG_SND_SOC_TS3A227E=yCONFIG_SND_SOC_TSCS42XX=y
# CONFIG_SND_SOC_TSCS454 is not setCONFIG_SND_SOC_TWL4030=y
# CONFIG_SND_SOC_UDA1334 is not setCONFIG_SND_SOC_UDA134X=yCONFIG_SND_SOC_UDA1380=yCONFIG_SND_SOC_WCD9335=yCONFIG_SND_SOC_WCD_MBHC=yCONFIG_SND_SOC_WCD934X=yCONFIG_SND_SOC_WCD938X=yCONFIG_SND_SOC_WCD938X_SDW=yCONFIG_SND_SOC_WM5100=yCONFIG_SND_SOC_WM8510=yCONFIG_SND_SOC_WM8523=yCONFIG_SND_SOC_WM8524=yCONFIG_SND_SOC_WM8580=yCONFIG_SND_SOC_WM8711=yCONFIG_SND_SOC_WM8728=y
# CONFIG_SND_SOC_WM8731_I2C is not setCONFIG_SND_SOC_WM8737=yCONFIG_SND_SOC_WM8741=yCONFIG_SND_SOC_WM8750=yCONFIG_SND_SOC_WM8753=y
# CONFIG_SND_SOC_WM8776 is not setCONFIG_SND_SOC_WM8782=yCONFIG_SND_SOC_WM8804=yCONFIG_SND_SOC_WM8804_I2C=yCONFIG_SND_SOC_WM8903=yCONFIG_SND_SOC_WM8904=yCONFIG_SND_SOC_WM8940=yCONFIG_SND_SOC_WM8960=yCONFIG_SND_SOC_WM8962=yCONFIG_SND_SOC_WM8974=y
# CONFIG_SND_SOC_WM8978 is not set
# CONFIG_SND_SOC_WM8985 is not setCONFIG_SND_SOC_WM8994=yCONFIG_SND_SOC_WM9081=yCONFIG_SND_SOC_WM9712=y
# CONFIG_SND_SOC_WSA881X is not set
# CONFIG_SND_SOC_WSA883X is not setCONFIG_SND_SOC_MAX9759=yCONFIG_SND_SOC_MT6351=yCONFIG_SND_SOC_MT6358=y
# CONFIG_SND_SOC_MT6359 is not setCONFIG_SND_SOC_MT6359_ACCDET=yCONFIG_SND_SOC_MT6660=y
# CONFIG_SND_SOC_NAU8315 is not setCONFIG_SND_SOC_NAU8540=yCONFIG_SND_SOC_NAU8810=y
# CONFIG_SND_SOC_NAU8821 is not setCONFIG_SND_SOC_NAU8822=yCONFIG_SND_SOC_NAU8824=yCONFIG_SND_SOC_NAU8825=y
# CONFIG_SND_SOC_TPA6130A2 is not setCONFIG_SND_SOC_LPASS_MACRO_COMMON=y
# CONFIG_SND_SOC_LPASS_WSA_MACRO is not setCONFIG_SND_SOC_LPASS_VA_MACRO=yCONFIG_SND_SOC_LPASS_RX_MACRO=y
# CONFIG_SND_SOC_LPASS_TX_MACRO is not set
# end of CODEC drivers
CONFIG_SND_SIMPLE_CARD_UTILS=yCONFIG_SND_SIMPLE_CARD=yCONFIG_SND_AUDIO_GRAPH_CARD=y
# CONFIG_SND_AUDIO_GRAPH_CARD2 is not setCONFIG_SND_TEST_COMPONENT=y
# CONFIG_SND_VIRTIO is not setCONFIG_AC97_BUS=y
#
# HID support
#CONFIG_HID=y
# CONFIG_HID_BATTERY_STRENGTH is not set
# CONFIG_HIDRAW is not setCONFIG_UHID=yCONFIG_HID_GENERIC=y
#
# Special HID drivers
#CONFIG_HID_A4TECH=yCONFIG_HID_ACRUX=y
# CONFIG_HID_ACRUX_FF is not setCONFIG_HID_APPLE=yCONFIG_HID_AUREAL=y
# CONFIG_HID_BELKIN is not set
# CONFIG_HID_CHERRY is not set
# CONFIG_HID_COUGAR is not set
# CONFIG_HID_MACALLY is not setCONFIG_HID_CMEDIA=y
# CONFIG_HID_CYPRESS is not set
# CONFIG_HID_DRAGONRISE is not set
# CONFIG_HID_EMS_FF is not setCONFIG_HID_ELECOM=y
# CONFIG_HID_EZKEY is not setCONFIG_HID_GEMBIRD=yCONFIG_HID_GFRM=yCONFIG_HID_GLORIOUS=yCONFIG_HID_VIVALDI_COMMON=yCONFIG_HID_VIVALDI=yCONFIG_HID_KEYTOUCH=yCONFIG_HID_KYE=y
# CONFIG_HID_WALTOP is not set
# CONFIG_HID_VIEWSONIC is not setCONFIG_HID_XIAOMI=y
# CONFIG_HID_GYRATION is not setCONFIG_HID_ICADE=yCONFIG_HID_ITE=y
# CONFIG_HID_JABRA is not set
# CONFIG_HID_TWINHAN is not setCONFIG_HID_KENSINGTON=yCONFIG_HID_LCPOWER=yCONFIG_HID_LED=yCONFIG_HID_LENOVO=yCONFIG_HID_MAGICMOUSE=y
# CONFIG_HID_MALTRON is not setCONFIG_HID_MAYFLASH=yCONFIG_HID_REDRAGON=yCONFIG_HID_MICROSOFT=yCONFIG_HID_MONTEREY=yCONFIG_HID_MULTITOUCH=yCONFIG_HID_NINTENDO=y
# CONFIG_NINTENDO_FF is not setCONFIG_HID_NTI=y
# CONFIG_HID_ORTEK is not setCONFIG_HID_PANTHERLORD=yCONFIG_PANTHERLORD_FF=yCONFIG_HID_PETALYNX=yCONFIG_HID_PICOLCD=yCONFIG_HID_PICOLCD_FB=yCONFIG_HID_PICOLCD_BACKLIGHT=yCONFIG_HID_PICOLCD_LCD=y
# CONFIG_HID_PICOLCD_LEDS is not set
# CONFIG_HID_PICOLCD_CIR is not setCONFIG_HID_PLANTRONICS=y
# CONFIG_HID_PLAYSTATION is not set
# CONFIG_HID_RAZER is not setCONFIG_HID_PRIMAX=y
# CONFIG_HID_SAITEK is not setCONFIG_HID_SEMITEK=yCONFIG_HID_SPEEDLINK=y
# CONFIG_HID_STEAM is not setCONFIG_HID_STEELSERIES=yCONFIG_HID_SUNPLUS=yCONFIG_HID_RMI=yCONFIG_HID_GREENASIA=yCONFIG_GREENASIA_FF=yCONFIG_HID_SMARTJOYPLUS=y
# CONFIG_SMARTJOYPLUS_FF is not setCONFIG_HID_TIVO=yCONFIG_HID_TOPSEED=yCONFIG_HID_THINGM=yCONFIG_HID_UDRAW_PS3=y
# CONFIG_HID_WIIMOTE is not setCONFIG_HID_XINMO=y
# CONFIG_HID_ZEROPLUS is not setCONFIG_HID_ZYDACRON=yCONFIG_HID_SENSOR_HUB=yCONFIG_HID_SENSOR_CUSTOM_SENSOR=y
# CONFIG_HID_ALPS is not set
# end of Special HID drivers
#
# USB HID support
#
# CONFIG_USB_HID is not set
# CONFIG_HID_PID is not set
#
# USB HID Boot Protocol drivers
#
# CONFIG_USB_KBD is not set
# CONFIG_USB_MOUSE is not set
# end of USB HID Boot Protocol drivers # end of USB HID support
#
# I2C HID support
#CONFIG_I2C_HID_OF=y
# CONFIG_I2C_HID_OF_ELAN is not setCONFIG_I2C_HID_OF_GOODIX=y
# end of I2C HID support
CONFIG_I2C_HID_CORE=y
#
# Intel ISH HID support
#
# end of Intel ISH HID support
#
# AMD SFH HID Support
#CONFIG_AMD_SFH_HID=y
# end of AMD SFH HID Support # end of HID support
CONFIG_USB_OHCI_LITTLE_ENDIAN=yCONFIG_USB_SUPPORT=yCONFIG_USB_COMMON=y
# CONFIG_USB_LED_TRIG is not setCONFIG_USB_ULPI_BUS=y
# CONFIG_USB_CONN_GPIO is not setCONFIG_USB_ARCH_HAS_HCD=yCONFIG_USB=yCONFIG_USB_PCI=yCONFIG_USB_ANNOUNCE_NEW_DEVICES=y
#
# Miscellaneous USB options
#
# CONFIG_USB_DEFAULT_PERSIST is not set
# CONFIG_USB_FEW_INIT_RETRIES is not set
# CONFIG_USB_DYNAMIC_MINORS is not set
# CONFIG_USB_OTG is not setCONFIG_USB_OTG_PRODUCTLIST=y
# CONFIG_USB_OTG_DISABLE_EXTERNAL_HUB is not set
# CONFIG_USB_LEDS_TRIGGER_USBPORT is not setCONFIG_USB_AUTOSUSPEND_DELAY=2
# CONFIG_USB_MON is not set
#
# USB Host Controller Drivers
#CONFIG_USB_C67X00_HCD=y
# CONFIG_USB_XHCI_HCD is not setCONFIG_USB_EHCI_BRCMSTB=yCONFIG_USB_BRCMSTB=yCONFIG_USB_EHCI_HCD=yCONFIG_USB_EHCI_ROOT_HUB_TT=y
# CONFIG_USB_EHCI_TT_NEWSCHED is not setCONFIG_USB_EHCI_PCI=yCONFIG_USB_EHCI_FSL=yCONFIG_USB_EHCI_HCD_NPCM7XX=yCONFIG_USB_EHCI_HCD_OMAP=yCONFIG_USB_EHCI_HCD_ORION=y
# CONFIG_USB_EHCI_HCD_SPEAR is not setCONFIG_USB_EHCI_HCD_STI=yCONFIG_USB_EHCI_HCD_AT91=yCONFIG_USB_EHCI_SH=yCONFIG_USB_EHCI_EXYNOS=yCONFIG_USB_EHCI_MV=y
# CONFIG_USB_CNS3XXX_EHCI is not setCONFIG_USB_EHCI_HCD_PLATFORM=y
# CONFIG_USB_OXU210HP_HCD is not setCONFIG_USB_ISP116X_HCD=yCONFIG_USB_ISP1362_HCD=yCONFIG_USB_FOTG210_HCD=y
# CONFIG_USB_OHCI_HCD is not setCONFIG_USB_UHCI_HCD=yCONFIG_USB_U132_HCD=yCONFIG_USB_SL811_HCD=yCONFIG_USB_SL811_HCD_ISO=y
# CONFIG_USB_R8A66597_HCD is not set
# CONFIG_USB_RENESAS_USBHS_HCD is not set
# CONFIG_USB_HCD_BCMA is not setCONFIG_USB_HCD_SSB=yCONFIG_USB_HCD_TEST_MODE=yCONFIG_USB_RENESAS_USBHS=y
#
# USB Device Class drivers
#CONFIG_USB_PRINTER=y
# CONFIG_USB_WDM is not setCONFIG_USB_TMC=y
#
# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may #
#
# also be needed; see USB_STORAGE Help for more info #
#
# USB Imaging devices
#
# CONFIG_USB_MDC800 is not setCONFIG_USBIP_CORE=yCONFIG_USBIP_VHCI_HCD=yCONFIG_USBIP_VHCI_HC_PORTS=8CONFIG_USBIP_VHCI_NR_HCS=1CONFIG_USBIP_HOST=y
# CONFIG_USBIP_VUDC is not setCONFIG_USBIP_DEBUG=yCONFIG_USB_CDNS_SUPPORT=yCONFIG_USB_CDNS3=yCONFIG_USB_CDNS3_GADGET=y
# CONFIG_USB_CDNS3_HOST is not setCONFIG_USB_CDNS3_TI=y
# CONFIG_USB_CDNS3_IMX is not set
# CONFIG_USB_MTU3 is not setCONFIG_USB_MUSB_HDRC=y
# CONFIG_USB_MUSB_HOST is not set
# CONFIG_USB_MUSB_GADGET is not setCONFIG_USB_MUSB_DUAL_ROLE=y
#
# Platform Glue Layer
#
# CONFIG_USB_MUSB_TUSB6010 is not setCONFIG_USB_MUSB_DSPS=yCONFIG_USB_MUSB_UX500=yCONFIG_USB_MUSB_MEDIATEK=yCONFIG_USB_MUSB_POLARFIRE_SOC=y
#
# MUSB DMA mode
#CONFIG_MUSB_PIO_ONLY=y
# CONFIG_USB_DWC3 is not set
# CONFIG_USB_DWC2 is not set
# CONFIG_USB_CHIPIDEA is not set
# CONFIG_USB_ISP1760 is not set
#
# USB port drivers
#
# CONFIG_USB_USS720 is not set
#
# USB Miscellaneous drivers
#
# CONFIG_USB_EMI62 is not setCONFIG_USB_EMI26=yCONFIG_USB_ADUTUX=yCONFIG_USB_SEVSEG=yCONFIG_USB_LEGOTOWER=yCONFIG_USB_LCD=yCONFIG_USB_CYPRESS_CY7C63=yCONFIG_USB_CYTHERM=y
# CONFIG_USB_IDMOUSE is not setCONFIG_USB_FTDI_ELAN=yCONFIG_USB_APPLEDISPLAY=yCONFIG_USB_QCOM_EUD=yCONFIG_APPLE_MFI_FASTCHARGE=y
# CONFIG_USB_SISUSBVGA is not setCONFIG_USB_LD=yCONFIG_USB_TRANCEVIBRATOR=yCONFIG_USB_IOWARRIOR=y
# CONFIG_USB_TEST is not set
# CONFIG_USB_EHSET_TEST_FIXTURE is not set
# CONFIG_USB_ISIGHTFW is not setCONFIG_USB_YUREX=yCONFIG_USB_EZUSB_FX2=yCONFIG_USB_HUB_USB251XB=yCONFIG_USB_HSIC_USB3503=yCONFIG_USB_HSIC_USB4604=y
# CONFIG_USB_LINK_LAYER_TEST is not set
# CONFIG_USB_CHAOSKEY is not set
# CONFIG_BRCM_USB_PINMAP is not setCONFIG_USB_ONBOARD_HUB=yCONFIG_USB_ATM=yCONFIG_USB_SPEEDTOUCH=yCONFIG_USB_CXACRU=yCONFIG_USB_UEAGLEATM=yCONFIG_USB_XUSBATM=y
#
# USB Physical Layer drivers
#CONFIG_USB_PHY=yCONFIG_KEYSTONE_USB_PHY=yCONFIG_NOP_USB_XCEIV=yCONFIG_AM335X_CONTROL_USB=yCONFIG_AM335X_PHY_USB=yCONFIG_USB_GPIO_VBUS=y
# CONFIG_TAHVO_USB is not set
# CONFIG_USB_ISP1301 is not set
# CONFIG_USB_TEGRA_PHY is not set
# CONFIG_USB_ULPI is not set
# CONFIG_JZ4770_PHY is not set
# end of USB Physical Layer drivers
CONFIG_USB_GADGET=yCONFIG_USB_GADGET_DEBUG=yCONFIG_USB_GADGET_VERBOSE=yCONFIG_USB_GADGET_DEBUG_FILES=y
# CONFIG_USB_GADGET_DEBUG_FS is not setCONFIG_USB_GADGET_VBUS_DRAW=2CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2
#
# USB Peripheral Controller
#
# CONFIG_USB_LPC32XX is not set
# CONFIG_USB_FOTG210_UDC is not setCONFIG_USB_GR_UDC=yCONFIG_USB_R8A66597=yCONFIG_USB_RENESAS_USBHS_UDC=y
# CONFIG_USB_RENESAS_USB3 is not setCONFIG_USB_PXA27X=yCONFIG_USB_MV_UDC=yCONFIG_USB_MV_U3D=yCONFIG_USB_SNP_CORE=y
# CONFIG_USB_SNP_UDC_PLAT is not setCONFIG_USB_M66592=yCONFIG_USB_BDC_UDC=yCONFIG_USB_AMD5536UDC=yCONFIG_USB_NET2272=y
# CONFIG_USB_NET2272_DMA is not setCONFIG_USB_NET2280=yCONFIG_USB_GOKU=yCONFIG_USB_EG20T=y
# CONFIG_USB_GADGET_XILINX is not set
# CONFIG_USB_ASPEED_UDC is not set
# CONFIG_USB_ASPEED_VHUB is not setCONFIG_USB_DUMMY_HCD=y
# end of USB Peripheral Controller
CONFIG_USB_LIBCOMPOSITE=yCONFIG_USB_F_SS_LB=yCONFIG_USB_U_ETHER=yCONFIG_USB_F_NCM=yCONFIG_USB_F_ECM=yCONFIG_USB_F_SUBSET=yCONFIG_USB_F_RNDIS=yCONFIG_USB_F_FS=y
# CONFIG_USB_CONFIGFS is not set
#
# USB Gadget precomposed configurations
#CONFIG_USB_ZERO=y
# CONFIG_USB_AUDIO is not setCONFIG_USB_ETH=y
# CONFIG_USB_ETH_RNDIS is not set
# CONFIG_USB_ETH_EEM is not setCONFIG_USB_G_NCM=yCONFIG_USB_GADGETFS=yCONFIG_USB_FUNCTIONFS=yCONFIG_USB_FUNCTIONFS_ETH=yCONFIG_USB_FUNCTIONFS_RNDIS=yCONFIG_USB_FUNCTIONFS_GENERIC=y
# CONFIG_USB_MIDI_GADGET is not set
# CONFIG_USB_G_PRINTER is not set
# CONFIG_USB_G_HID is not set
# CONFIG_USB_RAW_GADGET is not set
# end of USB Gadget precomposed configurations
# CONFIG_TYPEC is not setCONFIG_USB_ROLE_SWITCH=yCONFIG_MMC=yCONFIG_PWRSEQ_EMMC=yCONFIG_PWRSEQ_SIMPLE=y
# CONFIG_MMC_TEST is not set
#
# MMC/SD/SDIO Host Controller Drivers
#CONFIG_MMC_DEBUG=yCONFIG_MMC_SDHCI=yCONFIG_MMC_SDHCI_IO_ACCESSORS=yCONFIG_MMC_SDHCI_PCI=yCONFIG_MMC_RICOH_MMC=yCONFIG_MMC_SDHCI_PLTFM=yCONFIG_MMC_SDHCI_OF_ARASAN=y
# CONFIG_MMC_SDHCI_OF_ASPEED is not setCONFIG_MMC_SDHCI_OF_AT91=yCONFIG_MMC_SDHCI_OF_ESDHC=yCONFIG_MMC_SDHCI_OF_DWCMSHC=y
# CONFIG_MMC_SDHCI_OF_SPARX5 is not set
# CONFIG_MMC_SDHCI_CADENCE is not set
# CONFIG_MMC_SDHCI_CNS3XXX is not setCONFIG_MMC_SDHCI_ESDHC_IMX=yCONFIG_MMC_SDHCI_DOVE=yCONFIG_MMC_SDHCI_TEGRA=yCONFIG_MMC_SDHCI_S3C=yCONFIG_MMC_SDHCI_PXAV3=y
# CONFIG_MMC_SDHCI_PXAV2 is not set
# CONFIG_MMC_SDHCI_SPEAR is not set
# CONFIG_MMC_SDHCI_S3C_DMA is not setCONFIG_MMC_SDHCI_BCM_KONA=y
# CONFIG_MMC_SDHCI_F_SDH30 is not setCONFIG_MMC_SDHCI_MILBEAUT=y
# CONFIG_MMC_SDHCI_IPROC is not setCONFIG_MMC_MESON_GX=y
# CONFIG_MMC_MESON_MX_SDHC is not set
# CONFIG_MMC_MESON_MX_SDIO is not setCONFIG_MMC_MOXART=yCONFIG_MMC_SDHCI_ST=yCONFIG_MMC_OMAP_HS=y
# CONFIG_MMC_ALCOR is not setCONFIG_MMC_SDHCI_MSM=yCONFIG_MMC_TIFM_SD=y
# CONFIG_MMC_DAVINCI is not set
# CONFIG_MMC_S3C is not setCONFIG_MMC_SDHCI_SPRD=yCONFIG_MMC_TMIO_CORE=yCONFIG_MMC_TMIO=y
# CONFIG_MMC_SDHI is not setCONFIG_MMC_UNIPHIER=yCONFIG_MMC_CB710=yCONFIG_MMC_VIA_SDMMC=y
# CONFIG_MMC_CAVIUM_THUNDERX is not setCONFIG_MMC_DW=yCONFIG_MMC_DW_PLTFM=y
# CONFIG_MMC_DW_BLUEFIELD is not set
# CONFIG_MMC_DW_EXYNOS is not setCONFIG_MMC_DW_HI3798CV200=yCONFIG_MMC_DW_K3=yCONFIG_MMC_DW_PCI=yCONFIG_MMC_SH_MMCIF=y
# CONFIG_MMC_VUB300 is not set
# CONFIG_MMC_USHC is not setCONFIG_MMC_USDHI6ROL0=yCONFIG_MMC_REALTEK_PCI=y
# CONFIG_MMC_REALTEK_USB is not set
# CONFIG_MMC_SUNXI is not setCONFIG_MMC_CQHCI=yCONFIG_MMC_HSQ=yCONFIG_MMC_TOSHIBA_PCI=yCONFIG_MMC_BCM2835=yCONFIG_MMC_MTK=yCONFIG_MMC_SDHCI_XENON=yCONFIG_MMC_SDHCI_OMAP=y
# CONFIG_MMC_SDHCI_AM654 is not set
# CONFIG_MMC_OWL is not setCONFIG_MMC_SDHCI_EXTERNAL_DMA=yCONFIG_MMC_LITEX=yCONFIG_MEMSTICK=yCONFIG_MEMSTICK_DEBUG=y
#
# MemoryStick drivers
#CONFIG_MEMSTICK_UNSAFE_RESUME=y
#
# MemoryStick Host Controller Drivers
#CONFIG_MEMSTICK_TIFM_MS=yCONFIG_MEMSTICK_JMICRON_38X=yCONFIG_MEMSTICK_R592=y
# CONFIG_MEMSTICK_REALTEK_PCI is not setCONFIG_MEMSTICK_REALTEK_USB=yCONFIG_NEW_LEDS=yCONFIG_LEDS_CLASS=yCONFIG_LEDS_CLASS_FLASH=yCONFIG_LEDS_CLASS_MULTICOLOR=yCONFIG_LEDS_BRIGHTNESS_HW_CHANGED=y
#
# LED drivers
#CONFIG_LEDS_AN30259A=yCONFIG_LEDS_ARIEL=yCONFIG_LEDS_AW2013=yCONFIG_LEDS_BCM6328=yCONFIG_LEDS_BCM6358=yCONFIG_LEDS_TURRIS_OMNIA=y
# CONFIG_LEDS_LM3530 is not set
# CONFIG_LEDS_LM3532 is not setCONFIG_LEDS_LM3533=yCONFIG_LEDS_LM3642=yCONFIG_LEDS_LM3692X=yCONFIG_LEDS_MT6323=y
# CONFIG_LEDS_S3C24XX is not set
# CONFIG_LEDS_COBALT_QUBE is not set
# CONFIG_LEDS_COBALT_RAQ is not setCONFIG_LEDS_PCA9532=y
# CONFIG_LEDS_PCA9532_GPIO is not setCONFIG_LEDS_GPIO=y
# CONFIG_LEDS_LP3944 is not set
# CONFIG_LEDS_LP3952 is not setCONFIG_LEDS_LP50XX=yCONFIG_LEDS_LP55XX_COMMON=y
# CONFIG_LEDS_LP5521 is not set
# CONFIG_LEDS_LP5523 is not setCONFIG_LEDS_LP5562=y
# CONFIG_LEDS_LP8501 is not set
# CONFIG_LEDS_LP8788 is not setCONFIG_LEDS_LP8860=yCONFIG_LEDS_PCA955X=y
# CONFIG_LEDS_PCA955X_GPIO is not set
# CONFIG_LEDS_PCA963X is not setCONFIG_LEDS_WM831X_STATUS=yCONFIG_LEDS_DA903X=y
# CONFIG_LEDS_PWM is not setCONFIG_LEDS_REGULATOR=yCONFIG_LEDS_BD2802=yCONFIG_LEDS_LT3593=yCONFIG_LEDS_ADP5520=yCONFIG_LEDS_MC13783=y
# CONFIG_LEDS_NS2 is not set
# CONFIG_LEDS_NETXBIG is not set
# CONFIG_LEDS_TCA6507 is not setCONFIG_LEDS_TLC591XX=y
CONFIG_LEDS_LM355x=yCONFIG_LEDS_OT200=yCONFIG_LEDS_MENF21BMC=y
# CONFIG_LEDS_IS31FL319X is not set
# CONFIG_LEDS_IS31FL32XX is not set
#
# LED driver for blink(1) USB RGB LED is under Special HID drivers (HID_THINGM) #CONFIG_LEDS_BLINKM=y
# CONFIG_LEDS_SYSCON is not setCONFIG_LEDS_PM8058=y
# CONFIG_LEDS_MLXREG is not setCONFIG_LEDS_USER=yCONFIG_LEDS_TI_LMU_COMMON=yCONFIG_LEDS_LM3697=y
# CONFIG_LEDS_IP30 is not setCONFIG_LEDS_ACER_A500=y
# CONFIG_LEDS_BCM63138 is not setCONFIG_LEDS_LGM=y
#
# Flash and Torch LED drivers
#CONFIG_LEDS_AAT1290=y
# CONFIG_LEDS_AS3645A is not set
# CONFIG_LEDS_KTD2692 is not set
# CONFIG_LEDS_LM3601X is not set
# CONFIG_LEDS_MT6360 is not setCONFIG_LEDS_RT4505=yCONFIG_LEDS_RT8515=yCONFIG_LEDS_SGM3140=y
#
# RGB LED drivers
#CONFIG_LEDS_PWM_MULTICOLOR=yCONFIG_LEDS_QCOM_LPG=y
#
# LED Triggers
#CONFIG_LEDS_TRIGGERS=yCONFIG_LEDS_TRIGGER_TIMER=yCONFIG_LEDS_TRIGGER_ONESHOT=y
# CONFIG_LEDS_TRIGGER_MTD is not setCONFIG_LEDS_TRIGGER_HEARTBEAT=yCONFIG_LEDS_TRIGGER_BACKLIGHT=yCONFIG_LEDS_TRIGGER_CPU=yCONFIG_LEDS_TRIGGER_ACTIVITY=yCONFIG_LEDS_TRIGGER_GPIO=yCONFIG_LEDS_TRIGGER_DEFAULT_ON=y
#
# iptables trigger is under Netfilter config (LED target) # CONFIG_LEDS_TRIGGER_TRANSIENT=y CONFIG_LEDS_TRIGGER_CAMERA=y CONFIG_LEDS_TRIGGER_PANIC=y CONFIG_LEDS_TRIGGER_NETDEV=y CONFIG_LEDS_TRIGGER_PATTERN=y CONFIG_LEDS_TRIGGER_AUDIO=y
#
# Simple LED drivers
#
# CONFIG_ACCESSIBILITY is not set
# CONFIG_INFINIBAND is not setCONFIG_EDAC_SUPPORT=yCONFIG_EDAC=yCONFIG_EDAC_LEGACY_SYSFS=yCONFIG_EDAC_DEBUG=y
# CONFIG_EDAC_AL_MC is not set
# CONFIG_EDAC_SIFIVE is not set
# CONFIG_EDAC_XGENE is not setCONFIG_RTC_LIB=yCONFIG_RTC_CLASS=yCONFIG_RTC_HCTOSYS=yCONFIG_RTC_HCTOSYS_DEVICE="rtc0"
# CONFIG_RTC_SYSTOHC is not setCONFIG_RTC_DEBUG=yCONFIG_RTC_LIB_KUNIT_TEST=y
# CONFIG_RTC_NVMEM is not set
#
# RTC interfaces
#CONFIG_RTC_INTF_SYSFS=y
# CONFIG_RTC_INTF_PROC is not set
# CONFIG_RTC_INTF_DEV is not set
# CONFIG_RTC_DRV_TEST is not set
#
# I2C RTC drivers
#CONFIG_RTC_DRV_88PM80X=yCONFIG_RTC_DRV_ABB5ZES3=yCONFIG_RTC_DRV_ABEOZ9=y
# CONFIG_RTC_DRV_ABX80X is not set
# CONFIG_RTC_DRV_BRCMSTB is not setCONFIG_RTC_DRV_AS3722=yCONFIG_RTC_DRV_DS1307=y
# CONFIG_RTC_DRV_DS1307_CENTURY is not set
# CONFIG_RTC_DRV_DS1374 is not set
# CONFIG_RTC_DRV_DS1672 is not setCONFIG_RTC_DRV_HYM8563=yCONFIG_RTC_DRV_LP8788=yCONFIG_RTC_DRV_MAX6900=yCONFIG_RTC_DRV_MAX8907=y
# CONFIG_RTC_DRV_MAX8998 is not set
# CONFIG_RTC_DRV_MAX77686 is not setCONFIG_RTC_DRV_NCT3018Y=yCONFIG_RTC_DRV_RS5C372=yCONFIG_RTC_DRV_ISL1208=yCONFIG_RTC_DRV_ISL12022=yCONFIG_RTC_DRV_ISL12026=y
# CONFIG_RTC_DRV_X1205 is not set
# CONFIG_RTC_DRV_PCF8523 is not setCONFIG_RTC_DRV_PCF85063=yCONFIG_RTC_DRV_PCF85363=yCONFIG_RTC_DRV_PCF8563=yCONFIG_RTC_DRV_PCF8583=y
# CONFIG_RTC_DRV_M41T80 is not setCONFIG_RTC_DRV_BD70528=yCONFIG_RTC_DRV_BQ32K=yCONFIG_RTC_DRV_TWL4030=yCONFIG_RTC_DRV_TPS6586X=yCONFIG_RTC_DRV_RC5T583=yCONFIG_RTC_DRV_RC5T619=y
# CONFIG_RTC_DRV_S35390A is not set
# CONFIG_RTC_DRV_FM3130 is not setCONFIG_RTC_DRV_RX8010=y
# CONFIG_RTC_DRV_RX8581 is not setCONFIG_RTC_DRV_RX8025=y
# CONFIG_RTC_DRV_EM3027 is not set
# CONFIG_RTC_DRV_RV3028 is not setCONFIG_RTC_DRV_RV3032=yCONFIG_RTC_DRV_RV8803=yCONFIG_RTC_DRV_S5M=yCONFIG_RTC_DRV_SD3078=y
#
# SPI RTC drivers
#CONFIG_RTC_I2C_AND_SPI=y
#
# SPI and I2C RTC drivers
#CONFIG_RTC_DRV_DS3232=y
# CONFIG_RTC_DRV_DS3232_HWMON is not set
# CONFIG_RTC_DRV_PCF2127 is not setCONFIG_RTC_DRV_RV3029C2=yCONFIG_RTC_DRV_RV3029_HWMON=yCONFIG_RTC_DRV_RX6110=y
#
# Platform RTC drivers
#
# CONFIG_RTC_DRV_DS1286 is not set
# CONFIG_RTC_DRV_DS1511 is not setCONFIG_RTC_DRV_DS1553=yCONFIG_RTC_DRV_DS1685_FAMILY=yCONFIG_RTC_DRV_DS1685=y
# CONFIG_RTC_DRV_DS1689 is not set
# CONFIG_RTC_DRV_DS17285 is not set
# CONFIG_RTC_DRV_DS17485 is not set
# CONFIG_RTC_DRV_DS17885 is not set
# CONFIG_RTC_DRV_DS1742 is not setCONFIG_RTC_DRV_DS2404=y
# CONFIG_RTC_DRV_DA9063 is not setCONFIG_RTC_DRV_EFI=yCONFIG_RTC_DRV_STK17TA8=yCONFIG_RTC_DRV_M48T86=yCONFIG_RTC_DRV_M48T35=yCONFIG_RTC_DRV_M48T59=y
# CONFIG_RTC_DRV_MSM6242 is not setCONFIG_RTC_DRV_BQ4802=yCONFIG_RTC_DRV_RP5C01=y
# CONFIG_RTC_DRV_V3020 is not setCONFIG_RTC_DRV_GAMECUBE=yCONFIG_RTC_DRV_WM831X=yCONFIG_RTC_DRV_SC27XX=y
# CONFIG_RTC_DRV_SPEAR is not set
# CONFIG_RTC_DRV_PCF50633 is not setCONFIG_RTC_DRV_ZYNQMP=yCONFIG_RTC_DRV_CROS_EC=yCONFIG_RTC_DRV_NTXEC=y
#
# on-CPU RTC drivers
#CONFIG_RTC_DRV_ASM9260=yCONFIG_RTC_DRV_DAVINCI=yCONFIG_RTC_DRV_DIGICOLOR=yCONFIG_RTC_DRV_FSL_FTM_ALARM=yCONFIG_RTC_DRV_MESON=yCONFIG_RTC_DRV_MESON_VRTC=yCONFIG_RTC_DRV_OMAP=yCONFIG_RTC_DRV_S3C=yCONFIG_RTC_DRV_EP93XX=y
# CONFIG_RTC_DRV_AT91RM9200 is not setCONFIG_RTC_DRV_AT91SAM9=yCONFIG_RTC_DRV_RZN1=y
# CONFIG_RTC_DRV_GENERIC is not setCONFIG_RTC_DRV_VT8500=yCONFIG_RTC_DRV_SUN6I=y
# CONFIG_RTC_DRV_SUNXI is not setCONFIG_RTC_DRV_MV=y
# CONFIG_RTC_DRV_ARMADA38X is not setCONFIG_RTC_DRV_CADENCE=yCONFIG_RTC_DRV_FTRTC010=yCONFIG_RTC_DRV_STMP=y
# CONFIG_RTC_DRV_MC13XXX is not set
# CONFIG_RTC_DRV_JZ4740 is not setCONFIG_RTC_DRV_LPC24XX=yCONFIG_RTC_DRV_LPC32XX=yCONFIG_RTC_DRV_PM8XXX=yCONFIG_RTC_DRV_TEGRA=yCONFIG_RTC_DRV_MXC=yCONFIG_RTC_DRV_MXC_V2=y
# CONFIG_RTC_DRV_SNVS is not setCONFIG_RTC_DRV_MOXART=y
# CONFIG_RTC_DRV_MT2712 is not setCONFIG_RTC_DRV_MT6397=yCONFIG_RTC_DRV_MT7622=y
# CONFIG_RTC_DRV_XGENE is not set
# CONFIG_RTC_DRV_R7301 is not setCONFIG_RTC_DRV_STM32=y
# CONFIG_RTC_DRV_RTD119X is not set
# CONFIG_RTC_DRV_ASPEED is not setCONFIG_RTC_DRV_TI_K3=y
#
# HID Sensor RTC drivers
#CONFIG_RTC_DRV_GOLDFISH=yCONFIG_RTC_DRV_MSC313=yCONFIG_DMADEVICES=y
# CONFIG_DMADEVICES_DEBUG is not set
#
# DMA Devices
#CONFIG_ASYNC_TX_ENABLE_CHANNEL_SWITCH=yCONFIG_DMA_ENGINE=yCONFIG_DMA_VIRTUAL_CHANNELS=yCONFIG_DMA_OF=y
# CONFIG_ALTERA_MSGDMA is not setCONFIG_APPLE_ADMAC=yCONFIG_AXI_DMAC=yCONFIG_DMA_JZ4780=yCONFIG_DMA_SA11X0=yCONFIG_DMA_SUN6I=y
# CONFIG_DW_AXI_DMAC is not set
# CONFIG_EP93XX_DMA is not set
# CONFIG_FSL_EDMA is not setCONFIG_HISI_DMA=yCONFIG_IMG_MDC_DMA=yCONFIG_INTEL_IDMA64=yCONFIG_INTEL_IOP_ADMA=yCONFIG_K3_DMA=y
# CONFIG_MCF_EDMA is not set
# CONFIG_MILBEAUT_HDMAC is not setCONFIG_MILBEAUT_XDMAC=yCONFIG_MMP_PDMA=yCONFIG_MMP_TDMA=y
# CONFIG_MV_XOR is not set
# CONFIG_MXS_DMA is not setCONFIG_NBPFAXI_DMA=yCONFIG_PCH_DMA=yCONFIG_PLX_DMA=y
# CONFIG_STM32_DMA is not setCONFIG_STM32_DMAMUX=yCONFIG_STM32_MDMA=yCONFIG_SPRD_DMA=yCONFIG_S3C24XX_DMAC=y
# CONFIG_TEGRA186_GPC_DMA is not set
# CONFIG_TEGRA20_APB_DMA is not setCONFIG_TEGRA210_ADMA=yCONFIG_TIMB_DMA=yCONFIG_UNIPHIER_MDMAC=y
# CONFIG_UNIPHIER_XDMAC is not set
# CONFIG_XGENE_DMA is not setCONFIG_XILINX_ZYNQMP_DMA=y
# CONFIG_XILINX_ZYNQMP_DPDMA is not set
# CONFIG_MTK_HSDMA is not set
# CONFIG_MTK_CQDMA is not setCONFIG_QCOM_HIDMA_MGMT=y
# CONFIG_QCOM_HIDMA is not setCONFIG_DW_DMAC_CORE=yCONFIG_DW_DMAC=yCONFIG_RZN1_DMAMUX=yCONFIG_DW_DMAC_PCI=yCONFIG_DW_EDMA=yCONFIG_DW_EDMA_PCIE=y
# CONFIG_SF_PDMA is not setCONFIG_RENESAS_DMA=yCONFIG_SH_DMAE_BASE=y
# CONFIG_SH_DMAE is not setCONFIG_RCAR_DMAC=y
# CONFIG_RENESAS_USB_DMAC is not set
# CONFIG_RZ_DMAC is not setCONFIG_TI_EDMA=yCONFIG_DMA_OMAP=yCONFIG_TI_DMA_CROSSBAR=y
# CONFIG_INTEL_LDMA is not set
#
# DMA Clients
#CONFIG_ASYNC_TX_DMA=y
# CONFIG_DMATEST is not set
#
# DMABUF options
#CONFIG_SYNC_FILE=yCONFIG_SW_SYNC=y
# CONFIG_UDMABUF is not setCONFIG_DMABUF_MOVE_NOTIFY=yCONFIG_DMABUF_DEBUG=yCONFIG_DMABUF_SELFTESTS=y
# CONFIG_DMABUF_HEAPS is not setCONFIG_DMABUF_SYSFS_STATS=y
# end of DMABUF options
CONFIG_AUXDISPLAY=yCONFIG_CHARLCD=yCONFIG_LINEDISP=yCONFIG_HD44780_COMMON=yCONFIG_HD44780=y
# CONFIG_IMG_ASCII_LCD is not set
# CONFIG_HT16K33 is not setCONFIG_LCD2S=yCONFIG_PARPORT_PANEL=yCONFIG_PANEL_PARPORT=0CONFIG_PANEL_PROFILE=5
# CONFIG_PANEL_CHANGE_MESSAGE is not set
# CONFIG_CHARLCD_BL_OFF is not set
# CONFIG_CHARLCD_BL_ON is not setCONFIG_CHARLCD_BL_FLASH=yCONFIG_PANEL=yCONFIG_UIO=y
# CONFIG_UIO_CIF is not setCONFIG_UIO_PDRV_GENIRQ=y
# CONFIG_UIO_DMEM_GENIRQ is not setCONFIG_UIO_AEC=yCONFIG_UIO_SERCOS3=yCONFIG_UIO_PCI_GENERIC=yCONFIG_UIO_NETX=yCONFIG_UIO_PRUSS=y
# CONFIG_UIO_MF624 is not setCONFIG_VFIO=yCONFIG_VFIO_VIRQFD=yCONFIG_VFIO_NOIOMMU=yCONFIG_VFIO_PCI_CORE=yCONFIG_VFIO_PCI_MMAP=yCONFIG_VFIO_PCI_INTX=yCONFIG_VFIO_PCI=y
# CONFIG_VFIO_PLATFORM is not setCONFIG_VFIO_MDEV=yCONFIG_IRQ_BYPASS_MANAGER=yCONFIG_VIRT_DRIVERS=yCONFIG_VIRTIO_ANCHOR=yCONFIG_VIRTIO=yCONFIG_VIRTIO_PCI_LIB=yCONFIG_VIRTIO_PCI_LIB_LEGACY=yCONFIG_VIRTIO_MENU=yCONFIG_VIRTIO_PCI=yCONFIG_VIRTIO_PCI_LEGACY=yCONFIG_VIRTIO_VDPA=y
# CONFIG_VIRTIO_BALLOON is not set
# CONFIG_VIRTIO_INPUT is not setCONFIG_VIRTIO_MMIO=y
# CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES is not setCONFIG_VDPA=y
# CONFIG_VDPA_USER is not setCONFIG_IFCVF=yCONFIG_VP_VDPA=y
# CONFIG_VHOST_MENU is not set
#
# Microsoft Hyper-V guest support
#
# end of Microsoft Hyper-V guest support
CONFIG_GREYBUS=yCONFIG_GREYBUS_ES2=y
# CONFIG_COMEDI is not setCONFIG_STAGING=y
#
# IIO staging drivers
#
#
# Accelerometers
#
# end of Accelerometers
#
# Analog to digital converters
#
# end of Analog to digital converters
#
# Analog digital bi-direction converters
#CONFIG_ADT7316=yCONFIG_ADT7316_I2C=y
# end of Analog digital bi-direction converters
#
# Capacitance to digital converters
#CONFIG_AD7746=y
# end of Capacitance to digital converters
#
# Direct Digital Synthesis
#
# end of Direct Digital Synthesis
#
# Network Analyzer, Impedance Converters
#CONFIG_AD5933=y
# end of Network Analyzer, Impedance Converters
#
# Active energy metering IC
#
# CONFIG_ADE7854 is not set
# end of Active energy metering IC
#
# Resolver to digital converters
#
# end of Resolver to digital converters # end of IIO staging drivers
CONFIG_FB_SM750=yCONFIG_USB_EMXX=yCONFIG_STAGING_MEDIA=yCONFIG_VIDEO_SUNXI=yCONFIG_STAGING_BOARD=yCONFIG_COMMON_CLK_XLNX_CLKWZRD=y
# CONFIG_MOST_COMPONENTS is not setCONFIG_GREYBUS_AUDIO=y
# CONFIG_GREYBUS_AUDIO_APB_CODEC is not setCONFIG_GREYBUS_BOOTROM=y
# CONFIG_GREYBUS_HID is not setCONFIG_GREYBUS_LIGHT=yCONFIG_GREYBUS_LOG=y
# CONFIG_GREYBUS_LOOPBACK is not setCONFIG_GREYBUS_POWER=yCONFIG_GREYBUS_RAW=yCONFIG_GREYBUS_VIBRATOR=y
# CONFIG_GREYBUS_BRIDGED_PHY is not setCONFIG_GREYBUS_ARCHE=yCONFIG_BCM_VIDEOCORE=yCONFIG_BCM2835_VCHIQ=yCONFIG_VCHIQ_CDEV=yCONFIG_SND_BCM2835=yCONFIG_BCM2835_VCHIQ_MMAL=yCONFIG_XIL_AXIS_FIFO=yCONFIG_FIELDBUS_DEV=y
# CONFIG_HMS_ANYBUSS_BUS is not setCONFIG_VME_BUS=y
#
# VME Bridge Drivers
#CONFIG_VME_TSI148=yCONFIG_VME_FAKE=y
#
# VME Device Drivers
#
# CONFIG_VME_USER is not setCONFIG_GOLDFISH=yCONFIG_GOLDFISH_PIPE=yCONFIG_CHROME_PLATFORMS=yCONFIG_CROS_EC=yCONFIG_CROS_EC_I2C=yCONFIG_CROS_EC_RPMSG=yCONFIG_CROS_EC_PROTO=yCONFIG_CROS_KBD_LED_BACKLIGHT=yCONFIG_CROS_KUNIT=y
# CONFIG_MELLANOX_PLATFORM is not set
# CONFIG_OLPC_XO175 is not set
# CONFIG_SURFACE_PLATFORMS is not setCONFIG_HAVE_CLK=yCONFIG_HAVE_CLK_PREPARE=yCONFIG_COMMON_CLK=y
# CONFIG_COMMON_CLK_WM831X is not set
#
# Clock driver for ARM Reference designs
#CONFIG_CLK_ICST=yCONFIG_CLK_SP810=y
# end of Clock driver for ARM Reference designs
CONFIG_CLK_HSDK=yCONFIG_COMMON_CLK_APPLE_NCO=yCONFIG_COMMON_CLK_MAX77686=y
# CONFIG_COMMON_CLK_MAX9485 is not setCONFIG_COMMON_CLK_HI655X=y
# CONFIG_COMMON_CLK_SCMI is not setCONFIG_COMMON_CLK_SCPI=y
# CONFIG_COMMON_CLK_SI5341 is not setCONFIG_COMMON_CLK_SI5351=y
# CONFIG_COMMON_CLK_SI514 is not setCONFIG_COMMON_CLK_SI544=yCONFIG_COMMON_CLK_SI570=y
# CONFIG_COMMON_CLK_BM1880 is not set
# CONFIG_COMMON_CLK_CDCE706 is not set
# CONFIG_COMMON_CLK_TPS68470 is not set
# CONFIG_COMMON_CLK_CDCE925 is not setCONFIG_COMMON_CLK_CS2000_CP=y
# CONFIG_COMMON_CLK_EN7523 is not setCONFIG_COMMON_CLK_FSL_FLEXSPI=yCONFIG_COMMON_CLK_FSL_SAI=yCONFIG_COMMON_CLK_GEMINI=y
# CONFIG_COMMON_CLK_LAN966X is not setCONFIG_COMMON_CLK_ASPEED=yCONFIG_COMMON_CLK_S2MPS11=yCONFIG_COMMON_CLK_AXI_CLKGEN=y
# CONFIG_CLK_QORIQ is not setCONFIG_CLK_LS1028A_PLLDIG=y
# CONFIG_COMMON_CLK_XGENE is not set
# CONFIG_COMMON_CLK_PWM is not set
# CONFIG_COMMON_CLK_OXNAS is not setCONFIG_COMMON_CLK_RS9_PCIE=y
# CONFIG_COMMON_CLK_VC5 is not set
# CONFIG_COMMON_CLK_MMP2_AUDIO is not set
# CONFIG_COMMON_CLK_BD718XX is not setCONFIG_COMMON_CLK_FIXED_MMIO=yCONFIG_CLK_ACTIONS=yCONFIG_CLK_OWL_S500=yCONFIG_CLK_OWL_S700=yCONFIG_CLK_OWL_S900=y
# CONFIG_CLK_BAIKAL_T1 is not set
# CONFIG_CLK_BCM2711_DVP is not setCONFIG_CLK_BCM2835=yCONFIG_CLK_BCM_63XX=yCONFIG_CLK_BCM_63XX_GATE=y
# CONFIG_CLK_BCM_KONA is not setCONFIG_COMMON_CLK_IPROC=yCONFIG_CLK_BCM_CYGNUS=y
# CONFIG_CLK_BCM_HR2 is not setCONFIG_CLK_BCM_NSP=y
# CONFIG_CLK_BCM_NS2 is not set
# CONFIG_CLK_BCM_SR is not setCONFIG_CLK_RASPBERRYPI=y
# CONFIG_COMMON_CLK_HI3516CV300 is not setCONFIG_COMMON_CLK_HI3519=y
# CONFIG_COMMON_CLK_HI3559A is not setCONFIG_COMMON_CLK_HI3660=yCONFIG_COMMON_CLK_HI3670=y
# CONFIG_COMMON_CLK_HI3798CV200 is not setCONFIG_COMMON_CLK_HI6220=yCONFIG_RESET_HISI=yCONFIG_STUB_CLK_HI6220=y
# CONFIG_STUB_CLK_HI3660 is not setCONFIG_COMMON_CLK_BOSTON=yCONFIG_MXC_CLK=y
# CONFIG_CLK_IMX8MM is not setCONFIG_CLK_IMX8MN=y
# CONFIG_CLK_IMX8MP is not setCONFIG_CLK_IMX8MQ=y
# CONFIG_CLK_IMX8ULP is not set
# CONFIG_CLK_IMX93 is not set
#
# Ingenic SoCs drivers
#CONFIG_INGENIC_CGU_COMMON=y
# CONFIG_INGENIC_CGU_JZ4740 is not setCONFIG_INGENIC_CGU_JZ4725B=y
# CONFIG_INGENIC_CGU_JZ4760 is not setCONFIG_INGENIC_CGU_JZ4770=y
# CONFIG_INGENIC_CGU_JZ4780 is not setCONFIG_INGENIC_CGU_X1000=yCONFIG_INGENIC_CGU_X1830=y
# CONFIG_INGENIC_TCU_CLK is not set
# end of Ingenic SoCs drivers
CONFIG_COMMON_CLK_KEYSTONE=yCONFIG_TI_SYSCON_CLK=y
#
# Clock driver for MediaTek SoC
#CONFIG_COMMON_CLK_MEDIATEK=y
# CONFIG_COMMON_CLK_MT2701 is not set
# CONFIG_COMMON_CLK_MT2712 is not setCONFIG_COMMON_CLK_MT6765=y
# CONFIG_COMMON_CLK_MT6765_AUDIOSYS is not set
# CONFIG_COMMON_CLK_MT6765_CAMSYS is not set
# CONFIG_COMMON_CLK_MT6765_GCESYS is not set
# CONFIG_COMMON_CLK_MT6765_MMSYS is not setCONFIG_COMMON_CLK_MT6765_IMGSYS=yCONFIG_COMMON_CLK_MT6765_VCODECSYS=y
# CONFIG_COMMON_CLK_MT6765_MFGSYS is not set
# CONFIG_COMMON_CLK_MT6765_MIPI0ASYS is not set
# CONFIG_COMMON_CLK_MT6765_MIPI0BSYS is not setCONFIG_COMMON_CLK_MT6765_MIPI1ASYS=yCONFIG_COMMON_CLK_MT6765_MIPI1BSYS=y
# CONFIG_COMMON_CLK_MT6765_MIPI2ASYS is not set
# CONFIG_COMMON_CLK_MT6765_MIPI2BSYS is not setCONFIG_COMMON_CLK_MT6779=y
# CONFIG_COMMON_CLK_MT6779_MMSYS is not set
# CONFIG_COMMON_CLK_MT6779_IMGSYS is not setCONFIG_COMMON_CLK_MT6779_IPESYS=y
# CONFIG_COMMON_CLK_MT6779_CAMSYS is not setCONFIG_COMMON_CLK_MT6779_VDECSYS=y
# CONFIG_COMMON_CLK_MT6779_VENCSYS is not setCONFIG_COMMON_CLK_MT6779_MFGCFG=yCONFIG_COMMON_CLK_MT6779_AUDSYS=yCONFIG_COMMON_CLK_MT6797=y
# CONFIG_COMMON_CLK_MT6797_MMSYS is not setCONFIG_COMMON_CLK_MT6797_IMGSYS=y
# CONFIG_COMMON_CLK_MT6797_VDECSYS is not setCONFIG_COMMON_CLK_MT6797_VENCSYS=y
# CONFIG_COMMON_CLK_MT7622 is not setCONFIG_COMMON_CLK_MT7629=yCONFIG_COMMON_CLK_MT7629_ETHSYS=y
# CONFIG_COMMON_CLK_MT7629_HIFSYS is not setCONFIG_COMMON_CLK_MT7986=yCONFIG_COMMON_CLK_MT7986_ETHSYS=y
# CONFIG_COMMON_CLK_MT8135 is not set
# CONFIG_COMMON_CLK_MT8167 is not set
# CONFIG_COMMON_CLK_MT8173 is not set
# CONFIG_COMMON_CLK_MT8183 is not setCONFIG_COMMON_CLK_MT8186=y
# CONFIG_COMMON_CLK_MT8192 is not setCONFIG_COMMON_CLK_MT8195=y
# CONFIG_COMMON_CLK_MT8516 is not set
# end of Clock driver for MediaTek SoC
#
# Clock support for Amlogic platforms
#
# CONFIG_COMMON_CLK_AXG_AUDIO is not set
# end of Clock support for Amlogic platforms
# CONFIG_MSTAR_MSC313_MPLL is not setCONFIG_MCHP_CLK_MPFS=y
# CONFIG_COMMON_CLK_PISTACHIO is not set
# CONFIG_COMMON_CLK_QCOM is not set
# CONFIG_CLK_MT7621 is not set
# CONFIG_CLK_RENESAS is not setCONFIG_COMMON_CLK_SAMSUNG=yCONFIG_S3C64XX_COMMON_CLK=y
# CONFIG_S5PV210_COMMON_CLK is not setCONFIG_EXYNOS_3250_COMMON_CLK=yCONFIG_EXYNOS_4_COMMON_CLK=y
# CONFIG_EXYNOS_5250_COMMON_CLK is not set
# CONFIG_EXYNOS_5260_COMMON_CLK is not set
# CONFIG_EXYNOS_5410_COMMON_CLK is not setCONFIG_EXYNOS_5420_COMMON_CLK=yCONFIG_EXYNOS_ARM64_COMMON_CLK=y
# CONFIG_EXYNOS_AUDSS_CLK_CON is not setCONFIG_EXYNOS_CLKOUT=y
# CONFIG_S3C2410_COMMON_CLK is not setCONFIG_S3C2412_COMMON_CLK=yCONFIG_S3C2443_COMMON_CLK=yCONFIG_TESLA_FSD_COMMON_CLK=y
# CONFIG_CLK_SIFIVE is not setCONFIG_CLK_INTEL_SOCFPGA=yCONFIG_CLK_INTEL_SOCFPGA32=yCONFIG_CLK_INTEL_SOCFPGA64=yCONFIG_SPRD_COMMON_CLK=yCONFIG_SPRD_SC9860_CLK=yCONFIG_SPRD_SC9863A_CLK=yCONFIG_CLK_STARFIVE=yCONFIG_CLK_STARFIVE_JH7100=yCONFIG_CLK_STARFIVE_JH7100_AUDIO=yCONFIG_CLK_STARFIVE_JH7110_SYS=yCONFIG_CLK_STARFIVE_JH7110_AON=yCONFIG_CLK_SUNXI=y
# CONFIG_CLK_SUNXI_CLOCKS is not setCONFIG_CLK_SUNXI_PRCM_SUN6I=y
# CONFIG_CLK_SUNXI_PRCM_SUN8I is not setCONFIG_CLK_SUNXI_PRCM_SUN9I=yCONFIG_SUNXI_CCU=y
# CONFIG_SUNIV_F1C100S_CCU is not setCONFIG_SUN20I_D1_CCU=yCONFIG_SUN20I_D1_R_CCU=yCONFIG_SUN50I_A64_CCU=y
# CONFIG_SUN50I_A100_CCU is not setCONFIG_SUN50I_A100_R_CCU=yCONFIG_SUN50I_H6_CCU=yCONFIG_SUN50I_H616_CCU=yCONFIG_SUN50I_H6_R_CCU=yCONFIG_SUN4I_A10_CCU=yCONFIG_SUN5I_CCU=yCONFIG_SUN6I_A31_CCU=yCONFIG_SUN6I_RTC_CCU=y
# CONFIG_SUN8I_A23_CCU is not set
# CONFIG_SUN8I_A33_CCU is not setCONFIG_SUN8I_A83T_CCU=y
# CONFIG_SUN8I_H3_CCU is not setCONFIG_SUN8I_V3S_CCU=yCONFIG_SUN8I_DE2_CCU=yCONFIG_SUN8I_R40_CCU=y
# CONFIG_SUN9I_A80_CCU is not setCONFIG_SUN8I_R_CCU=yCONFIG_COMMON_CLK_TI_ADPLL=yCONFIG_CLK_UNIPHIER=yCONFIG_COMMON_CLK_VISCONTI=yCONFIG_CLK_LGM_CGU=y
# CONFIG_XILINX_VCU is not setCONFIG_COMMON_CLK_ZYNQMP=yCONFIG_CLK_KUNIT_TEST=yCONFIG_CLK_GATE_KUNIT_TEST=y
# CONFIG_HWSPINLOCK is not set
#
# Clock Source drivers
#CONFIG_TIMER_OF=yCONFIG_TIMER_PROBE=yCONFIG_CLKSRC_MMIO=y
# CONFIG_BCM2835_TIMER is not setCONFIG_BCM_KONA_TIMER=y
# CONFIG_DAVINCI_TIMER is not set
# CONFIG_DIGICOLOR_TIMER is not setCONFIG_OMAP_DM_TIMER=y
# CONFIG_DW_APB_TIMER is not setCONFIG_FTTMR010_TIMER=yCONFIG_IXP4XX_TIMER=yCONFIG_MESON6_TIMER=yCONFIG_OWL_TIMER=yCONFIG_RDA_TIMER=yCONFIG_SUN4I_TIMER=y
# CONFIG_SUN5I_HSTIMER is not set
# CONFIG_TEGRA_TIMER is not set
# CONFIG_TEGRA186_TIMER is not setCONFIG_VT8500_TIMER=y
# CONFIG_NPCM7XX_TIMER is not setCONFIG_CADENCE_TTC_TIMER=y
# CONFIG_ASM9260_TIMER is not set
# CONFIG_CLKSRC_DBX500_PRCMU is not setCONFIG_CLPS711X_TIMER=y
# CONFIG_MXS_TIMER is not set
# CONFIG_NSPIRE_TIMER is not setCONFIG_INTEGRATOR_AP_TIMER=y
# CONFIG_CLKSRC_PISTACHIO is not setCONFIG_CLKSRC_TI_32K=yCONFIG_CLKSRC_STM32_LP=yCONFIG_CLKSRC_MPS2=y
# CONFIG_ARC_TIMERS is not set
# CONFIG_ARM_TIMER_SP804 is not setCONFIG_ARMV7M_SYSTICK=yCONFIG_ATMEL_PIT=yCONFIG_ATMEL_ST=yCONFIG_CLKSRC_SAMSUNG_PWM=yCONFIG_FSL_FTM_TIMER=yCONFIG_OXNAS_RPS_TIMER=y
# CONFIG_MTK_TIMER is not setCONFIG_SPRD_TIMER=y
# CONFIG_CLKSRC_JCORE_PIT is not set
# CONFIG_SH_TIMER_CMT is not setCONFIG_SH_TIMER_MTU2=yCONFIG_RENESAS_OSTM=y
# CONFIG_SH_TIMER_TMU is not setCONFIG_EM_TIMER_STI=yCONFIG_CLKSRC_VERSATILE=yCONFIG_CLKSRC_PXA=y
# CONFIG_TIMER_IMX_SYS_CTR is not setCONFIG_CLKSRC_ST_LPC=y
# CONFIG_GXP_TIMER is not setCONFIG_RISCV_TIMER=yCONFIG_CLINT_TIMER=y
# CONFIG_MSC313E_TIMER is not setCONFIG_INGENIC_TIMER=y
# CONFIG_INGENIC_SYSOST is not setCONFIG_INGENIC_OST=y
# CONFIG_MICROCHIP_PIT64B is not setCONFIG_GOLDFISH_TIMER=y
# end of Clock Source drivers
CONFIG_MAILBOX=yCONFIG_IMX_MBOX=y
# CONFIG_PLATFORM_MHU is not setCONFIG_ARMADA_37XX_RWTM_MBOX=yCONFIG_ROCKCHIP_MBOX=yCONFIG_ALTERA_MBOX=yCONFIG_HI3660_MBOX=yCONFIG_HI6220_MBOX=y
# CONFIG_MAILBOX_TEST is not setCONFIG_POLARFIRE_SOC_MAILBOX=yCONFIG_QCOM_APCS_IPC=yCONFIG_BCM_PDC_MBOX=yCONFIG_STM32_IPCC=yCONFIG_MTK_ADSP_MBOX=y
# CONFIG_MTK_CMDQ_MBOX is not setCONFIG_SUN6I_MSGBOX=yCONFIG_SPRD_MBOX=y
# CONFIG_QCOM_IPCC is not setCONFIG_IOMMU_API=yCONFIG_IOMMU_SUPPORT=y
#
# Generic IOMMU Pagetable Support
#CONFIG_IOMMU_IO_PGTABLE=y CONFIG_IOMMU_IO_PGTABLE_LPAE=y
# CONFIG_IOMMU_IO_PGTABLE_LPAE_SELFTEST is not set CONFIG_IOMMU_IO_PGTABLE_ARMV7S=y CONFIG_IOMMU_IO_PGTABLE_ARMV7S_SELFTEST=y
# end of Generic IOMMU Pagetable Support
CONFIG_IOMMU_DEBUGFS=y
# CONFIG_IOMMU_DEFAULT_DMA_STRICT is not set
# CONFIG_IOMMU_DEFAULT_DMA_LAZY is not setCONFIG_IOMMU_DEFAULT_PASSTHROUGH=yCONFIG_OF_IOMMU=yCONFIG_OMAP_IOMMU=y
# CONFIG_OMAP_IOMMU_DEBUG is not setCONFIG_ROCKCHIP_IOMMU=y
# CONFIG_SUN50I_IOMMU is not set
# CONFIG_EXYNOS_IOMMU is not setCONFIG_IPMMU_VMSA=yCONFIG_APPLE_DART=yCONFIG_ARM_SMMU=yCONFIG_ARM_SMMU_LEGACY_DT_BINDINGS=yCONFIG_ARM_SMMU_DISABLE_BYPASS_BY_DEFAULT=y
# CONFIG_S390_CCW_IOMMU is not setCONFIG_S390_AP_IOMMU=yCONFIG_MTK_IOMMU=yCONFIG_QCOM_IOMMU=yCONFIG_SPRD_IOMMU=y
#
# Remoteproc drivers
#CONFIG_REMOTEPROC=yCONFIG_REMOTEPROC_CDEV=y
# CONFIG_INGENIC_VPU_RPROC is not setCONFIG_MTK_SCP=yCONFIG_MESON_MX_AO_ARC_REMOTEPROC=yCONFIG_RCAR_REMOTEPROC=y
# end of Remoteproc drivers
#
# Rpmsg drivers
#CONFIG_RPMSG=yCONFIG_RPMSG_CHAR=yCONFIG_RPMSG_CTRL=yCONFIG_RPMSG_NS=yCONFIG_RPMSG_MTK_SCP=yCONFIG_RPMSG_QCOM_GLINK=yCONFIG_RPMSG_QCOM_GLINK_RPM=yCONFIG_RPMSG_VIRTIO=y
# end of Rpmsg drivers
CONFIG_SOUNDWIRE=y
#
# SoundWire Devices
#CONFIG_SOUNDWIRE_QCOM=y
#
# SOC (System On Chip) specific Drivers
#
# CONFIG_OWL_PM_DOMAINS is not set
#
# Amlogic SoC drivers
#CONFIG_MESON_CANVAS=y
# CONFIG_MESON_CLK_MEASURE is not set
# CONFIG_MESON_GX_SOCINFO is not setCONFIG_MESON_GX_PM_DOMAINS=yCONFIG_MESON_EE_PM_DOMAINS=yCONFIG_MESON_MX_SOCINFO=y
# end of Amlogic SoC drivers
#
# Apple SoC drivers
#
# CONFIG_APPLE_PMGR_PWRSTATE is not setCONFIG_APPLE_RTKIT=y
# CONFIG_APPLE_SART is not set
# end of Apple SoC drivers
#
# ASPEED SoC drivers
#CONFIG_ASPEED_LPC_CTRL=yCONFIG_ASPEED_LPC_SNOOP=yCONFIG_ASPEED_UART_ROUTING=yCONFIG_ASPEED_P2A_CTRL=yCONFIG_ASPEED_SOCINFO=y
# end of ASPEED SoC drivers
CONFIG_AT91_SOC_ID=yCONFIG_AT91_SOC_SFR=y
#
# Broadcom SoC drivers
#
# CONFIG_BCM2835_POWER is not setCONFIG_SOC_BCM63XX=yCONFIG_SOC_BRCMSTB=y
# CONFIG_BCM63XX_POWER is not setCONFIG_BCM_PMB=y
# end of Broadcom SoC drivers
#
# NXP/Freescale QorIQ SoC drivers
#
# CONFIG_QUICC_ENGINE is not setCONFIG_FSL_GUTS=yCONFIG_DPAA2_CONSOLE=y
# end of NXP/Freescale QorIQ SoC drivers
#
# fujitsu SoC drivers # # end of fujitsu SoC drivers
#
# i.MX SoC drivers
#CONFIG_IMX_GPCV2_PM_DOMAINS=y
# CONFIG_SOC_IMX8M is not set
# end of i.MX SoC drivers
#
# IXP4xx SoC drivers
#CONFIG_IXP4XX_QMGR=y
# CONFIG_IXP4XX_NPE is not set
# end of IXP4xx SoC drivers
#
# Enable LiteX SoC Builder specific drivers
#CONFIG_LITEX=yCONFIG_LITEX_SOC_CONTROLLER=y
# end of Enable LiteX SoC Builder specific drivers
1,654 lines not shown · raw message
Part of this message is not shown here. View the raw message.
Re: [PATCH v1 26/30] pinctrl: starfive: Add StarFive JH7110 driver
In reply to Hal FengQuoted 6 lines · Hal Feng
From: Jianlong Huang <[email protected]>
Add pinctrl driver for StarFive JH7110 SoC.
Signed-off-by Jianlong Huang <[email protected]>Signed-off-by Hal Feng <[email protected]>
Since Emil submitted the first driver I would really appreciate his review on this version.
Yours,
Linus Walleij
Re: [PATCH v1 26/30] pinctrl: starfive: Add StarFive JH7110 driver
Quoted 6 lines · Linus Walleij
Quoted 2 lines · Hal Feng
From: Jianlong Huang <[email protected]>
Quoted 7 lines
Quoted 4 lines
Add pinctrl driver for StarFive JH7110 SoC.
Signed-off-by Jianlong Huang <[email protected]>Signed-off-by Hal Feng <[email protected]>Since Emil submitted the first driver I would really appreciate his review on this version.
I tried really hard to come up with a good way to share code between the JH7100 and JH7110 drivers, but so many details different on the JH7110 that it's probably best to just have a separate driver, so that part is fine.
As mentioned elsewhere this driver certainly shouldn't be accepted without following the generic pinctrl and pinmux bindings. You can see the driver I wrote here:
https://github.com/esmil/linux/commit/c2633315385fef1a25aa3711facef07d915820e1
It is certainly not perfect and far from complete, but at least it does follow the generic bindings. Feel free to copy all or parts of that.
/Emil
Quoted 8 lines
Yours,
Linus Walleij_______________________________________________
linux-riscv mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-riscv
Re: [PATCH v1 26/30] pinctrl: starfive: Add StarFive JH7110 driver
Quoted 20 lines · Emil Renner Berthing
Quoted 6 lines · Linus Walleij
Quoted 2 lines · Hal Feng
From: Jianlong Huang <[email protected]>
Quoted 7 lines
Quoted 4 lines
Add pinctrl driver for StarFive JH7110 SoC.
Signed-off-by Jianlong Huang <[email protected]>Signed-off-by Hal Feng <[email protected]>Since Emil submitted the first driver I would really appreciate his review on this version.
I tried really hard to come up with a good way to share code between the JH7100 and JH7110 drivers, but so many details different on the JH7110 that it's probably best to just have a separate driver, so that part is fine.
Quoted 8 lines
As mentioned elsewhere this driver certainly shouldn't be accepted without following the generic pinctrl and pinmux bindings. You can see the driver I wrote here:
https://github.com/esmil/linux/commit/c2633315385fef1a25aa3711facef07d915820e1It is certainly not perfect and far from complete, but at least it does follow the generic bindings. Feel free to copy all or parts of that.
Thanks for your great contribution! We will rewrite the pinctrl driver and bindings so make them follow the generic pinctrl framework.
Best regards,
Hal
PATCH 27/30 RISC-V: Add initial StarFive JH7110 device tree
In reply to Hal FengFrom: Emil Renner Berthing <[email protected]>
Add initial device tree for the JH7110 RISC-V SoC by StarFive Technology Ltd.
--- arch/riscv/boot/dts/starfive/jh7110.dtsi | 449 +++++++++++++++++++++++ 1 file changed, 449 insertions(+) create mode 100644 arch/riscv/boot/dts/starfive/jh7110.dtsi
arch/riscv/boot/dts/starfive/jh7110.dtsi new file +449 -0
@@ -0,0 +1,449 @@ +// SPDX-License-Identifier: GPL-2.0 OR MIT +/* + * Copyright (C) 2022 StarFive Technology Co., Ltd. + * Copyright (C) 2022 Emil Renner Berthing <[email protected]> + */ + +/dts-v1/; +#include <dt-bindings/clock/starfive-jh7110-sys.h> +#include <dt-bindings/clock/starfive-jh7110-aon.h> +#include <dt-bindings/reset/starfive-jh7110.h> + +/ { + compatible = "starfive,jh7110"; + #address-cells = <2>; + #size-cells = <2>; + + cpus { + #address-cells = <1>; + #size-cells = <0>; + + cpu0: cpu@0 { + compatible = "sifive,u74-mc", "riscv"; + reg = <0>; + d-cache-block-size = <64>; + d-cache-sets = <64>; + d-cache-size = <8192>; + d-tlb-sets = <1>; + d-tlb-size = <40>; + device_type = "cpu"; + i-cache-block-size = <64>; + i-cache-sets = <64>; + i-cache-size = <16384>; + i-tlb-sets = <1>; + i-tlb-size = <40>; + mmu-type = "riscv,sv39"; + next-level-cache = <&ccache>; + riscv,isa = "rv64imac"; + tlb-split; + status = "disabled"; + + cpu0_intc: interrupt-controller { + compatible = "riscv,cpu-intc"; + interrupt-controller; + #interrupt-cells = <1>; + }; + }; + + cpu1: cpu@1 { + compatible = "sifive,u74-mc", "riscv"; + reg = <1>; + d-cache-block-size = <64>; + d-cache-sets = <64>; + d-cache-size = <32768>; + d-tlb-sets = <1>; + d-tlb-size = <40>; + device_type = "cpu"; + i-cache-block-size = <64>; + i-cache-sets = <64>; + i-cache-size = <32768>; + i-tlb-sets = <1>; + i-tlb-size = <40>; + mmu-type = "riscv,sv39"; + next-level-cache = <&ccache>; + riscv,isa = "rv64imafdc"; + tlb-split; + + cpu1_intc: interrupt-controller { + compatible = "riscv,cpu-intc"; + interrupt-controller; + #interrupt-cells = <1>; + }; + }; + + cpu2: cpu@2 { + compatible = "sifive,u74-mc", "riscv"; + reg = <2>; + d-cache-block-size = <64>; + d-cache-sets = <64>; + d-cache-size = <32768>; + d-tlb-sets = <1>; + d-tlb-size = <40>; + device_type = "cpu"; + i-cache-block-size = <64>; + i-cache-sets = <64>; + i-cache-size = <32768>; + i-tlb-sets = <1>; + i-tlb-size = <40>; + mmu-type = "riscv,sv39"; + next-level-cache = <&ccache>; + riscv,isa = "rv64imafdc"; + tlb-split; + + cpu2_intc: interrupt-controller { + compatible = "riscv,cpu-intc"; + interrupt-controller; + #interrupt-cells = <1>; + }; + }; + + cpu3: cpu@3 { + compatible = "sifive,u74-mc", "riscv"; + reg = <3>; + d-cache-block-size = <64>; + d-cache-sets = <64>; + d-cache-size = <32768>; + d-tlb-sets = <1>; + d-tlb-size = <40>; + device_type = "cpu"; + i-cache-block-size = <64>; + i-cache-sets = <64>; + i-cache-size = <32768>; + i-tlb-sets = <1>; + i-tlb-size = <40>; + mmu-type = "riscv,sv39"; + next-level-cache = <&ccache>; + riscv,isa = "rv64imafdc"; + tlb-split; + + cpu3_intc: interrupt-controller { + compatible = "riscv,cpu-intc"; + interrupt-controller; + #interrupt-cells = <1>; + }; + }; + + cpu4: cpu@4 { + compatible = "sifive,u74-mc", "riscv"; + reg = <4>; + d-cache-block-size = <64>; + d-cache-sets = <64>; + d-cache-size = <32768>; + d-tlb-sets = <1>; + d-tlb-size = <40>; + device_type = "cpu"; + i-cache-block-size = <64>; + i-cache-sets = <64>; + i-cache-size = <32768>; + i-tlb-sets = <1>; + i-tlb-size = <40>; + mmu-type = "riscv,sv39"; + next-level-cache = <&ccache>; + riscv,isa = "rv64imafdc"; + tlb-split; + + cpu4_intc: interrupt-controller { + compatible = "riscv,cpu-intc"; + interrupt-controller; + #interrupt-cells = <1>; + }; + }; + + cpu-map { + cluster0 { + core0 { + cpu = <&cpu0>; + }; + + core1 { + cpu = <&cpu1>; + }; + + core2 { + cpu = <&cpu2>; + }; + + core3 { + cpu = <&cpu3>; + }; + + core4 { + cpu = <&cpu4>; + }; + }; + }; + }; + + osc: osc { + compatible = "fixed-clock"; + #clock-cells = <0>; + }; + + clk_rtc: clk_rtc { + compatible = "fixed-clock"; + #clock-cells = <0>; + }; + + gmac0_rmii_refin: gmac0_rmii_refin { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <50000000>; + }; + + gmac0_rgmii_rxin: gmac0_rgmii_rxin { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <125000000>; + }; + + gmac1_rmii_refin: gmac1_rmii_refin { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <50000000>; + }; + + gmac1_rgmii_rxin: gmac1_rgmii_rxin { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <125000000>; + }; + + i2stx_bclk_ext: i2stx_bclk_ext { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <12288000>; + }; + + i2stx_lrck_ext: i2stx_lrck_ext { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <192000>; + }; + + i2srx_bclk_ext: i2srx_bclk_ext { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <12288000>; + }; + + i2srx_lrck_ext: i2srx_lrck_ext { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <192000>; + }; + + tdm_ext: tdm_ext { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <49152000>; + }; + + mclk_ext: mclk_ext { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <49152000>; + }; + + soc { + compatible = "simple-bus"; + interrupt-parent = <&plic>; + #address-cells = <2>; + #size-cells = <2>; + ranges; + + clint: clint@2000000 { + compatible = "starfive,jh7110-clint", "sifive,clint0"; + reg = <0x0 0x2000000 0x0 0x10000>; + interrupts-extended = <&cpu0_intc 3>, <&cpu0_intc 7>, + <&cpu1_intc 3>, <&cpu1_intc 7>, + <&cpu2_intc 3>, <&cpu2_intc 7>, + <&cpu3_intc 3>, <&cpu3_intc 7>, + <&cpu4_intc 3>, <&cpu4_intc 7>; + }; + + plic: plic@c000000 { + compatible = "starfive,jh7110-plic", "sifive,plic-1.0.0"; + reg = <0x0 0xc000000 0x0 0x4000000>; + interrupts-extended = <&cpu0_intc 11>, + <&cpu1_intc 11>, <&cpu1_intc 9>, + <&cpu2_intc 11>, <&cpu2_intc 9>, + <&cpu3_intc 11>, <&cpu3_intc 9>, + <&cpu4_intc 11>, <&cpu4_intc 9>; + interrupt-controller; + #interrupt-cells = <1>; + #address-cells = <0>; + riscv,ndev = <136>; + }; + + ccache: cache-controller@2010000 { + compatible = "starfive,jh7110-ccache", "cache"; + reg = <0x0 0x2010000 0x0 0x4000>; + interrupts = <1>, <3>, <4>, <2>; + cache-block-size = <64>; + cache-level = <2>; + cache-sets = <2048>; + cache-size = <2097152>; + cache-unified; + }; + + syscrg: syscrg@13020000 { + compatible = "syscon", "simple-mfd"; + reg = <0x0 0x13020000 0x0 0x10000>; + + syscrg_clk: clock-controller@13020000 { + compatible = "starfive,jh7110-clkgen-sys"; + clocks = <&osc>, <&gmac1_rmii_refin>, + <&gmac1_rgmii_rxin>, + <&i2stx_bclk_ext>, <&i2stx_lrck_ext>, + <&i2srx_bclk_ext>, <&i2srx_lrck_ext>, + <&tdm_ext>, <&mclk_ext>; + clock-names = "osc", "gmac1_rmii_refin", + "gmac1_rgmii_rxin", + "i2stx_bclk_ext", "i2stx_lrck_ext", + "i2srx_bclk_ext", "i2srx_lrck_ext", + "tdm_ext", "mclk_ext"; + #clock-cells = <1>; + }; + + syscrg_rst: reset-controller@13020000 { + compatible = "starfive,jh7110-reset"; + #reset-cells = <1>; + starfive,assert-offset = <0x2F8>; + starfive,status-offset= <0x308>; + starfive,nr-resets = <JH7110_SYSRST_END>; + }; + }; + + aoncrg: aoncrg@17000000 { + compatible = "syscon", "simple-mfd"; + reg = <0x0 0x17000000 0x0 0x10000>; + + aoncrg_clk: clock-controller@17000000 { + compatible = "starfive,jh7110-clkgen-aon"; + clocks = <&osc>, <&clk_rtc>, + <&gmac0_rmii_refin>, <&gmac0_rgmii_rxin>, + <&syscrg_clk JH7110_SYSCLK_STG_AXIAHB>, + <&syscrg_clk JH7110_SYSCLK_APB_BUS_FUNC>; + clock-names = "osc", "clk_rtc", + "gmac0_rmii_refin", "gmac0_rgmii_rxin", + "stg_axiahb", "apb_bus_func"; + #clock-cells = <1>; + }; + + aoncrg_rst: reset-controller@17000000 { + compatible = "starfive,jh7110-reset"; + #reset-cells = <1>; + starfive,assert-offset = <0x38>; + starfive,status-offset= <0x3C>; + starfive,nr-resets = <JH7110_AONRST_END>; + }; + }; + + gpio: gpio@13040000 { + compatible = "starfive,jh7110-sys-pinctrl"; + reg = <0x0 0x13040000 0x0 0x10000>; + reg-names = "control"; + clocks = <&syscrg_clk JH7110_SYSCLK_IOMUX>; + resets = <&syscrg_rst JH7110_SYSRST_IOMUX>; + interrupts = <86>; + interrupt-controller; + #gpio-cells = <2>; + ngpios = <64>; + }; + + gpioa: gpio@17020000 { + compatible = "starfive,jh7110-aon-pinctrl"; + reg = <0x0 0x17020000 0x0 0x10000>; + reg-names = "control"; + resets = <&aoncrg_rst JH7110_AONRST_AON_IOMUX>; + interrupts = <85>; + interrupt-controller; + #gpio-cells = <2>; + ngpios = <4>; + }; + + uart0: serial@10000000 { + compatible = "snps,dw-apb-uart"; + reg = <0x0 0x10000000 0x0 0x10000>; + clocks = <&syscrg_clk JH7110_SYSCLK_UART0_CORE>, + <&syscrg_clk JH7110_SYSCLK_UART0_APB>; + clock-names = "baudclk", "apb_pclk"; + resets = <&syscrg_rst JH7110_SYSRST_UART0_APB>, + <&syscrg_rst JH7110_SYSRST_UART0_CORE>; + interrupts = <32>; + reg-io-width = <4>; + reg-shift = <2>; + status = "disabled"; + }; + + uart1: serial@10010000 { + compatible = "snps,dw-apb-uart"; + reg = <0x0 0x10010000 0x0 0x10000>; + clocks = <&syscrg_clk JH7110_SYSCLK_UART1_CORE>, + <&syscrg_clk JH7110_SYSCLK_UART1_APB>; + clock-names = "baudclk", "apb_pclk"; + resets = <&syscrg_rst JH7110_SYSRST_UART1_APB>, + <&syscrg_rst JH7110_SYSRST_UART1_CORE>; + interrupts = <33>; + reg-io-width = <4>; + reg-shift = <2>; + status = "disabled"; + }; + + uart2: serial@10020000 { + compatible = "snps,dw-apb-uart"; + reg = <0x0 0x10020000 0x0 0x10000>; + clocks = <&syscrg_clk JH7110_SYSCLK_UART2_CORE>, + <&syscrg_clk JH7110_SYSCLK_UART2_APB>; + clock-names = "baudclk", "apb_pclk"; + resets = <&syscrg_rst JH7110_SYSRST_UART2_APB>, + <&syscrg_rst JH7110_SYSRST_UART2_CORE>; + interrupts = <34>; + reg-io-width = <4>; + reg-shift = <2>; + status = "disabled"; + }; + + uart3: serial@12000000 { + compatible = "snps,dw-apb-uart"; + reg = <0x0 0x12000000 0x0 0x10000>; + clocks = <&syscrg_clk JH7110_SYSCLK_UART3_CORE>, + <&syscrg_clk JH7110_SYSCLK_UART3_APB>; + clock-names = "baudclk", "apb_pclk"; + resets = <&syscrg_rst JH7110_SYSRST_UART3_APB>, + <&syscrg_rst JH7110_SYSRST_UART3_CORE>; + interrupts = <45>; + reg-io-width = <4>; + reg-shift = <2>; + status = "disabled"; + }; + + uart4: serial@12010000 { + compatible = "snps,dw-apb-uart"; + reg = <0x0 0x12010000 0x0 0x10000>; + clocks = <&syscrg_clk JH7110_SYSCLK_UART4_CORE>, + <&syscrg_clk JH7110_SYSCLK_UART4_APB>; + clock-names = "baudclk", "apb_pclk"; + resets = <&syscrg_rst JH7110_SYSRST_UART4_APB>, + <&syscrg_rst JH7110_SYSRST_UART4_CORE>; + interrupts = <46>; + reg-io-width = <4>; + reg-shift = <2>; + status = "disabled"; + }; + + uart5: serial@12020000 { + compatible = "snps,dw-apb-uart"; + reg = <0x0 0x12020000 0x0 0x10000>; + clocks = <&syscrg_clk JH7110_SYSCLK_UART5_CORE>, + <&syscrg_clk JH7110_SYSCLK_UART5_APB>; + clock-names = "baudclk", "apb_pclk"; + resets = <&syscrg_rst JH7110_SYSRST_UART5_APB>, + <&syscrg_rst JH7110_SYSRST_UART5_CORE>; + interrupts = <47>; + reg-io-width = <4>; + reg-shift = <2>; + status = "disabled"; + }; + }; +};
Signature · 1 line
2.17.1
Conor Dooley
maintainerRe: [PATCH v1 27/30] RISC-V: Add initial StarFive JH7110 device tree
Quoted 8 lines · Hal Feng
From: Emil Renner Berthing <[email protected]>
Add initial device tree for the JH7110 RISC-V SoC by StarFive Technology Ltd.
Signed-off-by Emil Renner Berthing <[email protected]>Signed-off-by Jianlong Huang <[email protected]>Signed-off-by Hal Feng <[email protected]>
There's little point reviewing this dt since there's a load of issues that you can trivially find by running dtbs_check/dt_binding_check, but this SoB change is wrong - if Emil wrote the patch, then Jianlong's SoB is either redundant or should be accompanied by a Co-developed-by tag.
Ditto for patch 28/30 "RISC-V: Add StarFive JH7110 VisionFive2 board device tree".
Quoted 16 lines
--- arch/riscv/boot/dts/starfive/jh7110.dtsi | 449 +++++++++++++++++++++++ 1 file changed, 449 insertions(+) create mode 100644 arch/riscv/boot/dts/starfive/jh7110.dtsiarch/riscv/boot/dts/starfive/jh7110.dtsi new file +5
-0+ + osc: osc { + compatible = "fixed-clock"; + #clock-cells = <0>; + };
arch/riscv/boot/dts/starfive/jh7110.dtsi line 190
Quoted 10 lines
arch/riscv/boot/dts/starfive/jh7110.dtsi new file +10
-0+ + clk_rtc: clk_rtc { + compatible = "fixed-clock"; + #clock-cells = <0>; + }; + + gmac0_rmii_refin: gmac0_rmii_refin { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <50000000>;
I assume, given osc has it's frequency set in the board dts, that these are all oscillators on the SoC?
Quoted 47 lines
arch/riscv/boot/dts/starfive/jh7110.dtsi new file +47
-0+ }; + + gmac0_rgmii_rxin: gmac0_rgmii_rxin { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <125000000>; + }; + + gmac1_rmii_refin: gmac1_rmii_refin { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <50000000>; + }; + + gmac1_rgmii_rxin: gmac1_rgmii_rxin { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <125000000>; + }; + + i2stx_bclk_ext: i2stx_bclk_ext { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <12288000>; + }; + + i2stx_lrck_ext: i2stx_lrck_ext { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <192000>; + }; + + i2srx_bclk_ext: i2srx_bclk_ext { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <12288000>; + }; + + i2srx_lrck_ext: i2srx_lrck_ext { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <192000>; + }; + + tdm_ext: tdm_ext { + compatible = "fixed-clock"; + #clock-cells = <0>;
arch/riscv/boot/dts/starfive/jh7110.dtsi line 289
Quoted 10 lines
arch/riscv/boot/dts/starfive/jh7110.dtsi new file +9
-0+ clock-frequency = <49152000>; + }; + + mclk_ext: mclk_ext { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <49152000>; + }; + syscrg: syscrg@13020000 {
The generic node name for syscons is just "syscon" afaik.
arch/riscv/boot/dts/starfive/jh7110.dtsi line 317
Quoted 5 lines
arch/riscv/boot/dts/starfive/jh7110.dtsi new file +4
-0+ compatible = "syscon", "simple-mfd"; + reg = <0x0 0x13020000 0x0 0x10000>; + + aoncrg: aoncrg@17000000 {
Again, syscon as the node name?
arch/riscv/boot/dts/starfive/jh7110.dtsi line 342
Quoted 4 lines
arch/riscv/boot/dts/starfive/jh7110.dtsi new file +4
-0+ compatible = "syscon", "simple-mfd"; + reg = <0x0 0x17000000 0x0 0x10000>; + + gpio: gpio@13040000 {
Someone else (Krzysztof maybe?) should comment, but is "pinctrl" not the genric node name for pinctrl nodes?
Thanks,
Conor.
Quoted 110 lines
arch/riscv/boot/dts/starfive/jh7110.dtsi new file +107
-0+ compatible = "starfive,jh7110-sys-pinctrl"; + reg = <0x0 0x13040000 0x0 0x10000>; + reg-names = "control"; + clocks = <&syscrg_clk JH7110_SYSCLK_IOMUX>; + resets = <&syscrg_rst JH7110_SYSRST_IOMUX>; + interrupts = <86>; + interrupt-controller; + #gpio-cells = <2>; + ngpios = <64>; + }; + + gpioa: gpio@17020000 { + compatible = "starfive,jh7110-aon-pinctrl"; + reg = <0x0 0x17020000 0x0 0x10000>; + reg-names = "control"; + resets = <&aoncrg_rst JH7110_AONRST_AON_IOMUX>; + interrupts = <85>; + interrupt-controller; + #gpio-cells = <2>; + ngpios = <4>; + }; + + uart0: serial@10000000 { + compatible = "snps,dw-apb-uart"; + reg = <0x0 0x10000000 0x0 0x10000>; + clocks = <&syscrg_clk JH7110_SYSCLK_UART0_CORE>, + <&syscrg_clk JH7110_SYSCLK_UART0_APB>; + clock-names = "baudclk", "apb_pclk"; + resets = <&syscrg_rst JH7110_SYSRST_UART0_APB>, + <&syscrg_rst JH7110_SYSRST_UART0_CORE>; + interrupts = <32>; + reg-io-width = <4>; + reg-shift = <2>; + status = "disabled"; + }; + + uart1: serial@10010000 { + compatible = "snps,dw-apb-uart"; + reg = <0x0 0x10010000 0x0 0x10000>; + clocks = <&syscrg_clk JH7110_SYSCLK_UART1_CORE>, + <&syscrg_clk JH7110_SYSCLK_UART1_APB>; + clock-names = "baudclk", "apb_pclk"; + resets = <&syscrg_rst JH7110_SYSRST_UART1_APB>, + <&syscrg_rst JH7110_SYSRST_UART1_CORE>; + interrupts = <33>; + reg-io-width = <4>; + reg-shift = <2>; + status = "disabled"; + }; + + uart2: serial@10020000 { + compatible = "snps,dw-apb-uart"; + reg = <0x0 0x10020000 0x0 0x10000>; + clocks = <&syscrg_clk JH7110_SYSCLK_UART2_CORE>, + <&syscrg_clk JH7110_SYSCLK_UART2_APB>; + clock-names = "baudclk", "apb_pclk"; + resets = <&syscrg_rst JH7110_SYSRST_UART2_APB>, + <&syscrg_rst JH7110_SYSRST_UART2_CORE>; + interrupts = <34>; + reg-io-width = <4>; + reg-shift = <2>; + status = "disabled"; + }; + + uart3: serial@12000000 { + compatible = "snps,dw-apb-uart"; + reg = <0x0 0x12000000 0x0 0x10000>; + clocks = <&syscrg_clk JH7110_SYSCLK_UART3_CORE>, + <&syscrg_clk JH7110_SYSCLK_UART3_APB>; + clock-names = "baudclk", "apb_pclk"; + resets = <&syscrg_rst JH7110_SYSRST_UART3_APB>, + <&syscrg_rst JH7110_SYSRST_UART3_CORE>; + interrupts = <45>; + reg-io-width = <4>; + reg-shift = <2>; + status = "disabled"; + }; + + uart4: serial@12010000 { + compatible = "snps,dw-apb-uart"; + reg = <0x0 0x12010000 0x0 0x10000>; + clocks = <&syscrg_clk JH7110_SYSCLK_UART4_CORE>, + <&syscrg_clk JH7110_SYSCLK_UART4_APB>; + clock-names = "baudclk", "apb_pclk"; + resets = <&syscrg_rst JH7110_SYSRST_UART4_APB>, + <&syscrg_rst JH7110_SYSRST_UART4_CORE>; + interrupts = <46>; + reg-io-width = <4>; + reg-shift = <2>; + status = "disabled"; + }; + + uart5: serial@12020000 { + compatible = "snps,dw-apb-uart"; + reg = <0x0 0x12020000 0x0 0x10000>; + clocks = <&syscrg_clk JH7110_SYSCLK_UART5_CORE>, + <&syscrg_clk JH7110_SYSCLK_UART5_APB>; + clock-names = "baudclk", "apb_pclk"; + resets = <&syscrg_rst JH7110_SYSRST_UART5_APB>, + <&syscrg_rst JH7110_SYSRST_UART5_CORE>; + interrupts = <47>; + reg-io-width = <4>; + reg-shift = <2>; + status = "disabled"; + }; + }; +};Signature · 1 line
2.17.1
Re: [PATCH v1 27/30] RISC-V: Add initial StarFive JH7110 device tree
Quoted 6 lines · Conor Dooley
Quoted 5 lines · Hal Feng
From: Emil Renner Berthing <[email protected]>
Add initial device tree for the JH7110 RISC-V SoC by StarFive Technology Ltd.
Quoted 6 lines
Quoted 3 lines
Signed-off-by Emil Renner Berthing <[email protected]>Signed-off-by Jianlong Huang <[email protected]>Signed-off-by Hal Feng <[email protected]>There's little point reviewing this dt since there's a load of issues that you can trivially find by running dtbs_check/dt_binding_check, but
Yep...
Quoted 2 lines
this SoB change is wrong - if Emil wrote the patch, then Jianlong's SoB is either redundant or should be accompanied by a Co-developed-by tag.
Depends. Jianlong might have just rebased the patch.
Quoted 90 lines
Ditto for patch 28/30 "RISC-V: Add StarFive JH7110 VisionFive2 board device tree".
Quoted 16 lines
--- arch/riscv/boot/dts/starfive/jh7110.dtsi | 449 +++++++++++++++++++++++ 1 file changed, 449 insertions(+) create mode 100644 arch/riscv/boot/dts/starfive/jh7110.dtsiarch/riscv/boot/dts/starfive/jh7110.dtsi new file +5
-0+ + osc: osc { + compatible = "fixed-clock"; + #clock-cells = <0>; + };arch/riscv/boot/dts/starfive/jh7110.dtsi line 190
Quoted 10 lines
arch/riscv/boot/dts/starfive/jh7110.dtsi new file +10
-0+ + clk_rtc: clk_rtc { + compatible = "fixed-clock"; + #clock-cells = <0>; + }; + + gmac0_rmii_refin: gmac0_rmii_refin { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <50000000>;I assume, given osc has it's frequency set in the board dts, that these are all oscillators on the SoC?
Quoted 55 lines
arch/riscv/boot/dts/starfive/jh7110.dtsi new file +55
-0+ }; + + gmac0_rgmii_rxin: gmac0_rgmii_rxin { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <125000000>; + }; + + gmac1_rmii_refin: gmac1_rmii_refin { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <50000000>; + }; + + gmac1_rgmii_rxin: gmac1_rgmii_rxin { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <125000000>; + }; + + i2stx_bclk_ext: i2stx_bclk_ext { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <12288000>; + }; + + i2stx_lrck_ext: i2stx_lrck_ext { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <192000>; + }; + + i2srx_bclk_ext: i2srx_bclk_ext { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <12288000>; + }; + + i2srx_lrck_ext: i2srx_lrck_ext { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <192000>; + }; + + tdm_ext: tdm_ext { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <49152000>; + }; + + mclk_ext: mclk_ext { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <49152000>; + };
Quoted 3 lines
arch/riscv/boot/dts/starfive/jh7110.dtsi line 289
Quoted 1 line
arch/riscv/boot/dts/starfive/jh7110.dtsi new file +1
-0+ syscrg: syscrg@13020000 {The generic node name for syscons is just "syscon" afaik.
Yes.
Quoted 2 lines
arch/riscv/boot/dts/starfive/jh7110.dtsi
Quoted 2 lines
arch/riscv/boot/dts/starfive/jh7110.dtsi new file +1
-0+ compatible = "syscon", "simple-mfd";
And this is not allowed. Needs specific compatible.
Quoted 6 lines
arch/riscv/boot/dts/starfive/jh7110.dtsi line 317
Quoted 4 lines
arch/riscv/boot/dts/starfive/jh7110.dtsi new file +3
-0+ reg = <0x0 0x13020000 0x0 0x10000>; + + aoncrg: aoncrg@17000000 {Again, syscon as the node name?
Yes.
Quoted 2 lines
arch/riscv/boot/dts/starfive/jh7110.dtsi
Quoted 2 lines
arch/riscv/boot/dts/starfive/jh7110.dtsi new file +1
-0+ compatible = "syscon", "simple-mfd";
And this is a NAK.
Quoted 6 lines
arch/riscv/boot/dts/starfive/jh7110.dtsi line 342
Quoted 3 lines
arch/riscv/boot/dts/starfive/jh7110.dtsi new file +3
-0+ reg = <0x0 0x17000000 0x0 0x10000>; + + gpio: gpio@13040000 {Someone else (Krzysztof maybe?) should comment, but is "pinctrl" not the genric node name for pinctrl nodes?
Yes, for pin controller nodes, this should be "pinctrl" and schema requires it. The problem was that his driver did not use generic pinctrl bindings, which is no-go on its own.
This could be a gpio controller (so "gpio" would be fine), although compatible suggests otherwise.
Best regards,
Krzysztof
_______________________________________________
linux-riscv mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-riscv
Re: [PATCH v1 27/30] RISC-V: Add initial StarFive JH7110 device tree
In reply to Conor DooleyQuoted 10 lines · Conor Dooley
Quoted 8 lines · Hal Feng
From: Emil Renner Berthing <[email protected]>
Add initial device tree for the JH7110 RISC-V SoC by StarFive Technology Ltd.
Signed-off-by Emil Renner Berthing <[email protected]>Signed-off-by Jianlong Huang <[email protected]>Signed-off-by Hal Feng <[email protected]>
Quoted 7 lines
There's little point reviewing this dt since there's a load of issues that you can trivially find by running dtbs_check/dt_binding_check, but this SoB change is wrong - if Emil wrote the patch, then Jianlong's SoB is either redundant or should be accompanied by a Co-developed-by tag.
Ditto for patch 28/30 "RISC-V: Add StarFive JH7110 VisionFive2 board device tree".
Will add Co-developed-by tag for Jianlong. Thanks.
Quoted 22 lines
Quoted 22 lines
--- arch/riscv/boot/dts/starfive/jh7110.dtsi | 449 +++++++++++++++++++++++ 1 file changed, 449 insertions(+) create mode 100644 arch/riscv/boot/dts/starfive/jh7110.dtsiarch/riscv/boot/dts/starfive/jh7110.dtsi new file +10
-0+ + osc: osc { + compatible = "fixed-clock"; + #clock-cells = <0>; + }; + + clk_rtc: clk_rtc { + compatible = "fixed-clock"; + #clock-cells = <0>; + };
Quoted 8 lines
arch/riscv/boot/dts/starfive/jh7110.dtsi line 190
Quoted 5 lines
arch/riscv/boot/dts/starfive/jh7110.dtsi new file +5
-0+ + gmac0_rmii_refin: gmac0_rmii_refin { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <50000000>;I assume, given osc has it's frequency set in the board dts, that these are all oscillators on the SoC?
These are all on the board. Should move all "clock-frequency" to the board dts. I will recheck and modify this patch.
Best regards,
Hal
PATCH 28/30 RISC-V: Add StarFive JH7110 VisionFive2 board device tree
In reply to Hal FengFrom: Emil Renner Berthing <[email protected]>
Add a minimal device tree for StarFive JH7110 VisionFive2 board. Support booting and basic clock/reset/pinctrl/uart drivers.
--- arch/riscv/boot/dts/starfive/Makefile | 1 + .../jh7110-starfive-visionfive-v2.dts | 91 +++++++++++++++++++ 2 files changed, 92 insertions(+) create mode 100644 arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-v2.dts
arch/riscv/boot/dts/starfive/Makefile +1 -0
@@ -1,2 +1,3 @@ # SPDX-License-Identifier: GPL-2.0 dtb-$(CONFIG_SOC_STARFIVE) += jh7100-beaglev-starlight.dtb +dtb-$(CONFIG_SOC_STARFIVE) += jh7110-starfive-visionfive-v2.dtb
arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-v2.dts new file +91 -0
91 lines not on this page · raw message
Signature · 1 line
2.17.1
Conor Dooley
maintainerRe: [PATCH v1 28/30] RISC-V: Add StarFive JH7110 VisionFive2 board device tree
Quoted 5 lines · Hal Feng
From: Emil Renner Berthing <[email protected]>
Add a minimal device tree for StarFive JH7110 VisionFive2 board. Support booting and basic clock/reset/pinctrl/uart drivers.
I would like to see a link to the publicly available datasheet or documentation for the board (and for the SoC in patch 28) please.
Quoted 2 lines
Signed-off-by Emil Renner Berthing <[email protected]>Signed-off-by Jianlong Huang <[email protected]>
Ditto from patch 28 re: the SoB chain.
Quoted 17 lines
Signed-off-by Hal Feng <[email protected]>---
arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-v2.dts new file +8
-0@@ -0,0 +1,91 @@ +// SPDX-License-Identifier: GPL-2.0 OR MIT +/* + * Copyright (C) 2022 StarFive Technology Co., Ltd. + * Copyright (C) 2022 Emil Renner Berthing <[email protected]> + */ + +/dts-v1/; +#include "jh7110.dtsi"
arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-v2.dts line 18
Quoted 10 lines
arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-v2.dts new file +10
-0+#include <dt-bindings/gpio/gpio.h> +#include <dt-bindings/pinctrl/pinctrl-starfive-jh7110.h> + +/ { + model = "StarFive VisionFive V2"; + compatible = "starfive,visionfive-v2", "starfive,jh7110"; + + aliases { + serial0 = &uart0; + };
Should we also have a chosen node here?
arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-v2.dts line 26
Quoted 8 lines
arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-v2.dts new file +8
-0+ + cpus { + timebase-frequency = <4000000>; + }; + + memory@40000000 { + device_type = "memory"; + reg = <0x0 0x40000000 0x1 0x0>;
What is going to happen to the 2 GB variant if they attempt to use this devicetree?
Quoted 7 lines
arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-v2.dts new file +7
-0+ }; + + reserved-memory { + #address-cells = <2>; + #size-cells = <2>; + ranges; +
arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-v2.dts line 43
Quoted 10 lines
arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-v2.dts new file +10
-0+ linux,cma { + compatible = "shared-dma-pool"; + reusable; + size = <0x0 0x20000000>; + alignment = <0x0 0x1000>; + alloc-ranges = <0x0 0xa0000000 0x0 0x20000000>; + linux,cma-default; + }; + + e24_mem: e24@c0000000 {
I had a conversation previously with Icenowy [0] about the e24 on the jh7100 that didn't really come to a conclusion about how to represent it there - but looks like you've decided that it should be a remoteproc for the jh7100?
Is this another situation where peripherals appear at different addresses for the e24 compared to the u74s? Or has that changed for the jh7100, and really the e24 should be described in the CPUs node? If it is the latter, you can pick the first patch from [0] into your series.
arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-v2.dts line 48
Quoted 5 lines
arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-v2.dts new file +5
-0+ reg = <0x0 0xc0110000 0x0 0xf0000>; + no-map; + }; + + xrp_reserved: xrpbuffer@f0000000 {
"Following the generic-names recommended practice, node names should reflect the purpose of the node (ie. “framebuffer” or “dma-pool”)."
I tried googling around for an explanation for what the xrp was, and all I could find was this out-of-tree text binding:
https://github.com/foss-xtensa/xrp/blob/master/xrp-kernel/cdns%2Cxrp-hw-simple%2Cv1.txt
Thanks,
Conor.
Quoted 46 lines
arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-v2.dts new file +43
-0+ reg = <0x0 0xf0000000 0x0 0x01ffffff>, + <0x0 0xf2000000 0x0 0x00001000>, + <0x0 0xf2001000 0x0 0x00fff000>, + <0x0 0xf3000000 0x0 0x00001000>; + }; + + }; + + gpio-restart { + compatible = "gpio-restart"; + gpios = <&gpio 35 GPIO_ACTIVE_HIGH>; + priority = <224>; + }; +}; + +&gpio { + uart0_pins: uart0-pins { + uart0-pins-tx { + starfive,pins = <PAD_GPIO5>; + starfive,pin-ioconfig = <IO(GPIO_IE(1) | GPIO_DS(3))>; + starfive,pin-gpio-dout = <GPO_UART0_SOUT>; + starfive,pin-gpio-doen = <OEN_LOW>; + }; + + uart0-pins-rx { + starfive,pins = <PAD_GPIO6>; + starfive,pinmux = <PAD_GPIO6_FUNC_SEL 0>; + starfive,pin-ioconfig = <IO(GPIO_IE(1) | GPIO_PU(1))>; + starfive,pin-gpio-doen = <OEN_HIGH>; + starfive,pin-gpio-din = <GPI_UART0_SIN>; + }; + }; +}; + +&osc { + clock-frequency = <24000000>; +}; + +&uart0 { + pinctrl-names = "default"; + pinctrl-0 = <&uart0_pins>; + status = "okay"; +};Signature · 1 line
2.17.1
Re: [PATCH v1 28/30] RISC-V: Add StarFive JH7110 VisionFive2 board device tree
Quoted 9 lines · Conor Dooley
Quoted 5 lines · Hal Feng
From: Emil Renner Berthing <[email protected]>
Add a minimal device tree for StarFive JH7110 VisionFive2 board. Support booting and basic clock/reset/pinctrl/uart drivers.
I would like to see a link to the publicly available datasheet or documentation for the board (and for the SoC in patch 28) please.
All documents can be found at RVspace Documentation Center maintained by StarFive. The related documents of JH7110 SoC and VisionFive2 board are as follows.
StarFive JH7110 SoC:
https://doc-en.rvspace.org/Doc_Center/jh7110.html
StarFive VisionFive2 board:
https://doc-en.rvspace.org/Doc_Center/visionfive_2.html
Quoted 27 lines
Quoted 3 lines
Signed-off-by Emil Renner Berthing <[email protected]>Signed-off-by Jianlong Huang <[email protected]>Ditto from patch 28 re: the SoB chain.
Quoted 21 lines
Signed-off-by Hal Feng <[email protected]>---
arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-v2.dts new file +12
-0@@ -0,0 +1,91 @@ +// SPDX-License-Identifier: GPL-2.0 OR MIT +/* + * Copyright (C) 2022 StarFive Technology Co., Ltd. + * Copyright (C) 2022 Emil Renner Berthing <[email protected]> + */ + +/dts-v1/; +#include "jh7110.dtsi" +#include <dt-bindings/gpio/gpio.h> +#include <dt-bindings/pinctrl/pinctrl-starfive-jh7110.h> + +/ {
Quoted 8 lines
arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-v2.dts line 18
Quoted 6 lines
arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-v2.dts new file +6
-0+ model = "StarFive VisionFive V2"; + compatible = "starfive,visionfive-v2", "starfive,jh7110"; + + aliases { + serial0 = &uart0; + };Should we also have a chosen node here?
Will add it. Thanks.
Quoted 12 lines
arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-v2.dts line 26
Quoted 9 lines
arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-v2.dts new file +8
-0+ + cpus { + timebase-frequency = <4000000>; + }; + + memory@40000000 { + device_type = "memory"; + reg = <0x0 0x40000000 0x1 0x0>;What is going to happen to the 2 GB variant if they attempt to use this devicetree?
The VisionFive2 board now has 4GB version and 8GB version only. Before linux startup, we will change this property in dtb through u-boot to make sure the board can boot up with the correct memory size.
Quoted 15 lines
Quoted 15 lines
arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-v2.dts new file +14
-0+ }; + + reserved-memory { + #address-cells = <2>; + #size-cells = <2>; + ranges; + + linux,cma { + compatible = "shared-dma-pool"; + reusable; + size = <0x0 0x20000000>; + alignment = <0x0 0x1000>; + alloc-ranges = <0x0 0xa0000000 0x0 0x20000000>; + linux,cma-default;
Quoted 8 lines
arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-v2.dts line 43
Quoted 3 lines
arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-v2.dts new file +3
-0+ }; + + e24_mem: e24@c0000000 {I had a conversation previously with Icenowy [0] about the e24 on the jh7100 that didn't really come to a conclusion about how to represent it there - but looks like you've decided that it should be a remoteproc for the jh7100?
Yes, we treat it as a remoteproc outside the cpus node. But after communication with my colleagues, I found that all nodes in "reserved-memory" are not used in the minimal support for VisionFive2 board. So for this series, I would like to remove "reserved-memory" in v2.
Quoted 14 lines
Is this another situation where peripherals appear at different
addresses for the e24 compared to the u74s? Or has that changed for the> jh7100, and really the e24 should be described in the CPUs node? If it is the latter, you can pick the first patch from [0] into your series.0 - https://lore.kernel.org/linux-riscv/[email protected]> > + reg = <
0x00xc01100000x00xf0000>;arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-v2.dts line 48
Quoted 4 lines
arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-v2.dts new file +4
-0+ no-map; + }; + + xrp_reserved: xrpbuffer@f0000000 {"Following the generic-names recommended practice, node names should reflect the purpose of the node (ie. “framebuffer” or “dma-pool”)."
Quoted 3 lines
I tried googling around for an explanation for what the xrp was, and all I could find was this out-of-tree text binding:
https://github.com/foss-xtensa/xrp/blob/master/xrp-kernel/cdns%2Cxrp-hw-simple%2Cv1.txt
The name is from the device driver of HiFi4 DSP provided by Cadence, which is not in the mainline. "xrp" is a short name of "Xtensa Remote Processing".
Best regards,
Hal
PATCH 29/30 RISC-V: defconfig: Enable CONFIG_SERIAL_8250_DW
In reply to Hal FengAdd CONFIG_SERIAL_8250_DW=y, which is a necessary option for StarFive JH7110 and JH7100 SoCs to boot with serial ports.
--- arch/riscv/configs/defconfig | 1 + 1 file changed, 1 insertion(+)
arch/riscv/configs/defconfig +1 -0
@@ -122,6 +122,7 @@ CONFIG_MICROSEMI_PHY=y CONFIG_INPUT_MOUSEDEV=y CONFIG_SERIAL_8250=y CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_8250_DW=y CONFIG_SERIAL_OF_PLATFORM=y CONFIG_VIRTIO_CONSOLE=y CONFIG_HW_RANDOM=y
Signature · 1 line
2.17.1
Re: [PATCH v1 29/30] RISC-V: defconfig: Enable CONFIG_SERIAL_8250_DW
Quoted 4 lines · Hal Feng
Add
CONFIG_SERIAL_8250_DW=y, which is a necessary option for StarFive JH7110 and JH7100 SoCs to boot with serial ports.Signed-off-by Hal Feng <[email protected]>
That might be useful for other users at some point an I don't think it adds much code.
Quoted 16 lines
--- arch/riscv/configs/defconfig | 1 + 1 file changed, 1 insertion(+)arch/riscv/configs/defconfig +1
-0@@ -122,6 +122,7 @@ CONFIG_MICROSEMI_PHY=y CONFIG_INPUT_MOUSEDEV=y CONFIG_SERIAL_8250=y CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_8250_DW=y CONFIG_SERIAL_OF_PLATFORM=y CONFIG_VIRTIO_CONSOLE=y CONFIG_HW_RANDOM=y
Signature · 10 lines
Ben Dooks http://www.codethink.co.uk/ Senior Engineer Codethink - Providing Genius https://www.codethink.co.uk/privacy.html _______________________________________________ linux-riscv mailing list [email protected] http://lists.infradead.org/mailman/listinfo/linux-riscv
Re: [PATCH v1 29/30] RISC-V: defconfig: Enable CONFIG_SERIAL_8250_DW
Quoted 8 lines · Ben Dooks
Quoted 4 lines · Hal Feng
Add
CONFIG_SERIAL_8250_DW=y, which is a necessary option for StarFive JH7110 and JH7100 SoCs to boot with serial ports.Signed-off-by Hal Feng <[email protected]>That might be useful for other users at some point an I don't think it adds much code.
Honestly I think this should be applied for 6.1, for parity with the other SoCs that have their serial console enabled by default.
Thanks,
Conor.
Quoted 29 lines
Quoted 17 lines
--- arch/riscv/configs/defconfig | 1 + 1 file changed, 1 insertion(+)arch/riscv/configs/defconfig +1
-0@@ -122,6 +122,7 @@ CONFIG_MICROSEMI_PHY=y CONFIG_INPUT_MOUSEDEV=y CONFIG_SERIAL_8250=y CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_8250_DW=y CONFIG_SERIAL_OF_PLATFORM=y CONFIG_VIRTIO_CONSOLE=y CONFIG_HW_RANDOM=ySignature · 10 lines
Ben Dooks http://www.codethink.co.uk/ Senior Engineer Codethink - Providing Genius https://www.codethink.co.uk/privacy.html _______________________________________________ linux-riscv mailing list [email protected] http://lists.infradead.org/mailman/listinfo/linux-riscv
Re: [PATCH v1 29/30] RISC-V: defconfig: Enable CONFIG_SERIAL_8250_DW
Quoted 7 lines · Conor Dooley
Quoted 6 lines · Ben Dooks
Quoted 4 lines · Hal Feng
Add
CONFIG_SERIAL_8250_DW=y, which is a necessary option for StarFive JH7110 and JH7100 SoCs to boot with serial ports.Signed-off-by Hal Feng <[email protected]>
Quoted 7 lines
Quoted 2 lines
That might be useful for other users at some point an I don't think it adds much code.
Honestly I think this should be applied for 6.1, for parity with the other SoCs that have their serial console enabled by default.
Reviewed-by Conor Dooley <[email protected]>
Could this patch be pulled out and applied for v6.1? So the JH7100 and the coming JH7110 can enable serial console by default when booting. Thanks.
Best regards,
Hal
PATCH 30/30 RISC-V: Add StarFive JH7100 and JH7110 SoC Kconfig options
In reply to Hal FengAdd Kconfig options to select the specified StarFive SoC. Select necessary Kconfig options required by the specified SoC for booting.
--- arch/riscv/Kconfig.socs | 27 ++++++++++++++++++++++++++- arch/riscv/boot/dts/starfive/Makefile | 4 ++-- drivers/clk/starfive/Kconfig | 14 ++++++-------- drivers/pinctrl/starfive/Kconfig | 6 ++---- drivers/reset/Kconfig | 1 - 5 files changed, 36 insertions(+), 16 deletions(-)
arch/riscv/Kconfig.socs +26 -1
@@ -22,10 +22,35 @@ config SOC_STARFIVE bool "StarFive SoCs" select PINCTRL select RESET_CONTROLLER + select RESET_STARFIVE + help + This enables support for StarFive SoC platform hardware. + +if SOC_STARFIVE + +config SOC_JH7100 + bool "StarFive JH7100 SoC support" + depends on SOC_STARFIVE select SIFIVE_L2 select SIFIVE_PLIC + select CLK_STARFIVE_JH7100 + select PINCTRL_STARFIVE_JH7100 + default SOC_STARFIVE help - This enables support for StarFive SoC platform hardware. + This enables support for StarFive JH7100 SoC. + +config SOC_JH7110 + bool "StarFive JH7110 SoC support" + depends on SOC_STARFIVE + select SIFIVE_L2 + select SIFIVE_PLIC + select CLK_STARFIVE_JH7110_SYS + select PINCTRL_STARFIVE_JH7110 + default SOC_STARFIVE + help + This enables support for StarFive JH7110 SoC. + +endif config SOC_VIRT bool "QEMU Virt Machine"
arch/riscv/boot/dts/starfive/Makefile +2 -2
@@ -1,3 +1,3 @@ # SPDX-License-Identifier: GPL-2.0 -dtb-$(CONFIG_SOC_STARFIVE) += jh7100-beaglev-starlight.dtb -dtb-$(CONFIG_SOC_STARFIVE) += jh7110-starfive-visionfive-v2.dtb +dtb-$(CONFIG_SOC_JH7100) += jh7100-beaglev-starlight.dtb +dtb-$(CONFIG_SOC_JH7110) += jh7110-starfive-visionfive-v2.dtb
drivers/clk/starfive/Kconfig +6 -8
@@ -5,36 +5,34 @@ config CLK_STARFIVE config CLK_STARFIVE_JH7100 bool "StarFive JH7100 clock support" - depends on SOC_STARFIVE || COMPILE_TEST + depends on SOC_JH7100 || COMPILE_TEST select CLK_STARFIVE - default SOC_STARFIVE help Say yes here to support the clock controller on the StarFive JH7100 SoC. config CLK_STARFIVE_JH7100_AUDIO tristate "StarFive JH7100 audio clock support" - depends on SOC_STARFIVE || COMPILE_TEST + depends on SOC_JH7100 || COMPILE_TEST select CLK_STARFIVE - default m if SOC_STARFIVE + default m if SOC_JH7100 help Say Y or M here to support the audio clocks on the StarFive JH7100 SoC. config CLK_STARFIVE_JH7110_SYS bool "StarFive JH7110 system clock support" - depends on SOC_STARFIVE || COMPILE_TEST + depends on SOC_JH7110 || COMPILE_TEST select CLK_STARFIVE - default SOC_STARFIVE help Say yes here to support the system clock controller on the StarFive JH7110 SoC. config CLK_STARFIVE_JH7110_AON tristate "StarFive JH7110 always-on clock support" - depends on SOC_STARFIVE || COMPILE_TEST + depends on SOC_JH7110 || COMPILE_TEST select CLK_STARFIVE - default m if SOC_STARFIVE + default m if SOC_JH7110 help Say yes here to support the always-on clock controller on the StarFive JH7110 SoC.
drivers/pinctrl/starfive/Kconfig +2 -4
@@ -2,7 +2,7 @@ config PINCTRL_STARFIVE_JH7100 tristate "Pinctrl and GPIO driver for the StarFive JH7100 SoC" - depends on SOC_STARFIVE || COMPILE_TEST + depends on SOC_JH7100 || COMPILE_TEST depends on OF select GENERIC_PINCTRL_GROUPS select GENERIC_PINMUX_FUNCTIONS
@@ -10,7 +10,6 @@ config PINCTRL_STARFIVE_JH7100 select GPIOLIB select GPIOLIB_IRQCHIP select OF_GPIO - default SOC_STARFIVE help Say yes here to support pin control on the StarFive JH7100 SoC. This also provides an interface to the GPIO pins not used by other
@@ -28,10 +27,9 @@ config PINCTRL_STARFIVE config PINCTRL_STARFIVE_JH7110 bool "Pinctrl and GPIO driver for the StarFive JH7110 SoC" - depends on SOC_STARFIVE || COMPILE_TEST + depends on SOC_JH7110 || COMPILE_TEST depends on OF select PINCTRL_STARFIVE - default SOC_STARFIVE help Say yes here to support pin control on the StarFive JH7110 SoC. This also provides an interface to the GPIO pins not used by other
drivers/reset/Kconfig +0 -1
@@ -228,7 +228,6 @@ config RESET_SOCFPGA config RESET_STARFIVE bool "StarFive SoC Reset Driver" depends on SOC_STARFIVE || COMPILE_TEST - default SOC_STARFIVE help This enables the reset controller driver for the StarFive SoCs.
Signature · 1 line
2.17.1
Re: [PATCH v1 30/30] RISC-V: Add StarFive JH7100 and JH7110 SoC Kconfig options
Quoted 10 lines · Hal Feng
Add
Kconfigoptions to select the specified StarFive SoC. Select necessaryKconfigoptions required by the specified SoC for booting.Signed-off-by Hal Feng <[email protected]>--- arch/riscv/Kconfig.socs | 27 ++++++++++++++++++++++++++- arch/riscv/boot/dts/starfive/Makefile | 4 ++-- drivers/clk/starfive/Kconfig | 14 ++++++-------- drivers/pinctrl/starfive/Kconfig | 6 ++---- drivers/reset/Kconfig | 1 -
Firstly, you cannot change all of these files in one commit, sorry.
arch/riscv/Kconfig.socs config SOC_STARFIVE · line 25
Quoted 11 lines
5 files changed, 36 insertions(+), 16 deletions(-)arch/riscv/Kconfig.socs +1
-0@@ -22,10 +22,35 @@ config SOC_STARFIVE bool "StarFive SoCs" select PINCTRL select RESET_CONTROLLER + select RESET_STARFIVE
Secondly, we are trying to get rid of selects in arch/riscv at the moment, not add them. use "default SOC_STARFIVE" in drivers/reset/kconfig instead please.
arch/riscv/Kconfig.socs config SOC_STARFIVE · line 29
Quoted 4 lines
arch/riscv/Kconfig.socs +4
-0+ help + This enables support for StarFive SoC platform hardware. + +if SOC_STARFIVE
I don't think we want to have per soc selection menus in arch code, I think this should move to drivers/soc (a la Renesas) if you want to have a per soc selection menu or else just do "default SOC_STARFIVE" for both clock and pinctrl drivers in the clk and pinctrl Kconfig entries.
Thanks,
Conor.
Quoted 133 lines
arch/riscv/Kconfig.socs +21
-1+ +config SOC_JH7100 + bool "StarFive JH7100 SoC support" + depends on SOC_STARFIVE select SIFIVE_L2 select SIFIVE_PLIC + select CLK_STARFIVE_JH7100 + select PINCTRL_STARFIVE_JH7100 + default SOC_STARFIVE help - This enables support for StarFive SoC platform hardware. + This enables support for StarFive JH7100 SoC. + +config SOC_JH7110 + bool "StarFive JH7110 SoC support" + depends on SOC_STARFIVE + select SIFIVE_L2 + select SIFIVE_PLIC + select CLK_STARFIVE_JH7110_SYS + select PINCTRL_STARFIVE_JH7110 + default SOC_STARFIVE + help + This enables support for StarFive JH7110 SoC. + +endif config SOC_VIRT bool "QEMU Virt Machine"arch/riscv/boot/dts/starfive/Makefile +2
-2@@ -1,3 +1,3 @@ # SPDX-License-Identifier: GPL-2.0 -dtb-$(CONFIG_SOC_STARFIVE) += jh7100-beaglev-starlight.dtb -dtb-$(CONFIG_SOC_STARFIVE) += jh7110-starfive-visionfive-v2.dtb +dtb-$(CONFIG_SOC_JH7100) += jh7100-beaglev-starlight.dtb +dtb-$(CONFIG_SOC_JH7110) += jh7110-starfive-visionfive-v2.dtbdrivers/clk/starfive/Kconfig +6
-8@@ -5,36 +5,34 @@ config CLK_STARFIVE config CLK_STARFIVE_JH7100 bool "StarFive JH7100 clock support" - depends on SOC_STARFIVE || COMPILE_TEST + depends on SOC_JH7100 || COMPILE_TEST select CLK_STARFIVE - default SOC_STARFIVE help Say yes here to support the clock controller on the StarFive JH7100 SoC. config CLK_STARFIVE_JH7100_AUDIO tristate "StarFive JH7100 audio clock support" - depends on SOC_STARFIVE || COMPILE_TEST + depends on SOC_JH7100 || COMPILE_TEST select CLK_STARFIVE - default m if SOC_STARFIVE + default m if SOC_JH7100 help Say Y or M here to support the audio clocks on the StarFive JH7100 SoC. config CLK_STARFIVE_JH7110_SYS bool "StarFive JH7110 system clock support" - depends on SOC_STARFIVE || COMPILE_TEST + depends on SOC_JH7110 || COMPILE_TEST select CLK_STARFIVE - default SOC_STARFIVE help Say yes here to support the system clock controller on the StarFive JH7110 SoC. config CLK_STARFIVE_JH7110_AON tristate "StarFive JH7110 always-on clock support" - depends on SOC_STARFIVE || COMPILE_TEST + depends on SOC_JH7110 || COMPILE_TEST select CLK_STARFIVE - default m if SOC_STARFIVE + default m if SOC_JH7110 help Say yes here to support the always-on clock controller on the StarFive JH7110 SoC.drivers/pinctrl/starfive/Kconfig +2
-4@@ -2,7 +2,7 @@ config PINCTRL_STARFIVE_JH7100 tristate "Pinctrl and GPIO driver for the StarFive JH7100 SoC" - depends on SOC_STARFIVE || COMPILE_TEST + depends on SOC_JH7100 || COMPILE_TEST depends on OF select GENERIC_PINCTRL_GROUPS select GENERIC_PINMUX_FUNCTIONS@@ -10,7 +10,6 @@ config PINCTRL_STARFIVE_JH7100 select GPIOLIB select GPIOLIB_IRQCHIP select OF_GPIO - default SOC_STARFIVE help Say yes here to support pin control on the StarFive JH7100 SoC. This also provides an interface to the GPIO pins not used by other@@ -28,10 +27,9 @@ config PINCTRL_STARFIVE config PINCTRL_STARFIVE_JH7110 bool "Pinctrl and GPIO driver for the StarFive JH7110 SoC" - depends on SOC_STARFIVE || COMPILE_TEST + depends on SOC_JH7110 || COMPILE_TEST depends on OF select PINCTRL_STARFIVE - default SOC_STARFIVE help Say yes here to support pin control on the StarFive JH7110 SoC. This also provides an interface to the GPIO pins not used by otherdrivers/reset/Kconfig +0
-1@@ -228,7 +228,6 @@ config RESET_SOCFPGA config RESET_STARFIVE bool "StarFive SoC Reset Driver" depends on SOC_STARFIVE || COMPILE_TEST - default SOC_STARFIVE help This enables the reset controller driver for the StarFive SoCs.Signature · 1 line
2.17.1
Re: [PATCH v1 30/30] RISC-V: Add StarFive JH7100 and JH7110 SoC Kconfig options
Quoted 30 lines · Conor Dooley
Quoted 10 lines · Hal Feng
Add
Kconfigoptions to select the specified StarFive SoC. Select necessaryKconfigoptions required by the specified SoC for booting.Signed-off-by Hal Feng <[email protected]>--- arch/riscv/Kconfig.socs | 27 ++++++++++++++++++++++++++- arch/riscv/boot/dts/starfive/Makefile | 4 ++-- drivers/clk/starfive/Kconfig | 14 ++++++-------- drivers/pinctrl/starfive/Kconfig | 6 ++---- drivers/reset/Kconfig | 1 -Firstly, you cannot change all of these files in one commit, sorry.
arch/riscv/Kconfig.socs config SOC_STARFIVE · line 25
Quoted 11 lines
5 files changed, 36 insertions(+), 16 deletions(-)arch/riscv/Kconfig.socs +1
-0@@ -22,10 +22,35 @@ config SOC_STARFIVE bool "StarFive SoCs" select PINCTRL select RESET_CONTROLLER + select RESET_STARFIVESecondly, we are trying to get rid of selects in
arch/riscvat the moment, not add them. use "defaultSOC_STARFIVE" indrivers/reset/kconfiginstead please.
Quoted 10 lines
arch/riscv/Kconfig.socs config SOC_STARFIVE · line 29
Quoted 4 lines
arch/riscv/Kconfig.socs +4
-0+ help + This enables support for StarFive SoC platform hardware. + +if SOC_STARFIVEI don't think we want to have per soc selection menus in arch code, I think this should move to
drivers/soc(a la Renesas) if you want to have a per soc selection menu or else just do "defaultSOC_STARFIVE" for both clock and pinctrl drivers in the clk and pinctrlKconfigentries.
Thanks for your helpful comments. I will drop this patch.
Best regards,
Hal
Quoted 13 lines · Hal Feng
This series adds basic support for the StarFive JH7110 RISC-V SoC to boot up and get a serial console. This series includes basic clock, reset, pinctrl and uart drivers, which are necessary for booting. It's should be noted that the reset and clock driver codes of JH7110 are partly common with those of JH7100, so the common codes are factored out and can be reused by drivers of JH7110 and other more SoCs from StarFive.
The JH7110 is the upgraded version of JH7100 and also the first official released version of JH71XX series SoCs from StarFive Technology Ltd. The VisionFive 2 boards equipped with JH7110 SoCs are launched recently [1]. More information and support can visit RVspace wiki [2].
Quoted 5 lines
This series is also available at
https://github.com/hal-feng/linux/commits/visionfive2-minimal[1] https://www.cnx-software.com/2022/08/23/starfive-visionfive-2-quad-core-risc-v-sbc-linux/
[2] https://wiki.rvspace.org/
Hi Hal,
Firstly thanks for working on this! And sorry about the late reply. On the next version could you please cc [email protected] since it seems to handle the mailing list a bit better.
I see you've changed the clock/reset and pinctrl quite a bit, so I'll comment on that separately.
/Emil
Quoted 121 lines
Emil Renner Berthing (17):
dt-bindings: riscv: Add StarFive JH7110 bindings
dt-bindings: timer: Add StarFive JH7110 clint
dt-bindings: interrupt-controller: Add StarFive JH7110 plic
dt-bindings: sifive-l2-cache: Support StarFive JH71x0 SoCs
soc: sifive: l2 cache: Convert to platform driver
soc: sifive: l2 cache: Add StarFive JH71x0 support
reset: starfive: jh7100: Use 32bit I/O on 32bit registers
dt-bindings: reset: Add StarFive JH7110 reset definitions
clk: starfive: Factor out common clock driver code
dt-bindings: clock: Add StarFive JH7110 system clock definitions
dt-bindings: clock: Add starfive,jh7110-clkgen-sys bindings
clk: starfive: Add StarFive JH7110 system clock driver
dt-bindings: clock: Add StarFive JH7110 always-on definitions
dt-bindings: clock: Add starfive,jh7110-clkgen-aon bindings
clk: starfive: Add StarFive JH7110 always-on clock driver
RISC-V: Add initial StarFive JH7110 device tree
RISC-V: Add StarFive JH7110 VisionFive2 board device treeHal Feng (8):
reset: starfive: jh7100: Use regmap APIs to operate registers
reset: starfive: jh7100: Move necessary properties to device tree
reset: starfive: Rename 'reset-starfive-jh7100.c' to
'reset-starfive.c'
dt-bindings: reset: Add starfive,jh7110-reset bindings
reset: starfive: Add StarFive JH7110 SoC support
clk: starfive: Use regmap APIs to operate registers
RISC-V: defconfig: EnableCONFIG_SERIAL_8250_DW
RISC-V: Add StarFive JH7100 and JH7110 SoCKconfigoptionsJianlong Huang (5):
pinctrl: Create subdirectory for StarFive drivers
pinctrl: starfive: Rename "pinctrl-starfive" to"pinctrl-starfive-jh7100"dt-bindings: pinctrl: Add StarFive JH7110 pinctrl definitions
dt-bindings: pinctrl: Add StarFive JH7110 pinctrl bindings
pinctrl: starfive: Add StarFive JH7110 driver.../clock/starfive,jh7110-clkgen-aon.yaml | 62 ++ .../clock/starfive,jh7110-clkgen-sys.yaml | 69 ++ .../sifive,plic-1.0.0.yaml | 1 + .../pinctrl/starfive,jh7100-pinctrl.yaml | 2 +- .../pinctrl/starfive,jh7110-pinctrl.yaml | 202 ++++ .../bindings/reset/starfive,jh7100-reset.yaml | 20 + .../bindings/reset/starfive,jh7110-reset.yaml | 54 + .../bindings/riscv/sifive-l2-cache.yaml | 4 + .../devicetree/bindings/riscv/starfive.yaml | 3 + .../bindings/timer/sifive,clint.yaml | 1 + MAINTAINERS | 27 +- arch/riscv/Kconfig.socs | 28 +- arch/riscv/boot/dts/starfive/Makefile | 3 +- .../dts/starfive/jh7100-beaglev-starlight.dts | 2 +- arch/riscv/boot/dts/starfive/jh7100.dtsi | 3 + .../jh7110-starfive-visionfive-v2.dts | 91 ++ arch/riscv/boot/dts/starfive/jh7110.dtsi | 449 +++++++++ arch/riscv/configs/defconfig | 1 + drivers/clk/starfive/Kconfig | 29 +- drivers/clk/starfive/Makefile | 6 +- .../clk/starfive/clk-starfive-jh7100-audio.c | 138 +-- drivers/clk/starfive/clk-starfive-jh7100.c | 836 +++++----------- drivers/clk/starfive/clk-starfive-jh7100.h | 112 --- .../clk/starfive/clk-starfive-jh7110-aon.c | 161 +++ .../clk/starfive/clk-starfive-jh7110-sys.c | 648 ++++++++++++ drivers/clk/starfive/clk-starfive.c | 349 +++++++ drivers/clk/starfive/clk-starfive.h | 112 +++ drivers/pinctrl/Kconfig | 18 +- drivers/pinctrl/Makefile | 2 +- drivers/pinctrl/starfive/Kconfig | 37 + drivers/pinctrl/starfive/Makefile | 8 + drivers/pinctrl/starfive/pinctrl-jh7110-aon.c | 718 ++++++++++++++ drivers/pinctrl/starfive/pinctrl-jh7110-sys.c | 925 +++++++++++++++++ .../pinctrl-starfive-jh7100.c} | 10 +- drivers/pinctrl/starfive/pinctrl-starfive.c | 539 ++++++++++ drivers/pinctrl/starfive/pinctrl-starfive.h | 131 +++ drivers/reset/Kconfig | 7 +- drivers/reset/Makefile | 2 +- drivers/reset/reset-starfive-jh7100.c | 173 ---- drivers/reset/reset-starfive.c | 218 ++++ drivers/soc/Makefile | 2 +- drivers/soc/sifive/Kconfig | 2 +- drivers/soc/sifive/sifive_l2_cache.c | 86 +- .../dt-bindings/clock/starfive-jh7110-aon.h | 26 + .../dt-bindings/clock/starfive-jh7110-sys.h | 215 ++++ ...l-starfive.h => pinctrl-starfive-jh7100.h} | 6 +- .../pinctrl/pinctrl-starfive-jh7110.h | 931 ++++++++++++++++++ include/dt-bindings/reset/starfive-jh7110.h | 154 +++ 48 files changed, 6604 insertions(+), 1019 deletions(-) create mode 100644 Documentation/devicetree/bindings/clock/starfive,jh7110-clkgen-aon.yaml create mode 100644 Documentation/devicetree/bindings/clock/starfive,jh7110-clkgen-sys.yaml create mode 100644 Documentation/devicetree/bindings/pinctrl/starfive,jh7110-pinctrl.yaml create mode 100644 Documentation/devicetree/bindings/reset/starfive,jh7110-reset.yaml create mode 100644 arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-v2.dts create mode 100644 arch/riscv/boot/dts/starfive/jh7110.dtsi delete mode 100644 drivers/clk/starfive/clk-starfive-jh7100.h create mode 100644 drivers/clk/starfive/clk-starfive-jh7110-aon.c create mode 100644 drivers/clk/starfive/clk-starfive-jh7110-sys.c create mode 100644 drivers/clk/starfive/clk-starfive.c create mode 100644 drivers/clk/starfive/clk-starfive.h create mode 100644 drivers/pinctrl/starfive/Kconfig create mode 100644 drivers/pinctrl/starfive/Makefile create mode 100644 drivers/pinctrl/starfive/pinctrl-jh7110-aon.c create mode 100644 drivers/pinctrl/starfive/pinctrl-jh7110-sys.c rename drivers/pinctrl/{pinctrl-starfive.c => starfive/pinctrl-starfive-jh7100.c} (99%) create mode 100644 drivers/pinctrl/starfive/pinctrl-starfive.c create mode 100644 drivers/pinctrl/starfive/pinctrl-starfive.h delete mode 100644 drivers/reset/reset-starfive-jh7100.c create mode 100644 drivers/reset/reset-starfive.c create mode 100644 include/dt-bindings/clock/starfive-jh7110-aon.h create mode 100644 include/dt-bindings/clock/starfive-jh7110-sys.h rename include/dt-bindings/pinctrl/{pinctrl-starfive.h => pinctrl-starfive-jh7100.h} (98%) create mode 100644 include/dt-bindings/pinctrl/pinctrl-starfive-jh7110.h create mode 100644 include/dt-bindings/reset/starfive-jh7110.h--
2.17.1_______________________________________________
linux-riscv mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-riscv
Quoted 20 lines · Emil Renner Berthing
Quoted 13 lines · Hal Feng
This series adds basic support for the StarFive JH7110 RISC-V SoC to boot up and get a serial console. This series includes basic clock, reset, pinctrl and uart drivers, which are necessary for booting. It's should be noted that the reset and clock driver codes of JH7110 are partly common with those of JH7100, so the common codes are factored out and can be reused by drivers of JH7110 and other more SoCs from StarFive.
The JH7110 is the upgraded version of JH7100 and also the first official released version of JH71XX series SoCs from StarFive Technology Ltd. The VisionFive 2 boards equipped with JH7110 SoCs are launched recently [1]. More information and support can visit RVspace wiki [2].
Quoted 5 lines
This series is also available at
https://github.com/hal-feng/linux/commits/visionfive2-minimal[1] https://www.cnx-software.com/2022/08/23/starfive-visionfive-2-quad-core-risc-v-sbc-linux/
[2] https://wiki.rvspace.org/
Quoted 6 lines
Hi Hal,
Firstly thanks for working on this! And sorry about the late reply. On the next version could you please cc [email protected] since it seems to handle the mailing list a bit better.
OK, I will cc to your new email instead on v2.
Best Regards,
Hal
Quoted 2 lines
I see you've changed the clock/reset and pinctrl quite a bit, so I'll comment on that separatel