diff --git a/0001-riscv-kernel.patch b/0001-riscv-kernel.patch index 649cabd..31a860c 100644 --- a/0001-riscv-kernel.patch +++ b/0001-riscv-kernel.patch @@ -1,907 +1,1280 @@ -From 663ed4ffca02687f906b3fb25b2467f54f8283e1 Mon Sep 17 00:00:00 2001 +From e71d7cb54ac724161d5753280d5d0c2ef6f5484d Mon Sep 17 00:00:00 2001 From: Mingzheng Xing -Date: Sat, 17 Aug 2024 01:26:58 +0800 +Date: Tue, 10 Dec 2024 20:35:26 +0800 Subject: [PATCH] riscv kernel Signed-off-by: Mingzheng Xing --- - .../bindings/iio/adc/thead,th1520-adc.yaml | 52 + - .../bindings/iio/adc/xuantie,th1520-adc.yaml | 52 + - .../mailbox/xuantie-th1520-mailbox.txt | 57 + - .../bindings/mmc/snps,dwcmshc-sdhci.yaml | 1 + - .../devicetree/bindings/net/snps,dwmac.yaml | 2 + - .../bindings/net/xuantie,dwmac.yaml | 77 + - .../pinctrl/thead,th1520-pinctrl.yaml | 374 + - .../bindings/pwm/xuantie,th1520-pwm.yaml | 44 + - .../bindings/reset/xuantie,th1520-reset.yaml | 45 + - .../devicetree/bindings/rtc/xgene-rtc.txt | 16 + - .../soc/xuantie/xuantie,th1520-event.yaml | 37 + - .../bindings/sound/everest,es7210.txt | 12 + - .../bindings/sound/everest,es8156.yaml | 42 + - .../bindings/sound/xuantie,th1520-i2s.yaml | 92 + - .../bindings/spi/xuantie,th1520-qspi.yaml | 52 + - .../bindings/spi/xuantie,th1520-spi.yaml | 58 + - .../bindings/usb/xuantie,th1520-usb.yaml | 76 + - .../bindings/watchdog/xuantie,th1520-wdt.yaml | 19 + - .../membarrier-sync-core/arch-support.txt | 18 +- - Documentation/scheduler/index.rst | 1 + - Documentation/scheduler/membarrier.rst | 39 + - MAINTAINERS | 6 +- - arch/arm/include/asm/pgtable.h | 2 + - arch/riscv/Kconfig | 21 +- - arch/riscv/Kconfig.socs | 12 + - arch/riscv/Makefile | 19 +- - arch/riscv/Makefile.isa | 18 + - arch/riscv/boot/dts/Makefile | 1 + - arch/riscv/boot/dts/sophgo/Makefile | 7 + - .../riscv/boot/dts/sophgo/mango-2sockets.dtsi | 699 ++ - .../boot/dts/sophgo/mango-clock-socket0.dtsi | 124 + - .../boot/dts/sophgo/mango-clock-socket1.dtsi | 124 + - .../boot/dts/sophgo/mango-cpus-socket0.dtsi | 1148 +++ - .../boot/dts/sophgo/mango-cpus-socket1.dtsi | 1149 +++ - .../boot/dts/sophgo/mango-milkv-pioneer.dts | 170 + - .../riscv/boot/dts/sophgo/mango-pcie-2rc.dtsi | 81 + - .../dts/sophgo/mango-pcie-3rc-capricorn.dtsi | 116 + - .../boot/dts/sophgo/mango-pcie-3rc-v2.dtsi | 115 + - .../riscv/boot/dts/sophgo/mango-pcie-3rc.dtsi | 112 + - .../boot/dts/sophgo/mango-pcie-4rc-v2.dtsi | 155 + - .../riscv/boot/dts/sophgo/mango-pcie-4rc.dtsi | 151 + - arch/riscv/boot/dts/sophgo/mango-pinctrl.dtsi | 434 + - .../dts/sophgo/mango-sophgo-capricorn.dts | 57 + - .../boot/dts/sophgo/mango-sophgo-pisces.dts | 58 + - .../boot/dts/sophgo/mango-sophgo-x4evb.dts | 144 + - .../boot/dts/sophgo/mango-sophgo-x8evb.dts | 172 + - .../boot/dts/sophgo/mango-top-intc2.dtsi | 62 + - .../boot/dts/sophgo/mango-yixin-s2110.dts | 63 + - arch/riscv/boot/dts/sophgo/mango.dtsi | 938 ++ - arch/riscv/boot/dts/thead/Makefile | 2 +- - .../boot/dts/thead/th1520-beaglev-ahead.dts | 209 + - .../dts/thead/th1520-lichee-module-4a.dtsi | 437 + - .../boot/dts/thead/th1520-lichee-pi-4a.dts | 840 ++ - arch/riscv/boot/dts/thead/th1520.dtsi | 1226 ++- - arch/riscv/configs/defconfig | 22 +- - arch/riscv/configs/openeuler_defconfig | 1821 +++- - arch/riscv/configs/sg2042_defconfig | 9 + - arch/riscv/configs/th1520_defconfig | 398 + - arch/riscv/include/asm/barrier.h | 22 + - arch/riscv/include/asm/errata_list.h | 32 +- - arch/riscv/include/asm/io.h | 4 + - arch/riscv/include/asm/kfence.h | 4 +- - arch/riscv/include/asm/membarrier.h | 50 + - arch/riscv/include/asm/pgtable-64.h | 36 +- - arch/riscv/include/asm/pgtable.h | 36 +- - arch/riscv/include/asm/sparsemem.h | 2 +- - arch/riscv/include/asm/switch_to.h | 15 + - arch/riscv/include/asm/sync_core.h | 29 + - arch/riscv/kernel/efi.c | 2 +- - arch/riscv/kernel/module.c | 83 +- - arch/riscv/kernel/process.c | 3 + - arch/riscv/kernel/vector.c | 3 +- - arch/riscv/kvm/mmu.c | 22 +- - arch/riscv/mm/Makefile | 3 +- - arch/riscv/mm/context.c | 2 + - arch/riscv/mm/dma-noncoherent.c | 9 +- - arch/riscv/mm/fault.c | 16 +- - arch/riscv/mm/hugetlbpage.c | 12 +- - arch/riscv/mm/kasan_init.c | 45 +- - arch/riscv/mm/pageattr.c | 44 +- - arch/riscv/mm/pgtable.c | 51 +- - drivers/char/ipmi/ipmi_si_hardcode.c | 26 +- - drivers/char/ipmi/ipmi_si_intf.c | 3 +- - drivers/char/ipmi/ipmi_si_pci.c | 6 + - drivers/clk/Kconfig | 1 + - drivers/clk/Makefile | 2 + - drivers/clk/sophgo/Makefile | 3 + - drivers/clk/sophgo/clk-dummy.c | 600 ++ - drivers/clk/sophgo/clk-mango.c | 977 ++ - drivers/clk/sophgo/clk.c | 883 ++ - drivers/clk/sophgo/clk.h | 152 + - drivers/clk/xuantie/Kconfig | 12 + - drivers/clk/xuantie/Makefile | 7 + - drivers/clk/xuantie/clk-th1520-fm.c | 648 ++ - drivers/clk/xuantie/clk.c | 766 ++ - drivers/clk/xuantie/clk.h | 126 + - drivers/clk/xuantie/gate/Makefile | 3 + - drivers/clk/xuantie/gate/audiosys-gate.c | 124 + - drivers/clk/xuantie/gate/clk-gate.h | 35 + - drivers/clk/xuantie/gate/dspsys-gate.c | 123 + - drivers/clk/xuantie/gate/miscsys-gate.c | 108 + - drivers/clk/xuantie/gate/visys-gate.c | 144 + - drivers/clk/xuantie/gate/vosys-gate.c | 111 + - drivers/clk/xuantie/gate/vpsys-gate.c | 99 + - drivers/clk/xuantie/gate/xuantie-gate.c | 114 + - drivers/cpufreq/Kconfig | 9 + - drivers/cpufreq/Makefile | 1 + - drivers/cpufreq/th1520-cpufreq.c | 562 ++ - .../dma/dw-axi-dmac/dw-axi-dmac-platform.c | 75 +- - drivers/dma/dw-axi-dmac/dw-axi-dmac.h | 10 + - drivers/firmware/Kconfig | 1 + - drivers/firmware/Makefile | 1 + - drivers/firmware/xuantie/Kconfig | 23 + - drivers/firmware/xuantie/Makefile | 4 + - drivers/firmware/xuantie/th1520_aon.c | 341 + - drivers/firmware/xuantie/th1520_aon_pd.c | 414 + - drivers/firmware/xuantie/th1520_proc_debug.c | 173 + - drivers/gpio/gpio-dwapb.c | 15 +- - drivers/gpio/gpio-pca953x.c | 12 +- - drivers/gpu/drm/Kconfig | 4 + - drivers/gpu/drm/Makefile | 2 + - drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 2 + - drivers/gpu/drm/amd/display/Kconfig | 1 + - .../gpu/drm/amd/display/amdgpu_dm/dc_fpu.c | 6 +- - drivers/gpu/drm/amd/display/dc/dml/Makefile | 6 + - drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 198 +- - drivers/gpu/drm/drm_fbdev_generic.c | 9 + - drivers/gpu/drm/drm_gem_vram_helper.c | 2 +- - drivers/gpu/drm/img-rogue/Kconfig | 24 + - drivers/gpu/drm/img-rogue/Makefile | 18 + - drivers/gpu/drm/img-rogue/allocmem.c | 422 + - drivers/gpu/drm/img-rogue/allocmem.h | 224 + - drivers/gpu/drm/img-rogue/apollo/apollo.mk | 4 + - .../gpu/drm/img-rogue/apollo/apollo_regs.h | 108 + - drivers/gpu/drm/img-rogue/apollo/bonnie_tcf.h | 68 + - .../gpu/drm/img-rogue/apollo/drm_pdp_crtc.c | 1104 +++ - .../drm/img-rogue/apollo/drm_pdp_debugfs.c | 184 + - .../gpu/drm/img-rogue/apollo/drm_pdp_drv.c | 866 ++ - .../gpu/drm/img-rogue/apollo/drm_pdp_drv.h | 241 + - .../gpu/drm/img-rogue/apollo/drm_pdp_dvi.c | 307 + - drivers/gpu/drm/img-rogue/apollo/drm_pdp_fb.c | 312 + - .../gpu/drm/img-rogue/apollo/drm_pdp_gem.c | 780 ++ - .../gpu/drm/img-rogue/apollo/drm_pdp_gem.h | 157 + - .../drm/img-rogue/apollo/drm_pdp_modeset.c | 472 + - .../gpu/drm/img-rogue/apollo/drm_pdp_plane.c | 323 + - .../gpu/drm/img-rogue/apollo/drm_pdp_tmds.c | 143 + - drivers/gpu/drm/img-rogue/apollo/odin_defs.h | 326 + - .../gpu/drm/img-rogue/apollo/odin_pdp_regs.h | 8540 ++++++++++++++++ - drivers/gpu/drm/img-rogue/apollo/odin_regs.h | 1026 ++ - drivers/gpu/drm/img-rogue/apollo/orion_defs.h | 183 + - drivers/gpu/drm/img-rogue/apollo/orion_regs.h | 439 + - drivers/gpu/drm/img-rogue/apollo/pdp_apollo.c | 332 + - drivers/gpu/drm/img-rogue/apollo/pdp_apollo.h | 88 + - drivers/gpu/drm/img-rogue/apollo/pdp_common.h | 107 + - drivers/gpu/drm/img-rogue/apollo/pdp_odin.c | 1230 +++ - drivers/gpu/drm/img-rogue/apollo/pdp_odin.h | 95 + - drivers/gpu/drm/img-rogue/apollo/pdp_plato.c | 339 + - drivers/gpu/drm/img-rogue/apollo/pdp_plato.h | 86 + - drivers/gpu/drm/img-rogue/apollo/pdp_regs.h | 75 + - drivers/gpu/drm/img-rogue/apollo/pfim_defs.h | 69 + - drivers/gpu/drm/img-rogue/apollo/pfim_regs.h | 265 + - drivers/gpu/drm/img-rogue/apollo/sysconfig.c | 1116 +++ - drivers/gpu/drm/img-rogue/apollo/sysinfo.h | 60 + - drivers/gpu/drm/img-rogue/apollo/tc_apollo.c | 1499 +++ - drivers/gpu/drm/img-rogue/apollo/tc_apollo.h | 77 + - drivers/gpu/drm/img-rogue/apollo/tc_clocks.h | 158 + - drivers/gpu/drm/img-rogue/apollo/tc_drv.c | 943 ++ - drivers/gpu/drm/img-rogue/apollo/tc_drv.h | 183 + - .../drm/img-rogue/apollo/tc_drv_internal.h | 204 + - drivers/gpu/drm/img-rogue/apollo/tc_odin.c | 2220 +++++ - drivers/gpu/drm/img-rogue/apollo/tc_odin.h | 82 + - .../img-rogue/apollo/tc_odin_common_regs.h | 105 + - .../gpu/drm/img-rogue/apollo/tcf_clk_ctrl.h | 1018 ++ - drivers/gpu/drm/img-rogue/apollo/tcf_pll.h | 311 + - .../drm/img-rogue/apollo/tcf_rgbpdp_regs.h | 559 ++ - drivers/gpu/drm/img-rogue/cache_km.c | 1630 ++++ - drivers/gpu/drm/img-rogue/cache_km.h | 151 + - drivers/gpu/drm/img-rogue/cache_ops.h | 61 + - .../gpu/drm/img-rogue/client_cache_bridge.h | 80 + - .../img-rogue/client_cache_direct_bridge.c | 112 + - .../client_devicememhistory_bridge.h | 111 + - .../client_devicememhistory_direct_bridge.c | 194 + - .../drm/img-rogue/client_htbuffer_bridge.h | 71 + - .../img-rogue/client_htbuffer_direct_bridge.c | 85 + - drivers/gpu/drm/img-rogue/client_mm_bridge.h | 265 + - .../drm/img-rogue/client_mm_direct_bridge.c | 804 ++ - .../gpu/drm/img-rogue/client_pvrtl_bridge.h | 93 + - .../img-rogue/client_pvrtl_direct_bridge.c | 175 + - drivers/gpu/drm/img-rogue/client_ri_bridge.h | 89 + - .../drm/img-rogue/client_ri_direct_bridge.c | 182 + - .../gpu/drm/img-rogue/client_sync_bridge.h | 102 + - .../drm/img-rogue/client_sync_direct_bridge.c | 262 + - .../img-rogue/client_synctracking_bridge.h | 68 + - .../client_synctracking_direct_bridge.c | 92 + - .../gpu/drm/img-rogue/common_cache_bridge.h | 126 + - drivers/gpu/drm/img-rogue/common_cmm_bridge.h | 114 + - .../common_devicememhistory_bridge.h | 185 + - drivers/gpu/drm/img-rogue/common_di_bridge.h | 153 + - .../gpu/drm/img-rogue/common_dmabuf_bridge.h | 150 + - .../drm/img-rogue/common_htbuffer_bridge.h | 104 + - drivers/gpu/drm/img-rogue/common_mm_bridge.h | 879 ++ - .../gpu/drm/img-rogue/common_pvrtl_bridge.h | 214 + - .../img-rogue/common_rgxbreakpoint_bridge.h | 149 + - .../gpu/drm/img-rogue/common_rgxcmp_bridge.h | 229 + - .../drm/img-rogue/common_rgxfwdbg_bridge.h | 200 + - .../drm/img-rogue/common_rgxhwperf_bridge.h | 172 + - .../drm/img-rogue/common_rgxkicksync_bridge.h | 143 + - .../img-rogue/common_rgxregconfig_bridge.h | 146 + - .../gpu/drm/img-rogue/common_rgxta3d_bridge.h | 404 + - .../img-rogue/common_rgxtimerquery_bridge.h | 112 + - .../gpu/drm/img-rogue/common_rgxtq2_bridge.h | 228 + - .../gpu/drm/img-rogue/common_rgxtq_bridge.h | 176 + - drivers/gpu/drm/img-rogue/common_ri_bridge.h | 225 + - .../gpu/drm/img-rogue/common_srvcore_bridge.h | 369 + - .../gpu/drm/img-rogue/common_sync_bridge.h | 254 + - .../img-rogue/common_synctracking_bridge.h | 97 + - drivers/gpu/drm/img-rogue/config_kernel.h | 163 + - drivers/gpu/drm/img-rogue/config_kernel.mk | 53 + - .../img-rogue/configs/rgxconfig_km_1.V.4.5.h | 80 + - .../configs/rgxconfig_km_36.V.104.182.h | 105 + - drivers/gpu/drm/img-rogue/connection_server.c | 491 + - drivers/gpu/drm/img-rogue/connection_server.h | 144 + - .../drm/img-rogue/cores/rgxcore_km_1.82.4.5.h | 69 + - .../cores/rgxcore_km_36.52.104.182.h | 74 + - drivers/gpu/drm/img-rogue/debug_common.c | 1646 ++++ - drivers/gpu/drm/img-rogue/debug_common.h | 55 + - drivers/gpu/drm/img-rogue/device.h | 540 ++ - drivers/gpu/drm/img-rogue/device_connection.h | 123 + - drivers/gpu/drm/img-rogue/devicemem.c | 2962 ++++++ - drivers/gpu/drm/img-rogue/devicemem.h | 730 ++ - drivers/gpu/drm/img-rogue/devicemem_heapcfg.c | 184 + - drivers/gpu/drm/img-rogue/devicemem_heapcfg.h | 184 + - .../drm/img-rogue/devicemem_history_server.c | 1962 ++++ - .../drm/img-rogue/devicemem_history_server.h | 157 + - drivers/gpu/drm/img-rogue/devicemem_pdump.h | 363 + - drivers/gpu/drm/img-rogue/devicemem_server.c | 1813 ++++ - drivers/gpu/drm/img-rogue/devicemem_server.h | 633 ++ - .../drm/img-rogue/devicemem_server_utils.h | 198 + - .../gpu/drm/img-rogue/devicemem_typedefs.h | 142 + - drivers/gpu/drm/img-rogue/devicemem_utils.c | 1259 +++ - drivers/gpu/drm/img-rogue/devicemem_utils.h | 605 ++ - drivers/gpu/drm/img-rogue/di_common.h | 236 + - drivers/gpu/drm/img-rogue/di_impl_brg.c | 889 ++ - drivers/gpu/drm/img-rogue/di_impl_brg.h | 92 + - .../gpu/drm/img-rogue/di_impl_brg_intern.h | 61 + - drivers/gpu/drm/img-rogue/di_server.c | 780 ++ - drivers/gpu/drm/img-rogue/di_server.h | 219 + - drivers/gpu/drm/img-rogue/dllist.h | 408 + - drivers/gpu/drm/img-rogue/dma_km.h | 83 + - drivers/gpu/drm/img-rogue/dma_support.c | 523 + - drivers/gpu/drm/img-rogue/dma_support.h | 117 + - drivers/gpu/drm/img-rogue/drm_netlink_gem.c | 143 + - drivers/gpu/drm/img-rogue/drm_netlink_gem.h | 61 + - drivers/gpu/drm/img-rogue/drm_nulldisp_drv.c | 2731 ++++++ - drivers/gpu/drm/img-rogue/drm_nulldisp_drv.h | 97 + - drivers/gpu/drm/img-rogue/drm_nulldisp_gem.c | 678 ++ - drivers/gpu/drm/img-rogue/drm_nulldisp_gem.h | 160 + - .../gpu/drm/img-rogue/drm_nulldisp_netlink.c | 710 ++ - .../gpu/drm/img-rogue/drm_nulldisp_netlink.h | 77 + - drivers/gpu/drm/img-rogue/env_connection.h | 92 + - drivers/gpu/drm/img-rogue/event.c | 514 + - drivers/gpu/drm/img-rogue/event.h | 54 + - drivers/gpu/drm/img-rogue/fwload.c | 255 + - drivers/gpu/drm/img-rogue/fwload.h | 158 + - drivers/gpu/drm/img-rogue/fwtrace_string.h | 52 + - drivers/gpu/drm/img-rogue/gpu_trace_point.h | 39 + - drivers/gpu/drm/img-rogue/handle.c | 2484 +++++ - drivers/gpu/drm/img-rogue/handle.h | 206 + - drivers/gpu/drm/img-rogue/handle_idr.c | 440 + - drivers/gpu/drm/img-rogue/handle_impl.h | 89 + - drivers/gpu/drm/img-rogue/handle_types.h | 88 + - drivers/gpu/drm/img-rogue/hash.c | 734 ++ - drivers/gpu/drm/img-rogue/hash.h | 247 + - drivers/gpu/drm/img-rogue/htb_debug.c | 1190 +++ - drivers/gpu/drm/img-rogue/htb_debug.h | 64 + - drivers/gpu/drm/img-rogue/htbserver.c | 857 ++ - drivers/gpu/drm/img-rogue/htbserver.h | 228 + - drivers/gpu/drm/img-rogue/htbuffer.c | 197 + - drivers/gpu/drm/img-rogue/htbuffer.h | 135 + - drivers/gpu/drm/img-rogue/htbuffer_init.h | 114 + - drivers/gpu/drm/img-rogue/htbuffer_sf.h | 241 + - drivers/gpu/drm/img-rogue/htbuffer_types.h | 118 + - drivers/gpu/drm/img-rogue/img_3dtypes.h | 248 + - drivers/gpu/drm/img-rogue/img_defs.h | 567 ++ - drivers/gpu/drm/img-rogue/img_elf.h | 111 + - drivers/gpu/drm/img-rogue/img_types.h | 324 + - drivers/gpu/drm/img-rogue/img_types_check.h | 58 + - drivers/gpu/drm/img-rogue/include/cache_ops.h | 61 + - .../img-rogue/include/devicemem_typedefs.h | 142 + - drivers/gpu/drm/img-rogue/include/dllist.h | 408 + - .../gpu/drm/img-rogue/include/drm/netlink.h | 147 + - .../drm/img-rogue/include/drm/nulldisp_drm.h | 105 + - .../gpu/drm/img-rogue/include/drm/pdp_drm.h | 105 + - .../gpu/drm/img-rogue/include/drm/pvr_drm.h | 146 + - .../gpu/drm/img-rogue/include/img_3dtypes.h | 248 + - drivers/gpu/drm/img-rogue/include/img_defs.h | 567 ++ - .../include/img_drm_fourcc_internal.h | 94 + - drivers/gpu/drm/img-rogue/include/img_elf.h | 111 + - drivers/gpu/drm/img-rogue/include/img_types.h | 324 + - .../gpu/drm/img-rogue/include/kernel_types.h | 137 + - .../gpu/drm/img-rogue/include/linux_sw_sync.h | 52 + - .../gpu/drm/img-rogue/include/lock_types.h | 92 + - drivers/gpu/drm/img-rogue/include/log2.h | 417 + - .../drm/img-rogue/include/multicore_defs.h | 53 + - .../gpu/drm/img-rogue/include/osfunc_common.h | 300 + - drivers/gpu/drm/img-rogue/include/pdumpdefs.h | 249 + - drivers/gpu/drm/img-rogue/include/pdumpdesc.h | 226 + - .../include/public/powervr/buffer_attribs.h | 193 + - .../include/public/powervr/img_drm_fourcc.h | 140 + - .../include/public/powervr/mem_types.h | 64 + - .../include/public/powervr/pvrsrv_sync_ext.h | 72 + - .../include/pvr_buffer_sync_shared.h | 57 + - drivers/gpu/drm/img-rogue/include/pvr_debug.h | 898 ++ - .../img-rogue/include/pvr_fd_sync_kernel.h | 64 + - .../drm/img-rogue/include/pvr_intrinsics.h | 70 + - drivers/gpu/drm/img-rogue/include/pvrmodule.h | 48 + - .../img-rogue/include/pvrsrv_device_types.h | 55 + - .../gpu/drm/img-rogue/include/pvrsrv_devvar.h | 291 + - .../gpu/drm/img-rogue/include/pvrsrv_error.h | 61 + - .../gpu/drm/img-rogue/include/pvrsrv_errors.h | 410 + - .../include/pvrsrv_memalloc_physheap.h | 170 + - .../img-rogue/include/pvrsrv_memallocflags.h | 969 ++ - .../include/pvrsrv_memallocflags_internal.h | 78 + - .../drm/img-rogue/include/pvrsrv_sync_km.h | 65 + - .../drm/img-rogue/include/pvrsrv_tlcommon.h | 260 + - .../drm/img-rogue/include/pvrsrv_tlstreams.h | 61 + - .../gpu/drm/img-rogue/include/pvrversion.h | 68 + - .../gpu/drm/img-rogue/include/rgx_common.h | 235 + - .../img-rogue/include/rgx_common_asserts.h | 73 + - .../drm/img-rogue/include/rgx_compat_bvnc.h | 140 + - .../include/rgx_fwif_resetframework.h | 70 + - .../gpu/drm/img-rogue/include/rgx_fwif_sf.h | 931 ++ - .../drm/img-rogue/include/rgx_heap_firmware.h | 120 + - .../drm/img-rogue/include/rgx_hwperf_common.h | 482 + - drivers/gpu/drm/img-rogue/include/rgx_meta.h | 385 + - drivers/gpu/drm/img-rogue/include/rgx_mips.h | 374 + - drivers/gpu/drm/img-rogue/include/rgx_riscv.h | 250 + - .../drm/img-rogue/include/rgxfw_log_helper.h | 79 + - .../gpu/drm/img-rogue/include/ri_typedefs.h | 52 + - .../include/rogue/rgx_fwif_alignchecks.h | 192 + - .../img-rogue/include/rogue/rgx_fwif_hwperf.h | 252 + - .../drm/img-rogue/include/rogue/rgx_fwif_km.h | 2341 +++++ - .../img-rogue/include/rogue/rgx_fwif_shared.h | 335 + - .../drm/img-rogue/include/rogue/rgx_heaps.h | 68 + - .../drm/img-rogue/include/rogue/rgx_hwperf.h | 1607 ++++ - .../drm/img-rogue/include/rogue/rgx_options.h | 304 + - .../img-rogue/include/rogue/rgxheapconfig.h | 290 + - .../include/rogue/rgxheapconfig_65273.h | 124 + - .../include/rogue/system/rgx_tc/tc_clocks.h | 158 + - .../gpu/drm/img-rogue/include/services_km.h | 180 + - .../gpu/drm/img-rogue/include/servicesext.h | 156 + - .../include/sync_checkpoint_external.h | 83 + - .../img-rogue/include/sync_prim_internal.h | 84 + - .../include/system/rgx_tc/apollo_regs.h | 108 + - .../include/system/rgx_tc/bonnie_tcf.h | 68 + - .../include/system/rgx_tc/odin_defs.h | 326 + - .../include/system/rgx_tc/odin_pdp_regs.h | 8540 ++++++++++++++++ - .../include/system/rgx_tc/odin_regs.h | 1026 ++ - .../include/system/rgx_tc/orion_defs.h | 183 + - .../include/system/rgx_tc/orion_regs.h | 439 + - .../include/system/rgx_tc/pdp_regs.h | 75 + - .../include/system/rgx_tc/pfim_defs.h | 69 + - .../include/system/rgx_tc/pfim_regs.h | 265 + - .../include/system/rgx_tc/tcf_clk_ctrl.h | 1018 ++ - .../img-rogue/include/system/rgx_tc/tcf_pll.h | 311 + - .../include/system/rgx_tc/tcf_rgbpdp_regs.h | 559 ++ - .../img-rogue/include/virt_validation_defs.h | 63 + - .../include/volcanic/rgx_fwif_alignchecks.h | 191 + - .../include/volcanic/rgx_fwif_hwperf.h | 125 + - .../img-rogue/include/volcanic/rgx_fwif_km.h | 2331 +++++ - .../include/volcanic/rgx_fwif_shared.h | 376 + - .../img-rogue/include/volcanic/rgx_heaps.h | 65 + - .../img-rogue/include/volcanic/rgx_hwperf.h | 1424 +++ - .../include/volcanic/rgx_hwperf_table.h | 511 + - .../img-rogue/include/volcanic/rgx_options.h | 294 + - .../include/volcanic/rgxheapconfig.h | 278 + - .../volcanic/system/rgx_tc/tc_clocks.h | 101 + - drivers/gpu/drm/img-rogue/info_page.h | 99 + - drivers/gpu/drm/img-rogue/info_page_client.h | 89 + - drivers/gpu/drm/img-rogue/info_page_defs.h | 91 + - drivers/gpu/drm/img-rogue/info_page_km.c | 138 + - drivers/gpu/drm/img-rogue/interrupt_support.c | 151 + - drivers/gpu/drm/img-rogue/interrupt_support.h | 103 + - .../gpu/drm/img-rogue/kernel_compatibility.h | 521 + - .../img-rogue/kernel_config_compatibility.h | 54 + - drivers/gpu/drm/img-rogue/kernel_nospec.h | 71 + - drivers/gpu/drm/img-rogue/kernel_types.h | 137 + - .../gpu/drm/img-rogue/km/rgx_bvnc_defs_km.h | 377 + - .../gpu/drm/img-rogue/km/rgx_bvnc_table_km.h | 462 + - drivers/gpu/drm/img-rogue/km/rgx_cr_defs_km.h | 8077 ++++++++++++++++ - drivers/gpu/drm/img-rogue/km/rgxdefs_km.h | 338 + - drivers/gpu/drm/img-rogue/km/rgxmhdefs_km.h | 286 + - drivers/gpu/drm/img-rogue/km/rgxmmudefs_km.h | 216 + - drivers/gpu/drm/img-rogue/km_apphint.c | 1751 ++++ - drivers/gpu/drm/img-rogue/km_apphint.h | 99 + - drivers/gpu/drm/img-rogue/km_apphint_defs.h | 160 + - .../drm/img-rogue/km_apphint_defs_common.h | 280 + - drivers/gpu/drm/img-rogue/linkage.h | 52 + - drivers/gpu/drm/img-rogue/linux_sw_sync.h | 52 + - drivers/gpu/drm/img-rogue/lists.c | 60 + - drivers/gpu/drm/img-rogue/lists.h | 367 + - drivers/gpu/drm/img-rogue/lock.h | 431 + - drivers/gpu/drm/img-rogue/lock_types.h | 92 + - drivers/gpu/drm/img-rogue/log2.h | 417 + - drivers/gpu/drm/img-rogue/mem_utils.c | 449 + - drivers/gpu/drm/img-rogue/mmu_common.c | 4464 +++++++++ - drivers/gpu/drm/img-rogue/mmu_common.h | 792 ++ - drivers/gpu/drm/img-rogue/module_common.c | 730 ++ - drivers/gpu/drm/img-rogue/module_common.h | 101 + - drivers/gpu/drm/img-rogue/multicore_defs.h | 53 + - drivers/gpu/drm/img-rogue/opaque_types.h | 56 + - drivers/gpu/drm/img-rogue/os_cpu_cache.h | 69 + - drivers/gpu/drm/img-rogue/os_srvinit_param.h | 328 + - .../gpu/drm/img-rogue/osconnection_server.c | 157 + - .../gpu/drm/img-rogue/osconnection_server.h | 133 + - drivers/gpu/drm/img-rogue/osdi_impl.h | 205 + - drivers/gpu/drm/img-rogue/osfunc.c | 2648 +++++ - drivers/gpu/drm/img-rogue/osfunc.h | 1690 ++++ - drivers/gpu/drm/img-rogue/osfunc_arm.c | 151 + - drivers/gpu/drm/img-rogue/osfunc_arm64.c | 290 + - drivers/gpu/drm/img-rogue/osfunc_common.h | 300 + - drivers/gpu/drm/img-rogue/osfunc_riscv.c | 428 + - drivers/gpu/drm/img-rogue/osfunc_x86.c | 134 + - drivers/gpu/drm/img-rogue/oskm_apphint.h | 186 + - drivers/gpu/drm/img-rogue/osmmap.h | 115 + - drivers/gpu/drm/img-rogue/osmmap_stub.c | 146 + - drivers/gpu/drm/img-rogue/ospvr_gputrace.h | 167 + - drivers/gpu/drm/img-rogue/pci_support.c | 726 ++ - drivers/gpu/drm/img-rogue/pci_support.h | 99 + - drivers/gpu/drm/img-rogue/pdp/drm_pdp.mk | 13 + - drivers/gpu/drm/img-rogue/pdp2_mmu_regs.h | 764 ++ - drivers/gpu/drm/img-rogue/pdp2_regs.h | 8565 +++++++++++++++++ - drivers/gpu/drm/img-rogue/pdp_drm.h | 105 + - drivers/gpu/drm/img-rogue/pdump.h | 238 + - drivers/gpu/drm/img-rogue/pdump_km.h | 1136 +++ - drivers/gpu/drm/img-rogue/pdump_mmu.h | 180 + - drivers/gpu/drm/img-rogue/pdump_physmem.h | 257 + - .../gpu/drm/img-rogue/pdump_symbolicaddr.h | 55 + - drivers/gpu/drm/img-rogue/pdumpdefs.h | 249 + - drivers/gpu/drm/img-rogue/pdumpdesc.h | 226 + - drivers/gpu/drm/img-rogue/physheap.c | 1184 +++ - drivers/gpu/drm/img-rogue/physheap.h | 497 + - drivers/gpu/drm/img-rogue/physheap_config.h | 119 + - drivers/gpu/drm/img-rogue/physmem.c | 839 ++ - drivers/gpu/drm/img-rogue/physmem.h | 321 + - drivers/gpu/drm/img-rogue/physmem_dmabuf.c | 1302 +++ - drivers/gpu/drm/img-rogue/physmem_dmabuf.h | 124 + - drivers/gpu/drm/img-rogue/physmem_hostmem.c | 206 + - drivers/gpu/drm/img-rogue/physmem_hostmem.h | 65 + - drivers/gpu/drm/img-rogue/physmem_lma.c | 2003 ++++ - drivers/gpu/drm/img-rogue/physmem_lma.h | 93 + - drivers/gpu/drm/img-rogue/physmem_osmem.h | 142 + - .../gpu/drm/img-rogue/physmem_osmem_linux.c | 3952 ++++++++ - .../gpu/drm/img-rogue/physmem_osmem_linux.h | 49 + - drivers/gpu/drm/img-rogue/physmem_test.c | 710 ++ - drivers/gpu/drm/img-rogue/physmem_test.h | 51 + - drivers/gpu/drm/img-rogue/plato_drv.h | 416 + - drivers/gpu/drm/img-rogue/pmr.c | 3697 +++++++ - drivers/gpu/drm/img-rogue/pmr.h | 1023 ++ - drivers/gpu/drm/img-rogue/pmr_impl.h | 539 ++ - drivers/gpu/drm/img-rogue/pmr_os.c | 619 ++ - drivers/gpu/drm/img-rogue/pmr_os.h | 62 + - drivers/gpu/drm/img-rogue/power.c | 929 ++ - drivers/gpu/drm/img-rogue/power.h | 430 + - .../drm/img-rogue/powervr/buffer_attribs.h | 193 + - .../drm/img-rogue/powervr/img_drm_fourcc.h | 140 + - drivers/gpu/drm/img-rogue/powervr/mem_types.h | 64 + - .../drm/img-rogue/powervr/pvrsrv_sync_ext.h | 72 + - drivers/gpu/drm/img-rogue/private_data.h | 59 + - drivers/gpu/drm/img-rogue/proc_stats.h | 135 + - drivers/gpu/drm/img-rogue/process_stats.c | 3358 +++++++ - drivers/gpu/drm/img-rogue/process_stats.h | 223 + - drivers/gpu/drm/img-rogue/pvr_bridge.h | 457 + - drivers/gpu/drm/img-rogue/pvr_bridge_k.c | 582 ++ - drivers/gpu/drm/img-rogue/pvr_bridge_k.h | 103 + - drivers/gpu/drm/img-rogue/pvr_buffer_sync.c | 646 ++ - drivers/gpu/drm/img-rogue/pvr_buffer_sync.h | 125 + - .../drm/img-rogue/pvr_buffer_sync_shared.h | 57 + - .../gpu/drm/img-rogue/pvr_counting_timeline.c | 308 + - .../gpu/drm/img-rogue/pvr_counting_timeline.h | 68 + - drivers/gpu/drm/img-rogue/pvr_debug.c | 481 + - drivers/gpu/drm/img-rogue/pvr_debug.h | 898 ++ - drivers/gpu/drm/img-rogue/pvr_debugfs.c | 623 ++ - drivers/gpu/drm/img-rogue/pvr_debugfs.h | 50 + - drivers/gpu/drm/img-rogue/pvr_dicommon.h | 59 + - drivers/gpu/drm/img-rogue/pvr_dma_resv.h | 80 + - drivers/gpu/drm/img-rogue/pvr_drm.c | 336 + - drivers/gpu/drm/img-rogue/pvr_drm.h | 146 + - drivers/gpu/drm/img-rogue/pvr_drv.h | 106 + - .../gpu/drm/img-rogue/pvr_fd_sync_kernel.h | 64 + - drivers/gpu/drm/img-rogue/pvr_fence.c | 1149 +++ - drivers/gpu/drm/img-rogue/pvr_fence.h | 248 + - drivers/gpu/drm/img-rogue/pvr_fence_trace.h | 225 + - drivers/gpu/drm/img-rogue/pvr_gputrace.c | 1281 +++ - drivers/gpu/drm/img-rogue/pvr_intrinsics.h | 70 + - drivers/gpu/drm/img-rogue/pvr_ion_stats.h | 80 + - drivers/gpu/drm/img-rogue/pvr_linux_fence.h | 103 + - drivers/gpu/drm/img-rogue/pvr_notifier.c | 647 ++ - drivers/gpu/drm/img-rogue/pvr_notifier.h | 326 + - drivers/gpu/drm/img-rogue/pvr_platform_drv.c | 326 + - drivers/gpu/drm/img-rogue/pvr_procfs.h | 50 + - drivers/gpu/drm/img-rogue/pvr_ricommon.h | 68 + - drivers/gpu/drm/img-rogue/pvr_sw_fence.c | 199 + - drivers/gpu/drm/img-rogue/pvr_sw_fence.h | 60 + - drivers/gpu/drm/img-rogue/pvr_sync.h | 120 + - drivers/gpu/drm/img-rogue/pvr_sync_api.h | 61 + - drivers/gpu/drm/img-rogue/pvr_sync_file.c | 1094 +++ - .../gpu/drm/img-rogue/pvr_sync_ioctl_common.c | 277 + - .../gpu/drm/img-rogue/pvr_sync_ioctl_common.h | 71 + - .../gpu/drm/img-rogue/pvr_sync_ioctl_drm.c | 168 + - .../gpu/drm/img-rogue/pvr_sync_ioctl_drm.h | 62 + - drivers/gpu/drm/img-rogue/pvr_uaccess.h | 99 + - drivers/gpu/drm/img-rogue/pvr_vmap.h | 83 + - drivers/gpu/drm/img-rogue/pvrmodule.h | 48 + - drivers/gpu/drm/img-rogue/pvrsrv.c | 3028 ++++++ - drivers/gpu/drm/img-rogue/pvrsrv.h | 542 ++ - drivers/gpu/drm/img-rogue/pvrsrv_apphint.h | 71 + - .../gpu/drm/img-rogue/pvrsrv_bridge_init.c | 385 + - .../gpu/drm/img-rogue/pvrsrv_bridge_init.h | 53 + - drivers/gpu/drm/img-rogue/pvrsrv_cleanup.h | 177 + - drivers/gpu/drm/img-rogue/pvrsrv_device.h | 401 + - .../gpu/drm/img-rogue/pvrsrv_device_types.h | 55 + - drivers/gpu/drm/img-rogue/pvrsrv_devvar.h | 291 + - drivers/gpu/drm/img-rogue/pvrsrv_error.c | 61 + - drivers/gpu/drm/img-rogue/pvrsrv_error.h | 61 + - drivers/gpu/drm/img-rogue/pvrsrv_errors.h | 410 + - .../gpu/drm/img-rogue/pvrsrv_firmware_boot.h | 87 + - .../drm/img-rogue/pvrsrv_memalloc_physheap.h | 170 + - .../gpu/drm/img-rogue/pvrsrv_memallocflags.h | 969 ++ - .../img-rogue/pvrsrv_memallocflags_internal.h | 78 + - drivers/gpu/drm/img-rogue/pvrsrv_pool.c | 260 + - drivers/gpu/drm/img-rogue/pvrsrv_pool.h | 135 + - drivers/gpu/drm/img-rogue/pvrsrv_sync_km.h | 65 + - .../gpu/drm/img-rogue/pvrsrv_sync_server.h | 278 + - drivers/gpu/drm/img-rogue/pvrsrv_tlcommon.h | 260 + - drivers/gpu/drm/img-rogue/pvrsrv_tlstreams.h | 61 + - drivers/gpu/drm/img-rogue/pvrsrvkm.mk | 148 + - drivers/gpu/drm/img-rogue/pvrversion.h | 68 + - drivers/gpu/drm/img-rogue/ra.c | 2166 +++++ - drivers/gpu/drm/img-rogue/ra.h | 386 + - drivers/gpu/drm/img-rogue/rgx_bridge.h | 243 + - drivers/gpu/drm/img-rogue/rgx_bridge_init.c | 111 + - drivers/gpu/drm/img-rogue/rgx_bridge_init.h | 55 + - drivers/gpu/drm/img-rogue/rgx_common.h | 235 + - .../gpu/drm/img-rogue/rgx_common_asserts.h | 73 + - drivers/gpu/drm/img-rogue/rgx_compat_bvnc.h | 140 + - drivers/gpu/drm/img-rogue/rgx_fw_info.h | 135 + - .../gpu/drm/img-rogue/rgx_fwif_alignchecks.h | 192 + - drivers/gpu/drm/img-rogue/rgx_fwif_hwperf.h | 252 + - drivers/gpu/drm/img-rogue/rgx_fwif_km.h | 2341 +++++ - .../drm/img-rogue/rgx_fwif_resetframework.h | 70 + - drivers/gpu/drm/img-rogue/rgx_fwif_sf.h | 931 ++ - drivers/gpu/drm/img-rogue/rgx_fwif_shared.h | 335 + - drivers/gpu/drm/img-rogue/rgx_heap_firmware.h | 120 + - drivers/gpu/drm/img-rogue/rgx_heaps.h | 68 + - drivers/gpu/drm/img-rogue/rgx_hwperf.h | 1607 ++++ - drivers/gpu/drm/img-rogue/rgx_hwperf_common.h | 482 + - drivers/gpu/drm/img-rogue/rgx_hwperf_table.c | 635 ++ - drivers/gpu/drm/img-rogue/rgx_hwperf_table.h | 116 + - drivers/gpu/drm/img-rogue/rgx_memallocflags.h | 58 + - drivers/gpu/drm/img-rogue/rgx_meta.h | 385 + - drivers/gpu/drm/img-rogue/rgx_mips.h | 374 + - drivers/gpu/drm/img-rogue/rgx_options.h | 304 + - drivers/gpu/drm/img-rogue/rgx_pdump_panics.h | 64 + - drivers/gpu/drm/img-rogue/rgx_riscv.h | 250 + - drivers/gpu/drm/img-rogue/rgx_tq_shared.h | 63 + - drivers/gpu/drm/img-rogue/rgxapi_km.h | 336 + - drivers/gpu/drm/img-rogue/rgxbreakpoint.c | 290 + - drivers/gpu/drm/img-rogue/rgxbreakpoint.h | 141 + - drivers/gpu/drm/img-rogue/rgxbvnc.c | 852 ++ - drivers/gpu/drm/img-rogue/rgxbvnc.h | 90 + - drivers/gpu/drm/img-rogue/rgxccb.c | 2803 ++++++ - drivers/gpu/drm/img-rogue/rgxccb.h | 356 + - drivers/gpu/drm/img-rogue/rgxcompute.c | 1324 +++ - drivers/gpu/drm/img-rogue/rgxcompute.h | 173 + - drivers/gpu/drm/img-rogue/rgxdebug.c | 5792 +++++++++++ - drivers/gpu/drm/img-rogue/rgxdebug.h | 229 + - drivers/gpu/drm/img-rogue/rgxdevice.h | 828 ++ - drivers/gpu/drm/img-rogue/rgxfw_log_helper.h | 79 + - drivers/gpu/drm/img-rogue/rgxfwdbg.c | 282 + - drivers/gpu/drm/img-rogue/rgxfwdbg.h | 113 + - drivers/gpu/drm/img-rogue/rgxfwimageutils.c | 1082 +++ - drivers/gpu/drm/img-rogue/rgxfwimageutils.h | 223 + - .../gpu/drm/img-rogue/rgxfwtrace_strings.c | 56 + - drivers/gpu/drm/img-rogue/rgxfwutils.c | 7825 +++++++++++++++ - drivers/gpu/drm/img-rogue/rgxfwutils.h | 1362 +++ - drivers/gpu/drm/img-rogue/rgxheapconfig.h | 290 + - .../gpu/drm/img-rogue/rgxheapconfig_65273.h | 124 + - drivers/gpu/drm/img-rogue/rgxhwperf.c | 694 ++ - drivers/gpu/drm/img-rogue/rgxhwperf.h | 74 + - drivers/gpu/drm/img-rogue/rgxhwperf_common.c | 3715 +++++++ - drivers/gpu/drm/img-rogue/rgxhwperf_common.h | 512 + - drivers/gpu/drm/img-rogue/rgxinit.c | 5158 ++++++++++ - drivers/gpu/drm/img-rogue/rgxinit.h | 281 + - drivers/gpu/drm/img-rogue/rgxkicksync.c | 794 ++ - drivers/gpu/drm/img-rogue/rgxkicksync.h | 128 + - drivers/gpu/drm/img-rogue/rgxlayer.h | 812 ++ - drivers/gpu/drm/img-rogue/rgxlayer_impl.c | 1318 +++ - drivers/gpu/drm/img-rogue/rgxlayer_impl.h | 67 + - drivers/gpu/drm/img-rogue/rgxmem.c | 947 ++ - drivers/gpu/drm/img-rogue/rgxmem.h | 147 + - drivers/gpu/drm/img-rogue/rgxmipsmmuinit.c | 1045 ++ - drivers/gpu/drm/img-rogue/rgxmipsmmuinit.h | 97 + - drivers/gpu/drm/img-rogue/rgxmmuinit.c | 1079 +++ - drivers/gpu/drm/img-rogue/rgxmmuinit.h | 60 + - drivers/gpu/drm/img-rogue/rgxmulticore.c | 224 + - drivers/gpu/drm/img-rogue/rgxmulticore.h | 54 + - drivers/gpu/drm/img-rogue/rgxpower.c | 1628 ++++ - drivers/gpu/drm/img-rogue/rgxpower.h | 286 + - drivers/gpu/drm/img-rogue/rgxregconfig.c | 319 + - drivers/gpu/drm/img-rogue/rgxregconfig.h | 130 + - drivers/gpu/drm/img-rogue/rgxshader.c | 302 + - drivers/gpu/drm/img-rogue/rgxshader.h | 83 + - drivers/gpu/drm/img-rogue/rgxsrvinit.c | 1657 ++++ - drivers/gpu/drm/img-rogue/rgxstartstop.c | 1331 +++ - drivers/gpu/drm/img-rogue/rgxstartstop.h | 84 + - drivers/gpu/drm/img-rogue/rgxsyncutils.c | 184 + - drivers/gpu/drm/img-rogue/rgxsyncutils.h | 76 + - drivers/gpu/drm/img-rogue/rgxta3d.c | 5426 +++++++++++ - drivers/gpu/drm/img-rogue/rgxta3d.h | 502 + - drivers/gpu/drm/img-rogue/rgxtdmtransfer.c | 1329 +++ - drivers/gpu/drm/img-rogue/rgxtdmtransfer.h | 132 + - drivers/gpu/drm/img-rogue/rgxtimecorr.c | 648 ++ - drivers/gpu/drm/img-rogue/rgxtimecorr.h | 272 + - drivers/gpu/drm/img-rogue/rgxtimerquery.c | 244 + - drivers/gpu/drm/img-rogue/rgxtimerquery.h | 123 + - drivers/gpu/drm/img-rogue/rgxtransfer.c | 1805 ++++ - drivers/gpu/drm/img-rogue/rgxtransfer.h | 153 + - .../gpu/drm/img-rogue/rgxtransfer_shader.h | 61 + - drivers/gpu/drm/img-rogue/rgxutils.c | 221 + - drivers/gpu/drm/img-rogue/rgxutils.h | 185 + - drivers/gpu/drm/img-rogue/ri_server.c | 2123 ++++ - drivers/gpu/drm/img-rogue/ri_server.h | 106 + - drivers/gpu/drm/img-rogue/ri_typedefs.h | 52 + - .../gpu/drm/img-rogue/rogue_trace_events.h | 543 ++ - .../gpu/drm/img-rogue/server_cache_bridge.c | 457 + - drivers/gpu/drm/img-rogue/server_cmm_bridge.c | 409 + - .../server_devicememhistory_bridge.c | 846 ++ - drivers/gpu/drm/img-rogue/server_di_bridge.c | 639 ++ - .../gpu/drm/img-rogue/server_dmabuf_bridge.c | 694 ++ - .../drm/img-rogue/server_htbuffer_bridge.c | 351 + - drivers/gpu/drm/img-rogue/server_mm_bridge.c | 3802 ++++++++ - .../gpu/drm/img-rogue/server_pvrtl_bridge.c | 836 ++ - .../img-rogue/server_rgxbreakpoint_bridge.c | 370 + - .../gpu/drm/img-rogue/server_rgxcmp_bridge.c | 1171 +++ - .../drm/img-rogue/server_rgxfwdbg_bridge.c | 305 + - .../drm/img-rogue/server_rgxhwperf_bridge.c | 651 ++ - .../drm/img-rogue/server_rgxkicksync_bridge.c | 579 ++ - .../img-rogue/server_rgxregconfig_bridge.c | 239 + - .../gpu/drm/img-rogue/server_rgxta3d_bridge.c | 2406 +++++ - .../img-rogue/server_rgxtimerquery_bridge.c | 167 + - .../gpu/drm/img-rogue/server_rgxtq2_bridge.c | 1210 +++ - .../gpu/drm/img-rogue/server_rgxtq_bridge.c | 1212 +++ - drivers/gpu/drm/img-rogue/server_ri_bridge.c | 760 ++ - .../gpu/drm/img-rogue/server_srvcore_bridge.c | 1072 +++ - .../gpu/drm/img-rogue/server_sync_bridge.c | 746 ++ - .../img-rogue/server_synctracking_bridge.c | 333 + - .../drm/img-rogue/services_kernel_client.h | 291 + - drivers/gpu/drm/img-rogue/services_km.h | 180 + - drivers/gpu/drm/img-rogue/servicesext.h | 156 + - drivers/gpu/drm/img-rogue/sofunc_pvr.h | 94 + - drivers/gpu/drm/img-rogue/srvcore.c | 1450 +++ - drivers/gpu/drm/img-rogue/srvcore.h | 229 + - drivers/gpu/drm/img-rogue/srvinit.h | 68 + - drivers/gpu/drm/img-rogue/srvkm.h | 145 + - drivers/gpu/drm/img-rogue/sync.c | 907 ++ - drivers/gpu/drm/img-rogue/sync.h | 292 + - drivers/gpu/drm/img-rogue/sync_checkpoint.c | 2981 ++++++ - drivers/gpu/drm/img-rogue/sync_checkpoint.h | 666 ++ - .../drm/img-rogue/sync_checkpoint_external.h | 83 + - .../gpu/drm/img-rogue/sync_checkpoint_init.h | 82 + - .../drm/img-rogue/sync_checkpoint_internal.h | 288 + - .../gpu/drm/img-rogue/sync_fallback_server.h | 204 + - drivers/gpu/drm/img-rogue/sync_internal.h | 127 + - .../gpu/drm/img-rogue/sync_prim_internal.h | 84 + - drivers/gpu/drm/img-rogue/sync_server.c | 1223 +++ - drivers/gpu/drm/img-rogue/sync_server.h | 249 + - drivers/gpu/drm/img-rogue/syscommon.h | 146 + - drivers/gpu/drm/img-rogue/sysconfig.c | 462 + - drivers/gpu/drm/img-rogue/sysconfig.h | 59 + - drivers/gpu/drm/img-rogue/sysconfig_cmn.c | 132 + - drivers/gpu/drm/img-rogue/sysinfo.h | 58 + - drivers/gpu/drm/img-rogue/sysvalidation.h | 62 + - drivers/gpu/drm/img-rogue/tlclient.c | 500 + - drivers/gpu/drm/img-rogue/tlclient.h | 257 + - drivers/gpu/drm/img-rogue/tlintern.c | 473 + - drivers/gpu/drm/img-rogue/tlintern.h | 345 + - drivers/gpu/drm/img-rogue/tlserver.c | 747 ++ - drivers/gpu/drm/img-rogue/tlserver.h | 97 + - drivers/gpu/drm/img-rogue/tlstream.c | 1625 ++++ - drivers/gpu/drm/img-rogue/tlstream.h | 600 ++ - drivers/gpu/drm/img-rogue/trace_events.c | 265 + - drivers/gpu/drm/img-rogue/trace_events.h | 198 + - .../gpu/drm/img-rogue/uniq_key_splay_tree.c | 280 + - .../gpu/drm/img-rogue/uniq_key_splay_tree.h | 90 + - drivers/gpu/drm/img-rogue/vmm_impl.h | 186 + - drivers/gpu/drm/img-rogue/vmm_pvz_client.c | 138 + - drivers/gpu/drm/img-rogue/vmm_pvz_client.h | 77 + - drivers/gpu/drm/img-rogue/vmm_pvz_common.h | 65 + - drivers/gpu/drm/img-rogue/vmm_pvz_server.c | 245 + - drivers/gpu/drm/img-rogue/vmm_pvz_server.h | 121 + - drivers/gpu/drm/img-rogue/vmm_type_stub.c | 119 + - drivers/gpu/drm/img-rogue/vz_vm.h | 61 + - drivers/gpu/drm/img-rogue/vz_vmm_pvz.c | 183 + - drivers/gpu/drm/img-rogue/vz_vmm_pvz.h | 79 + - drivers/gpu/drm/img-rogue/vz_vmm_vm.c | 221 + - drivers/gpu/drm/img-rogue/xuantie_sys.c | 521 + - drivers/gpu/drm/img-rogue/xuantie_sys.h | 75 + - .../gpu/drm/panel/panel-jadard-jd9365da-h3.c | 37 +- - drivers/gpu/drm/radeon/radeon_irq_kms.c | 2 + - drivers/gpu/drm/ttm/ttm_bo_util.c | 5 +- - drivers/gpu/drm/ttm/ttm_module.c | 3 +- - drivers/gpu/drm/ttm/ttm_resource.c | 7 +- - drivers/gpu/drm/ttm/ttm_tt.c | 2 +- - drivers/gpu/drm/verisilicon/Kconfig | 62 + - drivers/gpu/drm/verisilicon/Makefile | 18 + - drivers/gpu/drm/verisilicon/dw_hdmi-th1520.c | 213 + - drivers/gpu/drm/verisilicon/dw_hdmi_th1520.h | 7 + - .../gpu/drm/verisilicon/dw_hdmi_tx_phy_gen2.h | 717 ++ - drivers/gpu/drm/verisilicon/dw_mipi_dsi.c | 1164 +++ - drivers/gpu/drm/verisilicon/dw_mipi_dsi.h | 10 + - drivers/gpu/drm/verisilicon/vs_crtc.c | 460 + - drivers/gpu/drm/verisilicon/vs_crtc.h | 78 + - drivers/gpu/drm/verisilicon/vs_dc.c | 1361 +++ - drivers/gpu/drm/verisilicon/vs_dc.h | 60 + - drivers/gpu/drm/verisilicon/vs_dc_dec.c | 386 + - drivers/gpu/drm/verisilicon/vs_dc_dec.h | 106 + - drivers/gpu/drm/verisilicon/vs_dc_hw.c | 2292 +++++ - drivers/gpu/drm/verisilicon/vs_dc_hw.h | 578 ++ - drivers/gpu/drm/verisilicon/vs_dc_mmu.c | 707 ++ - drivers/gpu/drm/verisilicon/vs_dc_mmu.h | 98 + - drivers/gpu/drm/verisilicon/vs_drv.c | 709 ++ - drivers/gpu/drm/verisilicon/vs_drv.h | 64 + - drivers/gpu/drm/verisilicon/vs_fb.c | 178 + - drivers/gpu/drm/verisilicon/vs_fb.h | 13 + - drivers/gpu/drm/verisilicon/vs_gem.c | 555 ++ - drivers/gpu/drm/verisilicon/vs_gem.h | 71 + - drivers/gpu/drm/verisilicon/vs_plane.c | 404 + - drivers/gpu/drm/verisilicon/vs_plane.h | 76 + - drivers/gpu/drm/verisilicon/vs_simple_enc.c | 292 + - drivers/gpu/drm/verisilicon/vs_simple_enc.h | 27 + - drivers/gpu/drm/verisilicon/vs_type.h | 70 + - drivers/gpu/drm/verisilicon/vs_virtual.c | 359 + - drivers/gpu/drm/verisilicon/vs_virtual.h | 37 + - drivers/hwmon/mr75203.c | 28 + - drivers/i2c/busses/i2c-designware-common.c | 27 + - drivers/i2c/busses/i2c-designware-core.h | 2 + - drivers/i2c/busses/i2c-designware-platdrv.c | 2 + - drivers/iio/adc/Kconfig | 13 + - drivers/iio/adc/Makefile | 1 + - drivers/iio/adc/th1520-adc.c | 573 ++ - drivers/iio/adc/th1520-adc.h | 192 + - drivers/mailbox/Kconfig | 8 + - drivers/mailbox/Makefile | 2 + - drivers/mailbox/th1520-mailbox.c | 614 ++ - drivers/mmc/host/Kconfig | 14 + - drivers/mmc/host/Makefile | 1 + - drivers/mmc/host/sdhci-of-dwcmshc.c | 522 + - drivers/mmc/host/sdhci-sophgo.c | 619 ++ - drivers/mmc/host/sdhci-sophgo.h | 121 + - drivers/mmc/host/sdhci.c | 12 +- - drivers/mmc/host/sdhci.h | 4 + - drivers/mtd/spi-nor/controllers/Kconfig | 11 + - drivers/mtd/spi-nor/controllers/Makefile | 1 + - .../mtd/spi-nor/controllers/sophgo-spifmc.c | 445 + - drivers/mtd/spi-nor/gigadevice.c | 14 + - drivers/net/ethernet/intel/i40e/i40e_common.c | 3 +- - drivers/net/ethernet/intel/ixgbe/ixgbe_type.h | 2 +- - drivers/net/ethernet/stmicro/stmmac/Kconfig | 18 + - drivers/net/ethernet/stmicro/stmmac/Makefile | 2 + - .../ethernet/stmicro/stmmac/dwmac-sophgo.c | 268 + - .../ethernet/stmicro/stmmac/dwmac-xuantie.c | 584 ++ - .../net/ethernet/stmicro/stmmac/dwmac_lib.c | 2 +- - drivers/pci/controller/cadence/Kconfig | 11 + - drivers/pci/controller/cadence/Makefile | 1 + - .../controller/cadence/pcie-cadence-sophgo.c | 973 ++ - .../controller/cadence/pcie-cadence-sophgo.h | 17 + - drivers/pci/msi/msi.c | 97 +- - drivers/pci/pcie/portdrv.c | 2 +- - drivers/phy/Kconfig | 1 + - drivers/phy/Makefile | 3 +- - drivers/phy/synopsys/Kconfig | 13 + - drivers/phy/synopsys/Makefile | 3 + - drivers/phy/synopsys/phy-dw-mipi-dphy.c | 824 ++ - drivers/pinctrl/Kconfig | 11 +- - drivers/pinctrl/Makefile | 2 + - drivers/pinctrl/pinctrl-th1520.c | 1037 ++ - drivers/pinctrl/sophgo/Makefile | 2 + - drivers/pinctrl/sophgo/pinctrl-mango.c | 453 + - drivers/pinctrl/sophgo/pinctrl-sophgo.c | 292 + - drivers/pinctrl/sophgo/pinctrl-sophgo.h | 70 + - drivers/pwm/Kconfig | 11 + - drivers/pwm/Makefile | 2 + - drivers/pwm/pwm-sophgo.c | 276 + - drivers/pwm/pwm-xuantie.c | 269 + - drivers/regulator/Kconfig | 10 + - drivers/regulator/Makefile | 1 + - drivers/regulator/th1520-aon-regulator.c | 770 ++ - drivers/reset/Kconfig | 10 + - drivers/reset/Makefile | 2 + - drivers/reset/reset-sophgo.c | 163 + - drivers/reset/reset-th1520.c | 170 + - drivers/rpmsg/Kconfig | 4 + - drivers/rpmsg/Makefile | 1 + - drivers/rpmsg/th1520_rpmsg.c | 958 ++ - drivers/rtc/Kconfig | 18 +- - drivers/rtc/Makefile | 1 + - drivers/rtc/rtc-astbmc.c | 535 + - drivers/rtc/rtc-xgene.c | 32 + - drivers/soc/Kconfig | 1 + - drivers/soc/Makefile | 2 + - drivers/soc/sophgo/Makefile | 3 + - drivers/soc/sophgo/tach/sophgo-tach.c | 330 + - drivers/soc/sophgo/top/top_intc.c | 412 + - drivers/soc/sophgo/umcu/mcu.c | 1144 +++ - drivers/soc/xuantie/Kconfig | 11 + - drivers/soc/xuantie/Makefile | 2 + - drivers/soc/xuantie/th1520_event.c | 280 + - drivers/spi/Kconfig | 6 + - drivers/spi/Makefile | 1 + - drivers/spi/spi-dw-mmio-quad.c | 216 + - drivers/spi/spi-dw-quad.c | 830 ++ - drivers/spi/spi-dw-quad.h | 365 + - drivers/tee/Kconfig | 2 +- - drivers/tee/optee/Kconfig | 2 +- - drivers/tee/optee/call.c | 2 + - drivers/tee/optee/smc_abi.c | 37 + - drivers/usb/dwc3/Kconfig | 20 + - drivers/usb/dwc3/Makefile | 2 + - drivers/usb/dwc3/core.c | 22 +- - drivers/usb/dwc3/dwc3-xuantie.c | 270 + - drivers/watchdog/Kconfig | 14 + - drivers/watchdog/Makefile | 1 + - drivers/watchdog/dw_wdt.c | 2 + - drivers/watchdog/th1520_wdt.c | 393 + - include/drm/bridge/dw_hdmi.h | 5 + - .../dt-bindings/clock/sophgo-mango-clock.h | 165 + - include/dt-bindings/clock/sophgo.h | 15 + - include/dt-bindings/clock/th1520-audiosys.h | 35 + - include/dt-bindings/clock/th1520-dspsys.h | 33 + - .../dt-bindings/clock/th1520-fm-ap-clock.h | 513 + - include/dt-bindings/clock/th1520-miscsys.h | 28 + - include/dt-bindings/clock/th1520-visys.h | 54 + - include/dt-bindings/clock/th1520-vosys.h | 41 + - include/dt-bindings/clock/th1520-vpsys.h | 26 + - include/dt-bindings/firmware/xuantie/rsrc.h | 18 + - .../dt-bindings/reset/sophgo-mango-resets.h | 96 + - .../dt-bindings/reset/xuantie,th1520-reset.h | 28 + - include/linux/firmware/xuantie/ipc.h | 167 + - include/linux/firmware/xuantie/th1520_event.h | 35 + - include/linux/mlx4/device.h | 2 +- - include/linux/pgtable.h | 21 + - include/linux/sync_core.h | 16 +- - include/linux/th1520_proc_debug.h | 13 + - include/linux/th1520_rpmsg.h | 99 + - include/uapi/drm/drm_fourcc.h | 90 + - include/uapi/drm/vs_drm.h | 50 + - include/uapi/linux/input.h | 5 + - init/Kconfig | 3 + - kernel/panic.c | 8 + - kernel/sched/core.c | 16 +- - kernel/sched/fair.c | 3 + - kernel/sched/membarrier.c | 13 +- - kernel/time/tick-oneshot.c | 2 +- - mm/memblock.c | 6 +- - scripts/package/builddeb | 4 +- - scripts/package/kernel.spec | 10 + - sound/pci/hda/hda_intel.c | 5 +- - sound/soc/Kconfig | 1 + - sound/soc/Makefile | 1 + - sound/soc/codecs/Kconfig | 9 + - sound/soc/codecs/Makefile | 4 + - sound/soc/codecs/es7210.c | 2019 ++++ - sound/soc/codecs/es7210.h | 140 + - sound/soc/codecs/es8156.c | 929 ++ - sound/soc/codecs/es8156.h | 85 + - sound/soc/xuantie/Kconfig | 35 + - sound/soc/xuantie/Makefile | 13 + - sound/soc/xuantie/th1520-audio-cpr.h | 79 + - sound/soc/xuantie/th1520-hdmi-pcm.c | 109 + - sound/soc/xuantie/th1520-i2s-8ch.c | 754 ++ - sound/soc/xuantie/th1520-i2s-common.c | 53 + - sound/soc/xuantie/th1520-i2s.c | 834 ++ - sound/soc/xuantie/th1520-i2s.h | 548 ++ - sound/soc/xuantie/th1520-pcm-dma.c | 48 + - sound/soc/xuantie/th1520-pcm.h | 18 + - tools/lib/perf/cpumap.c | 10 +- - tools/perf/pmu-events/arch/riscv/mapfile.csv | 1 + - .../arch/riscv/thead/c900-legacy/cache.json | 67 + - .../riscv/thead/c900-legacy/firmware.json | 68 + - .../riscv/thead/c900-legacy/instruction.json | 72 + - .../riscv/thead/c900-legacy/microarch.json | 80 + - 892 files changed, 356174 insertions(+), 577 deletions(-) + .../hwlock/xuantie,th1520-hwspinlock.yaml | 34 + + .../bindings/iio/adc/thead,th1520-adc.yaml | 52 + + .../bindings/iio/adc/xuantie,th1520-adc.yaml | 52 + + .../mailbox/xuantie-th1520-mailbox.txt | 57 + + .../bindings/mmc/snps,dwcmshc-sdhci.yaml | 1 + + .../devicetree/bindings/net/snps,dwmac.yaml | 2 + + .../bindings/net/xuantie,dwmac.yaml | 77 + + .../bindings/nvmem/xuantie,th1520-efuse.txt | 18 + + .../pinctrl/thead,th1520-pinctrl.yaml | 374 + + .../bindings/pwm/xuantie,th1520-pwm.yaml | 44 + + .../bindings/reset/xuantie,th1520-reset.yaml | 45 + + .../devicetree/bindings/rtc/xgene-rtc.txt | 16 + + .../soc/xuantie/xuantie,th1520-event.yaml | 37 + + .../bindings/sound/everest,es7210.txt | 12 + + .../bindings/sound/everest,es8156.yaml | 42 + + .../bindings/sound/xuantie,th1520-i2s.yaml | 91 + + .../bindings/sound/xuantie,th1520-spdif.yaml | 77 + + .../bindings/sound/xuantie,th1520-tdm.yaml | 86 + + .../bindings/spi/xuantie,th1520-qspi.yaml | 52 + + .../bindings/spi/xuantie,th1520-spi.yaml | 58 + + .../bindings/usb/xuantie,th1520-usb.yaml | 76 + + .../bindings/watchdog/xuantie,th1520-wdt.yaml | 19 + + .../membarrier-sync-core/arch-support.txt | 18 +- + Documentation/scheduler/index.rst | 1 + + Documentation/scheduler/membarrier.rst | 39 + + MAINTAINERS | 4 + + arch/riscv/Kconfig | 37 +- + arch/riscv/Kconfig.socs | 12 + + arch/riscv/Makefile | 19 +- + arch/riscv/Makefile.isa | 18 + + arch/riscv/boot/dts/Makefile | 1 + + arch/riscv/boot/dts/sophgo/Makefile | 7 + + .../riscv/boot/dts/sophgo/mango-2sockets.dtsi | 699 + + .../boot/dts/sophgo/mango-clock-socket0.dtsi | 124 + + .../boot/dts/sophgo/mango-clock-socket1.dtsi | 124 + + .../boot/dts/sophgo/mango-cpus-socket0.dtsi | 1148 ++ + .../boot/dts/sophgo/mango-cpus-socket1.dtsi | 1149 ++ + .../boot/dts/sophgo/mango-milkv-pioneer.dts | 170 + + .../riscv/boot/dts/sophgo/mango-pcie-2rc.dtsi | 81 + + .../dts/sophgo/mango-pcie-3rc-capricorn.dtsi | 116 + + .../boot/dts/sophgo/mango-pcie-3rc-v2.dtsi | 115 + + .../riscv/boot/dts/sophgo/mango-pcie-3rc.dtsi | 112 + + .../boot/dts/sophgo/mango-pcie-4rc-v2.dtsi | 155 + + .../riscv/boot/dts/sophgo/mango-pcie-4rc.dtsi | 151 + + arch/riscv/boot/dts/sophgo/mango-pinctrl.dtsi | 434 + + .../dts/sophgo/mango-sophgo-capricorn.dts | 57 + + .../boot/dts/sophgo/mango-sophgo-pisces.dts | 58 + + .../boot/dts/sophgo/mango-sophgo-x4evb.dts | 144 + + .../boot/dts/sophgo/mango-sophgo-x8evb.dts | 172 + + .../boot/dts/sophgo/mango-top-intc2.dtsi | 62 + + .../boot/dts/sophgo/mango-yixin-s2110.dts | 63 + + arch/riscv/boot/dts/sophgo/mango.dtsi | 938 + + arch/riscv/boot/dts/thead/Makefile | 3 +- + .../boot/dts/thead/th1520-beaglev-ahead.dts | 222 +- + .../dts/thead/th1520-lichee-module-4a.dtsi | 440 +- + .../dts/thead/th1520-lichee-pi-4a-16g.dts | 18 + + .../boot/dts/thead/th1520-lichee-pi-4a.dts | 1369 +- + .../boot/dts/thead/th1520-lpi4a-dsi0.dts | 63 + + .../boot/dts/thead/th1520-lpi4a-hx8279.dts | 63 + + arch/riscv/boot/dts/thead/th1520.dtsi | 2048 +- + arch/riscv/configs/defconfig | 22 +- + arch/riscv/configs/openeuler_defconfig | 1891 +- + arch/riscv/configs/sg2042_defconfig | 9 + + arch/riscv/configs/th1520_defconfig | 470 + + arch/riscv/include/asm/barrier.h | 22 + + arch/riscv/include/asm/errata_list.h | 32 +- + arch/riscv/include/asm/io.h | 4 + + arch/riscv/include/asm/membarrier.h | 19 + + arch/riscv/include/asm/pgtable-64.h | 14 +- + arch/riscv/include/asm/pgtable.h | 3 +- + arch/riscv/include/asm/sbi.h | 9 + + arch/riscv/include/asm/sparsemem.h | 2 +- + arch/riscv/include/asm/switch_to.h | 15 + + arch/riscv/include/asm/sync_core.h | 29 + + arch/riscv/kernel/module.c | 83 +- + arch/riscv/kernel/process.c | 3 + + arch/riscv/kernel/sbi-ipi.c | 46 +- + arch/riscv/kernel/suspend.c | 44 + + arch/riscv/kernel/vector.c | 3 +- + arch/riscv/mm/dma-noncoherent.c | 9 +- + arch/riscv/mm/pgtable.c | 2 + + arch/riscv/mm/tlbflush.c | 31 + + drivers/char/ipmi/ipmi_si_hardcode.c | 26 +- + drivers/char/ipmi/ipmi_si_intf.c | 3 +- + drivers/char/ipmi/ipmi_si_pci.c | 6 + + drivers/clk/Kconfig | 1 + + drivers/clk/Makefile | 2 + + drivers/clk/sophgo/Makefile | 3 + + drivers/clk/sophgo/clk-dummy.c | 600 + + drivers/clk/sophgo/clk-mango.c | 977 + + drivers/clk/sophgo/clk.c | 883 + + drivers/clk/sophgo/clk.h | 152 + + drivers/clk/xuantie/Kconfig | 12 + + drivers/clk/xuantie/Makefile | 7 + + drivers/clk/xuantie/clk-th1520-fm.c | 646 + + drivers/clk/xuantie/clk.c | 766 + + drivers/clk/xuantie/clk.h | 126 + + drivers/clk/xuantie/gate/Makefile | 3 + + drivers/clk/xuantie/gate/audiosys-gate.c | 124 + + drivers/clk/xuantie/gate/clk-gate.h | 35 + + drivers/clk/xuantie/gate/dspsys-gate.c | 123 + + drivers/clk/xuantie/gate/miscsys-gate.c | 108 + + drivers/clk/xuantie/gate/visys-gate.c | 144 + + drivers/clk/xuantie/gate/vosys-gate.c | 111 + + drivers/clk/xuantie/gate/vpsys-gate.c | 99 + + drivers/clk/xuantie/gate/xuantie-gate.c | 114 + + drivers/cpufreq/Kconfig | 9 + + drivers/cpufreq/Makefile | 1 + + drivers/cpufreq/th1520-cpufreq.c | 584 + + .../dma/dw-axi-dmac/dw-axi-dmac-platform.c | 106 +- + drivers/dma/dw-axi-dmac/dw-axi-dmac.h | 11 + + drivers/firmware/Kconfig | 1 + + drivers/firmware/Makefile | 1 + + drivers/firmware/xuantie/Kconfig | 23 + + drivers/firmware/xuantie/Makefile | 4 + + drivers/firmware/xuantie/th1520_aon.c | 341 + + drivers/firmware/xuantie/th1520_aon_pd.c | 414 + + drivers/firmware/xuantie/th1520_proc_debug.c | 173 + + drivers/gpio/gpio-dwapb.c | 15 +- + drivers/gpio/gpio-pca953x.c | 12 +- + drivers/gpu/drm/Kconfig | 4 + + drivers/gpu/drm/Makefile | 2 + + drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 2 + + drivers/gpu/drm/amd/display/Kconfig | 1 + + .../gpu/drm/amd/display/amdgpu_dm/dc_fpu.c | 6 +- + drivers/gpu/drm/amd/display/dc/dml/Makefile | 6 + + drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 198 +- + drivers/gpu/drm/drm_fbdev_generic.c | 9 + + drivers/gpu/drm/drm_gem_vram_helper.c | 2 +- + drivers/gpu/drm/etnaviv/common.xml.h | 1 + + drivers/gpu/drm/etnaviv/etnaviv_buffer.c | 7 +- + drivers/gpu/drm/etnaviv/etnaviv_gpu.c | 16 +- + drivers/gpu/drm/etnaviv/etnaviv_hwdb.c | 31 + + drivers/gpu/drm/etnaviv/etnaviv_iommu_v2.c | 15 +- + drivers/gpu/drm/etnaviv/etnaviv_mmu.h | 2 + + drivers/gpu/drm/img-rogue/Kconfig | 24 + + drivers/gpu/drm/img-rogue/Makefile | 18 + + drivers/gpu/drm/img-rogue/allocmem.c | 422 + + drivers/gpu/drm/img-rogue/allocmem.h | 224 + + drivers/gpu/drm/img-rogue/apollo/apollo.mk | 4 + + .../gpu/drm/img-rogue/apollo/apollo_regs.h | 108 + + drivers/gpu/drm/img-rogue/apollo/bonnie_tcf.h | 68 + + .../gpu/drm/img-rogue/apollo/drm_pdp_crtc.c | 1104 ++ + .../drm/img-rogue/apollo/drm_pdp_debugfs.c | 184 + + .../gpu/drm/img-rogue/apollo/drm_pdp_drv.c | 866 + + .../gpu/drm/img-rogue/apollo/drm_pdp_drv.h | 241 + + .../gpu/drm/img-rogue/apollo/drm_pdp_dvi.c | 307 + + drivers/gpu/drm/img-rogue/apollo/drm_pdp_fb.c | 312 + + .../gpu/drm/img-rogue/apollo/drm_pdp_gem.c | 780 + + .../gpu/drm/img-rogue/apollo/drm_pdp_gem.h | 157 + + .../drm/img-rogue/apollo/drm_pdp_modeset.c | 472 + + .../gpu/drm/img-rogue/apollo/drm_pdp_plane.c | 323 + + .../gpu/drm/img-rogue/apollo/drm_pdp_tmds.c | 143 + + drivers/gpu/drm/img-rogue/apollo/odin_defs.h | 326 + + .../gpu/drm/img-rogue/apollo/odin_pdp_regs.h | 8540 ++++++++ + drivers/gpu/drm/img-rogue/apollo/odin_regs.h | 1026 + + drivers/gpu/drm/img-rogue/apollo/orion_defs.h | 183 + + drivers/gpu/drm/img-rogue/apollo/orion_regs.h | 439 + + drivers/gpu/drm/img-rogue/apollo/pdp_apollo.c | 332 + + drivers/gpu/drm/img-rogue/apollo/pdp_apollo.h | 88 + + drivers/gpu/drm/img-rogue/apollo/pdp_common.h | 107 + + drivers/gpu/drm/img-rogue/apollo/pdp_odin.c | 1230 ++ + drivers/gpu/drm/img-rogue/apollo/pdp_odin.h | 95 + + drivers/gpu/drm/img-rogue/apollo/pdp_plato.c | 339 + + drivers/gpu/drm/img-rogue/apollo/pdp_plato.h | 86 + + drivers/gpu/drm/img-rogue/apollo/pdp_regs.h | 75 + + drivers/gpu/drm/img-rogue/apollo/pfim_defs.h | 69 + + drivers/gpu/drm/img-rogue/apollo/pfim_regs.h | 265 + + drivers/gpu/drm/img-rogue/apollo/sysconfig.c | 1116 ++ + drivers/gpu/drm/img-rogue/apollo/sysinfo.h | 60 + + drivers/gpu/drm/img-rogue/apollo/tc_apollo.c | 1499 ++ + drivers/gpu/drm/img-rogue/apollo/tc_apollo.h | 77 + + drivers/gpu/drm/img-rogue/apollo/tc_clocks.h | 158 + + drivers/gpu/drm/img-rogue/apollo/tc_drv.c | 943 + + drivers/gpu/drm/img-rogue/apollo/tc_drv.h | 183 + + .../drm/img-rogue/apollo/tc_drv_internal.h | 204 + + drivers/gpu/drm/img-rogue/apollo/tc_odin.c | 2220 +++ + drivers/gpu/drm/img-rogue/apollo/tc_odin.h | 82 + + .../img-rogue/apollo/tc_odin_common_regs.h | 105 + + .../gpu/drm/img-rogue/apollo/tcf_clk_ctrl.h | 1018 + + drivers/gpu/drm/img-rogue/apollo/tcf_pll.h | 311 + + .../drm/img-rogue/apollo/tcf_rgbpdp_regs.h | 559 + + drivers/gpu/drm/img-rogue/cache_km.c | 1630 ++ + drivers/gpu/drm/img-rogue/cache_km.h | 151 + + drivers/gpu/drm/img-rogue/cache_ops.h | 61 + + .../gpu/drm/img-rogue/client_cache_bridge.h | 80 + + .../img-rogue/client_cache_direct_bridge.c | 112 + + .../client_devicememhistory_bridge.h | 111 + + .../client_devicememhistory_direct_bridge.c | 194 + + .../drm/img-rogue/client_htbuffer_bridge.h | 71 + + .../img-rogue/client_htbuffer_direct_bridge.c | 85 + + drivers/gpu/drm/img-rogue/client_mm_bridge.h | 265 + + .../drm/img-rogue/client_mm_direct_bridge.c | 804 + + .../gpu/drm/img-rogue/client_pvrtl_bridge.h | 93 + + .../img-rogue/client_pvrtl_direct_bridge.c | 175 + + drivers/gpu/drm/img-rogue/client_ri_bridge.h | 89 + + .../drm/img-rogue/client_ri_direct_bridge.c | 182 + + .../gpu/drm/img-rogue/client_sync_bridge.h | 102 + + .../drm/img-rogue/client_sync_direct_bridge.c | 262 + + .../img-rogue/client_synctracking_bridge.h | 68 + + .../client_synctracking_direct_bridge.c | 92 + + .../gpu/drm/img-rogue/common_cache_bridge.h | 126 + + drivers/gpu/drm/img-rogue/common_cmm_bridge.h | 114 + + .../common_devicememhistory_bridge.h | 185 + + drivers/gpu/drm/img-rogue/common_di_bridge.h | 153 + + .../gpu/drm/img-rogue/common_dmabuf_bridge.h | 150 + + .../drm/img-rogue/common_htbuffer_bridge.h | 104 + + drivers/gpu/drm/img-rogue/common_mm_bridge.h | 879 + + .../gpu/drm/img-rogue/common_pvrtl_bridge.h | 214 + + .../img-rogue/common_rgxbreakpoint_bridge.h | 149 + + .../gpu/drm/img-rogue/common_rgxcmp_bridge.h | 229 + + .../drm/img-rogue/common_rgxfwdbg_bridge.h | 200 + + .../drm/img-rogue/common_rgxhwperf_bridge.h | 172 + + .../drm/img-rogue/common_rgxkicksync_bridge.h | 143 + + .../img-rogue/common_rgxregconfig_bridge.h | 146 + + .../gpu/drm/img-rogue/common_rgxta3d_bridge.h | 404 + + .../img-rogue/common_rgxtimerquery_bridge.h | 112 + + .../gpu/drm/img-rogue/common_rgxtq2_bridge.h | 228 + + .../gpu/drm/img-rogue/common_rgxtq_bridge.h | 176 + + drivers/gpu/drm/img-rogue/common_ri_bridge.h | 225 + + .../gpu/drm/img-rogue/common_srvcore_bridge.h | 369 + + .../gpu/drm/img-rogue/common_sync_bridge.h | 254 + + .../img-rogue/common_synctracking_bridge.h | 97 + + drivers/gpu/drm/img-rogue/config_kernel.h | 163 + + drivers/gpu/drm/img-rogue/config_kernel.mk | 53 + + .../img-rogue/configs/rgxconfig_km_1.V.4.5.h | 80 + + .../configs/rgxconfig_km_36.V.104.182.h | 105 + + drivers/gpu/drm/img-rogue/connection_server.c | 491 + + drivers/gpu/drm/img-rogue/connection_server.h | 144 + + .../drm/img-rogue/cores/rgxcore_km_1.82.4.5.h | 69 + + .../cores/rgxcore_km_36.52.104.182.h | 74 + + drivers/gpu/drm/img-rogue/debug_common.c | 1646 ++ + drivers/gpu/drm/img-rogue/debug_common.h | 55 + + drivers/gpu/drm/img-rogue/device.h | 540 + + drivers/gpu/drm/img-rogue/device_connection.h | 123 + + drivers/gpu/drm/img-rogue/devicemem.c | 2962 +++ + drivers/gpu/drm/img-rogue/devicemem.h | 730 + + drivers/gpu/drm/img-rogue/devicemem_heapcfg.c | 184 + + drivers/gpu/drm/img-rogue/devicemem_heapcfg.h | 184 + + .../drm/img-rogue/devicemem_history_server.c | 1962 ++ + .../drm/img-rogue/devicemem_history_server.h | 157 + + drivers/gpu/drm/img-rogue/devicemem_pdump.h | 363 + + drivers/gpu/drm/img-rogue/devicemem_server.c | 1813 ++ + drivers/gpu/drm/img-rogue/devicemem_server.h | 633 + + .../drm/img-rogue/devicemem_server_utils.h | 198 + + .../gpu/drm/img-rogue/devicemem_typedefs.h | 142 + + drivers/gpu/drm/img-rogue/devicemem_utils.c | 1259 ++ + drivers/gpu/drm/img-rogue/devicemem_utils.h | 605 + + drivers/gpu/drm/img-rogue/di_common.h | 236 + + drivers/gpu/drm/img-rogue/di_impl_brg.c | 889 + + drivers/gpu/drm/img-rogue/di_impl_brg.h | 92 + + .../gpu/drm/img-rogue/di_impl_brg_intern.h | 61 + + drivers/gpu/drm/img-rogue/di_server.c | 780 + + drivers/gpu/drm/img-rogue/di_server.h | 219 + + drivers/gpu/drm/img-rogue/dllist.h | 408 + + drivers/gpu/drm/img-rogue/dma_km.h | 83 + + drivers/gpu/drm/img-rogue/dma_support.c | 523 + + drivers/gpu/drm/img-rogue/dma_support.h | 117 + + drivers/gpu/drm/img-rogue/drm_netlink_gem.c | 143 + + drivers/gpu/drm/img-rogue/drm_netlink_gem.h | 61 + + drivers/gpu/drm/img-rogue/drm_nulldisp_drv.c | 2731 +++ + drivers/gpu/drm/img-rogue/drm_nulldisp_drv.h | 97 + + drivers/gpu/drm/img-rogue/drm_nulldisp_gem.c | 678 + + drivers/gpu/drm/img-rogue/drm_nulldisp_gem.h | 160 + + .../gpu/drm/img-rogue/drm_nulldisp_netlink.c | 710 + + .../gpu/drm/img-rogue/drm_nulldisp_netlink.h | 77 + + drivers/gpu/drm/img-rogue/env_connection.h | 92 + + drivers/gpu/drm/img-rogue/event.c | 514 + + drivers/gpu/drm/img-rogue/event.h | 54 + + drivers/gpu/drm/img-rogue/fwload.c | 255 + + drivers/gpu/drm/img-rogue/fwload.h | 158 + + drivers/gpu/drm/img-rogue/fwtrace_string.h | 52 + + drivers/gpu/drm/img-rogue/gpu_trace_point.h | 39 + + drivers/gpu/drm/img-rogue/handle.c | 2484 +++ + drivers/gpu/drm/img-rogue/handle.h | 206 + + drivers/gpu/drm/img-rogue/handle_idr.c | 440 + + drivers/gpu/drm/img-rogue/handle_impl.h | 89 + + drivers/gpu/drm/img-rogue/handle_types.h | 88 + + drivers/gpu/drm/img-rogue/hash.c | 734 + + drivers/gpu/drm/img-rogue/hash.h | 247 + + drivers/gpu/drm/img-rogue/htb_debug.c | 1190 ++ + drivers/gpu/drm/img-rogue/htb_debug.h | 64 + + drivers/gpu/drm/img-rogue/htbserver.c | 857 + + drivers/gpu/drm/img-rogue/htbserver.h | 228 + + drivers/gpu/drm/img-rogue/htbuffer.c | 197 + + drivers/gpu/drm/img-rogue/htbuffer.h | 135 + + drivers/gpu/drm/img-rogue/htbuffer_init.h | 114 + + drivers/gpu/drm/img-rogue/htbuffer_sf.h | 241 + + drivers/gpu/drm/img-rogue/htbuffer_types.h | 118 + + drivers/gpu/drm/img-rogue/img_3dtypes.h | 248 + + drivers/gpu/drm/img-rogue/img_defs.h | 567 + + drivers/gpu/drm/img-rogue/img_elf.h | 111 + + drivers/gpu/drm/img-rogue/img_types.h | 324 + + drivers/gpu/drm/img-rogue/img_types_check.h | 58 + + drivers/gpu/drm/img-rogue/include/cache_ops.h | 61 + + .../img-rogue/include/devicemem_typedefs.h | 142 + + drivers/gpu/drm/img-rogue/include/dllist.h | 408 + + .../gpu/drm/img-rogue/include/drm/netlink.h | 147 + + .../drm/img-rogue/include/drm/nulldisp_drm.h | 105 + + .../gpu/drm/img-rogue/include/drm/pdp_drm.h | 105 + + .../gpu/drm/img-rogue/include/drm/pvr_drm.h | 146 + + .../gpu/drm/img-rogue/include/img_3dtypes.h | 248 + + drivers/gpu/drm/img-rogue/include/img_defs.h | 567 + + .../include/img_drm_fourcc_internal.h | 94 + + drivers/gpu/drm/img-rogue/include/img_elf.h | 111 + + drivers/gpu/drm/img-rogue/include/img_types.h | 324 + + .../gpu/drm/img-rogue/include/kernel_types.h | 137 + + .../gpu/drm/img-rogue/include/linux_sw_sync.h | 52 + + .../gpu/drm/img-rogue/include/lock_types.h | 92 + + drivers/gpu/drm/img-rogue/include/log2.h | 417 + + .../drm/img-rogue/include/multicore_defs.h | 53 + + .../gpu/drm/img-rogue/include/osfunc_common.h | 300 + + drivers/gpu/drm/img-rogue/include/pdumpdefs.h | 249 + + drivers/gpu/drm/img-rogue/include/pdumpdesc.h | 226 + + .../include/public/powervr/buffer_attribs.h | 193 + + .../include/public/powervr/img_drm_fourcc.h | 140 + + .../include/public/powervr/mem_types.h | 64 + + .../include/public/powervr/pvrsrv_sync_ext.h | 72 + + .../include/pvr_buffer_sync_shared.h | 57 + + drivers/gpu/drm/img-rogue/include/pvr_debug.h | 898 + + .../img-rogue/include/pvr_fd_sync_kernel.h | 64 + + .../drm/img-rogue/include/pvr_intrinsics.h | 70 + + drivers/gpu/drm/img-rogue/include/pvrmodule.h | 48 + + .../img-rogue/include/pvrsrv_device_types.h | 55 + + .../gpu/drm/img-rogue/include/pvrsrv_devvar.h | 291 + + .../gpu/drm/img-rogue/include/pvrsrv_error.h | 61 + + .../gpu/drm/img-rogue/include/pvrsrv_errors.h | 410 + + .../include/pvrsrv_memalloc_physheap.h | 170 + + .../img-rogue/include/pvrsrv_memallocflags.h | 969 + + .../include/pvrsrv_memallocflags_internal.h | 78 + + .../drm/img-rogue/include/pvrsrv_sync_km.h | 65 + + .../drm/img-rogue/include/pvrsrv_tlcommon.h | 260 + + .../drm/img-rogue/include/pvrsrv_tlstreams.h | 61 + + .../gpu/drm/img-rogue/include/pvrversion.h | 68 + + .../gpu/drm/img-rogue/include/rgx_common.h | 235 + + .../img-rogue/include/rgx_common_asserts.h | 73 + + .../drm/img-rogue/include/rgx_compat_bvnc.h | 140 + + .../include/rgx_fwif_resetframework.h | 70 + + .../gpu/drm/img-rogue/include/rgx_fwif_sf.h | 931 + + .../drm/img-rogue/include/rgx_heap_firmware.h | 120 + + .../drm/img-rogue/include/rgx_hwperf_common.h | 482 + + drivers/gpu/drm/img-rogue/include/rgx_meta.h | 385 + + drivers/gpu/drm/img-rogue/include/rgx_mips.h | 374 + + drivers/gpu/drm/img-rogue/include/rgx_riscv.h | 250 + + .../drm/img-rogue/include/rgxfw_log_helper.h | 79 + + .../gpu/drm/img-rogue/include/ri_typedefs.h | 52 + + .../include/rogue/rgx_fwif_alignchecks.h | 192 + + .../img-rogue/include/rogue/rgx_fwif_hwperf.h | 252 + + .../drm/img-rogue/include/rogue/rgx_fwif_km.h | 2341 +++ + .../img-rogue/include/rogue/rgx_fwif_shared.h | 335 + + .../drm/img-rogue/include/rogue/rgx_heaps.h | 68 + + .../drm/img-rogue/include/rogue/rgx_hwperf.h | 1607 ++ + .../drm/img-rogue/include/rogue/rgx_options.h | 304 + + .../img-rogue/include/rogue/rgxheapconfig.h | 290 + + .../include/rogue/rgxheapconfig_65273.h | 124 + + .../include/rogue/system/rgx_tc/tc_clocks.h | 158 + + .../gpu/drm/img-rogue/include/services_km.h | 180 + + .../gpu/drm/img-rogue/include/servicesext.h | 156 + + .../include/sync_checkpoint_external.h | 83 + + .../img-rogue/include/sync_prim_internal.h | 84 + + .../include/system/rgx_tc/apollo_regs.h | 108 + + .../include/system/rgx_tc/bonnie_tcf.h | 68 + + .../include/system/rgx_tc/odin_defs.h | 326 + + .../include/system/rgx_tc/odin_pdp_regs.h | 8540 ++++++++ + .../include/system/rgx_tc/odin_regs.h | 1026 + + .../include/system/rgx_tc/orion_defs.h | 183 + + .../include/system/rgx_tc/orion_regs.h | 439 + + .../include/system/rgx_tc/pdp_regs.h | 75 + + .../include/system/rgx_tc/pfim_defs.h | 69 + + .../include/system/rgx_tc/pfim_regs.h | 265 + + .../include/system/rgx_tc/tcf_clk_ctrl.h | 1018 + + .../img-rogue/include/system/rgx_tc/tcf_pll.h | 311 + + .../include/system/rgx_tc/tcf_rgbpdp_regs.h | 559 + + .../img-rogue/include/virt_validation_defs.h | 63 + + .../include/volcanic/rgx_fwif_alignchecks.h | 191 + + .../include/volcanic/rgx_fwif_hwperf.h | 125 + + .../img-rogue/include/volcanic/rgx_fwif_km.h | 2331 +++ + .../include/volcanic/rgx_fwif_shared.h | 376 + + .../img-rogue/include/volcanic/rgx_heaps.h | 65 + + .../img-rogue/include/volcanic/rgx_hwperf.h | 1424 ++ + .../include/volcanic/rgx_hwperf_table.h | 511 + + .../img-rogue/include/volcanic/rgx_options.h | 294 + + .../include/volcanic/rgxheapconfig.h | 278 + + .../volcanic/system/rgx_tc/tc_clocks.h | 101 + + drivers/gpu/drm/img-rogue/info_page.h | 99 + + drivers/gpu/drm/img-rogue/info_page_client.h | 89 + + drivers/gpu/drm/img-rogue/info_page_defs.h | 91 + + drivers/gpu/drm/img-rogue/info_page_km.c | 138 + + drivers/gpu/drm/img-rogue/interrupt_support.c | 151 + + drivers/gpu/drm/img-rogue/interrupt_support.h | 103 + + .../gpu/drm/img-rogue/kernel_compatibility.h | 521 + + .../img-rogue/kernel_config_compatibility.h | 54 + + drivers/gpu/drm/img-rogue/kernel_nospec.h | 71 + + drivers/gpu/drm/img-rogue/kernel_types.h | 137 + + .../gpu/drm/img-rogue/km/rgx_bvnc_defs_km.h | 377 + + .../gpu/drm/img-rogue/km/rgx_bvnc_table_km.h | 462 + + drivers/gpu/drm/img-rogue/km/rgx_cr_defs_km.h | 8077 ++++++++ + drivers/gpu/drm/img-rogue/km/rgxdefs_km.h | 338 + + drivers/gpu/drm/img-rogue/km/rgxmhdefs_km.h | 286 + + drivers/gpu/drm/img-rogue/km/rgxmmudefs_km.h | 216 + + drivers/gpu/drm/img-rogue/km_apphint.c | 1751 ++ + drivers/gpu/drm/img-rogue/km_apphint.h | 99 + + drivers/gpu/drm/img-rogue/km_apphint_defs.h | 160 + + .../drm/img-rogue/km_apphint_defs_common.h | 280 + + drivers/gpu/drm/img-rogue/linkage.h | 52 + + drivers/gpu/drm/img-rogue/linux_sw_sync.h | 52 + + drivers/gpu/drm/img-rogue/lists.c | 60 + + drivers/gpu/drm/img-rogue/lists.h | 367 + + drivers/gpu/drm/img-rogue/lock.h | 431 + + drivers/gpu/drm/img-rogue/lock_types.h | 92 + + drivers/gpu/drm/img-rogue/log2.h | 417 + + drivers/gpu/drm/img-rogue/mem_utils.c | 449 + + drivers/gpu/drm/img-rogue/mmu_common.c | 4464 +++++ + drivers/gpu/drm/img-rogue/mmu_common.h | 792 + + drivers/gpu/drm/img-rogue/module_common.c | 730 + + drivers/gpu/drm/img-rogue/module_common.h | 101 + + drivers/gpu/drm/img-rogue/multicore_defs.h | 53 + + drivers/gpu/drm/img-rogue/opaque_types.h | 56 + + drivers/gpu/drm/img-rogue/os_cpu_cache.h | 69 + + drivers/gpu/drm/img-rogue/os_srvinit_param.h | 328 + + .../gpu/drm/img-rogue/osconnection_server.c | 157 + + .../gpu/drm/img-rogue/osconnection_server.h | 133 + + drivers/gpu/drm/img-rogue/osdi_impl.h | 205 + + drivers/gpu/drm/img-rogue/osfunc.c | 2648 +++ + drivers/gpu/drm/img-rogue/osfunc.h | 1690 ++ + drivers/gpu/drm/img-rogue/osfunc_arm.c | 151 + + drivers/gpu/drm/img-rogue/osfunc_arm64.c | 290 + + drivers/gpu/drm/img-rogue/osfunc_common.h | 300 + + drivers/gpu/drm/img-rogue/osfunc_riscv.c | 428 + + drivers/gpu/drm/img-rogue/osfunc_x86.c | 134 + + drivers/gpu/drm/img-rogue/oskm_apphint.h | 186 + + drivers/gpu/drm/img-rogue/osmmap.h | 115 + + drivers/gpu/drm/img-rogue/osmmap_stub.c | 146 + + drivers/gpu/drm/img-rogue/ospvr_gputrace.h | 167 + + drivers/gpu/drm/img-rogue/pci_support.c | 726 + + drivers/gpu/drm/img-rogue/pci_support.h | 99 + + drivers/gpu/drm/img-rogue/pdp/drm_pdp.mk | 13 + + drivers/gpu/drm/img-rogue/pdp2_mmu_regs.h | 764 + + drivers/gpu/drm/img-rogue/pdp2_regs.h | 8565 ++++++++ + drivers/gpu/drm/img-rogue/pdp_drm.h | 105 + + drivers/gpu/drm/img-rogue/pdump.h | 238 + + drivers/gpu/drm/img-rogue/pdump_km.h | 1136 ++ + drivers/gpu/drm/img-rogue/pdump_mmu.h | 180 + + drivers/gpu/drm/img-rogue/pdump_physmem.h | 257 + + .../gpu/drm/img-rogue/pdump_symbolicaddr.h | 55 + + drivers/gpu/drm/img-rogue/pdumpdefs.h | 249 + + drivers/gpu/drm/img-rogue/pdumpdesc.h | 226 + + drivers/gpu/drm/img-rogue/physheap.c | 1184 ++ + drivers/gpu/drm/img-rogue/physheap.h | 497 + + drivers/gpu/drm/img-rogue/physheap_config.h | 119 + + drivers/gpu/drm/img-rogue/physmem.c | 839 + + drivers/gpu/drm/img-rogue/physmem.h | 321 + + drivers/gpu/drm/img-rogue/physmem_dmabuf.c | 1302 ++ + drivers/gpu/drm/img-rogue/physmem_dmabuf.h | 124 + + drivers/gpu/drm/img-rogue/physmem_hostmem.c | 206 + + drivers/gpu/drm/img-rogue/physmem_hostmem.h | 65 + + drivers/gpu/drm/img-rogue/physmem_lma.c | 2003 ++ + drivers/gpu/drm/img-rogue/physmem_lma.h | 93 + + drivers/gpu/drm/img-rogue/physmem_osmem.h | 142 + + .../gpu/drm/img-rogue/physmem_osmem_linux.c | 3952 ++++ + .../gpu/drm/img-rogue/physmem_osmem_linux.h | 49 + + drivers/gpu/drm/img-rogue/physmem_test.c | 710 + + drivers/gpu/drm/img-rogue/physmem_test.h | 51 + + drivers/gpu/drm/img-rogue/plato_drv.h | 416 + + drivers/gpu/drm/img-rogue/pmr.c | 3697 ++++ + drivers/gpu/drm/img-rogue/pmr.h | 1023 + + drivers/gpu/drm/img-rogue/pmr_impl.h | 539 + + drivers/gpu/drm/img-rogue/pmr_os.c | 619 + + drivers/gpu/drm/img-rogue/pmr_os.h | 62 + + drivers/gpu/drm/img-rogue/power.c | 929 + + drivers/gpu/drm/img-rogue/power.h | 430 + + .../drm/img-rogue/powervr/buffer_attribs.h | 193 + + .../drm/img-rogue/powervr/img_drm_fourcc.h | 140 + + drivers/gpu/drm/img-rogue/powervr/mem_types.h | 64 + + .../drm/img-rogue/powervr/pvrsrv_sync_ext.h | 72 + + drivers/gpu/drm/img-rogue/private_data.h | 59 + + drivers/gpu/drm/img-rogue/proc_stats.h | 135 + + drivers/gpu/drm/img-rogue/process_stats.c | 3358 ++++ + drivers/gpu/drm/img-rogue/process_stats.h | 223 + + drivers/gpu/drm/img-rogue/pvr_bridge.h | 457 + + drivers/gpu/drm/img-rogue/pvr_bridge_k.c | 582 + + drivers/gpu/drm/img-rogue/pvr_bridge_k.h | 103 + + drivers/gpu/drm/img-rogue/pvr_buffer_sync.c | 646 + + drivers/gpu/drm/img-rogue/pvr_buffer_sync.h | 125 + + .../drm/img-rogue/pvr_buffer_sync_shared.h | 57 + + .../gpu/drm/img-rogue/pvr_counting_timeline.c | 308 + + .../gpu/drm/img-rogue/pvr_counting_timeline.h | 68 + + drivers/gpu/drm/img-rogue/pvr_debug.c | 481 + + drivers/gpu/drm/img-rogue/pvr_debug.h | 898 + + drivers/gpu/drm/img-rogue/pvr_debugfs.c | 623 + + drivers/gpu/drm/img-rogue/pvr_debugfs.h | 50 + + drivers/gpu/drm/img-rogue/pvr_dicommon.h | 59 + + drivers/gpu/drm/img-rogue/pvr_dma_resv.h | 80 + + drivers/gpu/drm/img-rogue/pvr_drm.c | 336 + + drivers/gpu/drm/img-rogue/pvr_drm.h | 146 + + drivers/gpu/drm/img-rogue/pvr_drv.h | 106 + + .../gpu/drm/img-rogue/pvr_fd_sync_kernel.h | 64 + + drivers/gpu/drm/img-rogue/pvr_fence.c | 1149 ++ + drivers/gpu/drm/img-rogue/pvr_fence.h | 248 + + drivers/gpu/drm/img-rogue/pvr_fence_trace.h | 225 + + drivers/gpu/drm/img-rogue/pvr_gputrace.c | 1281 ++ + drivers/gpu/drm/img-rogue/pvr_intrinsics.h | 70 + + drivers/gpu/drm/img-rogue/pvr_ion_stats.h | 80 + + drivers/gpu/drm/img-rogue/pvr_linux_fence.h | 103 + + drivers/gpu/drm/img-rogue/pvr_notifier.c | 647 + + drivers/gpu/drm/img-rogue/pvr_notifier.h | 326 + + drivers/gpu/drm/img-rogue/pvr_platform_drv.c | 326 + + drivers/gpu/drm/img-rogue/pvr_procfs.h | 50 + + drivers/gpu/drm/img-rogue/pvr_ricommon.h | 68 + + drivers/gpu/drm/img-rogue/pvr_sw_fence.c | 199 + + drivers/gpu/drm/img-rogue/pvr_sw_fence.h | 60 + + drivers/gpu/drm/img-rogue/pvr_sync.h | 120 + + drivers/gpu/drm/img-rogue/pvr_sync_api.h | 61 + + drivers/gpu/drm/img-rogue/pvr_sync_file.c | 1094 ++ + .../gpu/drm/img-rogue/pvr_sync_ioctl_common.c | 277 + + .../gpu/drm/img-rogue/pvr_sync_ioctl_common.h | 71 + + .../gpu/drm/img-rogue/pvr_sync_ioctl_drm.c | 168 + + .../gpu/drm/img-rogue/pvr_sync_ioctl_drm.h | 62 + + drivers/gpu/drm/img-rogue/pvr_uaccess.h | 99 + + drivers/gpu/drm/img-rogue/pvr_vmap.h | 83 + + drivers/gpu/drm/img-rogue/pvrmodule.h | 48 + + drivers/gpu/drm/img-rogue/pvrsrv.c | 3028 +++ + drivers/gpu/drm/img-rogue/pvrsrv.h | 542 + + drivers/gpu/drm/img-rogue/pvrsrv_apphint.h | 71 + + .../gpu/drm/img-rogue/pvrsrv_bridge_init.c | 385 + + .../gpu/drm/img-rogue/pvrsrv_bridge_init.h | 53 + + drivers/gpu/drm/img-rogue/pvrsrv_cleanup.h | 177 + + drivers/gpu/drm/img-rogue/pvrsrv_device.h | 401 + + .../gpu/drm/img-rogue/pvrsrv_device_types.h | 55 + + drivers/gpu/drm/img-rogue/pvrsrv_devvar.h | 291 + + drivers/gpu/drm/img-rogue/pvrsrv_error.c | 61 + + drivers/gpu/drm/img-rogue/pvrsrv_error.h | 61 + + drivers/gpu/drm/img-rogue/pvrsrv_errors.h | 410 + + .../gpu/drm/img-rogue/pvrsrv_firmware_boot.h | 87 + + .../drm/img-rogue/pvrsrv_memalloc_physheap.h | 170 + + .../gpu/drm/img-rogue/pvrsrv_memallocflags.h | 969 + + .../img-rogue/pvrsrv_memallocflags_internal.h | 78 + + drivers/gpu/drm/img-rogue/pvrsrv_pool.c | 260 + + drivers/gpu/drm/img-rogue/pvrsrv_pool.h | 135 + + drivers/gpu/drm/img-rogue/pvrsrv_sync_km.h | 65 + + .../gpu/drm/img-rogue/pvrsrv_sync_server.h | 278 + + drivers/gpu/drm/img-rogue/pvrsrv_tlcommon.h | 260 + + drivers/gpu/drm/img-rogue/pvrsrv_tlstreams.h | 61 + + drivers/gpu/drm/img-rogue/pvrsrvkm.mk | 148 + + drivers/gpu/drm/img-rogue/pvrversion.h | 68 + + drivers/gpu/drm/img-rogue/ra.c | 2166 +++ + drivers/gpu/drm/img-rogue/ra.h | 386 + + drivers/gpu/drm/img-rogue/rgx_bridge.h | 243 + + drivers/gpu/drm/img-rogue/rgx_bridge_init.c | 111 + + drivers/gpu/drm/img-rogue/rgx_bridge_init.h | 55 + + drivers/gpu/drm/img-rogue/rgx_common.h | 235 + + .../gpu/drm/img-rogue/rgx_common_asserts.h | 73 + + drivers/gpu/drm/img-rogue/rgx_compat_bvnc.h | 140 + + drivers/gpu/drm/img-rogue/rgx_fw_info.h | 135 + + .../gpu/drm/img-rogue/rgx_fwif_alignchecks.h | 192 + + drivers/gpu/drm/img-rogue/rgx_fwif_hwperf.h | 252 + + drivers/gpu/drm/img-rogue/rgx_fwif_km.h | 2341 +++ + .../drm/img-rogue/rgx_fwif_resetframework.h | 70 + + drivers/gpu/drm/img-rogue/rgx_fwif_sf.h | 931 + + drivers/gpu/drm/img-rogue/rgx_fwif_shared.h | 335 + + drivers/gpu/drm/img-rogue/rgx_heap_firmware.h | 120 + + drivers/gpu/drm/img-rogue/rgx_heaps.h | 68 + + drivers/gpu/drm/img-rogue/rgx_hwperf.h | 1607 ++ + drivers/gpu/drm/img-rogue/rgx_hwperf_common.h | 482 + + drivers/gpu/drm/img-rogue/rgx_hwperf_table.c | 635 + + drivers/gpu/drm/img-rogue/rgx_hwperf_table.h | 116 + + drivers/gpu/drm/img-rogue/rgx_memallocflags.h | 58 + + drivers/gpu/drm/img-rogue/rgx_meta.h | 385 + + drivers/gpu/drm/img-rogue/rgx_mips.h | 374 + + drivers/gpu/drm/img-rogue/rgx_options.h | 304 + + drivers/gpu/drm/img-rogue/rgx_pdump_panics.h | 64 + + drivers/gpu/drm/img-rogue/rgx_riscv.h | 250 + + drivers/gpu/drm/img-rogue/rgx_tq_shared.h | 63 + + drivers/gpu/drm/img-rogue/rgxapi_km.h | 336 + + drivers/gpu/drm/img-rogue/rgxbreakpoint.c | 290 + + drivers/gpu/drm/img-rogue/rgxbreakpoint.h | 141 + + drivers/gpu/drm/img-rogue/rgxbvnc.c | 852 + + drivers/gpu/drm/img-rogue/rgxbvnc.h | 90 + + drivers/gpu/drm/img-rogue/rgxccb.c | 2803 +++ + drivers/gpu/drm/img-rogue/rgxccb.h | 356 + + drivers/gpu/drm/img-rogue/rgxcompute.c | 1324 ++ + drivers/gpu/drm/img-rogue/rgxcompute.h | 173 + + drivers/gpu/drm/img-rogue/rgxdebug.c | 5792 ++++++ + drivers/gpu/drm/img-rogue/rgxdebug.h | 229 + + drivers/gpu/drm/img-rogue/rgxdevice.h | 828 + + drivers/gpu/drm/img-rogue/rgxfw_log_helper.h | 79 + + drivers/gpu/drm/img-rogue/rgxfwdbg.c | 282 + + drivers/gpu/drm/img-rogue/rgxfwdbg.h | 113 + + drivers/gpu/drm/img-rogue/rgxfwimageutils.c | 1082 ++ + drivers/gpu/drm/img-rogue/rgxfwimageutils.h | 223 + + .../gpu/drm/img-rogue/rgxfwtrace_strings.c | 56 + + drivers/gpu/drm/img-rogue/rgxfwutils.c | 7825 ++++++++ + drivers/gpu/drm/img-rogue/rgxfwutils.h | 1362 ++ + drivers/gpu/drm/img-rogue/rgxheapconfig.h | 290 + + .../gpu/drm/img-rogue/rgxheapconfig_65273.h | 124 + + drivers/gpu/drm/img-rogue/rgxhwperf.c | 694 + + drivers/gpu/drm/img-rogue/rgxhwperf.h | 74 + + drivers/gpu/drm/img-rogue/rgxhwperf_common.c | 3715 ++++ + drivers/gpu/drm/img-rogue/rgxhwperf_common.h | 512 + + drivers/gpu/drm/img-rogue/rgxinit.c | 5158 +++++ + drivers/gpu/drm/img-rogue/rgxinit.h | 281 + + drivers/gpu/drm/img-rogue/rgxkicksync.c | 794 + + drivers/gpu/drm/img-rogue/rgxkicksync.h | 128 + + drivers/gpu/drm/img-rogue/rgxlayer.h | 812 + + drivers/gpu/drm/img-rogue/rgxlayer_impl.c | 1318 ++ + drivers/gpu/drm/img-rogue/rgxlayer_impl.h | 67 + + drivers/gpu/drm/img-rogue/rgxmem.c | 947 + + drivers/gpu/drm/img-rogue/rgxmem.h | 147 + + drivers/gpu/drm/img-rogue/rgxmipsmmuinit.c | 1045 + + drivers/gpu/drm/img-rogue/rgxmipsmmuinit.h | 97 + + drivers/gpu/drm/img-rogue/rgxmmuinit.c | 1079 ++ + drivers/gpu/drm/img-rogue/rgxmmuinit.h | 60 + + drivers/gpu/drm/img-rogue/rgxmulticore.c | 224 + + drivers/gpu/drm/img-rogue/rgxmulticore.h | 54 + + drivers/gpu/drm/img-rogue/rgxpower.c | 1628 ++ + drivers/gpu/drm/img-rogue/rgxpower.h | 286 + + drivers/gpu/drm/img-rogue/rgxregconfig.c | 319 + + drivers/gpu/drm/img-rogue/rgxregconfig.h | 130 + + drivers/gpu/drm/img-rogue/rgxshader.c | 302 + + drivers/gpu/drm/img-rogue/rgxshader.h | 83 + + drivers/gpu/drm/img-rogue/rgxsrvinit.c | 1657 ++ + drivers/gpu/drm/img-rogue/rgxstartstop.c | 1331 ++ + drivers/gpu/drm/img-rogue/rgxstartstop.h | 84 + + drivers/gpu/drm/img-rogue/rgxsyncutils.c | 184 + + drivers/gpu/drm/img-rogue/rgxsyncutils.h | 76 + + drivers/gpu/drm/img-rogue/rgxta3d.c | 5426 ++++++ + drivers/gpu/drm/img-rogue/rgxta3d.h | 502 + + drivers/gpu/drm/img-rogue/rgxtdmtransfer.c | 1329 ++ + drivers/gpu/drm/img-rogue/rgxtdmtransfer.h | 132 + + drivers/gpu/drm/img-rogue/rgxtimecorr.c | 648 + + drivers/gpu/drm/img-rogue/rgxtimecorr.h | 272 + + drivers/gpu/drm/img-rogue/rgxtimerquery.c | 244 + + drivers/gpu/drm/img-rogue/rgxtimerquery.h | 123 + + drivers/gpu/drm/img-rogue/rgxtransfer.c | 1805 ++ + drivers/gpu/drm/img-rogue/rgxtransfer.h | 153 + + .../gpu/drm/img-rogue/rgxtransfer_shader.h | 61 + + drivers/gpu/drm/img-rogue/rgxutils.c | 221 + + drivers/gpu/drm/img-rogue/rgxutils.h | 185 + + drivers/gpu/drm/img-rogue/ri_server.c | 2123 ++ + drivers/gpu/drm/img-rogue/ri_server.h | 106 + + drivers/gpu/drm/img-rogue/ri_typedefs.h | 52 + + .../gpu/drm/img-rogue/rogue_trace_events.h | 543 + + .../gpu/drm/img-rogue/server_cache_bridge.c | 457 + + drivers/gpu/drm/img-rogue/server_cmm_bridge.c | 409 + + .../server_devicememhistory_bridge.c | 846 + + drivers/gpu/drm/img-rogue/server_di_bridge.c | 639 + + .../gpu/drm/img-rogue/server_dmabuf_bridge.c | 694 + + .../drm/img-rogue/server_htbuffer_bridge.c | 351 + + drivers/gpu/drm/img-rogue/server_mm_bridge.c | 3802 ++++ + .../gpu/drm/img-rogue/server_pvrtl_bridge.c | 836 + + .../img-rogue/server_rgxbreakpoint_bridge.c | 370 + + .../gpu/drm/img-rogue/server_rgxcmp_bridge.c | 1171 ++ + .../drm/img-rogue/server_rgxfwdbg_bridge.c | 305 + + .../drm/img-rogue/server_rgxhwperf_bridge.c | 651 + + .../drm/img-rogue/server_rgxkicksync_bridge.c | 579 + + .../img-rogue/server_rgxregconfig_bridge.c | 239 + + .../gpu/drm/img-rogue/server_rgxta3d_bridge.c | 2406 +++ + .../img-rogue/server_rgxtimerquery_bridge.c | 167 + + .../gpu/drm/img-rogue/server_rgxtq2_bridge.c | 1210 ++ + .../gpu/drm/img-rogue/server_rgxtq_bridge.c | 1212 ++ + drivers/gpu/drm/img-rogue/server_ri_bridge.c | 760 + + .../gpu/drm/img-rogue/server_srvcore_bridge.c | 1072 + + .../gpu/drm/img-rogue/server_sync_bridge.c | 746 + + .../img-rogue/server_synctracking_bridge.c | 333 + + .../drm/img-rogue/services_kernel_client.h | 291 + + drivers/gpu/drm/img-rogue/services_km.h | 180 + + drivers/gpu/drm/img-rogue/servicesext.h | 156 + + drivers/gpu/drm/img-rogue/sofunc_pvr.h | 94 + + drivers/gpu/drm/img-rogue/srvcore.c | 1450 ++ + drivers/gpu/drm/img-rogue/srvcore.h | 229 + + drivers/gpu/drm/img-rogue/srvinit.h | 68 + + drivers/gpu/drm/img-rogue/srvkm.h | 145 + + drivers/gpu/drm/img-rogue/sync.c | 907 + + drivers/gpu/drm/img-rogue/sync.h | 292 + + drivers/gpu/drm/img-rogue/sync_checkpoint.c | 2981 +++ + drivers/gpu/drm/img-rogue/sync_checkpoint.h | 666 + + .../drm/img-rogue/sync_checkpoint_external.h | 83 + + .../gpu/drm/img-rogue/sync_checkpoint_init.h | 82 + + .../drm/img-rogue/sync_checkpoint_internal.h | 288 + + .../gpu/drm/img-rogue/sync_fallback_server.h | 204 + + drivers/gpu/drm/img-rogue/sync_internal.h | 127 + + .../gpu/drm/img-rogue/sync_prim_internal.h | 84 + + drivers/gpu/drm/img-rogue/sync_server.c | 1223 ++ + drivers/gpu/drm/img-rogue/sync_server.h | 249 + + drivers/gpu/drm/img-rogue/syscommon.h | 146 + + drivers/gpu/drm/img-rogue/sysconfig.c | 462 + + drivers/gpu/drm/img-rogue/sysconfig.h | 59 + + drivers/gpu/drm/img-rogue/sysconfig_cmn.c | 132 + + drivers/gpu/drm/img-rogue/sysinfo.h | 58 + + drivers/gpu/drm/img-rogue/sysvalidation.h | 62 + + drivers/gpu/drm/img-rogue/tlclient.c | 500 + + drivers/gpu/drm/img-rogue/tlclient.h | 257 + + drivers/gpu/drm/img-rogue/tlintern.c | 473 + + drivers/gpu/drm/img-rogue/tlintern.h | 345 + + drivers/gpu/drm/img-rogue/tlserver.c | 747 + + drivers/gpu/drm/img-rogue/tlserver.h | 97 + + drivers/gpu/drm/img-rogue/tlstream.c | 1625 ++ + drivers/gpu/drm/img-rogue/tlstream.h | 600 + + drivers/gpu/drm/img-rogue/trace_events.c | 265 + + drivers/gpu/drm/img-rogue/trace_events.h | 198 + + .../gpu/drm/img-rogue/uniq_key_splay_tree.c | 280 + + .../gpu/drm/img-rogue/uniq_key_splay_tree.h | 90 + + drivers/gpu/drm/img-rogue/vmm_impl.h | 186 + + drivers/gpu/drm/img-rogue/vmm_pvz_client.c | 138 + + drivers/gpu/drm/img-rogue/vmm_pvz_client.h | 77 + + drivers/gpu/drm/img-rogue/vmm_pvz_common.h | 65 + + drivers/gpu/drm/img-rogue/vmm_pvz_server.c | 245 + + drivers/gpu/drm/img-rogue/vmm_pvz_server.h | 121 + + drivers/gpu/drm/img-rogue/vmm_type_stub.c | 119 + + drivers/gpu/drm/img-rogue/vz_vm.h | 61 + + drivers/gpu/drm/img-rogue/vz_vmm_pvz.c | 183 + + drivers/gpu/drm/img-rogue/vz_vmm_pvz.h | 79 + + drivers/gpu/drm/img-rogue/vz_vmm_vm.c | 221 + + drivers/gpu/drm/img-rogue/xuantie_sys.c | 521 + + drivers/gpu/drm/img-rogue/xuantie_sys.h | 75 + + drivers/gpu/drm/panel/Kconfig | 9 + + drivers/gpu/drm/panel/Makefile | 3 +- + drivers/gpu/drm/panel/panel-himax-hx8279.c | 326 + + .../gpu/drm/panel/panel-jadard-jd9365da-h3.c | 37 +- + drivers/gpu/drm/panel/panel-jadard-jd9365da.c | 356 + + drivers/gpu/drm/radeon/radeon_irq_kms.c | 2 + + drivers/gpu/drm/ttm/ttm_bo_util.c | 5 +- + drivers/gpu/drm/ttm/ttm_module.c | 3 +- + drivers/gpu/drm/ttm/ttm_resource.c | 7 +- + drivers/gpu/drm/ttm/ttm_tt.c | 2 +- + drivers/gpu/drm/verisilicon/Kconfig | 62 + + drivers/gpu/drm/verisilicon/Makefile | 18 + + drivers/gpu/drm/verisilicon/dw_hdmi-th1520.c | 213 + + drivers/gpu/drm/verisilicon/dw_hdmi_th1520.h | 7 + + .../gpu/drm/verisilicon/dw_hdmi_tx_phy_gen2.h | 717 + + drivers/gpu/drm/verisilicon/dw_mipi_dsi.c | 1171 ++ + drivers/gpu/drm/verisilicon/dw_mipi_dsi.h | 10 + + drivers/gpu/drm/verisilicon/vs_crtc.c | 462 + + drivers/gpu/drm/verisilicon/vs_crtc.h | 78 + + drivers/gpu/drm/verisilicon/vs_dc.c | 1395 ++ + drivers/gpu/drm/verisilicon/vs_dc.h | 60 + + drivers/gpu/drm/verisilicon/vs_dc_dec.c | 386 + + drivers/gpu/drm/verisilicon/vs_dc_dec.h | 106 + + drivers/gpu/drm/verisilicon/vs_dc_hw.c | 2292 +++ + drivers/gpu/drm/verisilicon/vs_dc_hw.h | 578 + + drivers/gpu/drm/verisilicon/vs_dc_mmu.c | 707 + + drivers/gpu/drm/verisilicon/vs_dc_mmu.h | 98 + + drivers/gpu/drm/verisilicon/vs_drv.c | 709 + + drivers/gpu/drm/verisilicon/vs_drv.h | 64 + + drivers/gpu/drm/verisilicon/vs_fb.c | 178 + + drivers/gpu/drm/verisilicon/vs_fb.h | 13 + + drivers/gpu/drm/verisilicon/vs_gem.c | 554 + + drivers/gpu/drm/verisilicon/vs_gem.h | 71 + + drivers/gpu/drm/verisilicon/vs_plane.c | 428 + + drivers/gpu/drm/verisilicon/vs_plane.h | 77 + + drivers/gpu/drm/verisilicon/vs_simple_enc.c | 292 + + drivers/gpu/drm/verisilicon/vs_simple_enc.h | 27 + + drivers/gpu/drm/verisilicon/vs_type.h | 70 + + drivers/gpu/drm/verisilicon/vs_virtual.c | 359 + + drivers/gpu/drm/verisilicon/vs_virtual.h | 37 + + drivers/hwmon/mr75203.c | 35 +- + drivers/hwspinlock/Kconfig | 8 + + drivers/hwspinlock/Makefile | 1 + + drivers/hwspinlock/th1520_hwspinlock.c | 129 + + drivers/i2c/busses/Makefile | 1 + + drivers/i2c/busses/i2c-designware-common.c | 27 + + drivers/i2c/busses/i2c-designware-core.h | 22 +- + drivers/i2c/busses/i2c-designware-master.c | 77 +- + .../i2c/busses/i2c-designware-master_dma.c | 348 + + .../i2c/busses/i2c-designware-master_dma.h | 6 + + drivers/i2c/busses/i2c-designware-platdrv.c | 2 + + drivers/iio/adc/Kconfig | 13 + + drivers/iio/adc/Makefile | 1 + + drivers/iio/adc/th1520-adc.c | 573 + + drivers/iio/adc/th1520-adc.h | 192 + + drivers/mailbox/Kconfig | 8 + + drivers/mailbox/Makefile | 2 + + drivers/mailbox/th1520-mailbox.c | 614 + + drivers/mmc/host/Kconfig | 14 + + drivers/mmc/host/Makefile | 1 + + drivers/mmc/host/sdhci-of-dwcmshc.c | 649 + + drivers/mmc/host/sdhci-sophgo.c | 619 + + drivers/mmc/host/sdhci-sophgo.h | 121 + + drivers/mmc/host/sdhci.c | 12 +- + drivers/mmc/host/sdhci.h | 4 + + drivers/mtd/spi-nor/controllers/Kconfig | 11 + + drivers/mtd/spi-nor/controllers/Makefile | 1 + + .../mtd/spi-nor/controllers/sophgo-spifmc.c | 445 + + drivers/mtd/spi-nor/gigadevice.c | 14 + + drivers/net/ethernet/intel/i40e/i40e_common.c | 3 +- + drivers/net/ethernet/intel/ixgbe/ixgbe_type.h | 2 +- + drivers/net/ethernet/stmicro/stmmac/Kconfig | 18 + + drivers/net/ethernet/stmicro/stmmac/Makefile | 2 + + .../ethernet/stmicro/stmmac/dwmac-sophgo.c | 268 + + .../ethernet/stmicro/stmmac/dwmac-xuantie.c | 584 + + .../net/ethernet/stmicro/stmmac/dwmac_lib.c | 2 +- + drivers/net/wireless/Kconfig | 2 +- + drivers/net/wireless/Makefile | 1 + + drivers/net/wireless/aic8800/Kconfig | 17 + + drivers/net/wireless/aic8800/Makefile | 84 + + .../wireless/aic8800/aic8800_bsp/.gitignore | 10 + + .../net/wireless/aic8800/aic8800_bsp/Makefile | 135 + + .../aic8800/aic8800_bsp/aic8800d80_compat.c | 252 + + .../aic8800/aic8800_bsp/aic8800d80_compat.h | 24 + + .../aic8800/aic8800_bsp/aic8800dc_compat.c | 2275 +++ + .../aic8800/aic8800_bsp/aic8800dc_compat.h | 37 + + .../aic8800/aic8800_bsp/aic_bsp_driver.c | 2051 ++ + .../aic8800/aic8800_bsp/aic_bsp_driver.h | 581 + + .../aic8800/aic8800_bsp/aic_bsp_export.h | 65 + + .../aic8800/aic8800_bsp/aic_bsp_main.c | 393 + + .../wireless/aic8800/aic8800_bsp/aicsdio.c | 1980 ++ + .../wireless/aic8800/aic8800_bsp/aicsdio.h | 148 + + .../aic8800/aic8800_bsp/aicsdio_txrxif.c | 465 + + .../aic8800/aic8800_bsp/aicsdio_txrxif.h | 214 + + .../aic8800_bsp/aicwf_firmware_array.c | 16138 ++++++++++++++++ + .../aic8800_bsp/aicwf_firmware_array.h | 3 + + .../aic8800/aic8800_bsp/aicwf_txq_prealloc.c | 62 + + .../aic8800/aic8800_bsp/aicwf_txq_prealloc.h | 4 + + .../net/wireless/aic8800/aic8800_bsp/md5.c | 161 + + .../net/wireless/aic8800/aic8800_bsp/md5.h | 48 + + .../aic8800/aic8800_bsp/rwnx_version_gen.h | 4 + + .../wireless/aic8800/aic8800_btlpm/.gitignore | 10 + + .../wireless/aic8800/aic8800_btlpm/Kconfig | 5 + + .../wireless/aic8800/aic8800_btlpm/Makefile | 81 + + .../aic8800/aic8800_btlpm/aic8800_btlpm.c | 1167 ++ + .../aic8800_btlpm/aic_bluetooth_main.c | 88 + + .../aic8800/aic8800_btlpm/aic_bsp_export.h | 19 + + .../net/wireless/aic8800/aic8800_btlpm/lpm.c | 1111 ++ + .../net/wireless/aic8800/aic8800_btlpm/lpm.h | 21 + + .../wireless/aic8800/aic8800_btlpm/rfkill.c | 81 + + .../wireless/aic8800/aic8800_btlpm/rfkill.h | 17 + + .../wireless/aic8800/aic8800_fdrv/.gitignore | 10 + + .../net/wireless/aic8800/aic8800_fdrv/Kconfig | 4 + + .../wireless/aic8800/aic8800_fdrv/Makefile | 376 + + .../aic8800/aic8800_fdrv/aic_br_ext.c | 1569 ++ + .../aic8800/aic8800_fdrv/aic_br_ext.h | 73 + + .../aic8800/aic8800_fdrv/aic_bsp_export.h | 58 + + .../aic8800/aic8800_fdrv/aic_btsdio.c | 1310 ++ + .../aic8800/aic8800_fdrv/aic_btsdio.h | 549 + + .../aic8800/aic8800_fdrv/aic_vendor.c | 909 + + .../aic8800/aic8800_fdrv/aic_vendor.h | 346 + + .../aic8800_fdrv/aicwf_compat_8800d80.c | 66 + + .../aic8800_fdrv/aicwf_compat_8800d80.h | 9 + + .../aic8800_fdrv/aicwf_compat_8800dc.c | 542 + + .../aic8800_fdrv/aicwf_compat_8800dc.h | 15 + + .../aic8800/aic8800_fdrv/aicwf_debug.h | 56 + + .../aic8800/aic8800_fdrv/aicwf_rx_prealloc.c | 97 + + .../aic8800/aic8800_fdrv/aicwf_rx_prealloc.h | 24 + + .../aic8800/aic8800_fdrv/aicwf_sdio.c | 2591 +++ + .../aic8800/aic8800_fdrv/aicwf_sdio.h | 186 + + .../aic8800/aic8800_fdrv/aicwf_tcp_ack.c | 633 + + .../aic8800/aic8800_fdrv/aicwf_tcp_ack.h | 111 + + .../aic8800/aic8800_fdrv/aicwf_txrxif.c | 885 + + .../aic8800/aic8800_fdrv/aicwf_txrxif.h | 262 + + .../wireless/aic8800/aic8800_fdrv/aicwf_usb.c | 957 + + .../wireless/aic8800/aic8800_fdrv/aicwf_usb.h | 99 + + .../wireless/aic8800/aic8800_fdrv/hal_desc.h | 353 + + .../aic8800/aic8800_fdrv/ipc_compat.h | 25 + + .../wireless/aic8800/aic8800_fdrv/ipc_host.c | 52 + + .../wireless/aic8800/aic8800_fdrv/ipc_host.h | 168 + + .../aic8800/aic8800_fdrv/ipc_shared.h | 785 + + .../wireless/aic8800/aic8800_fdrv/lmac_mac.h | 564 + + .../wireless/aic8800/aic8800_fdrv/lmac_msg.h | 3082 +++ + .../aic8800/aic8800_fdrv/lmac_types.h | 62 + + .../net/wireless/aic8800/aic8800_fdrv/md5.c | 161 + + .../net/wireless/aic8800/aic8800_fdrv/md5.h | 48 + + .../aic8800/aic8800_fdrv/reg_access.h | 148 + + .../net/wireless/aic8800/aic8800_fdrv/regdb.c | 2898 +++ + .../aic8800/aic8800_fdrv/rwnx_bfmer.c | 105 + + .../aic8800/aic8800_fdrv/rwnx_bfmer.h | 100 + + .../aic8800/aic8800_fdrv/rwnx_cfgfile.c | 239 + + .../aic8800/aic8800_fdrv/rwnx_cfgfile.h | 35 + + .../wireless/aic8800/aic8800_fdrv/rwnx_cmds.c | 539 + + .../wireless/aic8800/aic8800_fdrv/rwnx_cmds.h | 124 + + .../aic8800/aic8800_fdrv/rwnx_compat.h | 451 + + .../aic8800/aic8800_fdrv/rwnx_debugfs.c | 2455 +++ + .../aic8800/aic8800_fdrv/rwnx_debugfs.h | 202 + + .../wireless/aic8800/aic8800_fdrv/rwnx_defs.h | 746 + + .../wireless/aic8800/aic8800_fdrv/rwnx_dini.c | 297 + + .../wireless/aic8800/aic8800_fdrv/rwnx_dini.h | 20 + + .../aic8800/aic8800_fdrv/rwnx_events.h | 1326 ++ + .../aic8800/aic8800_fdrv/rwnx_fw_trace.c | 48 + + .../aic8800/aic8800_fdrv/rwnx_fw_trace.h | 35 + + .../wireless/aic8800/aic8800_fdrv/rwnx_gki.c | 408 + + .../wireless/aic8800/aic8800_fdrv/rwnx_gki.h | 72 + + .../wireless/aic8800/aic8800_fdrv/rwnx_irqs.c | 65 + + .../wireless/aic8800/aic8800_fdrv/rwnx_irqs.h | 20 + + .../wireless/aic8800/aic8800_fdrv/rwnx_main.c | 7394 +++++++ + .../wireless/aic8800/aic8800_fdrv/rwnx_main.h | 40 + + .../wireless/aic8800/aic8800_fdrv/rwnx_mesh.c | 42 + + .../wireless/aic8800/aic8800_fdrv/rwnx_mesh.h | 45 + + .../aic8800/aic8800_fdrv/rwnx_mod_params.c | 1754 ++ + .../aic8800/aic8800_fdrv/rwnx_mod_params.h | 70 + + .../aic8800/aic8800_fdrv/rwnx_msg_rx.c | 1567 ++ + .../aic8800/aic8800_fdrv/rwnx_msg_rx.h | 19 + + .../aic8800/aic8800_fdrv/rwnx_msg_tx.c | 3677 ++++ + .../aic8800/aic8800_fdrv/rwnx_msg_tx.h | 186 + + .../aic8800/aic8800_fdrv/rwnx_mu_group.c | 659 + + .../aic8800/aic8800_fdrv/rwnx_mu_group.h | 181 + + .../wireless/aic8800/aic8800_fdrv/rwnx_pci.c | 94 + + .../wireless/aic8800/aic8800_fdrv/rwnx_pci.h | 17 + + .../aic8800/aic8800_fdrv/rwnx_platform.c | 2108 ++ + .../aic8800/aic8800_fdrv/rwnx_platform.h | 136 + + .../wireless/aic8800/aic8800_fdrv/rwnx_prof.h | 133 + + .../aic8800/aic8800_fdrv/rwnx_radar.c | 1644 ++ + .../aic8800/aic8800_fdrv/rwnx_radar.h | 160 + + .../wireless/aic8800/aic8800_fdrv/rwnx_rx.c | 2501 +++ + .../wireless/aic8800/aic8800_fdrv/rwnx_rx.h | 392 + + .../wireless/aic8800/aic8800_fdrv/rwnx_strs.c | 266 + + .../wireless/aic8800/aic8800_fdrv/rwnx_strs.h | 31 + + .../wireless/aic8800/aic8800_fdrv/rwnx_tdls.c | 785 + + .../wireless/aic8800/aic8800_fdrv/rwnx_tdls.h | 54 + + .../aic8800/aic8800_fdrv/rwnx_testmode.c | 230 + + .../aic8800/aic8800_fdrv/rwnx_testmode.h | 64 + + .../wireless/aic8800/aic8800_fdrv/rwnx_tx.c | 1953 ++ + .../wireless/aic8800/aic8800_fdrv/rwnx_tx.h | 188 + + .../wireless/aic8800/aic8800_fdrv/rwnx_txq.c | 1370 ++ + .../wireless/aic8800/aic8800_fdrv/rwnx_txq.h | 402 + + .../aic8800/aic8800_fdrv/rwnx_utils.c | 39 + + .../aic8800/aic8800_fdrv/rwnx_utils.h | 133 + + .../wireless/aic8800/aic8800_fdrv/rwnx_v7.c | 195 + + .../wireless/aic8800/aic8800_fdrv/rwnx_v7.h | 20 + + .../aic8800/aic8800_fdrv/rwnx_version.h | 12 + + .../aic8800/aic8800_fdrv/rwnx_version_gen.h | 4 + + .../aic8800/aic8800_fdrv/rwnx_wakelock.c | 86 + + .../aic8800/aic8800_fdrv/rwnx_wakelock.h | 21 + + .../wireless/aic8800/aic8800_fdrv/sdio_host.c | 137 + + .../wireless/aic8800/aic8800_fdrv/sdio_host.h | 41 + + .../wireless/aic8800/aic8800_fdrv/usb_host.c | 146 + + .../wireless/aic8800/aic8800_fdrv/usb_host.h | 41 + + drivers/nvmem/Kconfig | 10 + + drivers/nvmem/Makefile | 2 + + drivers/nvmem/th1520-efuse.c | 1197 ++ + drivers/pci/controller/cadence/Kconfig | 11 + + drivers/pci/controller/cadence/Makefile | 1 + + .../controller/cadence/pcie-cadence-sophgo.c | 973 + + .../controller/cadence/pcie-cadence-sophgo.h | 17 + + drivers/pci/msi/msi.c | 97 +- + drivers/pci/pcie/portdrv.c | 2 +- + drivers/phy/Kconfig | 1 + + drivers/phy/Makefile | 3 +- + drivers/phy/synopsys/Kconfig | 13 + + drivers/phy/synopsys/Makefile | 3 + + drivers/phy/synopsys/phy-dw-mipi-dphy.c | 824 + + drivers/pinctrl/Kconfig | 11 +- + drivers/pinctrl/Makefile | 2 + + drivers/pinctrl/pinctrl-th1520.c | 1180 ++ + drivers/pinctrl/sophgo/Makefile | 2 + + drivers/pinctrl/sophgo/pinctrl-mango.c | 453 + + drivers/pinctrl/sophgo/pinctrl-sophgo.c | 292 + + drivers/pinctrl/sophgo/pinctrl-sophgo.h | 70 + + drivers/pwm/Kconfig | 11 + + drivers/pwm/Makefile | 2 + + drivers/pwm/pwm-sophgo.c | 276 + + drivers/pwm/pwm-xuantie.c | 270 + + drivers/regulator/Kconfig | 10 + + drivers/regulator/Makefile | 1 + + drivers/regulator/th1520-aon-regulator.c | 770 + + drivers/reset/Kconfig | 10 + + drivers/reset/Makefile | 2 + + drivers/reset/reset-sophgo.c | 163 + + drivers/reset/reset-th1520.c | 170 + + drivers/rpmsg/Kconfig | 4 + + drivers/rpmsg/Makefile | 1 + + drivers/rpmsg/th1520_rpmsg.c | 958 + + drivers/rtc/Kconfig | 18 +- + drivers/rtc/Makefile | 1 + + drivers/rtc/rtc-astbmc.c | 535 + + drivers/rtc/rtc-xgene.c | 32 + + drivers/soc/Kconfig | 1 + + drivers/soc/Makefile | 2 + + drivers/soc/sophgo/Makefile | 3 + + drivers/soc/sophgo/tach/sophgo-tach.c | 330 + + drivers/soc/sophgo/top/top_intc.c | 412 + + drivers/soc/sophgo/umcu/mcu.c | 1144 ++ + drivers/soc/xuantie/Kconfig | 34 + + drivers/soc/xuantie/Makefile | 13 + + drivers/soc/xuantie/nna/GPLHEADER | 356 + + drivers/soc/xuantie/nna/Kconfig | 64 + + drivers/soc/xuantie/nna/Makefile | 7 + + drivers/soc/xuantie/nna/README | 29 + + drivers/soc/xuantie/nna/build.mk | 161 + + .../dmabuf_exporter/FindDmaBufExporter.cmake | 8 + + .../soc/xuantie/nna/dmabuf_exporter/Makefile | 36 + + .../soc/xuantie/nna/dmabuf_exporter/README | 17 + + .../xuantie/nna/dmabuf_exporter/de_common.c | 176 + + .../soc/xuantie/nna/dmabuf_exporter/de_heap.h | 28 + + .../nna/dmabuf_exporter/de_heap_carveout.c | 468 + + .../nna/dmabuf_exporter/de_heap_coherent.c | 303 + + .../xuantie/nna/dmabuf_exporter/de_heap_ion.c | 212 + + .../xuantie/nna/dmabuf_exporter/de_heap_ion.h | 46 + + .../nna/dmabuf_exporter/de_heap_ion_example.c | 205 + + .../nna/dmabuf_exporter/de_heap_noncoherent.c | 496 + + .../nna/dmabuf_exporter/test/dma-map.c | 77 + + .../nna/dmabuf_exporter/test/dma-test.c | 61 + + .../dmabuf_exporter/uapi/dmabuf_exporter.h | 20 + + .../dmabuf_exporter/uapi/kernel_4x14/ion.h | 136 + + .../nna/dmabuf_exporter/uapi/kernel_4x4/ion.h | 203 + + drivers/soc/xuantie/nna/fenrir_loki/Makefile | 3 + + .../soc/xuantie/nna/fenrir_loki/loki-intc.c | 159 + + .../soc/xuantie/nna/fenrir_loki/loki-main.c | 110 + + drivers/soc/xuantie/nna/fenrir_loki/loki.h | 44 + + drivers/soc/xuantie/nna/img_mem/Makefile | 34 + + .../xuantie/nna/img_mem/img_mem_anonymous.c | 349 + + .../xuantie/nna/img_mem/img_mem_carveout.c | 854 + + .../xuantie/nna/img_mem/img_mem_coherent.c | 204 + + .../soc/xuantie/nna/img_mem/img_mem_dmabuf.c | 551 + + drivers/soc/xuantie/nna/img_mem/img_mem_ion.c | 266 + + drivers/soc/xuantie/nna/img_mem/img_mem_man.c | 2768 +++ + .../xuantie/nna/img_mem/img_mem_man_priv.h | 213 + + drivers/soc/xuantie/nna/img_mem/img_mem_ocm.c | 173 + + .../soc/xuantie/nna/img_mem/img_mem_unified.c | 1060 + + drivers/soc/xuantie/nna/img_mem/img_pdump.c | 194 + + .../soc/xuantie/nna/img_mem/imgmmu/imgmmu.c | 1449 ++ + .../xuantie/nna/img_mem/imgmmu/kernel_heap.c | 307 + + .../soc/xuantie/nna/img_mem/imgmmu/mmu_defs.h | 146 + + .../xuantie/nna/img_mem/imgmmu/mmulib/heap.h | 159 + + .../xuantie/nna/img_mem/imgmmu/mmulib/mmu.h | 449 + + .../xuantie/nna/include/hwdefs/aura_system.h | 4 + + .../xuantie/nna/include/hwdefs/gyrus_system.h | 24 + + .../xuantie/nna/include/hwdefs/magna_system.h | 4 + + .../nna/include/hwdefs/mirage_system.h | 4 + + .../nna/include/hwdefs/nn_sys_cr_gyrus.h | 355 + + .../nna/include/hwdefs/nn_sys_cr_vagus.h | 364 + + .../xuantie/nna/include/hwdefs/vagus_system.h | 8 + + .../xuantie/nna/include/hwdefs/vha_cr_aura.h | 5471 ++++++ + .../xuantie/nna/include/hwdefs/vha_cr_gyrus.h | 4998 +++++ + .../xuantie/nna/include/hwdefs/vha_cr_magna.h | 6553 +++++++ + .../nna/include/hwdefs/vha_cr_mirage.h | 3171 +++ + .../soc/xuantie/nna/include/hwdefs/vha_tb.h | 101 + + drivers/soc/xuantie/nna/include/img_mem_man.h | 296 + + drivers/soc/xuantie/nna/include/nexef_plat.h | 55 + + .../xuantie/nna/include/uapi/img_mem_man.h | 118 + + .../soc/xuantie/nna/include/uapi/version.h | 49 + + drivers/soc/xuantie/nna/include/uapi/vha.h | 423 + + .../soc/xuantie/nna/include/uapi/vha_errors.h | 116 + + .../soc/xuantie/nna/include/vha_drv_common.h | 72 + + .../soc/xuantie/nna/include/vha_trace_point.h | 104 + + .../soc/xuantie/nna/nexef_platform/Makefile | 24 + + .../soc/xuantie/nna/nexef_platform/README.md | 110 + + .../xuantie/nna/nexef_platform/nexef_plat.c | 1799 ++ + .../nna/nexef_platform/set_fpga_freq.py | 12 + + drivers/soc/xuantie/nna/vha/Makefile | 139 + + drivers/soc/xuantie/nna/vha/multi/vha_dev.c | 4213 ++++ + drivers/soc/xuantie/nna/vha/multi/vha_mmu.c | 261 + + .../soc/xuantie/nna/vha/multi/vha_mt19937.c | 229 + + .../soc/xuantie/nna/vha/multi/vha_mt19937.h | 93 + + drivers/soc/xuantie/nna/vha/multi/vha_regs.h | 391 + + .../soc/xuantie/nna/vha/multi/vha_sc_dbg.c | 264 + + drivers/soc/xuantie/nna/vha/multi/vha_wm.c | 1896 ++ + .../soc/xuantie/nna/vha/platform/vha_plat.h | 104 + + .../nna/vha/platform/vha_plat_apollo.c | 862 + + .../xuantie/nna/vha/platform/vha_plat_dt.c | 386 + + .../xuantie/nna/vha/platform/vha_plat_dt.h | 78 + + .../nna/vha/platform/vha_plat_dt_example.c | 156 + + .../nna/vha/platform/vha_plat_dt_example.dts | 60 + + .../nna/vha/platform/vha_plat_dt_fenrir.dts | 81 + + .../xuantie/nna/vha/platform/vha_plat_dummy.c | 361 + + .../xuantie/nna/vha/platform/vha_plat_emu.c | 641 + + .../xuantie/nna/vha/platform/vha_plat_frost.c | 1004 + + .../xuantie/nna/vha/platform/vha_plat_nexef.c | 491 + + .../xuantie/nna/vha/platform/vha_plat_odin.c | 1152 ++ + .../xuantie/nna/vha/platform/vha_plat_orion.c | 1065 + + .../vha_plat_param_xuantie_th1520_fpga_c910.h | 36 + + .../xuantie/nna/vha/platform/vha_plat_pci.c | 483 + + .../nna/vha/platform/vha_plat_xuantie.c | 403 + + .../vha/platform/vha_plat_xuantie_th1520.c | 181 + + .../vha_plat_xuantie_th1520_fpga_c910.c | 122 + + drivers/soc/xuantie/nna/vha/single/vha_cnn.c | 761 + + drivers/soc/xuantie/nna/vha/single/vha_dev.c | 1615 ++ + .../soc/xuantie/nna/vha/single/vha_dev_ax2.c | 190 + + .../soc/xuantie/nna/vha/single/vha_dev_ax3.c | 207 + + drivers/soc/xuantie/nna/vha/single/vha_mmu.c | 241 + + drivers/soc/xuantie/nna/vha/single/vha_regs.h | 191 + + drivers/soc/xuantie/nna/vha/vha_api.c | 1060 + + drivers/soc/xuantie/nna/vha/vha_common.c | 2783 +++ + drivers/soc/xuantie/nna/vha/vha_common.h | 1174 ++ + drivers/soc/xuantie/nna/vha/vha_dbg.c | 1913 ++ + drivers/soc/xuantie/nna/vha/vha_devfreq.c | 665 + + drivers/soc/xuantie/nna/vha/vha_info.c | 191 + + drivers/soc/xuantie/nna/vha/vha_io.h | 373 + + drivers/soc/xuantie/nna/vha/vha_monitor.c | 125 + + drivers/soc/xuantie/nna/vha/vha_pdump.c | 347 + + drivers/soc/xuantie/th1520-iopmp.c | 707 + + drivers/soc/xuantie/th1520_event.c | 280 + + drivers/soc/xuantie/th1520_regdump.c | 198 + + drivers/soc/xuantie/th1520_system_monitor.c | 898 + + drivers/soc/xuantie/video_memory/Kconfig | 3 + + drivers/soc/xuantie/video_memory/Makefile | 116 + + .../soc/xuantie/video_memory/driver/Makefile | 47 + + .../xuantie/video_memory/driver/rsvmem_pool.c | 178 + + .../xuantie/video_memory/driver/rsvmem_pool.h | 36 + + .../video_memory/driver/video_memory.c | 1702 ++ + .../video_memory/driver/video_memory.h | 69 + + drivers/soc/xuantie/video_memory/lib/Makefile | 16 + + .../soc/xuantie/video_memory/lib/video_mem.c | 331 + + .../soc/xuantie/video_memory/lib/video_mem.h | 85 + + .../soc/xuantie/video_memory/test/Makefile | 70 + + .../video_memory/test/video_memory_test.c | 175 + + .../soc/xuantie/vpu-vc8000d-kernel/COPYING | 674 + + .../soc/xuantie/vpu-vc8000d-kernel/Kconfig | 3 + + .../soc/xuantie/vpu-vc8000d-kernel/Makefile | 80 + + .../vpu-vc8000d-kernel/addons/ko/insmod.sh | 5 + + .../vpu-vc8000d-kernel/addons/ko/rmmod.sh | 3 + + .../vpu-vc8000d-kernel/linux/dwl/dwl_defs.h | 142 + + .../linux/memalloc/Makefile | 88 + + .../vpu-vc8000d-kernel/linux/memalloc/README | 44 + + .../linux/memalloc/build_for_pcie.sh | 22 + + .../linux/memalloc/memalloc.c | 369 + + .../linux/memalloc/memalloc.h | 88 + + .../linux/memalloc/memalloc_load.sh | 99 + + .../linux/memalloc/testbench_memalloc.c | 207 + + .../linux/subsys_driver/Makefile | 95 + + .../linux/subsys_driver/README | 49 + + .../linux/subsys_driver/bidirect_list.c | 220 + + .../linux/subsys_driver/bidirect_list.h | 107 + + .../linux/subsys_driver/build_for_mpcore.sh | 10 + + .../linux/subsys_driver/build_for_socle.sh | 10 + + .../linux/subsys_driver/build_for_vexpress.sh | 10 + + .../linux/subsys_driver/dec_devfreq.h | 55 + + .../linux/subsys_driver/driver_load.sh | 43 + + .../linux/subsys_driver/driver_load_sc.sh | 43 + + .../freertos/dev_common_freertos.h | 255 + + .../freertos/hantro_dec_freertos.c | 2065 ++ + .../freertos/hantro_vcmd_freertos.c | 3843 ++++ + .../linux/subsys_driver/freertos/io_tools.c | 86 + + .../linux/subsys_driver/freertos/io_tools.h | 89 + + .../freertos/memalloc_freertos.c | 484 + + .../freertos/memalloc_freertos.h | 104 + + .../subsys_driver/freertos/subsys_freertos.c | 192 + + .../subsys_driver/freertos/user_freertos.c | 151 + + .../subsys_driver/freertos/user_freertos.h | 79 + + .../linux/subsys_driver/hantro_axife.c | 87 + + .../linux/subsys_driver/hantro_dec.c | 3676 ++++ + .../linux/subsys_driver/hantro_mmu.c | 1912 ++ + .../linux/subsys_driver/hantro_vcmd.c | 4342 +++++ + .../linux/subsys_driver/hantroaxife.h | 63 + + .../linux/subsys_driver/hantrodec.h | 199 + + .../linux/subsys_driver/hantrommu.h | 109 + + .../linux/subsys_driver/hantrovcmd.h | 210 + + .../linux/subsys_driver/kernel_allocator.c | 1296 ++ + .../linux/subsys_driver/kernel_allocator.h | 121 + + .../linux/subsys_driver/subsys.c | 203 + + .../linux/subsys_driver/subsys.h | 208 + + .../linux/subsys_driver/vcmdregisterenum.h | 156 + + .../linux/subsys_driver/vcmdregistertable.h | 156 + + .../linux/subsys_driver/vcmdswhwregisters.c | 148 + + .../linux/subsys_driver/vcmdswhwregisters.h | 233 + + .../linux/subsys_driver/vdec_trace_point.h | 43 + + .../soc/xuantie/vpu-vc8000e-kernel/COPYING | 674 + + .../soc/xuantie/vpu-vc8000e-kernel/Kconfig | 3 + + .../soc/xuantie/vpu-vc8000e-kernel/Makefile | 91 + + .../vpu-vc8000e-kernel/addons/ko/insmod.sh | 5 + + .../vpu-vc8000e-kernel/addons/ko/rmmod.sh | 3 + + .../linux/kernel_module/Makefile | 213 + + .../linux/kernel_module/README | 42 + + .../linux/kernel_module/bidirect_list.c | 222 + + .../linux/kernel_module/bidirect_list.h | 116 + + .../linux/kernel_module/driver_load.sh | 61 + + .../linux/kernel_module/hantro_mmu.c | 1911 ++ + .../linux/kernel_module/hantrommu.h | 155 + + .../linux/kernel_module/vc8000_axife.c | 98 + + .../linux/kernel_module/vc8000_axife.h | 77 + + .../linux/kernel_module/vc8000_devfreq.h | 54 + + .../linux/kernel_module/vc8000_driver.c | 102 + + .../linux/kernel_module/vc8000_driver.h | 349 + + .../kernel_module/vc8000_normal_driver.c | 1459 ++ + .../linux/kernel_module/vc8000_vcmd_driver.c | 5594 ++++++ + .../linux/kernel_module/vcmdregisterenum.h | 157 + + .../linux/kernel_module/vcmdregistertable.h | 157 + + .../linux/kernel_module/vcmdswhwregisters.c | 180 + + .../linux/kernel_module/vcmdswhwregisters.h | 244 + + .../linux/kernel_module/venc_trace_point.h | 43 + + drivers/spi/Kconfig | 6 + + drivers/spi/Makefile | 1 + + drivers/spi/spi-dw-mmio-quad.c | 216 + + drivers/spi/spi-dw-quad.c | 830 + + drivers/spi/spi-dw-quad.h | 365 + + drivers/spi/spidev.c | 40 + + drivers/tee/Kconfig | 2 +- + drivers/tee/optee/Kconfig | 2 +- + drivers/tee/optee/call.c | 2 + + drivers/tee/optee/smc_abi.c | 37 + + drivers/tty/serial/8250/8250_dma.c | 134 +- + drivers/tty/serial/8250/8250_dw.c | 2 +- + drivers/tty/serial/8250/8250_port.c | 12 +- + drivers/usb/dwc3/Kconfig | 20 + + drivers/usb/dwc3/Makefile | 2 + + drivers/usb/dwc3/core.c | 22 +- + drivers/usb/dwc3/dwc3-xuantie.c | 275 + + drivers/watchdog/Kconfig | 14 + + drivers/watchdog/Makefile | 1 + + drivers/watchdog/dw_wdt.c | 13 +- + drivers/watchdog/th1520_wdt.c | 393 + + include/drm/bridge/dw_hdmi.h | 5 + + .../dt-bindings/clock/sophgo-mango-clock.h | 165 + + include/dt-bindings/clock/sophgo.h | 15 + + include/dt-bindings/clock/th1520-audiosys.h | 35 + + include/dt-bindings/clock/th1520-dspsys.h | 33 + + .../dt-bindings/clock/th1520-fm-ap-clock.h | 513 + + include/dt-bindings/clock/th1520-miscsys.h | 28 + + include/dt-bindings/clock/th1520-visys.h | 54 + + include/dt-bindings/clock/th1520-vosys.h | 41 + + include/dt-bindings/clock/th1520-vpsys.h | 26 + + include/dt-bindings/firmware/xuantie/rsrc.h | 18 + + .../dt-bindings/reset/sophgo-mango-resets.h | 96 + + .../dt-bindings/reset/xuantie,th1520-reset.h | 28 + + .../dt-bindings/soc/th1520_system_status.h | 38 + + .../dt-bindings/soc/xuantie,th1520-iopmp.h | 41 + + include/linux/cpuhotplug.h | 1 + + include/linux/firmware/xuantie/ipc.h | 167 + + include/linux/firmware/xuantie/th1520_event.h | 35 + + include/linux/mlx4/device.h | 2 +- + include/linux/sync_core.h | 16 +- + include/linux/th1520_proc_debug.h | 13 + + include/linux/th1520_rpmsg.h | 99 + + include/soc/xuantie/th1520_system_monitor.h | 71 + + include/soc/xuantie/th1520_system_status.h | 36 + + include/uapi/drm/drm_fourcc.h | 90 + + include/uapi/drm/vs_drm.h | 50 + + init/Kconfig | 3 + + kernel/panic.c | 8 + + kernel/sched/core.c | 11 +- + kernel/sched/fair.c | 3 + + kernel/sched/membarrier.c | 13 +- + kernel/time/tick-oneshot.c | 2 +- + mm/memblock.c | 6 +- + mm/pgtable-generic.c | 1 + + net/rfkill/Makefile | 1 + + net/rfkill/rfkill-bt.c | 244 + + net/rfkill/rfkill-wlan.c | 283 + + scripts/package/builddeb | 4 +- + scripts/package/kernel.spec | 10 + + sound/core/pcm_lib.c | 1 + + sound/pci/hda/hda_intel.c | 5 +- + sound/soc/Kconfig | 1 + + sound/soc/Makefile | 1 + + sound/soc/codecs/Kconfig | 19 + + sound/soc/codecs/Makefile | 6 + + sound/soc/codecs/aw87519.c | 787 + + sound/soc/codecs/aw87519.h | 105 + + sound/soc/codecs/es7210.c | 2019 ++ + sound/soc/codecs/es7210.h | 140 + + sound/soc/codecs/es8156.c | 929 + + sound/soc/codecs/es8156.h | 85 + + sound/soc/soc-generic-dmaengine-pcm.c | 4 +- + sound/soc/xuantie/Kconfig | 53 + + sound/soc/xuantie/Makefile | 17 + + sound/soc/xuantie/th1520-audio-cpr.h | 79 + + sound/soc/xuantie/th1520-hdmi-pcm.c | 109 + + sound/soc/xuantie/th1520-i2s-8ch.c | 754 + + sound/soc/xuantie/th1520-i2s-common.c | 53 + + sound/soc/xuantie/th1520-i2s.c | 834 + + sound/soc/xuantie/th1520-i2s.h | 548 + + sound/soc/xuantie/th1520-pcm-dma.c | 48 + + sound/soc/xuantie/th1520-pcm.h | 18 + + sound/soc/xuantie/th1520-spdif.c | 502 + + sound/soc/xuantie/th1520-spdif.h | 233 + + sound/soc/xuantie/th1520-tdm.c | 610 + + sound/soc/xuantie/th1520-tdm.h | 122 + + tools/lib/perf/cpumap.c | 10 +- + tools/perf/pmu-events/arch/riscv/mapfile.csv | 2 + + .../arch/riscv/thead/c900-legacy/cache.json | 67 + + .../riscv/thead/c900-legacy/firmware.json | 68 + + .../riscv/thead/c900-legacy/instruction.json | 72 + + .../riscv/thead/c900-legacy/microarch.json | 80 + + .../arch/riscv/thead/th1520-ddr/metrics.json | 713 + + .../thead/th1520-ddr/uncore-ddr-pmu.json | 1550 ++ + 1263 files changed, 554053 insertions(+), 572 deletions(-) + create mode 100644 Documentation/devicetree/bindings/hwlock/xuantie,th1520-hwspinlock.yaml create mode 100644 Documentation/devicetree/bindings/iio/adc/thead,th1520-adc.yaml create mode 100644 Documentation/devicetree/bindings/iio/adc/xuantie,th1520-adc.yaml create mode 100644 Documentation/devicetree/bindings/mailbox/xuantie-th1520-mailbox.txt create mode 100644 Documentation/devicetree/bindings/net/xuantie,dwmac.yaml + create mode 100644 Documentation/devicetree/bindings/nvmem/xuantie,th1520-efuse.txt create mode 100644 Documentation/devicetree/bindings/pinctrl/thead,th1520-pinctrl.yaml create mode 100644 Documentation/devicetree/bindings/pwm/xuantie,th1520-pwm.yaml create mode 100644 Documentation/devicetree/bindings/reset/xuantie,th1520-reset.yaml @@ -909,6 +1282,8 @@ Signed-off-by: Mingzheng Xing create mode 100644 Documentation/devicetree/bindings/sound/everest,es7210.txt create mode 100644 Documentation/devicetree/bindings/sound/everest,es8156.yaml create mode 100644 Documentation/devicetree/bindings/sound/xuantie,th1520-i2s.yaml + create mode 100644 Documentation/devicetree/bindings/sound/xuantie,th1520-spdif.yaml + create mode 100644 Documentation/devicetree/bindings/sound/xuantie,th1520-tdm.yaml create mode 100644 Documentation/devicetree/bindings/spi/xuantie,th1520-qspi.yaml create mode 100644 Documentation/devicetree/bindings/spi/xuantie,th1520-spi.yaml create mode 100644 Documentation/devicetree/bindings/usb/xuantie,th1520-usb.yaml @@ -936,9 +1311,11 @@ Signed-off-by: Mingzheng Xing create mode 100644 arch/riscv/boot/dts/sophgo/mango-top-intc2.dtsi create mode 100644 arch/riscv/boot/dts/sophgo/mango-yixin-s2110.dts create mode 100644 arch/riscv/boot/dts/sophgo/mango.dtsi + create mode 100644 arch/riscv/boot/dts/thead/th1520-lichee-pi-4a-16g.dts + create mode 100644 arch/riscv/boot/dts/thead/th1520-lpi4a-dsi0.dts + create mode 100644 arch/riscv/boot/dts/thead/th1520-lpi4a-hx8279.dts create mode 100644 arch/riscv/configs/sg2042_defconfig create mode 100644 arch/riscv/configs/th1520_defconfig - create mode 100644 arch/riscv/include/asm/membarrier.h create mode 100644 arch/riscv/include/asm/sync_core.h create mode 100644 drivers/clk/sophgo/Makefile create mode 100644 drivers/clk/sophgo/clk-dummy.c @@ -1545,6 +1922,8 @@ Signed-off-by: Mingzheng Xing create mode 100644 drivers/gpu/drm/img-rogue/vz_vmm_vm.c create mode 100644 drivers/gpu/drm/img-rogue/xuantie_sys.c create mode 100644 drivers/gpu/drm/img-rogue/xuantie_sys.h + create mode 100644 drivers/gpu/drm/panel/panel-himax-hx8279.c + create mode 100644 drivers/gpu/drm/panel/panel-jadard-jd9365da.c create mode 100644 drivers/gpu/drm/verisilicon/Kconfig create mode 100644 drivers/gpu/drm/verisilicon/Makefile create mode 100644 drivers/gpu/drm/verisilicon/dw_hdmi-th1520.c @@ -1575,6 +1954,9 @@ Signed-off-by: Mingzheng Xing create mode 100644 drivers/gpu/drm/verisilicon/vs_type.h create mode 100644 drivers/gpu/drm/verisilicon/vs_virtual.c create mode 100644 drivers/gpu/drm/verisilicon/vs_virtual.h + create mode 100644 drivers/hwspinlock/th1520_hwspinlock.c + create mode 100644 drivers/i2c/busses/i2c-designware-master_dma.c + create mode 100644 drivers/i2c/busses/i2c-designware-master_dma.h create mode 100644 drivers/iio/adc/th1520-adc.c create mode 100644 drivers/iio/adc/th1520-adc.h create mode 100644 drivers/mailbox/th1520-mailbox.c @@ -1583,6 +1965,139 @@ Signed-off-by: Mingzheng Xing create mode 100644 drivers/mtd/spi-nor/controllers/sophgo-spifmc.c create mode 100644 drivers/net/ethernet/stmicro/stmmac/dwmac-sophgo.c create mode 100644 drivers/net/ethernet/stmicro/stmmac/dwmac-xuantie.c + create mode 100644 drivers/net/wireless/aic8800/Kconfig + create mode 100644 drivers/net/wireless/aic8800/Makefile + create mode 100644 drivers/net/wireless/aic8800/aic8800_bsp/.gitignore + create mode 100644 drivers/net/wireless/aic8800/aic8800_bsp/Makefile + create mode 100644 drivers/net/wireless/aic8800/aic8800_bsp/aic8800d80_compat.c + create mode 100644 drivers/net/wireless/aic8800/aic8800_bsp/aic8800d80_compat.h + create mode 100644 drivers/net/wireless/aic8800/aic8800_bsp/aic8800dc_compat.c + create mode 100644 drivers/net/wireless/aic8800/aic8800_bsp/aic8800dc_compat.h + create mode 100644 drivers/net/wireless/aic8800/aic8800_bsp/aic_bsp_driver.c + create mode 100644 drivers/net/wireless/aic8800/aic8800_bsp/aic_bsp_driver.h + create mode 100644 drivers/net/wireless/aic8800/aic8800_bsp/aic_bsp_export.h + create mode 100644 drivers/net/wireless/aic8800/aic8800_bsp/aic_bsp_main.c + create mode 100644 drivers/net/wireless/aic8800/aic8800_bsp/aicsdio.c + create mode 100644 drivers/net/wireless/aic8800/aic8800_bsp/aicsdio.h + create mode 100644 drivers/net/wireless/aic8800/aic8800_bsp/aicsdio_txrxif.c + create mode 100644 drivers/net/wireless/aic8800/aic8800_bsp/aicsdio_txrxif.h + create mode 100644 drivers/net/wireless/aic8800/aic8800_bsp/aicwf_firmware_array.c + create mode 100644 drivers/net/wireless/aic8800/aic8800_bsp/aicwf_firmware_array.h + create mode 100644 drivers/net/wireless/aic8800/aic8800_bsp/aicwf_txq_prealloc.c + create mode 100644 drivers/net/wireless/aic8800/aic8800_bsp/aicwf_txq_prealloc.h + create mode 100644 drivers/net/wireless/aic8800/aic8800_bsp/md5.c + create mode 100644 drivers/net/wireless/aic8800/aic8800_bsp/md5.h + create mode 100644 drivers/net/wireless/aic8800/aic8800_bsp/rwnx_version_gen.h + create mode 100644 drivers/net/wireless/aic8800/aic8800_btlpm/.gitignore + create mode 100644 drivers/net/wireless/aic8800/aic8800_btlpm/Kconfig + create mode 100644 drivers/net/wireless/aic8800/aic8800_btlpm/Makefile + create mode 100644 drivers/net/wireless/aic8800/aic8800_btlpm/aic8800_btlpm.c + create mode 100644 drivers/net/wireless/aic8800/aic8800_btlpm/aic_bluetooth_main.c + create mode 100644 drivers/net/wireless/aic8800/aic8800_btlpm/aic_bsp_export.h + create mode 100644 drivers/net/wireless/aic8800/aic8800_btlpm/lpm.c + create mode 100644 drivers/net/wireless/aic8800/aic8800_btlpm/lpm.h + create mode 100644 drivers/net/wireless/aic8800/aic8800_btlpm/rfkill.c + create mode 100644 drivers/net/wireless/aic8800/aic8800_btlpm/rfkill.h + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/.gitignore + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/Kconfig + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/Makefile + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/aic_br_ext.c + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/aic_br_ext.h + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/aic_bsp_export.h + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/aic_btsdio.c + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/aic_btsdio.h + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/aic_vendor.c + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/aic_vendor.h + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/aicwf_compat_8800d80.c + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/aicwf_compat_8800d80.h + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/aicwf_compat_8800dc.c + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/aicwf_compat_8800dc.h + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/aicwf_debug.h + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/aicwf_rx_prealloc.c + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/aicwf_rx_prealloc.h + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/aicwf_sdio.c + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/aicwf_sdio.h + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/aicwf_tcp_ack.c + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/aicwf_tcp_ack.h + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/aicwf_txrxif.c + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/aicwf_txrxif.h + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/aicwf_usb.c + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/aicwf_usb.h + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/hal_desc.h + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/ipc_compat.h + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/ipc_host.c + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/ipc_host.h + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/ipc_shared.h + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/lmac_mac.h + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/lmac_msg.h + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/lmac_types.h + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/md5.c + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/md5.h + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/reg_access.h + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/regdb.c + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/rwnx_bfmer.c + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/rwnx_bfmer.h + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/rwnx_cfgfile.c + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/rwnx_cfgfile.h + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/rwnx_cmds.c + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/rwnx_cmds.h + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/rwnx_compat.h + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/rwnx_debugfs.c + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/rwnx_debugfs.h + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/rwnx_defs.h + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/rwnx_dini.c + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/rwnx_dini.h + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/rwnx_events.h + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/rwnx_fw_trace.c + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/rwnx_fw_trace.h + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/rwnx_gki.c + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/rwnx_gki.h + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/rwnx_irqs.c + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/rwnx_irqs.h + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/rwnx_main.c + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/rwnx_main.h + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/rwnx_mesh.c + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/rwnx_mesh.h + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/rwnx_mod_params.c + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/rwnx_mod_params.h + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/rwnx_msg_rx.c + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/rwnx_msg_rx.h + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/rwnx_msg_tx.c + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/rwnx_msg_tx.h + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/rwnx_mu_group.c + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/rwnx_mu_group.h + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/rwnx_pci.c + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/rwnx_pci.h + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/rwnx_platform.c + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/rwnx_platform.h + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/rwnx_prof.h + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/rwnx_radar.c + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/rwnx_radar.h + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/rwnx_rx.c + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/rwnx_rx.h + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/rwnx_strs.c + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/rwnx_strs.h + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/rwnx_tdls.c + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/rwnx_tdls.h + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/rwnx_testmode.c + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/rwnx_testmode.h + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/rwnx_tx.c + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/rwnx_tx.h + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/rwnx_txq.c + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/rwnx_txq.h + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/rwnx_utils.c + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/rwnx_utils.h + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/rwnx_v7.c + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/rwnx_v7.h + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/rwnx_version.h + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/rwnx_version_gen.h + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/rwnx_wakelock.c + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/rwnx_wakelock.h + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/sdio_host.c + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/sdio_host.h + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/usb_host.c + create mode 100644 drivers/net/wireless/aic8800/aic8800_fdrv/usb_host.h + create mode 100644 drivers/nvmem/th1520-efuse.c create mode 100644 drivers/pci/controller/cadence/pcie-cadence-sophgo.c create mode 100644 drivers/pci/controller/cadence/pcie-cadence-sophgo.h create mode 100644 drivers/phy/synopsys/Kconfig @@ -1606,7 +2121,202 @@ Signed-off-by: Mingzheng Xing create mode 100644 drivers/soc/sophgo/umcu/mcu.c create mode 100644 drivers/soc/xuantie/Kconfig create mode 100644 drivers/soc/xuantie/Makefile + create mode 100644 drivers/soc/xuantie/nna/GPLHEADER + create mode 100644 drivers/soc/xuantie/nna/Kconfig + create mode 100644 drivers/soc/xuantie/nna/Makefile + create mode 100644 drivers/soc/xuantie/nna/README + create mode 100644 drivers/soc/xuantie/nna/build.mk + create mode 100644 drivers/soc/xuantie/nna/dmabuf_exporter/FindDmaBufExporter.cmake + create mode 100644 drivers/soc/xuantie/nna/dmabuf_exporter/Makefile + create mode 100644 drivers/soc/xuantie/nna/dmabuf_exporter/README + create mode 100644 drivers/soc/xuantie/nna/dmabuf_exporter/de_common.c + create mode 100644 drivers/soc/xuantie/nna/dmabuf_exporter/de_heap.h + create mode 100644 drivers/soc/xuantie/nna/dmabuf_exporter/de_heap_carveout.c + create mode 100644 drivers/soc/xuantie/nna/dmabuf_exporter/de_heap_coherent.c + create mode 100644 drivers/soc/xuantie/nna/dmabuf_exporter/de_heap_ion.c + create mode 100644 drivers/soc/xuantie/nna/dmabuf_exporter/de_heap_ion.h + create mode 100644 drivers/soc/xuantie/nna/dmabuf_exporter/de_heap_ion_example.c + create mode 100644 drivers/soc/xuantie/nna/dmabuf_exporter/de_heap_noncoherent.c + create mode 100644 drivers/soc/xuantie/nna/dmabuf_exporter/test/dma-map.c + create mode 100644 drivers/soc/xuantie/nna/dmabuf_exporter/test/dma-test.c + create mode 100644 drivers/soc/xuantie/nna/dmabuf_exporter/uapi/dmabuf_exporter.h + create mode 100644 drivers/soc/xuantie/nna/dmabuf_exporter/uapi/kernel_4x14/ion.h + create mode 100644 drivers/soc/xuantie/nna/dmabuf_exporter/uapi/kernel_4x4/ion.h + create mode 100644 drivers/soc/xuantie/nna/fenrir_loki/Makefile + create mode 100644 drivers/soc/xuantie/nna/fenrir_loki/loki-intc.c + create mode 100644 drivers/soc/xuantie/nna/fenrir_loki/loki-main.c + create mode 100644 drivers/soc/xuantie/nna/fenrir_loki/loki.h + create mode 100644 drivers/soc/xuantie/nna/img_mem/Makefile + create mode 100644 drivers/soc/xuantie/nna/img_mem/img_mem_anonymous.c + create mode 100644 drivers/soc/xuantie/nna/img_mem/img_mem_carveout.c + create mode 100644 drivers/soc/xuantie/nna/img_mem/img_mem_coherent.c + create mode 100644 drivers/soc/xuantie/nna/img_mem/img_mem_dmabuf.c + create mode 100644 drivers/soc/xuantie/nna/img_mem/img_mem_ion.c + create mode 100644 drivers/soc/xuantie/nna/img_mem/img_mem_man.c + create mode 100644 drivers/soc/xuantie/nna/img_mem/img_mem_man_priv.h + create mode 100644 drivers/soc/xuantie/nna/img_mem/img_mem_ocm.c + create mode 100644 drivers/soc/xuantie/nna/img_mem/img_mem_unified.c + create mode 100644 drivers/soc/xuantie/nna/img_mem/img_pdump.c + create mode 100644 drivers/soc/xuantie/nna/img_mem/imgmmu/imgmmu.c + create mode 100644 drivers/soc/xuantie/nna/img_mem/imgmmu/kernel_heap.c + create mode 100644 drivers/soc/xuantie/nna/img_mem/imgmmu/mmu_defs.h + create mode 100644 drivers/soc/xuantie/nna/img_mem/imgmmu/mmulib/heap.h + create mode 100644 drivers/soc/xuantie/nna/img_mem/imgmmu/mmulib/mmu.h + create mode 100644 drivers/soc/xuantie/nna/include/hwdefs/aura_system.h + create mode 100644 drivers/soc/xuantie/nna/include/hwdefs/gyrus_system.h + create mode 100644 drivers/soc/xuantie/nna/include/hwdefs/magna_system.h + create mode 100644 drivers/soc/xuantie/nna/include/hwdefs/mirage_system.h + create mode 100644 drivers/soc/xuantie/nna/include/hwdefs/nn_sys_cr_gyrus.h + create mode 100644 drivers/soc/xuantie/nna/include/hwdefs/nn_sys_cr_vagus.h + create mode 100644 drivers/soc/xuantie/nna/include/hwdefs/vagus_system.h + create mode 100644 drivers/soc/xuantie/nna/include/hwdefs/vha_cr_aura.h + create mode 100644 drivers/soc/xuantie/nna/include/hwdefs/vha_cr_gyrus.h + create mode 100644 drivers/soc/xuantie/nna/include/hwdefs/vha_cr_magna.h + create mode 100644 drivers/soc/xuantie/nna/include/hwdefs/vha_cr_mirage.h + create mode 100644 drivers/soc/xuantie/nna/include/hwdefs/vha_tb.h + create mode 100644 drivers/soc/xuantie/nna/include/img_mem_man.h + create mode 100644 drivers/soc/xuantie/nna/include/nexef_plat.h + create mode 100644 drivers/soc/xuantie/nna/include/uapi/img_mem_man.h + create mode 100644 drivers/soc/xuantie/nna/include/uapi/version.h + create mode 100644 drivers/soc/xuantie/nna/include/uapi/vha.h + create mode 100644 drivers/soc/xuantie/nna/include/uapi/vha_errors.h + create mode 100644 drivers/soc/xuantie/nna/include/vha_drv_common.h + create mode 100644 drivers/soc/xuantie/nna/include/vha_trace_point.h + create mode 100644 drivers/soc/xuantie/nna/nexef_platform/Makefile + create mode 100644 drivers/soc/xuantie/nna/nexef_platform/README.md + create mode 100644 drivers/soc/xuantie/nna/nexef_platform/nexef_plat.c + create mode 100644 drivers/soc/xuantie/nna/nexef_platform/set_fpga_freq.py + create mode 100644 drivers/soc/xuantie/nna/vha/Makefile + create mode 100644 drivers/soc/xuantie/nna/vha/multi/vha_dev.c + create mode 100644 drivers/soc/xuantie/nna/vha/multi/vha_mmu.c + create mode 100644 drivers/soc/xuantie/nna/vha/multi/vha_mt19937.c + create mode 100644 drivers/soc/xuantie/nna/vha/multi/vha_mt19937.h + create mode 100644 drivers/soc/xuantie/nna/vha/multi/vha_regs.h + create mode 100644 drivers/soc/xuantie/nna/vha/multi/vha_sc_dbg.c + create mode 100644 drivers/soc/xuantie/nna/vha/multi/vha_wm.c + create mode 100644 drivers/soc/xuantie/nna/vha/platform/vha_plat.h + create mode 100644 drivers/soc/xuantie/nna/vha/platform/vha_plat_apollo.c + create mode 100644 drivers/soc/xuantie/nna/vha/platform/vha_plat_dt.c + create mode 100644 drivers/soc/xuantie/nna/vha/platform/vha_plat_dt.h + create mode 100644 drivers/soc/xuantie/nna/vha/platform/vha_plat_dt_example.c + create mode 100644 drivers/soc/xuantie/nna/vha/platform/vha_plat_dt_example.dts + create mode 100644 drivers/soc/xuantie/nna/vha/platform/vha_plat_dt_fenrir.dts + create mode 100644 drivers/soc/xuantie/nna/vha/platform/vha_plat_dummy.c + create mode 100644 drivers/soc/xuantie/nna/vha/platform/vha_plat_emu.c + create mode 100644 drivers/soc/xuantie/nna/vha/platform/vha_plat_frost.c + create mode 100644 drivers/soc/xuantie/nna/vha/platform/vha_plat_nexef.c + create mode 100644 drivers/soc/xuantie/nna/vha/platform/vha_plat_odin.c + create mode 100644 drivers/soc/xuantie/nna/vha/platform/vha_plat_orion.c + create mode 100644 drivers/soc/xuantie/nna/vha/platform/vha_plat_param_xuantie_th1520_fpga_c910.h + create mode 100644 drivers/soc/xuantie/nna/vha/platform/vha_plat_pci.c + create mode 100644 drivers/soc/xuantie/nna/vha/platform/vha_plat_xuantie.c + create mode 100644 drivers/soc/xuantie/nna/vha/platform/vha_plat_xuantie_th1520.c + create mode 100644 drivers/soc/xuantie/nna/vha/platform/vha_plat_xuantie_th1520_fpga_c910.c + create mode 100644 drivers/soc/xuantie/nna/vha/single/vha_cnn.c + create mode 100644 drivers/soc/xuantie/nna/vha/single/vha_dev.c + create mode 100644 drivers/soc/xuantie/nna/vha/single/vha_dev_ax2.c + create mode 100644 drivers/soc/xuantie/nna/vha/single/vha_dev_ax3.c + create mode 100644 drivers/soc/xuantie/nna/vha/single/vha_mmu.c + create mode 100644 drivers/soc/xuantie/nna/vha/single/vha_regs.h + create mode 100644 drivers/soc/xuantie/nna/vha/vha_api.c + create mode 100644 drivers/soc/xuantie/nna/vha/vha_common.c + create mode 100644 drivers/soc/xuantie/nna/vha/vha_common.h + create mode 100644 drivers/soc/xuantie/nna/vha/vha_dbg.c + create mode 100644 drivers/soc/xuantie/nna/vha/vha_devfreq.c + create mode 100644 drivers/soc/xuantie/nna/vha/vha_info.c + create mode 100644 drivers/soc/xuantie/nna/vha/vha_io.h + create mode 100644 drivers/soc/xuantie/nna/vha/vha_monitor.c + create mode 100644 drivers/soc/xuantie/nna/vha/vha_pdump.c + create mode 100644 drivers/soc/xuantie/th1520-iopmp.c create mode 100644 drivers/soc/xuantie/th1520_event.c + create mode 100644 drivers/soc/xuantie/th1520_regdump.c + create mode 100644 drivers/soc/xuantie/th1520_system_monitor.c + create mode 100644 drivers/soc/xuantie/video_memory/Kconfig + create mode 100644 drivers/soc/xuantie/video_memory/Makefile + create mode 100644 drivers/soc/xuantie/video_memory/driver/Makefile + create mode 100644 drivers/soc/xuantie/video_memory/driver/rsvmem_pool.c + create mode 100644 drivers/soc/xuantie/video_memory/driver/rsvmem_pool.h + create mode 100644 drivers/soc/xuantie/video_memory/driver/video_memory.c + create mode 100644 drivers/soc/xuantie/video_memory/driver/video_memory.h + create mode 100644 drivers/soc/xuantie/video_memory/lib/Makefile + create mode 100644 drivers/soc/xuantie/video_memory/lib/video_mem.c + create mode 100644 drivers/soc/xuantie/video_memory/lib/video_mem.h + create mode 100644 drivers/soc/xuantie/video_memory/test/Makefile + create mode 100644 drivers/soc/xuantie/video_memory/test/video_memory_test.c + create mode 100644 drivers/soc/xuantie/vpu-vc8000d-kernel/COPYING + create mode 100644 drivers/soc/xuantie/vpu-vc8000d-kernel/Kconfig + create mode 100644 drivers/soc/xuantie/vpu-vc8000d-kernel/Makefile + create mode 100755 drivers/soc/xuantie/vpu-vc8000d-kernel/addons/ko/insmod.sh + create mode 100755 drivers/soc/xuantie/vpu-vc8000d-kernel/addons/ko/rmmod.sh + create mode 100644 drivers/soc/xuantie/vpu-vc8000d-kernel/linux/dwl/dwl_defs.h + create mode 100644 drivers/soc/xuantie/vpu-vc8000d-kernel/linux/memalloc/Makefile + create mode 100644 drivers/soc/xuantie/vpu-vc8000d-kernel/linux/memalloc/README + create mode 100755 drivers/soc/xuantie/vpu-vc8000d-kernel/linux/memalloc/build_for_pcie.sh + create mode 100644 drivers/soc/xuantie/vpu-vc8000d-kernel/linux/memalloc/memalloc.c + create mode 100644 drivers/soc/xuantie/vpu-vc8000d-kernel/linux/memalloc/memalloc.h + create mode 100755 drivers/soc/xuantie/vpu-vc8000d-kernel/linux/memalloc/memalloc_load.sh + create mode 100644 drivers/soc/xuantie/vpu-vc8000d-kernel/linux/memalloc/testbench_memalloc.c + create mode 100644 drivers/soc/xuantie/vpu-vc8000d-kernel/linux/subsys_driver/Makefile + create mode 100644 drivers/soc/xuantie/vpu-vc8000d-kernel/linux/subsys_driver/README + create mode 100644 drivers/soc/xuantie/vpu-vc8000d-kernel/linux/subsys_driver/bidirect_list.c + create mode 100644 drivers/soc/xuantie/vpu-vc8000d-kernel/linux/subsys_driver/bidirect_list.h + create mode 100644 drivers/soc/xuantie/vpu-vc8000d-kernel/linux/subsys_driver/build_for_mpcore.sh + create mode 100644 drivers/soc/xuantie/vpu-vc8000d-kernel/linux/subsys_driver/build_for_socle.sh + create mode 100644 drivers/soc/xuantie/vpu-vc8000d-kernel/linux/subsys_driver/build_for_vexpress.sh + create mode 100644 drivers/soc/xuantie/vpu-vc8000d-kernel/linux/subsys_driver/dec_devfreq.h + create mode 100644 drivers/soc/xuantie/vpu-vc8000d-kernel/linux/subsys_driver/driver_load.sh + create mode 100644 drivers/soc/xuantie/vpu-vc8000d-kernel/linux/subsys_driver/driver_load_sc.sh + create mode 100644 drivers/soc/xuantie/vpu-vc8000d-kernel/linux/subsys_driver/freertos/dev_common_freertos.h + create mode 100644 drivers/soc/xuantie/vpu-vc8000d-kernel/linux/subsys_driver/freertos/hantro_dec_freertos.c + create mode 100644 drivers/soc/xuantie/vpu-vc8000d-kernel/linux/subsys_driver/freertos/hantro_vcmd_freertos.c + create mode 100644 drivers/soc/xuantie/vpu-vc8000d-kernel/linux/subsys_driver/freertos/io_tools.c + create mode 100644 drivers/soc/xuantie/vpu-vc8000d-kernel/linux/subsys_driver/freertos/io_tools.h + create mode 100644 drivers/soc/xuantie/vpu-vc8000d-kernel/linux/subsys_driver/freertos/memalloc_freertos.c + create mode 100644 drivers/soc/xuantie/vpu-vc8000d-kernel/linux/subsys_driver/freertos/memalloc_freertos.h + create mode 100644 drivers/soc/xuantie/vpu-vc8000d-kernel/linux/subsys_driver/freertos/subsys_freertos.c + create mode 100644 drivers/soc/xuantie/vpu-vc8000d-kernel/linux/subsys_driver/freertos/user_freertos.c + create mode 100644 drivers/soc/xuantie/vpu-vc8000d-kernel/linux/subsys_driver/freertos/user_freertos.h + create mode 100644 drivers/soc/xuantie/vpu-vc8000d-kernel/linux/subsys_driver/hantro_axife.c + create mode 100644 drivers/soc/xuantie/vpu-vc8000d-kernel/linux/subsys_driver/hantro_dec.c + create mode 100644 drivers/soc/xuantie/vpu-vc8000d-kernel/linux/subsys_driver/hantro_mmu.c + create mode 100644 drivers/soc/xuantie/vpu-vc8000d-kernel/linux/subsys_driver/hantro_vcmd.c + create mode 100644 drivers/soc/xuantie/vpu-vc8000d-kernel/linux/subsys_driver/hantroaxife.h + create mode 100644 drivers/soc/xuantie/vpu-vc8000d-kernel/linux/subsys_driver/hantrodec.h + create mode 100644 drivers/soc/xuantie/vpu-vc8000d-kernel/linux/subsys_driver/hantrommu.h + create mode 100644 drivers/soc/xuantie/vpu-vc8000d-kernel/linux/subsys_driver/hantrovcmd.h + create mode 100644 drivers/soc/xuantie/vpu-vc8000d-kernel/linux/subsys_driver/kernel_allocator.c + create mode 100644 drivers/soc/xuantie/vpu-vc8000d-kernel/linux/subsys_driver/kernel_allocator.h + create mode 100644 drivers/soc/xuantie/vpu-vc8000d-kernel/linux/subsys_driver/subsys.c + create mode 100644 drivers/soc/xuantie/vpu-vc8000d-kernel/linux/subsys_driver/subsys.h + create mode 100644 drivers/soc/xuantie/vpu-vc8000d-kernel/linux/subsys_driver/vcmdregisterenum.h + create mode 100644 drivers/soc/xuantie/vpu-vc8000d-kernel/linux/subsys_driver/vcmdregistertable.h + create mode 100644 drivers/soc/xuantie/vpu-vc8000d-kernel/linux/subsys_driver/vcmdswhwregisters.c + create mode 100644 drivers/soc/xuantie/vpu-vc8000d-kernel/linux/subsys_driver/vcmdswhwregisters.h + create mode 100644 drivers/soc/xuantie/vpu-vc8000d-kernel/linux/subsys_driver/vdec_trace_point.h + create mode 100644 drivers/soc/xuantie/vpu-vc8000e-kernel/COPYING + create mode 100644 drivers/soc/xuantie/vpu-vc8000e-kernel/Kconfig + create mode 100644 drivers/soc/xuantie/vpu-vc8000e-kernel/Makefile + create mode 100755 drivers/soc/xuantie/vpu-vc8000e-kernel/addons/ko/insmod.sh + create mode 100755 drivers/soc/xuantie/vpu-vc8000e-kernel/addons/ko/rmmod.sh + create mode 100755 drivers/soc/xuantie/vpu-vc8000e-kernel/linux/kernel_module/Makefile + create mode 100755 drivers/soc/xuantie/vpu-vc8000e-kernel/linux/kernel_module/README + create mode 100644 drivers/soc/xuantie/vpu-vc8000e-kernel/linux/kernel_module/bidirect_list.c + create mode 100644 drivers/soc/xuantie/vpu-vc8000e-kernel/linux/kernel_module/bidirect_list.h + create mode 100755 drivers/soc/xuantie/vpu-vc8000e-kernel/linux/kernel_module/driver_load.sh + create mode 100755 drivers/soc/xuantie/vpu-vc8000e-kernel/linux/kernel_module/hantro_mmu.c + create mode 100755 drivers/soc/xuantie/vpu-vc8000e-kernel/linux/kernel_module/hantrommu.h + create mode 100644 drivers/soc/xuantie/vpu-vc8000e-kernel/linux/kernel_module/vc8000_axife.c + create mode 100644 drivers/soc/xuantie/vpu-vc8000e-kernel/linux/kernel_module/vc8000_axife.h + create mode 100644 drivers/soc/xuantie/vpu-vc8000e-kernel/linux/kernel_module/vc8000_devfreq.h + create mode 100644 drivers/soc/xuantie/vpu-vc8000e-kernel/linux/kernel_module/vc8000_driver.c + create mode 100644 drivers/soc/xuantie/vpu-vc8000e-kernel/linux/kernel_module/vc8000_driver.h + create mode 100644 drivers/soc/xuantie/vpu-vc8000e-kernel/linux/kernel_module/vc8000_normal_driver.c + create mode 100644 drivers/soc/xuantie/vpu-vc8000e-kernel/linux/kernel_module/vc8000_vcmd_driver.c + create mode 100644 drivers/soc/xuantie/vpu-vc8000e-kernel/linux/kernel_module/vcmdregisterenum.h + create mode 100644 drivers/soc/xuantie/vpu-vc8000e-kernel/linux/kernel_module/vcmdregistertable.h + create mode 100644 drivers/soc/xuantie/vpu-vc8000e-kernel/linux/kernel_module/vcmdswhwregisters.c + create mode 100644 drivers/soc/xuantie/vpu-vc8000e-kernel/linux/kernel_module/vcmdswhwregisters.h + create mode 100644 drivers/soc/xuantie/vpu-vc8000e-kernel/linux/kernel_module/venc_trace_point.h create mode 100644 drivers/spi/spi-dw-mmio-quad.c create mode 100644 drivers/spi/spi-dw-quad.c create mode 100644 drivers/spi/spi-dw-quad.h @@ -1624,11 +2334,19 @@ Signed-off-by: Mingzheng Xing create mode 100644 include/dt-bindings/firmware/xuantie/rsrc.h create mode 100644 include/dt-bindings/reset/sophgo-mango-resets.h create mode 100644 include/dt-bindings/reset/xuantie,th1520-reset.h + create mode 100644 include/dt-bindings/soc/th1520_system_status.h + create mode 100644 include/dt-bindings/soc/xuantie,th1520-iopmp.h create mode 100644 include/linux/firmware/xuantie/ipc.h create mode 100644 include/linux/firmware/xuantie/th1520_event.h create mode 100644 include/linux/th1520_proc_debug.h create mode 100644 include/linux/th1520_rpmsg.h + create mode 100644 include/soc/xuantie/th1520_system_monitor.h + create mode 100644 include/soc/xuantie/th1520_system_status.h create mode 100644 include/uapi/drm/vs_drm.h + create mode 100644 net/rfkill/rfkill-bt.c + create mode 100644 net/rfkill/rfkill-wlan.c + create mode 100644 sound/soc/codecs/aw87519.c + create mode 100644 sound/soc/codecs/aw87519.h create mode 100644 sound/soc/codecs/es7210.c create mode 100644 sound/soc/codecs/es7210.h create mode 100644 sound/soc/codecs/es8156.c @@ -1643,11 +2361,57 @@ Signed-off-by: Mingzheng Xing create mode 100644 sound/soc/xuantie/th1520-i2s.h create mode 100644 sound/soc/xuantie/th1520-pcm-dma.c create mode 100644 sound/soc/xuantie/th1520-pcm.h + create mode 100644 sound/soc/xuantie/th1520-spdif.c + create mode 100644 sound/soc/xuantie/th1520-spdif.h + create mode 100644 sound/soc/xuantie/th1520-tdm.c + create mode 100644 sound/soc/xuantie/th1520-tdm.h create mode 100644 tools/perf/pmu-events/arch/riscv/thead/c900-legacy/cache.json create mode 100644 tools/perf/pmu-events/arch/riscv/thead/c900-legacy/firmware.json create mode 100644 tools/perf/pmu-events/arch/riscv/thead/c900-legacy/instruction.json create mode 100644 tools/perf/pmu-events/arch/riscv/thead/c900-legacy/microarch.json + create mode 100644 tools/perf/pmu-events/arch/riscv/thead/th1520-ddr/metrics.json + create mode 100644 tools/perf/pmu-events/arch/riscv/thead/th1520-ddr/uncore-ddr-pmu.json +diff --git a/Documentation/devicetree/bindings/hwlock/xuantie,th1520-hwspinlock.yaml b/Documentation/devicetree/bindings/hwlock/xuantie,th1520-hwspinlock.yaml +new file mode 100644 +index 000000000000..8d36beae9676 +--- /dev/null ++++ b/Documentation/devicetree/bindings/hwlock/xuantie,th1520-hwspinlock.yaml +@@ -0,0 +1,34 @@ ++# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) ++%YAML 1.2 ++--- ++$id: http://devicetree.org/schemas/hwlock/xuantie,th1520-hwspinlock.yaml# ++$schema: http://devicetree.org/meta-schemas/core.yaml# ++ ++title: XUANTIE th1520 SoC HwSpinlock ++ ++maintainers: ++ - Liu Yibin ++ ++properties: ++ compatible: ++ items: ++ - const: th1520,hwspinlock ++ ++ reg: ++ maxItems: 1 ++ ++ ++required: ++ - compatible ++ - reg ++ ++additionalProperties: false ++ ++examples: ++ ++ - | ++ hwspinlock: hwspinlock@ffefc10000 { ++ compatible = "th1520,hwspinlock"; ++ reg = <0xff 0xefc10000 0x0 0x10000>; ++ status = "disabled"; ++ }; diff --git a/Documentation/devicetree/bindings/iio/adc/thead,th1520-adc.yaml b/Documentation/devicetree/bindings/iio/adc/thead,th1520-adc.yaml new file mode 100644 index 000000000000..a4bb8f1b0e17 @@ -1942,6 +2706,30 @@ index 000000000000..4eac1448f94b + }; + }; + }; +diff --git a/Documentation/devicetree/bindings/nvmem/xuantie,th1520-efuse.txt b/Documentation/devicetree/bindings/nvmem/xuantie,th1520-efuse.txt +new file mode 100644 +index 000000000000..f99d6913ef86 +--- /dev/null ++++ b/Documentation/devicetree/bindings/nvmem/xuantie,th1520-efuse.txt +@@ -0,0 +1,18 @@ ++= XuanTie TH1520-EFUSE device tree bindings = ++ ++This binding is intended to represent TH1520-EFUSE which is found in XuanTie ++SoCs ++ ++Required properties: ++- compatible: should be ++ "xuantie,th1520-efuse": for th1520 fullmask ++- reg: should contain registers location and length ++- xuantie,secsys: the syscon phandle to read and write sec system registers ++ ++Example: ++ ++ nvmem_controller: efuse@ffff210000 { ++ compatible = "xuantie,th1520-efuse"; ++ reg = <0xff 0xff210000 0x0 0x10000>; ++ xuantie,secsys = <&secsys_reg>; ++ }; diff --git a/Documentation/devicetree/bindings/pinctrl/thead,th1520-pinctrl.yaml b/Documentation/devicetree/bindings/pinctrl/thead,th1520-pinctrl.yaml new file mode 100644 index 000000000000..12a23f185577 @@ -2565,10 +3353,10 @@ index 000000000000..87412a7ee7c7 + }; diff --git a/Documentation/devicetree/bindings/sound/xuantie,th1520-i2s.yaml b/Documentation/devicetree/bindings/sound/xuantie,th1520-i2s.yaml new file mode 100644 -index 000000000000..a9f473e43ddb +index 000000000000..b051fef08431 --- /dev/null +++ b/Documentation/devicetree/bindings/sound/xuantie,th1520-i2s.yaml -@@ -0,0 +1,92 @@ +@@ -0,0 +1,91 @@ +# SPDX-License-Identifier: GPL-2.0 +%YAML 1.2 +--- @@ -2646,20 +3434,194 @@ index 000000000000..a9f473e43ddb + +examples: + - | -+ i2s1: audio_i2s1@0xffcb015000 { ++ i2s1: audio_i2s1@ffcb015000 { + compatible = "xuantie,th1520-i2s"; + reg = <0xff 0xcb015000 0x0 0x1000>; + pinctrl-names = "default"; -+ interrupts = <175>; ++ interrupts = <175, IRQ_TYPE_LEVEL_HIGH>; + dmas = <&dmac2 11>, <&dmac2 10>; + dma-names = "tx", "rx"; + #dma-cells = <1>; -+ clocks = <&audiosys_clk_gate LIGHT_CLKGEN_AUDIO_I2S1>; ++ clocks = <&audiosys_clk_gate TH1520_CLKGEN_AUDIO_I2S1>; + clock-names = "pclk"; -+ resets = <&audiosys_rst LIGHT_RESET_AUD_I2S1>; ++ resets = <&audiosys_rst TH1520_RESET_AUD_I2S1>; + xuantie,audio-cpr-regmap = <&audio_cpr>; + #sound-dai-cells = <1>; -+ status = "disabled"; ++ }; +diff --git a/Documentation/devicetree/bindings/sound/xuantie,th1520-spdif.yaml b/Documentation/devicetree/bindings/sound/xuantie,th1520-spdif.yaml +new file mode 100644 +index 000000000000..00934c46e1cf +--- /dev/null ++++ b/Documentation/devicetree/bindings/sound/xuantie,th1520-spdif.yaml +@@ -0,0 +1,77 @@ ++# SPDX-License-Identifier: GPL-2.0 ++%YAML 1.2 ++--- ++$id: http://devicetree.org/schemas/sound/xuantie,th1520-spdif.yaml# ++$schema: http://devicetree.org/meta-schemas/core.yaml# ++ ++title: TH1520 SPDIF transceiver ++ ++description: ++ The S/PDIF audio block is a stereo transceiver that allows the ++ processor to receive and transmit digital audio via a coaxial or ++ fibre cable. ++ ++maintainers: ++ - nanli.yd ++ ++properties: ++ compatible: ++ oneOf: ++ - const: xuantie,th1520-spdif ++ ++ reg: ++ maxItems: 1 ++ ++ interrupts: ++ maxItems: 1 ++ ++ clocks: ++ items: ++ - description: clock for SPDIF controller ++ ++ clock-names: ++ items: ++ - const: pclk ++ ++ dmas: ++ minItems: 1 ++ maxItems: 2 ++ ++ dma-names: ++ oneOf: ++ - const: tx ++ - items: ++ - const: tx ++ - const: rx ++ ++ audio-cpr-regmap: ++ description: ++ The phandle of the syscon node for the CPR register. ++ ++ "#sound-dai-cells": ++ const: 0 ++ ++required: ++ - compatible ++ - reg ++ - interrupts ++ - clocks ++ - clock-names ++ - dmas ++ - dma-names ++ - "#sound-dai-cells" ++ ++unevaluatedProperties: false ++ ++examples: ++ - | ++ spdif: spdif@ffcb018000 { ++ compatible = "xuantie,th1520-spdif"; ++ reg = <0xff 0xcb018000 0x0 0x1000>; ++ interrupts = <179 IRQ_TYPE_LEVEL_HIGH>; ++ clocks = <&audiosys_clk_gate TH1520_CLKGEN_AUDIO_SPDIF0>; ++ clock-names = "pclk"; ++ dmas = <&dmac2 25>, <&dmac2 24>;; ++ dma-names = "tx", "rx"; ++ #sound-dai-cells = <0>; ++ }; +diff --git a/Documentation/devicetree/bindings/sound/xuantie,th1520-tdm.yaml b/Documentation/devicetree/bindings/sound/xuantie,th1520-tdm.yaml +new file mode 100644 +index 000000000000..17835597e8ec +--- /dev/null ++++ b/Documentation/devicetree/bindings/sound/xuantie,th1520-tdm.yaml +@@ -0,0 +1,86 @@ ++# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) ++%YAML 1.2 ++--- ++$id: http://devicetree.org/schemas/sound/xuantie,th1520-tdm.yaml# ++$schema: http://devicetree.org/meta-schemas/core.yaml# ++ ++title: TH1520 TDM Controller ++ ++description: ++ The TH1520 TDM Controller is a Time Division Multiplexed ++ audio interface in TH1520 SoCs, allowing up to 8 channels ++ of audio over a serial interface. ++ ++maintainers: ++ - nanli.yd ++ ++properties: ++ compatible: ++ enum: ++ - xuantie,th1520-tdm ++ ++ reg: ++ maxItems: 1 ++ ++ interrupts: ++ maxItems: 1 ++ ++ dmas: ++ maxItems: 1 ++ ++ dma-names: ++ maxItems: 1 ++ items: ++ enum: ++ - rx ++ ++ clocks: ++ minItems: 1 ++ items: ++ - description: tdm_pclk ++ ++ clock-names: ++ minItems: 1 ++ items: ++ - const: pclk ++ ++ resets: ++ maxItems: 1 ++ description: reset tdm ++ ++ reset-names: ++ maxItems: 1 ++ ++ audio-cpr-regmap: ++ description: ++ The phandle of the syscon node for the CPR register. ++ ++ "#sound-dai-cells": ++ const: 0 ++ ++required: ++ - compatible ++ - reg ++ - interrupts ++ - dmas ++ - dma-names ++ - clocks ++ - clock-names ++ - resets ++ - reset-names ++ - "#sound-dai-cells" ++ ++examples: ++ - | ++ tdm: audio_tdm@ffcb012000 { ++ compatible = "xuantie,th1520-tdm"; ++ reg = <0xff 0xcb012000 0x0 0x1000>; ++ audio-cpr-regmap = <&audio_cpr>; ++ interrupts = <178, IRQ_TYPE_LEVEL_HIGH>; ++ dmas = <&dmac2 28>; ++ dma-names = "rx"; ++ clocks = <&audiosys_clk_gate TH1520_CLKGEN_AUDIO_TDM>; ++ clock-names = "pclk"; ++ resets = <&audiosys_rst TH1520_RESET_AUD_TDM>; ++ #sound-dai-cells = <0>; + }; diff --git a/Documentation/devicetree/bindings/spi/xuantie,th1520-qspi.yaml b/Documentation/devicetree/bindings/spi/xuantie,th1520-qspi.yaml new file mode 100644 @@ -2985,21 +3947,20 @@ index 000000000000..2387804b1c63 +The barrier matches a full barrier in the proximity of the membarrier system call +entry, cf. membarrier_{private,global}_expedited(). diff --git a/MAINTAINERS b/MAINTAINERS -index 8d4577d29e97..04ff980528ce 100644 +index 008a26b0f027..2fb1fc12a169 100644 --- a/MAINTAINERS +++ b/MAINTAINERS -@@ -13750,7 +13750,9 @@ M: Mathieu Desnoyers +@@ -13773,7 +13773,9 @@ M: Mathieu Desnoyers M: "Paul E. McKenney" L: linux-kernel@vger.kernel.org S: Supported --F: arch/powerpc/include/asm/membarrier.h +F: Documentation/scheduler/membarrier.rst -+F: arch/*/include/asm/membarrier.h + F: arch/*/include/asm/membarrier.h +F: arch/*/include/asm/sync_core.h F: include/uapi/linux/membarrier.h F: kernel/sched/membarrier.c -@@ -18557,6 +18559,8 @@ M: Fu Wei +@@ -18586,6 +18588,8 @@ M: Fu Wei L: linux-riscv@lists.infradead.org S: Maintained F: arch/riscv/boot/dts/thead/ @@ -3008,28 +3969,14 @@ index 8d4577d29e97..04ff980528ce 100644 RNBD BLOCK DRIVERS M: Md. Haris Iqbal -diff --git a/arch/arm/include/asm/pgtable.h b/arch/arm/include/asm/pgtable.h -index 6f25eb9bafe4..be91e376df79 100644 ---- a/arch/arm/include/asm/pgtable.h -+++ b/arch/arm/include/asm/pgtable.h -@@ -151,6 +151,8 @@ extern pgprot_t phys_mem_access_prot(struct file *file, unsigned long pfn, - - extern pgd_t swapper_pg_dir[PTRS_PER_PGD]; - -+#define pgdp_get(pgpd) READ_ONCE(*pgdp) -+ - #define pud_page(pud) pmd_page(__pmd(pud_val(pud))) - #define pud_write(pud) pmd_write(__pmd(pud_val(pud))) - diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig -index bb40f2eae472..fa725829ed6e 100644 +index 3be10e723b2c..70568f639ef0 100644 --- a/arch/riscv/Kconfig +++ b/arch/riscv/Kconfig -@@ -27,14 +27,18 @@ config RISCV - select ARCH_HAS_GCOV_PROFILE_ALL +@@ -28,18 +28,22 @@ config RISCV select ARCH_HAS_GIGANTIC_PAGE select ARCH_HAS_KCOV -+ select ARCH_HAS_MEMBARRIER_CALLBACKS + select ARCH_HAS_MEMBARRIER_CALLBACKS + select ARCH_HAS_MEMBARRIER_SYNC_CORE select ARCH_HAS_MMIOWB select ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE @@ -3044,7 +3991,21 @@ index bb40f2eae472..fa725829ed6e 100644 select ARCH_HAS_SYSCALL_WRAPPER select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST select ARCH_HAS_UBSAN_SANITIZE_ALL -@@ -222,6 +226,20 @@ config KASAN_SHADOW_OFFSET + select ARCH_HAS_VDSO_DATA ++ select ARCH_KEEP_MEMBLOCK + select ARCH_OPTIONAL_KERNEL_RWX if ARCH_HAS_STRICT_KERNEL_RWX + select ARCH_OPTIONAL_KERNEL_RWX_DEFAULT + select ARCH_STACKWALK +@@ -64,7 +68,7 @@ config RISCV + select CLINT_TIMER if !MMU + select CLONE_BACKWARDS + select COMMON_CLK +- select CPU_PM if CPU_IDLE || HIBERNATION ++ select CPU_PM if CPU_IDLE || HIBERNATION || SUSPEND + select EDAC_SUPPORT + select FRAME_POINTER if PERF_EVENTS || (FUNCTION_TRACER && !DYNAMIC_FTRACE) + select GENERIC_ARCH_TOPOLOGY +@@ -223,6 +227,20 @@ config KASAN_SHADOW_OFFSET default 0xdfffffff00000000 if 64BIT default 0xffffffff if 32BIT @@ -3065,7 +4026,7 @@ index bb40f2eae472..fa725829ed6e 100644 config ARCH_FLATMEM_ENABLE def_bool !NUMA -@@ -275,6 +293,7 @@ config RISCV_DMA_NONCOHERENT +@@ -281,6 +299,7 @@ config RISCV_DMA_NONCOHERENT select ARCH_HAS_SYNC_DMA_FOR_CPU select ARCH_HAS_SYNC_DMA_FOR_DEVICE select DMA_BOUNCE_UNALIGNED_KMALLOC if SWIOTLB @@ -3073,7 +4034,7 @@ index bb40f2eae472..fa725829ed6e 100644 config RISCV_NONSTANDARD_CACHE_OPS bool -@@ -501,7 +520,7 @@ config RISCV_ISA_V +@@ -507,7 +526,7 @@ config RISCV_ISA_V depends on TOOLCHAIN_HAS_V depends on FPU select DYNAMIC_SIGFRAME @@ -3082,6 +4043,27 @@ index bb40f2eae472..fa725829ed6e 100644 help Say N here if you want to disable all vector related procedure in the kernel. +@@ -697,6 +716,20 @@ config ARCH_SUPPORTS_KEXEC_PURGATORY + config ARCH_SUPPORTS_CRASH_DUMP + def_bool y + ++config ARCH_FORCE_MAX_ORDER ++ int "Maximum zone order" ++ default "10" ++ help ++ The kernel memory allocator divides physically contiguous memory ++ blocks into "zones", where each zone is a power of two number of ++ pages. This option selects the largest power of two that the kernel ++ keeps in the memory allocator. If you need to allocate very large ++ blocks of physically contiguous memory, then you may need to ++ increase this value. ++ ++ The page size is not necessarily 4KB. Keep this in mind ++ when choosing a value for this option. ++ + config COMPAT + bool "Kernel support for 32-bit U-mode" + default 64BIT diff --git a/arch/riscv/Kconfig.socs b/arch/riscv/Kconfig.socs index 30fd6a512828..81faf077bde7 100644 --- a/arch/riscv/Kconfig.socs @@ -9391,18 +10373,19 @@ index 000000000000..57f304fc778f + }; +}; diff --git a/arch/riscv/boot/dts/thead/Makefile b/arch/riscv/boot/dts/thead/Makefile -index b55a17127c2b..ae859ae4bf68 100644 +index b55a17127c2b..3e6311bc9976 100644 --- a/arch/riscv/boot/dts/thead/Makefile +++ b/arch/riscv/boot/dts/thead/Makefile -@@ -1,2 +1,2 @@ +@@ -1,2 +1,3 @@ # SPDX-License-Identifier: GPL-2.0 -dtb-$(CONFIG_ARCH_THEAD) += th1520-lichee-pi-4a.dtb th1520-beaglev-ahead.dtb -+dtb-$(CONFIG_ARCH_XUANTIE) += th1520-lichee-pi-4a.dtb th1520-beaglev-ahead.dtb ++dtb-$(CONFIG_ARCH_XUANTIE) += th1520-lichee-pi-4a.dtb th1520-beaglev-ahead.dtb th1520-lichee-pi-4a-16g.dtb ++dtb-$(CONFIG_ARCH_XUANTIE) += th1520-lpi4a-dsi0.dtb th1520-lpi4a-hx8279.dtb diff --git a/arch/riscv/boot/dts/thead/th1520-beaglev-ahead.dts b/arch/riscv/boot/dts/thead/th1520-beaglev-ahead.dts -index 70e8042c8304..df09d8a78674 100644 +index 70e8042c8304..6d03eb1d7318 100644 --- a/arch/riscv/boot/dts/thead/th1520-beaglev-ahead.dts +++ b/arch/riscv/boot/dts/thead/th1520-beaglev-ahead.dts -@@ -7,16 +7,21 @@ +@@ -7,23 +7,13 @@ /dts-v1/; #include "th1520.dtsi" @@ -9413,21 +10396,27 @@ index 70e8042c8304..df09d8a78674 100644 model = "BeagleV Ahead"; compatible = "beagle,beaglev-ahead", "thead,th1520"; - aliases { -+ ethernet0 = &gmac0; - gpio0 = &gpio0; - gpio1 = &gpio1; - gpio2 = &gpio2; - gpio3 = &gpio3; -+ gpio4 = &gpio4; -+ gpio5 = &aogpio; - serial0 = &uart0; - serial1 = &uart1; - serial2 = &uart2; -@@ -32,7 +37,42 @@ chosen { +- aliases { +- gpio0 = &gpio0; +- gpio1 = &gpio1; +- gpio2 = &gpio2; +- gpio3 = &gpio3; +- serial0 = &uart0; +- serial1 = &uart1; +- serial2 = &uart2; +- serial3 = &uart3; +- serial4 = &uart4; +- serial5 = &uart5; +- }; + + chosen { + stdout-path = "serial0:115200n8"; +@@ -31,8 +21,43 @@ chosen { + memory@0 { device_type = "memory"; - reg = <0x0 0x00000000 0x1 0x00000000>; +- reg = <0x0 0x00000000 0x1 0x00000000>; ++ reg = <0x0 0x200000 0x0 0xffe00000>; + }; + + leds { @@ -9452,13 +10441,13 @@ index 70e8042c8304..df09d8a78674 100644 + color = ; + label = "led3"; + }; -+ + + led-4 { + gpios = <&gpio4 11 GPIO_ACTIVE_LOW>; + color = ; + label = "led4"; + }; - ++ + led-5 { + gpios = <&gpio4 12 GPIO_ACTIVE_LOW>; + color = ; @@ -9467,7 +10456,7 @@ index 70e8042c8304..df09d8a78674 100644 }; }; -@@ -44,10 +84,22 @@ &osc_32k { +@@ -44,10 +69,22 @@ &osc_32k { clock-frequency = <32768>; }; @@ -9490,7 +10479,7 @@ index 70e8042c8304..df09d8a78674 100644 &uart_sclk { clock-frequency = <100000000>; }; -@@ -56,6 +108,163 @@ &dmac0 { +@@ -56,6 +93,165 @@ &dmac0 { status = "okay"; }; @@ -9646,6 +10635,8 @@ index 70e8042c8304..df09d8a78674 100644 + pinctrl-0 = <&sdio0_pins>; + bus-width = <4>; + max-frequency = <198000000>; ++ wprtn_ignore; ++ no-sdio; + status = "okay"; +}; + @@ -9655,10 +10646,15 @@ index 70e8042c8304..df09d8a78674 100644 status = "okay"; }; diff --git a/arch/riscv/boot/dts/thead/th1520-lichee-module-4a.dtsi b/arch/riscv/boot/dts/thead/th1520-lichee-module-4a.dtsi -index a802ab110429..15763f414826 100644 +index a802ab110429..aa98efe6f62b 100644 --- a/arch/riscv/boot/dts/thead/th1520-lichee-module-4a.dtsi +++ b/arch/riscv/boot/dts/thead/th1520-lichee-module-4a.dtsi -@@ -17,6 +17,182 @@ memory@0 { +@@ -13,10 +13,186 @@ / { + + memory@0 { + device_type = "memory"; +- reg = <0x0 0x00000000 0x2 0x00000000>; ++ reg = <0x0 0x200000 0x1 0xffe00000>; }; }; @@ -9841,7 +10837,7 @@ index a802ab110429..15763f414826 100644 &osc { clock-frequency = <24000000>; }; -@@ -25,14 +201,275 @@ &osc_32k { +@@ -25,14 +201,276 @@ &osc_32k { clock-frequency = <32768>; }; @@ -10071,6 +11067,7 @@ index a802ab110429..15763f414826 100644 + pinctrl-0 = <&sdio0_pins>; + bus-width = <4>; + max-frequency = <198000000>; ++ no-sdio; + status = "okay"; +}; + @@ -10117,46 +11114,59 @@ index a802ab110429..15763f414826 100644 + opp-suspend; + }; +}; +diff --git a/arch/riscv/boot/dts/thead/th1520-lichee-pi-4a-16g.dts b/arch/riscv/boot/dts/thead/th1520-lichee-pi-4a-16g.dts +new file mode 100644 +index 000000000000..a3a991baf716 +--- /dev/null ++++ b/arch/riscv/boot/dts/thead/th1520-lichee-pi-4a-16g.dts +@@ -0,0 +1,18 @@ ++// SPDX-License-Identifier: (GPL-2.0 OR MIT) ++/* ++ * Copyright (C) 2023 Han Gao ++ */ ++ ++/dts-v1/; ++ ++#include "th1520-lichee-pi-4a.dts" ++ ++/ { ++ model = "Sipeed Lichee Pi 4A 16G"; ++ compatible = "sipeed,lichee-pi-4a", "sipeed,lichee-module-4a", "thead,th1520"; ++ ++ memory@0 { ++ device_type = "memory"; ++ reg = <0x0 0x00000000 0x4 0x00000000>; ++ }; ++}; diff --git a/arch/riscv/boot/dts/thead/th1520-lichee-pi-4a.dts b/arch/riscv/boot/dts/thead/th1520-lichee-pi-4a.dts -index 9a3884a73e13..3e18e885a33d 100644 +index 9a3884a73e13..3fd09dc4ba28 100644 --- a/arch/riscv/boot/dts/thead/th1520-lichee-pi-4a.dts +++ b/arch/riscv/boot/dts/thead/th1520-lichee-pi-4a.dts -@@ -4,29 +4,869 @@ +@@ -4,29 +4,1378 @@ */ #include "th1520-lichee-module-4a.dtsi" +#include ++#include / { model = "Sipeed Lichee Pi 4A"; compatible = "sipeed,lichee-pi-4a", "sipeed,lichee-module-4a", "thead,th1520"; aliases { -+ ethernet0 = &gmac0; -+ ethernet1 = &gmac1; - gpio0 = &gpio0; - gpio1 = &gpio1; - gpio2 = &gpio2; - gpio3 = &gpio3; -+ gpio4 = &gpio4; -+ gpio5 = &aogpio; - serial0 = &uart0; - serial1 = &uart1; - serial2 = &uart2; - serial3 = &uart3; - serial4 = &uart4; - serial5 = &uart5; -+ i2c0 = &i2c0; -+ i2c1 = &i2c1; -+ i2c2 = &i2c2; -+ i2c3 = &i2c3; -+ i2c4 = &i2c4; -+ i2c5 = &audio_i2c0; -+ i2c6 = &audio_i2c1; -+ ap_i2s = &ap_i2s; -+ i2s0 = &i2s0; -+ i2s1 = &i2s1; -+ i2s2 = &i2s2; +- gpio0 = &gpio0; +- gpio1 = &gpio1; +- gpio2 = &gpio2; +- gpio3 = &gpio3; +- serial0 = &uart0; +- serial1 = &uart1; +- serial2 = &uart2; +- serial3 = &uart3; +- serial4 = &uart4; +- serial5 = &uart5; ++ vivcam3 = &vvcam_sensor3; ++ viv_video2 = &video2; ++ viv_video3 = &video3; }; chosen { @@ -10179,6 +11189,136 @@ index 9a3884a73e13..3e18e885a33d 100644 + default-brightness-level = <7>; + }; + ++ th1520_iopmp: iopmp { ++ compatible = "xuantie,th1520-iopmp"; ++ ++ /* config#1: multiple valid regions */ ++ iopmp_emmc: IOPMP_EMMC { ++ attr = <0xFFFFFFFF>; ++ is_default_region; ++ }; ++ ++ /* config#2: iopmp bypass */ ++ iopmp_sdio0: IOPMP_SDIO0 { ++ bypass_en; ++ }; ++ ++ /* config#3: iopmp default region set */ ++ iopmp_sdio1: IOPMP_SDIO1 { ++ attr = <0xFFFFFFFF>; ++ is_default_region; ++ }; ++ ++ iopmp_usb0: IOPMP_USB0 { ++ attr = <0xFFFFFFFF>; ++ is_default_region; ++ }; ++ ++ iopmp_ao: IOPMP_AO { ++ is_default_region; ++ }; ++ ++ iopmp_aud: IOPMP_AUD { ++ is_default_region; ++ }; ++ ++ iopmp_chip_dbg: IOPMP_CHIP_DBG { ++ is_default_region; ++ }; ++ ++ iopmp_eip120i: IOPMP_EIP120I { ++ is_default_region; ++ }; ++ ++ iopmp_eip120ii: IOPMP_EIP120II { ++ is_default_region; ++ }; ++ ++ iopmp_eip120iii: IOPMP_EIP120III { ++ is_default_region; ++ }; ++ ++ iopmp_isp0: IOPMP_ISP0 { ++ is_default_region; ++ }; ++ ++ iopmp_isp1: IOPMP_ISP1 { ++ is_default_region; ++ }; ++ ++ iopmp_dw200: IOPMP_DW200 { ++ is_default_region; ++ }; ++ ++ iopmp_vipre: IOPMP_VIPRE { ++ is_default_region; ++ }; ++ ++ iopmp_venc: IOPMP_VENC { ++ is_default_region; ++ }; ++ ++ iopmp_vdec: IOPMP_VDEC { ++ is_default_region; ++ }; ++ ++ iopmp_g2d: IOPMP_G2D { ++ is_default_region; ++ }; ++ ++ iopmp_fce: IOPMP_FCE { ++ is_default_region; ++ }; ++ ++ iopmp_npu: IOPMP_NPU { ++ is_default_region; ++ }; ++ ++ iopmp0_dpu: IOPMP0_DPU { ++ bypass_en; ++ }; ++ ++ iopmp1_dpu: IOPMP1_DPU { ++ bypass_en; ++ }; ++ ++ iopmp_gpu: IOPMP_GPU { ++ is_default_region; ++ }; ++ ++ iopmp_gmac1: IOPMP_GMAC1 { ++ is_default_region; ++ }; ++ ++ iopmp_gmac2: IOPMP_GMAC2 { ++ is_default_region; ++ }; ++ ++ iopmp_dmac: IOPMP_DMAC { ++ is_default_region; ++ }; ++ ++ iopmp_tee_dmac: IOPMP_TEE_DMAC { ++ is_default_region; ++ }; ++ ++ iopmp_dsp0: IOPMP_DSP0 { ++ is_default_region; ++ }; ++ ++ iopmp_dsp1: IOPMP_DSP1 { ++ is_default_region; ++ }; ++ ++ iopmp_audio0: IOPMP_AUDIO0 { ++ is_default_region; ++ }; ++ ++ iopmp_audio1: IOPMP_AUDIO1 { ++ is_default_region; ++ }; ++ }; ++ + reg_tp0_pwr: regulator-tp0-pwr { + compatible = "regulator-fixed"; + regulator-name = "tp0-pwr"; @@ -10189,6 +11329,16 @@ index 9a3884a73e13..3e18e885a33d 100644 + regulator-always-on; + }; + ++ reg_hub_1v2: regulator-hub-1v2 { ++ compatible = "regulator-fixed"; ++ regulator-name = "HUB_1V2"; ++ regulator-min-microvolt = <1200000>; ++ regulator-max-microvolt = <1200000>; ++ gpio = <&ioexp3 2 GPIO_ACTIVE_HIGH>; ++ enable-active-high; ++ regulator-always-on; ++ }; ++ + reg_hub_5v: regulator-hub-5v { + compatible = "regulator-fixed"; + regulator-name = "HUB_5V"; @@ -10311,6 +11461,7 @@ index 9a3884a73e13..3e18e885a33d 100644 + reg = <0x0 0x1E000000 0 0x10000>; + compatible = "th1520,th1520-rpmsg"; + log-memory-region = <&audio_log_mem>; ++ audio-text-memory-region = <&audio_text_mem>; + status = "okay"; + }; + }; @@ -10360,12 +11511,71 @@ index 9a3884a73e13..3e18e885a33d 100644 + }; + }; + ++ usb-hub { ++ status = "okay"; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ hub_2_0: hub@1 { ++ compatible = "usb2109,2817"; ++ reg = <1>; ++ peer-hub = <&hub_3_0>; ++ vdd-supply = <®_hub_1v2>; ++ vbus-supply = <®_vcc5v_usb>; ++ }; ++ ++ hub_3_0: hub@2 { ++ compatible = "usb2109,817"; ++ reg = <2>; ++ peer-hub = <&hub_2_0>; ++ vbus-supply = <®_vcc5v_usb>; ++ vdd-supply = <®_vcc5v_usb>; ++ }; ++ }; ++ ++ wcn_wifi: wireless-wlan { ++ compatible = "wlan-platdata"; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_wifi_wake>; ++ WIFI,poweren-gpios = <&ioexp2 4 0>; ++ power_on_after_init; ++ power_on_when_resume; ++ status = "okay"; ++ }; ++ ++ wcn_bt: wireless-bluetooth { ++ compatible = "bluetooth-platdata"; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_bt_wake>; ++ BT,power-gpios = <&ioexp2 5 0>; ++ status = "okay"; ++ }; ++ ++ gpio-keys { ++ compatible = "gpio-keys"; ++ key-volumedown { ++ label = "Volume Down Key"; ++ linux,code = ; ++ debounce-interval = <1>; ++ gpios = <&gpio1 19 GPIO_ACTIVE_LOW>; ++ }; ++ key-volumeup { ++ label = "Volume Up Key"; ++ linux,code = ; ++ debounce-interval = <1>; ++ gpios = <&gpio1 0 GPIO_ACTIVE_LOW>; ++ }; ++ key-sleep { ++ label = "Sleep Wake Key"; ++ wakeup-source; ++ linux,code = ; ++ debounce-interval = <1>; ++ gpios = <&aogpio 2 GPIO_ACTIVE_LOW>; ++ }; ++ }; + + thermal-zones { + cpu-thermal { -+ polling-delay = <1000>; -+ polling-delay-passive = <1000>; -+ thermal-sensors = <&pvt 0>; + sustainable-power = <1600>; + + trips { @@ -10410,19 +11620,220 @@ index 9a3884a73e13..3e18e885a33d 100644 + sustainable-power = <3000>; + }; + }; -+}; + -+&aon_suspend_ctrl { -+ audio-text-memory-region = <&audio_text_mem>; -+ status = "okay"; -+}; ++ soc { ++ compatible = "simple-bus"; ++ interrupt-parent = <&plic>; ++ #address-cells = <2>; ++ #size-cells = <2>; ++ dma-noncoherent; ++ ranges; + -+&aogpio { -+ sel-usb-hub-hog { -+ gpio-hog; -+ gpios = <4 GPIO_ACTIVE_HIGH>; -+ output-high; ++ ++ vvcam_sensor3: vvcam_sensor@3 {//cam3 csi0 modified ++ sensor_name = "OV5693"; ++ compatible = "xuantie,th1520-vvcam-sensor"; ++ sensor_pdn = <&gpio1 28 0>; //powerdown pin / shutdown pin ++ sensor_rst = <&ioexp2 1 0>; ++ sensor_pdn_delay_us = <4000>; //powerdown pin / shutdown pin activated till I2C ready ++ sensor_regulators = "DOVDD18", "DVDD12", "AVDD28"; ++ sensor_regulator_timing_us = <70 50 20>; ++ DOVDD18-supply = <®_cam0_dovdd18>; ++ DVDD12-supply = <®_cam0_dvdd12>; ++ AVDD28-supply = <®_cam0_avdd28>; ++ i2c_reg_width = /bits/ 8 <2>; ++ i2c_data_width = /bits/ 8 <1>; ++ i2c_addr = /bits/ 8 <0x36>; ++ i2c_bus = /bits/ 8 <0>; ++ status = "okay"; ++ }; ++ ++ video2: cam_dev@300 { ++ compatible = "xuantie,th1520-video"; ++ vi_mem_pool_region = <0>; // vi_mem: framebuffer, region[0] ++ status = "okay"; ++ channel0 { ++ channel_id = <0>; ++ status = "okay"; ++ sensor1 { ++ subdev_name = "vivcam"; ++ idx = <3>; ++ csi_idx = <0>; ++ mode_idx = <1>; ++ path_type = "SENSOR_2592x1944_LINER"; ++ }; ++ dma { ++ subdev_name = "vipre"; ++ idx = <0>; ++ path_type = "VIPRE_CSI0_ISP1"; ++ }; ++ isp { ++ subdev_name = "isp"; ++ idx = <1>; ++ path_type = "ISP_MI_PATH_MP"; ++ output { ++ max_width = <2600>; ++ max_height = <2000>; ++ bit_per_pixel = <12>; ++ frame_count = <3>; ++ }; ++ }; ++ }; ++ channel1 { ++ sensor1 { ++ subdev_name = "vivcam"; ++ idx = <3>; ++ csi_idx = <0>; ++ mode_idx = <1>; ++ path_type = "SENSOR_2592x1944_LINER"; ++ }; ++ dma { ++ subdev_name = "vipre"; ++ idx = <0>; ++ path_type = "VIPRE_CSI0_ISP1"; ++ }; ++ isp { ++ subdev_name = "isp"; ++ idx = <1>; ++ path_type = "ISP_MI_PATH_SP"; ++ output { ++ max_width = <2600>; ++ max_height = <2000>; ++ bit_per_pixel = <12>; ++ frame_count = <3>; ++ }; ++ }; ++ }; ++ channel2 { ++ sensor1 { ++ subdev_name = "vivcam"; ++ idx = <3>; ++ csi_idx = <0>; ++ mode_idx = <1>; ++ path_type = "SENSOR_2592x1944_LINER"; ++ }; ++ dma { ++ subdev_name = "vipre"; ++ idx = <0>; ++ path_type = "VIPRE_CSI0_ISP1"; ++ }; ++ isp { ++ subdev_name = "isp"; ++ idx = <1>; ++ path_type = "ISP_MI_PATH_SP2_BP"; ++ output { ++ max_width = <2600>; ++ max_height = <2000>; ++ bit_per_pixel = <12>; ++ frame_count = <3>; ++ }; ++ }; ++ }; ++ }; ++ ++ video3: cam_dev@400{ ++ compatible = "xuantie,th1520-video"; ++ vi_mem_pool_region = <0>; // vi_mem: framebuffer, region[0] ++ status = "okay"; ++ channel0 { ++ sensor1 { ++ subdev_name = "vivcam"; ++ idx = <3>; ++ csi_idx = <0>; ++ mode_idx = <1>; ++ path_type = "SENSOR_2592x1944_LINER"; ++ }; ++ dma { ++ subdev_name = "vipre"; ++ idx = <0>; ++ path_type = "VIPRE_CSI0_ISP1"; ++ ++ }; ++ isp { ++ subdev_name = "isp"; ++ idx = <1>; ++ path_type = "ISP_MI_PATH_MP"; ++ output { ++ max_width = <2600>; ++ max_height = <2000>; ++ bit_per_pixel = <12>; ++ frame_count = <3>; ++ }; ++ }; ++ dw { ++ subdev_name = "dw"; ++ idx = <0>; ++ path_type = "DW_DWE_VSE0"; ++ dw_dst_depth = <2>; ++ }; ++ }; ++ channel1 { ++ sensor1 { ++ subdev_name = "vivcam"; ++ idx = <3>; ++ csi_idx = <0>; ++ mode_idx = <1>; ++ path_type = "SENSOR_2592x1944_LINER"; ++ }; ++ dma { ++ subdev_name = "vipre"; ++ idx = <0>; ++ path_type = "VIPRE_CSI0_ISP1"; ++ ++ }; ++ isp { ++ subdev_name = "isp"; ++ idx = <1>; ++ path_type = "ISP_MI_PATH_MP"; ++ output { ++ max_width = <2600>; ++ max_height = <2000>; ++ bit_per_pixel = <12>; ++ frame_count = <3>; ++ }; ++ }; ++ dw { ++ subdev_name = "dw"; ++ idx = <0>; ++ path_type = "DW_DWE_VSE1"; ++ dw_dst_depth = <2>; ++ }; ++ }; ++ channel2 { ++ sensor1 { ++ subdev_name = "vivcam"; ++ idx = <3>; ++ csi_idx = <0>; ++ mode_idx = <1>; ++ path_type = "SENSOR_2592x1944_LINER"; ++ }; ++ dma { ++ subdev_name = "vipre"; ++ idx = <0>; ++ path_type = "VIPRE_CSI0_ISP1"; ++ ++ }; ++ isp { ++ subdev_name = "isp"; ++ idx = <1>; ++ path_type = "ISP_MI_PATH_MP"; ++ output { ++ max_width = <2600>; ++ max_height = <2000>; ++ bit_per_pixel = <12>; ++ frame_count = <3>; ++ }; ++ }; ++ dw { ++ subdev_name = "dw"; ++ idx = <0>; ++ path_type = "DW_DWE_VSE2"; ++ dw_dst_depth = <2>; ++ }; ++ }; ++ }; + }; ++ +}; + +&gmac0 { @@ -10668,6 +12079,18 @@ index 9a3884a73e13..3e18e885a33d 100644 + slew-rate = <0>; + }; + }; ++ ++ hdmi_tx_pins: hdmi-tx-0 { ++ hdmi-pins { ++ pins = "HDMI_SCL", "HDMI_SDA", "HDMI_CEC"; ++ function = "hdmi"; ++ bias-disable; ++ drive-strength = <3>; ++ input-enable; ++ input-schmitt-disable; ++ slew-rate = <0>; ++ }; ++ }; +}; + +&padctrl1_apsys { @@ -10706,6 +12129,52 @@ index 9a3884a73e13..3e18e885a33d 100644 + slew-rate = <0>; + }; + }; ++ ++ uart4_pins: uart4-0 { ++ tx-pins { ++ pins = "UART4_TXD"; ++ function = "uart"; ++ bias-disable; ++ drive-strength = <3>; ++ input-disable; ++ input-schmitt-disable; ++ slew-rate = <0>; ++ }; ++ ++ rx-pins { ++ pins = "UART4_RXD"; ++ function = "uart"; ++ bias-disable; ++ drive-strength = <1>; ++ input-enable; ++ input-schmitt-enable; ++ slew-rate = <0>; ++ }; ++ }; ++ ++ pinctrl_wifi_wake: wifi_grp { ++ wifi-pins { ++ pins = "GPIO0_27"; ++ function = "gpio"; ++ bias-disable; ++ drive-strength = <7>; ++ input-disable; ++ input-schmitt-disable; ++ slew-rate = <0>; ++ }; ++ }; ++ ++ pinctrl_bt_wake: bt_grp { ++ bt-pins { ++ pins = "GPIO0_28"; ++ function = "gpio"; ++ bias-disable; ++ drive-strength = <7>; ++ input-disable; ++ input-schmitt-disable; ++ slew-rate = <0>; ++ }; ++ }; +}; + +&padctrl_aosys { @@ -10758,29 +12227,21 @@ index 9a3884a73e13..3e18e885a33d 100644 + status = "okay"; +}; + ++&uart4 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&uart4_pins>; ++ status = "okay"; ++}; ++ +&usb { + status = "okay"; ++ hubswitch-gpio = <&aogpio 4 0>; +}; + +&usb_dwc3 { + status = "okay"; + #address-cells = <1>; + #size-cells = <0>; -+ -+ hub_2_0: hub@1 { -+ compatible = "usb2109,2817"; -+ reg = <1>; -+ peer-hub = <&hub_3_0>; -+ vdd-supply = <®_hub_5v>; -+ vbus-supply = <®_vcc5v_usb>; -+ }; -+ -+ hub_3_0: hub@2 { -+ compatible = "usb2109,817"; -+ reg = <2>; -+ peer-hub = <&hub_2_0>; -+ vbus-supply = <®_vcc5v_usb>; -+ }; +}; + +&adc { @@ -10829,14 +12290,16 @@ index 9a3884a73e13..3e18e885a33d 100644 +&sdio1 { + max-frequency = <100000000>; + bus-width = <4>; ++ pull_up; + no-sd; + no-mmc; -+ non-removable; ++ broken-cd; + io_fixed_1v8; + post-power-on-delay-ms = <50>; + wprtn_ignore; + cap-sd-highspeed; + wakeup-source; ++ keep-power-in-suspend; + status = "okay"; +}; + @@ -10849,28 +12312,60 @@ index 9a3884a73e13..3e18e885a33d 100644 + #address-cells = <2>; + #size-cells = <2>; + ranges; -+ audio_text_mem: memory@32000000 { ++ ++ /* global autoconfigured region for contiguous allocations */ ++ cmamem: linux,cma { ++ compatible = "shared-dma-pool"; ++ reusable; ++ size = <0 0x30000000>; // 768MB on lpi4a (SOM) ++ alloc-ranges = <0 0xc8000000 0 0x30000000>; // [0x0C800_0000 ~ 0x0F800_0000] linux,cma-default; ++ linux,cma-default; ++ }; ++ dsp0_mem: memory@20000000 { /**0x2000_0000~0x2040_0000 4M**/ ++ reg = <0x0 0x20000000 0x0 0x00280000 /* DSP FW code&data section 2.5M*/ ++ 0x0 0x20280000 0x0 0x00001000 /* DSP communication area 4K*/ ++ 0x0 0x20281000 0x0 0x00007000 /* Panic/log page 28K */ ++ 0x0 0x20288000 0x0 0x00178000>; /* DSP shared memory 1.5M-32K*/ ++ }; ++ dsp1_mem: memory@20400000 { /**0x2040_0000~0x2080_0000 4M**/ ++ reg = <0x0 0x20400000 0x0 0x00280000 /* DSP FW code&data section */ ++ 0x0 0x20680000 0x0 0x00001000 /* DSP communication area */ ++ 0x0 0x20681000 0x0 0x00007000 /* Panic/log page*/ ++ 0x0 0x20688000 0x0 0x00178000>; /* DSP shared memory */ ++ }; ++ vi_mem: framebuffer@10000000 { ++ reg = <0x0 0x10000000 0x0 0x6700000>; /* vi_mem_pool_region[0] 44 MB (default) */ ++ //0x0 0x12C00000 0x0 0x01D00000 /* vi_mem_pool_region[1] 29 MB */ ++ //0x0 0x14900000 0x0 0x01E00000>; /* vi_mem_pool_region[2] 30 MB */ ++ }; ++ ++ audio_text_mem: memory@32000000 { + reg = <0x0 0x32000000 0x0 0xE00000>; + //no-map; -+ }; -+ audio_data_mem: memory@32E00000 { ++ }; ++ audio_data_mem: memory@32E00000 { + reg = <0x0 0x32E00000 0x0 0x600000>; + //no-map; -+ }; ++ }; + audio_log_mem: memory@33400000 { + reg = <0x0 0x33400000 0x0 0x200000>; + }; + //Note: with "no-map" reserv mem not saved in hibernation -+ audio_mem: memory@32000000 { -+ reg = <0x0 0x32000000 0x0 0x6400000>; -+ }; + rpmsgmem: memory@1E000000 { + reg = <0x0 0x1E000000 0x0 0x10000>; + }; + aon_log_mem: memory@33600000 { + reg = <0x0 0x33600000 0x0 0x200000>; + }; ++ regdump_mem: memory@38400000 { ++ reg = <0x0 0x38400000 0x0 0x1400000>; ++ no-map; ++ }; ++}; + ++®dump { ++ memory-region = <®dump_mem>; ++ status = "okay"; +}; + +&audio_i2c0 { @@ -10933,7 +12428,125 @@ index 9a3884a73e13..3e18e885a33d 100644 + }; +}; + ++&isp0 { ++ status = "okay"; ++}; ++ ++&isp1 { ++ status = "okay"; ++}; ++ ++&isp_ry0 { ++ status = "okay"; ++}; ++ ++&dewarp { ++ status = "okay"; ++}; ++ ++&dec400_isp0 { ++ status = "okay"; ++}; ++ ++&dec400_isp1 { ++ status = "okay"; ++}; ++ ++&dec400_isp2 { ++ status = "okay"; ++}; ++ ++&bm_visys { ++ status = "okay"; ++}; ++ ++&bm_csi0 { ++ status = "okay"; ++}; ++ ++&bm_csi1 { ++ status = "okay"; ++}; ++ ++&bm_csi2 { ++ status = "okay"; ++}; ++ ++&vidmem { ++ status = "okay"; ++ memory-region = <&vi_mem>; ++}; ++ ++&vi_pre { ++ status = "okay"; ++}; ++&xtensa_dsp { ++ status = "okay"; ++}; ++ ++&xtensa_dsp0 { ++ status = "okay"; ++ memory-region = <&dsp0_mem>; ++}; ++ ++&xtensa_dsp1 { ++ status = "okay"; ++ memory-region = <&dsp1_mem>; ++}; ++ ++&npu { ++ vha_clk_rate = <1000000000>; ++ status = "okay"; ++}; ++ ++&npu_opp_table { ++ opp-1000000000 { ++ opp-suspend; ++ }; ++}; ++ ++&dpu_enc1 { ++ ports { ++ /delete-node/ port@0; ++ }; ++}; ++ ++&disp1_out { ++ remote-endpoint = <&hdmi_tx_in>; ++}; ++ ++&hdmi_tx { ++ status = "okay"; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&hdmi_tx_pins>; ++ ++ port@0 { ++ /* input */ ++ hdmi_tx_in: endpoint { ++ remote-endpoint = <&disp1_out>; ++ }; ++ }; ++}; ++ ++&eip_28 { + status = "okay"; + }; +diff --git a/arch/riscv/boot/dts/thead/th1520-lpi4a-dsi0.dts b/arch/riscv/boot/dts/thead/th1520-lpi4a-dsi0.dts +new file mode 100644 +index 000000000000..bf53fbcbca56 +--- /dev/null ++++ b/arch/riscv/boot/dts/thead/th1520-lpi4a-dsi0.dts +@@ -0,0 +1,63 @@ ++// SPDX-License-Identifier: (GPL-2.0 OR MIT) ++/* ++ * Copyright (C) 2021-2024 Alibaba Group Holding Limited. ++ */ ++ ++#include "th1520-lichee-pi-4a.dts" ++ +&dpu_enc0 { ++ status = "okay"; ++ + ports { + /* output */ + port@1 { @@ -10973,8 +12586,8 @@ index 9a3884a73e13..3e18e885a33d 100644 + reg = <0>; + backlight = <&lcd0_backlight>; + reset-gpio = <&ioexp3 7 0>; /* active low */ -+ vccio-supply = <®_vdd18_lcd0>; -+ vdd-supply = <®_vdd33_lcd0>; ++ hsvcc-supply = <®_vdd18_lcd0>; ++ vspn3v3-supply = <®_vdd33_lcd0>; + + port { + panel0_in: endpoint { @@ -10987,15 +12600,82 @@ index 9a3884a73e13..3e18e885a33d 100644 +&dsi0 { + status = "okay"; +}; +\ No newline at end of file +diff --git a/arch/riscv/boot/dts/thead/th1520-lpi4a-hx8279.dts b/arch/riscv/boot/dts/thead/th1520-lpi4a-hx8279.dts +new file mode 100644 +index 000000000000..44641bb31bbe +--- /dev/null ++++ b/arch/riscv/boot/dts/thead/th1520-lpi4a-hx8279.dts +@@ -0,0 +1,63 @@ ++// SPDX-License-Identifier: (GPL-2.0 OR MIT) ++/* ++ * Copyright (C) 2021-2024 Alibaba Group Holding Limited. ++ */ ++ ++#include "th1520-lichee-pi-4a.dts" + +&dpu_enc0 { - status = "okay"; - }; ++ status = "okay"; ++ ++ ports { ++ /* output */ ++ port@1 { ++ reg = <1>; ++ ++ enc0_out: endpoint { ++ remote-endpoint = <&dsi0_in>; ++ }; ++ }; ++ }; ++}; ++ ++&dhost_0 { ++ ports { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ port@0 { ++ reg = <0>; ++ ++ dsi0_in: endpoint { ++ remote-endpoint = <&enc0_out>; ++ }; ++ }; ++ ++ port@1 { ++ reg = <1>; ++ ++ dsi0_out: endpoint { ++ remote-endpoint = <&panel0_in>; ++ }; ++ }; ++ }; ++ ++ panel0@0 { ++ compatible = "himax,hx8279"; ++ reg = <0>; ++ backlight = <&lcd0_backlight>; ++ reset-gpio = <&ioexp3 7 0>; /* active low */ ++ hsvcc-supply = <®_vdd18_lcd0>; ++ vspn3v3-supply = <®_vdd33_lcd0>; ++ ++ port { ++ panel0_in: endpoint { ++ remote-endpoint = <&dsi0_out>; ++ }; ++ }; ++ }; ++}; ++ ++&dsi0 { ++ status = "okay"; ++}; +\ No newline at end of file diff --git a/arch/riscv/boot/dts/thead/th1520.dtsi b/arch/riscv/boot/dts/thead/th1520.dtsi -index ff364709a6df..7333e2b10951 100644 +index ff364709a6df..a47bf9f15d9a 100644 --- a/arch/riscv/boot/dts/thead/th1520.dtsi +++ b/arch/riscv/boot/dts/thead/th1520.dtsi -@@ -5,6 +5,16 @@ +@@ -5,12 +5,59 @@ */ #include @@ -11009,13 +12689,58 @@ index ff364709a6df..7333e2b10951 100644 +#include +#include +#include ++#include / { compatible = "thead,th1520"; -@@ -29,6 +39,16 @@ c910_0: cpu@0 { + #address-cells = <2>; + #size-cells = <2>; + ++ aliases { ++ ethernet0 = &gmac0; ++ ethernet1 = &gmac1; ++ gpio0 = &gpio0; ++ gpio1 = &gpio1; ++ gpio2 = &gpio2; ++ gpio3 = &gpio3; ++ i2c0 = &i2c0; ++ i2c1 = &i2c1; ++ i2c2 = &i2c2; ++ i2c3 = &i2c3; ++ i2c4 = &i2c4; ++ i2c5 = &audio_i2c0; ++ i2c6 = &audio_i2c1; ++ mmc0 = &emmc; ++ mmc1 = &sdio0; ++ mmc2 = &sdio1; ++ serial0 = &uart0; ++ serial1 = &uart1; ++ serial2 = &uart2; ++ serial3 = &uart3; ++ serial4 = &uart4; ++ serial5 = &uart5; ++ spi0 = &spi; ++ spi1 = &qspi0; ++ spi2 = &qspi1; ++ ap_i2s = &ap_i2s; ++ i2s0 = &i2s0; ++ i2s1 = &i2s1; ++ i2s2 = &i2s2; ++ }; ++ ++ system_monitor: system-monitor { ++ compatible = "th1520,system-monitor"; ++ }; ++ + cpus: cpus { + #address-cells = <1>; + #size-cells = <0>; +@@ -29,6 +76,18 @@ c910_0: cpu@0 { d-cache-sets = <512>; next-level-cache = <&l2_cache>; mmu-type = "riscv,sv39"; ++ video-4k-minfreq = <1848000000>; ++ qos-mid-minfreq = <750000000>; + #cooling-cells = <2>; + dynamic-power-coefficient = <500>; + @@ -11029,7 +12754,7 @@ index ff364709a6df..7333e2b10951 100644 cpu0_intc: interrupt-controller { compatible = "riscv,cpu-intc"; -@@ -50,6 +70,16 @@ c910_1: cpu@1 { +@@ -50,6 +109,16 @@ c910_1: cpu@1 { d-cache-sets = <512>; next-level-cache = <&l2_cache>; mmu-type = "riscv,sv39"; @@ -11046,7 +12771,7 @@ index ff364709a6df..7333e2b10951 100644 cpu1_intc: interrupt-controller { compatible = "riscv,cpu-intc"; -@@ -71,6 +101,16 @@ c910_2: cpu@2 { +@@ -71,6 +140,16 @@ c910_2: cpu@2 { d-cache-sets = <512>; next-level-cache = <&l2_cache>; mmu-type = "riscv,sv39"; @@ -11063,7 +12788,7 @@ index ff364709a6df..7333e2b10951 100644 cpu2_intc: interrupt-controller { compatible = "riscv,cpu-intc"; -@@ -92,6 +132,16 @@ c910_3: cpu@3 { +@@ -92,6 +171,16 @@ c910_3: cpu@3 { d-cache-sets = <512>; next-level-cache = <&l2_cache>; mmu-type = "riscv,sv39"; @@ -11080,7 +12805,7 @@ index ff364709a6df..7333e2b10951 100644 cpu3_intc: interrupt-controller { compatible = "riscv,cpu-intc"; -@@ -110,6 +160,93 @@ l2_cache: l2-cache { +@@ -110,6 +199,93 @@ l2_cache: l2-cache { }; }; @@ -11174,7 +12899,7 @@ index ff364709a6df..7333e2b10951 100644 osc: oscillator { compatible = "fixed-clock"; clock-output-names = "osc_24m"; -@@ -122,6 +259,24 @@ osc_32k: 32k-oscillator { +@@ -122,6 +298,24 @@ osc_32k: 32k-oscillator { #clock-cells = <0>; }; @@ -11199,7 +12924,7 @@ index ff364709a6df..7333e2b10951 100644 apb_clk: apb-clk-clock { compatible = "fixed-clock"; clock-output-names = "apb_clk"; -@@ -134,6 +289,182 @@ uart_sclk: uart-sclk-clock { +@@ -134,6 +328,197 @@ uart_sclk: uart-sclk-clock { #clock-cells = <0>; }; @@ -11232,6 +12957,7 @@ index ff364709a6df..7333e2b10951 100644 + compatible = "xuantie,th1520-aon"; + mbox-names = "aon"; + mboxes = <&mbox_910t 1 0>; ++ opensbi-mboxes = <&mbox_910r>; + status = "okay"; + + pd: th1520-aon-pd { @@ -11321,6 +13047,20 @@ index ff364709a6df..7333e2b10951 100644 + <&npu THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; + contribution = <1024>; + }; ++ ++ dsp0_devfreq { ++ trip = <&dev_target>; ++ cooling-device = ++ <&xtensa_dsp0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; ++ contribution = <1024>; ++ }; ++ ++ dsp1_devfreq { ++ trip = <&dev_target>; ++ cooling-device = ++ <&xtensa_dsp1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; ++ contribution = <1024>; ++ }; + }; + }; + }; @@ -11382,7 +13122,7 @@ index ff364709a6df..7333e2b10951 100644 soc { compatible = "simple-bus"; interrupt-parent = <&plic>; -@@ -142,6 +473,145 @@ soc { +@@ -142,6 +527,346 @@ soc { dma-noncoherent; ranges; @@ -11391,9 +13131,21 @@ index ff364709a6df..7333e2b10951 100644 + reg = <0xff 0xcb01a000 0x0 0x1000>; + clocks = <&apb_clk>; + interrupts = <182 IRQ_TYPE_LEVEL_HIGH>; ++ clock-frequency = <100000>; ++ i2c_mode = "dma"; ++ dmas = <&dmac2 21>, <&dmac2 20>; ++ dma-names = "tx", "rx"; ++ #dma-cells = <1>; ++ ss_hcnt = /bits/ 16 <0x82>; ++ ss_lcnt = /bits/ 16 <0x78>; ++ fs_hcnt = /bits/ 16 <0x37>; ++ fs_lcnt = /bits/ 16 <0x42>; ++ fp_hcnt = /bits/ 16 <0x14>; ++ fp_lcnt = /bits/ 16 <0x1a>; ++ hs_hcnt = /bits/ 16 <0x5>; ++ hs_lcnt = /bits/ 16 <0x15>; + #address-cells = <1>; + #size-cells = <0>; -+ status = "disabled"; + }; + + audio_i2c1: i2c@ffcb01b000 { @@ -11401,9 +13153,22 @@ index ff364709a6df..7333e2b10951 100644 + reg = <0xff 0xcb01b000 0x0 0x1000>; + clocks = <&apb_clk>; + interrupts = <183 IRQ_TYPE_LEVEL_HIGH>; ++ clock-frequency = <100000>; ++ i2c_mode = "dma"; ++ dmas = <&dmac2 23>, <&dmac2 22>; ++ dma-names = "tx", "rx"; ++ #dma-cells = <1>; ++ ss_hcnt = /bits/ 16 <0x82>; ++ ss_lcnt = /bits/ 16 <0x78>; ++ fs_hcnt = /bits/ 16 <0x37>; ++ fs_lcnt = /bits/ 16 <0x42>; ++ fp_hcnt = /bits/ 16 <0x14>; ++ fp_lcnt = /bits/ 16 <0x1a>; ++ hs_hcnt = /bits/ 16 <0x5>; ++ hs_lcnt = /bits/ 16 <0x15>; ++ status = "disabled"; + #address-cells = <1>; + #size-cells = <0>; -+ status = "disabled"; + }; + + ap_i2s: ap-i2s@ffe7034000 { @@ -11524,14 +13289,219 @@ index ff364709a6df..7333e2b10951 100644 + resets = <&audiosys_rst TH1520_RESET_AUD_I2S8CH>; + status = "disabled"; + }; ++ ++ tdm_slot1: tdm1@ffcb012000 { ++ #sound-dai-cells = <0>; ++ compatible = "xuantie,th1520-tdm"; ++ reg = <0xff 0xcb012000 0x0 0x1000>; ++ audio-cpr-regmap = <&audio_cpr>; ++ pinctrl-names = "default"; ++ th1520,tdm_slots = <8>; ++ th1520,tdm_slot_num = <1>; ++ interrupts = <178 IRQ_TYPE_LEVEL_HIGH>; ++ dmas = <&dmac2 28>; ++ dma-names = "rx"; ++ #dma-cells = <1>; ++ clocks = <&audiosys_clk_gate TH1520_CLKGEN_AUDIO_TDM>; ++ clock-names = "pclk"; ++ resets = <&audiosys_rst TH1520_RESET_AUD_TDM>; ++ status = "disabled"; ++ }; ++ ++ tdm_slot2: tdm2@ffcb012000 { ++ #sound-dai-cells = <0>; ++ compatible = "xuantie,th1520-tdm"; ++ reg = <0xff 0xcb012000 0x0 0x1000>; ++ audio-cpr-regmap = <&audio_cpr>; ++ pinctrl-names = "default"; ++ th1520,tdm_slots = <8>; ++ th1520,tdm_slot_num = <2>; ++ interrupts = <178 IRQ_TYPE_LEVEL_HIGH>; ++ dmas = <&dmac2 29>; ++ dma-names = "rx"; ++ #dma-cells = <1>; ++ clocks = <&audiosys_clk_gate TH1520_CLKGEN_AUDIO_TDM>; ++ clock-names = "pclk"; ++ resets = <&audiosys_rst TH1520_RESET_AUD_TDM>; ++ status = "disabled"; ++ }; ++ ++ tdm_slot3: tdm3@ffcb012000 { ++ #sound-dai-cells = <0>; ++ compatible = "xuantie,th1520-tdm"; ++ reg = <0xff 0xcb012000 0x0 0x1000>; ++ audio-cpr-regmap = <&audio_cpr>; ++ pinctrl-names = "default"; ++ th1520,tdm_slots = <8>; ++ th1520,tdm_slot_num = <3>; ++ interrupts = <178 IRQ_TYPE_LEVEL_HIGH>; ++ dmas = <&dmac2 30>; ++ dma-names = "rx"; ++ #dma-cells = <1>; ++ clocks = <&audiosys_clk_gate TH1520_CLKGEN_AUDIO_TDM>; ++ clock-names = "pclk"; ++ resets = <&audiosys_rst TH1520_RESET_AUD_TDM>; ++ status = "disabled"; ++ }; ++ ++ tdm_slot4: tdm4@ffcb012000 { ++ #sound-dai-cells = <0>; ++ compatible = "xuantie,th1520-tdm"; ++ reg = <0xff 0xcb012000 0x0 0x1000>; ++ audio-cpr-regmap = <&audio_cpr>; ++ pinctrl-names = "default"; ++ th1520,tdm_slots = <8>; ++ th1520,tdm_slot_num = <4>; ++ interrupts = <178 IRQ_TYPE_LEVEL_HIGH>; ++ dmas = <&dmac2 31>; ++ dma-names = "rx"; ++ #dma-cells = <1>; ++ clocks = <&audiosys_clk_gate TH1520_CLKGEN_AUDIO_TDM>; ++ clock-names = "pclk"; ++ resets = <&audiosys_rst TH1520_RESET_AUD_TDM>; ++ status = "disabled"; ++ }; ++ ++ tdm_slot5: tdm5@ffcb012000 { ++ #sound-dai-cells = <0>; ++ compatible = "xuantie,th1520-tdm"; ++ reg = <0xff 0xcb012000 0x0 0x1000>; ++ audio-cpr-regmap = <&audio_cpr>; ++ pinctrl-names = "default"; ++ th1520,tdm_slots = <8>; ++ th1520,tdm_slot_num = <5>; ++ interrupts = <178 IRQ_TYPE_LEVEL_HIGH>; ++ dmas = <&dmac2 32>; ++ dma-names = "rx"; ++ #dma-cells = <1>; ++ clocks = <&audiosys_clk_gate TH1520_CLKGEN_AUDIO_TDM>; ++ clock-names = "pclk"; ++ resets = <&audiosys_rst TH1520_RESET_AUD_TDM>; ++ status = "disabled"; ++ }; ++ ++ tdm_slot6: tdm6@ffcb012000 { ++ #sound-dai-cells = <0>; ++ compatible = "xuantie,th1520-tdm"; ++ reg = <0xff 0xcb012000 0x0 0x1000>; ++ audio-cpr-regmap = <&audio_cpr>; ++ pinctrl-names = "default"; ++ th1520,tdm_slots = <8>; ++ th1520,tdm_slot_num = <6>; ++ interrupts = <178 IRQ_TYPE_LEVEL_HIGH>; ++ dmas = <&dmac2 33>; ++ dma-names = "rx"; ++ #dma-cells = <1>; ++ clocks = <&audiosys_clk_gate TH1520_CLKGEN_AUDIO_TDM>; ++ clock-names = "pclk"; ++ resets = <&audiosys_rst TH1520_RESET_AUD_TDM>; ++ status = "disabled"; ++ }; ++ ++ tdm_slot7: tdm7@ffcb012000 { ++ #sound-dai-cells = <0>; ++ compatible = "xuantie,th1520-tdm"; ++ reg = <0xff 0xcb012000 0x0 0x1000>; ++ audio-cpr-regmap = <&audio_cpr>; ++ pinctrl-names = "default"; ++ th1520,tdm_slots = <8>; ++ th1520,tdm_slot_num = <7>; ++ interrupts = <178 IRQ_TYPE_LEVEL_HIGH>; ++ dmas = <&dmac2 34>; ++ dma-names = "rx"; ++ #dma-cells = <1>; ++ clocks = <&audiosys_clk_gate TH1520_CLKGEN_AUDIO_TDM>; ++ clock-names = "pclk"; ++ resets = <&audiosys_rst TH1520_RESET_AUD_TDM>; ++ status = "disabled"; ++ }; ++ ++ tdm_slot8: tdm8@ffcb012000 { ++ #sound-dai-cells = <0>; ++ compatible = "xuantie,th1520-tdm"; ++ reg = <0xff 0xcb012000 0x0 0x1000>; ++ audio-cpr-regmap = <&audio_cpr>; ++ pinctrl-names = "default"; ++ th1520,tdm_slots = <8>; ++ th1520,tdm_slot_num = <8>; ++ interrupts = <178 IRQ_TYPE_LEVEL_HIGH>; ++ dmas = <&dmac2 35>; ++ dma-names = "rx"; ++ #dma-cells = <1>; ++ clocks = <&audiosys_clk_gate TH1520_CLKGEN_AUDIO_TDM>; ++ clock-names = "pclk"; ++ resets = <&audiosys_rst TH1520_RESET_AUD_TDM>; ++ status = "disabled"; ++ }; ++ ++ spdif0: spdif@ffcb018000 { ++ #sound-dai-cells = <0>; ++ compatible = "xuantie,th1520-spdif"; ++ reg = <0xff 0xcb018000 0x0 0x1000>; ++ audio-cpr-regmap = <&audio_cpr>; ++ pinctrl-names = "default"; ++ interrupts = <179 IRQ_TYPE_LEVEL_HIGH>; ++ dmas = <&dmac2 25>, <&dmac2 24>; ++ dma-names = "tx", "rx"; ++ #dma-cells = <1>; ++ clocks = <&audiosys_clk_gate TH1520_CLKGEN_AUDIO_SPDIF0>; ++ clock-names = "pclk"; ++ resets = <&audiosys_rst TH1520_RESET_AUD_SPDIF0>; ++ status = "disabled"; ++ }; ++ ++ spdif1: spdif@ffcb019000 { ++ #sound-dai-cells = <0>; ++ compatible = "xuantie,th1520-spdif"; ++ reg = <0xff 0xcb019000 0x0 0x1000>; ++ audio-cpr-regmap = <&audio_cpr>; ++ pinctrl-names = "default"; ++ interrupts = <180 IRQ_TYPE_LEVEL_HIGH>; ++ dmas = <&dmac2 27>, <&dmac2 26>; ++ dma-names = "tx", "rx"; ++ #dma-cells = <1>; ++ clocks = <&audiosys_clk_gate TH1520_CLKGEN_AUDIO_SPDIF1>; ++ clock-names = "pclk"; ++ resets = <&audiosys_rst TH1520_RESET_AUD_SPDIF1>; ++ status = "disabled"; ++ }; + plic: interrupt-controller@ffd8000000 { compatible = "thead,th1520-plic", "thead,c900-plic"; reg = <0xff 0xd8000000 0x0 0x01000000>; -@@ -164,6 +634,56 @@ clint: timer@ffdc000000 { +@@ -164,6 +889,85 @@ clint: timer@ffdc000000 { <&cpu3_intc 3>, <&cpu3_intc 7>; }; ++ aclint_sswi: aclint-sswi@ffdc00c000 { ++ compatible = "riscv,aclint-sswi"; ++ reg = <0xff 0xdc00c000 0x0 0x00010000>; ++ interrupt-controller; ++ }; ++ ++ secsys_reg: secsys-reg@ffff200000 { ++ compatible = "syscon"; ++ reg = <0xff 0xff200000 0x0 0x10000>; ++ }; ++ ++ nvmem_controller: efuse@ffff210000 { ++ compatible = "xuantie,th1520-efuse", "syscon"; ++ reg = <0xff 0xff210000 0x0 0x10000>; ++ xuantie,secsys = <&secsys_reg>; ++ #address-cells = <1>; ++ #size-cells = <1>; ++ clocks = <&miscsys_clk_gate CLKGEN_MISCSYS_EFUSE_PCLK>; ++ clock-names = "pclk"; ++ ++ gmac0_mac_address: mac-address@176 { ++ reg = <0xb0 6>; ++ }; ++ ++ gmac1_mac_address: mac-address@184 { ++ reg = <0xb8 6>; ++ }; ++ }; ++ + gmac0: ethernet@ffe7070000 { + compatible = "xuantie,th1520-dwmac"; + reg = <0xff 0xe7070000 0x0 0x2000>; @@ -11585,7 +13555,7 @@ index ff364709a6df..7333e2b10951 100644 uart0: serial@ffe7014000 { compatible = "snps,dw-apb-uart"; reg = <0xff 0xe7014000 0x0 0x100>; -@@ -184,6 +704,16 @@ uart1: serial@ffe7f00000 { +@@ -184,6 +988,16 @@ uart1: serial@ffe7f00000 { status = "disabled"; }; @@ -11602,7 +13572,7 @@ index ff364709a6df..7333e2b10951 100644 uart3: serial@ffe7f04000 { compatible = "snps,dw-apb-uart"; reg = <0xff 0xe7f04000 0x0 0x100>; -@@ -194,17 +724,94 @@ uart3: serial@ffe7f04000 { +@@ -194,17 +1008,165 @@ uart3: serial@ffe7f04000 { status = "disabled"; }; @@ -11630,51 +13600,119 @@ index ff364709a6df..7333e2b10951 100644 + i2c0: i2c@ffe7f20000 { + compatible = "snps,designware-i2c"; + reg = <0xff 0xe7f20000 0x0 0x1000>; -+ clocks = <&clk CLKGEN_I2C0_PCLK>; + interrupts = <44 IRQ_TYPE_LEVEL_HIGH>; ++ clocks = <&clk CLKGEN_I2C0_PCLK>; ++ clock-names = "pclk"; ++ clock-frequency = <100000>; ++ i2c_mode = "dma"; ++ dmas = <&dmac0 12>, <&dmac0 13>; ++ dma-names = "tx", "rx"; ++ #dma-cells = <1>; ++ ss_hcnt = /bits/ 16 <0x104>; ++ ss_lcnt = /bits/ 16 <0xec>; ++ fs_hcnt = /bits/ 16 <0x37>; ++ fs_lcnt = /bits/ 16 <0x42>; ++ fp_hcnt = /bits/ 16 <0x14>; ++ fp_lcnt = /bits/ 16 <0x1a>; ++ hs_hcnt = /bits/ 16 <0x9>; ++ hs_lcnt = /bits/ 16 <0x11>; + #address-cells = <1>; + #size-cells = <0>; -+ status = "disabled"; + }; + + i2c1: i2c@ffe7f24000 { + compatible = "snps,designware-i2c"; + reg = <0xff 0xe7f24000 0x0 0x1000>; -+ clocks = <&clk CLKGEN_I2C1_PCLK>; + interrupts = <45 IRQ_TYPE_LEVEL_HIGH>; ++ clocks = <&clk CLKGEN_I2C1_PCLK>; ++ clock-names = "pclk"; ++ clock-frequency = <100000>; ++ i2c_mode = "dma"; ++ dmas = <&dmac0 14>, <&dmac0 15>; ++ dma-names = "tx", "rx"; ++ #dma-cells = <1>; ++ ss_hcnt = /bits/ 16 <0x104>; ++ ss_lcnt = /bits/ 16 <0xec>; ++ fs_hcnt = /bits/ 16 <0x37>; ++ fs_lcnt = /bits/ 16 <0x42>; ++ fp_hcnt = /bits/ 16 <0x14>; ++ fp_lcnt = /bits/ 16 <0x1a>; ++ hs_hcnt = /bits/ 16 <0x9>; ++ hs_lcnt = /bits/ 16 <0x11>; + #address-cells = <1>; + #size-cells = <0>; -+ status = "disabled"; + }; + + i2c2: i2c@ffec00c000 { + compatible = "snps,designware-i2c"; + reg = <0xff 0xec00c000 0x0 0x1000>; -+ clocks = <&clk CLKGEN_I2C2_PCLK>; + interrupts = <46 IRQ_TYPE_LEVEL_HIGH>; ++ clocks = <&clk CLKGEN_I2C2_PCLK>; ++ clock-names = "pclk"; ++ clock-frequency = <100000>; ++ i2c_mode = "dma"; ++ dmas = <&dmac0 16>, <&dmac0 17>; ++ dma-names = "tx", "rx"; ++ #dma-cells = <1>; ++ ss_hcnt = /bits/ 16 <0x104>; ++ ss_lcnt = /bits/ 16 <0xec>; ++ fs_hcnt = /bits/ 16 <0x37>; ++ fs_lcnt = /bits/ 16 <0x42>; ++ fp_hcnt = /bits/ 16 <0x14>; ++ fp_lcnt = /bits/ 16 <0x1a>; ++ hs_hcnt = /bits/ 16 <0x9>; ++ hs_lcnt = /bits/ 16 <0x11>; ++ status = "disabled"; + #address-cells = <1>; + #size-cells = <0>; -+ status = "disabled"; + }; + + i2c3: i2c@ffec014000 { + compatible = "snps,designware-i2c"; + reg = <0xff 0xec014000 0x0 0x1000>; -+ clocks = <&clk CLKGEN_I2C3_PCLK>; + interrupts = <47 IRQ_TYPE_LEVEL_HIGH>; ++ clocks = <&clk CLKGEN_I2C3_PCLK>; ++ clock-names = "pclk"; ++ clock-frequency = <100000>; ++ i2c_mode = "dma"; ++ dmas = <&dmac0 18>, <&dmac0 19>; ++ dma-names = "tx", "rx"; ++ #dma-cells = <1>; ++ ss_hcnt = /bits/ 16 <0x104>; ++ ss_lcnt = /bits/ 16 <0xec>; ++ fs_hcnt = /bits/ 16 <0x37>; ++ fs_lcnt = /bits/ 16 <0x42>; ++ fp_hcnt = /bits/ 16 <0x14>; ++ fp_lcnt = /bits/ 16 <0x1a>; ++ hs_hcnt = /bits/ 16 <0x9>; ++ hs_lcnt = /bits/ 16 <0x11>; ++ status = "disabled"; + #address-cells = <1>; + #size-cells = <0>; -+ status = "disabled"; + }; + + i2c4: i2c@ffe7f28000 { + compatible = "snps,designware-i2c"; + reg = <0xff 0xe7f28000 0x0 0x1000>; -+ clocks = <&clk CLKGEN_I2C4_PCLK>; + interrupts = <48 IRQ_TYPE_LEVEL_HIGH>; ++ clocks = <&clk CLKGEN_I2C4_PCLK>; ++ clock-names = "pclk"; ++ clock-frequency = <100000>; ++ i2c_mode = "dma"; ++ dmas = <&dmac0 20>, <&dmac0 21>; ++ dma-names = "tx", "rx"; ++ #dma-cells = <1>; ++ ss_hcnt = /bits/ 16 <0x104>; ++ ss_lcnt = /bits/ 16 <0xec>; ++ fs_hcnt = /bits/ 16 <0x37>; ++ fs_lcnt = /bits/ 16 <0x42>; ++ fp_hcnt = /bits/ 16 <0x14>; ++ fp_lcnt = /bits/ 16 <0x1a>; ++ hs_hcnt = /bits/ 16 <0x9>; ++ hs_lcnt = /bits/ 16 <0x11>; ++ status = "disabled"; + #address-cells = <1>; + #size-cells = <0>; -+ status = "disabled"; + }; + + audio_mbox: audio_mbox@0xffefc48000 { @@ -11688,6 +13726,9 @@ index ff364709a6df..7333e2b10951 100644 reg = <0xff 0xe7f34000 0x0 0x1000>; #address-cells = <1>; #size-cells = <0>; ++ clocks = <&clk CLKGEN_GPIO2_PCLK>, ++ <&clk CLKGEN_GPIO2_DBCLK>; ++ clock-names = "bus", "db"; - portc: gpio-controller@0 { + gpio2: gpio-controller@0 { @@ -11700,7 +13741,7 @@ index ff364709a6df..7333e2b10951 100644 reg = <0>; interrupt-controller; #interrupt-cells = <2>; -@@ -212,17 +819,18 @@ portc: gpio-controller@0 { +@@ -212,17 +1174,21 @@ portc: gpio-controller@0 { }; }; @@ -11710,6 +13751,9 @@ index ff364709a6df..7333e2b10951 100644 reg = <0xff 0xe7f38000 0x0 0x1000>; #address-cells = <1>; #size-cells = <0>; ++ clocks = <&clk CLKGEN_GPIO3_PCLK>, ++ <&clk CLKGEN_GPIO3_DBCLK>; ++ clock-names = "bus", "db"; - portd: gpio-controller@0 { + gpio3: gpio-controller@0 { @@ -11721,15 +13765,17 @@ index ff364709a6df..7333e2b10951 100644 reg = <0>; interrupt-controller; #interrupt-cells = <2>; -@@ -230,17 +838,34 @@ portd: gpio-controller@0 { +@@ -230,17 +1196,38 @@ portd: gpio-controller@0 { }; }; - gpio0: gpio@ffec005000 { +- compatible = "snps,dw-apb-gpio"; + padctrl1_apsys: pinctrl@ffe7f3c000 { + compatible = "thead,th1520-group2-pinctrl"; + reg = <0xff 0xe7f3c000 0x0 0x1000>; -+ clocks = <&apb_clk>; ++ clocks = <&clk CLKGEN_PADCTRL1_APSYS_PCLK>; ++ clock-names = "pclk"; + }; + + gmac0_apb: syscon@ffec003000 { @@ -11743,10 +13789,13 @@ index ff364709a6df..7333e2b10951 100644 + }; + + gpio@ffec005000 { - compatible = "snps,dw-apb-gpio"; ++ compatible = "snps,dw-apb-gpio"; reg = <0xff 0xec005000 0x0 0x1000>; #address-cells = <1>; #size-cells = <0>; ++ clocks = <&clk CLKGEN_GPIO0_PCLK>, ++ <&clk CLKGEN_GPIO0_DBCLK>; ++ clock-names = "bus", "db"; - porta: gpio-controller@0 { + gpio0: gpio-controller@0 { @@ -11759,7 +13808,7 @@ index ff364709a6df..7333e2b10951 100644 reg = <0>; interrupt-controller; #interrupt-cells = <2>; -@@ -248,17 +873,18 @@ porta: gpio-controller@0 { +@@ -248,17 +1235,21 @@ porta: gpio-controller@0 { }; }; @@ -11769,6 +13818,9 @@ index ff364709a6df..7333e2b10951 100644 reg = <0xff 0xec006000 0x0 0x1000>; #address-cells = <1>; #size-cells = <0>; ++ clocks = <&clk CLKGEN_GPIO1_PCLK>, ++ <&clk CLKGEN_GPIO1_DBCLK>; ++ clock-names = "bus", "db"; - portb: gpio-controller@0 { + gpio1: gpio-controller@0 { @@ -11780,7 +13832,7 @@ index ff364709a6df..7333e2b10951 100644 reg = <0>; interrupt-controller; #interrupt-cells = <2>; -@@ -266,21 +892,69 @@ portb: gpio-controller@0 { +@@ -266,21 +1257,55 @@ portb: gpio-controller@0 { }; }; @@ -11795,7 +13847,8 @@ index ff364709a6df..7333e2b10951 100644 + padctrl0_apsys: pinctrl@ffec007000 { + compatible = "thead,th1520-group3-pinctrl"; + reg = <0xff 0xec007000 0x0 0x1000>; -+ clocks = <&apb_clk>; ++ clocks = <&clk CLKGEN_PADCTRL0_APSYS_PCLK>; ++ clock-names = "pclk"; + }; + + pwm: pwm@ffec01c000 { @@ -11829,6 +13882,7 @@ index ff364709a6df..7333e2b10951 100644 + reg = <0xff 0xe7040000 0x0 0x10000>; + interrupts = <68 IRQ_TYPE_LEVEL_HIGH>; + dr_mode = "host"; ++ snps,dis_u2_susphy_quirk; + snps,usb3_lpm_capable; + status = "disabled"; + }; @@ -11840,6 +13894,18 @@ index ff364709a6df..7333e2b10951 100644 reg = <0xff 0xefc00000 0x0 0x1000>; interrupts = <27 IRQ_TYPE_LEVEL_HIGH>; - clocks = <&apb_clk>, <&apb_clk>; ++ clocks = <&clk CLKGEN_DMAC_CPUSYS_ACLK>, <&clk CLKGEN_DMAC_CPUSYS_HCLK>; + clock-names = "core-clk", "cfgr-clk"; + #dma-cells = <1>; + dma-channels = <4>; +@@ -292,6 +1317,71 @@ dmac0: dma-controller@ffefc00000 { + status = "disabled"; + }; + ++ dmac1: dma-controller@ffff340000 { ++ compatible = "snps,axi-dma-1.01a"; ++ reg = <0xff 0xff340000 0x0 0x1000>; ++ interrupts = <150 IRQ_TYPE_LEVEL_HIGH>; + clocks = <&clk CLKGEN_DMAC_CPUSYS_ACLK>, <&clk CLKGEN_DMAC_CPUSYS_HCLK>; + clock-names = "core-clk", "cfgr-clk"; + #dma-cells = <1>; @@ -11852,18 +13918,6 @@ index ff364709a6df..7333e2b10951 100644 + status = "disabled"; + }; + -+ dmac1: dma-controller@ffff340000 { -+ compatible = "snps,axi-dma-1.01a"; -+ reg = <0xff 0xff340000 0x0 0x1000>; -+ interrupts = <150 IRQ_TYPE_LEVEL_HIGH>; -+ clocks = <&clk CLKGEN_DMAC_CPUSYS_ACLK>, <&clk CLKGEN_DMAC_CPUSYS_HCLK>; - clock-names = "core-clk", "cfgr-clk"; - #dma-cells = <1>; - dma-channels = <4>; -@@ -292,6 +966,52 @@ dmac0: dma-controller@ffefc00000 { - status = "disabled"; - }; - + dmac2: dma-controller@ffc8000000 { + compatible = "xuantie,th1520-axi-dma"; + reg = <0xff 0xc8000000 0x0 0x2000>; @@ -11887,8 +13941,9 @@ index ff364709a6df..7333e2b10951 100644 + compatible = "xuantie,th1520-dwcmshc"; + reg = <0xff 0xe7080000 0x0 0x10000>; + interrupts = <62 IRQ_TYPE_LEVEL_HIGH>; -+ clocks = <&sdhci_clk>; -+ clock-names = "core"; ++ clocks = <&clk CLKGEN_EMMC_SDIO_REF_CLK>, ++ <&miscsys_clk_gate CLKGEN_MISCSYS_EMMC_CLK>; ++ clock-names = "core", "bus"; + status = "disabled"; + }; + @@ -11896,8 +13951,9 @@ index ff364709a6df..7333e2b10951 100644 + compatible = "xuantie,th1520-dwcmshc"; + reg = <0xff 0xe7090000 0x0 0x10000>; + interrupts = <64 IRQ_TYPE_LEVEL_HIGH>; -+ clocks = <&sdhci_clk>; -+ clock-names = "core"; ++ clocks = <&clk CLKGEN_EMMC_SDIO_REF_CLK>, ++ <&miscsys_clk_gate CLKGEN_MISCSYS_EMMC_CLK>; ++ clock-names = "core", "bus"; + status = "disabled"; + }; + @@ -11905,15 +13961,16 @@ index ff364709a6df..7333e2b10951 100644 + compatible = "xuantie,th1520-dwcmshc"; + reg = <0xff 0xe70a0000 0x0 0x10000>; + interrupts = <71 IRQ_TYPE_LEVEL_HIGH>; -+ clocks = <&sdhci_clk>; -+ clock-names = "core"; ++ clocks = <&clk CLKGEN_EMMC_SDIO_REF_CLK>, ++ <&miscsys_clk_gate CLKGEN_MISCSYS_EMMC_CLK>; ++ clock-names = "core", "bus"; + status = "disabled"; + }; + timer0: timer@ffefc32000 { compatible = "snps,dw-apb-timer"; reg = <0xff 0xefc32000 0x0 0x14>; -@@ -328,26 +1048,6 @@ timer3: timer@ffefc3203c { +@@ -328,26 +1418,6 @@ timer3: timer@ffefc3203c { status = "disabled"; }; @@ -11940,7 +13997,7 @@ index ff364709a6df..7333e2b10951 100644 timer4: timer@ffffc33000 { compatible = "snps,dw-apb-timer"; reg = <0xff 0xffc33000 0x0 0x14>; -@@ -384,17 +1084,29 @@ timer7: timer@ffffc3303c { +@@ -384,17 +1454,29 @@ timer7: timer@ffffc3303c { status = "disabled"; }; @@ -11973,7 +14030,7 @@ index ff364709a6df..7333e2b10951 100644 reg = <0>; interrupt-controller; #interrupt-cells = <2>; -@@ -402,22 +1114,444 @@ porte: gpio-controller@0 { +@@ -402,22 +1484,894 @@ porte: gpio-controller@0 { }; }; @@ -12026,6 +14083,16 @@ index ff364709a6df..7333e2b10951 100644 }; }; + ++ bmu: ddr-pmu@ffff008000 { ++ compatible = "xuantie,th1520-ddr-pmu"; ++ reg = <0xff 0xff008000 0x0 0x800 ++ 0xff 0xff008800 0x0 0x800 ++ 0xff 0xff009000 0x0 0x800 ++ 0xff 0xff009800 0x0 0x800 ++ 0xff 0xff00a000 0x0 0x800>; ++ interrupts = <87 IRQ_TYPE_LEVEL_HIGH>; ++ }; ++ + mbox_910t: mbox@ffffc38000 { + compatible = "xuantie,th1520-mbox"; + reg = <0xff 0xffc38000 0x0 0x4000>, @@ -12044,6 +14111,23 @@ index ff364709a6df..7333e2b10951 100644 + #mbox-cells = <2>; + }; + ++ mbox_910r: mbox@ffefc53000 { ++ compatible = "xuantie,th1520-mbox-r"; ++ reg = <0xff 0xefc53000 0x0 0x4000>, ++ <0xff 0xefc3f000 0x0 0x1000>, ++ <0xff 0xefc47000 0x0 0x1000>, ++ <0xff 0xefc4f000 0x0 0x1000>; ++ reg-names = "local_base", ++ "remote_icu0", ++ "remote_icu1", ++ "remote_icu2"; ++ interrupt-controller; ++ clocks = <&apb_clk>; ++ clock-names = "ipg"; ++ icu_cpu_id = <3>; ++ #mbox-cells = <2>; ++ }; ++ + adc: adc@0xfffff51000 { + compatible = "xuantie,th1520-adc"; + reg = <0xff 0xfff51000 0x0 0x1000>; @@ -12371,6 +14455,400 @@ index ff364709a6df..7333e2b10951 100644 + status = "okay"; + }; + ++ regdump: th1520-regdump { ++ compatible = "xuantie,th1520-regdump"; ++ status = "disabled"; ++ }; ++ ++ vdec_opp_table: opp_table_vdec { ++ compatible = "operating-points-v2"; ++ video-4k-minfreq = <594000000>; ++ qos-mid-minfreq = <297000000>; ++ ++ opp00 { ++ opp-hz = /bits/ 64 <158400000>; ++ opp-microvolt = <875000>; ++ }; ++ opp01 { ++ opp-hz = /bits/ 64 <198000000>; ++ opp-microvolt = <875000>; ++ }; ++ opp02 { ++ opp-hz = /bits/ 64 <237600000>; ++ opp-microvolt = <875000>; ++ }; ++ opp03 { ++ opp-hz = /bits/ 64 <264000000>; ++ opp-microvolt = <887500>; ++ }; ++ opp04 { ++ opp-hz = /bits/ 64 <297000000>; ++ opp-microvolt = <937500>; ++ }; ++ opp05 { ++ opp-hz = /bits/ 64 <396000000>; ++ opp-microvolt = <1012500>; ++ }; ++ opp06 { ++ opp-hz = /bits/ 64 <475200000>; ++ opp-microvolt = <1037500>; ++ }; ++ opp07 { ++ opp-hz = /bits/ 64 <594000000>; ++ opp-microvolt = <1050000>; ++ }; ++ }; ++ ++ venc_opp_table: opp_table_venc { ++ compatible = "operating-points-v2"; ++ qos-mid-minfreq = <250000000>; ++ ++ opp00 { ++ opp-hz = /bits/ 64 <200000000>; ++ }; ++ opp01 { ++ opp-hz = /bits/ 64 <250000000>; ++ }; ++ opp02 { ++ opp-hz = /bits/ 64 <333300000>; ++ }; ++ opp03 { ++ opp-hz = /bits/ 64 <500000000>; ++ }; ++ }; ++ ++ vdec: vdec@ffecc00000 { ++ compatible = "xuantie,th1520-vc8000d"; ++ reg = <0xff 0xecc00000 0x0 0x8000>; ++ interrupts = <131 IRQ_TYPE_LEVEL_HIGH>; ++ power-domains = <&pd TH1520_AON_VDEC_PD>; ++ clocks = <&vpsys_clk_gate TH1520_VPSYS_VDEC_ACLK>, ++ <&vpsys_clk_gate TH1520_VPSYS_VDEC_CCLK>, ++ <&vpsys_clk_gate TH1520_VPSYS_VDEC_PCLK>; ++ clock-names = "aclk", "cclk", "pclk"; ++ operating-points-v2 = <&vdec_opp_table>; ++ status = "okay"; ++ }; ++ ++ venc: venc@ffecc10000 { ++ compatible = "xuantie,th1520-vc8000e"; ++ reg = <0xff 0xecc10000 0x0 0x8000>; ++ interrupts = <133 IRQ_TYPE_LEVEL_HIGH>; ++ power-domains = <&pd TH1520_AON_VENC_PD>; ++ clocks = <&vpsys_clk_gate TH1520_VPSYS_VENC_ACLK>, ++ <&vpsys_clk_gate TH1520_VPSYS_VENC_CCLK>, ++ <&vpsys_clk_gate TH1520_VPSYS_VENC_PCLK>; ++ clock-names = "aclk", "cclk", "pclk"; ++ operating-points-v2 =<&venc_opp_table>; ++ status = "okay"; ++ }; ++ ++ g2d_opp_table:g2d-opp-table { ++ compatible = "operating-points-v2"; ++ video-4k-minfreq = <396000000>; ++ qos-mid-minfreq = <198000000>; ++ ++ opp-49500000 { ++ opp-hz = /bits/ 64 <49500000>; ++ }; ++ opp-99000000 { ++ opp-hz = /bits/ 64 <99000000>; ++ }; ++ opp-198000000 { ++ opp-hz = /bits/ 64 <198000000>; ++ }; ++ opp-396000000 { ++ opp-hz = /bits/ 64 <396000000>; ++ }; ++ }; ++ ++ g2d: gc620@ffecc80000 { ++ compatible = "vivante,gc"; ++ reg = <0xff 0xecc80000 0x0 0x40000>; ++ interrupt-parent = <&plic>; ++ interrupts = <101 IRQ_TYPE_LEVEL_HIGH>; ++ ++ clocks = <&vpsys_clk_gate TH1520_VPSYS_G2D_PCLK>, ++ <&vpsys_clk_gate TH1520_VPSYS_G2D_ACLK>, ++ <&vpsys_clk_gate TH1520_VPSYS_G2D_CCLK>; ++ clock-names = "bus", "core", "shader"; ++ operating-points-v2 = <&g2d_opp_table>; ++ status = "okay"; ++ }; ++ ++ vidmem: vidmem@ffecc08000 { ++ compatible = "xuantie,th1520-vidmem"; ++ reg = <0xff 0xecc08000 0x0 0x1000>; ++ status = "okay"; ++ }; ++ ++ bm_visys: bm_visys@ffe4040000 { ++ compatible = "xuantie,th1520-bm-visys"; ++ reg = <0xff 0xe4040000 0x0 0x1000>; ++ status = "disabled"; ++ }; ++ ++ bm_csi0: csi@ffe4000000{ //CSI2 ++ compatible = "xuantie,th1520-bm-csi"; ++ reg = < 0xff 0xe4000000 0x0 0x10000>; ++ interrupt-parent = <&plic>; ++ interrupts = <128 IRQ_TYPE_LEVEL_HIGH>; ++ dphyglueiftester = <0x180>; ++ sysreg_mipi_csi_ctrl = <0x140>; ++ clocks = <&visys_clk_gate TH1520_CLKGEN_MIPI_CSI0_PCLK>, ++ <&visys_clk_gate TH1520_CLKGEN_MIPI_CSI0_PIXCLK>, ++ <&visys_clk_gate TH1520_CLKGEN_MIPI_CSI0_CFG_CLK>; ++ clock-names = "pclk", "pixclk", "cfg_clk"; ++ phy_name = "CSI_4LANE"; ++ status = "disabled"; ++ }; ++ ++ csia_reg: visys-reg@ffe4020000 { ++ compatible = "xuantie,th1520-visys-reg", "syscon"; ++ reg = < 0xff 0xe4020000 0x0 0x10000>; ++ status = "okay"; ++ }; ++ ++ csib_reg: visys-reg@ffe4010000{ ++ compatible = "xuantie,th1520-visys-reg", "syscon"; ++ reg = < 0xff 0xe4010000 0x0 0x10000>; ++ status = "okay"; ++ }; ++ ++ bm_csi1: csi@ffe4010000{ //CSI2X2_B ++ compatible = "xuantie,th1520-bm-csi"; ++ reg = < 0xff 0xe4010000 0x0 0x10000>; ++ interrupt-parent = <&plic>; ++ interrupts = <126 IRQ_TYPE_LEVEL_HIGH>; // 110 + 16 int_mipi_csi2x2_int0 ++ dphyglueiftester = <0x182>; // for FPGA PHY only. ASIC not needed. ++ sysreg_mipi_csi_ctrl = <0x148>; ++ visys-regmap = <&visys_reg>; ++ csia-regmap = <&csia_reg>; ++ clocks = <&visys_clk_gate TH1520_CLKGEN_MIPI_CSI1_PCLK>, ++ <&visys_clk_gate TH1520_CLKGEN_MIPI_CSI1_PIXCLK>, ++ <&visys_clk_gate TH1520_CLKGEN_MIPI_CSI1_CFG_CLK>; ++ clock-names = "pclk", "pixclk", "cfg_clk"; ++ phy_name = "CSI_B"; ++ status = "disabled"; ++ }; ++ ++ bm_csi2: csi@ffe4020000{ //CSI2X2_A ++ compatible = "xuantie,th1520-bm-csi"; ++ reg = < 0xff 0xe4020000 0x0 0x10000>; ++ interrupt-parent = <&plic>; ++ interrupts = <127 IRQ_TYPE_LEVEL_HIGH>; ++ dphyglueiftester = <0x184>; ++ sysreg_mipi_csi_ctrl = <0x144>; ++ sysreg_mipi_csi_fifo_ctrl = <0x14c>; ++ csib-regmap = <&csib_reg>; ++ clocks = <&visys_clk_gate TH1520_CLKGEN_MIPI_CSI2_PCLK>, ++ <&visys_clk_gate TH1520_CLKGEN_MIPI_CSI2_PIXCLK>, ++ <&visys_clk_gate TH1520_CLKGEN_MIPI_CSI2_CFG_CLK>, ++ <&visys_clk_gate TH1520_CLKGEN_MIPI_CSI1_PCLK>, ++ <&visys_clk_gate TH1520_CLKGEN_MIPI_CSI1_PIXCLK>, ++ <&visys_clk_gate TH1520_CLKGEN_MIPI_CSI1_CFG_CLK>; ++ clock-names = "pclk", "pixclk", "cfg_clk", "pclk1", "pixclk1", "cfg_clk1"; ++ phy_name = "CSI_A"; ++ status = "disabled"; ++ }; ++ ++ isp0: isp@ffe4100000 { ++ compatible = "xuantie,th1520-isp"; ++ reg = <0xff 0xe4100000 0x0 0x10000>; ++ interrupt-parent = <&plic>; ++ interrupts = <117 IRQ_TYPE_LEVEL_HIGH>,<118 IRQ_TYPE_LEVEL_HIGH>; ++ clocks = <&visys_clk_gate TH1520_CLKGEN_ISP0_ACLK>, ++ <&visys_clk_gate TH1520_CLKGEN_ISP0_HCLK>, ++ <&visys_clk_gate TH1520_CLKGEN_ISP0_PIXELCLK>, ++ <&visys_clk_gate TH1520_CLKGEN_ISP0_CLK>; ++ clock-names = "aclk", "hclk", "isp0_pclk", "cclk"; ++ status = "disabled"; ++ }; ++ ++ isp1: isp@ffe4110000 { ++ compatible = "xuantie,th1520-isp"; ++ reg = <0xff 0xe4110000 0x0 0x10000>; ++ interrupt-parent = <&plic>; ++ interrupts = <120 IRQ_TYPE_LEVEL_HIGH>,<121 IRQ_TYPE_LEVEL_HIGH>; ++ clocks = <&visys_clk_gate TH1520_CLKGEN_ISP0_ACLK>, ++ <&visys_clk_gate TH1520_CLKGEN_ISP0_HCLK>, ++ <&visys_clk_gate TH1520_CLKGEN_ISP0_PIXELCLK>, ++ <&visys_clk_gate TH1520_CLKGEN_ISP1_CLK>, ++ <&visys_clk_gate TH1520_CLKGEN_ISP1_PIXELCLK>; ++ clock-names = "aclk", "hclk", "isp0_pclk", "cclk", "isp1_pclk"; ++ status = "disabled"; ++ }; ++ ++ isp_ry0: isp_ry@ffe4120000 { ++ compatible = "xuantie,th1520-isp_ry"; ++ reg = <0xff 0xe4120000 0x0 0x10000>; ++ interrupt-parent = <&plic>; ++ interrupts = <123 IRQ_TYPE_LEVEL_HIGH>,<124 IRQ_TYPE_LEVEL_HIGH>; ++ clocks = <&visys_clk_gate TH1520_CLKGEN_ISP_RY_ACLK>, ++ <&visys_clk_gate TH1520_CLKGEN_ISP_RY_HCLK>, ++ <&visys_clk_gate TH1520_CLKGEN_ISP_RY_CCLK>; ++ clock-names = "aclk", "hclk", "cclk"; ++ status = "disabled"; ++ }; ++ ++ dewarp: dewarp@ffe4130000 { ++ compatible = "xuantie,th1520-dewarp"; ++ reg = <0xff 0xe4130000 0x0 0x10000>; ++ interrupt-parent = <&plic>; ++ interrupts = <98 IRQ_TYPE_LEVEL_HIGH>,<99 IRQ_TYPE_LEVEL_HIGH>; ++ clocks = <&visys_clk_gate TH1520_CLKGEN_DW200_ACLK>, ++ <&visys_clk_gate TH1520_CLKGEN_DW200_HCLK>, ++ <&visys_clk_gate TH1520_CLKGEN_DW200_CLK_VSE>, ++ <&visys_clk_gate TH1520_CLKGEN_DW200_CLK_DWE>; ++ clock-names = "aclk", "hclk", "vseclk", "dweclk"; ++ status = "disabled"; ++ }; ++ ++ dec400_isp0: dec400@ffe4060000 { ++ compatible = "xuantie,th1520-dec400"; ++ reg = <0xff 0xe4060000 0x0 0x8000>; ++ status = "disabled"; ++ }; ++ ++ dec400_isp1: dec400@ffe4068000 { ++ compatible = "xuantie,th1520-dec400"; ++ reg = <0xff 0xe4068000 0x0 0x8000>; ++ status = "disabled"; ++ }; ++ ++ dec400_isp2: dec400@ffe4070000 { ++ compatible = "xuantie,th1520-dec400"; ++ reg = <0xff 0xe4070000 0x0 0x8000>; ++ status = "disabled"; ++ }; ++ ++ ++ vi_pre: vi_pre@ffe4030000 { ++ compatible = "xuantie,th1520-vi_pre"; ++ reg = <0xff 0xe4030000 0x0 0x1000>; ++ interrupt-parent = <&plic>; ++ interrupts = <134 IRQ_TYPE_LEVEL_HIGH>; ++ clocks = <&visys_clk_gate TH1520_CLKGEN_VIPRE_ACLK>, ++ <&visys_clk_gate TH1520_CLKGEN_VIPRE_PCLK>, ++ <&visys_clk_gate TH1520_CLKGEN_VIPRE_PIXELCLK>; ++ clock-names ="aclk", "pclk", "pixclk"; ++ status = "disabled"; ++ }; ++ ++ xtensa_dsp: dsp@01{ ++ compatible = "xuantie,dsp-hw-common"; ++ reg = <0xff 0xef040000 0x0 0x001000 >; /*DSP_SYSREG(0x0000-0xFFF) */ ++ status = "disabled"; ++ }; ++ ++ xtensa_dsp0: dsp@0 { ++ compatible = "cdns,xrp-hw-simple"; ++ reg = <0xff 0xe4040190 0x0 0x000010 /* host irq DSP->CPU INT Register */ ++ 0xff 0xe40401e0 0x0 0x000010 /* device irq CPU->DSP INT Register */ ++ 0xff 0xef048000 0x0 0x008000 /* DSP shared memory */ ++ 0xff 0xe0180000 0x0 0x040000>; /* DSP TCM*/ ++ dsp = <0>; ++ dspsys-rst-bit = <8>; /*bit# in DSP_SYSREG*/ ++ dspsys-bus-offset = <0x90>; /*in DSP_SYSREG*/ ++ device-irq = <0x4 1 24>; /*0xff 0xe40401e4 offset to clear DSP I]RQ, bit#, IRQ# */ ++ device-irq-host-offset = <0x8>; /*0xff 0xe40401e8 offset to trigger DSP IRQ*/ ++ device-irq-mode = <1>; /*level trigger*/ ++ host-irq = <0x4 1>; /*0xff 0xe4040194 offset to clear, bit# */ ++ host-irq-mode = <1>; /*level trigger */ ++ host-irq-offset = <0x8>; /* 0xff 0xe4040198 offset to trigger ,device side*/ ++ interrupt-parent = <&plic>; ++ interrupts = <156 IRQ_TYPE_LEVEL_HIGH>; ++ #cooling-cells = <2>; ++ firmware-name = "xrp0.elf"; ++ clocks = <&dspsys_clk_gate CLKGEN_DSP0_PCLK>, ++ <&dspsys_clk_gate CLKGEN_DSP0_CCLK>; ++ clock-names = "pclk", "cclk"; ++ status = "disabled"; ++ operating-points-v2 = <&dsp_opp_table>; ++ dynamic-power-coefficient = <1000>; ++ #address-cells = <2>; ++ #size-cells = <1>; ++ ranges = <0x00 0x00000000 0x00 0x00000000 0xe0180000 ++ 0x00 0xe01c0000 0x00 0xe01c0000 0x19E40000 ++ 0x00 0xfa000000 0xff 0xe0000000 0x00180000 ++ 0x00 0xe0180000 0xff 0xe0180000 0x00040000 ++ 0x00 0xffc00000 0xff 0xe4000000 0x00200000 >; /* VISYS_R */ ++ dsp@0 { ++ ranges = <0x00 0x00000000 0x00 0x00000000 0xe0180000 ++ 0x00 0xe01c0000 0x00 0xe01c0000 0x19E40000 ++ 0x00 0xfa000000 0xff 0xe0000000 0x00180000 ++ 0x00 0xe0180000 0xff 0xe0180000 0x00040000 ++ 0x00 0xffc00000 0xff 0xe4000000 0x00200000 >; /* VISYS_R */ ++ }; ++ }; ++ ++ xtensa_dsp1: dsp@1 { ++ compatible = "cdns,xrp-hw-simple"; ++ reg = <0xff 0xe40401a0 0x0 0x000010 /* host irq DSP->CPU INT Register */ ++ 0xff 0xe40401d0 0x0 0x000010 /* device irq CPU->DSP INT Register */ ++ 0xff 0xef050000 0x0 0x008000 /* DSP shared memory */ ++ 0xff 0xe01C0000 0x0 0x040000>;/* DSP TCM*/ ++ dsp = <1>; ++ dspsys-rst-bit = <8>; /*bit# in DSP_SYSREG*/ ++ dspsys-bus-offset = <0x90>; /*in DSP_SYSREG*/ ++ device-irq = <0x4 1 24>; /*0xff 0xe40401e4 offset to clear DSP I]RQ, bit#, IRQ# */ ++ device-irq-host-offset = <0x8>; /*0xff 0xe40401e8 offset to trigger DSP IRQ*/ ++ device-irq-mode = <1>; /*level trigger*/ ++ host-irq = <0x4 1>; /*0xff 0xe4040194 offset to clear, bit# */ ++ host-irq-mode = <1>; /*level trigger */ ++ host-irq-offset = <0x8>; /* 0xff 0xe4040198 offset to trigger ,device side*/ ++ interrupt-parent = <&plic>; ++ interrupts = <157 IRQ_TYPE_LEVEL_HIGH>; ++ firmware-name = "xrp1.elf"; ++ #cooling-cells = <2>; ++ clocks = <&dspsys_clk_gate CLKGEN_DSP1_PCLK>, ++ <&dspsys_clk_gate CLKGEN_DSP1_CCLK>; ++ clock-names = "pclk", "cclk"; ++ status = "disabled"; ++ operating-points-v2 = <&dsp_opp_table>; ++ dynamic-power-coefficient = <1000>; ++ #address-cells = <2>; ++ #size-cells = <1>; ++ ranges = <0x00 0x00000000 0x00 0x00000000 0xe0180000 ++ 0x00 0xe01c0000 0x00 0xe01c0000 0x19E40000 ++ 0x00 0xfa000000 0xff 0xe0000000 0x00180000 ++ 0x00 0xe0180000 0xff 0xe01C0000 0x00040000 ++ 0x00 0xffc00000 0xff 0xe4000000 0x00200000 >; /* VISYS_R */ ++ dsp@0 { ++ ranges = <0x00 0x00000000 0x00 0x00000000 0xe0180000 ++ 0x00 0xe01c0000 0x00 0xe01c0000 0x19E40000 ++ 0x00 0xfa000000 0xff 0xe0000000 0x00180000 ++ 0x00 0xe0180000 0xff 0xe01C0000 0x00040000 ++ 0x00 0xffc00000 0xff 0xe4000000 0x00200000 >; /* VISYS_R */ ++ }; ++ }; ++ ++ ++ dsp_opp_table: dsp_opp_table { ++ compatible = "operating-points-v2"; ++ qos-mid-minfreq = <500000000>; ++ ++ opp-125000000 { ++ opp-hz = /bits/ 64 <125000000>; ++ opp-microvolt = <800000>; ++ }; ++ ++ opp-250000000 { ++ opp-hz = /bits/ 64 <250000000>; ++ opp-microvolt = <800000>; ++ }; ++ ++ opp-500000000 { ++ opp-hz = /bits/ 64 <500000000>; ++ opp-microvolt = <800000>; ++ }; ++ opp-1000000000 { ++ opp-hz = /bits/ 64 <1000000000>; ++ opp-microvolt = <800000>; ++ opp-suspend; ++ }; ++ }; ++ + npu: vha@fffc800000 { + compatible = "img,ax3386-nna"; + reg = <0xff 0xfc800000 0x0 0x100000>; @@ -12397,6 +14875,7 @@ index ff364709a6df..7333e2b10951 100644 + + npu_opp_table: opp-table { + compatible = "operating-points-v2"; ++ qos-mid-minfreq = <594000000>; + + opp-1000000000 { + opp-hz = /bits/ 64 <1000000000>; @@ -12418,6 +14897,34 @@ index ff364709a6df..7333e2b10951 100644 + opp-hz = /bits/ 64 <396000000>; + opp-microvolt = <800000>; + }; ++ }; ++ ++ iso7816: iso7816-card@fff7f30000 { ++ compatible = "xuantie,th1520-iso7816-card"; ++ reg = <0xff 0xf7f30000 0x0 0x4000>; ++ interrupts = <69 IRQ_TYPE_LEVEL_HIGH>; ++ status = "disabled"; ++ }; ++ ++ eip_28: eip-28@ffff300000 { ++ compatible = "xlnx,sunrise-fpga-1.0", "safexcel-eip-28"; ++ reg = <0xff 0xff300000 0x0 0x40000>; ++ interrupts = <144 IRQ_TYPE_LEVEL_HIGH>, ++ <145 IRQ_TYPE_LEVEL_HIGH>, ++ <146 IRQ_TYPE_LEVEL_HIGH>, ++ <147 IRQ_TYPE_LEVEL_HIGH>; ++ clocks = <&miscsys_clk_gate CLKGEN_MISCSYS_EIP120SI_CLK>, ++ <&miscsys_clk_gate CLKGEN_MISCSYS_EIP120SII_CLK>, ++ <&miscsys_clk_gate CLKGEN_MISCSYS_EIP120SIII_CLK>, ++ <&miscsys_clk_gate CLKGEN_MISCSYS_EIP150B_HCLK>; ++ clock-names = "120si_clk","120sii_clk","120siii_clk","hclk"; ++ status = "disabled"; ++ }; ++ ++ hwspinlock: hwspinlock@ffefc10000 { ++ compatible = "th1520,hwspinlock"; ++ reg = <0xff 0xefc10000 0x0 0x10000>; ++ status = "disabled"; + }; }; }; @@ -12489,7 +14996,7 @@ index ab86ec3b9eab..ee97fe565df7 100644 +# TH1520 PMIC_WDT +CONFIG_TH1520_PMIC_WATCHDOG=y diff --git a/arch/riscv/configs/openeuler_defconfig b/arch/riscv/configs/openeuler_defconfig -index 026582613f2c..223488850dcf 100644 +index 295dc52b3994..efe2b72ab53e 100644 --- a/arch/riscv/configs/openeuler_defconfig +++ b/arch/riscv/configs/openeuler_defconfig @@ -2,6 +2,7 @@ @@ -12538,7 +15045,15 @@ index 026582613f2c..223488850dcf 100644 CONFIG_CC_NO_ARRAY_BOUNDS=y CONFIG_ARCH_SUPPORTS_INT128=y CONFIG_NUMA_BALANCING=y -@@ -226,7 +229,7 @@ CONFIG_SYSFS_SYSCALL=y +@@ -169,7 +172,6 @@ CONFIG_FAIR_GROUP_SCHED=y + CONFIG_CFS_BANDWIDTH=y + CONFIG_RT_GROUP_SCHED=y + # CONFIG_QOS_SCHED_DYNAMIC_AFFINITY is not set +-CONFIG_SCHED_MM_CID=y + CONFIG_CGROUP_PIDS=y + CONFIG_CGROUP_RDMA=y + CONFIG_CGROUP_FREEZER=y +@@ -226,7 +228,7 @@ CONFIG_SYSFS_SYSCALL=y CONFIG_FHANDLE=y CONFIG_POSIX_TIMERS=y CONFIG_PRINTK=y @@ -12547,7 +15062,7 @@ index 026582613f2c..223488850dcf 100644 CONFIG_ELF_CORE=y CONFIG_BASE_FULL=y CONFIG_FUTEX=y -@@ -244,6 +247,8 @@ CONFIG_KALLSYMS=y +@@ -244,6 +246,8 @@ CONFIG_KALLSYMS=y # CONFIG_KALLSYMS_SELFTEST is not set CONFIG_KALLSYMS_ALL=y CONFIG_KALLSYMS_BASE_RELATIVE=y @@ -12556,7 +15071,7 @@ index 026582613f2c..223488850dcf 100644 CONFIG_KCMP=y CONFIG_RSEQ=y CONFIG_CACHESTAT_SYSCALL=y -@@ -288,12 +293,11 @@ CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MAX=17 +@@ -288,16 +292,16 @@ CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MAX=17 CONFIG_RISCV_SBI=y CONFIG_MMU=y CONFIG_PAGE_OFFSET=0xff60000000000000 @@ -12570,6 +15085,11 @@ index 026582613f2c..223488850dcf 100644 CONFIG_GENERIC_CALIBRATE_DELAY=y CONFIG_GENERIC_CSUM=y CONFIG_GENERIC_HWEIGHT=y + CONFIG_FIX_EARLYCON_MEM=y ++CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000 + CONFIG_PGTABLE_LEVELS=5 + CONFIG_LOCKDEP_SUPPORT=y + CONFIG_RISCV_DMA_NONCOHERENT=y @@ -306,13 +310,15 @@ CONFIG_RISCV_DMA_NONCOHERENT=y # SoC selection # @@ -12736,10 +15256,10 @@ index 026582613f2c..223488850dcf 100644 # CONFIG_BLK_DEV_DETECT_WRITING_PART0 is not set # CONFIG_BLK_DEV_WRITE_MOUNTED_DUMP is not set +CONFIG_BLK_IO_HUNG_TASK_CHECK=y + # CONFIG_BLK_IO_HIERARCHY_STATS is not set # - # Partition Types -@@ -691,11 +726,7 @@ CONFIG_BFQ_GROUP_IOSCHED=y +@@ -692,11 +727,7 @@ CONFIG_BFQ_GROUP_IOSCHED=y CONFIG_PREEMPT_NOTIFIERS=y CONFIG_PADATA=y CONFIG_ASN1=y @@ -12752,7 +15272,7 @@ index 026582613f2c..223488850dcf 100644 CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y CONFIG_MUTEX_SPIN_ON_OWNER=y CONFIG_RWSEM_SPIN_ON_OWNER=y -@@ -705,6 +736,8 @@ CONFIG_QUEUED_RWLOCKS=y +@@ -706,6 +737,8 @@ CONFIG_QUEUED_RWLOCKS=y CONFIG_ARCH_HAS_MMIOWB=y CONFIG_MMIOWB=y CONFIG_ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE=y @@ -12761,7 +15281,33 @@ index 026582613f2c..223488850dcf 100644 CONFIG_ARCH_HAS_SYSCALL_WRAPPER=y # CONFIG_PID_MAX_PER_NAMESPACE is not set CONFIG_FREEZER=y -@@ -1345,10 +1378,10 @@ CONFIG_L2TP_DEBUGFS=m +@@ -771,6 +804,7 @@ CONFIG_SPARSEMEM_EXTREME=y + CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y + CONFIG_SPARSEMEM_VMEMMAP=y + CONFIG_ARCH_WANT_OPTIMIZE_HUGETLB_VMEMMAP=y ++CONFIG_ARCH_KEEP_MEMBLOCK=y + CONFIG_MEMORY_ISOLATION=y + CONFIG_EXCLUSIVE_SYSTEM_RAM=y + CONFIG_SPLIT_PTLOCK_CPUS=4 +@@ -795,13 +829,14 @@ CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y + # CONFIG_TRANSPARENT_HUGEPAGE_MADVISE is not set + CONFIG_THP_SWAP=y + # CONFIG_READ_ONLY_THP_FOR_FS is not set ++CONFIG_PGTABLE_HAS_HUGE_LEAVES=y + CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y + CONFIG_USE_PERCPU_NUMA_NODE_ID=y + CONFIG_CMA=y + # CONFIG_CMA_DEBUG is not set +-# CONFIG_CMA_DEBUGFS is not set +-CONFIG_CMA_SYSFS=y +-CONFIG_CMA_AREAS=19 ++CONFIG_CMA_DEBUGFS=y ++# CONFIG_CMA_SYSFS is not set ++CONFIG_CMA_AREAS=7 + CONFIG_GENERIC_EARLY_IOREMAP=y + # CONFIG_DEFERRED_STRUCT_PAGE_INIT is not set + CONFIG_PAGE_IDLE_FLAG=y +@@ -1346,10 +1381,10 @@ CONFIG_L2TP_DEBUGFS=m CONFIG_L2TP_V3=y CONFIG_L2TP_IP=m CONFIG_L2TP_ETH=m @@ -12774,7 +15320,7 @@ index 026582613f2c..223488850dcf 100644 CONFIG_BRIDGE_IGMP_SNOOPING=y CONFIG_BRIDGE_VLAN_FILTERING=y # CONFIG_BRIDGE_MRP is not set -@@ -1357,7 +1390,7 @@ CONFIG_BRIDGE_VLAN_FILTERING=y +@@ -1358,7 +1393,7 @@ CONFIG_BRIDGE_VLAN_FILTERING=y CONFIG_VLAN_8021Q=m CONFIG_VLAN_8021Q_GVRP=y CONFIG_VLAN_8021Q_MVRP=y @@ -12783,7 +15329,88 @@ index 026582613f2c..223488850dcf 100644 # CONFIG_LLC2 is not set # CONFIG_ATALK is not set # CONFIG_X25 is not set -@@ -1594,6 +1627,7 @@ CONFIG_PCIEASPM_DEFAULT=y +@@ -1513,7 +1548,44 @@ CONFIG_CAN_BCM=m + CONFIG_CAN_GW=m + # CONFIG_CAN_J1939 is not set + # CONFIG_CAN_ISOTP is not set +-# CONFIG_BT is not set ++CONFIG_BT=y ++CONFIG_BT_BREDR=y ++CONFIG_BT_RFCOMM=y ++CONFIG_BT_RFCOMM_TTY=y ++CONFIG_BT_BNEP=y ++# CONFIG_BT_BNEP_MC_FILTER is not set ++# CONFIG_BT_BNEP_PROTO_FILTER is not set ++CONFIG_BT_HIDP=y ++CONFIG_BT_LE=y ++CONFIG_BT_LE_L2CAP_ECRED=y ++# CONFIG_BT_6LOWPAN is not set ++# CONFIG_BT_LEDS is not set ++# CONFIG_BT_MSFTEXT is not set ++# CONFIG_BT_AOSPEXT is not set ++CONFIG_BT_DEBUGFS=y ++# CONFIG_BT_SELFTEST is not set ++ ++# ++# Bluetooth device drivers ++# ++# CONFIG_BT_HCIBTUSB is not set ++# CONFIG_BT_HCIBTSDIO is not set ++CONFIG_BT_HCIUART=y ++CONFIG_BT_HCIUART_H4=y ++# CONFIG_BT_HCIUART_BCSP is not set ++# CONFIG_BT_HCIUART_ATH3K is not set ++# CONFIG_BT_HCIUART_INTEL is not set ++# CONFIG_BT_HCIUART_AG6XX is not set ++# CONFIG_BT_HCIBCM203X is not set ++# CONFIG_BT_HCIBCM4377 is not set ++# CONFIG_BT_HCIBPA10X is not set ++# CONFIG_BT_HCIBFUSB is not set ++# CONFIG_BT_HCIVHCI is not set ++# CONFIG_BT_MRVL is not set ++# CONFIG_BT_MTKSDIO is not set ++# CONFIG_BT_VIRTIO is not set ++# end of Bluetooth device drivers ++ + # CONFIG_AF_RXRPC is not set + # CONFIG_AF_KCM is not set + CONFIG_STREAM_PARSER=y +@@ -1522,7 +1594,7 @@ CONFIG_FIB_RULES=y + CONFIG_WIRELESS=y + CONFIG_WEXT_CORE=y + CONFIG_WEXT_PROC=y +-CONFIG_CFG80211=m ++CONFIG_CFG80211=y + # CONFIG_NL80211_TESTMODE is not set + # CONFIG_CFG80211_DEVELOPER_WARNINGS is not set + # CONFIG_CFG80211_CERTIFICATION_ONUS is not set +@@ -1532,7 +1604,7 @@ CONFIG_CFG80211_DEFAULT_PS=y + # CONFIG_CFG80211_DEBUGFS is not set + CONFIG_CFG80211_CRDA_SUPPORT=y + CONFIG_CFG80211_WEXT=y +-CONFIG_MAC80211=m ++CONFIG_MAC80211=y + CONFIG_MAC80211_HAS_RC=y + CONFIG_MAC80211_RC_MINSTREL=y + CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y +@@ -1543,7 +1615,7 @@ CONFIG_MAC80211_DEBUGFS=y + # CONFIG_MAC80211_MESSAGE_TRACING is not set + # CONFIG_MAC80211_DEBUG_MENU is not set + CONFIG_MAC80211_STA_HASH_MAX_SIZE=0 +-CONFIG_RFKILL=m ++CONFIG_RFKILL=y + CONFIG_RFKILL_LEDS=y + CONFIG_RFKILL_INPUT=y + CONFIG_RFKILL_GPIO=m +@@ -1573,6 +1645,7 @@ CONFIG_FAILOVER=y + CONFIG_ETHTOOL_NETLINK=y + CONFIG_NETACC_BPF=y + CONFIG_NETACC_TERRACE=y ++# CONFIG_ETH_CAQM is not set + + # + # Device Drivers +@@ -1595,6 +1668,7 @@ CONFIG_PCIEASPM_DEFAULT=y CONFIG_PCIE_PME=y CONFIG_PCIE_DPC=y # CONFIG_PCIE_PTM is not set @@ -12791,7 +15418,7 @@ index 026582613f2c..223488850dcf 100644 CONFIG_PCI_MSI=y CONFIG_PCI_QUIRKS=y # CONFIG_PCI_DEBUG is not set -@@ -1605,6 +1639,7 @@ CONFIG_PCI_ECAM=y +@@ -1606,6 +1680,7 @@ CONFIG_PCI_ECAM=y CONFIG_PCI_IOV=y CONFIG_PCI_PRI=y CONFIG_PCI_PASID=y @@ -12799,7 +15426,7 @@ index 026582613f2c..223488850dcf 100644 # CONFIG_PCI_DYNAMIC_OF_NODES is not set # CONFIG_PCIE_BUS_TUNE_OFF is not set CONFIG_PCIE_BUS_DEFAULT=y -@@ -1614,6 +1649,7 @@ CONFIG_PCIE_BUS_DEFAULT=y +@@ -1615,6 +1690,7 @@ CONFIG_PCIE_BUS_DEFAULT=y CONFIG_VGA_ARB=y CONFIG_VGA_ARB_MAX_GPUS=64 CONFIG_HOTPLUG_PCI=y @@ -12807,7 +15434,7 @@ index 026582613f2c..223488850dcf 100644 # CONFIG_HOTPLUG_PCI_CPCI is not set CONFIG_HOTPLUG_PCI_SHPC=y -@@ -1624,6 +1660,8 @@ CONFIG_HOTPLUG_PCI_SHPC=y +@@ -1625,6 +1701,8 @@ CONFIG_HOTPLUG_PCI_SHPC=y CONFIG_PCI_HOST_COMMON=y CONFIG_PCI_HOST_GENERIC=y CONFIG_PCIE_MICROCHIP_HOST=y @@ -12816,7 +15443,7 @@ index 026582613f2c..223488850dcf 100644 CONFIG_PCIE_XILINX=y # -@@ -1635,6 +1673,7 @@ CONFIG_PCIE_CADENCE_EP=y +@@ -1636,6 +1714,7 @@ CONFIG_PCIE_CADENCE_EP=y CONFIG_PCIE_CADENCE_PLAT=y CONFIG_PCIE_CADENCE_PLAT_HOST=y CONFIG_PCIE_CADENCE_PLAT_EP=y @@ -12824,7 +15451,7 @@ index 026582613f2c..223488850dcf 100644 CONFIG_PCI_J721E=y CONFIG_PCI_J721E_HOST=y # CONFIG_PCI_J721E_EP is not set -@@ -1697,7 +1736,6 @@ CONFIG_FW_LOADER_DEBUG=y +@@ -1698,7 +1777,6 @@ CONFIG_FW_LOADER_DEBUG=y CONFIG_EXTRA_FIRMWARE="" # CONFIG_FW_LOADER_USER_HELPER is not set # CONFIG_FW_LOADER_COMPRESS is not set @@ -12832,7 +15459,7 @@ index 026582613f2c..223488850dcf 100644 # CONFIG_FW_UPLOAD is not set # end of Firmware loader -@@ -1708,9 +1746,10 @@ CONFIG_WANT_DEV_COREDUMP=y +@@ -1709,9 +1787,10 @@ CONFIG_WANT_DEV_COREDUMP=y # CONFIG_DEBUG_TEST_DRIVER_REMOVE is not set # CONFIG_TEST_ASYNC_DRIVER_PROBE is not set CONFIG_GENERIC_CPU_DEVICES=y @@ -12845,7 +15472,7 @@ index 026582613f2c..223488850dcf 100644 CONFIG_REGMAP_MMIO=y CONFIG_DMA_SHARED_BUFFER=y # CONFIG_DMA_FENCE_TRACE is not set -@@ -1723,6 +1762,8 @@ CONFIG_GENERIC_ARCH_NUMA=y +@@ -1724,6 +1803,8 @@ CONFIG_GENERIC_ARCH_NUMA=y # Bus devices # # CONFIG_MOXTET is not set @@ -12854,7 +15481,7 @@ index 026582613f2c..223488850dcf 100644 # CONFIG_MHI_BUS is not set # CONFIG_MHI_BUS_EP is not set # end of Bus devices -@@ -1746,6 +1787,7 @@ CONFIG_PROC_EVENTS=y +@@ -1747,6 +1828,7 @@ CONFIG_PROC_EVENTS=y # end of ARM System Control and Management Interface Protocol # CONFIG_FIRMWARE_MEMMAP is not set @@ -12862,7 +15489,7 @@ index 026582613f2c..223488850dcf 100644 CONFIG_SYSFB=y CONFIG_SYSFB_SIMPLEFB=y # CONFIG_GOOGLE_FIRMWARE is not set -@@ -1766,6 +1808,7 @@ CONFIG_EFI_GENERIC_STUB=y +@@ -1767,6 +1849,7 @@ CONFIG_EFI_GENERIC_STUB=y # CONFIG_RESET_ATTACK_MITIGATION is not set # CONFIG_EFI_DISABLE_PCI_DMA is not set CONFIG_EFI_EARLYCON=y @@ -12870,7 +15497,7 @@ index 026582613f2c..223488850dcf 100644 # CONFIG_EFI_DISABLE_RUNTIME is not set # CONFIG_EFI_COCO_SECRET is not set # end of EFI (Extensible Firmware Interface) Support -@@ -1774,11 +1817,14 @@ CONFIG_EFI_EARLYCON=y +@@ -1775,11 +1858,14 @@ CONFIG_EFI_EARLYCON=y # Tegra firmware driver # # end of Tegra firmware driver @@ -12887,7 +15514,7 @@ index 026582613f2c..223488850dcf 100644 # # Partition parsers -@@ -1792,9 +1838,8 @@ CONFIG_MTD_OF_PARTS=m +@@ -1793,9 +1879,8 @@ CONFIG_MTD_OF_PARTS=m # # User Modules And Translation Layers # @@ -12899,7 +15526,7 @@ index 026582613f2c..223488850dcf 100644 # # Note that in some cases UBI block is preferred. See MTD_UBI_BLOCK. -@@ -1861,8 +1906,8 @@ CONFIG_MTD_PHYSMAP_OF=y +@@ -1862,8 +1947,8 @@ CONFIG_MTD_PHYSMAP_OF=y # CONFIG_MTD_MCHP23K256 is not set # CONFIG_MTD_MCHP48L640 is not set # CONFIG_MTD_SST25L is not set @@ -12910,7 +15537,7 @@ index 026582613f2c..223488850dcf 100644 # CONFIG_MTD_MTDRAM is not set CONFIG_MTD_BLOCK2MTD=m -@@ -1875,13 +1920,15 @@ CONFIG_MTD_BLOCK2MTD=m +@@ -1876,13 +1961,15 @@ CONFIG_MTD_BLOCK2MTD=m # # NAND # @@ -12927,7 +15554,7 @@ index 026582613f2c..223488850dcf 100644 # CONFIG_MTD_NAND_ECC_SW_HAMMING is not set # CONFIG_MTD_NAND_ECC_SW_BCH is not set # CONFIG_MTD_NAND_ECC_MXIC is not set -@@ -1894,12 +1941,13 @@ CONFIG_MTD_BLOCK2MTD=m +@@ -1895,12 +1982,13 @@ CONFIG_MTD_BLOCK2MTD=m # CONFIG_MTD_LPDDR is not set # end of LPDDR & LPDDR2 PCM memory drivers @@ -12943,7 +15570,7 @@ index 026582613f2c..223488850dcf 100644 CONFIG_MTD_UBI_WL_THRESHOLD=4096 CONFIG_MTD_UBI_BEB_LIMIT=20 # CONFIG_MTD_UBI_FASTMAP is not set -@@ -1920,6 +1968,13 @@ CONFIG_OF_RESOLVE=y +@@ -1921,6 +2009,13 @@ CONFIG_OF_RESOLVE=y CONFIG_OF_OVERLAY=y CONFIG_OF_NUMA=y # CONFIG_PARPORT is not set @@ -12957,7 +15584,7 @@ index 026582613f2c..223488850dcf 100644 CONFIG_BLK_DEV=y CONFIG_BLK_DEV_NULL_BLK=m CONFIG_CDROM=y -@@ -1938,7 +1993,7 @@ CONFIG_BLK_DEV_LOOP=y +@@ -1939,7 +2034,7 @@ CONFIG_BLK_DEV_LOOP=y CONFIG_BLK_DEV_LOOP_MIN_COUNT=0 CONFIG_BLK_DEV_DRBD=m # CONFIG_DRBD_FAULT_INJECTION is not set @@ -12966,7 +15593,7 @@ index 026582613f2c..223488850dcf 100644 CONFIG_BLK_DEV_RAM=m CONFIG_BLK_DEV_RAM_COUNT=16 CONFIG_BLK_DEV_RAM_SIZE=16384 -@@ -2007,7 +2062,7 @@ CONFIG_MISC_RTSX=m +@@ -2008,7 +2103,7 @@ CONFIG_MISC_RTSX=m # # EEPROM support # @@ -12975,7 +15602,7 @@ index 026582613f2c..223488850dcf 100644 # CONFIG_EEPROM_AT25 is not set CONFIG_EEPROM_LEGACY=m CONFIG_EEPROM_MAX6875=m -@@ -2027,7 +2082,6 @@ CONFIG_CB710_DEBUG_ASSUMPTIONS=y +@@ -2028,7 +2123,6 @@ CONFIG_CB710_DEBUG_ASSUMPTIONS=y # CONFIG_TI_ST is not set # end of Texas Instruments shared transport line discipline @@ -12983,7 +15610,7 @@ index 026582613f2c..223488850dcf 100644 CONFIG_SENSORS_LIS3_I2C=m CONFIG_ALTERA_STAPL=m # CONFIG_GENWQE is not set -@@ -2155,8 +2209,11 @@ CONFIG_SCSI_DH_ALUA=y +@@ -2156,8 +2250,11 @@ CONFIG_SCSI_DH_ALUA=y CONFIG_ATA=y CONFIG_SATA_HOST=y @@ -12995,7 +15622,7 @@ index 026582613f2c..223488850dcf 100644 CONFIG_SATA_PMP=y # -@@ -2167,6 +2224,7 @@ CONFIG_SATA_MOBILE_LPM_POLICY=0 +@@ -2168,6 +2265,7 @@ CONFIG_SATA_MOBILE_LPM_POLICY=0 CONFIG_SATA_AHCI_PLATFORM=y # CONFIG_AHCI_DWC is not set # CONFIG_AHCI_CEVA is not set @@ -13003,7 +15630,7 @@ index 026582613f2c..223488850dcf 100644 # CONFIG_SATA_INIC162X is not set # CONFIG_SATA_ACARD_AHCI is not set # CONFIG_SATA_SIL24 is not set -@@ -2188,6 +2246,7 @@ CONFIG_ATA_PIIX=m +@@ -2189,6 +2287,7 @@ CONFIG_ATA_PIIX=m # CONFIG_SATA_MV is not set # CONFIG_SATA_NV is not set # CONFIG_SATA_PROMISE is not set @@ -13011,7 +15638,7 @@ index 026582613f2c..223488850dcf 100644 # CONFIG_SATA_SIL is not set # CONFIG_SATA_SIS is not set # CONFIG_SATA_SVW is not set -@@ -2246,6 +2305,7 @@ CONFIG_ATA_PIIX=m +@@ -2247,6 +2346,7 @@ CONFIG_ATA_PIIX=m # # Generic fallback / legacy drivers # @@ -13019,68 +15646,32 @@ index 026582613f2c..223488850dcf 100644 CONFIG_ATA_GENERIC=m # CONFIG_PATA_LEGACY is not set CONFIG_MD=y -@@ -2264,41 +2324,30 @@ CONFIG_BCACHE=m +@@ -2265,14 +2365,14 @@ CONFIG_BCACHE=m # CONFIG_BCACHE_CLOSURES_DEBUG is not set # CONFIG_BCACHE_ASYNC_REGISTRATION is not set CONFIG_BLK_DEV_DM_BUILTIN=y -CONFIG_BLK_DEV_DM=m --CONFIG_DM_DEBUG=y --CONFIG_DM_BUFIO=m --# CONFIG_DM_DEBUG_BLOCK_MANAGER_LOCKING is not set --CONFIG_DM_BIO_PRISON=m --CONFIG_DM_PERSISTENT_DATA=m +CONFIG_BLK_DEV_DM=y -+# CONFIG_DM_DEBUG is not set + CONFIG_DM_DEBUG=y + CONFIG_DM_BUFIO=m + # CONFIG_DM_DEBUG_BLOCK_MANAGER_LOCKING is not set + CONFIG_DM_BIO_PRISON=m + CONFIG_DM_PERSISTENT_DATA=m # CONFIG_DM_UNSTRIPED is not set -CONFIG_DM_CRYPT=m --CONFIG_DM_SNAPSHOT=m --CONFIG_DM_THIN_PROVISIONING=m --CONFIG_DM_CACHE=m --CONFIG_DM_CACHE_SMQ=m +CONFIG_DM_CRYPT=y -+# CONFIG_DM_SNAPSHOT is not set -+# CONFIG_DM_THIN_PROVISIONING is not set -+# CONFIG_DM_CACHE is not set - # CONFIG_DM_WRITECACHE is not set - # CONFIG_DM_EBS is not set --CONFIG_DM_ERA=m -+# CONFIG_DM_ERA is not set - # CONFIG_DM_CLONE is not set --CONFIG_DM_MIRROR=m --CONFIG_DM_LOG_USERSPACE=m --CONFIG_DM_RAID=m --CONFIG_DM_ZERO=m --CONFIG_DM_MULTIPATH=m --CONFIG_DM_MULTIPATH_QL=m --CONFIG_DM_MULTIPATH_ST=m --# CONFIG_DM_MULTIPATH_HST is not set --# CONFIG_DM_MULTIPATH_IOA is not set --CONFIG_DM_DELAY=m -+# CONFIG_DM_MIRROR is not set -+# CONFIG_DM_RAID is not set -+# CONFIG_DM_ZERO is not set -+# CONFIG_DM_MULTIPATH is not set -+# CONFIG_DM_DELAY is not set + CONFIG_DM_SNAPSHOT=m + CONFIG_DM_THIN_PROVISIONING=m + CONFIG_DM_CACHE=m +@@ -2292,6 +2392,7 @@ CONFIG_DM_MULTIPATH_ST=m + # CONFIG_DM_MULTIPATH_IOA is not set + CONFIG_DM_DELAY=m # CONFIG_DM_DUST is not set --CONFIG_DM_UEVENT=y --CONFIG_DM_FLAKEY=m --CONFIG_DM_VERITY=m --# CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG is not set --# CONFIG_DM_VERITY_FEC is not set --CONFIG_DM_SWITCH=m --CONFIG_DM_LOG_WRITES=m --CONFIG_DM_INTEGRITY=m +# CONFIG_DM_INIT is not set -+# CONFIG_DM_UEVENT is not set -+# CONFIG_DM_FLAKEY is not set -+# CONFIG_DM_VERITY is not set -+# CONFIG_DM_SWITCH is not set -+# CONFIG_DM_LOG_WRITES is not set -+# CONFIG_DM_INTEGRITY is not set - # CONFIG_DM_ZONED is not set - CONFIG_DM_AUDIT=y - CONFIG_TARGET_CORE=m -@@ -2321,7 +2370,7 @@ CONFIG_ISCSI_TARGET_CXGB4=m + CONFIG_DM_UEVENT=y + CONFIG_DM_FLAKEY=m + CONFIG_DM_VERITY=m +@@ -2322,7 +2423,7 @@ CONFIG_ISCSI_TARGET_CXGB4=m # end of IEEE 1394 (FireWire) support CONFIG_NETDEVICES=y @@ -13089,7 +15680,7 @@ index 026582613f2c..223488850dcf 100644 CONFIG_NET_CORE=y CONFIG_BONDING=m CONFIG_DUMMY=m -@@ -2365,10 +2414,13 @@ CONFIG_VSOCKMON=m +@@ -2366,10 +2467,13 @@ CONFIG_VSOCKMON=m CONFIG_ETHERNET=y CONFIG_MDIO=m # CONFIG_NET_VENDOR_3COM is not set @@ -13103,7 +15694,7 @@ index 026582613f2c..223488850dcf 100644 # CONFIG_NET_VENDOR_ALTEON is not set # CONFIG_ALTERA_TSE is not set CONFIG_NET_VENDOR_AMAZON=y -@@ -2405,14 +2457,13 @@ CONFIG_BNXT_DCB=y +@@ -2406,14 +2510,13 @@ CONFIG_BNXT_DCB=y # CONFIG_BNXT_HWMON is not set CONFIG_NET_VENDOR_CADENCE=y CONFIG_MACB=y @@ -13119,15 +15710,18 @@ index 026582613f2c..223488850dcf 100644 CONFIG_LIQUIDIO_CORE=m CONFIG_LIQUIDIO=m CONFIG_LIQUIDIO_VF=m -@@ -2441,6 +2492,7 @@ CONFIG_NET_VENDOR_FUNGIBLE=y +@@ -2441,7 +2544,10 @@ CONFIG_NET_VENDOR_ENGLEDER=y + CONFIG_NET_VENDOR_FUNGIBLE=y # CONFIG_FUN_ETH is not set CONFIG_NET_VENDOR_GOOGLE=y ++CONFIG_NET_VENDOR_HISILICON=y ++# CONFIG_HIBMCGE is not set CONFIG_NET_VENDOR_HUAWEI=y +# CONFIG_BMA is not set # CONFIG_NET_VENDOR_I825XX is not set CONFIG_NET_VENDOR_INTEL=y # CONFIG_E100 is not set -@@ -2465,6 +2517,10 @@ CONFIG_FM10K=m +@@ -2466,6 +2572,10 @@ CONFIG_FM10K=m # CONFIG_IGC is not set CONFIG_NET_VENDOR_MUCSE=y # CONFIG_MXGBE is not set @@ -13138,7 +15732,7 @@ index 026582613f2c..223488850dcf 100644 # CONFIG_JME is not set CONFIG_NET_VENDOR_ADI=y # CONFIG_ADIN1110 is not set -@@ -2563,13 +2619,24 @@ CONFIG_SFC_MCDI_MON=y +@@ -2564,13 +2674,24 @@ CONFIG_SFC_MCDI_MON=y CONFIG_SFC_SRIOV=y CONFIG_SFC_MCDI_LOGGING=y # CONFIG_SFC_FALCON is not set @@ -13165,19 +15759,20 @@ index 026582613f2c..223488850dcf 100644 # CONFIG_NET_VENDOR_SUN is not set # CONFIG_NET_VENDOR_SYNOPSYS is not set # CONFIG_NET_VENDOR_TEHUTI is not set -@@ -2583,8 +2650,11 @@ CONFIG_NGBE=m +@@ -2584,8 +2705,12 @@ CONFIG_NGBE=m CONFIG_TXGBE=m # CONFIG_NET_VENDOR_WIZNET is not set # CONFIG_NET_VENDOR_XILINX is not set +CONFIG_NET_VENDOR_BZWX=y +# CONFIG_NCE is not set ++CONFIG_NET_VENDOR_NEBULA_MATRIX=y # CONFIG_FDDI is not set # CONFIG_HIPPI is not set +# CONFIG_NET_SB1000 is not set CONFIG_PHYLINK=y CONFIG_PHYLIB=y CONFIG_SWPHY=y -@@ -2660,6 +2730,7 @@ CONFIG_CAN_CALC_BITTIMING=y +@@ -2661,6 +2786,7 @@ CONFIG_CAN_CALC_BITTIMING=y # CONFIG_CAN_GRCAN is not set # CONFIG_CAN_KVASER_PCIEFD is not set CONFIG_CAN_SLCAN=m @@ -13185,7 +15780,7 @@ index 026582613f2c..223488850dcf 100644 CONFIG_CAN_C_CAN=m CONFIG_CAN_C_CAN_PLATFORM=m CONFIG_CAN_C_CAN_PCI=m -@@ -2671,6 +2742,8 @@ CONFIG_CAN_CC770_PLATFORM=m +@@ -2672,6 +2798,8 @@ CONFIG_CAN_CC770_PLATFORM=m # CONFIG_CAN_IFI_CANFD is not set # CONFIG_CAN_M_CAN is not set # CONFIG_CAN_PEAK_PCIEFD is not set @@ -13194,7 +15789,7 @@ index 026582613f2c..223488850dcf 100644 CONFIG_CAN_SJA1000=m CONFIG_CAN_EMS_PCI=m # CONFIG_CAN_F81601 is not set -@@ -2710,7 +2783,9 @@ CONFIG_MDIO_DEVICE=y +@@ -2711,7 +2839,9 @@ CONFIG_MDIO_DEVICE=y CONFIG_MDIO_BUS=y CONFIG_FWNODE_MDIO=y CONFIG_OF_MDIO=y @@ -13204,7 +15799,7 @@ index 026582613f2c..223488850dcf 100644 CONFIG_MDIO_BITBANG=m CONFIG_MDIO_BCM_UNIMAC=m CONFIG_MDIO_CAVIUM=m -@@ -2727,6 +2802,7 @@ CONFIG_MDIO_THUNDER=m +@@ -2728,6 +2858,7 @@ CONFIG_MDIO_THUNDER=m # # MDIO Multiplexers # @@ -13212,7 +15807,7 @@ index 026582613f2c..223488850dcf 100644 # CONFIG_MDIO_BUS_MUX_GPIO is not set # CONFIG_MDIO_BUS_MUX_MULTIPLEXER is not set # CONFIG_MDIO_BUS_MUX_MMIOREG is not set -@@ -2734,7 +2810,7 @@ CONFIG_MDIO_THUNDER=m +@@ -2735,7 +2866,7 @@ CONFIG_MDIO_THUNDER=m # # PCS device drivers # @@ -13221,7 +15816,7 @@ index 026582613f2c..223488850dcf 100644 # end of PCS device drivers CONFIG_PPP=m -@@ -2767,8 +2843,8 @@ CONFIG_USB_RTL8150=m +@@ -2768,8 +2899,8 @@ CONFIG_USB_RTL8150=m CONFIG_USB_RTL8152=m CONFIG_USB_LAN78XX=m CONFIG_USB_USBNET=m @@ -13232,7 +15827,7 @@ index 026582613f2c..223488850dcf 100644 CONFIG_USB_NET_CDCETHER=m CONFIG_USB_NET_CDC_EEM=m CONFIG_USB_NET_CDC_NCM=m -@@ -2780,7 +2856,7 @@ CONFIG_USB_NET_SR9700=m +@@ -2781,7 +2912,7 @@ CONFIG_USB_NET_SR9700=m CONFIG_USB_NET_SMSC75XX=m CONFIG_USB_NET_SMSC95XX=m CONFIG_USB_NET_GL620A=m @@ -13241,7 +15836,7 @@ index 026582613f2c..223488850dcf 100644 CONFIG_USB_NET_PLUSB=m CONFIG_USB_NET_MCS7830=m CONFIG_USB_NET_RNDIS_HOST=m -@@ -2864,7 +2940,39 @@ CONFIG_RT2X00_LIB_CRYPTO=y +@@ -2865,7 +2996,39 @@ CONFIG_RT2X00_LIB_CRYPTO=y CONFIG_RT2X00_LIB_LEDS=y # CONFIG_RT2X00_LIB_DEBUGFS is not set # CONFIG_RT2X00_DEBUG is not set @@ -13282,7 +15877,18 @@ index 026582613f2c..223488850dcf 100644 # CONFIG_WLAN_VENDOR_RSI is not set CONFIG_WLAN_VENDOR_SILABS=y # CONFIG_WFX is not set -@@ -2899,6 +3007,7 @@ CONFIG_HDLC_PPP=m +@@ -2876,6 +3039,10 @@ CONFIG_WLAN_VENDOR_SILABS=y + # CONFIG_USB_NET_RNDIS_WLAN is not set + # CONFIG_MAC80211_HWSIM is not set + # CONFIG_VIRT_WIFI is not set ++CONFIG_AIC_WLAN_SUPPORT=m ++CONFIG_AIC_FW_PATH="/lib/firmware/aic8800" ++CONFIG_AIC8800_WLAN_SUPPORT=m ++CONFIG_AIC8800_BTLPM_SUPPORT=m + CONFIG_WAN=y + CONFIG_HDLC=m + CONFIG_HDLC_RAW=m +@@ -2900,6 +3067,7 @@ CONFIG_HDLC_PPP=m # end of Wireless WAN # CONFIG_VMXNET3 is not set @@ -13290,7 +15896,7 @@ index 026582613f2c..223488850dcf 100644 CONFIG_USB4_NET=m # CONFIG_NETDEVSIM is not set CONFIG_NET_FAILOVER=y -@@ -2929,6 +3038,7 @@ CONFIG_INPUT_EVDEV=y +@@ -2930,6 +3098,7 @@ CONFIG_INPUT_EVDEV=y # Input Device Drivers # CONFIG_INPUT_KEYBOARD=y @@ -13298,7 +15904,7 @@ index 026582613f2c..223488850dcf 100644 # CONFIG_KEYBOARD_ADP5588 is not set # CONFIG_KEYBOARD_ADP5589 is not set CONFIG_KEYBOARD_ATKBD=y -@@ -2954,6 +3064,7 @@ CONFIG_KEYBOARD_GPIO=y +@@ -2955,6 +3124,7 @@ CONFIG_KEYBOARD_GPIO=y # CONFIG_KEYBOARD_GOLDFISH_EVENTS is not set # CONFIG_KEYBOARD_STOWAWAY is not set # CONFIG_KEYBOARD_SUNKBD is not set @@ -13306,7 +15912,7 @@ index 026582613f2c..223488850dcf 100644 # CONFIG_KEYBOARD_OMAP4 is not set # CONFIG_KEYBOARD_TM2_TOUCHKEY is not set # CONFIG_KEYBOARD_XTKBD is not set -@@ -2986,7 +3097,83 @@ CONFIG_MOUSE_SYNAPTICS_I2C=m +@@ -2987,7 +3157,83 @@ CONFIG_MOUSE_SYNAPTICS_I2C=m CONFIG_MOUSE_SYNAPTICS_USB=m # CONFIG_INPUT_JOYSTICK is not set # CONFIG_INPUT_TABLET is not set @@ -13391,7 +15997,7 @@ index 026582613f2c..223488850dcf 100644 CONFIG_INPUT_MISC=y # CONFIG_INPUT_AD714X is not set # CONFIG_INPUT_ATMEL_CAPTOUCH is not set -@@ -3003,7 +3190,7 @@ CONFIG_INPUT_MISC=y +@@ -3004,7 +3250,7 @@ CONFIG_INPUT_MISC=y # CONFIG_INPUT_YEALINK is not set # CONFIG_INPUT_CM109 is not set # CONFIG_INPUT_REGULATOR_HAPTIC is not set @@ -13400,7 +16006,7 @@ index 026582613f2c..223488850dcf 100644 # CONFIG_INPUT_PCF8574 is not set # CONFIG_INPUT_PWM_BEEPER is not set # CONFIG_INPUT_PWM_VIBRA is not set -@@ -3016,6 +3203,7 @@ CONFIG_INPUT_UINPUT=m +@@ -3017,6 +3263,7 @@ CONFIG_INPUT_UINPUT=m # CONFIG_INPUT_IQS626A is not set # CONFIG_INPUT_IQS7222 is not set # CONFIG_INPUT_CMA3000 is not set @@ -13408,7 +16014,7 @@ index 026582613f2c..223488850dcf 100644 # CONFIG_INPUT_DRV260X_HAPTICS is not set # CONFIG_INPUT_DRV2665_HAPTICS is not set # CONFIG_INPUT_DRV2667_HAPTICS is not set -@@ -3047,6 +3235,7 @@ CONFIG_SERIO_ALTERA_PS2=m +@@ -3048,6 +3295,7 @@ CONFIG_SERIO_ALTERA_PS2=m # CONFIG_SERIO_PS2MULT is not set CONFIG_SERIO_ARC_PS2=m # CONFIG_SERIO_APBPS2 is not set @@ -13416,7 +16022,7 @@ index 026582613f2c..223488850dcf 100644 # CONFIG_SERIO_GPIO_PS2 is not set # CONFIG_USERIO is not set # CONFIG_GAMEPORT is not set -@@ -3060,7 +3249,6 @@ CONFIG_TTY=y +@@ -3061,7 +3309,6 @@ CONFIG_TTY=y CONFIG_VT=y CONFIG_CONSOLE_TRANSLATIONS=y CONFIG_VT_CONSOLE=y @@ -13424,7 +16030,7 @@ index 026582613f2c..223488850dcf 100644 CONFIG_HW_CONSOLE=y CONFIG_VT_HW_CONSOLE_BINDING=y CONFIG_UNIX98_PTYS=y -@@ -3074,6 +3262,7 @@ CONFIG_LDISC_AUTOLOAD=y +@@ -3075,6 +3322,7 @@ CONFIG_LDISC_AUTOLOAD=y CONFIG_SERIAL_EARLYCON=y CONFIG_SERIAL_8250=y # CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set @@ -13432,7 +16038,18 @@ index 026582613f2c..223488850dcf 100644 CONFIG_SERIAL_8250_16550A_VARIANTS=y # CONFIG_SERIAL_8250_FINTEK is not set CONFIG_SERIAL_8250_CONSOLE=y -@@ -3091,6 +3280,7 @@ CONFIG_SERIAL_8250_SHARE_IRQ=y +@@ -3082,8 +3330,8 @@ CONFIG_SERIAL_8250_DMA=y + CONFIG_SERIAL_8250_PCILIB=y + CONFIG_SERIAL_8250_PCI=y + CONFIG_SERIAL_8250_EXAR=y +-CONFIG_SERIAL_8250_NR_UARTS=32 +-CONFIG_SERIAL_8250_RUNTIME_UARTS=4 ++CONFIG_SERIAL_8250_NR_UARTS=6 ++CONFIG_SERIAL_8250_RUNTIME_UARTS=6 + CONFIG_SERIAL_8250_EXTENDED=y + CONFIG_SERIAL_8250_MANY_PORTS=y + # CONFIG_SERIAL_8250_PCI1XXXX is not set +@@ -3092,6 +3340,7 @@ CONFIG_SERIAL_8250_SHARE_IRQ=y CONFIG_SERIAL_8250_RSA=y CONFIG_SERIAL_8250_DWLIB=y CONFIG_SERIAL_8250_DW=y @@ -13440,7 +16057,7 @@ index 026582613f2c..223488850dcf 100644 CONFIG_SERIAL_8250_RT288X=y CONFIG_SERIAL_8250_PERICOM=y CONFIG_SERIAL_OF_PLATFORM=y -@@ -3105,6 +3295,11 @@ CONFIG_SERIAL_OF_PLATFORM=y +@@ -3106,6 +3355,11 @@ CONFIG_SERIAL_OF_PLATFORM=y # CONFIG_SERIAL_MAX3100 is not set # CONFIG_SERIAL_MAX310X is not set # CONFIG_SERIAL_UARTLITE is not set @@ -13452,7 +16069,7 @@ index 026582613f2c..223488850dcf 100644 CONFIG_SERIAL_CORE=y CONFIG_SERIAL_CORE_CONSOLE=y CONFIG_CONSOLE_POLL=y -@@ -3153,6 +3348,7 @@ CONFIG_HW_RANDOM=y +@@ -3154,6 +3408,7 @@ CONFIG_HW_RANDOM=y CONFIG_HW_RANDOM_TIMERIOMEM=m # CONFIG_HW_RANDOM_BA431 is not set CONFIG_HW_RANDOM_VIRTIO=y @@ -13460,7 +16077,7 @@ index 026582613f2c..223488850dcf 100644 # CONFIG_HW_RANDOM_CCTRNG is not set # CONFIG_HW_RANDOM_XIPHERA is not set # CONFIG_HW_RANDOM_JH7110 is not set -@@ -3171,7 +3367,10 @@ CONFIG_TCG_TIS_I2C_ATMEL=m +@@ -3172,7 +3427,10 @@ CONFIG_TCG_TIS_I2C_ATMEL=m CONFIG_TCG_TIS_I2C_INFINEON=m CONFIG_TCG_TIS_I2C_NUVOTON=m CONFIG_TCG_ATMEL=m @@ -13471,7 +16088,7 @@ index 026582613f2c..223488850dcf 100644 CONFIG_TCG_TIS_ST33ZP24=m CONFIG_TCG_TIS_ST33ZP24_I2C=m CONFIG_TCG_TIS_ST33ZP24_SPI=m -@@ -3183,6 +3382,7 @@ CONFIG_TCG_TIS_ST33ZP24_SPI=m +@@ -3184,6 +3442,7 @@ CONFIG_TCG_TIS_ST33ZP24_SPI=m # I2C support # CONFIG_I2C=y @@ -13479,7 +16096,7 @@ index 026582613f2c..223488850dcf 100644 CONFIG_I2C_BOARDINFO=y CONFIG_I2C_COMPAT=y CONFIG_I2C_CHARDEV=y -@@ -3220,6 +3420,7 @@ CONFIG_I2C_CCGX_UCSI=m +@@ -3221,6 +3480,7 @@ CONFIG_I2C_CCGX_UCSI=m # CONFIG_I2C_ALI15X3 is not set # CONFIG_I2C_AMD756 is not set # CONFIG_I2C_AMD8111 is not set @@ -13487,7 +16104,7 @@ index 026582613f2c..223488850dcf 100644 # CONFIG_I2C_I801 is not set # CONFIG_I2C_ISCH is not set # CONFIG_I2C_PIIX4 is not set -@@ -3231,6 +3432,11 @@ CONFIG_I2C_NFORCE2=m +@@ -3232,6 +3492,11 @@ CONFIG_I2C_NFORCE2=m # CONFIG_I2C_VIA is not set # CONFIG_I2C_VIAPRO is not set @@ -13499,7 +16116,7 @@ index 026582613f2c..223488850dcf 100644 # # I2C system bus drivers (mostly embedded / system-on-chip) # -@@ -3242,12 +3448,17 @@ CONFIG_I2C_DESIGNWARE_PCI=m +@@ -3243,12 +3508,17 @@ CONFIG_I2C_DESIGNWARE_PCI=m # CONFIG_I2C_EMEV2 is not set CONFIG_I2C_GPIO=m # CONFIG_I2C_GPIO_FAULT_INJECTOR is not set @@ -13517,7 +16134,7 @@ index 026582613f2c..223488850dcf 100644 # # External I2C/SMBus adapter drivers -@@ -3289,6 +3500,7 @@ CONFIG_SPI_MEM=y +@@ -3290,6 +3560,7 @@ CONFIG_SPI_MEM=y CONFIG_SPI_CADENCE=m # CONFIG_SPI_CADENCE_QUADSPI is not set # CONFIG_SPI_CADENCE_XSPI is not set @@ -13525,7 +16142,7 @@ index 026582613f2c..223488850dcf 100644 CONFIG_SPI_DESIGNWARE=y # CONFIG_SPI_DW_DMA is not set CONFIG_SPI_DW_PCI=m -@@ -3301,9 +3513,15 @@ CONFIG_SPI_DW_MMIO=y +@@ -3302,9 +3573,15 @@ CONFIG_SPI_DW_MMIO=y # CONFIG_SPI_PCI1XXXX is not set # CONFIG_SPI_PL022 is not set # CONFIG_SPI_PXA2XX is not set @@ -13541,7 +16158,7 @@ index 026582613f2c..223488850dcf 100644 # CONFIG_SPI_MXIC is not set # CONFIG_SPI_XCOMM is not set # CONFIG_SPI_XILINX is not set -@@ -3318,7 +3536,7 @@ CONFIG_SPI_SIFIVE=y +@@ -3319,7 +3596,7 @@ CONFIG_SPI_SIFIVE=y # # SPI Protocol Masters # @@ -13550,7 +16167,7 @@ index 026582613f2c..223488850dcf 100644 # CONFIG_SPI_LOOPBACK_TEST is not set # CONFIG_SPI_TLE62X0 is not set # CONFIG_SPI_SLAVE is not set -@@ -3342,14 +3560,8 @@ CONFIG_PPS_CLIENT_GPIO=m +@@ -3343,14 +3620,8 @@ CONFIG_PPS_CLIENT_GPIO=m # # PTP clock support # @@ -13566,7 +16183,7 @@ index 026582613f2c..223488850dcf 100644 # end of PTP clock support CONFIG_PINCTRL=y -@@ -3359,6 +3571,7 @@ CONFIG_GENERIC_PINMUX_FUNCTIONS=y +@@ -3360,6 +3631,7 @@ CONFIG_GENERIC_PINMUX_FUNCTIONS=y CONFIG_PINCONF=y CONFIG_GENERIC_PINCONF=y # CONFIG_DEBUG_PINCTRL is not set @@ -13574,7 +16191,7 @@ index 026582613f2c..223488850dcf 100644 # CONFIG_PINCTRL_CY8C95X0 is not set # CONFIG_PINCTRL_MCP23S08 is not set # CONFIG_PINCTRL_MICROCHIP_SGPIO is not set -@@ -3366,19 +3579,47 @@ CONFIG_GENERIC_PINCONF=y +@@ -3367,19 +3639,47 @@ CONFIG_GENERIC_PINCONF=y # CONFIG_PINCTRL_SINGLE is not set # CONFIG_PINCTRL_STMFX is not set # CONFIG_PINCTRL_SX150X is not set @@ -13622,7 +16239,7 @@ index 026582613f2c..223488850dcf 100644 CONFIG_GPIOLIB_IRQCHIP=y # CONFIG_DEBUG_GPIO is not set CONFIG_GPIO_SYSFS=y -@@ -3391,6 +3632,7 @@ CONFIG_GPIO_GENERIC=y +@@ -3392,6 +3692,7 @@ CONFIG_GPIO_GENERIC=y # # CONFIG_GPIO_74XX_MMIO is not set # CONFIG_GPIO_ALTERA is not set @@ -13630,7 +16247,7 @@ index 026582613f2c..223488850dcf 100644 CONFIG_GPIO_CADENCE=m CONFIG_GPIO_DWAPB=y # CONFIG_GPIO_EXAR is not set -@@ -3401,6 +3643,7 @@ CONFIG_GPIO_GENERIC_PLATFORM=m +@@ -3402,6 +3703,7 @@ CONFIG_GPIO_GENERIC_PLATFORM=m # CONFIG_GPIO_LOGICVC is not set # CONFIG_GPIO_MB86S7X is not set # CONFIG_GPIO_PL061 is not set @@ -13638,7 +16255,7 @@ index 026582613f2c..223488850dcf 100644 CONFIG_GPIO_SIFIVE=y # CONFIG_GPIO_SYSCON is not set # CONFIG_GPIO_XILINX is not set -@@ -3416,7 +3659,8 @@ CONFIG_GPIO_SIFIVE=y +@@ -3417,7 +3719,8 @@ CONFIG_GPIO_SIFIVE=y # CONFIG_GPIO_GW_PLD is not set # CONFIG_GPIO_MAX7300 is not set # CONFIG_GPIO_MAX732X is not set @@ -13648,7 +16265,7 @@ index 026582613f2c..223488850dcf 100644 # CONFIG_GPIO_PCA9570 is not set # CONFIG_GPIO_PCF857X is not set # CONFIG_GPIO_TPIC2810 is not set -@@ -3476,6 +3720,7 @@ CONFIG_POWER_RESET_SYSCON_POWEROFF=y +@@ -3477,6 +3780,7 @@ CONFIG_POWER_RESET_SYSCON_POWEROFF=y CONFIG_POWER_SUPPLY=y # CONFIG_POWER_SUPPLY_DEBUG is not set CONFIG_POWER_SUPPLY_HWMON=y @@ -13656,7 +16273,7 @@ index 026582613f2c..223488850dcf 100644 # CONFIG_IP5XXX_POWER is not set # CONFIG_TEST_POWER is not set # CONFIG_CHARGER_ADP5061 is not set -@@ -3564,6 +3809,7 @@ CONFIG_SENSORS_G762=m +@@ -3565,6 +3869,7 @@ CONFIG_SENSORS_G762=m # CONFIG_SENSORS_HS3001 is not set CONFIG_SENSORS_IBMAEM=m CONFIG_SENSORS_IBMPEX=m @@ -13664,7 +16281,7 @@ index 026582613f2c..223488850dcf 100644 CONFIG_SENSORS_IT87=m CONFIG_SENSORS_JC42=m CONFIG_SENSORS_POWR1220=m -@@ -3599,7 +3845,7 @@ CONFIG_SENSORS_MAX31790=m +@@ -3600,7 +3905,7 @@ CONFIG_SENSORS_MAX31790=m CONFIG_SENSORS_MCP3021=m # CONFIG_SENSORS_TC654 is not set # CONFIG_SENSORS_TPS23861 is not set @@ -13673,7 +16290,7 @@ index 026582613f2c..223488850dcf 100644 CONFIG_SENSORS_ADCXX=m CONFIG_SENSORS_LM63=m CONFIG_SENSORS_LM70=m -@@ -3619,6 +3865,7 @@ CONFIG_SENSORS_LM95241=m +@@ -3620,6 +3925,7 @@ CONFIG_SENSORS_LM95241=m CONFIG_SENSORS_LM95245=m CONFIG_SENSORS_PC87360=m CONFIG_SENSORS_PC87427=m @@ -13681,7 +16298,7 @@ index 026582613f2c..223488850dcf 100644 CONFIG_SENSORS_NCT6683=m # CONFIG_SENSORS_NCT6775 is not set # CONFIG_SENSORS_NCT6775_I2C is not set -@@ -3679,7 +3926,7 @@ CONFIG_SENSORS_UCD9200=m +@@ -3680,7 +3986,7 @@ CONFIG_SENSORS_UCD9200=m # CONFIG_SENSORS_XDPE152 is not set # CONFIG_SENSORS_XDPE122 is not set CONFIG_SENSORS_ZL6100=m @@ -13690,7 +16307,7 @@ index 026582613f2c..223488850dcf 100644 # CONFIG_SENSORS_SBTSI is not set # CONFIG_SENSORS_SBRMI is not set CONFIG_SENSORS_SHT15=m -@@ -3732,9 +3979,14 @@ CONFIG_SENSORS_W83L785TS=m +@@ -3733,9 +4039,14 @@ CONFIG_SENSORS_W83L785TS=m CONFIG_SENSORS_W83L786NG=m CONFIG_SENSORS_W83627HF=m CONFIG_SENSORS_W83627EHF=m @@ -13706,7 +16323,7 @@ index 026582613f2c..223488850dcf 100644 CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0 CONFIG_THERMAL_HWMON=y CONFIG_THERMAL_OF=y -@@ -3742,41 +3994,62 @@ CONFIG_THERMAL_OF=y +@@ -3743,41 +4054,62 @@ CONFIG_THERMAL_OF=y CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y # CONFIG_THERMAL_DEFAULT_GOV_FAIR_SHARE is not set # CONFIG_THERMAL_DEFAULT_GOV_USER_SPACE is not set @@ -13772,7 +16389,7 @@ index 026582613f2c..223488850dcf 100644 # # PCI-based Watchdog Cards -@@ -3805,6 +4078,7 @@ CONFIG_BCMA_DRIVER_GPIO=y +@@ -3806,6 +4138,7 @@ CONFIG_BCMA_DRIVER_GPIO=y # CONFIG_MFD_CORE=m # CONFIG_MFD_ACT8945A is not set @@ -13780,7 +16397,7 @@ index 026582613f2c..223488850dcf 100644 # CONFIG_MFD_AS3711 is not set # CONFIG_MFD_SMPRO is not set # CONFIG_MFD_AS3722 is not set -@@ -3876,8 +4150,8 @@ CONFIG_MFD_CORE=m +@@ -3877,8 +4210,8 @@ CONFIG_MFD_CORE=m # CONFIG_MFD_SM501 is not set # CONFIG_MFD_SKY81452 is not set # CONFIG_MFD_STMPE is not set @@ -13790,7 +16407,7 @@ index 026582613f2c..223488850dcf 100644 # CONFIG_MFD_LP3943 is not set # CONFIG_MFD_LP8788 is not set # CONFIG_MFD_TI_LMU is not set -@@ -3998,6 +4272,7 @@ CONFIG_REGULATOR_PWM=y +@@ -3999,6 +4332,7 @@ CONFIG_REGULATOR_PWM=y # CONFIG_REGULATOR_TPS65132 is not set # CONFIG_REGULATOR_TPS6524X is not set # CONFIG_REGULATOR_VCTRL is not set @@ -13798,7 +16415,16 @@ index 026582613f2c..223488850dcf 100644 # CONFIG_RC_CORE is not set # -@@ -4130,10 +4405,12 @@ CONFIG_RADIO_ADAPTERS=m +@@ -4007,7 +4341,7 @@ CONFIG_REGULATOR_PWM=y + # CONFIG_MEDIA_CEC_SUPPORT is not set + # end of CEC support + +-CONFIG_MEDIA_SUPPORT=m ++CONFIG_MEDIA_SUPPORT=y + # CONFIG_MEDIA_SUPPORT_FILTER is not set + # CONFIG_MEDIA_SUBDRV_AUTOSELECT is not set + +@@ -4131,10 +4465,12 @@ CONFIG_RADIO_ADAPTERS=m # CONFIG_USB_RAREMONO is not set # CONFIG_RADIO_SI470X is not set CONFIG_MEDIA_PLATFORM_DRIVERS=y @@ -13813,7 +16439,7 @@ index 026582613f2c..223488850dcf 100644 # # Allegro DVT media platform drivers -@@ -4172,6 +4449,7 @@ CONFIG_MEDIA_PLATFORM_DRIVERS=y +@@ -4173,6 +4509,7 @@ CONFIG_MEDIA_PLATFORM_DRIVERS=y # # Marvell media platform drivers # @@ -13821,7 +16447,7 @@ index 026582613f2c..223488850dcf 100644 # # Mediatek media platform drivers -@@ -4196,6 +4474,15 @@ CONFIG_MEDIA_PLATFORM_DRIVERS=y +@@ -4197,6 +4534,15 @@ CONFIG_MEDIA_PLATFORM_DRIVERS=y # # Renesas media platform drivers # @@ -13837,7 +16463,7 @@ index 026582613f2c..223488850dcf 100644 # # Rockchip media platform drivers -@@ -4212,6 +4499,11 @@ CONFIG_MEDIA_PLATFORM_DRIVERS=y +@@ -4213,6 +4559,11 @@ CONFIG_MEDIA_PLATFORM_DRIVERS=y # # Sunxi media platform drivers # @@ -13849,7 +16475,7 @@ index 026582613f2c..223488850dcf 100644 # # Texas Instruments drivers -@@ -4220,6 +4512,7 @@ CONFIG_MEDIA_PLATFORM_DRIVERS=y +@@ -4221,6 +4572,7 @@ CONFIG_MEDIA_PLATFORM_DRIVERS=y # # Verisilicon media platform drivers # @@ -13857,7 +16483,7 @@ index 026582613f2c..223488850dcf 100644 # # VIA media platform drivers -@@ -4228,6 +4521,7 @@ CONFIG_MEDIA_PLATFORM_DRIVERS=y +@@ -4229,6 +4581,7 @@ CONFIG_MEDIA_PLATFORM_DRIVERS=y # # Xilinx media platform drivers # @@ -13865,7 +16491,7 @@ index 026582613f2c..223488850dcf 100644 # # MMC/SDIO DVB adapters -@@ -4282,6 +4576,7 @@ CONFIG_VIDEO_CAMERA_SENSOR=y +@@ -4283,6 +4636,7 @@ CONFIG_VIDEO_CAMERA_SENSOR=y # CONFIG_VIDEO_OV2659 is not set # CONFIG_VIDEO_OV2680 is not set # CONFIG_VIDEO_OV2685 is not set @@ -13873,7 +16499,7 @@ index 026582613f2c..223488850dcf 100644 # CONFIG_VIDEO_OV4689 is not set # CONFIG_VIDEO_OV5640 is not set # CONFIG_VIDEO_OV5645 is not set -@@ -4303,6 +4598,7 @@ CONFIG_VIDEO_CAMERA_SENSOR=y +@@ -4304,6 +4658,7 @@ CONFIG_VIDEO_CAMERA_SENSOR=y # CONFIG_VIDEO_OV9282 is not set # CONFIG_VIDEO_OV9640 is not set # CONFIG_VIDEO_OV9650 is not set @@ -13881,7 +16507,7 @@ index 026582613f2c..223488850dcf 100644 # CONFIG_VIDEO_RDACM20 is not set # CONFIG_VIDEO_RDACM21 is not set # CONFIG_VIDEO_RJ54N1 is not set -@@ -4340,6 +4636,7 @@ CONFIG_VIDEO_CAMERA_SENSOR=y +@@ -4341,6 +4696,7 @@ CONFIG_VIDEO_CAMERA_SENSOR=y # CONFIG_VIDEO_CS53L32A is not set # CONFIG_VIDEO_MSP3400 is not set # CONFIG_VIDEO_SONY_BTF_MPX is not set @@ -13889,7 +16515,16 @@ index 026582613f2c..223488850dcf 100644 # CONFIG_VIDEO_TDA7432 is not set # CONFIG_VIDEO_TDA9840 is not set # CONFIG_VIDEO_TEA6415C is not set -@@ -4667,6 +4964,7 @@ CONFIG_DVB_SP2=m +@@ -4451,7 +4807,7 @@ CONFIG_CXD2880_SPI_DRV=m + # CONFIG_VIDEO_GS1662 is not set + # end of Media SPI Adapters + +-CONFIG_MEDIA_TUNER=m ++CONFIG_MEDIA_TUNER=y + + # + # Customize TV tuners +@@ -4668,6 +5024,7 @@ CONFIG_DVB_SP2=m # Graphics support # CONFIG_APERTURE_HELPERS=y @@ -13897,7 +16532,7 @@ index 026582613f2c..223488850dcf 100644 CONFIG_VIDEO_CMDLINE=y CONFIG_VIDEO_NOMODESET=y CONFIG_AUXDISPLAY=y -@@ -4678,6 +4976,7 @@ CONFIG_AUXDISPLAY=y +@@ -4679,6 +5036,7 @@ CONFIG_AUXDISPLAY=y # CONFIG_CHARLCD_BL_ON is not set CONFIG_CHARLCD_BL_FLASH=y CONFIG_DRM=y @@ -13905,7 +16540,7 @@ index 026582613f2c..223488850dcf 100644 # CONFIG_DRM_DEBUG_MM is not set CONFIG_DRM_KMS_HELPER=y # CONFIG_DRM_DEBUG_DP_MST_TOPOLOGY_REFS is not set -@@ -4686,7 +4985,7 @@ CONFIG_DRM_FBDEV_EMULATION=y +@@ -4687,7 +5045,7 @@ CONFIG_DRM_FBDEV_EMULATION=y CONFIG_DRM_FBDEV_OVERALLOC=100 # CONFIG_DRM_FBDEV_LEAK_PHYS_SMEM is not set CONFIG_DRM_LOAD_EDID_FIRMWARE=y @@ -13914,7 +16549,7 @@ index 026582613f2c..223488850dcf 100644 CONFIG_DRM_DISPLAY_DP_HELPER=y CONFIG_DRM_DISPLAY_HDCP_HELPER=y CONFIG_DRM_DISPLAY_HDMI_HELPER=y -@@ -4748,6 +5047,9 @@ CONFIG_DRM_NOUVEAU_BACKLIGHT=y +@@ -4749,6 +5107,9 @@ CONFIG_DRM_NOUVEAU_BACKLIGHT=y CONFIG_DRM_UDL=m CONFIG_DRM_AST=m CONFIG_DRM_MGAG200=m @@ -13924,7 +16559,7 @@ index 026582613f2c..223488850dcf 100644 CONFIG_DRM_QXL=m CONFIG_DRM_VIRTIO_GPU=m CONFIG_DRM_VIRTIO_GPU_KMS=y -@@ -4758,36 +5060,88 @@ CONFIG_DRM_PANEL=y +@@ -4759,36 +5120,89 @@ CONFIG_DRM_PANEL=y # # CONFIG_DRM_PANEL_ABT_Y030XX067A is not set # CONFIG_DRM_PANEL_ARM_VERSATILE is not set @@ -14011,10 +16646,11 @@ index 026582613f2c..223488850dcf 100644 +# CONFIG_DRM_PANEL_VISIONOX_R66451 is not set # CONFIG_DRM_PANEL_WIDECHIPS_WS2401 is not set +# CONFIG_DRM_PANEL_XINPENG_XPP055C272 is not set ++# CONFIG_DRM_PANEL_HX8279 is not set # end of Display Panels CONFIG_DRM_BRIDGE=y -@@ -4833,6 +5187,11 @@ CONFIG_DRM_PANEL_BRIDGE=y +@@ -4834,10 +5248,16 @@ CONFIG_DRM_PANEL_BRIDGE=y # CONFIG_DRM_I2C_ADV7511 is not set # CONFIG_DRM_CDNS_DSI is not set # CONFIG_DRM_CDNS_MHDP8546 is not set @@ -14026,7 +16662,13 @@ index 026582613f2c..223488850dcf 100644 # end of Display Interface Bridges # CONFIG_DRM_LOONGSON is not set -@@ -4855,6 +5214,14 @@ CONFIG_DRM_CIRRUS_QEMU=m +-# CONFIG_DRM_ETNAVIV is not set ++CONFIG_DRM_ETNAVIV=m ++CONFIG_DRM_ETNAVIV_THERMAL=y + # CONFIG_DRM_LOGICVC is not set + # CONFIG_DRM_ARCPGU is not set + CONFIG_DRM_BOCHS=m +@@ -4856,6 +5276,14 @@ CONFIG_DRM_CIRRUS_QEMU=m # CONFIG_TINYDRM_ST7735R is not set # CONFIG_DRM_GUD is not set # CONFIG_DRM_SSD130X is not set @@ -14041,7 +16683,7 @@ index 026582613f2c..223488850dcf 100644 # CONFIG_DRM_LEGACY is not set CONFIG_DRM_PANEL_ORIENTATION_QUIRKS=y -@@ -4893,6 +5260,7 @@ CONFIG_FB_RADEON_BACKLIGHT=y +@@ -4894,6 +5322,7 @@ CONFIG_FB_RADEON_BACKLIGHT=y # CONFIG_FB_ARK is not set # CONFIG_FB_PM3 is not set # CONFIG_FB_CARMINE is not set @@ -14049,7 +16691,7 @@ index 026582613f2c..223488850dcf 100644 # CONFIG_FB_SMSCUFX is not set # CONFIG_FB_UDL is not set # CONFIG_FB_IBM_GXT4500 is not set -@@ -4918,6 +5286,7 @@ CONFIG_FB_SYS_IMAGEBLIT=y +@@ -4919,6 +5348,7 @@ CONFIG_FB_SYS_IMAGEBLIT=y # CONFIG_FB_FOREIGN_ENDIAN is not set CONFIG_FB_SYS_FOPS=y CONFIG_FB_DEFERRED_IO=y @@ -14057,7 +16699,7 @@ index 026582613f2c..223488850dcf 100644 CONFIG_FB_IOMEM_HELPERS=y CONFIG_FB_SYSMEM_HELPERS=y CONFIG_FB_SYSMEM_HELPERS_DEFERRED=y -@@ -4945,7 +5314,7 @@ CONFIG_LCD_PLATFORM=m +@@ -4946,7 +5376,7 @@ CONFIG_LCD_PLATFORM=m CONFIG_BACKLIGHT_CLASS_DEVICE=y # CONFIG_BACKLIGHT_KTD253 is not set # CONFIG_BACKLIGHT_KTZ8866 is not set @@ -14066,7 +16708,7 @@ index 026582613f2c..223488850dcf 100644 # CONFIG_BACKLIGHT_QCOM_WLED is not set # CONFIG_BACKLIGHT_ADP8860 is not set # CONFIG_BACKLIGHT_ADP8870 is not set -@@ -4959,6 +5328,7 @@ CONFIG_BACKLIGHT_GPIO=m +@@ -4960,6 +5390,7 @@ CONFIG_BACKLIGHT_GPIO=m # CONFIG_BACKLIGHT_LED is not set # end of Backlight & LCD device support @@ -14074,7 +16716,7 @@ index 026582613f2c..223488850dcf 100644 CONFIG_HDMI=y # -@@ -4982,10 +5352,13 @@ CONFIG_LOGO_LINUX_CLUT224=y +@@ -4983,10 +5414,13 @@ CONFIG_LOGO_LINUX_CLUT224=y # end of Graphics support # CONFIG_DRM_ACCEL is not set @@ -14092,7 +16734,7 @@ index 026582613f2c..223488850dcf 100644 CONFIG_SND_HWDEP=m CONFIG_SND_RAWMIDI=m CONFIG_SND_JACK=y -@@ -5073,6 +5446,11 @@ CONFIG_SND_HDA_INTEL=m +@@ -5074,6 +5508,11 @@ CONFIG_SND_HDA_INTEL=m # CONFIG_SND_HDA_RECONFIG is not set # CONFIG_SND_HDA_INPUT_BEEP is not set # CONFIG_SND_HDA_PATCH_LOADER is not set @@ -14104,7 +16746,7 @@ index 026582613f2c..223488850dcf 100644 # CONFIG_SND_HDA_CODEC_REALTEK is not set # CONFIG_SND_HDA_CODEC_ANALOG is not set # CONFIG_SND_HDA_CODEC_SIGMATEL is not set -@@ -5094,7 +5472,9 @@ CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0 +@@ -5095,7 +5534,9 @@ CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0 CONFIG_SND_HDA_CORE=m CONFIG_SND_HDA_COMPONENT=y CONFIG_SND_HDA_PREALLOC_SIZE=64 @@ -14114,7 +16756,7 @@ index 026582613f2c..223488850dcf 100644 CONFIG_SND_SPI=y CONFIG_SND_USB=y CONFIG_SND_USB_AUDIO=m -@@ -5109,7 +5489,270 @@ CONFIG_SND_USB_AUDIO_USE_MEDIA_CONTROLLER=y +@@ -5110,7 +5551,273 @@ CONFIG_SND_USB_AUDIO_USE_MEDIA_CONTROLLER=y # CONFIG_SND_USB_PODHD is not set # CONFIG_SND_USB_TONEPORT is not set # CONFIG_SND_USB_VARIAX is not set @@ -14184,6 +16826,8 @@ index 026582613f2c..223488850dcf 100644 +CONFIG_SND_SOC_XUANTIE_TH1520_I2S=y +# CONFIG_SND_SOC_XUANTIE_TH1520_I2S_CH8 is not set +CONFIG_SND_SOC_XUANTIE_TH1520_HDMI_PCM=y ++CONFIG_SND_SOC_XUANTIE_TH1520_TDM=y ++CONFIG_SND_SOC_XUANTIE_TH1520_SPDIF=y +CONFIG_SND_SOC_I2C_AND_SPI=y + +# @@ -14210,6 +16854,7 @@ index 026582613f2c..223488850dcf 100644 +# CONFIG_SND_SOC_ALC5623 is not set +# CONFIG_SND_SOC_AUDIO_IIO_AUX is not set +# CONFIG_SND_SOC_AW8738 is not set ++# CONFIG_SND_SOC_AW87519 is not set +# CONFIG_SND_SOC_AW88395 is not set +# CONFIG_SND_SOC_AW88261 is not set +# CONFIG_SND_SOC_BD28623 is not set @@ -14386,7 +17031,15 @@ index 026582613f2c..223488850dcf 100644 # CONFIG_SND_VIRTIO is not set CONFIG_HID_SUPPORT=y CONFIG_HID=y -@@ -5259,6 +5902,7 @@ CONFIG_USB_HIDDEV=y +@@ -5195,6 +5902,7 @@ CONFIG_HID_MULTITOUCH=m + # CONFIG_HID_NINTENDO is not set + # CONFIG_HID_NTI is not set + CONFIG_HID_NTRIG=y ++# CONFIG_HID_NVIDIA_SHIELD is not set + CONFIG_HID_ORTEK=m + CONFIG_HID_PANTHERLORD=m + # CONFIG_PANTHERLORD_FF is not set +@@ -5260,6 +5968,7 @@ CONFIG_USB_HIDDEV=y # end of USB HID support CONFIG_I2C_HID=y @@ -14394,7 +17047,7 @@ index 026582613f2c..223488850dcf 100644 # CONFIG_I2C_HID_OF is not set # CONFIG_I2C_HID_OF_ELAN is not set # CONFIG_I2C_HID_OF_GOODIX is not set -@@ -5295,6 +5939,7 @@ CONFIG_USB_XHCI_HCD=y +@@ -5296,6 +6005,7 @@ CONFIG_USB_XHCI_HCD=y CONFIG_USB_XHCI_PCI=y # CONFIG_USB_XHCI_PCI_RENESAS is not set CONFIG_USB_XHCI_PLATFORM=y @@ -14402,7 +17055,7 @@ index 026582613f2c..223488850dcf 100644 CONFIG_USB_EHCI_HCD=y CONFIG_USB_EHCI_ROOT_HUB_TT=y CONFIG_USB_EHCI_TT_NEWSCHED=y -@@ -5312,6 +5957,7 @@ CONFIG_USB_UHCI_HCD=y +@@ -5313,6 +6023,7 @@ CONFIG_USB_UHCI_HCD=y # CONFIG_USB_R8A66597_HCD is not set # CONFIG_USB_HCD_BCMA is not set # CONFIG_USB_HCD_TEST_MODE is not set @@ -14410,7 +17063,7 @@ index 026582613f2c..223488850dcf 100644 # # USB Device Class drivers -@@ -5336,8 +5982,8 @@ CONFIG_USB_STORAGE_DATAFAB=m +@@ -5337,8 +6048,8 @@ CONFIG_USB_STORAGE_DATAFAB=m CONFIG_USB_STORAGE_FREECOM=m CONFIG_USB_STORAGE_ISD200=m CONFIG_USB_STORAGE_USBAT=m @@ -14421,7 +17074,7 @@ index 026582613f2c..223488850dcf 100644 CONFIG_USB_STORAGE_JUMPSHOT=m CONFIG_USB_STORAGE_ALAUDA=m CONFIG_USB_STORAGE_ONETOUCH=m -@@ -5358,7 +6004,19 @@ CONFIG_USB_MICROTEK=m +@@ -5359,7 +6070,19 @@ CONFIG_USB_MICROTEK=m # # CONFIG_USB_CDNS_SUPPORT is not set # CONFIG_USB_MUSB_HDRC is not set @@ -14442,7 +17095,7 @@ index 026582613f2c..223488850dcf 100644 # CONFIG_USB_DWC2 is not set # CONFIG_USB_CHIPIDEA is not set # CONFIG_USB_ISP1760 is not set -@@ -5450,7 +6108,7 @@ CONFIG_USB_HSIC_USB3503=m +@@ -5451,7 +6174,7 @@ CONFIG_USB_HSIC_USB3503=m # CONFIG_USB_HSIC_USB4604 is not set # CONFIG_USB_LINK_LAYER_TEST is not set CONFIG_USB_CHAOSKEY=m @@ -14451,7 +17104,7 @@ index 026582613f2c..223488850dcf 100644 CONFIG_USB_ATM=m # CONFIG_USB_SPEEDTOUCH is not set CONFIG_USB_CXACRU=m -@@ -5465,7 +6123,101 @@ CONFIG_USB_XUSBATM=m +@@ -5466,7 +6189,101 @@ CONFIG_USB_XUSBATM=m # CONFIG_USB_ISP1301 is not set # end of USB Physical Layer drivers @@ -14554,7 +17207,7 @@ index 026582613f2c..223488850dcf 100644 CONFIG_TYPEC=m CONFIG_TYPEC_TCPM=m CONFIG_TYPEC_TCPCI=m -@@ -5474,6 +6226,7 @@ CONFIG_TYPEC_TCPCI=m +@@ -5475,6 +6292,7 @@ CONFIG_TYPEC_TCPCI=m # CONFIG_TYPEC_FUSB302 is not set CONFIG_TYPEC_UCSI=m # CONFIG_UCSI_CCG is not set @@ -14562,7 +17215,7 @@ index 026582613f2c..223488850dcf 100644 # CONFIG_UCSI_STM32G0 is not set # CONFIG_TYPEC_TPS6598X is not set # CONFIG_TYPEC_ANX7411 is not set -@@ -5498,7 +6251,7 @@ CONFIG_TYPEC_DP_ALTMODE=m +@@ -5499,7 +6317,7 @@ CONFIG_TYPEC_DP_ALTMODE=m # CONFIG_TYPEC_NVIDIA_ALTMODE is not set # end of USB Type-C Alternate Mode drivers @@ -14571,7 +17224,7 @@ index 026582613f2c..223488850dcf 100644 CONFIG_MMC=y CONFIG_PWRSEQ_EMMC=m CONFIG_PWRSEQ_SIMPLE=m -@@ -5517,15 +6270,18 @@ CONFIG_MMC_SDHCI=y +@@ -5518,15 +6336,18 @@ CONFIG_MMC_SDHCI=y CONFIG_MMC_SDHCI_IO_ACCESSORS=y CONFIG_MMC_SDHCI_PCI=m CONFIG_MMC_RICOH_MMC=y @@ -14591,7 +17244,7 @@ index 026582613f2c..223488850dcf 100644 CONFIG_MMC_CB710=m CONFIG_MMC_VIA_SDMMC=m CONFIG_MMC_DW=m -@@ -5536,18 +6292,18 @@ CONFIG_MMC_DW_BLUEFIELD=m +@@ -5537,18 +6358,18 @@ CONFIG_MMC_DW_BLUEFIELD=m # CONFIG_MMC_DW_K3 is not set CONFIG_MMC_DW_PCI=m # CONFIG_MMC_DW_STARFIVE is not set @@ -14612,7 +17265,24 @@ index 026582613f2c..223488850dcf 100644 # CONFIG_SCSI_UFSHCD is not set CONFIG_MEMSTICK=m # CONFIG_MEMSTICK_DEBUG is not set -@@ -5802,21 +6558,28 @@ CONFIG_RTC_DRV_M48T35=m +@@ -5589,7 +6410,7 @@ CONFIG_LEDS_LM3530=m + # CONFIG_LEDS_LM3642 is not set + # CONFIG_LEDS_LM3692X is not set + # CONFIG_LEDS_PCA9532 is not set +-# CONFIG_LEDS_GPIO is not set ++CONFIG_LEDS_GPIO=y + CONFIG_LEDS_LP3944=m + # CONFIG_LEDS_LP3952 is not set + # CONFIG_LEDS_LP50XX is not set +@@ -5671,6 +6492,7 @@ CONFIG_INFINIBAND_USER_MEM=y + CONFIG_INFINIBAND_ON_DEMAND_PAGING=y + CONFIG_INFINIBAND_ADDR_TRANS=y + CONFIG_INFINIBAND_ADDR_TRANS_CONFIGFS=y ++# CONFIG_INFINIBAND_PEER_MEMORY is not set + CONFIG_INFINIBAND_VIRT_DMA=y + CONFIG_INFINIBAND_BNXT_RE=m + CONFIG_INFINIBAND_CXGB4=m +@@ -5803,21 +6625,28 @@ CONFIG_RTC_DRV_M48T35=m CONFIG_RTC_DRV_M48T59=m CONFIG_RTC_DRV_MSM6242=m CONFIG_RTC_DRV_RP5C01=m @@ -14641,7 +17311,7 @@ index 026582613f2c..223488850dcf 100644 CONFIG_DMADEVICES=y # CONFIG_DMADEVICES_DEBUG is not set -@@ -5824,10 +6587,13 @@ CONFIG_DMADEVICES=y +@@ -5825,10 +6654,13 @@ CONFIG_DMADEVICES=y # DMA Devices # CONFIG_DMA_ENGINE=y @@ -14656,7 +17326,7 @@ index 026582613f2c..223488850dcf 100644 # CONFIG_FSL_EDMA is not set # CONFIG_INTEL_IDMA64 is not set # CONFIG_PL330_DMA is not set -@@ -5842,22 +6608,25 @@ CONFIG_DW_DMAC=m +@@ -5843,22 +6675,25 @@ CONFIG_DW_DMAC=m CONFIG_DW_DMAC_PCI=m # CONFIG_DW_EDMA is not set # CONFIG_SF_PDMA is not set @@ -14686,7 +17356,7 @@ index 026582613f2c..223488850dcf 100644 # CONFIG_DMABUF_HEAPS is not set # CONFIG_DMABUF_SYSFS_STATS is not set # end of DMABUF options -@@ -5946,6 +6715,8 @@ CONFIG_COMMON_CLK=y +@@ -5947,6 +6782,8 @@ CONFIG_COMMON_CLK=y # CONFIG_COMMON_CLK_VC7 is not set # CONFIG_COMMON_CLK_FIXED_MMIO is not set CONFIG_CLK_ANALOGBITS_WRPLL_CLN28HPC=y @@ -14695,7 +17365,7 @@ index 026582613f2c..223488850dcf 100644 CONFIG_CLK_SIFIVE=y CONFIG_CLK_SIFIVE_PRCI=y CONFIG_CLK_STARFIVE_JH71X0=y -@@ -5957,15 +6728,26 @@ CONFIG_CLK_STARFIVE_JH7110_AON=m +@@ -5958,15 +6795,27 @@ CONFIG_CLK_STARFIVE_JH7110_AON=m CONFIG_CLK_STARFIVE_JH7110_STG=m CONFIG_CLK_STARFIVE_JH7110_ISP=m CONFIG_CLK_STARFIVE_JH7110_VOUT=m @@ -14710,6 +17380,7 @@ index 026582613f2c..223488850dcf 100644 +CONFIG_CLK_TH1520_FM=y CONFIG_HWSPINLOCK=y +# CONFIG_HWSPINLOCK_SUN6I is not set ++CONFIG_HWSPINLOCK_TH1520=y # # Clock Source drivers @@ -14722,7 +17393,7 @@ index 026582613f2c..223488850dcf 100644 CONFIG_RISCV_TIMER=y # end of Clock Source drivers -@@ -5974,8 +6756,11 @@ CONFIG_MAILBOX=y +@@ -5975,8 +6824,11 @@ CONFIG_MAILBOX=y # CONFIG_ARM_MHU_V2 is not set # CONFIG_PLATFORM_MHU is not set # CONFIG_PL320_MBOX is not set @@ -14734,7 +17405,7 @@ index 026582613f2c..223488850dcf 100644 CONFIG_IOMMU_API=y CONFIG_IOMMU_SUPPORT=y -@@ -5990,6 +6775,7 @@ CONFIG_IOMMU_DEFAULT_DMA_LAZY=y +@@ -5991,6 +6843,7 @@ CONFIG_IOMMU_DEFAULT_DMA_LAZY=y # CONFIG_IOMMU_DEFAULT_PASSTHROUGH is not set CONFIG_OF_IOMMU=y # CONFIG_IOMMUFD is not set @@ -14742,7 +17413,7 @@ index 026582613f2c..223488850dcf 100644 # # Remoteproc drivers -@@ -6005,6 +6791,7 @@ CONFIG_RPMSG_CHAR=y +@@ -6006,6 +6859,7 @@ CONFIG_RPMSG_CHAR=y CONFIG_RPMSG_CTRL=y CONFIG_RPMSG_NS=y # CONFIG_RPMSG_QCOM_GLINK_RPM is not set @@ -14750,7 +17421,7 @@ index 026582613f2c..223488850dcf 100644 CONFIG_RPMSG_VIRTIO=y # end of Rpmsg drivers -@@ -6053,22 +6840,47 @@ CONFIG_RPMSG_VIRTIO=y +@@ -6054,22 +6908,65 @@ CONFIG_RPMSG_VIRTIO=y # CONFIG_QCOM_PMIC_GLINK is not set # end of Qualcomm SoC drivers @@ -14770,6 +17441,24 @@ index 026582613f2c..223488850dcf 100644 +# XuanTie SoC drivers +# +CONFIG_TH1520_REBOOTMODE=y ++CONFIG_VHA=m ++# CONFIG_VHA_XUANTIE_TH1520_FPGA_C910 is not set ++CONFIG_VHA_XUANTIE_TH1520=y ++# CONFIG_VHA_DUMMY is not set ++# CONFIG_HW_AX2 is not set ++CONFIG_HW_AX3=y ++# CONFIG_HW_AX3_MC is not set ++CONFIG_TARGET_OSID=0 ++CONFIG_VHA_MMU_MIRRORED_CTX=y ++CONFIG_VHA_SYS_AURA=y ++# CONFIG_VHA_SYS_VAGUS is not set ++CONFIG_VHA_LO_PRI_SUBSEGS=y ++CONFIG_VIDEO_VC8000D=m ++CONFIG_VIDEO_VC8000E=m ++# CONFIG_VIDEO_MEMORY is not set ++CONFIG_TH1520_SYSTEM_MONITOR=y ++CONFIG_TH1520_REGDUMP=y ++CONFIG_TH1520_IOPMP=y +# end of XuanTie SoC drivers # end of SOC (System On Chip) specific Drivers @@ -14799,7 +17488,7 @@ index 026582613f2c..223488850dcf 100644 # CONFIG_EXTCON_FSA9480 is not set CONFIG_EXTCON_GPIO=m # CONFIG_EXTCON_MAX3355 is not set -@@ -6078,7 +6890,536 @@ CONFIG_EXTCON_GPIO=m +@@ -6079,7 +6976,536 @@ CONFIG_EXTCON_GPIO=m # CONFIG_EXTCON_USB_GPIO is not set # CONFIG_EXTCON_USBC_TUSB320 is not set # CONFIG_MEMORY is not set @@ -15337,7 +18026,7 @@ index 026582613f2c..223488850dcf 100644 # CONFIG_NTB is not set CONFIG_PWM=y CONFIG_PWM_SYSFS=y -@@ -6088,7 +7429,11 @@ CONFIG_PWM_SYSFS=y +@@ -6089,7 +7515,11 @@ CONFIG_PWM_SYSFS=y # CONFIG_PWM_DWC is not set # CONFIG_PWM_FSL_FTM is not set # CONFIG_PWM_PCA9685 is not set @@ -15349,7 +18038,7 @@ index 026582613f2c..223488850dcf 100644 # CONFIG_PWM_XILINX is not set # -@@ -6104,6 +7449,8 @@ CONFIG_SIFIVE_PLIC=y +@@ -6105,6 +7535,8 @@ CONFIG_SIFIVE_PLIC=y # CONFIG_IPACK_BUS is not set CONFIG_RESET_CONTROLLER=y CONFIG_RESET_SIMPLE=y @@ -15358,7 +18047,7 @@ index 026582613f2c..223488850dcf 100644 # CONFIG_RESET_TI_SYSCON is not set # CONFIG_RESET_TI_TPS380X is not set CONFIG_RESET_STARFIVE_JH71X0=y -@@ -6114,7 +7461,12 @@ CONFIG_RESET_STARFIVE_JH7110=y +@@ -6115,7 +7547,12 @@ CONFIG_RESET_STARFIVE_JH7110=y # PHY Subsystem # CONFIG_GENERIC_PHY=y @@ -15371,7 +18060,7 @@ index 026582613f2c..223488850dcf 100644 # # PHY drivers for Broadcom platforms -@@ -6130,14 +7482,21 @@ CONFIG_GENERIC_PHY=y +@@ -6131,14 +7568,21 @@ CONFIG_GENERIC_PHY=y # CONFIG_PHY_PXA_28NM_HSIC is not set # CONFIG_PHY_PXA_28NM_USB2 is not set # CONFIG_PHY_LAN966X_SERDES is not set @@ -15393,15 +18082,17 @@ index 026582613f2c..223488850dcf 100644 # end of PHY Subsystem # CONFIG_POWERCAP is not set -@@ -6189,6 +7548,7 @@ CONFIG_NVMEM_SYSFS=y +@@ -6190,7 +7634,9 @@ CONFIG_NVMEM_SYSFS=y # end of Layout Types # CONFIG_NVMEM_RMEM is not set +CONFIG_NVMEM_SUNXI_SID=y # CONFIG_NVMEM_U_BOOT_ENV is not set ++CONFIG_NVMEM_XUANTIE_TH1520_EFUSE=y # -@@ -6200,6 +7560,8 @@ CONFIG_NVMEM_SYSFS=y + # HW tracing support +@@ -6201,6 +7647,8 @@ CONFIG_NVMEM_SYSFS=y # CONFIG_FPGA is not set # CONFIG_FSI is not set @@ -15410,7 +18101,7 @@ index 026582613f2c..223488850dcf 100644 CONFIG_PM_OPP=y # CONFIG_SIOX is not set # CONFIG_SLIMBUS is not set -@@ -6233,6 +7595,7 @@ CONFIG_EXT4_FS_POSIX_ACL=y +@@ -6234,6 +7682,7 @@ CONFIG_EXT4_FS_POSIX_ACL=y CONFIG_EXT4_FS_SECURITY=y # CONFIG_EXT4_DEBUG is not set # CONFIG_EXT4_ERROR_REPORT is not set @@ -15418,7 +18109,7 @@ index 026582613f2c..223488850dcf 100644 CONFIG_JBD2=y # CONFIG_JBD2_DEBUG is not set CONFIG_FS_MBCACHE=y -@@ -6287,10 +7650,10 @@ CONFIG_QUOTA_TREE=y +@@ -6288,10 +7737,10 @@ CONFIG_QUOTA_TREE=y CONFIG_QFMT_V2=y CONFIG_QUOTACTL=y CONFIG_AUTOFS_FS=y @@ -15431,7 +18122,7 @@ index 026582613f2c..223488850dcf 100644 # CONFIG_OVERLAY_FS_REDIRECT_DIR is not set CONFIG_OVERLAY_FS_REDIRECT_ALWAYS_FOLLOW=y # CONFIG_OVERLAY_FS_INDEX is not set -@@ -6380,8 +7743,24 @@ CONFIG_MISC_FILESYSTEMS=y +@@ -6381,8 +7830,24 @@ CONFIG_MISC_FILESYSTEMS=y # CONFIG_BEFS_FS is not set # CONFIG_BFS_FS is not set # CONFIG_EFS_FS is not set @@ -15458,7 +18149,7 @@ index 026582613f2c..223488850dcf 100644 CONFIG_CRAMFS=m CONFIG_CRAMFS_BLOCKDEV=y # CONFIG_CRAMFS_MTD is not set -@@ -6414,7 +7793,6 @@ CONFIG_PSTORE_DEFAULT_KMSG_BYTES=10240 +@@ -6415,7 +7880,6 @@ CONFIG_PSTORE_DEFAULT_KMSG_BYTES=10240 CONFIG_PSTORE_COMPRESS=y # CONFIG_PSTORE_CONSOLE is not set # CONFIG_PSTORE_PMSG is not set @@ -15466,7 +18157,7 @@ index 026582613f2c..223488850dcf 100644 CONFIG_PSTORE_RAM=m # CONFIG_PSTORE_BLK is not set # CONFIG_SYSV_FS is not set -@@ -6430,7 +7808,7 @@ CONFIG_NFS_V4=y +@@ -6431,7 +7895,7 @@ CONFIG_NFS_V4=y CONFIG_NFS_V4_1=y CONFIG_NFS_V4_2=y CONFIG_PNFS_FILE_LAYOUT=y @@ -15475,7 +18166,7 @@ index 026582613f2c..223488850dcf 100644 CONFIG_PNFS_FLEXFILE_LAYOUT=m CONFIG_NFS_V4_1_IMPLEMENTATION_ID_DOMAIN="kernel.org" # CONFIG_NFS_V4_1_MIGRATION is not set -@@ -6516,7 +7894,7 @@ CONFIG_NLS_ISO8859_8=m +@@ -6517,7 +7981,7 @@ CONFIG_NLS_ISO8859_8=m CONFIG_NLS_CODEPAGE_1250=m CONFIG_NLS_CODEPAGE_1251=m CONFIG_NLS_ASCII=y @@ -15484,7 +18175,7 @@ index 026582613f2c..223488850dcf 100644 CONFIG_NLS_ISO8859_2=m CONFIG_NLS_ISO8859_3=m CONFIG_NLS_ISO8859_4=m -@@ -6555,6 +7933,7 @@ CONFIG_KEYS=y +@@ -6556,6 +8020,7 @@ CONFIG_KEYS=y CONFIG_PERSISTENT_KEYRINGS=y CONFIG_TRUSTED_KEYS=y CONFIG_TRUSTED_KEYS_TPM=y @@ -15492,7 +18183,7 @@ index 026582613f2c..223488850dcf 100644 CONFIG_ENCRYPTED_KEYS=y # CONFIG_USER_DECRYPTED_DATA is not set # CONFIG_KEY_DH_OPERATIONS is not set -@@ -6630,6 +8009,7 @@ CONFIG_IMA_MEASURE_ASYMMETRIC_KEYS=y +@@ -6631,6 +8096,7 @@ CONFIG_IMA_MEASURE_ASYMMETRIC_KEYS=y CONFIG_IMA_QUEUE_EARLY_BOOT_KEYS=y # CONFIG_IMA_DISABLE_HTABLE is not set # CONFIG_IMA_DIGEST_LIST is not set @@ -15500,7 +18191,7 @@ index 026582613f2c..223488850dcf 100644 CONFIG_EVM=y # CONFIG_EVM_DEFAULT_HASH_SHA1 is not set CONFIG_EVM_DEFAULT_HASH_SHA256=y -@@ -6652,6 +8032,8 @@ CONFIG_LSM="lockdown,yama,loadpin,safesetid,integrity,selinux,smack,tomoyo,appar +@@ -6653,6 +8119,8 @@ CONFIG_LSM="lockdown,yama,loadpin,safesetid,integrity,selinux,smack,tomoyo,appar # Memory initialization # CONFIG_INIT_STACK_NONE=y @@ -15509,7 +18200,7 @@ index 026582613f2c..223488850dcf 100644 # CONFIG_INIT_ON_ALLOC_DEFAULT_ON is not set # CONFIG_INIT_ON_FREE_DEFAULT_ON is not set # CONFIG_ZERO_CALL_USED_REGS is not set -@@ -6666,8 +8048,6 @@ CONFIG_LIST_HARDENED=y +@@ -6667,8 +8135,6 @@ CONFIG_LIST_HARDENED=y CONFIG_RANDSTRUCT_NONE=y # end of Kernel hardening options @@ -15518,7 +18209,7 @@ index 026582613f2c..223488850dcf 100644 # end of Security options CONFIG_XOR_BLOCKS=m -@@ -6688,6 +8068,7 @@ CONFIG_CRYPTO_ALGAPI=y +@@ -6689,6 +8155,7 @@ CONFIG_CRYPTO_ALGAPI=y CONFIG_CRYPTO_ALGAPI2=y CONFIG_CRYPTO_AEAD=y CONFIG_CRYPTO_AEAD2=y @@ -15526,7 +18217,7 @@ index 026582613f2c..223488850dcf 100644 CONFIG_CRYPTO_SIG2=y CONFIG_CRYPTO_SKCIPHER=y CONFIG_CRYPTO_SKCIPHER2=y -@@ -6699,18 +8080,18 @@ CONFIG_CRYPTO_RNG_DEFAULT=y +@@ -6700,18 +8167,18 @@ CONFIG_CRYPTO_RNG_DEFAULT=y CONFIG_CRYPTO_AKCIPHER2=y CONFIG_CRYPTO_AKCIPHER=y CONFIG_CRYPTO_KPP2=y @@ -15548,15 +18239,17 @@ index 026582613f2c..223488850dcf 100644 CONFIG_CRYPTO_TEST=m CONFIG_CRYPTO_ENGINE=y # end of Crypto core or helper -@@ -6719,14 +8100,14 @@ CONFIG_CRYPTO_ENGINE=y +@@ -6720,14 +8187,14 @@ CONFIG_CRYPTO_ENGINE=y # Public-key cryptography # CONFIG_CRYPTO_RSA=y -CONFIG_CRYPTO_DH=m +CONFIG_CRYPTO_DH=y # CONFIG_CRYPTO_DH_RFC7919_GROUPS is not set - CONFIG_CRYPTO_ECC=m - CONFIG_CRYPTO_ECDH=m +-CONFIG_CRYPTO_ECC=m +-CONFIG_CRYPTO_ECDH=m ++CONFIG_CRYPTO_ECC=y ++CONFIG_CRYPTO_ECDH=y # CONFIG_CRYPTO_ECDSA is not set # CONFIG_CRYPTO_ECRDSA is not set CONFIG_CRYPTO_SM2=y @@ -15565,7 +18258,7 @@ index 026582613f2c..223488850dcf 100644 # end of Public-key cryptography # -@@ -6742,7 +8123,7 @@ CONFIG_CRYPTO_CAMELLIA=m +@@ -6743,7 +8210,7 @@ CONFIG_CRYPTO_CAMELLIA=m CONFIG_CRYPTO_CAST_COMMON=m CONFIG_CRYPTO_CAST5=m CONFIG_CRYPTO_CAST6=m @@ -15574,7 +18267,7 @@ index 026582613f2c..223488850dcf 100644 CONFIG_CRYPTO_FCRYPT=m CONFIG_CRYPTO_KHAZAD=m CONFIG_CRYPTO_SEED=m -@@ -6759,7 +8140,7 @@ CONFIG_CRYPTO_TWOFISH_COMMON=m +@@ -6760,7 +8227,7 @@ CONFIG_CRYPTO_TWOFISH_COMMON=m # # CONFIG_CRYPTO_ADIANTUM is not set CONFIG_CRYPTO_ARC4=m @@ -15583,7 +18276,7 @@ index 026582613f2c..223488850dcf 100644 CONFIG_CRYPTO_CBC=y # CONFIG_CRYPTO_CFB is not set CONFIG_CRYPTO_CTR=y -@@ -6768,22 +8149,22 @@ CONFIG_CRYPTO_ECB=y +@@ -6769,35 +8236,35 @@ CONFIG_CRYPTO_ECB=y # CONFIG_CRYPTO_HCTR2 is not set # CONFIG_CRYPTO_KEYWRAP is not set CONFIG_CRYPTO_LRW=m @@ -15599,8 +18292,9 @@ index 026582613f2c..223488850dcf 100644 # # CONFIG_CRYPTO_AEGIS128 is not set -CONFIG_CRYPTO_CHACHA20POLY1305=m +-CONFIG_CRYPTO_CCM=m +CONFIG_CRYPTO_CHACHA20POLY1305=y - CONFIG_CRYPTO_CCM=m ++CONFIG_CRYPTO_CCM=y CONFIG_CRYPTO_GCM=y CONFIG_CRYPTO_GENIV=y CONFIG_CRYPTO_SEQIV=y @@ -15610,7 +18304,13 @@ index 026582613f2c..223488850dcf 100644 # end of AEAD (authenticated encryption with associated data) ciphers # -@@ -6796,7 +8177,7 @@ CONFIG_CRYPTO_HMAC=y + # Hashes, digests, and MACs + # + CONFIG_CRYPTO_BLAKE2B=m +-CONFIG_CRYPTO_CMAC=m ++CONFIG_CRYPTO_CMAC=y + CONFIG_CRYPTO_GHASH=y + CONFIG_CRYPTO_HMAC=y CONFIG_CRYPTO_MD4=m CONFIG_CRYPTO_MD5=y CONFIG_CRYPTO_MICHAEL_MIC=m @@ -15619,7 +18319,7 @@ index 026582613f2c..223488850dcf 100644 CONFIG_CRYPTO_RMD160=m CONFIG_CRYPTO_SHA1=y CONFIG_CRYPTO_SHA256=y -@@ -6859,6 +8240,10 @@ CONFIG_CRYPTO_USER_API_ENABLE_OBSOLETE=y +@@ -6860,6 +8327,10 @@ CONFIG_CRYPTO_USER_API_ENABLE_OBSOLETE=y CONFIG_CRYPTO_HASH_INFO=y CONFIG_CRYPTO_HW=y @@ -15630,7 +18330,7 @@ index 026582613f2c..223488850dcf 100644 # CONFIG_CRYPTO_DEV_ATMEL_ECC is not set # CONFIG_CRYPTO_DEV_ATMEL_SHA204A is not set # CONFIG_CRYPTO_DEV_NITROX_CNN55XX is not set -@@ -6866,6 +8251,7 @@ CONFIG_CRYPTO_HW=y +@@ -6867,6 +8338,7 @@ CONFIG_CRYPTO_HW=y # CONFIG_CRYPTO_DEV_QAT_C3XXX is not set # CONFIG_CRYPTO_DEV_QAT_C62X is not set # CONFIG_CRYPTO_DEV_QAT_4XXX is not set @@ -15638,8 +18338,12 @@ index 026582613f2c..223488850dcf 100644 # CONFIG_CRYPTO_DEV_QAT_DH895xCCVF is not set # CONFIG_CRYPTO_DEV_QAT_C3XXXVF is not set # CONFIG_CRYPTO_DEV_QAT_C62XVF is not set -@@ -6931,13 +8317,13 @@ CONFIG_CRYPTO_LIB_AES=y - CONFIG_CRYPTO_LIB_ARC4=m +@@ -6929,16 +8401,16 @@ CONFIG_GENERIC_PCI_IOMAP=y + # + CONFIG_CRYPTO_LIB_UTILS=y + CONFIG_CRYPTO_LIB_AES=y +-CONFIG_CRYPTO_LIB_ARC4=m ++CONFIG_CRYPTO_LIB_ARC4=y CONFIG_CRYPTO_LIB_GF128MUL=y CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y -CONFIG_CRYPTO_LIB_CHACHA_GENERIC=m @@ -15656,7 +18360,7 @@ index 026582613f2c..223488850dcf 100644 # CONFIG_CRYPTO_LIB_POLY1305 is not set # CONFIG_CRYPTO_LIB_CHACHA20POLY1305 is not set CONFIG_CRYPTO_LIB_SHA1=y -@@ -7008,6 +8394,7 @@ CONFIG_HAS_IOPORT_MAP=y +@@ -7009,6 +8481,7 @@ CONFIG_HAS_IOPORT_MAP=y CONFIG_HAS_DMA=y CONFIG_NEED_DMA_MAP_STATE=y CONFIG_ARCH_DMA_ADDR_T_64BIT=y @@ -15664,7 +18368,16 @@ index 026582613f2c..223488850dcf 100644 CONFIG_DMA_DECLARE_COHERENT=y CONFIG_ARCH_HAS_SETUP_DMA_OPS=y CONFIG_ARCH_HAS_SYNC_DMA_FOR_DEVICE=y -@@ -7038,7 +8425,6 @@ CONFIG_DMA_MAP_BENCHMARK=y +@@ -7028,7 +8501,7 @@ CONFIG_DMA_CMA=y + # + # Default contiguous memory area size: + # +-CONFIG_CMA_SIZE_MBYTES=64 ++CONFIG_CMA_SIZE_MBYTES=32 + CONFIG_CMA_SIZE_SEL_MBYTES=y + # CONFIG_CMA_SIZE_SEL_PERCENTAGE is not set + # CONFIG_CMA_SIZE_SEL_MIN is not set +@@ -7039,7 +8512,6 @@ CONFIG_DMA_MAP_BENCHMARK=y CONFIG_SGL_ALLOC=y CONFIG_CHECK_SIGNATURE=y # CONFIG_CPUMASK_OFFSTACK is not set @@ -15672,7 +18385,7 @@ index 026582613f2c..223488850dcf 100644 CONFIG_CPU_RMAP=y CONFIG_DQL=y CONFIG_GLOB=y -@@ -7091,7 +8477,6 @@ CONFIG_BOOT_PRINTK_DELAY=y +@@ -7092,7 +8564,6 @@ CONFIG_BOOT_PRINTK_DELAY=y CONFIG_DYNAMIC_DEBUG=y CONFIG_DYNAMIC_DEBUG_CORE=y CONFIG_SYMBOLIC_ERRNAME=y @@ -15680,7 +18393,7 @@ index 026582613f2c..223488850dcf 100644 # end of printk and dmesg options CONFIG_DEBUG_KERNEL=y -@@ -7108,6 +8493,7 @@ CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT=y +@@ -7109,6 +8580,7 @@ CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT=y # CONFIG_DEBUG_INFO_REDUCED is not set CONFIG_DEBUG_INFO_COMPRESSED_NONE=y # CONFIG_DEBUG_INFO_COMPRESSED_ZLIB is not set @@ -15688,7 +18401,7 @@ index 026582613f2c..223488850dcf 100644 CONFIG_DEBUG_INFO_BTF=y CONFIG_PAHOLE_HAS_SPLIT_BTF=y CONFIG_PAHOLE_HAS_LANG_EXCLUDE=y -@@ -7174,7 +8560,6 @@ CONFIG_SLUB_DEBUG=y +@@ -7175,7 +8647,6 @@ CONFIG_SLUB_DEBUG=y # CONFIG_PAGE_TABLE_CHECK is not set # CONFIG_PAGE_POISONING is not set # CONFIG_DEBUG_PAGE_REF is not set @@ -15696,7 +18409,7 @@ index 026582613f2c..223488850dcf 100644 CONFIG_ARCH_HAS_DEBUG_WX=y # CONFIG_DEBUG_WX is not set CONFIG_GENERIC_PTDUMP=y -@@ -7237,6 +8622,7 @@ CONFIG_SCHEDSTATS=y +@@ -7238,6 +8709,7 @@ CONFIG_SCHEDSTATS=y # end of Scheduler Debugging # CONFIG_DEBUG_TIMEKEEPING is not set @@ -15704,7 +18417,7 @@ index 026582613f2c..223488850dcf 100644 # # Lock Debugging (spinlocks, mutexes, etc...) -@@ -7252,7 +8638,7 @@ CONFIG_LOCK_DEBUGGING_SUPPORT=y +@@ -7253,7 +8725,7 @@ CONFIG_LOCK_DEBUGGING_SUPPORT=y # CONFIG_DEBUG_LOCK_ALLOC is not set CONFIG_DEBUG_ATOMIC_SLEEP=y # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set @@ -15713,7 +18426,7 @@ index 026582613f2c..223488850dcf 100644 # CONFIG_WW_MUTEX_SELFTEST is not set # CONFIG_SCF_TORTURE_TEST is not set # CONFIG_CSD_LOCK_WAIT_DEBUG is not set -@@ -7276,8 +8662,9 @@ CONFIG_DEBUG_LIST=y +@@ -7277,8 +8749,9 @@ CONFIG_DEBUG_LIST=y # # RCU Debugging # @@ -15724,7 +18437,7 @@ index 026582613f2c..223488850dcf 100644 # CONFIG_RCU_REF_SCALE_TEST is not set CONFIG_RCU_CPU_STALL_TIMEOUT=60 CONFIG_RCU_EXP_CPU_STALL_TIMEOUT=0 -@@ -7293,7 +8680,6 @@ CONFIG_RCU_EXP_CPU_STALL_TIMEOUT=0 +@@ -7294,7 +8767,6 @@ CONFIG_RCU_EXP_CPU_STALL_TIMEOUT=0 CONFIG_NOP_TRACER=y CONFIG_HAVE_RETHOOK=y CONFIG_RETHOOK=y @@ -15732,7 +18445,7 @@ index 026582613f2c..223488850dcf 100644 CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y CONFIG_HAVE_FUNCTION_GRAPH_RETVAL=y CONFIG_HAVE_DYNAMIC_FTRACE=y -@@ -7310,15 +8696,8 @@ CONFIG_GENERIC_TRACER=y +@@ -7311,15 +8783,8 @@ CONFIG_GENERIC_TRACER=y CONFIG_TRACING_SUPPORT=y CONFIG_FTRACE=y CONFIG_BOOTTIME_TRACING=y @@ -15749,7 +18462,7 @@ index 026582613f2c..223488850dcf 100644 CONFIG_SCHED_TRACER=y CONFIG_HWLAT_TRACER=y CONFIG_OSNOISE_TRACER=y -@@ -7331,21 +8710,17 @@ CONFIG_BRANCH_PROFILE_NONE=y +@@ -7332,21 +8797,17 @@ CONFIG_BRANCH_PROFILE_NONE=y CONFIG_BLK_DEV_IO_TRACE=y CONFIG_PROBE_EVENTS_BTF_ARGS=y CONFIG_KPROBE_EVENTS=y @@ -15771,7 +18484,7 @@ index 026582613f2c..223488850dcf 100644 # CONFIG_FTRACE_STARTUP_TEST is not set # CONFIG_RING_BUFFER_STARTUP_TEST is not set # CONFIG_RING_BUFFER_VALIDATE_TIME_DELTAS is not set -@@ -7353,7 +8728,37 @@ CONFIG_RING_BUFFER_BENCHMARK=m +@@ -7354,7 +8815,37 @@ CONFIG_RING_BUFFER_BENCHMARK=m # CONFIG_SYNTH_EVENT_GEN_TEST is not set # CONFIG_KPROBE_EVENT_GEN_TEST is not set # CONFIG_RV is not set @@ -15810,7 +18523,7 @@ index 026582613f2c..223488850dcf 100644 CONFIG_STRICT_DEVMEM=y CONFIG_IO_STRICT_DEVMEM=y -@@ -7371,7 +8776,47 @@ CONFIG_FUNCTION_ERROR_INJECTION=y +@@ -7372,7 +8863,47 @@ CONFIG_FUNCTION_ERROR_INJECTION=y # CONFIG_FAULT_INJECTION is not set CONFIG_ARCH_HAS_KCOV=y # CONFIG_KCOV is not set @@ -15859,7 +18572,7 @@ index 026582613f2c..223488850dcf 100644 CONFIG_ARCH_USE_MEMTEST=y # CONFIG_MEMTEST is not set # end of Kernel Testing and Coverage -@@ -7383,9 +8828,3 @@ CONFIG_ARCH_USE_MEMTEST=y +@@ -7384,9 +8915,3 @@ CONFIG_ARCH_USE_MEMTEST=y # end of Kernel hacking # CONFIG_KWORKER_NUMA_AFFINITY is not set @@ -15886,10 +18599,10 @@ index 000000000000..7c6d2e3ddeaa + diff --git a/arch/riscv/configs/th1520_defconfig b/arch/riscv/configs/th1520_defconfig new file mode 100644 -index 000000000000..56337a80e0f4 +index 000000000000..10d67d6ff963 --- /dev/null +++ b/arch/riscv/configs/th1520_defconfig -@@ -0,0 +1,398 @@ +@@ -0,0 +1,470 @@ +CONFIG_SYSVIPC=y +CONFIG_POSIX_MQUEUE=y +CONFIG_NO_HZ_IDLE=y @@ -16014,6 +18727,7 @@ index 000000000000..56337a80e0f4 +CONFIG_DRM=y +CONFIG_DRM_PANEL_SIMPLE=y +CONFIG_DRM_PANEL_JADARD_JD9365DA_H3=y ++CONFIG_DRM_PANEL_HX8279=y +CONFIG_DRM_VERISILICON=y +CONFIG_BACKLIGHT_CLASS_DEVICE=y +CONFIG_BACKLIGHT_PWM=y @@ -16116,7 +18830,7 @@ index 000000000000..56337a80e0f4 +CONFIG_USB_DWC3_XUANTIE=m +CONFIG_USB_ROLE_SWITCH=m +CONFIG_USB_ONBOARD_HUB=m -+CONFIG_USB_GADGET=m ++CONFIG_USB_GADGET=y +CONFIG_USB_CONFIGFS=y +CONFIG_USB_CONFIGFS_F_FS=y +CONFIG_USB_CONFIGFS_F_ACC=y @@ -16166,11 +18880,12 @@ index 000000000000..56337a80e0f4 +CONFIG_SND_SOC_XUANTIE=y +# TH1520 i2s +CONFIG_SND_SOC_XUANTIE_TH1520_I2S=y -+# CONFIG_SND_SOC_XUANTIE_TH1520_I2S_CH8 is not set ++CONFIG_SND_SOC_XUANTIE_TH1520_I2S_CH8=y +CONFIG_SND_SOC_XUANTIE_TH1520_HDMI_PCM=y +# TH1520 codec +CONFIG_SND_SOC_ES7210=y +CONFIG_SND_SOC_ES8156=y ++CONFIG_SND_SOC_AW87519=y +# TH1520 devfreq thermal +CONFIG_PM_DEVFREQ=y +CONFIG_PM_DEVFREQ_EVENT=y @@ -16288,6 +19003,76 @@ index 000000000000..56337a80e0f4 +CONFIG_RTW88_8723DS=m +# PowerVR Rogue GPU +CONFIG_DRM_POWERVR_ROGUE=m ++# npu-ax3386 ++CONFIG_VHA=m ++CONFIG_VHA_XUANTIE_TH1520=y ++# vc8000d vc8000e ++CONFIG_VIDEO_VC8000D=m ++CONFIG_VIDEO_VC8000E=m ++# video_memory ++CONFIG_VIDEO_MEMORY=m ++# TH1520 tdm ++CONFIG_SND_SOC_XUANTIE_TH1520_TDM=y ++# TH1520 spdif ++CONFIG_SND_SOC_XUANTIE_TH1520_SPDIF=y ++# AIC8800 ++CONFIG_BT=y ++CONFIG_BT_RFCOMM=y ++CONFIG_BT_RFCOMM_TTY=y ++CONFIG_BT_BNEP=y ++CONFIG_BT_HIDP=y ++CONFIG_BT_HCIUART=y ++CONFIG_BT_HCIUART_H4=y ++CONFIG_CFG80211=y ++CONFIG_CFG80211_WEXT=y ++CONFIG_MAC80211=y ++CONFIG_RFKILL=y ++CONFIG_HOSTAP=y ++CONFIG_HOSTAP_FIRMWARE=y ++CONFIG_HOSTAP_FIRMWARE_NVRAM=y ++CONFIG_SERIAL_8250_NR_UARTS=6 ++CONFIG_SERIAL_8250_RUNTIME_UARTS=6 ++CONFIG_I2C=y ++CONFIG_GPIO_SYSFS=y ++CONFIG_NEW_LEDS=y ++CONFIG_LEDS_CLASS=y ++CONFIG_LEDS_GPIO=y ++# AIC8800 modules ++CONFIG_AIC_WLAN_SUPPORT=m ++CONFIG_AIC8800_WLAN_SUPPORT=m ++CONFIG_AIC8800_BTLPM_SUPPORT=m ++# add MAX_ORDER config for riscv and th1520 ++CONFIG_ARCH_FORCE_MAX_ORDER=15 ++# enable cma config ++CONFIG_MEMORY_ISOLATION=y ++CONFIG_CONTIG_ALLOC=y ++CONFIG_CMA=y ++# CONFIG_CMA_DEBUG is not set ++CONFIG_CMA_DEBUGFS=y ++# CONFIG_CMA_SYSFS is not set ++CONFIG_CMA_AREAS=7 ++CONFIG_DMA_CMA=y ++# ++# Default contiguous memory area size: ++# ++CONFIG_CMA_SIZE_MBYTES=32 ++CONFIG_CMA_SIZE_SEL_MBYTES=y ++# CONFIG_CMA_SIZE_SEL_PERCENTAGE is not set ++# CONFIG_CMA_SIZE_SEL_MIN is not set ++# CONFIG_CMA_SIZE_SEL_MAX is not set ++CONFIG_CMA_ALIGNMENT=8 ++# TH1520 efuse ++CONFIG_NVMEM_XUANTIE_TH1520_EFUSE=y ++# TH1520 hwspinlock ++CONFIG_HWSPINLOCK=y ++CONFIG_HWSPINLOCK_TH1520=y ++# TH1520 regdump ++CONFIG_TH1520_REGDUMP=y ++# TH1520 media ++CONFIG_MEDIA_SUPPORT=y ++CONFIG_MEDIA_USB_SUPPORT=y ++CONFIG_V4L_PLATFORM_DRIVERS=y ++CONFIG_V4L_MEM2MEM_DRIVERS=y diff --git a/arch/riscv/include/asm/barrier.h b/arch/riscv/include/asm/barrier.h index 110752594228..2b1f98b7e9bf 100644 --- a/arch/riscv/include/asm/barrier.h @@ -16399,52 +19184,14 @@ index 42497d487a17..bbdc3c7ed6ca 100644 + ioremap_prot((addr), (size), _PAGE_IOREMAP_WC) + #endif /* _ASM_RISCV_IO_H */ -diff --git a/arch/riscv/include/asm/kfence.h b/arch/riscv/include/asm/kfence.h -index 0bbffd528096..7388edd88986 100644 ---- a/arch/riscv/include/asm/kfence.h -+++ b/arch/riscv/include/asm/kfence.h -@@ -18,9 +18,9 @@ static inline bool kfence_protect_page(unsigned long addr, bool protect) - pte_t *pte = virt_to_kpte(addr); - - if (protect) -- set_pte(pte, __pte(pte_val(*pte) & ~_PAGE_PRESENT)); -+ set_pte(pte, __pte(pte_val(ptep_get(pte)) & ~_PAGE_PRESENT)); - else -- set_pte(pte, __pte(pte_val(*pte) | _PAGE_PRESENT)); -+ set_pte(pte, __pte(pte_val(ptep_get(pte)) | _PAGE_PRESENT)); - - flush_tlb_kernel_range(addr, addr + PAGE_SIZE); - diff --git a/arch/riscv/include/asm/membarrier.h b/arch/riscv/include/asm/membarrier.h -new file mode 100644 -index 000000000000..47b240d0d596 ---- /dev/null +index 6c016ebb5020..47b240d0d596 100644 +--- a/arch/riscv/include/asm/membarrier.h +++ b/arch/riscv/include/asm/membarrier.h -@@ -0,0 +1,50 @@ -+/* SPDX-License-Identifier: GPL-2.0-only */ -+#ifndef _ASM_RISCV_MEMBARRIER_H -+#define _ASM_RISCV_MEMBARRIER_H -+ -+static inline void membarrier_arch_switch_mm(struct mm_struct *prev, -+ struct mm_struct *next, -+ struct task_struct *tsk) -+{ -+ /* -+ * Only need the full barrier when switching between processes. -+ * Barrier when switching from kernel to userspace is not -+ * required here, given that it is implied by mmdrop(). Barrier -+ * when switching from userspace to kernel is not needed after -+ * store to rq->curr. -+ */ -+ if (IS_ENABLED(CONFIG_SMP) && -+ likely(!(atomic_read(&next->membarrier_state) & -+ (MEMBARRIER_STATE_PRIVATE_EXPEDITED | -+ MEMBARRIER_STATE_GLOBAL_EXPEDITED)) || !prev)) -+ return; -+ -+ /* -+ * The membarrier system call requires a full memory barrier -+ * after storing to rq->curr, before going back to user-space. +@@ -22,6 +22,25 @@ static inline void membarrier_arch_switch_mm(struct mm_struct *prev, + /* + * The membarrier system call requires a full memory barrier + * after storing to rq->curr, before going back to user-space. + * + * This barrier is also needed for the SYNC_CORE command when + * switching between processes; in particular, on a transition @@ -16464,15 +19211,11 @@ index 000000000000..47b240d0d596 + * - [CPU1] switch_mm() loads icache_stale_mask; if the bit + * is zero, switch_mm() may incorrectly skip the sync-core. + * -+ * Matches a full barrier in the proximity of the membarrier -+ * system call entry. -+ */ -+ smp_mb(); -+} -+ -+#endif /* _ASM_RISCV_MEMBARRIER_H */ + * Matches a full barrier in the proximity of the membarrier + * system call entry. + */ diff --git a/arch/riscv/include/asm/pgtable-64.h b/arch/riscv/include/asm/pgtable-64.h -index 7a5097202e15..b99bd66107a6 100644 +index 3272ca7a5270..b99bd66107a6 100644 --- a/arch/riscv/include/asm/pgtable-64.h +++ b/arch/riscv/include/asm/pgtable-64.h @@ -126,14 +126,18 @@ enum napot_cont_order { @@ -16499,61 +19242,8 @@ index 7a5097202e15..b99bd66107a6 100644 #define _PAGE_MTMASK_THEAD (_PAGE_PMA_THEAD | _PAGE_IO_THEAD | (1UL << 59)) static inline u64 riscv_page_mtmask(void) -@@ -198,7 +202,7 @@ static inline int pud_user(pud_t pud) - - static inline void set_pud(pud_t *pudp, pud_t pud) - { -- *pudp = pud; -+ WRITE_ONCE(*pudp, pud); - } - - static inline void pud_clear(pud_t *pudp) -@@ -274,7 +278,7 @@ static inline unsigned long _pmd_pfn(pmd_t pmd) - static inline void set_p4d(p4d_t *p4dp, p4d_t p4d) - { - if (pgtable_l4_enabled) -- *p4dp = p4d; -+ WRITE_ONCE(*p4dp, p4d); - else - set_pud((pud_t *)p4dp, (pud_t){ p4d_val(p4d) }); - } -@@ -336,18 +340,12 @@ static inline struct page *p4d_page(p4d_t p4d) - #define pud_index(addr) (((addr) >> PUD_SHIFT) & (PTRS_PER_PUD - 1)) - - #define pud_offset pud_offset --static inline pud_t *pud_offset(p4d_t *p4d, unsigned long address) --{ -- if (pgtable_l4_enabled) -- return p4d_pgtable(*p4d) + pud_index(address); -- -- return (pud_t *)p4d; --} -+pud_t *pud_offset(p4d_t *p4d, unsigned long address); - - static inline void set_pgd(pgd_t *pgdp, pgd_t pgd) - { - if (pgtable_l5_enabled) -- *pgdp = pgd; -+ WRITE_ONCE(*pgdp, pgd); - else - set_p4d((p4d_t *)pgdp, (p4d_t){ pgd_val(pgd) }); - } -@@ -400,12 +398,6 @@ static inline struct page *pgd_page(pgd_t pgd) - #define p4d_index(addr) (((addr) >> P4D_SHIFT) & (PTRS_PER_P4D - 1)) - - #define p4d_offset p4d_offset --static inline p4d_t *p4d_offset(pgd_t *pgd, unsigned long address) --{ -- if (pgtable_l5_enabled) -- return pgd_pgtable(*pgd) + p4d_index(address); -- -- return (p4d_t *)pgd; --} -+p4d_t *p4d_offset(pgd_t *pgd, unsigned long address); - - #endif /* _ASM_RISCV_PGTABLE_64_H */ diff --git a/arch/riscv/include/asm/pgtable.h b/arch/riscv/include/asm/pgtable.h -index a16fcdf91f39..c739d8d78e57 100644 +index 63d8a84826e9..e3b1f4515f20 100644 --- a/arch/riscv/include/asm/pgtable.h +++ b/arch/riscv/include/asm/pgtable.h @@ -205,7 +205,8 @@ extern struct pt_alloc_ops pt_ops __initdata; @@ -16566,69 +19256,35 @@ index a16fcdf91f39..c739d8d78e57 100644 #define PAGE_KERNEL_IO __pgprot(_PAGE_IOREMAP) extern pgd_t swapper_pg_dir[]; -@@ -248,7 +249,7 @@ static inline int pmd_leaf(pmd_t pmd) +diff --git a/arch/riscv/include/asm/sbi.h b/arch/riscv/include/asm/sbi.h +index 3ed853b8a8c8..8d261a317175 100644 +--- a/arch/riscv/include/asm/sbi.h ++++ b/arch/riscv/include/asm/sbi.h +@@ -29,6 +29,7 @@ enum sbi_ext_id { + SBI_EXT_RFENCE = 0x52464E43, + SBI_EXT_HSM = 0x48534D, + SBI_EXT_SRST = 0x53525354, ++ SBI_EXT_SUSP = 0x53555350, + SBI_EXT_PMU = 0x504D55, - static inline void set_pmd(pmd_t *pmdp, pmd_t pmd) - { -- *pmdp = pmd; -+ WRITE_ONCE(*pmdp, pmd); - } + /* Experimentals extensions must lie within this range */ +@@ -113,6 +114,14 @@ enum sbi_srst_reset_reason { + SBI_SRST_RESET_REASON_SYS_FAILURE, + }; - static inline void pmd_clear(pmd_t *pmdp) -@@ -515,7 +516,7 @@ static inline int pte_same(pte_t pte_a, pte_t pte_b) - */ - static inline void set_pte(pte_t *ptep, pte_t pteval) - { -- *ptep = pteval; -+ WRITE_ONCE(*ptep, pteval); - } - - void flush_icache_pte(pte_t pte); -@@ -551,19 +552,12 @@ static inline void pte_clear(struct mm_struct *mm, - __set_pte_at(ptep, __pte(0)); - } - --#define __HAVE_ARCH_PTEP_SET_ACCESS_FLAGS --static inline int ptep_set_access_flags(struct vm_area_struct *vma, -- unsigned long address, pte_t *ptep, -- pte_t entry, int dirty) --{ -- if (!pte_same(*ptep, entry)) -- __set_pte_at(ptep, entry); -- /* -- * update_mmu_cache will unconditionally execute, handling both -- * the case that the PTE changed and the spurious fault case. -- */ -- return true; --} -+#define __HAVE_ARCH_PTEP_SET_ACCESS_FLAGS /* defined in mm/pgtable.c */ -+extern int ptep_set_access_flags(struct vm_area_struct *vma, unsigned long address, -+ pte_t *ptep, pte_t entry, int dirty); -+#define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_YOUNG /* defined in mm/pgtable.c */ -+extern int ptep_test_and_clear_young(struct vm_area_struct *vma, unsigned long address, -+ pte_t *ptep); - - #define __HAVE_ARCH_PTEP_GET_AND_CLEAR - static inline pte_t ptep_get_and_clear(struct mm_struct *mm, -@@ -576,16 +570,6 @@ static inline pte_t ptep_get_and_clear(struct mm_struct *mm, - return pte; - } - --#define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_YOUNG --static inline int ptep_test_and_clear_young(struct vm_area_struct *vma, -- unsigned long address, -- pte_t *ptep) --{ -- if (!pte_young(*ptep)) -- return 0; -- return test_and_clear_bit(_PAGE_ACCESSED_OFFSET, &pte_val(*ptep)); --} -- - #define __HAVE_ARCH_PTEP_SET_WRPROTECT - static inline void ptep_set_wrprotect(struct mm_struct *mm, - unsigned long address, pte_t *ptep) ++enum sbi_ext_susp_fid { ++ SBI_EXT_SUSP_SYSTEM_SUSPEND = 0, ++}; ++ ++enum sbi_ext_susp_sleep_type { ++ SBI_SUSP_SLEEP_TYPE_SUSPEND_TO_RAM = 0, ++}; ++ + enum sbi_ext_pmu_fid { + SBI_EXT_PMU_NUM_COUNTERS = 0, + SBI_EXT_PMU_COUNTER_GET_INFO, diff --git a/arch/riscv/include/asm/sparsemem.h b/arch/riscv/include/asm/sparsemem.h -index 63acaecc3374..7ed3519b2d77 100644 +index 2f901a410586..87ab782be702 100644 --- a/arch/riscv/include/asm/sparsemem.h +++ b/arch/riscv/include/asm/sparsemem.h @@ -5,7 +5,7 @@ @@ -16638,7 +19294,7 @@ index 63acaecc3374..7ed3519b2d77 100644 -#define MAX_PHYSMEM_BITS 56 +#define MAX_PHYSMEM_BITS 44 #else - #define MAX_PHYSMEM_BITS 34 + #define MAX_PHYSMEM_BITS 32 #endif /* CONFIG_64BIT */ diff --git a/arch/riscv/include/asm/switch_to.h b/arch/riscv/include/asm/switch_to.h index a727be723c56..1da3f54d52f0 100644 @@ -16701,19 +19357,6 @@ index 000000000000..9153016da8f1 +#endif /* CONFIG_SMP */ + +#endif /* _ASM_RISCV_SYNC_CORE_H */ -diff --git a/arch/riscv/kernel/efi.c b/arch/riscv/kernel/efi.c -index aa6209a74c83..b64bf1624a05 100644 ---- a/arch/riscv/kernel/efi.c -+++ b/arch/riscv/kernel/efi.c -@@ -60,7 +60,7 @@ int __init efi_create_mapping(struct mm_struct *mm, efi_memory_desc_t *md) - static int __init set_permissions(pte_t *ptep, unsigned long addr, void *data) - { - efi_memory_desc_t *md = data; -- pte_t pte = READ_ONCE(*ptep); -+ pte_t pte = ptep_get(ptep); - unsigned long val; - - if (md->attribute & EFI_MEMORY_RO) { diff --git a/arch/riscv/kernel/module.c b/arch/riscv/kernel/module.c index df4f6fec5d17..ced5a09abaaa 100644 --- a/arch/riscv/kernel/module.c @@ -16830,6 +19473,158 @@ index 83e223318822..dd973216e31c 100644 + +EXPORT_SYMBOL_GPL(__fstate_save); +EXPORT_SYMBOL_GPL(__fstate_restore); +diff --git a/arch/riscv/kernel/sbi-ipi.c b/arch/riscv/kernel/sbi-ipi.c +index a4559695ce62..0e2e19352469 100644 +--- a/arch/riscv/kernel/sbi-ipi.c ++++ b/arch/riscv/kernel/sbi-ipi.c +@@ -3,18 +3,35 @@ + * Multiplex several IPIs over a single HW IPI. + * + * Copyright (c) 2022 Ventana Micro Systems Inc. ++ * Copyright (C) 2024 Alibaba Group Holding Limited. + */ + + #define pr_fmt(fmt) "riscv: " fmt + #include + #include + #include ++#include + #include + #include ++#include ++#include ++#include + #include + + static int sbi_ipi_virq; + ++static u32 __iomem *sswi_base; ++ ++static void sswi_send_ipi(unsigned int cpu) ++{ ++ writel(1, sswi_base + cpuid_to_hartid_map(cpu)); ++} ++ ++static void sswi_clear_ipi(void) ++{ ++ writel(0, sswi_base + cpuid_to_hartid_map(smp_processor_id())); ++} ++ + static void sbi_ipi_handle(struct irq_desc *desc) + { + struct irq_chip *chip = irq_desc_get_chip(desc); +@@ -22,6 +39,9 @@ static void sbi_ipi_handle(struct irq_desc *desc) + chained_irq_enter(chip, desc); + + csr_clear(CSR_IP, IE_SIE); ++ if (sswi_base) ++ sswi_clear_ipi(); ++ + ipi_mux_process(); + + chained_irq_exit(chip, desc); +@@ -54,7 +74,8 @@ void __init sbi_ipi_init(void) + return; + } + +- virq = ipi_mux_create(BITS_PER_BYTE, sbi_send_ipi); ++ virq = ipi_mux_create(BITS_PER_BYTE, sswi_base ? sswi_send_ipi ++ : sbi_send_ipi); + if (virq <= 0) { + pr_err("unable to create muxed IPIs\n"); + irq_dispose_mapping(sbi_ipi_virq); +@@ -68,10 +89,27 @@ void __init sbi_ipi_init(void) + * the masking/unmasking of virtual IPIs is done + * via generic IPI-Mux + */ +- cpuhp_setup_state(CPUHP_AP_ONLINE_DYN, ++ cpuhp_setup_state(CPUHP_AP_IRQ_RISCV_SBI_IPI_STARTING, ++ sswi_base ? ++ "irqchip/sswi-ipi:starting" : + "irqchip/sbi-ipi:starting", + sbi_ipi_starting_cpu, NULL); + +- riscv_ipi_set_virq_range(virq, BITS_PER_BYTE, false); +- pr_info("providing IPIs using SBI IPI extension\n"); ++ riscv_ipi_set_virq_range(virq, BITS_PER_BYTE, ++ sswi_base ? true : false); ++ pr_info("providing IPIs using %s IPI extension\n", ++ sswi_base ? "ACLINT SSWI" : "SBI"); ++} ++ ++static int __init aclint_sswi_probe(struct device_node *node, ++ struct device_node *parent) ++{ ++ sswi_base = of_iomap(node, 0); ++ if (!sswi_base) { ++ pr_err("RISC-V ACLINT SSWI device probe failure\n"); ++ return -ENODEV; ++ } ++ ++ return 0; + } ++IRQCHIP_DECLARE(riscv_aclint_sswi, "riscv,aclint-sswi", aclint_sswi_probe); +diff --git a/arch/riscv/kernel/suspend.c b/arch/riscv/kernel/suspend.c +index 3c89b8ec69c4..239509367e42 100644 +--- a/arch/riscv/kernel/suspend.c ++++ b/arch/riscv/kernel/suspend.c +@@ -4,8 +4,12 @@ + * Copyright (c) 2022 Ventana Micro Systems Inc. + */ + ++#define pr_fmt(fmt) "suspend: " fmt ++ + #include ++#include + #include ++#include + #include + + void suspend_save_csrs(struct suspend_context *context) +@@ -85,3 +89,43 @@ int cpu_suspend(unsigned long arg, + + return rc; + } ++ ++#ifdef CONFIG_RISCV_SBI ++static int sbi_system_suspend(unsigned long sleep_type, ++ unsigned long resume_addr, ++ unsigned long opaque) ++{ ++ struct sbiret ret; ++ ++ ret = sbi_ecall(SBI_EXT_SUSP, SBI_EXT_SUSP_SYSTEM_SUSPEND, ++ sleep_type, resume_addr, opaque, 0, 0, 0); ++ if (ret.error) ++ return sbi_err_map_linux_errno(ret.error); ++ ++ return ret.value; ++} ++ ++static int sbi_system_suspend_enter(suspend_state_t state) ++{ ++ return cpu_suspend(SBI_SUSP_SLEEP_TYPE_SUSPEND_TO_RAM, sbi_system_suspend); ++} ++ ++static const struct platform_suspend_ops sbi_system_suspend_ops = { ++ .valid = suspend_valid_only_mem, ++ .enter = sbi_system_suspend_enter, ++}; ++ ++static int __init sbi_system_suspend_init(void) ++{ ++ if (sbi_spec_version >= sbi_mk_version(2, 0) && ++ sbi_probe_extension(SBI_EXT_SUSP) > 0) { ++ pr_info("SBI SUSP extension detected\n"); ++ if (IS_ENABLED(CONFIG_SUSPEND)) ++ suspend_set_ops(&sbi_system_suspend_ops); ++ } ++ ++ return 0; ++} ++ ++arch_initcall(sbi_system_suspend_init); ++#endif /* CONFIG_RISCV_SBI */ diff --git a/arch/riscv/kernel/vector.c b/arch/riscv/kernel/vector.c index 8d92fb6c522c..2c1f6c87d955 100644 --- a/arch/riscv/kernel/vector.c @@ -16844,120 +19639,6 @@ index 8d92fb6c522c..2c1f6c87d955 100644 datap = kzalloc(riscv_v_vsize, GFP_KERNEL); if (!datap) return -ENOMEM; -diff --git a/arch/riscv/kvm/mmu.c b/arch/riscv/kvm/mmu.c -index 068c74593871..a9e2fd7245e1 100644 ---- a/arch/riscv/kvm/mmu.c -+++ b/arch/riscv/kvm/mmu.c -@@ -103,7 +103,7 @@ static bool gstage_get_leaf_entry(struct kvm *kvm, gpa_t addr, - *ptep_level = current_level; - ptep = (pte_t *)kvm->arch.pgd; - ptep = &ptep[gstage_pte_index(addr, current_level)]; -- while (ptep && pte_val(*ptep)) { -+ while (ptep && pte_val(ptep_get(ptep))) { - if (gstage_pte_leaf(ptep)) { - *ptep_level = current_level; - *ptepp = ptep; -@@ -113,7 +113,7 @@ static bool gstage_get_leaf_entry(struct kvm *kvm, gpa_t addr, - if (current_level) { - current_level--; - *ptep_level = current_level; -- ptep = (pte_t *)gstage_pte_page_vaddr(*ptep); -+ ptep = (pte_t *)gstage_pte_page_vaddr(ptep_get(ptep)); - ptep = &ptep[gstage_pte_index(addr, current_level)]; - } else { - ptep = NULL; -@@ -149,25 +149,25 @@ static int gstage_set_pte(struct kvm *kvm, u32 level, - if (gstage_pte_leaf(ptep)) - return -EEXIST; - -- if (!pte_val(*ptep)) { -+ if (!pte_val(ptep_get(ptep))) { - if (!pcache) - return -ENOMEM; - next_ptep = kvm_mmu_memory_cache_alloc(pcache); - if (!next_ptep) - return -ENOMEM; -- *ptep = pfn_pte(PFN_DOWN(__pa(next_ptep)), -- __pgprot(_PAGE_TABLE)); -+ set_pte(ptep, pfn_pte(PFN_DOWN(__pa(next_ptep)), -+ __pgprot(_PAGE_TABLE))); - } else { - if (gstage_pte_leaf(ptep)) - return -EEXIST; -- next_ptep = (pte_t *)gstage_pte_page_vaddr(*ptep); -+ next_ptep = (pte_t *)gstage_pte_page_vaddr(ptep_get(ptep)); - } - - current_level--; - ptep = &next_ptep[gstage_pte_index(addr, current_level)]; - } - -- *ptep = *new_pte; -+ set_pte(ptep, *new_pte); - if (gstage_pte_leaf(ptep)) - gstage_remote_tlb_flush(kvm, current_level, addr); - -@@ -239,11 +239,11 @@ static void gstage_op_pte(struct kvm *kvm, gpa_t addr, - - BUG_ON(addr & (page_size - 1)); - -- if (!pte_val(*ptep)) -+ if (!pte_val(ptep_get(ptep))) - return; - - if (ptep_level && !gstage_pte_leaf(ptep)) { -- next_ptep = (pte_t *)gstage_pte_page_vaddr(*ptep); -+ next_ptep = (pte_t *)gstage_pte_page_vaddr(ptep_get(ptep)); - next_ptep_level = ptep_level - 1; - ret = gstage_level_to_page_size(next_ptep_level, - &next_page_size); -@@ -261,7 +261,7 @@ static void gstage_op_pte(struct kvm *kvm, gpa_t addr, - if (op == GSTAGE_OP_CLEAR) - set_pte(ptep, __pte(0)); - else if (op == GSTAGE_OP_WP) -- set_pte(ptep, __pte(pte_val(*ptep) & ~_PAGE_WRITE)); -+ set_pte(ptep, __pte(pte_val(ptep_get(ptep)) & ~_PAGE_WRITE)); - gstage_remote_tlb_flush(kvm, ptep_level, addr); - } - } -@@ -603,7 +603,7 @@ bool kvm_test_age_gfn(struct kvm *kvm, struct kvm_gfn_range *range) - &ptep, &ptep_level)) - return false; - -- return pte_young(*ptep); -+ return pte_young(ptep_get(ptep)); - } - - int kvm_riscv_gstage_map(struct kvm_vcpu *vcpu, -diff --git a/arch/riscv/mm/Makefile b/arch/riscv/mm/Makefile -index 3a4dfc8babcf..2c869f8026a8 100644 ---- a/arch/riscv/mm/Makefile -+++ b/arch/riscv/mm/Makefile -@@ -13,10 +13,9 @@ endif - KCOV_INSTRUMENT_init.o := n - - obj-y += init.o --obj-$(CONFIG_MMU) += extable.o fault.o pageattr.o -+obj-$(CONFIG_MMU) += extable.o fault.o pageattr.o pgtable.o - obj-y += cacheflush.o - obj-y += context.o --obj-y += pgtable.o - obj-y += pmem.o - - ifeq ($(CONFIG_MMU),y) -diff --git a/arch/riscv/mm/context.c b/arch/riscv/mm/context.c -index 217fd4de6134..ba8eb3944687 100644 ---- a/arch/riscv/mm/context.c -+++ b/arch/riscv/mm/context.c -@@ -323,6 +323,8 @@ void switch_mm(struct mm_struct *prev, struct mm_struct *next, - if (unlikely(prev == next)) - return; - -+ membarrier_arch_switch_mm(prev, next, task); -+ - /* - * Mark the current MM context as inactive, and the next as - * active. This is at least used by the icache flushing diff --git a/arch/riscv/mm/dma-noncoherent.c b/arch/riscv/mm/dma-noncoherent.c index a77342eb3489..32031a7d96d4 100644 --- a/arch/riscv/mm/dma-noncoherent.c @@ -17006,531 +19687,84 @@ index a77342eb3489..32031a7d96d4 100644 } void arch_setup_dma_ops(struct device *dev, u64 dma_base, u64 size, -diff --git a/arch/riscv/mm/fault.c b/arch/riscv/mm/fault.c -index c91a8f84a3c2..6f1c7c8bdb83 100644 ---- a/arch/riscv/mm/fault.c -+++ b/arch/riscv/mm/fault.c -@@ -137,24 +137,24 @@ static inline void vmalloc_fault(struct pt_regs *regs, int code, unsigned long a - pgd = (pgd_t *)pfn_to_virt(pfn) + index; - pgd_k = init_mm.pgd + index; - -- if (!pgd_present(*pgd_k)) { -+ if (!pgd_present(pgdp_get(pgd_k))) { - no_context(regs, addr); - return; - } -- set_pgd(pgd, *pgd_k); -+ set_pgd(pgd, pgdp_get(pgd_k)); - - p4d_k = p4d_offset(pgd_k, addr); -- if (!p4d_present(*p4d_k)) { -+ if (!p4d_present(p4dp_get(p4d_k))) { - no_context(regs, addr); - return; - } - - pud_k = pud_offset(p4d_k, addr); -- if (!pud_present(*pud_k)) { -+ if (!pud_present(pudp_get(pud_k))) { - no_context(regs, addr); - return; - } -- if (pud_leaf(*pud_k)) -+ if (pud_leaf(pudp_get(pud_k))) - goto flush_tlb; - - /* -@@ -162,11 +162,11 @@ static inline void vmalloc_fault(struct pt_regs *regs, int code, unsigned long a - * to copy individual PTEs - */ - pmd_k = pmd_offset(pud_k, addr); -- if (!pmd_present(*pmd_k)) { -+ if (!pmd_present(pmdp_get(pmd_k))) { - no_context(regs, addr); - return; - } -- if (pmd_leaf(*pmd_k)) -+ if (pmd_leaf(pmdp_get(pmd_k))) - goto flush_tlb; - - /* -@@ -176,7 +176,7 @@ static inline void vmalloc_fault(struct pt_regs *regs, int code, unsigned long a - * silently loop forever. - */ - pte_k = pte_offset_kernel(pmd_k, addr); -- if (!pte_present(*pte_k)) { -+ if (!pte_present(ptep_get(pte_k))) { - no_context(regs, addr); - return; - } -diff --git a/arch/riscv/mm/hugetlbpage.c b/arch/riscv/mm/hugetlbpage.c -index fbe918801667..5ef2a6891158 100644 ---- a/arch/riscv/mm/hugetlbpage.c -+++ b/arch/riscv/mm/hugetlbpage.c -@@ -54,7 +54,7 @@ pte_t *huge_pte_alloc(struct mm_struct *mm, - } - - if (sz == PMD_SIZE) { -- if (want_pmd_share(vma, addr) && pud_none(*pud)) -+ if (want_pmd_share(vma, addr) && pud_none(pudp_get(pud))) - pte = huge_pmd_share(mm, vma, addr, pud); - else - pte = (pte_t *)pmd_alloc(mm, pud, addr); -@@ -93,11 +93,11 @@ pte_t *huge_pte_offset(struct mm_struct *mm, - pmd_t *pmd; - - pgd = pgd_offset(mm, addr); -- if (!pgd_present(*pgd)) -+ if (!pgd_present(pgdp_get(pgd))) - return NULL; - - p4d = p4d_offset(pgd, addr); -- if (!p4d_present(*p4d)) -+ if (!p4d_present(p4dp_get(p4d))) - return NULL; - - pud = pud_offset(p4d, addr); -@@ -105,7 +105,7 @@ pte_t *huge_pte_offset(struct mm_struct *mm, - /* must be pud huge, non-present or none */ - return (pte_t *)pud; - -- if (!pud_present(*pud)) -+ if (!pud_present(pudp_get(pud))) - return NULL; - - pmd = pmd_offset(pud, addr); -@@ -113,7 +113,7 @@ pte_t *huge_pte_offset(struct mm_struct *mm, - /* must be pmd huge, non-present or none */ - return (pte_t *)pmd; - -- if (!pmd_present(*pmd)) -+ if (!pmd_present(pmdp_get(pmd))) - return NULL; - - for_each_napot_order(order) { -@@ -351,7 +351,7 @@ void huge_pte_clear(struct mm_struct *mm, - pte_t *ptep, - unsigned long sz) - { -- pte_t pte = READ_ONCE(*ptep); -+ pte_t pte = ptep_get(ptep); - int i, pte_num; - - if (!pte_napot(pte)) { -diff --git a/arch/riscv/mm/kasan_init.c b/arch/riscv/mm/kasan_init.c -index 5e39dcf23fdb..e96251853037 100644 ---- a/arch/riscv/mm/kasan_init.c -+++ b/arch/riscv/mm/kasan_init.c -@@ -31,7 +31,7 @@ static void __init kasan_populate_pte(pmd_t *pmd, unsigned long vaddr, unsigned - phys_addr_t phys_addr; - pte_t *ptep, *p; - -- if (pmd_none(*pmd)) { -+ if (pmd_none(pmdp_get(pmd))) { - p = memblock_alloc(PTRS_PER_PTE * sizeof(pte_t), PAGE_SIZE); - set_pmd(pmd, pfn_pmd(PFN_DOWN(__pa(p)), PAGE_TABLE)); - } -@@ -39,7 +39,7 @@ static void __init kasan_populate_pte(pmd_t *pmd, unsigned long vaddr, unsigned - ptep = pte_offset_kernel(pmd, vaddr); - - do { -- if (pte_none(*ptep)) { -+ if (pte_none(ptep_get(ptep))) { - phys_addr = memblock_phys_alloc(PAGE_SIZE, PAGE_SIZE); - set_pte(ptep, pfn_pte(PFN_DOWN(phys_addr), PAGE_KERNEL)); - memset(__va(phys_addr), KASAN_SHADOW_INIT, PAGE_SIZE); -@@ -53,7 +53,7 @@ static void __init kasan_populate_pmd(pud_t *pud, unsigned long vaddr, unsigned - pmd_t *pmdp, *p; - unsigned long next; - -- if (pud_none(*pud)) { -+ if (pud_none(pudp_get(pud))) { - p = memblock_alloc(PTRS_PER_PMD * sizeof(pmd_t), PAGE_SIZE); - set_pud(pud, pfn_pud(PFN_DOWN(__pa(p)), PAGE_TABLE)); - } -@@ -63,7 +63,8 @@ static void __init kasan_populate_pmd(pud_t *pud, unsigned long vaddr, unsigned - do { - next = pmd_addr_end(vaddr, end); - -- if (pmd_none(*pmdp) && IS_ALIGNED(vaddr, PMD_SIZE) && (next - vaddr) >= PMD_SIZE) { -+ if (pmd_none(pmdp_get(pmdp)) && IS_ALIGNED(vaddr, PMD_SIZE) && -+ (next - vaddr) >= PMD_SIZE) { - phys_addr = memblock_phys_alloc(PMD_SIZE, PMD_SIZE); - if (phys_addr) { - set_pmd(pmdp, pfn_pmd(PFN_DOWN(phys_addr), PAGE_KERNEL)); -@@ -83,7 +84,7 @@ static void __init kasan_populate_pud(p4d_t *p4d, - pud_t *pudp, *p; - unsigned long next; - -- if (p4d_none(*p4d)) { -+ if (p4d_none(p4dp_get(p4d))) { - p = memblock_alloc(PTRS_PER_PUD * sizeof(pud_t), PAGE_SIZE); - set_p4d(p4d, pfn_p4d(PFN_DOWN(__pa(p)), PAGE_TABLE)); - } -@@ -93,7 +94,8 @@ static void __init kasan_populate_pud(p4d_t *p4d, - do { - next = pud_addr_end(vaddr, end); - -- if (pud_none(*pudp) && IS_ALIGNED(vaddr, PUD_SIZE) && (next - vaddr) >= PUD_SIZE) { -+ if (pud_none(pudp_get(pudp)) && IS_ALIGNED(vaddr, PUD_SIZE) && -+ (next - vaddr) >= PUD_SIZE) { - phys_addr = memblock_phys_alloc(PUD_SIZE, PUD_SIZE); - if (phys_addr) { - set_pud(pudp, pfn_pud(PFN_DOWN(phys_addr), PAGE_KERNEL)); -@@ -113,7 +115,7 @@ static void __init kasan_populate_p4d(pgd_t *pgd, - p4d_t *p4dp, *p; - unsigned long next; - -- if (pgd_none(*pgd)) { -+ if (pgd_none(pgdp_get(pgd))) { - p = memblock_alloc(PTRS_PER_P4D * sizeof(p4d_t), PAGE_SIZE); - set_pgd(pgd, pfn_pgd(PFN_DOWN(__pa(p)), PAGE_TABLE)); - } -@@ -123,7 +125,8 @@ static void __init kasan_populate_p4d(pgd_t *pgd, - do { - next = p4d_addr_end(vaddr, end); - -- if (p4d_none(*p4dp) && IS_ALIGNED(vaddr, P4D_SIZE) && (next - vaddr) >= P4D_SIZE) { -+ if (p4d_none(p4dp_get(p4dp)) && IS_ALIGNED(vaddr, P4D_SIZE) && -+ (next - vaddr) >= P4D_SIZE) { - phys_addr = memblock_phys_alloc(P4D_SIZE, P4D_SIZE); - if (phys_addr) { - set_p4d(p4dp, pfn_p4d(PFN_DOWN(phys_addr), PAGE_KERNEL)); -@@ -145,7 +148,7 @@ static void __init kasan_populate_pgd(pgd_t *pgdp, - do { - next = pgd_addr_end(vaddr, end); - -- if (pgd_none(*pgdp) && IS_ALIGNED(vaddr, PGDIR_SIZE) && -+ if (pgd_none(pgdp_get(pgdp)) && IS_ALIGNED(vaddr, PGDIR_SIZE) && - (next - vaddr) >= PGDIR_SIZE) { - phys_addr = memblock_phys_alloc(PGDIR_SIZE, PGDIR_SIZE); - if (phys_addr) { -@@ -168,7 +171,7 @@ static void __init kasan_early_clear_pud(p4d_t *p4dp, - if (!pgtable_l4_enabled) { - pudp = (pud_t *)p4dp; - } else { -- base_pud = pt_ops.get_pud_virt(pfn_to_phys(_p4d_pfn(*p4dp))); -+ base_pud = pt_ops.get_pud_virt(pfn_to_phys(_p4d_pfn(p4dp_get(p4dp)))); - pudp = base_pud + pud_index(vaddr); - } - -@@ -193,7 +196,7 @@ static void __init kasan_early_clear_p4d(pgd_t *pgdp, - if (!pgtable_l5_enabled) { - p4dp = (p4d_t *)pgdp; - } else { -- base_p4d = pt_ops.get_p4d_virt(pfn_to_phys(_pgd_pfn(*pgdp))); -+ base_p4d = pt_ops.get_p4d_virt(pfn_to_phys(_pgd_pfn(pgdp_get(pgdp)))); - p4dp = base_p4d + p4d_index(vaddr); - } - -@@ -239,14 +242,14 @@ static void __init kasan_early_populate_pud(p4d_t *p4dp, - if (!pgtable_l4_enabled) { - pudp = (pud_t *)p4dp; - } else { -- base_pud = pt_ops.get_pud_virt(pfn_to_phys(_p4d_pfn(*p4dp))); -+ base_pud = pt_ops.get_pud_virt(pfn_to_phys(_p4d_pfn(p4dp_get(p4dp)))); - pudp = base_pud + pud_index(vaddr); - } - - do { - next = pud_addr_end(vaddr, end); - -- if (pud_none(*pudp) && IS_ALIGNED(vaddr, PUD_SIZE) && -+ if (pud_none(pudp_get(pudp)) && IS_ALIGNED(vaddr, PUD_SIZE) && - (next - vaddr) >= PUD_SIZE) { - phys_addr = __pa((uintptr_t)kasan_early_shadow_pmd); - set_pud(pudp, pfn_pud(PFN_DOWN(phys_addr), PAGE_TABLE)); -@@ -277,14 +280,14 @@ static void __init kasan_early_populate_p4d(pgd_t *pgdp, - if (!pgtable_l5_enabled) { - p4dp = (p4d_t *)pgdp; - } else { -- base_p4d = pt_ops.get_p4d_virt(pfn_to_phys(_pgd_pfn(*pgdp))); -+ base_p4d = pt_ops.get_p4d_virt(pfn_to_phys(_pgd_pfn(pgdp_get(pgdp)))); - p4dp = base_p4d + p4d_index(vaddr); - } - - do { - next = p4d_addr_end(vaddr, end); - -- if (p4d_none(*p4dp) && IS_ALIGNED(vaddr, P4D_SIZE) && -+ if (p4d_none(p4dp_get(p4dp)) && IS_ALIGNED(vaddr, P4D_SIZE) && - (next - vaddr) >= P4D_SIZE) { - phys_addr = __pa((uintptr_t)kasan_early_shadow_pud); - set_p4d(p4dp, pfn_p4d(PFN_DOWN(phys_addr), PAGE_TABLE)); -@@ -305,7 +308,7 @@ static void __init kasan_early_populate_pgd(pgd_t *pgdp, - do { - next = pgd_addr_end(vaddr, end); - -- if (pgd_none(*pgdp) && IS_ALIGNED(vaddr, PGDIR_SIZE) && -+ if (pgd_none(pgdp_get(pgdp)) && IS_ALIGNED(vaddr, PGDIR_SIZE) && - (next - vaddr) >= PGDIR_SIZE) { - phys_addr = __pa((uintptr_t)kasan_early_shadow_p4d); - set_pgd(pgdp, pfn_pgd(PFN_DOWN(phys_addr), PAGE_TABLE)); -@@ -381,7 +384,7 @@ static void __init kasan_shallow_populate_pud(p4d_t *p4d, - do { - next = pud_addr_end(vaddr, end); - -- if (pud_none(*pud_k)) { -+ if (pud_none(pudp_get(pud_k))) { - p = memblock_alloc(PAGE_SIZE, PAGE_SIZE); - set_pud(pud_k, pfn_pud(PFN_DOWN(__pa(p)), PAGE_TABLE)); - continue; -@@ -401,7 +404,7 @@ static void __init kasan_shallow_populate_p4d(pgd_t *pgd, - do { - next = p4d_addr_end(vaddr, end); - -- if (p4d_none(*p4d_k)) { -+ if (p4d_none(p4dp_get(p4d_k))) { - p = memblock_alloc(PAGE_SIZE, PAGE_SIZE); - set_p4d(p4d_k, pfn_p4d(PFN_DOWN(__pa(p)), PAGE_TABLE)); - continue; -@@ -420,7 +423,7 @@ static void __init kasan_shallow_populate_pgd(unsigned long vaddr, unsigned long - do { - next = pgd_addr_end(vaddr, end); - -- if (pgd_none(*pgd_k)) { -+ if (pgd_none(pgdp_get(pgd_k))) { - p = memblock_alloc(PAGE_SIZE, PAGE_SIZE); - set_pgd(pgd_k, pfn_pgd(PFN_DOWN(__pa(p)), PAGE_TABLE)); - continue; -@@ -451,7 +454,7 @@ static void __init create_tmp_mapping(void) - - /* Copy the last p4d since it is shared with the kernel mapping. */ - if (pgtable_l5_enabled) { -- ptr = (p4d_t *)pgd_page_vaddr(*pgd_offset_k(KASAN_SHADOW_END)); -+ ptr = (p4d_t *)pgd_page_vaddr(pgdp_get(pgd_offset_k(KASAN_SHADOW_END))); - memcpy(tmp_p4d, ptr, sizeof(p4d_t) * PTRS_PER_P4D); - set_pgd(&tmp_pg_dir[pgd_index(KASAN_SHADOW_END)], - pfn_pgd(PFN_DOWN(__pa(tmp_p4d)), PAGE_TABLE)); -@@ -462,7 +465,7 @@ static void __init create_tmp_mapping(void) - - /* Copy the last pud since it is shared with the kernel mapping. */ - if (pgtable_l4_enabled) { -- ptr = (pud_t *)p4d_page_vaddr(*(base_p4d + p4d_index(KASAN_SHADOW_END))); -+ ptr = (pud_t *)p4d_page_vaddr(p4dp_get(base_p4d + p4d_index(KASAN_SHADOW_END))); - memcpy(tmp_pud, ptr, sizeof(pud_t) * PTRS_PER_PUD); - set_p4d(&base_p4d[p4d_index(KASAN_SHADOW_END)], - pfn_p4d(PFN_DOWN(__pa(tmp_pud)), PAGE_TABLE)); -diff --git a/arch/riscv/mm/pageattr.c b/arch/riscv/mm/pageattr.c -index f61b2f8291e3..271d01a5ba4d 100644 ---- a/arch/riscv/mm/pageattr.c -+++ b/arch/riscv/mm/pageattr.c -@@ -29,7 +29,7 @@ static unsigned long set_pageattr_masks(unsigned long val, struct mm_walk *walk) - static int pageattr_p4d_entry(p4d_t *p4d, unsigned long addr, - unsigned long next, struct mm_walk *walk) - { -- p4d_t val = READ_ONCE(*p4d); -+ p4d_t val = p4dp_get(p4d); - - if (p4d_leaf(val)) { - val = __p4d(set_pageattr_masks(p4d_val(val), walk)); -@@ -42,7 +42,7 @@ static int pageattr_p4d_entry(p4d_t *p4d, unsigned long addr, - static int pageattr_pud_entry(pud_t *pud, unsigned long addr, - unsigned long next, struct mm_walk *walk) - { -- pud_t val = READ_ONCE(*pud); -+ pud_t val = pudp_get(pud); - - if (pud_leaf(val)) { - val = __pud(set_pageattr_masks(pud_val(val), walk)); -@@ -55,7 +55,7 @@ static int pageattr_pud_entry(pud_t *pud, unsigned long addr, - static int pageattr_pmd_entry(pmd_t *pmd, unsigned long addr, - unsigned long next, struct mm_walk *walk) - { -- pmd_t val = READ_ONCE(*pmd); -+ pmd_t val = pmdp_get(pmd); - - if (pmd_leaf(val)) { - val = __pmd(set_pageattr_masks(pmd_val(val), walk)); -@@ -68,7 +68,7 @@ static int pageattr_pmd_entry(pmd_t *pmd, unsigned long addr, - static int pageattr_pte_entry(pte_t *pte, unsigned long addr, - unsigned long next, struct mm_walk *walk) - { -- pte_t val = READ_ONCE(*pte); -+ pte_t val = ptep_get(pte); - - val = __pte(set_pageattr_masks(pte_val(val), walk)); - set_pte(pte, val); -@@ -108,10 +108,10 @@ static int __split_linear_mapping_pmd(pud_t *pudp, - vaddr <= (vaddr & PMD_MASK) && end >= next) - continue; - -- if (pmd_leaf(*pmdp)) { -+ if (pmd_leaf(pmdp_get(pmdp))) { - struct page *pte_page; -- unsigned long pfn = _pmd_pfn(*pmdp); -- pgprot_t prot = __pgprot(pmd_val(*pmdp) & ~_PAGE_PFN_MASK); -+ unsigned long pfn = _pmd_pfn(pmdp_get(pmdp)); -+ pgprot_t prot = __pgprot(pmd_val(pmdp_get(pmdp)) & ~_PAGE_PFN_MASK); - pte_t *ptep_new; - int i; - -@@ -148,10 +148,10 @@ static int __split_linear_mapping_pud(p4d_t *p4dp, - vaddr <= (vaddr & PUD_MASK) && end >= next) - continue; - -- if (pud_leaf(*pudp)) { -+ if (pud_leaf(pudp_get(pudp))) { - struct page *pmd_page; -- unsigned long pfn = _pud_pfn(*pudp); -- pgprot_t prot = __pgprot(pud_val(*pudp) & ~_PAGE_PFN_MASK); -+ unsigned long pfn = _pud_pfn(pudp_get(pudp)); -+ pgprot_t prot = __pgprot(pud_val(pudp_get(pudp)) & ~_PAGE_PFN_MASK); - pmd_t *pmdp_new; - int i; - -@@ -197,10 +197,10 @@ static int __split_linear_mapping_p4d(pgd_t *pgdp, - vaddr <= (vaddr & P4D_MASK) && end >= next) - continue; - -- if (p4d_leaf(*p4dp)) { -+ if (p4d_leaf(p4dp_get(p4dp))) { - struct page *pud_page; -- unsigned long pfn = _p4d_pfn(*p4dp); -- pgprot_t prot = __pgprot(p4d_val(*p4dp) & ~_PAGE_PFN_MASK); -+ unsigned long pfn = _p4d_pfn(p4dp_get(p4dp)); -+ pgprot_t prot = __pgprot(p4d_val(p4dp_get(p4dp)) & ~_PAGE_PFN_MASK); - pud_t *pudp_new; - int i; - -@@ -427,29 +427,29 @@ bool kernel_page_present(struct page *page) - pte_t *pte; - - pgd = pgd_offset_k(addr); -- if (!pgd_present(*pgd)) -+ if (!pgd_present(pgdp_get(pgd))) - return false; -- if (pgd_leaf(*pgd)) -+ if (pgd_leaf(pgdp_get(pgd))) - return true; - - p4d = p4d_offset(pgd, addr); -- if (!p4d_present(*p4d)) -+ if (!p4d_present(p4dp_get(p4d))) - return false; -- if (p4d_leaf(*p4d)) -+ if (p4d_leaf(p4dp_get(p4d))) - return true; - - pud = pud_offset(p4d, addr); -- if (!pud_present(*pud)) -+ if (!pud_present(pudp_get(pud))) - return false; -- if (pud_leaf(*pud)) -+ if (pud_leaf(pudp_get(pud))) - return true; - - pmd = pmd_offset(pud, addr); -- if (!pmd_present(*pmd)) -+ if (!pmd_present(pmdp_get(pmd))) - return false; -- if (pmd_leaf(*pmd)) -+ if (pmd_leaf(pmdp_get(pmd))) - return true; - - pte = pte_offset_kernel(pmd, addr); -- return pte_present(*pte); -+ return pte_present(ptep_get(pte)); - } diff --git a/arch/riscv/mm/pgtable.c b/arch/riscv/mm/pgtable.c -index fef4e7328e49..ef887efcb679 100644 +index ef887efcb679..21ea6ed76470 100644 --- a/arch/riscv/mm/pgtable.c +++ b/arch/riscv/mm/pgtable.c -@@ -5,6 +5,47 @@ - #include - #include +@@ -36,6 +36,7 @@ pud_t *pud_offset(p4d_t *p4d, unsigned long address) + + return (pud_t *)p4d; + } ++EXPORT_SYMBOL_GPL(pud_offset); + + p4d_t *p4d_offset(pgd_t *pgd, unsigned long address) + { +@@ -44,6 +45,7 @@ p4d_t *p4d_offset(pgd_t *pgd, unsigned long address) + + return (p4d_t *)pgd; + } ++EXPORT_SYMBOL_GPL(p4d_offset); + #endif -+int ptep_set_access_flags(struct vm_area_struct *vma, -+ unsigned long address, pte_t *ptep, -+ pte_t entry, int dirty) -+{ -+ if (!pte_same(ptep_get(ptep), entry)) -+ __set_pte_at(ptep, entry); -+ /* -+ * update_mmu_cache will unconditionally execute, handling both -+ * the case that the PTE changed and the spurious fault case. -+ */ -+ return true; -+} -+ -+int ptep_test_and_clear_young(struct vm_area_struct *vma, -+ unsigned long address, -+ pte_t *ptep) -+{ -+ if (!pte_young(ptep_get(ptep))) -+ return 0; -+ return test_and_clear_bit(_PAGE_ACCESSED_OFFSET, &pte_val(*ptep)); -+} -+EXPORT_SYMBOL_GPL(ptep_test_and_clear_young); -+ -+#ifdef CONFIG_64BIT -+pud_t *pud_offset(p4d_t *p4d, unsigned long address) -+{ -+ if (pgtable_l4_enabled) -+ return p4d_pgtable(p4dp_get(p4d)) + pud_index(address); -+ -+ return (pud_t *)p4d; -+} -+ -+p4d_t *p4d_offset(pgd_t *pgd, unsigned long address) -+{ -+ if (pgtable_l5_enabled) -+ return pgd_pgtable(pgdp_get(pgd)) + p4d_index(address); -+ -+ return (p4d_t *)pgd; -+} -+#endif -+ #ifdef CONFIG_HAVE_ARCH_HUGE_VMAP - int p4d_set_huge(p4d_t *p4d, phys_addr_t addr, pgprot_t prot) - { -@@ -25,7 +66,7 @@ int pud_set_huge(pud_t *pud, phys_addr_t phys, pgprot_t prot) +diff --git a/arch/riscv/mm/tlbflush.c b/arch/riscv/mm/tlbflush.c +index 324e8cd9b502..a9f4af9f7f3f 100644 +--- a/arch/riscv/mm/tlbflush.c ++++ b/arch/riscv/mm/tlbflush.c +@@ -5,6 +5,7 @@ + #include + #include + #include ++#include - int pud_clear_huge(pud_t *pud) - { -- if (!pud_leaf(READ_ONCE(*pud))) -+ if (!pud_leaf(pudp_get(pud))) - return 0; - pud_clear(pud); - return 1; -@@ -33,7 +74,7 @@ int pud_clear_huge(pud_t *pud) + /* + * Flush entire TLB if number of entries to be flushed is greater +@@ -12,6 +13,26 @@ + */ + static unsigned long tlb_flush_all_threshold __read_mostly = 64; - int pud_free_pmd_page(pud_t *pud, unsigned long addr) - { -- pmd_t *pmd = pud_pgtable(*pud); -+ pmd_t *pmd = pud_pgtable(pudp_get(pud)); - int i; ++#define has_svinval() riscv_has_extension_unlikely(RISCV_ISA_EXT_SVINVAL) ++ ++static inline void local_sfence_inval_ir(void) ++{ ++ asm volatile(SFENCE_INVAL_IR() ::: "memory"); ++} ++ ++static inline void local_sfence_w_inval(void) ++{ ++ asm volatile(SFENCE_W_INVAL() ::: "memory"); ++} ++ ++static inline void local_sinval_vma(unsigned long vma, unsigned long asid) ++{ ++ if (asid != FLUSH_TLB_NO_ASID) ++ asm volatile(SINVAL_VMA( %0, %1) : : "r" (vma), "r" (asid) : "memory"); ++ else ++ asm volatile(SINVAL_VMA( %0, zero) : : "r" (vma) : "memory"); ++} ++ + static void local_flush_tlb_range_threshold_asid(unsigned long start, + unsigned long size, + unsigned long stride, +@@ -25,6 +46,16 @@ static void local_flush_tlb_range_threshold_asid(unsigned long start, + return; + } - pud_clear(pud); -@@ -63,7 +104,7 @@ int pmd_set_huge(pmd_t *pmd, phys_addr_t phys, pgprot_t prot) - - int pmd_clear_huge(pmd_t *pmd) - { -- if (!pmd_leaf(READ_ONCE(*pmd))) -+ if (!pmd_leaf(pmdp_get(pmd))) - return 0; - pmd_clear(pmd); - return 1; -@@ -71,7 +112,7 @@ int pmd_clear_huge(pmd_t *pmd) - - int pmd_free_pte_page(pmd_t *pmd, unsigned long addr) - { -- pte_t *pte = (pte_t *)pmd_page_vaddr(*pmd); -+ pte_t *pte = (pte_t *)pmd_page_vaddr(pmdp_get(pmd)); - - pmd_clear(pmd); - -@@ -88,7 +129,7 @@ pmd_t pmdp_collapse_flush(struct vm_area_struct *vma, - pmd_t pmd = pmdp_huge_get_and_clear(vma->vm_mm, address, pmdp); - - VM_BUG_ON(address & ~HPAGE_PMD_MASK); -- VM_BUG_ON(pmd_trans_huge(*pmdp)); -+ VM_BUG_ON(pmd_trans_huge(pmdp_get(pmdp))); - /* - * When leaf PTE entries (regular pages) are collapsed into a leaf - * PMD entry (huge page), a valid non-leaf PTE is converted into a ++ if (has_svinval()) { ++ local_sfence_w_inval(); ++ for (i = 0; i < nr_ptes_in_range; ++i) { ++ local_sinval_vma(start, asid); ++ start += stride; ++ } ++ local_sfence_inval_ir(); ++ return; ++ } ++ + for (i = 0; i < nr_ptes_in_range; ++i) { + local_flush_tlb_page_asid(start, asid); + start += stride; diff --git a/drivers/char/ipmi/ipmi_si_hardcode.c b/drivers/char/ipmi/ipmi_si_hardcode.c -index ed5e91b1e040..210644f3d863 100644 +index 0c92fa3eee88..3cb4ceb53635 100644 --- a/drivers/char/ipmi/ipmi_si_hardcode.c +++ b/drivers/char/ipmi/ipmi_si_hardcode.c @@ -6,7 +6,7 @@ @@ -20318,10 +22552,10 @@ index 000000000000..58e0ab431ae5 +obj-$(CONFIG_CLK_TH1520_FM) += gate/ diff --git a/drivers/clk/xuantie/clk-th1520-fm.c b/drivers/clk/xuantie/clk-th1520-fm.c new file mode 100644 -index 000000000000..bb3fc1688f60 +index 000000000000..33b5aa6127fa --- /dev/null +++ b/drivers/clk/xuantie/clk-th1520-fm.c -@@ -0,0 +1,648 @@ +@@ -0,0 +1,646 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2021 Alibaba Group Holding Limited. @@ -20672,8 +22906,6 @@ index 000000000000..bb3fc1688f60 + int ret; + const bool *teesys = of_device_get_match_data(dev); + -+ pr_info("%s !!! start !\n", __func__); -+ + /* Clock source */ + clks[CLK_DUMMY] = xuantie_clk_fixed("dummy", 0); + clks[OSC_32K] = of_clk_get_by_name(np, "osc_32k"); @@ -22790,10 +25022,10 @@ index 000000000000..8bf7a18776f8 + return clk; +} diff --git a/drivers/cpufreq/Kconfig b/drivers/cpufreq/Kconfig -index d1fdea27eb0d..76d6ebda8b8e 100644 +index 1389f095e2e5..0f821fa01df8 100644 --- a/drivers/cpufreq/Kconfig +++ b/drivers/cpufreq/Kconfig -@@ -346,5 +346,14 @@ config QORIQ_CPUFREQ +@@ -366,5 +366,14 @@ config QORIQ_CPUFREQ This adds the CPUFreq driver support for Freescale QorIQ SoCs which are capable of changing the CPU's frequency dynamically. @@ -22809,20 +25041,20 @@ index d1fdea27eb0d..76d6ebda8b8e 100644 endif endmenu diff --git a/drivers/cpufreq/Makefile b/drivers/cpufreq/Makefile -index f9c1c9012ce7..19632122eec8 100644 +index 0950869f1809..df2bb1149b4a 100644 --- a/drivers/cpufreq/Makefile +++ b/drivers/cpufreq/Makefile -@@ -110,3 +110,4 @@ obj-$(CONFIG_SPARC_US2E_CPUFREQ) += sparc-us2e-cpufreq.o +@@ -111,3 +111,4 @@ obj-$(CONFIG_SPARC_US2E_CPUFREQ) += sparc-us2e-cpufreq.o obj-$(CONFIG_SPARC_US3_CPUFREQ) += sparc-us3-cpufreq.o obj-$(CONFIG_SW64_CPUFREQ) += sw64_cpufreq.o obj-$(CONFIG_SW64_CPUFREQ_DEBUGFS) += sw64_cpufreq_debugfs.o +obj-$(CONFIG_RISCV_XUANTIE_TH1520_CPUFREQ) += th1520-cpufreq.o diff --git a/drivers/cpufreq/th1520-cpufreq.c b/drivers/cpufreq/th1520-cpufreq.c new file mode 100644 -index 000000000000..a8ee9ebaf6b9 +index 000000000000..6e4186808c96 --- /dev/null +++ b/drivers/cpufreq/th1520-cpufreq.c -@@ -0,0 +1,562 @@ +@@ -0,0 +1,584 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * Copyright (C) 2021 Alibaba Group Holding Limited. @@ -22844,6 +25076,11 @@ index 000000000000..a8ee9ebaf6b9 +#include +#include +#include ++#ifdef CONFIG_TH1520_SYSTEM_MONITOR ++#include ++ ++struct monitor_dev_info *mdev_info = NULL; ++#endif + +static DEFINE_MUTEX(cpufreq_lock); + @@ -23119,7 +25356,6 @@ index 000000000000..a8ee9ebaf6b9 + policy->cur = clk_get_rate(policy->clk) / 1000; + cpufreq_generic_init(policy, freq_table, transition_latency); + policy->suspend_freq = max_freq; -+ dev_pm_opp_of_register_em(cpu_dev, policy->cpus); + + return 0; +} @@ -23145,6 +25381,7 @@ index 000000000000..a8ee9ebaf6b9 + .target_index = th1520_set_target, + .get = cpufreq_generic_get, + .init = th1520_cpufreq_init, ++ .register_em = cpufreq_register_em_with_opp, + .name = "th1520-cpufreq", + .attr = cpufreq_generic_attr, + .suspend = th1520_cpufreq_suspend, @@ -23204,6 +25441,12 @@ index 000000000000..a8ee9ebaf6b9 + .notifier_call = panic_cpufreq_notifier_call, +}; + ++#ifdef CONFIG_TH1520_SYSTEM_MONITOR ++static struct monitor_dev_profile cpu_status_monitor = { ++ .type = MONITOR_TPYE_CPU, ++}; ++#endif ++ +static int th1520_cpufreq_probe(struct platform_device *pdev) +{ + struct device_node *np; @@ -23332,6 +25575,13 @@ index 000000000000..a8ee9ebaf6b9 + + register_reboot_notifier(&cpufreq_reboot_notifier); + ++#ifdef CONFIG_TH1520_SYSTEM_MONITOR ++ mdev_info = th1520_system_monitor_register(cpu_dev, &cpu_status_monitor); ++ if (IS_ERR(mdev_info)) { ++ mdev_info = NULL; ++ dev_err(cpu_dev, "failed to register system monitor\n"); ++ } ++#endif + dev_info(cpu_dev, "finish to register cpufreq driver\n"); + + return 0; @@ -23361,6 +25611,10 @@ index 000000000000..a8ee9ebaf6b9 + regulator_put(dvdd_cpu_reg); + regulator_put(dvddm_cpu_reg); + ++#ifdef CONFIG_TH1520_SYSTEM_MONITOR ++ if (mdev_info) ++ th1520_system_monitor_unregister(mdev_info); ++#endif + clk_bulk_put(num_clks, clks); + + return 0; @@ -23386,10 +25640,114 @@ index 000000000000..a8ee9ebaf6b9 +MODULE_DESCRIPTION("XuanTie TH1520 cpufreq driver"); +MODULE_LICENSE("GPL"); diff --git a/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c b/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c -index 72fb40de58b3..bf4e8ed7025f 100644 +index 72fb40de58b3..2235a15930bc 100644 --- a/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c +++ b/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c -@@ -1202,13 +1202,38 @@ static int dma_chan_pause(struct dma_chan *dchan) +@@ -114,37 +114,49 @@ static inline void axi_chan_config_write(struct axi_dma_chan *chan, + static inline void axi_dma_disable(struct axi_dma_chip *chip) + { + u32 val; ++ unsigned long flags; + ++ spin_lock_irqsave(&chip->lock, flags); + val = axi_dma_ioread32(chip, DMAC_CFG); + val &= ~DMAC_EN_MASK; + axi_dma_iowrite32(chip, DMAC_CFG, val); ++ spin_unlock_irqrestore(&chip->lock, flags); + } + + static inline void axi_dma_enable(struct axi_dma_chip *chip) + { + u32 val; ++ unsigned long flags; + ++ spin_lock_irqsave(&chip->lock, flags); + val = axi_dma_ioread32(chip, DMAC_CFG); + val |= DMAC_EN_MASK; + axi_dma_iowrite32(chip, DMAC_CFG, val); ++ spin_unlock_irqrestore(&chip->lock, flags); + } + + static inline void axi_dma_irq_disable(struct axi_dma_chip *chip) + { + u32 val; ++ unsigned long flags; + ++ spin_lock_irqsave(&chip->lock, flags); + val = axi_dma_ioread32(chip, DMAC_CFG); + val &= ~INT_EN_MASK; + axi_dma_iowrite32(chip, DMAC_CFG, val); ++ spin_unlock_irqrestore(&chip->lock, flags); + } + + static inline void axi_dma_irq_enable(struct axi_dma_chip *chip) + { + u32 val; ++ unsigned long flags; + ++ spin_lock_irqsave(&chip->lock, flags); + val = axi_dma_ioread32(chip, DMAC_CFG); + val |= INT_EN_MASK; + axi_dma_iowrite32(chip, DMAC_CFG, val); ++ spin_unlock_irqrestore(&chip->lock, flags); + } + + static inline void axi_chan_irq_disable(struct axi_dma_chan *chan, u32 irq_mask) +@@ -489,7 +501,7 @@ static int dma_chan_alloc_chan_resources(struct dma_chan *dchan) + } + dev_vdbg(dchan2dev(dchan), "%s: allocating\n", axi_chan_name(chan)); + +- pm_runtime_get(chan->chip->dev); ++ pm_runtime_get_sync(chan->chip->dev); + + return 0; + } +@@ -514,7 +526,7 @@ static void dma_chan_free_chan_resources(struct dma_chan *dchan) + "%s: free resources, descriptor still allocated: %u\n", + axi_chan_name(chan), atomic_read(&chan->descs_allocated)); + +- pm_runtime_put(chan->chip->dev); ++ pm_runtime_put_sync(chan->chip->dev); + } + + static void dw_axi_dma_set_hw_channel(struct axi_dma_chan *chan, bool set) +@@ -523,7 +535,7 @@ static void dw_axi_dma_set_hw_channel(struct axi_dma_chan *chan, bool set) + unsigned long reg_value, val; + + if (!chip->apb_regs) { +- dev_err(chip->dev, "apb_regs not initialized\n"); ++ dev_dbg(chip->dev, "apb_regs not initialized\n"); + return; + } + +@@ -894,6 +906,7 @@ dma_chan_prep_dma_memcpy(struct dma_chan *dchan, dma_addr_t dst_adr, + goto err_desc_get; + + desc->chan = chan; ++ chan->direction = DMA_MEM_TO_MEM; + num = 0; + desc->length = 0; + while (len) { +@@ -1141,6 +1154,9 @@ static int dma_chan_terminate_all(struct dma_chan *dchan) + int ret; + LIST_HEAD(head); + ++ axi_chan_irq_clear(chan, DWAXIDMAC_IRQ_ALL); ++ axi_chan_irq_disable(chan, DWAXIDMAC_IRQ_ALL); ++ + axi_chan_disable(chan); + + ret = readl_poll_timeout_atomic(chan->chip->regs + DMAC_CHEN, val, +@@ -1174,6 +1190,8 @@ static int dma_chan_pause(struct dma_chan *dchan) + unsigned long flags; + unsigned int timeout = 20; /* timeout iterations */ + u32 val; ++ int ret; ++ u32 chan_active = BIT(chan->id) << DMAC_CHAN_EN_SHIFT; + + spin_lock_irqsave(&chan->vc.lock, flags); + +@@ -1202,13 +1220,44 @@ static int dma_chan_pause(struct dma_chan *dchan) spin_unlock_irqrestore(&chan->vc.lock, flags); @@ -23402,6 +25760,12 @@ index 72fb40de58b3..bf4e8ed7025f 100644 + chan->ch_cfg_l = axi_chan_ioread32(chan, CH_CFG_L); + chan->ch_cfg_h = axi_chan_ioread32(chan, CH_CFG_H); + chan->ch_llp = axi_chan_ioread32(chan, CH_LLP); ++ ++ axi_chan_disable(chan); ++ ret = readl_poll_timeout_atomic(chan->chip->regs + DMAC_CHEN, val, ++ !(val & chan_active), 1000, 100000); ++ if (ret == -ETIMEDOUT) ++ printk("%s %s failed to stop\n", __func__, axi_chan_name(chan)); + return timeout ? 0 : -EAGAIN; } @@ -23429,7 +25793,7 @@ index 72fb40de58b3..bf4e8ed7025f 100644 if (chan->chip->dw->hdata->reg_map_8_channels) { val = axi_dma_ioread32(chan->chip, DMAC_CHEN); -@@ -1222,7 +1247,11 @@ static inline void axi_chan_resume(struct axi_dma_chan *chan) +@@ -1222,7 +1271,11 @@ static inline void axi_chan_resume(struct axi_dma_chan *chan) axi_dma_iowrite32(chan->chip, DMAC_CHSUSPREG, val); } @@ -23441,7 +25805,7 @@ index 72fb40de58b3..bf4e8ed7025f 100644 } static int dma_chan_resume(struct dma_chan *dchan) -@@ -1283,6 +1312,40 @@ static int __maybe_unused axi_dma_runtime_resume(struct device *dev) +@@ -1283,6 +1336,40 @@ static int __maybe_unused axi_dma_runtime_resume(struct device *dev) return axi_dma_resume(chip); } @@ -23482,24 +25846,32 @@ index 72fb40de58b3..bf4e8ed7025f 100644 static struct dma_chan *dw_axi_dma_of_xlate(struct of_phandle_args *dma_spec, struct of_dma *ofdma) { -@@ -1566,9 +1629,16 @@ static int dw_remove(struct platform_device *pdev) +@@ -1395,6 +1482,7 @@ static int dw_probe(struct platform_device *pdev) + chip->dev = &pdev->dev; + chip->dw->hdata = hdata; + ++ spin_lock_init(&chip->lock); + chip->irq = platform_get_irq(pdev, 0); + if (chip->irq < 0) + return chip->irq; +@@ -1566,9 +1654,16 @@ static int dw_remove(struct platform_device *pdev) return 0; } +#ifdef CONFIG_PM - static const struct dev_pm_ops dw_axi_dma_pm_ops = { -+ SET_LATE_SYSTEM_SLEEP_PM_OPS(axi_dma_sleep_suspend, axi_dma_sleep_resume) - SET_RUNTIME_PM_OPS(axi_dma_runtime_suspend, axi_dma_runtime_resume, NULL) - }; -+#else +static const struct dev_pm_ops dw_axi_dma_pm_ops = { ++ SET_LATE_SYSTEM_SLEEP_PM_OPS(axi_dma_sleep_suspend, axi_dma_sleep_resume) + SET_RUNTIME_PM_OPS(axi_dma_runtime_suspend, axi_dma_runtime_resume, NULL) +}; ++#else + static const struct dev_pm_ops dw_axi_dma_pm_ops = { + SET_RUNTIME_PM_OPS(axi_dma_runtime_suspend, axi_dma_runtime_resume, NULL) + }; +#endif static const struct of_device_id dw_dma_of_id_table[] = { { -@@ -1579,6 +1649,9 @@ static const struct of_device_id dw_dma_of_id_table[] = { +@@ -1579,6 +1674,9 @@ static const struct of_device_id dw_dma_of_id_table[] = { }, { .compatible = "starfive,jh7110-axi-dma", .data = (void *)(AXI_DMA_FLAG_HAS_RESETS | AXI_DMA_FLAG_USE_CFG2), @@ -23510,7 +25882,7 @@ index 72fb40de58b3..bf4e8ed7025f 100644 {} }; diff --git a/drivers/dma/dw-axi-dmac/dw-axi-dmac.h b/drivers/dma/dw-axi-dmac/dw-axi-dmac.h -index 8521530a34ec..23c6f44b88df 100644 +index 8521530a34ec..1e4080928e02 100644 --- a/drivers/dma/dw-axi-dmac/dw-axi-dmac.h +++ b/drivers/dma/dw-axi-dmac/dw-axi-dmac.h @@ -52,6 +52,15 @@ struct axi_dma_chan { @@ -23529,7 +25901,15 @@ index 8521530a34ec..23c6f44b88df 100644 }; struct dw_axi_dma { -@@ -166,6 +175,7 @@ static inline struct axi_dma_chan *dchan_to_axi_dma_chan(struct dma_chan *dchan) +@@ -71,6 +80,7 @@ struct axi_dma_chip { + struct clk *core_clk; + struct clk *cfgr_clk; + struct dw_axi_dma *dw; ++ spinlock_t lock; + }; + + /* LLI == Linked List Item */ +@@ -166,6 +176,7 @@ static inline struct axi_dma_chan *dchan_to_axi_dma_chan(struct dma_chan *dchan) /* DMA channel registers offset */ #define CH_SAR 0x000 /* R/W Chan Source Address */ #define CH_DAR 0x008 /* R/W Chan Destination Address */ @@ -24641,7 +27021,7 @@ index b120267fbe40..dc7644145a1f 100644 obj-$(CONFIG_HYDCU_FIXUP_HEADER) += hygon/hydcu-fixup-header/ +obj-$(CONFIG_DRM_VERISILICON) += verisilicon/ diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c -index 73dd7ee39667..4e7e428587e1 100644 +index c3d9ca137bea..465409a6114e 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c @@ -1109,6 +1109,8 @@ int amdgpu_device_resize_fb_bar(struct amdgpu_device *adev) @@ -25146,6 +27526,184 @@ index b67eafa55715..5ebe418bd383 100644 if (ret < 0) goto err_ttm_tt_init; +diff --git a/drivers/gpu/drm/etnaviv/common.xml.h b/drivers/gpu/drm/etnaviv/common.xml.h +index 001faea80fef..3555e714f014 100644 +--- a/drivers/gpu/drm/etnaviv/common.xml.h ++++ b/drivers/gpu/drm/etnaviv/common.xml.h +@@ -65,6 +65,7 @@ DEALINGS IN THE SOFTWARE. + #define chipModel_GC520 0x00000520 + #define chipModel_GC530 0x00000530 + #define chipModel_GC600 0x00000600 ++#define chipModel_GC620 0x00000620 + #define chipModel_GC700 0x00000700 + #define chipModel_GC800 0x00000800 + #define chipModel_GC860 0x00000860 +diff --git a/drivers/gpu/drm/etnaviv/etnaviv_buffer.c b/drivers/gpu/drm/etnaviv/etnaviv_buffer.c +index 384df1659be6..74033e7870ac 100644 +--- a/drivers/gpu/drm/etnaviv/etnaviv_buffer.c ++++ b/drivers/gpu/drm/etnaviv/etnaviv_buffer.c +@@ -417,8 +417,11 @@ void etnaviv_buffer_queue(struct etnaviv_gpu *gpu, u32 exec_state, + + if (switch_mmu_context && + gpu->sec_mode == ETNA_SEC_KERNEL) { +- unsigned short id = +- etnaviv_iommuv2_get_pta_id(gpu->mmu_context); ++ unsigned short id; ++ ++ etnaviv_iommuv2_update_pta_entry(gpu->mmu_context); ++ ++ id = etnaviv_iommuv2_get_pta_id(gpu->mmu_context); + CMD_LOAD_STATE(buffer, + VIVS_MMUv2_PTA_CONFIG, + VIVS_MMUv2_PTA_CONFIG_INDEX(id)); +diff --git a/drivers/gpu/drm/etnaviv/etnaviv_gpu.c b/drivers/gpu/drm/etnaviv/etnaviv_gpu.c +index 371e1f2733f6..8158d22a3d1e 100644 +--- a/drivers/gpu/drm/etnaviv/etnaviv_gpu.c ++++ b/drivers/gpu/drm/etnaviv/etnaviv_gpu.c +@@ -522,7 +522,11 @@ static int etnaviv_hw_reset(struct etnaviv_gpu *gpu) + control |= VIVS_HI_CLOCK_CONTROL_ISOLATE_GPU; + gpu_write(gpu, VIVS_HI_CLOCK_CONTROL, control); + +- if (gpu->sec_mode == ETNA_SEC_KERNEL) { ++ if (etnaviv_is_model_rev(gpu, GC620, 0x5552)) { ++ gpu_write(gpu, 0x00800, 0x10); ++ } ++ ++ if (gpu->identity.minor_features7 & chipMinorFeatures7_BIT_SECURITY) { + gpu_write(gpu, VIVS_MMUv2_AHB_CONTROL, + VIVS_MMUv2_AHB_CONTROL_RESET); + } else { +@@ -754,7 +758,13 @@ static void etnaviv_gpu_hw_init(struct etnaviv_gpu *gpu) + gpu_write(gpu, VIVS_MC_BUS_CONFIG, bus_config); + } + +- if (gpu->sec_mode == ETNA_SEC_KERNEL) { ++ /* FIXME: use feature bit 5 of minor features 12, G2D_DEC400EX */ ++ if (etnaviv_is_model_rev(gpu, GC620, 0x5552)) { ++ gpu_write(gpu, 0x800, 0x2010188); ++ gpu_write(gpu, 0x808, 0x3fc104); ++ } ++ ++ if (gpu->identity.minor_features7 & chipMinorFeatures7_BIT_SECURITY) { + u32 val = gpu_read(gpu, VIVS_MMUv2_AHB_CONTROL); + val |= VIVS_MMUv2_AHB_CONTROL_NONSEC_ACCESS; + gpu_write(gpu, VIVS_MMUv2_AHB_CONTROL, val); +@@ -804,7 +814,7 @@ int etnaviv_gpu_init(struct etnaviv_gpu *gpu) + * On cores with security features supported, we claim control over the + * security states. + */ +- if ((gpu->identity.minor_features7 & chipMinorFeatures7_BIT_SECURITY) && ++ if ((gpu->identity.minor_features7 & chipMinorFeatures7_BIT_SECURITY) || + (gpu->identity.minor_features10 & chipMinorFeatures10_SECURITY_AHB)) + gpu->sec_mode = ETNA_SEC_KERNEL; + +diff --git a/drivers/gpu/drm/etnaviv/etnaviv_hwdb.c b/drivers/gpu/drm/etnaviv/etnaviv_hwdb.c +index 8665f2658d51..6a56f1ab4444 100644 +--- a/drivers/gpu/drm/etnaviv/etnaviv_hwdb.c ++++ b/drivers/gpu/drm/etnaviv/etnaviv_hwdb.c +@@ -69,6 +69,37 @@ static const struct etnaviv_chip_identity etnaviv_chip_identities[] = { + .minor_features10 = 0x00000000, + .minor_features11 = 0x00000000, + }, ++ { ++ .model = 0x620, ++ .revision = 0x5552, ++ .product_id = 0x6200, ++ .customer_id = 0x20b, ++ .eco_id = 0, ++ .stream_count = 1, ++ .register_max = 64, ++ .thread_count = 256, ++ .shader_core_count = 1, ++ .vertex_cache_size = 8, ++ .vertex_output_buffer_size = 512, ++ .pixel_pipes = 1, ++ .instruction_count = 256, ++ .num_constants = 168, ++ .buffer_size = 0, ++ .varyings_count = 8, ++ .features = 0x001b4a40, ++ .minor_features0 = 0xa0600080, ++ .minor_features1 = 0x18050000, ++ .minor_features2 = 0x04f30000, ++ .minor_features3 = 0x00060005, ++ .minor_features4 = 0x20629000, ++ .minor_features5 = 0x0003380c, ++ .minor_features6 = 0x00000000, ++ .minor_features7 = 0x00001000, ++ .minor_features8 = 0x00000000, ++ .minor_features9 = 0x00000180, ++ .minor_features10 = 0x00004000, ++ .minor_features11 = 0x00000000, ++ }, + { + .model = 0x7000, + .revision = 0x6202, +diff --git a/drivers/gpu/drm/etnaviv/etnaviv_iommu_v2.c b/drivers/gpu/drm/etnaviv/etnaviv_iommu_v2.c +index d664ae29ae20..33a28201c863 100644 +--- a/drivers/gpu/drm/etnaviv/etnaviv_iommu_v2.c ++++ b/drivers/gpu/drm/etnaviv/etnaviv_iommu_v2.c +@@ -186,6 +186,14 @@ static void etnaviv_iommuv2_restore_nonsec(struct etnaviv_gpu *gpu, + gpu_write(gpu, VIVS_MMUv2_CONTROL, VIVS_MMUv2_CONTROL_ENABLE); + } + ++void etnaviv_iommuv2_update_pta_entry(struct etnaviv_iommu_context *context) ++{ ++ struct etnaviv_iommuv2_context *v2_context = to_v2_context(context); ++ ++ context->global->v2.pta_cpu[v2_context->id] = v2_context->mtlb_dma | ++ VIVS_MMUv2_CONFIGURATION_MODE_MODE4_K; ++} ++ + static void etnaviv_iommuv2_restore_sec(struct etnaviv_gpu *gpu, + struct etnaviv_iommu_context *context) + { +@@ -216,8 +224,7 @@ static void etnaviv_iommuv2_restore_sec(struct etnaviv_gpu *gpu, + VIVS_MMUv2_SAFE_ADDRESS_CONFIG_SEC_SAFE_ADDR_HIGH( + upper_32_bits(context->global->bad_page_dma))); + +- context->global->v2.pta_cpu[v2_context->id] = v2_context->mtlb_dma | +- VIVS_MMUv2_CONFIGURATION_MODE_MODE4_K; ++ etnaviv_iommuv2_update_pta_entry(context); + + /* trigger a PTA load through the FE */ + prefetch = etnaviv_buffer_config_pta(gpu, v2_context->id); +@@ -241,6 +248,7 @@ unsigned short etnaviv_iommuv2_get_pta_id(struct etnaviv_iommu_context *context) + + return v2_context->id; + } ++ + static void etnaviv_iommuv2_restore(struct etnaviv_gpu *gpu, + struct etnaviv_iommu_context *context) + { +@@ -276,6 +284,8 @@ etnaviv_iommuv2_context_alloc(struct etnaviv_iommu_global *global) + if (!v2_context) + return NULL; + ++ v2_context->id = 0; ++#if 0 + mutex_lock(&global->lock); + v2_context->id = find_first_zero_bit(global->v2.pta_alloc, + ETNAVIV_PTA_ENTRIES); +@@ -286,6 +296,7 @@ etnaviv_iommuv2_context_alloc(struct etnaviv_iommu_global *global) + goto out_free; + } + mutex_unlock(&global->lock); ++#endif + + v2_context->mtlb_cpu = dma_alloc_wc(global->dev, SZ_4K, + &v2_context->mtlb_dma, GFP_KERNEL); +diff --git a/drivers/gpu/drm/etnaviv/etnaviv_mmu.h b/drivers/gpu/drm/etnaviv/etnaviv_mmu.h +index c01a147f0dfd..195ef1bf8288 100644 +--- a/drivers/gpu/drm/etnaviv/etnaviv_mmu.h ++++ b/drivers/gpu/drm/etnaviv/etnaviv_mmu.h +@@ -124,4 +124,6 @@ etnaviv_iommuv2_context_alloc(struct etnaviv_iommu_global *global); + u32 etnaviv_iommuv2_get_mtlb_addr(struct etnaviv_iommu_context *context); + unsigned short etnaviv_iommuv2_get_pta_id(struct etnaviv_iommu_context *context); + ++void etnaviv_iommuv2_update_pta_entry(struct etnaviv_iommu_context *context); ++ + #endif /* __ETNAVIV_MMU_H__ */ diff --git a/drivers/gpu/drm/img-rogue/Kconfig b/drivers/gpu/drm/img-rogue/Kconfig new file mode 100644 index 000000000000..6862c7539b6d @@ -331270,6 +333828,374 @@ index 000000000000..06af8d97ede4 +void xuantie_mfg_disable(struct gpu_plat_if *mfg); + +#endif /* XUANTIE_SYS_H*/ +diff --git a/drivers/gpu/drm/panel/Kconfig b/drivers/gpu/drm/panel/Kconfig +index 3a2f4a9f1d46..974b66e92fdb 100644 +--- a/drivers/gpu/drm/panel/Kconfig ++++ b/drivers/gpu/drm/panel/Kconfig +@@ -835,4 +835,13 @@ config DRM_PANEL_XINPENG_XPP055C272 + Say Y here if you want to enable support for the Xinpeng + XPP055C272 controller for 720x1280 LCD panels with MIPI/RGB/SPI + system interfaces. ++ ++config DRM_PANEL_HX8279 ++ tristate "HX8279-based panels" ++ depends on OF ++ depends on DRM_MIPI_DSI ++ depends on BACKLIGHT_CLASS_DEVICE ++ help ++ Say Y if you want to enable support for panels based on the ++ HX8279 controller. + endmenu +diff --git a/drivers/gpu/drm/panel/Makefile b/drivers/gpu/drm/panel/Makefile +index 433e93d57949..e9b6550e9e26 100644 +--- a/drivers/gpu/drm/panel/Makefile ++++ b/drivers/gpu/drm/panel/Makefile +@@ -20,7 +20,7 @@ obj-$(CONFIG_DRM_PANEL_ILITEK_ILI9341) += panel-ilitek-ili9341.o + obj-$(CONFIG_DRM_PANEL_ILITEK_ILI9881C) += panel-ilitek-ili9881c.o + obj-$(CONFIG_DRM_PANEL_INNOLUX_EJ030NA) += panel-innolux-ej030na.o + obj-$(CONFIG_DRM_PANEL_INNOLUX_P079ZCA) += panel-innolux-p079zca.o +-obj-$(CONFIG_DRM_PANEL_JADARD_JD9365DA_H3) += panel-jadard-jd9365da-h3.o ++obj-$(CONFIG_DRM_PANEL_JADARD_JD9365DA_H3) += panel-jadard-jd9365da.o + obj-$(CONFIG_DRM_PANEL_JDI_LT070ME05000) += panel-jdi-lt070me05000.o + obj-$(CONFIG_DRM_PANEL_JDI_R63452) += panel-jdi-fhd-r63452.o + obj-$(CONFIG_DRM_PANEL_KHADAS_TS050) += panel-khadas-ts050.o +@@ -85,3 +85,4 @@ obj-$(CONFIG_DRM_PANEL_VISIONOX_VTDR6130) += panel-visionox-vtdr6130.o + obj-$(CONFIG_DRM_PANEL_VISIONOX_R66451) += panel-visionox-r66451.o + obj-$(CONFIG_DRM_PANEL_WIDECHIPS_WS2401) += panel-widechips-ws2401.o + obj-$(CONFIG_DRM_PANEL_XINPENG_XPP055C272) += panel-xinpeng-xpp055c272.o ++obj-$(CONFIG_DRM_PANEL_HX8279) += panel-himax-hx8279.o +diff --git a/drivers/gpu/drm/panel/panel-himax-hx8279.c b/drivers/gpu/drm/panel/panel-himax-hx8279.c +new file mode 100644 +index 000000000000..8c52de95fea7 +--- /dev/null ++++ b/drivers/gpu/drm/panel/panel-himax-hx8279.c +@@ -0,0 +1,326 @@ ++#include ++#include ++#include ++#include ++#include ++ ++#include ++#include ++ ++#include ++#include ++#include ++#include ++ ++#include