From 1576fdb67dba92efddd8cf077ccb6e79895d0b0f Mon Sep 17 00:00:00 2001 From: creatoy Date: Wed, 31 Jul 2024 21:38:58 +0800 Subject: [PATCH 01/15] Implement default fn for ClkOps --- arch/arm64/configs/bcm2711_rust_defconfig | 2697 ++++++++++----------- code_init.sh | 2 +- drivers/i2c/busses/i2c_bcm2835_rust.rs | 102 +- rust/bindings/bindings_helper.h | 1 + rust/kernel/clk_provider.rs | 3 +- rust/kernel/device.rs | 14 +- rust/kernel/lib.rs | 2 +- 7 files changed, 1388 insertions(+), 1433 deletions(-) diff --git a/arch/arm64/configs/bcm2711_rust_defconfig b/arch/arm64/configs/bcm2711_rust_defconfig index 4e8cd2be0e7068..e74b22fc0ea173 100644 --- a/arch/arm64/configs/bcm2711_rust_defconfig +++ b/arch/arm64/configs/bcm2711_rust_defconfig @@ -1,1298 +1,1011 @@ -CONFIG_LOCALVERSION="-v8" -# CONFIG_LOCALVERSION_AUTO is not set CONFIG_SYSVIPC=y CONFIG_POSIX_MQUEUE=y -CONFIG_GENERIC_IRQ_DEBUGFS=y -CONFIG_NO_HZ=y +CONFIG_AUDIT=y +CONFIG_NO_HZ_IDLE=y CONFIG_HIGH_RES_TIMERS=y CONFIG_BPF_SYSCALL=y CONFIG_BPF_JIT=y CONFIG_PREEMPT=y +CONFIG_IRQ_TIME_ACCOUNTING=y CONFIG_BSD_PROCESS_ACCT=y CONFIG_BSD_PROCESS_ACCT_V3=y CONFIG_TASKSTATS=y -CONFIG_TASK_DELAY_ACCT=y CONFIG_TASK_XACCT=y CONFIG_TASK_IO_ACCOUNTING=y -CONFIG_PSI=y -CONFIG_PSI_DEFAULT_DISABLED=y -CONFIG_IKCONFIG=m +CONFIG_IKCONFIG=y CONFIG_IKCONFIG_PROC=y +CONFIG_NUMA_BALANCING=y CONFIG_MEMCG=y CONFIG_BLK_CGROUP=y -CONFIG_CFS_BANDWIDTH=y CONFIG_CGROUP_PIDS=y CONFIG_CGROUP_FREEZER=y +CONFIG_CGROUP_HUGETLB=y CONFIG_CPUSETS=y CONFIG_CGROUP_DEVICE=y CONFIG_CGROUP_CPUACCT=y CONFIG_CGROUP_PERF=y CONFIG_CGROUP_BPF=y -CONFIG_NAMESPACES=y CONFIG_USER_NS=y -CONFIG_CHECKPOINT_RESTORE=y CONFIG_SCHED_AUTOGROUP=y CONFIG_BLK_DEV_INITRD=y -CONFIG_EXPERT=y +CONFIG_KALLSYMS_ALL=y CONFIG_PROFILING=y CONFIG_RUST=y +CONFIG_KEXEC=y +CONFIG_KEXEC_FILE=y +CONFIG_CRASH_DUMP=y +CONFIG_ARCH_ACTIONS=y +CONFIG_ARCH_SUNXI=y +CONFIG_ARCH_ALPINE=y +CONFIG_ARCH_APPLE=y CONFIG_ARCH_BCM=y CONFIG_ARCH_BCM2835=y +CONFIG_ARCH_BCM_IPROC=y +CONFIG_ARCH_BCMBCA=y CONFIG_ARCH_BRCMSTB=y -# CONFIG_CAVIUM_ERRATUM_22375 is not set -# CONFIG_CAVIUM_ERRATUM_23154 is not set -# CONFIG_CAVIUM_ERRATUM_27456 is not set +CONFIG_ARCH_BERLIN=y +CONFIG_ARCH_EXYNOS=y +CONFIG_ARCH_SPARX5=y +CONFIG_ARCH_K3=y +CONFIG_ARCH_LG1K=y +CONFIG_ARCH_HISI=y +CONFIG_ARCH_KEEMBAY=y +CONFIG_ARCH_MEDIATEK=y +CONFIG_ARCH_MESON=y +CONFIG_ARCH_MVEBU=y +CONFIG_ARCH_NXP=y +CONFIG_ARCH_LAYERSCAPE=y +CONFIG_ARCH_MXC=y +CONFIG_ARCH_S32=y +CONFIG_ARCH_MA35=y +CONFIG_ARCH_NPCM=y +CONFIG_ARCH_QCOM=y +CONFIG_ARCH_REALTEK=y +CONFIG_ARCH_RENESAS=y +CONFIG_ARCH_ROCKCHIP=y +CONFIG_ARCH_SEATTLE=y +CONFIG_ARCH_INTEL_SOCFPGA=y +CONFIG_ARCH_STM32=y +CONFIG_ARCH_SYNQUACER=y +CONFIG_ARCH_TEGRA=y +CONFIG_ARCH_TESLA_FSD=y +CONFIG_ARCH_SPRD=y +CONFIG_ARCH_THUNDER=y +CONFIG_ARCH_THUNDER2=y +CONFIG_ARCH_UNIPHIER=y +CONFIG_ARCH_VEXPRESS=y +CONFIG_ARCH_VISCONTI=y +CONFIG_ARCH_XGENE=y +CONFIG_ARCH_ZYNQMP=y +CONFIG_ARM64_VA_BITS_48=y +CONFIG_SCHED_MC=y +CONFIG_SCHED_SMT=y +CONFIG_NUMA=y +CONFIG_XEN=y CONFIG_COMPAT=y -CONFIG_ARMV8_DEPRECATED=y -CONFIG_SWP_EMULATION=y -CONFIG_CP15_BARRIER_EMULATION=y -CONFIG_SETEND_EMULATION=y CONFIG_RANDOMIZE_BASE=y -CONFIG_CMDLINE="console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait" -# CONFIG_SUSPEND is not set -CONFIG_PM=y -CONFIG_PM_DEBUG=y -CONFIG_CPU_IDLE=y +CONFIG_HIBERNATION=y +CONFIG_WQ_POWER_EFFICIENT_DEFAULT=y +CONFIG_ENERGY_MODEL=y +CONFIG_ARM_PSCI_CPUIDLE=y CONFIG_CPU_FREQ=y CONFIG_CPU_FREQ_STAT=y -CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE=y -CONFIG_CPU_FREQ_GOV_PERFORMANCE=y +CONFIG_CPU_FREQ_GOV_POWERSAVE=m CONFIG_CPU_FREQ_GOV_USERSPACE=y CONFIG_CPU_FREQ_GOV_ONDEMAND=y -CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y -CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y +CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m CONFIG_CPUFREQ_DT=y -CONFIG_ARM_RASPBERRYPI_CPUFREQ=y +CONFIG_ACPI_CPPC_CPUFREQ=m +CONFIG_ARM_ALLWINNER_SUN50I_CPUFREQ_NVMEM=m +CONFIG_ARM_ARMADA_37XX_CPUFREQ=y +CONFIG_ARM_SCPI_CPUFREQ=y +CONFIG_ARM_IMX_CPUFREQ_DT=m +CONFIG_ARM_MEDIATEK_CPUFREQ=y +CONFIG_ARM_QCOM_CPUFREQ_NVMEM=y +CONFIG_ARM_QCOM_CPUFREQ_HW=y +CONFIG_ARM_RASPBERRYPI_CPUFREQ=m +CONFIG_ARM_SCMI_CPUFREQ=y +CONFIG_ARM_TEGRA186_CPUFREQ=y +CONFIG_QORIQ_CPUFREQ=y +CONFIG_ACPI=y +CONFIG_ACPI_HOTPLUG_MEMORY=y +CONFIG_ACPI_HMAT=y +CONFIG_ACPI_APEI=y +CONFIG_ACPI_APEI_GHES=y +CONFIG_ACPI_APEI_PCIEAER=y +CONFIG_ACPI_APEI_MEMORY_FAILURE=y +CONFIG_ACPI_APEI_EINJ=y CONFIG_VIRTUALIZATION=y CONFIG_KVM=y CONFIG_JUMP_LABEL=y CONFIG_MODULES=y CONFIG_MODULE_UNLOAD=y -CONFIG_MODULE_SRCVERSION_ALL=y -CONFIG_MODULE_COMPRESS_XZ=y -CONFIG_BLK_DEV_THROTTLING=y -CONFIG_PARTITION_ADVANCED=y -CONFIG_MAC_PARTITION=y -CONFIG_BINFMT_MISC=m -CONFIG_ZSWAP=y -CONFIG_Z3FOLD=m +# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set # CONFIG_COMPAT_BRK is not set -CONFIG_CMA=y -CONFIG_LRU_GEN=y -CONFIG_LRU_GEN_ENABLED=y +CONFIG_MEMORY_HOTPLUG=y +CONFIG_MEMORY_HOTREMOVE=y +CONFIG_KSM=y +CONFIG_MEMORY_FAILURE=y +CONFIG_TRANSPARENT_HUGEPAGE=y CONFIG_NET=y CONFIG_PACKET=y -CONFIG_XFRM_USER=m -CONFIG_XFRM_INTERFACE=m -CONFIG_XFRM_SUB_POLICY=y -CONFIG_XFRM_STATISTICS=y -CONFIG_NET_KEY=m CONFIG_IP_MULTICAST=y -CONFIG_IP_ADVANCED_ROUTER=y -CONFIG_IP_MULTIPLE_TABLES=y -CONFIG_IP_ROUTE_MULTIPATH=y -CONFIG_IP_ROUTE_VERBOSE=y CONFIG_IP_PNP=y CONFIG_IP_PNP_DHCP=y -CONFIG_IP_PNP_RARP=y -CONFIG_NET_IPIP=m -CONFIG_NET_IPGRE_DEMUX=m -CONFIG_NET_IPGRE=m -CONFIG_IP_MROUTE=y -CONFIG_IP_MROUTE_MULTIPLE_TABLES=y -CONFIG_IP_PIMSM_V1=y -CONFIG_IP_PIMSM_V2=y -CONFIG_NET_IPVTI=m -CONFIG_NET_FOU=m -CONFIG_INET_AH=m -CONFIG_INET_ESP=m -CONFIG_INET_IPCOMP=m -CONFIG_INET_DIAG=m -CONFIG_TCP_CONG_ADVANCED=y -CONFIG_TCP_CONG_BBR=m +CONFIG_IP_PNP_BOOTP=y CONFIG_IPV6=m -CONFIG_IPV6_ROUTER_PREF=y -CONFIG_IPV6_ROUTE_INFO=y -CONFIG_INET6_AH=m -CONFIG_INET6_ESP=m -CONFIG_INET6_ESP_OFFLOAD=m -CONFIG_INET6_IPCOMP=m -CONFIG_IPV6_ILA=m -CONFIG_IPV6_VTI=m -CONFIG_IPV6_SIT_6RD=y -CONFIG_IPV6_GRE=m -CONFIG_IPV6_MULTIPLE_TABLES=y -CONFIG_IPV6_SUBTREES=y -CONFIG_IPV6_MROUTE=y -CONFIG_IPV6_MROUTE_MULTIPLE_TABLES=y -CONFIG_IPV6_PIMSM_V2=y -CONFIG_MPTCP=y -CONFIG_NETWORK_PHY_TIMESTAMPING=y CONFIG_NETFILTER=y CONFIG_BRIDGE_NETFILTER=m CONFIG_NF_CONNTRACK=m -CONFIG_NF_CONNTRACK_ZONES=y CONFIG_NF_CONNTRACK_EVENTS=y -CONFIG_NF_CONNTRACK_TIMESTAMP=y -CONFIG_NF_CONNTRACK_AMANDA=m -CONFIG_NF_CONNTRACK_FTP=m -CONFIG_NF_CONNTRACK_H323=m -CONFIG_NF_CONNTRACK_IRC=m -CONFIG_NF_CONNTRACK_NETBIOS_NS=m -CONFIG_NF_CONNTRACK_SNMP=m -CONFIG_NF_CONNTRACK_PPTP=m -CONFIG_NF_CONNTRACK_SANE=m -CONFIG_NF_CONNTRACK_SIP=m -CONFIG_NF_CONNTRACK_TFTP=m -CONFIG_NF_CT_NETLINK=m -CONFIG_NF_TABLES=m -CONFIG_NF_TABLES_INET=y -CONFIG_NF_TABLES_NETDEV=y -CONFIG_NFT_NUMGEN=m -CONFIG_NFT_CT=m -CONFIG_NFT_FLOW_OFFLOAD=m -CONFIG_NFT_CONNLIMIT=m -CONFIG_NFT_LOG=m -CONFIG_NFT_LIMIT=m -CONFIG_NFT_MASQ=m -CONFIG_NFT_REDIR=m -CONFIG_NFT_NAT=m -CONFIG_NFT_TUNNEL=m -CONFIG_NFT_QUEUE=m -CONFIG_NFT_QUOTA=m -CONFIG_NFT_REJECT=m -CONFIG_NFT_COMPAT=m -CONFIG_NFT_HASH=m -CONFIG_NFT_FIB_INET=m -CONFIG_NFT_XFRM=m -CONFIG_NFT_SOCKET=m -CONFIG_NFT_OSF=m -CONFIG_NFT_TPROXY=m -CONFIG_NFT_SYNPROXY=m -CONFIG_NFT_DUP_NETDEV=m -CONFIG_NFT_FWD_NETDEV=m -CONFIG_NFT_FIB_NETDEV=m -CONFIG_NF_FLOW_TABLE_INET=m -CONFIG_NF_FLOW_TABLE=m -CONFIG_NETFILTER_XTABLES_COMPAT=y -CONFIG_NETFILTER_XT_SET=m +CONFIG_NETFILTER_XT_MARK=m CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m -CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m -CONFIG_NETFILTER_XT_TARGET_CONNMARK=m -CONFIG_NETFILTER_XT_TARGET_DSCP=m -CONFIG_NETFILTER_XT_TARGET_HMARK=m -CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m -CONFIG_NETFILTER_XT_TARGET_LED=m CONFIG_NETFILTER_XT_TARGET_LOG=m -CONFIG_NETFILTER_XT_TARGET_MARK=m -CONFIG_NETFILTER_XT_TARGET_NFLOG=m -CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m -CONFIG_NETFILTER_XT_TARGET_NOTRACK=m -CONFIG_NETFILTER_XT_TARGET_TEE=m -CONFIG_NETFILTER_XT_TARGET_TPROXY=m -CONFIG_NETFILTER_XT_TARGET_TRACE=m -CONFIG_NETFILTER_XT_TARGET_TCPMSS=m -CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m -CONFIG_NETFILTER_XT_MATCH_BPF=m -CONFIG_NETFILTER_XT_MATCH_CLUSTER=m -CONFIG_NETFILTER_XT_MATCH_COMMENT=m -CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m -CONFIG_NETFILTER_XT_MATCH_CONNLABEL=m -CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m -CONFIG_NETFILTER_XT_MATCH_CONNMARK=m CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m -CONFIG_NETFILTER_XT_MATCH_CPU=m -CONFIG_NETFILTER_XT_MATCH_DCCP=m -CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m -CONFIG_NETFILTER_XT_MATCH_DSCP=m -CONFIG_NETFILTER_XT_MATCH_ESP=m -CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m -CONFIG_NETFILTER_XT_MATCH_HELPER=m -CONFIG_NETFILTER_XT_MATCH_IPRANGE=m CONFIG_NETFILTER_XT_MATCH_IPVS=m -CONFIG_NETFILTER_XT_MATCH_LENGTH=m -CONFIG_NETFILTER_XT_MATCH_LIMIT=m -CONFIG_NETFILTER_XT_MATCH_MAC=m -CONFIG_NETFILTER_XT_MATCH_MARK=m -CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m -CONFIG_NETFILTER_XT_MATCH_NFACCT=m -CONFIG_NETFILTER_XT_MATCH_OSF=m -CONFIG_NETFILTER_XT_MATCH_OWNER=m -CONFIG_NETFILTER_XT_MATCH_POLICY=m -CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m -CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m -CONFIG_NETFILTER_XT_MATCH_QUOTA=m -CONFIG_NETFILTER_XT_MATCH_RATEEST=m -CONFIG_NETFILTER_XT_MATCH_REALM=m -CONFIG_NETFILTER_XT_MATCH_RECENT=m -CONFIG_NETFILTER_XT_MATCH_SOCKET=m -CONFIG_NETFILTER_XT_MATCH_STATE=m -CONFIG_NETFILTER_XT_MATCH_STATISTIC=m -CONFIG_NETFILTER_XT_MATCH_STRING=m -CONFIG_NETFILTER_XT_MATCH_TCPMSS=m -CONFIG_NETFILTER_XT_MATCH_TIME=m -CONFIG_NETFILTER_XT_MATCH_U32=m -CONFIG_IP_SET=m -CONFIG_IP_SET_BITMAP_IP=m -CONFIG_IP_SET_BITMAP_IPMAC=m -CONFIG_IP_SET_BITMAP_PORT=m -CONFIG_IP_SET_HASH_IP=m -CONFIG_IP_SET_HASH_IPPORT=m -CONFIG_IP_SET_HASH_IPPORTIP=m -CONFIG_IP_SET_HASH_IPPORTNET=m -CONFIG_IP_SET_HASH_NET=m -CONFIG_IP_SET_HASH_NETPORT=m -CONFIG_IP_SET_HASH_NETIFACE=m -CONFIG_IP_SET_LIST_SET=m CONFIG_IP_VS=m -CONFIG_IP_VS_IPV6=y -CONFIG_IP_VS_PROTO_TCP=y -CONFIG_IP_VS_PROTO_UDP=y -CONFIG_IP_VS_PROTO_ESP=y -CONFIG_IP_VS_PROTO_AH=y -CONFIG_IP_VS_PROTO_SCTP=y -CONFIG_IP_VS_RR=m -CONFIG_IP_VS_WRR=m -CONFIG_IP_VS_LC=m -CONFIG_IP_VS_WLC=m -CONFIG_IP_VS_LBLC=m -CONFIG_IP_VS_LBLCR=m -CONFIG_IP_VS_DH=m -CONFIG_IP_VS_SH=m -CONFIG_IP_VS_SED=m -CONFIG_IP_VS_NQ=m -CONFIG_IP_VS_FTP=m -CONFIG_IP_VS_PE_SIP=m -CONFIG_NFT_DUP_IPV4=m -CONFIG_NFT_FIB_IPV4=m -CONFIG_NF_TABLES_ARP=y -CONFIG_NF_LOG_ARP=m -CONFIG_NF_LOG_IPV4=m CONFIG_IP_NF_IPTABLES=m -CONFIG_IP_NF_MATCH_AH=m -CONFIG_IP_NF_MATCH_ECN=m -CONFIG_IP_NF_MATCH_RPFILTER=m -CONFIG_IP_NF_MATCH_TTL=m CONFIG_IP_NF_FILTER=m CONFIG_IP_NF_TARGET_REJECT=m -CONFIG_IP_NF_TARGET_SYNPROXY=m CONFIG_IP_NF_NAT=m CONFIG_IP_NF_TARGET_MASQUERADE=m -CONFIG_IP_NF_TARGET_NETMAP=m -CONFIG_IP_NF_TARGET_REDIRECT=m CONFIG_IP_NF_MANGLE=m -CONFIG_IP_NF_TARGET_ECN=m -CONFIG_IP_NF_TARGET_TTL=m -CONFIG_IP_NF_RAW=m -CONFIG_IP_NF_ARPTABLES=m -CONFIG_IP_NF_ARPFILTER=m -CONFIG_IP_NF_ARP_MANGLE=m -CONFIG_NFT_DUP_IPV6=m -CONFIG_NFT_FIB_IPV6=m CONFIG_IP6_NF_IPTABLES=m -CONFIG_IP6_NF_MATCH_AH=m -CONFIG_IP6_NF_MATCH_EUI64=m -CONFIG_IP6_NF_MATCH_FRAG=m -CONFIG_IP6_NF_MATCH_OPTS=m -CONFIG_IP6_NF_MATCH_HL=m -CONFIG_IP6_NF_MATCH_IPV6HEADER=m -CONFIG_IP6_NF_MATCH_MH=m -CONFIG_IP6_NF_MATCH_RPFILTER=m -CONFIG_IP6_NF_MATCH_RT=m -CONFIG_IP6_NF_MATCH_SRH=m -CONFIG_IP6_NF_TARGET_HL=m CONFIG_IP6_NF_FILTER=m CONFIG_IP6_NF_TARGET_REJECT=m -CONFIG_IP6_NF_TARGET_SYNPROXY=m CONFIG_IP6_NF_MANGLE=m -CONFIG_IP6_NF_RAW=m -CONFIG_IP6_NF_SECURITY=m CONFIG_IP6_NF_NAT=m CONFIG_IP6_NF_TARGET_MASQUERADE=m -CONFIG_IP6_NF_TARGET_NPT=m -CONFIG_NF_TABLES_BRIDGE=m -CONFIG_NFT_BRIDGE_REJECT=m -CONFIG_BRIDGE_NF_EBTABLES=m -CONFIG_BRIDGE_EBT_BROUTE=m -CONFIG_BRIDGE_EBT_T_FILTER=m -CONFIG_BRIDGE_EBT_T_NAT=m -CONFIG_BRIDGE_EBT_802_3=m -CONFIG_BRIDGE_EBT_AMONG=m -CONFIG_BRIDGE_EBT_ARP=m -CONFIG_BRIDGE_EBT_IP=m -CONFIG_BRIDGE_EBT_IP6=m -CONFIG_BRIDGE_EBT_LIMIT=m -CONFIG_BRIDGE_EBT_MARK=m -CONFIG_BRIDGE_EBT_PKTTYPE=m -CONFIG_BRIDGE_EBT_STP=m -CONFIG_BRIDGE_EBT_VLAN=m -CONFIG_BRIDGE_EBT_ARPREPLY=m -CONFIG_BRIDGE_EBT_DNAT=m -CONFIG_BRIDGE_EBT_MARK_T=m -CONFIG_BRIDGE_EBT_REDIRECT=m -CONFIG_BRIDGE_EBT_SNAT=m -CONFIG_BRIDGE_EBT_LOG=m -CONFIG_BRIDGE_EBT_NFLOG=m -CONFIG_SCTP_COOKIE_HMAC_SHA1=y -CONFIG_ATM=m -CONFIG_L2TP=m -CONFIG_L2TP_V3=y -CONFIG_L2TP_IP=m -CONFIG_L2TP_ETH=m CONFIG_BRIDGE=m +CONFIG_BRIDGE_VLAN_FILTERING=y +CONFIG_NET_DSA=m CONFIG_VLAN_8021Q=m CONFIG_VLAN_8021Q_GVRP=y -CONFIG_ATALK=m -CONFIG_6LOWPAN=m -CONFIG_IEEE802154=m -CONFIG_IEEE802154_6LOWPAN=m -CONFIG_MAC802154=m +CONFIG_VLAN_8021Q_MVRP=y CONFIG_NET_SCHED=y -CONFIG_NET_SCH_HTB=m -CONFIG_NET_SCH_HFSC=m -CONFIG_NET_SCH_PRIO=m -CONFIG_NET_SCH_MULTIQ=m -CONFIG_NET_SCH_RED=m -CONFIG_NET_SCH_SFB=m -CONFIG_NET_SCH_SFQ=m -CONFIG_NET_SCH_TEQL=m -CONFIG_NET_SCH_TBF=m -CONFIG_NET_SCH_GRED=m -CONFIG_NET_SCH_NETEM=m -CONFIG_NET_SCH_DRR=m +CONFIG_NET_SCH_CBS=m +CONFIG_NET_SCH_ETF=m +CONFIG_NET_SCH_TAPRIO=m CONFIG_NET_SCH_MQPRIO=m -CONFIG_NET_SCH_CHOKE=m -CONFIG_NET_SCH_QFQ=m -CONFIG_NET_SCH_CODEL=m -CONFIG_NET_SCH_FQ_CODEL=m -CONFIG_NET_SCH_CAKE=m -CONFIG_NET_SCH_FQ=m -CONFIG_NET_SCH_HHF=m -CONFIG_NET_SCH_PIE=m CONFIG_NET_SCH_INGRESS=m -CONFIG_NET_SCH_PLUG=m CONFIG_NET_CLS_BASIC=m -CONFIG_NET_CLS_ROUTE4=m -CONFIG_NET_CLS_FW=m -CONFIG_NET_CLS_U32=m -CONFIG_CLS_U32_MARK=y -CONFIG_NET_CLS_FLOW=m -CONFIG_NET_CLS_CGROUP=m -CONFIG_NET_CLS_BPF=y -CONFIG_NET_EMATCH=y -CONFIG_NET_EMATCH_CMP=m -CONFIG_NET_EMATCH_NBYTE=m -CONFIG_NET_EMATCH_U32=m -CONFIG_NET_EMATCH_META=m -CONFIG_NET_EMATCH_TEXT=m -CONFIG_NET_EMATCH_IPSET=m +CONFIG_NET_CLS_FLOWER=m CONFIG_NET_CLS_ACT=y -CONFIG_NET_ACT_POLICE=m CONFIG_NET_ACT_GACT=m -CONFIG_GACT_PROB=y CONFIG_NET_ACT_MIRRED=m -CONFIG_NET_ACT_IPT=m -CONFIG_NET_ACT_NAT=m -CONFIG_NET_ACT_PEDIT=m -CONFIG_NET_ACT_SIMP=m -CONFIG_NET_ACT_SKBEDIT=m -CONFIG_NET_ACT_CSUM=m -CONFIG_BATMAN_ADV=m -CONFIG_OPENVSWITCH=m -CONFIG_VSOCKETS=m -CONFIG_CGROUP_NET_PRIO=y -CONFIG_NET_PKTGEN=m -CONFIG_HAMRADIO=y -CONFIG_AX25=m -CONFIG_NETROM=m -CONFIG_ROSE=m -CONFIG_MKISS=m -CONFIG_6PACK=m -CONFIG_BPQETHER=m -CONFIG_BAYCOM_SER_FDX=m -CONFIG_BAYCOM_SER_HDX=m -CONFIG_YAM=m +CONFIG_NET_ACT_GATE=m +CONFIG_QRTR_SMD=m +CONFIG_QRTR_TUN=m CONFIG_CAN=m -CONFIG_CAN_J1939=m -CONFIG_CAN_ISOTP=m CONFIG_BT=m -CONFIG_BT_RFCOMM=m -CONFIG_BT_RFCOMM_TTY=y -CONFIG_BT_BNEP=m -CONFIG_BT_BNEP_MC_FILTER=y -CONFIG_BT_BNEP_PROTO_FILTER=y CONFIG_BT_HIDP=m -CONFIG_BT_6LOWPAN=m +# CONFIG_BT_LE is not set +CONFIG_BT_LEDS=y +# CONFIG_BT_DEBUGFS is not set CONFIG_BT_HCIBTUSB=m +CONFIG_BT_HCIBTUSB_MTK=y CONFIG_BT_HCIUART=m -CONFIG_BT_HCIUART_3WIRE=y +CONFIG_BT_HCIUART_LL=y CONFIG_BT_HCIUART_BCM=y -CONFIG_BT_HCIBCM203X=m -CONFIG_BT_HCIBPA10X=m -CONFIG_BT_HCIBFUSB=m -CONFIG_BT_HCIVHCI=m +CONFIG_BT_HCIUART_QCA=y +CONFIG_BT_HCIUART_MRVL=y CONFIG_BT_MRVL=m CONFIG_BT_MRVL_SDIO=m -CONFIG_BT_ATH3K=m +CONFIG_BT_QCOMSMD=m +CONFIG_BT_NXPUART=m CONFIG_CFG80211=m -CONFIG_CFG80211_WEXT=y CONFIG_MAC80211=m -CONFIG_MAC80211_MESH=y +CONFIG_MAC80211_LEDS=y CONFIG_RFKILL=m -CONFIG_RFKILL_INPUT=y -CONFIG_NET_9P=m +CONFIG_NET_9P=y +CONFIG_NET_9P_VIRTIO=y CONFIG_NFC=m +CONFIG_NFC_NCI=m +CONFIG_NFC_S3FWRN5_I2C=m CONFIG_PCI=y CONFIG_PCIEPORTBUS=y CONFIG_PCIEAER=y -CONFIG_PCIEASPM_POWERSAVE=y -CONFIG_PCIE_DPC=y -CONFIG_UEVENT_HELPER=y +CONFIG_PCI_IOV=y +CONFIG_PCI_PASID=y +CONFIG_HOTPLUG_PCI=y +CONFIG_HOTPLUG_PCI_ACPI=y +CONFIG_PCI_AARDVARK=y +CONFIG_PCIE_ALTERA=y +CONFIG_PCIE_ALTERA_MSI=y +CONFIG_PCIE_BRCMSTB=m +CONFIG_PCI_HOST_THUNDER_PEM=y +CONFIG_PCI_HOST_THUNDER_ECAM=y +CONFIG_PCI_HOST_GENERIC=y +CONFIG_PCIE_MEDIATEK_GEN3=m +CONFIG_PCI_TEGRA=y +CONFIG_PCIE_RCAR_HOST=y +CONFIG_PCIE_RCAR_EP=y +CONFIG_PCIE_ROCKCHIP_HOST=m +CONFIG_PCI_XGENE=y +CONFIG_PCI_IMX6_HOST=y +CONFIG_PCI_LAYERSCAPE=y +CONFIG_PCI_HISI=y +CONFIG_PCIE_KIRIN=y +CONFIG_PCIE_HISI_STB=y +CONFIG_PCIE_ARMADA_8K=y +CONFIG_PCIE_TEGRA194_HOST=m +CONFIG_PCIE_QCOM=y +CONFIG_PCIE_ROCKCHIP_DW_HOST=y +CONFIG_PCIE_VISCONTI_HOST=y +CONFIG_PCIE_LAYERSCAPE_GEN4=y +CONFIG_PCI_ENDPOINT=y +CONFIG_PCI_ENDPOINT_CONFIGFS=y +CONFIG_PCI_EPF_TEST=m CONFIG_DEVTMPFS=y CONFIG_DEVTMPFS_MOUNT=y -# CONFIG_BRCMSTB_GISB_ARB is not set +CONFIG_FW_LOADER_USER_HELPER=y +CONFIG_HISILICON_LPC=y +CONFIG_TEGRA_ACONNECT=m +CONFIG_MHI_BUS_PCI_GENERIC=m +CONFIG_ARM_SCPI_PROTOCOL=y CONFIG_RASPBERRYPI_FIRMWARE=y -# CONFIG_EFI_VARS_PSTORE is not set -CONFIG_MTD=m -CONFIG_MTD_BLOCK=m -CONFIG_MTD_BLOCK2MTD=m -CONFIG_MTD_SPI_NAND=m -CONFIG_MTD_SPI_NOR=m +CONFIG_INTEL_STRATIX10_SERVICE=y +CONFIG_INTEL_STRATIX10_RSU=m +CONFIG_EFI_CAPSULE_LOADER=y +CONFIG_IMX_SCU=y +CONFIG_IMX_SCU_PD=y +CONFIG_GNSS=m +CONFIG_GNSS_MTK_SERIAL=m +CONFIG_MTD=y +CONFIG_MTD_BLOCK=y +CONFIG_MTD_CFI=y +CONFIG_MTD_CFI_ADV_OPTIONS=y +CONFIG_MTD_CFI_INTELEXT=y +CONFIG_MTD_CFI_AMDSTD=y +CONFIG_MTD_CFI_STAA=y +CONFIG_MTD_PHYSMAP=y +CONFIG_MTD_PHYSMAP_OF=y +CONFIG_MTD_DATAFLASH=y +CONFIG_MTD_SST25L=y +CONFIG_MTD_RAW_NAND=y +CONFIG_MTD_NAND_DENALI_DT=y +CONFIG_MTD_NAND_MARVELL=y +CONFIG_MTD_NAND_BRCMNAND=m +CONFIG_MTD_NAND_FSL_IFC=y +CONFIG_MTD_NAND_QCOM=y +CONFIG_MTD_SPI_NOR=y CONFIG_MTD_UBI=m -CONFIG_OF_CONFIGFS=y -CONFIG_ZRAM=m CONFIG_BLK_DEV_LOOP=y -CONFIG_BLK_DEV_DRBD=m CONFIG_BLK_DEV_NBD=m -CONFIG_BLK_DEV_RAM=y -CONFIG_ATA_OVER_ETH=m -CONFIG_BLK_DEV_NVME=y -CONFIG_NVME_HWMON=y +CONFIG_VIRTIO_BLK=y +CONFIG_BLK_DEV_NVME=m +CONFIG_QCOM_COINCELL=m +CONFIG_QCOM_FASTRPC=m +CONFIG_SRAM=y +CONFIG_PCI_ENDPOINT_TEST=m CONFIG_EEPROM_AT24=m CONFIG_EEPROM_AT25=m -CONFIG_TI_ST=m -CONFIG_SCSI=y +CONFIG_UACCE=m # CONFIG_SCSI_PROC_FS is not set CONFIG_BLK_DEV_SD=y -CONFIG_CHR_DEV_ST=m -CONFIG_BLK_DEV_SR=m -CONFIG_CHR_DEV_SG=m -CONFIG_SCSI_ISCSI_ATTRS=y -CONFIG_ISCSI_TCP=m -CONFIG_ISCSI_BOOT_SYSFS=m -CONFIG_ATA=m -CONFIG_SATA_AHCI=m -CONFIG_SATA_MV=m +CONFIG_SCSI_SAS_ATA=y +CONFIG_SCSI_HISI_SAS=y +CONFIG_SCSI_HISI_SAS_PCI=y +CONFIG_MEGARAID_SAS=y +CONFIG_SCSI_MPT3SAS=m +CONFIG_ATA=y +CONFIG_SATA_AHCI=y +CONFIG_SATA_AHCI_PLATFORM=y +CONFIG_AHCI_BRCM=m +CONFIG_AHCI_DWC=m +CONFIG_AHCI_CEVA=y +CONFIG_AHCI_MVEBU=y +CONFIG_AHCI_XGENE=y +CONFIG_AHCI_QORIQ=y +CONFIG_SATA_SIL24=y +CONFIG_SATA_RCAR=y +CONFIG_PATA_OF_PLATFORM=y CONFIG_MD=y -CONFIG_MD_LINEAR=m +CONFIG_BLK_DEV_MD=m CONFIG_BLK_DEV_DM=m -CONFIG_DM_CRYPT=m -CONFIG_DM_SNAPSHOT=m -CONFIG_DM_THIN_PROVISIONING=m -CONFIG_DM_CACHE=m -CONFIG_DM_WRITECACHE=m CONFIG_DM_MIRROR=m -CONFIG_DM_LOG_USERSPACE=m -CONFIG_DM_RAID=m CONFIG_DM_ZERO=m -CONFIG_DM_MULTIPATH=m -CONFIG_DM_DELAY=m -CONFIG_DM_INTEGRITY=m CONFIG_NETDEVICES=y -CONFIG_BONDING=m -CONFIG_DUMMY=m -CONFIG_WIREGUARD=m -CONFIG_IFB=m CONFIG_MACVLAN=m CONFIG_MACVTAP=m -CONFIG_IPVLAN=m -CONFIG_VXLAN=m -CONFIG_NETCONSOLE=m -CONFIG_TUN=m +CONFIG_TUN=y CONFIG_VETH=m -CONFIG_NET_VRF=m -CONFIG_VSOCKMON=m -CONFIG_BCMGENET=y +CONFIG_VIRTIO_NET=y +CONFIG_MHI_NET=m +CONFIG_NET_DSA_BCM_SF2=m +CONFIG_NET_DSA_MSCC_FELIX=m +CONFIG_AMD_XGBE=y +CONFIG_NET_XGENE=y +CONFIG_ATL1C=m +CONFIG_BCMGENET=m +CONFIG_BNX2X=m +CONFIG_SYSTEMPORT=m CONFIG_MACB=y -CONFIG_IGB=m -CONFIG_IXGBE=m -CONFIG_I40E=m -CONFIG_IGC=m -CONFIG_ENC28J60=m -CONFIG_LAN743X=m -CONFIG_QCA7000_SPI=m -CONFIG_QCA7000_UART=m +CONFIG_THUNDER_NIC_PF=y +CONFIG_FEC=y +CONFIG_FSL_FMAN=y +CONFIG_FSL_DPAA_ETH=y +CONFIG_FSL_DPAA2_ETH=y +CONFIG_FSL_ENETC=y +CONFIG_FSL_ENETC_VF=y +CONFIG_FSL_ENETC_QOS=y +CONFIG_HIX5HD2_GMAC=y +CONFIG_HNS_DSAF=y +CONFIG_HNS_ENET=y +CONFIG_HNS3=y +CONFIG_HNS3_HCLGE=y +CONFIG_HNS3_ENET=y +CONFIG_E1000=y +CONFIG_E1000E=y +CONFIG_IGB=y +CONFIG_IGBVF=y +CONFIG_MVNETA=y +CONFIG_MVPP2=y +CONFIG_SKY2=y +CONFIG_MLX4_EN=m +CONFIG_MLX5_CORE=m +CONFIG_MLX5_CORE_EN=y +CONFIG_QCOM_EMAC=m +CONFIG_RMNET=m CONFIG_R8169=m -CONFIG_WIZNET_W5100=m -CONFIG_WIZNET_W5100_SPI=m +CONFIG_SH_ETH=y +CONFIG_RAVB=y +CONFIG_RENESAS_ETHER_SWITCH=y +CONFIG_SMC91X=y +CONFIG_SMSC911X=y +CONFIG_SNI_AVE=y +CONFIG_SNI_NETSEC=y +CONFIG_STMMAC_ETH=m +CONFIG_DWMAC_TEGRA=m +CONFIG_TI_K3_AM65_CPSW_NUSS=y +CONFIG_QCOM_IPA=m +CONFIG_MESON_GXL_PHY=m +CONFIG_AQUANTIA_PHY=y +CONFIG_BCM54140_PHY=m +CONFIG_MARVELL_PHY=m +CONFIG_MARVELL_10G_PHY=y CONFIG_MICREL_PHY=y -CONFIG_CAN_VCAN=m -CONFIG_CAN_SLCAN=m -CONFIG_CAN_MCP251X=m +CONFIG_MICROSEMI_PHY=y +CONFIG_AT803X_PHY=y +CONFIG_REALTEK_PHY=y +CONFIG_ROCKCHIP_PHY=y +CONFIG_DP83867_PHY=y +CONFIG_DP83869_PHY=m +CONFIG_DP83TD510_PHY=y +CONFIG_VITESSE_PHY=y +CONFIG_CAN_FLEXCAN=m +CONFIG_CAN_M_CAN=m +CONFIG_CAN_M_CAN_PLATFORM=m +CONFIG_CAN_RCAR=m +CONFIG_CAN_RCAR_CANFD=m CONFIG_CAN_MCP251XFD=m -CONFIG_CAN_8DEV_USB=m -CONFIG_CAN_EMS_USB=m -CONFIG_CAN_GS_USB=m -CONFIG_CAN_PEAK_USB=m -CONFIG_MDIO_BITBANG=m -CONFIG_PPP=m -CONFIG_PPP_BSDCOMP=m -CONFIG_PPP_DEFLATE=m -CONFIG_PPP_FILTER=y -CONFIG_PPP_MPPE=m -CONFIG_PPP_MULTILINK=y -CONFIG_PPPOATM=m -CONFIG_PPPOE=m -CONFIG_PPPOL2TP=m -CONFIG_PPP_ASYNC=m -CONFIG_PPP_SYNC_TTY=m -CONFIG_SLIP=m -CONFIG_SLIP_COMPRESSED=y -CONFIG_SLIP_SMART=y -CONFIG_USB_CATC=m -CONFIG_USB_KAWETH=m +CONFIG_MDIO_GPIO=y +CONFIG_MDIO_BUS_MUX_MULTIPLEXER=y +CONFIG_MDIO_BUS_MUX_MMIOREG=y CONFIG_USB_PEGASUS=m CONFIG_USB_RTL8150=m -CONFIG_USB_RTL8152=y -CONFIG_USB_LAN78XX=y -CONFIG_USB_USBNET=y -CONFIG_USB_NET_AX8817X=m -CONFIG_USB_NET_AX88179_178A=m -CONFIG_USB_NET_CDCETHER=m -CONFIG_USB_NET_CDC_EEM=m -CONFIG_USB_NET_CDC_NCM=m -CONFIG_USB_NET_HUAWEI_CDC_NCM=m -CONFIG_USB_NET_CDC_MBIM=m +CONFIG_USB_RTL8152=m +CONFIG_USB_LAN78XX=m +CONFIG_USB_USBNET=m CONFIG_USB_NET_DM9601=m -CONFIG_USB_NET_SR9700=m CONFIG_USB_NET_SR9800=m CONFIG_USB_NET_SMSC75XX=m -CONFIG_USB_NET_SMSC95XX=y -CONFIG_USB_NET_GL620A=m -CONFIG_USB_NET_NET1080=m +CONFIG_USB_NET_SMSC95XX=m CONFIG_USB_NET_PLUSB=m CONFIG_USB_NET_MCS7830=m -CONFIG_USB_NET_CDC_SUBSET=m -CONFIG_USB_ALI_M5632=y -CONFIG_USB_AN2720=y -CONFIG_USB_EPSON2888=y -CONFIG_USB_KC2190=y -CONFIG_USB_NET_ZAURUS=m -CONFIG_USB_NET_CX82310_ETH=m -CONFIG_USB_NET_KALMIA=m -CONFIG_USB_NET_QMI_WWAN=m -CONFIG_USB_HSO=m -CONFIG_USB_NET_INT51X1=m -CONFIG_USB_IPHETH=m -CONFIG_USB_SIERRA_NET=m -CONFIG_USB_VL600=m -CONFIG_USB_NET_AQC111=m -CONFIG_ATH9K=m -CONFIG_ATH9K_HTC=m -CONFIG_CARL9170=m -CONFIG_ATH6KL=m -CONFIG_ATH6KL_USB=m -CONFIG_AR5523=m -CONFIG_AT76C50X_USB=m -CONFIG_B43=m -# CONFIG_B43_PHY_N is not set -CONFIG_B43LEGACY=m +CONFIG_ATH10K=m +CONFIG_ATH10K_PCI=m +CONFIG_ATH10K_SDIO=m +CONFIG_ATH10K_SNOC=m +CONFIG_WCN36XX=m +CONFIG_ATH11K=m +CONFIG_ATH11K_AHB=m +CONFIG_ATH11K_PCI=m CONFIG_BRCMFMAC=m -CONFIG_BRCMFMAC_USB=y -CONFIG_BRCMDBG=y -CONFIG_HOSTAP=m -CONFIG_P54_COMMON=m -CONFIG_P54_USB=m -CONFIG_LIBERTAS=m -CONFIG_LIBERTAS_USB=m -CONFIG_LIBERTAS_SDIO=m -CONFIG_LIBERTAS_THINFIRM=m -CONFIG_LIBERTAS_THINFIRM_USB=m CONFIG_MWIFIEX=m CONFIG_MWIFIEX_SDIO=m -CONFIG_MT7601U=m -CONFIG_MT76x0U=m -CONFIG_MT76x2U=m -CONFIG_MT7921U=m -CONFIG_RT2X00=m -CONFIG_RT2500USB=m -CONFIG_RT73USB=m -CONFIG_RT2800USB=m -CONFIG_RT2800USB_RT3573=y -CONFIG_RT2800USB_RT53XX=y -CONFIG_RT2800USB_RT55XX=y -CONFIG_RT2800USB_UNKNOWN=y -CONFIG_RTL8187=m -CONFIG_RTL8192CU=m -CONFIG_RTL8XXXU=m -CONFIG_RTW88=m -CONFIG_RTW88_8822BU=m -CONFIG_RTW88_8822CU=m -CONFIG_RTW88_8723DU=m -CONFIG_RTW88_8821CU=m -CONFIG_USB_ZD1201=m -CONFIG_ZD1211RW=m -CONFIG_USB_NET_RNDIS_WLAN=m -CONFIG_MAC80211_HWSIM=m -CONFIG_IEEE802154_AT86RF230=m -CONFIG_IEEE802154_MRF24J40=m -CONFIG_IEEE802154_CC2520=m -CONFIG_INPUT_MOUSEDEV=y -CONFIG_INPUT_JOYDEV=m +CONFIG_MWIFIEX_PCIE=m +CONFIG_MT7921E=m +CONFIG_RSI_91X=m +CONFIG_WL18XX=m +CONFIG_WLCORE_SDIO=m +CONFIG_WWAN=m +CONFIG_MHI_WWAN_CTRL=m +CONFIG_MHI_WWAN_MBIM=m CONFIG_INPUT_EVDEV=y -# CONFIG_KEYBOARD_ATKBD is not set -CONFIG_KEYBOARD_GPIO=m -CONFIG_KEYBOARD_TCA6416=m -CONFIG_KEYBOARD_TCA8418=m -CONFIG_KEYBOARD_MATRIX=m -CONFIG_KEYBOARD_CAP11XX=m -# CONFIG_INPUT_MOUSE is not set -CONFIG_INPUT_JOYSTICK=y -CONFIG_JOYSTICK_IFORCE=m -CONFIG_JOYSTICK_IFORCE_USB=m -CONFIG_JOYSTICK_XPAD=m -CONFIG_JOYSTICK_XPAD_FF=y -CONFIG_JOYSTICK_XPAD_LEDS=y -CONFIG_JOYSTICK_PSXPAD_SPI=m -CONFIG_JOYSTICK_PSXPAD_SPI_FF=y -CONFIG_JOYSTICK_FSIA6B=m -CONFIG_JOYSTICK_RPISENSE=m +CONFIG_KEYBOARD_ADC=m +CONFIG_KEYBOARD_GPIO=y +CONFIG_KEYBOARD_SNVS_PWRKEY=m +CONFIG_KEYBOARD_IMX_SC_KEY=m +CONFIG_KEYBOARD_CROS_EC=y +CONFIG_KEYBOARD_MTK_PMIC=m +CONFIG_MOUSE_ELAN_I2C=m CONFIG_INPUT_TOUCHSCREEN=y -CONFIG_TOUCHSCREEN_ADS7846=m -CONFIG_TOUCHSCREEN_EGALAX=m -CONFIG_TOUCHSCREEN_EXC3000=m +CONFIG_TOUCHSCREEN_ATMEL_MXT=m CONFIG_TOUCHSCREEN_GOODIX=m -CONFIG_TOUCHSCREEN_ILI210X=m +CONFIG_TOUCHSCREEN_ELAN=m CONFIG_TOUCHSCREEN_EDT_FT5X06=m -CONFIG_TOUCHSCREEN_RASPBERRYPI_FW=m -CONFIG_TOUCHSCREEN_USB_COMPOSITE=m -CONFIG_TOUCHSCREEN_TSC2007=m -CONFIG_TOUCHSCREEN_TSC2007_IIO=y -CONFIG_TOUCHSCREEN_STMPE=m -CONFIG_TOUCHSCREEN_IQS5XX=m CONFIG_INPUT_MISC=y -CONFIG_INPUT_AD714X=m -CONFIG_INPUT_ATI_REMOTE2=m -CONFIG_INPUT_KEYSPAN_REMOTE=m -CONFIG_INPUT_POWERMATE=m -CONFIG_INPUT_YEALINK=m -CONFIG_INPUT_CM109=m -CONFIG_INPUT_UINPUT=m -CONFIG_INPUT_GPIO_ROTARY_ENCODER=m -CONFIG_INPUT_ADXL34X=m -CONFIG_INPUT_CMA3000=m -CONFIG_SERIO=m -CONFIG_SERIO_RAW=m -CONFIG_GAMEPORT=m -CONFIG_BRCM_CHAR_DRIVERS=y -CONFIG_BCM_VCIO=y -# CONFIG_LEGACY_PTYS is not set +CONFIG_INPUT_BBNSM_PWRKEY=m +CONFIG_INPUT_PM8941_PWRKEY=y +CONFIG_INPUT_PM8XXX_VIBRATOR=m +CONFIG_INPUT_TPS65219_PWRBUTTON=m +CONFIG_INPUT_PWM_BEEPER=m +CONFIG_INPUT_PWM_VIBRA=m +CONFIG_INPUT_RK805_PWRKEY=m +CONFIG_INPUT_HISI_POWERKEY=y +# CONFIG_SERIO_SERPORT is not set +CONFIG_SERIO_AMBAKMI=y +CONFIG_LEGACY_PTY_COUNT=16 CONFIG_SERIAL_8250=y -# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set CONFIG_SERIAL_8250_CONSOLE=y -# CONFIG_SERIAL_8250_DMA is not set -CONFIG_SERIAL_8250_NR_UARTS=5 -CONFIG_SERIAL_8250_RUNTIME_UARTS=0 CONFIG_SERIAL_8250_EXTENDED=y CONFIG_SERIAL_8250_SHARE_IRQ=y CONFIG_SERIAL_8250_BCM2835AUX=y +CONFIG_SERIAL_8250_DW=y +CONFIG_SERIAL_8250_EM=y +CONFIG_SERIAL_8250_OMAP=y +CONFIG_SERIAL_8250_MT6577=y +CONFIG_SERIAL_8250_UNIPHIER=y CONFIG_SERIAL_OF_PLATFORM=y CONFIG_SERIAL_AMBA_PL011=y CONFIG_SERIAL_AMBA_PL011_CONSOLE=y -CONFIG_SERIAL_SC16IS7XX=m -CONFIG_SERIAL_SC16IS7XX_SPI=y +CONFIG_SERIAL_MESON=y +CONFIG_SERIAL_MESON_CONSOLE=y +CONFIG_SERIAL_SAMSUNG=y +CONFIG_SERIAL_SAMSUNG_CONSOLE=y +CONFIG_SERIAL_TEGRA=y +CONFIG_SERIAL_TEGRA_TCU=y +CONFIG_SERIAL_IMX=y +CONFIG_SERIAL_IMX_CONSOLE=y +CONFIG_SERIAL_SH_SCI=y +CONFIG_SERIAL_MSM=y +CONFIG_SERIAL_MSM_CONSOLE=y +CONFIG_SERIAL_QCOM_GENI=y +CONFIG_SERIAL_QCOM_GENI_CONSOLE=y +CONFIG_SERIAL_XILINX_PS_UART=y +CONFIG_SERIAL_XILINX_PS_UART_CONSOLE=y +CONFIG_SERIAL_FSL_LPUART=y +CONFIG_SERIAL_FSL_LPUART_CONSOLE=y +CONFIG_SERIAL_FSL_LINFLEXUART=y +CONFIG_SERIAL_FSL_LINFLEXUART_CONSOLE=y +CONFIG_SERIAL_STM32=y +CONFIG_SERIAL_STM32_CONSOLE=y +CONFIG_SERIAL_MVEBU_UART=y +CONFIG_SERIAL_OWL=y CONFIG_SERIAL_DEV_BUS=y -CONFIG_TTY_PRINTK=y +CONFIG_VIRTIO_CONSOLE=y +CONFIG_IPMI_HANDLER=m +CONFIG_IPMI_DEVICE_INTERFACE=m +CONFIG_IPMI_SI=m CONFIG_HW_RANDOM=y -CONFIG_TCG_TPM=m +CONFIG_HW_RANDOM_VIRTIO=y +CONFIG_TCG_TPM=y +CONFIG_TCG_TIS=m CONFIG_TCG_TIS_SPI=m -CONFIG_TCG_TIS_I2C=m -CONFIG_XILLYBUS=m -CONFIG_XILLYBUS_PCIE=m -CONFIG_XILLYUSB=m -CONFIG_RASPBERRYPI_GPIOMEM=m -CONFIG_I2C=y +CONFIG_TCG_TIS_SPI_CR50=y +CONFIG_TCG_TIS_I2C_CR50=m +CONFIG_TCG_TIS_I2C_INFINEON=y CONFIG_I2C_CHARDEV=y CONFIG_I2C_MUX=y -CONFIG_I2C_MUX_GPMUX=m -CONFIG_I2C_MUX_PCA954x=m -CONFIG_I2C_MUX_PINCTRL=m -CONFIG_I2C_BCM2708=y +CONFIG_I2C_MUX_PCA954x=y CONFIG_I2C_BCM2835=m -CONFIG_I2C_BCM2835_RUST=y -# CONFIG_I2C_BRCMSTB is not set +CONFIG_I2C_CADENCE=m +CONFIG_I2C_DESIGNWARE_PLATFORM=y +CONFIG_I2C_GPIO=m +CONFIG_I2C_IMX=y +CONFIG_I2C_IMX_LPI2C=y +CONFIG_I2C_MESON=y +CONFIG_I2C_MT65XX=y +CONFIG_I2C_MV64XXX=y +CONFIG_I2C_OMAP=y +CONFIG_I2C_OWL=y +CONFIG_I2C_PXA=y +CONFIG_I2C_QCOM_CCI=m +CONFIG_I2C_QCOM_GENI=m +CONFIG_I2C_QUP=y +CONFIG_I2C_RIIC=y +CONFIG_I2C_RK3X=y +CONFIG_I2C_RZV2M=m +CONFIG_I2C_S3C2410=y +CONFIG_I2C_SH_MOBILE=y +CONFIG_I2C_TEGRA=y +CONFIG_I2C_UNIPHIER_F=y +CONFIG_I2C_RCAR=y +CONFIG_I2C_CROS_EC_TUNNEL=y CONFIG_SPI=y +CONFIG_SPI_ARMADA_3700=y CONFIG_SPI_BCM2835=m CONFIG_SPI_BCM2835AUX=m +CONFIG_SPI_CADENCE_QUADSPI=y CONFIG_SPI_DESIGNWARE=m CONFIG_SPI_DW_DMA=y CONFIG_SPI_DW_MMIO=m -CONFIG_SPI_GPIO=m +CONFIG_SPI_FSL_LPSPI=y +CONFIG_SPI_FSL_QUADSPI=y +CONFIG_SPI_NXP_FLEXSPI=y +CONFIG_SPI_IMX=m +CONFIG_SPI_FSL_DSPI=y +CONFIG_SPI_MESON_SPICC=m +CONFIG_SPI_MESON_SPIFC=m +CONFIG_SPI_MT65XX=y +CONFIG_SPI_MTK_NOR=m +CONFIG_SPI_OMAP24XX=m +CONFIG_SPI_ORION=y +CONFIG_SPI_PL022=y +CONFIG_SPI_ROCKCHIP=y +CONFIG_SPI_ROCKCHIP_SFC=m +CONFIG_SPI_RPCIF=m +CONFIG_SPI_RSPI=m +CONFIG_SPI_RZV2M_CSI=m +CONFIG_SPI_QCOM_QSPI=m +CONFIG_SPI_QUP=y +CONFIG_SPI_QCOM_GENI=m +CONFIG_SPI_S3C64XX=y +CONFIG_SPI_SH_MSIOF=m +CONFIG_SPI_SUN6I=y +CONFIG_SPI_TEGRA210_QUAD=m +CONFIG_SPI_TEGRA114=m CONFIG_SPI_SPIDEV=m -CONFIG_SPI_SLAVE=y -CONFIG_PPS_CLIENT_LDISC=m -CONFIG_PPS_CLIENT_GPIO=m -CONFIG_PINCTRL_MCP23S08=m -CONFIG_PINCTRL_RP1=y -CONFIG_PINCTRL_BCM2712=y -CONFIG_GPIO_SYSFS=y -CONFIG_GPIO_BCM_VIRT=y -CONFIG_GPIO_MAX7300=m -CONFIG_GPIO_PCA953X=m +CONFIG_SPMI=y +CONFIG_SPMI_MTK_PMIF=m +CONFIG_PINCTRL_MAX77620=y +CONFIG_PINCTRL_RK805=m +CONFIG_PINCTRL_SINGLE=y +CONFIG_PINCTRL_OWL=y +CONFIG_PINCTRL_S700=y +CONFIG_PINCTRL_S900=y +CONFIG_PINCTRL_IMX8MM=y +CONFIG_PINCTRL_IMX8MN=y +CONFIG_PINCTRL_IMX8MP=y +CONFIG_PINCTRL_IMX8MQ=y +CONFIG_PINCTRL_IMX8QM=y +CONFIG_PINCTRL_IMX8QXP=y +CONFIG_PINCTRL_IMX8DXL=y +CONFIG_PINCTRL_IMX8ULP=y +CONFIG_PINCTRL_IMX93=y +CONFIG_PINCTRL_MSM=y +CONFIG_PINCTRL_IPQ5018=y +CONFIG_PINCTRL_IPQ5332=y +CONFIG_PINCTRL_IPQ8074=y +CONFIG_PINCTRL_IPQ6018=y +CONFIG_PINCTRL_IPQ9574=y +CONFIG_PINCTRL_MSM8916=y +CONFIG_PINCTRL_MSM8953=y +CONFIG_PINCTRL_MSM8976=y +CONFIG_PINCTRL_MSM8994=y +CONFIG_PINCTRL_MSM8996=y +CONFIG_PINCTRL_MSM8998=y +CONFIG_PINCTRL_QCM2290=y +CONFIG_PINCTRL_QCS404=y +CONFIG_PINCTRL_QDF2XXX=y +CONFIG_PINCTRL_QDU1000=y +CONFIG_PINCTRL_SA8775P=y +CONFIG_PINCTRL_SC7180=y +CONFIG_PINCTRL_SC7280=y +CONFIG_PINCTRL_SC8180X=y +CONFIG_PINCTRL_SC8280XP=y +CONFIG_PINCTRL_SDM660=y +CONFIG_PINCTRL_SDM670=y +CONFIG_PINCTRL_SDM845=y +CONFIG_PINCTRL_SM6115=y +CONFIG_PINCTRL_SM6125=y +CONFIG_PINCTRL_SM6350=y +CONFIG_PINCTRL_SM6375=y +CONFIG_PINCTRL_SM8150=y +CONFIG_PINCTRL_SM8250=y +CONFIG_PINCTRL_SM8350=y +CONFIG_PINCTRL_SM8450=y +CONFIG_PINCTRL_SM8550=y +CONFIG_PINCTRL_QCOM_SPMI_PMIC=y +CONFIG_PINCTRL_LPASS_LPI=m +CONFIG_PINCTRL_SC7280_LPASS_LPI=m +CONFIG_PINCTRL_SM8250_LPASS_LPI=m +CONFIG_PINCTRL_SM8450_LPASS_LPI=m +CONFIG_PINCTRL_SC8280XP_LPASS_LPI=m +CONFIG_PINCTRL_SM8550_LPASS_LPI=m +CONFIG_GPIO_ALTERA=m +CONFIG_GPIO_DAVINCI=y +CONFIG_GPIO_DWAPB=y +CONFIG_GPIO_MB86S7X=y +CONFIG_GPIO_MPC8XXX=y +CONFIG_GPIO_MXC=y +CONFIG_GPIO_PL061=y +CONFIG_GPIO_RCAR=y +CONFIG_GPIO_SYSCON=y +CONFIG_GPIO_UNIPHIER=y +CONFIG_GPIO_VISCONTI=y +CONFIG_GPIO_WCD934X=m +CONFIG_GPIO_XGENE=y +CONFIG_GPIO_XGENE_SB=y +CONFIG_GPIO_MAX732X=y +CONFIG_GPIO_PCA953X=y CONFIG_GPIO_PCA953X_IRQ=y -CONFIG_GPIO_PCF857X=m -CONFIG_GPIO_ARIZONA=m -CONFIG_GPIO_FSM=m -CONFIG_GPIO_STMPE=y -CONFIG_GPIO_MAX7301=m -CONFIG_GPIO_MOCKUP=m -CONFIG_W1=m -CONFIG_W1_MASTER_DS2490=m -CONFIG_W1_MASTER_DS2482=m -CONFIG_W1_MASTER_GPIO=m -CONFIG_W1_SLAVE_THERM=m -CONFIG_W1_SLAVE_SMEM=m -CONFIG_W1_SLAVE_DS2408=m -CONFIG_W1_SLAVE_DS2413=m -CONFIG_W1_SLAVE_DS2406=m -CONFIG_W1_SLAVE_DS2423=m -CONFIG_W1_SLAVE_DS2431=m -CONFIG_W1_SLAVE_DS2433=m -CONFIG_W1_SLAVE_DS2438=m -CONFIG_W1_SLAVE_DS2780=m -CONFIG_W1_SLAVE_DS2781=m -CONFIG_W1_SLAVE_DS28E04=m -CONFIG_W1_SLAVE_DS28E17=m -# CONFIG_POWER_RESET_BRCMSTB is not set -CONFIG_POWER_RESET_GPIO=y -CONFIG_RPI_POE_POWER=m -CONFIG_BATTERY_DS2760=m -CONFIG_BATTERY_MAX17040=m -CONFIG_CHARGER_GPIO=m -CONFIG_BATTERY_GAUGE_LTC2941=m -CONFIG_SENSORS_ADT7410=m -CONFIG_SENSORS_AHT10=m -CONFIG_SENSORS_DRIVETEMP=m -CONFIG_SENSORS_DS1621=m +CONFIG_GPIO_BD9571MWV=m +CONFIG_GPIO_MAX77620=y +CONFIG_GPIO_SL28CPLD=m +CONFIG_POWER_RESET_MSM=y +CONFIG_POWER_RESET_QCOM_PON=m +CONFIG_POWER_RESET_XGENE=y +CONFIG_POWER_RESET_SYSCON=y +CONFIG_POWER_RESET_SYSCON_POWEROFF=y +CONFIG_SYSCON_REBOOT_MODE=y +CONFIG_NVMEM_REBOOT_MODE=m +CONFIG_BATTERY_QCOM_BATTMGR=m +CONFIG_BATTERY_SBS=m +CONFIG_BATTERY_BQ27XXX=y +CONFIG_BATTERY_MAX17042=m +CONFIG_CHARGER_MT6360=m +CONFIG_CHARGER_BQ25890=m +CONFIG_CHARGER_BQ25980=m +CONFIG_CHARGER_RK817=m +CONFIG_SENSORS_ARM_SCMI=y +CONFIG_SENSORS_ARM_SCPI=y CONFIG_SENSORS_GPIO_FAN=m -CONFIG_SENSORS_IIO_HWMON=m CONFIG_SENSORS_JC42=m CONFIG_SENSORS_LM75=m +CONFIG_SENSORS_LM90=m CONFIG_SENSORS_PWM_FAN=m CONFIG_SENSORS_RASPBERRYPI_HWMON=m -CONFIG_SENSORS_SHT21=m -CONFIG_SENSORS_SHT3x=m -CONFIG_SENSORS_SHT4x=m -CONFIG_SENSORS_SHTC1=m -CONFIG_SENSORS_EMC2305=m +CONFIG_SENSORS_SL28CPLD=m CONFIG_SENSORS_INA2XX=m -CONFIG_SENSORS_TMP102=m -CONFIG_SENSORS_RP1_ADC=m -CONFIG_BCM2711_THERMAL=y -CONFIG_BCM2835_THERMAL=y +CONFIG_SENSORS_INA3221=m +CONFIG_THERMAL_GOV_POWER_ALLOCATOR=y +CONFIG_CPU_THERMAL=y +CONFIG_DEVFREQ_THERMAL=y +CONFIG_THERMAL_EMULATION=y +CONFIG_IMX_SC_THERMAL=m +CONFIG_IMX8MM_THERMAL=m +CONFIG_K3_THERMAL=m +CONFIG_QORIQ_THERMAL=m +CONFIG_SUN8I_THERMAL=y +CONFIG_ROCKCHIP_THERMAL=m +CONFIG_RCAR_THERMAL=y +CONFIG_RCAR_GEN3_THERMAL=y +CONFIG_RZG2L_THERMAL=y +CONFIG_ARMADA_THERMAL=y +CONFIG_BCM2711_THERMAL=m +CONFIG_BCM2835_THERMAL=m +CONFIG_BRCMSTB_THERMAL=m +CONFIG_EXYNOS_THERMAL=y +CONFIG_TEGRA_SOCTHERM=m +CONFIG_TEGRA_BPMP_THERMAL=m +CONFIG_GENERIC_ADC_THERMAL=m +CONFIG_QCOM_TSENS=y +CONFIG_QCOM_SPMI_ADC_TM5=m +CONFIG_QCOM_SPMI_TEMP_ALARM=m +CONFIG_QCOM_LMH=m +CONFIG_UNIPHIER_THERMAL=y CONFIG_WATCHDOG=y -CONFIG_GPIO_WATCHDOG=m +CONFIG_SL28CPLD_WATCHDOG=m +CONFIG_ARM_SP805_WATCHDOG=y +CONFIG_ARM_SBSA_WATCHDOG=y +CONFIG_S3C2410_WATCHDOG=y +CONFIG_DW_WATCHDOG=y +CONFIG_K3_RTI_WATCHDOG=m +CONFIG_SUNXI_WATCHDOG=m +CONFIG_NPCM7XX_WATCHDOG=y +CONFIG_IMX2_WDT=y +CONFIG_IMX_SC_WDT=m +CONFIG_IMX7ULP_WDT=m +CONFIG_QCOM_WDT=m +CONFIG_MESON_GXBB_WATCHDOG=m +CONFIG_MESON_WATCHDOG=m +CONFIG_ARM_SMC_WATCHDOG=y +CONFIG_RENESAS_WDT=y +CONFIG_RENESAS_RZG2LWDT=y +CONFIG_UNIPHIER_WATCHDOG=y +CONFIG_PM8916_WATCHDOG=m CONFIG_BCM2835_WDT=y -CONFIG_MFD_RASPBERRYPI_POE_HAT=m -CONFIG_MFD_STMPE=y -CONFIG_STMPE_SPI=y -CONFIG_MFD_SYSCON=y -CONFIG_MFD_ARIZONA_I2C=m -CONFIG_MFD_ARIZONA_SPI=m -CONFIG_MFD_WM5102=y -CONFIG_MFD_RP1=y -CONFIG_REGULATOR=y +CONFIG_BCM7038_WDT=m +CONFIG_MFD_ALTERA_SYSMGR=y +CONFIG_MFD_BD9571MWV=y +CONFIG_MFD_AXP20X_I2C=y +CONFIG_MFD_AXP20X_RSB=y +CONFIG_MFD_EXYNOS_LPASS=m +CONFIG_MFD_HI6421_PMIC=y +CONFIG_MFD_HI655X_PMIC=y +CONFIG_MFD_MAX77620=y +CONFIG_MFD_MT6360=y +CONFIG_MFD_MT6397=y +CONFIG_MFD_SPMI_PMIC=y +CONFIG_MFD_RK8XX_I2C=y +CONFIG_MFD_RK8XX_SPI=y +CONFIG_MFD_SEC_CORE=y +CONFIG_MFD_SL28CPLD=y +CONFIG_RZ_MTU3=y +CONFIG_MFD_TI_AM335X_TSCADC=m +CONFIG_MFD_TPS65219=y +CONFIG_MFD_ROHM_BD718XX=y +CONFIG_MFD_WCD934X=m CONFIG_REGULATOR_FIXED_VOLTAGE=y -CONFIG_REGULATOR_ARIZONA_LDO1=m -CONFIG_REGULATOR_ARIZONA_MICSUPP=m +CONFIG_REGULATOR_AXP20X=y +CONFIG_REGULATOR_BD718XX=y +CONFIG_REGULATOR_BD9571MWV=y +CONFIG_REGULATOR_CROS_EC=y +CONFIG_REGULATOR_FAN53555=y CONFIG_REGULATOR_GPIO=y -CONFIG_REGULATOR_RASPBERRYPI_TOUCHSCREEN_ATTINY=m -CONFIG_REGULATOR_RASPBERRYPI_TOUCHSCREEN_V2=m -CONFIG_RC_CORE=y -CONFIG_BPF_LIRC_MODE2=y -CONFIG_LIRC=y +CONFIG_REGULATOR_HI6421V530=y +CONFIG_REGULATOR_HI655X=y +CONFIG_REGULATOR_MAX77620=y +CONFIG_REGULATOR_MAX8973=y +CONFIG_REGULATOR_MP8859=y +CONFIG_REGULATOR_MT6315=m +CONFIG_REGULATOR_MT6357=y +CONFIG_REGULATOR_MT6358=y +CONFIG_REGULATOR_MT6359=y +CONFIG_REGULATOR_MT6360=y +CONFIG_REGULATOR_MT6397=y +CONFIG_REGULATOR_PCA9450=y +CONFIG_REGULATOR_PF8X00=y +CONFIG_REGULATOR_PFUZE100=y +CONFIG_REGULATOR_PWM=y +CONFIG_REGULATOR_QCOM_RPMH=y +CONFIG_REGULATOR_QCOM_SMD_RPM=y +CONFIG_REGULATOR_QCOM_SPMI=y +CONFIG_REGULATOR_RAA215300=y +CONFIG_REGULATOR_RK808=y +CONFIG_REGULATOR_S2MPS11=y +CONFIG_REGULATOR_TPS65132=m +CONFIG_REGULATOR_TPS65219=y +CONFIG_REGULATOR_VCTRL=m +CONFIG_RC_CORE=m CONFIG_RC_DECODERS=y -CONFIG_IR_IMON_DECODER=m -CONFIG_IR_JVC_DECODER=m -CONFIG_IR_MCE_KBD_DECODER=m -CONFIG_IR_NEC_DECODER=m -CONFIG_IR_RC5_DECODER=m -CONFIG_IR_RC6_DECODER=m -CONFIG_IR_SANYO_DECODER=m -CONFIG_IR_SHARP_DECODER=m -CONFIG_IR_SONY_DECODER=m -CONFIG_IR_XMP_DECODER=m CONFIG_RC_DEVICES=y CONFIG_IR_GPIO_CIR=m -CONFIG_IR_GPIO_TX=m -CONFIG_IR_IGUANA=m -CONFIG_IR_IMON=m -CONFIG_IR_MCEUSB=m -CONFIG_IR_PWM_TX=m -CONFIG_IR_REDRAT3=m -CONFIG_IR_STREAMZAP=m -CONFIG_IR_TOY=m -CONFIG_IR_TTUSBIR=m -CONFIG_RC_ATI_REMOTE=m -CONFIG_RC_LOOPBACK=m -CONFIG_MEDIA_CEC_RC=y +CONFIG_IR_MESON=m +CONFIG_IR_SUNXI=m CONFIG_MEDIA_SUPPORT=m +CONFIG_MEDIA_CAMERA_SUPPORT=y +CONFIG_MEDIA_ANALOG_TV_SUPPORT=y +CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y +CONFIG_MEDIA_SDR_SUPPORT=y +CONFIG_MEDIA_PLATFORM_SUPPORT=y +# CONFIG_DVB_NET is not set CONFIG_MEDIA_USB_SUPPORT=y -CONFIG_USB_GSPCA=m -CONFIG_USB_GSPCA_BENQ=m -CONFIG_USB_GSPCA_CONEX=m -CONFIG_USB_GSPCA_CPIA1=m -CONFIG_USB_GSPCA_DTCS033=m -CONFIG_USB_GSPCA_ETOMS=m -CONFIG_USB_GSPCA_FINEPIX=m -CONFIG_USB_GSPCA_JEILINJ=m -CONFIG_USB_GSPCA_JL2005BCD=m -CONFIG_USB_GSPCA_KINECT=m -CONFIG_USB_GSPCA_KONICA=m -CONFIG_USB_GSPCA_MARS=m -CONFIG_USB_GSPCA_MR97310A=m -CONFIG_USB_GSPCA_NW80X=m -CONFIG_USB_GSPCA_OV519=m -CONFIG_USB_GSPCA_OV534=m -CONFIG_USB_GSPCA_OV534_9=m -CONFIG_USB_GSPCA_PAC207=m -CONFIG_USB_GSPCA_PAC7302=m -CONFIG_USB_GSPCA_PAC7311=m -CONFIG_USB_GSPCA_SE401=m -CONFIG_USB_GSPCA_SN9C2028=m -CONFIG_USB_GSPCA_SN9C20X=m -CONFIG_USB_GSPCA_SONIXB=m -CONFIG_USB_GSPCA_SONIXJ=m -CONFIG_USB_GSPCA_SPCA1528=m -CONFIG_USB_GSPCA_SPCA500=m -CONFIG_USB_GSPCA_SPCA501=m -CONFIG_USB_GSPCA_SPCA505=m -CONFIG_USB_GSPCA_SPCA506=m -CONFIG_USB_GSPCA_SPCA508=m -CONFIG_USB_GSPCA_SPCA561=m -CONFIG_USB_GSPCA_SQ905=m -CONFIG_USB_GSPCA_SQ905C=m -CONFIG_USB_GSPCA_SQ930X=m -CONFIG_USB_GSPCA_STK014=m -CONFIG_USB_GSPCA_STK1135=m -CONFIG_USB_GSPCA_STV0680=m -CONFIG_USB_GSPCA_SUNPLUS=m -CONFIG_USB_GSPCA_T613=m -CONFIG_USB_GSPCA_TOPRO=m -CONFIG_USB_GSPCA_TOUPTEK=m -CONFIG_USB_GSPCA_TV8532=m -CONFIG_USB_GSPCA_VC032X=m -CONFIG_USB_GSPCA_VICAM=m -CONFIG_USB_GSPCA_XIRLINK_CIT=m -CONFIG_USB_GSPCA_ZC3XX=m -CONFIG_USB_GL860=m -CONFIG_USB_M5602=m -CONFIG_USB_STV06XX=m -CONFIG_USB_PWC=m -CONFIG_USB_S2255=m -CONFIG_VIDEO_USBTV=m CONFIG_USB_VIDEO_CLASS=m -CONFIG_VIDEO_GO7007=m -CONFIG_VIDEO_GO7007_USB=m -CONFIG_VIDEO_GO7007_USB_S2250_BOARD=m -CONFIG_VIDEO_HDPVR=m -CONFIG_VIDEO_PVRUSB2=m -CONFIG_VIDEO_STK1160=m -CONFIG_VIDEO_AU0828=m -CONFIG_VIDEO_AU0828_RC=y -CONFIG_VIDEO_CX231XX=m -CONFIG_VIDEO_CX231XX_ALSA=m -CONFIG_VIDEO_CX231XX_DVB=m -CONFIG_DVB_AS102=m -CONFIG_DVB_B2C2_FLEXCOP_USB=m -CONFIG_DVB_USB_V2=m -CONFIG_DVB_USB_AF9015=m -CONFIG_DVB_USB_AF9035=m -CONFIG_DVB_USB_ANYSEE=m -CONFIG_DVB_USB_AU6610=m -CONFIG_DVB_USB_AZ6007=m -CONFIG_DVB_USB_CE6230=m -CONFIG_DVB_USB_DVBSKY=m -CONFIG_DVB_USB_EC168=m -CONFIG_DVB_USB_GL861=m -CONFIG_DVB_USB_LME2510=m -CONFIG_DVB_USB_MXL111SF=m -CONFIG_DVB_USB_RTL28XXU=m -CONFIG_DVB_USB=m -CONFIG_DVB_USB_A800=m -CONFIG_DVB_USB_AF9005=m -CONFIG_DVB_USB_AF9005_REMOTE=m -CONFIG_DVB_USB_AZ6027=m -CONFIG_DVB_USB_CINERGY_T2=m -CONFIG_DVB_USB_CXUSB=m -CONFIG_DVB_USB_DIB0700=m -CONFIG_DVB_USB_DIBUSB_MB=m -CONFIG_DVB_USB_DIBUSB_MB_FAULTY=y -CONFIG_DVB_USB_DIBUSB_MC=m -CONFIG_DVB_USB_DIGITV=m -CONFIG_DVB_USB_DTT200U=m -CONFIG_DVB_USB_DTV5100=m -CONFIG_DVB_USB_DW2102=m -CONFIG_DVB_USB_GP8PSK=m -CONFIG_DVB_USB_M920X=m -CONFIG_DVB_USB_NOVA_T_USB2=m -CONFIG_DVB_USB_OPERA1=m -CONFIG_DVB_USB_PCTV452E=m -CONFIG_DVB_USB_TECHNISAT_USB2=m -CONFIG_DVB_USB_TTUSB2=m -CONFIG_DVB_USB_UMT_010=m -CONFIG_DVB_USB_VP702X=m -CONFIG_DVB_USB_VP7045=m -CONFIG_SMS_USB_DRV=m -CONFIG_VIDEO_EM28XX=m -CONFIG_VIDEO_EM28XX_V4L2=m -CONFIG_VIDEO_EM28XX_ALSA=m -CONFIG_VIDEO_EM28XX_DVB=m -CONFIG_RADIO_SAA7706H=m -CONFIG_RADIO_SHARK=m -CONFIG_RADIO_SHARK2=m -CONFIG_RADIO_SI4713=m -CONFIG_RADIO_TEA5764=m -CONFIG_RADIO_TEF6862=m -CONFIG_RADIO_WL1273=m -CONFIG_USB_DSBR=m -CONFIG_USB_KEENE=m -CONFIG_USB_MA901=m -CONFIG_USB_MR800=m -CONFIG_RADIO_SI470X=m -CONFIG_USB_SI470X=m -CONFIG_I2C_SI470X=m -CONFIG_I2C_SI4713=m -CONFIG_RADIO_WL128X=m CONFIG_V4L_PLATFORM_DRIVERS=y -CONFIG_VIDEO_MUX=m -CONFIG_VIDEO_BCM2835_UNICAM=m -CONFIG_VIDEO_RASPBERRYPI_PISP_BE=m -CONFIG_VIDEO_RP1_CFE=m -CONFIG_V4L_TEST_DRIVERS=y -CONFIG_VIDEO_VIM2M=m -CONFIG_VIDEO_VICODEC=m -CONFIG_VIDEO_VIMC=m -CONFIG_VIDEO_VIVID=m -CONFIG_VIDEO_ARDUCAM_64MP=m -CONFIG_VIDEO_ARDUCAM_PIVARIETY=m +CONFIG_SDR_PLATFORM_DRIVERS=y +CONFIG_V4L_MEM2MEM_DRIVERS=y +CONFIG_VIDEO_MEDIATEK_JPEG=m +CONFIG_VIDEO_MEDIATEK_VCODEC=m +CONFIG_VIDEO_IMX7_CSI=m +CONFIG_VIDEO_IMX_MIPI_CSIS=m +CONFIG_VIDEO_IMX8_ISI=m +CONFIG_VIDEO_IMX8_ISI_M2M=y +CONFIG_VIDEO_QCOM_CAMSS=m +CONFIG_VIDEO_QCOM_VENUS=m +CONFIG_VIDEO_RCAR_ISP=m +CONFIG_VIDEO_RCAR_CSI2=m +CONFIG_VIDEO_RCAR_VIN=m +CONFIG_VIDEO_RZG2L_CSI2=m +CONFIG_VIDEO_RZG2L_CRU=m +CONFIG_VIDEO_RENESAS_FCP=m +CONFIG_VIDEO_RENESAS_FDP1=m +CONFIG_VIDEO_RENESAS_VSP1=m +CONFIG_VIDEO_RCAR_DRIF=m +CONFIG_VIDEO_SAMSUNG_EXYNOS_GSC=m +CONFIG_VIDEO_SAMSUNG_S5P_JPEG=m +CONFIG_VIDEO_SAMSUNG_S5P_MFC=m +CONFIG_VIDEO_SUN6I_CSI=m +CONFIG_VIDEO_HANTRO=m CONFIG_VIDEO_IMX219=m -CONFIG_VIDEO_IMX258=m -CONFIG_VIDEO_IMX290=m -CONFIG_VIDEO_IMX296=m -CONFIG_VIDEO_IMX477=m -CONFIG_VIDEO_IMX519=m -CONFIG_VIDEO_IMX708=m -CONFIG_VIDEO_MT9V011=m -CONFIG_VIDEO_OV2311=m -CONFIG_VIDEO_OV5647=m -CONFIG_VIDEO_OV64A40=m -CONFIG_VIDEO_OV7251=m -CONFIG_VIDEO_OV7640=m -CONFIG_VIDEO_OV9282=m -CONFIG_VIDEO_AD5398=m -CONFIG_VIDEO_AK7375=m -CONFIG_VIDEO_BU64754=m -CONFIG_VIDEO_DW9807_VCM=m -CONFIG_VIDEO_SONY_BTF_MPX=m -CONFIG_VIDEO_UDA1342=m -CONFIG_VIDEO_ADV7180=m -CONFIG_VIDEO_TC358743=m -CONFIG_VIDEO_TVP5150=m -CONFIG_VIDEO_TW2804=m -CONFIG_VIDEO_TW9903=m -CONFIG_VIDEO_TW9906=m -CONFIG_VIDEO_IRS1125=m -CONFIG_VIDEO_I2C=m -CONFIG_AUXDISPLAY=y -CONFIG_HD44780=m +CONFIG_VIDEO_IMX412=m +CONFIG_VIDEO_OV5640=m +CONFIG_VIDEO_OV5645=m CONFIG_DRM=m -CONFIG_DRM_LOAD_EDID_FIRMWARE=y -CONFIG_DRM_UDL=m +CONFIG_DRM_I2C_NXP_TDA998X=m +CONFIG_DRM_HDLCD=m +CONFIG_DRM_MALI_DISPLAY=m +CONFIG_DRM_KOMEDA=m +CONFIG_DRM_NOUVEAU=m +CONFIG_DRM_EXYNOS=m +CONFIG_DRM_EXYNOS5433_DECON=y +CONFIG_DRM_EXYNOS7_DECON=y +CONFIG_DRM_EXYNOS_DSI=y +# CONFIG_DRM_EXYNOS_DP is not set +CONFIG_DRM_EXYNOS_HDMI=y +CONFIG_DRM_EXYNOS_MIC=y +CONFIG_DRM_ROCKCHIP=m +CONFIG_ROCKCHIP_VOP2=y +CONFIG_ROCKCHIP_ANALOGIX_DP=y +CONFIG_ROCKCHIP_CDN_DP=y +CONFIG_ROCKCHIP_DW_HDMI=y +CONFIG_ROCKCHIP_DW_MIPI_DSI=y +CONFIG_ROCKCHIP_INNO_HDMI=y +CONFIG_ROCKCHIP_LVDS=y +CONFIG_DRM_RCAR_DU=m +CONFIG_DRM_RCAR_DW_HDMI=m +CONFIG_DRM_RZG2L_MIPI_DSI=m +CONFIG_DRM_SUN4I=m +CONFIG_DRM_MSM=m +CONFIG_DRM_TEGRA=m +CONFIG_DRM_PANEL_BOE_TV101WUM_NL6=m +CONFIG_DRM_PANEL_LVDS=m CONFIG_DRM_PANEL_SIMPLE=m -CONFIG_DRM_PANEL_ILITEK_ILI9806E=m -CONFIG_DRM_PANEL_ILITEK_ILI9881C=m -CONFIG_DRM_PANEL_JDI_LT070ME05000=m -CONFIG_DRM_PANEL_RASPBERRYPI_TOUCHSCREEN=m -CONFIG_DRM_PANEL_SITRONIX_ST7701=m -CONFIG_DRM_PANEL_TPO_Y17P=m -CONFIG_DRM_PANEL_WAVESHARE_TOUCHSCREEN=m -CONFIG_DRM_DISPLAY_CONNECTOR=m +CONFIG_DRM_PANEL_EDP=m +CONFIG_DRM_PANEL_MANTIX_MLAF057WE51=m +CONFIG_DRM_PANEL_RAYDIUM_RM67191=m +CONFIG_DRM_PANEL_SITRONIX_ST7703=m +CONFIG_DRM_PANEL_TRULY_NT35597_WQXGA=m +CONFIG_DRM_PANEL_VISIONOX_VTDR6130=m +CONFIG_DRM_LONTIUM_LT8912B=m +CONFIG_DRM_LONTIUM_LT9611=m +CONFIG_DRM_LONTIUM_LT9611UXC=m +CONFIG_DRM_ITE_IT66121=m +CONFIG_DRM_NWL_MIPI_DSI=m +CONFIG_DRM_PARADE_PS8640=m +CONFIG_DRM_SII902X=m CONFIG_DRM_SIMPLE_BRIDGE=m -CONFIG_DRM_TOSHIBA_TC358762=m +CONFIG_DRM_THINE_THC63LVD1024=m +CONFIG_DRM_TOSHIBA_TC358768=m +CONFIG_DRM_TI_TFP410=m +CONFIG_DRM_TI_SN65DSI83=m +CONFIG_DRM_TI_SN65DSI86=m +CONFIG_DRM_ANALOGIX_ANX7625=m +CONFIG_DRM_I2C_ADV7511=m +CONFIG_DRM_I2C_ADV7511_AUDIO=y +CONFIG_DRM_CDNS_MHDP8546=m +CONFIG_DRM_DW_HDMI_AHB_AUDIO=m +CONFIG_DRM_DW_HDMI_CEC=m +CONFIG_DRM_IMX_DCSS=m CONFIG_DRM_V3D=m CONFIG_DRM_VC4=m -CONFIG_DRM_VC4_HDMI_CEC=y -CONFIG_DRM_RP1_DSI=m -CONFIG_DRM_RP1_DPI=m -CONFIG_DRM_RP1_VEC=m -CONFIG_DRM_PANEL_MIPI_DBI=m -CONFIG_TINYDRM_HX8357D=m -CONFIG_TINYDRM_ILI9225=m -CONFIG_TINYDRM_ILI9341=m -CONFIG_TINYDRM_ILI9486=m -CONFIG_TINYDRM_MI0283QT=m -CONFIG_TINYDRM_REPAPER=m -CONFIG_TINYDRM_ST7586=m -CONFIG_TINYDRM_ST7735R=m -CONFIG_DRM_GUD=m +CONFIG_DRM_ETNAVIV=m +CONFIG_DRM_HISI_HIBMC=m +CONFIG_DRM_HISI_KIRIN=m +CONFIG_DRM_MEDIATEK=m +CONFIG_DRM_MEDIATEK_HDMI=m +CONFIG_DRM_MXSFB=m +CONFIG_DRM_IMX_LCDIF=m +CONFIG_DRM_MESON=m +CONFIG_DRM_PL111=m +CONFIG_DRM_LIMA=m +CONFIG_DRM_PANFROST=m +CONFIG_DRM_TIDSS=m CONFIG_FB=y -CONFIG_FB_BCM2708=y -CONFIG_FB_SIMPLE=y -CONFIG_FB_SSD1307=m -CONFIG_FB_RPISENSE=m +CONFIG_FB_EFI=y +CONFIG_FB_MODE_HELPERS=y CONFIG_BACKLIGHT_PWM=m -CONFIG_BACKLIGHT_RPI=m -CONFIG_BACKLIGHT_LM3630A=m -CONFIG_BACKLIGHT_GPIO=m -CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y +CONFIG_BACKLIGHT_LP855X=m CONFIG_LOGO=y # CONFIG_LOGO_LINUX_MONO is not set # CONFIG_LOGO_LINUX_VGA16 is not set CONFIG_SOUND=y -CONFIG_SND=m -CONFIG_SND_OSSEMUL=y -CONFIG_SND_PCM_OSS=m -CONFIG_SND_HRTIMER=m -CONFIG_SND_DYNAMIC_MINORS=y -CONFIG_SND_SEQUENCER=m -CONFIG_SND_SEQ_DUMMY=m -CONFIG_SND_DUMMY=m +CONFIG_SND=y CONFIG_SND_ALOOP=m -CONFIG_SND_VIRMIDI=m -CONFIG_SND_MTPAV=m -CONFIG_SND_SERIAL_U16550=m -CONFIG_SND_MPU401=m -CONFIG_SND_USB_AUDIO=m -CONFIG_SND_USB_UA101=m -CONFIG_SND_USB_CAIAQ=m -CONFIG_SND_USB_CAIAQ_INPUT=y -CONFIG_SND_USB_6FIRE=m -CONFIG_SND_USB_HIFACE=m -CONFIG_SND_USB_TONEPORT=m -CONFIG_SND_SOC=m +CONFIG_SND_HDA_TEGRA=m +CONFIG_SND_HDA_CODEC_HDMI=m +CONFIG_SND_SOC=y CONFIG_SND_BCM2835_SOC_I2S=m -CONFIG_SND_BCM2708_SOC_CHIPDIP_DAC=m -CONFIG_SND_BCM2708_SOC_GOOGLEVOICEHAT_SOUNDCARD=m -CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC=m -CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUS=m -CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUSHD=m -CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUSADC=m -CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUSADCPRO=m -CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUSDSP=m -CONFIG_SND_BCM2708_SOC_HIFIBERRY_DIGI=m -CONFIG_SND_BCM2708_SOC_HIFIBERRY_AMP=m -CONFIG_SND_BCM2708_SOC_PIFI_40=m -CONFIG_SND_BCM2708_SOC_RPI_CIRRUS=m -CONFIG_SND_BCM2708_SOC_RPI_DAC=m -CONFIG_SND_BCM2708_SOC_RPI_PROTO=m -CONFIG_SND_BCM2708_SOC_JUSTBOOM_BOTH=m -CONFIG_SND_BCM2708_SOC_JUSTBOOM_DAC=m -CONFIG_SND_BCM2708_SOC_JUSTBOOM_DIGI=m -CONFIG_SND_BCM2708_SOC_IQAUDIO_CODEC=m -CONFIG_SND_BCM2708_SOC_IQAUDIO_DAC=m -CONFIG_SND_BCM2708_SOC_IQAUDIO_DIGI=m -CONFIG_SND_BCM2708_SOC_I_SABRE_Q2M=m -CONFIG_SND_BCM2708_SOC_ADAU1977_ADC=m -CONFIG_SND_AUDIOINJECTOR_PI_SOUNDCARD=m -CONFIG_SND_AUDIOINJECTOR_OCTO_SOUNDCARD=m -CONFIG_SND_AUDIOINJECTOR_ISOLATED_SOUNDCARD=m -CONFIG_SND_AUDIOSENSE_PI=m -CONFIG_SND_DIGIDAC1_SOUNDCARD=m -CONFIG_SND_BCM2708_SOC_DIONAUDIO_LOCO=m -CONFIG_SND_BCM2708_SOC_DIONAUDIO_LOCO_V2=m -CONFIG_SND_BCM2708_SOC_ALLO_PIANO_DAC=m -CONFIG_SND_BCM2708_SOC_ALLO_PIANO_DAC_PLUS=m -CONFIG_SND_BCM2708_SOC_ALLO_BOSS_DAC=m -CONFIG_SND_BCM2708_SOC_ALLO_BOSS2_DAC=m -CONFIG_SND_BCM2708_SOC_ALLO_DIGIONE=m -CONFIG_SND_BCM2708_SOC_ALLO_KATANA_DAC=m -CONFIG_SND_BCM2708_SOC_FE_PI_AUDIO=m -CONFIG_SND_PISOUND=m -CONFIG_SND_DACBERRY400=m -CONFIG_SND_DESIGNWARE_I2S=m -CONFIG_SND_DESIGNWARE_PCM=y -CONFIG_SND_SOC_AD193X_SPI=m -CONFIG_SND_SOC_AD193X_I2C=m -CONFIG_SND_SOC_ADAU1701=m -CONFIG_SND_SOC_ADAU7002=m -CONFIG_SND_SOC_AK4554=m -CONFIG_SND_SOC_CS4265=m -CONFIG_SND_SOC_ICS43432=m -CONFIG_SND_SOC_MA120X0P=m -CONFIG_SND_SOC_MAX98357A=m -CONFIG_SND_SOC_SPDIF=m -CONFIG_SND_SOC_TLV320AIC23_I2C=m -CONFIG_SND_SOC_WM8804_I2C=m +CONFIG_SND_SOC_FSL_ASRC=m +CONFIG_SND_SOC_FSL_MICFIL=m +CONFIG_SND_SOC_FSL_EASRC=m +CONFIG_SND_IMX_SOC=m +CONFIG_SND_SOC_IMX_SGTL5000=m +CONFIG_SND_SOC_IMX_SPDIF=m +CONFIG_SND_SOC_FSL_ASOC_CARD=m +CONFIG_SND_SOC_IMX_AUDMIX=m +CONFIG_SND_SOC_MT8183=m +CONFIG_SND_SOC_MT8183_MT6358_TS3A227E_MAX98357A=m +CONFIG_SND_SOC_MT8183_DA7219_MAX98357A=m +CONFIG_SND_SOC_MT8192=m +CONFIG_SND_SOC_MT8192_MT6359_RT1015_RT5682=m +CONFIG_SND_MESON_AXG_SOUND_CARD=m +CONFIG_SND_MESON_GX_SOUND_CARD=m +CONFIG_SND_SOC_QCOM=m +CONFIG_SND_SOC_APQ8016_SBC=m +CONFIG_SND_SOC_MSM8996=m +CONFIG_SND_SOC_SDM845=m +CONFIG_SND_SOC_SM8250=m +CONFIG_SND_SOC_SC7180=m +CONFIG_SND_SOC_SC7280=m +CONFIG_SND_SOC_ROCKCHIP=m +CONFIG_SND_SOC_ROCKCHIP_I2S_TDM=m +CONFIG_SND_SOC_ROCKCHIP_SPDIF=m +CONFIG_SND_SOC_ROCKCHIP_RT5645=m +CONFIG_SND_SOC_RK3399_GRU_SOUND=m +CONFIG_SND_SOC_SAMSUNG=y +CONFIG_SND_SOC_RCAR=m +CONFIG_SND_SOC_RZ=m +CONFIG_SND_SUN8I_CODEC=m +CONFIG_SND_SUN8I_CODEC_ANALOG=m +CONFIG_SND_SUN50I_CODEC_ANALOG=m +CONFIG_SND_SUN4I_I2S=m +CONFIG_SND_SUN4I_SPDIF=m +CONFIG_SND_SOC_TEGRA=m +CONFIG_SND_SOC_TEGRA210_AHUB=m +CONFIG_SND_SOC_TEGRA210_DMIC=m +CONFIG_SND_SOC_TEGRA210_I2S=m +CONFIG_SND_SOC_TEGRA210_OPE=m +CONFIG_SND_SOC_TEGRA186_ASRC=m +CONFIG_SND_SOC_TEGRA186_DSPK=m +CONFIG_SND_SOC_TEGRA210_ADMAIF=m +CONFIG_SND_SOC_TEGRA210_MVC=m +CONFIG_SND_SOC_TEGRA210_SFC=m +CONFIG_SND_SOC_TEGRA210_AMX=m +CONFIG_SND_SOC_TEGRA210_ADX=m +CONFIG_SND_SOC_TEGRA210_MIXER=m +CONFIG_SND_SOC_TEGRA_AUDIO_GRAPH_CARD=m +CONFIG_SND_SOC_J721E_EVM=m +CONFIG_SND_SOC_AK4613=m +CONFIG_SND_SOC_DA7213=m +CONFIG_SND_SOC_ES7134=m +CONFIG_SND_SOC_ES7241=m +CONFIG_SND_SOC_ES8316=m +CONFIG_SND_SOC_GTM601=m +CONFIG_SND_SOC_MSM8916_WCD_ANALOG=m +CONFIG_SND_SOC_MSM8916_WCD_DIGITAL=m +CONFIG_SND_SOC_RK817=m +CONFIG_SND_SOC_RT5640=m +CONFIG_SND_SOC_RT5659=m +CONFIG_SND_SOC_SIMPLE_AMPLIFIER=m +CONFIG_SND_SOC_SIMPLE_MUX=m +CONFIG_SND_SOC_TAS2552=m +CONFIG_SND_SOC_TAS571X=m +CONFIG_SND_SOC_TLV320AIC32X4_I2C=m +CONFIG_SND_SOC_TLV320AIC3X_I2C=m +CONFIG_SND_SOC_WCD9335=m +CONFIG_SND_SOC_WCD934X=m +CONFIG_SND_SOC_WM8524=m +CONFIG_SND_SOC_WM8904=m CONFIG_SND_SOC_WM8960=m +CONFIG_SND_SOC_WM8962=m +CONFIG_SND_SOC_WM8978=m +CONFIG_SND_SOC_WSA881X=m +CONFIG_SND_SOC_NAU8822=m +CONFIG_SND_SOC_LPASS_WSA_MACRO=m +CONFIG_SND_SOC_LPASS_VA_MACRO=m CONFIG_SND_SIMPLE_CARD=m -CONFIG_HID_BATTERY_STRENGTH=y -CONFIG_HIDRAW=y -CONFIG_UHID=m -CONFIG_HID_A4TECH=m -CONFIG_HID_ACRUX=m -CONFIG_HID_APPLE=m -CONFIG_HID_ASUS=m -CONFIG_HID_BELKIN=m -CONFIG_HID_BETOP_FF=m -CONFIG_HID_BIGBEN_FF=m -CONFIG_HID_CHERRY=m -CONFIG_HID_CHICONY=m -CONFIG_HID_CYPRESS=m -CONFIG_HID_DRAGONRISE=m -CONFIG_HID_EMS_FF=m -CONFIG_HID_ELECOM=m -CONFIG_HID_ELO=m -CONFIG_HID_EZKEY=m -CONFIG_HID_GEMBIRD=m -CONFIG_HID_HOLTEK=m -CONFIG_HID_KEYTOUCH=m -CONFIG_HID_KYE=m -CONFIG_HID_UCLOGIC=m -CONFIG_HID_WALTOP=m -CONFIG_HID_GYRATION=m -CONFIG_HID_TWINHAN=m -CONFIG_HID_KENSINGTON=m -CONFIG_HID_LCPOWER=m -CONFIG_HID_LOGITECH=m -CONFIG_HID_LOGITECH_DJ=m -CONFIG_LOGITECH_FF=y -CONFIG_LOGIRUMBLEPAD2_FF=y -CONFIG_LOGIG940_FF=y -CONFIG_HID_MAGICMOUSE=m -CONFIG_HID_MICROSOFT=m -CONFIG_HID_MONTEREY=m +CONFIG_SND_AUDIO_GRAPH_CARD=m +CONFIG_SND_AUDIO_GRAPH_CARD2=m CONFIG_HID_MULTITOUCH=m -CONFIG_HID_NINTENDO=m -CONFIG_NINTENDO_FF=y -CONFIG_HID_NTRIG=m -CONFIG_HID_ORTEK=m -CONFIG_HID_PANTHERLORD=m -CONFIG_HID_PETALYNX=m -CONFIG_HID_PICOLCD=m -CONFIG_HID_PLAYSTATION=m -CONFIG_PLAYSTATION_FF=y -CONFIG_HID_ROCCAT=m -CONFIG_HID_SAMSUNG=m -CONFIG_HID_SONY=m -CONFIG_SONY_FF=y -CONFIG_HID_SPEEDLINK=m -CONFIG_HID_STEAM=m -CONFIG_HID_SUNPLUS=m -CONFIG_HID_GREENASIA=m -CONFIG_HID_SMARTJOYPLUS=m -CONFIG_HID_TOPSEED=m -CONFIG_HID_THINGM=m -CONFIG_HID_THRUSTMASTER=m -CONFIG_HID_WACOM=m -CONFIG_HID_WIIMOTE=m -CONFIG_HID_XINMO=m -CONFIG_HID_ZEROPLUS=m -CONFIG_HID_ZYDACRON=m -CONFIG_HID_PID=y -CONFIG_USB_HIDDEV=y +CONFIG_I2C_HID_ACPI=m +CONFIG_I2C_HID_OF=m CONFIG_USB=y -CONFIG_USB_ANNOUNCE_NEW_DEVICES=y -CONFIG_USB_MON=m +CONFIG_USB_OTG=y CONFIG_USB_XHCI_HCD=y -CONFIG_USB_DWCOTG=y -CONFIG_USB_PRINTER=m -CONFIG_USB_TMC=m +CONFIG_USB_XHCI_PCI_RENESAS=m +CONFIG_USB_XHCI_RZV2M=y +CONFIG_USB_XHCI_TEGRA=y +CONFIG_USB_BRCMSTB=m +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_EHCI_EXYNOS=y +CONFIG_USB_EHCI_HCD_PLATFORM=y +CONFIG_USB_OHCI_HCD=y +CONFIG_USB_OHCI_EXYNOS=y +CONFIG_USB_OHCI_HCD_PLATFORM=y +CONFIG_USB_RENESAS_USBHS_HCD=m +CONFIG_USB_RENESAS_USBHS=m +CONFIG_USB_ACM=m CONFIG_USB_STORAGE=y -CONFIG_USB_STORAGE_REALTEK=m -CONFIG_USB_STORAGE_DATAFAB=m -CONFIG_USB_STORAGE_FREECOM=m -CONFIG_USB_STORAGE_ISD200=m -CONFIG_USB_STORAGE_USBAT=m -CONFIG_USB_STORAGE_SDDR09=m -CONFIG_USB_STORAGE_SDDR55=m -CONFIG_USB_STORAGE_JUMPSHOT=m -CONFIG_USB_STORAGE_ALAUDA=m -CONFIG_USB_STORAGE_ONETOUCH=m -CONFIG_USB_STORAGE_KARMA=m -CONFIG_USB_STORAGE_CYPRESS_ATACB=m -CONFIG_USB_STORAGE_ENE_UB6250=m -CONFIG_USB_UAS=y -CONFIG_USB_MDC800=m -CONFIG_USB_MICROTEK=m -CONFIG_USBIP_CORE=m -CONFIG_USBIP_VHCI_HCD=m -CONFIG_USBIP_HOST=m -CONFIG_USBIP_VUDC=m +CONFIG_USB_CDNS_SUPPORT=m +CONFIG_USB_CDNS3=m +CONFIG_USB_CDNS3_GADGET=y +CONFIG_USB_CDNS3_HOST=y +CONFIG_USB_MTU3=y +CONFIG_USB_MUSB_HDRC=y +CONFIG_USB_MUSB_SUNXI=y CONFIG_USB_DWC3=y -CONFIG_USB_DWC2=m +CONFIG_USB_DWC2=y +CONFIG_USB_CHIPIDEA=y +CONFIG_USB_CHIPIDEA_UDC=y +CONFIG_USB_CHIPIDEA_HOST=y +CONFIG_USB_ISP1760=y CONFIG_USB_SERIAL=m -CONFIG_USB_SERIAL_GENERIC=y -CONFIG_USB_SERIAL_AIRCABLE=m -CONFIG_USB_SERIAL_ARK3116=m -CONFIG_USB_SERIAL_BELKIN=m -CONFIG_USB_SERIAL_CH341=m -CONFIG_USB_SERIAL_WHITEHEAT=m -CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m CONFIG_USB_SERIAL_CP210X=m -CONFIG_USB_SERIAL_CYPRESS_M8=m -CONFIG_USB_SERIAL_EMPEG=m CONFIG_USB_SERIAL_FTDI_SIO=m -CONFIG_USB_SERIAL_VISOR=m -CONFIG_USB_SERIAL_IPAQ=m -CONFIG_USB_SERIAL_IR=m -CONFIG_USB_SERIAL_EDGEPORT=m -CONFIG_USB_SERIAL_EDGEPORT_TI=m -CONFIG_USB_SERIAL_F81232=m -CONFIG_USB_SERIAL_GARMIN=m -CONFIG_USB_SERIAL_IPW=m -CONFIG_USB_SERIAL_IUU=m -CONFIG_USB_SERIAL_KEYSPAN_PDA=m -CONFIG_USB_SERIAL_KEYSPAN=m -CONFIG_USB_SERIAL_KLSI=m -CONFIG_USB_SERIAL_KOBIL_SCT=m -CONFIG_USB_SERIAL_MCT_U232=m -CONFIG_USB_SERIAL_METRO=m -CONFIG_USB_SERIAL_MOS7720=m -CONFIG_USB_SERIAL_MOS7840=m -CONFIG_USB_SERIAL_NAVMAN=m -CONFIG_USB_SERIAL_PL2303=m -CONFIG_USB_SERIAL_OTI6858=m -CONFIG_USB_SERIAL_QCAUX=m -CONFIG_USB_SERIAL_QUALCOMM=m -CONFIG_USB_SERIAL_SPCP8X5=m -CONFIG_USB_SERIAL_SAFE=m -CONFIG_USB_SERIAL_SIERRAWIRELESS=m -CONFIG_USB_SERIAL_SYMBOL=m -CONFIG_USB_SERIAL_TI=m -CONFIG_USB_SERIAL_CYBERJACK=m CONFIG_USB_SERIAL_OPTION=m -CONFIG_USB_SERIAL_OMNINET=m -CONFIG_USB_SERIAL_OPTICON=m -CONFIG_USB_SERIAL_XSENS_MT=m -CONFIG_USB_SERIAL_WISHBONE=m -CONFIG_USB_SERIAL_SSU100=m -CONFIG_USB_SERIAL_QT2=m -CONFIG_USB_SERIAL_DEBUG=m -CONFIG_USB_EMI62=m -CONFIG_USB_EMI26=m -CONFIG_USB_ADUTUX=m -CONFIG_USB_SEVSEG=m -CONFIG_USB_LEGOTOWER=m -CONFIG_USB_LCD=m -CONFIG_USB_CYPRESS_CY7C63=m -CONFIG_USB_CYTHERM=m -CONFIG_USB_IDMOUSE=m -CONFIG_USB_APPLEDISPLAY=m -CONFIG_USB_LD=m -CONFIG_USB_TRANCEVIBRATOR=m -CONFIG_USB_IOWARRIOR=m -CONFIG_USB_TEST=m -CONFIG_USB_ISIGHTFW=m -CONFIG_USB_YUREX=m -CONFIG_USB_ATM=m -CONFIG_USB_SPEEDTOUCH=m -CONFIG_USB_CXACRU=m -CONFIG_USB_UEAGLEATM=m -CONFIG_USB_XUSBATM=m +CONFIG_USB_QCOM_EUD=m +CONFIG_USB_HSIC_USB3503=y +CONFIG_USB_ONBOARD_HUB=m CONFIG_NOP_USB_XCEIV=y CONFIG_USB_GADGET=y +CONFIG_USB_RENESAS_USBHS_UDC=m +CONFIG_USB_RZV2M_USB3DRD=y +CONFIG_USB_RENESAS_USB3=m +CONFIG_USB_TEGRA_XUDC=m CONFIG_USB_CONFIGFS=m CONFIG_USB_CONFIGFS_SERIAL=y CONFIG_USB_CONFIGFS_ACM=y @@ -1303,378 +1016,540 @@ CONFIG_USB_CONFIGFS_ECM_SUBSET=y CONFIG_USB_CONFIGFS_RNDIS=y CONFIG_USB_CONFIGFS_EEM=y CONFIG_USB_CONFIGFS_MASS_STORAGE=y -CONFIG_USB_CONFIGFS_F_LB_SS=y CONFIG_USB_CONFIGFS_F_FS=y -CONFIG_USB_CONFIGFS_F_UAC1=y -CONFIG_USB_CONFIGFS_F_UAC2=y -CONFIG_USB_CONFIGFS_F_MIDI=y -CONFIG_USB_CONFIGFS_F_HID=y -CONFIG_USB_CONFIGFS_F_UVC=y -CONFIG_USB_CONFIGFS_F_PRINTER=y -CONFIG_USB_ZERO=m -CONFIG_USB_AUDIO=m -CONFIG_USB_ETH=m -CONFIG_USB_GADGETFS=m -CONFIG_USB_MASS_STORAGE=m -CONFIG_USB_G_SERIAL=m -CONFIG_USB_MIDI_GADGET=m -CONFIG_USB_G_PRINTER=m -CONFIG_USB_CDC_COMPOSITE=m -CONFIG_USB_G_ACM_MS=m -CONFIG_USB_G_MULTI=m -CONFIG_USB_G_HID=m -CONFIG_USB_G_WEBCAM=m +CONFIG_TYPEC=m +CONFIG_TYPEC_TCPM=m +CONFIG_TYPEC_TCPCI=m +CONFIG_TYPEC_FUSB302=m +CONFIG_TYPEC_UCSI=m +CONFIG_UCSI_CCG=m +CONFIG_UCSI_PMIC_GLINK=m +CONFIG_TYPEC_TPS6598X=m +CONFIG_TYPEC_HD3SS3220=m +CONFIG_TYPEC_MUX_FSA4480=m +CONFIG_TYPEC_MUX_GPIO_SBU=m CONFIG_MMC=y CONFIG_MMC_BLOCK_MINORS=32 -CONFIG_MMC_BCM2835_MMC=y -CONFIG_MMC_BCM2835_DMA=y -CONFIG_MMC_BCM2835_SDHOST=y +CONFIG_MMC_ARMMMCI=y CONFIG_MMC_SDHCI=y +CONFIG_MMC_SDHCI_ACPI=y CONFIG_MMC_SDHCI_PLTFM=y -CONFIG_MMC_SDHCI_OF_DWCMSHC=m -CONFIG_MMC_SDHCI_IPROC=y -CONFIG_MMC_SPI=m +CONFIG_MMC_SDHCI_OF_ARASAN=y +CONFIG_MMC_SDHCI_OF_ESDHC=y +CONFIG_MMC_SDHCI_OF_DWCMSHC=y +CONFIG_MMC_SDHCI_OF_SPARX5=y +CONFIG_MMC_SDHCI_CADENCE=y +CONFIG_MMC_SDHCI_ESDHC_IMX=y +CONFIG_MMC_SDHCI_TEGRA=y +CONFIG_MMC_SDHCI_F_SDH30=y +CONFIG_MMC_MESON_GX=y +CONFIG_MMC_SDHCI_MSM=y +CONFIG_MMC_SPI=y +CONFIG_MMC_SDHI=y +CONFIG_MMC_UNIPHIER=y +CONFIG_MMC_DW=y +CONFIG_MMC_DW_EXYNOS=y +CONFIG_MMC_DW_HI3798CV200=y +CONFIG_MMC_DW_K3=y +CONFIG_MMC_DW_ROCKCHIP=y +CONFIG_MMC_SUNXI=y +CONFIG_MMC_BCM2835=y +CONFIG_MMC_MTK=y +CONFIG_MMC_SDHCI_XENON=y +CONFIG_MMC_SDHCI_AM654=y +CONFIG_MMC_OWL=y +CONFIG_SCSI_UFSHCD=y +CONFIG_SCSI_UFS_BSG=y +CONFIG_SCSI_UFSHCD_PLATFORM=y +CONFIG_SCSI_UFS_CDNS_PLATFORM=m +CONFIG_SCSI_UFS_QCOM=m +CONFIG_SCSI_UFS_HISI=y +CONFIG_SCSI_UFS_RENESAS=m +CONFIG_SCSI_UFS_TI_J721E=m +CONFIG_SCSI_UFS_EXYNOS=y +CONFIG_NEW_LEDS=y CONFIG_LEDS_CLASS=y CONFIG_LEDS_CLASS_MULTICOLOR=m +CONFIG_LEDS_LM3692X=m CONFIG_LEDS_PCA9532=m CONFIG_LEDS_GPIO=y -CONFIG_LEDS_PCA955X=m -CONFIG_LEDS_PCA963X=m CONFIG_LEDS_PWM=y -CONFIG_LEDS_IS31FL32XX=m +CONFIG_LEDS_SYSCON=y +CONFIG_LEDS_QCOM_LPG=m CONFIG_LEDS_TRIGGER_TIMER=y -CONFIG_LEDS_TRIGGER_ONESHOT=y +CONFIG_LEDS_TRIGGER_DISK=y CONFIG_LEDS_TRIGGER_HEARTBEAT=y -CONFIG_LEDS_TRIGGER_BACKLIGHT=y CONFIG_LEDS_TRIGGER_CPU=y CONFIG_LEDS_TRIGGER_DEFAULT_ON=y -CONFIG_LEDS_TRIGGER_TRANSIENT=m -CONFIG_LEDS_TRIGGER_CAMERA=m -CONFIG_LEDS_TRIGGER_INPUT=y CONFIG_LEDS_TRIGGER_PANIC=y -CONFIG_LEDS_TRIGGER_NETDEV=m -CONFIG_LEDS_TRIGGER_PATTERN=m -CONFIG_LEDS_TRIGGER_ACTPWR=y -CONFIG_ACCESSIBILITY=y -CONFIG_SPEAKUP=m -CONFIG_SPEAKUP_SYNTH_SOFT=m +CONFIG_EDAC=y +CONFIG_EDAC_GHES=y +CONFIG_EDAC_LAYERSCAPE=m CONFIG_RTC_CLASS=y -CONFIG_RTC_DRV_ABX80X=m CONFIG_RTC_DRV_DS1307=m -CONFIG_RTC_DRV_DS1374=m -CONFIG_RTC_DRV_DS1672=m -CONFIG_RTC_DRV_MAX6900=m -CONFIG_RTC_DRV_RS5C372=m +CONFIG_RTC_DRV_HYM8563=m +CONFIG_RTC_DRV_MAX77686=y +CONFIG_RTC_DRV_RK808=m CONFIG_RTC_DRV_ISL1208=m -CONFIG_RTC_DRV_ISL12022=m -CONFIG_RTC_DRV_X1205=m -CONFIG_RTC_DRV_PCF8523=m CONFIG_RTC_DRV_PCF85063=m CONFIG_RTC_DRV_PCF85363=m -CONFIG_RTC_DRV_PCF8563=m -CONFIG_RTC_DRV_PCF8583=m CONFIG_RTC_DRV_M41T80=m CONFIG_RTC_DRV_BQ32K=m -CONFIG_RTC_DRV_S35390A=m -CONFIG_RTC_DRV_FM3130=m CONFIG_RTC_DRV_RX8581=m -CONFIG_RTC_DRV_RX8025=m -CONFIG_RTC_DRV_EM3027=m CONFIG_RTC_DRV_RV3028=m -CONFIG_RTC_DRV_RV3032=m CONFIG_RTC_DRV_RV8803=m -CONFIG_RTC_DRV_SD3078=m -CONFIG_RTC_DRV_M41T93=m -CONFIG_RTC_DRV_M41T94=m -CONFIG_RTC_DRV_DS1302=m -CONFIG_RTC_DRV_DS1305=m -CONFIG_RTC_DRV_DS1390=m -CONFIG_RTC_DRV_R9701=m -CONFIG_RTC_DRV_RX4581=m -CONFIG_RTC_DRV_RS5C348=m -CONFIG_RTC_DRV_MAX6902=m -CONFIG_RTC_DRV_PCF2123=m -CONFIG_RTC_DRV_DS3232=m +CONFIG_RTC_DRV_S5M=y +CONFIG_RTC_DRV_DS3232=y CONFIG_RTC_DRV_PCF2127=m -CONFIG_RTC_DRV_RV3029C2=m +CONFIG_RTC_DRV_EFI=y +CONFIG_RTC_DRV_CROS_EC=y +CONFIG_RTC_DRV_FSL_FTM_ALARM=m +CONFIG_RTC_DRV_S3C=y +CONFIG_RTC_DRV_PL031=y +CONFIG_RTC_DRV_SUN6I=y +CONFIG_RTC_DRV_ARMADA38X=y +CONFIG_RTC_DRV_PM8XXX=m +CONFIG_RTC_DRV_TEGRA=y +CONFIG_RTC_DRV_SNVS=m +CONFIG_RTC_DRV_BBNSM=m +CONFIG_RTC_DRV_IMX_SC=m +CONFIG_RTC_DRV_MT6397=m +CONFIG_RTC_DRV_XGENE=y +CONFIG_RTC_DRV_TI_K3=m CONFIG_DMADEVICES=y CONFIG_DMA_BCM2835=y -CONFIG_DW_AXI_DMAC=y -CONFIG_DMA_BCM2708=y -CONFIG_DMABUF_HEAPS=y -CONFIG_DMABUF_HEAPS_SYSTEM=y -CONFIG_DMABUF_HEAPS_CMA=y -CONFIG_UIO=m -CONFIG_UIO_PDRV_GENIRQ=m -CONFIG_VHOST_NET=m -CONFIG_VHOST_VSOCK=m -CONFIG_VHOST_CROSS_ENDIAN_LEGACY=y +CONFIG_DMA_SUN6I=m +CONFIG_FSL_EDMA=y +CONFIG_IMX_SDMA=m +CONFIG_K3_DMA=y +CONFIG_MV_XOR=y +CONFIG_MV_XOR_V2=y +CONFIG_OWL_DMA=y +CONFIG_PL330_DMA=y +CONFIG_TEGRA186_GPC_DMA=y +CONFIG_TEGRA20_APB_DMA=y +CONFIG_TEGRA210_ADMA=m +CONFIG_QCOM_BAM_DMA=y +CONFIG_QCOM_GPI_DMA=m +CONFIG_QCOM_HIDMA_MGMT=y +CONFIG_QCOM_HIDMA=y +CONFIG_RCAR_DMAC=y +CONFIG_RENESAS_USB_DMAC=m +CONFIG_RZ_DMAC=y +CONFIG_TI_K3_UDMA=y +CONFIG_TI_K3_UDMA_GLUE_LAYER=y +CONFIG_VFIO=y +CONFIG_VFIO_PCI=y +CONFIG_VIRTIO_PCI=y +CONFIG_VIRTIO_BALLOON=y +CONFIG_VIRTIO_MMIO=y +CONFIG_XEN_GNTDEV=y +CONFIG_XEN_GRANT_DEV_ALLOC=y CONFIG_STAGING=y -CONFIG_PRISM2_USB=m -CONFIG_R8712U=m -CONFIG_VT6656=m CONFIG_STAGING_MEDIA=y -CONFIG_VIDEO_RPIVID=m -CONFIG_STAGING_MEDIA_DEPRECATED=y -CONFIG_FB_TFT=m -CONFIG_FB_TFT_AGM1264K_FL=m -CONFIG_FB_TFT_BD663474=m -CONFIG_FB_TFT_HX8340BN=m -CONFIG_FB_TFT_HX8347D=m -CONFIG_FB_TFT_HX8353D=m -CONFIG_FB_TFT_HX8357D=m -CONFIG_FB_TFT_ILI9163=m -CONFIG_FB_TFT_ILI9320=m -CONFIG_FB_TFT_ILI9325=m -CONFIG_FB_TFT_ILI9340=m -CONFIG_FB_TFT_ILI9341=m -CONFIG_FB_TFT_ILI9481=m -CONFIG_FB_TFT_ILI9486=m -CONFIG_FB_TFT_PCD8544=m -CONFIG_FB_TFT_RA8875=m -CONFIG_FB_TFT_S6D02A1=m -CONFIG_FB_TFT_S6D1121=m -CONFIG_FB_TFT_SH1106=m -CONFIG_FB_TFT_SSD1289=m -CONFIG_FB_TFT_SSD1306=m -CONFIG_FB_TFT_SSD1331=m -CONFIG_FB_TFT_SSD1351=m -CONFIG_FB_TFT_ST7735R=m -CONFIG_FB_TFT_ST7789V=m -CONFIG_FB_TFT_TINYLCD=m -CONFIG_FB_TFT_TLS8204=m -CONFIG_FB_TFT_UC1611=m -CONFIG_FB_TFT_UC1701=m -CONFIG_FB_TFT_UPD161704=m -CONFIG_BCM2835_VCHIQ=y -CONFIG_SND_BCM2835=m -CONFIG_VIDEO_BCM2835=m -CONFIG_VIDEO_CODEC_BCM2835=m -CONFIG_VIDEO_ISP_BCM2835=m -CONFIG_COMMON_CLK_RP1=y -CONFIG_COMMON_CLK_RP1_SDIO=y -CONFIG_CLK_RASPBERRYPI=y -CONFIG_MAILBOX=y +CONFIG_VIDEO_MAX96712=m +CONFIG_CHROME_PLATFORMS=y +CONFIG_CROS_EC=y +CONFIG_CROS_EC_I2C=y +CONFIG_CROS_EC_RPMSG=m +CONFIG_CROS_EC_SPI=y +CONFIG_CROS_EC_CHARDEV=m +CONFIG_COMMON_CLK_RK808=y +CONFIG_COMMON_CLK_SCPI=y +CONFIG_COMMON_CLK_CS2000_CP=y +CONFIG_COMMON_CLK_FSL_SAI=y +CONFIG_COMMON_CLK_S2MPS11=y +CONFIG_COMMON_CLK_PWM=y +CONFIG_COMMON_CLK_RS9_PCIE=y +CONFIG_COMMON_CLK_VC5=y +CONFIG_COMMON_CLK_BD718XX=m +CONFIG_CLK_RASPBERRYPI=m +CONFIG_CLK_IMX8MM=y +CONFIG_CLK_IMX8MN=y +CONFIG_CLK_IMX8MP=y +CONFIG_CLK_IMX8MQ=y +CONFIG_CLK_IMX8QXP=y +CONFIG_CLK_IMX8ULP=y +CONFIG_CLK_IMX93=y +CONFIG_TI_SCI_CLK=y +CONFIG_COMMON_CLK_QCOM=y +CONFIG_QCOM_A53PLL=y +CONFIG_QCOM_CLK_APCS_MSM8916=y +CONFIG_QCOM_CLK_APCC_MSM8996=y +CONFIG_QCOM_CLK_SMD_RPM=y +CONFIG_QCOM_CLK_RPMH=y +CONFIG_IPQ_APSS_6018=y +CONFIG_IPQ_GCC_5018=y +CONFIG_IPQ_GCC_5332=y +CONFIG_IPQ_GCC_6018=y +CONFIG_IPQ_GCC_8074=y +CONFIG_IPQ_GCC_9574=y +CONFIG_MSM_GCC_8916=y +CONFIG_MSM_MMCC_8994=m +CONFIG_MSM_GCC_8994=y +CONFIG_MSM_GCC_8996=y +CONFIG_MSM_MMCC_8996=m +CONFIG_MSM_GCC_8998=y +CONFIG_MSM_MMCC_8998=m +CONFIG_QCM_GCC_2290=y +CONFIG_QCM_DISPCC_2290=m +CONFIG_QCS_GCC_404=y +CONFIG_SC_DISPCC_8280XP=m +CONFIG_SA_GCC_8775P=y +CONFIG_SA_GPUCC_8775P=m +CONFIG_SC_GCC_7180=y +CONFIG_SC_GCC_7280=y +CONFIG_SC_GCC_8180X=y +CONFIG_SC_GCC_8280XP=y +CONFIG_SC_GPUCC_8280XP=m +CONFIG_SC_LPASSCC_8280XP=m +CONFIG_SDM_CAMCC_845=m +CONFIG_SDM_GPUCC_845=y +CONFIG_SDM_VIDEOCC_845=y +CONFIG_SDM_DISPCC_845=y +CONFIG_SDM_LPASSCC_845=m +CONFIG_SM_CAMCC_8250=m +CONFIG_SM_DISPCC_6115=m +CONFIG_SM_DISPCC_8250=y +CONFIG_SM_DISPCC_8450=m +CONFIG_SM_DISPCC_8550=m +CONFIG_SM_GCC_6115=y +CONFIG_SM_GCC_8350=y +CONFIG_SM_GCC_8450=y +CONFIG_SM_GCC_8550=y +CONFIG_SM_GPUCC_6115=m +CONFIG_SM_GPUCC_8150=y +CONFIG_SM_GPUCC_8250=y +CONFIG_SM_TCSRCC_8550=y +CONFIG_SM_VIDEOCC_8250=y +CONFIG_QCOM_HFPLL=y +CONFIG_CLK_GFM_LPASS_SM8250=m +CONFIG_CLK_RCAR_USB2_CLOCK_SEL=y +CONFIG_HWSPINLOCK=y +CONFIG_HWSPINLOCK_QCOM=y +CONFIG_TEGRA186_TIMER=y +CONFIG_RENESAS_OSTM=y +CONFIG_ARM_MHU=y +CONFIG_IMX_MBOX=y +CONFIG_PLATFORM_MHU=y CONFIG_BCM2835_MBOX=y -CONFIG_BCM2712_IOMMU=y +CONFIG_QCOM_APCS_IPC=y +CONFIG_QCOM_IPCC=y +CONFIG_ROCKCHIP_IOMMU=y +CONFIG_TEGRA_IOMMU_SMMU=y +CONFIG_ARM_SMMU=y +CONFIG_ARM_SMMU_V3=y +CONFIG_MTK_IOMMU=y +CONFIG_QCOM_IOMMU=y +CONFIG_REMOTEPROC=y +CONFIG_IMX_REMOTEPROC=y +CONFIG_MTK_SCP=m +CONFIG_QCOM_Q6V5_ADSP=m +CONFIG_QCOM_Q6V5_MSS=m +CONFIG_QCOM_Q6V5_PAS=m +CONFIG_QCOM_SYSMON=m +CONFIG_QCOM_WCNSS_PIL=m +CONFIG_TI_K3_DSP_REMOTEPROC=m +CONFIG_TI_K3_R5_REMOTEPROC=m +CONFIG_RPMSG_CHAR=m +CONFIG_RPMSG_CTRL=m +CONFIG_RPMSG_QCOM_GLINK_RPM=y +CONFIG_RPMSG_QCOM_GLINK_SMEM=m +CONFIG_RPMSG_QCOM_SMD=y +CONFIG_RPMSG_VIRTIO=y +CONFIG_SOUNDWIRE=m +CONFIG_SOUNDWIRE_QCOM=m +CONFIG_OWL_PM_DOMAINS=y CONFIG_RASPBERRYPI_POWER=y -CONFIG_IIO=m -CONFIG_IIO_BUFFER_CB=m -CONFIG_IIO_SW_TRIGGER=m -CONFIG_MCP320X=m -CONFIG_MCP3422=m +CONFIG_FSL_DPAA=y +CONFIG_FSL_MC_DPIO=y +CONFIG_FSL_RCPM=y +CONFIG_MTK_CMDQ=m +CONFIG_MTK_DEVAPC=m +CONFIG_MTK_PMIC_WRAP=y +CONFIG_MTK_SVS=m +CONFIG_QCOM_AOSS_QMP=y +CONFIG_QCOM_COMMAND_DB=y +CONFIG_QCOM_CPR=y +CONFIG_QCOM_GENI_SE=y +CONFIG_QCOM_LLCC=m +CONFIG_QCOM_OCMEM=m +CONFIG_QCOM_PMIC_GLINK=m +CONFIG_QCOM_RMTFS_MEM=m +CONFIG_QCOM_RPMH=y +CONFIG_QCOM_RPMHPD=y +CONFIG_QCOM_RPMPD=y +CONFIG_QCOM_SMEM=y +CONFIG_QCOM_SMD_RPM=y +CONFIG_QCOM_SMP2P=y +CONFIG_QCOM_SMSM=y +CONFIG_QCOM_SOCINFO=m +CONFIG_QCOM_SPM=m +CONFIG_QCOM_STATS=m +CONFIG_QCOM_WCNSS_CTRL=m +CONFIG_QCOM_APR=m +CONFIG_QCOM_ICC_BWMON=m +CONFIG_ARCH_R8A77995=y +CONFIG_ARCH_R8A77990=y +CONFIG_ARCH_R8A77951=y +CONFIG_ARCH_R8A77965=y +CONFIG_ARCH_R8A77960=y +CONFIG_ARCH_R8A77961=y +CONFIG_ARCH_R8A779F0=y +CONFIG_ARCH_R8A77980=y +CONFIG_ARCH_R8A77970=y +CONFIG_ARCH_R8A779A0=y +CONFIG_ARCH_R8A779G0=y +CONFIG_ARCH_R8A774C0=y +CONFIG_ARCH_R8A774E1=y +CONFIG_ARCH_R8A774A1=y +CONFIG_ARCH_R8A774B1=y +CONFIG_ARCH_R9A07G043=y +CONFIG_ARCH_R9A07G044=y +CONFIG_ARCH_R9A07G054=y +CONFIG_ARCH_R9A09G011=y +CONFIG_ROCKCHIP_IODOMAIN=y +CONFIG_ROCKCHIP_PM_DOMAINS=y +CONFIG_ARCH_TEGRA_132_SOC=y +CONFIG_ARCH_TEGRA_210_SOC=y +CONFIG_ARCH_TEGRA_186_SOC=y +CONFIG_ARCH_TEGRA_194_SOC=y +CONFIG_ARCH_TEGRA_234_SOC=y +CONFIG_TI_SCI_PM_DOMAINS=y +CONFIG_TI_PRUSS=m +CONFIG_ARM_IMX_BUS_DEVFREQ=y +CONFIG_ARM_IMX8M_DDRC_DEVFREQ=m +CONFIG_ARM_MEDIATEK_CCI_DEVFREQ=m +CONFIG_EXTCON_PTN5150=m +CONFIG_EXTCON_USB_GPIO=y +CONFIG_EXTCON_USBC_CROS_EC=y +CONFIG_RENESAS_RPCIF=m +CONFIG_IIO=y +CONFIG_EXYNOS_ADC=y +CONFIG_IMX93_ADC=m +CONFIG_MAX9611=m +CONFIG_MEDIATEK_MT6577_AUXADC=m +CONFIG_QCOM_SPMI_VADC=m +CONFIG_QCOM_SPMI_ADC5=m +CONFIG_ROCKCHIP_SARADC=m +CONFIG_RZG2L_ADC=m CONFIG_TI_ADS1015=m -CONFIG_BME680=m -CONFIG_CCS811=m -CONFIG_SENSIRION_SGP30=m -CONFIG_SPS30_I2C=m -CONFIG_MAX30102=m -CONFIG_DHT11=m -CONFIG_HDC100X=m -CONFIG_HTU21=m -CONFIG_SI7020=m -CONFIG_BOSCH_BNO055_I2C=m -CONFIG_INV_MPU6050_I2C=m -CONFIG_APDS9960=m -CONFIG_BH1750=m -CONFIG_TSL4531=m -CONFIG_VEML6070=m -CONFIG_IIO_HRTIMER_TRIGGER=m -CONFIG_IIO_INTERRUPT_TRIGGER=m -CONFIG_IIO_SYSFS_TRIGGER=m -CONFIG_BMP280=m -CONFIG_MS5637=m -CONFIG_MAXIM_THERMOCOUPLE=m -CONFIG_MAX31856=m +CONFIG_TI_AM335X_ADC=m +CONFIG_IIO_CROS_EC_SENSORS_CORE=m +CONFIG_IIO_CROS_EC_SENSORS=m +CONFIG_IIO_ST_LSM6DSX=m +CONFIG_IIO_CROS_EC_LIGHT_PROX=m +CONFIG_SENSORS_ISL29018=m +CONFIG_VCNL4000=m +CONFIG_IIO_ST_MAGN_3AXIS=m +CONFIG_IIO_CROS_EC_BARO=m +CONFIG_MPL3115=m CONFIG_PWM=y CONFIG_PWM_BCM2835=m -CONFIG_PWM_BRCMSTB=y -CONFIG_PWM_PCA9685=m -CONFIG_PWM_RASPBERRYPI_POE=m -CONFIG_PWM_RP1=y -CONFIG_BCM2712_MIP=y -CONFIG_RPI_AXIPERF=m -CONFIG_ANDROID_BINDER_IPC=y -CONFIG_ANDROID_BINDERFS=y +CONFIG_PWM_BRCMSTB=m +CONFIG_PWM_CROS_EC=m +CONFIG_PWM_IMX27=m +CONFIG_PWM_MESON=m +CONFIG_PWM_MTK_DISP=m +CONFIG_PWM_MEDIATEK=m +CONFIG_PWM_RCAR=m +CONFIG_PWM_RENESAS_TPU=m +CONFIG_PWM_ROCKCHIP=y +CONFIG_PWM_RZ_MTU3=m +CONFIG_PWM_SAMSUNG=y +CONFIG_PWM_SL28CPLD=m +CONFIG_PWM_SUN4I=m +CONFIG_PWM_TEGRA=m +CONFIG_PWM_TIECAP=m +CONFIG_PWM_TIEHRPWM=m +CONFIG_PWM_VISCONTI=m +CONFIG_SL28CPLD_INTC=y +CONFIG_QCOM_PDC=y +CONFIG_QCOM_MPM=y +CONFIG_RESET_IMX7=y +CONFIG_RESET_QCOM_AOSS=y +CONFIG_RESET_QCOM_PDC=m +CONFIG_RESET_RZG2L_USBPHY_CTRL=y +CONFIG_RESET_TI_SCI=y +CONFIG_PHY_XGENE=y +CONFIG_PHY_CAN_TRANSCEIVER=m +CONFIG_PHY_SUN4I_USB=y +CONFIG_PHY_CADENCE_TORRENT=m +CONFIG_PHY_CADENCE_SIERRA=m +CONFIG_PHY_MIXEL_MIPI_DPHY=m +CONFIG_PHY_FSL_IMX8M_PCIE=y +CONFIG_PHY_HI6220_USB=y +CONFIG_PHY_HISTB_COMBPHY=y +CONFIG_PHY_HISI_INNO_USB2=y +CONFIG_PHY_MVEBU_CP110_COMPHY=y +CONFIG_PHY_MTK_TPHY=y +CONFIG_PHY_QCOM_EDP=m +CONFIG_PHY_QCOM_PCIE2=m +CONFIG_PHY_QCOM_QMP=m +CONFIG_PHY_QCOM_QUSB2=m +CONFIG_PHY_QCOM_SNPS_EUSB2=m +CONFIG_PHY_QCOM_EUSB2_REPEATER=m +CONFIG_PHY_QCOM_USB_HS=m +CONFIG_PHY_QCOM_USB_SNPS_FEMTO_V2=m +CONFIG_PHY_QCOM_USB_HS_28NM=m +CONFIG_PHY_QCOM_USB_SS=m +CONFIG_PHY_QCOM_SGMII_ETH=m +CONFIG_PHY_R8A779F0_ETHERNET_SERDES=y +CONFIG_PHY_RCAR_GEN3_PCIE=y +CONFIG_PHY_RCAR_GEN3_USB2=y +CONFIG_PHY_RCAR_GEN3_USB3=m +CONFIG_PHY_ROCKCHIP_EMMC=y +CONFIG_PHY_ROCKCHIP_INNO_HDMI=m +CONFIG_PHY_ROCKCHIP_INNO_USB2=y +CONFIG_PHY_ROCKCHIP_INNO_DSIDPHY=m +CONFIG_PHY_ROCKCHIP_NANENG_COMBO_PHY=m +CONFIG_PHY_ROCKCHIP_PCIE=m +CONFIG_PHY_ROCKCHIP_SNPS_PCIE3=y +CONFIG_PHY_ROCKCHIP_TYPEC=y +CONFIG_PHY_SAMSUNG_UFS=y +CONFIG_PHY_UNIPHIER_USB2=y +CONFIG_PHY_UNIPHIER_USB3=y +CONFIG_PHY_TEGRA_XUSB=y +CONFIG_PHY_AM654_SERDES=m +CONFIG_PHY_J721E_WIZ=m +CONFIG_ARM_CCI_PMU=m +CONFIG_ARM_CCN=m +CONFIG_ARM_CMN=m +CONFIG_ARM_SMMU_V3_PMU=m +CONFIG_ARM_DSU_PMU=m +CONFIG_FSL_IMX8_DDR_PMU=m +CONFIG_QCOM_L2_PMU=y +CONFIG_QCOM_L3_PMU=y +CONFIG_ARM_SPE_PMU=m +CONFIG_ARM_DMC620_PMU=m +CONFIG_HISI_PMU=y +CONFIG_ARM_CORESIGHT_PMU_ARCH_SYSTEM_PMU=m +CONFIG_NVMEM_LAYOUT_SL28_VPD=m +CONFIG_NVMEM_IMX_OCOTP=y +CONFIG_NVMEM_IMX_OCOTP_ELE=m +CONFIG_NVMEM_IMX_OCOTP_SCU=y +CONFIG_NVMEM_LAYERSCAPE_SFP=m +CONFIG_NVMEM_MESON_EFUSE=m +CONFIG_NVMEM_MTK_EFUSE=y +CONFIG_NVMEM_QCOM_QFPROM=y CONFIG_NVMEM_RMEM=m +CONFIG_NVMEM_ROCKCHIP_EFUSE=y +CONFIG_NVMEM_ROCKCHIP_OTP=y +CONFIG_NVMEM_SNVS_LPGPR=y +CONFIG_NVMEM_SPMI_SDAM=m +CONFIG_NVMEM_SUNXI_SID=y +CONFIG_NVMEM_UNIPHIER_EFUSE=y +CONFIG_FPGA=y +CONFIG_FPGA_MGR_ALTERA_CVP=m +CONFIG_FPGA_MGR_STRATIX10_SOC=m +CONFIG_FPGA_BRIDGE=m +CONFIG_ALTERA_FREEZE_BRIDGE=m +CONFIG_FPGA_REGION=m +CONFIG_OF_FPGA_REGION=m +CONFIG_TEE=y +CONFIG_OPTEE=y CONFIG_MUX_GPIO=m -CONFIG_EXT4_FS=y +CONFIG_MUX_MMIO=y +CONFIG_SLIM_QCOM_CTRL=m +CONFIG_SLIM_QCOM_NGD_CTRL=m +CONFIG_INTERCONNECT_IMX=y +CONFIG_INTERCONNECT_IMX8MM=m +CONFIG_INTERCONNECT_IMX8MN=m +CONFIG_INTERCONNECT_IMX8MQ=m +CONFIG_INTERCONNECT_IMX8MP=y +CONFIG_INTERCONNECT_QCOM=y +CONFIG_INTERCONNECT_QCOM_MSM8916=m +CONFIG_INTERCONNECT_QCOM_MSM8996=m +CONFIG_INTERCONNECT_QCOM_OSM_L3=m +CONFIG_INTERCONNECT_QCOM_QCM2290=m +CONFIG_INTERCONNECT_QCOM_QCS404=m +CONFIG_INTERCONNECT_QCOM_SA8775P=y +CONFIG_INTERCONNECT_QCOM_SC7180=y +CONFIG_INTERCONNECT_QCOM_SC7280=y +CONFIG_INTERCONNECT_QCOM_SC8180X=y +CONFIG_INTERCONNECT_QCOM_SC8280XP=y +CONFIG_INTERCONNECT_QCOM_SDM845=y +CONFIG_INTERCONNECT_QCOM_SM8150=m +CONFIG_INTERCONNECT_QCOM_SM8250=m +CONFIG_INTERCONNECT_QCOM_SM8350=m +CONFIG_INTERCONNECT_QCOM_SM8450=y +CONFIG_INTERCONNECT_QCOM_SM8550=y +CONFIG_COUNTER=m +CONFIG_RZ_MTU3_CNT=m +CONFIG_HTE=y +CONFIG_HTE_TEGRA194=y +CONFIG_HTE_TEGRA194_TEST=m +CONFIG_EXT2_FS=y +CONFIG_EXT3_FS=y CONFIG_EXT4_FS_POSIX_ACL=y -CONFIG_EXT4_FS_SECURITY=y -CONFIG_REISERFS_FS=m -CONFIG_REISERFS_FS_XATTR=y -CONFIG_REISERFS_FS_POSIX_ACL=y -CONFIG_REISERFS_FS_SECURITY=y -CONFIG_JFS_FS=m -CONFIG_JFS_POSIX_ACL=y -CONFIG_JFS_SECURITY=y -CONFIG_JFS_STATISTICS=y -CONFIG_XFS_FS=m -CONFIG_XFS_QUOTA=y -CONFIG_XFS_POSIX_ACL=y -CONFIG_XFS_RT=y -CONFIG_GFS2_FS=m -CONFIG_OCFS2_FS=m CONFIG_BTRFS_FS=m CONFIG_BTRFS_FS_POSIX_ACL=y -CONFIG_NILFS2_FS=m -CONFIG_F2FS_FS=y -CONFIG_F2FS_FS_SECURITY=y -CONFIG_FS_ENCRYPTION=y CONFIG_FANOTIFY=y -CONFIG_QFMT_V1=m -CONFIG_QFMT_V2=m +CONFIG_FANOTIFY_ACCESS_PERMISSIONS=y +CONFIG_QUOTA=y CONFIG_AUTOFS_FS=y CONFIG_FUSE_FS=m CONFIG_CUSE=m CONFIG_OVERLAY_FS=m -CONFIG_FSCACHE=y -CONFIG_FSCACHE_STATS=y -CONFIG_CACHEFILES=y -CONFIG_ISO9660_FS=m -CONFIG_JOLIET=y -CONFIG_ZISOFS=y -CONFIG_UDF_FS=m -CONFIG_MSDOS_FS=y CONFIG_VFAT_FS=y -CONFIG_FAT_DEFAULT_IOCHARSET="ascii" -CONFIG_EXFAT_FS=m -CONFIG_NTFS_FS=m -CONFIG_NTFS_RW=y -CONFIG_NTFS3_FS=m -CONFIG_TMPFS=y CONFIG_TMPFS_POSIX_ACL=y -CONFIG_ECRYPT_FS=m -CONFIG_HFS_FS=m -CONFIG_HFSPLUS_FS=m -CONFIG_JFFS2_FS=m -CONFIG_JFFS2_SUMMARY=y +CONFIG_HUGETLBFS=y +CONFIG_EFIVAR_FS=y CONFIG_UBIFS_FS=m -CONFIG_SQUASHFS=m -CONFIG_SQUASHFS_XATTR=y -CONFIG_SQUASHFS_LZO=y -CONFIG_SQUASHFS_XZ=y -CONFIG_PSTORE=y -CONFIG_PSTORE_CONSOLE=y -CONFIG_PSTORE_RAM=y +CONFIG_SQUASHFS=y CONFIG_NFS_FS=y -CONFIG_NFS_V3_ACL=y CONFIG_NFS_V4=y -CONFIG_NFS_SWAP=y CONFIG_NFS_V4_1=y CONFIG_NFS_V4_2=y CONFIG_ROOT_NFS=y -CONFIG_NFS_FSCACHE=y -CONFIG_NFSD=m -CONFIG_NFSD_V2=y -CONFIG_NFSD_V2_ACL=y -CONFIG_NFSD_V3_ACL=y -CONFIG_NFSD_V4=y -CONFIG_CEPH_FS=m -CONFIG_CIFS=m -CONFIG_CIFS_UPCALL=y -CONFIG_CIFS_XATTR=y -CONFIG_CIFS_POSIX=y -CONFIG_CIFS_DFS_UPCALL=y -CONFIG_CIFS_FSCACHE=y -CONFIG_SMB_SERVER=m -CONFIG_9P_FS=m -CONFIG_9P_FS_POSIX_ACL=y -CONFIG_NLS_DEFAULT="utf8" +CONFIG_9P_FS=y CONFIG_NLS_CODEPAGE_437=y -CONFIG_NLS_CODEPAGE_737=m -CONFIG_NLS_CODEPAGE_775=m -CONFIG_NLS_CODEPAGE_850=m -CONFIG_NLS_CODEPAGE_852=m -CONFIG_NLS_CODEPAGE_855=m -CONFIG_NLS_CODEPAGE_857=m -CONFIG_NLS_CODEPAGE_860=m -CONFIG_NLS_CODEPAGE_861=m -CONFIG_NLS_CODEPAGE_862=m -CONFIG_NLS_CODEPAGE_863=m -CONFIG_NLS_CODEPAGE_864=m -CONFIG_NLS_CODEPAGE_865=m -CONFIG_NLS_CODEPAGE_866=m -CONFIG_NLS_CODEPAGE_869=m -CONFIG_NLS_CODEPAGE_936=m -CONFIG_NLS_CODEPAGE_950=m -CONFIG_NLS_CODEPAGE_932=m -CONFIG_NLS_CODEPAGE_949=m -CONFIG_NLS_CODEPAGE_874=m -CONFIG_NLS_ISO8859_8=m -CONFIG_NLS_CODEPAGE_1250=m -CONFIG_NLS_CODEPAGE_1251=m -CONFIG_NLS_ASCII=y -CONFIG_NLS_ISO8859_1=m -CONFIG_NLS_ISO8859_2=m -CONFIG_NLS_ISO8859_3=m -CONFIG_NLS_ISO8859_4=m -CONFIG_NLS_ISO8859_5=m -CONFIG_NLS_ISO8859_6=m -CONFIG_NLS_ISO8859_7=m -CONFIG_NLS_ISO8859_9=m -CONFIG_NLS_ISO8859_13=m -CONFIG_NLS_ISO8859_14=m -CONFIG_NLS_ISO8859_15=m -CONFIG_NLS_KOI8_R=m -CONFIG_NLS_KOI8_U=m -CONFIG_DLM=m -CONFIG_KEY_DH_OPERATIONS=y +CONFIG_NLS_ISO8859_1=y CONFIG_SECURITY=y -CONFIG_SECURITY_APPARMOR=y -CONFIG_LSM="" -CONFIG_CRYPTO_USER=m -CONFIG_CRYPTO_CRYPTD=m -CONFIG_CRYPTO_AES=m -CONFIG_CRYPTO_CAST5=m -CONFIG_CRYPTO_DES=y -CONFIG_CRYPTO_TWOFISH=m -CONFIG_CRYPTO_ADIANTUM=m -CONFIG_CRYPTO_CBC=m -CONFIG_CRYPTO_CHACHA20POLY1305=m -CONFIG_CRYPTO_MD4=m -CONFIG_CRYPTO_SHA512=m -CONFIG_CRYPTO_WP512=m -CONFIG_CRYPTO_XCBC=m -CONFIG_CRYPTO_LZ4=m -CONFIG_CRYPTO_USER_API_HASH=m -CONFIG_CRYPTO_USER_API_SKCIPHER=m +CONFIG_CRYPTO_USER=y +CONFIG_CRYPTO_TEST=m +CONFIG_CRYPTO_ECHAINIV=y +CONFIG_CRYPTO_MICHAEL_MIC=m +CONFIG_CRYPTO_ANSI_CPRNG=y CONFIG_CRYPTO_USER_API_RNG=m -CONFIG_CRYPTO_USER_API_AEAD=m -CONFIG_CRYPTO_GHASH_ARM64_CE=m -CONFIG_CRYPTO_SHA1_ARM64_CE=m -CONFIG_CRYPTO_SHA2_ARM64_CE=m +CONFIG_CRYPTO_CHACHA20_NEON=m +CONFIG_CRYPTO_GHASH_ARM64_CE=y +CONFIG_CRYPTO_SHA1_ARM64_CE=y +CONFIG_CRYPTO_SHA2_ARM64_CE=y CONFIG_CRYPTO_SHA512_ARM64_CE=m CONFIG_CRYPTO_SHA3_ARM64=m CONFIG_CRYPTO_SM3_ARM64_CE=m -CONFIG_CRYPTO_AES_ARM64=m -CONFIG_CRYPTO_AES_ARM64_CE_BLK=m +CONFIG_CRYPTO_AES_ARM64_CE_BLK=y CONFIG_CRYPTO_AES_ARM64_BS=m -CONFIG_CRYPTO_SM4_ARM64_CE=m -CONFIG_CRYPTO_AES_ARM64_CE_CCM=m -# CONFIG_CRYPTO_HW is not set -CONFIG_PKCS8_PRIVATE_KEY_PARSER=m -CONFIG_CRC_ITU_T=y -CONFIG_LIBCRC32C=y -CONFIG_DMA_CMA=y -CONFIG_CMA_SIZE_MBYTES=5 +CONFIG_CRYPTO_AES_ARM64_CE_CCM=y +CONFIG_CRYPTO_CRCT10DIF_ARM64_CE=m +CONFIG_CRYPTO_DEV_SUN8I_CE=m +CONFIG_CRYPTO_DEV_FSL_CAAM=m +CONFIG_CRYPTO_DEV_FSL_DPAA2_CAAM=m +CONFIG_CRYPTO_DEV_QCE=m +CONFIG_CRYPTO_DEV_QCOM_RNG=m +CONFIG_CRYPTO_DEV_CCREE=m +CONFIG_CRYPTO_DEV_HISI_SEC2=m +CONFIG_CRYPTO_DEV_HISI_ZIP=m +CONFIG_CRYPTO_DEV_HISI_HPRE=m +CONFIG_CRYPTO_DEV_HISI_TRNG=m +CONFIG_CRYPTO_DEV_SA2UL=m +CONFIG_DMA_RESTRICTED_POOL=y +CONFIG_CMA_SIZE_MBYTES=32 CONFIG_PRINTK_TIME=y -CONFIG_BOOT_PRINTK_DELAY=y -CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0x1f6 -CONFIG_KGDB=y -CONFIG_KGDB_KDB=y -CONFIG_KDB_KEYBOARD=y -CONFIG_DEBUG_MEMORY_INIT=y -CONFIG_DETECT_HUNG_TASK=y -CONFIG_LATENCYTOP=y -CONFIG_FUNCTION_PROFILER=y -CONFIG_STACK_TRACER=y -CONFIG_SCHED_TRACER=y -CONFIG_BLK_DEV_IO_TRACE=y -# CONFIG_UPROBE_EVENTS is not set -CONFIG_SAMPLES=y -CONFIG_SAMPLES_RUST=y -CONFIG_SAMPLE_RUST_MINIMAL=m -CONFIG_SAMPLE_RUST_PRINT=m -CONFIG_SAMPLE_RUST_HOSTPROGS=y -# CONFIG_STRICT_DEVMEM is not set +CONFIG_DEBUG_KERNEL=y +CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT=y +CONFIG_DEBUG_INFO_REDUCED=y +CONFIG_MAGIC_SYSRQ=y +CONFIG_DEBUG_FS=y +# CONFIG_SCHED_DEBUG is not set +# CONFIG_FTRACE is not set +CONFIG_CORESIGHT=m +CONFIG_CORESIGHT_LINK_AND_SINK_TMC=m +CONFIG_CORESIGHT_CATU=m +CONFIG_CORESIGHT_SINK_TPIU=m +CONFIG_CORESIGHT_SINK_ETBV10=m +CONFIG_CORESIGHT_STM=m +CONFIG_CORESIGHT_CPU_DEBUG=m +CONFIG_CORESIGHT_CTI=m +CONFIG_MEMTEST=y diff --git a/code_init.sh b/code_init.sh index 956660cb556db9..0c8a6797e4b02b 100755 --- a/code_init.sh +++ b/code_init.sh @@ -10,7 +10,7 @@ if [ $? -ne 0 ]; then fi # Run the make command -make llvm=1 rust-analyzer +make ARCH=arm64 O=build_4b LLVM=-18 rust-analyzer # Check if the make command ran successfully if [ $? -ne 0 ]; then diff --git a/drivers/i2c/busses/i2c_bcm2835_rust.rs b/drivers/i2c/busses/i2c_bcm2835_rust.rs index 2c11957ace8076..5785c71d538c6f 100644 --- a/drivers/i2c/busses/i2c_bcm2835_rust.rs +++ b/drivers/i2c/busses/i2c_bcm2835_rust.rs @@ -16,7 +16,9 @@ use kernel::device::RawDevice; use kernel::driver; use kernel::io_mem::IoMem; use kernel::of::DeviceId; +use kernel::irq; use kernel::platform; +use kernel::prelude::*; use kernel::str::CString; use kernel::sync::Arc; @@ -76,8 +78,10 @@ pub const BCM2835_I2C_REDL_SHIFT: u32 = 0; pub const BCM2835_I2C_CDIV_MIN: u32 = 0x0002; pub const BCM2835_I2C_CDIV_MAX: u32 = 0xFFFE; +static mut debug: i32 = 0; + /// SMBUs-recommended 35ms -pub const CLK_TOUT_MS: u32 = 35; +static mut CLK_TOUT_MS: u32 = 35; /// Maximum number of debug messages pub const BCM2835_DEBUG_MAX: usize = 512; @@ -140,18 +144,6 @@ module! { }, } -fn bcm2835_i2c_writel(i2c_dev: &mut Bcm2835I2cDev, reg: usize, val: u32) { - let i2c_reg = i2c_dev.regs.get(); - let addr = i2c_reg.wrapping_add(reg); - unsafe { bindings::writel(val as _, addr as _) } -} - -fn bcm2835_i2c_readl(i2c_dev: &mut Bcm2835I2cDev, reg: usize) -> u32 { - let i2c_reg = i2c_dev.regs.get(); - let addr = i2c_reg.wrapping_add(reg); - unsafe { bindings::readl(addr as _) } -} - fn to_clk_bcm2835_i2c(hw_ptr: &ClkHw) -> &mut ClkBcm2835I2c { unsafe { &mut *(container_of!(hw_ptr, ClkBcm2835I2c, hw) as *mut ClkBcm2835I2c) } } @@ -215,8 +207,7 @@ fn clk_bcm2835_i2c_set_rate(hw: &ClkHw, rate: u64, parent_rate: u64) -> Result<( * Set the clock stretch timeout. */ let clk_tout: u32; - let rate = rate as u32; - if rate > 0xffff * 1000 / CLK_TOUT_MS { + if unsafe { rate > 0xffff * 1000 / CLK_TOUT_MS } { clk_tout = 0xffff; } else { clk_tout = CLK_TOUT_MS * rate / 1000; @@ -260,7 +251,19 @@ impl ClkOps for ClkBcm2835I2cOps { } impl Bcm2835I2cDev { - pub(crate) fn bcm2835_i2c_register_div( + pub fn bcm2835_i2c_writel(i2c_dev: &mut Bcm2835I2cDev, reg: usize, val: u32) { + let i2c_reg = i2c_dev.regs.get(); + let addr = i2c_reg.wrapping_add(reg); + unsafe { bindings::writel(val as _, addr as _) } + } + + pub fn bcm2835_i2c_readl(i2c_dev: &mut Bcm2835I2cDev, reg: usize) -> u32 { + let i2c_reg = i2c_dev.regs.get(); + let addr = i2c_reg.wrapping_add(reg); + unsafe { bindings::readl(addr as _) } + } + + pub fn bcm2835_i2c_register_div( dev: &'static mut Device, mclk: &Clk, i2c_dev: &'static mut Bcm2835I2cDev, @@ -320,9 +323,74 @@ impl Bcm2835I2cDev { i2c_dev.msg_buf_remaining -= 1; } } + + pub fn bcm2835_i2c_start_transfer(i2c_dev: &'static mut Bcm2835I2cDev) { + let c: u32 = BCM2835_I2C_C_ST | BCM2835_I2C_C_I2CEN; + // wait consturction of i2c_msg + let last_msg = (i2c_dev.num_msgs == 1); + + if !lasti2c_dev.num_msgs != 0 { + return; + } + + i2c_dev.num_msgs -= 1; + // omit msg_buf operation for now. + } + + pub fn bcm2835_i2c_finish_transfer(i2c_dev: &'static mut Bcm2835I2cDev) {} } -struct Bcm2835I2cData {} +fn bcm2835_i2c_isr(this_irq: i32, data: *mut core::ffi::c_void) -> irq::Return { + let i2c_dev = unsafe { &mut *(data as *mut Bcm2835I2cDev) }; + + let val: u32 = i2c_dev.bcm2835_i2c_readl(BCM2835_I2C_S); + // bcm2835_debug_add() + let err: u32 = val & (BCM2835_I2C_S_CLKT | BCM2835_I2C_S_ERR); + + if err && !(val & BCM2835_I2C_S_TA) != 0 { + i2c_dev.msg_err = err; + } + + // omit msg_buf operation for now. + if val & BCM2835_I2C_S_DONE != 0 { + // ... for msg_buf + + if (val & BCM2835_I2C_S_RXD) || i2c_dev.msg_buf_remaining != 0 { + i2c_dev.msg_err = BCM2835_I2C_S_LEN; + } + + goto_complete(i2c_dev); + } + + if val & BCM2835_I2C_S_TXW != 0 { + if !i2c_dev.msg_buf_remaining != 0 { + i2c_dev.msg_err = val | BCM2835_I2C_S_LEN; + goto_complete(i2c_dev); + } + + i2c_dev.bcm2835_fill_txfifo(); + + if i2c_dev.num_msgs && !i2c_dev.msg_buf_remaining != 0 { + // omit now + } + + return irq::Return::Handled; + } + + if val & BCM2835_I2C_S_RXR != 0 { + if !i2c_dev.msg_buf_remaining != 0 { + i2c_dev.msg_err = val | BCM2835_I2C_S_LEN; + goto_complete(i2c_dev); + } + + i2c_dev.bcm2835_fill_rxfifo(); + return irq::Return::Handled; + } + + return irq::Return::None; + fn goto_complete(i2c_dev: &'static mut Bcm2835I2cDev) {} +} +struct Bcm2835I2cDriver; impl DeviceRemoval for Bcm2835I2cData { fn device_remove(&self) { diff --git a/rust/bindings/bindings_helper.h b/rust/bindings/bindings_helper.h index 6e8064d7dd3848..eff9348644896a 100644 --- a/rust/bindings/bindings_helper.h +++ b/rust/bindings/bindings_helper.h @@ -32,6 +32,7 @@ #include #include #include +#include /* `bindgen` gets confused at certain things. */ const size_t BINDINGS_ARCH_SLAB_MINALIGN = ARCH_SLAB_MINALIGN; diff --git a/rust/kernel/clk_provider.rs b/rust/kernel/clk_provider.rs index a028869eacf76d..f68242608b4e7e 100644 --- a/rust/kernel/clk_provider.rs +++ b/rust/kernel/clk_provider.rs @@ -13,7 +13,8 @@ use crate::{ str::CStr, types::{ForeignOwnable, Opaque}, }; -use core::{marker::PhantomData, mem::MaybeUninit}; +use core::{cell::UnsafeCell, marker::PhantomData, mem::MaybeUninit}; +use kernel::prelude::*; use macros::vtable; /// Represents `struct clk_core` diff --git a/rust/kernel/device.rs b/rust/kernel/device.rs index 63c72e5d4dcb2a..1248a903901fbd 100644 --- a/rust/kernel/device.rs +++ b/rust/kernel/device.rs @@ -218,8 +218,8 @@ impl Device { Ok(Clk::from_raw(raw)) } - /// Allocate a devm memory and return the corresponding pointer. - pub fn kzalloc(&self) -> Result<*mut T> { + /// Allocate(kmalloc) and return the corresponding mutable pointer. + pub fn kmalloc(&self) -> Result<*mut T> { let size = core::mem::size_of::(); let ptr = unsafe { bindings::devm_kmalloc(self.ptr, size, bindings::GFP_KERNEL | bindings::__GFP_ZERO) @@ -229,6 +229,16 @@ impl Device { } Ok(ptr as *mut T) } + + /// Allocate(kzalloc) and return the corresponding mutable pointer. + pub fn kzalloc(&self) -> Result<*mut T> { + let size = core::mem::size_of::(); + let ptr = unsafe {bindings::devm_kmalloc(self.ptr, size, bindings::GFP_KERNEL | bindings::__GFP_ZERO)}; + if ptr.is_null() { + return Err(ENOMEM); + } + Ok(ptr as *mut T) + } } // SAFETY: The device returned by `raw_device` is the one for which we hold a reference. diff --git a/rust/kernel/lib.rs b/rust/kernel/lib.rs index ffd6ea115cb0a5..5b970f4e4aed90 100644 --- a/rust/kernel/lib.rs +++ b/rust/kernel/lib.rs @@ -54,7 +54,7 @@ pub mod init; pub mod io_buffer; pub mod io_mem; #[cfg(CONFIG_IOMMU_IO_PGTABLE)] -pub mod io_pgtable; +// pub mod io_pgtable; pub mod ioctl; pub mod iov_iter; pub mod irq; From bed22508ba1acd34023b134b63958fbd8c0d69e7 Mon Sep 17 00:00:00 2001 From: creatoy Date: Wed, 31 Jul 2024 22:52:05 +0800 Subject: [PATCH 02/15] Added platform driver skeleton --- drivers/i2c/busses/i2c_bcm2835_rust.rs | 37 +++++++++++++++++++++++--- 1 file changed, 34 insertions(+), 3 deletions(-) diff --git a/drivers/i2c/busses/i2c_bcm2835_rust.rs b/drivers/i2c/busses/i2c_bcm2835_rust.rs index 5785c71d538c6f..3839e47e52ded3 100644 --- a/drivers/i2c/busses/i2c_bcm2835_rust.rs +++ b/drivers/i2c/busses/i2c_bcm2835_rust.rs @@ -27,6 +27,11 @@ use kernel::container_of; use kernel::define_of_id_table; use kernel::module_platform_driver; +use kernel::c_str; +use kernel::container_of; +use kernel::define_of_id_table; +use kernel::module_platform_driver; + /// I2C 地址预留空间 const I2C_SIZE: usize = 0x100; @@ -119,8 +124,10 @@ struct Bcm2835I2cDev { debug_num_msgs: u32, } +struct Bcm2835I2cData {} + struct Bcm2835I2cDevice { - drv_reg: Pin>>, + _drv: Pin>>, } module! { @@ -432,14 +439,38 @@ impl platform::Driver for Bcm2835I2cDriver { // ]} } +struct Bcm2835I2cDriver; + +impl platform::Driver for Bcm2835I2cDriver { + fn probe( + dev: &mut platform::Device, + id_info: core::prelude::v1::Option<&Self::IdInfo>, + ) -> Result { + // let pdev = dev. + // TODO: initialize and probe i2c driver + Ok(()) + } + + fn remove(_data: &Self::Data) -> Result { + // TODO: remove i2c driver + Ok(()) + } + + // TODO: complete the table + // define_of_id_table! {(), [ + // (of::DeviceId::Compatible(b"brcm,bcm2711-i2c"), None), + // (of::DeviceId::Compatible(b"brcm,bcm2835-i2c"), None), + // ]} +} + impl kernel::Module for Bcm2835I2cDevice { fn init(module: &'static ThisModule) -> Result { pr_info!("BCM2835 i2c bus device driver (init)\n"); - let drv_reg = + let _drv = platform::Registration::::new_pinned(c_str!("i2c-bcm2835"), module)?; - Ok(Bcm2835I2cDevice { drv_reg }) + Ok(Bcm2835I2cDevice { _drv }) } } From b7c17018e4ce77b2bf92ea27a8fe61b84b2b0dc3 Mon Sep 17 00:00:00 2001 From: Nostalgia Date: Fri, 2 Aug 2024 12:25:53 +0800 Subject: [PATCH 03/15] Refactor bcm2835_rust, Add i2c mod bcm2835_rust: continue Add functions Caution: the problem of dev.msg_buf and curr_msg.buf is needed to be reconciled i2c: Add basic structure for ffi bindings. Signed-off-by: Nostalgia --- drivers/i2c/busses/i2c_bcm2835_rust.rs | 38 +++++++++-- rust/kernel/i2c.rs | 91 ++++++++++++++++++++++++++ rust/kernel/lib.rs | 1 + 3 files changed, 124 insertions(+), 6 deletions(-) create mode 100644 rust/kernel/i2c.rs diff --git a/drivers/i2c/busses/i2c_bcm2835_rust.rs b/drivers/i2c/busses/i2c_bcm2835_rust.rs index 3839e47e52ded3..13812048316fd5 100644 --- a/drivers/i2c/busses/i2c_bcm2835_rust.rs +++ b/drivers/i2c/busses/i2c_bcm2835_rust.rs @@ -14,9 +14,10 @@ use kernel::completion::Completion; use kernel::device::Device; use kernel::device::RawDevice; use kernel::driver; +use kernel::i2c::{I2cMsg, I2C_M_RD}; use kernel::io_mem::IoMem; -use kernel::of::DeviceId; use kernel::irq; +use kernel::of::DeviceId; use kernel::platform; use kernel::prelude::*; use kernel::str::CString; @@ -109,7 +110,7 @@ struct Bcm2835I2cDev { // adapter: completion: Completion, // TODO: Implement i2c_msg - // curr_msg: + curr_msg: Option, bus_clk: Clk, num_msgs: i32, // omit debug fields for now. @@ -317,7 +318,7 @@ impl Bcm2835I2cDev { } } - pub(crate) fn bcm2835_fill_rxfifo(i2c_dev: &'static mut Bcm2835I2cDev) { + pub(crate) fn bcm2835_drain_rxfifo(i2c_dev: &'static mut Bcm2835I2cDev) { while i2c_dev.msg_buf_remaining > 0 { let val: u32 = bcm2835_i2c_readl(i2c_dev, BCM2835_I2C_S); if !(val & BCM2835_I2C_S_RXD) != 0 { @@ -334,6 +335,7 @@ impl Bcm2835I2cDev { pub fn bcm2835_i2c_start_transfer(i2c_dev: &'static mut Bcm2835I2cDev) { let c: u32 = BCM2835_I2C_C_ST | BCM2835_I2C_C_I2CEN; // wait consturction of i2c_msg + let msg = i2c_dev.curr_msg; let last_msg = (i2c_dev.num_msgs == 1); if !lasti2c_dev.num_msgs != 0 { @@ -342,9 +344,15 @@ impl Bcm2835I2cDev { i2c_dev.num_msgs -= 1; // omit msg_buf operation for now. + i2c_dev.msg_buf_remaining = msg.len(); } - pub fn bcm2835_i2c_finish_transfer(i2c_dev: &'static mut Bcm2835I2cDev) {} + pub fn bcm2835_i2c_finish_transfer(i2c_dev: &'static mut Bcm2835I2cDev) { + i2c_dev.curr_msg = None; + i2c_dev.num_msgs = 0; + i2c_dev.msg_buf = Vec::new(); + i2c_dev.msg_buf_remaining = 0; + } } fn bcm2835_i2c_isr(this_irq: i32, data: *mut core::ffi::c_void) -> irq::Return { @@ -360,7 +368,13 @@ fn bcm2835_i2c_isr(this_irq: i32, data: *mut core::ffi::c_void) -> irq::Return { // omit msg_buf operation for now. if val & BCM2835_I2C_S_DONE != 0 { - // ... for msg_buf + if i2c_dev.curr_msg.is_none() { + dev_err!(i2c_dev.dev, "Got unexpected inteerupt (from firmware?)\n"); + } else if i2c_dev.curr_msg.unwrap().flags() & I2C_M_RD != 0 { + i2c_dev.bcm2835_drain_rxfifo(); + val = i2c_dev.bcm2835_i2c_readl(BCM2835_I2C_S); + } else { + } if (val & BCM2835_I2C_S_RXD) || i2c_dev.msg_buf_remaining != 0 { i2c_dev.msg_err = BCM2835_I2C_S_LEN; @@ -395,8 +409,20 @@ fn bcm2835_i2c_isr(this_irq: i32, data: *mut core::ffi::c_void) -> irq::Return { } return irq::Return::None; - fn goto_complete(i2c_dev: &'static mut Bcm2835I2cDev) {} + fn goto_complete(i2c_dev: &'static mut Bcm2835I2cDev) -> irq::Return { + i2c_dev.bcm2835_i2c_writel(BCM2835_I2C_C, BCM2835_I2C_C_CLEAR); + i2c_dev.bcm2835_i2c_writel( + BCM2835_I2C_S, + BCM2835_I2C_CLKT | BCM2835_I2C_S_ERR | BCM2835_I2C_S_DONE, + ); + i2c_dev.completion.complete(); + + irq::Return::Handled + } } + +struct Bcm2835I2cAlgo; + struct Bcm2835I2cDriver; impl DeviceRemoval for Bcm2835I2cData { diff --git a/rust/kernel/i2c.rs b/rust/kernel/i2c.rs new file mode 100644 index 00000000000000..0cae7593dfd44c --- /dev/null +++ b/rust/kernel/i2c.rs @@ -0,0 +1,91 @@ +use core::marker::PhantomData; + +use crate::{str, types::Opaque}; +use macros::vtable; + +pub const I2C_M_RD: u32 = bindings::I2C_M_RD; +pub const I2C_M_TEN: u32 = bindings::I2C_M_TEN; +pub const I2C_M_DMA_SAFE: u32 = bindings::I2C_M_DMA_SAFE; +pub const I2C_M_RECV_LEN: u32 = bindings::I2C_M_RECV_LEN; +pub const I2C_M_NO_RD_ACK: u32 = bindings::I2C_M_NO_RD_ACK; +pub const I2C_M_IGNORE_NAK: u32 = bindings::I2C_M_IGNORE_NAK; +pub const I2C_M_REV_DIR_ADDR: u32 = bindings::I2C_M_REV_DIR_ADDR; +pub const I2C_M_NOSTART: u32 = bindings::I2C_M_NOSTART; +pub const I2C_M_STOP: u32 = bindings::I2C_M_STOP; + +/// Represents i2c_msg +/// +pub struct I2cMsg(bindings::i2c_msg); + +impl I2cMsg { + /// return flags of i2c_msg + pub fn flags(&self) -> u16 { + self.0.flags as u16 + } + + /// return len of i2c_msg + pub fn len(&self) -> u16 { + self.0.len as u16 + } + + /// return addr of i2c_msg + pub fn addr(&self) -> u16 { + self.0.addr as u16 + } +} + +/* +impl Default for I2cMsg { + fn default() -> Self { + Self(bindings::i2c_msg::default()) + } +}*/ + +/// Represents i2c_adapter +/// +pub struct I2cAdapter(Opaque); + +/// Represents i2c_smbus_data +/// +pub struct I2cSmbusData(Opaque); + +/// Represents i2c_algorithm +/// +#[vtable] +pub trait I2cAlgorithm { + /// User data that will be accessible to all operations + type Data: ForeignOwnable + Send + Sync = (); + + // Caution: May ! + + fn master_xfer(adap: &mut I2cAdapter, msgs: &mut I2cMsg, num: i32) -> i32; + + fn master_xfer_atomic(adap: &mut I2cAdapter, msgs: &mut I2cMsg, num: i32) -> i32; + + // Caution: read_write is c_char, flags is c_ushort! + fn smbus_xfer( + adap: &mut I2cAdapter, + addr: u16, + flags: u16, + read_write: u8, + command: u8, + size: i32, + data: &mut I2cSmbusData, + ) -> i32; + + fn smbus_xfer_atomic( + adap: &mut I2cAdapter, + addr: u16, + flags: u16, + read_write: u8, + command: u8, + size: i32, + data: &mut I2cSmbusData, + ) -> i32; +} + +pub(crate) struct Adapter(PhantomData); + +impl Adapter { + // TODO! +} diff --git a/rust/kernel/lib.rs b/rust/kernel/lib.rs index 5b970f4e4aed90..da46d839f7d645 100644 --- a/rust/kernel/lib.rs +++ b/rust/kernel/lib.rs @@ -77,6 +77,7 @@ pub mod task; pub mod timekeeping; pub mod types; pub mod user_ptr; +pub mod i2c; use core::marker::PhantomData; From b6887f8127950948645dfb8418b1381fbed352eb Mon Sep 17 00:00:00 2001 From: Nostalgia Date: Fri, 2 Aug 2024 16:27:20 +0800 Subject: [PATCH 04/15] Refactor bcm2835_rust bcm2835_rust: continue Add functions Caution: the problem of dev.msg_buf and curr_msg.buf, we need to consruct a elegant way for a replacement of ptr++ . Signed-off-by: Nostalgia --- drivers/i2c/busses/i2c_bcm2835_rust.rs | 85 ++++++++++++++------------ rust/kernel/i2c.rs | 12 ++++ 2 files changed, 57 insertions(+), 40 deletions(-) diff --git a/drivers/i2c/busses/i2c_bcm2835_rust.rs b/drivers/i2c/busses/i2c_bcm2835_rust.rs index 13812048316fd5..2207cd1f1797f7 100644 --- a/drivers/i2c/busses/i2c_bcm2835_rust.rs +++ b/drivers/i2c/busses/i2c_bcm2835_rust.rs @@ -3,6 +3,8 @@ //! BCM2835 master mode driver use kernel::driver::DeviceRemoval; +use kernel::i2c; +use kernel::i2c::I2cAdapter; use kernel::prelude::*; use kernel::bindings; @@ -84,49 +86,41 @@ pub const BCM2835_I2C_REDL_SHIFT: u32 = 0; pub const BCM2835_I2C_CDIV_MIN: u32 = 0x0002; pub const BCM2835_I2C_CDIV_MAX: u32 = 0xFFFE; -static mut debug: i32 = 0; +static mut DEBUG: i32 = 0; /// SMBUs-recommended 35ms static mut CLK_TOUT_MS: u32 = 35; /// Maximum number of debug messages pub const BCM2835_DEBUG_MAX: usize = 512; - -/// TODO: Wait for implemented Debug feature struct Bcm2835Debug { - // TODO: Implement i2c_msg - // msg: + msg: I2cMsg, msg_idx: i32, remain: usize, status: u32, } -/// TODO: Wait for implemented device struct +// May Wrong! Vec for *mut T +// C use u8* as a ptr msg_buf,i2c_msg* as a ptr i2c_msg +// C use NULL, Rust use None. +// Use Vec as a ptr buf struct Bcm2835I2cDev { dev: Device, regs: IoMem, irq: i32, - // TODO: Implement adapter - // adapter: + adapter: I2cAdapter, completion: Completion, - // TODO: Implement i2c_msg - curr_msg: Option, + curr_msg: Option>, bus_clk: Clk, num_msgs: i32, - // omit debug fields for now. msg_err: u32, - // May Wrong! Vec for *mut u8 - // C use u8* as a pointer msg_buf - // Use Vec as a stack buf - msg_buf: Vec, + msg_buf: Option>, msg_buf_remaining: usize, debug: [Bcm2835Debug; BCM2835_DEBUG_MAX], debug_num: u32, debug_num_msgs: u32, } -struct Bcm2835I2cData {} - struct Bcm2835I2cDevice { _drv: Pin>>, } @@ -310,11 +304,12 @@ impl Bcm2835I2cDev { break; } // May Wrong! - // Safety: Copy and retain the element. - let idx = i2c_dev.msg_buf.len() - 1; - let cur = i2c_dev.msg_buf[idx] as u32; - bcm2835_i2c_writel(i2c_dev, BCM2835_I2C_FIFO, cur); - i2c_dev.msg_buf_remaining -= 1; + if let Some(ref mut buf) = i2c_dev.msg_buf { + // Safety: msg_buf_remaining > 0 + let cur = buf.pop().unwrap() as u32; + bcm2835_i2c_writel(i2c_dev, BCM2835_I2C_FIFO, cur); + i2c_dev.msg_buf_remaining -= 1; + } } } @@ -325,17 +320,18 @@ impl Bcm2835I2cDev { break; } // May Wrong! - let cur = bcm2835_i2c_readl(i2c_dev, BCM2835_I2C_FIFO) as u8; - // Safety: msg_buf_remaining > 0 - let _ = i2c_dev.msg_buf.try_push(cur); - i2c_dev.msg_buf_remaining -= 1; + if let Some(ref mut buf) = i2c_dev.msg_buf { + let cur = bcm2835_i2c_readl(i2c_dev, BCM2835_I2C_FIFO) as u8; + let _ = i2c_dev.msg_buf.try_push(cur); + i2c_dev.msg_buf_remaining -= 1; + } } } pub fn bcm2835_i2c_start_transfer(i2c_dev: &'static mut Bcm2835I2cDev) { let c: u32 = BCM2835_I2C_C_ST | BCM2835_I2C_C_I2CEN; - // wait consturction of i2c_msg - let msg = i2c_dev.curr_msg; + // Caution: assume msg is valid. + let msg = i2c_dev.curr_msg.unwrap().pop().unwrap(); let last_msg = (i2c_dev.num_msgs == 1); if !lasti2c_dev.num_msgs != 0 { @@ -343,14 +339,20 @@ impl Bcm2835I2cDev { } i2c_dev.num_msgs -= 1; - // omit msg_buf operation for now. + // Caution: ownership transfer. + i2c_dev.msg_buf = msg.buf_to_vec(); i2c_dev.msg_buf_remaining = msg.len(); + + if msg.flags() & I2C_M_RD != 0 { + c |= BCM + } } pub fn bcm2835_i2c_finish_transfer(i2c_dev: &'static mut Bcm2835I2cDev) { i2c_dev.curr_msg = None; i2c_dev.num_msgs = 0; - i2c_dev.msg_buf = Vec::new(); + + i2c_dev.msg_buf = None; i2c_dev.msg_buf_remaining = 0; } } @@ -358,7 +360,7 @@ impl Bcm2835I2cDev { fn bcm2835_i2c_isr(this_irq: i32, data: *mut core::ffi::c_void) -> irq::Return { let i2c_dev = unsafe { &mut *(data as *mut Bcm2835I2cDev) }; - let val: u32 = i2c_dev.bcm2835_i2c_readl(BCM2835_I2C_S); + let mut val: u32 = i2c_dev.bcm2835_i2c_readl(BCM2835_I2C_S); // bcm2835_debug_add() let err: u32 = val & (BCM2835_I2C_S_CLKT | BCM2835_I2C_S_ERR); @@ -368,12 +370,15 @@ fn bcm2835_i2c_isr(this_irq: i32, data: *mut core::ffi::c_void) -> irq::Return { // omit msg_buf operation for now. if val & BCM2835_I2C_S_DONE != 0 { - if i2c_dev.curr_msg.is_none() { - dev_err!(i2c_dev.dev, "Got unexpected inteerupt (from firmware?)\n"); - } else if i2c_dev.curr_msg.unwrap().flags() & I2C_M_RD != 0 { - i2c_dev.bcm2835_drain_rxfifo(); - val = i2c_dev.bcm2835_i2c_readl(BCM2835_I2C_S); - } else { + match i2c_dev.curr_msg { + Some(ref mut msg) if msg.flags() & I2C_M_RD != 0 => { + i2c_dev.bcm2835_drain_rxfifo(); + val = i2c_dev.bcm2835_i2c_readl(BCM2835_I2C_S); + } + None => { + dev_err!(i2c_dev.dev, "Got unexpected interrupt (from firmware?)\n") + } + _ => {} } if (val & BCM2835_I2C_S_RXD) || i2c_dev.msg_buf_remaining != 0 { @@ -391,9 +396,7 @@ fn bcm2835_i2c_isr(this_irq: i32, data: *mut core::ffi::c_void) -> irq::Return { i2c_dev.bcm2835_fill_txfifo(); - if i2c_dev.num_msgs && !i2c_dev.msg_buf_remaining != 0 { - // omit now - } + if i2c_dev.num_msgs && !i2c_dev.msg_buf_remaining != 0 {} return irq::Return::Handled; } @@ -421,6 +424,8 @@ fn bcm2835_i2c_isr(this_irq: i32, data: *mut core::ffi::c_void) -> irq::Return { } } +fn bcm2835_i2c_xfer(adap: I2cAdapter, msgs: Vec, num: i32) -> Result<()> {} + struct Bcm2835I2cAlgo; struct Bcm2835I2cDriver; diff --git a/rust/kernel/i2c.rs b/rust/kernel/i2c.rs index 0cae7593dfd44c..1e69a529e7b5b4 100644 --- a/rust/kernel/i2c.rs +++ b/rust/kernel/i2c.rs @@ -1,6 +1,7 @@ use core::marker::PhantomData; use crate::{str, types::Opaque}; +use alloc::vec::Vec; use macros::vtable; pub const I2C_M_RD: u32 = bindings::I2C_M_RD; @@ -32,6 +33,17 @@ impl I2cMsg { pub fn addr(&self) -> u16 { self.0.addr as u16 } + + pub fn buf_to_vec(&self) -> Option> { + let len = self.len() as usize; + let buf = self.0.buf as *const u8; + if buf.is_null() { + return None; + } + // Safety: buf is valid for len bytes, no contiguity. + let slice = unsafe { core::slice::from_raw_parts(buf, len) }; + Some(slice.to_vec()) + } } /* From 5294a5d57ecaa43e0f750a5330952962726be1a1 Mon Sep 17 00:00:00 2001 From: Nostalgia Date: Fri, 2 Aug 2024 16:27:20 +0800 Subject: [PATCH 05/15] Refactor bcm2835_rust bcm2835_rust: continue Add functions Caution: the problem of dev.msg_buf and curr_msg.buf, we need to consruct a elegant way for a replacement of ptr++ . Signed-off-by: Nostalgia --- drivers/i2c/busses/i2c_bcm2835_rust.rs | 30 ++++++++++++++++++++------ rust/kernel/i2c.rs | 15 +++++++++++++ 2 files changed, 39 insertions(+), 6 deletions(-) diff --git a/drivers/i2c/busses/i2c_bcm2835_rust.rs b/drivers/i2c/busses/i2c_bcm2835_rust.rs index 2207cd1f1797f7..7cbf4e194b78cc 100644 --- a/drivers/i2c/busses/i2c_bcm2835_rust.rs +++ b/drivers/i2c/busses/i2c_bcm2835_rust.rs @@ -306,8 +306,8 @@ impl Bcm2835I2cDev { // May Wrong! if let Some(ref mut buf) = i2c_dev.msg_buf { // Safety: msg_buf_remaining > 0 - let cur = buf.pop().unwrap() as u32; - bcm2835_i2c_writel(i2c_dev, BCM2835_I2C_FIFO, cur); + i2c_dev.bcm2835_i2c_writel(BCM2835_I2C_FIFO, buf[0] as u32); + let buf = &mut buf[1..]; i2c_dev.msg_buf_remaining -= 1; } } @@ -321,8 +321,8 @@ impl Bcm2835I2cDev { } // May Wrong! if let Some(ref mut buf) = i2c_dev.msg_buf { - let cur = bcm2835_i2c_readl(i2c_dev, BCM2835_I2C_FIFO) as u8; - let _ = i2c_dev.msg_buf.try_push(cur); + buf[0] = bcm2835_i2c_readl(i2c_dev, BCM2835_I2C_FIFO) as u8; + let buf = &mut buf[1..]; i2c_dev.msg_buf_remaining -= 1; } } @@ -340,12 +340,24 @@ impl Bcm2835I2cDev { i2c_dev.num_msgs -= 1; // Caution: ownership transfer. + // other fields are fine. i2c_dev.msg_buf = msg.buf_to_vec(); i2c_dev.msg_buf_remaining = msg.len(); if msg.flags() & I2C_M_RD != 0 { - c |= BCM + c |= BCM2835_I2C_C_READ | BCM2835_I2C_C_INTR; + } else { + c |= BCM2835_I2C_C_INTT; } + + if last_msg { + c |= BCM2835_I2C_C_INTD; + } + + i2c_dev.bcm2835_i2c_writel(BCM2835_I2C_A, msg.addr() as u32); + i2c_dev.bcm2835_i2c_writel(BCM2835_I2C_DLEN, msg.len() as u32); + i2c_dev.bcm2835_i2c_writel(BCM2835_I2C_C, c); + //debug add } pub fn bcm2835_i2c_finish_transfer(i2c_dev: &'static mut Bcm2835I2cDev) { @@ -396,7 +408,13 @@ fn bcm2835_i2c_isr(this_irq: i32, data: *mut core::ffi::c_void) -> irq::Return { i2c_dev.bcm2835_fill_txfifo(); - if i2c_dev.num_msgs && !i2c_dev.msg_buf_remaining != 0 {} + if i2c_dev.num_msgs && !i2c_dev.msg_buf_remaining != 0 { + if let Some(ref mut curr_msg) = i2c_dev.curr_msg { + let curr_msg = curr_msg[1..]; + i2c_dev.curr_msg = Some(curr_msg); + } + i2c_dev.bcm2835_i2c_start_transfer(); + } return irq::Return::Handled; } diff --git a/rust/kernel/i2c.rs b/rust/kernel/i2c.rs index 1e69a529e7b5b4..9b04e1ad4a65df 100644 --- a/rust/kernel/i2c.rs +++ b/rust/kernel/i2c.rs @@ -57,6 +57,21 @@ impl Default for I2cMsg { /// pub struct I2cAdapter(Opaque); +impl I2cAdapter { + pub fn as_ptr(&self) -> *const bindings::i2c_adapter { + self.0.get() as *const bindings::i2c_adapter + } + + pub fn as_mut_ptr(&mut self) -> *mut bindings::i2c_adapter { + self.0.get_mut() as *mut bindings::i2c_adapter + } + + pub fn i2c_get_adapdata(&self) -> *mut T { + unsafe { + bindings::i2c_get_adapdata(self.0.as_ptr() as *mut bindings::i2c_adapter) as *mut T + } + } +} /// Represents i2c_smbus_data /// pub struct I2cSmbusData(Opaque); From d489098c6884e5d9d10ae79af7f636daf4424c3a Mon Sep 17 00:00:00 2001 From: Nostalgia Date: Sat, 3 Aug 2024 22:31:25 +0800 Subject: [PATCH 06/15] Refactor bcm2835_rust: xfer Add bcm2835_i2c_xfer Add Error: EREMOTEIO Add bcm2835_i2c_func Signed-off-by: Nostalgia --- drivers/i2c/busses/i2c_bcm2835_rust.rs | 78 +++++++++++++++++++++++++- rust/kernel/error.rs | 1 + rust/kernel/i2c.rs | 37 ++++++++++-- 3 files changed, 111 insertions(+), 5 deletions(-) diff --git a/drivers/i2c/busses/i2c_bcm2835_rust.rs b/drivers/i2c/busses/i2c_bcm2835_rust.rs index 7cbf4e194b78cc..e60811b7b7892e 100644 --- a/drivers/i2c/busses/i2c_bcm2835_rust.rs +++ b/drivers/i2c/busses/i2c_bcm2835_rust.rs @@ -2,7 +2,10 @@ //! BCM2835 master mode driver +use core::num; + use kernel::driver::DeviceRemoval; +use kernel::error::to_result; use kernel::i2c; use kernel::i2c::I2cAdapter; use kernel::prelude::*; @@ -442,7 +445,80 @@ fn bcm2835_i2c_isr(this_irq: i32, data: *mut core::ffi::c_void) -> irq::Return { } } -fn bcm2835_i2c_xfer(adap: I2cAdapter, msgs: Vec, num: i32) -> Result<()> {} +fn bcm2835_i2c_xfer(adap: I2cAdapter, msgs: Vec, num: i32) -> Result<()> { + let i2c_dev = unsafe { &mut *(adap.data as *mut Bcm2835I2cDev) }; + let ignore_nak = false; + + if unsafe { DEBUG != 0 } { + i2c_dev.debug_num_msgs = num; + } + + if unsafe { DEBUG > 2 } { + //for 0..num { + // print msg + //} + } + + for msg in &msgs { + if msg.flags() & I2C_M_RD != 0 { + dev_warn!( + i2c_dev.dev, + "only one read message supported, has to be last\n" + ); + return Err(EOPENSTALE); + } + if msg.flags() & I2C_M_NOSTART != 0 { + ignore_nak = true; + } + } + + i2c_dev.curr_msg = Some(msgs); + i2c_dev.num_msgs = num; + i2c_dev.msg_err = 0; + + i2c_dev.completion.reinit(); + + i2c_dev.bcm2835_i2c_start_transfer(); + + let time_left = i2c_dev + .completion + .wait_for_completion_timeout_sec(adap.timeout()); + + i2c_dev.bcm2835_i2c_finish_transfer(); + + if ignore_nak { + i2c_dev.msg_err &= !BCM2835_I2C_S_ERR; + } + + if unsafe { DEBUG > 1 || (DEBUG && (!time_left || i2c_dev.msg_err)) } { + // debug print + } + i2c_dev.debug_num_msgs = 0; + i2c_dev.debug_num = 0; + if !time_left != 0 { + i2c_dev.bcm2835_i2c_writel(BCM2835_I2C_C, BCM2835_I2C_C_CLEAR); + dev_err!(i2c_dev.dev, "i2c transfer timed out\n"); + return Err(ETIMEDOUT); + } + + if !i2c_dev.msg_err != 0 { + return to_result(num); + } + + if unsafe { DEBUG != 0 } { + dev_err!(i2c_dev.dev, "i2c transfer failed: {}\n", i2c_dev.msg_err); + } + + if i2c_dev.msg_err & BCM2835_I2C_S_ERR != 0 { + return Err(EREMOTEIO); + } + + Err(EIO); +} + +fn bcm2835_i2c_func(adap: I2cAdapter) -> u32 { + i2c::I2C_FUNC_I2C | i2c::I2C_FUNC_10BIT_ADDR | i2c::I2C_FUNC_PROTOCOL_MANGLING +} struct Bcm2835I2cAlgo; diff --git a/rust/kernel/error.rs b/rust/kernel/error.rs index 5f6499a708ad78..62460893c2f106 100644 --- a/rust/kernel/error.rs +++ b/rust/kernel/error.rs @@ -28,6 +28,7 @@ pub mod code { }; } + declare_err!(EREMOTEIO,"Remote I/O error."); declare_err!(ETIMEDOUT, "Operation timeout"); declare_err!(EPERM, "Operation not permitted."); declare_err!(ENOENT, "No such file or directory."); diff --git a/rust/kernel/i2c.rs b/rust/kernel/i2c.rs index 9b04e1ad4a65df..e186ee5d35c671 100644 --- a/rust/kernel/i2c.rs +++ b/rust/kernel/i2c.rs @@ -1,6 +1,6 @@ use core::marker::PhantomData; -use crate::{str, types::Opaque}; +use crate::{platform::Adapter, str, types::Opaque}; use alloc::vec::Vec; use macros::vtable; @@ -13,7 +13,33 @@ pub const I2C_M_IGNORE_NAK: u32 = bindings::I2C_M_IGNORE_NAK; pub const I2C_M_REV_DIR_ADDR: u32 = bindings::I2C_M_REV_DIR_ADDR; pub const I2C_M_NOSTART: u32 = bindings::I2C_M_NOSTART; pub const I2C_M_STOP: u32 = bindings::I2C_M_STOP; - +pub const I2C_FUNC_I2C: u32 = bindings::I2C_FUNC_I2C; +pub const I2C_FUNC_10BIT_ADDR: u32 = bindings::I2C_FUNC_10BIT_ADDR; +pub const I2C_FUNC_PROTOCOL_MANGLING: u32 = bindings::I2C_FUNC_PROTOCOL_MANGLING; +pub const I2C_FUNC_SMBUS_PEC: u32 = bindings::I2C_FUNC_SMBUS_PEC; +pub const I2C_FUNC_NOSTART: u32 = bindings::I2C_FUNC_NOSTART; +pub const I2C_FUNC_SLAVE: u32 = bindings::I2C_FUNC_SLAVE; +pub const I2C_FUNC_SMBUS_BLOCK_PROC_CALL: u32 = bindings::I2C_FUNC_SMBUS_BLOCK_PROC_CALL; +pub const I2C_FUNC_SMBUS_QUICK: u32 = bindings::I2C_FUNC_SMBUS_QUICK; +pub const I2C_FUNC_SMBUS_READ_BYTE: u32 = bindings::I2C_FUNC_SMBUS_READ_BYTE; +pub const I2C_FUNC_SMBUS_WRITE_BYTE: u32 = bindings::I2C_FUNC_SMBUS_WRITE_BYTE; +pub const I2C_FUNC_SMBUS_READ_BYTE_DATA: u32 = bindings::I2C_FUNC_SMBUS_READ_BYTE_DATA; +pub const I2C_FUNC_SMBUS_WRITE_BYTE_DATA: u32 = bindings::I2C_FUNC_SMBUS_WRITE_BYTE_DATA; +pub const I2C_FUNC_SMBUS_READ_WORD_DATA: u32 = bindings::I2C_FUNC_SMBUS_READ_WORD_DATA; +pub const I2C_FUNC_SMBUS_WRITE_WORD_DATA: u32 = bindings::I2C_FUNC_SMBUS_WRITE_WORD_DATA; +pub const I2C_FUNC_SMBUS_PROC_CALL: u32 = bindings::I2C_FUNC_SMBUS_PROC_CALL; +pub const I2C_FUNC_SMBUS_READ_BLOCK_DATA: u32 = bindings::I2C_FUNC_SMBUS_READ_BLOCK_DATA; +pub const I2C_FUNC_SMBUS_WRITE_BLOCK_DATA: u32 = bindings::I2C_FUNC_SMBUS_WRITE_BLOCK_DATA; +pub const I2C_FUNC_SMBUS_READ_I2C_BLOCK: u32 = bindings::I2C_FUNC_SMBUS_READ_I2C_BLOCK; +pub const I2C_FUNC_SMBUS_WRITE_I2C_BLOCK: u32 = bindings::I2C_FUNC_SMBUS_WRITE_I2C_BLOCK; +pub const I2C_FUNC_SMBUS_HOST_NOTIFY: u32 = bindings::I2C_FUNC_SMBUS_HOST_NOTIFY; +pub const I2C_FUNC_SMBUS_BYTE: u32 = bindings::I2C_FUNC_SMBUS_BYTE; +pub const I2C_FUNC_SMBUS_BYTE_DATA: u32 = bindings::I2C_FUNC_SMBUS_BYTE_DATA; +pub const I2C_FUNC_SMBUS_WORD_DATA: u32 = bindings::I2C_FUNC_SMBUS_WORD_DATA; +pub const I2C_FUNC_SMBUS_BLOCK_DATA: u32 = bindings::I2C_FUNC_SMBUS_BLOCK_DATA; +pub const I2C_FUNC_SMBUS_I2C_BLOCK: u32 = bindings::I2C_FUNC_SMBUS_I2C_BLOCK; +pub const I2C_FUNC_SMBUS_EMUL: u32 = bindings::I2C_FUNC_SMBUS_EMUL; +pub const I2C_FUNC_SMBUS_EMUL_ALL: u32 = bindings::I2C_FUNC_SMBUS_EMUL_ALL; /// Represents i2c_msg /// pub struct I2cMsg(bindings::i2c_msg); @@ -56,7 +82,6 @@ impl Default for I2cMsg { /// Represents i2c_adapter /// pub struct I2cAdapter(Opaque); - impl I2cAdapter { pub fn as_ptr(&self) -> *const bindings::i2c_adapter { self.0.get() as *const bindings::i2c_adapter @@ -68,9 +93,13 @@ impl I2cAdapter { pub fn i2c_get_adapdata(&self) -> *mut T { unsafe { - bindings::i2c_get_adapdata(self.0.as_ptr() as *mut bindings::i2c_adapter) as *mut T + bindings::dev_get_drvdata(self.0.as_ptr() as *mut bindings::i2c_adapter) as *mut T } } + + pub fn timeout(&self) -> i32 { + self.0.get().timeout as i32 + } } /// Represents i2c_smbus_data /// From af2d8c4d95851ed15f2c2776df2552f25598808b Mon Sep 17 00:00:00 2001 From: Nostalgia Date: Sat, 3 Aug 2024 22:31:25 +0800 Subject: [PATCH 07/15] Refactor bcm2835_rust: xfer Add bcm2835_i2c_xfer Add Error: EREMOTEIO Add bcm2835_i2c_func Signed-off-by: Nostalgia --- rust/kernel/clk_provider.rs | 6 ++---- rust/kernel/i2c.rs | 2 +- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/rust/kernel/clk_provider.rs b/rust/kernel/clk_provider.rs index e2c84cc8ecf35e..2b72120257f93c 100644 --- a/rust/kernel/clk_provider.rs +++ b/rust/kernel/clk_provider.rs @@ -6,15 +6,13 @@ use crate::{ bindings, - clk::Clk, - device::{Device, RawDevice}, + device::RawDevice, error::{from_result, to_result, Result}, prelude::*, str::CStr, types::{ForeignOwnable, Opaque}, }; -use core::{cell::UnsafeCell, marker::PhantomData, mem::MaybeUninit}; -use kernel::prelude::*; +use core::{marker::PhantomData, mem::MaybeUninit}; use macros::vtable; /// Represents `struct clk_core` diff --git a/rust/kernel/i2c.rs b/rust/kernel/i2c.rs index e186ee5d35c671..270d5472375753 100644 --- a/rust/kernel/i2c.rs +++ b/rust/kernel/i2c.rs @@ -1,6 +1,6 @@ use core::marker::PhantomData; -use crate::{platform::Adapter, str, types::Opaque}; +use crate::types::{ForeignOwnable, Opaque}; use alloc::vec::Vec; use macros::vtable; From e5740b3c3c38cc65d2e883e194863e925fa03734 Mon Sep 17 00:00:00 2001 From: Nostalgia Date: Sun, 4 Aug 2024 17:28:51 +0800 Subject: [PATCH 08/15] =?UTF-8?q?=E8=A1=A5=E5=85=85=20bcm2835=5Frust,=20?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=20i2c=5Fquirks?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit bcm2835_rust: 部分修正,尝试填充probe函数。 i2c mod: 添加i2c_quirks。 Signed-off-by: Nostalgia --- drivers/i2c/busses/i2c_bcm2835_rust.rs | 16 ++++++++++--- rust/kernel/clk_provider.rs | 5 ++-- rust/kernel/i2c.rs | 33 ++++++++++++++++++-------- 3 files changed, 38 insertions(+), 16 deletions(-) diff --git a/drivers/i2c/busses/i2c_bcm2835_rust.rs b/drivers/i2c/busses/i2c_bcm2835_rust.rs index e60811b7b7892e..583b79f5f3232e 100644 --- a/drivers/i2c/busses/i2c_bcm2835_rust.rs +++ b/drivers/i2c/busses/i2c_bcm2835_rust.rs @@ -8,6 +8,7 @@ use kernel::driver::DeviceRemoval; use kernel::error::to_result; use kernel::i2c; use kernel::i2c::I2cAdapter; +use kernel::i2c::I2cAdapterQuirks; use kernel::prelude::*; use kernel::bindings; @@ -283,8 +284,8 @@ impl Bcm2835I2cDev { let clk_i2c = ClkBcm2835I2c::from_raw(raw_ptr); let init_data = ClkInitData::new() .name_config(&name, &parent_names) - .ops::() - .flags(0); + .set_ops::() + .set_flags(0); clk_i2c.hw.set_init_data(&init_data); clk_i2c.i2c_dev = i2c_dev; @@ -520,6 +521,10 @@ fn bcm2835_i2c_func(adap: I2cAdapter) -> u32 { i2c::I2C_FUNC_I2C | i2c::I2C_FUNC_10BIT_ADDR | i2c::I2C_FUNC_PROTOCOL_MANGLING } +// I2C_AQ .. +const BCM2835_I2C_QUIRKS: I2cAdapterQuirks = + I2cAdapterQuirks::new().set_flags(i2c::I2C_AQ_NO_CLK_STRETCH); + struct Bcm2835I2cAlgo; struct Bcm2835I2cDriver; @@ -568,11 +573,16 @@ struct Bcm2835I2cDriver; impl platform::Driver for Bcm2835I2cDriver { fn probe( - dev: &mut platform::Device, + pdev: &mut platform::Device, id_info: core::prelude::v1::Option<&Self::IdInfo>, ) -> Result { // let pdev = dev. // TODO: initialize and probe i2c driver + let i2c_dev = unsafe { + let dev = &mut *(pdev.raw_device()) as &mut Device; + dev.kzalloc::()? + } as &mut Bcm2835I2cDev; + // TODO: initialize i2c_dev Ok(()) } diff --git a/rust/kernel/clk_provider.rs b/rust/kernel/clk_provider.rs index 2b72120257f93c..5cf4981d389946 100644 --- a/rust/kernel/clk_provider.rs +++ b/rust/kernel/clk_provider.rs @@ -6,7 +6,6 @@ use crate::{ bindings, - device::RawDevice, error::{from_result, to_result, Result}, prelude::*, str::CStr, @@ -100,7 +99,7 @@ impl ClkInitData { self } - pub fn ops(mut self) -> Self + pub fn set_ops(mut self) -> Self where T: ClkOps, { @@ -109,7 +108,7 @@ impl ClkInitData { self } - pub fn flags(mut self, flags: u64) -> Self { + pub fn set_flags(mut self, flags: u64) -> Self { self.0.flags = flags; self } diff --git a/rust/kernel/i2c.rs b/rust/kernel/i2c.rs index 270d5472375753..3d100e1f595122 100644 --- a/rust/kernel/i2c.rs +++ b/rust/kernel/i2c.rs @@ -40,6 +40,25 @@ pub const I2C_FUNC_SMBUS_BLOCK_DATA: u32 = bindings::I2C_FUNC_SMBUS_BLOCK_DATA; pub const I2C_FUNC_SMBUS_I2C_BLOCK: u32 = bindings::I2C_FUNC_SMBUS_I2C_BLOCK; pub const I2C_FUNC_SMBUS_EMUL: u32 = bindings::I2C_FUNC_SMBUS_EMUL; pub const I2C_FUNC_SMBUS_EMUL_ALL: u32 = bindings::I2C_FUNC_SMBUS_EMUL_ALL; + +// No BIT macros. +pub const I2C_AQ_NO_CLK_STRETCH: u32 = 1 << 4; +/// Represents i2c_adapter_quirks +/// +pub struct I2cAdapterQuirks(bindings::i2c_adapter_quirks); + +impl I2cAdapterQuirks { + pub fn new() -> Self { + let up = unsafe { MaybeUninit::::zeroed().assume_init() }; + Self(up) + } + + pub fn set_flags(mut self, flags: u64) -> Self { + self.0.flags = flags; + self + } +} + /// Represents i2c_msg /// pub struct I2cMsg(bindings::i2c_msg); @@ -68,7 +87,7 @@ impl I2cMsg { } // Safety: buf is valid for len bytes, no contiguity. let slice = unsafe { core::slice::from_raw_parts(buf, len) }; - Some(slice.to_vec()) + Some(*slice.to_vec()) } } @@ -87,18 +106,12 @@ impl I2cAdapter { self.0.get() as *const bindings::i2c_adapter } - pub fn as_mut_ptr(&mut self) -> *mut bindings::i2c_adapter { - self.0.get_mut() as *mut bindings::i2c_adapter - } - pub fn i2c_get_adapdata(&self) -> *mut T { - unsafe { - bindings::dev_get_drvdata(self.0.as_ptr() as *mut bindings::i2c_adapter) as *mut T - } + unsafe { bindings::dev_get_drvdata(self.0.get() as *mut bindings::i2c_adapter) as *mut T } } - pub fn timeout(&self) -> i32 { - self.0.get().timeout as i32 + pub fn timeout(&self) -> usize { + unsafe { (*self.0.get()).timeout as usize } } } /// Represents i2c_smbus_data From 6c708db0ae9d4a226eb9c53fd3006e7ca53bbbf8 Mon Sep 17 00:00:00 2001 From: Nostalgia Date: Sun, 4 Aug 2024 17:28:51 +0800 Subject: [PATCH 09/15] =?UTF-8?q?=E8=A1=A5=E5=85=85=20bcm2835=5Frust,=20i2?= =?UTF-8?q?c=20mod,=20device,=20platform,=20clk.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit bcm2835_rust: 部分修正,尝试填充probe函数。 i2c mod: 添加i2c_bcm2835quirks。 device, platform, clk. Signed-off-by: Nostalgia --- drivers/i2c/busses/i2c_bcm2835_rust.rs | 2 +- rust/kernel/clk.rs | 19 ++++++++++++++---- rust/kernel/clk_provider.rs | 2 +- rust/kernel/device.rs | 27 +++++++++++++++++++++++--- rust/kernel/i2c.rs | 18 +++++++++++++++-- rust/kernel/platform.rs | 20 +++++++++++++------ 6 files changed, 71 insertions(+), 17 deletions(-) diff --git a/drivers/i2c/busses/i2c_bcm2835_rust.rs b/drivers/i2c/busses/i2c_bcm2835_rust.rs index 583b79f5f3232e..1f9fa747d09c62 100644 --- a/drivers/i2c/busses/i2c_bcm2835_rust.rs +++ b/drivers/i2c/busses/i2c_bcm2835_rust.rs @@ -216,7 +216,7 @@ fn clk_bcm2835_i2c_set_rate(hw: &ClkHw, rate: u64, parent_rate: u64) -> Result<( if unsafe { rate > 0xffff * 1000 / CLK_TOUT_MS } { clk_tout = 0xffff; } else { - clk_tout = CLK_TOUT_MS * rate / 1000; + clk_tout = unsafe { CLK_TOUT_MS } * rate / 1000; } bcm2835_i2c_writel(&mut div.i2c_dev, BCM2835_I2C_CLKT, clk_tout); diff --git a/rust/kernel/clk.rs b/rust/kernel/clk.rs index b4c9f8a06d586d..f16eb5d62697ac 100644 --- a/rust/kernel/clk.rs +++ b/rust/kernel/clk.rs @@ -54,16 +54,27 @@ impl Clk { pub fn name(&self) -> &CStr { // SAFETY: if clk is valid, name is valid. name must be a UTF-8 string. - unsafe { - CStr::from_char_ptr(bindings::__clk_get_name(self.0.get())) - } + unsafe { CStr::from_char_ptr(bindings::__clk_get_name(self.0.get())) } + } + + pub fn set_rate(&self, rate: u64) -> Result { + let ret = unsafe { bindings::clk_set_rate(self.0.get(), rate) }; + to_result(ret) + } + + pub fn set_rate_exclusive(&self, rate: u64) -> Result { + let ret = unsafe { bindings::clk_set_rate_exclusive(self.0.get(), rate) }; + to_result(ret) } } impl Drop for Clk { fn drop(&mut self) { // SAFETY: The pointer is valid by the type invariant. - unsafe { bindings::clk_put(self.0.get()) }; + unsafe { + bindings::clk_rate_exclusive_put(self.0.get()); + bindings::clk_put(self.0.get()); + } } } diff --git a/rust/kernel/clk_provider.rs b/rust/kernel/clk_provider.rs index 5cf4981d389946..6e5fed2e895f97 100644 --- a/rust/kernel/clk_provider.rs +++ b/rust/kernel/clk_provider.rs @@ -25,7 +25,7 @@ pub struct ClkRateRequest(bindings::clk_rate_request); /// Represents `struct clk_duty` pub struct ClkDuty(bindings::clk_duty); -/// Represents `struct clk_hw` +/// Reresents `struct clk_hw` /// /// # Invariants /// diff --git a/rust/kernel/device.rs b/rust/kernel/device.rs index 1248a903901fbd..5c96c1f1c03aa5 100644 --- a/rust/kernel/device.rs +++ b/rust/kernel/device.rs @@ -9,11 +9,14 @@ use crate::{ clk::Clk, clk_provider::ClkHw, dev_err, - error::{code::*, from_err_ptr, Result}, + error::{code::*, from_err_ptr, to_result, Result}, macros::pin_data, pin_init, pr_crit, str::CStr, - sync::{lock::mutex, lock::Guard, LockClassKey, Mutex, UniqueArc}, + sync::{ + lock::{mutex, Guard}, + LockClassKey, Mutex, UniqueArc, + }, }; use core::{ fmt, @@ -233,12 +236,30 @@ impl Device { /// Allocate(kzalloc) and return the corresponding mutable pointer. pub fn kzalloc(&self) -> Result<*mut T> { let size = core::mem::size_of::(); - let ptr = unsafe {bindings::devm_kmalloc(self.ptr, size, bindings::GFP_KERNEL | bindings::__GFP_ZERO)}; + let ptr = unsafe { + bindings::devm_kmalloc(self.ptr, size, bindings::GFP_KERNEL | bindings::__GFP_ZERO) + }; if ptr.is_null() { return Err(ENOMEM); } Ok(ptr as *mut T) } + + /// get match data of type T + pub fn get_match_data(&self) -> Result<*mut T> { + let ptr = unsafe { bindings::of_device_get_match_data(self.ptr) }; + // return ptr must be null. + Ok(ptr as *mut T) + } + + // Find and read an array of 32 bit from a property. + pub fn of_property_read_u32(&self, propname: &'static CStr, out_values: &u32) -> Result { + let ret = unsafe { + let np = self.ptr.of_node; + bindings::of_property_read_variable_u32_array(np, propname.as_char_ptr(), out_values, 1) + }; + to_result(ret) + } } // SAFETY: The device returned by `raw_device` is the one for which we hold a reference. diff --git a/rust/kernel/i2c.rs b/rust/kernel/i2c.rs index 3d100e1f595122..a5a5f952d31465 100644 --- a/rust/kernel/i2c.rs +++ b/rust/kernel/i2c.rs @@ -1,6 +1,9 @@ use core::marker::PhantomData; -use crate::types::{ForeignOwnable, Opaque}; +use crate::{ + error::{to_result, Result}, + types::{ForeignOwnable, Opaque}, +}; use alloc::vec::Vec; use macros::vtable; @@ -106,10 +109,21 @@ impl I2cAdapter { self.0.get() as *const bindings::i2c_adapter } - pub fn i2c_get_adapdata(&self) -> *mut T { + pub unsafe fn i2c_get_adapdata(&self) -> *mut T { unsafe { bindings::dev_get_drvdata(self.0.get() as *mut bindings::i2c_adapter) as *mut T } } + pub unsafe fn i2c_set_adapdata(&self, data: *mut T) { + unsafe { + bindings::dev_set_drvdata(self.0.get() as *mut bindings::i2c_adapter, data as *mut ()) + } + } + + pub fn i2c_add_adapter(&self) -> Result { + let ret = unsafe { bindings::i2c_add_adapter(self.0.get()) }; + to_result(ret) + } + pub fn timeout(&self) -> usize { unsafe { (*self.0.get()).timeout as usize } } diff --git a/rust/kernel/platform.rs b/rust/kernel/platform.rs index 74c0a52911bb86..bb6e69d1847387 100644 --- a/rust/kernel/platform.rs +++ b/rust/kernel/platform.rs @@ -10,12 +10,14 @@ use crate::{ bindings, device::{self, RawDevice}, driver, - error::{from_result, to_result, from_err_ptr, Result}, + error::{from_err_ptr, from_result, to_result, Result}, + io_mem::Resource, of, str::CStr, types::ForeignOwnable, ThisModule, }; +use kernel::io_mem::IoMem; /// A registration of a platform driver. pub type Registration = driver::Registration>; @@ -186,20 +188,26 @@ impl Device { /// Returns irq of the platform device. pub fn irq_resource(&self, index: u32) -> Result { // SAFETY: By the type invariants, we know that `self.ptr` is non-null and valid. - to_result(unsafe {bindings::platform_get_irq(self.ptr, index)}) + to_result(unsafe { bindings::platform_get_irq(self.ptr, index) }) } /// Return ioremap ptr pub fn ioremap_resource(&self, index: u32) -> Result<*mut u8> { // SAFETY: FFI call. unsafe { - let ptr = from_err_ptr(bindings::devm_platform_ioremap_resource( - self.ptr, - index, - ))?; + let ptr = from_err_ptr(bindings::devm_platform_ioremap_resource(self.ptr, index))?; Ok(ptr as *mut u8) } } + + // TODO! + /* + pub fn get_and_ioremap_resource(&self, index: u32) -> Result { + unsafe { + let res: *mut *mut bindings::resource = core::ptr::null_mut(); + let ptr = bindings::devm_platform_ioremap_resource(self.ptr, index, res) as IoMem; + } + }*/ } // SAFETY: The device returned by `raw_device` is the raw platform device. From 2775d2b3a95292489c28aa57c9c3b544e5bab887 Mon Sep 17 00:00:00 2001 From: Nostalgia Date: Sun, 4 Aug 2024 17:28:51 +0800 Subject: [PATCH 10/15] =?UTF-8?q?=E8=A1=A5=E5=85=85=20bcm2835=5Frust,=20i2?= =?UTF-8?q?c=20mod,=20device,=20platform,=20clk.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit bcm2835_rust: 部分修正,尝试填充probe函数。 i2c mod: 添加i2c_bcm2835quirks。 device, platform, clk. Signed-off-by: Nostalgia --- rust/kernel/device.rs | 12 +++++++++--- rust/kernel/i2c.rs | 27 +++++++++++++++++++-------- 2 files changed, 28 insertions(+), 11 deletions(-) diff --git a/rust/kernel/device.rs b/rust/kernel/device.rs index 5c96c1f1c03aa5..d502b676ef01e7 100644 --- a/rust/kernel/device.rs +++ b/rust/kernel/device.rs @@ -253,10 +253,16 @@ impl Device { } // Find and read an array of 32 bit from a property. - pub fn of_property_read_u32(&self, propname: &'static CStr, out_values: &u32) -> Result { + pub unsafe fn of_property_read_u32(&self, propname: &'static CStr, out_values: *mut u32) -> Result { let ret = unsafe { - let np = self.ptr.of_node; - bindings::of_property_read_variable_u32_array(np, propname.as_char_ptr(), out_values, 1) + let np = (*self.raw_device()).of_node; + bindings::of_property_read_variable_u32_array( + np, + propname.as_char_ptr(), + out_values, + 1, + 0, + ) }; to_result(ret) } diff --git a/rust/kernel/i2c.rs b/rust/kernel/i2c.rs index a5a5f952d31465..df2b2d71c01ab9 100644 --- a/rust/kernel/i2c.rs +++ b/rust/kernel/i2c.rs @@ -1,10 +1,10 @@ -use core::marker::PhantomData; - use crate::{ error::{to_result, Result}, types::{ForeignOwnable, Opaque}, }; use alloc::vec::Vec; +use core::mem::MaybeUninit; +use core::{ffi::c_void, marker::PhantomData}; use macros::vtable; pub const I2C_M_RD: u32 = bindings::I2C_M_RD; @@ -90,7 +90,7 @@ impl I2cMsg { } // Safety: buf is valid for len bytes, no contiguity. let slice = unsafe { core::slice::from_raw_parts(buf, len) }; - Some(*slice.to_vec()) + Some(slice.to_vec()) } } @@ -103,14 +103,25 @@ impl Default for I2cMsg { /// Represents i2c_adapter /// -pub struct I2cAdapter(Opaque); +pub struct I2cAdapter(bindings::i2c_adapter); impl I2cAdapter { - pub fn as_ptr(&self) -> *const bindings::i2c_adapter { - self.0.get() as *const bindings::i2c_adapter + pub fn as_ptr(&self) -> *mut bindings::i2c_adapter { + &self.0 as *const _ as *mut _ } pub unsafe fn i2c_get_adapdata(&self) -> *mut T { - unsafe { bindings::dev_get_drvdata(self.0.get() as *mut bindings::i2c_adapter) as *mut T } + unsafe { bindings::dev_get_drvdata(&self.0.dev as *const _ as *mut _) as *mut T } + } + + pub unsafe fn i2c_set_adapdata(&self, data: *mut T) { + unsafe { + self.0.dev.driver_data = data as *mut c_void; + } + } + + pub fn i2c_add_adapter(&self) -> Result { + let ret = unsafe { bindings::i2c_add_adapter(self.as_ptr()) }; + to_result(ret) } pub unsafe fn i2c_set_adapdata(&self, data: *mut T) { @@ -125,7 +136,7 @@ impl I2cAdapter { } pub fn timeout(&self) -> usize { - unsafe { (*self.0.get()).timeout as usize } + unsafe { self.0.timeout as usize } } } /// Represents i2c_smbus_data From 9159c00f920b0dd6077e839fa795fde5548ff649 Mon Sep 17 00:00:00 2001 From: Nostalgia Date: Sun, 4 Aug 2024 17:28:51 +0800 Subject: [PATCH 11/15] =?UTF-8?q?=E8=A1=A5=E5=85=85=20bcm2835=5Frust,=20i2?= =?UTF-8?q?c=20mod,=20device,=20platform,=20clk.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit bcm2835_rust: 部分修正,尝试填充probe函数。 i2c mod: 添加i2c_bcm2835quirks。 device, platform, clk. Signed-off-by: Nostalgia --- rust/kernel/i2c.rs | 11 ----------- rust/kernel/platform.rs | 10 ++++++++++ 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/rust/kernel/i2c.rs b/rust/kernel/i2c.rs index df2b2d71c01ab9..d80582251e6ac8 100644 --- a/rust/kernel/i2c.rs +++ b/rust/kernel/i2c.rs @@ -124,17 +124,6 @@ impl I2cAdapter { to_result(ret) } - pub unsafe fn i2c_set_adapdata(&self, data: *mut T) { - unsafe { - bindings::dev_set_drvdata(self.0.get() as *mut bindings::i2c_adapter, data as *mut ()) - } - } - - pub fn i2c_add_adapter(&self) -> Result { - let ret = unsafe { bindings::i2c_add_adapter(self.0.get()) }; - to_result(ret) - } - pub fn timeout(&self) -> usize { unsafe { self.0.timeout as usize } } diff --git a/rust/kernel/platform.rs b/rust/kernel/platform.rs index bb6e69d1847387..6a200245d97d73 100644 --- a/rust/kernel/platform.rs +++ b/rust/kernel/platform.rs @@ -6,6 +6,8 @@ //! //! C header: [`include/linux/platform_device.h`](../../../../include/linux/platform_device.h) +use core::ffi::c_void; + use crate::{ bindings, device::{self, RawDevice}, @@ -200,6 +202,14 @@ impl Device { } } + pub unsafe fn platform_set_drvdata(&self, data: *mut T) { + unsafe { bindings::platform_set_drvdata(self.ptr, data as *mut c_void) }; + } + + pub unsafe fn platform_get_drvdata(&self) -> *mut T { + unsafe { bindings::platform_get_drvdata(self.ptr) as *mut T } + } + // TODO! /* pub fn get_and_ioremap_resource(&self, index: u32) -> Result { From d11e850dde301499d9fd628956cc8523a9598dbf Mon Sep 17 00:00:00 2001 From: Nostalgia Date: Sun, 4 Aug 2024 17:28:51 +0800 Subject: [PATCH 12/15] =?UTF-8?q?=E8=A1=A5=E5=85=85=20bcm2835=5Frust,=20i2?= =?UTF-8?q?c=20mod,=20device,=20platform,=20clk.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit bcm2835_rust: 部分修正,尝试填充probe函数。 i2c mod: 添加i2c_bcm2835quirks。 device, platform, clk. Signed-off-by: Nostalgia --- drivers/i2c/busses/i2c_bcm2835_rust.rs | 164 +++++++++---------------- rust/kernel/i2c.rs | 11 +- 2 files changed, 66 insertions(+), 109 deletions(-) diff --git a/drivers/i2c/busses/i2c_bcm2835_rust.rs b/drivers/i2c/busses/i2c_bcm2835_rust.rs index 1f9fa747d09c62..46ea947639133e 100644 --- a/drivers/i2c/busses/i2c_bcm2835_rust.rs +++ b/drivers/i2c/busses/i2c_bcm2835_rust.rs @@ -2,42 +2,23 @@ //! BCM2835 master mode driver -use core::num; - -use kernel::driver::DeviceRemoval; -use kernel::error::to_result; -use kernel::i2c; -use kernel::i2c::I2cAdapter; -use kernel::i2c::I2cAdapterQuirks; -use kernel::prelude::*; - -use kernel::bindings; -use kernel::clk::Clk; -use kernel::clk_provider::ClkHw; -use kernel::clk_provider::ClkInitData; -use kernel::clk_provider::ClkOps; -use kernel::completion::Completion; -use kernel::device::Device; -use kernel::device::RawDevice; -use kernel::driver; -use kernel::i2c::{I2cMsg, I2C_M_RD}; -use kernel::io_mem::IoMem; -use kernel::irq; -use kernel::of::DeviceId; -use kernel::platform; -use kernel::prelude::*; -use kernel::str::CString; -use kernel::sync::Arc; - -use kernel::c_str; -use kernel::container_of; -use kernel::define_of_id_table; -use kernel::module_platform_driver; - -use kernel::c_str; -use kernel::container_of; -use kernel::define_of_id_table; -use kernel::module_platform_driver; +use kernel::{ + bindings, + clk::Clk, + clk_provider::{ClkHw, ClkInitData, ClkOps}, + completion::Completion, + device::{Device, RawDevice}, + driver::DeviceRemoval, + error::to_result, + i2c::{self, I2cAdapter, I2cAdapterQuirks, I2cMsg, I2C_M_NOSTART, I2C_M_RD}, + io_mem::IoMem, + irq, + of::DeviceId, + platform, + prelude::*, + str::CString, + {c_str, container_of, define_of_id_table, module_platform_driver}, +}; /// I2C 地址预留空间 const I2C_SIZE: usize = 0x100; @@ -188,7 +169,8 @@ fn clk_bcm2835_i2c_set_rate(hw: &ClkHw, rate: u64, parent_rate: u64) -> Result<( let div = to_clk_bcm2835_i2c(hw); let divider = clk_bcm2835_i2c_calc_divider(rate, parent_rate)?; - bcm2835_i2c_writel(&mut div.i2c_dev, BCM2835_I2C_DIV, divider as u32); + div.i2c_dev + .bcm2835_i2c_writel(BCM2835_I2C_DIV, divider as u32); /* * Number of core clocks to wait after falling edge before @@ -203,8 +185,7 @@ fn clk_bcm2835_i2c_set_rate(hw: &ClkHw, rate: u64, parent_rate: u64) -> Result<( */ let redl = 1.max(divider / 4); - bcm2835_i2c_writel( - &mut div.i2c_dev, + div.i2c_dev.bcm2835_i2c_writel( BCM2835_I2C_DEL, ((fedl << BCM2835_I2C_FEDL_SHIFT) | (redl << BCM2835_I2C_REDL_SHIFT)) as u32, ); @@ -219,7 +200,7 @@ fn clk_bcm2835_i2c_set_rate(hw: &ClkHw, rate: u64, parent_rate: u64) -> Result<( clk_tout = unsafe { CLK_TOUT_MS } * rate / 1000; } - bcm2835_i2c_writel(&mut div.i2c_dev, BCM2835_I2C_CLKT, clk_tout); + div.i2c_dev.bcm2835_i2c_writel(BCM2835_I2C_CLKT, clk_tout); Ok(()) } @@ -234,7 +215,7 @@ fn clk_bcm2835_i2c_round_rate(hw: &ClkHw, rate: u64, parent_rate: &mut u64) -> i fn clk_bcm2835_i2c_recalc_rate(hw: &ClkHw, parent_rate: u64) -> u64 { let div = to_clk_bcm2835_i2c(hw); - let divider = bcm2835_i2c_readl(&mut div.i2c_dev, BCM2835_I2C_DIV) as u64; + let divider = div.i2c_dev.bcm2835_i2c_readl(BCM2835_I2C_DIV) as u64; parent_rate.div_ceil(divider) } @@ -303,7 +284,7 @@ impl Bcm2835I2cDev { pub(crate) fn bcm2835_fill_txfifo(i2c_dev: &'static mut Bcm2835I2cDev) { while i2c_dev.msg_buf_remaining > 0 { - let val: u32 = bcm2835_i2c_readl(i2c_dev, BCM2835_I2C_S); + let val: u32 = i2c_dev.bcm2835_i2c_readl(BCM2835_I2C_S); if !(val & BCM2835_I2C_S_TXD) != 0 { break; } @@ -325,7 +306,7 @@ impl Bcm2835I2cDev { } // May Wrong! if let Some(ref mut buf) = i2c_dev.msg_buf { - buf[0] = bcm2835_i2c_readl(i2c_dev, BCM2835_I2C_FIFO) as u8; + buf[0] = i2c_dev.bcm2835_i2c_readl(i2c_dev, BCM2835_I2C_FIFO) as u8; let buf = &mut buf[1..]; i2c_dev.msg_buf_remaining -= 1; } @@ -336,9 +317,9 @@ impl Bcm2835I2cDev { let c: u32 = BCM2835_I2C_C_ST | BCM2835_I2C_C_I2CEN; // Caution: assume msg is valid. let msg = i2c_dev.curr_msg.unwrap().pop().unwrap(); - let last_msg = (i2c_dev.num_msgs == 1); + let last_msg = i2c_dev.num_msgs == 1; - if !lasti2c_dev.num_msgs != 0 { + if !i2c_dev.num_msgs != 0 { return; } @@ -377,14 +358,12 @@ fn bcm2835_i2c_isr(this_irq: i32, data: *mut core::ffi::c_void) -> irq::Return { let i2c_dev = unsafe { &mut *(data as *mut Bcm2835I2cDev) }; let mut val: u32 = i2c_dev.bcm2835_i2c_readl(BCM2835_I2C_S); - // bcm2835_debug_add() let err: u32 = val & (BCM2835_I2C_S_CLKT | BCM2835_I2C_S_ERR); - if err && !(val & BCM2835_I2C_S_TA) != 0 { + if err != 0 && (val & BCM2835_I2C_S_TA) == 0 { i2c_dev.msg_err = err; } - // omit msg_buf operation for now. if val & BCM2835_I2C_S_DONE != 0 { match i2c_dev.curr_msg { Some(ref mut msg) if msg.flags() & I2C_M_RD != 0 => { @@ -392,30 +371,31 @@ fn bcm2835_i2c_isr(this_irq: i32, data: *mut core::ffi::c_void) -> irq::Return { val = i2c_dev.bcm2835_i2c_readl(BCM2835_I2C_S); } None => { - dev_err!(i2c_dev.dev, "Got unexpected interrupt (from firmware?)\n") + dev_err!(i2c_dev.dev, "Got unexpected interrupt (from firmware?)\n"); + return irq::Return::Handled; } _ => {} } - if (val & BCM2835_I2C_S_RXD) || i2c_dev.msg_buf_remaining != 0 { + if (val & BCM2835_I2C_S_RXD) != 0 || i2c_dev.msg_buf_remaining != 0 { i2c_dev.msg_err = BCM2835_I2C_S_LEN; } - goto_complete(i2c_dev); + return goto_complete(i2c_dev); } if val & BCM2835_I2C_S_TXW != 0 { - if !i2c_dev.msg_buf_remaining != 0 { + if i2c_dev.msg_buf_remaining == 0 { i2c_dev.msg_err = val | BCM2835_I2C_S_LEN; - goto_complete(i2c_dev); + return goto_complete(i2c_dev); } i2c_dev.bcm2835_fill_txfifo(); - if i2c_dev.num_msgs && !i2c_dev.msg_buf_remaining != 0 { + if i2c_dev.num_msgs != 0 && i2c_dev.msg_buf_remaining == 0 { if let Some(ref mut curr_msg) = i2c_dev.curr_msg { - let curr_msg = curr_msg[1..]; - i2c_dev.curr_msg = Some(curr_msg); + let curr_msg = &curr_msg[1..]; + i2c_dev.curr_msg = Some(curr_msg.to_vec()); } i2c_dev.bcm2835_i2c_start_transfer(); } @@ -424,40 +404,41 @@ fn bcm2835_i2c_isr(this_irq: i32, data: *mut core::ffi::c_void) -> irq::Return { } if val & BCM2835_I2C_S_RXR != 0 { - if !i2c_dev.msg_buf_remaining != 0 { + if i2c_dev.msg_buf_remaining == 0 { i2c_dev.msg_err = val | BCM2835_I2C_S_LEN; - goto_complete(i2c_dev); + return goto_complete(i2c_dev); } i2c_dev.bcm2835_fill_rxfifo(); return irq::Return::Handled; } - return irq::Return::None; - fn goto_complete(i2c_dev: &'static mut Bcm2835I2cDev) -> irq::Return { - i2c_dev.bcm2835_i2c_writel(BCM2835_I2C_C, BCM2835_I2C_C_CLEAR); - i2c_dev.bcm2835_i2c_writel( - BCM2835_I2C_S, - BCM2835_I2C_CLKT | BCM2835_I2C_S_ERR | BCM2835_I2C_S_DONE, - ); - i2c_dev.completion.complete(); + irq::Return::None +} - irq::Return::Handled - } +fn goto_complete(i2c_dev: &mut Bcm2835I2cDev) -> irq::Return { + i2c_dev.bcm2835_i2c_writel(BCM2835_I2C_C, BCM2835_I2C_C_CLEAR); + i2c_dev.bcm2835_i2c_writel( + BCM2835_I2C_S, + BCM2835_I2C_CLKT | BCM2835_I2C_S_ERR | BCM2835_I2C_S_DONE, + ); + i2c_dev.completion.complete(); + + irq::Return::Handled } fn bcm2835_i2c_xfer(adap: I2cAdapter, msgs: Vec, num: i32) -> Result<()> { let i2c_dev = unsafe { &mut *(adap.data as *mut Bcm2835I2cDev) }; - let ignore_nak = false; + let mut ignore_nak = false; if unsafe { DEBUG != 0 } { i2c_dev.debug_num_msgs = num; } if unsafe { DEBUG > 2 } { - //for 0..num { - // print msg - //} + // for 0..num { + // print msg + // } } for msg in &msgs { @@ -478,7 +459,6 @@ fn bcm2835_i2c_xfer(adap: I2cAdapter, msgs: Vec, num: i32) -> Result<()> i2c_dev.msg_err = 0; i2c_dev.completion.reinit(); - i2c_dev.bcm2835_i2c_start_transfer(); let time_left = i2c_dev @@ -491,18 +471,20 @@ fn bcm2835_i2c_xfer(adap: I2cAdapter, msgs: Vec, num: i32) -> Result<()> i2c_dev.msg_err &= !BCM2835_I2C_S_ERR; } - if unsafe { DEBUG > 1 || (DEBUG && (!time_left || i2c_dev.msg_err)) } { + if unsafe { DEBUG > 1 || (DEBUG != 0 && (!time_left || i2c_dev.msg_err != 0)) } { // debug print } + i2c_dev.debug_num_msgs = 0; i2c_dev.debug_num = 0; - if !time_left != 0 { + + if time_left == 0 { i2c_dev.bcm2835_i2c_writel(BCM2835_I2C_C, BCM2835_I2C_C_CLEAR); dev_err!(i2c_dev.dev, "i2c transfer timed out\n"); return Err(ETIMEDOUT); } - if !i2c_dev.msg_err != 0 { + if i2c_dev.msg_err == 0 { return to_result(num); } @@ -514,7 +496,7 @@ fn bcm2835_i2c_xfer(adap: I2cAdapter, msgs: Vec, num: i32) -> Result<()> return Err(EREMOTEIO); } - Err(EIO); + Err(EIO) } fn bcm2835_i2c_func(adap: I2cAdapter) -> u32 { @@ -527,6 +509,7 @@ const BCM2835_I2C_QUIRKS: I2cAdapterQuirks = struct Bcm2835I2cAlgo; +struct Bcm2835I2cData; struct Bcm2835I2cDriver; impl DeviceRemoval for Bcm2835I2cData { @@ -542,33 +525,6 @@ kernel::define_of_id_table! {BCM2835_I2C_ID_TABLE, (), [ (DeviceId::Compatible(b"brcm,bcm2835-i2c"), None), ]} -struct Bcm2835I2cDriver; -impl platform::Driver for Bcm2835I2cDriver { - kernel::driver_of_id_table!(BCM2835_I2C_ID_TABLE); - // type Data = Arc; - type Data = (); - - fn probe( - dev: &mut platform::Device, - id_info: core::prelude::v1::Option<&Self::IdInfo>, - ) -> Result { - // let pdev = dev. - // TODO: initialize and probe i2c driver - Ok(()) - } - - fn remove(_data: &Self::Data) -> Result { - // TODO: remove i2c driver - Ok(()) - } - - // TODO: complete the table - // define_of_id_table! {(), [ - // (of::DeviceId::Compatible(b"brcm,bcm2711-i2c"), None), - // (of::DeviceId::Compatible(b"brcm,bcm2835-i2c"), None), - // ]} -} - struct Bcm2835I2cDriver; impl platform::Driver for Bcm2835I2cDriver { diff --git a/rust/kernel/i2c.rs b/rust/kernel/i2c.rs index d80582251e6ac8..38e194134e6bb3 100644 --- a/rust/kernel/i2c.rs +++ b/rust/kernel/i2c.rs @@ -2,7 +2,7 @@ use crate::{ error::{to_result, Result}, types::{ForeignOwnable, Opaque}, }; -use alloc::vec::Vec; +use alloc::vec::{self, Vec}; use core::mem::MaybeUninit; use core::{ffi::c_void, marker::PhantomData}; use macros::vtable; @@ -82,15 +82,16 @@ impl I2cMsg { self.0.addr as u16 } + /// return buf of i2c_msg and transfer ownership of the buf pub fn buf_to_vec(&self) -> Option> { let len = self.len() as usize; - let buf = self.0.buf as *const u8; + let buf = self.0.buf as *const _ as *mut u8; if buf.is_null() { return None; } // Safety: buf is valid for len bytes, no contiguity. - let slice = unsafe { core::slice::from_raw_parts(buf, len) }; - Some(slice.to_vec()) + let vec: Vec = unsafe { Vec::from_raw_parts(buf, len, len) }; + Some(vec) } } @@ -113,7 +114,7 @@ impl I2cAdapter { unsafe { bindings::dev_get_drvdata(&self.0.dev as *const _ as *mut _) as *mut T } } - pub unsafe fn i2c_set_adapdata(&self, data: *mut T) { + pub unsafe fn i2c_set_adapdata(&mut self, data: *mut T) { unsafe { self.0.dev.driver_data = data as *mut c_void; } From ce3fc3801e9f72b660ee32ce1f80ec95109a20ac Mon Sep 17 00:00:00 2001 From: Nostalgia Date: Mon, 5 Aug 2024 19:41:04 +0800 Subject: [PATCH 13/15] =?UTF-8?q?=E4=BF=AE=E6=AD=A3bcm2835=5Frust?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修正函数中数值及类型部分 Signed-off-by: Nostalgia --- drivers/i2c/busses/i2c_bcm2835_rust.rs | 130 +++++++++++++------------ rust/kernel/i2c.rs | 2 + 2 files changed, 69 insertions(+), 63 deletions(-) diff --git a/drivers/i2c/busses/i2c_bcm2835_rust.rs b/drivers/i2c/busses/i2c_bcm2835_rust.rs index 46ea947639133e..4a8c4ffbae6962 100644 --- a/drivers/i2c/busses/i2c_bcm2835_rust.rs +++ b/drivers/i2c/busses/i2c_bcm2835_rust.rs @@ -2,6 +2,8 @@ //! BCM2835 master mode driver +use core::ops::Not; + use kernel::{ bindings, clk::Clk, @@ -71,10 +73,13 @@ pub const BCM2835_I2C_REDL_SHIFT: u32 = 0; pub const BCM2835_I2C_CDIV_MIN: u32 = 0x0002; pub const BCM2835_I2C_CDIV_MAX: u32 = 0xFFFE; -static mut DEBUG: i32 = 0; +// Debug and Clk_tout_ms is static mut in C code. +// Take as const for now. + +pub const DEBUG: i32 = 0; /// SMBUs-recommended 35ms -static mut CLK_TOUT_MS: u32 = 35; +pub const CLK_TOUT_MS: u32 = 35; /// Maximum number of debug messages pub const BCM2835_DEBUG_MAX: usize = 512; @@ -167,10 +172,9 @@ fn clk_bcm2835_i2c_calc_divider(rate: u64, parent_rate: u64) -> Result { fn clk_bcm2835_i2c_set_rate(hw: &ClkHw, rate: u64, parent_rate: u64) -> Result<()> { let div = to_clk_bcm2835_i2c(hw); - let divider = clk_bcm2835_i2c_calc_divider(rate, parent_rate)?; + let divider = clk_bcm2835_i2c_calc_divider(rate, parent_rate)? as u32; - div.i2c_dev - .bcm2835_i2c_writel(BCM2835_I2C_DIV, divider as u32); + div.i2c_dev.bcm2835_i2c_writel(BCM2835_I2C_DIV, divider); /* * Number of core clocks to wait after falling edge before @@ -193,24 +197,25 @@ fn clk_bcm2835_i2c_set_rate(hw: &ClkHw, rate: u64, parent_rate: u64) -> Result<( /* * Set the clock stretch timeout. */ - let clk_tout: u32; - if unsafe { rate > 0xffff * 1000 / CLK_TOUT_MS } { - clk_tout = 0xffff; - } else { - clk_tout = unsafe { CLK_TOUT_MS } * rate / 1000; - } + let clk_tout: u32 = { + if unsafe { rate as u32 > 0xffff * 1000 / CLK_TOUT_MS } { + 0xffff + } else { + unsafe { CLK_TOUT_MS * rate as u32 / 1000 } + } + }; div.i2c_dev.bcm2835_i2c_writel(BCM2835_I2C_CLKT, clk_tout); Ok(()) } -fn clk_bcm2835_i2c_round_rate(hw: &ClkHw, rate: u64, parent_rate: &mut u64) -> i64 { +fn clk_bcm2835_i2c_round_rate(hw: &ClkHw, rate: u64, parent_rate: &mut u64) -> i32 { let Ok(divider) = clk_bcm2835_i2c_calc_divider(rate, *parent_rate) else { return 0; }; - parent_rate.div_ceil(divider) as i64 + parent_rate.div_ceil(divider) as i32 } fn clk_bcm2835_i2c_recalc_rate(hw: &ClkHw, parent_rate: u64) -> u64 { @@ -228,8 +233,9 @@ impl ClkOps for ClkBcm2835I2cOps { clk_bcm2835_i2c_set_rate(hw, rate, parent_rate) } + // bad implementation! u64 and u32 in diff env. fn round_rate(hw: &ClkHw, rate: u64, parent_rate: &mut u64) -> i64 { - clk_bcm2835_i2c_round_rate(hw, rate, parent_rate) + clk_bcm2835_i2c_round_rate(hw, rate, parent_rate).into() } fn recalc_rate(hw: &ClkHw, parent_rate: u64) -> u64 { @@ -238,14 +244,14 @@ impl ClkOps for ClkBcm2835I2cOps { } impl Bcm2835I2cDev { - pub fn bcm2835_i2c_writel(i2c_dev: &mut Bcm2835I2cDev, reg: usize, val: u32) { - let i2c_reg = i2c_dev.regs.get(); + pub fn bcm2835_i2c_writel(&mut self, reg: usize, val: u32) { + let i2c_reg = self.regs.get(); let addr = i2c_reg.wrapping_add(reg); unsafe { bindings::writel(val as _, addr as _) } } - pub fn bcm2835_i2c_readl(i2c_dev: &mut Bcm2835I2cDev, reg: usize) -> u32 { - let i2c_reg = i2c_dev.regs.get(); + pub fn bcm2835_i2c_readl(&mut self, reg: usize) -> u32 { + let i2c_reg = self.regs.get(); let addr = i2c_reg.wrapping_add(reg); unsafe { bindings::readl(addr as _) } } @@ -282,54 +288,54 @@ impl Bcm2835I2cDev { dev.clk_register(&mut clk_i2c.hw) } - pub(crate) fn bcm2835_fill_txfifo(i2c_dev: &'static mut Bcm2835I2cDev) { - while i2c_dev.msg_buf_remaining > 0 { - let val: u32 = i2c_dev.bcm2835_i2c_readl(BCM2835_I2C_S); + pub(crate) fn bcm2835_fill_txfifo(&mut self) { + while self.msg_buf_remaining > 0 { + let val: u32 = self.bcm2835_i2c_readl(BCM2835_I2C_S); if !(val & BCM2835_I2C_S_TXD) != 0 { break; } // May Wrong! - if let Some(ref mut buf) = i2c_dev.msg_buf { + if let Some(ref mut buf) = self.msg_buf { // Safety: msg_buf_remaining > 0 - i2c_dev.bcm2835_i2c_writel(BCM2835_I2C_FIFO, buf[0] as u32); + self.bcm2835_i2c_writel(BCM2835_I2C_FIFO, buf[0] as u32); let buf = &mut buf[1..]; - i2c_dev.msg_buf_remaining -= 1; + self.msg_buf_remaining -= 1; } } } - pub(crate) fn bcm2835_drain_rxfifo(i2c_dev: &'static mut Bcm2835I2cDev) { - while i2c_dev.msg_buf_remaining > 0 { - let val: u32 = bcm2835_i2c_readl(i2c_dev, BCM2835_I2C_S); + pub(crate) fn bcm2835_drain_rxfifo(&mut self) { + while self.msg_buf_remaining > 0 { + let val: u32 = self.bcm2835_i2c_readl(BCM2835_I2C_S); if !(val & BCM2835_I2C_S_RXD) != 0 { break; } // May Wrong! - if let Some(ref mut buf) = i2c_dev.msg_buf { - buf[0] = i2c_dev.bcm2835_i2c_readl(i2c_dev, BCM2835_I2C_FIFO) as u8; + if let Some(ref mut buf) = self.msg_buf { + buf[0] = self.bcm2835_i2c_readl(BCM2835_I2C_FIFO) as u8; let buf = &mut buf[1..]; - i2c_dev.msg_buf_remaining -= 1; + self.msg_buf_remaining -= 1; } } } - pub fn bcm2835_i2c_start_transfer(i2c_dev: &'static mut Bcm2835I2cDev) { + pub fn bcm2835_i2c_start_transfer(&mut self) { let c: u32 = BCM2835_I2C_C_ST | BCM2835_I2C_C_I2CEN; // Caution: assume msg is valid. - let msg = i2c_dev.curr_msg.unwrap().pop().unwrap(); - let last_msg = i2c_dev.num_msgs == 1; + let msg = self.curr_msg.unwrap().pop().unwrap(); + let last_msg = self.num_msgs == 1; - if !i2c_dev.num_msgs != 0 { + if !self.num_msgs != 0 { return; } - i2c_dev.num_msgs -= 1; + self.num_msgs -= 1; // Caution: ownership transfer. // other fields are fine. - i2c_dev.msg_buf = msg.buf_to_vec(); - i2c_dev.msg_buf_remaining = msg.len(); + self.msg_buf = msg.buf_to_vec(); + self.msg_buf_remaining = msg.len() as usize; - if msg.flags() & I2C_M_RD != 0 { + if msg.flags() as u32 & I2C_M_RD != 0 { c |= BCM2835_I2C_C_READ | BCM2835_I2C_C_INTR; } else { c |= BCM2835_I2C_C_INTT; @@ -339,18 +345,18 @@ impl Bcm2835I2cDev { c |= BCM2835_I2C_C_INTD; } - i2c_dev.bcm2835_i2c_writel(BCM2835_I2C_A, msg.addr() as u32); - i2c_dev.bcm2835_i2c_writel(BCM2835_I2C_DLEN, msg.len() as u32); - i2c_dev.bcm2835_i2c_writel(BCM2835_I2C_C, c); + self.bcm2835_i2c_writel(BCM2835_I2C_A, msg.addr() as u32); + self.bcm2835_i2c_writel(BCM2835_I2C_DLEN, msg.len() as u32); + self.bcm2835_i2c_writel(BCM2835_I2C_C, c); //debug add } - pub fn bcm2835_i2c_finish_transfer(i2c_dev: &'static mut Bcm2835I2cDev) { - i2c_dev.curr_msg = None; - i2c_dev.num_msgs = 0; + pub fn bcm2835_i2c_finish_transfer(&mut self) { + self.curr_msg = None; + self.num_msgs = 0; - i2c_dev.msg_buf = None; - i2c_dev.msg_buf_remaining = 0; + self.msg_buf = None; + self.msg_buf_remaining = 0; } } @@ -366,7 +372,8 @@ fn bcm2835_i2c_isr(this_irq: i32, data: *mut core::ffi::c_void) -> irq::Return { if val & BCM2835_I2C_S_DONE != 0 { match i2c_dev.curr_msg { - Some(ref mut msg) if msg.flags() & I2C_M_RD != 0 => { + // Note: we represent the ptr buf with vec and the ptr to 0th element is the same as the ptr to the place in C. + Some(ref mut msg) if msg[0].flags() as u32 & I2C_M_RD != 0 => { i2c_dev.bcm2835_drain_rxfifo(); val = i2c_dev.bcm2835_i2c_readl(BCM2835_I2C_S); } @@ -394,8 +401,7 @@ fn bcm2835_i2c_isr(this_irq: i32, data: *mut core::ffi::c_void) -> irq::Return { if i2c_dev.num_msgs != 0 && i2c_dev.msg_buf_remaining == 0 { if let Some(ref mut curr_msg) = i2c_dev.curr_msg { - let curr_msg = &curr_msg[1..]; - i2c_dev.curr_msg = Some(curr_msg.to_vec()); + curr_msg.remove(0); } i2c_dev.bcm2835_i2c_start_transfer(); } @@ -409,7 +415,7 @@ fn bcm2835_i2c_isr(this_irq: i32, data: *mut core::ffi::c_void) -> irq::Return { return goto_complete(i2c_dev); } - i2c_dev.bcm2835_fill_rxfifo(); + i2c_dev.bcm2835_drain_rxfifo(); return irq::Return::Handled; } @@ -420,7 +426,7 @@ fn goto_complete(i2c_dev: &mut Bcm2835I2cDev) -> irq::Return { i2c_dev.bcm2835_i2c_writel(BCM2835_I2C_C, BCM2835_I2C_C_CLEAR); i2c_dev.bcm2835_i2c_writel( BCM2835_I2C_S, - BCM2835_I2C_CLKT | BCM2835_I2C_S_ERR | BCM2835_I2C_S_DONE, + BCM2835_I2C_CLKT as u32 | BCM2835_I2C_S_ERR | BCM2835_I2C_S_DONE, ); i2c_dev.completion.complete(); @@ -428,11 +434,11 @@ fn goto_complete(i2c_dev: &mut Bcm2835I2cDev) -> irq::Return { } fn bcm2835_i2c_xfer(adap: I2cAdapter, msgs: Vec, num: i32) -> Result<()> { - let i2c_dev = unsafe { &mut *(adap.data as *mut Bcm2835I2cDev) }; + let i2c_dev = unsafe { &mut (*adap.i2c_get_adapdata::()) }; let mut ignore_nak = false; if unsafe { DEBUG != 0 } { - i2c_dev.debug_num_msgs = num; + i2c_dev.debug_num_msgs = num as u32; } if unsafe { DEBUG > 2 } { @@ -442,14 +448,14 @@ fn bcm2835_i2c_xfer(adap: I2cAdapter, msgs: Vec, num: i32) -> Result<()> } for msg in &msgs { - if msg.flags() & I2C_M_RD != 0 { + if msg.flags() as u32 & I2C_M_RD != 0 { dev_warn!( i2c_dev.dev, "only one read message supported, has to be last\n" ); return Err(EOPENSTALE); } - if msg.flags() & I2C_M_NOSTART != 0 { + if msg.flags() as u32 & I2C_M_NOSTART != 0 { ignore_nak = true; } } @@ -471,7 +477,7 @@ fn bcm2835_i2c_xfer(adap: I2cAdapter, msgs: Vec, num: i32) -> Result<()> i2c_dev.msg_err &= !BCM2835_I2C_S_ERR; } - if unsafe { DEBUG > 1 || (DEBUG != 0 && (!time_left || i2c_dev.msg_err != 0)) } { + if unsafe { DEBUG > 1 || (DEBUG != 0 && (time_left == 0 || i2c_dev.msg_err != 0)) } { // debug print } @@ -505,7 +511,7 @@ fn bcm2835_i2c_func(adap: I2cAdapter) -> u32 { // I2C_AQ .. const BCM2835_I2C_QUIRKS: I2cAdapterQuirks = - I2cAdapterQuirks::new().set_flags(i2c::I2C_AQ_NO_CLK_STRETCH); + I2cAdapterQuirks::new().set_flags(i2c::I2C_AQ_NO_CLK_STRETCH as u64); struct Bcm2835I2cAlgo; @@ -525,8 +531,6 @@ kernel::define_of_id_table! {BCM2835_I2C_ID_TABLE, (), [ (DeviceId::Compatible(b"brcm,bcm2835-i2c"), None), ]} -struct Bcm2835I2cDriver; - impl platform::Driver for Bcm2835I2cDriver { fn probe( pdev: &mut platform::Device, @@ -534,10 +538,10 @@ impl platform::Driver for Bcm2835I2cDriver { ) -> Result { // let pdev = dev. // TODO: initialize and probe i2c driver - let i2c_dev = unsafe { - let dev = &mut *(pdev.raw_device()) as &mut Device; - dev.kzalloc::()? - } as &mut Bcm2835I2cDev; + /*let i2c_dev = unsafe { + let dev = &mut *(pdev.raw_device().dev) as &mut Device; + dev.kzall + };*/ // TODO: initialize i2c_dev Ok(()) } diff --git a/rust/kernel/i2c.rs b/rust/kernel/i2c.rs index 38e194134e6bb3..7cdb55f7e91732 100644 --- a/rust/kernel/i2c.rs +++ b/rust/kernel/i2c.rs @@ -64,6 +64,8 @@ impl I2cAdapterQuirks { /// Represents i2c_msg /// +/// Note: buf is a raw pointer +/// Note: all primitive fields are __u16 type in C, represented as u16 in Rust. pub struct I2cMsg(bindings::i2c_msg); impl I2cMsg { From 745165e6aa865954e7260ea77628d7eee853ccd7 Mon Sep 17 00:00:00 2001 From: Nostalgia Date: Mon, 5 Aug 2024 19:41:04 +0800 Subject: [PATCH 14/15] =?UTF-8?q?=E4=BF=AE=E6=AD=A3bcm2835=5Frust?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修正函数中数值及类型部分,及所有权部分。 Signed-off-by: Nostalgia --- drivers/i2c/busses/i2c-bcm2835.c | 144 ++++++++++++------------- drivers/i2c/busses/i2c_bcm2835_rust.rs | 74 +++++++------ rust/kernel/io_pgtable.rs | 0 rust/kernel/lib.rs | 4 +- rust/kernel/serial/uart_port.rs | 2 +- 5 files changed, 114 insertions(+), 110 deletions(-) create mode 100644 rust/kernel/io_pgtable.rs diff --git a/drivers/i2c/busses/i2c-bcm2835.c b/drivers/i2c/busses/i2c-bcm2835.c index 71a74de9fa5a3a..f3410d5ebbdd93 100644 --- a/drivers/i2c/busses/i2c-bcm2835.c +++ b/drivers/i2c/busses/i2c-bcm2835.c @@ -16,45 +16,45 @@ #include #include -#define BCM2835_I2C_C 0x0 -#define BCM2835_I2C_S 0x4 -#define BCM2835_I2C_DLEN 0x8 -#define BCM2835_I2C_A 0xc -#define BCM2835_I2C_FIFO 0x10 -#define BCM2835_I2C_DIV 0x14 -#define BCM2835_I2C_DEL 0x18 +#define BCM2835_I2C_C 0x0 +#define BCM2835_I2C_S 0x4 +#define BCM2835_I2C_DLEN 0x8 +#define BCM2835_I2C_A 0xc +#define BCM2835_I2C_FIFO 0x10 +#define BCM2835_I2C_DIV 0x14 +#define BCM2835_I2C_DEL 0x18 /* * 16-bit field for the number of SCL cycles to wait after rising SCL * before deciding the slave is not responding. 0 disables the * timeout detection. */ -#define BCM2835_I2C_CLKT 0x1c - -#define BCM2835_I2C_C_READ BIT(0) -#define BCM2835_I2C_C_CLEAR BIT(4) /* bits 4 and 5 both clear */ -#define BCM2835_I2C_C_ST BIT(7) -#define BCM2835_I2C_C_INTD BIT(8) -#define BCM2835_I2C_C_INTT BIT(9) -#define BCM2835_I2C_C_INTR BIT(10) -#define BCM2835_I2C_C_I2CEN BIT(15) - -#define BCM2835_I2C_S_TA BIT(0) -#define BCM2835_I2C_S_DONE BIT(1) -#define BCM2835_I2C_S_TXW BIT(2) -#define BCM2835_I2C_S_RXR BIT(3) -#define BCM2835_I2C_S_TXD BIT(4) -#define BCM2835_I2C_S_RXD BIT(5) -#define BCM2835_I2C_S_TXE BIT(6) -#define BCM2835_I2C_S_RXF BIT(7) -#define BCM2835_I2C_S_ERR BIT(8) -#define BCM2835_I2C_S_CLKT BIT(9) -#define BCM2835_I2C_S_LEN BIT(10) /* Fake bit for SW error reporting */ - -#define BCM2835_I2C_FEDL_SHIFT 16 -#define BCM2835_I2C_REDL_SHIFT 0 - -#define BCM2835_I2C_CDIV_MIN 0x0002 -#define BCM2835_I2C_CDIV_MAX 0xFFFE +#define BCM2835_I2C_CLKT 0x1c + +#define BCM2835_I2C_C_READ BIT(0) +#define BCM2835_I2C_C_CLEAR BIT(4) /* bits 4 and 5 both clear */ +#define BCM2835_I2C_C_ST BIT(7) +#define BCM2835_I2C_C_INTD BIT(8) +#define BCM2835_I2C_C_INTT BIT(9) +#define BCM2835_I2C_C_INTR BIT(10) +#define BCM2835_I2C_C_I2CEN BIT(15) + +#define BCM2835_I2C_S_TA BIT(0) +#define BCM2835_I2C_S_DONE BIT(1) +#define BCM2835_I2C_S_TXW BIT(2) +#define BCM2835_I2C_S_RXR BIT(3) +#define BCM2835_I2C_S_TXD BIT(4) +#define BCM2835_I2C_S_RXD BIT(5) +#define BCM2835_I2C_S_TXE BIT(6) +#define BCM2835_I2C_S_RXF BIT(7) +#define BCM2835_I2C_S_ERR BIT(8) +#define BCM2835_I2C_S_CLKT BIT(9) +#define BCM2835_I2C_S_LEN BIT(10) /* Fake bit for SW error reporting */ + +#define BCM2835_I2C_FEDL_SHIFT 16 +#define BCM2835_I2C_REDL_SHIFT 0 + +#define BCM2835_I2C_CDIV_MIN 0x0002 +#define BCM2835_I2C_CDIV_MAX 0xFFFE static unsigned int debug; module_param(debug, uint, 0644); @@ -64,7 +64,7 @@ static unsigned int clk_tout_ms = 35; /* SMBUs-recommended 35ms */ module_param(clk_tout_ms, uint, 0644); MODULE_PARM_DESC(clk_tout_ms, "clock-stretch timeout (mS)"); -#define BCM2835_DEBUG_MAX 512 +#define BCM2835_DEBUG_MAX 512 struct bcm2835_debug { struct i2c_msg *msg; int msg_idx; @@ -96,7 +96,7 @@ static inline void bcm2835_debug_add(struct bcm2835_i2c_dev *i2c_dev, u32 s) i2c_dev->debug[i2c_dev->debug_num].msg = i2c_dev->curr_msg; i2c_dev->debug[i2c_dev->debug_num].msg_idx = - i2c_dev->debug_num_msgs - i2c_dev->num_msgs; + i2c_dev->debug_num_msgs - i2c_dev->num_msgs; i2c_dev->debug[i2c_dev->debug_num].remain = i2c_dev->msg_buf_remaining; i2c_dev->debug[i2c_dev->debug_num].status = s; i2c_dev->debug_num++; @@ -108,8 +108,7 @@ static void bcm2835_debug_print_status(struct bcm2835_i2c_dev *i2c_dev, u32 s = d->status; pr_info("isr: remain=%zu, status=0x%x : %s%s%s%s%s%s%s%s%s%s [i2c%d]\n", - d->remain, s, - s & BCM2835_I2C_S_TA ? "TA " : "", + d->remain, s, s & BCM2835_I2C_S_TA ? "TA " : "", s & BCM2835_I2C_S_DONE ? "DONE " : "", s & BCM2835_I2C_S_TXW ? "TXW " : "", s & BCM2835_I2C_S_RXR ? "RXR " : "", @@ -118,8 +117,7 @@ static void bcm2835_debug_print_status(struct bcm2835_i2c_dev *i2c_dev, s & BCM2835_I2C_S_TXE ? "TXE " : "", s & BCM2835_I2C_S_RXF ? "RXF " : "", s & BCM2835_I2C_S_ERR ? "ERR " : "", - s & BCM2835_I2C_S_CLKT ? "CLKT " : "", - i2c_dev->adapter.nr); + s & BCM2835_I2C_S_CLKT ? "CLKT " : "", i2c_dev->adapter.nr); } static void bcm2835_debug_print_msg(struct bcm2835_i2c_dev *i2c_dev, @@ -127,16 +125,14 @@ static void bcm2835_debug_print_msg(struct bcm2835_i2c_dev *i2c_dev, const char *fname) { pr_info("%s: msg(%d/%d) %s addr=0x%02x, len=%u flags=%s%s%s%s%s%s%s [i2c%d]\n", - fname, i, total, - msg->flags & I2C_M_RD ? "read" : "write", msg->addr, msg->len, - msg->flags & I2C_M_TEN ? "TEN" : "", + fname, i, total, msg->flags & I2C_M_RD ? "read" : "write", + msg->addr, msg->len, msg->flags & I2C_M_TEN ? "TEN" : "", msg->flags & I2C_M_RECV_LEN ? "RECV_LEN" : "", msg->flags & I2C_M_NO_RD_ACK ? "NO_RD_ACK" : "", msg->flags & I2C_M_IGNORE_NAK ? "IGNORE_NAK" : "", msg->flags & I2C_M_REV_DIR_ADDR ? "REV_DIR_ADDR" : "", msg->flags & I2C_M_NOSTART ? "NOSTART" : "", - msg->flags & I2C_M_STOP ? "STOP" : "", - i2c_dev->adapter.nr); + msg->flags & I2C_M_STOP ? "STOP" : "", i2c_dev->adapter.nr); } static void bcm2835_debug_print(struct bcm2835_i2c_dev *i2c_dev) @@ -148,7 +144,8 @@ static void bcm2835_debug_print(struct bcm2835_i2c_dev *i2c_dev) d = &i2c_dev->debug[i]; if (d->status == ~0) bcm2835_debug_print_msg(i2c_dev, d->msg, d->msg_idx, - i2c_dev->debug_num_msgs, "start_transfer"); + i2c_dev->debug_num_msgs, + "start_transfer"); else bcm2835_debug_print_status(i2c_dev, d); } @@ -156,8 +153,8 @@ static void bcm2835_debug_print(struct bcm2835_i2c_dev *i2c_dev) pr_info("BCM2835_DEBUG_MAX reached\n"); } -static inline void bcm2835_i2c_writel(struct bcm2835_i2c_dev *i2c_dev, - u32 reg, u32 val) +static inline void bcm2835_i2c_writel(struct bcm2835_i2c_dev *i2c_dev, u32 reg, + u32 val) { writel(val, i2c_dev->regs + reg); } @@ -174,7 +171,7 @@ struct clk_bcm2835_i2c { }; static int clk_bcm2835_i2c_calc_divider(unsigned long rate, - unsigned long parent_rate) + unsigned long parent_rate) { u32 divider = DIV_ROUND_UP(parent_rate, rate); @@ -193,7 +190,7 @@ static int clk_bcm2835_i2c_calc_divider(unsigned long rate, } static int clk_bcm2835_i2c_set_rate(struct clk_hw *hw, unsigned long rate, - unsigned long parent_rate) + unsigned long parent_rate) { struct clk_bcm2835_i2c *div = to_clk_bcm2835_i2c(hw); u32 redl, fedl; @@ -220,15 +217,15 @@ static int clk_bcm2835_i2c_set_rate(struct clk_hw *hw, unsigned long rate, bcm2835_i2c_writel(div->i2c_dev, BCM2835_I2C_DEL, (fedl << BCM2835_I2C_FEDL_SHIFT) | - (redl << BCM2835_I2C_REDL_SHIFT)); + (redl << BCM2835_I2C_REDL_SHIFT)); /* * Set the clock stretch timeout. */ - if (rate > 0xffff*1000/clk_tout_ms) - clk_tout = 0xffff; + if (rate > 0xffff * 1000 / clk_tout_ms) + clk_tout = 0xffff; else - clk_tout = clk_tout_ms*rate/1000; + clk_tout = clk_tout_ms * rate / 1000; bcm2835_i2c_writel(div->i2c_dev, BCM2835_I2C_CLKT, clk_tout); @@ -236,7 +233,7 @@ static int clk_bcm2835_i2c_set_rate(struct clk_hw *hw, unsigned long rate, } static long clk_bcm2835_i2c_round_rate(struct clk_hw *hw, unsigned long rate, - unsigned long *parent_rate) + unsigned long *parent_rate) { u32 divider = clk_bcm2835_i2c_calc_divider(rate, *parent_rate); @@ -244,7 +241,7 @@ static long clk_bcm2835_i2c_round_rate(struct clk_hw *hw, unsigned long rate, } static unsigned long clk_bcm2835_i2c_recalc_rate(struct clk_hw *hw, - unsigned long parent_rate) + unsigned long parent_rate) { struct clk_bcm2835_i2c *div = to_clk_bcm2835_i2c(hw); u32 divider = bcm2835_i2c_readl(div->i2c_dev, BCM2835_I2C_DIV); @@ -259,8 +256,8 @@ static const struct clk_ops clk_bcm2835_i2c_ops = { }; static struct clk *bcm2835_i2c_register_div(struct device *dev, - struct clk *mclk, - struct bcm2835_i2c_dev *i2c_dev) + struct clk *mclk, + struct bcm2835_i2c_dev *i2c_dev) { struct clk_init_data init; struct clk_bcm2835_i2c *priv; @@ -273,7 +270,7 @@ static struct clk *bcm2835_i2c_register_div(struct device *dev, init.ops = &clk_bcm2835_i2c_ops; init.name = name; - init.parent_names = (const char* []) { mclk_name }; + init.parent_names = (const char *[]){ mclk_name }; init.num_parents = 1; init.flags = 0; @@ -311,8 +308,8 @@ static void bcm2835_drain_rxfifo(struct bcm2835_i2c_dev *i2c_dev) val = bcm2835_i2c_readl(i2c_dev, BCM2835_I2C_S); if (!(val & BCM2835_I2C_S_RXD)) break; - *i2c_dev->msg_buf = bcm2835_i2c_readl(i2c_dev, - BCM2835_I2C_FIFO); + *i2c_dev->msg_buf = + bcm2835_i2c_readl(i2c_dev, BCM2835_I2C_FIFO); i2c_dev->msg_buf++; i2c_dev->msg_buf_remaining--; } @@ -390,7 +387,8 @@ static irqreturn_t bcm2835_i2c_isr(int this_irq, void *data) if (val & BCM2835_I2C_S_DONE) { if (!i2c_dev->curr_msg) { - dev_err(i2c_dev->dev, "Got unexpected interrupt (from firmware?)\n"); + dev_err(i2c_dev->dev, + "Got unexpected interrupt (from firmware?)\n"); } else if (i2c_dev->curr_msg->flags & I2C_M_RD) { bcm2835_drain_rxfifo(i2c_dev); val = bcm2835_i2c_readl(i2c_dev, BCM2835_I2C_S); @@ -431,8 +429,9 @@ static irqreturn_t bcm2835_i2c_isr(int this_irq, void *data) complete: bcm2835_i2c_writel(i2c_dev, BCM2835_I2C_C, BCM2835_I2C_C_CLEAR); - bcm2835_i2c_writel(i2c_dev, BCM2835_I2C_S, BCM2835_I2C_S_CLKT | - BCM2835_I2C_S_ERR | BCM2835_I2C_S_DONE); + bcm2835_i2c_writel(i2c_dev, BCM2835_I2C_S, + BCM2835_I2C_S_CLKT | BCM2835_I2C_S_ERR | + BCM2835_I2C_S_DONE); complete(&i2c_dev->completion); return IRQ_HANDLED; @@ -451,12 +450,14 @@ static int bcm2835_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg msgs[], if (debug > 2) for (i = 0; i < num; i++) - bcm2835_debug_print_msg(i2c_dev, &msgs[i], i + 1, num, __func__); + bcm2835_debug_print_msg(i2c_dev, &msgs[i], i + 1, num, + __func__); for (i = 0; i < (num - 1); i++) { if (msgs[i].flags & I2C_M_RD) { - dev_warn_once(i2c_dev->dev, - "only one read message supported, has to be last\n"); + dev_warn_once( + i2c_dev->dev, + "only one read message supported, has to be last\n"); return -EOPNOTSUPP; } if (msgs[i].flags & I2C_M_IGNORE_NAK) @@ -483,8 +484,7 @@ static int bcm2835_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg msgs[], i2c_dev->debug_num_msgs = 0; i2c_dev->debug_num = 0; if (!time_left) { - bcm2835_i2c_writel(i2c_dev, BCM2835_I2C_C, - BCM2835_I2C_C_CLEAR); + bcm2835_i2c_writel(i2c_dev, BCM2835_I2C_C, BCM2835_I2C_C_CLEAR); dev_err(i2c_dev->dev, "i2c transfer timed out\n"); return -ETIMEDOUT; } @@ -508,8 +508,8 @@ static u32 bcm2835_i2c_func(struct i2c_adapter *adap) } static const struct i2c_algorithm bcm2835_i2c_algo = { - .master_xfer = bcm2835_i2c_xfer, - .functionality = bcm2835_i2c_func, + .master_xfer = bcm2835_i2c_xfer, + .functionality = bcm2835_i2c_func, }; /* @@ -649,4 +649,4 @@ module_platform_driver(bcm2835_i2c_driver); MODULE_AUTHOR("Stephen Warren "); MODULE_DESCRIPTION("BCM2835 I2C bus adapter"); MODULE_LICENSE("GPL v2"); -MODULE_ALIAS("platform:i2c-bcm2835"); +MODULE_ALIAS("platform:i2c-bcm2835"); \ No newline at end of file diff --git a/drivers/i2c/busses/i2c_bcm2835_rust.rs b/drivers/i2c/busses/i2c_bcm2835_rust.rs index 4a8c4ffbae6962..53125240155505 100644 --- a/drivers/i2c/busses/i2c_bcm2835_rust.rs +++ b/drivers/i2c/busses/i2c_bcm2835_rust.rs @@ -244,19 +244,19 @@ impl ClkOps for ClkBcm2835I2cOps { } impl Bcm2835I2cDev { - pub fn bcm2835_i2c_writel(&mut self, reg: usize, val: u32) { + pub(crate) fn bcm2835_i2c_writel(&mut self, reg: usize, val: u32) { let i2c_reg = self.regs.get(); let addr = i2c_reg.wrapping_add(reg); unsafe { bindings::writel(val as _, addr as _) } } - pub fn bcm2835_i2c_readl(&mut self, reg: usize) -> u32 { + pub(crate) fn bcm2835_i2c_readl(&mut self, reg: usize) -> u32 { let i2c_reg = self.regs.get(); let addr = i2c_reg.wrapping_add(reg); unsafe { bindings::readl(addr as _) } } - pub fn bcm2835_i2c_register_div( + pub(crate) fn bcm2835_i2c_register_div( dev: &'static mut Device, mclk: &Clk, i2c_dev: &'static mut Bcm2835I2cDev, @@ -295,10 +295,12 @@ impl Bcm2835I2cDev { break; } // May Wrong! - if let Some(ref mut buf) = self.msg_buf { + if let Some(mut buf) = self.msg_buf.take() { // Safety: msg_buf_remaining > 0 - self.bcm2835_i2c_writel(BCM2835_I2C_FIFO, buf[0] as u32); - let buf = &mut buf[1..]; + let byte = buf[0] as u32; + self.bcm2835_i2c_writel(BCM2835_I2C_FIFO, byte); + buf.remove(0); + self.msg_buf = Some(buf); self.msg_buf_remaining -= 1; } } @@ -311,47 +313,49 @@ impl Bcm2835I2cDev { break; } // May Wrong! - if let Some(ref mut buf) = self.msg_buf { + if let Some(mut buf) = self.msg_buf.take() { buf[0] = self.bcm2835_i2c_readl(BCM2835_I2C_FIFO) as u8; - let buf = &mut buf[1..]; + buf.remove(0); + self.msg_buf = Some(buf); self.msg_buf_remaining -= 1; } } } - pub fn bcm2835_i2c_start_transfer(&mut self) { - let c: u32 = BCM2835_I2C_C_ST | BCM2835_I2C_C_I2CEN; - // Caution: assume msg is valid. - let msg = self.curr_msg.unwrap().pop().unwrap(); - let last_msg = self.num_msgs == 1; + pub(crate) fn bcm2835_i2c_start_transfer(&mut self) { + let mut c: u32 = BCM2835_I2C_C_ST | BCM2835_I2C_C_I2CEN; + // Safely extract and process the current message + if let Some(mut curr_msg) = self.curr_msg.take() { + if self.num_msgs == 0 { + return; + } - if !self.num_msgs != 0 { - return; - } + let msg = &curr_msg[0]; + let last_msg = self.num_msgs == 1; - self.num_msgs -= 1; - // Caution: ownership transfer. - // other fields are fine. - self.msg_buf = msg.buf_to_vec(); - self.msg_buf_remaining = msg.len() as usize; + self.num_msgs -= 1; + self.msg_buf = msg.buf_to_vec(); + self.msg_buf_remaining = msg.len() as usize; - if msg.flags() as u32 & I2C_M_RD != 0 { - c |= BCM2835_I2C_C_READ | BCM2835_I2C_C_INTR; - } else { - c |= BCM2835_I2C_C_INTT; - } + if msg.flags() as u32 & I2C_M_RD != 0 { + c |= BCM2835_I2C_C_READ | BCM2835_I2C_C_INTR; + } else { + c |= BCM2835_I2C_C_INTT; + } - if last_msg { - c |= BCM2835_I2C_C_INTD; - } + if last_msg { + c |= BCM2835_I2C_C_INTD; + } - self.bcm2835_i2c_writel(BCM2835_I2C_A, msg.addr() as u32); - self.bcm2835_i2c_writel(BCM2835_I2C_DLEN, msg.len() as u32); - self.bcm2835_i2c_writel(BCM2835_I2C_C, c); + self.bcm2835_i2c_writel(BCM2835_I2C_A, msg.addr() as u32); + self.bcm2835_i2c_writel(BCM2835_I2C_DLEN, msg.len() as u32); + self.bcm2835_i2c_writel(BCM2835_I2C_C, c); + self.curr_msg = Some(curr_msg); + } //debug add } - pub fn bcm2835_i2c_finish_transfer(&mut self) { + pub(crate) fn bcm2835_i2c_finish_transfer(&mut self) { self.curr_msg = None; self.num_msgs = 0; @@ -510,8 +514,8 @@ fn bcm2835_i2c_func(adap: I2cAdapter) -> u32 { } // I2C_AQ .. -const BCM2835_I2C_QUIRKS: I2cAdapterQuirks = - I2cAdapterQuirks::new().set_flags(i2c::I2C_AQ_NO_CLK_STRETCH as u64); +// const BCM2835_I2C_QUIRKS: I2cAdapterQuirks = +// I2cAdapterQuirks::new().set_flags(i2c::I2C_AQ_NO_CLK_STRETCH as u64); struct Bcm2835I2cAlgo; diff --git a/rust/kernel/io_pgtable.rs b/rust/kernel/io_pgtable.rs new file mode 100644 index 00000000000000..e69de29bb2d1d6 diff --git a/rust/kernel/lib.rs b/rust/kernel/lib.rs index da46d839f7d645..45a1c9a684c472 100644 --- a/rust/kernel/lib.rs +++ b/rust/kernel/lib.rs @@ -50,11 +50,12 @@ pub mod file; pub mod fs; pub mod fwnode; pub mod gpio; +pub mod i2c; pub mod init; pub mod io_buffer; pub mod io_mem; #[cfg(CONFIG_IOMMU_IO_PGTABLE)] -// pub mod io_pgtable; +pub mod io_pgtable; pub mod ioctl; pub mod iov_iter; pub mod irq; @@ -77,7 +78,6 @@ pub mod task; pub mod timekeeping; pub mod types; pub mod user_ptr; -pub mod i2c; use core::marker::PhantomData; diff --git a/rust/kernel/serial/uart_port.rs b/rust/kernel/serial/uart_port.rs index ce7cfbdcf24dd0..dcfa58beb9f0cc 100644 --- a/rust/kernel/serial/uart_port.rs +++ b/rust/kernel/serial/uart_port.rs @@ -213,7 +213,7 @@ impl PortRegistration { pr_warn!("this uart port driver is already registered\n"); return Err(EINVAL); } - let mut port = &mut this.uart_port; + let port = &mut this.uart_port; port.0.dev = dev.raw_device(); // port.irq = irq; // port.membase = membase; From 04bbe14e2e4504dcc05f9db405b39a8f39b8055f Mon Sep 17 00:00:00 2001 From: creatoy Date: Tue, 6 Aug 2024 10:56:54 +0800 Subject: [PATCH 15/15] =?UTF-8?q?=E5=9B=9E=E9=80=80=E8=AF=AF=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- arch/arm64/configs/bcm2711_rust_defconfig | 2697 +++++++++++---------- drivers/i2c/busses/i2c-bcm2835.c | 144 +- rust/kernel/io_pgtable.rs | 0 rust/kernel/serial/uart_port.rs | 2 +- 4 files changed, 1484 insertions(+), 1359 deletions(-) delete mode 100644 rust/kernel/io_pgtable.rs diff --git a/arch/arm64/configs/bcm2711_rust_defconfig b/arch/arm64/configs/bcm2711_rust_defconfig index e74b22fc0ea173..4e8cd2be0e7068 100644 --- a/arch/arm64/configs/bcm2711_rust_defconfig +++ b/arch/arm64/configs/bcm2711_rust_defconfig @@ -1,1011 +1,1298 @@ +CONFIG_LOCALVERSION="-v8" +# CONFIG_LOCALVERSION_AUTO is not set CONFIG_SYSVIPC=y CONFIG_POSIX_MQUEUE=y -CONFIG_AUDIT=y -CONFIG_NO_HZ_IDLE=y +CONFIG_GENERIC_IRQ_DEBUGFS=y +CONFIG_NO_HZ=y CONFIG_HIGH_RES_TIMERS=y CONFIG_BPF_SYSCALL=y CONFIG_BPF_JIT=y CONFIG_PREEMPT=y -CONFIG_IRQ_TIME_ACCOUNTING=y CONFIG_BSD_PROCESS_ACCT=y CONFIG_BSD_PROCESS_ACCT_V3=y CONFIG_TASKSTATS=y +CONFIG_TASK_DELAY_ACCT=y CONFIG_TASK_XACCT=y CONFIG_TASK_IO_ACCOUNTING=y -CONFIG_IKCONFIG=y +CONFIG_PSI=y +CONFIG_PSI_DEFAULT_DISABLED=y +CONFIG_IKCONFIG=m CONFIG_IKCONFIG_PROC=y -CONFIG_NUMA_BALANCING=y CONFIG_MEMCG=y CONFIG_BLK_CGROUP=y +CONFIG_CFS_BANDWIDTH=y CONFIG_CGROUP_PIDS=y CONFIG_CGROUP_FREEZER=y -CONFIG_CGROUP_HUGETLB=y CONFIG_CPUSETS=y CONFIG_CGROUP_DEVICE=y CONFIG_CGROUP_CPUACCT=y CONFIG_CGROUP_PERF=y CONFIG_CGROUP_BPF=y +CONFIG_NAMESPACES=y CONFIG_USER_NS=y +CONFIG_CHECKPOINT_RESTORE=y CONFIG_SCHED_AUTOGROUP=y CONFIG_BLK_DEV_INITRD=y -CONFIG_KALLSYMS_ALL=y +CONFIG_EXPERT=y CONFIG_PROFILING=y CONFIG_RUST=y -CONFIG_KEXEC=y -CONFIG_KEXEC_FILE=y -CONFIG_CRASH_DUMP=y -CONFIG_ARCH_ACTIONS=y -CONFIG_ARCH_SUNXI=y -CONFIG_ARCH_ALPINE=y -CONFIG_ARCH_APPLE=y CONFIG_ARCH_BCM=y CONFIG_ARCH_BCM2835=y -CONFIG_ARCH_BCM_IPROC=y -CONFIG_ARCH_BCMBCA=y CONFIG_ARCH_BRCMSTB=y -CONFIG_ARCH_BERLIN=y -CONFIG_ARCH_EXYNOS=y -CONFIG_ARCH_SPARX5=y -CONFIG_ARCH_K3=y -CONFIG_ARCH_LG1K=y -CONFIG_ARCH_HISI=y -CONFIG_ARCH_KEEMBAY=y -CONFIG_ARCH_MEDIATEK=y -CONFIG_ARCH_MESON=y -CONFIG_ARCH_MVEBU=y -CONFIG_ARCH_NXP=y -CONFIG_ARCH_LAYERSCAPE=y -CONFIG_ARCH_MXC=y -CONFIG_ARCH_S32=y -CONFIG_ARCH_MA35=y -CONFIG_ARCH_NPCM=y -CONFIG_ARCH_QCOM=y -CONFIG_ARCH_REALTEK=y -CONFIG_ARCH_RENESAS=y -CONFIG_ARCH_ROCKCHIP=y -CONFIG_ARCH_SEATTLE=y -CONFIG_ARCH_INTEL_SOCFPGA=y -CONFIG_ARCH_STM32=y -CONFIG_ARCH_SYNQUACER=y -CONFIG_ARCH_TEGRA=y -CONFIG_ARCH_TESLA_FSD=y -CONFIG_ARCH_SPRD=y -CONFIG_ARCH_THUNDER=y -CONFIG_ARCH_THUNDER2=y -CONFIG_ARCH_UNIPHIER=y -CONFIG_ARCH_VEXPRESS=y -CONFIG_ARCH_VISCONTI=y -CONFIG_ARCH_XGENE=y -CONFIG_ARCH_ZYNQMP=y -CONFIG_ARM64_VA_BITS_48=y -CONFIG_SCHED_MC=y -CONFIG_SCHED_SMT=y -CONFIG_NUMA=y -CONFIG_XEN=y +# CONFIG_CAVIUM_ERRATUM_22375 is not set +# CONFIG_CAVIUM_ERRATUM_23154 is not set +# CONFIG_CAVIUM_ERRATUM_27456 is not set CONFIG_COMPAT=y +CONFIG_ARMV8_DEPRECATED=y +CONFIG_SWP_EMULATION=y +CONFIG_CP15_BARRIER_EMULATION=y +CONFIG_SETEND_EMULATION=y CONFIG_RANDOMIZE_BASE=y -CONFIG_HIBERNATION=y -CONFIG_WQ_POWER_EFFICIENT_DEFAULT=y -CONFIG_ENERGY_MODEL=y -CONFIG_ARM_PSCI_CPUIDLE=y +CONFIG_CMDLINE="console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait" +# CONFIG_SUSPEND is not set +CONFIG_PM=y +CONFIG_PM_DEBUG=y +CONFIG_CPU_IDLE=y CONFIG_CPU_FREQ=y CONFIG_CPU_FREQ_STAT=y -CONFIG_CPU_FREQ_GOV_POWERSAVE=m +CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE=y +CONFIG_CPU_FREQ_GOV_PERFORMANCE=y CONFIG_CPU_FREQ_GOV_USERSPACE=y CONFIG_CPU_FREQ_GOV_ONDEMAND=y -CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m +CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y +CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y CONFIG_CPUFREQ_DT=y -CONFIG_ACPI_CPPC_CPUFREQ=m -CONFIG_ARM_ALLWINNER_SUN50I_CPUFREQ_NVMEM=m -CONFIG_ARM_ARMADA_37XX_CPUFREQ=y -CONFIG_ARM_SCPI_CPUFREQ=y -CONFIG_ARM_IMX_CPUFREQ_DT=m -CONFIG_ARM_MEDIATEK_CPUFREQ=y -CONFIG_ARM_QCOM_CPUFREQ_NVMEM=y -CONFIG_ARM_QCOM_CPUFREQ_HW=y -CONFIG_ARM_RASPBERRYPI_CPUFREQ=m -CONFIG_ARM_SCMI_CPUFREQ=y -CONFIG_ARM_TEGRA186_CPUFREQ=y -CONFIG_QORIQ_CPUFREQ=y -CONFIG_ACPI=y -CONFIG_ACPI_HOTPLUG_MEMORY=y -CONFIG_ACPI_HMAT=y -CONFIG_ACPI_APEI=y -CONFIG_ACPI_APEI_GHES=y -CONFIG_ACPI_APEI_PCIEAER=y -CONFIG_ACPI_APEI_MEMORY_FAILURE=y -CONFIG_ACPI_APEI_EINJ=y +CONFIG_ARM_RASPBERRYPI_CPUFREQ=y CONFIG_VIRTUALIZATION=y CONFIG_KVM=y CONFIG_JUMP_LABEL=y CONFIG_MODULES=y CONFIG_MODULE_UNLOAD=y -# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set +CONFIG_MODULE_SRCVERSION_ALL=y +CONFIG_MODULE_COMPRESS_XZ=y +CONFIG_BLK_DEV_THROTTLING=y +CONFIG_PARTITION_ADVANCED=y +CONFIG_MAC_PARTITION=y +CONFIG_BINFMT_MISC=m +CONFIG_ZSWAP=y +CONFIG_Z3FOLD=m # CONFIG_COMPAT_BRK is not set -CONFIG_MEMORY_HOTPLUG=y -CONFIG_MEMORY_HOTREMOVE=y -CONFIG_KSM=y -CONFIG_MEMORY_FAILURE=y -CONFIG_TRANSPARENT_HUGEPAGE=y +CONFIG_CMA=y +CONFIG_LRU_GEN=y +CONFIG_LRU_GEN_ENABLED=y CONFIG_NET=y CONFIG_PACKET=y +CONFIG_XFRM_USER=m +CONFIG_XFRM_INTERFACE=m +CONFIG_XFRM_SUB_POLICY=y +CONFIG_XFRM_STATISTICS=y +CONFIG_NET_KEY=m CONFIG_IP_MULTICAST=y +CONFIG_IP_ADVANCED_ROUTER=y +CONFIG_IP_MULTIPLE_TABLES=y +CONFIG_IP_ROUTE_MULTIPATH=y +CONFIG_IP_ROUTE_VERBOSE=y CONFIG_IP_PNP=y CONFIG_IP_PNP_DHCP=y -CONFIG_IP_PNP_BOOTP=y +CONFIG_IP_PNP_RARP=y +CONFIG_NET_IPIP=m +CONFIG_NET_IPGRE_DEMUX=m +CONFIG_NET_IPGRE=m +CONFIG_IP_MROUTE=y +CONFIG_IP_MROUTE_MULTIPLE_TABLES=y +CONFIG_IP_PIMSM_V1=y +CONFIG_IP_PIMSM_V2=y +CONFIG_NET_IPVTI=m +CONFIG_NET_FOU=m +CONFIG_INET_AH=m +CONFIG_INET_ESP=m +CONFIG_INET_IPCOMP=m +CONFIG_INET_DIAG=m +CONFIG_TCP_CONG_ADVANCED=y +CONFIG_TCP_CONG_BBR=m CONFIG_IPV6=m +CONFIG_IPV6_ROUTER_PREF=y +CONFIG_IPV6_ROUTE_INFO=y +CONFIG_INET6_AH=m +CONFIG_INET6_ESP=m +CONFIG_INET6_ESP_OFFLOAD=m +CONFIG_INET6_IPCOMP=m +CONFIG_IPV6_ILA=m +CONFIG_IPV6_VTI=m +CONFIG_IPV6_SIT_6RD=y +CONFIG_IPV6_GRE=m +CONFIG_IPV6_MULTIPLE_TABLES=y +CONFIG_IPV6_SUBTREES=y +CONFIG_IPV6_MROUTE=y +CONFIG_IPV6_MROUTE_MULTIPLE_TABLES=y +CONFIG_IPV6_PIMSM_V2=y +CONFIG_MPTCP=y +CONFIG_NETWORK_PHY_TIMESTAMPING=y CONFIG_NETFILTER=y CONFIG_BRIDGE_NETFILTER=m CONFIG_NF_CONNTRACK=m +CONFIG_NF_CONNTRACK_ZONES=y CONFIG_NF_CONNTRACK_EVENTS=y -CONFIG_NETFILTER_XT_MARK=m +CONFIG_NF_CONNTRACK_TIMESTAMP=y +CONFIG_NF_CONNTRACK_AMANDA=m +CONFIG_NF_CONNTRACK_FTP=m +CONFIG_NF_CONNTRACK_H323=m +CONFIG_NF_CONNTRACK_IRC=m +CONFIG_NF_CONNTRACK_NETBIOS_NS=m +CONFIG_NF_CONNTRACK_SNMP=m +CONFIG_NF_CONNTRACK_PPTP=m +CONFIG_NF_CONNTRACK_SANE=m +CONFIG_NF_CONNTRACK_SIP=m +CONFIG_NF_CONNTRACK_TFTP=m +CONFIG_NF_CT_NETLINK=m +CONFIG_NF_TABLES=m +CONFIG_NF_TABLES_INET=y +CONFIG_NF_TABLES_NETDEV=y +CONFIG_NFT_NUMGEN=m +CONFIG_NFT_CT=m +CONFIG_NFT_FLOW_OFFLOAD=m +CONFIG_NFT_CONNLIMIT=m +CONFIG_NFT_LOG=m +CONFIG_NFT_LIMIT=m +CONFIG_NFT_MASQ=m +CONFIG_NFT_REDIR=m +CONFIG_NFT_NAT=m +CONFIG_NFT_TUNNEL=m +CONFIG_NFT_QUEUE=m +CONFIG_NFT_QUOTA=m +CONFIG_NFT_REJECT=m +CONFIG_NFT_COMPAT=m +CONFIG_NFT_HASH=m +CONFIG_NFT_FIB_INET=m +CONFIG_NFT_XFRM=m +CONFIG_NFT_SOCKET=m +CONFIG_NFT_OSF=m +CONFIG_NFT_TPROXY=m +CONFIG_NFT_SYNPROXY=m +CONFIG_NFT_DUP_NETDEV=m +CONFIG_NFT_FWD_NETDEV=m +CONFIG_NFT_FIB_NETDEV=m +CONFIG_NF_FLOW_TABLE_INET=m +CONFIG_NF_FLOW_TABLE=m +CONFIG_NETFILTER_XTABLES_COMPAT=y +CONFIG_NETFILTER_XT_SET=m CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m +CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m +CONFIG_NETFILTER_XT_TARGET_CONNMARK=m +CONFIG_NETFILTER_XT_TARGET_DSCP=m +CONFIG_NETFILTER_XT_TARGET_HMARK=m +CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m +CONFIG_NETFILTER_XT_TARGET_LED=m CONFIG_NETFILTER_XT_TARGET_LOG=m +CONFIG_NETFILTER_XT_TARGET_MARK=m +CONFIG_NETFILTER_XT_TARGET_NFLOG=m +CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m +CONFIG_NETFILTER_XT_TARGET_NOTRACK=m +CONFIG_NETFILTER_XT_TARGET_TEE=m +CONFIG_NETFILTER_XT_TARGET_TPROXY=m +CONFIG_NETFILTER_XT_TARGET_TRACE=m +CONFIG_NETFILTER_XT_TARGET_TCPMSS=m +CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m +CONFIG_NETFILTER_XT_MATCH_BPF=m +CONFIG_NETFILTER_XT_MATCH_CLUSTER=m +CONFIG_NETFILTER_XT_MATCH_COMMENT=m +CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m +CONFIG_NETFILTER_XT_MATCH_CONNLABEL=m +CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m +CONFIG_NETFILTER_XT_MATCH_CONNMARK=m CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m +CONFIG_NETFILTER_XT_MATCH_CPU=m +CONFIG_NETFILTER_XT_MATCH_DCCP=m +CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m +CONFIG_NETFILTER_XT_MATCH_DSCP=m +CONFIG_NETFILTER_XT_MATCH_ESP=m +CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m +CONFIG_NETFILTER_XT_MATCH_HELPER=m +CONFIG_NETFILTER_XT_MATCH_IPRANGE=m CONFIG_NETFILTER_XT_MATCH_IPVS=m +CONFIG_NETFILTER_XT_MATCH_LENGTH=m +CONFIG_NETFILTER_XT_MATCH_LIMIT=m +CONFIG_NETFILTER_XT_MATCH_MAC=m +CONFIG_NETFILTER_XT_MATCH_MARK=m +CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m +CONFIG_NETFILTER_XT_MATCH_NFACCT=m +CONFIG_NETFILTER_XT_MATCH_OSF=m +CONFIG_NETFILTER_XT_MATCH_OWNER=m +CONFIG_NETFILTER_XT_MATCH_POLICY=m +CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m +CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m +CONFIG_NETFILTER_XT_MATCH_QUOTA=m +CONFIG_NETFILTER_XT_MATCH_RATEEST=m +CONFIG_NETFILTER_XT_MATCH_REALM=m +CONFIG_NETFILTER_XT_MATCH_RECENT=m +CONFIG_NETFILTER_XT_MATCH_SOCKET=m +CONFIG_NETFILTER_XT_MATCH_STATE=m +CONFIG_NETFILTER_XT_MATCH_STATISTIC=m +CONFIG_NETFILTER_XT_MATCH_STRING=m +CONFIG_NETFILTER_XT_MATCH_TCPMSS=m +CONFIG_NETFILTER_XT_MATCH_TIME=m +CONFIG_NETFILTER_XT_MATCH_U32=m +CONFIG_IP_SET=m +CONFIG_IP_SET_BITMAP_IP=m +CONFIG_IP_SET_BITMAP_IPMAC=m +CONFIG_IP_SET_BITMAP_PORT=m +CONFIG_IP_SET_HASH_IP=m +CONFIG_IP_SET_HASH_IPPORT=m +CONFIG_IP_SET_HASH_IPPORTIP=m +CONFIG_IP_SET_HASH_IPPORTNET=m +CONFIG_IP_SET_HASH_NET=m +CONFIG_IP_SET_HASH_NETPORT=m +CONFIG_IP_SET_HASH_NETIFACE=m +CONFIG_IP_SET_LIST_SET=m CONFIG_IP_VS=m +CONFIG_IP_VS_IPV6=y +CONFIG_IP_VS_PROTO_TCP=y +CONFIG_IP_VS_PROTO_UDP=y +CONFIG_IP_VS_PROTO_ESP=y +CONFIG_IP_VS_PROTO_AH=y +CONFIG_IP_VS_PROTO_SCTP=y +CONFIG_IP_VS_RR=m +CONFIG_IP_VS_WRR=m +CONFIG_IP_VS_LC=m +CONFIG_IP_VS_WLC=m +CONFIG_IP_VS_LBLC=m +CONFIG_IP_VS_LBLCR=m +CONFIG_IP_VS_DH=m +CONFIG_IP_VS_SH=m +CONFIG_IP_VS_SED=m +CONFIG_IP_VS_NQ=m +CONFIG_IP_VS_FTP=m +CONFIG_IP_VS_PE_SIP=m +CONFIG_NFT_DUP_IPV4=m +CONFIG_NFT_FIB_IPV4=m +CONFIG_NF_TABLES_ARP=y +CONFIG_NF_LOG_ARP=m +CONFIG_NF_LOG_IPV4=m CONFIG_IP_NF_IPTABLES=m +CONFIG_IP_NF_MATCH_AH=m +CONFIG_IP_NF_MATCH_ECN=m +CONFIG_IP_NF_MATCH_RPFILTER=m +CONFIG_IP_NF_MATCH_TTL=m CONFIG_IP_NF_FILTER=m CONFIG_IP_NF_TARGET_REJECT=m +CONFIG_IP_NF_TARGET_SYNPROXY=m CONFIG_IP_NF_NAT=m CONFIG_IP_NF_TARGET_MASQUERADE=m +CONFIG_IP_NF_TARGET_NETMAP=m +CONFIG_IP_NF_TARGET_REDIRECT=m CONFIG_IP_NF_MANGLE=m +CONFIG_IP_NF_TARGET_ECN=m +CONFIG_IP_NF_TARGET_TTL=m +CONFIG_IP_NF_RAW=m +CONFIG_IP_NF_ARPTABLES=m +CONFIG_IP_NF_ARPFILTER=m +CONFIG_IP_NF_ARP_MANGLE=m +CONFIG_NFT_DUP_IPV6=m +CONFIG_NFT_FIB_IPV6=m CONFIG_IP6_NF_IPTABLES=m +CONFIG_IP6_NF_MATCH_AH=m +CONFIG_IP6_NF_MATCH_EUI64=m +CONFIG_IP6_NF_MATCH_FRAG=m +CONFIG_IP6_NF_MATCH_OPTS=m +CONFIG_IP6_NF_MATCH_HL=m +CONFIG_IP6_NF_MATCH_IPV6HEADER=m +CONFIG_IP6_NF_MATCH_MH=m +CONFIG_IP6_NF_MATCH_RPFILTER=m +CONFIG_IP6_NF_MATCH_RT=m +CONFIG_IP6_NF_MATCH_SRH=m +CONFIG_IP6_NF_TARGET_HL=m CONFIG_IP6_NF_FILTER=m CONFIG_IP6_NF_TARGET_REJECT=m +CONFIG_IP6_NF_TARGET_SYNPROXY=m CONFIG_IP6_NF_MANGLE=m +CONFIG_IP6_NF_RAW=m +CONFIG_IP6_NF_SECURITY=m CONFIG_IP6_NF_NAT=m CONFIG_IP6_NF_TARGET_MASQUERADE=m +CONFIG_IP6_NF_TARGET_NPT=m +CONFIG_NF_TABLES_BRIDGE=m +CONFIG_NFT_BRIDGE_REJECT=m +CONFIG_BRIDGE_NF_EBTABLES=m +CONFIG_BRIDGE_EBT_BROUTE=m +CONFIG_BRIDGE_EBT_T_FILTER=m +CONFIG_BRIDGE_EBT_T_NAT=m +CONFIG_BRIDGE_EBT_802_3=m +CONFIG_BRIDGE_EBT_AMONG=m +CONFIG_BRIDGE_EBT_ARP=m +CONFIG_BRIDGE_EBT_IP=m +CONFIG_BRIDGE_EBT_IP6=m +CONFIG_BRIDGE_EBT_LIMIT=m +CONFIG_BRIDGE_EBT_MARK=m +CONFIG_BRIDGE_EBT_PKTTYPE=m +CONFIG_BRIDGE_EBT_STP=m +CONFIG_BRIDGE_EBT_VLAN=m +CONFIG_BRIDGE_EBT_ARPREPLY=m +CONFIG_BRIDGE_EBT_DNAT=m +CONFIG_BRIDGE_EBT_MARK_T=m +CONFIG_BRIDGE_EBT_REDIRECT=m +CONFIG_BRIDGE_EBT_SNAT=m +CONFIG_BRIDGE_EBT_LOG=m +CONFIG_BRIDGE_EBT_NFLOG=m +CONFIG_SCTP_COOKIE_HMAC_SHA1=y +CONFIG_ATM=m +CONFIG_L2TP=m +CONFIG_L2TP_V3=y +CONFIG_L2TP_IP=m +CONFIG_L2TP_ETH=m CONFIG_BRIDGE=m -CONFIG_BRIDGE_VLAN_FILTERING=y -CONFIG_NET_DSA=m CONFIG_VLAN_8021Q=m CONFIG_VLAN_8021Q_GVRP=y -CONFIG_VLAN_8021Q_MVRP=y +CONFIG_ATALK=m +CONFIG_6LOWPAN=m +CONFIG_IEEE802154=m +CONFIG_IEEE802154_6LOWPAN=m +CONFIG_MAC802154=m CONFIG_NET_SCHED=y -CONFIG_NET_SCH_CBS=m -CONFIG_NET_SCH_ETF=m -CONFIG_NET_SCH_TAPRIO=m +CONFIG_NET_SCH_HTB=m +CONFIG_NET_SCH_HFSC=m +CONFIG_NET_SCH_PRIO=m +CONFIG_NET_SCH_MULTIQ=m +CONFIG_NET_SCH_RED=m +CONFIG_NET_SCH_SFB=m +CONFIG_NET_SCH_SFQ=m +CONFIG_NET_SCH_TEQL=m +CONFIG_NET_SCH_TBF=m +CONFIG_NET_SCH_GRED=m +CONFIG_NET_SCH_NETEM=m +CONFIG_NET_SCH_DRR=m CONFIG_NET_SCH_MQPRIO=m +CONFIG_NET_SCH_CHOKE=m +CONFIG_NET_SCH_QFQ=m +CONFIG_NET_SCH_CODEL=m +CONFIG_NET_SCH_FQ_CODEL=m +CONFIG_NET_SCH_CAKE=m +CONFIG_NET_SCH_FQ=m +CONFIG_NET_SCH_HHF=m +CONFIG_NET_SCH_PIE=m CONFIG_NET_SCH_INGRESS=m +CONFIG_NET_SCH_PLUG=m CONFIG_NET_CLS_BASIC=m -CONFIG_NET_CLS_FLOWER=m +CONFIG_NET_CLS_ROUTE4=m +CONFIG_NET_CLS_FW=m +CONFIG_NET_CLS_U32=m +CONFIG_CLS_U32_MARK=y +CONFIG_NET_CLS_FLOW=m +CONFIG_NET_CLS_CGROUP=m +CONFIG_NET_CLS_BPF=y +CONFIG_NET_EMATCH=y +CONFIG_NET_EMATCH_CMP=m +CONFIG_NET_EMATCH_NBYTE=m +CONFIG_NET_EMATCH_U32=m +CONFIG_NET_EMATCH_META=m +CONFIG_NET_EMATCH_TEXT=m +CONFIG_NET_EMATCH_IPSET=m CONFIG_NET_CLS_ACT=y +CONFIG_NET_ACT_POLICE=m CONFIG_NET_ACT_GACT=m +CONFIG_GACT_PROB=y CONFIG_NET_ACT_MIRRED=m -CONFIG_NET_ACT_GATE=m -CONFIG_QRTR_SMD=m -CONFIG_QRTR_TUN=m +CONFIG_NET_ACT_IPT=m +CONFIG_NET_ACT_NAT=m +CONFIG_NET_ACT_PEDIT=m +CONFIG_NET_ACT_SIMP=m +CONFIG_NET_ACT_SKBEDIT=m +CONFIG_NET_ACT_CSUM=m +CONFIG_BATMAN_ADV=m +CONFIG_OPENVSWITCH=m +CONFIG_VSOCKETS=m +CONFIG_CGROUP_NET_PRIO=y +CONFIG_NET_PKTGEN=m +CONFIG_HAMRADIO=y +CONFIG_AX25=m +CONFIG_NETROM=m +CONFIG_ROSE=m +CONFIG_MKISS=m +CONFIG_6PACK=m +CONFIG_BPQETHER=m +CONFIG_BAYCOM_SER_FDX=m +CONFIG_BAYCOM_SER_HDX=m +CONFIG_YAM=m CONFIG_CAN=m +CONFIG_CAN_J1939=m +CONFIG_CAN_ISOTP=m CONFIG_BT=m +CONFIG_BT_RFCOMM=m +CONFIG_BT_RFCOMM_TTY=y +CONFIG_BT_BNEP=m +CONFIG_BT_BNEP_MC_FILTER=y +CONFIG_BT_BNEP_PROTO_FILTER=y CONFIG_BT_HIDP=m -# CONFIG_BT_LE is not set -CONFIG_BT_LEDS=y -# CONFIG_BT_DEBUGFS is not set +CONFIG_BT_6LOWPAN=m CONFIG_BT_HCIBTUSB=m -CONFIG_BT_HCIBTUSB_MTK=y CONFIG_BT_HCIUART=m -CONFIG_BT_HCIUART_LL=y +CONFIG_BT_HCIUART_3WIRE=y CONFIG_BT_HCIUART_BCM=y -CONFIG_BT_HCIUART_QCA=y -CONFIG_BT_HCIUART_MRVL=y +CONFIG_BT_HCIBCM203X=m +CONFIG_BT_HCIBPA10X=m +CONFIG_BT_HCIBFUSB=m +CONFIG_BT_HCIVHCI=m CONFIG_BT_MRVL=m CONFIG_BT_MRVL_SDIO=m -CONFIG_BT_QCOMSMD=m -CONFIG_BT_NXPUART=m +CONFIG_BT_ATH3K=m CONFIG_CFG80211=m +CONFIG_CFG80211_WEXT=y CONFIG_MAC80211=m -CONFIG_MAC80211_LEDS=y +CONFIG_MAC80211_MESH=y CONFIG_RFKILL=m -CONFIG_NET_9P=y -CONFIG_NET_9P_VIRTIO=y +CONFIG_RFKILL_INPUT=y +CONFIG_NET_9P=m CONFIG_NFC=m -CONFIG_NFC_NCI=m -CONFIG_NFC_S3FWRN5_I2C=m CONFIG_PCI=y CONFIG_PCIEPORTBUS=y CONFIG_PCIEAER=y -CONFIG_PCI_IOV=y -CONFIG_PCI_PASID=y -CONFIG_HOTPLUG_PCI=y -CONFIG_HOTPLUG_PCI_ACPI=y -CONFIG_PCI_AARDVARK=y -CONFIG_PCIE_ALTERA=y -CONFIG_PCIE_ALTERA_MSI=y -CONFIG_PCIE_BRCMSTB=m -CONFIG_PCI_HOST_THUNDER_PEM=y -CONFIG_PCI_HOST_THUNDER_ECAM=y -CONFIG_PCI_HOST_GENERIC=y -CONFIG_PCIE_MEDIATEK_GEN3=m -CONFIG_PCI_TEGRA=y -CONFIG_PCIE_RCAR_HOST=y -CONFIG_PCIE_RCAR_EP=y -CONFIG_PCIE_ROCKCHIP_HOST=m -CONFIG_PCI_XGENE=y -CONFIG_PCI_IMX6_HOST=y -CONFIG_PCI_LAYERSCAPE=y -CONFIG_PCI_HISI=y -CONFIG_PCIE_KIRIN=y -CONFIG_PCIE_HISI_STB=y -CONFIG_PCIE_ARMADA_8K=y -CONFIG_PCIE_TEGRA194_HOST=m -CONFIG_PCIE_QCOM=y -CONFIG_PCIE_ROCKCHIP_DW_HOST=y -CONFIG_PCIE_VISCONTI_HOST=y -CONFIG_PCIE_LAYERSCAPE_GEN4=y -CONFIG_PCI_ENDPOINT=y -CONFIG_PCI_ENDPOINT_CONFIGFS=y -CONFIG_PCI_EPF_TEST=m +CONFIG_PCIEASPM_POWERSAVE=y +CONFIG_PCIE_DPC=y +CONFIG_UEVENT_HELPER=y CONFIG_DEVTMPFS=y CONFIG_DEVTMPFS_MOUNT=y -CONFIG_FW_LOADER_USER_HELPER=y -CONFIG_HISILICON_LPC=y -CONFIG_TEGRA_ACONNECT=m -CONFIG_MHI_BUS_PCI_GENERIC=m -CONFIG_ARM_SCPI_PROTOCOL=y +# CONFIG_BRCMSTB_GISB_ARB is not set CONFIG_RASPBERRYPI_FIRMWARE=y -CONFIG_INTEL_STRATIX10_SERVICE=y -CONFIG_INTEL_STRATIX10_RSU=m -CONFIG_EFI_CAPSULE_LOADER=y -CONFIG_IMX_SCU=y -CONFIG_IMX_SCU_PD=y -CONFIG_GNSS=m -CONFIG_GNSS_MTK_SERIAL=m -CONFIG_MTD=y -CONFIG_MTD_BLOCK=y -CONFIG_MTD_CFI=y -CONFIG_MTD_CFI_ADV_OPTIONS=y -CONFIG_MTD_CFI_INTELEXT=y -CONFIG_MTD_CFI_AMDSTD=y -CONFIG_MTD_CFI_STAA=y -CONFIG_MTD_PHYSMAP=y -CONFIG_MTD_PHYSMAP_OF=y -CONFIG_MTD_DATAFLASH=y -CONFIG_MTD_SST25L=y -CONFIG_MTD_RAW_NAND=y -CONFIG_MTD_NAND_DENALI_DT=y -CONFIG_MTD_NAND_MARVELL=y -CONFIG_MTD_NAND_BRCMNAND=m -CONFIG_MTD_NAND_FSL_IFC=y -CONFIG_MTD_NAND_QCOM=y -CONFIG_MTD_SPI_NOR=y +# CONFIG_EFI_VARS_PSTORE is not set +CONFIG_MTD=m +CONFIG_MTD_BLOCK=m +CONFIG_MTD_BLOCK2MTD=m +CONFIG_MTD_SPI_NAND=m +CONFIG_MTD_SPI_NOR=m CONFIG_MTD_UBI=m +CONFIG_OF_CONFIGFS=y +CONFIG_ZRAM=m CONFIG_BLK_DEV_LOOP=y +CONFIG_BLK_DEV_DRBD=m CONFIG_BLK_DEV_NBD=m -CONFIG_VIRTIO_BLK=y -CONFIG_BLK_DEV_NVME=m -CONFIG_QCOM_COINCELL=m -CONFIG_QCOM_FASTRPC=m -CONFIG_SRAM=y -CONFIG_PCI_ENDPOINT_TEST=m +CONFIG_BLK_DEV_RAM=y +CONFIG_ATA_OVER_ETH=m +CONFIG_BLK_DEV_NVME=y +CONFIG_NVME_HWMON=y CONFIG_EEPROM_AT24=m CONFIG_EEPROM_AT25=m -CONFIG_UACCE=m +CONFIG_TI_ST=m +CONFIG_SCSI=y # CONFIG_SCSI_PROC_FS is not set CONFIG_BLK_DEV_SD=y -CONFIG_SCSI_SAS_ATA=y -CONFIG_SCSI_HISI_SAS=y -CONFIG_SCSI_HISI_SAS_PCI=y -CONFIG_MEGARAID_SAS=y -CONFIG_SCSI_MPT3SAS=m -CONFIG_ATA=y -CONFIG_SATA_AHCI=y -CONFIG_SATA_AHCI_PLATFORM=y -CONFIG_AHCI_BRCM=m -CONFIG_AHCI_DWC=m -CONFIG_AHCI_CEVA=y -CONFIG_AHCI_MVEBU=y -CONFIG_AHCI_XGENE=y -CONFIG_AHCI_QORIQ=y -CONFIG_SATA_SIL24=y -CONFIG_SATA_RCAR=y -CONFIG_PATA_OF_PLATFORM=y +CONFIG_CHR_DEV_ST=m +CONFIG_BLK_DEV_SR=m +CONFIG_CHR_DEV_SG=m +CONFIG_SCSI_ISCSI_ATTRS=y +CONFIG_ISCSI_TCP=m +CONFIG_ISCSI_BOOT_SYSFS=m +CONFIG_ATA=m +CONFIG_SATA_AHCI=m +CONFIG_SATA_MV=m CONFIG_MD=y -CONFIG_BLK_DEV_MD=m +CONFIG_MD_LINEAR=m CONFIG_BLK_DEV_DM=m +CONFIG_DM_CRYPT=m +CONFIG_DM_SNAPSHOT=m +CONFIG_DM_THIN_PROVISIONING=m +CONFIG_DM_CACHE=m +CONFIG_DM_WRITECACHE=m CONFIG_DM_MIRROR=m +CONFIG_DM_LOG_USERSPACE=m +CONFIG_DM_RAID=m CONFIG_DM_ZERO=m +CONFIG_DM_MULTIPATH=m +CONFIG_DM_DELAY=m +CONFIG_DM_INTEGRITY=m CONFIG_NETDEVICES=y +CONFIG_BONDING=m +CONFIG_DUMMY=m +CONFIG_WIREGUARD=m +CONFIG_IFB=m CONFIG_MACVLAN=m CONFIG_MACVTAP=m -CONFIG_TUN=y +CONFIG_IPVLAN=m +CONFIG_VXLAN=m +CONFIG_NETCONSOLE=m +CONFIG_TUN=m CONFIG_VETH=m -CONFIG_VIRTIO_NET=y -CONFIG_MHI_NET=m -CONFIG_NET_DSA_BCM_SF2=m -CONFIG_NET_DSA_MSCC_FELIX=m -CONFIG_AMD_XGBE=y -CONFIG_NET_XGENE=y -CONFIG_ATL1C=m -CONFIG_BCMGENET=m -CONFIG_BNX2X=m -CONFIG_SYSTEMPORT=m +CONFIG_NET_VRF=m +CONFIG_VSOCKMON=m +CONFIG_BCMGENET=y CONFIG_MACB=y -CONFIG_THUNDER_NIC_PF=y -CONFIG_FEC=y -CONFIG_FSL_FMAN=y -CONFIG_FSL_DPAA_ETH=y -CONFIG_FSL_DPAA2_ETH=y -CONFIG_FSL_ENETC=y -CONFIG_FSL_ENETC_VF=y -CONFIG_FSL_ENETC_QOS=y -CONFIG_HIX5HD2_GMAC=y -CONFIG_HNS_DSAF=y -CONFIG_HNS_ENET=y -CONFIG_HNS3=y -CONFIG_HNS3_HCLGE=y -CONFIG_HNS3_ENET=y -CONFIG_E1000=y -CONFIG_E1000E=y -CONFIG_IGB=y -CONFIG_IGBVF=y -CONFIG_MVNETA=y -CONFIG_MVPP2=y -CONFIG_SKY2=y -CONFIG_MLX4_EN=m -CONFIG_MLX5_CORE=m -CONFIG_MLX5_CORE_EN=y -CONFIG_QCOM_EMAC=m -CONFIG_RMNET=m +CONFIG_IGB=m +CONFIG_IXGBE=m +CONFIG_I40E=m +CONFIG_IGC=m +CONFIG_ENC28J60=m +CONFIG_LAN743X=m +CONFIG_QCA7000_SPI=m +CONFIG_QCA7000_UART=m CONFIG_R8169=m -CONFIG_SH_ETH=y -CONFIG_RAVB=y -CONFIG_RENESAS_ETHER_SWITCH=y -CONFIG_SMC91X=y -CONFIG_SMSC911X=y -CONFIG_SNI_AVE=y -CONFIG_SNI_NETSEC=y -CONFIG_STMMAC_ETH=m -CONFIG_DWMAC_TEGRA=m -CONFIG_TI_K3_AM65_CPSW_NUSS=y -CONFIG_QCOM_IPA=m -CONFIG_MESON_GXL_PHY=m -CONFIG_AQUANTIA_PHY=y -CONFIG_BCM54140_PHY=m -CONFIG_MARVELL_PHY=m -CONFIG_MARVELL_10G_PHY=y +CONFIG_WIZNET_W5100=m +CONFIG_WIZNET_W5100_SPI=m CONFIG_MICREL_PHY=y -CONFIG_MICROSEMI_PHY=y -CONFIG_AT803X_PHY=y -CONFIG_REALTEK_PHY=y -CONFIG_ROCKCHIP_PHY=y -CONFIG_DP83867_PHY=y -CONFIG_DP83869_PHY=m -CONFIG_DP83TD510_PHY=y -CONFIG_VITESSE_PHY=y -CONFIG_CAN_FLEXCAN=m -CONFIG_CAN_M_CAN=m -CONFIG_CAN_M_CAN_PLATFORM=m -CONFIG_CAN_RCAR=m -CONFIG_CAN_RCAR_CANFD=m +CONFIG_CAN_VCAN=m +CONFIG_CAN_SLCAN=m +CONFIG_CAN_MCP251X=m CONFIG_CAN_MCP251XFD=m -CONFIG_MDIO_GPIO=y -CONFIG_MDIO_BUS_MUX_MULTIPLEXER=y -CONFIG_MDIO_BUS_MUX_MMIOREG=y +CONFIG_CAN_8DEV_USB=m +CONFIG_CAN_EMS_USB=m +CONFIG_CAN_GS_USB=m +CONFIG_CAN_PEAK_USB=m +CONFIG_MDIO_BITBANG=m +CONFIG_PPP=m +CONFIG_PPP_BSDCOMP=m +CONFIG_PPP_DEFLATE=m +CONFIG_PPP_FILTER=y +CONFIG_PPP_MPPE=m +CONFIG_PPP_MULTILINK=y +CONFIG_PPPOATM=m +CONFIG_PPPOE=m +CONFIG_PPPOL2TP=m +CONFIG_PPP_ASYNC=m +CONFIG_PPP_SYNC_TTY=m +CONFIG_SLIP=m +CONFIG_SLIP_COMPRESSED=y +CONFIG_SLIP_SMART=y +CONFIG_USB_CATC=m +CONFIG_USB_KAWETH=m CONFIG_USB_PEGASUS=m CONFIG_USB_RTL8150=m -CONFIG_USB_RTL8152=m -CONFIG_USB_LAN78XX=m -CONFIG_USB_USBNET=m +CONFIG_USB_RTL8152=y +CONFIG_USB_LAN78XX=y +CONFIG_USB_USBNET=y +CONFIG_USB_NET_AX8817X=m +CONFIG_USB_NET_AX88179_178A=m +CONFIG_USB_NET_CDCETHER=m +CONFIG_USB_NET_CDC_EEM=m +CONFIG_USB_NET_CDC_NCM=m +CONFIG_USB_NET_HUAWEI_CDC_NCM=m +CONFIG_USB_NET_CDC_MBIM=m CONFIG_USB_NET_DM9601=m +CONFIG_USB_NET_SR9700=m CONFIG_USB_NET_SR9800=m CONFIG_USB_NET_SMSC75XX=m -CONFIG_USB_NET_SMSC95XX=m +CONFIG_USB_NET_SMSC95XX=y +CONFIG_USB_NET_GL620A=m +CONFIG_USB_NET_NET1080=m CONFIG_USB_NET_PLUSB=m CONFIG_USB_NET_MCS7830=m -CONFIG_ATH10K=m -CONFIG_ATH10K_PCI=m -CONFIG_ATH10K_SDIO=m -CONFIG_ATH10K_SNOC=m -CONFIG_WCN36XX=m -CONFIG_ATH11K=m -CONFIG_ATH11K_AHB=m -CONFIG_ATH11K_PCI=m +CONFIG_USB_NET_CDC_SUBSET=m +CONFIG_USB_ALI_M5632=y +CONFIG_USB_AN2720=y +CONFIG_USB_EPSON2888=y +CONFIG_USB_KC2190=y +CONFIG_USB_NET_ZAURUS=m +CONFIG_USB_NET_CX82310_ETH=m +CONFIG_USB_NET_KALMIA=m +CONFIG_USB_NET_QMI_WWAN=m +CONFIG_USB_HSO=m +CONFIG_USB_NET_INT51X1=m +CONFIG_USB_IPHETH=m +CONFIG_USB_SIERRA_NET=m +CONFIG_USB_VL600=m +CONFIG_USB_NET_AQC111=m +CONFIG_ATH9K=m +CONFIG_ATH9K_HTC=m +CONFIG_CARL9170=m +CONFIG_ATH6KL=m +CONFIG_ATH6KL_USB=m +CONFIG_AR5523=m +CONFIG_AT76C50X_USB=m +CONFIG_B43=m +# CONFIG_B43_PHY_N is not set +CONFIG_B43LEGACY=m CONFIG_BRCMFMAC=m +CONFIG_BRCMFMAC_USB=y +CONFIG_BRCMDBG=y +CONFIG_HOSTAP=m +CONFIG_P54_COMMON=m +CONFIG_P54_USB=m +CONFIG_LIBERTAS=m +CONFIG_LIBERTAS_USB=m +CONFIG_LIBERTAS_SDIO=m +CONFIG_LIBERTAS_THINFIRM=m +CONFIG_LIBERTAS_THINFIRM_USB=m CONFIG_MWIFIEX=m CONFIG_MWIFIEX_SDIO=m -CONFIG_MWIFIEX_PCIE=m -CONFIG_MT7921E=m -CONFIG_RSI_91X=m -CONFIG_WL18XX=m -CONFIG_WLCORE_SDIO=m -CONFIG_WWAN=m -CONFIG_MHI_WWAN_CTRL=m -CONFIG_MHI_WWAN_MBIM=m +CONFIG_MT7601U=m +CONFIG_MT76x0U=m +CONFIG_MT76x2U=m +CONFIG_MT7921U=m +CONFIG_RT2X00=m +CONFIG_RT2500USB=m +CONFIG_RT73USB=m +CONFIG_RT2800USB=m +CONFIG_RT2800USB_RT3573=y +CONFIG_RT2800USB_RT53XX=y +CONFIG_RT2800USB_RT55XX=y +CONFIG_RT2800USB_UNKNOWN=y +CONFIG_RTL8187=m +CONFIG_RTL8192CU=m +CONFIG_RTL8XXXU=m +CONFIG_RTW88=m +CONFIG_RTW88_8822BU=m +CONFIG_RTW88_8822CU=m +CONFIG_RTW88_8723DU=m +CONFIG_RTW88_8821CU=m +CONFIG_USB_ZD1201=m +CONFIG_ZD1211RW=m +CONFIG_USB_NET_RNDIS_WLAN=m +CONFIG_MAC80211_HWSIM=m +CONFIG_IEEE802154_AT86RF230=m +CONFIG_IEEE802154_MRF24J40=m +CONFIG_IEEE802154_CC2520=m +CONFIG_INPUT_MOUSEDEV=y +CONFIG_INPUT_JOYDEV=m CONFIG_INPUT_EVDEV=y -CONFIG_KEYBOARD_ADC=m -CONFIG_KEYBOARD_GPIO=y -CONFIG_KEYBOARD_SNVS_PWRKEY=m -CONFIG_KEYBOARD_IMX_SC_KEY=m -CONFIG_KEYBOARD_CROS_EC=y -CONFIG_KEYBOARD_MTK_PMIC=m -CONFIG_MOUSE_ELAN_I2C=m +# CONFIG_KEYBOARD_ATKBD is not set +CONFIG_KEYBOARD_GPIO=m +CONFIG_KEYBOARD_TCA6416=m +CONFIG_KEYBOARD_TCA8418=m +CONFIG_KEYBOARD_MATRIX=m +CONFIG_KEYBOARD_CAP11XX=m +# CONFIG_INPUT_MOUSE is not set +CONFIG_INPUT_JOYSTICK=y +CONFIG_JOYSTICK_IFORCE=m +CONFIG_JOYSTICK_IFORCE_USB=m +CONFIG_JOYSTICK_XPAD=m +CONFIG_JOYSTICK_XPAD_FF=y +CONFIG_JOYSTICK_XPAD_LEDS=y +CONFIG_JOYSTICK_PSXPAD_SPI=m +CONFIG_JOYSTICK_PSXPAD_SPI_FF=y +CONFIG_JOYSTICK_FSIA6B=m +CONFIG_JOYSTICK_RPISENSE=m CONFIG_INPUT_TOUCHSCREEN=y -CONFIG_TOUCHSCREEN_ATMEL_MXT=m +CONFIG_TOUCHSCREEN_ADS7846=m +CONFIG_TOUCHSCREEN_EGALAX=m +CONFIG_TOUCHSCREEN_EXC3000=m CONFIG_TOUCHSCREEN_GOODIX=m -CONFIG_TOUCHSCREEN_ELAN=m +CONFIG_TOUCHSCREEN_ILI210X=m CONFIG_TOUCHSCREEN_EDT_FT5X06=m +CONFIG_TOUCHSCREEN_RASPBERRYPI_FW=m +CONFIG_TOUCHSCREEN_USB_COMPOSITE=m +CONFIG_TOUCHSCREEN_TSC2007=m +CONFIG_TOUCHSCREEN_TSC2007_IIO=y +CONFIG_TOUCHSCREEN_STMPE=m +CONFIG_TOUCHSCREEN_IQS5XX=m CONFIG_INPUT_MISC=y -CONFIG_INPUT_BBNSM_PWRKEY=m -CONFIG_INPUT_PM8941_PWRKEY=y -CONFIG_INPUT_PM8XXX_VIBRATOR=m -CONFIG_INPUT_TPS65219_PWRBUTTON=m -CONFIG_INPUT_PWM_BEEPER=m -CONFIG_INPUT_PWM_VIBRA=m -CONFIG_INPUT_RK805_PWRKEY=m -CONFIG_INPUT_HISI_POWERKEY=y -# CONFIG_SERIO_SERPORT is not set -CONFIG_SERIO_AMBAKMI=y -CONFIG_LEGACY_PTY_COUNT=16 +CONFIG_INPUT_AD714X=m +CONFIG_INPUT_ATI_REMOTE2=m +CONFIG_INPUT_KEYSPAN_REMOTE=m +CONFIG_INPUT_POWERMATE=m +CONFIG_INPUT_YEALINK=m +CONFIG_INPUT_CM109=m +CONFIG_INPUT_UINPUT=m +CONFIG_INPUT_GPIO_ROTARY_ENCODER=m +CONFIG_INPUT_ADXL34X=m +CONFIG_INPUT_CMA3000=m +CONFIG_SERIO=m +CONFIG_SERIO_RAW=m +CONFIG_GAMEPORT=m +CONFIG_BRCM_CHAR_DRIVERS=y +CONFIG_BCM_VCIO=y +# CONFIG_LEGACY_PTYS is not set CONFIG_SERIAL_8250=y +# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set CONFIG_SERIAL_8250_CONSOLE=y +# CONFIG_SERIAL_8250_DMA is not set +CONFIG_SERIAL_8250_NR_UARTS=5 +CONFIG_SERIAL_8250_RUNTIME_UARTS=0 CONFIG_SERIAL_8250_EXTENDED=y CONFIG_SERIAL_8250_SHARE_IRQ=y CONFIG_SERIAL_8250_BCM2835AUX=y -CONFIG_SERIAL_8250_DW=y -CONFIG_SERIAL_8250_EM=y -CONFIG_SERIAL_8250_OMAP=y -CONFIG_SERIAL_8250_MT6577=y -CONFIG_SERIAL_8250_UNIPHIER=y CONFIG_SERIAL_OF_PLATFORM=y CONFIG_SERIAL_AMBA_PL011=y CONFIG_SERIAL_AMBA_PL011_CONSOLE=y -CONFIG_SERIAL_MESON=y -CONFIG_SERIAL_MESON_CONSOLE=y -CONFIG_SERIAL_SAMSUNG=y -CONFIG_SERIAL_SAMSUNG_CONSOLE=y -CONFIG_SERIAL_TEGRA=y -CONFIG_SERIAL_TEGRA_TCU=y -CONFIG_SERIAL_IMX=y -CONFIG_SERIAL_IMX_CONSOLE=y -CONFIG_SERIAL_SH_SCI=y -CONFIG_SERIAL_MSM=y -CONFIG_SERIAL_MSM_CONSOLE=y -CONFIG_SERIAL_QCOM_GENI=y -CONFIG_SERIAL_QCOM_GENI_CONSOLE=y -CONFIG_SERIAL_XILINX_PS_UART=y -CONFIG_SERIAL_XILINX_PS_UART_CONSOLE=y -CONFIG_SERIAL_FSL_LPUART=y -CONFIG_SERIAL_FSL_LPUART_CONSOLE=y -CONFIG_SERIAL_FSL_LINFLEXUART=y -CONFIG_SERIAL_FSL_LINFLEXUART_CONSOLE=y -CONFIG_SERIAL_STM32=y -CONFIG_SERIAL_STM32_CONSOLE=y -CONFIG_SERIAL_MVEBU_UART=y -CONFIG_SERIAL_OWL=y +CONFIG_SERIAL_SC16IS7XX=m +CONFIG_SERIAL_SC16IS7XX_SPI=y CONFIG_SERIAL_DEV_BUS=y -CONFIG_VIRTIO_CONSOLE=y -CONFIG_IPMI_HANDLER=m -CONFIG_IPMI_DEVICE_INTERFACE=m -CONFIG_IPMI_SI=m +CONFIG_TTY_PRINTK=y CONFIG_HW_RANDOM=y -CONFIG_HW_RANDOM_VIRTIO=y -CONFIG_TCG_TPM=y -CONFIG_TCG_TIS=m +CONFIG_TCG_TPM=m CONFIG_TCG_TIS_SPI=m -CONFIG_TCG_TIS_SPI_CR50=y -CONFIG_TCG_TIS_I2C_CR50=m -CONFIG_TCG_TIS_I2C_INFINEON=y +CONFIG_TCG_TIS_I2C=m +CONFIG_XILLYBUS=m +CONFIG_XILLYBUS_PCIE=m +CONFIG_XILLYUSB=m +CONFIG_RASPBERRYPI_GPIOMEM=m +CONFIG_I2C=y CONFIG_I2C_CHARDEV=y CONFIG_I2C_MUX=y -CONFIG_I2C_MUX_PCA954x=y +CONFIG_I2C_MUX_GPMUX=m +CONFIG_I2C_MUX_PCA954x=m +CONFIG_I2C_MUX_PINCTRL=m +CONFIG_I2C_BCM2708=y CONFIG_I2C_BCM2835=m -CONFIG_I2C_CADENCE=m -CONFIG_I2C_DESIGNWARE_PLATFORM=y -CONFIG_I2C_GPIO=m -CONFIG_I2C_IMX=y -CONFIG_I2C_IMX_LPI2C=y -CONFIG_I2C_MESON=y -CONFIG_I2C_MT65XX=y -CONFIG_I2C_MV64XXX=y -CONFIG_I2C_OMAP=y -CONFIG_I2C_OWL=y -CONFIG_I2C_PXA=y -CONFIG_I2C_QCOM_CCI=m -CONFIG_I2C_QCOM_GENI=m -CONFIG_I2C_QUP=y -CONFIG_I2C_RIIC=y -CONFIG_I2C_RK3X=y -CONFIG_I2C_RZV2M=m -CONFIG_I2C_S3C2410=y -CONFIG_I2C_SH_MOBILE=y -CONFIG_I2C_TEGRA=y -CONFIG_I2C_UNIPHIER_F=y -CONFIG_I2C_RCAR=y -CONFIG_I2C_CROS_EC_TUNNEL=y +CONFIG_I2C_BCM2835_RUST=y +# CONFIG_I2C_BRCMSTB is not set CONFIG_SPI=y -CONFIG_SPI_ARMADA_3700=y CONFIG_SPI_BCM2835=m CONFIG_SPI_BCM2835AUX=m -CONFIG_SPI_CADENCE_QUADSPI=y CONFIG_SPI_DESIGNWARE=m CONFIG_SPI_DW_DMA=y CONFIG_SPI_DW_MMIO=m -CONFIG_SPI_FSL_LPSPI=y -CONFIG_SPI_FSL_QUADSPI=y -CONFIG_SPI_NXP_FLEXSPI=y -CONFIG_SPI_IMX=m -CONFIG_SPI_FSL_DSPI=y -CONFIG_SPI_MESON_SPICC=m -CONFIG_SPI_MESON_SPIFC=m -CONFIG_SPI_MT65XX=y -CONFIG_SPI_MTK_NOR=m -CONFIG_SPI_OMAP24XX=m -CONFIG_SPI_ORION=y -CONFIG_SPI_PL022=y -CONFIG_SPI_ROCKCHIP=y -CONFIG_SPI_ROCKCHIP_SFC=m -CONFIG_SPI_RPCIF=m -CONFIG_SPI_RSPI=m -CONFIG_SPI_RZV2M_CSI=m -CONFIG_SPI_QCOM_QSPI=m -CONFIG_SPI_QUP=y -CONFIG_SPI_QCOM_GENI=m -CONFIG_SPI_S3C64XX=y -CONFIG_SPI_SH_MSIOF=m -CONFIG_SPI_SUN6I=y -CONFIG_SPI_TEGRA210_QUAD=m -CONFIG_SPI_TEGRA114=m +CONFIG_SPI_GPIO=m CONFIG_SPI_SPIDEV=m -CONFIG_SPMI=y -CONFIG_SPMI_MTK_PMIF=m -CONFIG_PINCTRL_MAX77620=y -CONFIG_PINCTRL_RK805=m -CONFIG_PINCTRL_SINGLE=y -CONFIG_PINCTRL_OWL=y -CONFIG_PINCTRL_S700=y -CONFIG_PINCTRL_S900=y -CONFIG_PINCTRL_IMX8MM=y -CONFIG_PINCTRL_IMX8MN=y -CONFIG_PINCTRL_IMX8MP=y -CONFIG_PINCTRL_IMX8MQ=y -CONFIG_PINCTRL_IMX8QM=y -CONFIG_PINCTRL_IMX8QXP=y -CONFIG_PINCTRL_IMX8DXL=y -CONFIG_PINCTRL_IMX8ULP=y -CONFIG_PINCTRL_IMX93=y -CONFIG_PINCTRL_MSM=y -CONFIG_PINCTRL_IPQ5018=y -CONFIG_PINCTRL_IPQ5332=y -CONFIG_PINCTRL_IPQ8074=y -CONFIG_PINCTRL_IPQ6018=y -CONFIG_PINCTRL_IPQ9574=y -CONFIG_PINCTRL_MSM8916=y -CONFIG_PINCTRL_MSM8953=y -CONFIG_PINCTRL_MSM8976=y -CONFIG_PINCTRL_MSM8994=y -CONFIG_PINCTRL_MSM8996=y -CONFIG_PINCTRL_MSM8998=y -CONFIG_PINCTRL_QCM2290=y -CONFIG_PINCTRL_QCS404=y -CONFIG_PINCTRL_QDF2XXX=y -CONFIG_PINCTRL_QDU1000=y -CONFIG_PINCTRL_SA8775P=y -CONFIG_PINCTRL_SC7180=y -CONFIG_PINCTRL_SC7280=y -CONFIG_PINCTRL_SC8180X=y -CONFIG_PINCTRL_SC8280XP=y -CONFIG_PINCTRL_SDM660=y -CONFIG_PINCTRL_SDM670=y -CONFIG_PINCTRL_SDM845=y -CONFIG_PINCTRL_SM6115=y -CONFIG_PINCTRL_SM6125=y -CONFIG_PINCTRL_SM6350=y -CONFIG_PINCTRL_SM6375=y -CONFIG_PINCTRL_SM8150=y -CONFIG_PINCTRL_SM8250=y -CONFIG_PINCTRL_SM8350=y -CONFIG_PINCTRL_SM8450=y -CONFIG_PINCTRL_SM8550=y -CONFIG_PINCTRL_QCOM_SPMI_PMIC=y -CONFIG_PINCTRL_LPASS_LPI=m -CONFIG_PINCTRL_SC7280_LPASS_LPI=m -CONFIG_PINCTRL_SM8250_LPASS_LPI=m -CONFIG_PINCTRL_SM8450_LPASS_LPI=m -CONFIG_PINCTRL_SC8280XP_LPASS_LPI=m -CONFIG_PINCTRL_SM8550_LPASS_LPI=m -CONFIG_GPIO_ALTERA=m -CONFIG_GPIO_DAVINCI=y -CONFIG_GPIO_DWAPB=y -CONFIG_GPIO_MB86S7X=y -CONFIG_GPIO_MPC8XXX=y -CONFIG_GPIO_MXC=y -CONFIG_GPIO_PL061=y -CONFIG_GPIO_RCAR=y -CONFIG_GPIO_SYSCON=y -CONFIG_GPIO_UNIPHIER=y -CONFIG_GPIO_VISCONTI=y -CONFIG_GPIO_WCD934X=m -CONFIG_GPIO_XGENE=y -CONFIG_GPIO_XGENE_SB=y -CONFIG_GPIO_MAX732X=y -CONFIG_GPIO_PCA953X=y +CONFIG_SPI_SLAVE=y +CONFIG_PPS_CLIENT_LDISC=m +CONFIG_PPS_CLIENT_GPIO=m +CONFIG_PINCTRL_MCP23S08=m +CONFIG_PINCTRL_RP1=y +CONFIG_PINCTRL_BCM2712=y +CONFIG_GPIO_SYSFS=y +CONFIG_GPIO_BCM_VIRT=y +CONFIG_GPIO_MAX7300=m +CONFIG_GPIO_PCA953X=m CONFIG_GPIO_PCA953X_IRQ=y -CONFIG_GPIO_BD9571MWV=m -CONFIG_GPIO_MAX77620=y -CONFIG_GPIO_SL28CPLD=m -CONFIG_POWER_RESET_MSM=y -CONFIG_POWER_RESET_QCOM_PON=m -CONFIG_POWER_RESET_XGENE=y -CONFIG_POWER_RESET_SYSCON=y -CONFIG_POWER_RESET_SYSCON_POWEROFF=y -CONFIG_SYSCON_REBOOT_MODE=y -CONFIG_NVMEM_REBOOT_MODE=m -CONFIG_BATTERY_QCOM_BATTMGR=m -CONFIG_BATTERY_SBS=m -CONFIG_BATTERY_BQ27XXX=y -CONFIG_BATTERY_MAX17042=m -CONFIG_CHARGER_MT6360=m -CONFIG_CHARGER_BQ25890=m -CONFIG_CHARGER_BQ25980=m -CONFIG_CHARGER_RK817=m -CONFIG_SENSORS_ARM_SCMI=y -CONFIG_SENSORS_ARM_SCPI=y +CONFIG_GPIO_PCF857X=m +CONFIG_GPIO_ARIZONA=m +CONFIG_GPIO_FSM=m +CONFIG_GPIO_STMPE=y +CONFIG_GPIO_MAX7301=m +CONFIG_GPIO_MOCKUP=m +CONFIG_W1=m +CONFIG_W1_MASTER_DS2490=m +CONFIG_W1_MASTER_DS2482=m +CONFIG_W1_MASTER_GPIO=m +CONFIG_W1_SLAVE_THERM=m +CONFIG_W1_SLAVE_SMEM=m +CONFIG_W1_SLAVE_DS2408=m +CONFIG_W1_SLAVE_DS2413=m +CONFIG_W1_SLAVE_DS2406=m +CONFIG_W1_SLAVE_DS2423=m +CONFIG_W1_SLAVE_DS2431=m +CONFIG_W1_SLAVE_DS2433=m +CONFIG_W1_SLAVE_DS2438=m +CONFIG_W1_SLAVE_DS2780=m +CONFIG_W1_SLAVE_DS2781=m +CONFIG_W1_SLAVE_DS28E04=m +CONFIG_W1_SLAVE_DS28E17=m +# CONFIG_POWER_RESET_BRCMSTB is not set +CONFIG_POWER_RESET_GPIO=y +CONFIG_RPI_POE_POWER=m +CONFIG_BATTERY_DS2760=m +CONFIG_BATTERY_MAX17040=m +CONFIG_CHARGER_GPIO=m +CONFIG_BATTERY_GAUGE_LTC2941=m +CONFIG_SENSORS_ADT7410=m +CONFIG_SENSORS_AHT10=m +CONFIG_SENSORS_DRIVETEMP=m +CONFIG_SENSORS_DS1621=m CONFIG_SENSORS_GPIO_FAN=m +CONFIG_SENSORS_IIO_HWMON=m CONFIG_SENSORS_JC42=m CONFIG_SENSORS_LM75=m -CONFIG_SENSORS_LM90=m CONFIG_SENSORS_PWM_FAN=m CONFIG_SENSORS_RASPBERRYPI_HWMON=m -CONFIG_SENSORS_SL28CPLD=m +CONFIG_SENSORS_SHT21=m +CONFIG_SENSORS_SHT3x=m +CONFIG_SENSORS_SHT4x=m +CONFIG_SENSORS_SHTC1=m +CONFIG_SENSORS_EMC2305=m CONFIG_SENSORS_INA2XX=m -CONFIG_SENSORS_INA3221=m -CONFIG_THERMAL_GOV_POWER_ALLOCATOR=y -CONFIG_CPU_THERMAL=y -CONFIG_DEVFREQ_THERMAL=y -CONFIG_THERMAL_EMULATION=y -CONFIG_IMX_SC_THERMAL=m -CONFIG_IMX8MM_THERMAL=m -CONFIG_K3_THERMAL=m -CONFIG_QORIQ_THERMAL=m -CONFIG_SUN8I_THERMAL=y -CONFIG_ROCKCHIP_THERMAL=m -CONFIG_RCAR_THERMAL=y -CONFIG_RCAR_GEN3_THERMAL=y -CONFIG_RZG2L_THERMAL=y -CONFIG_ARMADA_THERMAL=y -CONFIG_BCM2711_THERMAL=m -CONFIG_BCM2835_THERMAL=m -CONFIG_BRCMSTB_THERMAL=m -CONFIG_EXYNOS_THERMAL=y -CONFIG_TEGRA_SOCTHERM=m -CONFIG_TEGRA_BPMP_THERMAL=m -CONFIG_GENERIC_ADC_THERMAL=m -CONFIG_QCOM_TSENS=y -CONFIG_QCOM_SPMI_ADC_TM5=m -CONFIG_QCOM_SPMI_TEMP_ALARM=m -CONFIG_QCOM_LMH=m -CONFIG_UNIPHIER_THERMAL=y +CONFIG_SENSORS_TMP102=m +CONFIG_SENSORS_RP1_ADC=m +CONFIG_BCM2711_THERMAL=y +CONFIG_BCM2835_THERMAL=y CONFIG_WATCHDOG=y -CONFIG_SL28CPLD_WATCHDOG=m -CONFIG_ARM_SP805_WATCHDOG=y -CONFIG_ARM_SBSA_WATCHDOG=y -CONFIG_S3C2410_WATCHDOG=y -CONFIG_DW_WATCHDOG=y -CONFIG_K3_RTI_WATCHDOG=m -CONFIG_SUNXI_WATCHDOG=m -CONFIG_NPCM7XX_WATCHDOG=y -CONFIG_IMX2_WDT=y -CONFIG_IMX_SC_WDT=m -CONFIG_IMX7ULP_WDT=m -CONFIG_QCOM_WDT=m -CONFIG_MESON_GXBB_WATCHDOG=m -CONFIG_MESON_WATCHDOG=m -CONFIG_ARM_SMC_WATCHDOG=y -CONFIG_RENESAS_WDT=y -CONFIG_RENESAS_RZG2LWDT=y -CONFIG_UNIPHIER_WATCHDOG=y -CONFIG_PM8916_WATCHDOG=m +CONFIG_GPIO_WATCHDOG=m CONFIG_BCM2835_WDT=y -CONFIG_BCM7038_WDT=m -CONFIG_MFD_ALTERA_SYSMGR=y -CONFIG_MFD_BD9571MWV=y -CONFIG_MFD_AXP20X_I2C=y -CONFIG_MFD_AXP20X_RSB=y -CONFIG_MFD_EXYNOS_LPASS=m -CONFIG_MFD_HI6421_PMIC=y -CONFIG_MFD_HI655X_PMIC=y -CONFIG_MFD_MAX77620=y -CONFIG_MFD_MT6360=y -CONFIG_MFD_MT6397=y -CONFIG_MFD_SPMI_PMIC=y -CONFIG_MFD_RK8XX_I2C=y -CONFIG_MFD_RK8XX_SPI=y -CONFIG_MFD_SEC_CORE=y -CONFIG_MFD_SL28CPLD=y -CONFIG_RZ_MTU3=y -CONFIG_MFD_TI_AM335X_TSCADC=m -CONFIG_MFD_TPS65219=y -CONFIG_MFD_ROHM_BD718XX=y -CONFIG_MFD_WCD934X=m +CONFIG_MFD_RASPBERRYPI_POE_HAT=m +CONFIG_MFD_STMPE=y +CONFIG_STMPE_SPI=y +CONFIG_MFD_SYSCON=y +CONFIG_MFD_ARIZONA_I2C=m +CONFIG_MFD_ARIZONA_SPI=m +CONFIG_MFD_WM5102=y +CONFIG_MFD_RP1=y +CONFIG_REGULATOR=y CONFIG_REGULATOR_FIXED_VOLTAGE=y -CONFIG_REGULATOR_AXP20X=y -CONFIG_REGULATOR_BD718XX=y -CONFIG_REGULATOR_BD9571MWV=y -CONFIG_REGULATOR_CROS_EC=y -CONFIG_REGULATOR_FAN53555=y +CONFIG_REGULATOR_ARIZONA_LDO1=m +CONFIG_REGULATOR_ARIZONA_MICSUPP=m CONFIG_REGULATOR_GPIO=y -CONFIG_REGULATOR_HI6421V530=y -CONFIG_REGULATOR_HI655X=y -CONFIG_REGULATOR_MAX77620=y -CONFIG_REGULATOR_MAX8973=y -CONFIG_REGULATOR_MP8859=y -CONFIG_REGULATOR_MT6315=m -CONFIG_REGULATOR_MT6357=y -CONFIG_REGULATOR_MT6358=y -CONFIG_REGULATOR_MT6359=y -CONFIG_REGULATOR_MT6360=y -CONFIG_REGULATOR_MT6397=y -CONFIG_REGULATOR_PCA9450=y -CONFIG_REGULATOR_PF8X00=y -CONFIG_REGULATOR_PFUZE100=y -CONFIG_REGULATOR_PWM=y -CONFIG_REGULATOR_QCOM_RPMH=y -CONFIG_REGULATOR_QCOM_SMD_RPM=y -CONFIG_REGULATOR_QCOM_SPMI=y -CONFIG_REGULATOR_RAA215300=y -CONFIG_REGULATOR_RK808=y -CONFIG_REGULATOR_S2MPS11=y -CONFIG_REGULATOR_TPS65132=m -CONFIG_REGULATOR_TPS65219=y -CONFIG_REGULATOR_VCTRL=m -CONFIG_RC_CORE=m +CONFIG_REGULATOR_RASPBERRYPI_TOUCHSCREEN_ATTINY=m +CONFIG_REGULATOR_RASPBERRYPI_TOUCHSCREEN_V2=m +CONFIG_RC_CORE=y +CONFIG_BPF_LIRC_MODE2=y +CONFIG_LIRC=y CONFIG_RC_DECODERS=y +CONFIG_IR_IMON_DECODER=m +CONFIG_IR_JVC_DECODER=m +CONFIG_IR_MCE_KBD_DECODER=m +CONFIG_IR_NEC_DECODER=m +CONFIG_IR_RC5_DECODER=m +CONFIG_IR_RC6_DECODER=m +CONFIG_IR_SANYO_DECODER=m +CONFIG_IR_SHARP_DECODER=m +CONFIG_IR_SONY_DECODER=m +CONFIG_IR_XMP_DECODER=m CONFIG_RC_DEVICES=y CONFIG_IR_GPIO_CIR=m -CONFIG_IR_MESON=m -CONFIG_IR_SUNXI=m +CONFIG_IR_GPIO_TX=m +CONFIG_IR_IGUANA=m +CONFIG_IR_IMON=m +CONFIG_IR_MCEUSB=m +CONFIG_IR_PWM_TX=m +CONFIG_IR_REDRAT3=m +CONFIG_IR_STREAMZAP=m +CONFIG_IR_TOY=m +CONFIG_IR_TTUSBIR=m +CONFIG_RC_ATI_REMOTE=m +CONFIG_RC_LOOPBACK=m +CONFIG_MEDIA_CEC_RC=y CONFIG_MEDIA_SUPPORT=m -CONFIG_MEDIA_CAMERA_SUPPORT=y -CONFIG_MEDIA_ANALOG_TV_SUPPORT=y -CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y -CONFIG_MEDIA_SDR_SUPPORT=y -CONFIG_MEDIA_PLATFORM_SUPPORT=y -# CONFIG_DVB_NET is not set CONFIG_MEDIA_USB_SUPPORT=y +CONFIG_USB_GSPCA=m +CONFIG_USB_GSPCA_BENQ=m +CONFIG_USB_GSPCA_CONEX=m +CONFIG_USB_GSPCA_CPIA1=m +CONFIG_USB_GSPCA_DTCS033=m +CONFIG_USB_GSPCA_ETOMS=m +CONFIG_USB_GSPCA_FINEPIX=m +CONFIG_USB_GSPCA_JEILINJ=m +CONFIG_USB_GSPCA_JL2005BCD=m +CONFIG_USB_GSPCA_KINECT=m +CONFIG_USB_GSPCA_KONICA=m +CONFIG_USB_GSPCA_MARS=m +CONFIG_USB_GSPCA_MR97310A=m +CONFIG_USB_GSPCA_NW80X=m +CONFIG_USB_GSPCA_OV519=m +CONFIG_USB_GSPCA_OV534=m +CONFIG_USB_GSPCA_OV534_9=m +CONFIG_USB_GSPCA_PAC207=m +CONFIG_USB_GSPCA_PAC7302=m +CONFIG_USB_GSPCA_PAC7311=m +CONFIG_USB_GSPCA_SE401=m +CONFIG_USB_GSPCA_SN9C2028=m +CONFIG_USB_GSPCA_SN9C20X=m +CONFIG_USB_GSPCA_SONIXB=m +CONFIG_USB_GSPCA_SONIXJ=m +CONFIG_USB_GSPCA_SPCA1528=m +CONFIG_USB_GSPCA_SPCA500=m +CONFIG_USB_GSPCA_SPCA501=m +CONFIG_USB_GSPCA_SPCA505=m +CONFIG_USB_GSPCA_SPCA506=m +CONFIG_USB_GSPCA_SPCA508=m +CONFIG_USB_GSPCA_SPCA561=m +CONFIG_USB_GSPCA_SQ905=m +CONFIG_USB_GSPCA_SQ905C=m +CONFIG_USB_GSPCA_SQ930X=m +CONFIG_USB_GSPCA_STK014=m +CONFIG_USB_GSPCA_STK1135=m +CONFIG_USB_GSPCA_STV0680=m +CONFIG_USB_GSPCA_SUNPLUS=m +CONFIG_USB_GSPCA_T613=m +CONFIG_USB_GSPCA_TOPRO=m +CONFIG_USB_GSPCA_TOUPTEK=m +CONFIG_USB_GSPCA_TV8532=m +CONFIG_USB_GSPCA_VC032X=m +CONFIG_USB_GSPCA_VICAM=m +CONFIG_USB_GSPCA_XIRLINK_CIT=m +CONFIG_USB_GSPCA_ZC3XX=m +CONFIG_USB_GL860=m +CONFIG_USB_M5602=m +CONFIG_USB_STV06XX=m +CONFIG_USB_PWC=m +CONFIG_USB_S2255=m +CONFIG_VIDEO_USBTV=m CONFIG_USB_VIDEO_CLASS=m +CONFIG_VIDEO_GO7007=m +CONFIG_VIDEO_GO7007_USB=m +CONFIG_VIDEO_GO7007_USB_S2250_BOARD=m +CONFIG_VIDEO_HDPVR=m +CONFIG_VIDEO_PVRUSB2=m +CONFIG_VIDEO_STK1160=m +CONFIG_VIDEO_AU0828=m +CONFIG_VIDEO_AU0828_RC=y +CONFIG_VIDEO_CX231XX=m +CONFIG_VIDEO_CX231XX_ALSA=m +CONFIG_VIDEO_CX231XX_DVB=m +CONFIG_DVB_AS102=m +CONFIG_DVB_B2C2_FLEXCOP_USB=m +CONFIG_DVB_USB_V2=m +CONFIG_DVB_USB_AF9015=m +CONFIG_DVB_USB_AF9035=m +CONFIG_DVB_USB_ANYSEE=m +CONFIG_DVB_USB_AU6610=m +CONFIG_DVB_USB_AZ6007=m +CONFIG_DVB_USB_CE6230=m +CONFIG_DVB_USB_DVBSKY=m +CONFIG_DVB_USB_EC168=m +CONFIG_DVB_USB_GL861=m +CONFIG_DVB_USB_LME2510=m +CONFIG_DVB_USB_MXL111SF=m +CONFIG_DVB_USB_RTL28XXU=m +CONFIG_DVB_USB=m +CONFIG_DVB_USB_A800=m +CONFIG_DVB_USB_AF9005=m +CONFIG_DVB_USB_AF9005_REMOTE=m +CONFIG_DVB_USB_AZ6027=m +CONFIG_DVB_USB_CINERGY_T2=m +CONFIG_DVB_USB_CXUSB=m +CONFIG_DVB_USB_DIB0700=m +CONFIG_DVB_USB_DIBUSB_MB=m +CONFIG_DVB_USB_DIBUSB_MB_FAULTY=y +CONFIG_DVB_USB_DIBUSB_MC=m +CONFIG_DVB_USB_DIGITV=m +CONFIG_DVB_USB_DTT200U=m +CONFIG_DVB_USB_DTV5100=m +CONFIG_DVB_USB_DW2102=m +CONFIG_DVB_USB_GP8PSK=m +CONFIG_DVB_USB_M920X=m +CONFIG_DVB_USB_NOVA_T_USB2=m +CONFIG_DVB_USB_OPERA1=m +CONFIG_DVB_USB_PCTV452E=m +CONFIG_DVB_USB_TECHNISAT_USB2=m +CONFIG_DVB_USB_TTUSB2=m +CONFIG_DVB_USB_UMT_010=m +CONFIG_DVB_USB_VP702X=m +CONFIG_DVB_USB_VP7045=m +CONFIG_SMS_USB_DRV=m +CONFIG_VIDEO_EM28XX=m +CONFIG_VIDEO_EM28XX_V4L2=m +CONFIG_VIDEO_EM28XX_ALSA=m +CONFIG_VIDEO_EM28XX_DVB=m +CONFIG_RADIO_SAA7706H=m +CONFIG_RADIO_SHARK=m +CONFIG_RADIO_SHARK2=m +CONFIG_RADIO_SI4713=m +CONFIG_RADIO_TEA5764=m +CONFIG_RADIO_TEF6862=m +CONFIG_RADIO_WL1273=m +CONFIG_USB_DSBR=m +CONFIG_USB_KEENE=m +CONFIG_USB_MA901=m +CONFIG_USB_MR800=m +CONFIG_RADIO_SI470X=m +CONFIG_USB_SI470X=m +CONFIG_I2C_SI470X=m +CONFIG_I2C_SI4713=m +CONFIG_RADIO_WL128X=m CONFIG_V4L_PLATFORM_DRIVERS=y -CONFIG_SDR_PLATFORM_DRIVERS=y -CONFIG_V4L_MEM2MEM_DRIVERS=y -CONFIG_VIDEO_MEDIATEK_JPEG=m -CONFIG_VIDEO_MEDIATEK_VCODEC=m -CONFIG_VIDEO_IMX7_CSI=m -CONFIG_VIDEO_IMX_MIPI_CSIS=m -CONFIG_VIDEO_IMX8_ISI=m -CONFIG_VIDEO_IMX8_ISI_M2M=y -CONFIG_VIDEO_QCOM_CAMSS=m -CONFIG_VIDEO_QCOM_VENUS=m -CONFIG_VIDEO_RCAR_ISP=m -CONFIG_VIDEO_RCAR_CSI2=m -CONFIG_VIDEO_RCAR_VIN=m -CONFIG_VIDEO_RZG2L_CSI2=m -CONFIG_VIDEO_RZG2L_CRU=m -CONFIG_VIDEO_RENESAS_FCP=m -CONFIG_VIDEO_RENESAS_FDP1=m -CONFIG_VIDEO_RENESAS_VSP1=m -CONFIG_VIDEO_RCAR_DRIF=m -CONFIG_VIDEO_SAMSUNG_EXYNOS_GSC=m -CONFIG_VIDEO_SAMSUNG_S5P_JPEG=m -CONFIG_VIDEO_SAMSUNG_S5P_MFC=m -CONFIG_VIDEO_SUN6I_CSI=m -CONFIG_VIDEO_HANTRO=m +CONFIG_VIDEO_MUX=m +CONFIG_VIDEO_BCM2835_UNICAM=m +CONFIG_VIDEO_RASPBERRYPI_PISP_BE=m +CONFIG_VIDEO_RP1_CFE=m +CONFIG_V4L_TEST_DRIVERS=y +CONFIG_VIDEO_VIM2M=m +CONFIG_VIDEO_VICODEC=m +CONFIG_VIDEO_VIMC=m +CONFIG_VIDEO_VIVID=m +CONFIG_VIDEO_ARDUCAM_64MP=m +CONFIG_VIDEO_ARDUCAM_PIVARIETY=m CONFIG_VIDEO_IMX219=m -CONFIG_VIDEO_IMX412=m -CONFIG_VIDEO_OV5640=m -CONFIG_VIDEO_OV5645=m +CONFIG_VIDEO_IMX258=m +CONFIG_VIDEO_IMX290=m +CONFIG_VIDEO_IMX296=m +CONFIG_VIDEO_IMX477=m +CONFIG_VIDEO_IMX519=m +CONFIG_VIDEO_IMX708=m +CONFIG_VIDEO_MT9V011=m +CONFIG_VIDEO_OV2311=m +CONFIG_VIDEO_OV5647=m +CONFIG_VIDEO_OV64A40=m +CONFIG_VIDEO_OV7251=m +CONFIG_VIDEO_OV7640=m +CONFIG_VIDEO_OV9282=m +CONFIG_VIDEO_AD5398=m +CONFIG_VIDEO_AK7375=m +CONFIG_VIDEO_BU64754=m +CONFIG_VIDEO_DW9807_VCM=m +CONFIG_VIDEO_SONY_BTF_MPX=m +CONFIG_VIDEO_UDA1342=m +CONFIG_VIDEO_ADV7180=m +CONFIG_VIDEO_TC358743=m +CONFIG_VIDEO_TVP5150=m +CONFIG_VIDEO_TW2804=m +CONFIG_VIDEO_TW9903=m +CONFIG_VIDEO_TW9906=m +CONFIG_VIDEO_IRS1125=m +CONFIG_VIDEO_I2C=m +CONFIG_AUXDISPLAY=y +CONFIG_HD44780=m CONFIG_DRM=m -CONFIG_DRM_I2C_NXP_TDA998X=m -CONFIG_DRM_HDLCD=m -CONFIG_DRM_MALI_DISPLAY=m -CONFIG_DRM_KOMEDA=m -CONFIG_DRM_NOUVEAU=m -CONFIG_DRM_EXYNOS=m -CONFIG_DRM_EXYNOS5433_DECON=y -CONFIG_DRM_EXYNOS7_DECON=y -CONFIG_DRM_EXYNOS_DSI=y -# CONFIG_DRM_EXYNOS_DP is not set -CONFIG_DRM_EXYNOS_HDMI=y -CONFIG_DRM_EXYNOS_MIC=y -CONFIG_DRM_ROCKCHIP=m -CONFIG_ROCKCHIP_VOP2=y -CONFIG_ROCKCHIP_ANALOGIX_DP=y -CONFIG_ROCKCHIP_CDN_DP=y -CONFIG_ROCKCHIP_DW_HDMI=y -CONFIG_ROCKCHIP_DW_MIPI_DSI=y -CONFIG_ROCKCHIP_INNO_HDMI=y -CONFIG_ROCKCHIP_LVDS=y -CONFIG_DRM_RCAR_DU=m -CONFIG_DRM_RCAR_DW_HDMI=m -CONFIG_DRM_RZG2L_MIPI_DSI=m -CONFIG_DRM_SUN4I=m -CONFIG_DRM_MSM=m -CONFIG_DRM_TEGRA=m -CONFIG_DRM_PANEL_BOE_TV101WUM_NL6=m -CONFIG_DRM_PANEL_LVDS=m +CONFIG_DRM_LOAD_EDID_FIRMWARE=y +CONFIG_DRM_UDL=m CONFIG_DRM_PANEL_SIMPLE=m -CONFIG_DRM_PANEL_EDP=m -CONFIG_DRM_PANEL_MANTIX_MLAF057WE51=m -CONFIG_DRM_PANEL_RAYDIUM_RM67191=m -CONFIG_DRM_PANEL_SITRONIX_ST7703=m -CONFIG_DRM_PANEL_TRULY_NT35597_WQXGA=m -CONFIG_DRM_PANEL_VISIONOX_VTDR6130=m -CONFIG_DRM_LONTIUM_LT8912B=m -CONFIG_DRM_LONTIUM_LT9611=m -CONFIG_DRM_LONTIUM_LT9611UXC=m -CONFIG_DRM_ITE_IT66121=m -CONFIG_DRM_NWL_MIPI_DSI=m -CONFIG_DRM_PARADE_PS8640=m -CONFIG_DRM_SII902X=m +CONFIG_DRM_PANEL_ILITEK_ILI9806E=m +CONFIG_DRM_PANEL_ILITEK_ILI9881C=m +CONFIG_DRM_PANEL_JDI_LT070ME05000=m +CONFIG_DRM_PANEL_RASPBERRYPI_TOUCHSCREEN=m +CONFIG_DRM_PANEL_SITRONIX_ST7701=m +CONFIG_DRM_PANEL_TPO_Y17P=m +CONFIG_DRM_PANEL_WAVESHARE_TOUCHSCREEN=m +CONFIG_DRM_DISPLAY_CONNECTOR=m CONFIG_DRM_SIMPLE_BRIDGE=m -CONFIG_DRM_THINE_THC63LVD1024=m -CONFIG_DRM_TOSHIBA_TC358768=m -CONFIG_DRM_TI_TFP410=m -CONFIG_DRM_TI_SN65DSI83=m -CONFIG_DRM_TI_SN65DSI86=m -CONFIG_DRM_ANALOGIX_ANX7625=m -CONFIG_DRM_I2C_ADV7511=m -CONFIG_DRM_I2C_ADV7511_AUDIO=y -CONFIG_DRM_CDNS_MHDP8546=m -CONFIG_DRM_DW_HDMI_AHB_AUDIO=m -CONFIG_DRM_DW_HDMI_CEC=m -CONFIG_DRM_IMX_DCSS=m +CONFIG_DRM_TOSHIBA_TC358762=m CONFIG_DRM_V3D=m CONFIG_DRM_VC4=m -CONFIG_DRM_ETNAVIV=m -CONFIG_DRM_HISI_HIBMC=m -CONFIG_DRM_HISI_KIRIN=m -CONFIG_DRM_MEDIATEK=m -CONFIG_DRM_MEDIATEK_HDMI=m -CONFIG_DRM_MXSFB=m -CONFIG_DRM_IMX_LCDIF=m -CONFIG_DRM_MESON=m -CONFIG_DRM_PL111=m -CONFIG_DRM_LIMA=m -CONFIG_DRM_PANFROST=m -CONFIG_DRM_TIDSS=m +CONFIG_DRM_VC4_HDMI_CEC=y +CONFIG_DRM_RP1_DSI=m +CONFIG_DRM_RP1_DPI=m +CONFIG_DRM_RP1_VEC=m +CONFIG_DRM_PANEL_MIPI_DBI=m +CONFIG_TINYDRM_HX8357D=m +CONFIG_TINYDRM_ILI9225=m +CONFIG_TINYDRM_ILI9341=m +CONFIG_TINYDRM_ILI9486=m +CONFIG_TINYDRM_MI0283QT=m +CONFIG_TINYDRM_REPAPER=m +CONFIG_TINYDRM_ST7586=m +CONFIG_TINYDRM_ST7735R=m +CONFIG_DRM_GUD=m CONFIG_FB=y -CONFIG_FB_EFI=y -CONFIG_FB_MODE_HELPERS=y +CONFIG_FB_BCM2708=y +CONFIG_FB_SIMPLE=y +CONFIG_FB_SSD1307=m +CONFIG_FB_RPISENSE=m CONFIG_BACKLIGHT_PWM=m -CONFIG_BACKLIGHT_LP855X=m +CONFIG_BACKLIGHT_RPI=m +CONFIG_BACKLIGHT_LM3630A=m +CONFIG_BACKLIGHT_GPIO=m +CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y CONFIG_LOGO=y # CONFIG_LOGO_LINUX_MONO is not set # CONFIG_LOGO_LINUX_VGA16 is not set CONFIG_SOUND=y -CONFIG_SND=y +CONFIG_SND=m +CONFIG_SND_OSSEMUL=y +CONFIG_SND_PCM_OSS=m +CONFIG_SND_HRTIMER=m +CONFIG_SND_DYNAMIC_MINORS=y +CONFIG_SND_SEQUENCER=m +CONFIG_SND_SEQ_DUMMY=m +CONFIG_SND_DUMMY=m CONFIG_SND_ALOOP=m -CONFIG_SND_HDA_TEGRA=m -CONFIG_SND_HDA_CODEC_HDMI=m -CONFIG_SND_SOC=y +CONFIG_SND_VIRMIDI=m +CONFIG_SND_MTPAV=m +CONFIG_SND_SERIAL_U16550=m +CONFIG_SND_MPU401=m +CONFIG_SND_USB_AUDIO=m +CONFIG_SND_USB_UA101=m +CONFIG_SND_USB_CAIAQ=m +CONFIG_SND_USB_CAIAQ_INPUT=y +CONFIG_SND_USB_6FIRE=m +CONFIG_SND_USB_HIFACE=m +CONFIG_SND_USB_TONEPORT=m +CONFIG_SND_SOC=m CONFIG_SND_BCM2835_SOC_I2S=m -CONFIG_SND_SOC_FSL_ASRC=m -CONFIG_SND_SOC_FSL_MICFIL=m -CONFIG_SND_SOC_FSL_EASRC=m -CONFIG_SND_IMX_SOC=m -CONFIG_SND_SOC_IMX_SGTL5000=m -CONFIG_SND_SOC_IMX_SPDIF=m -CONFIG_SND_SOC_FSL_ASOC_CARD=m -CONFIG_SND_SOC_IMX_AUDMIX=m -CONFIG_SND_SOC_MT8183=m -CONFIG_SND_SOC_MT8183_MT6358_TS3A227E_MAX98357A=m -CONFIG_SND_SOC_MT8183_DA7219_MAX98357A=m -CONFIG_SND_SOC_MT8192=m -CONFIG_SND_SOC_MT8192_MT6359_RT1015_RT5682=m -CONFIG_SND_MESON_AXG_SOUND_CARD=m -CONFIG_SND_MESON_GX_SOUND_CARD=m -CONFIG_SND_SOC_QCOM=m -CONFIG_SND_SOC_APQ8016_SBC=m -CONFIG_SND_SOC_MSM8996=m -CONFIG_SND_SOC_SDM845=m -CONFIG_SND_SOC_SM8250=m -CONFIG_SND_SOC_SC7180=m -CONFIG_SND_SOC_SC7280=m -CONFIG_SND_SOC_ROCKCHIP=m -CONFIG_SND_SOC_ROCKCHIP_I2S_TDM=m -CONFIG_SND_SOC_ROCKCHIP_SPDIF=m -CONFIG_SND_SOC_ROCKCHIP_RT5645=m -CONFIG_SND_SOC_RK3399_GRU_SOUND=m -CONFIG_SND_SOC_SAMSUNG=y -CONFIG_SND_SOC_RCAR=m -CONFIG_SND_SOC_RZ=m -CONFIG_SND_SUN8I_CODEC=m -CONFIG_SND_SUN8I_CODEC_ANALOG=m -CONFIG_SND_SUN50I_CODEC_ANALOG=m -CONFIG_SND_SUN4I_I2S=m -CONFIG_SND_SUN4I_SPDIF=m -CONFIG_SND_SOC_TEGRA=m -CONFIG_SND_SOC_TEGRA210_AHUB=m -CONFIG_SND_SOC_TEGRA210_DMIC=m -CONFIG_SND_SOC_TEGRA210_I2S=m -CONFIG_SND_SOC_TEGRA210_OPE=m -CONFIG_SND_SOC_TEGRA186_ASRC=m -CONFIG_SND_SOC_TEGRA186_DSPK=m -CONFIG_SND_SOC_TEGRA210_ADMAIF=m -CONFIG_SND_SOC_TEGRA210_MVC=m -CONFIG_SND_SOC_TEGRA210_SFC=m -CONFIG_SND_SOC_TEGRA210_AMX=m -CONFIG_SND_SOC_TEGRA210_ADX=m -CONFIG_SND_SOC_TEGRA210_MIXER=m -CONFIG_SND_SOC_TEGRA_AUDIO_GRAPH_CARD=m -CONFIG_SND_SOC_J721E_EVM=m -CONFIG_SND_SOC_AK4613=m -CONFIG_SND_SOC_DA7213=m -CONFIG_SND_SOC_ES7134=m -CONFIG_SND_SOC_ES7241=m -CONFIG_SND_SOC_ES8316=m -CONFIG_SND_SOC_GTM601=m -CONFIG_SND_SOC_MSM8916_WCD_ANALOG=m -CONFIG_SND_SOC_MSM8916_WCD_DIGITAL=m -CONFIG_SND_SOC_RK817=m -CONFIG_SND_SOC_RT5640=m -CONFIG_SND_SOC_RT5659=m -CONFIG_SND_SOC_SIMPLE_AMPLIFIER=m -CONFIG_SND_SOC_SIMPLE_MUX=m -CONFIG_SND_SOC_TAS2552=m -CONFIG_SND_SOC_TAS571X=m -CONFIG_SND_SOC_TLV320AIC32X4_I2C=m -CONFIG_SND_SOC_TLV320AIC3X_I2C=m -CONFIG_SND_SOC_WCD9335=m -CONFIG_SND_SOC_WCD934X=m -CONFIG_SND_SOC_WM8524=m -CONFIG_SND_SOC_WM8904=m +CONFIG_SND_BCM2708_SOC_CHIPDIP_DAC=m +CONFIG_SND_BCM2708_SOC_GOOGLEVOICEHAT_SOUNDCARD=m +CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC=m +CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUS=m +CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUSHD=m +CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUSADC=m +CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUSADCPRO=m +CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUSDSP=m +CONFIG_SND_BCM2708_SOC_HIFIBERRY_DIGI=m +CONFIG_SND_BCM2708_SOC_HIFIBERRY_AMP=m +CONFIG_SND_BCM2708_SOC_PIFI_40=m +CONFIG_SND_BCM2708_SOC_RPI_CIRRUS=m +CONFIG_SND_BCM2708_SOC_RPI_DAC=m +CONFIG_SND_BCM2708_SOC_RPI_PROTO=m +CONFIG_SND_BCM2708_SOC_JUSTBOOM_BOTH=m +CONFIG_SND_BCM2708_SOC_JUSTBOOM_DAC=m +CONFIG_SND_BCM2708_SOC_JUSTBOOM_DIGI=m +CONFIG_SND_BCM2708_SOC_IQAUDIO_CODEC=m +CONFIG_SND_BCM2708_SOC_IQAUDIO_DAC=m +CONFIG_SND_BCM2708_SOC_IQAUDIO_DIGI=m +CONFIG_SND_BCM2708_SOC_I_SABRE_Q2M=m +CONFIG_SND_BCM2708_SOC_ADAU1977_ADC=m +CONFIG_SND_AUDIOINJECTOR_PI_SOUNDCARD=m +CONFIG_SND_AUDIOINJECTOR_OCTO_SOUNDCARD=m +CONFIG_SND_AUDIOINJECTOR_ISOLATED_SOUNDCARD=m +CONFIG_SND_AUDIOSENSE_PI=m +CONFIG_SND_DIGIDAC1_SOUNDCARD=m +CONFIG_SND_BCM2708_SOC_DIONAUDIO_LOCO=m +CONFIG_SND_BCM2708_SOC_DIONAUDIO_LOCO_V2=m +CONFIG_SND_BCM2708_SOC_ALLO_PIANO_DAC=m +CONFIG_SND_BCM2708_SOC_ALLO_PIANO_DAC_PLUS=m +CONFIG_SND_BCM2708_SOC_ALLO_BOSS_DAC=m +CONFIG_SND_BCM2708_SOC_ALLO_BOSS2_DAC=m +CONFIG_SND_BCM2708_SOC_ALLO_DIGIONE=m +CONFIG_SND_BCM2708_SOC_ALLO_KATANA_DAC=m +CONFIG_SND_BCM2708_SOC_FE_PI_AUDIO=m +CONFIG_SND_PISOUND=m +CONFIG_SND_DACBERRY400=m +CONFIG_SND_DESIGNWARE_I2S=m +CONFIG_SND_DESIGNWARE_PCM=y +CONFIG_SND_SOC_AD193X_SPI=m +CONFIG_SND_SOC_AD193X_I2C=m +CONFIG_SND_SOC_ADAU1701=m +CONFIG_SND_SOC_ADAU7002=m +CONFIG_SND_SOC_AK4554=m +CONFIG_SND_SOC_CS4265=m +CONFIG_SND_SOC_ICS43432=m +CONFIG_SND_SOC_MA120X0P=m +CONFIG_SND_SOC_MAX98357A=m +CONFIG_SND_SOC_SPDIF=m +CONFIG_SND_SOC_TLV320AIC23_I2C=m +CONFIG_SND_SOC_WM8804_I2C=m CONFIG_SND_SOC_WM8960=m -CONFIG_SND_SOC_WM8962=m -CONFIG_SND_SOC_WM8978=m -CONFIG_SND_SOC_WSA881X=m -CONFIG_SND_SOC_NAU8822=m -CONFIG_SND_SOC_LPASS_WSA_MACRO=m -CONFIG_SND_SOC_LPASS_VA_MACRO=m CONFIG_SND_SIMPLE_CARD=m -CONFIG_SND_AUDIO_GRAPH_CARD=m -CONFIG_SND_AUDIO_GRAPH_CARD2=m +CONFIG_HID_BATTERY_STRENGTH=y +CONFIG_HIDRAW=y +CONFIG_UHID=m +CONFIG_HID_A4TECH=m +CONFIG_HID_ACRUX=m +CONFIG_HID_APPLE=m +CONFIG_HID_ASUS=m +CONFIG_HID_BELKIN=m +CONFIG_HID_BETOP_FF=m +CONFIG_HID_BIGBEN_FF=m +CONFIG_HID_CHERRY=m +CONFIG_HID_CHICONY=m +CONFIG_HID_CYPRESS=m +CONFIG_HID_DRAGONRISE=m +CONFIG_HID_EMS_FF=m +CONFIG_HID_ELECOM=m +CONFIG_HID_ELO=m +CONFIG_HID_EZKEY=m +CONFIG_HID_GEMBIRD=m +CONFIG_HID_HOLTEK=m +CONFIG_HID_KEYTOUCH=m +CONFIG_HID_KYE=m +CONFIG_HID_UCLOGIC=m +CONFIG_HID_WALTOP=m +CONFIG_HID_GYRATION=m +CONFIG_HID_TWINHAN=m +CONFIG_HID_KENSINGTON=m +CONFIG_HID_LCPOWER=m +CONFIG_HID_LOGITECH=m +CONFIG_HID_LOGITECH_DJ=m +CONFIG_LOGITECH_FF=y +CONFIG_LOGIRUMBLEPAD2_FF=y +CONFIG_LOGIG940_FF=y +CONFIG_HID_MAGICMOUSE=m +CONFIG_HID_MICROSOFT=m +CONFIG_HID_MONTEREY=m CONFIG_HID_MULTITOUCH=m -CONFIG_I2C_HID_ACPI=m -CONFIG_I2C_HID_OF=m +CONFIG_HID_NINTENDO=m +CONFIG_NINTENDO_FF=y +CONFIG_HID_NTRIG=m +CONFIG_HID_ORTEK=m +CONFIG_HID_PANTHERLORD=m +CONFIG_HID_PETALYNX=m +CONFIG_HID_PICOLCD=m +CONFIG_HID_PLAYSTATION=m +CONFIG_PLAYSTATION_FF=y +CONFIG_HID_ROCCAT=m +CONFIG_HID_SAMSUNG=m +CONFIG_HID_SONY=m +CONFIG_SONY_FF=y +CONFIG_HID_SPEEDLINK=m +CONFIG_HID_STEAM=m +CONFIG_HID_SUNPLUS=m +CONFIG_HID_GREENASIA=m +CONFIG_HID_SMARTJOYPLUS=m +CONFIG_HID_TOPSEED=m +CONFIG_HID_THINGM=m +CONFIG_HID_THRUSTMASTER=m +CONFIG_HID_WACOM=m +CONFIG_HID_WIIMOTE=m +CONFIG_HID_XINMO=m +CONFIG_HID_ZEROPLUS=m +CONFIG_HID_ZYDACRON=m +CONFIG_HID_PID=y +CONFIG_USB_HIDDEV=y CONFIG_USB=y -CONFIG_USB_OTG=y +CONFIG_USB_ANNOUNCE_NEW_DEVICES=y +CONFIG_USB_MON=m CONFIG_USB_XHCI_HCD=y -CONFIG_USB_XHCI_PCI_RENESAS=m -CONFIG_USB_XHCI_RZV2M=y -CONFIG_USB_XHCI_TEGRA=y -CONFIG_USB_BRCMSTB=m -CONFIG_USB_EHCI_HCD=y -CONFIG_USB_EHCI_EXYNOS=y -CONFIG_USB_EHCI_HCD_PLATFORM=y -CONFIG_USB_OHCI_HCD=y -CONFIG_USB_OHCI_EXYNOS=y -CONFIG_USB_OHCI_HCD_PLATFORM=y -CONFIG_USB_RENESAS_USBHS_HCD=m -CONFIG_USB_RENESAS_USBHS=m -CONFIG_USB_ACM=m +CONFIG_USB_DWCOTG=y +CONFIG_USB_PRINTER=m +CONFIG_USB_TMC=m CONFIG_USB_STORAGE=y -CONFIG_USB_CDNS_SUPPORT=m -CONFIG_USB_CDNS3=m -CONFIG_USB_CDNS3_GADGET=y -CONFIG_USB_CDNS3_HOST=y -CONFIG_USB_MTU3=y -CONFIG_USB_MUSB_HDRC=y -CONFIG_USB_MUSB_SUNXI=y +CONFIG_USB_STORAGE_REALTEK=m +CONFIG_USB_STORAGE_DATAFAB=m +CONFIG_USB_STORAGE_FREECOM=m +CONFIG_USB_STORAGE_ISD200=m +CONFIG_USB_STORAGE_USBAT=m +CONFIG_USB_STORAGE_SDDR09=m +CONFIG_USB_STORAGE_SDDR55=m +CONFIG_USB_STORAGE_JUMPSHOT=m +CONFIG_USB_STORAGE_ALAUDA=m +CONFIG_USB_STORAGE_ONETOUCH=m +CONFIG_USB_STORAGE_KARMA=m +CONFIG_USB_STORAGE_CYPRESS_ATACB=m +CONFIG_USB_STORAGE_ENE_UB6250=m +CONFIG_USB_UAS=y +CONFIG_USB_MDC800=m +CONFIG_USB_MICROTEK=m +CONFIG_USBIP_CORE=m +CONFIG_USBIP_VHCI_HCD=m +CONFIG_USBIP_HOST=m +CONFIG_USBIP_VUDC=m CONFIG_USB_DWC3=y -CONFIG_USB_DWC2=y -CONFIG_USB_CHIPIDEA=y -CONFIG_USB_CHIPIDEA_UDC=y -CONFIG_USB_CHIPIDEA_HOST=y -CONFIG_USB_ISP1760=y +CONFIG_USB_DWC2=m CONFIG_USB_SERIAL=m +CONFIG_USB_SERIAL_GENERIC=y +CONFIG_USB_SERIAL_AIRCABLE=m +CONFIG_USB_SERIAL_ARK3116=m +CONFIG_USB_SERIAL_BELKIN=m +CONFIG_USB_SERIAL_CH341=m +CONFIG_USB_SERIAL_WHITEHEAT=m +CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m CONFIG_USB_SERIAL_CP210X=m +CONFIG_USB_SERIAL_CYPRESS_M8=m +CONFIG_USB_SERIAL_EMPEG=m CONFIG_USB_SERIAL_FTDI_SIO=m +CONFIG_USB_SERIAL_VISOR=m +CONFIG_USB_SERIAL_IPAQ=m +CONFIG_USB_SERIAL_IR=m +CONFIG_USB_SERIAL_EDGEPORT=m +CONFIG_USB_SERIAL_EDGEPORT_TI=m +CONFIG_USB_SERIAL_F81232=m +CONFIG_USB_SERIAL_GARMIN=m +CONFIG_USB_SERIAL_IPW=m +CONFIG_USB_SERIAL_IUU=m +CONFIG_USB_SERIAL_KEYSPAN_PDA=m +CONFIG_USB_SERIAL_KEYSPAN=m +CONFIG_USB_SERIAL_KLSI=m +CONFIG_USB_SERIAL_KOBIL_SCT=m +CONFIG_USB_SERIAL_MCT_U232=m +CONFIG_USB_SERIAL_METRO=m +CONFIG_USB_SERIAL_MOS7720=m +CONFIG_USB_SERIAL_MOS7840=m +CONFIG_USB_SERIAL_NAVMAN=m +CONFIG_USB_SERIAL_PL2303=m +CONFIG_USB_SERIAL_OTI6858=m +CONFIG_USB_SERIAL_QCAUX=m +CONFIG_USB_SERIAL_QUALCOMM=m +CONFIG_USB_SERIAL_SPCP8X5=m +CONFIG_USB_SERIAL_SAFE=m +CONFIG_USB_SERIAL_SIERRAWIRELESS=m +CONFIG_USB_SERIAL_SYMBOL=m +CONFIG_USB_SERIAL_TI=m +CONFIG_USB_SERIAL_CYBERJACK=m CONFIG_USB_SERIAL_OPTION=m -CONFIG_USB_QCOM_EUD=m -CONFIG_USB_HSIC_USB3503=y -CONFIG_USB_ONBOARD_HUB=m +CONFIG_USB_SERIAL_OMNINET=m +CONFIG_USB_SERIAL_OPTICON=m +CONFIG_USB_SERIAL_XSENS_MT=m +CONFIG_USB_SERIAL_WISHBONE=m +CONFIG_USB_SERIAL_SSU100=m +CONFIG_USB_SERIAL_QT2=m +CONFIG_USB_SERIAL_DEBUG=m +CONFIG_USB_EMI62=m +CONFIG_USB_EMI26=m +CONFIG_USB_ADUTUX=m +CONFIG_USB_SEVSEG=m +CONFIG_USB_LEGOTOWER=m +CONFIG_USB_LCD=m +CONFIG_USB_CYPRESS_CY7C63=m +CONFIG_USB_CYTHERM=m +CONFIG_USB_IDMOUSE=m +CONFIG_USB_APPLEDISPLAY=m +CONFIG_USB_LD=m +CONFIG_USB_TRANCEVIBRATOR=m +CONFIG_USB_IOWARRIOR=m +CONFIG_USB_TEST=m +CONFIG_USB_ISIGHTFW=m +CONFIG_USB_YUREX=m +CONFIG_USB_ATM=m +CONFIG_USB_SPEEDTOUCH=m +CONFIG_USB_CXACRU=m +CONFIG_USB_UEAGLEATM=m +CONFIG_USB_XUSBATM=m CONFIG_NOP_USB_XCEIV=y CONFIG_USB_GADGET=y -CONFIG_USB_RENESAS_USBHS_UDC=m -CONFIG_USB_RZV2M_USB3DRD=y -CONFIG_USB_RENESAS_USB3=m -CONFIG_USB_TEGRA_XUDC=m CONFIG_USB_CONFIGFS=m CONFIG_USB_CONFIGFS_SERIAL=y CONFIG_USB_CONFIGFS_ACM=y @@ -1016,540 +1303,378 @@ CONFIG_USB_CONFIGFS_ECM_SUBSET=y CONFIG_USB_CONFIGFS_RNDIS=y CONFIG_USB_CONFIGFS_EEM=y CONFIG_USB_CONFIGFS_MASS_STORAGE=y +CONFIG_USB_CONFIGFS_F_LB_SS=y CONFIG_USB_CONFIGFS_F_FS=y -CONFIG_TYPEC=m -CONFIG_TYPEC_TCPM=m -CONFIG_TYPEC_TCPCI=m -CONFIG_TYPEC_FUSB302=m -CONFIG_TYPEC_UCSI=m -CONFIG_UCSI_CCG=m -CONFIG_UCSI_PMIC_GLINK=m -CONFIG_TYPEC_TPS6598X=m -CONFIG_TYPEC_HD3SS3220=m -CONFIG_TYPEC_MUX_FSA4480=m -CONFIG_TYPEC_MUX_GPIO_SBU=m +CONFIG_USB_CONFIGFS_F_UAC1=y +CONFIG_USB_CONFIGFS_F_UAC2=y +CONFIG_USB_CONFIGFS_F_MIDI=y +CONFIG_USB_CONFIGFS_F_HID=y +CONFIG_USB_CONFIGFS_F_UVC=y +CONFIG_USB_CONFIGFS_F_PRINTER=y +CONFIG_USB_ZERO=m +CONFIG_USB_AUDIO=m +CONFIG_USB_ETH=m +CONFIG_USB_GADGETFS=m +CONFIG_USB_MASS_STORAGE=m +CONFIG_USB_G_SERIAL=m +CONFIG_USB_MIDI_GADGET=m +CONFIG_USB_G_PRINTER=m +CONFIG_USB_CDC_COMPOSITE=m +CONFIG_USB_G_ACM_MS=m +CONFIG_USB_G_MULTI=m +CONFIG_USB_G_HID=m +CONFIG_USB_G_WEBCAM=m CONFIG_MMC=y CONFIG_MMC_BLOCK_MINORS=32 -CONFIG_MMC_ARMMMCI=y +CONFIG_MMC_BCM2835_MMC=y +CONFIG_MMC_BCM2835_DMA=y +CONFIG_MMC_BCM2835_SDHOST=y CONFIG_MMC_SDHCI=y -CONFIG_MMC_SDHCI_ACPI=y CONFIG_MMC_SDHCI_PLTFM=y -CONFIG_MMC_SDHCI_OF_ARASAN=y -CONFIG_MMC_SDHCI_OF_ESDHC=y -CONFIG_MMC_SDHCI_OF_DWCMSHC=y -CONFIG_MMC_SDHCI_OF_SPARX5=y -CONFIG_MMC_SDHCI_CADENCE=y -CONFIG_MMC_SDHCI_ESDHC_IMX=y -CONFIG_MMC_SDHCI_TEGRA=y -CONFIG_MMC_SDHCI_F_SDH30=y -CONFIG_MMC_MESON_GX=y -CONFIG_MMC_SDHCI_MSM=y -CONFIG_MMC_SPI=y -CONFIG_MMC_SDHI=y -CONFIG_MMC_UNIPHIER=y -CONFIG_MMC_DW=y -CONFIG_MMC_DW_EXYNOS=y -CONFIG_MMC_DW_HI3798CV200=y -CONFIG_MMC_DW_K3=y -CONFIG_MMC_DW_ROCKCHIP=y -CONFIG_MMC_SUNXI=y -CONFIG_MMC_BCM2835=y -CONFIG_MMC_MTK=y -CONFIG_MMC_SDHCI_XENON=y -CONFIG_MMC_SDHCI_AM654=y -CONFIG_MMC_OWL=y -CONFIG_SCSI_UFSHCD=y -CONFIG_SCSI_UFS_BSG=y -CONFIG_SCSI_UFSHCD_PLATFORM=y -CONFIG_SCSI_UFS_CDNS_PLATFORM=m -CONFIG_SCSI_UFS_QCOM=m -CONFIG_SCSI_UFS_HISI=y -CONFIG_SCSI_UFS_RENESAS=m -CONFIG_SCSI_UFS_TI_J721E=m -CONFIG_SCSI_UFS_EXYNOS=y -CONFIG_NEW_LEDS=y +CONFIG_MMC_SDHCI_OF_DWCMSHC=m +CONFIG_MMC_SDHCI_IPROC=y +CONFIG_MMC_SPI=m CONFIG_LEDS_CLASS=y CONFIG_LEDS_CLASS_MULTICOLOR=m -CONFIG_LEDS_LM3692X=m CONFIG_LEDS_PCA9532=m CONFIG_LEDS_GPIO=y +CONFIG_LEDS_PCA955X=m +CONFIG_LEDS_PCA963X=m CONFIG_LEDS_PWM=y -CONFIG_LEDS_SYSCON=y -CONFIG_LEDS_QCOM_LPG=m +CONFIG_LEDS_IS31FL32XX=m CONFIG_LEDS_TRIGGER_TIMER=y -CONFIG_LEDS_TRIGGER_DISK=y +CONFIG_LEDS_TRIGGER_ONESHOT=y CONFIG_LEDS_TRIGGER_HEARTBEAT=y +CONFIG_LEDS_TRIGGER_BACKLIGHT=y CONFIG_LEDS_TRIGGER_CPU=y CONFIG_LEDS_TRIGGER_DEFAULT_ON=y +CONFIG_LEDS_TRIGGER_TRANSIENT=m +CONFIG_LEDS_TRIGGER_CAMERA=m +CONFIG_LEDS_TRIGGER_INPUT=y CONFIG_LEDS_TRIGGER_PANIC=y -CONFIG_EDAC=y -CONFIG_EDAC_GHES=y -CONFIG_EDAC_LAYERSCAPE=m +CONFIG_LEDS_TRIGGER_NETDEV=m +CONFIG_LEDS_TRIGGER_PATTERN=m +CONFIG_LEDS_TRIGGER_ACTPWR=y +CONFIG_ACCESSIBILITY=y +CONFIG_SPEAKUP=m +CONFIG_SPEAKUP_SYNTH_SOFT=m CONFIG_RTC_CLASS=y +CONFIG_RTC_DRV_ABX80X=m CONFIG_RTC_DRV_DS1307=m -CONFIG_RTC_DRV_HYM8563=m -CONFIG_RTC_DRV_MAX77686=y -CONFIG_RTC_DRV_RK808=m +CONFIG_RTC_DRV_DS1374=m +CONFIG_RTC_DRV_DS1672=m +CONFIG_RTC_DRV_MAX6900=m +CONFIG_RTC_DRV_RS5C372=m CONFIG_RTC_DRV_ISL1208=m +CONFIG_RTC_DRV_ISL12022=m +CONFIG_RTC_DRV_X1205=m +CONFIG_RTC_DRV_PCF8523=m CONFIG_RTC_DRV_PCF85063=m CONFIG_RTC_DRV_PCF85363=m +CONFIG_RTC_DRV_PCF8563=m +CONFIG_RTC_DRV_PCF8583=m CONFIG_RTC_DRV_M41T80=m CONFIG_RTC_DRV_BQ32K=m +CONFIG_RTC_DRV_S35390A=m +CONFIG_RTC_DRV_FM3130=m CONFIG_RTC_DRV_RX8581=m +CONFIG_RTC_DRV_RX8025=m +CONFIG_RTC_DRV_EM3027=m CONFIG_RTC_DRV_RV3028=m +CONFIG_RTC_DRV_RV3032=m CONFIG_RTC_DRV_RV8803=m -CONFIG_RTC_DRV_S5M=y -CONFIG_RTC_DRV_DS3232=y +CONFIG_RTC_DRV_SD3078=m +CONFIG_RTC_DRV_M41T93=m +CONFIG_RTC_DRV_M41T94=m +CONFIG_RTC_DRV_DS1302=m +CONFIG_RTC_DRV_DS1305=m +CONFIG_RTC_DRV_DS1390=m +CONFIG_RTC_DRV_R9701=m +CONFIG_RTC_DRV_RX4581=m +CONFIG_RTC_DRV_RS5C348=m +CONFIG_RTC_DRV_MAX6902=m +CONFIG_RTC_DRV_PCF2123=m +CONFIG_RTC_DRV_DS3232=m CONFIG_RTC_DRV_PCF2127=m -CONFIG_RTC_DRV_EFI=y -CONFIG_RTC_DRV_CROS_EC=y -CONFIG_RTC_DRV_FSL_FTM_ALARM=m -CONFIG_RTC_DRV_S3C=y -CONFIG_RTC_DRV_PL031=y -CONFIG_RTC_DRV_SUN6I=y -CONFIG_RTC_DRV_ARMADA38X=y -CONFIG_RTC_DRV_PM8XXX=m -CONFIG_RTC_DRV_TEGRA=y -CONFIG_RTC_DRV_SNVS=m -CONFIG_RTC_DRV_BBNSM=m -CONFIG_RTC_DRV_IMX_SC=m -CONFIG_RTC_DRV_MT6397=m -CONFIG_RTC_DRV_XGENE=y -CONFIG_RTC_DRV_TI_K3=m +CONFIG_RTC_DRV_RV3029C2=m CONFIG_DMADEVICES=y CONFIG_DMA_BCM2835=y -CONFIG_DMA_SUN6I=m -CONFIG_FSL_EDMA=y -CONFIG_IMX_SDMA=m -CONFIG_K3_DMA=y -CONFIG_MV_XOR=y -CONFIG_MV_XOR_V2=y -CONFIG_OWL_DMA=y -CONFIG_PL330_DMA=y -CONFIG_TEGRA186_GPC_DMA=y -CONFIG_TEGRA20_APB_DMA=y -CONFIG_TEGRA210_ADMA=m -CONFIG_QCOM_BAM_DMA=y -CONFIG_QCOM_GPI_DMA=m -CONFIG_QCOM_HIDMA_MGMT=y -CONFIG_QCOM_HIDMA=y -CONFIG_RCAR_DMAC=y -CONFIG_RENESAS_USB_DMAC=m -CONFIG_RZ_DMAC=y -CONFIG_TI_K3_UDMA=y -CONFIG_TI_K3_UDMA_GLUE_LAYER=y -CONFIG_VFIO=y -CONFIG_VFIO_PCI=y -CONFIG_VIRTIO_PCI=y -CONFIG_VIRTIO_BALLOON=y -CONFIG_VIRTIO_MMIO=y -CONFIG_XEN_GNTDEV=y -CONFIG_XEN_GRANT_DEV_ALLOC=y +CONFIG_DW_AXI_DMAC=y +CONFIG_DMA_BCM2708=y +CONFIG_DMABUF_HEAPS=y +CONFIG_DMABUF_HEAPS_SYSTEM=y +CONFIG_DMABUF_HEAPS_CMA=y +CONFIG_UIO=m +CONFIG_UIO_PDRV_GENIRQ=m +CONFIG_VHOST_NET=m +CONFIG_VHOST_VSOCK=m +CONFIG_VHOST_CROSS_ENDIAN_LEGACY=y CONFIG_STAGING=y +CONFIG_PRISM2_USB=m +CONFIG_R8712U=m +CONFIG_VT6656=m CONFIG_STAGING_MEDIA=y -CONFIG_VIDEO_MAX96712=m -CONFIG_CHROME_PLATFORMS=y -CONFIG_CROS_EC=y -CONFIG_CROS_EC_I2C=y -CONFIG_CROS_EC_RPMSG=m -CONFIG_CROS_EC_SPI=y -CONFIG_CROS_EC_CHARDEV=m -CONFIG_COMMON_CLK_RK808=y -CONFIG_COMMON_CLK_SCPI=y -CONFIG_COMMON_CLK_CS2000_CP=y -CONFIG_COMMON_CLK_FSL_SAI=y -CONFIG_COMMON_CLK_S2MPS11=y -CONFIG_COMMON_CLK_PWM=y -CONFIG_COMMON_CLK_RS9_PCIE=y -CONFIG_COMMON_CLK_VC5=y -CONFIG_COMMON_CLK_BD718XX=m -CONFIG_CLK_RASPBERRYPI=m -CONFIG_CLK_IMX8MM=y -CONFIG_CLK_IMX8MN=y -CONFIG_CLK_IMX8MP=y -CONFIG_CLK_IMX8MQ=y -CONFIG_CLK_IMX8QXP=y -CONFIG_CLK_IMX8ULP=y -CONFIG_CLK_IMX93=y -CONFIG_TI_SCI_CLK=y -CONFIG_COMMON_CLK_QCOM=y -CONFIG_QCOM_A53PLL=y -CONFIG_QCOM_CLK_APCS_MSM8916=y -CONFIG_QCOM_CLK_APCC_MSM8996=y -CONFIG_QCOM_CLK_SMD_RPM=y -CONFIG_QCOM_CLK_RPMH=y -CONFIG_IPQ_APSS_6018=y -CONFIG_IPQ_GCC_5018=y -CONFIG_IPQ_GCC_5332=y -CONFIG_IPQ_GCC_6018=y -CONFIG_IPQ_GCC_8074=y -CONFIG_IPQ_GCC_9574=y -CONFIG_MSM_GCC_8916=y -CONFIG_MSM_MMCC_8994=m -CONFIG_MSM_GCC_8994=y -CONFIG_MSM_GCC_8996=y -CONFIG_MSM_MMCC_8996=m -CONFIG_MSM_GCC_8998=y -CONFIG_MSM_MMCC_8998=m -CONFIG_QCM_GCC_2290=y -CONFIG_QCM_DISPCC_2290=m -CONFIG_QCS_GCC_404=y -CONFIG_SC_DISPCC_8280XP=m -CONFIG_SA_GCC_8775P=y -CONFIG_SA_GPUCC_8775P=m -CONFIG_SC_GCC_7180=y -CONFIG_SC_GCC_7280=y -CONFIG_SC_GCC_8180X=y -CONFIG_SC_GCC_8280XP=y -CONFIG_SC_GPUCC_8280XP=m -CONFIG_SC_LPASSCC_8280XP=m -CONFIG_SDM_CAMCC_845=m -CONFIG_SDM_GPUCC_845=y -CONFIG_SDM_VIDEOCC_845=y -CONFIG_SDM_DISPCC_845=y -CONFIG_SDM_LPASSCC_845=m -CONFIG_SM_CAMCC_8250=m -CONFIG_SM_DISPCC_6115=m -CONFIG_SM_DISPCC_8250=y -CONFIG_SM_DISPCC_8450=m -CONFIG_SM_DISPCC_8550=m -CONFIG_SM_GCC_6115=y -CONFIG_SM_GCC_8350=y -CONFIG_SM_GCC_8450=y -CONFIG_SM_GCC_8550=y -CONFIG_SM_GPUCC_6115=m -CONFIG_SM_GPUCC_8150=y -CONFIG_SM_GPUCC_8250=y -CONFIG_SM_TCSRCC_8550=y -CONFIG_SM_VIDEOCC_8250=y -CONFIG_QCOM_HFPLL=y -CONFIG_CLK_GFM_LPASS_SM8250=m -CONFIG_CLK_RCAR_USB2_CLOCK_SEL=y -CONFIG_HWSPINLOCK=y -CONFIG_HWSPINLOCK_QCOM=y -CONFIG_TEGRA186_TIMER=y -CONFIG_RENESAS_OSTM=y -CONFIG_ARM_MHU=y -CONFIG_IMX_MBOX=y -CONFIG_PLATFORM_MHU=y +CONFIG_VIDEO_RPIVID=m +CONFIG_STAGING_MEDIA_DEPRECATED=y +CONFIG_FB_TFT=m +CONFIG_FB_TFT_AGM1264K_FL=m +CONFIG_FB_TFT_BD663474=m +CONFIG_FB_TFT_HX8340BN=m +CONFIG_FB_TFT_HX8347D=m +CONFIG_FB_TFT_HX8353D=m +CONFIG_FB_TFT_HX8357D=m +CONFIG_FB_TFT_ILI9163=m +CONFIG_FB_TFT_ILI9320=m +CONFIG_FB_TFT_ILI9325=m +CONFIG_FB_TFT_ILI9340=m +CONFIG_FB_TFT_ILI9341=m +CONFIG_FB_TFT_ILI9481=m +CONFIG_FB_TFT_ILI9486=m +CONFIG_FB_TFT_PCD8544=m +CONFIG_FB_TFT_RA8875=m +CONFIG_FB_TFT_S6D02A1=m +CONFIG_FB_TFT_S6D1121=m +CONFIG_FB_TFT_SH1106=m +CONFIG_FB_TFT_SSD1289=m +CONFIG_FB_TFT_SSD1306=m +CONFIG_FB_TFT_SSD1331=m +CONFIG_FB_TFT_SSD1351=m +CONFIG_FB_TFT_ST7735R=m +CONFIG_FB_TFT_ST7789V=m +CONFIG_FB_TFT_TINYLCD=m +CONFIG_FB_TFT_TLS8204=m +CONFIG_FB_TFT_UC1611=m +CONFIG_FB_TFT_UC1701=m +CONFIG_FB_TFT_UPD161704=m +CONFIG_BCM2835_VCHIQ=y +CONFIG_SND_BCM2835=m +CONFIG_VIDEO_BCM2835=m +CONFIG_VIDEO_CODEC_BCM2835=m +CONFIG_VIDEO_ISP_BCM2835=m +CONFIG_COMMON_CLK_RP1=y +CONFIG_COMMON_CLK_RP1_SDIO=y +CONFIG_CLK_RASPBERRYPI=y +CONFIG_MAILBOX=y CONFIG_BCM2835_MBOX=y -CONFIG_QCOM_APCS_IPC=y -CONFIG_QCOM_IPCC=y -CONFIG_ROCKCHIP_IOMMU=y -CONFIG_TEGRA_IOMMU_SMMU=y -CONFIG_ARM_SMMU=y -CONFIG_ARM_SMMU_V3=y -CONFIG_MTK_IOMMU=y -CONFIG_QCOM_IOMMU=y -CONFIG_REMOTEPROC=y -CONFIG_IMX_REMOTEPROC=y -CONFIG_MTK_SCP=m -CONFIG_QCOM_Q6V5_ADSP=m -CONFIG_QCOM_Q6V5_MSS=m -CONFIG_QCOM_Q6V5_PAS=m -CONFIG_QCOM_SYSMON=m -CONFIG_QCOM_WCNSS_PIL=m -CONFIG_TI_K3_DSP_REMOTEPROC=m -CONFIG_TI_K3_R5_REMOTEPROC=m -CONFIG_RPMSG_CHAR=m -CONFIG_RPMSG_CTRL=m -CONFIG_RPMSG_QCOM_GLINK_RPM=y -CONFIG_RPMSG_QCOM_GLINK_SMEM=m -CONFIG_RPMSG_QCOM_SMD=y -CONFIG_RPMSG_VIRTIO=y -CONFIG_SOUNDWIRE=m -CONFIG_SOUNDWIRE_QCOM=m -CONFIG_OWL_PM_DOMAINS=y +CONFIG_BCM2712_IOMMU=y CONFIG_RASPBERRYPI_POWER=y -CONFIG_FSL_DPAA=y -CONFIG_FSL_MC_DPIO=y -CONFIG_FSL_RCPM=y -CONFIG_MTK_CMDQ=m -CONFIG_MTK_DEVAPC=m -CONFIG_MTK_PMIC_WRAP=y -CONFIG_MTK_SVS=m -CONFIG_QCOM_AOSS_QMP=y -CONFIG_QCOM_COMMAND_DB=y -CONFIG_QCOM_CPR=y -CONFIG_QCOM_GENI_SE=y -CONFIG_QCOM_LLCC=m -CONFIG_QCOM_OCMEM=m -CONFIG_QCOM_PMIC_GLINK=m -CONFIG_QCOM_RMTFS_MEM=m -CONFIG_QCOM_RPMH=y -CONFIG_QCOM_RPMHPD=y -CONFIG_QCOM_RPMPD=y -CONFIG_QCOM_SMEM=y -CONFIG_QCOM_SMD_RPM=y -CONFIG_QCOM_SMP2P=y -CONFIG_QCOM_SMSM=y -CONFIG_QCOM_SOCINFO=m -CONFIG_QCOM_SPM=m -CONFIG_QCOM_STATS=m -CONFIG_QCOM_WCNSS_CTRL=m -CONFIG_QCOM_APR=m -CONFIG_QCOM_ICC_BWMON=m -CONFIG_ARCH_R8A77995=y -CONFIG_ARCH_R8A77990=y -CONFIG_ARCH_R8A77951=y -CONFIG_ARCH_R8A77965=y -CONFIG_ARCH_R8A77960=y -CONFIG_ARCH_R8A77961=y -CONFIG_ARCH_R8A779F0=y -CONFIG_ARCH_R8A77980=y -CONFIG_ARCH_R8A77970=y -CONFIG_ARCH_R8A779A0=y -CONFIG_ARCH_R8A779G0=y -CONFIG_ARCH_R8A774C0=y -CONFIG_ARCH_R8A774E1=y -CONFIG_ARCH_R8A774A1=y -CONFIG_ARCH_R8A774B1=y -CONFIG_ARCH_R9A07G043=y -CONFIG_ARCH_R9A07G044=y -CONFIG_ARCH_R9A07G054=y -CONFIG_ARCH_R9A09G011=y -CONFIG_ROCKCHIP_IODOMAIN=y -CONFIG_ROCKCHIP_PM_DOMAINS=y -CONFIG_ARCH_TEGRA_132_SOC=y -CONFIG_ARCH_TEGRA_210_SOC=y -CONFIG_ARCH_TEGRA_186_SOC=y -CONFIG_ARCH_TEGRA_194_SOC=y -CONFIG_ARCH_TEGRA_234_SOC=y -CONFIG_TI_SCI_PM_DOMAINS=y -CONFIG_TI_PRUSS=m -CONFIG_ARM_IMX_BUS_DEVFREQ=y -CONFIG_ARM_IMX8M_DDRC_DEVFREQ=m -CONFIG_ARM_MEDIATEK_CCI_DEVFREQ=m -CONFIG_EXTCON_PTN5150=m -CONFIG_EXTCON_USB_GPIO=y -CONFIG_EXTCON_USBC_CROS_EC=y -CONFIG_RENESAS_RPCIF=m -CONFIG_IIO=y -CONFIG_EXYNOS_ADC=y -CONFIG_IMX93_ADC=m -CONFIG_MAX9611=m -CONFIG_MEDIATEK_MT6577_AUXADC=m -CONFIG_QCOM_SPMI_VADC=m -CONFIG_QCOM_SPMI_ADC5=m -CONFIG_ROCKCHIP_SARADC=m -CONFIG_RZG2L_ADC=m +CONFIG_IIO=m +CONFIG_IIO_BUFFER_CB=m +CONFIG_IIO_SW_TRIGGER=m +CONFIG_MCP320X=m +CONFIG_MCP3422=m CONFIG_TI_ADS1015=m -CONFIG_TI_AM335X_ADC=m -CONFIG_IIO_CROS_EC_SENSORS_CORE=m -CONFIG_IIO_CROS_EC_SENSORS=m -CONFIG_IIO_ST_LSM6DSX=m -CONFIG_IIO_CROS_EC_LIGHT_PROX=m -CONFIG_SENSORS_ISL29018=m -CONFIG_VCNL4000=m -CONFIG_IIO_ST_MAGN_3AXIS=m -CONFIG_IIO_CROS_EC_BARO=m -CONFIG_MPL3115=m +CONFIG_BME680=m +CONFIG_CCS811=m +CONFIG_SENSIRION_SGP30=m +CONFIG_SPS30_I2C=m +CONFIG_MAX30102=m +CONFIG_DHT11=m +CONFIG_HDC100X=m +CONFIG_HTU21=m +CONFIG_SI7020=m +CONFIG_BOSCH_BNO055_I2C=m +CONFIG_INV_MPU6050_I2C=m +CONFIG_APDS9960=m +CONFIG_BH1750=m +CONFIG_TSL4531=m +CONFIG_VEML6070=m +CONFIG_IIO_HRTIMER_TRIGGER=m +CONFIG_IIO_INTERRUPT_TRIGGER=m +CONFIG_IIO_SYSFS_TRIGGER=m +CONFIG_BMP280=m +CONFIG_MS5637=m +CONFIG_MAXIM_THERMOCOUPLE=m +CONFIG_MAX31856=m CONFIG_PWM=y CONFIG_PWM_BCM2835=m -CONFIG_PWM_BRCMSTB=m -CONFIG_PWM_CROS_EC=m -CONFIG_PWM_IMX27=m -CONFIG_PWM_MESON=m -CONFIG_PWM_MTK_DISP=m -CONFIG_PWM_MEDIATEK=m -CONFIG_PWM_RCAR=m -CONFIG_PWM_RENESAS_TPU=m -CONFIG_PWM_ROCKCHIP=y -CONFIG_PWM_RZ_MTU3=m -CONFIG_PWM_SAMSUNG=y -CONFIG_PWM_SL28CPLD=m -CONFIG_PWM_SUN4I=m -CONFIG_PWM_TEGRA=m -CONFIG_PWM_TIECAP=m -CONFIG_PWM_TIEHRPWM=m -CONFIG_PWM_VISCONTI=m -CONFIG_SL28CPLD_INTC=y -CONFIG_QCOM_PDC=y -CONFIG_QCOM_MPM=y -CONFIG_RESET_IMX7=y -CONFIG_RESET_QCOM_AOSS=y -CONFIG_RESET_QCOM_PDC=m -CONFIG_RESET_RZG2L_USBPHY_CTRL=y -CONFIG_RESET_TI_SCI=y -CONFIG_PHY_XGENE=y -CONFIG_PHY_CAN_TRANSCEIVER=m -CONFIG_PHY_SUN4I_USB=y -CONFIG_PHY_CADENCE_TORRENT=m -CONFIG_PHY_CADENCE_SIERRA=m -CONFIG_PHY_MIXEL_MIPI_DPHY=m -CONFIG_PHY_FSL_IMX8M_PCIE=y -CONFIG_PHY_HI6220_USB=y -CONFIG_PHY_HISTB_COMBPHY=y -CONFIG_PHY_HISI_INNO_USB2=y -CONFIG_PHY_MVEBU_CP110_COMPHY=y -CONFIG_PHY_MTK_TPHY=y -CONFIG_PHY_QCOM_EDP=m -CONFIG_PHY_QCOM_PCIE2=m -CONFIG_PHY_QCOM_QMP=m -CONFIG_PHY_QCOM_QUSB2=m -CONFIG_PHY_QCOM_SNPS_EUSB2=m -CONFIG_PHY_QCOM_EUSB2_REPEATER=m -CONFIG_PHY_QCOM_USB_HS=m -CONFIG_PHY_QCOM_USB_SNPS_FEMTO_V2=m -CONFIG_PHY_QCOM_USB_HS_28NM=m -CONFIG_PHY_QCOM_USB_SS=m -CONFIG_PHY_QCOM_SGMII_ETH=m -CONFIG_PHY_R8A779F0_ETHERNET_SERDES=y -CONFIG_PHY_RCAR_GEN3_PCIE=y -CONFIG_PHY_RCAR_GEN3_USB2=y -CONFIG_PHY_RCAR_GEN3_USB3=m -CONFIG_PHY_ROCKCHIP_EMMC=y -CONFIG_PHY_ROCKCHIP_INNO_HDMI=m -CONFIG_PHY_ROCKCHIP_INNO_USB2=y -CONFIG_PHY_ROCKCHIP_INNO_DSIDPHY=m -CONFIG_PHY_ROCKCHIP_NANENG_COMBO_PHY=m -CONFIG_PHY_ROCKCHIP_PCIE=m -CONFIG_PHY_ROCKCHIP_SNPS_PCIE3=y -CONFIG_PHY_ROCKCHIP_TYPEC=y -CONFIG_PHY_SAMSUNG_UFS=y -CONFIG_PHY_UNIPHIER_USB2=y -CONFIG_PHY_UNIPHIER_USB3=y -CONFIG_PHY_TEGRA_XUSB=y -CONFIG_PHY_AM654_SERDES=m -CONFIG_PHY_J721E_WIZ=m -CONFIG_ARM_CCI_PMU=m -CONFIG_ARM_CCN=m -CONFIG_ARM_CMN=m -CONFIG_ARM_SMMU_V3_PMU=m -CONFIG_ARM_DSU_PMU=m -CONFIG_FSL_IMX8_DDR_PMU=m -CONFIG_QCOM_L2_PMU=y -CONFIG_QCOM_L3_PMU=y -CONFIG_ARM_SPE_PMU=m -CONFIG_ARM_DMC620_PMU=m -CONFIG_HISI_PMU=y -CONFIG_ARM_CORESIGHT_PMU_ARCH_SYSTEM_PMU=m -CONFIG_NVMEM_LAYOUT_SL28_VPD=m -CONFIG_NVMEM_IMX_OCOTP=y -CONFIG_NVMEM_IMX_OCOTP_ELE=m -CONFIG_NVMEM_IMX_OCOTP_SCU=y -CONFIG_NVMEM_LAYERSCAPE_SFP=m -CONFIG_NVMEM_MESON_EFUSE=m -CONFIG_NVMEM_MTK_EFUSE=y -CONFIG_NVMEM_QCOM_QFPROM=y +CONFIG_PWM_BRCMSTB=y +CONFIG_PWM_PCA9685=m +CONFIG_PWM_RASPBERRYPI_POE=m +CONFIG_PWM_RP1=y +CONFIG_BCM2712_MIP=y +CONFIG_RPI_AXIPERF=m +CONFIG_ANDROID_BINDER_IPC=y +CONFIG_ANDROID_BINDERFS=y CONFIG_NVMEM_RMEM=m -CONFIG_NVMEM_ROCKCHIP_EFUSE=y -CONFIG_NVMEM_ROCKCHIP_OTP=y -CONFIG_NVMEM_SNVS_LPGPR=y -CONFIG_NVMEM_SPMI_SDAM=m -CONFIG_NVMEM_SUNXI_SID=y -CONFIG_NVMEM_UNIPHIER_EFUSE=y -CONFIG_FPGA=y -CONFIG_FPGA_MGR_ALTERA_CVP=m -CONFIG_FPGA_MGR_STRATIX10_SOC=m -CONFIG_FPGA_BRIDGE=m -CONFIG_ALTERA_FREEZE_BRIDGE=m -CONFIG_FPGA_REGION=m -CONFIG_OF_FPGA_REGION=m -CONFIG_TEE=y -CONFIG_OPTEE=y CONFIG_MUX_GPIO=m -CONFIG_MUX_MMIO=y -CONFIG_SLIM_QCOM_CTRL=m -CONFIG_SLIM_QCOM_NGD_CTRL=m -CONFIG_INTERCONNECT_IMX=y -CONFIG_INTERCONNECT_IMX8MM=m -CONFIG_INTERCONNECT_IMX8MN=m -CONFIG_INTERCONNECT_IMX8MQ=m -CONFIG_INTERCONNECT_IMX8MP=y -CONFIG_INTERCONNECT_QCOM=y -CONFIG_INTERCONNECT_QCOM_MSM8916=m -CONFIG_INTERCONNECT_QCOM_MSM8996=m -CONFIG_INTERCONNECT_QCOM_OSM_L3=m -CONFIG_INTERCONNECT_QCOM_QCM2290=m -CONFIG_INTERCONNECT_QCOM_QCS404=m -CONFIG_INTERCONNECT_QCOM_SA8775P=y -CONFIG_INTERCONNECT_QCOM_SC7180=y -CONFIG_INTERCONNECT_QCOM_SC7280=y -CONFIG_INTERCONNECT_QCOM_SC8180X=y -CONFIG_INTERCONNECT_QCOM_SC8280XP=y -CONFIG_INTERCONNECT_QCOM_SDM845=y -CONFIG_INTERCONNECT_QCOM_SM8150=m -CONFIG_INTERCONNECT_QCOM_SM8250=m -CONFIG_INTERCONNECT_QCOM_SM8350=m -CONFIG_INTERCONNECT_QCOM_SM8450=y -CONFIG_INTERCONNECT_QCOM_SM8550=y -CONFIG_COUNTER=m -CONFIG_RZ_MTU3_CNT=m -CONFIG_HTE=y -CONFIG_HTE_TEGRA194=y -CONFIG_HTE_TEGRA194_TEST=m -CONFIG_EXT2_FS=y -CONFIG_EXT3_FS=y +CONFIG_EXT4_FS=y CONFIG_EXT4_FS_POSIX_ACL=y +CONFIG_EXT4_FS_SECURITY=y +CONFIG_REISERFS_FS=m +CONFIG_REISERFS_FS_XATTR=y +CONFIG_REISERFS_FS_POSIX_ACL=y +CONFIG_REISERFS_FS_SECURITY=y +CONFIG_JFS_FS=m +CONFIG_JFS_POSIX_ACL=y +CONFIG_JFS_SECURITY=y +CONFIG_JFS_STATISTICS=y +CONFIG_XFS_FS=m +CONFIG_XFS_QUOTA=y +CONFIG_XFS_POSIX_ACL=y +CONFIG_XFS_RT=y +CONFIG_GFS2_FS=m +CONFIG_OCFS2_FS=m CONFIG_BTRFS_FS=m CONFIG_BTRFS_FS_POSIX_ACL=y +CONFIG_NILFS2_FS=m +CONFIG_F2FS_FS=y +CONFIG_F2FS_FS_SECURITY=y +CONFIG_FS_ENCRYPTION=y CONFIG_FANOTIFY=y -CONFIG_FANOTIFY_ACCESS_PERMISSIONS=y -CONFIG_QUOTA=y +CONFIG_QFMT_V1=m +CONFIG_QFMT_V2=m CONFIG_AUTOFS_FS=y CONFIG_FUSE_FS=m CONFIG_CUSE=m CONFIG_OVERLAY_FS=m +CONFIG_FSCACHE=y +CONFIG_FSCACHE_STATS=y +CONFIG_CACHEFILES=y +CONFIG_ISO9660_FS=m +CONFIG_JOLIET=y +CONFIG_ZISOFS=y +CONFIG_UDF_FS=m +CONFIG_MSDOS_FS=y CONFIG_VFAT_FS=y +CONFIG_FAT_DEFAULT_IOCHARSET="ascii" +CONFIG_EXFAT_FS=m +CONFIG_NTFS_FS=m +CONFIG_NTFS_RW=y +CONFIG_NTFS3_FS=m +CONFIG_TMPFS=y CONFIG_TMPFS_POSIX_ACL=y -CONFIG_HUGETLBFS=y -CONFIG_EFIVAR_FS=y +CONFIG_ECRYPT_FS=m +CONFIG_HFS_FS=m +CONFIG_HFSPLUS_FS=m +CONFIG_JFFS2_FS=m +CONFIG_JFFS2_SUMMARY=y CONFIG_UBIFS_FS=m -CONFIG_SQUASHFS=y +CONFIG_SQUASHFS=m +CONFIG_SQUASHFS_XATTR=y +CONFIG_SQUASHFS_LZO=y +CONFIG_SQUASHFS_XZ=y +CONFIG_PSTORE=y +CONFIG_PSTORE_CONSOLE=y +CONFIG_PSTORE_RAM=y CONFIG_NFS_FS=y +CONFIG_NFS_V3_ACL=y CONFIG_NFS_V4=y +CONFIG_NFS_SWAP=y CONFIG_NFS_V4_1=y CONFIG_NFS_V4_2=y CONFIG_ROOT_NFS=y -CONFIG_9P_FS=y +CONFIG_NFS_FSCACHE=y +CONFIG_NFSD=m +CONFIG_NFSD_V2=y +CONFIG_NFSD_V2_ACL=y +CONFIG_NFSD_V3_ACL=y +CONFIG_NFSD_V4=y +CONFIG_CEPH_FS=m +CONFIG_CIFS=m +CONFIG_CIFS_UPCALL=y +CONFIG_CIFS_XATTR=y +CONFIG_CIFS_POSIX=y +CONFIG_CIFS_DFS_UPCALL=y +CONFIG_CIFS_FSCACHE=y +CONFIG_SMB_SERVER=m +CONFIG_9P_FS=m +CONFIG_9P_FS_POSIX_ACL=y +CONFIG_NLS_DEFAULT="utf8" CONFIG_NLS_CODEPAGE_437=y -CONFIG_NLS_ISO8859_1=y +CONFIG_NLS_CODEPAGE_737=m +CONFIG_NLS_CODEPAGE_775=m +CONFIG_NLS_CODEPAGE_850=m +CONFIG_NLS_CODEPAGE_852=m +CONFIG_NLS_CODEPAGE_855=m +CONFIG_NLS_CODEPAGE_857=m +CONFIG_NLS_CODEPAGE_860=m +CONFIG_NLS_CODEPAGE_861=m +CONFIG_NLS_CODEPAGE_862=m +CONFIG_NLS_CODEPAGE_863=m +CONFIG_NLS_CODEPAGE_864=m +CONFIG_NLS_CODEPAGE_865=m +CONFIG_NLS_CODEPAGE_866=m +CONFIG_NLS_CODEPAGE_869=m +CONFIG_NLS_CODEPAGE_936=m +CONFIG_NLS_CODEPAGE_950=m +CONFIG_NLS_CODEPAGE_932=m +CONFIG_NLS_CODEPAGE_949=m +CONFIG_NLS_CODEPAGE_874=m +CONFIG_NLS_ISO8859_8=m +CONFIG_NLS_CODEPAGE_1250=m +CONFIG_NLS_CODEPAGE_1251=m +CONFIG_NLS_ASCII=y +CONFIG_NLS_ISO8859_1=m +CONFIG_NLS_ISO8859_2=m +CONFIG_NLS_ISO8859_3=m +CONFIG_NLS_ISO8859_4=m +CONFIG_NLS_ISO8859_5=m +CONFIG_NLS_ISO8859_6=m +CONFIG_NLS_ISO8859_7=m +CONFIG_NLS_ISO8859_9=m +CONFIG_NLS_ISO8859_13=m +CONFIG_NLS_ISO8859_14=m +CONFIG_NLS_ISO8859_15=m +CONFIG_NLS_KOI8_R=m +CONFIG_NLS_KOI8_U=m +CONFIG_DLM=m +CONFIG_KEY_DH_OPERATIONS=y CONFIG_SECURITY=y -CONFIG_CRYPTO_USER=y -CONFIG_CRYPTO_TEST=m -CONFIG_CRYPTO_ECHAINIV=y -CONFIG_CRYPTO_MICHAEL_MIC=m -CONFIG_CRYPTO_ANSI_CPRNG=y +CONFIG_SECURITY_APPARMOR=y +CONFIG_LSM="" +CONFIG_CRYPTO_USER=m +CONFIG_CRYPTO_CRYPTD=m +CONFIG_CRYPTO_AES=m +CONFIG_CRYPTO_CAST5=m +CONFIG_CRYPTO_DES=y +CONFIG_CRYPTO_TWOFISH=m +CONFIG_CRYPTO_ADIANTUM=m +CONFIG_CRYPTO_CBC=m +CONFIG_CRYPTO_CHACHA20POLY1305=m +CONFIG_CRYPTO_MD4=m +CONFIG_CRYPTO_SHA512=m +CONFIG_CRYPTO_WP512=m +CONFIG_CRYPTO_XCBC=m +CONFIG_CRYPTO_LZ4=m +CONFIG_CRYPTO_USER_API_HASH=m +CONFIG_CRYPTO_USER_API_SKCIPHER=m CONFIG_CRYPTO_USER_API_RNG=m -CONFIG_CRYPTO_CHACHA20_NEON=m -CONFIG_CRYPTO_GHASH_ARM64_CE=y -CONFIG_CRYPTO_SHA1_ARM64_CE=y -CONFIG_CRYPTO_SHA2_ARM64_CE=y +CONFIG_CRYPTO_USER_API_AEAD=m +CONFIG_CRYPTO_GHASH_ARM64_CE=m +CONFIG_CRYPTO_SHA1_ARM64_CE=m +CONFIG_CRYPTO_SHA2_ARM64_CE=m CONFIG_CRYPTO_SHA512_ARM64_CE=m CONFIG_CRYPTO_SHA3_ARM64=m CONFIG_CRYPTO_SM3_ARM64_CE=m -CONFIG_CRYPTO_AES_ARM64_CE_BLK=y +CONFIG_CRYPTO_AES_ARM64=m +CONFIG_CRYPTO_AES_ARM64_CE_BLK=m CONFIG_CRYPTO_AES_ARM64_BS=m -CONFIG_CRYPTO_AES_ARM64_CE_CCM=y -CONFIG_CRYPTO_CRCT10DIF_ARM64_CE=m -CONFIG_CRYPTO_DEV_SUN8I_CE=m -CONFIG_CRYPTO_DEV_FSL_CAAM=m -CONFIG_CRYPTO_DEV_FSL_DPAA2_CAAM=m -CONFIG_CRYPTO_DEV_QCE=m -CONFIG_CRYPTO_DEV_QCOM_RNG=m -CONFIG_CRYPTO_DEV_CCREE=m -CONFIG_CRYPTO_DEV_HISI_SEC2=m -CONFIG_CRYPTO_DEV_HISI_ZIP=m -CONFIG_CRYPTO_DEV_HISI_HPRE=m -CONFIG_CRYPTO_DEV_HISI_TRNG=m -CONFIG_CRYPTO_DEV_SA2UL=m -CONFIG_DMA_RESTRICTED_POOL=y -CONFIG_CMA_SIZE_MBYTES=32 +CONFIG_CRYPTO_SM4_ARM64_CE=m +CONFIG_CRYPTO_AES_ARM64_CE_CCM=m +# CONFIG_CRYPTO_HW is not set +CONFIG_PKCS8_PRIVATE_KEY_PARSER=m +CONFIG_CRC_ITU_T=y +CONFIG_LIBCRC32C=y +CONFIG_DMA_CMA=y +CONFIG_CMA_SIZE_MBYTES=5 CONFIG_PRINTK_TIME=y -CONFIG_DEBUG_KERNEL=y -CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT=y -CONFIG_DEBUG_INFO_REDUCED=y -CONFIG_MAGIC_SYSRQ=y -CONFIG_DEBUG_FS=y -# CONFIG_SCHED_DEBUG is not set -# CONFIG_FTRACE is not set -CONFIG_CORESIGHT=m -CONFIG_CORESIGHT_LINK_AND_SINK_TMC=m -CONFIG_CORESIGHT_CATU=m -CONFIG_CORESIGHT_SINK_TPIU=m -CONFIG_CORESIGHT_SINK_ETBV10=m -CONFIG_CORESIGHT_STM=m -CONFIG_CORESIGHT_CPU_DEBUG=m -CONFIG_CORESIGHT_CTI=m -CONFIG_MEMTEST=y +CONFIG_BOOT_PRINTK_DELAY=y +CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0x1f6 +CONFIG_KGDB=y +CONFIG_KGDB_KDB=y +CONFIG_KDB_KEYBOARD=y +CONFIG_DEBUG_MEMORY_INIT=y +CONFIG_DETECT_HUNG_TASK=y +CONFIG_LATENCYTOP=y +CONFIG_FUNCTION_PROFILER=y +CONFIG_STACK_TRACER=y +CONFIG_SCHED_TRACER=y +CONFIG_BLK_DEV_IO_TRACE=y +# CONFIG_UPROBE_EVENTS is not set +CONFIG_SAMPLES=y +CONFIG_SAMPLES_RUST=y +CONFIG_SAMPLE_RUST_MINIMAL=m +CONFIG_SAMPLE_RUST_PRINT=m +CONFIG_SAMPLE_RUST_HOSTPROGS=y +# CONFIG_STRICT_DEVMEM is not set diff --git a/drivers/i2c/busses/i2c-bcm2835.c b/drivers/i2c/busses/i2c-bcm2835.c index f3410d5ebbdd93..71a74de9fa5a3a 100644 --- a/drivers/i2c/busses/i2c-bcm2835.c +++ b/drivers/i2c/busses/i2c-bcm2835.c @@ -16,45 +16,45 @@ #include #include -#define BCM2835_I2C_C 0x0 -#define BCM2835_I2C_S 0x4 -#define BCM2835_I2C_DLEN 0x8 -#define BCM2835_I2C_A 0xc -#define BCM2835_I2C_FIFO 0x10 -#define BCM2835_I2C_DIV 0x14 -#define BCM2835_I2C_DEL 0x18 +#define BCM2835_I2C_C 0x0 +#define BCM2835_I2C_S 0x4 +#define BCM2835_I2C_DLEN 0x8 +#define BCM2835_I2C_A 0xc +#define BCM2835_I2C_FIFO 0x10 +#define BCM2835_I2C_DIV 0x14 +#define BCM2835_I2C_DEL 0x18 /* * 16-bit field for the number of SCL cycles to wait after rising SCL * before deciding the slave is not responding. 0 disables the * timeout detection. */ -#define BCM2835_I2C_CLKT 0x1c - -#define BCM2835_I2C_C_READ BIT(0) -#define BCM2835_I2C_C_CLEAR BIT(4) /* bits 4 and 5 both clear */ -#define BCM2835_I2C_C_ST BIT(7) -#define BCM2835_I2C_C_INTD BIT(8) -#define BCM2835_I2C_C_INTT BIT(9) -#define BCM2835_I2C_C_INTR BIT(10) -#define BCM2835_I2C_C_I2CEN BIT(15) - -#define BCM2835_I2C_S_TA BIT(0) -#define BCM2835_I2C_S_DONE BIT(1) -#define BCM2835_I2C_S_TXW BIT(2) -#define BCM2835_I2C_S_RXR BIT(3) -#define BCM2835_I2C_S_TXD BIT(4) -#define BCM2835_I2C_S_RXD BIT(5) -#define BCM2835_I2C_S_TXE BIT(6) -#define BCM2835_I2C_S_RXF BIT(7) -#define BCM2835_I2C_S_ERR BIT(8) -#define BCM2835_I2C_S_CLKT BIT(9) -#define BCM2835_I2C_S_LEN BIT(10) /* Fake bit for SW error reporting */ - -#define BCM2835_I2C_FEDL_SHIFT 16 -#define BCM2835_I2C_REDL_SHIFT 0 - -#define BCM2835_I2C_CDIV_MIN 0x0002 -#define BCM2835_I2C_CDIV_MAX 0xFFFE +#define BCM2835_I2C_CLKT 0x1c + +#define BCM2835_I2C_C_READ BIT(0) +#define BCM2835_I2C_C_CLEAR BIT(4) /* bits 4 and 5 both clear */ +#define BCM2835_I2C_C_ST BIT(7) +#define BCM2835_I2C_C_INTD BIT(8) +#define BCM2835_I2C_C_INTT BIT(9) +#define BCM2835_I2C_C_INTR BIT(10) +#define BCM2835_I2C_C_I2CEN BIT(15) + +#define BCM2835_I2C_S_TA BIT(0) +#define BCM2835_I2C_S_DONE BIT(1) +#define BCM2835_I2C_S_TXW BIT(2) +#define BCM2835_I2C_S_RXR BIT(3) +#define BCM2835_I2C_S_TXD BIT(4) +#define BCM2835_I2C_S_RXD BIT(5) +#define BCM2835_I2C_S_TXE BIT(6) +#define BCM2835_I2C_S_RXF BIT(7) +#define BCM2835_I2C_S_ERR BIT(8) +#define BCM2835_I2C_S_CLKT BIT(9) +#define BCM2835_I2C_S_LEN BIT(10) /* Fake bit for SW error reporting */ + +#define BCM2835_I2C_FEDL_SHIFT 16 +#define BCM2835_I2C_REDL_SHIFT 0 + +#define BCM2835_I2C_CDIV_MIN 0x0002 +#define BCM2835_I2C_CDIV_MAX 0xFFFE static unsigned int debug; module_param(debug, uint, 0644); @@ -64,7 +64,7 @@ static unsigned int clk_tout_ms = 35; /* SMBUs-recommended 35ms */ module_param(clk_tout_ms, uint, 0644); MODULE_PARM_DESC(clk_tout_ms, "clock-stretch timeout (mS)"); -#define BCM2835_DEBUG_MAX 512 +#define BCM2835_DEBUG_MAX 512 struct bcm2835_debug { struct i2c_msg *msg; int msg_idx; @@ -96,7 +96,7 @@ static inline void bcm2835_debug_add(struct bcm2835_i2c_dev *i2c_dev, u32 s) i2c_dev->debug[i2c_dev->debug_num].msg = i2c_dev->curr_msg; i2c_dev->debug[i2c_dev->debug_num].msg_idx = - i2c_dev->debug_num_msgs - i2c_dev->num_msgs; + i2c_dev->debug_num_msgs - i2c_dev->num_msgs; i2c_dev->debug[i2c_dev->debug_num].remain = i2c_dev->msg_buf_remaining; i2c_dev->debug[i2c_dev->debug_num].status = s; i2c_dev->debug_num++; @@ -108,7 +108,8 @@ static void bcm2835_debug_print_status(struct bcm2835_i2c_dev *i2c_dev, u32 s = d->status; pr_info("isr: remain=%zu, status=0x%x : %s%s%s%s%s%s%s%s%s%s [i2c%d]\n", - d->remain, s, s & BCM2835_I2C_S_TA ? "TA " : "", + d->remain, s, + s & BCM2835_I2C_S_TA ? "TA " : "", s & BCM2835_I2C_S_DONE ? "DONE " : "", s & BCM2835_I2C_S_TXW ? "TXW " : "", s & BCM2835_I2C_S_RXR ? "RXR " : "", @@ -117,7 +118,8 @@ static void bcm2835_debug_print_status(struct bcm2835_i2c_dev *i2c_dev, s & BCM2835_I2C_S_TXE ? "TXE " : "", s & BCM2835_I2C_S_RXF ? "RXF " : "", s & BCM2835_I2C_S_ERR ? "ERR " : "", - s & BCM2835_I2C_S_CLKT ? "CLKT " : "", i2c_dev->adapter.nr); + s & BCM2835_I2C_S_CLKT ? "CLKT " : "", + i2c_dev->adapter.nr); } static void bcm2835_debug_print_msg(struct bcm2835_i2c_dev *i2c_dev, @@ -125,14 +127,16 @@ static void bcm2835_debug_print_msg(struct bcm2835_i2c_dev *i2c_dev, const char *fname) { pr_info("%s: msg(%d/%d) %s addr=0x%02x, len=%u flags=%s%s%s%s%s%s%s [i2c%d]\n", - fname, i, total, msg->flags & I2C_M_RD ? "read" : "write", - msg->addr, msg->len, msg->flags & I2C_M_TEN ? "TEN" : "", + fname, i, total, + msg->flags & I2C_M_RD ? "read" : "write", msg->addr, msg->len, + msg->flags & I2C_M_TEN ? "TEN" : "", msg->flags & I2C_M_RECV_LEN ? "RECV_LEN" : "", msg->flags & I2C_M_NO_RD_ACK ? "NO_RD_ACK" : "", msg->flags & I2C_M_IGNORE_NAK ? "IGNORE_NAK" : "", msg->flags & I2C_M_REV_DIR_ADDR ? "REV_DIR_ADDR" : "", msg->flags & I2C_M_NOSTART ? "NOSTART" : "", - msg->flags & I2C_M_STOP ? "STOP" : "", i2c_dev->adapter.nr); + msg->flags & I2C_M_STOP ? "STOP" : "", + i2c_dev->adapter.nr); } static void bcm2835_debug_print(struct bcm2835_i2c_dev *i2c_dev) @@ -144,8 +148,7 @@ static void bcm2835_debug_print(struct bcm2835_i2c_dev *i2c_dev) d = &i2c_dev->debug[i]; if (d->status == ~0) bcm2835_debug_print_msg(i2c_dev, d->msg, d->msg_idx, - i2c_dev->debug_num_msgs, - "start_transfer"); + i2c_dev->debug_num_msgs, "start_transfer"); else bcm2835_debug_print_status(i2c_dev, d); } @@ -153,8 +156,8 @@ static void bcm2835_debug_print(struct bcm2835_i2c_dev *i2c_dev) pr_info("BCM2835_DEBUG_MAX reached\n"); } -static inline void bcm2835_i2c_writel(struct bcm2835_i2c_dev *i2c_dev, u32 reg, - u32 val) +static inline void bcm2835_i2c_writel(struct bcm2835_i2c_dev *i2c_dev, + u32 reg, u32 val) { writel(val, i2c_dev->regs + reg); } @@ -171,7 +174,7 @@ struct clk_bcm2835_i2c { }; static int clk_bcm2835_i2c_calc_divider(unsigned long rate, - unsigned long parent_rate) + unsigned long parent_rate) { u32 divider = DIV_ROUND_UP(parent_rate, rate); @@ -190,7 +193,7 @@ static int clk_bcm2835_i2c_calc_divider(unsigned long rate, } static int clk_bcm2835_i2c_set_rate(struct clk_hw *hw, unsigned long rate, - unsigned long parent_rate) + unsigned long parent_rate) { struct clk_bcm2835_i2c *div = to_clk_bcm2835_i2c(hw); u32 redl, fedl; @@ -217,15 +220,15 @@ static int clk_bcm2835_i2c_set_rate(struct clk_hw *hw, unsigned long rate, bcm2835_i2c_writel(div->i2c_dev, BCM2835_I2C_DEL, (fedl << BCM2835_I2C_FEDL_SHIFT) | - (redl << BCM2835_I2C_REDL_SHIFT)); + (redl << BCM2835_I2C_REDL_SHIFT)); /* * Set the clock stretch timeout. */ - if (rate > 0xffff * 1000 / clk_tout_ms) - clk_tout = 0xffff; + if (rate > 0xffff*1000/clk_tout_ms) + clk_tout = 0xffff; else - clk_tout = clk_tout_ms * rate / 1000; + clk_tout = clk_tout_ms*rate/1000; bcm2835_i2c_writel(div->i2c_dev, BCM2835_I2C_CLKT, clk_tout); @@ -233,7 +236,7 @@ static int clk_bcm2835_i2c_set_rate(struct clk_hw *hw, unsigned long rate, } static long clk_bcm2835_i2c_round_rate(struct clk_hw *hw, unsigned long rate, - unsigned long *parent_rate) + unsigned long *parent_rate) { u32 divider = clk_bcm2835_i2c_calc_divider(rate, *parent_rate); @@ -241,7 +244,7 @@ static long clk_bcm2835_i2c_round_rate(struct clk_hw *hw, unsigned long rate, } static unsigned long clk_bcm2835_i2c_recalc_rate(struct clk_hw *hw, - unsigned long parent_rate) + unsigned long parent_rate) { struct clk_bcm2835_i2c *div = to_clk_bcm2835_i2c(hw); u32 divider = bcm2835_i2c_readl(div->i2c_dev, BCM2835_I2C_DIV); @@ -256,8 +259,8 @@ static const struct clk_ops clk_bcm2835_i2c_ops = { }; static struct clk *bcm2835_i2c_register_div(struct device *dev, - struct clk *mclk, - struct bcm2835_i2c_dev *i2c_dev) + struct clk *mclk, + struct bcm2835_i2c_dev *i2c_dev) { struct clk_init_data init; struct clk_bcm2835_i2c *priv; @@ -270,7 +273,7 @@ static struct clk *bcm2835_i2c_register_div(struct device *dev, init.ops = &clk_bcm2835_i2c_ops; init.name = name; - init.parent_names = (const char *[]){ mclk_name }; + init.parent_names = (const char* []) { mclk_name }; init.num_parents = 1; init.flags = 0; @@ -308,8 +311,8 @@ static void bcm2835_drain_rxfifo(struct bcm2835_i2c_dev *i2c_dev) val = bcm2835_i2c_readl(i2c_dev, BCM2835_I2C_S); if (!(val & BCM2835_I2C_S_RXD)) break; - *i2c_dev->msg_buf = - bcm2835_i2c_readl(i2c_dev, BCM2835_I2C_FIFO); + *i2c_dev->msg_buf = bcm2835_i2c_readl(i2c_dev, + BCM2835_I2C_FIFO); i2c_dev->msg_buf++; i2c_dev->msg_buf_remaining--; } @@ -387,8 +390,7 @@ static irqreturn_t bcm2835_i2c_isr(int this_irq, void *data) if (val & BCM2835_I2C_S_DONE) { if (!i2c_dev->curr_msg) { - dev_err(i2c_dev->dev, - "Got unexpected interrupt (from firmware?)\n"); + dev_err(i2c_dev->dev, "Got unexpected interrupt (from firmware?)\n"); } else if (i2c_dev->curr_msg->flags & I2C_M_RD) { bcm2835_drain_rxfifo(i2c_dev); val = bcm2835_i2c_readl(i2c_dev, BCM2835_I2C_S); @@ -429,9 +431,8 @@ static irqreturn_t bcm2835_i2c_isr(int this_irq, void *data) complete: bcm2835_i2c_writel(i2c_dev, BCM2835_I2C_C, BCM2835_I2C_C_CLEAR); - bcm2835_i2c_writel(i2c_dev, BCM2835_I2C_S, - BCM2835_I2C_S_CLKT | BCM2835_I2C_S_ERR | - BCM2835_I2C_S_DONE); + bcm2835_i2c_writel(i2c_dev, BCM2835_I2C_S, BCM2835_I2C_S_CLKT | + BCM2835_I2C_S_ERR | BCM2835_I2C_S_DONE); complete(&i2c_dev->completion); return IRQ_HANDLED; @@ -450,14 +451,12 @@ static int bcm2835_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg msgs[], if (debug > 2) for (i = 0; i < num; i++) - bcm2835_debug_print_msg(i2c_dev, &msgs[i], i + 1, num, - __func__); + bcm2835_debug_print_msg(i2c_dev, &msgs[i], i + 1, num, __func__); for (i = 0; i < (num - 1); i++) { if (msgs[i].flags & I2C_M_RD) { - dev_warn_once( - i2c_dev->dev, - "only one read message supported, has to be last\n"); + dev_warn_once(i2c_dev->dev, + "only one read message supported, has to be last\n"); return -EOPNOTSUPP; } if (msgs[i].flags & I2C_M_IGNORE_NAK) @@ -484,7 +483,8 @@ static int bcm2835_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg msgs[], i2c_dev->debug_num_msgs = 0; i2c_dev->debug_num = 0; if (!time_left) { - bcm2835_i2c_writel(i2c_dev, BCM2835_I2C_C, BCM2835_I2C_C_CLEAR); + bcm2835_i2c_writel(i2c_dev, BCM2835_I2C_C, + BCM2835_I2C_C_CLEAR); dev_err(i2c_dev->dev, "i2c transfer timed out\n"); return -ETIMEDOUT; } @@ -508,8 +508,8 @@ static u32 bcm2835_i2c_func(struct i2c_adapter *adap) } static const struct i2c_algorithm bcm2835_i2c_algo = { - .master_xfer = bcm2835_i2c_xfer, - .functionality = bcm2835_i2c_func, + .master_xfer = bcm2835_i2c_xfer, + .functionality = bcm2835_i2c_func, }; /* @@ -649,4 +649,4 @@ module_platform_driver(bcm2835_i2c_driver); MODULE_AUTHOR("Stephen Warren "); MODULE_DESCRIPTION("BCM2835 I2C bus adapter"); MODULE_LICENSE("GPL v2"); -MODULE_ALIAS("platform:i2c-bcm2835"); \ No newline at end of file +MODULE_ALIAS("platform:i2c-bcm2835"); diff --git a/rust/kernel/io_pgtable.rs b/rust/kernel/io_pgtable.rs deleted file mode 100644 index e69de29bb2d1d6..00000000000000 diff --git a/rust/kernel/serial/uart_port.rs b/rust/kernel/serial/uart_port.rs index dcfa58beb9f0cc..ce7cfbdcf24dd0 100644 --- a/rust/kernel/serial/uart_port.rs +++ b/rust/kernel/serial/uart_port.rs @@ -213,7 +213,7 @@ impl PortRegistration { pr_warn!("this uart port driver is already registered\n"); return Err(EINVAL); } - let port = &mut this.uart_port; + let mut port = &mut this.uart_port; port.0.dev = dev.raw_device(); // port.irq = irq; // port.membase = membase;