diff --git a/linux-5.10/rk3568_patch/kernel.patch b/linux-5.10/rk3568_patch/kernel.patch index c72160e7cfabc4bf506ca6a1ee37a5723667efcd..75be2f1cd640e096a41985eeef4199c225a14d15 100755 --- a/linux-5.10/rk3568_patch/kernel.patch +++ b/linux-5.10/rk3568_patch/kernel.patch @@ -1,5 +1,5 @@ diff --git a/Documentation/devicetree/bindings/devfreq/event/rockchip-dfi.txt b/Documentation/devicetree/bindings/devfreq/event/rockchip-dfi.txt -index 148191b0fc15..eee2a7f7cb92 100644 +index 148191b0f..eee2a7f7c 100644 --- a/Documentation/devicetree/bindings/devfreq/event/rockchip-dfi.txt +++ b/Documentation/devicetree/bindings/devfreq/event/rockchip-dfi.txt @@ -1,8 +1,22 @@ @@ -28,7 +28,7 @@ index 148191b0fc15..eee2a7f7cb92 100644 - rockchip,pmu: phandle to the syscon managing the "pmu general register files" - clocks: phandles for clock specified in "clock-names" property diff --git a/Documentation/devicetree/bindings/display/bridge/analogix_dp.txt b/Documentation/devicetree/bindings/display/bridge/analogix_dp.txt -index 027d76c27a41..a548f404033c 100644 +index 027d76c27..a548f4040 100644 --- a/Documentation/devicetree/bindings/display/bridge/analogix_dp.txt +++ b/Documentation/devicetree/bindings/display/bridge/analogix_dp.txt @@ -21,17 +21,23 @@ Required properties for dp-controller: @@ -56,7 +56,7 @@ index 027d76c27a41..a548f404033c 100644 [1]: Documentation/devicetree/bindings/media/video-interfaces.txt ------------------------------------------------------------------------------- diff --git a/Documentation/devicetree/bindings/iio/adc/rockchip-saradc.yaml b/Documentation/devicetree/bindings/iio/adc/rockchip-saradc.yaml -index 1bb76197787b..de8e78d56dea 100644 +index 1bb761977..de8e78d56 100644 --- a/Documentation/devicetree/bindings/iio/adc/rockchip-saradc.yaml +++ b/Documentation/devicetree/bindings/iio/adc/rockchip-saradc.yaml @@ -18,6 +18,7 @@ properties: @@ -68,7 +68,7 @@ index 1bb76197787b..de8e78d56dea 100644 - rockchip,rk3328-saradc - rockchip,rv1108-saradc diff --git a/Documentation/devicetree/bindings/iommu/rockchip,iommu.txt b/Documentation/devicetree/bindings/iommu/rockchip,iommu.txt -index 6ecefea1c6f9..0b906fb630e2 100644 +index 6ecefea1c..0b906fb63 100644 --- a/Documentation/devicetree/bindings/iommu/rockchip,iommu.txt +++ b/Documentation/devicetree/bindings/iommu/rockchip,iommu.txt @@ -24,6 +24,10 @@ Optional properties: @@ -84,7 +84,7 @@ index 6ecefea1c6f9..0b906fb630e2 100644 diff --git a/Documentation/devicetree/bindings/mtd/rockchip,nand-controller.yaml b/Documentation/devicetree/bindings/mtd/rockchip,nand-controller.yaml new file mode 100644 -index 000000000000..0922536b1811 +index 000000000..0922536b1 --- /dev/null +++ b/Documentation/devicetree/bindings/mtd/rockchip,nand-controller.yaml @@ -0,0 +1,161 @@ @@ -250,7 +250,7 @@ index 000000000000..0922536b1811 + +... diff --git a/Documentation/devicetree/bindings/nvmem/rockchip-efuse.yaml b/Documentation/devicetree/bindings/nvmem/rockchip-efuse.yaml -index 104dd508565e..af1b9c31862a 100644 +index 104dd5085..af1b9c318 100644 --- a/Documentation/devicetree/bindings/nvmem/rockchip-efuse.yaml +++ b/Documentation/devicetree/bindings/nvmem/rockchip-efuse.yaml @@ -15,10 +15,13 @@ allOf: @@ -268,7 +268,7 @@ index 104dd508565e..af1b9c31862a 100644 - rockchip,rk3368-efuse - rockchip,rk3399-efuse diff --git a/Documentation/devicetree/bindings/nvmem/rockchip-otp.txt b/Documentation/devicetree/bindings/nvmem/rockchip-otp.txt -index 40f649f7c2e5..6e61345829e7 100644 +index 40f649f7c..6e6134582 100644 --- a/Documentation/devicetree/bindings/nvmem/rockchip-otp.txt +++ b/Documentation/devicetree/bindings/nvmem/rockchip-otp.txt @@ -7,6 +7,8 @@ Required properties: @@ -281,7 +281,7 @@ index 40f649f7c2e5..6e61345829e7 100644 See ../../reset/reset.txt for details. - reset-names: Should be "phy". diff --git a/Documentation/devicetree/bindings/phy/phy-rockchip-typec.txt b/Documentation/devicetree/bindings/phy/phy-rockchip-typec.txt -index 960da7fcaa9e..ac82f7b4dd58 100644 +index 960da7fca..ac82f7b4d 100644 --- a/Documentation/devicetree/bindings/phy/phy-rockchip-typec.txt +++ b/Documentation/devicetree/bindings/phy/phy-rockchip-typec.txt @@ -17,6 +17,11 @@ Required properties: @@ -341,7 +341,7 @@ index 960da7fcaa9e..ac82f7b4dd58 100644 #phy-cells = <0>; }; diff --git a/Documentation/devicetree/bindings/power/rockchip-io-domain.txt b/Documentation/devicetree/bindings/power/rockchip-io-domain.txt -index e66fd4eab71c..09824bca248e 100644 +index e66fd4eab..09824bca2 100644 --- a/Documentation/devicetree/bindings/power/rockchip-io-domain.txt +++ b/Documentation/devicetree/bindings/power/rockchip-io-domain.txt @@ -41,8 +41,10 @@ Required properties: @@ -391,7 +391,7 @@ index e66fd4eab71c..09824bca248e 100644 io-domains { diff --git a/Documentation/devicetree/bindings/soc/rockchip/power_domain.txt b/Documentation/devicetree/bindings/soc/rockchip/power_domain.txt -index 8304eceb62e4..e1920b15c86f 100644 +index 8304eceb6..e1920b15c 100644 --- a/Documentation/devicetree/bindings/soc/rockchip/power_domain.txt +++ b/Documentation/devicetree/bindings/soc/rockchip/power_domain.txt @@ -16,6 +16,7 @@ Required properties for power domain controller: @@ -419,7 +419,7 @@ index 8304eceb62e4..e1920b15c86f 100644 Example of the node using power domain: diff --git a/Documentation/devicetree/bindings/sound/rt5651.txt b/Documentation/devicetree/bindings/sound/rt5651.txt -index 56e736a1cba9..e7cd338d2b59 100644 +index 56e736a1c..e7cd338d2 100644 --- a/Documentation/devicetree/bindings/sound/rt5651.txt +++ b/Documentation/devicetree/bindings/sound/rt5651.txt @@ -38,6 +38,8 @@ Optional properties: @@ -432,7 +432,7 @@ index 56e736a1cba9..e7cd338d2b59 100644 * DMIC L1 diff --git a/Documentation/devicetree/bindings/spi/spi-rockchip.yaml b/Documentation/devicetree/bindings/spi/spi-rockchip.yaml -index 1e6cf29e6388..7f987e79337c 100644 +index 1e6cf29e6..7f987e793 100644 --- a/Documentation/devicetree/bindings/spi/spi-rockchip.yaml +++ b/Documentation/devicetree/bindings/spi/spi-rockchip.yaml @@ -33,6 +33,7 @@ properties: @@ -444,7 +444,7 @@ index 1e6cf29e6388..7f987e79337c 100644 reg: diff --git a/Documentation/devicetree/bindings/thermal/rockchip-thermal.txt b/Documentation/devicetree/bindings/thermal/rockchip-thermal.txt -index 7f94669e9ebe..346e466c2006 100644 +index 7f94669e9..346e466c2 100644 --- a/Documentation/devicetree/bindings/thermal/rockchip-thermal.txt +++ b/Documentation/devicetree/bindings/thermal/rockchip-thermal.txt @@ -9,6 +9,7 @@ Required properties: @@ -456,7 +456,7 @@ index 7f94669e9ebe..346e466c2006 100644 region. - interrupts : The interrupt number to the cpu. The interrupt specifier format diff --git a/Makefile b/Makefile -index 756479b101f8..7be6e2e07b0e 100644 +index 756479b10..7be6e2e07 100644 --- a/Makefile +++ b/Makefile @@ -493,7 +493,7 @@ LINUXINCLUDE := \ @@ -487,7 +487,7 @@ index 756479b101f8..7be6e2e07b0e 100644 # Require designated initializers for all marked structures KBUILD_CFLAGS += $(call cc-option,-Werror=designated-init) diff --git a/arch/arm/boot/dts/rk3036.dtsi b/arch/arm/boot/dts/rk3036.dtsi -index 093567022386..dc4c26a8a196 100644 +index 093567022..dc4c26a8a 100644 --- a/arch/arm/boot/dts/rk3036.dtsi +++ b/arch/arm/boot/dts/rk3036.dtsi @@ -85,6 +85,11 @@ display-subsystem { @@ -539,7 +539,7 @@ index 093567022386..dc4c26a8a196 100644 status = "disabled"; }; diff --git a/arch/arm/boot/dts/rk3066a-rayeager.dts b/arch/arm/boot/dts/rk3066a-rayeager.dts -index 309518403d86..1a9891f802f8 100644 +index 309518403..1a9891f80 100644 --- a/arch/arm/boot/dts/rk3066a-rayeager.dts +++ b/arch/arm/boot/dts/rk3066a-rayeager.dts @@ -23,6 +23,20 @@ ir: ir-receiver { @@ -564,7 +564,7 @@ index 309518403d86..1a9891f802f8 100644 compatible = "gpio-keys"; diff --git a/arch/arm/boot/dts/rk3066a.dtsi b/arch/arm/boot/dts/rk3066a.dtsi -index bbc3bff50856..49b8652da097 100644 +index bbc3bff50..49b8652da 100644 --- a/arch/arm/boot/dts/rk3066a.dtsi +++ b/arch/arm/boot/dts/rk3066a.dtsi @@ -800,22 +800,22 @@ power-domain@RK3066_PD_GPU { @@ -595,7 +595,7 @@ index bbc3bff50856..49b8652da097 100644 }; diff --git a/arch/arm/boot/dts/rk3188.dtsi b/arch/arm/boot/dts/rk3188.dtsi -index b6bde9d12c2b..c1a87fbe1c92 100644 +index b6bde9d12..c1a87fbe1 100644 --- a/arch/arm/boot/dts/rk3188.dtsi +++ b/arch/arm/boot/dts/rk3188.dtsi @@ -739,22 +739,22 @@ power-domain@RK3188_PD_GPU { @@ -626,7 +626,7 @@ index b6bde9d12c2b..c1a87fbe1c92 100644 }; diff --git a/arch/arm/boot/dts/rk322x.dtsi b/arch/arm/boot/dts/rk322x.dtsi -index 7de8b006ca13..4b2b7f027c23 100644 +index 7de8b006c..4b2b7f027 100644 --- a/arch/arm/boot/dts/rk322x.dtsi +++ b/arch/arm/boot/dts/rk322x.dtsi @@ -398,7 +398,7 @@ pwm0: pwm@110b0000 { @@ -666,7 +666,7 @@ index 7de8b006ca13..4b2b7f027c23 100644 status = "disabled"; }; diff --git a/arch/arm/boot/dts/rk3288.dtsi b/arch/arm/boot/dts/rk3288.dtsi -index 0d89ad274268..8683c9c13a6a 100644 +index 0d89ad274..8683c9c13 100644 --- a/arch/arm/boot/dts/rk3288.dtsi +++ b/arch/arm/boot/dts/rk3288.dtsi @@ -695,7 +695,7 @@ pwm0: pwm@ff680000 { @@ -706,7 +706,7 @@ index 0d89ad274268..8683c9c13a6a 100644 clocks = <&cru PCLK_RKPWM>; clock-names = "pwm"; diff --git a/arch/arm/boot/dts/rv1108.dtsi b/arch/arm/boot/dts/rv1108.dtsi -index a1a08cb9364e..b079c0008032 100644 +index a1a08cb93..b079c0008 100644 --- a/arch/arm/boot/dts/rv1108.dtsi +++ b/arch/arm/boot/dts/rv1108.dtsi @@ -217,7 +217,7 @@ pwm4: pwm@10280000 { @@ -782,7 +782,7 @@ index a1a08cb9364e..b079c0008032 100644 #pwm-cells = <3>; status = "disabled"; diff --git a/arch/arm/kernel/psci_smp.c b/arch/arm/kernel/psci_smp.c -index d4392e177484..059db0b1c1de 100644 +index d4392e177..059db0b1c 100644 --- a/arch/arm/kernel/psci_smp.c +++ b/arch/arm/kernel/psci_smp.c @@ -107,11 +107,12 @@ static int psci_cpu_kill(unsigned int cpu) @@ -800,7 +800,7 @@ index d4392e177484..059db0b1c1de 100644 const struct smp_operations psci_smp_ops __initconst = { .smp_boot_secondary = psci_boot_secondary, diff --git a/arch/arm/kernel/reboot.c b/arch/arm/kernel/reboot.c -index 0ce388f15422..6f874647b63b 100644 +index 0ce388f15..6f874647b 100644 --- a/arch/arm/kernel/reboot.c +++ b/arch/arm/kernel/reboot.c @@ -18,7 +18,6 @@ typedef void (*phys_reset_t)(unsigned long, bool); @@ -825,7 +825,7 @@ index 0ce388f15422..6f874647b63b 100644 /* Give a grace period for failure to restart of 1s */ mdelay(1000); diff --git a/arch/arm64/Kconfig.platforms b/arch/arm64/Kconfig.platforms -index 5c4ac1c9f4e0..8c0cda1d28d2 100644 +index 5c4ac1c9f..8c0cda1d2 100644 --- a/arch/arm64/Kconfig.platforms +++ b/arch/arm64/Kconfig.platforms @@ -224,11 +224,8 @@ config ARCH_RENESAS @@ -841,7 +841,7 @@ index 5c4ac1c9f4e0..8c0cda1d28d2 100644 This enables support for the ARMv8 based Rockchip chipsets, like the RK3368. diff --git a/arch/arm64/Makefile b/arch/arm64/Makefile -index 485b7dbd4f9e..06633207b0cf 100644 +index 485b7dbd4..06633207b 100644 --- a/arch/arm64/Makefile +++ b/arch/arm64/Makefile @@ -44,7 +44,7 @@ ifeq ($(CONFIG_BROKEN_GAS_INST),y) @@ -871,7 +871,7 @@ index 485b7dbd4f9e..06633207b0cf 100644 +CLEAN_DIRS += out +CLEAN_FILES += boot.img kernel.img resource.img zboot.img diff --git a/arch/arm64/boot/dts/rockchip/Makefile b/arch/arm64/boot/dts/rockchip/Makefile -index 26661c7b736b..a2386c005926 100644 +index 26661c7b7..a2386c005 100644 --- a/arch/arm64/boot/dts/rockchip/Makefile +++ b/arch/arm64/boot/dts/rockchip/Makefile @@ -44,3 +44,43 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-rockpro64.dtb @@ -920,7 +920,7 @@ index 26661c7b736b..a2386c005926 100644 +dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-nvr-demo-v12-linux-spi-nand.dtb diff --git a/arch/arm64/boot/dts/rockchip/px30-ad-d6-anx6345.dts b/arch/arm64/boot/dts/rockchip/px30-ad-d6-anx6345.dts new file mode 100755 -index 000000000000..2f258286286a +index 000000000..2f2582862 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/px30-ad-d6-anx6345.dts @@ -0,0 +1,759 @@ @@ -1685,7 +1685,7 @@ index 000000000000..2f258286286a +}; diff --git a/arch/arm64/boot/dts/rockchip/px30-ad-r35-mb-rk618-dual-lvds.dts b/arch/arm64/boot/dts/rockchip/px30-ad-r35-mb-rk618-dual-lvds.dts new file mode 100755 -index 000000000000..09fc265a8d7a +index 000000000..09fc265a8 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/px30-ad-r35-mb-rk618-dual-lvds.dts @@ -0,0 +1,147 @@ @@ -1838,7 +1838,7 @@ index 000000000000..09fc265a8d7a +}; diff --git a/arch/arm64/boot/dts/rockchip/px30-ad-r35-mb-rk618-hdmi-lvds.dts b/arch/arm64/boot/dts/rockchip/px30-ad-r35-mb-rk618-hdmi-lvds.dts new file mode 100755 -index 000000000000..d4f202189250 +index 000000000..d4f202189 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/px30-ad-r35-mb-rk618-hdmi-lvds.dts @@ -0,0 +1,241 @@ @@ -2085,7 +2085,7 @@ index 000000000000..d4f202189250 +}; diff --git a/arch/arm64/boot/dts/rockchip/px30-ad-r35-mb-rk618-hdmi.dts b/arch/arm64/boot/dts/rockchip/px30-ad-r35-mb-rk618-hdmi.dts new file mode 100755 -index 000000000000..0ea056682e57 +index 000000000..0ea056682 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/px30-ad-r35-mb-rk618-hdmi.dts @@ -0,0 +1,105 @@ @@ -2196,7 +2196,7 @@ index 000000000000..0ea056682e57 +}; diff --git a/arch/arm64/boot/dts/rockchip/px30-ad-r35-mb-rk618-lvds.dts b/arch/arm64/boot/dts/rockchip/px30-ad-r35-mb-rk618-lvds.dts new file mode 100755 -index 000000000000..8b54a9a18fcc +index 000000000..8b54a9a18 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/px30-ad-r35-mb-rk618-lvds.dts @@ -0,0 +1,146 @@ @@ -2348,7 +2348,7 @@ index 000000000000..8b54a9a18fcc +}; diff --git a/arch/arm64/boot/dts/rockchip/px30-ad-r35-mb.dtsi b/arch/arm64/boot/dts/rockchip/px30-ad-r35-mb.dtsi new file mode 100755 -index 000000000000..bbcd18959dc4 +index 000000000..bbcd18959 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/px30-ad-r35-mb.dtsi @@ -0,0 +1,823 @@ @@ -3177,7 +3177,7 @@ index 000000000000..bbcd18959dc4 +}; diff --git a/arch/arm64/boot/dts/rockchip/px30-android.dtsi b/arch/arm64/boot/dts/rockchip/px30-android.dtsi new file mode 100755 -index 000000000000..aecb6344f01f +index 000000000..aecb6344f --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/px30-android.dtsi @@ -0,0 +1,131 @@ @@ -3314,7 +3314,7 @@ index 000000000000..aecb6344f01f +}; diff --git a/arch/arm64/boot/dts/rockchip/px30-ddr4p416dd6-timing.dtsi b/arch/arm64/boot/dts/rockchip/px30-ddr4p416dd6-timing.dtsi new file mode 100755 -index 000000000000..fde5895db94a +index 000000000..fde5895db --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/px30-ddr4p416dd6-timing.dtsi @@ -0,0 +1,216 @@ @@ -3536,7 +3536,7 @@ index 000000000000..fde5895db94a +}; diff --git a/arch/arm64/boot/dts/rockchip/px30-dram-default-timing.dtsi b/arch/arm64/boot/dts/rockchip/px30-dram-default-timing.dtsi new file mode 100755 -index 000000000000..c75c5ef4ef2a +index 000000000..c75c5ef4e --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/px30-dram-default-timing.dtsi @@ -0,0 +1,294 @@ @@ -3836,7 +3836,7 @@ index 000000000000..c75c5ef4ef2a +}; diff --git a/arch/arm64/boot/dts/rockchip/px30-evb-ddr3-lvds-v10.dts b/arch/arm64/boot/dts/rockchip/px30-evb-ddr3-lvds-v10.dts new file mode 100755 -index 000000000000..eb60e71b77f3 +index 000000000..eb60e71b7 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/px30-evb-ddr3-lvds-v10.dts @@ -0,0 +1,689 @@ @@ -4531,7 +4531,7 @@ index 000000000000..eb60e71b77f3 +}; diff --git a/arch/arm64/boot/dts/rockchip/px30-evb-ddr3-v10-avb.dts b/arch/arm64/boot/dts/rockchip/px30-evb-ddr3-v10-avb.dts new file mode 100755 -index 000000000000..fca982485b16 +index 000000000..fca982485 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/px30-evb-ddr3-v10-avb.dts @@ -0,0 +1,109 @@ @@ -4646,7 +4646,7 @@ index 000000000000..fca982485b16 +}; diff --git a/arch/arm64/boot/dts/rockchip/px30-evb-ddr3-v10-linux.dts b/arch/arm64/boot/dts/rockchip/px30-evb-ddr3-v10-linux.dts new file mode 100755 -index 000000000000..ff24bdd46aea +index 000000000..ff24bdd46 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/px30-evb-ddr3-v10-linux.dts @@ -0,0 +1,939 @@ @@ -5591,7 +5591,7 @@ index 000000000000..ff24bdd46aea + diff --git a/arch/arm64/boot/dts/rockchip/px30-evb-ddr3-v10-robot-linux.dts b/arch/arm64/boot/dts/rockchip/px30-evb-ddr3-v10-robot-linux.dts new file mode 100755 -index 000000000000..317b53b2a1eb +index 000000000..317b53b2a --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/px30-evb-ddr3-v10-robot-linux.dts @@ -0,0 +1,627 @@ @@ -6224,7 +6224,7 @@ index 000000000000..317b53b2a1eb +/* DON'T PUT ANYTHING BELOW HERE. PUT IT ABOVE PINCTRL */ diff --git a/arch/arm64/boot/dts/rockchip/px30-evb-ddr3-v10-robot-no-gpu-linux.dts b/arch/arm64/boot/dts/rockchip/px30-evb-ddr3-v10-robot-no-gpu-linux.dts new file mode 100755 -index 000000000000..81f44c36686c +index 000000000..81f44c366 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/px30-evb-ddr3-v10-robot-no-gpu-linux.dts @@ -0,0 +1,627 @@ @@ -6857,7 +6857,7 @@ index 000000000000..81f44c36686c +/* DON'T PUT ANYTHING BELOW HERE. PUT IT ABOVE PINCTRL */ diff --git a/arch/arm64/boot/dts/rockchip/px30-evb-ddr3-v10.dts b/arch/arm64/boot/dts/rockchip/px30-evb-ddr3-v10.dts new file mode 100755 -index 000000000000..b814812edbe9 +index 000000000..b814812ed --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/px30-evb-ddr3-v10.dts @@ -0,0 +1,127 @@ @@ -6990,7 +6990,7 @@ index 000000000000..b814812edbe9 +}; diff --git a/arch/arm64/boot/dts/rockchip/px30-evb-ddr3-v10.dtsi b/arch/arm64/boot/dts/rockchip/px30-evb-ddr3-v10.dtsi new file mode 100755 -index 000000000000..3d8e81009bef +index 000000000..3d8e81009 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/px30-evb-ddr3-v10.dtsi @@ -0,0 +1,815 @@ @@ -7811,7 +7811,7 @@ index 000000000000..3d8e81009bef +}; diff --git a/arch/arm64/boot/dts/rockchip/px30-evb-ddr3-v11-avb.dts b/arch/arm64/boot/dts/rockchip/px30-evb-ddr3-v11-avb.dts new file mode 100755 -index 000000000000..f2659a7f524e +index 000000000..f2659a7f5 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/px30-evb-ddr3-v11-avb.dts @@ -0,0 +1,276 @@ @@ -8093,7 +8093,7 @@ index 000000000000..f2659a7f524e +}; diff --git a/arch/arm64/boot/dts/rockchip/px30-evb-ddr3-v11-linux.dts b/arch/arm64/boot/dts/rockchip/px30-evb-ddr3-v11-linux.dts new file mode 100755 -index 000000000000..54a4c19d11b3 +index 000000000..54a4c19d1 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/px30-evb-ddr3-v11-linux.dts @@ -0,0 +1,296 @@ @@ -8395,7 +8395,7 @@ index 000000000000..54a4c19d11b3 +}; diff --git a/arch/arm64/boot/dts/rockchip/px30-evb-ddr3-v11.dts b/arch/arm64/boot/dts/rockchip/px30-evb-ddr3-v11.dts new file mode 100755 -index 000000000000..2e59a09d3c5c +index 000000000..2e59a09d3 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/px30-evb-ddr3-v11.dts @@ -0,0 +1,293 @@ @@ -8694,7 +8694,7 @@ index 000000000000..2e59a09d3c5c +}; diff --git a/arch/arm64/boot/dts/rockchip/px30-evb-ddr4-v10.dts b/arch/arm64/boot/dts/rockchip/px30-evb-ddr4-v10.dts new file mode 100755 -index 000000000000..7bfe640d32de +index 000000000..7bfe640d3 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/px30-evb-ddr4-v10.dts @@ -0,0 +1,853 @@ @@ -9553,7 +9553,7 @@ index 000000000000..7bfe640d32de + diff --git a/arch/arm64/boot/dts/rockchip/px30-evb-ext-rk618-avb.dts b/arch/arm64/boot/dts/rockchip/px30-evb-ext-rk618-avb.dts new file mode 100755 -index 000000000000..ea44da5066af +index 000000000..ea44da506 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/px30-evb-ext-rk618-avb.dts @@ -0,0 +1,11 @@ @@ -9570,7 +9570,7 @@ index 000000000000..ea44da5066af +}; diff --git a/arch/arm64/boot/dts/rockchip/px30-evb-ext-rk618.dts b/arch/arm64/boot/dts/rockchip/px30-evb-ext-rk618.dts new file mode 100755 -index 000000000000..69f44b4d115c +index 000000000..69f44b4d1 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/px30-evb-ext-rk618.dts @@ -0,0 +1,33 @@ @@ -9609,7 +9609,7 @@ index 000000000000..69f44b4d115c +}; diff --git a/arch/arm64/boot/dts/rockchip/px30-evb-ext-rk618.dtsi b/arch/arm64/boot/dts/rockchip/px30-evb-ext-rk618.dtsi new file mode 100755 -index 000000000000..0eac63181407 +index 000000000..0eac63181 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/px30-evb-ext-rk618.dtsi @@ -0,0 +1,202 @@ @@ -9817,7 +9817,7 @@ index 000000000000..0eac63181407 +}; diff --git a/arch/arm64/boot/dts/rockchip/px30-robot-no-gpu.dtsi b/arch/arm64/boot/dts/rockchip/px30-robot-no-gpu.dtsi new file mode 100755 -index 000000000000..e3f4274b2309 +index 000000000..e3f4274b2 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/px30-robot-no-gpu.dtsi @@ -0,0 +1,57 @@ @@ -9880,7 +9880,7 @@ index 000000000000..e3f4274b2309 +}; diff --git a/arch/arm64/boot/dts/rockchip/px30-robot.dtsi b/arch/arm64/boot/dts/rockchip/px30-robot.dtsi new file mode 100755 -index 000000000000..f48a753e6453 +index 000000000..f48a753e6 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/px30-robot.dtsi @@ -0,0 +1,93 @@ @@ -9979,7 +9979,7 @@ index 000000000000..f48a753e6453 +}; diff --git a/arch/arm64/boot/dts/rockchip/px30-z7-a0-rk618-dsi.dts b/arch/arm64/boot/dts/rockchip/px30-z7-a0-rk618-dsi.dts new file mode 100755 -index 000000000000..1657151c988f +index 000000000..1657151c9 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/px30-z7-a0-rk618-dsi.dts @@ -0,0 +1,875 @@ @@ -10859,7 +10859,7 @@ index 000000000000..1657151c988f + }; +}; diff --git a/arch/arm64/boot/dts/rockchip/px30.dtsi b/arch/arm64/boot/dts/rockchip/px30.dtsi -index 0d6761074b11..237c0d9af325 100644 +index 0d6761074..237c0d9af 100644 --- a/arch/arm64/boot/dts/rockchip/px30.dtsi +++ b/arch/arm64/boot/dts/rockchip/px30.dtsi @@ -25,6 +25,9 @@ aliases { @@ -11014,7 +11014,7 @@ index 0d6761074b11..237c0d9af325 100644 status = "disabled"; diff --git a/arch/arm64/boot/dts/rockchip/rk1808-dram-default-timing.dtsi b/arch/arm64/boot/dts/rockchip/rk1808-dram-default-timing.dtsi new file mode 100755 -index 000000000000..0fa79e2f05c0 +index 000000000..0fa79e2f0 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk1808-dram-default-timing.dtsi @@ -0,0 +1,302 @@ @@ -11322,7 +11322,7 @@ index 000000000000..0fa79e2f05c0 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk1808-evb-v10.dts b/arch/arm64/boot/dts/rockchip/rk1808-evb-v10.dts new file mode 100755 -index 000000000000..a09824816188 +index 000000000..a09824816 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk1808-evb-v10.dts @@ -0,0 +1,305 @@ @@ -11633,7 +11633,7 @@ index 000000000000..a09824816188 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk1808-evb-x4-second.dts b/arch/arm64/boot/dts/rockchip/rk1808-evb-x4-second.dts new file mode 100755 -index 000000000000..413d4f6fa29d +index 000000000..413d4f6fa --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk1808-evb-x4-second.dts @@ -0,0 +1,272 @@ @@ -11911,7 +11911,7 @@ index 000000000000..413d4f6fa29d +}; diff --git a/arch/arm64/boot/dts/rockchip/rk1808-evb-x4.dts b/arch/arm64/boot/dts/rockchip/rk1808-evb-x4.dts new file mode 100755 -index 000000000000..17993d1ff44a +index 000000000..17993d1ff --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk1808-evb-x4.dts @@ -0,0 +1,271 @@ @@ -12188,7 +12188,7 @@ index 000000000000..17993d1ff44a +}; diff --git a/arch/arm64/boot/dts/rockchip/rk1808-evb.dtsi b/arch/arm64/boot/dts/rockchip/rk1808-evb.dtsi new file mode 100755 -index 000000000000..3b9c88660701 +index 000000000..3b9c88660 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk1808-evb.dtsi @@ -0,0 +1,717 @@ @@ -12911,7 +12911,7 @@ index 000000000000..3b9c88660701 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk1808-fpga.dts b/arch/arm64/boot/dts/rockchip/rk1808-fpga.dts new file mode 100755 -index 000000000000..d021918cacd1 +index 000000000..d021918ca --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk1808-fpga.dts @@ -0,0 +1,58 @@ @@ -12975,7 +12975,7 @@ index 000000000000..d021918cacd1 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk1808.dtsi b/arch/arm64/boot/dts/rockchip/rk1808.dtsi new file mode 100755 -index 000000000000..3469abac4f34 +index 000000000..3469abac4 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk1808.dtsi @@ -0,0 +1,3040 @@ @@ -16021,7 +16021,7 @@ index 000000000000..3469abac4f34 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk1808k.dtsi b/arch/arm64/boot/dts/rockchip/rk1808k.dtsi new file mode 100755 -index 000000000000..78bd92e4c2c6 +index 000000000..78bd92e4c --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk1808k.dtsi @@ -0,0 +1,51 @@ @@ -16078,7 +16078,7 @@ index 000000000000..78bd92e4c2c6 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3308-ai-va-v10.dts b/arch/arm64/boot/dts/rockchip/rk3308-ai-va-v10.dts new file mode 100755 -index 000000000000..c77d2e963266 +index 000000000..c77d2e963 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3308-ai-va-v10.dts @@ -0,0 +1,681 @@ @@ -16765,7 +16765,7 @@ index 000000000000..c77d2e963266 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3308-evb-amic-v10.dts b/arch/arm64/boot/dts/rockchip/rk3308-evb-amic-v10.dts new file mode 100755 -index 000000000000..557daa856132 +index 000000000..557daa856 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3308-evb-amic-v10.dts @@ -0,0 +1,55 @@ @@ -16826,7 +16826,7 @@ index 000000000000..557daa856132 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3308-evb-amic-v11.dts b/arch/arm64/boot/dts/rockchip/rk3308-evb-amic-v11.dts new file mode 100755 -index 000000000000..90a29a903545 +index 000000000..90a29a903 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3308-evb-amic-v11.dts @@ -0,0 +1,56 @@ @@ -16888,7 +16888,7 @@ index 000000000000..90a29a903545 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3308-evb-dmic-i2s-v10.dts b/arch/arm64/boot/dts/rockchip/rk3308-evb-dmic-i2s-v10.dts new file mode 100755 -index 000000000000..88c1e9c6c8ac +index 000000000..88c1e9c6c --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3308-evb-dmic-i2s-v10.dts @@ -0,0 +1,101 @@ @@ -16995,7 +16995,7 @@ index 000000000000..88c1e9c6c8ac +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3308-evb-dmic-i2s-v11.dts b/arch/arm64/boot/dts/rockchip/rk3308-evb-dmic-i2s-v11.dts new file mode 100755 -index 000000000000..364f74a40d9d +index 000000000..364f74a40 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3308-evb-dmic-i2s-v11.dts @@ -0,0 +1,77 @@ @@ -17078,7 +17078,7 @@ index 000000000000..364f74a40d9d +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3308-evb-dmic-pdm-v10.dts b/arch/arm64/boot/dts/rockchip/rk3308-evb-dmic-pdm-v10.dts new file mode 100755 -index 000000000000..e2891ce1092c +index 000000000..e2891ce10 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3308-evb-dmic-pdm-v10.dts @@ -0,0 +1,88 @@ @@ -17172,7 +17172,7 @@ index 000000000000..e2891ce1092c +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3308-evb-dmic-pdm-v11.dts b/arch/arm64/boot/dts/rockchip/rk3308-evb-dmic-pdm-v11.dts new file mode 100755 -index 000000000000..c4a7178f1dc8 +index 000000000..c4a7178f1 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3308-evb-dmic-pdm-v11.dts @@ -0,0 +1,92 @@ @@ -17270,7 +17270,7 @@ index 000000000000..c4a7178f1dc8 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3308-evb-ext-v10.dtsi b/arch/arm64/boot/dts/rockchip/rk3308-evb-ext-v10.dtsi new file mode 100755 -index 000000000000..1c0e66384c16 +index 000000000..1c0e66384 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3308-evb-ext-v10.dtsi @@ -0,0 +1,235 @@ @@ -17511,7 +17511,7 @@ index 000000000000..1c0e66384c16 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3308-evb-v10.dtsi b/arch/arm64/boot/dts/rockchip/rk3308-evb-v10.dtsi new file mode 100755 -index 000000000000..3d052d0da477 +index 000000000..3d052d0da --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3308-evb-v10.dtsi @@ -0,0 +1,780 @@ @@ -18297,7 +18297,7 @@ index 000000000000..3d052d0da477 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3308-evb-v11.dtsi b/arch/arm64/boot/dts/rockchip/rk3308-evb-v11.dtsi new file mode 100755 -index 000000000000..7b692a810333 +index 000000000..7b692a810 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3308-evb-v11.dtsi @@ -0,0 +1,835 @@ @@ -19138,7 +19138,7 @@ index 000000000000..7b692a810333 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3308-fpga.dts b/arch/arm64/boot/dts/rockchip/rk3308-fpga.dts new file mode 100755 -index 000000000000..225aca323f4d +index 000000000..225aca323 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3308-fpga.dts @@ -0,0 +1,51 @@ @@ -19194,7 +19194,7 @@ index 000000000000..225aca323f4d + status = "okay"; +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3308-roc-cc.dts b/arch/arm64/boot/dts/rockchip/rk3308-roc-cc.dts -index bce6f8b7db43..7a96be10eaf0 100644 +index bce6f8b7d..7a96be10e 100644 --- a/arch/arm64/boot/dts/rockchip/rk3308-roc-cc.dts +++ b/arch/arm64/boot/dts/rockchip/rk3308-roc-cc.dts @@ -78,8 +78,8 @@ vcc_sdmmc: vcc-sdmmc { @@ -19210,7 +19210,7 @@ index bce6f8b7db43..7a96be10eaf0 100644 diff --git a/arch/arm64/boot/dts/rockchip/rk3308-voice-module-board-v10.dts b/arch/arm64/boot/dts/rockchip/rk3308-voice-module-board-v10.dts new file mode 100755 -index 000000000000..2586d9905072 +index 000000000..2586d9905 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3308-voice-module-board-v10.dts @@ -0,0 +1,19 @@ @@ -19234,7 +19234,7 @@ index 000000000000..2586d9905072 + console-size = <0xc0000>; +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3308.dtsi b/arch/arm64/boot/dts/rockchip/rk3308.dtsi -index 2560b98771ca..cc86c0880cec 100644 +index 2560b9877..cc86c0880 100644 --- a/arch/arm64/boot/dts/rockchip/rk3308.dtsi +++ b/arch/arm64/boot/dts/rockchip/rk3308.dtsi @@ -10,6 +10,7 @@ @@ -19377,7 +19377,7 @@ index 2560b98771ca..cc86c0880cec 100644 status = "disabled"; diff --git a/arch/arm64/boot/dts/rockchip/rk3308b-evb-amic-v10.dts b/arch/arm64/boot/dts/rockchip/rk3308b-evb-amic-v10.dts new file mode 100755 -index 000000000000..d5e2d9ebd4aa +index 000000000..d5e2d9ebd --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3308b-evb-amic-v10.dts @@ -0,0 +1,62 @@ @@ -19445,7 +19445,7 @@ index 000000000000..d5e2d9ebd4aa +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3308b-evb-ext-v10.dtsi b/arch/arm64/boot/dts/rockchip/rk3308b-evb-ext-v10.dtsi new file mode 100755 -index 000000000000..e2414b67f0d1 +index 000000000..e2414b67f --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3308b-evb-ext-v10.dtsi @@ -0,0 +1,124 @@ @@ -19575,7 +19575,7 @@ index 000000000000..e2414b67f0d1 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3308b-evb-v10.dtsi b/arch/arm64/boot/dts/rockchip/rk3308b-evb-v10.dtsi new file mode 100755 -index 000000000000..902ae3544235 +index 000000000..902ae3544 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3308b-evb-v10.dtsi @@ -0,0 +1,784 @@ @@ -20365,7 +20365,7 @@ index 000000000000..902ae3544235 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3308k.dtsi b/arch/arm64/boot/dts/rockchip/rk3308k.dtsi new file mode 100755 -index 000000000000..ffd53fd158c5 +index 000000000..ffd53fd15 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3308k.dtsi @@ -0,0 +1,46 @@ @@ -20417,7 +20417,7 @@ index 000000000000..ffd53fd158c5 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3326-863-cif-sensor.dtsi b/arch/arm64/boot/dts/rockchip/rk3326-863-cif-sensor.dtsi new file mode 100755 -index 000000000000..c01f4d014a1b +index 000000000..c01f4d014 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3326-863-cif-sensor.dtsi @@ -0,0 +1,54 @@ @@ -20477,7 +20477,7 @@ index 000000000000..c01f4d014a1b + diff --git a/arch/arm64/boot/dts/rockchip/rk3326-863-lp3-v10-avb.dts b/arch/arm64/boot/dts/rockchip/rk3326-863-lp3-v10-avb.dts new file mode 100755 -index 000000000000..174d05e37ccb +index 000000000..174d05e37 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3326-863-lp3-v10-avb.dts @@ -0,0 +1,112 @@ @@ -20595,7 +20595,7 @@ index 000000000000..174d05e37ccb +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3326-863-lp3-v10-rkisp1.dts b/arch/arm64/boot/dts/rockchip/rk3326-863-lp3-v10-rkisp1.dts new file mode 100755 -index 000000000000..d80dad694c1d +index 000000000..d80dad694 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3326-863-lp3-v10-rkisp1.dts @@ -0,0 +1,103 @@ @@ -20704,7 +20704,7 @@ index 000000000000..d80dad694c1d +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3326-863-lp3-v10.dts b/arch/arm64/boot/dts/rockchip/rk3326-863-lp3-v10.dts new file mode 100755 -index 000000000000..7a399b3356ac +index 000000000..7a399b335 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3326-863-lp3-v10.dts @@ -0,0 +1,42 @@ @@ -20752,7 +20752,7 @@ index 000000000000..7a399b3356ac +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3326-863-lp3-v10.dtsi b/arch/arm64/boot/dts/rockchip/rk3326-863-lp3-v10.dtsi new file mode 100755 -index 000000000000..6e6e3be2f104 +index 000000000..6e6e3be2f --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3326-863-lp3-v10.dtsi @@ -0,0 +1,833 @@ @@ -21591,7 +21591,7 @@ index 000000000000..6e6e3be2f104 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3326-86v-v10.dts b/arch/arm64/boot/dts/rockchip/rk3326-86v-v10.dts new file mode 100755 -index 000000000000..86d048c0d731 +index 000000000..86d048c0d --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3326-86v-v10.dts @@ -0,0 +1,840 @@ @@ -22437,7 +22437,7 @@ index 000000000000..86d048c0d731 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3326-evb-ai-va-v10.dts b/arch/arm64/boot/dts/rockchip/rk3326-evb-ai-va-v10.dts new file mode 100755 -index 000000000000..02308ebae99e +index 000000000..02308ebae --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3326-evb-ai-va-v10.dts @@ -0,0 +1,1308 @@ @@ -23751,7 +23751,7 @@ index 000000000000..02308ebae99e +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3326-evb-ai-va-v11-i2s-dmic.dts b/arch/arm64/boot/dts/rockchip/rk3326-evb-ai-va-v11-i2s-dmic.dts new file mode 100755 -index 000000000000..0af03d1ec2a8 +index 000000000..0af03d1ec --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3326-evb-ai-va-v11-i2s-dmic.dts @@ -0,0 +1,1330 @@ @@ -25087,7 +25087,7 @@ index 000000000000..0af03d1ec2a8 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3326-evb-ai-va-v11.dts b/arch/arm64/boot/dts/rockchip/rk3326-evb-ai-va-v11.dts new file mode 100755 -index 000000000000..fa8b7cff619f +index 000000000..fa8b7cff6 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3326-evb-ai-va-v11.dts @@ -0,0 +1,1317 @@ @@ -26410,7 +26410,7 @@ index 000000000000..fa8b7cff619f +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3326-evb-ai-va-v12.dts b/arch/arm64/boot/dts/rockchip/rk3326-evb-ai-va-v12.dts new file mode 100755 -index 000000000000..9669993499e0 +index 000000000..966999349 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3326-evb-ai-va-v12.dts @@ -0,0 +1,1317 @@ @@ -27733,7 +27733,7 @@ index 000000000000..9669993499e0 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3326-evb-lp3-v10-avb.dts b/arch/arm64/boot/dts/rockchip/rk3326-evb-lp3-v10-avb.dts new file mode 100755 -index 000000000000..4c12a79f814b +index 000000000..4c12a79f8 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3326-evb-lp3-v10-avb.dts @@ -0,0 +1,91 @@ @@ -27830,7 +27830,7 @@ index 000000000000..4c12a79f814b +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3326-evb-lp3-v10-linux.dts b/arch/arm64/boot/dts/rockchip/rk3326-evb-lp3-v10-linux.dts new file mode 100755 -index 000000000000..67c131c9618a +index 000000000..67c131c96 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3326-evb-lp3-v10-linux.dts @@ -0,0 +1,1024 @@ @@ -28860,7 +28860,7 @@ index 000000000000..67c131c9618a +/* DON'T PUT ANYTHING BELOW HERE. PUT IT ABOVE PINCTRL */ diff --git a/arch/arm64/boot/dts/rockchip/rk3326-evb-lp3-v10-robot-linux.dts b/arch/arm64/boot/dts/rockchip/rk3326-evb-lp3-v10-robot-linux.dts new file mode 100755 -index 000000000000..6966806150f5 +index 000000000..696680615 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3326-evb-lp3-v10-robot-linux.dts @@ -0,0 +1,748 @@ @@ -29614,7 +29614,7 @@ index 000000000000..6966806150f5 +/* DON'T PUT ANYTHING BELOW HERE. PUT IT ABOVE PINCTRL */ diff --git a/arch/arm64/boot/dts/rockchip/rk3326-evb-lp3-v10-robot-no-gpu-linux.dts b/arch/arm64/boot/dts/rockchip/rk3326-evb-lp3-v10-robot-no-gpu-linux.dts new file mode 100755 -index 000000000000..b3b9efec92e4 +index 000000000..b3b9efec9 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3326-evb-lp3-v10-robot-no-gpu-linux.dts @@ -0,0 +1,728 @@ @@ -30348,7 +30348,7 @@ index 000000000000..b3b9efec92e4 +/* DON'T PUT ANYTHING BELOW HERE. PUT IT ABOVE PINCTRL */ diff --git a/arch/arm64/boot/dts/rockchip/rk3326-evb-lp3-v10.dts b/arch/arm64/boot/dts/rockchip/rk3326-evb-lp3-v10.dts new file mode 100755 -index 000000000000..58bbfdafb489 +index 000000000..58bbfdafb --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3326-evb-lp3-v10.dts @@ -0,0 +1,37 @@ @@ -30391,7 +30391,7 @@ index 000000000000..58bbfdafb489 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3326-evb-lp3-v10.dtsi b/arch/arm64/boot/dts/rockchip/rk3326-evb-lp3-v10.dtsi new file mode 100755 -index 000000000000..940c05df8304 +index 000000000..940c05df8 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3326-evb-lp3-v10.dtsi @@ -0,0 +1,887 @@ @@ -31284,7 +31284,7 @@ index 000000000000..940c05df8304 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3326-evb-lp3-v11-avb.dts b/arch/arm64/boot/dts/rockchip/rk3326-evb-lp3-v11-avb.dts new file mode 100755 -index 000000000000..2f0c3fc3a38d +index 000000000..2f0c3fc3a --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3326-evb-lp3-v11-avb.dts @@ -0,0 +1,351 @@ @@ -31641,7 +31641,7 @@ index 000000000000..2f0c3fc3a38d +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3326-evb-lp3-v11.dts b/arch/arm64/boot/dts/rockchip/rk3326-evb-lp3-v11.dts new file mode 100755 -index 000000000000..139efd9d1332 +index 000000000..139efd9d1 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3326-evb-lp3-v11.dts @@ -0,0 +1,297 @@ @@ -31944,7 +31944,7 @@ index 000000000000..139efd9d1332 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3326-linux.dtsi b/arch/arm64/boot/dts/rockchip/rk3326-linux.dtsi new file mode 100755 -index 000000000000..a386cd291cf3 +index 000000000..a386cd291 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3326-linux.dtsi @@ -0,0 +1,120 @@ @@ -32070,7 +32070,7 @@ index 000000000000..a386cd291cf3 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3328-android.dtsi b/arch/arm64/boot/dts/rockchip/rk3328-android.dtsi new file mode 100755 -index 000000000000..809b6501b78f +index 000000000..809b6501b --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3328-android.dtsi @@ -0,0 +1,88 @@ @@ -32164,7 +32164,7 @@ index 000000000000..809b6501b78f +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3328-box-liantong-avb.dts b/arch/arm64/boot/dts/rockchip/rk3328-box-liantong-avb.dts new file mode 100755 -index 000000000000..ee04d8988fbb +index 000000000..ee04d8988 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3328-box-liantong-avb.dts @@ -0,0 +1,13 @@ @@ -32183,7 +32183,7 @@ index 000000000000..ee04d8988fbb +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3328-box-liantong.dts b/arch/arm64/boot/dts/rockchip/rk3328-box-liantong.dts new file mode 100755 -index 000000000000..dcff87208d39 +index 000000000..dcff87208 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3328-box-liantong.dts @@ -0,0 +1,34 @@ @@ -32223,7 +32223,7 @@ index 000000000000..dcff87208d39 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3328-box-liantong.dtsi b/arch/arm64/boot/dts/rockchip/rk3328-box-liantong.dtsi new file mode 100755 -index 000000000000..ad7ef6be49fa +index 000000000..ad7ef6be4 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3328-box-liantong.dtsi @@ -0,0 +1,673 @@ @@ -32902,7 +32902,7 @@ index 000000000000..ad7ef6be49fa +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3328-box-plus-dram-timing.dtsi b/arch/arm64/boot/dts/rockchip/rk3328-box-plus-dram-timing.dtsi new file mode 100755 -index 000000000000..0ea270539a23 +index 000000000..0ea270539 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3328-box-plus-dram-timing.dtsi @@ -0,0 +1,221 @@ @@ -33129,7 +33129,7 @@ index 000000000000..0ea270539a23 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3328-dram-2layer-timing.dtsi b/arch/arm64/boot/dts/rockchip/rk3328-dram-2layer-timing.dtsi new file mode 100755 -index 000000000000..940024920b5d +index 000000000..940024920 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3328-dram-2layer-timing.dtsi @@ -0,0 +1,257 @@ @@ -33392,7 +33392,7 @@ index 000000000000..940024920b5d +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3328-dram-default-timing.dtsi b/arch/arm64/boot/dts/rockchip/rk3328-dram-default-timing.dtsi new file mode 100755 -index 000000000000..a3f5ff4bdc47 +index 000000000..a3f5ff4bd --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3328-dram-default-timing.dtsi @@ -0,0 +1,311 @@ @@ -33709,7 +33709,7 @@ index 000000000000..a3f5ff4bdc47 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3328-evb-android-avb.dts b/arch/arm64/boot/dts/rockchip/rk3328-evb-android-avb.dts new file mode 100755 -index 000000000000..0d72e05e2d59 +index 000000000..0d72e05e2 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3328-evb-android-avb.dts @@ -0,0 +1,13 @@ @@ -33728,7 +33728,7 @@ index 000000000000..0d72e05e2d59 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3328-evb-android.dts b/arch/arm64/boot/dts/rockchip/rk3328-evb-android.dts new file mode 100755 -index 000000000000..6d50444a5a1d +index 000000000..6d50444a5 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3328-evb-android.dts @@ -0,0 +1,34 @@ @@ -33768,7 +33768,7 @@ index 000000000000..6d50444a5a1d +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3328-evb-android.dtsi b/arch/arm64/boot/dts/rockchip/rk3328-evb-android.dtsi new file mode 100755 -index 000000000000..e050047420a6 +index 000000000..e05004742 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3328-evb-android.dtsi @@ -0,0 +1,715 @@ @@ -34488,7 +34488,7 @@ index 000000000000..e050047420a6 + status = "okay"; +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3328-evb.dts b/arch/arm64/boot/dts/rockchip/rk3328-evb.dts -index a48767931af6..82d2f01a8be6 100644 +index a48767931..82d2f01a8 100644 --- a/arch/arm64/boot/dts/rockchip/rk3328-evb.dts +++ b/arch/arm64/boot/dts/rockchip/rk3328-evb.dts @@ -37,6 +37,18 @@ sdio_pwrseq: sdio-pwrseq { @@ -34535,7 +34535,7 @@ index a48767931af6..82d2f01a8be6 100644 #gpio-cells = <2>; pinctrl-names = "default"; diff --git a/arch/arm64/boot/dts/rockchip/rk3328-nanopi-r2s.dts b/arch/arm64/boot/dts/rockchip/rk3328-nanopi-r2s.dts -index 83a0bdbe00d6..1eecad724f04 100644 +index 83a0bdbe0..1eecad724 100644 --- a/arch/arm64/boot/dts/rockchip/rk3328-nanopi-r2s.dts +++ b/arch/arm64/boot/dts/rockchip/rk3328-nanopi-r2s.dts @@ -71,8 +71,8 @@ vcc_io_sdio: sdmmcio-regulator { @@ -34550,7 +34550,7 @@ index 83a0bdbe00d6..1eecad724f04 100644 }; diff --git a/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts b/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts -index daa9a0c601a9..b76282e704de 100644 +index daa9a0c60..b76282e70 100644 --- a/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts +++ b/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts @@ -45,8 +45,8 @@ vcc_sd: sdmmc-regulator { @@ -34566,7 +34566,7 @@ index daa9a0c601a9..b76282e704de 100644 regulator-min-microvolt = <1800000>; diff --git a/arch/arm64/boot/dts/rockchip/rk3328-rock64-android-avb.dts b/arch/arm64/boot/dts/rockchip/rk3328-rock64-android-avb.dts new file mode 100755 -index 000000000000..adc1dd7cd4da +index 000000000..adc1dd7cd --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3328-rock64-android-avb.dts @@ -0,0 +1,32 @@ @@ -34604,7 +34604,7 @@ index 000000000000..adc1dd7cd4da +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3328-rock64-android.dts b/arch/arm64/boot/dts/rockchip/rk3328-rock64-android.dts new file mode 100755 -index 000000000000..66e83916c728 +index 000000000..66e83916c --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3328-rock64-android.dts @@ -0,0 +1,34 @@ @@ -34644,7 +34644,7 @@ index 000000000000..66e83916c728 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3328-rock64-android.dtsi b/arch/arm64/boot/dts/rockchip/rk3328-rock64-android.dtsi new file mode 100755 -index 000000000000..3dad4f4fafcb +index 000000000..3dad4f4fa --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3328-rock64-android.dtsi @@ -0,0 +1,612 @@ @@ -35261,7 +35261,7 @@ index 000000000000..3dad4f4fafcb + status = "okay"; +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3328-rock64.dts b/arch/arm64/boot/dts/rockchip/rk3328-rock64.dts -index 95ab6928cfd4..4c33c21eee8d 100644 +index 95ab6928c..4c33c21ee 100644 --- a/arch/arm64/boot/dts/rockchip/rk3328-rock64.dts +++ b/arch/arm64/boot/dts/rockchip/rk3328-rock64.dts @@ -21,6 +21,13 @@ gmac_clkin: external-gmac-clock { @@ -35300,7 +35300,7 @@ index 95ab6928cfd4..4c33c21eee8d 100644 status = "okay"; }; diff --git a/arch/arm64/boot/dts/rockchip/rk3328.dtsi b/arch/arm64/boot/dts/rockchip/rk3328.dtsi -index e546c9d1d646..03f8b2fe42c3 100644 +index e546c9d1d..03f8b2fe4 100644 --- a/arch/arm64/boot/dts/rockchip/rk3328.dtsi +++ b/arch/arm64/boot/dts/rockchip/rk3328.dtsi @@ -318,13 +318,13 @@ power: power-controller { @@ -35405,7 +35405,7 @@ index e546c9d1d646..03f8b2fe42c3 100644 #interrupt-cells = <3>; diff --git a/arch/arm64/boot/dts/rockchip/rk3368-808-evb.dts b/arch/arm64/boot/dts/rockchip/rk3368-808-evb.dts new file mode 100755 -index 000000000000..7e803a8ed30c +index 000000000..7e803a8ed --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3368-808-evb.dts @@ -0,0 +1,189 @@ @@ -35600,7 +35600,7 @@ index 000000000000..7e803a8ed30c +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3368-808.dtsi b/arch/arm64/boot/dts/rockchip/rk3368-808.dtsi new file mode 100755 -index 000000000000..fdea0c73932e +index 000000000..fdea0c739 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3368-808.dtsi @@ -0,0 +1,982 @@ @@ -36588,7 +36588,7 @@ index 000000000000..fdea0c73932e + diff --git a/arch/arm64/boot/dts/rockchip/rk3368-android.dtsi b/arch/arm64/boot/dts/rockchip/rk3368-android.dtsi new file mode 100755 -index 000000000000..a3e0bbaaf7c5 +index 000000000..a3e0bbaaf --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3368-android.dtsi @@ -0,0 +1,357 @@ @@ -36951,7 +36951,7 @@ index 000000000000..a3e0bbaaf7c5 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3368-cif-sensor.dtsi b/arch/arm64/boot/dts/rockchip/rk3368-cif-sensor.dtsi new file mode 100755 -index 000000000000..7d2aac22c020 +index 000000000..7d2aac22c --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3368-cif-sensor.dtsi @@ -0,0 +1,35 @@ @@ -36992,7 +36992,7 @@ index 000000000000..7d2aac22c020 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3368-dram-default-timing.dtsi b/arch/arm64/boot/dts/rockchip/rk3368-dram-default-timing.dtsi new file mode 100755 -index 000000000000..10bfbebda989 +index 000000000..10bfbebda --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3368-dram-default-timing.dtsi @@ -0,0 +1,66 @@ @@ -37064,7 +37064,7 @@ index 000000000000..10bfbebda989 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3368-p9-avb.dts b/arch/arm64/boot/dts/rockchip/rk3368-p9-avb.dts new file mode 100755 -index 000000000000..6a971781032a +index 000000000..6a9717810 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3368-p9-avb.dts @@ -0,0 +1,35 @@ @@ -37105,7 +37105,7 @@ index 000000000000..6a971781032a +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3368-p9.dts b/arch/arm64/boot/dts/rockchip/rk3368-p9.dts new file mode 100755 -index 000000000000..29658be08696 +index 000000000..29658be08 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3368-p9.dts @@ -0,0 +1,34 @@ @@ -37145,7 +37145,7 @@ index 000000000000..29658be08696 + diff --git a/arch/arm64/boot/dts/rockchip/rk3368-p9.dtsi b/arch/arm64/boot/dts/rockchip/rk3368-p9.dtsi new file mode 100755 -index 000000000000..7eeb9db4f13b +index 000000000..7eeb9db4f --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3368-p9.dtsi @@ -0,0 +1,841 @@ @@ -37992,7 +37992,7 @@ index 000000000000..7eeb9db4f13b + diff --git a/arch/arm64/boot/dts/rockchip/rk3368-px5-evb-android.dts b/arch/arm64/boot/dts/rockchip/rk3368-px5-evb-android.dts new file mode 100755 -index 000000000000..1d50d3fa549f +index 000000000..1d50d3fa5 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3368-px5-evb-android.dts @@ -0,0 +1,993 @@ @@ -38991,7 +38991,7 @@ index 000000000000..1d50d3fa549f +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3368-r88-dcdc.dts b/arch/arm64/boot/dts/rockchip/rk3368-r88-dcdc.dts new file mode 100755 -index 000000000000..4a755f1207c1 +index 000000000..4a755f120 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3368-r88-dcdc.dts @@ -0,0 +1,676 @@ @@ -39673,7 +39673,7 @@ index 000000000000..4a755f1207c1 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3368-sheep-lvds.dts b/arch/arm64/boot/dts/rockchip/rk3368-sheep-lvds.dts new file mode 100755 -index 000000000000..b7b11f895cab +index 000000000..b7b11f895 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3368-sheep-lvds.dts @@ -0,0 +1,662 @@ @@ -40341,7 +40341,7 @@ index 000000000000..b7b11f895cab +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3368-sheep.dts b/arch/arm64/boot/dts/rockchip/rk3368-sheep.dts new file mode 100755 -index 000000000000..b9b6b24ff37b +index 000000000..b9b6b24ff --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3368-sheep.dts @@ -0,0 +1,746 @@ @@ -41093,7 +41093,7 @@ index 000000000000..b9b6b24ff37b +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3368-sziauto-rk618.dts b/arch/arm64/boot/dts/rockchip/rk3368-sziauto-rk618.dts new file mode 100755 -index 000000000000..eff7c2fed990 +index 000000000..eff7c2fed --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3368-sziauto-rk618.dts @@ -0,0 +1,808 @@ @@ -41907,7 +41907,7 @@ index 000000000000..eff7c2fed990 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3368-tablet.dts b/arch/arm64/boot/dts/rockchip/rk3368-tablet.dts new file mode 100755 -index 000000000000..d7dc6d67e242 +index 000000000..d7dc6d67e --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3368-tablet.dts @@ -0,0 +1,1070 @@ @@ -42983,7 +42983,7 @@ index 000000000000..d7dc6d67e242 + diff --git a/arch/arm64/boot/dts/rockchip/rk3368-xikp-avb.dts b/arch/arm64/boot/dts/rockchip/rk3368-xikp-avb.dts new file mode 100755 -index 000000000000..b455e32c3e29 +index 000000000..b455e32c3 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3368-xikp-avb.dts @@ -0,0 +1,139 @@ @@ -43128,7 +43128,7 @@ index 000000000000..b455e32c3e29 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3368-xikp.dts b/arch/arm64/boot/dts/rockchip/rk3368-xikp.dts new file mode 100755 -index 000000000000..bc320ffdc3b7 +index 000000000..bc320ffdc --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3368-xikp.dts @@ -0,0 +1,33 @@ @@ -43168,7 +43168,7 @@ index 000000000000..bc320ffdc3b7 \ No newline at end of file diff --git a/arch/arm64/boot/dts/rockchip/rk3368-xikp.dtsi b/arch/arm64/boot/dts/rockchip/rk3368-xikp.dtsi new file mode 100755 -index 000000000000..aa73096aff9d +index 000000000..aa73096af --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3368-xikp.dtsi @@ -0,0 +1,893 @@ @@ -44066,7 +44066,7 @@ index 000000000000..aa73096aff9d +}; + diff --git a/arch/arm64/boot/dts/rockchip/rk3368.dtsi b/arch/arm64/boot/dts/rockchip/rk3368.dtsi -index 3746f23dc3df..e962c7962789 100644 +index 3746f23dc..e962c7962 100644 --- a/arch/arm64/boot/dts/rockchip/rk3368.dtsi +++ b/arch/arm64/boot/dts/rockchip/rk3368.dtsi @@ -562,7 +562,7 @@ pwm0: pwm@ff680000 { @@ -44133,7 +44133,7 @@ index 3746f23dc3df..e962c7962789 100644 diff --git a/arch/arm64/boot/dts/rockchip/rk3368a-817-tablet-bnd.dts b/arch/arm64/boot/dts/rockchip/rk3368a-817-tablet-bnd.dts new file mode 100755 -index 000000000000..0a489bf8fc84 +index 000000000..0a489bf8f --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3368a-817-tablet-bnd.dts @@ -0,0 +1,1074 @@ @@ -45213,7 +45213,7 @@ index 000000000000..0a489bf8fc84 + diff --git a/arch/arm64/boot/dts/rockchip/rk3368a-817-tablet.dts b/arch/arm64/boot/dts/rockchip/rk3368a-817-tablet.dts new file mode 100755 -index 000000000000..31f25e44504d +index 000000000..31f25e445 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3368a-817-tablet.dts @@ -0,0 +1,1333 @@ @@ -46552,7 +46552,7 @@ index 000000000000..31f25e44504d + diff --git a/arch/arm64/boot/dts/rockchip/rk3399-android.dtsi b/arch/arm64/boot/dts/rockchip/rk3399-android.dtsi new file mode 100755 -index 000000000000..ffaa92b7a89e +index 000000000..ffaa92b7a --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3399-android.dtsi @@ -0,0 +1,339 @@ @@ -46897,7 +46897,7 @@ index 000000000000..ffaa92b7a89e + diff --git a/arch/arm64/boot/dts/rockchip/rk3399-box-rev1.dts b/arch/arm64/boot/dts/rockchip/rk3399-box-rev1.dts new file mode 100755 -index 000000000000..c4572da2ec87 +index 000000000..c4572da2e --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3399-box-rev1.dts @@ -0,0 +1,134 @@ @@ -47037,7 +47037,7 @@ index 000000000000..c4572da2ec87 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3399-box-rev2.dts b/arch/arm64/boot/dts/rockchip/rk3399-box-rev2.dts new file mode 100755 -index 000000000000..1c9b884736b1 +index 000000000..1c9b88473 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3399-box-rev2.dts @@ -0,0 +1,158 @@ @@ -47201,7 +47201,7 @@ index 000000000000..1c9b884736b1 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3399-box.dtsi b/arch/arm64/boot/dts/rockchip/rk3399-box.dtsi new file mode 100755 -index 000000000000..704e0df4e122 +index 000000000..704e0df4e --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3399-box.dtsi @@ -0,0 +1,891 @@ @@ -48098,7 +48098,7 @@ index 000000000000..704e0df4e122 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3399-dram-default-timing.dtsi b/arch/arm64/boot/dts/rockchip/rk3399-dram-default-timing.dtsi new file mode 100755 -index 000000000000..981777b82329 +index 000000000..981777b82 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3399-dram-default-timing.dtsi @@ -0,0 +1,80 @@ @@ -48184,7 +48184,7 @@ index 000000000000..981777b82329 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3399-early-opp.dtsi b/arch/arm64/boot/dts/rockchip/rk3399-early-opp.dtsi new file mode 100755 -index 000000000000..2a675ec7c342 +index 000000000..2a675ec7c --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3399-early-opp.dtsi @@ -0,0 +1,127 @@ @@ -48317,7 +48317,7 @@ index 000000000000..2a675ec7c342 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3399-evb-cros.dtsi b/arch/arm64/boot/dts/rockchip/rk3399-evb-cros.dtsi new file mode 100755 -index 000000000000..4cac4981b267 +index 000000000..4cac4981b --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3399-evb-cros.dtsi @@ -0,0 +1,181 @@ @@ -48504,7 +48504,7 @@ index 000000000000..4cac4981b267 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3399-evb-ind-lpddr4-android-avb.dts b/arch/arm64/boot/dts/rockchip/rk3399-evb-ind-lpddr4-android-avb.dts new file mode 100755 -index 000000000000..343a9fc389e1 +index 000000000..343a9fc38 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3399-evb-ind-lpddr4-android-avb.dts @@ -0,0 +1,389 @@ @@ -48899,7 +48899,7 @@ index 000000000000..343a9fc389e1 + diff --git a/arch/arm64/boot/dts/rockchip/rk3399-evb-ind-lpddr4-android.dts b/arch/arm64/boot/dts/rockchip/rk3399-evb-ind-lpddr4-android.dts new file mode 100755 -index 000000000000..72aa97affa99 +index 000000000..72aa97aff --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3399-evb-ind-lpddr4-android.dts @@ -0,0 +1,157 @@ @@ -49062,7 +49062,7 @@ index 000000000000..72aa97affa99 + diff --git a/arch/arm64/boot/dts/rockchip/rk3399-evb-ind-lpddr4-linux.dts b/arch/arm64/boot/dts/rockchip/rk3399-evb-ind-lpddr4-linux.dts new file mode 100755 -index 000000000000..5b6b7131fdd1 +index 000000000..5b6b7131f --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3399-evb-ind-lpddr4-linux.dts @@ -0,0 +1,321 @@ @@ -49389,7 +49389,7 @@ index 000000000000..5b6b7131fdd1 + diff --git a/arch/arm64/boot/dts/rockchip/rk3399-evb-ind-lpddr4-v13-android-avb.dts b/arch/arm64/boot/dts/rockchip/rk3399-evb-ind-lpddr4-v13-android-avb.dts new file mode 100755 -index 000000000000..8439d91dd125 +index 000000000..8439d91dd --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3399-evb-ind-lpddr4-v13-android-avb.dts @@ -0,0 +1,425 @@ @@ -49820,7 +49820,7 @@ index 000000000000..8439d91dd125 + diff --git a/arch/arm64/boot/dts/rockchip/rk3399-evb-ind.dtsi b/arch/arm64/boot/dts/rockchip/rk3399-evb-ind.dtsi new file mode 100755 -index 000000000000..dc821a2d45c4 +index 000000000..dc821a2d4 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3399-evb-ind.dtsi @@ -0,0 +1,1430 @@ @@ -51256,7 +51256,7 @@ index 000000000000..dc821a2d45c4 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3399-evb-rev1-android.dts b/arch/arm64/boot/dts/rockchip/rk3399-evb-rev1-android.dts new file mode 100755 -index 000000000000..bb7ddac77f23 +index 000000000..bb7ddac77 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3399-evb-rev1-android.dts @@ -0,0 +1,145 @@ @@ -51407,7 +51407,7 @@ index 000000000000..bb7ddac77f23 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3399-evb-rev1-cros.dts b/arch/arm64/boot/dts/rockchip/rk3399-evb-rev1-cros.dts new file mode 100755 -index 000000000000..bf27556295ec +index 000000000..bf2755629 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3399-evb-rev1-cros.dts @@ -0,0 +1,51 @@ @@ -51464,7 +51464,7 @@ index 000000000000..bf27556295ec +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3399-evb-rev1.dtsi b/arch/arm64/boot/dts/rockchip/rk3399-evb-rev1.dtsi new file mode 100755 -index 000000000000..f35d6ee56072 +index 000000000..f35d6ee56 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3399-evb-rev1.dtsi @@ -0,0 +1,352 @@ @@ -51822,7 +51822,7 @@ index 000000000000..f35d6ee56072 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3399-evb-rev2-android.dts b/arch/arm64/boot/dts/rockchip/rk3399-evb-rev2-android.dts new file mode 100755 -index 000000000000..b15fb8a9d088 +index 000000000..b15fb8a9d --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3399-evb-rev2-android.dts @@ -0,0 +1,156 @@ @@ -51984,7 +51984,7 @@ index 000000000000..b15fb8a9d088 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3399-evb-rev2-cros.dts b/arch/arm64/boot/dts/rockchip/rk3399-evb-rev2-cros.dts new file mode 100755 -index 000000000000..2daf9f1235f3 +index 000000000..2daf9f123 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3399-evb-rev2-cros.dts @@ -0,0 +1,51 @@ @@ -52041,7 +52041,7 @@ index 000000000000..2daf9f1235f3 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3399-evb-rev2.dtsi b/arch/arm64/boot/dts/rockchip/rk3399-evb-rev2.dtsi new file mode 100755 -index 000000000000..4b23c1fcadd8 +index 000000000..4b23c1fca --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3399-evb-rev2.dtsi @@ -0,0 +1,366 @@ @@ -52413,7 +52413,7 @@ index 000000000000..4b23c1fcadd8 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3399-evb-rev3-android-edp.dts b/arch/arm64/boot/dts/rockchip/rk3399-evb-rev3-android-edp.dts new file mode 100755 -index 000000000000..7f730f5633dd +index 000000000..7f730f563 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3399-evb-rev3-android-edp.dts @@ -0,0 +1,126 @@ @@ -52545,7 +52545,7 @@ index 000000000000..7f730f5633dd +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3399-evb-rev3-android-lp4.dts b/arch/arm64/boot/dts/rockchip/rk3399-evb-rev3-android-lp4.dts new file mode 100755 -index 000000000000..85f4356a0030 +index 000000000..85f4356a0 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3399-evb-rev3-android-lp4.dts @@ -0,0 +1,233 @@ @@ -52784,7 +52784,7 @@ index 000000000000..85f4356a0030 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3399-evb-rev3-android-mipi-edp.dts b/arch/arm64/boot/dts/rockchip/rk3399-evb-rev3-android-mipi-edp.dts new file mode 100755 -index 000000000000..fffd92f00ff4 +index 000000000..fffd92f00 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3399-evb-rev3-android-mipi-edp.dts @@ -0,0 +1,300 @@ @@ -53090,7 +53090,7 @@ index 000000000000..fffd92f00ff4 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3399-evb-rev3-android.dts b/arch/arm64/boot/dts/rockchip/rk3399-evb-rev3-android.dts new file mode 100755 -index 000000000000..9ba1b0381fed +index 000000000..9ba1b0381 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3399-evb-rev3-android.dts @@ -0,0 +1,176 @@ @@ -53272,7 +53272,7 @@ index 000000000000..9ba1b0381fed +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3399-evb-rev3-cros.dts b/arch/arm64/boot/dts/rockchip/rk3399-evb-rev3-cros.dts new file mode 100755 -index 000000000000..e1bb5f129680 +index 000000000..e1bb5f129 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3399-evb-rev3-cros.dts @@ -0,0 +1,51 @@ @@ -53329,7 +53329,7 @@ index 000000000000..e1bb5f129680 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3399-evb-rev3.dtsi b/arch/arm64/boot/dts/rockchip/rk3399-evb-rev3.dtsi new file mode 100755 -index 000000000000..e34379ded3a5 +index 000000000..e34379ded --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3399-evb-rev3.dtsi @@ -0,0 +1,353 @@ @@ -53688,7 +53688,7 @@ index 000000000000..e34379ded3a5 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3399-evb.dtsi b/arch/arm64/boot/dts/rockchip/rk3399-evb.dtsi new file mode 100755 -index 000000000000..aa8ea436ae9b +index 000000000..aa8ea436a --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3399-evb.dtsi @@ -0,0 +1,646 @@ @@ -54340,7 +54340,7 @@ index 000000000000..aa8ea436ae9b + diff --git a/arch/arm64/boot/dts/rockchip/rk3399-excavator-sapphire.dtsi b/arch/arm64/boot/dts/rockchip/rk3399-excavator-sapphire.dtsi new file mode 100755 -index 000000000000..adbda6ba4e0d +index 000000000..adbda6ba4 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3399-excavator-sapphire.dtsi @@ -0,0 +1,324 @@ @@ -54670,7 +54670,7 @@ index 000000000000..adbda6ba4e0d +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3399-firefly-android.dts b/arch/arm64/boot/dts/rockchip/rk3399-firefly-android.dts new file mode 100755 -index 000000000000..c372ade536f2 +index 000000000..c372ade53 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3399-firefly-android.dts @@ -0,0 +1,1102 @@ @@ -55778,7 +55778,7 @@ index 000000000000..c372ade536f2 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3399-firefly-linux.dts b/arch/arm64/boot/dts/rockchip/rk3399-firefly-linux.dts new file mode 100755 -index 000000000000..5a023389a033 +index 000000000..5a023389a --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3399-firefly-linux.dts @@ -0,0 +1,1074 @@ @@ -56858,7 +56858,7 @@ index 000000000000..5a023389a033 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3399-fpga.dts b/arch/arm64/boot/dts/rockchip/rk3399-fpga.dts new file mode 100755 -index 000000000000..1192dfa42940 +index 000000000..1192dfa42 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3399-fpga.dts @@ -0,0 +1,64 @@ @@ -56928,7 +56928,7 @@ index 000000000000..1192dfa42940 + diff --git a/arch/arm64/boot/dts/rockchip/rk3399-gru-gru.dts b/arch/arm64/boot/dts/rockchip/rk3399-gru-gru.dts new file mode 100755 -index 000000000000..e8d771e2b90e +index 000000000..e8d771e2b --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3399-gru-gru.dts @@ -0,0 +1,165 @@ @@ -57099,7 +57099,7 @@ index 000000000000..e8d771e2b90e +/* DON'T PUT ANYTHING BELOW HERE. PUT IT ABOVE PINCTRL */ diff --git a/arch/arm64/boot/dts/rockchip/rk3399-gru-kevin-r0.dts b/arch/arm64/boot/dts/rockchip/rk3399-gru-kevin-r0.dts new file mode 100755 -index 000000000000..7a1c36e981d5 +index 000000000..7a1c36e98 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3399-gru-kevin-r0.dts @@ -0,0 +1,118 @@ @@ -57223,7 +57223,7 @@ index 000000000000..7a1c36e981d5 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3399-gru-kevin-r1.dts b/arch/arm64/boot/dts/rockchip/rk3399-gru-kevin-r1.dts new file mode 100755 -index 000000000000..44b04e1606fc +index 000000000..44b04e160 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3399-gru-kevin-r1.dts @@ -0,0 +1,85 @@ @@ -57313,7 +57313,7 @@ index 000000000000..44b04e1606fc + }; +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3399-gru-scarlet.dtsi b/arch/arm64/boot/dts/rockchip/rk3399-gru-scarlet.dtsi -index e9ecffc409c0..60cd1c18cd4e 100644 +index e9ecffc40..60cd1c18c 100644 --- a/arch/arm64/boot/dts/rockchip/rk3399-gru-scarlet.dtsi +++ b/arch/arm64/boot/dts/rockchip/rk3399-gru-scarlet.dtsi @@ -245,7 +245,7 @@ &ppvar_gpu_pwm { @@ -57326,7 +57326,7 @@ index e9ecffc409c0..60cd1c18cd4e 100644 }; diff --git a/arch/arm64/boot/dts/rockchip/rk3399-gru.dtsi b/arch/arm64/boot/dts/rockchip/rk3399-gru.dtsi -index 765b24a2bcbf..32dcaf210085 100644 +index 765b24a2b..32dcaf210 100644 --- a/arch/arm64/boot/dts/rockchip/rk3399-gru.dtsi +++ b/arch/arm64/boot/dts/rockchip/rk3399-gru.dtsi @@ -247,8 +247,8 @@ ppvar_sd_card_io: ppvar-sd-card-io { @@ -57342,7 +57342,7 @@ index 765b24a2bcbf..32dcaf210085 100644 regulator-max-microvolt = <3000000>; diff --git a/arch/arm64/boot/dts/rockchip/rk3399-linux.dtsi b/arch/arm64/boot/dts/rockchip/rk3399-linux.dtsi new file mode 100755 -index 000000000000..0549701d615e +index 000000000..0549701d6 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3399-linux.dtsi @@ -0,0 +1,306 @@ @@ -57654,7 +57654,7 @@ index 000000000000..0549701d615e +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3399-mid-818-android.dts b/arch/arm64/boot/dts/rockchip/rk3399-mid-818-android.dts new file mode 100755 -index 000000000000..8610539ef284 +index 000000000..8610539ef --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3399-mid-818-android.dts @@ -0,0 +1,1121 @@ @@ -58780,7 +58780,7 @@ index 000000000000..8610539ef284 + assigned-clock-parents = <&cru PLL_VPLL>; +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3399-opp.dtsi b/arch/arm64/boot/dts/rockchip/rk3399-opp.dtsi -index d6f1095abb04..f9f2cc8abec7 100644 +index d6f1095ab..f9f2cc8ab 100644 --- a/arch/arm64/boot/dts/rockchip/rk3399-opp.dtsi +++ b/arch/arm64/boot/dts/rockchip/rk3399-opp.dtsi @@ -3,35 +3,99 @@ @@ -59178,7 +59178,7 @@ index d6f1095abb04..f9f2cc8abec7 100644 &gpu { diff --git a/arch/arm64/boot/dts/rockchip/rk3399-roc-pc.dtsi b/arch/arm64/boot/dts/rockchip/rk3399-roc-pc.dtsi -index 35b7ab3bf10c..20309076dbac 100644 +index 35b7ab3bf..20309076d 100644 --- a/arch/arm64/boot/dts/rockchip/rk3399-roc-pc.dtsi +++ b/arch/arm64/boot/dts/rockchip/rk3399-roc-pc.dtsi @@ -384,7 +384,6 @@ regulator-state-mem { @@ -59200,7 +59200,7 @@ index 35b7ab3bf10c..20309076dbac 100644 regulator-state-mem { diff --git a/arch/arm64/boot/dts/rockchip/rk3399-rock960-ab.dts b/arch/arm64/boot/dts/rockchip/rk3399-rock960-ab.dts new file mode 100755 -index 000000000000..86e45dc0074d +index 000000000..86e45dc00 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3399-rock960-ab.dts @@ -0,0 +1,1088 @@ @@ -60293,7 +60293,7 @@ index 000000000000..86e45dc0074d + status = "okay"; +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3399-rock960.dts b/arch/arm64/boot/dts/rockchip/rk3399-rock960.dts -index c88295782e7b..1a23e8f3cdf6 100644 +index c88295782..1a23e8f3c 100644 --- a/arch/arm64/boot/dts/rockchip/rk3399-rock960.dts +++ b/arch/arm64/boot/dts/rockchip/rk3399-rock960.dts @@ -63,6 +63,20 @@ bt_active_led: led-6 { @@ -60365,7 +60365,7 @@ index c88295782e7b..1a23e8f3cdf6 100644 }; diff --git a/arch/arm64/boot/dts/rockchip/rk3399-sapphire-excavator-box.dts b/arch/arm64/boot/dts/rockchip/rk3399-sapphire-excavator-box.dts new file mode 100755 -index 000000000000..3106512b87cd +index 000000000..3106512b8 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3399-sapphire-excavator-box.dts @@ -0,0 +1,181 @@ @@ -60552,7 +60552,7 @@ index 000000000000..3106512b87cd +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3399-sapphire-excavator-edp-avb.dts b/arch/arm64/boot/dts/rockchip/rk3399-sapphire-excavator-edp-avb.dts new file mode 100755 -index 000000000000..3e9ef7b0773b +index 000000000..3e9ef7b07 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3399-sapphire-excavator-edp-avb.dts @@ -0,0 +1,128 @@ @@ -60686,7 +60686,7 @@ index 000000000000..3e9ef7b0773b + diff --git a/arch/arm64/boot/dts/rockchip/rk3399-sapphire-excavator-edp.dts b/arch/arm64/boot/dts/rockchip/rk3399-sapphire-excavator-edp.dts new file mode 100755 -index 000000000000..c2f8673198d5 +index 000000000..c2f867319 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3399-sapphire-excavator-edp.dts @@ -0,0 +1,82 @@ @@ -60774,7 +60774,7 @@ index 000000000000..c2f8673198d5 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3399-sapphire-excavator-edp.dtsi b/arch/arm64/boot/dts/rockchip/rk3399-sapphire-excavator-edp.dtsi new file mode 100755 -index 000000000000..8156e5f7c795 +index 000000000..8156e5f7c --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3399-sapphire-excavator-edp.dtsi @@ -0,0 +1,488 @@ @@ -61268,7 +61268,7 @@ index 000000000000..8156e5f7c795 + diff --git a/arch/arm64/boot/dts/rockchip/rk3399-sapphire-excavator-linux-for-rk1808-cascade.dts b/arch/arm64/boot/dts/rockchip/rk3399-sapphire-excavator-linux-for-rk1808-cascade.dts new file mode 100755 -index 000000000000..e1e482938481 +index 000000000..e1e482938 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3399-sapphire-excavator-linux-for-rk1808-cascade.dts @@ -0,0 +1,487 @@ @@ -61761,7 +61761,7 @@ index 000000000000..e1e482938481 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3399-sapphire-excavator-linux.dts b/arch/arm64/boot/dts/rockchip/rk3399-sapphire-excavator-linux.dts new file mode 100755 -index 000000000000..9f370a7bff1c +index 000000000..9f370a7bf --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3399-sapphire-excavator-linux.dts @@ -0,0 +1,452 @@ @@ -62219,7 +62219,7 @@ index 000000000000..9f370a7bff1c +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3399-sapphire-excavator-lp4-linux.dts b/arch/arm64/boot/dts/rockchip/rk3399-sapphire-excavator-lp4-linux.dts new file mode 100755 -index 000000000000..da471a636103 +index 000000000..da471a636 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3399-sapphire-excavator-lp4-linux.dts @@ -0,0 +1,497 @@ @@ -62721,7 +62721,7 @@ index 000000000000..da471a636103 + }; +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3399-sapphire.dtsi b/arch/arm64/boot/dts/rockchip/rk3399-sapphire.dtsi -index 701a567d7638..3d9e27750139 100644 +index 701a567d7..3d9e27750 100644 --- a/arch/arm64/boot/dts/rockchip/rk3399-sapphire.dtsi +++ b/arch/arm64/boot/dts/rockchip/rk3399-sapphire.dtsi @@ -515,6 +515,8 @@ &pwm0 { @@ -62735,7 +62735,7 @@ index 701a567d7638..3d9e27750139 100644 &saradc { diff --git a/arch/arm64/boot/dts/rockchip/rk3399-sched-energy.dtsi b/arch/arm64/boot/dts/rockchip/rk3399-sched-energy.dtsi new file mode 100755 -index 000000000000..373a776b9207 +index 000000000..373a776b9 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3399-sched-energy.dtsi @@ -0,0 +1,121 @@ @@ -62862,7 +62862,7 @@ index 000000000000..373a776b9207 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3399-tve1030g-avb.dts b/arch/arm64/boot/dts/rockchip/rk3399-tve1030g-avb.dts new file mode 100755 -index 000000000000..eeca9cf54373 +index 000000000..eeca9cf54 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3399-tve1030g-avb.dts @@ -0,0 +1,170 @@ @@ -63038,7 +63038,7 @@ index 000000000000..eeca9cf54373 + diff --git a/arch/arm64/boot/dts/rockchip/rk3399-tve1030g.dts b/arch/arm64/boot/dts/rockchip/rk3399-tve1030g.dts new file mode 100755 -index 000000000000..28f81ee8f7f5 +index 000000000..28f81ee8f --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3399-tve1030g.dts @@ -0,0 +1,42 @@ @@ -63086,7 +63086,7 @@ index 000000000000..28f81ee8f7f5 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3399-tve1030g.dtsi b/arch/arm64/boot/dts/rockchip/rk3399-tve1030g.dtsi new file mode 100755 -index 000000000000..fb700431e356 +index 000000000..fb700431e --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3399-tve1030g.dtsi @@ -0,0 +1,1039 @@ @@ -64131,7 +64131,7 @@ index 000000000000..fb700431e356 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3399-tve1205g.dts b/arch/arm64/boot/dts/rockchip/rk3399-tve1205g.dts new file mode 100755 -index 000000000000..ac9d28db5b76 +index 000000000..ac9d28db5 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3399-tve1205g.dts @@ -0,0 +1,1179 @@ @@ -65316,7 +65316,7 @@ index 000000000000..ac9d28db5b76 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3399-videostrong-linux.dts b/arch/arm64/boot/dts/rockchip/rk3399-videostrong-linux.dts new file mode 100755 -index 000000000000..10ba2048483d +index 000000000..10ba20484 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3399-videostrong-linux.dts @@ -0,0 +1,293 @@ @@ -65615,7 +65615,7 @@ index 000000000000..10ba2048483d +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3399-vop-clk-set.dtsi b/arch/arm64/boot/dts/rockchip/rk3399-vop-clk-set.dtsi new file mode 100755 -index 000000000000..5ed8dac6cf7d +index 000000000..5ed8dac6c --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3399-vop-clk-set.dtsi @@ -0,0 +1,181 @@ @@ -65801,7 +65801,7 @@ index 000000000000..5ed8dac6cf7d +#endif + diff --git a/arch/arm64/boot/dts/rockchip/rk3399.dtsi b/arch/arm64/boot/dts/rockchip/rk3399.dtsi -index 4b6065dbba55..d1bf1b6a0d10 100644 +index 4b6065dbb..d1bf1b6a0 100644 --- a/arch/arm64/boot/dts/rockchip/rk3399.dtsi +++ b/arch/arm64/boot/dts/rockchip/rk3399.dtsi @@ -9,8 +9,13 @@ @@ -66516,7 +66516,7 @@ index 4b6065dbba55..d1bf1b6a0d10 100644 }; diff --git a/arch/arm64/boot/dts/rockchip/rk3399k-opp.dtsi b/arch/arm64/boot/dts/rockchip/rk3399k-opp.dtsi new file mode 100755 -index 000000000000..59f200e0b9cb +index 000000000..59f200e0b --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3399k-opp.dtsi @@ -0,0 +1,24 @@ @@ -66546,7 +66546,7 @@ index 000000000000..59f200e0b9cb +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3399pro-evb-lp4-v11-linux.dts b/arch/arm64/boot/dts/rockchip/rk3399pro-evb-lp4-v11-linux.dts new file mode 100755 -index 000000000000..f975f47b76d6 +index 000000000..f975f47b7 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3399pro-evb-lp4-v11-linux.dts @@ -0,0 +1,1293 @@ @@ -67845,7 +67845,7 @@ index 000000000000..f975f47b76d6 +/* DON'T PUT ANYTHING BELOW HERE. PUT IT ABOVE PINCTRL */ diff --git a/arch/arm64/boot/dts/rockchip/rk3399pro-evb-v10-linux.dts b/arch/arm64/boot/dts/rockchip/rk3399pro-evb-v10-linux.dts new file mode 100755 -index 000000000000..08ac2a477852 +index 000000000..08ac2a477 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3399pro-evb-v10-linux.dts @@ -0,0 +1,1203 @@ @@ -69054,7 +69054,7 @@ index 000000000000..08ac2a477852 +/* DON'T PUT ANYTHING BELOW HERE. PUT IT ABOVE PINCTRL */ diff --git a/arch/arm64/boot/dts/rockchip/rk3399pro-evb-v10.dts b/arch/arm64/boot/dts/rockchip/rk3399pro-evb-v10.dts new file mode 100755 -index 000000000000..398f962114cf +index 000000000..398f96211 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3399pro-evb-v10.dts @@ -0,0 +1,1061 @@ @@ -70121,7 +70121,7 @@ index 000000000000..398f962114cf +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3399pro-evb-v11-linux.dts b/arch/arm64/boot/dts/rockchip/rk3399pro-evb-v11-linux.dts new file mode 100755 -index 000000000000..c3faaa1ba4d3 +index 000000000..c3faaa1ba --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3399pro-evb-v11-linux.dts @@ -0,0 +1,1223 @@ @@ -71350,7 +71350,7 @@ index 000000000000..c3faaa1ba4d3 +/* DON'T PUT ANYTHING BELOW HERE. PUT IT ABOVE PINCTRL */ diff --git a/arch/arm64/boot/dts/rockchip/rk3399pro-evb-v11.dts b/arch/arm64/boot/dts/rockchip/rk3399pro-evb-v11.dts new file mode 100755 -index 000000000000..7d118a783353 +index 000000000..7d118a783 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3399pro-evb-v11.dts @@ -0,0 +1,1045 @@ @@ -72401,7 +72401,7 @@ index 000000000000..7d118a783353 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3399pro-evb-v14-linux.dts b/arch/arm64/boot/dts/rockchip/rk3399pro-evb-v14-linux.dts new file mode 100755 -index 000000000000..4f8546eb80bf +index 000000000..4f8546eb8 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3399pro-evb-v14-linux.dts @@ -0,0 +1,247 @@ @@ -72654,7 +72654,7 @@ index 000000000000..4f8546eb80bf +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3399pro-npu-evb-v10.dts b/arch/arm64/boot/dts/rockchip/rk3399pro-npu-evb-v10.dts new file mode 100755 -index 000000000000..96a3fb56cfe5 +index 000000000..96a3fb56c --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3399pro-npu-evb-v10.dts @@ -0,0 +1,140 @@ @@ -72800,7 +72800,7 @@ index 000000000000..96a3fb56cfe5 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3399pro-npu.dtsi b/arch/arm64/boot/dts/rockchip/rk3399pro-npu.dtsi new file mode 100755 -index 000000000000..3f176b3bc94f +index 000000000..3f176b3bc --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3399pro-npu.dtsi @@ -0,0 +1,826 @@ @@ -73632,7 +73632,7 @@ index 000000000000..3f176b3bc94f +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3566-box-demo-v10.dts b/arch/arm64/boot/dts/rockchip/rk3566-box-demo-v10.dts new file mode 100755 -index 000000000000..1bd285bfc695 +index 000000000..1bd285bfc --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3566-box-demo-v10.dts @@ -0,0 +1,15 @@ @@ -73653,7 +73653,7 @@ index 000000000000..1bd285bfc695 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3566-box-demo-v10.dtsi b/arch/arm64/boot/dts/rockchip/rk3566-box-demo-v10.dtsi new file mode 100755 -index 000000000000..41ac0af11188 +index 000000000..41ac0af11 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3566-box-demo-v10.dtsi @@ -0,0 +1,528 @@ @@ -74187,7 +74187,7 @@ index 000000000000..41ac0af11188 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3566-box.dtsi b/arch/arm64/boot/dts/rockchip/rk3566-box.dtsi new file mode 100755 -index 000000000000..f0feae6730e3 +index 000000000..f0feae673 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3566-box.dtsi @@ -0,0 +1,436 @@ @@ -74629,7 +74629,7 @@ index 000000000000..f0feae6730e3 + diff --git a/arch/arm64/boot/dts/rockchip/rk3566-eink.dtsi b/arch/arm64/boot/dts/rockchip/rk3566-eink.dtsi new file mode 100755 -index 000000000000..09791eb16abf +index 000000000..09791eb16 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3566-eink.dtsi @@ -0,0 +1,100 @@ @@ -74735,7 +74735,7 @@ index 000000000000..09791eb16abf + diff --git a/arch/arm64/boot/dts/rockchip/rk3566-evb-mipitest-v10.dts b/arch/arm64/boot/dts/rockchip/rk3566-evb-mipitest-v10.dts new file mode 100755 -index 000000000000..3f215884a070 +index 000000000..3f215884a --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3566-evb-mipitest-v10.dts @@ -0,0 +1,7 @@ @@ -74748,7 +74748,7 @@ index 000000000000..3f215884a070 +#include "rk3568-android.dtsi" diff --git a/arch/arm64/boot/dts/rockchip/rk3566-evb-mipitest-v10.dtsi b/arch/arm64/boot/dts/rockchip/rk3566-evb-mipitest-v10.dtsi new file mode 100755 -index 000000000000..227bc4e39d99 +index 000000000..227bc4e39 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3566-evb-mipitest-v10.dtsi @@ -0,0 +1,507 @@ @@ -75261,7 +75261,7 @@ index 000000000000..227bc4e39d99 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3566-evb.dtsi b/arch/arm64/boot/dts/rockchip/rk3566-evb.dtsi new file mode 100755 -index 000000000000..d1aa123cd347 +index 000000000..d1aa123cd --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3566-evb.dtsi @@ -0,0 +1,7 @@ @@ -75274,7 +75274,7 @@ index 000000000000..d1aa123cd347 +#include "rk3568-evb.dtsi" diff --git a/arch/arm64/boot/dts/rockchip/rk3566-evb1-ddr4-v10-linux.dts b/arch/arm64/boot/dts/rockchip/rk3566-evb1-ddr4-v10-linux.dts new file mode 100755 -index 000000000000..a22cc8cec6af +index 000000000..a22cc8cec --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3566-evb1-ddr4-v10-linux.dts @@ -0,0 +1,13 @@ @@ -75293,7 +75293,7 @@ index 000000000000..a22cc8cec6af +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3566-evb1-ddr4-v10-lvds.dts b/arch/arm64/boot/dts/rockchip/rk3566-evb1-ddr4-v10-lvds.dts new file mode 100755 -index 000000000000..98a384041b8b +index 000000000..98a384041 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3566-evb1-ddr4-v10-lvds.dts @@ -0,0 +1,99 @@ @@ -75398,7 +75398,7 @@ index 000000000000..98a384041b8b +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3566-evb1-ddr4-v10.dts b/arch/arm64/boot/dts/rockchip/rk3566-evb1-ddr4-v10.dts new file mode 100755 -index 000000000000..f602ed98d7ce +index 000000000..f602ed98d --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3566-evb1-ddr4-v10.dts @@ -0,0 +1,7 @@ @@ -75411,7 +75411,7 @@ index 000000000000..f602ed98d7ce +#include "rk3568-android.dtsi" diff --git a/arch/arm64/boot/dts/rockchip/rk3566-evb1-ddr4-v10.dtsi b/arch/arm64/boot/dts/rockchip/rk3566-evb1-ddr4-v10.dtsi new file mode 100755 -index 000000000000..385933be9f45 +index 000000000..385933be9 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3566-evb1-ddr4-v10.dtsi @@ -0,0 +1,489 @@ @@ -75906,7 +75906,7 @@ index 000000000000..385933be9f45 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3566-evb2-lp4x-v10-eink.dts b/arch/arm64/boot/dts/rockchip/rk3566-evb2-lp4x-v10-eink.dts new file mode 100755 -index 000000000000..83546eef6529 +index 000000000..83546eef6 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3566-evb2-lp4x-v10-eink.dts @@ -0,0 +1,345 @@ @@ -76257,7 +76257,7 @@ index 000000000000..83546eef6529 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3566-evb2-lp4x-v10-i2s-mic-array.dts b/arch/arm64/boot/dts/rockchip/rk3566-evb2-lp4x-v10-i2s-mic-array.dts new file mode 100755 -index 000000000000..5ba1318bcee1 +index 000000000..5ba1318bc --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3566-evb2-lp4x-v10-i2s-mic-array.dts @@ -0,0 +1,102 @@ @@ -76365,7 +76365,7 @@ index 000000000000..5ba1318bcee1 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3566-evb2-lp4x-v10-linux.dts b/arch/arm64/boot/dts/rockchip/rk3566-evb2-lp4x-v10-linux.dts new file mode 100755 -index 000000000000..957a99b168bb +index 000000000..957a99b16 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3566-evb2-lp4x-v10-linux.dts @@ -0,0 +1,8 @@ @@ -76379,7 +76379,7 @@ index 000000000000..957a99b168bb +#include "rk3568-linux.dtsi" diff --git a/arch/arm64/boot/dts/rockchip/rk3566-evb2-lp4x-v10-pdm-mic-array.dts b/arch/arm64/boot/dts/rockchip/rk3566-evb2-lp4x-v10-pdm-mic-array.dts new file mode 100755 -index 000000000000..55e9679194cb +index 000000000..55e967919 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3566-evb2-lp4x-v10-pdm-mic-array.dts @@ -0,0 +1,111 @@ @@ -76496,7 +76496,7 @@ index 000000000000..55e9679194cb + diff --git a/arch/arm64/boot/dts/rockchip/rk3566-evb2-lp4x-v10.dts b/arch/arm64/boot/dts/rockchip/rk3566-evb2-lp4x-v10.dts new file mode 100755 -index 000000000000..3b36bdba12b6 +index 000000000..3b36bdba1 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3566-evb2-lp4x-v10.dts @@ -0,0 +1,8 @@ @@ -76510,7 +76510,7 @@ index 000000000000..3b36bdba12b6 +#include "rk3568-android.dtsi" diff --git a/arch/arm64/boot/dts/rockchip/rk3566-evb2-lp4x-v10.dtsi b/arch/arm64/boot/dts/rockchip/rk3566-evb2-lp4x-v10.dtsi new file mode 100755 -index 000000000000..4a6bec70f33e +index 000000000..4a6bec70f --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3566-evb2-lp4x-v10.dtsi @@ -0,0 +1,599 @@ @@ -77115,7 +77115,7 @@ index 000000000000..4a6bec70f33e +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3566-evb3-ddr3-v10-linux.dts b/arch/arm64/boot/dts/rockchip/rk3566-evb3-ddr3-v10-linux.dts new file mode 100755 -index 000000000000..e292b0dd1846 +index 000000000..e292b0dd1 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3566-evb3-ddr3-v10-linux.dts @@ -0,0 +1,8 @@ @@ -77129,7 +77129,7 @@ index 000000000000..e292b0dd1846 +#include "rk3568-linux.dtsi" diff --git a/arch/arm64/boot/dts/rockchip/rk3566-evb3-ddr3-v10.dts b/arch/arm64/boot/dts/rockchip/rk3566-evb3-ddr3-v10.dts new file mode 100755 -index 000000000000..09f5260fb375 +index 000000000..09f5260fb --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3566-evb3-ddr3-v10.dts @@ -0,0 +1,8 @@ @@ -77143,7 +77143,7 @@ index 000000000000..09f5260fb375 +#include "rk3568-android.dtsi" diff --git a/arch/arm64/boot/dts/rockchip/rk3566-evb3-ddr3-v10.dtsi b/arch/arm64/boot/dts/rockchip/rk3566-evb3-ddr3-v10.dtsi new file mode 100755 -index 000000000000..f936cc186cfb +index 000000000..f936cc186 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3566-evb3-ddr3-v10.dtsi @@ -0,0 +1,499 @@ @@ -77648,7 +77648,7 @@ index 000000000000..f936cc186cfb +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3566-evb5-lp4x-v10.dts b/arch/arm64/boot/dts/rockchip/rk3566-evb5-lp4x-v10.dts new file mode 100755 -index 000000000000..600fc3c39586 +index 000000000..600fc3c39 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3566-evb5-lp4x-v10.dts @@ -0,0 +1,7 @@ @@ -77661,7 +77661,7 @@ index 000000000000..600fc3c39586 +#include "rk3568-android.dtsi" diff --git a/arch/arm64/boot/dts/rockchip/rk3566-evb5-lp4x-v10.dtsi b/arch/arm64/boot/dts/rockchip/rk3566-evb5-lp4x-v10.dtsi new file mode 100755 -index 000000000000..83586659530d +index 000000000..835866595 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3566-evb5-lp4x-v10.dtsi @@ -0,0 +1,317 @@ @@ -77984,7 +77984,7 @@ index 000000000000..83586659530d +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3566-rk817-eink-w103.dts b/arch/arm64/boot/dts/rockchip/rk3566-rk817-eink-w103.dts new file mode 100755 -index 000000000000..3f559fca27f8 +index 000000000..3f559fca2 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3566-rk817-eink-w103.dts @@ -0,0 +1,1115 @@ @@ -79105,7 +79105,7 @@ index 000000000000..3f559fca27f8 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3566-rk817-eink-w6.dts b/arch/arm64/boot/dts/rockchip/rk3566-rk817-eink-w6.dts new file mode 100755 -index 000000000000..2e6d3160aa16 +index 000000000..2e6d3160a --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3566-rk817-eink-w6.dts @@ -0,0 +1,968 @@ @@ -80079,7 +80079,7 @@ index 000000000000..2e6d3160aa16 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3566-rk817-eink.dts b/arch/arm64/boot/dts/rockchip/rk3566-rk817-eink.dts new file mode 100755 -index 000000000000..50412b44bb71 +index 000000000..50412b44b --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3566-rk817-eink.dts @@ -0,0 +1,957 @@ @@ -81042,7 +81042,7 @@ index 000000000000..50412b44bb71 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3566-rk817-tablet-k108.dts b/arch/arm64/boot/dts/rockchip/rk3566-rk817-tablet-k108.dts new file mode 100755 -index 000000000000..f6f4534aad50 +index 000000000..f6f4534aa --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3566-rk817-tablet-k108.dts @@ -0,0 +1,1307 @@ @@ -82355,7 +82355,7 @@ index 000000000000..f6f4534aad50 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3566-rk817-tablet-rkg11.dts b/arch/arm64/boot/dts/rockchip/rk3566-rk817-tablet-rkg11.dts new file mode 100755 -index 000000000000..8102da0270fa +index 000000000..8102da027 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3566-rk817-tablet-rkg11.dts @@ -0,0 +1,1180 @@ @@ -83541,7 +83541,7 @@ index 000000000000..8102da0270fa +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3566-rk817-tablet-v10.dts b/arch/arm64/boot/dts/rockchip/rk3566-rk817-tablet-v10.dts new file mode 100755 -index 000000000000..1d4a0484473a +index 000000000..1d4a04844 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3566-rk817-tablet-v10.dts @@ -0,0 +1,1208 @@ @@ -84755,7 +84755,7 @@ index 000000000000..1d4a0484473a +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3566-rk817-tablet.dts b/arch/arm64/boot/dts/rockchip/rk3566-rk817-tablet.dts new file mode 100755 -index 000000000000..40022eb6c646 +index 000000000..40022eb6c --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3566-rk817-tablet.dts @@ -0,0 +1,1213 @@ @@ -85974,7 +85974,7 @@ index 000000000000..40022eb6c646 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3566.dtsi b/arch/arm64/boot/dts/rockchip/rk3566.dtsi new file mode 100755 -index 000000000000..01b6499b678d +index 000000000..01b6499b6 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3566.dtsi @@ -0,0 +1,53 @@ @@ -86033,7 +86033,7 @@ index 000000000000..01b6499b678d +/delete-node/ &sata0; diff --git a/arch/arm64/boot/dts/rockchip/rk3568-android.dtsi b/arch/arm64/boot/dts/rockchip/rk3568-android.dtsi new file mode 100755 -index 000000000000..01cd37c04e1a +index 000000000..01cd37c04 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3568-android.dtsi @@ -0,0 +1,74 @@ @@ -86113,7 +86113,7 @@ index 000000000000..01cd37c04e1a +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3568-dram-default-timing.dtsi b/arch/arm64/boot/dts/rockchip/rk3568-dram-default-timing.dtsi new file mode 100755 -index 000000000000..43f978809c02 +index 000000000..43f978809 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3568-dram-default-timing.dtsi @@ -0,0 +1,81 @@ @@ -86200,7 +86200,7 @@ index 000000000000..43f978809c02 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3568-evb.dtsi b/arch/arm64/boot/dts/rockchip/rk3568-evb.dtsi new file mode 100755 -index 000000000000..2ca4a18314d2 +index 000000000..2ca4a1831 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3568-evb.dtsi @@ -0,0 +1,1807 @@ @@ -88013,7 +88013,7 @@ index 000000000000..2ca4a18314d2 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3568-evb1-ddr4-v10-linux-spi-nor.dts b/arch/arm64/boot/dts/rockchip/rk3568-evb1-ddr4-v10-linux-spi-nor.dts new file mode 100755 -index 000000000000..259b483af0f4 +index 000000000..259b483af --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3568-evb1-ddr4-v10-linux-spi-nor.dts @@ -0,0 +1,18 @@ @@ -88037,7 +88037,7 @@ index 000000000000..259b483af0f4 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3568-evb1-ddr4-v10-linux.dts b/arch/arm64/boot/dts/rockchip/rk3568-evb1-ddr4-v10-linux.dts new file mode 100755 -index 000000000000..55c255998473 +index 000000000..55c255998 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3568-evb1-ddr4-v10-linux.dts @@ -0,0 +1,8 @@ @@ -88051,7 +88051,7 @@ index 000000000000..55c255998473 +#include "rk3568-linux.dtsi" diff --git a/arch/arm64/boot/dts/rockchip/rk3568-evb1-ddr4-v10.dts b/arch/arm64/boot/dts/rockchip/rk3568-evb1-ddr4-v10.dts new file mode 100755 -index 000000000000..00c28f39269b +index 000000000..00c28f392 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3568-evb1-ddr4-v10.dts @@ -0,0 +1,8 @@ @@ -88065,7 +88065,7 @@ index 000000000000..00c28f39269b +#include "rk3568-android.dtsi" diff --git a/arch/arm64/boot/dts/rockchip/rk3568-evb1-ddr4-v10.dtsi b/arch/arm64/boot/dts/rockchip/rk3568-evb1-ddr4-v10.dtsi new file mode 100755 -index 000000000000..64881d20183f +index 000000000..64881d201 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3568-evb1-ddr4-v10.dtsi @@ -0,0 +1,490 @@ @@ -88561,7 +88561,7 @@ index 000000000000..64881d20183f +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3568-evb2-lp4x-v10-bt1120-to-hdmi.dts b/arch/arm64/boot/dts/rockchip/rk3568-evb2-lp4x-v10-bt1120-to-hdmi.dts new file mode 100755 -index 000000000000..7a5a7feb52a7 +index 000000000..7a5a7feb5 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3568-evb2-lp4x-v10-bt1120-to-hdmi.dts @@ -0,0 +1,79 @@ @@ -88646,7 +88646,7 @@ index 000000000000..7a5a7feb52a7 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3568-evb2-lp4x-v10.dts b/arch/arm64/boot/dts/rockchip/rk3568-evb2-lp4x-v10.dts new file mode 100755 -index 000000000000..23f5f036c4b2 +index 000000000..23f5f036c --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3568-evb2-lp4x-v10.dts @@ -0,0 +1,8 @@ @@ -88660,7 +88660,7 @@ index 000000000000..23f5f036c4b2 +#include "rk3568-android.dtsi" diff --git a/arch/arm64/boot/dts/rockchip/rk3568-evb2-lp4x-v10.dtsi b/arch/arm64/boot/dts/rockchip/rk3568-evb2-lp4x-v10.dtsi new file mode 100755 -index 000000000000..c2d0b697a9bd +index 000000000..c2d0b697a --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3568-evb2-lp4x-v10.dtsi @@ -0,0 +1,493 @@ @@ -89159,7 +89159,7 @@ index 000000000000..c2d0b697a9bd +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3568-evb4-lp3-v10.dts b/arch/arm64/boot/dts/rockchip/rk3568-evb4-lp3-v10.dts new file mode 100755 -index 000000000000..5884da41f121 +index 000000000..5884da41f --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3568-evb4-lp3-v10.dts @@ -0,0 +1,12 @@ @@ -89177,7 +89177,7 @@ index 000000000000..5884da41f121 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3568-evb5-ddr4-v10.dts b/arch/arm64/boot/dts/rockchip/rk3568-evb5-ddr4-v10.dts new file mode 100755 -index 000000000000..e9eb333079a2 +index 000000000..e9eb33307 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3568-evb5-ddr4-v10.dts @@ -0,0 +1,8 @@ @@ -89191,7 +89191,7 @@ index 000000000000..e9eb333079a2 +#include "rk3568-android.dtsi" diff --git a/arch/arm64/boot/dts/rockchip/rk3568-evb5-ddr4-v10.dtsi b/arch/arm64/boot/dts/rockchip/rk3568-evb5-ddr4-v10.dtsi new file mode 100755 -index 000000000000..e8a00fc85483 +index 000000000..e8a00fc85 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3568-evb5-ddr4-v10.dtsi @@ -0,0 +1,539 @@ @@ -89736,7 +89736,7 @@ index 000000000000..e8a00fc85483 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3568-evb6-ddr3-v10-linux.dts b/arch/arm64/boot/dts/rockchip/rk3568-evb6-ddr3-v10-linux.dts new file mode 100755 -index 000000000000..a11975fc7d53 +index 000000000..a11975fc7 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3568-evb6-ddr3-v10-linux.dts @@ -0,0 +1,8 @@ @@ -89750,7 +89750,7 @@ index 000000000000..a11975fc7d53 +#include "rk3568-linux.dtsi" diff --git a/arch/arm64/boot/dts/rockchip/rk3568-evb6-ddr3-v10-rk628-bt1120-to-hdmi.dts b/arch/arm64/boot/dts/rockchip/rk3568-evb6-ddr3-v10-rk628-bt1120-to-hdmi.dts new file mode 100755 -index 000000000000..0c5ea5eb32ba +index 000000000..0c5ea5eb3 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3568-evb6-ddr3-v10-rk628-bt1120-to-hdmi.dts @@ -0,0 +1,127 @@ @@ -89883,7 +89883,7 @@ index 000000000000..0c5ea5eb32ba +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3568-evb6-ddr3-v10-rk628-rgb2hdmi.dts b/arch/arm64/boot/dts/rockchip/rk3568-evb6-ddr3-v10-rk628-rgb2hdmi.dts new file mode 100755 -index 000000000000..597fa0b0b089 +index 000000000..597fa0b0b --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3568-evb6-ddr3-v10-rk628-rgb2hdmi.dts @@ -0,0 +1,96 @@ @@ -89985,7 +89985,7 @@ index 000000000000..597fa0b0b089 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3568-evb6-ddr3-v10-rk630-bt656-to-cvbs.dts b/arch/arm64/boot/dts/rockchip/rk3568-evb6-ddr3-v10-rk630-bt656-to-cvbs.dts new file mode 100755 -index 000000000000..24c4debec4f3 +index 000000000..24c4debec --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3568-evb6-ddr3-v10-rk630-bt656-to-cvbs.dts @@ -0,0 +1,70 @@ @@ -90061,7 +90061,7 @@ index 000000000000..24c4debec4f3 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3568-evb6-ddr3-v10.dts b/arch/arm64/boot/dts/rockchip/rk3568-evb6-ddr3-v10.dts new file mode 100755 -index 000000000000..6e34fa48abc4 +index 000000000..6e34fa48a --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3568-evb6-ddr3-v10.dts @@ -0,0 +1,8 @@ @@ -90075,7 +90075,7 @@ index 000000000000..6e34fa48abc4 +#include "rk3568-android.dtsi" diff --git a/arch/arm64/boot/dts/rockchip/rk3568-evb6-ddr3-v10.dtsi b/arch/arm64/boot/dts/rockchip/rk3568-evb6-ddr3-v10.dtsi new file mode 100755 -index 000000000000..2f3b5d74e1cf +index 000000000..2f3b5d74e --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3568-evb6-ddr3-v10.dtsi @@ -0,0 +1,490 @@ @@ -90571,7 +90571,7 @@ index 000000000000..2f3b5d74e1cf +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3568-evb7-ddr4-v10.dts b/arch/arm64/boot/dts/rockchip/rk3568-evb7-ddr4-v10.dts new file mode 100755 -index 000000000000..ecb96832c292 +index 000000000..ecb96832c --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3568-evb7-ddr4-v10.dts @@ -0,0 +1,12 @@ @@ -90589,7 +90589,7 @@ index 000000000000..ecb96832c292 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3568-iotest-ddr3-v10-linux.dts b/arch/arm64/boot/dts/rockchip/rk3568-iotest-ddr3-v10-linux.dts new file mode 100755 -index 000000000000..d832a40d37e9 +index 000000000..d832a40d3 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3568-iotest-ddr3-v10-linux.dts @@ -0,0 +1,69 @@ @@ -90664,7 +90664,7 @@ index 000000000000..d832a40d37e9 +/delete-node/ &display_subsystem; diff --git a/arch/arm64/boot/dts/rockchip/rk3568-iotest-ddr3-v10.dts b/arch/arm64/boot/dts/rockchip/rk3568-iotest-ddr3-v10.dts new file mode 100755 -index 000000000000..489967f1318f +index 000000000..489967f13 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3568-iotest-ddr3-v10.dts @@ -0,0 +1,47 @@ @@ -90717,7 +90717,7 @@ index 000000000000..489967f1318f +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3568-linux.dtsi b/arch/arm64/boot/dts/rockchip/rk3568-linux.dtsi new file mode 100755 -index 000000000000..460c63d876a7 +index 000000000..460c63d87 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3568-linux.dtsi @@ -0,0 +1,60 @@ @@ -90783,7 +90783,7 @@ index 000000000000..460c63d876a7 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3568-nvr-demo-v10-linux-spi-nand.dts b/arch/arm64/boot/dts/rockchip/rk3568-nvr-demo-v10-linux-spi-nand.dts new file mode 100755 -index 000000000000..50bd024528df +index 000000000..50bd02452 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3568-nvr-demo-v10-linux-spi-nand.dts @@ -0,0 +1,31 @@ @@ -90820,7 +90820,7 @@ index 000000000000..50bd024528df +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3568-nvr-demo-v10-linux.dts b/arch/arm64/boot/dts/rockchip/rk3568-nvr-demo-v10-linux.dts new file mode 100755 -index 000000000000..3317db6ee671 +index 000000000..3317db6ee --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3568-nvr-demo-v10-linux.dts @@ -0,0 +1,27 @@ @@ -90853,7 +90853,7 @@ index 000000000000..3317db6ee671 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3568-nvr-demo-v10.dts b/arch/arm64/boot/dts/rockchip/rk3568-nvr-demo-v10.dts new file mode 100755 -index 000000000000..053d20259e93 +index 000000000..053d20259 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3568-nvr-demo-v10.dts @@ -0,0 +1,27 @@ @@ -90886,7 +90886,7 @@ index 000000000000..053d20259e93 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3568-nvr-demo-v10.dtsi b/arch/arm64/boot/dts/rockchip/rk3568-nvr-demo-v10.dtsi new file mode 100755 -index 000000000000..40a2096bc58b +index 000000000..40a2096bc --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3568-nvr-demo-v10.dtsi @@ -0,0 +1,442 @@ @@ -91334,7 +91334,7 @@ index 000000000000..40a2096bc58b +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3568-nvr-demo-v12-linux-spi-nand.dts b/arch/arm64/boot/dts/rockchip/rk3568-nvr-demo-v12-linux-spi-nand.dts new file mode 100755 -index 000000000000..de8c1a1e734f +index 000000000..de8c1a1e7 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3568-nvr-demo-v12-linux-spi-nand.dts @@ -0,0 +1,20 @@ @@ -91360,7 +91360,7 @@ index 000000000000..de8c1a1e734f + diff --git a/arch/arm64/boot/dts/rockchip/rk3568-nvr-demo-v12-linux.dts b/arch/arm64/boot/dts/rockchip/rk3568-nvr-demo-v12-linux.dts new file mode 100755 -index 000000000000..b605c3d57d26 +index 000000000..b605c3d57 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3568-nvr-demo-v12-linux.dts @@ -0,0 +1,16 @@ @@ -91382,7 +91382,7 @@ index 000000000000..b605c3d57d26 + diff --git a/arch/arm64/boot/dts/rockchip/rk3568-nvr-demo-v12.dtsi b/arch/arm64/boot/dts/rockchip/rk3568-nvr-demo-v12.dtsi new file mode 100755 -index 000000000000..6bb50368a73b +index 000000000..6bb50368a --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3568-nvr-demo-v12.dtsi @@ -0,0 +1,39 @@ @@ -91427,7 +91427,7 @@ index 000000000000..6bb50368a73b +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3568-nvr-linux.dtsi b/arch/arm64/boot/dts/rockchip/rk3568-nvr-linux.dtsi new file mode 100755 -index 000000000000..f9908b61cb41 +index 000000000..f9908b61c --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3568-nvr-linux.dtsi @@ -0,0 +1,55 @@ @@ -91488,7 +91488,7 @@ index 000000000000..f9908b61cb41 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3568-nvr.dtsi b/arch/arm64/boot/dts/rockchip/rk3568-nvr.dtsi new file mode 100755 -index 000000000000..e1ec294b2c82 +index 000000000..e1ec294b2 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3568-nvr.dtsi @@ -0,0 +1,510 @@ @@ -92004,7 +92004,7 @@ index 000000000000..e1ec294b2c82 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3568-pinctrl.dtsi b/arch/arm64/boot/dts/rockchip/rk3568-pinctrl.dtsi new file mode 100755 -index 000000000000..30d8cedfbdc7 +index 000000000..30d8cedfb --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3568-pinctrl.dtsi @@ -0,0 +1,3119 @@ @@ -95129,7 +95129,7 @@ index 000000000000..30d8cedfbdc7 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3568-toybrick-base.dts b/arch/arm64/boot/dts/rockchip/rk3568-toybrick-base.dts new file mode 100755 -index 000000000000..0ef442123d05 +index 000000000..0ef442123 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3568-toybrick-base.dts @@ -0,0 +1,14 @@ @@ -95149,7 +95149,7 @@ index 000000000000..0ef442123d05 + diff --git a/arch/arm64/boot/dts/rockchip/rk3568-toybrick-edp.dtsi b/arch/arm64/boot/dts/rockchip/rk3568-toybrick-edp.dtsi new file mode 100755 -index 000000000000..459fc3b6d6a0 +index 000000000..459fc3b6d --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3568-toybrick-edp.dtsi @@ -0,0 +1,141 @@ @@ -95296,7 +95296,7 @@ index 000000000000..459fc3b6d6a0 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3568-toybrick-mipi-tx0-beiqicloud.dtsi b/arch/arm64/boot/dts/rockchip/rk3568-toybrick-mipi-tx0-beiqicloud.dtsi new file mode 100755 -index 000000000000..25889a206778 +index 000000000..25889a206 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3568-toybrick-mipi-tx0-beiqicloud.dtsi @@ -0,0 +1,395 @@ @@ -95697,7 +95697,7 @@ index 000000000000..25889a206778 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3568-toybrick-mipi-tx0.dtsi b/arch/arm64/boot/dts/rockchip/rk3568-toybrick-mipi-tx0.dtsi new file mode 100755 -index 000000000000..bd32a4246df3 +index 000000000..bd32a4246 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3568-toybrick-mipi-tx0.dtsi @@ -0,0 +1,91 @@ @@ -95794,7 +95794,7 @@ index 000000000000..bd32a4246df3 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3568-toybrick-mipi-tx1.dtsi b/arch/arm64/boot/dts/rockchip/rk3568-toybrick-mipi-tx1.dtsi new file mode 100755 -index 000000000000..70fc8ffc3e41 +index 000000000..70fc8ffc3 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3568-toybrick-mipi-tx1.dtsi @@ -0,0 +1,97 @@ @@ -95897,7 +95897,7 @@ index 000000000000..70fc8ffc3e41 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3568-toybrick-x0-android.dts b/arch/arm64/boot/dts/rockchip/rk3568-toybrick-x0-android.dts new file mode 100755 -index 000000000000..ccfd369d0cd3 +index 000000000..ccfd369d0 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3568-toybrick-x0-android.dts @@ -0,0 +1,13 @@ @@ -95916,7 +95916,7 @@ index 000000000000..ccfd369d0cd3 + diff --git a/arch/arm64/boot/dts/rockchip/rk3568-toybrick-x0-linux-factory.dts b/arch/arm64/boot/dts/rockchip/rk3568-toybrick-x0-linux-factory.dts new file mode 100755 -index 000000000000..3107e3a9937a +index 000000000..3107e3a99 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3568-toybrick-x0-linux-factory.dts @@ -0,0 +1,155 @@ @@ -96077,7 +96077,7 @@ index 000000000000..3107e3a9937a + diff --git a/arch/arm64/boot/dts/rockchip/rk3568-toybrick-x0-linux.dts b/arch/arm64/boot/dts/rockchip/rk3568-toybrick-x0-linux.dts new file mode 100755 -index 000000000000..0fb7b0a65fe5 +index 000000000..0fb7b0a65 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3568-toybrick-x0-linux.dts @@ -0,0 +1,14 @@ @@ -96097,7 +96097,7 @@ index 000000000000..0fb7b0a65fe5 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3568-toybrick-x0.dtsi b/arch/arm64/boot/dts/rockchip/rk3568-toybrick-x0.dtsi new file mode 100755 -index 000000000000..14d80d46b511 +index 000000000..0aba01191 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3568-toybrick-x0.dtsi @@ -0,0 +1,856 @@ @@ -96959,7 +96959,7 @@ index 000000000000..14d80d46b511 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3568-toybrick-x10-linux.dts b/arch/arm64/boot/dts/rockchip/rk3568-toybrick-x10-linux.dts new file mode 100755 -index 000000000000..8dd494ce3a1f +index 000000000..8dd494ce3 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3568-toybrick-x10-linux.dts @@ -0,0 +1,13 @@ @@ -96978,7 +96978,7 @@ index 000000000000..8dd494ce3a1f +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3568-toybrick-x10.dtsi b/arch/arm64/boot/dts/rockchip/rk3568-toybrick-x10.dtsi new file mode 100755 -index 000000000000..7c1919d7d258 +index 000000000..7c1919d7d --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3568-toybrick-x10.dtsi @@ -0,0 +1,816 @@ @@ -97800,7 +97800,7 @@ index 000000000000..7c1919d7d258 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3568-toybrick.dtsi b/arch/arm64/boot/dts/rockchip/rk3568-toybrick.dtsi new file mode 100755 -index 000000000000..8be2d36f38c0 +index 000000000..8be2d36f3 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3568-toybrick.dtsi @@ -0,0 +1,1891 @@ @@ -99697,7 +99697,7 @@ index 000000000000..8be2d36f38c0 +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3568.dtsi b/arch/arm64/boot/dts/rockchip/rk3568.dtsi new file mode 100755 -index 000000000000..372617fee467 +index 000000000..372617fee --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3568.dtsi @@ -0,0 +1,3449 @@ @@ -103152,7 +103152,7 @@ index 000000000000..372617fee467 +#include "rk3568-pinctrl.dtsi" diff --git a/arch/arm64/boot/dts/rockchip/rockchip-pinconf.dtsi b/arch/arm64/boot/dts/rockchip/rockchip-pinconf.dtsi new file mode 100755 -index 000000000000..fc0145333257 +index 000000000..fc0145333 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rockchip-pinconf.dtsi @@ -0,0 +1,382 @@ @@ -103540,7 +103540,7 @@ index 000000000000..fc0145333257 + diff --git a/arch/arm64/include/asm/system_info.h b/arch/arm64/include/asm/system_info.h new file mode 100755 -index 000000000000..a82fe791b2f6 +index 000000000..a82fe791b --- /dev/null +++ b/arch/arm64/include/asm/system_info.h @@ -0,0 +1,14 @@ @@ -103559,7 +103559,7 @@ index 000000000000..a82fe791b2f6 + +#endif /* __ASM_ARM_SYSTEM_INFO_H */ diff --git a/arch/arm64/kernel/cpuinfo.c b/arch/arm64/kernel/cpuinfo.c -index 77605aec25fe..32be174c84d7 100644 +index 77605aec2..32be174c8 100644 --- a/arch/arm64/kernel/cpuinfo.c +++ b/arch/arm64/kernel/cpuinfo.c @@ -25,6 +25,12 @@ @@ -103576,7 +103576,7 @@ index 77605aec25fe..32be174c84d7 100644 * In case the boot CPU is hotpluggable, we record its initial state and * current state separately. Certain system registers may contain different diff --git a/arch/arm64/kernel/process.c b/arch/arm64/kernel/process.c -index 4999caff3281..b47d477f4ce7 100644 +index 4999caff3..b47d477f4 100644 --- a/arch/arm64/kernel/process.c +++ b/arch/arm64/kernel/process.c @@ -191,6 +191,8 @@ void machine_restart(char *cmd) @@ -103589,7 +103589,7 @@ index 4999caff3281..b47d477f4ce7 100644 * UpdateCapsule() depends on the system being reset via * ResetSystem(). diff --git a/drivers/Kconfig b/drivers/Kconfig -index 826b2b19d0b8..d7f2fc98b6f2 100644 +index 826b2b19d..d7f2fc98b 100644 --- a/drivers/Kconfig +++ b/drivers/Kconfig @@ -239,4 +239,8 @@ source "drivers/counter/Kconfig" @@ -103602,7 +103602,7 @@ index 826b2b19d0b8..d7f2fc98b6f2 100644 +source "drivers/rk_nand/Kconfig" endmenu diff --git a/drivers/Makefile b/drivers/Makefile -index ecc494918773..f10cb0bb581e 100644 +index ecc494918..f10cb0bb5 100644 --- a/drivers/Makefile +++ b/drivers/Makefile @@ -193,3 +193,5 @@ obj-$(CONFIG_INTERCONNECT) += interconnect/ @@ -103612,7 +103612,7 @@ index ecc494918773..f10cb0bb581e 100644 +obj-$(CONFIG_RK_FLASH) += rkflash/ +obj-$(CONFIG_RK_NAND) += rk_nand/ diff --git a/drivers/block/nbd.c b/drivers/block/nbd.c -index 07b06fc6f70e..cc9770936c67 100644 +index 07b06fc6f..cc9770936 100644 --- a/drivers/block/nbd.c +++ b/drivers/block/nbd.c @@ -2386,12 +2386,6 @@ static int nbd_genl_status(struct sk_buff *skb, struct genl_info *info) @@ -103629,7 +103629,7 @@ index 07b06fc6f70e..cc9770936c67 100644 ret = idr_for_each(&nbd_index_idr, &status_cb, reply); if (ret) { diff --git a/drivers/clk/Kconfig b/drivers/clk/Kconfig -index c715d4681a0b..42bb63d80971 100644 +index c715d4681..42bb63d80 100644 --- a/drivers/clk/Kconfig +++ b/drivers/clk/Kconfig @@ -38,6 +38,13 @@ menuconfig COMMON_CLK @@ -103647,7 +103647,7 @@ index c715d4681a0b..42bb63d80971 100644 tristate "Clock driver for WM831x/2x PMICs" depends on MFD_WM831X diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c -index 61c78714c095..5c825b523c6b 100644 +index 61c78714c..5c825b523 100644 --- a/drivers/clk/clk.c +++ b/drivers/clk/clk.c @@ -1296,7 +1296,7 @@ static int __init clk_disable_unused(void) @@ -103660,7 +103660,7 @@ index 61c78714c095..5c825b523c6b 100644 static int clk_core_determine_round_nolock(struct clk_core *core, struct clk_rate_request *req) diff --git a/drivers/clk/rockchip/Kconfig b/drivers/clk/rockchip/Kconfig -index 47cd6c5de837..02c5df791017 100644 +index 47cd6c5de..02c5df791 100644 --- a/drivers/clk/rockchip/Kconfig +++ b/drivers/clk/rockchip/Kconfig @@ -2,7 +2,7 @@ @@ -103790,7 +103790,7 @@ index 47cd6c5de837..02c5df791017 100644 + Say y here to enable clk compensation(+/- 1000 ppm). endif diff --git a/drivers/clk/rockchip/Makefile b/drivers/clk/rockchip/Makefile -index a99e4d9bbae1..a4c718bf1126 100644 +index a99e4d9bb..a4c718bf1 100644 --- a/drivers/clk/rockchip/Makefile +++ b/drivers/clk/rockchip/Makefile @@ -13,10 +13,14 @@ clk-rockchip-y += clk-inverter.o @@ -103814,7 +103814,7 @@ index a99e4d9bbae1..a4c718bf1126 100644 obj-$(CONFIG_CLK_RK3399) += clk-rk3399.o +obj-$(CONFIG_CLK_RK3568) += clk-rk3568.o diff --git a/drivers/clk/rockchip/clk-cpu.c b/drivers/clk/rockchip/clk-cpu.c -index 0dc478a19451..55416812bed2 100644 +index 0dc478a19..55416812b 100644 --- a/drivers/clk/rockchip/clk-cpu.c +++ b/drivers/clk/rockchip/clk-cpu.c @@ -51,6 +51,7 @@ @@ -104018,7 +104018,7 @@ index 0dc478a19451..55416812bed2 100644 } diff --git a/drivers/clk/rockchip/clk-dclk-divider.c b/drivers/clk/rockchip/clk-dclk-divider.c new file mode 100755 -index 000000000000..77c35b42207e +index 000000000..77c35b422 --- /dev/null +++ b/drivers/clk/rockchip/clk-dclk-divider.c @@ -0,0 +1,168 @@ @@ -104191,7 +104191,7 @@ index 000000000000..77c35b42207e + return ERR_PTR(-ENOMEM); +} diff --git a/drivers/clk/rockchip/clk-ddr.c b/drivers/clk/rockchip/clk-ddr.c -index 86718c54e56b..3c8bcbee2048 100644 +index 86718c54e..3c8bcbee2 100644 --- a/drivers/clk/rockchip/clk-ddr.c +++ b/drivers/clk/rockchip/clk-ddr.c @@ -8,10 +8,20 @@ @@ -104428,7 +104428,7 @@ index 86718c54e56b..3c8bcbee2048 100644 ddrclk->mux_offset = mux_offset; ddrclk->mux_shift = mux_shift; diff --git a/drivers/clk/rockchip/clk-half-divider.c b/drivers/clk/rockchip/clk-half-divider.c -index ccd5c270c213..b978af08d84f 100644 +index ccd5c270c..b978af08d 100644 --- a/drivers/clk/rockchip/clk-half-divider.c +++ b/drivers/clk/rockchip/clk-half-divider.c @@ -14,9 +14,9 @@ static bool _is_best_half_div(unsigned long rate, unsigned long now, @@ -104529,7 +104529,7 @@ index ccd5c270c213..b978af08d84f 100644 div->width = div_width; div->lock = lock; diff --git a/drivers/clk/rockchip/clk-pll.c b/drivers/clk/rockchip/clk-pll.c -index bbbf9ce42867..f4946461609d 100644 +index bbbf9ce42..f49464616 100644 --- a/drivers/clk/rockchip/clk-pll.c +++ b/drivers/clk/rockchip/clk-pll.c @@ -15,6 +15,9 @@ @@ -105464,7 +105464,7 @@ index bbbf9ce42867..f4946461609d 100644 +#endif /* CONFIG_DEBUG_FS */ diff --git a/drivers/clk/rockchip/clk-pvtm.c b/drivers/clk/rockchip/clk-pvtm.c new file mode 100755 -index 000000000000..ad02b6a571d8 +index 000000000..ad02b6a57 --- /dev/null +++ b/drivers/clk/rockchip/clk-pvtm.c @@ -0,0 +1,310 @@ @@ -105779,7 +105779,7 @@ index 000000000000..ad02b6a571d8 +MODULE_DESCRIPTION("Rockchip Clock Pvtm Driver"); +MODULE_LICENSE("GPL v2"); diff --git a/drivers/clk/rockchip/clk-px30.c b/drivers/clk/rockchip/clk-px30.c -index 6fb9c98b7d24..89ecbd4ed0c9 100644 +index 6fb9c98b7..89ecbd4ed 100644 --- a/drivers/clk/rockchip/clk-px30.c +++ b/drivers/clk/rockchip/clk-px30.c @@ -6,13 +6,16 @@ @@ -106327,7 +106327,7 @@ index 6fb9c98b7d24..89ecbd4ed0c9 100644 +MODULE_LICENSE("GPL"); diff --git a/drivers/clk/rockchip/clk-rk1808.c b/drivers/clk/rockchip/clk-rk1808.c new file mode 100755 -index 000000000000..cb9483623f13 +index 000000000..cb9483623 --- /dev/null +++ b/drivers/clk/rockchip/clk-rk1808.c @@ -0,0 +1,1249 @@ @@ -107581,7 +107581,7 @@ index 000000000000..cb9483623f13 +MODULE_DESCRIPTION("Rockchip RK1808 Clock Driver"); +MODULE_LICENSE("GPL"); diff --git a/drivers/clk/rockchip/clk-rk3036.c b/drivers/clk/rockchip/clk-rk3036.c -index 6a46f85ad837..02770ff67e14 100644 +index 6a46f85ad..02770ff67 100644 --- a/drivers/clk/rockchip/clk-rk3036.c +++ b/drivers/clk/rockchip/clk-rk3036.c @@ -9,13 +9,18 @@ @@ -107865,7 +107865,7 @@ index 6a46f85ad837..02770ff67e14 100644 +MODULE_DESCRIPTION("Rockchip RK3036 Clock Driver"); +MODULE_LICENSE("GPL"); diff --git a/drivers/clk/rockchip/clk-rk3128.c b/drivers/clk/rockchip/clk-rk3128.c -index 4b1122e98e16..6f6f44ac7257 100644 +index 4b1122e98..6f6f44ac7 100644 --- a/drivers/clk/rockchip/clk-rk3128.c +++ b/drivers/clk/rockchip/clk-rk3128.c @@ -6,13 +6,19 @@ @@ -108224,7 +108224,7 @@ index 4b1122e98e16..6f6f44ac7257 100644 +MODULE_DESCRIPTION("Rockchip RK3128 Clock Driver"); +MODULE_LICENSE("GPL"); diff --git a/drivers/clk/rockchip/clk-rk3188.c b/drivers/clk/rockchip/clk-rk3188.c -index 730020fcc7fe..052669bf8978 100644 +index 730020fcc..052669bf8 100644 --- a/drivers/clk/rockchip/clk-rk3188.c +++ b/drivers/clk/rockchip/clk-rk3188.c @@ -5,15 +5,21 @@ @@ -108619,7 +108619,7 @@ index 730020fcc7fe..052669bf8978 100644 +MODULE_DESCRIPTION("Rockchip RK3188 Clock Driver"); +MODULE_LICENSE("GPL"); diff --git a/drivers/clk/rockchip/clk-rk3228.c b/drivers/clk/rockchip/clk-rk3228.c -index 47d6482dda9d..01ff90c8a59f 100644 +index 47d6482dd..01ff90c8a 100644 --- a/drivers/clk/rockchip/clk-rk3228.c +++ b/drivers/clk/rockchip/clk-rk3228.c @@ -7,14 +7,20 @@ @@ -109100,7 +109100,7 @@ index 47d6482dda9d..01ff90c8a59f 100644 +MODULE_DESCRIPTION("Rockchip RK3228 Clock Driver"); +MODULE_LICENSE("GPL"); diff --git a/drivers/clk/rockchip/clk-rk3288.c b/drivers/clk/rockchip/clk-rk3288.c -index 93c794695c46..3e054ddf1931 100644 +index 93c794695..3e054ddf1 100644 --- a/drivers/clk/rockchip/clk-rk3288.c +++ b/drivers/clk/rockchip/clk-rk3288.c @@ -6,14 +6,20 @@ @@ -109547,7 +109547,7 @@ index 93c794695c46..3e054ddf1931 100644 +MODULE_DESCRIPTION("Rockchip RK3288 Clock Driver"); +MODULE_LICENSE("GPL"); diff --git a/drivers/clk/rockchip/clk-rk3308.c b/drivers/clk/rockchip/clk-rk3308.c -index 5bf15f2a44b7..539d37ae89c9 100644 +index 5bf15f2a4..539d37ae8 100644 --- a/drivers/clk/rockchip/clk-rk3308.c +++ b/drivers/clk/rockchip/clk-rk3308.c @@ -8,11 +8,20 @@ @@ -109993,7 +109993,7 @@ index 5bf15f2a44b7..539d37ae89c9 100644 +MODULE_DESCRIPTION("Rockchip RK3308 Clock Driver"); +MODULE_LICENSE("GPL"); diff --git a/drivers/clk/rockchip/clk-rk3328.c b/drivers/clk/rockchip/clk-rk3328.c -index 2429b7c2a8b3..b8064dd74bd6 100644 +index 2429b7c2a..b8064dd74 100644 --- a/drivers/clk/rockchip/clk-rk3328.c +++ b/drivers/clk/rockchip/clk-rk3328.c @@ -6,8 +6,10 @@ @@ -110513,7 +110513,7 @@ index 2429b7c2a8b3..b8064dd74bd6 100644 +MODULE_DESCRIPTION("Rockchip RK3328 Clock Driver"); +MODULE_LICENSE("GPL"); diff --git a/drivers/clk/rockchip/clk-rk3368.c b/drivers/clk/rockchip/clk-rk3368.c -index 55443349439b..4b4513a26740 100644 +index 554433494..4b4513a26 100644 --- a/drivers/clk/rockchip/clk-rk3368.c +++ b/drivers/clk/rockchip/clk-rk3368.c @@ -5,13 +5,19 @@ @@ -110946,7 +110946,7 @@ index 55443349439b..4b4513a26740 100644 +MODULE_DESCRIPTION("Rockchip RK3368 Clock Driver"); +MODULE_LICENSE("GPL"); diff --git a/drivers/clk/rockchip/clk-rk3399.c b/drivers/clk/rockchip/clk-rk3399.c -index 7df2f1e00347..d5071884b3d5 100644 +index 7df2f1e00..d5071884b 100644 --- a/drivers/clk/rockchip/clk-rk3399.c +++ b/drivers/clk/rockchip/clk-rk3399.c @@ -15,6 +15,12 @@ @@ -112192,7 +112192,7 @@ index 7df2f1e00347..d5071884b3d5 100644 diff --git a/drivers/clk/rockchip/clk-rk3568.c b/drivers/clk/rockchip/clk-rk3568.c new file mode 100755 -index 000000000000..44ce9cc542ce +index 000000000..44ce9cc54 --- /dev/null +++ b/drivers/clk/rockchip/clk-rk3568.c @@ -0,0 +1,1757 @@ @@ -113954,7 +113954,7 @@ index 000000000000..44ce9cc542ce +MODULE_LICENSE("GPL"); +MODULE_ALIAS("platform:clk-rk3568"); diff --git a/drivers/clk/rockchip/clk-rv1108.c b/drivers/clk/rockchip/clk-rv1108.c -index 5947d3192866..53eaabb193a4 100644 +index 5947d3192..53eaabb19 100644 --- a/drivers/clk/rockchip/clk-rv1108.c +++ b/drivers/clk/rockchip/clk-rv1108.c @@ -7,13 +7,17 @@ @@ -114252,7 +114252,7 @@ index 5947d3192866..53eaabb193a4 100644 +MODULE_LICENSE("GPL"); diff --git a/drivers/clk/rockchip/clk-rv1126.c b/drivers/clk/rockchip/clk-rv1126.c new file mode 100755 -index 000000000000..09a376c51c0b +index 000000000..09a376c51 --- /dev/null +++ b/drivers/clk/rockchip/clk-rv1126.c @@ -0,0 +1,1586 @@ @@ -115843,7 +115843,7 @@ index 000000000000..09a376c51c0b +MODULE_DESCRIPTION("Rockchip RV1126 Clock Driver"); +MODULE_LICENSE("GPL"); diff --git a/drivers/clk/rockchip/clk.c b/drivers/clk/rockchip/clk.c -index b443169dd408..6c8e47067032 100644 +index b443169dd..6c8e47067 100644 --- a/drivers/clk/rockchip/clk.c +++ b/drivers/clk/rockchip/clk.c @@ -38,6 +38,7 @@ static struct clk *rockchip_clk_register_branch(const char *name, @@ -116180,7 +116180,7 @@ index b443169dd408..6c8e47067032 100644 } EXPORT_SYMBOL_GPL(rockchip_register_restart_notifier); diff --git a/drivers/clk/rockchip/clk.h b/drivers/clk/rockchip/clk.h -index 2271a84124b0..509087750eeb 100644 +index 2271a8412..509087750 100644 --- a/drivers/clk/rockchip/clk.h +++ b/drivers/clk/rockchip/clk.h @@ -37,12 +37,25 @@ struct clk; @@ -116750,7 +116750,7 @@ index 2271a84124b0..509087750eeb 100644 #endif diff --git a/drivers/clk/rockchip/regmap/Kconfig b/drivers/clk/rockchip/regmap/Kconfig new file mode 100755 -index 000000000000..65f691bc4141 +index 000000000..65f691bc4 --- /dev/null +++ b/drivers/clk/rockchip/regmap/Kconfig @@ -0,0 +1,16 @@ @@ -116772,7 +116772,7 @@ index 000000000000..65f691bc4141 + select COMMON_CLK_ROCKCHIP_REGMAP diff --git a/drivers/clk/rockchip/regmap/Makefile b/drivers/clk/rockchip/regmap/Makefile new file mode 100755 -index 000000000000..18d075d093d9 +index 000000000..18d075d09 --- /dev/null +++ b/drivers/clk/rockchip/regmap/Makefile @@ -0,0 +1,13 @@ @@ -116791,7 +116791,7 @@ index 000000000000..18d075d093d9 +obj-$(CONFIG_CLK_RK628) += clk-rk628.o diff --git a/drivers/clk/rockchip/regmap/clk-regmap-composite.c b/drivers/clk/rockchip/regmap/clk-regmap-composite.c new file mode 100755 -index 000000000000..43d2b9a45aca +index 000000000..43d2b9a45 --- /dev/null +++ b/drivers/clk/rockchip/regmap/clk-regmap-composite.c @@ -0,0 +1,400 @@ @@ -117197,7 +117197,7 @@ index 000000000000..43d2b9a45aca +EXPORT_SYMBOL_GPL(devm_clk_regmap_register_composite); diff --git a/drivers/clk/rockchip/regmap/clk-regmap-divider.c b/drivers/clk/rockchip/regmap/clk-regmap-divider.c new file mode 100755 -index 000000000000..cb59a3d9acd2 +index 000000000..cb59a3d9a --- /dev/null +++ b/drivers/clk/rockchip/regmap/clk-regmap-divider.c @@ -0,0 +1,104 @@ @@ -117307,7 +117307,7 @@ index 000000000000..cb59a3d9acd2 +EXPORT_SYMBOL_GPL(devm_clk_regmap_register_divider); diff --git a/drivers/clk/rockchip/regmap/clk-regmap-fractional-divider.c b/drivers/clk/rockchip/regmap/clk-regmap-fractional-divider.c new file mode 100755 -index 000000000000..3d5f1d2691e3 +index 000000000..3d5f1d269 --- /dev/null +++ b/drivers/clk/rockchip/regmap/clk-regmap-fractional-divider.c @@ -0,0 +1,157 @@ @@ -117470,7 +117470,7 @@ index 000000000000..3d5f1d2691e3 +EXPORT_SYMBOL_GPL(devm_clk_regmap_register_fractional_divider); diff --git a/drivers/clk/rockchip/regmap/clk-regmap-gate.c b/drivers/clk/rockchip/regmap/clk-regmap-gate.c new file mode 100755 -index 000000000000..36549b912fa2 +index 000000000..36549b912 --- /dev/null +++ b/drivers/clk/rockchip/regmap/clk-regmap-gate.c @@ -0,0 +1,82 @@ @@ -117558,7 +117558,7 @@ index 000000000000..36549b912fa2 +EXPORT_SYMBOL_GPL(devm_clk_regmap_register_gate); diff --git a/drivers/clk/rockchip/regmap/clk-regmap-mux.c b/drivers/clk/rockchip/regmap/clk-regmap-mux.c new file mode 100755 -index 000000000000..49d58b9c53ab +index 000000000..49d58b9c5 --- /dev/null +++ b/drivers/clk/rockchip/regmap/clk-regmap-mux.c @@ -0,0 +1,79 @@ @@ -117643,7 +117643,7 @@ index 000000000000..49d58b9c53ab +EXPORT_SYMBOL_GPL(devm_clk_regmap_register_mux); diff --git a/drivers/clk/rockchip/regmap/clk-regmap-pll.c b/drivers/clk/rockchip/regmap/clk-regmap-pll.c new file mode 100755 -index 000000000000..24ad7eda9d94 +index 000000000..24ad7eda9 --- /dev/null +++ b/drivers/clk/rockchip/regmap/clk-regmap-pll.c @@ -0,0 +1,363 @@ @@ -118012,7 +118012,7 @@ index 000000000000..24ad7eda9d94 +EXPORT_SYMBOL_GPL(devm_clk_regmap_register_pll); diff --git a/drivers/clk/rockchip/regmap/clk-regmap.h b/drivers/clk/rockchip/regmap/clk-regmap.h new file mode 100755 -index 000000000000..255c0201a590 +index 000000000..255c0201a --- /dev/null +++ b/drivers/clk/rockchip/regmap/clk-regmap.h @@ -0,0 +1,311 @@ @@ -118329,7 +118329,7 @@ index 000000000000..255c0201a590 +#endif diff --git a/drivers/clk/rockchip/regmap/clk-rk618.c b/drivers/clk/rockchip/regmap/clk-rk618.c new file mode 100755 -index 000000000000..c780f502b354 +index 000000000..c780f502b --- /dev/null +++ b/drivers/clk/rockchip/regmap/clk-rk618.c @@ -0,0 +1,408 @@ @@ -118743,7 +118743,7 @@ index 000000000000..c780f502b354 +MODULE_LICENSE("GPL v2"); diff --git a/drivers/clk/rockchip/regmap/clk-rk628.c b/drivers/clk/rockchip/regmap/clk-rk628.c new file mode 100755 -index 000000000000..4c3a9eac0e0c +index 000000000..4c3a9eac0 --- /dev/null +++ b/drivers/clk/rockchip/regmap/clk-rk628.c @@ -0,0 +1,569 @@ @@ -119317,7 +119317,7 @@ index 000000000000..4c3a9eac0e0c +MODULE_DESCRIPTION("Rockchip RK628 CRU driver"); +MODULE_LICENSE("GPL v2"); diff --git a/drivers/clocksource/Kconfig b/drivers/clocksource/Kconfig -index 39f4d8866200..668711048df8 100644 +index 39f4d8866..668711048 100644 --- a/drivers/clocksource/Kconfig +++ b/drivers/clocksource/Kconfig @@ -84,7 +84,9 @@ config IXP4XX_TIMER @@ -119332,7 +119332,7 @@ index 39f4d8866200..668711048df8 100644 select TIMER_OF select CLKSRC_MMIO diff --git a/drivers/clocksource/timer-rockchip.c b/drivers/clocksource/timer-rockchip.c -index 1f95d0aca08f..2f4e970d7433 100644 +index 1f95d0aca..2f4e970d7 100644 --- a/drivers/clocksource/timer-rockchip.c +++ b/drivers/clocksource/timer-rockchip.c @@ -8,11 +8,13 @@ @@ -119426,7 +119426,7 @@ index 1f95d0aca08f..2f4e970d7433 100644 +MODULE_LICENSE("GPL"); +#endif diff --git a/drivers/cpufreq/Kconfig.arm b/drivers/cpufreq/Kconfig.arm -index 1f73fa75b1a0..0faef5fc6df3 100644 +index 1f73fa75b..0faef5fc6 100644 --- a/drivers/cpufreq/Kconfig.arm +++ b/drivers/cpufreq/Kconfig.arm @@ -158,6 +158,16 @@ config ARM_RASPBERRYPI_CPUFREQ @@ -119447,7 +119447,7 @@ index 1f73fa75b1a0..0faef5fc6df3 100644 bool help diff --git a/drivers/cpufreq/Makefile b/drivers/cpufreq/Makefile -index f1b7e3dd6e5d..2e0e827afd21 100644 +index f1b7e3dd6..2e0e827af 100644 --- a/drivers/cpufreq/Makefile +++ b/drivers/cpufreq/Makefile @@ -64,6 +64,7 @@ obj-$(CONFIG_PXA3xx) += pxa3xx-cpufreq.o @@ -119459,7 +119459,7 @@ index f1b7e3dd6e5d..2e0e827afd21 100644 obj-$(CONFIG_ARM_S3C2412_CPUFREQ) += s3c2412-cpufreq.o obj-$(CONFIG_ARM_S3C2416_CPUFREQ) += s3c2416-cpufreq.o diff --git a/drivers/cpufreq/cpufreq-dt-platdev.c b/drivers/cpufreq/cpufreq-dt-platdev.c -index a3734014db47..0b91e3616a11 100644 +index a3734014d..0b91e3616 100644 --- a/drivers/cpufreq/cpufreq-dt-platdev.c +++ b/drivers/cpufreq/cpufreq-dt-platdev.c @@ -66,21 +66,6 @@ static const struct of_device_id whitelist[] __initconst = { @@ -119514,7 +119514,7 @@ index a3734014db47..0b91e3616a11 100644 { .compatible = "st,stih407", }, { .compatible = "st,stih410", }, diff --git a/drivers/cpufreq/cpufreq-dt.c b/drivers/cpufreq/cpufreq-dt.c -index e363ae04aac6..f1327e7fe361 100644 +index e363ae04a..f1327e7fe 100644 --- a/drivers/cpufreq/cpufreq-dt.c +++ b/drivers/cpufreq/cpufreq-dt.c @@ -23,6 +23,9 @@ @@ -119804,7 +119804,7 @@ index e363ae04aac6..f1327e7fe361 100644 list_del(&priv->node); } diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c -index ebee0ad559fa..56fecf202164 100644 +index ebee0ad55..56fecf202 100644 --- a/drivers/cpufreq/cpufreq.c +++ b/drivers/cpufreq/cpufreq.c @@ -688,8 +688,12 @@ static ssize_t show_##file_name \ @@ -119830,7 +119830,7 @@ index ebee0ad559fa..56fecf202164 100644 /** * cpufreq_update_policy - Re-evaluate an existing cpufreq policy. diff --git a/drivers/cpufreq/cpufreq_userspace.c b/drivers/cpufreq/cpufreq_userspace.c -index 50a4d7846580..1f001d281718 100644 +index 50a4d7846..1f001d281 100644 --- a/drivers/cpufreq/cpufreq_userspace.c +++ b/drivers/cpufreq/cpufreq_userspace.c @@ -78,20 +78,18 @@ static int cpufreq_userspace_policy_start(struct cpufreq_policy *policy) @@ -119858,7 +119858,7 @@ index 50a4d7846580..1f001d281718 100644 diff --git a/drivers/cpufreq/rockchip-cpufreq.c b/drivers/cpufreq/rockchip-cpufreq.c new file mode 100755 -index 000000000000..1a0e960870c1 +index 000000000..1a0e96087 --- /dev/null +++ b/drivers/cpufreq/rockchip-cpufreq.c @@ -0,0 +1,638 @@ @@ -120502,7 +120502,7 @@ index 000000000000..1a0e960870c1 +MODULE_LICENSE("GPL v2"); diff --git a/drivers/cpufreq/rockchip-cpufreq.h b/drivers/cpufreq/rockchip-cpufreq.h new file mode 100755 -index 000000000000..b8ecce6c676d +index 000000000..b8ecce6c6 --- /dev/null +++ b/drivers/cpufreq/rockchip-cpufreq.h @@ -0,0 +1,24 @@ @@ -120531,7 +120531,7 @@ index 000000000000..b8ecce6c676d + +#endif diff --git a/drivers/cpuidle/driver.c b/drivers/cpuidle/driver.c -index 4070e573bf43..557f59ac47a3 100644 +index 4070e573b..557f59ac4 100644 --- a/drivers/cpuidle/driver.c +++ b/drivers/cpuidle/driver.c @@ -381,3 +381,4 @@ void cpuidle_driver_state_disabled(struct cpuidle_driver *drv, int idx, @@ -120540,7 +120540,7 @@ index 4070e573bf43..557f59ac47a3 100644 } +EXPORT_SYMBOL_GPL(cpuidle_driver_state_disabled); diff --git a/drivers/cpuidle/governor.c b/drivers/cpuidle/governor.c -index 29acaf48e575..0e51ed25665e 100644 +index 29acaf48e..0e51ed256 100644 --- a/drivers/cpuidle/governor.c +++ b/drivers/cpuidle/governor.c @@ -102,6 +102,7 @@ int cpuidle_register_governor(struct cpuidle_governor *gov) @@ -120557,7 +120557,7 @@ index 29acaf48e575..0e51ed25665e 100644 } +EXPORT_SYMBOL_GPL(cpuidle_governor_latency_req); diff --git a/drivers/devfreq/Kconfig b/drivers/devfreq/Kconfig -index 37dc40d1fcfb..ab9c00a1b1c3 100644 +index 37dc40d1f..ab9c00a1b 100644 --- a/drivers/devfreq/Kconfig +++ b/drivers/devfreq/Kconfig @@ -131,15 +131,20 @@ config ARM_TEGRA20_DEVFREQ @@ -120586,7 +120586,7 @@ index 37dc40d1fcfb..ab9c00a1b1c3 100644 from hardware. diff --git a/drivers/devfreq/Makefile b/drivers/devfreq/Makefile -index 3ca1ad0ecb97..abea7adbc7da 100644 +index 3ca1ad0ec..abea7adbc 100644 --- a/drivers/devfreq/Makefile +++ b/drivers/devfreq/Makefile @@ -11,7 +11,8 @@ obj-$(CONFIG_DEVFREQ_GOV_PASSIVE) += governor_passive.o @@ -120600,7 +120600,7 @@ index 3ca1ad0ecb97..abea7adbc7da 100644 obj-$(CONFIG_ARM_TEGRA20_DEVFREQ) += tegra20-devfreq.o diff --git a/drivers/devfreq/devfreq.c b/drivers/devfreq/devfreq.c -index 829128c0cc68..16b6d8f8767d 100644 +index 829128c0c..16b6d8f87 100644 --- a/drivers/devfreq/devfreq.c +++ b/drivers/devfreq/devfreq.c @@ -1763,6 +1763,40 @@ static ssize_t timer_store(struct device *dev, struct device_attribute *attr, @@ -120653,7 +120653,7 @@ index 829128c0cc68..16b6d8f8767d 100644 }; ATTRIBUTE_GROUPS(devfreq); diff --git a/drivers/devfreq/event/Kconfig b/drivers/devfreq/event/Kconfig -index 878825372f6f..4526c69c602e 100644 +index 878825372..4526c69c6 100644 --- a/drivers/devfreq/event/Kconfig +++ b/drivers/devfreq/event/Kconfig @@ -39,4 +39,11 @@ config DEVFREQ_EVENT_ROCKCHIP_DFI @@ -120669,7 +120669,7 @@ index 878825372f6f..4526c69c602e 100644 + endif # PM_DEVFREQ_EVENT diff --git a/drivers/devfreq/event/Makefile b/drivers/devfreq/event/Makefile -index 3c847e5d5a35..03d67f06c22e 100644 +index 3c847e5d5..03d67f06c 100644 --- a/drivers/devfreq/event/Makefile +++ b/drivers/devfreq/event/Makefile @@ -4,3 +4,4 @@ @@ -120678,7 +120678,7 @@ index 3c847e5d5a35..03d67f06c22e 100644 obj-$(CONFIG_DEVFREQ_EVENT_ROCKCHIP_DFI) += rockchip-dfi.o +obj-$(CONFIG_DEVFREQ_EVENT_ROCKCHIP_NOCP) += rockchip-nocp.o diff --git a/drivers/devfreq/event/rockchip-dfi.c b/drivers/devfreq/event/rockchip-dfi.c -index 9a88faaf8b27..9fd6a82f79d6 100644 +index 9a88faaf8..9fd6a82f7 100644 --- a/drivers/devfreq/event/rockchip-dfi.c +++ b/drivers/devfreq/event/rockchip-dfi.c @@ -20,23 +20,70 @@ @@ -121344,7 +121344,7 @@ index 9a88faaf8b27..9fd6a82f79d6 100644 diff --git a/drivers/devfreq/event/rockchip-nocp.c b/drivers/devfreq/event/rockchip-nocp.c new file mode 100755 -index 000000000000..957b84ee3290 +index 000000000..957b84ee3 --- /dev/null +++ b/drivers/devfreq/event/rockchip-nocp.c @@ -0,0 +1,166 @@ @@ -121516,7 +121516,7 @@ index 000000000000..957b84ee3290 +MODULE_LICENSE("GPL v2"); diff --git a/drivers/devfreq/rk3399_dmc.c b/drivers/devfreq/rk3399_dmc.c deleted file mode 100644 -index 2e912166a993..000000000000 +index 2e912166a..000000000 --- a/drivers/devfreq/rk3399_dmc.c +++ /dev/null @@ -1,516 +0,0 @@ @@ -122038,7 +122038,7 @@ index 2e912166a993..000000000000 -MODULE_DESCRIPTION("RK3399 dmcfreq driver with devfreq framework"); diff --git a/drivers/devfreq/rockchip_bus.c b/drivers/devfreq/rockchip_bus.c new file mode 100755 -index 000000000000..7032b4815c5a +index 000000000..7032b4815 --- /dev/null +++ b/drivers/devfreq/rockchip_bus.c @@ -0,0 +1,500 @@ @@ -122544,7 +122544,7 @@ index 000000000000..7032b4815c5a +MODULE_DESCRIPTION("rockchip busfreq driver with devfreq framework"); diff --git a/drivers/devfreq/rockchip_dmc.c b/drivers/devfreq/rockchip_dmc.c new file mode 100755 -index 000000000000..2df1edb1caf3 +index 000000000..2df1edb1c --- /dev/null +++ b/drivers/devfreq/rockchip_dmc.c @@ -0,0 +1,3283 @@ @@ -125833,7 +125833,7 @@ index 000000000000..2df1edb1caf3 +MODULE_LICENSE("GPL v2"); diff --git a/drivers/devfreq/rockchip_dmc_common.c b/drivers/devfreq/rockchip_dmc_common.c new file mode 100755 -index 000000000000..cacc7d02f6fc +index 000000000..cacc7d02f --- /dev/null +++ b/drivers/devfreq/rockchip_dmc_common.c @@ -0,0 +1,168 @@ @@ -126007,7 +126007,7 @@ index 000000000000..cacc7d02f6fc +MODULE_LICENSE("GPL v2"); diff --git a/drivers/devfreq/rockchip_dmc_dbg.c b/drivers/devfreq/rockchip_dmc_dbg.c new file mode 100755 -index 000000000000..80b25e9046d1 +index 000000000..80b25e904 --- /dev/null +++ b/drivers/devfreq/rockchip_dmc_dbg.c @@ -0,0 +1,1061 @@ @@ -127074,7 +127074,7 @@ index 000000000000..80b25e9046d1 +MODULE_DESCRIPTION("rockchip dmc debug driver with devfreq framework"); diff --git a/drivers/devfreq/rockchip_dmc_timing.h b/drivers/devfreq/rockchip_dmc_timing.h new file mode 100755 -index 000000000000..8f2e2c02bb90 +index 000000000..8f2e2c02b --- /dev/null +++ b/drivers/devfreq/rockchip_dmc_timing.h @@ -0,0 +1,1307 @@ @@ -128386,7 +128386,7 @@ index 000000000000..8f2e2c02bb90 +#endif /* __ROCKCHIP_DMC_TIMING_H__ */ + diff --git a/drivers/dma-buf/Kconfig b/drivers/dma-buf/Kconfig -index 3ca7de37dd8f..dec5d6851ac5 100644 +index 3ca7de37d..dec5d6851 100644 --- a/drivers/dma-buf/Kconfig +++ b/drivers/dma-buf/Kconfig @@ -21,7 +21,6 @@ config SW_SYNC @@ -128416,7 +128416,7 @@ index 3ca7de37dd8f..dec5d6851ac5 100644 endmenu diff --git a/drivers/dma-buf/Makefile b/drivers/dma-buf/Makefile -index 995e05f609ff..40d81f23cacf 100644 +index 995e05f60..40d81f23c 100644 --- a/drivers/dma-buf/Makefile +++ b/drivers/dma-buf/Makefile @@ -6,6 +6,7 @@ obj-$(CONFIG_DMABUF_HEAPS) += heaps/ @@ -128429,7 +128429,7 @@ index 995e05f609ff..40d81f23cacf 100644 selftest.o \ diff --git a/drivers/dma-buf/dma-buf-sysfs-stats.c b/drivers/dma-buf/dma-buf-sysfs-stats.c new file mode 100755 -index 000000000000..943e395d1807 +index 000000000..943e395d1 --- /dev/null +++ b/drivers/dma-buf/dma-buf-sysfs-stats.c @@ -0,0 +1,311 @@ @@ -128746,7 +128746,7 @@ index 000000000000..943e395d1807 +} diff --git a/drivers/dma-buf/dma-buf-sysfs-stats.h b/drivers/dma-buf/dma-buf-sysfs-stats.h new file mode 100755 -index 000000000000..5f4703249117 +index 000000000..5f4703249 --- /dev/null +++ b/drivers/dma-buf/dma-buf-sysfs-stats.h @@ -0,0 +1,62 @@ @@ -128813,7 +128813,7 @@ index 000000000000..5f4703249117 +#endif +#endif // _DMA_BUF_SYSFS_STATS_H diff --git a/drivers/dma-buf/dma-buf.c b/drivers/dma-buf/dma-buf.c -index 922416b3aace..0ab865543d1f 100644 +index 922416b3a..0ab865543 100644 --- a/drivers/dma-buf/dma-buf.c +++ b/drivers/dma-buf/dma-buf.c @@ -29,7 +29,7 @@ @@ -129147,7 +129147,7 @@ index 922416b3aace..0ab865543d1f 100644 } __exitcall(dma_buf_deinit); diff --git a/drivers/dma-buf/dma-fence.c b/drivers/dma-buf/dma-fence.c -index 7475e09b0680..d64fc03929be 100644 +index 7475e09b0..d64fc0392 100644 --- a/drivers/dma-buf/dma-fence.c +++ b/drivers/dma-buf/dma-fence.c @@ -312,22 +312,25 @@ void __dma_fence_might_wait(void) @@ -129260,7 +129260,7 @@ index 7475e09b0680..d64fc03929be 100644 dma_fence_end_signalling(tmp); diff --git a/drivers/dma-buf/dma-heap.c b/drivers/dma-buf/dma-heap.c -index afd22c9dbdcf..4fb22001b2ca 100644 +index afd22c9db..4fb22001b 100644 --- a/drivers/dma-buf/dma-heap.c +++ b/drivers/dma-buf/dma-heap.c @@ -30,6 +30,7 @@ @@ -129593,7 +129593,7 @@ index afd22c9dbdcf..4fb22001b2ca 100644 } subsys_initcall(dma_heap_init); diff --git a/drivers/dma-buf/heaps/Kconfig b/drivers/dma-buf/heaps/Kconfig -index a5eef06c4226..ff52efa83f39 100644 +index a5eef06c4..ff52efa83 100644 --- a/drivers/dma-buf/heaps/Kconfig +++ b/drivers/dma-buf/heaps/Kconfig @@ -1,12 +1,22 @@ @@ -129623,7 +129623,7 @@ index a5eef06c4226..ff52efa83f39 100644 help Choose this option to enable dma-buf CMA heap. This heap is backed diff --git a/drivers/dma-buf/heaps/Makefile b/drivers/dma-buf/heaps/Makefile -index 6e54cdec3da0..4d4cd94a3a4a 100644 +index 6e54cdec3..4d4cd94a3 100644 --- a/drivers/dma-buf/heaps/Makefile +++ b/drivers/dma-buf/heaps/Makefile @@ -1,4 +1,5 @@ @@ -129634,7 +129634,7 @@ index 6e54cdec3da0..4d4cd94a3a4a 100644 obj-$(CONFIG_DMABUF_HEAPS_SYSTEM) += system_heap.o obj-$(CONFIG_DMABUF_HEAPS_CMA) += cma_heap.o diff --git a/drivers/dma-buf/heaps/cma_heap.c b/drivers/dma-buf/heaps/cma_heap.c -index e55384dc115b..4931578df815 100644 +index e55384dc1..4931578df 100644 --- a/drivers/dma-buf/heaps/cma_heap.c +++ b/drivers/dma-buf/heaps/cma_heap.c @@ -2,76 +2,304 @@ @@ -130049,7 +130049,7 @@ index e55384dc115b..4931578df815 100644 static const struct dma_heap_ops cma_heap_ops = { diff --git a/drivers/dma-buf/heaps/deferred-free-helper.c b/drivers/dma-buf/heaps/deferred-free-helper.c new file mode 100755 -index 000000000000..e19c8b68dfeb +index 000000000..e19c8b68d --- /dev/null +++ b/drivers/dma-buf/heaps/deferred-free-helper.c @@ -0,0 +1,138 @@ @@ -130193,7 +130193,7 @@ index 000000000000..e19c8b68dfeb + diff --git a/drivers/dma-buf/heaps/deferred-free-helper.h b/drivers/dma-buf/heaps/deferred-free-helper.h new file mode 100755 -index 000000000000..11940328ce3f +index 000000000..11940328c --- /dev/null +++ b/drivers/dma-buf/heaps/deferred-free-helper.h @@ -0,0 +1,55 @@ @@ -130254,7 +130254,7 @@ index 000000000000..11940328ce3f +#endif diff --git a/drivers/dma-buf/heaps/heap-helpers.c b/drivers/dma-buf/heaps/heap-helpers.c deleted file mode 100644 -index d0696cf937af..000000000000 +index d0696cf93..000000000 --- a/drivers/dma-buf/heaps/heap-helpers.c +++ /dev/null @@ -1,270 +0,0 @@ @@ -130530,7 +130530,7 @@ index d0696cf937af..000000000000 -}; diff --git a/drivers/dma-buf/heaps/heap-helpers.h b/drivers/dma-buf/heaps/heap-helpers.h deleted file mode 100644 -index 805d2df88024..000000000000 +index 805d2df88..000000000 --- a/drivers/dma-buf/heaps/heap-helpers.h +++ /dev/null @@ -1,53 +0,0 @@ @@ -130589,7 +130589,7 @@ index 805d2df88024..000000000000 -#endif /* _HEAP_HELPERS_H */ diff --git a/drivers/dma-buf/heaps/page_pool.c b/drivers/dma-buf/heaps/page_pool.c new file mode 100755 -index 000000000000..7c34a1ba48bb +index 000000000..7c34a1ba4 --- /dev/null +++ b/drivers/dma-buf/heaps/page_pool.c @@ -0,0 +1,247 @@ @@ -130842,7 +130842,7 @@ index 000000000000..7c34a1ba48bb +MODULE_LICENSE("GPL v2"); diff --git a/drivers/dma-buf/heaps/page_pool.h b/drivers/dma-buf/heaps/page_pool.h new file mode 100755 -index 000000000000..6b083b04f195 +index 000000000..6b083b04f --- /dev/null +++ b/drivers/dma-buf/heaps/page_pool.h @@ -0,0 +1,55 @@ @@ -130902,7 +130902,7 @@ index 000000000000..6b083b04f195 + +#endif /* _DMABUF_PAGE_POOL_H */ diff --git a/drivers/dma-buf/heaps/system_heap.c b/drivers/dma-buf/heaps/system_heap.c -index 0bf688e3c023..15796bc4c033 100644 +index 0bf688e3c..15796bc4c 100644 --- a/drivers/dma-buf/heaps/system_heap.c +++ b/drivers/dma-buf/heaps/system_heap.c @@ -3,7 +3,11 @@ @@ -131543,7 +131543,7 @@ index 0bf688e3c023..15796bc4c033 100644 module_init(system_heap_create); MODULE_LICENSE("GPL v2"); diff --git a/drivers/dma-buf/sw_sync.c b/drivers/dma-buf/sw_sync.c -index 348b3a9170fa..3daa6c76b8dd 100644 +index 348b3a917..3daa6c76b 100644 --- a/drivers/dma-buf/sw_sync.c +++ b/drivers/dma-buf/sw_sync.c @@ -7,6 +7,8 @@ @@ -131570,7 +131570,7 @@ index 348b3a9170fa..3daa6c76b8dd 100644 + +MODULE_LICENSE("GPL v2"); diff --git a/drivers/dma-buf/sync_debug.c b/drivers/dma-buf/sync_debug.c -index 101394f16930..a2f906741ce0 100644 +index 101394f16..a2f906741 100644 --- a/drivers/dma-buf/sync_debug.c +++ b/drivers/dma-buf/sync_debug.c @@ -8,6 +8,7 @@ @@ -131587,7 +131587,7 @@ index 101394f16930..a2f906741ce0 100644 late_initcall(sync_debugfs_init); +#endif diff --git a/drivers/dma-buf/sync_debug.h b/drivers/dma-buf/sync_debug.h -index 6176e52ba2d7..ee84997da6b4 100644 +index 6176e52ba..ee84997da 100644 --- a/drivers/dma-buf/sync_debug.h +++ b/drivers/dma-buf/sync_debug.h @@ -62,11 +62,18 @@ struct sync_pt { @@ -131610,7 +131610,7 @@ index 6176e52ba2d7..ee84997da6b4 100644 #endif /* _LINUX_SYNC_H */ diff --git a/drivers/firmware/Kconfig b/drivers/firmware/Kconfig -index c08968c5ddf8..d9dbfda3c5f2 100644 +index c08968c5d..d9dbfda3c 100644 --- a/drivers/firmware/Kconfig +++ b/drivers/firmware/Kconfig @@ -9,7 +9,7 @@ menu "Firmware Drivers" @@ -131637,7 +131637,7 @@ index c08968c5ddf8..d9dbfda3c5f2 100644 tristate "TI System Control Interface (TISCI) Message Protocol" depends on TI_MESSAGE_MANAGER diff --git a/drivers/firmware/Makefile b/drivers/firmware/Makefile -index 5e013b6a3692..850970fbacbc 100644 +index 5e013b6a3..850970fba 100644 --- a/drivers/firmware/Makefile +++ b/drivers/firmware/Makefile @@ -16,6 +16,7 @@ obj-$(CONFIG_ISCSI_IBFT_FIND) += iscsi_ibft_find.o @@ -131650,7 +131650,7 @@ index 5e013b6a3692..850970fbacbc 100644 obj-$(CONFIG_TI_SCI_PROTOCOL) += ti_sci.o diff --git a/drivers/firmware/rockchip_sip.c b/drivers/firmware/rockchip_sip.c new file mode 100755 -index 000000000000..af98657bb83e +index 000000000..af98657bb --- /dev/null +++ b/drivers/firmware/rockchip_sip.c @@ -0,0 +1,578 @@ @@ -132233,7 +132233,7 @@ index 000000000000..af98657bb83e +MODULE_DESCRIPTION("Rockchip SIP Call"); +MODULE_LICENSE("GPL"); diff --git a/drivers/gpio/Kconfig b/drivers/gpio/Kconfig -index d1300fc003ed..9a4110ad1c20 100644 +index d1300fc00..9a4110ad1 100644 --- a/drivers/gpio/Kconfig +++ b/drivers/gpio/Kconfig @@ -495,6 +495,14 @@ config GPIO_REG @@ -132252,7 +132252,7 @@ index d1300fc003ed..9a4110ad1c20 100644 tristate "SAMA5D2 PIOBU GPIO support" depends on MFD_SYSCON diff --git a/drivers/gpio/Makefile b/drivers/gpio/Makefile -index 09dada80ac34..ce6cafb6d3de 100644 +index 09dada80a..ce6cafb6d 100644 --- a/drivers/gpio/Makefile +++ b/drivers/gpio/Makefile @@ -125,6 +125,7 @@ obj-$(CONFIG_GPIO_RCAR) += gpio-rcar.o @@ -132265,7 +132265,7 @@ index 09dada80ac34..ce6cafb6d3de 100644 obj-$(CONFIG_GPIO_SCH311X) += gpio-sch311x.o diff --git a/drivers/gpio/gpio-rockchip.c b/drivers/gpio/gpio-rockchip.c new file mode 100755 -index 000000000000..1d1e9a64cceb +index 000000000..1d1e9a64c --- /dev/null +++ b/drivers/gpio/gpio-rockchip.c @@ -0,0 +1,746 @@ @@ -133016,7 +133016,7 @@ index 000000000000..1d1e9a64cceb +MODULE_LICENSE("GPL v2"); +MODULE_DEVICE_TABLE(of, rockchip_gpio_match); diff --git a/drivers/gpio/gpiolib-of.c b/drivers/gpio/gpiolib-of.c -index 2f895a2b8411..be9002d622d5 100644 +index 2f895a2b8..be9002d62 100644 --- a/drivers/gpio/gpiolib-of.c +++ b/drivers/gpio/gpiolib-of.c @@ -1039,3 +1039,14 @@ void of_gpiochip_remove(struct gpio_chip *chip) @@ -133035,7 +133035,7 @@ index 2f895a2b8411..be9002d622d5 100644 + gdev->dev.fwnode = of_fwnode_handle(gdev->dev.of_node); +} diff --git a/drivers/gpio/gpiolib-of.h b/drivers/gpio/gpiolib-of.h -index ed26664f1537..8af2bc899aab 100644 +index ed26664f1..8af2bc899 100644 --- a/drivers/gpio/gpiolib-of.h +++ b/drivers/gpio/gpiolib-of.h @@ -15,6 +15,7 @@ int of_gpiochip_add(struct gpio_chip *gc); @@ -133058,7 +133058,7 @@ index ed26664f1537..8af2bc899aab 100644 extern struct notifier_block gpio_of_notifier; diff --git a/drivers/gpu/Makefile b/drivers/gpu/Makefile -index 835c88318cec..b66e520ebbdd 100644 +index 835c88318..b66e520eb 100644 --- a/drivers/gpu/Makefile +++ b/drivers/gpu/Makefile @@ -3,6 +3,6 @@ @@ -133071,7 +133071,7 @@ index 835c88318cec..b66e520ebbdd 100644 obj-$(CONFIG_TRACE_GPU_MEM) += trace/ diff --git a/drivers/gpu/arm/Kbuild b/drivers/gpu/arm/Kbuild new file mode 100755 -index 000000000000..b3466f167d8e +index 000000000..b3466f167 --- /dev/null +++ b/drivers/gpu/arm/Kbuild @@ -0,0 +1,31 @@ @@ -133108,7 +133108,7 @@ index 000000000000..b3466f167d8e +obj-$(CONFIG_MALI_BIFROST_FOR_LINUX) += bifrost_for_linux/ diff --git a/drivers/gpu/arm/Kconfig b/drivers/gpu/arm/Kconfig new file mode 100755 -index 000000000000..599711c18af9 +index 000000000..599711c18 --- /dev/null +++ b/drivers/gpu/arm/Kconfig @@ -0,0 +1,48 @@ @@ -133162,7 +133162,7 @@ index 000000000000..599711c18af9 +source "drivers/gpu/arm/bifrost/Kconfig" diff --git a/drivers/gpu/arm/bifrost/Kbuild b/drivers/gpu/arm/bifrost/Kbuild new file mode 100755 -index 000000000000..c05dc8399027 +index 000000000..c05dc8399 --- /dev/null +++ b/drivers/gpu/arm/bifrost/Kbuild @@ -0,0 +1,229 @@ @@ -133397,7 +133397,7 @@ index 000000000000..c05dc8399027 +obj-$(CONFIG_MALI_KUTF) += tests/ diff --git a/drivers/gpu/arm/bifrost/Kconfig b/drivers/gpu/arm/bifrost/Kconfig new file mode 100755 -index 000000000000..ccb16671047a +index 000000000..ccb166710 --- /dev/null +++ b/drivers/gpu/arm/bifrost/Kconfig @@ -0,0 +1,308 @@ @@ -133711,7 +133711,7 @@ index 000000000000..ccb16671047a +# source "drivers/gpu/arm/midgard/tests/Kconfig" diff --git a/drivers/gpu/arm/bifrost/Makefile b/drivers/gpu/arm/bifrost/Makefile new file mode 100755 -index 000000000000..53a12094ec14 +index 000000000..53a12094e --- /dev/null +++ b/drivers/gpu/arm/bifrost/Makefile @@ -0,0 +1,38 @@ @@ -133755,7 +133755,7 @@ index 000000000000..53a12094ec14 + $(MAKE) -C $(KDIR) M=$(CURDIR) clean diff --git a/drivers/gpu/arm/bifrost/Makefile.kbase b/drivers/gpu/arm/bifrost/Makefile.kbase new file mode 100755 -index 000000000000..6b0f81ee76e8 +index 000000000..6b0f81ee7 --- /dev/null +++ b/drivers/gpu/arm/bifrost/Makefile.kbase @@ -0,0 +1,23 @@ @@ -133784,7 +133784,7 @@ index 000000000000..6b0f81ee76e8 + diff --git a/drivers/gpu/arm/bifrost/Mconfig b/drivers/gpu/arm/bifrost/Mconfig new file mode 100755 -index 000000000000..99ababfc2d16 +index 000000000..99ababfc2 --- /dev/null +++ b/drivers/gpu/arm/bifrost/Mconfig @@ -0,0 +1,277 @@ @@ -134067,7 +134067,7 @@ index 000000000000..99ababfc2d16 +source "kernel/drivers/gpu/arm/midgard/tests/Mconfig" diff --git a/drivers/gpu/arm/bifrost/arbiter/Kbuild b/drivers/gpu/arm/bifrost/arbiter/Kbuild new file mode 100755 -index 000000000000..98e47bed223a +index 000000000..98e47bed2 --- /dev/null +++ b/drivers/gpu/arm/bifrost/arbiter/Kbuild @@ -0,0 +1,24 @@ @@ -134097,7 +134097,7 @@ index 000000000000..98e47bed223a + arbiter/mali_kbase_arbiter_pm.o diff --git a/drivers/gpu/arm/bifrost/arbiter/mali_kbase_arbif.c b/drivers/gpu/arm/bifrost/arbiter/mali_kbase_arbif.c new file mode 100755 -index 000000000000..ddf1a0ce0b05 +index 000000000..ddf1a0ce0 --- /dev/null +++ b/drivers/gpu/arm/bifrost/arbiter/mali_kbase_arbif.c @@ -0,0 +1,175 @@ @@ -134278,7 +134278,7 @@ index 000000000000..ddf1a0ce0b05 +} diff --git a/drivers/gpu/arm/bifrost/arbiter/mali_kbase_arbif.h b/drivers/gpu/arm/bifrost/arbiter/mali_kbase_arbif.h new file mode 100755 -index 000000000000..e7e9de76c94c +index 000000000..e7e9de76c --- /dev/null +++ b/drivers/gpu/arm/bifrost/arbiter/mali_kbase_arbif.h @@ -0,0 +1,133 @@ @@ -134417,7 +134417,7 @@ index 000000000000..e7e9de76c94c +#endif /* _MALI_KBASE_ARBIF_H_ */ diff --git a/drivers/gpu/arm/bifrost/arbiter/mali_kbase_arbiter_defs.h b/drivers/gpu/arm/bifrost/arbiter/mali_kbase_arbiter_defs.h new file mode 100755 -index 000000000000..1f53cbf1a286 +index 000000000..1f53cbf1a --- /dev/null +++ b/drivers/gpu/arm/bifrost/arbiter/mali_kbase_arbiter_defs.h @@ -0,0 +1,95 @@ @@ -134518,7 +134518,7 @@ index 000000000000..1f53cbf1a286 +#endif /* _MALI_KBASE_ARBITER_DEFS_H_ */ diff --git a/drivers/gpu/arm/bifrost/arbiter/mali_kbase_arbiter_interface.h b/drivers/gpu/arm/bifrost/arbiter/mali_kbase_arbiter_interface.h new file mode 100755 -index 000000000000..5d5d8a7d2cff +index 000000000..5d5d8a7d2 --- /dev/null +++ b/drivers/gpu/arm/bifrost/arbiter/mali_kbase_arbiter_interface.h @@ -0,0 +1,181 @@ @@ -134705,7 +134705,7 @@ index 000000000000..5d5d8a7d2cff +#endif /* _MALI_KBASE_ARBITER_INTERFACE_H_ */ diff --git a/drivers/gpu/arm/bifrost/arbiter/mali_kbase_arbiter_pm.c b/drivers/gpu/arm/bifrost/arbiter/mali_kbase_arbiter_pm.c new file mode 100755 -index 000000000000..02b5de2436ea +index 000000000..02b5de243 --- /dev/null +++ b/drivers/gpu/arm/bifrost/arbiter/mali_kbase_arbiter_pm.c @@ -0,0 +1,676 @@ @@ -135387,7 +135387,7 @@ index 000000000000..02b5de2436ea +} diff --git a/drivers/gpu/arm/bifrost/arbiter/mali_kbase_arbiter_pm.h b/drivers/gpu/arm/bifrost/arbiter/mali_kbase_arbiter_pm.h new file mode 100755 -index 000000000000..3c49eb1948c5 +index 000000000..3c49eb194 --- /dev/null +++ b/drivers/gpu/arm/bifrost/arbiter/mali_kbase_arbiter_pm.h @@ -0,0 +1,159 @@ @@ -135552,7 +135552,7 @@ index 000000000000..3c49eb1948c5 +#endif /*_MALI_KBASE_ARBITER_PM_H_ */ diff --git a/drivers/gpu/arm/bifrost/backend/gpu/Kbuild b/drivers/gpu/arm/bifrost/backend/gpu/Kbuild new file mode 100755 -index 000000000000..b48ab4c51875 +index 000000000..b48ab4c51 --- /dev/null +++ b/drivers/gpu/arm/bifrost/backend/gpu/Kbuild @@ -0,0 +1,65 @@ @@ -135623,7 +135623,7 @@ index 000000000000..b48ab4c51875 +endif diff --git a/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_backend_config.h b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_backend_config.h new file mode 100755 -index 000000000000..4a61f96c8c7d +index 000000000..4a61f96c8 --- /dev/null +++ b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_backend_config.h @@ -0,0 +1,31 @@ @@ -135660,7 +135660,7 @@ index 000000000000..4a61f96c8c7d + diff --git a/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_cache_policy_backend.c b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_cache_policy_backend.c new file mode 100755 -index 000000000000..4e07a3f9d83f +index 000000000..4e07a3f9d --- /dev/null +++ b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_cache_policy_backend.c @@ -0,0 +1,34 @@ @@ -135700,7 +135700,7 @@ index 000000000000..4e07a3f9d83f + diff --git a/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_cache_policy_backend.h b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_cache_policy_backend.h new file mode 100755 -index 000000000000..f78ada74f605 +index 000000000..f78ada74f --- /dev/null +++ b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_cache_policy_backend.h @@ -0,0 +1,39 @@ @@ -135745,7 +135745,7 @@ index 000000000000..f78ada74f605 +#endif /* _KBASE_CACHE_POLICY_H_ */ diff --git a/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_clk_rate_trace_mgr.c b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_clk_rate_trace_mgr.c new file mode 100755 -index 000000000000..187d7d6f6926 +index 000000000..187d7d6f6 --- /dev/null +++ b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_clk_rate_trace_mgr.c @@ -0,0 +1,287 @@ @@ -136038,7 +136038,7 @@ index 000000000000..187d7d6f6926 + diff --git a/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_clk_rate_trace_mgr.h b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_clk_rate_trace_mgr.h new file mode 100755 -index 000000000000..dcafb26ea4c0 +index 000000000..dcafb26ea --- /dev/null +++ b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_clk_rate_trace_mgr.h @@ -0,0 +1,155 @@ @@ -136199,7 +136199,7 @@ index 000000000000..dcafb26ea4c0 + diff --git a/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_debug_job_fault_backend.c b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_debug_job_fault_backend.c new file mode 100755 -index 000000000000..3aadcb04160c +index 000000000..3aadcb041 --- /dev/null +++ b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_debug_job_fault_backend.c @@ -0,0 +1,164 @@ @@ -136369,7 +136369,7 @@ index 000000000000..3aadcb04160c +#endif diff --git a/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_devfreq.c b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_devfreq.c new file mode 100755 -index 000000000000..ff561d180247 +index 000000000..ff561d180 --- /dev/null +++ b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_devfreq.c @@ -0,0 +1,847 @@ @@ -137222,7 +137222,7 @@ index 000000000000..ff561d180247 +} diff --git a/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_devfreq.h b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_devfreq.h new file mode 100755 -index 000000000000..7bcd47c70ef0 +index 000000000..7bcd47c70 --- /dev/null +++ b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_devfreq.h @@ -0,0 +1,47 @@ @@ -137275,7 +137275,7 @@ index 000000000000..7bcd47c70ef0 +#endif /* _BASE_DEVFREQ_H_ */ diff --git a/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_gpuprops_backend.c b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_gpuprops_backend.c new file mode 100755 -index 000000000000..60ae0206d6a8 +index 000000000..60ae0206d --- /dev/null +++ b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_gpuprops_backend.c @@ -0,0 +1,158 @@ @@ -137439,7 +137439,7 @@ index 000000000000..60ae0206d6a8 +} diff --git a/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_instr_backend.c b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_instr_backend.c new file mode 100755 -index 000000000000..54b07483dee6 +index 000000000..54b07483d --- /dev/null +++ b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_instr_backend.c @@ -0,0 +1,520 @@ @@ -137965,7 +137965,7 @@ index 000000000000..54b07483dee6 +#endif diff --git a/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_instr_defs.h b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_instr_defs.h new file mode 100755 -index 000000000000..9f785ce16e17 +index 000000000..9f785ce16 --- /dev/null +++ b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_instr_defs.h @@ -0,0 +1,63 @@ @@ -138034,7 +138034,7 @@ index 000000000000..9f785ce16e17 + diff --git a/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_instr_internal.h b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_instr_internal.h new file mode 100755 -index 000000000000..2254b9f30d02 +index 000000000..2254b9f30 --- /dev/null +++ b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_instr_internal.h @@ -0,0 +1,44 @@ @@ -138084,7 +138084,7 @@ index 000000000000..2254b9f30d02 +#endif /* _KBASE_INSTR_INTERNAL_H_ */ diff --git a/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_irq_internal.h b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_irq_internal.h new file mode 100755 -index 000000000000..ca3c048b637a +index 000000000..ca3c048b6 --- /dev/null +++ b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_irq_internal.h @@ -0,0 +1,44 @@ @@ -138134,7 +138134,7 @@ index 000000000000..ca3c048b637a +#endif /* _KBASE_IRQ_INTERNAL_H_ */ diff --git a/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_irq_linux.c b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_irq_linux.c new file mode 100755 -index 000000000000..b09db552e639 +index 000000000..b09db552e --- /dev/null +++ b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_irq_linux.c @@ -0,0 +1,504 @@ @@ -138644,7 +138644,7 @@ index 000000000000..b09db552e639 +#endif /* !defined(CONFIG_MALI_BIFROST_NO_MALI) */ diff --git a/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_jm_as.c b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_jm_as.c new file mode 100755 -index 000000000000..9b775898dac2 +index 000000000..9b775898d --- /dev/null +++ b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_jm_as.c @@ -0,0 +1,245 @@ @@ -138895,7 +138895,7 @@ index 000000000000..9b775898dac2 + diff --git a/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_jm_defs.h b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_jm_defs.h new file mode 100755 -index 000000000000..9cccf224999e +index 000000000..9cccf2249 --- /dev/null +++ b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_jm_defs.h @@ -0,0 +1,113 @@ @@ -139014,7 +139014,7 @@ index 000000000000..9cccf224999e +#endif /* _KBASE_HWACCESS_GPU_DEFS_H_ */ diff --git a/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_jm_hw.c b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_jm_hw.c new file mode 100755 -index 000000000000..19661c9766c6 +index 000000000..19661c976 --- /dev/null +++ b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_jm_hw.c @@ -0,0 +1,1462 @@ @@ -140482,7 +140482,7 @@ index 000000000000..19661c9766c6 +} diff --git a/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_jm_internal.h b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_jm_internal.h new file mode 100755 -index 000000000000..cd1f9794fdc4 +index 000000000..cd1f9794f --- /dev/null +++ b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_jm_internal.h @@ -0,0 +1,181 @@ @@ -140669,7 +140669,7 @@ index 000000000000..cd1f9794fdc4 +#endif /* _KBASE_JM_HWACCESS_H_ */ diff --git a/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_jm_rb.c b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_jm_rb.c new file mode 100755 -index 000000000000..afaaef27883d +index 000000000..afaaef278 --- /dev/null +++ b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_jm_rb.c @@ -0,0 +1,1659 @@ @@ -142334,7 +142334,7 @@ index 000000000000..afaaef27883d +} diff --git a/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_jm_rb.h b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_jm_rb.h new file mode 100755 -index 000000000000..c3b9f2d85536 +index 000000000..c3b9f2d85 --- /dev/null +++ b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_jm_rb.h @@ -0,0 +1,83 @@ @@ -142423,7 +142423,7 @@ index 000000000000..c3b9f2d85536 +#endif /* _KBASE_HWACCESS_GPU_H_ */ diff --git a/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_js_backend.c b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_js_backend.c new file mode 100755 -index 000000000000..8187e73767be +index 000000000..8187e7376 --- /dev/null +++ b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_js_backend.c @@ -0,0 +1,365 @@ @@ -142794,7 +142794,7 @@ index 000000000000..8187e73767be + diff --git a/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_js_internal.h b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_js_internal.h new file mode 100755 -index 000000000000..6576e55d2e39 +index 000000000..6576e55d2 --- /dev/null +++ b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_js_internal.h @@ -0,0 +1,74 @@ @@ -142874,7 +142874,7 @@ index 000000000000..6576e55d2e39 +#endif /* _KBASE_JS_BACKEND_H_ */ diff --git a/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_l2_mmu_config.c b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_l2_mmu_config.c new file mode 100755 -index 000000000000..d5526caa5899 +index 000000000..d5526caa5 --- /dev/null +++ b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_l2_mmu_config.c @@ -0,0 +1,133 @@ @@ -143013,7 +143013,7 @@ index 000000000000..d5526caa5899 +} diff --git a/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_l2_mmu_config.h b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_l2_mmu_config.h new file mode 100755 -index 000000000000..0c779ac80d27 +index 000000000..0c779ac80 --- /dev/null +++ b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_l2_mmu_config.h @@ -0,0 +1,55 @@ @@ -143074,7 +143074,7 @@ index 000000000000..0c779ac80d27 +#endif /* _KBASE_L2_MMU_CONFIG_H */ diff --git a/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_pm_always_on.c b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_pm_always_on.c new file mode 100755 -index 000000000000..e33fe0b8e415 +index 000000000..e33fe0b8e --- /dev/null +++ b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_pm_always_on.c @@ -0,0 +1,67 @@ @@ -143147,7 +143147,7 @@ index 000000000000..e33fe0b8e415 +KBASE_EXPORT_TEST_API(kbase_pm_always_on_policy_ops); diff --git a/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_pm_always_on.h b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_pm_always_on.h new file mode 100755 -index 000000000000..e7927cf82e5a +index 000000000..e7927cf82 --- /dev/null +++ b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_pm_always_on.h @@ -0,0 +1,81 @@ @@ -143234,7 +143234,7 @@ index 000000000000..e7927cf82e5a + diff --git a/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_pm_backend.c b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_pm_backend.c new file mode 100755 -index 000000000000..7b10d06c5fdb +index 000000000..7b10d06c5 --- /dev/null +++ b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_pm_backend.c @@ -0,0 +1,788 @@ @@ -144028,7 +144028,7 @@ index 000000000000..7b10d06c5fdb +#endif /* CONFIG_MALI_ARBITER_SUPPORT */ diff --git a/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_pm_ca.c b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_pm_ca.c new file mode 100755 -index 000000000000..984e12503009 +index 000000000..984e12503 --- /dev/null +++ b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_pm_ca.c @@ -0,0 +1,114 @@ @@ -144148,7 +144148,7 @@ index 000000000000..984e12503009 +} diff --git a/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_pm_ca.h b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_pm_ca.h new file mode 100755 -index 000000000000..5423e96725b9 +index 000000000..5423e9672 --- /dev/null +++ b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_pm_ca.h @@ -0,0 +1,89 @@ @@ -144243,7 +144243,7 @@ index 000000000000..5423e96725b9 +#endif /* _KBASE_PM_CA_H_ */ diff --git a/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_pm_ca_devfreq.h b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_pm_ca_devfreq.h new file mode 100755 -index 000000000000..f67ec650c981 +index 000000000..f67ec650c --- /dev/null +++ b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_pm_ca_devfreq.h @@ -0,0 +1,60 @@ @@ -144309,7 +144309,7 @@ index 000000000000..f67ec650c981 + diff --git a/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_pm_coarse_demand.c b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_pm_coarse_demand.c new file mode 100755 -index 000000000000..9eef44ad877f +index 000000000..9eef44ad8 --- /dev/null +++ b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_pm_coarse_demand.c @@ -0,0 +1,66 @@ @@ -144381,7 +144381,7 @@ index 000000000000..9eef44ad877f +KBASE_EXPORT_TEST_API(kbase_pm_coarse_demand_policy_ops); diff --git a/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_pm_coarse_demand.h b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_pm_coarse_demand.h new file mode 100755 -index 000000000000..304e5d7fa32d +index 000000000..304e5d7fa --- /dev/null +++ b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_pm_coarse_demand.h @@ -0,0 +1,69 @@ @@ -144456,7 +144456,7 @@ index 000000000000..304e5d7fa32d +#endif /* MALI_KBASE_PM_COARSE_DEMAND_H */ diff --git a/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_pm_defs.h b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_pm_defs.h new file mode 100755 -index 000000000000..7322c093c7b6 +index 000000000..7322c093c --- /dev/null +++ b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_pm_defs.h @@ -0,0 +1,560 @@ @@ -145022,7 +145022,7 @@ index 000000000000..7322c093c7b6 +#endif /* _KBASE_PM_HWACCESS_DEFS_H_ */ diff --git a/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_pm_driver.c b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_pm_driver.c new file mode 100755 -index 000000000000..e9e30ebadc2d +index 000000000..e9e30ebad --- /dev/null +++ b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_pm_driver.c @@ -0,0 +1,2545 @@ @@ -147573,7 +147573,7 @@ index 000000000000..e9e30ebadc2d +KBASE_EXPORT_TEST_API(kbase_pm_release_gpu_cycle_counter); diff --git a/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_pm_internal.h b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_pm_internal.h new file mode 100755 -index 000000000000..50ca016bbd6d +index 000000000..50ca016bb --- /dev/null +++ b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_pm_internal.h @@ -0,0 +1,739 @@ @@ -148318,7 +148318,7 @@ index 000000000000..50ca016bbd6d +#endif /* _KBASE_BACKEND_PM_INTERNAL_H_ */ diff --git a/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_pm_l2_states.h b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_pm_l2_states.h new file mode 100755 -index 000000000000..12cb051db42a +index 000000000..12cb051db --- /dev/null +++ b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_pm_l2_states.h @@ -0,0 +1,38 @@ @@ -148362,7 +148362,7 @@ index 000000000000..12cb051db42a +KBASEP_L2_STATE(RESET_WAIT) diff --git a/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_pm_mcu_states.h b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_pm_mcu_states.h new file mode 100755 -index 000000000000..e163bd4f4094 +index 000000000..e163bd4f4 --- /dev/null +++ b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_pm_mcu_states.h @@ -0,0 +1,39 @@ @@ -148407,7 +148407,7 @@ index 000000000000..e163bd4f4094 +KBASEP_MCU_STATE(RESET_WAIT) diff --git a/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_pm_metrics.c b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_pm_metrics.c new file mode 100755 -index 000000000000..b714971ba17c +index 000000000..b714971ba --- /dev/null +++ b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_pm_metrics.c @@ -0,0 +1,324 @@ @@ -148737,7 +148737,7 @@ index 000000000000..b714971ba17c +} diff --git a/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_pm_policy.c b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_pm_policy.c new file mode 100755 -index 000000000000..48b24b1c866e +index 000000000..48b24b1c8 --- /dev/null +++ b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_pm_policy.c @@ -0,0 +1,268 @@ @@ -149011,7 +149011,7 @@ index 000000000000..48b24b1c866e +KBASE_EXPORT_TEST_API(kbase_pm_set_policy); diff --git a/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_pm_policy.h b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_pm_policy.h new file mode 100755 -index 000000000000..f103ef0c01e4 +index 000000000..f103ef0c0 --- /dev/null +++ b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_pm_policy.h @@ -0,0 +1,106 @@ @@ -149123,7 +149123,7 @@ index 000000000000..f103ef0c01e4 +#endif /* _KBASE_PM_POLICY_H_ */ diff --git a/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_pm_shader_states.h b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_pm_shader_states.h new file mode 100755 -index 000000000000..6cafaa171962 +index 000000000..6cafaa171 --- /dev/null +++ b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_pm_shader_states.h @@ -0,0 +1,45 @@ @@ -149174,7 +149174,7 @@ index 000000000000..6cafaa171962 +KBASEP_SHADER_STATE(RESET_WAIT) diff --git a/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_time.c b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_time.c new file mode 100755 -index 000000000000..e19f53b2cbe8 +index 000000000..e19f53b2c --- /dev/null +++ b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_time.c @@ -0,0 +1,81 @@ @@ -149261,7 +149261,7 @@ index 000000000000..e19f53b2cbe8 +} diff --git a/drivers/gpu/arm/bifrost/build.bp b/drivers/gpu/arm/bifrost/build.bp new file mode 100755 -index 000000000000..b9b86184f3be +index 000000000..b9b86184f --- /dev/null +++ b/drivers/gpu/arm/bifrost/build.bp @@ -0,0 +1,186 @@ @@ -149453,7 +149453,7 @@ index 000000000000..b9b86184f3be +} diff --git a/drivers/gpu/arm/bifrost/context/backend/mali_kbase_context_csf.c b/drivers/gpu/arm/bifrost/context/backend/mali_kbase_context_csf.c new file mode 100755 -index 000000000000..7c68eb2f860a +index 000000000..7c68eb2f8 --- /dev/null +++ b/drivers/gpu/arm/bifrost/context/backend/mali_kbase_context_csf.c @@ -0,0 +1,177 @@ @@ -149636,7 +149636,7 @@ index 000000000000..7c68eb2f860a +KBASE_EXPORT_SYMBOL(kbase_destroy_context); diff --git a/drivers/gpu/arm/bifrost/context/backend/mali_kbase_context_jm.c b/drivers/gpu/arm/bifrost/context/backend/mali_kbase_context_jm.c new file mode 100755 -index 000000000000..0eb42589fe46 +index 000000000..0eb42589f --- /dev/null +++ b/drivers/gpu/arm/bifrost/context/backend/mali_kbase_context_jm.c @@ -0,0 +1,230 @@ @@ -149872,7 +149872,7 @@ index 000000000000..0eb42589fe46 +KBASE_EXPORT_SYMBOL(kbase_destroy_context); diff --git a/drivers/gpu/arm/bifrost/context/mali_kbase_context.c b/drivers/gpu/arm/bifrost/context/mali_kbase_context.c new file mode 100755 -index 000000000000..83182f983467 +index 000000000..83182f983 --- /dev/null +++ b/drivers/gpu/arm/bifrost/context/mali_kbase_context.c @@ -0,0 +1,339 @@ @@ -150217,7 +150217,7 @@ index 000000000000..83182f983467 +} diff --git a/drivers/gpu/arm/bifrost/context/mali_kbase_context.h b/drivers/gpu/arm/bifrost/context/mali_kbase_context.h new file mode 100755 -index 000000000000..e4ed8944bdd2 +index 000000000..e4ed8944b --- /dev/null +++ b/drivers/gpu/arm/bifrost/context/mali_kbase_context.h @@ -0,0 +1,157 @@ @@ -150380,7 +150380,7 @@ index 000000000000..e4ed8944bdd2 +#endif /* _KBASE_CONTEXT_H_ */ diff --git a/drivers/gpu/arm/bifrost/context/mali_kbase_context_internal.h b/drivers/gpu/arm/bifrost/context/mali_kbase_context_internal.h new file mode 100755 -index 000000000000..818cdbea960d +index 000000000..818cdbea9 --- /dev/null +++ b/drivers/gpu/arm/bifrost/context/mali_kbase_context_internal.h @@ -0,0 +1,60 @@ @@ -150446,7 +150446,7 @@ index 000000000000..818cdbea960d +void kbase_context_sticky_resource_term(struct kbase_context *kctx); diff --git a/drivers/gpu/arm/bifrost/csf/Kbuild b/drivers/gpu/arm/bifrost/csf/Kbuild new file mode 100755 -index 000000000000..bb61811e6c85 +index 000000000..bb61811e6 --- /dev/null +++ b/drivers/gpu/arm/bifrost/csf/Kbuild @@ -0,0 +1,40 @@ @@ -150492,7 +150492,7 @@ index 000000000000..bb61811e6c85 +mali_kbase-$(CONFIG_MALI_BIFROST_NO_MALI) += csf/mali_kbase_csf_firmware_no_mali.o diff --git a/drivers/gpu/arm/bifrost/csf/mali_base_csf_kernel.h b/drivers/gpu/arm/bifrost/csf/mali_base_csf_kernel.h new file mode 100755 -index 000000000000..301146cbedd3 +index 000000000..301146cbe --- /dev/null +++ b/drivers/gpu/arm/bifrost/csf/mali_base_csf_kernel.h @@ -0,0 +1,598 @@ @@ -151096,7 +151096,7 @@ index 000000000000..301146cbedd3 +#endif /* _BASE_CSF_KERNEL_H_ */ diff --git a/drivers/gpu/arm/bifrost/csf/mali_gpu_csf_control_registers.h b/drivers/gpu/arm/bifrost/csf/mali_gpu_csf_control_registers.h new file mode 100755 -index 000000000000..4fff80ca4023 +index 000000000..4fff80ca4 --- /dev/null +++ b/drivers/gpu/arm/bifrost/csf/mali_gpu_csf_control_registers.h @@ -0,0 +1,33 @@ @@ -151135,7 +151135,7 @@ index 000000000000..4fff80ca4023 +#endif /* _GPU_CSF_CONTROL_REGISTERS_H_ */ diff --git a/drivers/gpu/arm/bifrost/csf/mali_gpu_csf_registers.h b/drivers/gpu/arm/bifrost/csf/mali_gpu_csf_registers.h new file mode 100755 -index 000000000000..5c03445f3c79 +index 000000000..5c03445f3 --- /dev/null +++ b/drivers/gpu/arm/bifrost/csf/mali_gpu_csf_registers.h @@ -0,0 +1,1252 @@ @@ -152393,7 +152393,7 @@ index 000000000000..5c03445f3c79 +#endif /* _GPU_CSF_REGISTERS_H_ */ diff --git a/drivers/gpu/arm/bifrost/csf/mali_kbase_csf.c b/drivers/gpu/arm/bifrost/csf/mali_kbase_csf.c new file mode 100755 -index 000000000000..83d7513e78d9 +index 000000000..83d7513e7 --- /dev/null +++ b/drivers/gpu/arm/bifrost/csf/mali_kbase_csf.c @@ -0,0 +1,2547 @@ @@ -154946,7 +154946,7 @@ index 000000000000..83d7513e78d9 +} diff --git a/drivers/gpu/arm/bifrost/csf/mali_kbase_csf.h b/drivers/gpu/arm/bifrost/csf/mali_kbase_csf.h new file mode 100755 -index 000000000000..c183d0a32302 +index 000000000..c183d0a32 --- /dev/null +++ b/drivers/gpu/arm/bifrost/csf/mali_kbase_csf.h @@ -0,0 +1,444 @@ @@ -155396,7 +155396,7 @@ index 000000000000..c183d0a32302 +#endif /* _KBASE_CSF_H_ */ diff --git a/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_csg_debugfs.c b/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_csg_debugfs.c new file mode 100755 -index 000000000000..fd8329ba9422 +index 000000000..fd8329ba9 --- /dev/null +++ b/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_csg_debugfs.c @@ -0,0 +1,460 @@ @@ -155862,7 +155862,7 @@ index 000000000000..fd8329ba9422 +#endif /* CONFIG_DEBUG_FS */ diff --git a/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_csg_debugfs.h b/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_csg_debugfs.h new file mode 100755 -index 000000000000..c2e99d386f8c +index 000000000..c2e99d386 --- /dev/null +++ b/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_csg_debugfs.h @@ -0,0 +1,48 @@ @@ -155916,7 +155916,7 @@ index 000000000000..c2e99d386f8c +#endif /* _KBASE_CSF_CSG_DEBUGFS_H_ */ diff --git a/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_defs.h b/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_defs.h new file mode 100755 -index 000000000000..3829572a1aeb +index 000000000..3829572a1 --- /dev/null +++ b/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_defs.h @@ -0,0 +1,883 @@ @@ -156805,7 +156805,7 @@ index 000000000000..3829572a1aeb +#endif /* _KBASE_CSF_DEFS_H_ */ diff --git a/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_firmware.c b/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_firmware.c new file mode 100755 -index 000000000000..4a924f346685 +index 000000000..4a924f346 --- /dev/null +++ b/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_firmware.c @@ -0,0 +1,1993 @@ @@ -158804,7 +158804,7 @@ index 000000000000..4a924f346685 +} diff --git a/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_firmware.h b/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_firmware.h new file mode 100755 -index 000000000000..03a5217cffb0 +index 000000000..03a5217cf --- /dev/null +++ b/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_firmware.h @@ -0,0 +1,663 @@ @@ -159473,7 +159473,7 @@ index 000000000000..03a5217cffb0 +#endif diff --git a/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_firmware_cfg.c b/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_firmware_cfg.c new file mode 100755 -index 000000000000..d282d5ca7fc2 +index 000000000..d282d5ca7 --- /dev/null +++ b/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_firmware_cfg.c @@ -0,0 +1,306 @@ @@ -159785,7 +159785,7 @@ index 000000000000..d282d5ca7fc2 +#endif /* CONFIG_SYSFS */ diff --git a/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_firmware_cfg.h b/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_firmware_cfg.h new file mode 100755 -index 000000000000..ab4b6ebc5296 +index 000000000..ab4b6ebc5 --- /dev/null +++ b/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_firmware_cfg.h @@ -0,0 +1,72 @@ @@ -159863,7 +159863,7 @@ index 000000000000..ab4b6ebc5296 +#endif /* _KBASE_CSF_FIRMWARE_CFG_H_ */ diff --git a/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_firmware_no_mali.c b/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_firmware_no_mali.c new file mode 100755 -index 000000000000..7401113c5d6a +index 000000000..7401113c5 --- /dev/null +++ b/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_firmware_no_mali.c @@ -0,0 +1,1012 @@ @@ -160881,7 +160881,7 @@ index 000000000000..7401113c5d6a +} diff --git a/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_heap_context_alloc.c b/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_heap_context_alloc.c new file mode 100755 -index 000000000000..087cc858c2b8 +index 000000000..087cc858c --- /dev/null +++ b/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_heap_context_alloc.c @@ -0,0 +1,196 @@ @@ -161083,7 +161083,7 @@ index 000000000000..087cc858c2b8 +} diff --git a/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_heap_context_alloc.h b/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_heap_context_alloc.h new file mode 100755 -index 000000000000..f71ea01ed8c0 +index 000000000..f71ea01ed --- /dev/null +++ b/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_heap_context_alloc.h @@ -0,0 +1,76 @@ @@ -161165,7 +161165,7 @@ index 000000000000..f71ea01ed8c0 +#endif /* _KBASE_CSF_HEAP_CONTEXT_ALLOC_H_ */ diff --git a/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_ioctl.h b/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_ioctl.h new file mode 100755 -index 000000000000..e9bb8d299754 +index 000000000..e9bb8d299 --- /dev/null +++ b/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_ioctl.h @@ -0,0 +1,379 @@ @@ -161550,7 +161550,7 @@ index 000000000000..e9bb8d299754 +#endif /* _KBASE_CSF_IOCTL_H_ */ diff --git a/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_kcpu.c b/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_kcpu.c new file mode 100755 -index 000000000000..e1263d535918 +index 000000000..e1263d535 --- /dev/null +++ b/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_kcpu.c @@ -0,0 +1,1737 @@ @@ -163293,7 +163293,7 @@ index 000000000000..e1263d535918 +} diff --git a/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_kcpu.h b/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_kcpu.h new file mode 100755 -index 000000000000..45c76af04c0f +index 000000000..45c76af04 --- /dev/null +++ b/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_kcpu.h @@ -0,0 +1,305 @@ @@ -163604,7 +163604,7 @@ index 000000000000..45c76af04c0f +#endif /* _KBASE_CSF_KCPU_H_ */ diff --git a/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_kcpu_debugfs.c b/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_kcpu_debugfs.c new file mode 100755 -index 000000000000..55e3b64cbe71 +index 000000000..55e3b64cb --- /dev/null +++ b/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_kcpu_debugfs.c @@ -0,0 +1,199 @@ @@ -163809,7 +163809,7 @@ index 000000000000..55e3b64cbe71 + diff --git a/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_kcpu_debugfs.h b/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_kcpu_debugfs.h new file mode 100755 -index 000000000000..359fe2cb0168 +index 000000000..359fe2cb0 --- /dev/null +++ b/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_kcpu_debugfs.h @@ -0,0 +1,38 @@ @@ -163853,7 +163853,7 @@ index 000000000000..359fe2cb0168 +#endif /* _KBASE_CSF_KCPU_DEBUGFS_H_ */ diff --git a/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_protected_memory.c b/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_protected_memory.c new file mode 100755 -index 000000000000..987cbc2fc201 +index 000000000..987cbc2fc --- /dev/null +++ b/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_protected_memory.c @@ -0,0 +1,120 @@ @@ -163979,7 +163979,7 @@ index 000000000000..987cbc2fc201 +} diff --git a/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_protected_memory.h b/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_protected_memory.h new file mode 100755 -index 000000000000..2b459911d834 +index 000000000..2b459911d --- /dev/null +++ b/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_protected_memory.h @@ -0,0 +1,72 @@ @@ -164057,7 +164057,7 @@ index 000000000000..2b459911d834 +#endif diff --git a/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_reset_gpu.c b/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_reset_gpu.c new file mode 100755 -index 000000000000..f1a318d26f43 +index 000000000..f1a318d26 --- /dev/null +++ b/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_reset_gpu.c @@ -0,0 +1,355 @@ @@ -164418,7 +164418,7 @@ index 000000000000..f1a318d26f43 +} diff --git a/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_scheduler.c b/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_scheduler.c new file mode 100755 -index 000000000000..a3017a7f25ba +index 000000000..a3017a7f2 --- /dev/null +++ b/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_scheduler.c @@ -0,0 +1,4135 @@ @@ -168559,7 +168559,7 @@ index 000000000000..a3017a7f25ba +} diff --git a/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_scheduler.h b/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_scheduler.h new file mode 100755 -index 000000000000..1b1c0681f64d +index 000000000..1b1c0681f --- /dev/null +++ b/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_scheduler.h @@ -0,0 +1,408 @@ @@ -168973,7 +168973,7 @@ index 000000000000..1b1c0681f64d +#endif /* _KBASE_CSF_SCHEDULER_H_ */ diff --git a/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_tiler_heap.c b/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_tiler_heap.c new file mode 100755 -index 000000000000..60cae15bc8ef +index 000000000..60cae15bc --- /dev/null +++ b/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_tiler_heap.c @@ -0,0 +1,584 @@ @@ -169563,7 +169563,7 @@ index 000000000000..60cae15bc8ef +} diff --git a/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_tiler_heap.h b/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_tiler_heap.h new file mode 100755 -index 000000000000..1a4729df6ca3 +index 000000000..1a4729df6 --- /dev/null +++ b/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_tiler_heap.h @@ -0,0 +1,113 @@ @@ -169682,7 +169682,7 @@ index 000000000000..1a4729df6ca3 +#endif diff --git a/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_tiler_heap_debugfs.c b/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_tiler_heap_debugfs.c new file mode 100755 -index 000000000000..5d744b81fe4a +index 000000000..5d744b81f --- /dev/null +++ b/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_tiler_heap_debugfs.c @@ -0,0 +1,107 @@ @@ -169795,7 +169795,7 @@ index 000000000000..5d744b81fe4a + diff --git a/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_tiler_heap_debugfs.h b/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_tiler_heap_debugfs.h new file mode 100755 -index 000000000000..44c580d82068 +index 000000000..44c580d82 --- /dev/null +++ b/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_tiler_heap_debugfs.h @@ -0,0 +1,38 @@ @@ -169839,7 +169839,7 @@ index 000000000000..44c580d82068 +#endif /* _KBASE_CSF_TILER_HEAP_DEBUGFS_H_ */ diff --git a/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_tiler_heap_def.h b/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_tiler_heap_def.h new file mode 100755 -index 000000000000..1f9e208904a9 +index 000000000..1f9e20890 --- /dev/null +++ b/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_tiler_heap_def.h @@ -0,0 +1,112 @@ @@ -169957,7 +169957,7 @@ index 000000000000..1f9e208904a9 +#endif /* !_KBASE_CSF_TILER_HEAP_DEF_H_ */ diff --git a/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_timeout.c b/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_timeout.c new file mode 100755 -index 000000000000..495ff2850500 +index 000000000..495ff2850 --- /dev/null +++ b/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_timeout.c @@ -0,0 +1,169 @@ @@ -170132,7 +170132,7 @@ index 000000000000..495ff2850500 +} diff --git a/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_timeout.h b/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_timeout.h new file mode 100755 -index 000000000000..d0156c09a60f +index 000000000..d0156c09a --- /dev/null +++ b/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_timeout.h @@ -0,0 +1,69 @@ @@ -170207,7 +170207,7 @@ index 000000000000..d0156c09a60f +#endif /* _KBASE_CSF_TIMEOUT_H_ */ diff --git a/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_tl_reader.c b/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_tl_reader.c new file mode 100755 -index 000000000000..5079a8e5af8c +index 000000000..5079a8e5a --- /dev/null +++ b/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_tl_reader.c @@ -0,0 +1,555 @@ @@ -170768,7 +170768,7 @@ index 000000000000..5079a8e5af8c +} diff --git a/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_tl_reader.h b/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_tl_reader.h new file mode 100755 -index 000000000000..f5ce9d629f55 +index 000000000..f5ce9d629 --- /dev/null +++ b/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_tl_reader.h @@ -0,0 +1,181 @@ @@ -170955,7 +170955,7 @@ index 000000000000..f5ce9d629f55 +#endif /* _KBASE_CSFFW_TL_READER_H_ */ diff --git a/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_trace_buffer.c b/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_trace_buffer.c new file mode 100755 -index 000000000000..4d68766b8b9a +index 000000000..4d68766b8 --- /dev/null +++ b/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_trace_buffer.c @@ -0,0 +1,623 @@ @@ -171584,7 +171584,7 @@ index 000000000000..4d68766b8b9a +#endif /* CONFIG_DEBUG_FS */ diff --git a/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_trace_buffer.h b/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_trace_buffer.h new file mode 100755 -index 000000000000..2cac55e0664d +index 000000000..2cac55e06 --- /dev/null +++ b/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_trace_buffer.h @@ -0,0 +1,177 @@ @@ -171767,7 +171767,7 @@ index 000000000000..2cac55e0664d +#endif /* _KBASE_CSF_TRACE_BUFFER_H_ */ diff --git a/drivers/gpu/arm/bifrost/debug/backend/mali_kbase_debug_ktrace_codes_csf.h b/drivers/gpu/arm/bifrost/debug/backend/mali_kbase_debug_ktrace_codes_csf.h new file mode 100755 -index 000000000000..32181d711193 +index 000000000..32181d711 --- /dev/null +++ b/drivers/gpu/arm/bifrost/debug/backend/mali_kbase_debug_ktrace_codes_csf.h @@ -0,0 +1,116 @@ @@ -171889,7 +171889,7 @@ index 000000000000..32181d711193 +/* ***** THE LACK OF HEADER GUARDS IS INTENTIONAL ***** */ diff --git a/drivers/gpu/arm/bifrost/debug/backend/mali_kbase_debug_ktrace_codes_jm.h b/drivers/gpu/arm/bifrost/debug/backend/mali_kbase_debug_ktrace_codes_jm.h new file mode 100755 -index 000000000000..b201e49bd0f2 +index 000000000..b201e49bd --- /dev/null +++ b/drivers/gpu/arm/bifrost/debug/backend/mali_kbase_debug_ktrace_codes_jm.h @@ -0,0 +1,173 @@ @@ -172068,7 +172068,7 @@ index 000000000000..b201e49bd0f2 +/* ***** THE LACK OF HEADER GUARDS IS INTENTIONAL ***** */ diff --git a/drivers/gpu/arm/bifrost/debug/backend/mali_kbase_debug_ktrace_csf.c b/drivers/gpu/arm/bifrost/debug/backend/mali_kbase_debug_ktrace_csf.c new file mode 100755 -index 000000000000..2ea901b666c2 +index 000000000..2ea901b66 --- /dev/null +++ b/drivers/gpu/arm/bifrost/debug/backend/mali_kbase_debug_ktrace_csf.c @@ -0,0 +1,143 @@ @@ -172217,7 +172217,7 @@ index 000000000000..2ea901b666c2 +#endif /* KBASE_KTRACE_TARGET_RBUF */ diff --git a/drivers/gpu/arm/bifrost/debug/backend/mali_kbase_debug_ktrace_csf.h b/drivers/gpu/arm/bifrost/debug/backend/mali_kbase_debug_ktrace_csf.h new file mode 100755 -index 000000000000..b055ff82a116 +index 000000000..b055ff82a --- /dev/null +++ b/drivers/gpu/arm/bifrost/debug/backend/mali_kbase_debug_ktrace_csf.h @@ -0,0 +1,148 @@ @@ -172371,7 +172371,7 @@ index 000000000000..b055ff82a116 +#endif /* _KBASE_DEBUG_KTRACE_CSF_H_ */ diff --git a/drivers/gpu/arm/bifrost/debug/backend/mali_kbase_debug_ktrace_defs_csf.h b/drivers/gpu/arm/bifrost/debug/backend/mali_kbase_debug_ktrace_defs_csf.h new file mode 100755 -index 000000000000..f265fe9a9753 +index 000000000..f265fe9a9 --- /dev/null +++ b/drivers/gpu/arm/bifrost/debug/backend/mali_kbase_debug_ktrace_defs_csf.h @@ -0,0 +1,85 @@ @@ -172462,7 +172462,7 @@ index 000000000000..f265fe9a9753 +#endif /* _KBASE_DEBUG_KTRACE_DEFS_CSF_H_ */ diff --git a/drivers/gpu/arm/bifrost/debug/backend/mali_kbase_debug_ktrace_defs_jm.h b/drivers/gpu/arm/bifrost/debug/backend/mali_kbase_debug_ktrace_defs_jm.h new file mode 100755 -index 000000000000..ea8e01a87f3f +index 000000000..ea8e01a87 --- /dev/null +++ b/drivers/gpu/arm/bifrost/debug/backend/mali_kbase_debug_ktrace_defs_jm.h @@ -0,0 +1,102 @@ @@ -172570,7 +172570,7 @@ index 000000000000..ea8e01a87f3f +#endif /* _KBASE_DEBUG_KTRACE_DEFS_JM_H_ */ diff --git a/drivers/gpu/arm/bifrost/debug/backend/mali_kbase_debug_ktrace_jm.c b/drivers/gpu/arm/bifrost/debug/backend/mali_kbase_debug_ktrace_jm.c new file mode 100755 -index 000000000000..1b821281f09f +index 000000000..1b821281f --- /dev/null +++ b/drivers/gpu/arm/bifrost/debug/backend/mali_kbase_debug_ktrace_jm.c @@ -0,0 +1,115 @@ @@ -172691,7 +172691,7 @@ index 000000000000..1b821281f09f +#endif /* KBASE_KTRACE_TARGET_RBUF */ diff --git a/drivers/gpu/arm/bifrost/debug/backend/mali_kbase_debug_ktrace_jm.h b/drivers/gpu/arm/bifrost/debug/backend/mali_kbase_debug_ktrace_jm.h new file mode 100755 -index 000000000000..adfcb1aa556e +index 000000000..adfcb1aa5 --- /dev/null +++ b/drivers/gpu/arm/bifrost/debug/backend/mali_kbase_debug_ktrace_jm.h @@ -0,0 +1,309 @@ @@ -173006,7 +173006,7 @@ index 000000000000..adfcb1aa556e +#endif /* _KBASE_DEBUG_KTRACE_JM_H_ */ diff --git a/drivers/gpu/arm/bifrost/debug/backend/mali_kbase_debug_linux_ktrace_csf.h b/drivers/gpu/arm/bifrost/debug/backend/mali_kbase_debug_linux_ktrace_csf.h new file mode 100755 -index 000000000000..d103e5766456 +index 000000000..d103e5766 --- /dev/null +++ b/drivers/gpu/arm/bifrost/debug/backend/mali_kbase_debug_linux_ktrace_csf.h @@ -0,0 +1,147 @@ @@ -173159,7 +173159,7 @@ index 000000000000..d103e5766456 +#endif /* !defined(_KBASE_DEBUG_LINUX_KTRACE_CSF_H_) || defined(TRACE_HEADER_MULTI_READ) */ diff --git a/drivers/gpu/arm/bifrost/debug/backend/mali_kbase_debug_linux_ktrace_jm.h b/drivers/gpu/arm/bifrost/debug/backend/mali_kbase_debug_linux_ktrace_jm.h new file mode 100755 -index 000000000000..037b1edecd8e +index 000000000..037b1edec --- /dev/null +++ b/drivers/gpu/arm/bifrost/debug/backend/mali_kbase_debug_linux_ktrace_jm.h @@ -0,0 +1,165 @@ @@ -173330,7 +173330,7 @@ index 000000000000..037b1edecd8e +#endif /* !defined(_KBASE_DEBUG_LINUX_KTRACE_JM_H_) || defined(TRACE_HEADER_MULTI_READ)*/ diff --git a/drivers/gpu/arm/bifrost/debug/mali_kbase_debug_ktrace.c b/drivers/gpu/arm/bifrost/debug/mali_kbase_debug_ktrace.c new file mode 100755 -index 000000000000..a13c0ba20c94 +index 000000000..a13c0ba20 --- /dev/null +++ b/drivers/gpu/arm/bifrost/debug/mali_kbase_debug_ktrace.c @@ -0,0 +1,356 @@ @@ -173692,7 +173692,7 @@ index 000000000000..a13c0ba20c94 +#endif /* KBASE_KTRACE_TARGET_RBUF */ diff --git a/drivers/gpu/arm/bifrost/debug/mali_kbase_debug_ktrace.h b/drivers/gpu/arm/bifrost/debug/mali_kbase_debug_ktrace.h new file mode 100755 -index 000000000000..e4e2e8c35001 +index 000000000..e4e2e8c35 --- /dev/null +++ b/drivers/gpu/arm/bifrost/debug/mali_kbase_debug_ktrace.h @@ -0,0 +1,226 @@ @@ -173924,7 +173924,7 @@ index 000000000000..e4e2e8c35001 +#endif /* _KBASE_DEBUG_KTRACE_H_ */ diff --git a/drivers/gpu/arm/bifrost/debug/mali_kbase_debug_ktrace_codes.h b/drivers/gpu/arm/bifrost/debug/mali_kbase_debug_ktrace_codes.h new file mode 100755 -index 000000000000..b50bceee4244 +index 000000000..b50bceee4 --- /dev/null +++ b/drivers/gpu/arm/bifrost/debug/mali_kbase_debug_ktrace_codes.h @@ -0,0 +1,165 @@ @@ -174095,7 +174095,7 @@ index 000000000000..b50bceee4244 +/* ***** THE LACK OF HEADER GUARDS IS INTENTIONAL ***** */ diff --git a/drivers/gpu/arm/bifrost/debug/mali_kbase_debug_ktrace_defs.h b/drivers/gpu/arm/bifrost/debug/mali_kbase_debug_ktrace_defs.h new file mode 100755 -index 000000000000..c680feb86387 +index 000000000..c680feb86 --- /dev/null +++ b/drivers/gpu/arm/bifrost/debug/mali_kbase_debug_ktrace_defs.h @@ -0,0 +1,183 @@ @@ -174284,7 +174284,7 @@ index 000000000000..c680feb86387 +#endif /* _KBASE_DEBUG_KTRACE_DEFS_H_ */ diff --git a/drivers/gpu/arm/bifrost/debug/mali_kbase_debug_ktrace_internal.h b/drivers/gpu/arm/bifrost/debug/mali_kbase_debug_ktrace_internal.h new file mode 100755 -index 000000000000..e450760e3426 +index 000000000..e450760e3 --- /dev/null +++ b/drivers/gpu/arm/bifrost/debug/mali_kbase_debug_ktrace_internal.h @@ -0,0 +1,89 @@ @@ -174379,7 +174379,7 @@ index 000000000000..e450760e3426 +#endif /* _KBASE_DEBUG_KTRACE_INTERNAL_H_ */ diff --git a/drivers/gpu/arm/bifrost/debug/mali_kbase_debug_linux_ktrace.h b/drivers/gpu/arm/bifrost/debug/mali_kbase_debug_linux_ktrace.h new file mode 100755 -index 000000000000..27f687faf072 +index 000000000..27f687faf --- /dev/null +++ b/drivers/gpu/arm/bifrost/debug/mali_kbase_debug_linux_ktrace.h @@ -0,0 +1,111 @@ @@ -174496,7 +174496,7 @@ index 000000000000..27f687faf072 +#endif /* !defined(_KBASE_DEBUG_LINUX_KTRACE_H_) || defined(TRACE_HEADER_MULTI_READ) */ diff --git a/drivers/gpu/arm/bifrost/device/backend/mali_kbase_device_csf.c b/drivers/gpu/arm/bifrost/device/backend/mali_kbase_device_csf.c new file mode 100755 -index 000000000000..d8b3fff6a214 +index 000000000..d8b3fff6a --- /dev/null +++ b/drivers/gpu/arm/bifrost/device/backend/mali_kbase_device_csf.c @@ -0,0 +1,274 @@ @@ -174776,7 +174776,7 @@ index 000000000000..d8b3fff6a214 +} diff --git a/drivers/gpu/arm/bifrost/device/backend/mali_kbase_device_hw_csf.c b/drivers/gpu/arm/bifrost/device/backend/mali_kbase_device_hw_csf.c new file mode 100755 -index 000000000000..97bcc1d23aa3 +index 000000000..97bcc1d23 --- /dev/null +++ b/drivers/gpu/arm/bifrost/device/backend/mali_kbase_device_hw_csf.c @@ -0,0 +1,161 @@ @@ -174943,7 +174943,7 @@ index 000000000000..97bcc1d23aa3 +} diff --git a/drivers/gpu/arm/bifrost/device/backend/mali_kbase_device_hw_jm.c b/drivers/gpu/arm/bifrost/device/backend/mali_kbase_device_hw_jm.c new file mode 100755 -index 000000000000..a11d778071b5 +index 000000000..a11d77807 --- /dev/null +++ b/drivers/gpu/arm/bifrost/device/backend/mali_kbase_device_hw_jm.c @@ -0,0 +1,100 @@ @@ -175049,7 +175049,7 @@ index 000000000000..a11d778071b5 +} diff --git a/drivers/gpu/arm/bifrost/device/backend/mali_kbase_device_jm.c b/drivers/gpu/arm/bifrost/device/backend/mali_kbase_device_jm.c new file mode 100755 -index 000000000000..8e853eb82fa1 +index 000000000..8e853eb82 --- /dev/null +++ b/drivers/gpu/arm/bifrost/device/backend/mali_kbase_device_jm.c @@ -0,0 +1,264 @@ @@ -175319,7 +175319,7 @@ index 000000000000..8e853eb82fa1 +} diff --git a/drivers/gpu/arm/bifrost/device/mali_kbase_device.c b/drivers/gpu/arm/bifrost/device/mali_kbase_device.c new file mode 100755 -index 000000000000..76fb33a5e881 +index 000000000..76fb33a5e --- /dev/null +++ b/drivers/gpu/arm/bifrost/device/mali_kbase_device.c @@ -0,0 +1,411 @@ @@ -175736,7 +175736,7 @@ index 000000000000..76fb33a5e881 +} diff --git a/drivers/gpu/arm/bifrost/device/mali_kbase_device.h b/drivers/gpu/arm/bifrost/device/mali_kbase_device.h new file mode 100755 -index 000000000000..33264bcc0464 +index 000000000..33264bcc0 --- /dev/null +++ b/drivers/gpu/arm/bifrost/device/mali_kbase_device.h @@ -0,0 +1,177 @@ @@ -175919,7 +175919,7 @@ index 000000000000..33264bcc0464 +void kbase_gpu_interrupt(struct kbase_device *kbdev, u32 val); diff --git a/drivers/gpu/arm/bifrost/device/mali_kbase_device_hw.c b/drivers/gpu/arm/bifrost/device/mali_kbase_device_hw.c new file mode 100755 -index 000000000000..3a75c6c05cfa +index 000000000..3a75c6c05 --- /dev/null +++ b/drivers/gpu/arm/bifrost/device/mali_kbase_device_hw.c @@ -0,0 +1,184 @@ @@ -176109,7 +176109,7 @@ index 000000000000..3a75c6c05cfa +} diff --git a/drivers/gpu/arm/bifrost/device/mali_kbase_device_internal.h b/drivers/gpu/arm/bifrost/device/mali_kbase_device_internal.h new file mode 100755 -index 000000000000..54644582eac5 +index 000000000..54644582e --- /dev/null +++ b/drivers/gpu/arm/bifrost/device/mali_kbase_device_internal.h @@ -0,0 +1,78 @@ @@ -176193,7 +176193,7 @@ index 000000000000..54644582eac5 +void kbase_device_early_term(struct kbase_device *kbdev); diff --git a/drivers/gpu/arm/bifrost/gpu/backend/mali_kbase_gpu_fault_csf.c b/drivers/gpu/arm/bifrost/gpu/backend/mali_kbase_gpu_fault_csf.c new file mode 100755 -index 000000000000..f7e9b125ba8b +index 000000000..f7e9b125b --- /dev/null +++ b/drivers/gpu/arm/bifrost/gpu/backend/mali_kbase_gpu_fault_csf.c @@ -0,0 +1,105 @@ @@ -176304,7 +176304,7 @@ index 000000000000..f7e9b125ba8b +} diff --git a/drivers/gpu/arm/bifrost/gpu/backend/mali_kbase_gpu_fault_jm.c b/drivers/gpu/arm/bifrost/gpu/backend/mali_kbase_gpu_fault_jm.c new file mode 100755 -index 000000000000..56f541516489 +index 000000000..56f541516 --- /dev/null +++ b/drivers/gpu/arm/bifrost/gpu/backend/mali_kbase_gpu_fault_jm.c @@ -0,0 +1,177 @@ @@ -176487,7 +176487,7 @@ index 000000000000..56f541516489 +} diff --git a/drivers/gpu/arm/bifrost/gpu/backend/mali_kbase_gpu_regmap_csf.h b/drivers/gpu/arm/bifrost/gpu/backend/mali_kbase_gpu_regmap_csf.h new file mode 100755 -index 000000000000..ff6e4ae47184 +index 000000000..ff6e4ae47 --- /dev/null +++ b/drivers/gpu/arm/bifrost/gpu/backend/mali_kbase_gpu_regmap_csf.h @@ -0,0 +1,297 @@ @@ -176790,7 +176790,7 @@ index 000000000000..ff6e4ae47184 +#endif /* _KBASE_GPU_REGMAP_CSF_H_ */ diff --git a/drivers/gpu/arm/bifrost/gpu/backend/mali_kbase_gpu_regmap_jm.h b/drivers/gpu/arm/bifrost/gpu/backend/mali_kbase_gpu_regmap_jm.h new file mode 100755 -index 000000000000..c9c2fbd49058 +index 000000000..c9c2fbd49 --- /dev/null +++ b/drivers/gpu/arm/bifrost/gpu/backend/mali_kbase_gpu_regmap_jm.h @@ -0,0 +1,288 @@ @@ -177084,7 +177084,7 @@ index 000000000000..c9c2fbd49058 +#endif /* _KBASE_GPU_REGMAP_JM_H_ */ diff --git a/drivers/gpu/arm/bifrost/gpu/mali_kbase_gpu.c b/drivers/gpu/arm/bifrost/gpu/mali_kbase_gpu.c new file mode 100755 -index 000000000000..3128db4cabfc +index 000000000..3128db4ca --- /dev/null +++ b/drivers/gpu/arm/bifrost/gpu/mali_kbase_gpu.c @@ -0,0 +1,41 @@ @@ -177131,7 +177131,7 @@ index 000000000000..3128db4cabfc +} diff --git a/drivers/gpu/arm/bifrost/gpu/mali_kbase_gpu.h b/drivers/gpu/arm/bifrost/gpu/mali_kbase_gpu.h new file mode 100755 -index 000000000000..9516e56eda01 +index 000000000..9516e56ed --- /dev/null +++ b/drivers/gpu/arm/bifrost/gpu/mali_kbase_gpu.h @@ -0,0 +1,31 @@ @@ -177168,7 +177168,7 @@ index 000000000000..9516e56eda01 +#endif /* _KBASE_GPU_H_ */ diff --git a/drivers/gpu/arm/bifrost/gpu/mali_kbase_gpu_coherency.h b/drivers/gpu/arm/bifrost/gpu/mali_kbase_gpu_coherency.h new file mode 100755 -index 000000000000..bb2b1613aa47 +index 000000000..bb2b1613a --- /dev/null +++ b/drivers/gpu/arm/bifrost/gpu/mali_kbase_gpu_coherency.h @@ -0,0 +1,31 @@ @@ -177205,7 +177205,7 @@ index 000000000000..bb2b1613aa47 +#endif /* _KBASE_GPU_COHERENCY_H_ */ diff --git a/drivers/gpu/arm/bifrost/gpu/mali_kbase_gpu_fault.h b/drivers/gpu/arm/bifrost/gpu/mali_kbase_gpu_fault.h new file mode 100755 -index 000000000000..e63c3881a3ca +index 000000000..e63c3881a --- /dev/null +++ b/drivers/gpu/arm/bifrost/gpu/mali_kbase_gpu_fault.h @@ -0,0 +1,48 @@ @@ -177259,7 +177259,7 @@ index 000000000000..e63c3881a3ca +#endif /* _KBASE_GPU_FAULT_H_ */ diff --git a/drivers/gpu/arm/bifrost/gpu/mali_kbase_gpu_id.h b/drivers/gpu/arm/bifrost/gpu/mali_kbase_gpu_id.h new file mode 100755 -index 000000000000..31d55264c67f +index 000000000..31d55264c --- /dev/null +++ b/drivers/gpu/arm/bifrost/gpu/mali_kbase_gpu_id.h @@ -0,0 +1,119 @@ @@ -177384,7 +177384,7 @@ index 000000000000..31d55264c67f +#endif /* _KBASE_GPU_ID_H_ */ diff --git a/drivers/gpu/arm/bifrost/gpu/mali_kbase_gpu_regmap.h b/drivers/gpu/arm/bifrost/gpu/mali_kbase_gpu_regmap.h new file mode 100755 -index 000000000000..d8066f43768b +index 000000000..d8066f437 --- /dev/null +++ b/drivers/gpu/arm/bifrost/gpu/mali_kbase_gpu_regmap.h @@ -0,0 +1,428 @@ @@ -177818,7 +177818,7 @@ index 000000000000..d8066f43768b +#endif /* _KBASE_GPU_REGMAP_H_ */ diff --git a/drivers/gpu/arm/bifrost/ipa/Kbuild b/drivers/gpu/arm/bifrost/ipa/Kbuild new file mode 100755 -index 000000000000..04aa9d82d7c5 +index 000000000..04aa9d82d --- /dev/null +++ b/drivers/gpu/arm/bifrost/ipa/Kbuild @@ -0,0 +1,28 @@ @@ -177852,7 +177852,7 @@ index 000000000000..04aa9d82d7c5 +bifrost_kbase-$(CONFIG_DEBUG_FS) += ipa/mali_kbase_ipa_debugfs.o diff --git a/drivers/gpu/arm/bifrost/ipa/mali_kbase_ipa.c b/drivers/gpu/arm/bifrost/ipa/mali_kbase_ipa.c new file mode 100755 -index 000000000000..67adb65306dd +index 000000000..67adb6530 --- /dev/null +++ b/drivers/gpu/arm/bifrost/ipa/mali_kbase_ipa.c @@ -0,0 +1,672 @@ @@ -178530,7 +178530,7 @@ index 000000000000..67adb65306dd +KBASE_EXPORT_TEST_API(kbase_ipa_power_model_ops); diff --git a/drivers/gpu/arm/bifrost/ipa/mali_kbase_ipa.h b/drivers/gpu/arm/bifrost/ipa/mali_kbase_ipa.h new file mode 100755 -index 000000000000..f43f3d9416b4 +index 000000000..f43f3d941 --- /dev/null +++ b/drivers/gpu/arm/bifrost/ipa/mali_kbase_ipa.h @@ -0,0 +1,254 @@ @@ -178790,7 +178790,7 @@ index 000000000000..f43f3d9416b4 +#endif diff --git a/drivers/gpu/arm/bifrost/ipa/mali_kbase_ipa_debugfs.c b/drivers/gpu/arm/bifrost/ipa/mali_kbase_ipa_debugfs.c new file mode 100755 -index 000000000000..30a3b7d1b3be +index 000000000..30a3b7d1b --- /dev/null +++ b/drivers/gpu/arm/bifrost/ipa/mali_kbase_ipa_debugfs.c @@ -0,0 +1,322 @@ @@ -179118,7 +179118,7 @@ index 000000000000..30a3b7d1b3be +} diff --git a/drivers/gpu/arm/bifrost/ipa/mali_kbase_ipa_debugfs.h b/drivers/gpu/arm/bifrost/ipa/mali_kbase_ipa_debugfs.h new file mode 100755 -index 000000000000..a983d9c14216 +index 000000000..a983d9c14 --- /dev/null +++ b/drivers/gpu/arm/bifrost/ipa/mali_kbase_ipa_debugfs.h @@ -0,0 +1,68 @@ @@ -179192,7 +179192,7 @@ index 000000000000..a983d9c14216 +#endif /* _KBASE_IPA_DEBUGFS_H_ */ diff --git a/drivers/gpu/arm/bifrost/ipa/mali_kbase_ipa_simple.c b/drivers/gpu/arm/bifrost/ipa/mali_kbase_ipa_simple.c new file mode 100755 -index 000000000000..9a11ee5b1e74 +index 000000000..9a11ee5b1 --- /dev/null +++ b/drivers/gpu/arm/bifrost/ipa/mali_kbase_ipa_simple.c @@ -0,0 +1,356 @@ @@ -179554,7 +179554,7 @@ index 000000000000..9a11ee5b1e74 +KBASE_EXPORT_TEST_API(kbase_simple_ipa_model_ops); diff --git a/drivers/gpu/arm/bifrost/ipa/mali_kbase_ipa_simple.h b/drivers/gpu/arm/bifrost/ipa/mali_kbase_ipa_simple.h new file mode 100755 -index 000000000000..84534e07ec55 +index 000000000..84534e07e --- /dev/null +++ b/drivers/gpu/arm/bifrost/ipa/mali_kbase_ipa_simple.h @@ -0,0 +1,45 @@ @@ -179605,7 +179605,7 @@ index 000000000000..84534e07ec55 +#endif /* _KBASE_IPA_SIMPLE_H_ */ diff --git a/drivers/gpu/arm/bifrost/ipa/mali_kbase_ipa_vinstr_common.c b/drivers/gpu/arm/bifrost/ipa/mali_kbase_ipa_vinstr_common.c new file mode 100755 -index 000000000000..702db1623101 +index 000000000..702db1623 --- /dev/null +++ b/drivers/gpu/arm/bifrost/ipa/mali_kbase_ipa_vinstr_common.c @@ -0,0 +1,349 @@ @@ -179960,7 +179960,7 @@ index 000000000000..702db1623101 +} diff --git a/drivers/gpu/arm/bifrost/ipa/mali_kbase_ipa_vinstr_common.h b/drivers/gpu/arm/bifrost/ipa/mali_kbase_ipa_vinstr_common.h new file mode 100755 -index 000000000000..46e3cd4bc6e1 +index 000000000..46e3cd4bc --- /dev/null +++ b/drivers/gpu/arm/bifrost/ipa/mali_kbase_ipa_vinstr_common.h @@ -0,0 +1,217 @@ @@ -180183,7 +180183,7 @@ index 000000000000..46e3cd4bc6e1 +#endif /* _KBASE_IPA_VINSTR_COMMON_H_ */ diff --git a/drivers/gpu/arm/bifrost/ipa/mali_kbase_ipa_vinstr_g7x.c b/drivers/gpu/arm/bifrost/ipa/mali_kbase_ipa_vinstr_g7x.c new file mode 100755 -index 000000000000..83174eb66ded +index 000000000..83174eb66 --- /dev/null +++ b/drivers/gpu/arm/bifrost/ipa/mali_kbase_ipa_vinstr_g7x.c @@ -0,0 +1,490 @@ @@ -180679,7 +180679,7 @@ index 000000000000..83174eb66ded +ALIAS_POWER_MODEL(tnax, g77); diff --git a/drivers/gpu/arm/bifrost/jm/mali_base_jm_kernel.h b/drivers/gpu/arm/bifrost/jm/mali_base_jm_kernel.h new file mode 100755 -index 000000000000..9367cc5431cf +index 000000000..9367cc543 --- /dev/null +++ b/drivers/gpu/arm/bifrost/jm/mali_base_jm_kernel.h @@ -0,0 +1,1079 @@ @@ -181764,7 +181764,7 @@ index 000000000000..9367cc5431cf +#endif /* _BASE_JM_KERNEL_H_ */ diff --git a/drivers/gpu/arm/bifrost/jm/mali_kbase_jm_defs.h b/drivers/gpu/arm/bifrost/jm/mali_kbase_jm_defs.h new file mode 100755 -index 000000000000..4fb5d1d9c410 +index 000000000..4fb5d1d9c --- /dev/null +++ b/drivers/gpu/arm/bifrost/jm/mali_kbase_jm_defs.h @@ -0,0 +1,844 @@ @@ -182614,7 +182614,7 @@ index 000000000000..4fb5d1d9c410 +#endif /* _KBASE_JM_DEFS_H_ */ diff --git a/drivers/gpu/arm/bifrost/jm/mali_kbase_jm_ioctl.h b/drivers/gpu/arm/bifrost/jm/mali_kbase_jm_ioctl.h new file mode 100755 -index 000000000000..305a9eb221ae +index 000000000..305a9eb22 --- /dev/null +++ b/drivers/gpu/arm/bifrost/jm/mali_kbase_jm_ioctl.h @@ -0,0 +1,216 @@ @@ -182836,7 +182836,7 @@ index 000000000000..305a9eb221ae +#endif /* _KBASE_JM_IOCTL_H_ */ diff --git a/drivers/gpu/arm/bifrost/jm/mali_kbase_jm_js.h b/drivers/gpu/arm/bifrost/jm/mali_kbase_jm_js.h new file mode 100755 -index 000000000000..6c222ceae8ee +index 000000000..6c222ceae --- /dev/null +++ b/drivers/gpu/arm/bifrost/jm/mali_kbase_jm_js.h @@ -0,0 +1,892 @@ @@ -183734,7 +183734,7 @@ index 000000000000..6c222ceae8ee +#endif /* _KBASE_JM_JS_H_ */ diff --git a/drivers/gpu/arm/bifrost/jm/mali_kbase_js_defs.h b/drivers/gpu/arm/bifrost/jm/mali_kbase_js_defs.h new file mode 100755 -index 000000000000..900ecd2c1b8d +index 000000000..900ecd2c1 --- /dev/null +++ b/drivers/gpu/arm/bifrost/jm/mali_kbase_js_defs.h @@ -0,0 +1,409 @@ @@ -184149,7 +184149,7 @@ index 000000000000..900ecd2c1b8d +#endif /* _KBASE_JS_DEFS_H_ */ diff --git a/drivers/gpu/arm/bifrost/mali_base_hwconfig_features.h b/drivers/gpu/arm/bifrost/mali_base_hwconfig_features.h new file mode 100755 -index 000000000000..0dc08381bee6 +index 000000000..0dc08381b --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_base_hwconfig_features.h @@ -0,0 +1,515 @@ @@ -184670,7 +184670,7 @@ index 000000000000..0dc08381bee6 +#endif /* _BASE_HWCONFIG_FEATURES_H_ */ diff --git a/drivers/gpu/arm/bifrost/mali_base_hwconfig_issues.h b/drivers/gpu/arm/bifrost/mali_base_hwconfig_issues.h new file mode 100755 -index 000000000000..c1ad3ac40705 +index 000000000..c1ad3ac40 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_base_hwconfig_issues.h @@ -0,0 +1,684 @@ @@ -185360,7 +185360,7 @@ index 000000000000..c1ad3ac40705 +#endif /* _BASE_HWCONFIG_ISSUES_H_ */ diff --git a/drivers/gpu/arm/bifrost/mali_base_kernel.h b/drivers/gpu/arm/bifrost/mali_base_kernel.h new file mode 100755 -index 000000000000..086171adb6e5 +index 000000000..086171adb --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_base_kernel.h @@ -0,0 +1,807 @@ @@ -186173,7 +186173,7 @@ index 000000000000..086171adb6e5 +#endif /* _BASE_KERNEL_H_ */ diff --git a/drivers/gpu/arm/bifrost/mali_base_mem_priv.h b/drivers/gpu/arm/bifrost/mali_base_mem_priv.h new file mode 100755 -index 000000000000..844a025b715d +index 000000000..844a025b7 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_base_mem_priv.h @@ -0,0 +1,57 @@ @@ -186236,7 +186236,7 @@ index 000000000000..844a025b715d +#endif diff --git a/drivers/gpu/arm/bifrost/mali_kbase.h b/drivers/gpu/arm/bifrost/mali_kbase.h new file mode 100755 -index 000000000000..8189d02ab910 +index 000000000..8189d02ab --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase.h @@ -0,0 +1,614 @@ @@ -186856,7 +186856,7 @@ index 000000000000..8189d02ab910 +#endif diff --git a/drivers/gpu/arm/bifrost/mali_kbase_as_fault_debugfs.c b/drivers/gpu/arm/bifrost/mali_kbase_as_fault_debugfs.c new file mode 100755 -index 000000000000..76bbfffe03a0 +index 000000000..76bbfffe0 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_as_fault_debugfs.c @@ -0,0 +1,113 @@ @@ -186975,7 +186975,7 @@ index 000000000000..76bbfffe03a0 +} diff --git a/drivers/gpu/arm/bifrost/mali_kbase_as_fault_debugfs.h b/drivers/gpu/arm/bifrost/mali_kbase_as_fault_debugfs.h new file mode 100755 -index 000000000000..58d7fcf030a4 +index 000000000..58d7fcf03 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_as_fault_debugfs.h @@ -0,0 +1,50 @@ @@ -187031,7 +187031,7 @@ index 000000000000..58d7fcf030a4 +#endif /*_KBASE_AS_FAULT_DEBUG_FS_H*/ diff --git a/drivers/gpu/arm/bifrost/mali_kbase_bits.h b/drivers/gpu/arm/bifrost/mali_kbase_bits.h new file mode 100755 -index 000000000000..2c110937a792 +index 000000000..2c110937a --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_bits.h @@ -0,0 +1,41 @@ @@ -187078,7 +187078,7 @@ index 000000000000..2c110937a792 +#endif /* _KBASE_BITS_H_ */ diff --git a/drivers/gpu/arm/bifrost/mali_kbase_cache_policy.c b/drivers/gpu/arm/bifrost/mali_kbase_cache_policy.c new file mode 100755 -index 000000000000..27a03cf02138 +index 000000000..27a03cf02 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_cache_policy.c @@ -0,0 +1,67 @@ @@ -187151,7 +187151,7 @@ index 000000000000..27a03cf02138 +} diff --git a/drivers/gpu/arm/bifrost/mali_kbase_cache_policy.h b/drivers/gpu/arm/bifrost/mali_kbase_cache_policy.h new file mode 100755 -index 000000000000..8a1e5291bf5f +index 000000000..8a1e5291b --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_cache_policy.h @@ -0,0 +1,50 @@ @@ -187207,7 +187207,7 @@ index 000000000000..8a1e5291bf5f +#endif /* _KBASE_CACHE_POLICY_H_ */ diff --git a/drivers/gpu/arm/bifrost/mali_kbase_caps.h b/drivers/gpu/arm/bifrost/mali_kbase_caps.h new file mode 100755 -index 000000000000..b201a60fa6e3 +index 000000000..b201a60fa --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_caps.h @@ -0,0 +1,65 @@ @@ -187278,7 +187278,7 @@ index 000000000000..b201a60fa6e3 +#endif /* __KBASE_CAPS_H_ */ diff --git a/drivers/gpu/arm/bifrost/mali_kbase_ccswe.c b/drivers/gpu/arm/bifrost/mali_kbase_ccswe.c new file mode 100755 -index 000000000000..87d5aaa6bb5d +index 000000000..87d5aaa6b --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_ccswe.c @@ -0,0 +1,105 @@ @@ -187389,7 +187389,7 @@ index 000000000000..87d5aaa6bb5d + diff --git a/drivers/gpu/arm/bifrost/mali_kbase_ccswe.h b/drivers/gpu/arm/bifrost/mali_kbase_ccswe.h new file mode 100755 -index 000000000000..3a7cf73d9eac +index 000000000..3a7cf73d9 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_ccswe.h @@ -0,0 +1,97 @@ @@ -187492,7 +187492,7 @@ index 000000000000..3a7cf73d9eac +#endif /* _KBASE_CCSWE_H_ */ diff --git a/drivers/gpu/arm/bifrost/mali_kbase_config.c b/drivers/gpu/arm/bifrost/mali_kbase_config.c new file mode 100755 -index 000000000000..ce7070d1d634 +index 000000000..ce7070d1d --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_config.c @@ -0,0 +1,48 @@ @@ -187546,7 +187546,7 @@ index 000000000000..ce7070d1d634 + diff --git a/drivers/gpu/arm/bifrost/mali_kbase_config.h b/drivers/gpu/arm/bifrost/mali_kbase_config.h new file mode 100755 -index 000000000000..57456e2b90db +index 000000000..57456e2b9 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_config.h @@ -0,0 +1,393 @@ @@ -187945,7 +187945,7 @@ index 000000000000..57456e2b90db +#endif /* _KBASE_CONFIG_H_ */ diff --git a/drivers/gpu/arm/bifrost/mali_kbase_config_defaults.h b/drivers/gpu/arm/bifrost/mali_kbase_config_defaults.h new file mode 100755 -index 000000000000..e079281127ab +index 000000000..e07928112 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_config_defaults.h @@ -0,0 +1,213 @@ @@ -188164,7 +188164,7 @@ index 000000000000..e079281127ab + diff --git a/drivers/gpu/arm/bifrost/mali_kbase_core_linux.c b/drivers/gpu/arm/bifrost/mali_kbase_core_linux.c new file mode 100755 -index 000000000000..071b9236dee0 +index 000000000..071b9236d --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_core_linux.c @@ -0,0 +1,5001 @@ @@ -193171,7 +193171,7 @@ index 000000000000..071b9236dee0 +#endif /* CONFIG_MALI_BIFROST_GATOR_SUPPORT */ diff --git a/drivers/gpu/arm/bifrost/mali_kbase_cs_experimental.h b/drivers/gpu/arm/bifrost/mali_kbase_cs_experimental.h new file mode 100755 -index 000000000000..caba2cd7a0e3 +index 000000000..caba2cd7a --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_cs_experimental.h @@ -0,0 +1,51 @@ @@ -193228,7 +193228,7 @@ index 000000000000..caba2cd7a0e3 + diff --git a/drivers/gpu/arm/bifrost/mali_kbase_ctx_sched.c b/drivers/gpu/arm/bifrost/mali_kbase_ctx_sched.c new file mode 100755 -index 000000000000..750dbd8c3924 +index 000000000..750dbd8c3 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_ctx_sched.c @@ -0,0 +1,355 @@ @@ -193589,7 +193589,7 @@ index 000000000000..750dbd8c3924 +} diff --git a/drivers/gpu/arm/bifrost/mali_kbase_ctx_sched.h b/drivers/gpu/arm/bifrost/mali_kbase_ctx_sched.h new file mode 100755 -index 000000000000..1affa719e6dc +index 000000000..1affa719e --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_ctx_sched.h @@ -0,0 +1,209 @@ @@ -193804,7 +193804,7 @@ index 000000000000..1affa719e6dc +#endif /* _KBASE_CTX_SCHED_H_ */ diff --git a/drivers/gpu/arm/bifrost/mali_kbase_debug.c b/drivers/gpu/arm/bifrost/mali_kbase_debug.c new file mode 100755 -index 000000000000..118f787fb74c +index 000000000..118f787fb --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_debug.c @@ -0,0 +1,44 @@ @@ -193854,7 +193854,7 @@ index 000000000000..118f787fb74c + diff --git a/drivers/gpu/arm/bifrost/mali_kbase_debug.h b/drivers/gpu/arm/bifrost/mali_kbase_debug.h new file mode 100755 -index 000000000000..f33413908405 +index 000000000..f33413908 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_debug.h @@ -0,0 +1,169 @@ @@ -194029,7 +194029,7 @@ index 000000000000..f33413908405 +#endif /* _KBASE_DEBUG_H */ diff --git a/drivers/gpu/arm/bifrost/mali_kbase_debug_job_fault.c b/drivers/gpu/arm/bifrost/mali_kbase_debug_job_fault.c new file mode 100755 -index 000000000000..dbc774d56ab4 +index 000000000..dbc774d56 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_debug_job_fault.c @@ -0,0 +1,566 @@ @@ -194601,7 +194601,7 @@ index 000000000000..dbc774d56ab4 +#endif /* CONFIG_DEBUG_FS */ diff --git a/drivers/gpu/arm/bifrost/mali_kbase_debug_job_fault.h b/drivers/gpu/arm/bifrost/mali_kbase_debug_job_fault.h new file mode 100755 -index 000000000000..ef69627cdce8 +index 000000000..ef69627cd --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_debug_job_fault.h @@ -0,0 +1,116 @@ @@ -194723,7 +194723,7 @@ index 000000000000..ef69627cdce8 +#endif /*_KBASE_DEBUG_JOB_FAULT_H*/ diff --git a/drivers/gpu/arm/bifrost/mali_kbase_debug_mem_view.c b/drivers/gpu/arm/bifrost/mali_kbase_debug_mem_view.c new file mode 100755 -index 000000000000..478813705a41 +index 000000000..478813705 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_debug_mem_view.c @@ -0,0 +1,313 @@ @@ -195042,7 +195042,7 @@ index 000000000000..478813705a41 +#endif diff --git a/drivers/gpu/arm/bifrost/mali_kbase_debug_mem_view.h b/drivers/gpu/arm/bifrost/mali_kbase_debug_mem_view.h new file mode 100755 -index 000000000000..b948b7cd9dd4 +index 000000000..b948b7cd9 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_debug_mem_view.h @@ -0,0 +1,40 @@ @@ -195088,7 +195088,7 @@ index 000000000000..b948b7cd9dd4 +#endif diff --git a/drivers/gpu/arm/bifrost/mali_kbase_debugfs_helper.c b/drivers/gpu/arm/bifrost/mali_kbase_debugfs_helper.c new file mode 100755 -index 000000000000..37e507b164c5 +index 000000000..37e507b16 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_debugfs_helper.c @@ -0,0 +1,183 @@ @@ -195277,7 +195277,7 @@ index 000000000000..37e507b164c5 +} diff --git a/drivers/gpu/arm/bifrost/mali_kbase_debugfs_helper.h b/drivers/gpu/arm/bifrost/mali_kbase_debugfs_helper.h new file mode 100755 -index 000000000000..c3c9efa14e65 +index 000000000..c3c9efa14 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_debugfs_helper.h @@ -0,0 +1,141 @@ @@ -195424,7 +195424,7 @@ index 000000000000..c3c9efa14e65 + diff --git a/drivers/gpu/arm/bifrost/mali_kbase_defs.h b/drivers/gpu/arm/bifrost/mali_kbase_defs.h new file mode 100755 -index 000000000000..980cf09500ef +index 000000000..980cf0950 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_defs.h @@ -0,0 +1,1807 @@ @@ -197237,7 +197237,7 @@ index 000000000000..980cf09500ef +#endif /* _KBASE_DEFS_H_ */ diff --git a/drivers/gpu/arm/bifrost/mali_kbase_disjoint_events.c b/drivers/gpu/arm/bifrost/mali_kbase_disjoint_events.c new file mode 100755 -index 000000000000..b5ac414b1223 +index 000000000..b5ac414b1 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_disjoint_events.c @@ -0,0 +1,81 @@ @@ -197324,7 +197324,7 @@ index 000000000000..b5ac414b1223 +KBASE_EXPORT_TEST_API(kbase_disjoint_event_get); diff --git a/drivers/gpu/arm/bifrost/mali_kbase_dma_fence.c b/drivers/gpu/arm/bifrost/mali_kbase_dma_fence.c new file mode 100755 -index 000000000000..1fac5e3e68f1 +index 000000000..1fac5e3e6 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_dma_fence.c @@ -0,0 +1,473 @@ @@ -197803,7 +197803,7 @@ index 000000000000..1fac5e3e68f1 +} diff --git a/drivers/gpu/arm/bifrost/mali_kbase_dma_fence.h b/drivers/gpu/arm/bifrost/mali_kbase_dma_fence.h new file mode 100755 -index 000000000000..3ac8186328a1 +index 000000000..3ac818632 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_dma_fence.h @@ -0,0 +1,144 @@ @@ -197953,7 +197953,7 @@ index 000000000000..3ac8186328a1 +#endif diff --git a/drivers/gpu/arm/bifrost/mali_kbase_dummy_job_wa.c b/drivers/gpu/arm/bifrost/mali_kbase_dummy_job_wa.c new file mode 100755 -index 000000000000..a5a7ad744a8e +index 000000000..a5a7ad744 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_dummy_job_wa.c @@ -0,0 +1,442 @@ @@ -198401,7 +198401,7 @@ index 000000000000..a5a7ad744a8e +} diff --git a/drivers/gpu/arm/bifrost/mali_kbase_dummy_job_wa.h b/drivers/gpu/arm/bifrost/mali_kbase_dummy_job_wa.h new file mode 100755 -index 000000000000..e19495055b48 +index 000000000..e19495055 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_dummy_job_wa.h @@ -0,0 +1,74 @@ @@ -198481,7 +198481,7 @@ index 000000000000..e19495055b48 +#endif /* _KBASE_DUMMY_JOB_WORKAROUND_ */ diff --git a/drivers/gpu/arm/bifrost/mali_kbase_event.c b/drivers/gpu/arm/bifrost/mali_kbase_event.c new file mode 100755 -index 000000000000..5adb80f9bbd2 +index 000000000..5adb80f9b --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_event.c @@ -0,0 +1,274 @@ @@ -198761,7 +198761,7 @@ index 000000000000..5adb80f9bbd2 +KBASE_EXPORT_TEST_API(kbase_event_cleanup); diff --git a/drivers/gpu/arm/bifrost/mali_kbase_fence.c b/drivers/gpu/arm/bifrost/mali_kbase_fence.c new file mode 100755 -index 000000000000..5e04acf87892 +index 000000000..5e04acf87 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_fence.c @@ -0,0 +1,154 @@ @@ -198921,7 +198921,7 @@ index 000000000000..5e04acf87892 +} diff --git a/drivers/gpu/arm/bifrost/mali_kbase_fence.h b/drivers/gpu/arm/bifrost/mali_kbase_fence.h new file mode 100755 -index 000000000000..f319d9e1dce6 +index 000000000..f319d9e1d --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_fence.h @@ -0,0 +1,284 @@ @@ -199211,7 +199211,7 @@ index 000000000000..f319d9e1dce6 +#endif /* _KBASE_FENCE_H_ */ diff --git a/drivers/gpu/arm/bifrost/mali_kbase_fence_defs.h b/drivers/gpu/arm/bifrost/mali_kbase_fence_defs.h new file mode 100755 -index 000000000000..303029639d38 +index 000000000..303029639 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_fence_defs.h @@ -0,0 +1,64 @@ @@ -199281,7 +199281,7 @@ index 000000000000..303029639d38 +#endif /* _KBASE_FENCE_DEFS_H_ */ diff --git a/drivers/gpu/arm/bifrost/mali_kbase_fence_ops.c b/drivers/gpu/arm/bifrost/mali_kbase_fence_ops.c new file mode 100755 -index 000000000000..c4703748bec6 +index 000000000..c4703748b --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_fence_ops.c @@ -0,0 +1,84 @@ @@ -199371,7 +199371,7 @@ index 000000000000..c4703748bec6 + diff --git a/drivers/gpu/arm/bifrost/mali_kbase_gator.h b/drivers/gpu/arm/bifrost/mali_kbase_gator.h new file mode 100755 -index 000000000000..579c7b6ff3aa +index 000000000..579c7b6ff --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_gator.h @@ -0,0 +1,53 @@ @@ -199430,7 +199430,7 @@ index 000000000000..579c7b6ff3aa +#endif /* _KBASE_GATOR_H_ */ diff --git a/drivers/gpu/arm/bifrost/mali_kbase_gpu_memory_debugfs.c b/drivers/gpu/arm/bifrost/mali_kbase_gpu_memory_debugfs.c new file mode 100755 -index 000000000000..569abd920fde +index 000000000..569abd920 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_gpu_memory_debugfs.c @@ -0,0 +1,104 @@ @@ -199540,7 +199540,7 @@ index 000000000000..569abd920fde +#endif diff --git a/drivers/gpu/arm/bifrost/mali_kbase_gpu_memory_debugfs.h b/drivers/gpu/arm/bifrost/mali_kbase_gpu_memory_debugfs.h new file mode 100755 -index 000000000000..a45dabbb680f +index 000000000..a45dabbb6 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_gpu_memory_debugfs.h @@ -0,0 +1,54 @@ @@ -199600,7 +199600,7 @@ index 000000000000..a45dabbb680f +#endif /*_KBASE_GPU_MEMORY_DEBUGFS_H*/ diff --git a/drivers/gpu/arm/bifrost/mali_kbase_gpuprops.c b/drivers/gpu/arm/bifrost/mali_kbase_gpuprops.c new file mode 100755 -index 000000000000..020b5d853608 +index 000000000..020b5d853 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_gpuprops.c @@ -0,0 +1,649 @@ @@ -200255,7 +200255,7 @@ index 000000000000..020b5d853608 +} diff --git a/drivers/gpu/arm/bifrost/mali_kbase_gpuprops.h b/drivers/gpu/arm/bifrost/mali_kbase_gpuprops.h new file mode 100755 -index 000000000000..5eee7948381a +index 000000000..5eee79483 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_gpuprops.h @@ -0,0 +1,135 @@ @@ -200396,7 +200396,7 @@ index 000000000000..5eee7948381a +#endif /* _KBASE_GPUPROPS_H_ */ diff --git a/drivers/gpu/arm/bifrost/mali_kbase_gpuprops_types.h b/drivers/gpu/arm/bifrost/mali_kbase_gpuprops_types.h new file mode 100755 -index 000000000000..ec6f1c39ccb0 +index 000000000..ec6f1c39c --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_gpuprops_types.h @@ -0,0 +1,98 @@ @@ -200500,7 +200500,7 @@ index 000000000000..ec6f1c39ccb0 +#endif /* _KBASE_GPUPROPS_TYPES_H_ */ diff --git a/drivers/gpu/arm/bifrost/mali_kbase_gwt.c b/drivers/gpu/arm/bifrost/mali_kbase_gwt.c new file mode 100755 -index 000000000000..91dc4dbc0800 +index 000000000..91dc4dbc0 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_gwt.c @@ -0,0 +1,273 @@ @@ -200779,7 +200779,7 @@ index 000000000000..91dc4dbc0800 +} diff --git a/drivers/gpu/arm/bifrost/mali_kbase_gwt.h b/drivers/gpu/arm/bifrost/mali_kbase_gwt.h new file mode 100755 -index 000000000000..7e7746e64915 +index 000000000..7e7746e64 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_gwt.h @@ -0,0 +1,55 @@ @@ -200840,7 +200840,7 @@ index 000000000000..7e7746e64915 +#endif /* _KBASE_GWT_H */ diff --git a/drivers/gpu/arm/bifrost/mali_kbase_hw.c b/drivers/gpu/arm/bifrost/mali_kbase_hw.c new file mode 100755 -index 000000000000..dc58ffb931be +index 000000000..dc58ffb93 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_hw.c @@ -0,0 +1,437 @@ @@ -201283,7 +201283,7 @@ index 000000000000..dc58ffb931be +} diff --git a/drivers/gpu/arm/bifrost/mali_kbase_hw.h b/drivers/gpu/arm/bifrost/mali_kbase_hw.h new file mode 100755 -index 000000000000..f386b1624317 +index 000000000..f386b1624 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_hw.h @@ -0,0 +1,70 @@ @@ -201359,7 +201359,7 @@ index 000000000000..f386b1624317 +#endif /* _KBASE_HW_H_ */ diff --git a/drivers/gpu/arm/bifrost/mali_kbase_hwaccess_backend.h b/drivers/gpu/arm/bifrost/mali_kbase_hwaccess_backend.h new file mode 100755 -index 000000000000..89df2519ab97 +index 000000000..89df2519a --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_hwaccess_backend.h @@ -0,0 +1,45 @@ @@ -201410,7 +201410,7 @@ index 000000000000..89df2519ab97 +#endif /* _KBASE_HWACCESS_BACKEND_H_ */ diff --git a/drivers/gpu/arm/bifrost/mali_kbase_hwaccess_defs.h b/drivers/gpu/arm/bifrost/mali_kbase_hwaccess_defs.h new file mode 100755 -index 000000000000..124a2d9cf0c3 +index 000000000..124a2d9cf --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_hwaccess_defs.h @@ -0,0 +1,51 @@ @@ -201467,7 +201467,7 @@ index 000000000000..124a2d9cf0c3 +#endif /* _KBASE_HWACCESS_DEFS_H_ */ diff --git a/drivers/gpu/arm/bifrost/mali_kbase_hwaccess_gpuprops.h b/drivers/gpu/arm/bifrost/mali_kbase_hwaccess_gpuprops.h new file mode 100755 -index 000000000000..3ae0dbe6886d +index 000000000..3ae0dbe68 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_hwaccess_gpuprops.h @@ -0,0 +1,87 @@ @@ -201560,7 +201560,7 @@ index 000000000000..3ae0dbe6886d +#endif /* _KBASE_HWACCESS_GPUPROPS_H_ */ diff --git a/drivers/gpu/arm/bifrost/mali_kbase_hwaccess_instr.h b/drivers/gpu/arm/bifrost/mali_kbase_hwaccess_instr.h new file mode 100755 -index 000000000000..4fd2e3549268 +index 000000000..4fd2e3549 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_hwaccess_instr.h @@ -0,0 +1,151 @@ @@ -201717,7 +201717,7 @@ index 000000000000..4fd2e3549268 +#endif /* _KBASE_HWACCESS_INSTR_H_ */ diff --git a/drivers/gpu/arm/bifrost/mali_kbase_hwaccess_jm.h b/drivers/gpu/arm/bifrost/mali_kbase_hwaccess_jm.h new file mode 100755 -index 000000000000..f6ce17e4180f +index 000000000..f6ce17e41 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_hwaccess_jm.h @@ -0,0 +1,304 @@ @@ -202027,7 +202027,7 @@ index 000000000000..f6ce17e4180f +#endif /* _KBASE_HWACCESS_JM_H_ */ diff --git a/drivers/gpu/arm/bifrost/mali_kbase_hwaccess_pm.h b/drivers/gpu/arm/bifrost/mali_kbase_hwaccess_pm.h new file mode 100755 -index 000000000000..bbaf6eaf8d88 +index 000000000..bbaf6eaf8 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_hwaccess_pm.h @@ -0,0 +1,229 @@ @@ -202262,7 +202262,7 @@ index 000000000000..bbaf6eaf8d88 +#endif /* _KBASE_HWACCESS_PM_H_ */ diff --git a/drivers/gpu/arm/bifrost/mali_kbase_hwaccess_time.h b/drivers/gpu/arm/bifrost/mali_kbase_hwaccess_time.h new file mode 100755 -index 000000000000..94b7551b865e +index 000000000..94b7551b8 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_hwaccess_time.h @@ -0,0 +1,56 @@ @@ -202324,7 +202324,7 @@ index 000000000000..94b7551b865e +#endif /* _KBASE_BACKEND_TIME_H_ */ diff --git a/drivers/gpu/arm/bifrost/mali_kbase_hwcnt.c b/drivers/gpu/arm/bifrost/mali_kbase_hwcnt.c new file mode 100755 -index 000000000000..2708af78b292 +index 000000000..2708af78b --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_hwcnt.c @@ -0,0 +1,794 @@ @@ -203124,7 +203124,7 @@ index 000000000000..2708af78b292 +} diff --git a/drivers/gpu/arm/bifrost/mali_kbase_hwcnt_accumulator.h b/drivers/gpu/arm/bifrost/mali_kbase_hwcnt_accumulator.h new file mode 100755 -index 000000000000..eb82ea4bfd14 +index 000000000..eb82ea4bf --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_hwcnt_accumulator.h @@ -0,0 +1,146 @@ @@ -203276,7 +203276,7 @@ index 000000000000..eb82ea4bfd14 +#endif /* _KBASE_HWCNT_ACCUMULATOR_H_ */ diff --git a/drivers/gpu/arm/bifrost/mali_kbase_hwcnt_backend.h b/drivers/gpu/arm/bifrost/mali_kbase_hwcnt_backend.h new file mode 100755 -index 000000000000..3a921b754b55 +index 000000000..3a921b754 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_hwcnt_backend.h @@ -0,0 +1,220 @@ @@ -203502,7 +203502,7 @@ index 000000000000..3a921b754b55 +#endif /* _KBASE_HWCNT_BACKEND_H_ */ diff --git a/drivers/gpu/arm/bifrost/mali_kbase_hwcnt_backend_jm.c b/drivers/gpu/arm/bifrost/mali_kbase_hwcnt_backend_jm.c new file mode 100755 -index 000000000000..9f65de41694f +index 000000000..9f65de416 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_hwcnt_backend_jm.c @@ -0,0 +1,736 @@ @@ -204244,7 +204244,7 @@ index 000000000000..9f65de41694f +} diff --git a/drivers/gpu/arm/bifrost/mali_kbase_hwcnt_backend_jm.h b/drivers/gpu/arm/bifrost/mali_kbase_hwcnt_backend_jm.h new file mode 100755 -index 000000000000..f15faeba704a +index 000000000..f15faeba7 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_hwcnt_backend_jm.h @@ -0,0 +1,61 @@ @@ -204311,7 +204311,7 @@ index 000000000000..f15faeba704a +#endif /* _KBASE_HWCNT_BACKEND_JM_H_ */ diff --git a/drivers/gpu/arm/bifrost/mali_kbase_hwcnt_context.h b/drivers/gpu/arm/bifrost/mali_kbase_hwcnt_context.h new file mode 100755 -index 000000000000..bc50ad12c2f4 +index 000000000..bc50ad12c --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_hwcnt_context.h @@ -0,0 +1,119 @@ @@ -204436,7 +204436,7 @@ index 000000000000..bc50ad12c2f4 +#endif /* _KBASE_HWCNT_CONTEXT_H_ */ diff --git a/drivers/gpu/arm/bifrost/mali_kbase_hwcnt_gpu.c b/drivers/gpu/arm/bifrost/mali_kbase_hwcnt_gpu.c new file mode 100755 -index 000000000000..499f3bc23bec +index 000000000..499f3bc23 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_hwcnt_gpu.c @@ -0,0 +1,571 @@ @@ -205013,7 +205013,7 @@ index 000000000000..499f3bc23bec +KBASE_EXPORT_TEST_API(kbase_hwcnt_gpu_patch_dump_headers); diff --git a/drivers/gpu/arm/bifrost/mali_kbase_hwcnt_gpu.h b/drivers/gpu/arm/bifrost/mali_kbase_hwcnt_gpu.h new file mode 100755 -index 000000000000..f0d51763f7f7 +index 000000000..f0d51763f --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_hwcnt_gpu.h @@ -0,0 +1,217 @@ @@ -205236,7 +205236,7 @@ index 000000000000..f0d51763f7f7 +#endif /* _KBASE_HWCNT_GPU_H_ */ diff --git a/drivers/gpu/arm/bifrost/mali_kbase_hwcnt_legacy.c b/drivers/gpu/arm/bifrost/mali_kbase_hwcnt_legacy.c new file mode 100755 -index 000000000000..794ef39e365c +index 000000000..794ef39e3 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_hwcnt_legacy.c @@ -0,0 +1,152 @@ @@ -205394,7 +205394,7 @@ index 000000000000..794ef39e365c +} diff --git a/drivers/gpu/arm/bifrost/mali_kbase_hwcnt_legacy.h b/drivers/gpu/arm/bifrost/mali_kbase_hwcnt_legacy.h new file mode 100755 -index 000000000000..7a610ae378a2 +index 000000000..7a610ae37 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_hwcnt_legacy.h @@ -0,0 +1,94 @@ @@ -205494,7 +205494,7 @@ index 000000000000..7a610ae378a2 +#endif /* _KBASE_HWCNT_LEGACY_H_ */ diff --git a/drivers/gpu/arm/bifrost/mali_kbase_hwcnt_reader.h b/drivers/gpu/arm/bifrost/mali_kbase_hwcnt_reader.h new file mode 100755 -index 000000000000..8cd3835595f7 +index 000000000..8cd383559 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_hwcnt_reader.h @@ -0,0 +1,106 @@ @@ -205606,7 +205606,7 @@ index 000000000000..8cd3835595f7 + diff --git a/drivers/gpu/arm/bifrost/mali_kbase_hwcnt_types.c b/drivers/gpu/arm/bifrost/mali_kbase_hwcnt_types.c new file mode 100755 -index 000000000000..2b9fe02acd75 +index 000000000..2b9fe02ac --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_hwcnt_types.c @@ -0,0 +1,604 @@ @@ -206216,7 +206216,7 @@ index 000000000000..2b9fe02acd75 +KBASE_EXPORT_TEST_API(kbase_hwcnt_dump_buffer_accumulate_strict); diff --git a/drivers/gpu/arm/bifrost/mali_kbase_hwcnt_types.h b/drivers/gpu/arm/bifrost/mali_kbase_hwcnt_types.h new file mode 100755 -index 000000000000..3394b1271cc8 +index 000000000..3394b1271 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_hwcnt_types.h @@ -0,0 +1,1142 @@ @@ -207364,7 +207364,7 @@ index 000000000000..3394b1271cc8 +#endif /* _KBASE_HWCNT_TYPES_H_ */ diff --git a/drivers/gpu/arm/bifrost/mali_kbase_hwcnt_virtualizer.c b/drivers/gpu/arm/bifrost/mali_kbase_hwcnt_virtualizer.c new file mode 100755 -index 000000000000..917e47cda0f9 +index 000000000..917e47cda --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_hwcnt_virtualizer.c @@ -0,0 +1,790 @@ @@ -208160,7 +208160,7 @@ index 000000000000..917e47cda0f9 +KBASE_EXPORT_TEST_API(kbase_hwcnt_virtualizer_term); diff --git a/drivers/gpu/arm/bifrost/mali_kbase_hwcnt_virtualizer.h b/drivers/gpu/arm/bifrost/mali_kbase_hwcnt_virtualizer.h new file mode 100755 -index 000000000000..8f628c3306fc +index 000000000..8f628c330 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_hwcnt_virtualizer.h @@ -0,0 +1,145 @@ @@ -208311,7 +208311,7 @@ index 000000000000..8f628c3306fc +#endif /* _KBASE_HWCNT_VIRTUALIZER_H_ */ diff --git a/drivers/gpu/arm/bifrost/mali_kbase_ioctl.h b/drivers/gpu/arm/bifrost/mali_kbase_ioctl.h new file mode 100755 -index 000000000000..fed45100b4be +index 000000000..fed45100b --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_ioctl.h @@ -0,0 +1,838 @@ @@ -209155,7 +209155,7 @@ index 000000000000..fed45100b4be +#endif diff --git a/drivers/gpu/arm/bifrost/mali_kbase_jd.c b/drivers/gpu/arm/bifrost/mali_kbase_jd.c new file mode 100755 -index 000000000000..d0674d1bd8f4 +index 000000000..d0674d1bd --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_jd.c @@ -0,0 +1,1819 @@ @@ -210980,7 +210980,7 @@ index 000000000000..d0674d1bd8f4 +KBASE_EXPORT_TEST_API(kbase_jd_exit); diff --git a/drivers/gpu/arm/bifrost/mali_kbase_jd_debugfs.c b/drivers/gpu/arm/bifrost/mali_kbase_jd_debugfs.c new file mode 100755 -index 000000000000..6b0c36d6b93f +index 000000000..6b0c36d6b --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_jd_debugfs.c @@ -0,0 +1,250 @@ @@ -211236,7 +211236,7 @@ index 000000000000..6b0c36d6b93f +#endif /* CONFIG_DEBUG_FS */ diff --git a/drivers/gpu/arm/bifrost/mali_kbase_jd_debugfs.h b/drivers/gpu/arm/bifrost/mali_kbase_jd_debugfs.h new file mode 100755 -index 000000000000..697bdef4d434 +index 000000000..697bdef4d --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_jd_debugfs.h @@ -0,0 +1,45 @@ @@ -211287,7 +211287,7 @@ index 000000000000..697bdef4d434 +#endif /*_KBASE_JD_DEBUGFS_H*/ diff --git a/drivers/gpu/arm/bifrost/mali_kbase_jm.c b/drivers/gpu/arm/bifrost/mali_kbase_jm.c new file mode 100755 -index 000000000000..fb15a8c1727a +index 000000000..fb15a8c17 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_jm.c @@ -0,0 +1,155 @@ @@ -211448,7 +211448,7 @@ index 000000000000..fb15a8c1727a +#endif /* !MALI_USE_CSF */ diff --git a/drivers/gpu/arm/bifrost/mali_kbase_jm.h b/drivers/gpu/arm/bifrost/mali_kbase_jm.h new file mode 100755 -index 000000000000..b3fd421a1ff3 +index 000000000..b3fd421a1 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_jm.h @@ -0,0 +1,119 @@ @@ -211573,7 +211573,7 @@ index 000000000000..b3fd421a1ff3 +#endif /* _KBASE_JM_H_ */ diff --git a/drivers/gpu/arm/bifrost/mali_kbase_js.c b/drivers/gpu/arm/bifrost/mali_kbase_js.c new file mode 100755 -index 000000000000..9b338eb66531 +index 000000000..9b338eb66 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_js.c @@ -0,0 +1,3760 @@ @@ -215339,7 +215339,7 @@ index 000000000000..9b338eb66531 +} diff --git a/drivers/gpu/arm/bifrost/mali_kbase_js.h b/drivers/gpu/arm/bifrost/mali_kbase_js.h new file mode 100755 -index 000000000000..541acd4afed7 +index 000000000..541acd4af --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_js.h @@ -0,0 +1,40 @@ @@ -215385,7 +215385,7 @@ index 000000000000..541acd4afed7 +#endif /* _KBASE_JS_H_ */ diff --git a/drivers/gpu/arm/bifrost/mali_kbase_js_ctx_attr.c b/drivers/gpu/arm/bifrost/mali_kbase_js_ctx_attr.c new file mode 100755 -index 000000000000..141d04a385cb +index 000000000..141d04a38 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_js_ctx_attr.c @@ -0,0 +1,283 @@ @@ -215674,7 +215674,7 @@ index 000000000000..141d04a385cb +} diff --git a/drivers/gpu/arm/bifrost/mali_kbase_js_ctx_attr.h b/drivers/gpu/arm/bifrost/mali_kbase_js_ctx_attr.h new file mode 100755 -index 000000000000..25fd39787c71 +index 000000000..25fd39787 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_js_ctx_attr.h @@ -0,0 +1,155 @@ @@ -215835,7 +215835,7 @@ index 000000000000..25fd39787c71 +#endif /* _KBASE_JS_DEFS_H_ */ diff --git a/drivers/gpu/arm/bifrost/mali_kbase_kinstr_jm.c b/drivers/gpu/arm/bifrost/mali_kbase_kinstr_jm.c new file mode 100755 -index 000000000000..fd1ea8815b16 +index 000000000..fd1ea8815 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_kinstr_jm.c @@ -0,0 +1,895 @@ @@ -216736,7 +216736,7 @@ index 000000000000..fd1ea8815b16 +} diff --git a/drivers/gpu/arm/bifrost/mali_kbase_kinstr_jm.h b/drivers/gpu/arm/bifrost/mali_kbase_kinstr_jm.h new file mode 100755 -index 000000000000..555edfeef77c +index 000000000..555edfeef --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_kinstr_jm.h @@ -0,0 +1,283 @@ @@ -217025,7 +217025,7 @@ index 000000000000..555edfeef77c +#endif /* _KBASE_KINSTR_JM_H_ */ diff --git a/drivers/gpu/arm/bifrost/mali_kbase_kinstr_jm_reader.h b/drivers/gpu/arm/bifrost/mali_kbase_kinstr_jm_reader.h new file mode 100755 -index 000000000000..e267e6bc44de +index 000000000..e267e6bc4 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_kinstr_jm_reader.h @@ -0,0 +1,70 @@ @@ -217101,7 +217101,7 @@ index 000000000000..e267e6bc44de +#endif /* _KBASE_KINSTR_JM_READER_H_ */ diff --git a/drivers/gpu/arm/bifrost/mali_kbase_linux.h b/drivers/gpu/arm/bifrost/mali_kbase_linux.h new file mode 100755 -index 000000000000..003ac9e68a76 +index 000000000..003ac9e68 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_linux.h @@ -0,0 +1,48 @@ @@ -217155,7 +217155,7 @@ index 000000000000..003ac9e68a76 +#endif /* _KBASE_LINUX_H_ */ diff --git a/drivers/gpu/arm/bifrost/mali_kbase_mem.c b/drivers/gpu/arm/bifrost/mali_kbase_mem.c new file mode 100755 -index 000000000000..82a799c2d673 +index 000000000..82a799c2d --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_mem.c @@ -0,0 +1,4734 @@ @@ -221895,7 +221895,7 @@ index 000000000000..82a799c2d673 +} diff --git a/drivers/gpu/arm/bifrost/mali_kbase_mem.h b/drivers/gpu/arm/bifrost/mali_kbase_mem.h new file mode 100755 -index 000000000000..2238fbfe9e99 +index 000000000..2238fbfe9 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_mem.h @@ -0,0 +1,1962 @@ @@ -223863,7 +223863,7 @@ index 000000000000..2238fbfe9e99 +#endif /* _KBASE_MEM_H_ */ diff --git a/drivers/gpu/arm/bifrost/mali_kbase_mem_linux.c b/drivers/gpu/arm/bifrost/mali_kbase_mem_linux.c new file mode 100755 -index 000000000000..99b5b852667e +index 000000000..99b5b8526 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_mem_linux.c @@ -0,0 +1,3425 @@ @@ -227294,7 +227294,7 @@ index 000000000000..99b5b852667e +#endif /* MALI_USE_CSF */ diff --git a/drivers/gpu/arm/bifrost/mali_kbase_mem_linux.h b/drivers/gpu/arm/bifrost/mali_kbase_mem_linux.h new file mode 100755 -index 000000000000..85e030ab751a +index 000000000..85e030ab7 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_mem_linux.h @@ -0,0 +1,478 @@ @@ -227778,7 +227778,7 @@ index 000000000000..85e030ab751a +#endif /* _KBASE_MEM_LINUX_H_ */ diff --git a/drivers/gpu/arm/bifrost/mali_kbase_mem_lowlevel.h b/drivers/gpu/arm/bifrost/mali_kbase_mem_lowlevel.h new file mode 100755 -index 000000000000..70116030f233 +index 000000000..70116030f --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_mem_lowlevel.h @@ -0,0 +1,166 @@ @@ -227950,7 +227950,7 @@ index 000000000000..70116030f233 +#endif /* _KBASE_LOWLEVEL_H */ diff --git a/drivers/gpu/arm/bifrost/mali_kbase_mem_pool.c b/drivers/gpu/arm/bifrost/mali_kbase_mem_pool.c new file mode 100755 -index 000000000000..0723e32e2003 +index 000000000..0723e32e2 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_mem_pool.c @@ -0,0 +1,856 @@ @@ -228812,7 +228812,7 @@ index 000000000000..0723e32e2003 +} diff --git a/drivers/gpu/arm/bifrost/mali_kbase_mem_pool_debugfs.c b/drivers/gpu/arm/bifrost/mali_kbase_mem_pool_debugfs.c new file mode 100755 -index 000000000000..5879fdf85b1d +index 000000000..5879fdf85 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_mem_pool_debugfs.c @@ -0,0 +1,191 @@ @@ -229009,7 +229009,7 @@ index 000000000000..5879fdf85b1d +} diff --git a/drivers/gpu/arm/bifrost/mali_kbase_mem_pool_debugfs.h b/drivers/gpu/arm/bifrost/mali_kbase_mem_pool_debugfs.h new file mode 100755 -index 000000000000..2932945b3185 +index 000000000..2932945b3 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_mem_pool_debugfs.h @@ -0,0 +1,123 @@ @@ -229138,7 +229138,7 @@ index 000000000000..2932945b3185 + diff --git a/drivers/gpu/arm/bifrost/mali_kbase_mem_pool_group.c b/drivers/gpu/arm/bifrost/mali_kbase_mem_pool_group.c new file mode 100755 -index 000000000000..aa2554805b5b +index 000000000..aa2554805 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_mem_pool_group.c @@ -0,0 +1,115 @@ @@ -229259,7 +229259,7 @@ index 000000000000..aa2554805b5b +} diff --git a/drivers/gpu/arm/bifrost/mali_kbase_mem_pool_group.h b/drivers/gpu/arm/bifrost/mali_kbase_mem_pool_group.h new file mode 100755 -index 000000000000..0484f5940ad1 +index 000000000..0484f5940 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_mem_pool_group.h @@ -0,0 +1,92 @@ @@ -229357,7 +229357,7 @@ index 000000000000..0484f5940ad1 +#endif /* _KBASE_MEM_POOL_GROUP_H_ */ diff --git a/drivers/gpu/arm/bifrost/mali_kbase_mem_profile_debugfs.c b/drivers/gpu/arm/bifrost/mali_kbase_mem_profile_debugfs.c new file mode 100755 -index 000000000000..85723f825054 +index 000000000..85723f825 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_mem_profile_debugfs.c @@ -0,0 +1,134 @@ @@ -229497,7 +229497,7 @@ index 000000000000..85723f825054 +#endif /* CONFIG_DEBUG_FS */ diff --git a/drivers/gpu/arm/bifrost/mali_kbase_mem_profile_debugfs.h b/drivers/gpu/arm/bifrost/mali_kbase_mem_profile_debugfs.h new file mode 100755 -index 000000000000..1462247c3bca +index 000000000..1462247c3 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_mem_profile_debugfs.h @@ -0,0 +1,64 @@ @@ -229567,7 +229567,7 @@ index 000000000000..1462247c3bca + diff --git a/drivers/gpu/arm/bifrost/mali_kbase_mem_profile_debugfs_buf_size.h b/drivers/gpu/arm/bifrost/mali_kbase_mem_profile_debugfs_buf_size.h new file mode 100755 -index 000000000000..d55cc854c415 +index 000000000..d55cc854c --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_mem_profile_debugfs_buf_size.h @@ -0,0 +1,39 @@ @@ -229612,7 +229612,7 @@ index 000000000000..d55cc854c415 + diff --git a/drivers/gpu/arm/bifrost/mali_kbase_mipe_gen_header.h b/drivers/gpu/arm/bifrost/mali_kbase_mipe_gen_header.h new file mode 100755 -index 000000000000..72acadfae993 +index 000000000..72acadfae --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_mipe_gen_header.h @@ -0,0 +1,219 @@ @@ -229837,7 +229837,7 @@ index 000000000000..72acadfae993 +/* clang-format on */ diff --git a/drivers/gpu/arm/bifrost/mali_kbase_mipe_proto.h b/drivers/gpu/arm/bifrost/mali_kbase_mipe_proto.h new file mode 100755 -index 000000000000..54667cfc6304 +index 000000000..54667cfc6 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_mipe_proto.h @@ -0,0 +1,127 @@ @@ -229970,7 +229970,7 @@ index 000000000000..54667cfc6304 +/* clang-format on */ diff --git a/drivers/gpu/arm/bifrost/mali_kbase_native_mgm.c b/drivers/gpu/arm/bifrost/mali_kbase_native_mgm.c new file mode 100755 -index 000000000000..38ae46e0ddf1 +index 000000000..38ae46e0d --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_native_mgm.c @@ -0,0 +1,153 @@ @@ -230129,7 +230129,7 @@ index 000000000000..38ae46e0ddf1 +}; diff --git a/drivers/gpu/arm/bifrost/mali_kbase_native_mgm.h b/drivers/gpu/arm/bifrost/mali_kbase_native_mgm.h new file mode 100755 -index 000000000000..431b1f4cb5db +index 000000000..431b1f4cb --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_native_mgm.h @@ -0,0 +1,39 @@ @@ -230174,7 +230174,7 @@ index 000000000000..431b1f4cb5db +#endif /* _KBASE_NATIVE_MGM_H_ */ diff --git a/drivers/gpu/arm/bifrost/mali_kbase_platform_fake.c b/drivers/gpu/arm/bifrost/mali_kbase_platform_fake.c new file mode 100755 -index 000000000000..fbb090e6c21f +index 000000000..fbb090e6c --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_platform_fake.c @@ -0,0 +1,124 @@ @@ -230304,7 +230304,7 @@ index 000000000000..fbb090e6c21f +EXPORT_SYMBOL(kbase_platform_unregister); diff --git a/drivers/gpu/arm/bifrost/mali_kbase_pm.c b/drivers/gpu/arm/bifrost/mali_kbase_pm.c new file mode 100755 -index 000000000000..630ab1550045 +index 000000000..630ab1550 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_pm.c @@ -0,0 +1,292 @@ @@ -230602,7 +230602,7 @@ index 000000000000..630ab1550045 +} diff --git a/drivers/gpu/arm/bifrost/mali_kbase_pm.h b/drivers/gpu/arm/bifrost/mali_kbase_pm.h new file mode 100755 -index 000000000000..13565186c11f +index 000000000..13565186c --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_pm.h @@ -0,0 +1,251 @@ @@ -230859,7 +230859,7 @@ index 000000000000..13565186c11f +#endif /* _KBASE_PM_H_ */ diff --git a/drivers/gpu/arm/bifrost/mali_kbase_regs_history_debugfs.c b/drivers/gpu/arm/bifrost/mali_kbase_regs_history_debugfs.c new file mode 100755 -index 000000000000..7b86c58440db +index 000000000..7b86c5844 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_regs_history_debugfs.c @@ -0,0 +1,245 @@ @@ -231110,7 +231110,7 @@ index 000000000000..7b86c58440db +#endif /* defined(CONFIG_DEBUG_FS) && !defined(CONFIG_MALI_BIFROST_NO_MALI) */ diff --git a/drivers/gpu/arm/bifrost/mali_kbase_regs_history_debugfs.h b/drivers/gpu/arm/bifrost/mali_kbase_regs_history_debugfs.h new file mode 100755 -index 000000000000..200c0c2d8de8 +index 000000000..200c0c2d8 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_regs_history_debugfs.h @@ -0,0 +1,85 @@ @@ -231201,7 +231201,7 @@ index 000000000000..200c0c2d8de8 +#endif /*_KBASE_REGS_HISTORY_DEBUGFS_H*/ diff --git a/drivers/gpu/arm/bifrost/mali_kbase_reset_gpu.h b/drivers/gpu/arm/bifrost/mali_kbase_reset_gpu.h new file mode 100755 -index 000000000000..61bbb0b48490 +index 000000000..61bbb0b48 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_reset_gpu.h @@ -0,0 +1,129 @@ @@ -231336,7 +231336,7 @@ index 000000000000..61bbb0b48490 +#endif diff --git a/drivers/gpu/arm/bifrost/mali_kbase_smc.c b/drivers/gpu/arm/bifrost/mali_kbase_smc.c new file mode 100755 -index 000000000000..b5c7b1289846 +index 000000000..b5c7b1289 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_smc.c @@ -0,0 +1,91 @@ @@ -231433,7 +231433,7 @@ index 000000000000..b5c7b1289846 + diff --git a/drivers/gpu/arm/bifrost/mali_kbase_smc.h b/drivers/gpu/arm/bifrost/mali_kbase_smc.h new file mode 100755 -index 000000000000..221eb21a8c7f +index 000000000..221eb21a8 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_smc.h @@ -0,0 +1,72 @@ @@ -231511,7 +231511,7 @@ index 000000000000..221eb21a8c7f +#endif /* _KBASE_SMC_H_ */ diff --git a/drivers/gpu/arm/bifrost/mali_kbase_softjobs.c b/drivers/gpu/arm/bifrost/mali_kbase_softjobs.c new file mode 100755 -index 000000000000..c164719b3d7b +index 000000000..c164719b3 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_softjobs.c @@ -0,0 +1,1805 @@ @@ -233322,7 +233322,7 @@ index 000000000000..c164719b3d7b +#endif /* !MALI_USE_CSF */ diff --git a/drivers/gpu/arm/bifrost/mali_kbase_strings.c b/drivers/gpu/arm/bifrost/mali_kbase_strings.c new file mode 100755 -index 000000000000..22caa4a6d814 +index 000000000..22caa4a6d --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_strings.c @@ -0,0 +1,28 @@ @@ -233356,7 +233356,7 @@ index 000000000000..22caa4a6d814 +const char kbase_timeline_name[] = KBASE_TIMELINE_NAME; diff --git a/drivers/gpu/arm/bifrost/mali_kbase_strings.h b/drivers/gpu/arm/bifrost/mali_kbase_strings.h new file mode 100755 -index 000000000000..d2f1825314fe +index 000000000..d2f182531 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_strings.h @@ -0,0 +1,24 @@ @@ -233386,7 +233386,7 @@ index 000000000000..d2f1825314fe +extern const char kbase_timeline_name[]; diff --git a/drivers/gpu/arm/bifrost/mali_kbase_sync.h b/drivers/gpu/arm/bifrost/mali_kbase_sync.h new file mode 100755 -index 000000000000..4e5ab3ca557a +index 000000000..4e5ab3ca5 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_sync.h @@ -0,0 +1,231 @@ @@ -233623,7 +233623,7 @@ index 000000000000..4e5ab3ca557a +#endif /* MALI_KBASE_SYNC_H */ diff --git a/drivers/gpu/arm/bifrost/mali_kbase_sync_android.c b/drivers/gpu/arm/bifrost/mali_kbase_sync_android.c new file mode 100755 -index 000000000000..41f740a7bc8c +index 000000000..41f740a7b --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_sync_android.c @@ -0,0 +1,542 @@ @@ -234171,7 +234171,7 @@ index 000000000000..41f740a7bc8c +#endif diff --git a/drivers/gpu/arm/bifrost/mali_kbase_sync_common.c b/drivers/gpu/arm/bifrost/mali_kbase_sync_common.c new file mode 100755 -index 000000000000..866894bd0f94 +index 000000000..866894bd0 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_sync_common.c @@ -0,0 +1,51 @@ @@ -234228,7 +234228,7 @@ index 000000000000..866894bd0f94 +} diff --git a/drivers/gpu/arm/bifrost/mali_kbase_sync_file.c b/drivers/gpu/arm/bifrost/mali_kbase_sync_file.c new file mode 100755 -index 000000000000..271873b9fe29 +index 000000000..271873b9f --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_sync_file.c @@ -0,0 +1,372 @@ @@ -234606,7 +234606,7 @@ index 000000000000..271873b9fe29 +#endif /* !MALI_USE_CSF*/ diff --git a/drivers/gpu/arm/bifrost/mali_kbase_trace_gpu_mem.c b/drivers/gpu/arm/bifrost/mali_kbase_trace_gpu_mem.c new file mode 100755 -index 000000000000..7669895b3c5d +index 000000000..7669895b3 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_trace_gpu_mem.c @@ -0,0 +1,227 @@ @@ -234839,7 +234839,7 @@ index 000000000000..7669895b3c5d +#endif diff --git a/drivers/gpu/arm/bifrost/mali_kbase_trace_gpu_mem.h b/drivers/gpu/arm/bifrost/mali_kbase_trace_gpu_mem.h new file mode 100755 -index 000000000000..7e95956f3132 +index 000000000..7e95956f3 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_trace_gpu_mem.h @@ -0,0 +1,103 @@ @@ -234948,7 +234948,7 @@ index 000000000000..7e95956f3132 +#endif /* _KBASE_TRACE_GPU_MEM_H_ */ diff --git a/drivers/gpu/arm/bifrost/mali_kbase_utility.h b/drivers/gpu/arm/bifrost/mali_kbase_utility.h new file mode 100755 -index 000000000000..8d4f044376a9 +index 000000000..8d4f04437 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_utility.h @@ -0,0 +1,55 @@ @@ -235009,7 +235009,7 @@ index 000000000000..8d4f044376a9 +#endif /* _KBASE_UTILITY_H */ diff --git a/drivers/gpu/arm/bifrost/mali_kbase_vinstr.c b/drivers/gpu/arm/bifrost/mali_kbase_vinstr.c new file mode 100755 -index 000000000000..3b0e2d6855ce +index 000000000..3b0e2d685 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_vinstr.c @@ -0,0 +1,1083 @@ @@ -236098,7 +236098,7 @@ index 000000000000..3b0e2d6855ce +} diff --git a/drivers/gpu/arm/bifrost/mali_kbase_vinstr.h b/drivers/gpu/arm/bifrost/mali_kbase_vinstr.h new file mode 100755 -index 000000000000..81d315f95567 +index 000000000..81d315f95 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_kbase_vinstr.h @@ -0,0 +1,91 @@ @@ -236195,7 +236195,7 @@ index 000000000000..81d315f95567 +#endif /* _KBASE_VINSTR_H_ */ diff --git a/drivers/gpu/arm/bifrost/mali_linux_trace.h b/drivers/gpu/arm/bifrost/mali_linux_trace.h new file mode 100755 -index 000000000000..be812f62c862 +index 000000000..be812f62c --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_linux_trace.h @@ -0,0 +1,552 @@ @@ -236753,7 +236753,7 @@ index 000000000000..be812f62c862 +#include diff --git a/drivers/gpu/arm/bifrost/mali_malisw.h b/drivers/gpu/arm/bifrost/mali_malisw.h new file mode 100755 -index 000000000000..3a4db10bdb3d +index 000000000..3a4db10bd --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_malisw.h @@ -0,0 +1,109 @@ @@ -236868,7 +236868,7 @@ index 000000000000..3a4db10bdb3d +#endif /* _MALISW_H_ */ diff --git a/drivers/gpu/arm/bifrost/mali_power_gpu_frequency_trace.c b/drivers/gpu/arm/bifrost/mali_power_gpu_frequency_trace.c new file mode 100755 -index 000000000000..b6fb5a094fab +index 000000000..b6fb5a094 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_power_gpu_frequency_trace.c @@ -0,0 +1,27 @@ @@ -236901,7 +236901,7 @@ index 000000000000..b6fb5a094fab +#endif diff --git a/drivers/gpu/arm/bifrost/mali_power_gpu_frequency_trace.h b/drivers/gpu/arm/bifrost/mali_power_gpu_frequency_trace.h new file mode 100755 -index 000000000000..3b90ae437db9 +index 000000000..3b90ae437 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_power_gpu_frequency_trace.h @@ -0,0 +1,69 @@ @@ -236976,7 +236976,7 @@ index 000000000000..3b90ae437db9 +#include diff --git a/drivers/gpu/arm/bifrost/mali_uk.h b/drivers/gpu/arm/bifrost/mali_uk.h new file mode 100755 -index 000000000000..701f3909042f +index 000000000..701f39090 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mali_uk.h @@ -0,0 +1,84 @@ @@ -237066,7 +237066,7 @@ index 000000000000..701f3909042f +#endif /* _UK_H_ */ diff --git a/drivers/gpu/arm/bifrost/mmu/backend/mali_kbase_mmu_csf.c b/drivers/gpu/arm/bifrost/mmu/backend/mali_kbase_mmu_csf.c new file mode 100755 -index 000000000000..1d106999228a +index 000000000..1d1069992 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mmu/backend/mali_kbase_mmu_csf.c @@ -0,0 +1,532 @@ @@ -237604,7 +237604,7 @@ index 000000000000..1d106999228a +} diff --git a/drivers/gpu/arm/bifrost/mmu/backend/mali_kbase_mmu_jm.c b/drivers/gpu/arm/bifrost/mmu/backend/mali_kbase_mmu_jm.c new file mode 100755 -index 000000000000..b0187a46b733 +index 000000000..b0187a46b --- /dev/null +++ b/drivers/gpu/arm/bifrost/mmu/backend/mali_kbase_mmu_jm.c @@ -0,0 +1,440 @@ @@ -238050,7 +238050,7 @@ index 000000000000..b0187a46b733 +} diff --git a/drivers/gpu/arm/bifrost/mmu/mali_kbase_mmu.c b/drivers/gpu/arm/bifrost/mmu/mali_kbase_mmu.c new file mode 100755 -index 000000000000..a5cda009426d +index 000000000..a5cda0094 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mmu/mali_kbase_mmu.c @@ -0,0 +1,2275 @@ @@ -240331,7 +240331,7 @@ index 000000000000..a5cda009426d +} diff --git a/drivers/gpu/arm/bifrost/mmu/mali_kbase_mmu.h b/drivers/gpu/arm/bifrost/mmu/mali_kbase_mmu.h new file mode 100755 -index 000000000000..f2613e881dac +index 000000000..f2613e881 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mmu/mali_kbase_mmu.h @@ -0,0 +1,156 @@ @@ -240493,7 +240493,7 @@ index 000000000000..f2613e881dac +#endif /* _KBASE_MMU_H_ */ diff --git a/drivers/gpu/arm/bifrost/mmu/mali_kbase_mmu_hw.h b/drivers/gpu/arm/bifrost/mmu/mali_kbase_mmu_hw.h new file mode 100755 -index 000000000000..e6eef86d7ac0 +index 000000000..e6eef86d7 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mmu/mali_kbase_mmu_hw.h @@ -0,0 +1,107 @@ @@ -240606,7 +240606,7 @@ index 000000000000..e6eef86d7ac0 +#endif /* _KBASE_MMU_HW_H_ */ diff --git a/drivers/gpu/arm/bifrost/mmu/mali_kbase_mmu_hw_direct.c b/drivers/gpu/arm/bifrost/mmu/mali_kbase_mmu_hw_direct.c new file mode 100755 -index 000000000000..a820ab24ac05 +index 000000000..a820ab24a --- /dev/null +++ b/drivers/gpu/arm/bifrost/mmu/mali_kbase_mmu_hw_direct.c @@ -0,0 +1,274 @@ @@ -240886,7 +240886,7 @@ index 000000000000..a820ab24ac05 +} diff --git a/drivers/gpu/arm/bifrost/mmu/mali_kbase_mmu_internal.h b/drivers/gpu/arm/bifrost/mmu/mali_kbase_mmu_internal.h new file mode 100755 -index 000000000000..8ecb14d72327 +index 000000000..8ecb14d72 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mmu/mali_kbase_mmu_internal.h @@ -0,0 +1,73 @@ @@ -240965,7 +240965,7 @@ index 000000000000..8ecb14d72327 +#endif /* _KBASE_MMU_INTERNAL_H_ */ diff --git a/drivers/gpu/arm/bifrost/mmu/mali_kbase_mmu_mode_aarch64.c b/drivers/gpu/arm/bifrost/mmu/mali_kbase_mmu_mode_aarch64.c new file mode 100755 -index 000000000000..02493e9b2621 +index 000000000..02493e9b2 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mmu/mali_kbase_mmu_mode_aarch64.c @@ -0,0 +1,200 @@ @@ -241171,7 +241171,7 @@ index 000000000000..02493e9b2621 +} diff --git a/drivers/gpu/arm/bifrost/mmu/mali_kbase_mmu_mode_lpae.c b/drivers/gpu/arm/bifrost/mmu/mali_kbase_mmu_mode_lpae.c new file mode 100755 -index 000000000000..91a2d7ac4dcb +index 000000000..91a2d7ac4 --- /dev/null +++ b/drivers/gpu/arm/bifrost/mmu/mali_kbase_mmu_mode_lpae.c @@ -0,0 +1,215 @@ @@ -241392,7 +241392,7 @@ index 000000000000..91a2d7ac4dcb +} diff --git a/drivers/gpu/arm/bifrost/platform/Kconfig b/drivers/gpu/arm/bifrost/platform/Kconfig new file mode 100755 -index 000000000000..ef9fb963ecf5 +index 000000000..ef9fb963e --- /dev/null +++ b/drivers/gpu/arm/bifrost/platform/Kconfig @@ -0,0 +1,30 @@ @@ -241428,7 +241428,7 @@ index 000000000000..ef9fb963ecf5 + diff --git a/drivers/gpu/arm/bifrost/platform/devicetree/Kbuild b/drivers/gpu/arm/bifrost/platform/devicetree/Kbuild new file mode 100755 -index 000000000000..78343c0570d1 +index 000000000..78343c057 --- /dev/null +++ b/drivers/gpu/arm/bifrost/platform/devicetree/Kbuild @@ -0,0 +1,25 @@ @@ -241459,7 +241459,7 @@ index 000000000000..78343c0570d1 + $(MALI_PLATFORM_DIR)/mali_kbase_clk_rate_trace.o diff --git a/drivers/gpu/arm/bifrost/platform/devicetree/mali_kbase_clk_rate_trace.c b/drivers/gpu/arm/bifrost/platform/devicetree/mali_kbase_clk_rate_trace.c new file mode 100755 -index 000000000000..11a8b77dca06 +index 000000000..11a8b77dc --- /dev/null +++ b/drivers/gpu/arm/bifrost/platform/devicetree/mali_kbase_clk_rate_trace.c @@ -0,0 +1,68 @@ @@ -241533,7 +241533,7 @@ index 000000000000..11a8b77dca06 +}; diff --git a/drivers/gpu/arm/bifrost/platform/devicetree/mali_kbase_config_devicetree.c b/drivers/gpu/arm/bifrost/platform/devicetree/mali_kbase_config_devicetree.c new file mode 100755 -index 000000000000..ccefddf882fd +index 000000000..ccefddf88 --- /dev/null +++ b/drivers/gpu/arm/bifrost/platform/devicetree/mali_kbase_config_devicetree.c @@ -0,0 +1,41 @@ @@ -241580,7 +241580,7 @@ index 000000000000..ccefddf882fd +#endif diff --git a/drivers/gpu/arm/bifrost/platform/devicetree/mali_kbase_config_platform.h b/drivers/gpu/arm/bifrost/platform/devicetree/mali_kbase_config_platform.h new file mode 100755 -index 000000000000..2137b425c1ab +index 000000000..2137b425c --- /dev/null +++ b/drivers/gpu/arm/bifrost/platform/devicetree/mali_kbase_config_platform.h @@ -0,0 +1,49 @@ @@ -241635,7 +241635,7 @@ index 000000000000..2137b425c1ab +#define AUTO_SUSPEND_DELAY (100) diff --git a/drivers/gpu/arm/bifrost/platform/devicetree/mali_kbase_runtime_pm.c b/drivers/gpu/arm/bifrost/platform/devicetree/mali_kbase_runtime_pm.c new file mode 100755 -index 000000000000..8772edb56f73 +index 000000000..8772edb56 --- /dev/null +++ b/drivers/gpu/arm/bifrost/platform/devicetree/mali_kbase_runtime_pm.c @@ -0,0 +1,185 @@ @@ -241826,7 +241826,7 @@ index 000000000000..8772edb56f73 + diff --git a/drivers/gpu/arm/bifrost/platform/rk/Kbuild b/drivers/gpu/arm/bifrost/platform/rk/Kbuild new file mode 100755 -index 000000000000..7cc6c59d969f +index 000000000..7cc6c59d9 --- /dev/null +++ b/drivers/gpu/arm/bifrost/platform/rk/Kbuild @@ -0,0 +1,17 @@ @@ -241849,7 +241849,7 @@ index 000000000000..7cc6c59d969f + diff --git a/drivers/gpu/arm/bifrost/platform/rk/custom_log.h b/drivers/gpu/arm/bifrost/platform/rk/custom_log.h new file mode 100755 -index 000000000000..5de70ee13d25 +index 000000000..5de70ee13 --- /dev/null +++ b/drivers/gpu/arm/bifrost/platform/rk/custom_log.h @@ -0,0 +1,192 @@ @@ -242047,7 +242047,7 @@ index 000000000000..5de70ee13d25 +#endif /* __CUSTOM_LOG_H__ */ diff --git a/drivers/gpu/arm/bifrost/platform/rk/mali_kbase_config_platform.h b/drivers/gpu/arm/bifrost/platform/rk/mali_kbase_config_platform.h new file mode 100755 -index 000000000000..07c5b6f8a760 +index 000000000..07c5b6f8a --- /dev/null +++ b/drivers/gpu/arm/bifrost/platform/rk/mali_kbase_config_platform.h @@ -0,0 +1,88 @@ @@ -242141,7 +242141,7 @@ index 000000000000..07c5b6f8a760 + diff --git a/drivers/gpu/arm/bifrost/platform/rk/mali_kbase_config_rk.c b/drivers/gpu/arm/bifrost/platform/rk/mali_kbase_config_rk.c new file mode 100755 -index 000000000000..e73ef450d135 +index 000000000..e73ef450d --- /dev/null +++ b/drivers/gpu/arm/bifrost/platform/rk/mali_kbase_config_rk.c @@ -0,0 +1,459 @@ @@ -242606,7 +242606,7 @@ index 000000000000..e73ef450d135 +} diff --git a/drivers/gpu/arm/bifrost/platform/rk/mali_kbase_rk.h b/drivers/gpu/arm/bifrost/platform/rk/mali_kbase_rk.h new file mode 100755 -index 000000000000..6eab25014d21 +index 000000000..6eab25014 --- /dev/null +++ b/drivers/gpu/arm/bifrost/platform/rk/mali_kbase_rk.h @@ -0,0 +1,62 @@ @@ -242674,7 +242674,7 @@ index 000000000000..6eab25014d21 + diff --git a/drivers/gpu/arm/bifrost/platform/vexpress/Kbuild b/drivers/gpu/arm/bifrost/platform/vexpress/Kbuild new file mode 100755 -index 000000000000..6780e4c9433b +index 000000000..6780e4c94 --- /dev/null +++ b/drivers/gpu/arm/bifrost/platform/vexpress/Kbuild @@ -0,0 +1,24 @@ @@ -242704,7 +242704,7 @@ index 000000000000..6780e4c9433b + mali_kbase_platform_fake.o diff --git a/drivers/gpu/arm/bifrost/platform/vexpress/mali_kbase_config_platform.h b/drivers/gpu/arm/bifrost/platform/vexpress/mali_kbase_config_platform.h new file mode 100755 -index 000000000000..fac3cd52182f +index 000000000..fac3cd521 --- /dev/null +++ b/drivers/gpu/arm/bifrost/platform/vexpress/mali_kbase_config_platform.h @@ -0,0 +1,39 @@ @@ -242749,7 +242749,7 @@ index 000000000000..fac3cd52182f +extern struct kbase_pm_callback_conf pm_callbacks; diff --git a/drivers/gpu/arm/bifrost/platform/vexpress/mali_kbase_config_vexpress.c b/drivers/gpu/arm/bifrost/platform/vexpress/mali_kbase_config_vexpress.c new file mode 100755 -index 000000000000..d165ce262814 +index 000000000..d165ce262 --- /dev/null +++ b/drivers/gpu/arm/bifrost/platform/vexpress/mali_kbase_config_vexpress.c @@ -0,0 +1,69 @@ @@ -242824,7 +242824,7 @@ index 000000000000..d165ce262814 +} diff --git a/drivers/gpu/arm/bifrost/platform/vexpress_1xv7_a57/Kbuild b/drivers/gpu/arm/bifrost/platform/vexpress_1xv7_a57/Kbuild new file mode 100755 -index 000000000000..51b408efd48a +index 000000000..51b408efd --- /dev/null +++ b/drivers/gpu/arm/bifrost/platform/vexpress_1xv7_a57/Kbuild @@ -0,0 +1,24 @@ @@ -242854,7 +242854,7 @@ index 000000000000..51b408efd48a + mali_kbase_platform_fake.o diff --git a/drivers/gpu/arm/bifrost/platform/vexpress_1xv7_a57/mali_kbase_config_platform.h b/drivers/gpu/arm/bifrost/platform/vexpress_1xv7_a57/mali_kbase_config_platform.h new file mode 100755 -index 000000000000..fac3cd52182f +index 000000000..fac3cd521 --- /dev/null +++ b/drivers/gpu/arm/bifrost/platform/vexpress_1xv7_a57/mali_kbase_config_platform.h @@ -0,0 +1,39 @@ @@ -242899,7 +242899,7 @@ index 000000000000..fac3cd52182f +extern struct kbase_pm_callback_conf pm_callbacks; diff --git a/drivers/gpu/arm/bifrost/platform/vexpress_1xv7_a57/mali_kbase_config_vexpress.c b/drivers/gpu/arm/bifrost/platform/vexpress_1xv7_a57/mali_kbase_config_vexpress.c new file mode 100755 -index 000000000000..efca0a5b3493 +index 000000000..efca0a5b3 --- /dev/null +++ b/drivers/gpu/arm/bifrost/platform/vexpress_1xv7_a57/mali_kbase_config_vexpress.c @@ -0,0 +1,65 @@ @@ -242970,7 +242970,7 @@ index 000000000000..efca0a5b3493 +} diff --git a/drivers/gpu/arm/bifrost/platform/vexpress_6xvirtex7_10mhz/Kbuild b/drivers/gpu/arm/bifrost/platform/vexpress_6xvirtex7_10mhz/Kbuild new file mode 100755 -index 000000000000..e07709c9b1a5 +index 000000000..e07709c9b --- /dev/null +++ b/drivers/gpu/arm/bifrost/platform/vexpress_6xvirtex7_10mhz/Kbuild @@ -0,0 +1,25 @@ @@ -243001,7 +243001,7 @@ index 000000000000..e07709c9b1a5 + mali_kbase_platform_fake.o diff --git a/drivers/gpu/arm/bifrost/platform/vexpress_6xvirtex7_10mhz/mali_kbase_config_platform.h b/drivers/gpu/arm/bifrost/platform/vexpress_6xvirtex7_10mhz/mali_kbase_config_platform.h new file mode 100755 -index 000000000000..fac3cd52182f +index 000000000..fac3cd521 --- /dev/null +++ b/drivers/gpu/arm/bifrost/platform/vexpress_6xvirtex7_10mhz/mali_kbase_config_platform.h @@ -0,0 +1,39 @@ @@ -243046,7 +243046,7 @@ index 000000000000..fac3cd52182f +extern struct kbase_pm_callback_conf pm_callbacks; diff --git a/drivers/gpu/arm/bifrost/platform/vexpress_6xvirtex7_10mhz/mali_kbase_config_vexpress.c b/drivers/gpu/arm/bifrost/platform/vexpress_6xvirtex7_10mhz/mali_kbase_config_vexpress.c new file mode 100755 -index 000000000000..b6714b95b776 +index 000000000..b6714b95b --- /dev/null +++ b/drivers/gpu/arm/bifrost/platform/vexpress_6xvirtex7_10mhz/mali_kbase_config_vexpress.c @@ -0,0 +1,67 @@ @@ -243119,7 +243119,7 @@ index 000000000000..b6714b95b776 +} diff --git a/drivers/gpu/arm/bifrost/protected_mode_switcher.h b/drivers/gpu/arm/bifrost/protected_mode_switcher.h new file mode 100755 -index 000000000000..8778d812aea0 +index 000000000..8778d812a --- /dev/null +++ b/drivers/gpu/arm/bifrost/protected_mode_switcher.h @@ -0,0 +1,69 @@ @@ -243194,7 +243194,7 @@ index 000000000000..8778d812aea0 +#endif /* _PROTECTED_MODE_SWITCH_H_ */ diff --git a/drivers/gpu/arm/bifrost/tests/Kbuild b/drivers/gpu/arm/bifrost/tests/Kbuild new file mode 100755 -index 000000000000..c26bef780781 +index 000000000..c26bef780 --- /dev/null +++ b/drivers/gpu/arm/bifrost/tests/Kbuild @@ -0,0 +1,24 @@ @@ -243224,7 +243224,7 @@ index 000000000000..c26bef780781 +obj-$(CONFIG_MALI_CLK_RATE_TRACE_PORTAL) += mali_kutf_clk_rate_trace/kernel/ diff --git a/drivers/gpu/arm/bifrost/tests/Kconfig b/drivers/gpu/arm/bifrost/tests/Kconfig new file mode 100755 -index 000000000000..83a4d7764a50 +index 000000000..83a4d7764 --- /dev/null +++ b/drivers/gpu/arm/bifrost/tests/Kconfig @@ -0,0 +1,24 @@ @@ -243254,7 +243254,7 @@ index 000000000000..83a4d7764a50 +source "drivers/gpu/arm/midgard/tests/mali_kutf_clk_rate_trace/kernel/Kconfig" diff --git a/drivers/gpu/arm/bifrost/tests/Mconfig b/drivers/gpu/arm/bifrost/tests/Mconfig new file mode 100755 -index 000000000000..bba96b3d9e48 +index 000000000..bba96b3d9 --- /dev/null +++ b/drivers/gpu/arm/bifrost/tests/Mconfig @@ -0,0 +1,38 @@ @@ -243298,7 +243298,7 @@ index 000000000000..bba96b3d9e48 + diff --git a/drivers/gpu/arm/bifrost/tests/include/kutf/kutf_helpers.h b/drivers/gpu/arm/bifrost/tests/include/kutf/kutf_helpers.h new file mode 100755 -index 000000000000..858b9c38b49a +index 000000000..858b9c38b --- /dev/null +++ b/drivers/gpu/arm/bifrost/tests/include/kutf/kutf_helpers.h @@ -0,0 +1,85 @@ @@ -243389,7 +243389,7 @@ index 000000000000..858b9c38b49a +#endif /* _KERNEL_UTF_HELPERS_H_ */ diff --git a/drivers/gpu/arm/bifrost/tests/include/kutf/kutf_helpers_user.h b/drivers/gpu/arm/bifrost/tests/include/kutf/kutf_helpers_user.h new file mode 100755 -index 000000000000..3b1300e1ce6f +index 000000000..3b1300e1c --- /dev/null +++ b/drivers/gpu/arm/bifrost/tests/include/kutf/kutf_helpers_user.h @@ -0,0 +1,179 @@ @@ -243574,7 +243574,7 @@ index 000000000000..3b1300e1ce6f +#endif /* _KERNEL_UTF_HELPERS_USER_H_ */ diff --git a/drivers/gpu/arm/bifrost/tests/include/kutf/kutf_mem.h b/drivers/gpu/arm/bifrost/tests/include/kutf/kutf_mem.h new file mode 100755 -index 000000000000..988559de1edf +index 000000000..988559de1 --- /dev/null +++ b/drivers/gpu/arm/bifrost/tests/include/kutf/kutf_mem.h @@ -0,0 +1,73 @@ @@ -243653,7 +243653,7 @@ index 000000000000..988559de1edf +#endif /* _KERNEL_UTF_MEM_H_ */ diff --git a/drivers/gpu/arm/bifrost/tests/include/kutf/kutf_resultset.h b/drivers/gpu/arm/bifrost/tests/include/kutf/kutf_resultset.h new file mode 100755 -index 000000000000..49ebeb4ec546 +index 000000000..49ebeb4ec --- /dev/null +++ b/drivers/gpu/arm/bifrost/tests/include/kutf/kutf_resultset.h @@ -0,0 +1,181 @@ @@ -243840,7 +243840,7 @@ index 000000000000..49ebeb4ec546 +#endif /* _KERNEL_UTF_RESULTSET_H_ */ diff --git a/drivers/gpu/arm/bifrost/tests/include/kutf/kutf_suite.h b/drivers/gpu/arm/bifrost/tests/include/kutf/kutf_suite.h new file mode 100755 -index 000000000000..8d75f506f9eb +index 000000000..8d75f506f --- /dev/null +++ b/drivers/gpu/arm/bifrost/tests/include/kutf/kutf_suite.h @@ -0,0 +1,569 @@ @@ -244415,7 +244415,7 @@ index 000000000000..8d75f506f9eb +#endif /* _KERNEL_UTF_SUITE_H_ */ diff --git a/drivers/gpu/arm/bifrost/tests/include/kutf/kutf_utils.h b/drivers/gpu/arm/bifrost/tests/include/kutf/kutf_utils.h new file mode 100755 -index 000000000000..25b8285500d7 +index 000000000..25b828550 --- /dev/null +++ b/drivers/gpu/arm/bifrost/tests/include/kutf/kutf_utils.h @@ -0,0 +1,60 @@ @@ -244481,7 +244481,7 @@ index 000000000000..25b8285500d7 +#endif /* _KERNEL_UTF_UTILS_H_ */ diff --git a/drivers/gpu/arm/bifrost/tests/kutf/Kbuild b/drivers/gpu/arm/bifrost/tests/kutf/Kbuild new file mode 100755 -index 000000000000..2531d41ca28d +index 000000000..2531d41ca --- /dev/null +++ b/drivers/gpu/arm/bifrost/tests/kutf/Kbuild @@ -0,0 +1,26 @@ @@ -244513,7 +244513,7 @@ index 000000000000..2531d41ca28d +kutf-y := kutf_mem.o kutf_resultset.o kutf_suite.o kutf_utils.o kutf_helpers.o kutf_helpers_user.o diff --git a/drivers/gpu/arm/bifrost/tests/kutf/Kconfig b/drivers/gpu/arm/bifrost/tests/kutf/Kconfig new file mode 100755 -index 000000000000..0cdb474c06a3 +index 000000000..0cdb474c0 --- /dev/null +++ b/drivers/gpu/arm/bifrost/tests/kutf/Kconfig @@ -0,0 +1,28 @@ @@ -244547,7 +244547,7 @@ index 000000000000..0cdb474c06a3 + choose M here - this will generate a single module called kutf. diff --git a/drivers/gpu/arm/bifrost/tests/kutf/Makefile b/drivers/gpu/arm/bifrost/tests/kutf/Makefile new file mode 100755 -index 000000000000..d848e8774bd0 +index 000000000..d848e8774 --- /dev/null +++ b/drivers/gpu/arm/bifrost/tests/kutf/Makefile @@ -0,0 +1,35 @@ @@ -244588,7 +244588,7 @@ index 000000000000..d848e8774bd0 + $(MAKE) ARCH=$(ARCH) -C $(KDIR) M=$(CURDIR) clean diff --git a/drivers/gpu/arm/bifrost/tests/kutf/build.bp b/drivers/gpu/arm/bifrost/tests/kutf/build.bp new file mode 100755 -index 000000000000..32eab143e669 +index 000000000..32eab143e --- /dev/null +++ b/drivers/gpu/arm/bifrost/tests/kutf/build.bp @@ -0,0 +1,36 @@ @@ -244630,7 +244630,7 @@ index 000000000000..32eab143e669 +} diff --git a/drivers/gpu/arm/bifrost/tests/kutf/kutf_helpers.c b/drivers/gpu/arm/bifrost/tests/kutf/kutf_helpers.c new file mode 100755 -index 000000000000..4463b04792f5 +index 000000000..4463b0479 --- /dev/null +++ b/drivers/gpu/arm/bifrost/tests/kutf/kutf_helpers.c @@ -0,0 +1,131 @@ @@ -244767,7 +244767,7 @@ index 000000000000..4463b04792f5 +} diff --git a/drivers/gpu/arm/bifrost/tests/kutf/kutf_helpers_user.c b/drivers/gpu/arm/bifrost/tests/kutf/kutf_helpers_user.c new file mode 100755 -index 000000000000..108fa82d9b21 +index 000000000..108fa82d9 --- /dev/null +++ b/drivers/gpu/arm/bifrost/tests/kutf/kutf_helpers_user.c @@ -0,0 +1,468 @@ @@ -245241,7 +245241,7 @@ index 000000000000..108fa82d9b21 +EXPORT_SYMBOL(kutf_helper_output_named_val); diff --git a/drivers/gpu/arm/bifrost/tests/kutf/kutf_mem.c b/drivers/gpu/arm/bifrost/tests/kutf/kutf_mem.c new file mode 100755 -index 000000000000..fd98beaeb84a +index 000000000..fd98beaeb --- /dev/null +++ b/drivers/gpu/arm/bifrost/tests/kutf/kutf_mem.c @@ -0,0 +1,108 @@ @@ -245355,7 +245355,7 @@ index 000000000000..fd98beaeb84a +EXPORT_SYMBOL(kutf_mempool_alloc); diff --git a/drivers/gpu/arm/bifrost/tests/kutf/kutf_resultset.c b/drivers/gpu/arm/bifrost/tests/kutf/kutf_resultset.c new file mode 100755 -index 000000000000..94ecfa4421e1 +index 000000000..94ecfa442 --- /dev/null +++ b/drivers/gpu/arm/bifrost/tests/kutf/kutf_resultset.c @@ -0,0 +1,164 @@ @@ -245525,7 +245525,7 @@ index 000000000000..94ecfa4421e1 +} diff --git a/drivers/gpu/arm/bifrost/tests/kutf/kutf_suite.c b/drivers/gpu/arm/bifrost/tests/kutf/kutf_suite.c new file mode 100755 -index 000000000000..9dc6e2b4bad4 +index 000000000..9dc6e2b4b --- /dev/null +++ b/drivers/gpu/arm/bifrost/tests/kutf/kutf_suite.c @@ -0,0 +1,1224 @@ @@ -246755,7 +246755,7 @@ index 000000000000..9dc6e2b4bad4 +module_exit(exit_kutf_core); diff --git a/drivers/gpu/arm/bifrost/tests/kutf/kutf_utils.c b/drivers/gpu/arm/bifrost/tests/kutf/kutf_utils.c new file mode 100755 -index 000000000000..7f5ac517fdb4 +index 000000000..7f5ac517f --- /dev/null +++ b/drivers/gpu/arm/bifrost/tests/kutf/kutf_utils.c @@ -0,0 +1,76 @@ @@ -246837,7 +246837,7 @@ index 000000000000..7f5ac517fdb4 +EXPORT_SYMBOL(kutf_dsprintf); diff --git a/drivers/gpu/arm/bifrost/tests/mali_kutf_clk_rate_trace/kernel/Kbuild b/drivers/gpu/arm/bifrost/tests/mali_kutf_clk_rate_trace/kernel/Kbuild new file mode 100755 -index 000000000000..f5565d30f9cf +index 000000000..f5565d30f --- /dev/null +++ b/drivers/gpu/arm/bifrost/tests/mali_kutf_clk_rate_trace/kernel/Kbuild @@ -0,0 +1,26 @@ @@ -246869,7 +246869,7 @@ index 000000000000..f5565d30f9cf +mali_kutf_clk_rate_trace_test_portal-y := mali_kutf_clk_rate_trace_test.o diff --git a/drivers/gpu/arm/bifrost/tests/mali_kutf_clk_rate_trace/kernel/Kconfig b/drivers/gpu/arm/bifrost/tests/mali_kutf_clk_rate_trace/kernel/Kconfig new file mode 100755 -index 000000000000..8196e4cc6b37 +index 000000000..8196e4cc6 --- /dev/null +++ b/drivers/gpu/arm/bifrost/tests/mali_kutf_clk_rate_trace/kernel/Kconfig @@ -0,0 +1,30 @@ @@ -246905,7 +246905,7 @@ index 000000000000..8196e4cc6b37 + module called mali_kutf_clk_rate_trace_test_portal. diff --git a/drivers/gpu/arm/bifrost/tests/mali_kutf_clk_rate_trace/kernel/Makefile b/drivers/gpu/arm/bifrost/tests/mali_kutf_clk_rate_trace/kernel/Makefile new file mode 100755 -index 000000000000..71c78b84830c +index 000000000..71c78b848 --- /dev/null +++ b/drivers/gpu/arm/bifrost/tests/mali_kutf_clk_rate_trace/kernel/Makefile @@ -0,0 +1,57 @@ @@ -246968,7 +246968,7 @@ index 000000000000..71c78b84830c +endif diff --git a/drivers/gpu/arm/bifrost/tests/mali_kutf_clk_rate_trace/kernel/build.bp b/drivers/gpu/arm/bifrost/tests/mali_kutf_clk_rate_trace/kernel/build.bp new file mode 100755 -index 000000000000..0cc2904db542 +index 000000000..0cc2904db --- /dev/null +++ b/drivers/gpu/arm/bifrost/tests/mali_kutf_clk_rate_trace/kernel/build.bp @@ -0,0 +1,34 @@ @@ -247008,7 +247008,7 @@ index 000000000000..0cc2904db542 +} diff --git a/drivers/gpu/arm/bifrost/tests/mali_kutf_clk_rate_trace/kernel/mali_kutf_clk_rate_trace_test.c b/drivers/gpu/arm/bifrost/tests/mali_kutf_clk_rate_trace/kernel/mali_kutf_clk_rate_trace_test.c new file mode 100755 -index 000000000000..d74a278bffa7 +index 000000000..d74a278bf --- /dev/null +++ b/drivers/gpu/arm/bifrost/tests/mali_kutf_clk_rate_trace/kernel/mali_kutf_clk_rate_trace_test.c @@ -0,0 +1,890 @@ @@ -247904,7 +247904,7 @@ index 000000000000..d74a278bffa7 +MODULE_LICENSE("GPL"); diff --git a/drivers/gpu/arm/bifrost/tests/mali_kutf_clk_rate_trace/mali_kutf_clk_rate_trace_test.h b/drivers/gpu/arm/bifrost/tests/mali_kutf_clk_rate_trace/mali_kutf_clk_rate_trace_test.h new file mode 100755 -index 000000000000..f46afd5086bd +index 000000000..f46afd508 --- /dev/null +++ b/drivers/gpu/arm/bifrost/tests/mali_kutf_clk_rate_trace/mali_kutf_clk_rate_trace_test.h @@ -0,0 +1,148 @@ @@ -248058,7 +248058,7 @@ index 000000000000..f46afd5086bd +#endif /* _KUTF_CLK_RATE_TRACE_TEST_H_ */ diff --git a/drivers/gpu/arm/bifrost/tests/mali_kutf_irq_test/Kbuild b/drivers/gpu/arm/bifrost/tests/mali_kutf_irq_test/Kbuild new file mode 100755 -index 000000000000..ca8c51273b4c +index 000000000..ca8c51273 --- /dev/null +++ b/drivers/gpu/arm/bifrost/tests/mali_kutf_irq_test/Kbuild @@ -0,0 +1,26 @@ @@ -248090,7 +248090,7 @@ index 000000000000..ca8c51273b4c +mali_kutf_irq_test-y := mali_kutf_irq_test_main.o diff --git a/drivers/gpu/arm/bifrost/tests/mali_kutf_irq_test/Kconfig b/drivers/gpu/arm/bifrost/tests/mali_kutf_irq_test/Kconfig new file mode 100755 -index 000000000000..78283307713d +index 000000000..782833077 --- /dev/null +++ b/drivers/gpu/arm/bifrost/tests/mali_kutf_irq_test/Kconfig @@ -0,0 +1,29 @@ @@ -248125,7 +248125,7 @@ index 000000000000..78283307713d + Choosing M here will generate a single module called mali_kutf_irq_test. diff --git a/drivers/gpu/arm/bifrost/tests/mali_kutf_irq_test/Makefile b/drivers/gpu/arm/bifrost/tests/mali_kutf_irq_test/Makefile new file mode 100755 -index 000000000000..bc4d654a90ca +index 000000000..bc4d654a9 --- /dev/null +++ b/drivers/gpu/arm/bifrost/tests/mali_kutf_irq_test/Makefile @@ -0,0 +1,51 @@ @@ -248182,7 +248182,7 @@ index 000000000000..bc4d654a90ca + $(MAKE) ARCH=$(ARCH) -C $(KDIR) M=$(CURDIR) clean diff --git a/drivers/gpu/arm/bifrost/tests/mali_kutf_irq_test/build.bp b/drivers/gpu/arm/bifrost/tests/mali_kutf_irq_test/build.bp new file mode 100755 -index 000000000000..90efdcf9ad9c +index 000000000..90efdcf9a --- /dev/null +++ b/drivers/gpu/arm/bifrost/tests/mali_kutf_irq_test/build.bp @@ -0,0 +1,35 @@ @@ -248223,7 +248223,7 @@ index 000000000000..90efdcf9ad9c +} diff --git a/drivers/gpu/arm/bifrost/tests/mali_kutf_irq_test/mali_kutf_irq_test_main.c b/drivers/gpu/arm/bifrost/tests/mali_kutf_irq_test/mali_kutf_irq_test_main.c new file mode 100755 -index 000000000000..5f27c3a7e9b2 +index 000000000..5f27c3a7e --- /dev/null +++ b/drivers/gpu/arm/bifrost/tests/mali_kutf_irq_test/mali_kutf_irq_test_main.c @@ -0,0 +1,278 @@ @@ -248507,7 +248507,7 @@ index 000000000000..5f27c3a7e9b2 +MODULE_VERSION("1.0"); diff --git a/drivers/gpu/arm/bifrost/thirdparty/mali_kbase_mmap.c b/drivers/gpu/arm/bifrost/thirdparty/mali_kbase_mmap.c new file mode 100755 -index 000000000000..cd90ea0ec285 +index 000000000..cd90ea0ec --- /dev/null +++ b/drivers/gpu/arm/bifrost/thirdparty/mali_kbase_mmap.c @@ -0,0 +1,368 @@ @@ -248881,7 +248881,7 @@ index 000000000000..cd90ea0ec285 +} diff --git a/drivers/gpu/arm/bifrost/tl/backend/mali_kbase_timeline_csf.c b/drivers/gpu/arm/bifrost/tl/backend/mali_kbase_timeline_csf.c new file mode 100755 -index 000000000000..abaa6bb12b9d +index 000000000..abaa6bb12 --- /dev/null +++ b/drivers/gpu/arm/bifrost/tl/backend/mali_kbase_timeline_csf.c @@ -0,0 +1,172 @@ @@ -249059,7 +249059,7 @@ index 000000000000..abaa6bb12b9d +} diff --git a/drivers/gpu/arm/bifrost/tl/backend/mali_kbase_timeline_jm.c b/drivers/gpu/arm/bifrost/tl/backend/mali_kbase_timeline_jm.c new file mode 100755 -index 000000000000..c368ac7288da +index 000000000..c368ac728 --- /dev/null +++ b/drivers/gpu/arm/bifrost/tl/backend/mali_kbase_timeline_jm.c @@ -0,0 +1,97 @@ @@ -249163,7 +249163,7 @@ index 000000000000..c368ac7288da \ No newline at end of file diff --git a/drivers/gpu/arm/bifrost/tl/mali_kbase_timeline.c b/drivers/gpu/arm/bifrost/tl/mali_kbase_timeline.c new file mode 100755 -index 000000000000..8d8834fdcda6 +index 000000000..8d8834fdc --- /dev/null +++ b/drivers/gpu/arm/bifrost/tl/mali_kbase_timeline.c @@ -0,0 +1,308 @@ @@ -249477,7 +249477,7 @@ index 000000000000..8d8834fdcda6 +#endif /* MALI_UNIT_TEST */ diff --git a/drivers/gpu/arm/bifrost/tl/mali_kbase_timeline.h b/drivers/gpu/arm/bifrost/tl/mali_kbase_timeline.h new file mode 100755 -index 000000000000..cd48411b45cf +index 000000000..cd48411b4 --- /dev/null +++ b/drivers/gpu/arm/bifrost/tl/mali_kbase_timeline.h @@ -0,0 +1,121 @@ @@ -249604,7 +249604,7 @@ index 000000000000..cd48411b45cf +#endif /* _KBASE_TIMELINE_H */ diff --git a/drivers/gpu/arm/bifrost/tl/mali_kbase_timeline_io.c b/drivers/gpu/arm/bifrost/tl/mali_kbase_timeline_io.c new file mode 100755 -index 000000000000..724f5fa23725 +index 000000000..724f5fa23 --- /dev/null +++ b/drivers/gpu/arm/bifrost/tl/mali_kbase_timeline_io.c @@ -0,0 +1,362 @@ @@ -249972,7 +249972,7 @@ index 000000000000..724f5fa23725 +} diff --git a/drivers/gpu/arm/bifrost/tl/mali_kbase_timeline_priv.h b/drivers/gpu/arm/bifrost/tl/mali_kbase_timeline_priv.h new file mode 100755 -index 000000000000..35eec467af90 +index 000000000..35eec467a --- /dev/null +++ b/drivers/gpu/arm/bifrost/tl/mali_kbase_timeline_priv.h @@ -0,0 +1,73 @@ @@ -250051,7 +250051,7 @@ index 000000000000..35eec467af90 +#endif /* _KBASE_TIMELINE_PRIV_H */ diff --git a/drivers/gpu/arm/bifrost/tl/mali_kbase_tl_serialize.h b/drivers/gpu/arm/bifrost/tl/mali_kbase_tl_serialize.h new file mode 100755 -index 000000000000..3e378279cf2c +index 000000000..3e378279c --- /dev/null +++ b/drivers/gpu/arm/bifrost/tl/mali_kbase_tl_serialize.h @@ -0,0 +1,125 @@ @@ -250182,7 +250182,7 @@ index 000000000000..3e378279cf2c + diff --git a/drivers/gpu/arm/bifrost/tl/mali_kbase_tlstream.c b/drivers/gpu/arm/bifrost/tl/mali_kbase_tlstream.c new file mode 100755 -index 000000000000..f4239cfafb9d +index 000000000..f4239cfaf --- /dev/null +++ b/drivers/gpu/arm/bifrost/tl/mali_kbase_tlstream.c @@ -0,0 +1,306 @@ @@ -250494,7 +250494,7 @@ index 000000000000..f4239cfafb9d + diff --git a/drivers/gpu/arm/bifrost/tl/mali_kbase_tlstream.h b/drivers/gpu/arm/bifrost/tl/mali_kbase_tlstream.h new file mode 100755 -index 000000000000..faf88d676b5d +index 000000000..faf88d676 --- /dev/null +++ b/drivers/gpu/arm/bifrost/tl/mali_kbase_tlstream.h @@ -0,0 +1,169 @@ @@ -250669,7 +250669,7 @@ index 000000000000..faf88d676b5d + diff --git a/drivers/gpu/arm/bifrost/tl/mali_kbase_tracepoints.c b/drivers/gpu/arm/bifrost/tl/mali_kbase_tracepoints.c new file mode 100755 -index 000000000000..de76fa57051e +index 000000000..de76fa570 --- /dev/null +++ b/drivers/gpu/arm/bifrost/tl/mali_kbase_tracepoints.c @@ -0,0 +1,2974 @@ @@ -253649,7 +253649,7 @@ index 000000000000..de76fa57051e +/* clang-format on */ diff --git a/drivers/gpu/arm/bifrost/tl/mali_kbase_tracepoints.h b/drivers/gpu/arm/bifrost/tl/mali_kbase_tracepoints.h new file mode 100755 -index 000000000000..5651f0a0fc57 +index 000000000..5651f0a0f --- /dev/null +++ b/drivers/gpu/arm/bifrost/tl/mali_kbase_tracepoints.h @@ -0,0 +1,2926 @@ @@ -256581,7 +256581,7 @@ index 000000000000..5651f0a0fc57 +#endif diff --git a/drivers/gpu/arm/bifrost_for_linux/Kbuild b/drivers/gpu/arm/bifrost_for_linux/Kbuild new file mode 100755 -index 000000000000..531b92126b98 +index 000000000..531b92126 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/Kbuild @@ -0,0 +1,172 @@ @@ -256759,7 +256759,7 @@ index 000000000000..531b92126b98 +obj-$(CONFIG_MALI_KUTF) += tests/ diff --git a/drivers/gpu/arm/bifrost_for_linux/Kconfig b/drivers/gpu/arm/bifrost_for_linux/Kconfig new file mode 100755 -index 000000000000..e78b634031ee +index 000000000..e78b63403 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/Kconfig @@ -0,0 +1,196 @@ @@ -256961,7 +256961,7 @@ index 000000000000..e78b634031ee +# source "drivers/gpu/arm/bifrost/tests/Kconfig" diff --git a/drivers/gpu/arm/bifrost_for_linux/Makefile b/drivers/gpu/arm/bifrost_for_linux/Makefile new file mode 100755 -index 000000000000..26522d566dd0 +index 000000000..26522d566 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/Makefile @@ -0,0 +1,42 @@ @@ -257009,7 +257009,7 @@ index 000000000000..26522d566dd0 + $(MAKE) -C $(KDIR) M=$(CURDIR) clean diff --git a/drivers/gpu/arm/bifrost_for_linux/Makefile.kbase b/drivers/gpu/arm/bifrost_for_linux/Makefile.kbase new file mode 100755 -index 000000000000..2bef9c25eaeb +index 000000000..2bef9c25e --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/Makefile.kbase @@ -0,0 +1,17 @@ @@ -257032,7 +257032,7 @@ index 000000000000..2bef9c25eaeb + diff --git a/drivers/gpu/arm/bifrost_for_linux/backend/gpu/Kbuild b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/Kbuild new file mode 100755 -index 000000000000..5eeba1b14710 +index 000000000..5eeba1b14 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/Kbuild @@ -0,0 +1,60 @@ @@ -257098,7 +257098,7 @@ index 000000000000..5eeba1b14710 +endif diff --git a/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_backend_config.h b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_backend_config.h new file mode 100755 -index 000000000000..c8ae87eb84a2 +index 000000000..c8ae87eb8 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_backend_config.h @@ -0,0 +1,29 @@ @@ -257133,7 +257133,7 @@ index 000000000000..c8ae87eb84a2 + diff --git a/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_cache_policy_backend.c b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_cache_policy_backend.c new file mode 100755 -index 000000000000..fef9a2cb743e +index 000000000..fef9a2cb7 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_cache_policy_backend.c @@ -0,0 +1,29 @@ @@ -257168,7 +257168,7 @@ index 000000000000..fef9a2cb743e + diff --git a/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_cache_policy_backend.h b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_cache_policy_backend.h new file mode 100755 -index 000000000000..fe9869109a82 +index 000000000..fe9869109 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_cache_policy_backend.h @@ -0,0 +1,34 @@ @@ -257208,7 +257208,7 @@ index 000000000000..fe9869109a82 +#endif /* _KBASE_CACHE_POLICY_H_ */ diff --git a/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_debug_job_fault_backend.c b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_debug_job_fault_backend.c new file mode 100755 -index 000000000000..7851ea6466c7 +index 000000000..7851ea646 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_debug_job_fault_backend.c @@ -0,0 +1,157 @@ @@ -257371,7 +257371,7 @@ index 000000000000..7851ea6466c7 +#endif diff --git a/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_devfreq.c b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_devfreq.c new file mode 100755 -index 000000000000..003af36d8fe2 +index 000000000..003af36d8 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_devfreq.c @@ -0,0 +1,495 @@ @@ -257872,7 +257872,7 @@ index 000000000000..003af36d8fe2 +} diff --git a/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_devfreq.h b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_devfreq.h new file mode 100755 -index 000000000000..7bcc350f3006 +index 000000000..7bcc350f3 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_devfreq.h @@ -0,0 +1,25 @@ @@ -257903,7 +257903,7 @@ index 000000000000..7bcc350f3006 +#endif /* _BASE_DEVFREQ_H_ */ diff --git a/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_device_hw.c b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_device_hw.c new file mode 100755 -index 000000000000..17f253308ffc +index 000000000..17f253308 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_device_hw.c @@ -0,0 +1,255 @@ @@ -258164,7 +258164,7 @@ index 000000000000..17f253308ffc +} diff --git a/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_device_internal.h b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_device_internal.h new file mode 100755 -index 000000000000..5b20445932fb +index 000000000..5b2044593 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_device_internal.h @@ -0,0 +1,67 @@ @@ -258237,7 +258237,7 @@ index 000000000000..5b20445932fb +#endif /* _KBASE_DEVICE_INTERNAL_H_ */ diff --git a/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_gpu.c b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_gpu.c new file mode 100755 -index 000000000000..a7c3a77d8ac8 +index 000000000..a7c3a77d8 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_gpu.c @@ -0,0 +1,123 @@ @@ -258366,7 +258366,7 @@ index 000000000000..a7c3a77d8ac8 + diff --git a/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_gpuprops_backend.c b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_gpuprops_backend.c new file mode 100755 -index 000000000000..b395325b556b +index 000000000..b395325b5 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_gpuprops_backend.c @@ -0,0 +1,110 @@ @@ -258482,7 +258482,7 @@ index 000000000000..b395325b556b + diff --git a/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_instr_backend.c b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_instr_backend.c new file mode 100755 -index 000000000000..8084d054cc5b +index 000000000..8084d054c --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_instr_backend.c @@ -0,0 +1,492 @@ @@ -258980,7 +258980,7 @@ index 000000000000..8084d054cc5b + diff --git a/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_instr_defs.h b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_instr_defs.h new file mode 100755 -index 000000000000..4794672da8f0 +index 000000000..4794672da --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_instr_defs.h @@ -0,0 +1,58 @@ @@ -259044,7 +259044,7 @@ index 000000000000..4794672da8f0 + diff --git a/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_instr_internal.h b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_instr_internal.h new file mode 100755 -index 000000000000..e96aeae786e1 +index 000000000..e96aeae78 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_instr_internal.h @@ -0,0 +1,45 @@ @@ -259095,7 +259095,7 @@ index 000000000000..e96aeae786e1 +#endif /* _KBASE_INSTR_INTERNAL_H_ */ diff --git a/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_irq_internal.h b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_irq_internal.h new file mode 100755 -index 000000000000..8781561e73d0 +index 000000000..8781561e7 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_irq_internal.h @@ -0,0 +1,39 @@ @@ -259140,7 +259140,7 @@ index 000000000000..8781561e73d0 +#endif /* _KBASE_IRQ_INTERNAL_H_ */ diff --git a/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_irq_linux.c b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_irq_linux.c new file mode 100755 -index 000000000000..d0666c86cf59 +index 000000000..d0666c86c --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_irq_linux.c @@ -0,0 +1,469 @@ @@ -259615,7 +259615,7 @@ index 000000000000..d0666c86cf59 +#endif /* !defined(CONFIG_MALI_BIFROST_NO_MALI) */ diff --git a/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_jm_as.c b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_jm_as.c new file mode 100755 -index 000000000000..c660c80341f4 +index 000000000..c660c8034 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_jm_as.c @@ -0,0 +1,235 @@ @@ -259856,7 +259856,7 @@ index 000000000000..c660c80341f4 + diff --git a/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_jm_defs.h b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_jm_defs.h new file mode 100755 -index 000000000000..08a7400e66d5 +index 000000000..08a7400e6 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_jm_defs.h @@ -0,0 +1,123 @@ @@ -259985,7 +259985,7 @@ index 000000000000..08a7400e66d5 +#endif /* _KBASE_HWACCESS_GPU_DEFS_H_ */ diff --git a/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_jm_hw.c b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_jm_hw.c new file mode 100755 -index 000000000000..cbca5eac82f1 +index 000000000..cbca5eac8 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_jm_hw.c @@ -0,0 +1,1512 @@ @@ -261503,7 +261503,7 @@ index 000000000000..cbca5eac82f1 +#endif /* KBASE_GPU_RESET_EN */ diff --git a/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_jm_internal.h b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_jm_internal.h new file mode 100755 -index 000000000000..1f382b3c1af4 +index 000000000..1f382b3c1 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_jm_internal.h @@ -0,0 +1,164 @@ @@ -261673,7 +261673,7 @@ index 000000000000..1f382b3c1af4 +#endif /* _KBASE_JM_HWACCESS_H_ */ diff --git a/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_jm_rb.c b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_jm_rb.c new file mode 100755 -index 000000000000..a41e7b5b7afb +index 000000000..a41e7b5b7 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_jm_rb.c @@ -0,0 +1,1947 @@ @@ -263626,7 +263626,7 @@ index 000000000000..a41e7b5b7afb + diff --git a/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_jm_rb.h b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_jm_rb.h new file mode 100755 -index 000000000000..1e0e05ad3ea4 +index 000000000..1e0e05ad3 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_jm_rb.h @@ -0,0 +1,76 @@ @@ -263708,7 +263708,7 @@ index 000000000000..1e0e05ad3ea4 +#endif /* _KBASE_HWACCESS_GPU_H_ */ diff --git a/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_js_affinity.c b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_js_affinity.c new file mode 100755 -index 000000000000..54d8ddd80097 +index 000000000..54d8ddd80 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_js_affinity.c @@ -0,0 +1,303 @@ @@ -264017,7 +264017,7 @@ index 000000000000..54d8ddd80097 +#endif /* KBASE_TRACE_ENABLE */ diff --git a/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_js_affinity.h b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_js_affinity.h new file mode 100755 -index 000000000000..35d9781ae092 +index 000000000..35d9781ae --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_js_affinity.h @@ -0,0 +1,129 @@ @@ -264152,7 +264152,7 @@ index 000000000000..35d9781ae092 +#endif /* _KBASE_JS_AFFINITY_H_ */ diff --git a/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_js_backend.c b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_js_backend.c new file mode 100755 -index 000000000000..d392fa2a85d9 +index 000000000..d392fa2a8 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_js_backend.c @@ -0,0 +1,356 @@ @@ -264514,7 +264514,7 @@ index 000000000000..d392fa2a85d9 + diff --git a/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_js_internal.h b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_js_internal.h new file mode 100755 -index 000000000000..3f53779c6747 +index 000000000..3f53779c6 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_js_internal.h @@ -0,0 +1,69 @@ @@ -264589,7 +264589,7 @@ index 000000000000..3f53779c6747 +#endif /* _KBASE_JS_BACKEND_H_ */ diff --git a/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_mmu_hw_direct.c b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_mmu_hw_direct.c new file mode 100755 -index 000000000000..aa1817c8bca9 +index 000000000..aa1817c8b --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_mmu_hw_direct.c @@ -0,0 +1,401 @@ @@ -264996,7 +264996,7 @@ index 000000000000..aa1817c8bca9 +} diff --git a/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_mmu_hw_direct.h b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_mmu_hw_direct.h new file mode 100755 -index 000000000000..c02253c6acc3 +index 000000000..c02253c6a --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_mmu_hw_direct.h @@ -0,0 +1,42 @@ @@ -265044,7 +265044,7 @@ index 000000000000..c02253c6acc3 +#endif /* _MALI_KBASE_MMU_HW_DIRECT_H_ */ diff --git a/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_pm_always_on.c b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_pm_always_on.c new file mode 100755 -index 000000000000..0614348e935a +index 000000000..0614348e9 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_pm_always_on.c @@ -0,0 +1,63 @@ @@ -265113,7 +265113,7 @@ index 000000000000..0614348e935a +KBASE_EXPORT_TEST_API(kbase_pm_always_on_policy_ops); diff --git a/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_pm_always_on.h b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_pm_always_on.h new file mode 100755 -index 000000000000..f9d244b01bc2 +index 000000000..f9d244b01 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_pm_always_on.h @@ -0,0 +1,77 @@ @@ -265196,7 +265196,7 @@ index 000000000000..f9d244b01bc2 + diff --git a/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_pm_backend.c b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_pm_backend.c new file mode 100755 -index 000000000000..cd8932650ed5 +index 000000000..cd8932650 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_pm_backend.c @@ -0,0 +1,478 @@ @@ -265680,7 +265680,7 @@ index 000000000000..cd8932650ed5 +} diff --git a/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_pm_ca.c b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_pm_ca.c new file mode 100755 -index 000000000000..c17db8be8877 +index 000000000..c17db8be8 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_pm_ca.c @@ -0,0 +1,182 @@ @@ -265868,7 +265868,7 @@ index 000000000000..c17db8be8877 +} diff --git a/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_pm_ca.h b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_pm_ca.h new file mode 100755 -index 000000000000..ee9e751f2d79 +index 000000000..ee9e751f2 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_pm_ca.h @@ -0,0 +1,92 @@ @@ -265966,7 +265966,7 @@ index 000000000000..ee9e751f2d79 +#endif /* _KBASE_PM_CA_H_ */ diff --git a/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_pm_ca_devfreq.c b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_pm_ca_devfreq.c new file mode 100755 -index 000000000000..66bf660cffb6 +index 000000000..66bf660cf --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_pm_ca_devfreq.c @@ -0,0 +1,129 @@ @@ -266101,7 +266101,7 @@ index 000000000000..66bf660cffb6 + diff --git a/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_pm_ca_devfreq.h b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_pm_ca_devfreq.h new file mode 100755 -index 000000000000..7ab3cd4d8460 +index 000000000..7ab3cd4d8 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_pm_ca_devfreq.h @@ -0,0 +1,55 @@ @@ -266162,7 +266162,7 @@ index 000000000000..7ab3cd4d8460 + diff --git a/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_pm_ca_fixed.c b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_pm_ca_fixed.c new file mode 100755 -index 000000000000..864612d31f9b +index 000000000..864612d31 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_pm_ca_fixed.c @@ -0,0 +1,65 @@ @@ -266233,7 +266233,7 @@ index 000000000000..864612d31f9b +KBASE_EXPORT_TEST_API(kbase_pm_ca_fixed_policy_ops); diff --git a/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_pm_ca_fixed.h b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_pm_ca_fixed.h new file mode 100755 -index 000000000000..a763155cb703 +index 000000000..a763155cb --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_pm_ca_fixed.h @@ -0,0 +1,40 @@ @@ -266279,7 +266279,7 @@ index 000000000000..a763155cb703 + diff --git a/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_pm_coarse_demand.c b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_pm_coarse_demand.c new file mode 100755 -index 000000000000..f891fa225a89 +index 000000000..f891fa225 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_pm_coarse_demand.c @@ -0,0 +1,70 @@ @@ -266355,7 +266355,7 @@ index 000000000000..f891fa225a89 +KBASE_EXPORT_TEST_API(kbase_pm_coarse_demand_policy_ops); diff --git a/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_pm_coarse_demand.h b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_pm_coarse_demand.h new file mode 100755 -index 000000000000..749d305eee9a +index 000000000..749d305ee --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_pm_coarse_demand.h @@ -0,0 +1,64 @@ @@ -266425,7 +266425,7 @@ index 000000000000..749d305eee9a +#endif /* MALI_KBASE_PM_COARSE_DEMAND_H */ diff --git a/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_pm_defs.h b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_pm_defs.h new file mode 100755 -index 000000000000..564fbda1116a +index 000000000..564fbda11 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_pm_defs.h @@ -0,0 +1,519 @@ @@ -266950,7 +266950,7 @@ index 000000000000..564fbda1116a +#endif /* _KBASE_PM_HWACCESS_DEFS_H_ */ diff --git a/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_pm_demand.c b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_pm_demand.c new file mode 100755 -index 000000000000..81322fd0dd17 +index 000000000..81322fd0d --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_pm_demand.c @@ -0,0 +1,73 @@ @@ -267029,7 +267029,7 @@ index 000000000000..81322fd0dd17 +KBASE_EXPORT_TEST_API(kbase_pm_demand_policy_ops); diff --git a/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_pm_demand.h b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_pm_demand.h new file mode 100755 -index 000000000000..c0c84b6e9189 +index 000000000..c0c84b6e9 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_pm_demand.h @@ -0,0 +1,64 @@ @@ -267099,7 +267099,7 @@ index 000000000000..c0c84b6e9189 +#endif /* MALI_KBASE_PM_DEMAND_H */ diff --git a/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_pm_driver.c b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_pm_driver.c new file mode 100755 -index 000000000000..707f71a79a77 +index 000000000..707f71a79 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_pm_driver.c @@ -0,0 +1,1672 @@ @@ -268777,7 +268777,7 @@ index 000000000000..707f71a79a77 +KBASE_EXPORT_TEST_API(kbase_pm_release_gpu_cycle_counter); diff --git a/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_pm_internal.h b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_pm_internal.h new file mode 100755 -index 000000000000..9fbe094541c5 +index 000000000..9fbe09454 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_pm_internal.h @@ -0,0 +1,548 @@ @@ -269331,7 +269331,7 @@ index 000000000000..9fbe094541c5 +#endif /* _KBASE_BACKEND_PM_INTERNAL_H_ */ diff --git a/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_pm_metrics.c b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_pm_metrics.c new file mode 100755 -index 000000000000..ba13bcd8b291 +index 000000000..ba13bcd8b --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_pm_metrics.c @@ -0,0 +1,401 @@ @@ -269738,7 +269738,7 @@ index 000000000000..ba13bcd8b291 +} diff --git a/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_pm_policy.c b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_pm_policy.c new file mode 100755 -index 000000000000..b98c68d9a42a +index 000000000..b98c68d9a --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_pm_policy.c @@ -0,0 +1,973 @@ @@ -270717,7 +270717,7 @@ index 000000000000..b98c68d9a42a +KBASE_EXPORT_TEST_API(kbase_pm_release_l2_caches); diff --git a/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_pm_policy.h b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_pm_policy.h new file mode 100755 -index 000000000000..611a90e66e65 +index 000000000..611a90e66 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_pm_policy.h @@ -0,0 +1,227 @@ @@ -270950,7 +270950,7 @@ index 000000000000..611a90e66e65 +#endif /* _KBASE_PM_POLICY_H_ */ diff --git a/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_time.c b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_time.c new file mode 100755 -index 000000000000..0068e1091f4c +index 000000000..0068e1091 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_time.c @@ -0,0 +1,103 @@ @@ -271059,7 +271059,7 @@ index 000000000000..0068e1091f4c +#endif /* CONFIG_MALI_BIFROST_NO_MALI */ diff --git a/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_time.h b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_time.h new file mode 100755 -index 000000000000..0559b2f7097d +index 000000000..0559b2f70 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_time.h @@ -0,0 +1,52 @@ @@ -271117,7 +271117,7 @@ index 000000000000..0559b2f7097d +#endif /* _KBASE_BACKEND_TIME_H_ */ diff --git a/drivers/gpu/arm/bifrost_for_linux/docs/Doxyfile b/drivers/gpu/arm/bifrost_for_linux/docs/Doxyfile new file mode 100755 -index 000000000000..35ff2f1ce4a0 +index 000000000..35ff2f1ce --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/docs/Doxyfile @@ -0,0 +1,126 @@ @@ -271249,7 +271249,7 @@ index 000000000000..35ff2f1ce4a0 + diff --git a/drivers/gpu/arm/bifrost_for_linux/docs/policy_operation_diagram.dot b/drivers/gpu/arm/bifrost_for_linux/docs/policy_operation_diagram.dot new file mode 100755 -index 000000000000..7ae05c2f8ded +index 000000000..7ae05c2f8 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/docs/policy_operation_diagram.dot @@ -0,0 +1,112 @@ @@ -271367,7 +271367,7 @@ index 000000000000..7ae05c2f8ded +} diff --git a/drivers/gpu/arm/bifrost_for_linux/docs/policy_overview.dot b/drivers/gpu/arm/bifrost_for_linux/docs/policy_overview.dot new file mode 100755 -index 000000000000..159b993b7d61 +index 000000000..159b993b7 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/docs/policy_overview.dot @@ -0,0 +1,63 @@ @@ -271436,7 +271436,7 @@ index 000000000000..159b993b7d61 +} diff --git a/drivers/gpu/arm/bifrost_for_linux/ipa/Kbuild b/drivers/gpu/arm/bifrost_for_linux/ipa/Kbuild new file mode 100755 -index 000000000000..0776428fce4f +index 000000000..0776428fc --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/ipa/Kbuild @@ -0,0 +1,27 @@ @@ -271469,7 +271469,7 @@ index 000000000000..0776428fce4f +endif diff --git a/drivers/gpu/arm/bifrost_for_linux/ipa/mali_kbase_ipa.c b/drivers/gpu/arm/bifrost_for_linux/ipa/mali_kbase_ipa.c new file mode 100755 -index 000000000000..d6332b55e970 +index 000000000..d6332b55e --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/ipa/mali_kbase_ipa.c @@ -0,0 +1,580 @@ @@ -272055,7 +272055,7 @@ index 000000000000..d6332b55e970 +KBASE_EXPORT_TEST_API(kbase_ipa_power_model_ops); diff --git a/drivers/gpu/arm/bifrost_for_linux/ipa/mali_kbase_ipa.h b/drivers/gpu/arm/bifrost_for_linux/ipa/mali_kbase_ipa.h new file mode 100755 -index 000000000000..67478fe911ea +index 000000000..67478fe91 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/ipa/mali_kbase_ipa.h @@ -0,0 +1,165 @@ @@ -272226,7 +272226,7 @@ index 000000000000..67478fe911ea +#endif diff --git a/drivers/gpu/arm/bifrost_for_linux/ipa/mali_kbase_ipa_debugfs.c b/drivers/gpu/arm/bifrost_for_linux/ipa/mali_kbase_ipa_debugfs.c new file mode 100755 -index 000000000000..eafc14009ddc +index 000000000..eafc14009 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/ipa/mali_kbase_ipa_debugfs.c @@ -0,0 +1,219 @@ @@ -272451,7 +272451,7 @@ index 000000000000..eafc14009ddc +} diff --git a/drivers/gpu/arm/bifrost_for_linux/ipa/mali_kbase_ipa_debugfs.h b/drivers/gpu/arm/bifrost_for_linux/ipa/mali_kbase_ipa_debugfs.h new file mode 100755 -index 000000000000..ec06e2096f94 +index 000000000..ec06e2096 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/ipa/mali_kbase_ipa_debugfs.h @@ -0,0 +1,49 @@ @@ -272506,7 +272506,7 @@ index 000000000000..ec06e2096f94 +#endif /* _KBASE_IPA_DEBUGFS_H_ */ diff --git a/drivers/gpu/arm/bifrost_for_linux/ipa/mali_kbase_ipa_simple.c b/drivers/gpu/arm/bifrost_for_linux/ipa/mali_kbase_ipa_simple.c new file mode 100755 -index 000000000000..b35cea451765 +index 000000000..b35cea451 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/ipa/mali_kbase_ipa_simple.c @@ -0,0 +1,327 @@ @@ -272839,7 +272839,7 @@ index 000000000000..b35cea451765 +}; diff --git a/drivers/gpu/arm/bifrost_for_linux/ipa/mali_kbase_ipa_simple.h b/drivers/gpu/arm/bifrost_for_linux/ipa/mali_kbase_ipa_simple.h new file mode 100755 -index 000000000000..23cd55f5867d +index 000000000..23cd55f58 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/ipa/mali_kbase_ipa_simple.h @@ -0,0 +1,40 @@ @@ -272885,7 +272885,7 @@ index 000000000000..23cd55f5867d +#endif /* _KBASE_IPA_SIMPLE_H_ */ diff --git a/drivers/gpu/arm/bifrost_for_linux/ipa/mali_kbase_ipa_vinstr_common.c b/drivers/gpu/arm/bifrost_for_linux/ipa/mali_kbase_ipa_vinstr_common.c new file mode 100755 -index 000000000000..b3d480030c2b +index 000000000..b3d480030 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/ipa/mali_kbase_ipa_vinstr_common.c @@ -0,0 +1,217 @@ @@ -273108,7 +273108,7 @@ index 000000000000..b3d480030c2b +} diff --git a/drivers/gpu/arm/bifrost_for_linux/ipa/mali_kbase_ipa_vinstr_common.h b/drivers/gpu/arm/bifrost_for_linux/ipa/mali_kbase_ipa_vinstr_common.h new file mode 100755 -index 000000000000..25b36c8e3089 +index 000000000..25b36c8e3 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/ipa/mali_kbase_ipa_vinstr_common.h @@ -0,0 +1,161 @@ @@ -273275,7 +273275,7 @@ index 000000000000..25b36c8e3089 +#endif /* _KBASE_IPA_VINSTR_COMMON_H_ */ diff --git a/drivers/gpu/arm/bifrost_for_linux/ipa/mali_kbase_ipa_vinstr_g71.c b/drivers/gpu/arm/bifrost_for_linux/ipa/mali_kbase_ipa_vinstr_g71.c new file mode 100755 -index 000000000000..81f6fddbd79b +index 000000000..81f6fddbd --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/ipa/mali_kbase_ipa_vinstr_g71.c @@ -0,0 +1,136 @@ @@ -273417,7 +273417,7 @@ index 000000000000..81f6fddbd79b +KBASE_EXPORT_TEST_API(kbase_g71_ipa_model_ops); diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_base_hwconfig_features.h b/drivers/gpu/arm/bifrost_for_linux/mali_base_hwconfig_features.h new file mode 100755 -index 000000000000..219586d4d2da +index 000000000..219586d4d --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_base_hwconfig_features.h @@ -0,0 +1,282 @@ @@ -273705,7 +273705,7 @@ index 000000000000..219586d4d2da +#endif /* _BASE_HWCONFIG_FEATURES_H_ */ diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_base_hwconfig_issues.h b/drivers/gpu/arm/bifrost_for_linux/mali_base_hwconfig_issues.h new file mode 100755 -index 000000000000..1c5ee496ac85 +index 000000000..1c5ee496a --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_base_hwconfig_issues.h @@ -0,0 +1,1126 @@ @@ -274837,7 +274837,7 @@ index 000000000000..1c5ee496ac85 +#endif /* _BASE_HWCONFIG_ISSUES_H_ */ diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_base_kernel.h b/drivers/gpu/arm/bifrost_for_linux/mali_base_kernel.h new file mode 100755 -index 000000000000..6f5c68e288cd +index 000000000..6f5c68e28 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_base_kernel.h @@ -0,0 +1,1822 @@ @@ -276665,7 +276665,7 @@ index 000000000000..6f5c68e288cd +#endif /* _BASE_KERNEL_H_ */ diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_base_mem_priv.h b/drivers/gpu/arm/bifrost_for_linux/mali_base_mem_priv.h new file mode 100755 -index 000000000000..4a98a72cc37a +index 000000000..4a98a72cc --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_base_mem_priv.h @@ -0,0 +1,52 @@ @@ -276723,7 +276723,7 @@ index 000000000000..4a98a72cc37a +#endif diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_base_vendor_specific_func.h b/drivers/gpu/arm/bifrost_for_linux/mali_base_vendor_specific_func.h new file mode 100755 -index 000000000000..be454a216a39 +index 000000000..be454a216 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_base_vendor_specific_func.h @@ -0,0 +1,24 @@ @@ -276753,7 +276753,7 @@ index 000000000000..be454a216a39 +#endif /*_BASE_VENDOR_SPEC_FUNC_H_*/ diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase.h b/drivers/gpu/arm/bifrost_for_linux/mali_kbase.h new file mode 100755 -index 000000000000..1fe936ea6012 +index 000000000..1fe936ea6 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase.h @@ -0,0 +1,616 @@ @@ -277375,7 +277375,7 @@ index 000000000000..1fe936ea6012 + diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_10969_workaround.c b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_10969_workaround.c new file mode 100755 -index 000000000000..6b3559d93351 +index 000000000..6b3559d93 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_10969_workaround.c @@ -0,0 +1,210 @@ @@ -277591,7 +277591,7 @@ index 000000000000..6b3559d93351 +} diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_10969_workaround.h b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_10969_workaround.h new file mode 100755 -index 000000000000..099a29861672 +index 000000000..099a29861 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_10969_workaround.h @@ -0,0 +1,23 @@ @@ -277620,7 +277620,7 @@ index 000000000000..099a29861672 +#endif /* _KBASE_10969_WORKAROUND_ */ diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_as_fault_debugfs.c b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_as_fault_debugfs.c new file mode 100755 -index 000000000000..cc729d416858 +index 000000000..cc729d416 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_as_fault_debugfs.c @@ -0,0 +1,102 @@ @@ -277728,7 +277728,7 @@ index 000000000000..cc729d416858 +} diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_as_fault_debugfs.h b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_as_fault_debugfs.h new file mode 100755 -index 000000000000..66387e1c3f6a +index 000000000..66387e1c3 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_as_fault_debugfs.h @@ -0,0 +1,45 @@ @@ -277779,7 +277779,7 @@ index 000000000000..66387e1c3f6a +#endif /*_KBASE_AS_FAULT_DEBUG_FS_H*/ diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_cache_policy.c b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_cache_policy.c new file mode 100755 -index 000000000000..1d11de67aa80 +index 000000000..1d11de67a --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_cache_policy.c @@ -0,0 +1,54 @@ @@ -277839,7 +277839,7 @@ index 000000000000..1d11de67aa80 +} diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_cache_policy.h b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_cache_policy.h new file mode 100755 -index 000000000000..0c18bdb357b0 +index 000000000..0c18bdb35 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_cache_policy.h @@ -0,0 +1,45 @@ @@ -277890,7 +277890,7 @@ index 000000000000..0c18bdb357b0 +#endif /* _KBASE_CACHE_POLICY_H_ */ diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_config.c b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_config.c new file mode 100755 -index 000000000000..fb615ae02ead +index 000000000..fb615ae02 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_config.c @@ -0,0 +1,51 @@ @@ -277947,7 +277947,7 @@ index 000000000000..fb615ae02ead + diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_config.h b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_config.h new file mode 100755 -index 000000000000..212e3b14d96c +index 000000000..212e3b14d --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_config.h @@ -0,0 +1,343 @@ @@ -278296,7 +278296,7 @@ index 000000000000..212e3b14d96c +#endif /* _KBASE_CONFIG_H_ */ diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_config_defaults.h b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_config_defaults.h new file mode 100755 -index 000000000000..69079e7d9680 +index 000000000..69079e7d9 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_config_defaults.h @@ -0,0 +1,226 @@ @@ -278528,7 +278528,7 @@ index 000000000000..69079e7d9680 + diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_context.c b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_context.c new file mode 100755 -index 000000000000..7a09aa26128e +index 000000000..7a09aa261 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_context.c @@ -0,0 +1,362 @@ @@ -278896,7 +278896,7 @@ index 000000000000..7a09aa26128e +KBASE_EXPORT_SYMBOL(kbase_context_set_create_flags); diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_context.h b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_context.h new file mode 100755 -index 000000000000..a3f5bb0ce0da +index 000000000..a3f5bb0ce --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_context.h @@ -0,0 +1,90 @@ @@ -278992,7 +278992,7 @@ index 000000000000..a3f5bb0ce0da +#endif /* _KBASE_CONTEXT_H_ */ diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_core_linux.c b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_core_linux.c new file mode 100755 -index 000000000000..347fee2643bb +index 000000000..347fee264 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_core_linux.c @@ -0,0 +1,4971 @@ @@ -283969,7 +283969,7 @@ index 000000000000..347fee2643bb +#endif diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_ctx_sched.c b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_ctx_sched.c new file mode 100755 -index 000000000000..e2f7baabad43 +index 000000000..e2f7baaba --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_ctx_sched.c @@ -0,0 +1,203 @@ @@ -284178,7 +284178,7 @@ index 000000000000..e2f7baabad43 +} diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_ctx_sched.h b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_ctx_sched.h new file mode 100755 -index 000000000000..2330d48c8e51 +index 000000000..2330d48c8 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_ctx_sched.h @@ -0,0 +1,131 @@ @@ -284315,7 +284315,7 @@ index 000000000000..2330d48c8e51 +#endif /* _KBASE_CTX_SCHED_H_ */ diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_debug.c b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_debug.c new file mode 100755 -index 000000000000..fb57ac2e31ad +index 000000000..fb57ac2e3 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_debug.c @@ -0,0 +1,39 @@ @@ -284360,7 +284360,7 @@ index 000000000000..fb57ac2e31ad + diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_debug.h b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_debug.h new file mode 100755 -index 000000000000..31b754c5507b +index 000000000..31b754c55 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_debug.h @@ -0,0 +1,164 @@ @@ -284530,7 +284530,7 @@ index 000000000000..31b754c5507b +#endif /* _KBASE_DEBUG_H */ diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_debug_job_fault.c b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_debug_job_fault.c new file mode 100755 -index 000000000000..f29430ddf8f9 +index 000000000..f29430ddf --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_debug_job_fault.c @@ -0,0 +1,499 @@ @@ -285035,7 +285035,7 @@ index 000000000000..f29430ddf8f9 +#endif /* CONFIG_DEBUG_FS */ diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_debug_job_fault.h b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_debug_job_fault.h new file mode 100755 -index 000000000000..a2bf8983c37c +index 000000000..a2bf8983c --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_debug_job_fault.h @@ -0,0 +1,96 @@ @@ -285137,7 +285137,7 @@ index 000000000000..a2bf8983c37c +#endif /*_KBASE_DEBUG_JOB_FAULT_H*/ diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_debug_mem_view.c b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_debug_mem_view.c new file mode 100755 -index 000000000000..aa271566e917 +index 000000000..aa271566e --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_debug_mem_view.c @@ -0,0 +1,306 @@ @@ -285449,7 +285449,7 @@ index 000000000000..aa271566e917 +#endif diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_debug_mem_view.h b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_debug_mem_view.h new file mode 100755 -index 000000000000..20ab51a776c6 +index 000000000..20ab51a77 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_debug_mem_view.h @@ -0,0 +1,25 @@ @@ -285480,7 +285480,7 @@ index 000000000000..20ab51a776c6 +#endif diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_defs.h b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_defs.h new file mode 100755 -index 000000000000..73721f5da139 +index 000000000..73721f5da --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_defs.h @@ -0,0 +1,1641 @@ @@ -287127,7 +287127,7 @@ index 000000000000..73721f5da139 +#endif /* _KBASE_DEFS_H_ */ diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_device.c b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_device.c new file mode 100755 -index 000000000000..2d11f11f3be0 +index 000000000..2d11f11f3 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_device.c @@ -0,0 +1,674 @@ @@ -287807,7 +287807,7 @@ index 000000000000..2d11f11f3be0 + diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_disjoint_events.c b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_disjoint_events.c new file mode 100755 -index 000000000000..f70bcccf4050 +index 000000000..f70bcccf4 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_disjoint_events.c @@ -0,0 +1,76 @@ @@ -287889,7 +287889,7 @@ index 000000000000..f70bcccf4050 +KBASE_EXPORT_TEST_API(kbase_disjoint_event_get); diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_dma_fence.c b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_dma_fence.c new file mode 100755 -index 000000000000..8a571266534b +index 000000000..8a5712665 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_dma_fence.c @@ -0,0 +1,449 @@ @@ -288344,7 +288344,7 @@ index 000000000000..8a571266534b +} diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_dma_fence.h b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_dma_fence.h new file mode 100755 -index 000000000000..b02ea9774c4f +index 000000000..b02ea9774 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_dma_fence.h @@ -0,0 +1,131 @@ @@ -288481,7 +288481,7 @@ index 000000000000..b02ea9774c4f +#endif diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_event.c b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_event.c new file mode 100755 -index 000000000000..188148645f37 +index 000000000..188148645 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_event.c @@ -0,0 +1,259 @@ @@ -288746,7 +288746,7 @@ index 000000000000..188148645f37 +KBASE_EXPORT_TEST_API(kbase_event_cleanup); diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_fence.c b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_fence.c new file mode 100755 -index 000000000000..fcb373372596 +index 000000000..fcb373372 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_fence.c @@ -0,0 +1,196 @@ @@ -288948,7 +288948,7 @@ index 000000000000..fcb373372596 +} diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_fence.h b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_fence.h new file mode 100755 -index 000000000000..9f59d30a1e2e +index 000000000..9f59d30a1 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_fence.h @@ -0,0 +1,270 @@ @@ -289224,7 +289224,7 @@ index 000000000000..9f59d30a1e2e +#endif /* _KBASE_FENCE_H_ */ diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_fence_defs.h b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_fence_defs.h new file mode 100755 -index 000000000000..d2d7c436918c +index 000000000..d2d7c4369 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_fence_defs.h @@ -0,0 +1,51 @@ @@ -289281,7 +289281,7 @@ index 000000000000..d2d7c436918c +#endif /* _KBASE_FENCE_DEFS_H_ */ diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_gator.h b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_gator.h new file mode 100755 -index 000000000000..87697b15d986 +index 000000000..87697b15d --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_gator.h @@ -0,0 +1,45 @@ @@ -289332,7 +289332,7 @@ index 000000000000..87697b15d986 +#endif /* _KBASE_GATOR_H_ */ diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_gator_api.c b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_gator_api.c new file mode 100755 -index 000000000000..860e10159fb3 +index 000000000..860e10159 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_gator_api.c @@ -0,0 +1,334 @@ @@ -289672,7 +289672,7 @@ index 000000000000..860e10159fb3 +KBASE_EXPORT_SYMBOL(kbase_gator_instr_hwcnt_dump_irq); diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_gator_api.h b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_gator_api.h new file mode 100755 -index 000000000000..ef9ac0f7b633 +index 000000000..ef9ac0f7b --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_gator_api.h @@ -0,0 +1,219 @@ @@ -289897,7 +289897,7 @@ index 000000000000..ef9ac0f7b633 +#endif diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_gator_hwcnt_names.h b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_gator_hwcnt_names.h new file mode 100755 -index 000000000000..24103e292453 +index 000000000..24103e292 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_gator_hwcnt_names.h @@ -0,0 +1,2167 @@ @@ -292070,7 +292070,7 @@ index 000000000000..24103e292453 +#endif diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_gator_hwcnt_names_thex.h b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_gator_hwcnt_names_thex.h new file mode 100755 -index 000000000000..15fd4efdc6ca +index 000000000..15fd4efdc --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_gator_hwcnt_names_thex.h @@ -0,0 +1,291 @@ @@ -292367,7 +292367,7 @@ index 000000000000..15fd4efdc6ca +#endif /* _KBASE_GATOR_HWCNT_NAMES_THEX_H_ */ diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_gator_hwcnt_names_tmix.h b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_gator_hwcnt_names_tmix.h new file mode 100755 -index 000000000000..8a215f723570 +index 000000000..8a215f723 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_gator_hwcnt_names_tmix.h @@ -0,0 +1,291 @@ @@ -292664,7 +292664,7 @@ index 000000000000..8a215f723570 +#endif /* _KBASE_GATOR_HWCNT_NAMES_TMIX_H_ */ diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_gator_hwcnt_names_tsix.h b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_gator_hwcnt_names_tsix.h new file mode 100755 -index 000000000000..fb6a1437a1f6 +index 000000000..fb6a1437a --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_gator_hwcnt_names_tsix.h @@ -0,0 +1,291 @@ @@ -292961,7 +292961,7 @@ index 000000000000..fb6a1437a1f6 +#endif /* _KBASE_GATOR_HWCNT_NAMES_TSIX_H_ */ diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_gpu_id.h b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_gpu_id.h new file mode 100755 -index 000000000000..2d368dfaf644 +index 000000000..2d368dfaf --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_gpu_id.h @@ -0,0 +1,118 @@ @@ -293085,7 +293085,7 @@ index 000000000000..2d368dfaf644 +#endif /* _KBASE_GPU_ID_H_ */ diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_gpu_memory_debugfs.c b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_gpu_memory_debugfs.c new file mode 100755 -index 000000000000..6df0a1cb1264 +index 000000000..6df0a1cb1 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_gpu_memory_debugfs.c @@ -0,0 +1,97 @@ @@ -293188,7 +293188,7 @@ index 000000000000..6df0a1cb1264 +#endif diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_gpu_memory_debugfs.h b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_gpu_memory_debugfs.h new file mode 100755 -index 000000000000..7045693eb910 +index 000000000..7045693eb --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_gpu_memory_debugfs.h @@ -0,0 +1,37 @@ @@ -293231,7 +293231,7 @@ index 000000000000..7045693eb910 +#endif /*_KBASE_GPU_MEMORY_DEBUGFS_H*/ diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_gpuprops.c b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_gpuprops.c new file mode 100755 -index 000000000000..4130810f1038 +index 000000000..4130810f1 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_gpuprops.c @@ -0,0 +1,514 @@ @@ -293751,7 +293751,7 @@ index 000000000000..4130810f1038 +} diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_gpuprops.h b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_gpuprops.h new file mode 100755 -index 000000000000..57b3eaf9cd53 +index 000000000..57b3eaf9c --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_gpuprops.h @@ -0,0 +1,84 @@ @@ -293841,7 +293841,7 @@ index 000000000000..57b3eaf9cd53 +#endif /* _KBASE_GPUPROPS_H_ */ diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_gpuprops_types.h b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_gpuprops_types.h new file mode 100755 -index 000000000000..10794fc27318 +index 000000000..10794fc27 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_gpuprops_types.h @@ -0,0 +1,92 @@ @@ -293939,7 +293939,7 @@ index 000000000000..10794fc27318 +#endif /* _KBASE_GPUPROPS_TYPES_H_ */ diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_hw.c b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_hw.c new file mode 100755 -index 000000000000..eb8368ccee5e +index 000000000..eb8368cce --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_hw.c @@ -0,0 +1,446 @@ @@ -294391,7 +294391,7 @@ index 000000000000..eb8368ccee5e +} diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_hw.h b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_hw.h new file mode 100755 -index 000000000000..754250ce968d +index 000000000..754250ce9 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_hw.h @@ -0,0 +1,65 @@ @@ -294462,7 +294462,7 @@ index 000000000000..754250ce968d +#endif /* _KBASE_HW_H_ */ diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_hwaccess_backend.h b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_hwaccess_backend.h new file mode 100755 -index 000000000000..b09be99e6b4e +index 000000000..b09be99e6 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_hwaccess_backend.h @@ -0,0 +1,54 @@ @@ -294522,7 +294522,7 @@ index 000000000000..b09be99e6b4e +#endif /* _KBASE_HWACCESS_BACKEND_H_ */ diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_hwaccess_defs.h b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_hwaccess_defs.h new file mode 100755 -index 000000000000..0acf297192fd +index 000000000..0acf29719 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_hwaccess_defs.h @@ -0,0 +1,36 @@ @@ -294564,7 +294564,7 @@ index 000000000000..0acf297192fd +#endif /* _KBASE_HWACCESS_DEFS_H_ */ diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_hwaccess_gpuprops.h b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_hwaccess_gpuprops.h new file mode 100755 -index 000000000000..cf8a8131c22e +index 000000000..cf8a8131c --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_hwaccess_gpuprops.h @@ -0,0 +1,47 @@ @@ -294617,7 +294617,7 @@ index 000000000000..cf8a8131c22e +#endif /* _KBASE_HWACCESS_GPUPROPS_H_ */ diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_hwaccess_instr.h b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_hwaccess_instr.h new file mode 100755 -index 000000000000..5de2b7535bb4 +index 000000000..5de2b7535 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_hwaccess_instr.h @@ -0,0 +1,116 @@ @@ -294739,7 +294739,7 @@ index 000000000000..5de2b7535bb4 +#endif /* _KBASE_HWACCESS_INSTR_H_ */ diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_hwaccess_jm.h b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_hwaccess_jm.h new file mode 100755 -index 000000000000..750fda2cd81d +index 000000000..750fda2cd --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_hwaccess_jm.h @@ -0,0 +1,381 @@ @@ -295126,7 +295126,7 @@ index 000000000000..750fda2cd81d +#endif /* _KBASE_HWACCESS_JM_H_ */ diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_hwaccess_pm.h b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_hwaccess_pm.h new file mode 100755 -index 000000000000..71c7d495c40a +index 000000000..71c7d495c --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_hwaccess_pm.h @@ -0,0 +1,209 @@ @@ -295341,7 +295341,7 @@ index 000000000000..71c7d495c40a +#endif /* _KBASE_HWACCESS_PM_H_ */ diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_hwaccess_time.h b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_hwaccess_time.h new file mode 100755 -index 000000000000..b9fe8e669c63 +index 000000000..b9fe8e669 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_hwaccess_time.h @@ -0,0 +1,53 @@ @@ -295400,7 +295400,7 @@ index 000000000000..b9fe8e669c63 +#endif /* _KBASE_BACKEND_TIME_H_ */ diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_hwcnt_reader.h b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_hwcnt_reader.h new file mode 100755 -index 000000000000..cf7bf1b35dc5 +index 000000000..cf7bf1b35 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_hwcnt_reader.h @@ -0,0 +1,66 @@ @@ -295472,7 +295472,7 @@ index 000000000000..cf7bf1b35dc5 + diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_ioctl.h b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_ioctl.h new file mode 100755 -index 000000000000..e7c1daee470b +index 000000000..e7c1daee4 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_ioctl.h @@ -0,0 +1,658 @@ @@ -296136,7 +296136,7 @@ index 000000000000..e7c1daee470b +#endif diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_jd.c b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_jd.c new file mode 100755 -index 000000000000..144ebfcdfc59 +index 000000000..144ebfcdf --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_jd.c @@ -0,0 +1,1847 @@ @@ -297989,7 +297989,7 @@ index 000000000000..144ebfcdfc59 +KBASE_EXPORT_TEST_API(kbase_jd_exit); diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_jd_debugfs.c b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_jd_debugfs.c new file mode 100755 -index 000000000000..fed4ad5816ab +index 000000000..fed4ad581 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_jd_debugfs.c @@ -0,0 +1,235 @@ @@ -298230,7 +298230,7 @@ index 000000000000..fed4ad5816ab +#endif /* CONFIG_DEBUG_FS */ diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_jd_debugfs.h b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_jd_debugfs.h new file mode 100755 -index 000000000000..fae32919b22f +index 000000000..fae32919b --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_jd_debugfs.h @@ -0,0 +1,40 @@ @@ -298276,7 +298276,7 @@ index 000000000000..fae32919b22f +#endif /*_KBASE_JD_DEBUGFS_H*/ diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_jm.c b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_jm.c new file mode 100755 -index 000000000000..0c5c6a6f78cb +index 000000000..0c5c6a6f7 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_jm.c @@ -0,0 +1,131 @@ @@ -298413,7 +298413,7 @@ index 000000000000..0c5c6a6f78cb + diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_jm.h b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_jm.h new file mode 100755 -index 000000000000..a74ee24c8058 +index 000000000..a74ee24c8 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_jm.h @@ -0,0 +1,110 @@ @@ -298529,7 +298529,7 @@ index 000000000000..a74ee24c8058 +#endif /* _KBASE_JM_H_ */ diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_js.c b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_js.c new file mode 100755 -index 000000000000..677e438aedfa +index 000000000..677e438ae --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_js.c @@ -0,0 +1,2798 @@ @@ -301333,7 +301333,7 @@ index 000000000000..677e438aedfa +} diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_js.h b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_js.h new file mode 100755 -index 000000000000..ddada8e468a1 +index 000000000..ddada8e46 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_js.h @@ -0,0 +1,925 @@ @@ -302264,7 +302264,7 @@ index 000000000000..ddada8e468a1 +#endif /* _KBASE_JS_H_ */ diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_js_ctx_attr.c b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_js_ctx_attr.c new file mode 100755 -index 000000000000..321506ada835 +index 000000000..321506ada --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_js_ctx_attr.c @@ -0,0 +1,301 @@ @@ -302571,7 +302571,7 @@ index 000000000000..321506ada835 +} diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_js_ctx_attr.h b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_js_ctx_attr.h new file mode 100755 -index 000000000000..ce9183326a57 +index 000000000..ce9183326 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_js_ctx_attr.h @@ -0,0 +1,158 @@ @@ -302735,7 +302735,7 @@ index 000000000000..ce9183326a57 +#endif /* _KBASE_JS_DEFS_H_ */ diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_js_defs.h b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_js_defs.h new file mode 100755 -index 000000000000..0b4890d6b50e +index 000000000..0b4890d6b --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_js_defs.h @@ -0,0 +1,386 @@ @@ -303127,7 +303127,7 @@ index 000000000000..0b4890d6b50e +#endif /* _KBASE_JS_DEFS_H_ */ diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_linux.h b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_linux.h new file mode 100755 -index 000000000000..6d1e61fd41e0 +index 000000000..6d1e61fd4 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_linux.h @@ -0,0 +1,43 @@ @@ -303176,7 +303176,7 @@ index 000000000000..6d1e61fd41e0 +#endif /* _KBASE_LINUX_H_ */ diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_mem.c b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_mem.c new file mode 100755 -index 000000000000..a105b15d641c +index 000000000..a105b15d6 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_mem.c @@ -0,0 +1,2875 @@ @@ -306057,7 +306057,7 @@ index 000000000000..a105b15d641c +} diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_mem.h b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_mem.h new file mode 100755 -index 000000000000..f2fd75e2018b +index 000000000..f2fd75e20 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_mem.h @@ -0,0 +1,1142 @@ @@ -307205,7 +307205,7 @@ index 000000000000..f2fd75e2018b +#endif /* _KBASE_MEM_H_ */ diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_mem_linux.c b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_mem_linux.c new file mode 100755 -index 000000000000..842444c9b0bd +index 000000000..842444c9b --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_mem_linux.c @@ -0,0 +1,2678 @@ @@ -309889,7 +309889,7 @@ index 000000000000..842444c9b0bd + diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_mem_linux.h b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_mem_linux.h new file mode 100755 -index 000000000000..db35f62a7431 +index 000000000..db35f62a7 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_mem_linux.h @@ -0,0 +1,240 @@ @@ -310135,7 +310135,7 @@ index 000000000000..db35f62a7431 +#endif /* _KBASE_MEM_LINUX_H_ */ diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_mem_lowlevel.h b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_mem_lowlevel.h new file mode 100755 -index 000000000000..f4e88491327e +index 000000000..f4e884913 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_mem_lowlevel.h @@ -0,0 +1,89 @@ @@ -310230,7 +310230,7 @@ index 000000000000..f4e88491327e +#endif /* _KBASE_LOWLEVEL_H */ diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_mem_pool.c b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_mem_pool.c new file mode 100755 -index 000000000000..696730ac5b2b +index 000000000..696730ac5 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_mem_pool.c @@ -0,0 +1,651 @@ @@ -310887,7 +310887,7 @@ index 000000000000..696730ac5b2b +} diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_mem_pool_debugfs.c b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_mem_pool_debugfs.c new file mode 100755 -index 000000000000..319cf2568aba +index 000000000..319cf2568 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_mem_pool_debugfs.c @@ -0,0 +1,88 @@ @@ -310981,7 +310981,7 @@ index 000000000000..319cf2568aba +#endif /* CONFIG_DEBUG_FS */ diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_mem_pool_debugfs.h b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_mem_pool_debugfs.h new file mode 100755 -index 000000000000..496eaf3f1e1a +index 000000000..496eaf3f1 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_mem_pool_debugfs.h @@ -0,0 +1,40 @@ @@ -311027,7 +311027,7 @@ index 000000000000..496eaf3f1e1a + diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_mem_profile_debugfs.c b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_mem_profile_debugfs.c new file mode 100755 -index 000000000000..d58fd8d62fde +index 000000000..d58fd8d62 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_mem_profile_debugfs.c @@ -0,0 +1,121 @@ @@ -311154,7 +311154,7 @@ index 000000000000..d58fd8d62fde +#endif /* CONFIG_DEBUG_FS */ diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_mem_profile_debugfs.h b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_mem_profile_debugfs.h new file mode 100755 -index 000000000000..a1dc2e0b165b +index 000000000..a1dc2e0b1 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_mem_profile_debugfs.h @@ -0,0 +1,59 @@ @@ -311219,7 +311219,7 @@ index 000000000000..a1dc2e0b165b + diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_mem_profile_debugfs_buf_size.h b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_mem_profile_debugfs_buf_size.h new file mode 100755 -index 000000000000..82f0702974c2 +index 000000000..82f070297 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_mem_profile_debugfs_buf_size.h @@ -0,0 +1,33 @@ @@ -311258,7 +311258,7 @@ index 000000000000..82f0702974c2 + diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_mmu.c b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_mmu.c new file mode 100755 -index 000000000000..c63269aed53c +index 000000000..c63269aed --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_mmu.c @@ -0,0 +1,2138 @@ @@ -313402,7 +313402,7 @@ index 000000000000..c63269aed53c +} diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_mmu_hw.h b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_mmu_hw.h new file mode 100755 -index 000000000000..986e959e9a0c +index 000000000..986e959e9 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_mmu_hw.h @@ -0,0 +1,123 @@ @@ -313531,7 +313531,7 @@ index 000000000000..986e959e9a0c +#endif /* _MALI_KBASE_MMU_HW_H_ */ diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_mmu_mode_aarch64.c b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_mmu_mode_aarch64.c new file mode 100755 -index 000000000000..0fb717b67af9 +index 000000000..0fb717b67 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_mmu_mode_aarch64.c @@ -0,0 +1,214 @@ @@ -313751,7 +313751,7 @@ index 000000000000..0fb717b67af9 +} diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_mmu_mode_lpae.c b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_mmu_mode_lpae.c new file mode 100755 -index 000000000000..f080fdc0be88 +index 000000000..f080fdc0b --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_mmu_mode_lpae.c @@ -0,0 +1,199 @@ @@ -313956,7 +313956,7 @@ index 000000000000..f080fdc0be88 +} diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_platform_fake.c b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_platform_fake.c new file mode 100755 -index 000000000000..0152b35f711b +index 000000000..0152b35f7 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_platform_fake.c @@ -0,0 +1,119 @@ @@ -314081,7 +314081,7 @@ index 000000000000..0152b35f711b +EXPORT_SYMBOL(kbase_platform_unregister); diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_pm.c b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_pm.c new file mode 100755 -index 000000000000..97d543464c28 +index 000000000..97d543464 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_pm.c @@ -0,0 +1,205 @@ @@ -314292,7 +314292,7 @@ index 000000000000..97d543464c28 + diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_pm.h b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_pm.h new file mode 100755 -index 000000000000..37fa2479df74 +index 000000000..37fa2479d --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_pm.h @@ -0,0 +1,171 @@ @@ -314469,7 +314469,7 @@ index 000000000000..37fa2479df74 +#endif /* _KBASE_PM_H_ */ diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_profiling_gator_api.h b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_profiling_gator_api.h new file mode 100755 -index 000000000000..7fb674eded37 +index 000000000..7fb674ede --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_profiling_gator_api.h @@ -0,0 +1,40 @@ @@ -314515,7 +314515,7 @@ index 000000000000..7fb674eded37 +#endif /* _KBASE_PROFILING_GATOR_API */ diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_regs_history_debugfs.c b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_regs_history_debugfs.c new file mode 100755 -index 000000000000..9e73f9f4999e +index 000000000..9e73f9f49 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_regs_history_debugfs.c @@ -0,0 +1,130 @@ @@ -314651,7 +314651,7 @@ index 000000000000..9e73f9f4999e +#endif /* CONFIG_DEBUG_FS */ diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_regs_history_debugfs.h b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_regs_history_debugfs.h new file mode 100755 -index 000000000000..fbb36b3f22e4 +index 000000000..fbb36b3f2 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_regs_history_debugfs.h @@ -0,0 +1,50 @@ @@ -314707,7 +314707,7 @@ index 000000000000..fbb36b3f22e4 +#endif /*_KBASE_REGS_HISTORY_DEBUGFS_H*/ diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_replay.c b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_replay.c new file mode 100755 -index 000000000000..9f4dc372770d +index 000000000..9f4dc3727 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_replay.c @@ -0,0 +1,1166 @@ @@ -315879,7 +315879,7 @@ index 000000000000..9f4dc372770d +} diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_smc.c b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_smc.c new file mode 100755 -index 000000000000..43175c85988f +index 000000000..43175c859 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_smc.c @@ -0,0 +1,74 @@ @@ -315959,7 +315959,7 @@ index 000000000000..43175c85988f + diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_smc.h b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_smc.h new file mode 100755 -index 000000000000..9bff3d2e8b4d +index 000000000..9bff3d2e8 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_smc.h @@ -0,0 +1,67 @@ @@ -316032,7 +316032,7 @@ index 000000000000..9bff3d2e8b4d +#endif /* _KBASE_SMC_H_ */ diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_softjobs.c b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_softjobs.c new file mode 100755 -index 000000000000..c24b94e0d6eb +index 000000000..c24b94e0d --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_softjobs.c @@ -0,0 +1,1513 @@ @@ -317551,7 +317551,7 @@ index 000000000000..c24b94e0d6eb +} diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_strings.c b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_strings.c new file mode 100755 -index 000000000000..c98762cec244 +index 000000000..c98762cec --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_strings.c @@ -0,0 +1,23 @@ @@ -317580,7 +317580,7 @@ index 000000000000..c98762cec244 +const char kbase_timeline_name[] = KBASE_TIMELINE_NAME; diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_strings.h b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_strings.h new file mode 100755 -index 000000000000..41b8fdbec6a4 +index 000000000..41b8fdbec --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_strings.h @@ -0,0 +1,19 @@ @@ -317605,7 +317605,7 @@ index 000000000000..41b8fdbec6a4 +extern const char kbase_timeline_name[]; diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_sync.h b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_sync.h new file mode 100755 -index 000000000000..54159262314a +index 000000000..541592623 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_sync.h @@ -0,0 +1,203 @@ @@ -317814,7 +317814,7 @@ index 000000000000..54159262314a +#endif /* MALI_KBASE_SYNC_H */ diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_sync_android.c b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_sync_android.c new file mode 100755 -index 000000000000..e4528e2b9f25 +index 000000000..e4528e2b9 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_sync_android.c @@ -0,0 +1,537 @@ @@ -318357,7 +318357,7 @@ index 000000000000..e4528e2b9f25 +#endif diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_sync_common.c b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_sync_common.c new file mode 100755 -index 000000000000..457def296684 +index 000000000..457def296 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_sync_common.c @@ -0,0 +1,43 @@ @@ -318406,7 +318406,7 @@ index 000000000000..457def296684 +} diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_sync_file.c b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_sync_file.c new file mode 100755 -index 000000000000..509c0666f10f +index 000000000..509c0666f --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_sync_file.c @@ -0,0 +1,348 @@ @@ -318760,7 +318760,7 @@ index 000000000000..509c0666f10f +#endif diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_tlstream.c b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_tlstream.c new file mode 100755 -index 000000000000..485565ebfe80 +index 000000000..485565ebf --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_tlstream.c @@ -0,0 +1,2569 @@ @@ -321335,7 +321335,7 @@ index 000000000000..485565ebfe80 +} diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_tlstream.h b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_tlstream.h new file mode 100755 -index 000000000000..c0a1117d5f25 +index 000000000..c0a1117d5 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_tlstream.h @@ -0,0 +1,623 @@ @@ -321964,7 +321964,7 @@ index 000000000000..c0a1117d5f25 + diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_trace_defs.h b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_trace_defs.h new file mode 100755 -index 000000000000..e2e0544208ce +index 000000000..e2e054420 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_trace_defs.h @@ -0,0 +1,264 @@ @@ -322234,7 +322234,7 @@ index 000000000000..e2e0544208ce +/* ***** THE LACK OF HEADER GUARDS IS INTENTIONAL ***** */ diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_trace_timeline.c b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_trace_timeline.c new file mode 100755 -index 000000000000..d9854749f45b +index 000000000..d9854749f --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_trace_timeline.c @@ -0,0 +1,236 @@ @@ -322476,7 +322476,7 @@ index 000000000000..d9854749f45b +#endif /* CONFIG_MALI_BIFROST_TRACE_TIMELINE */ diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_trace_timeline.h b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_trace_timeline.h new file mode 100755 -index 000000000000..4b517f396f8c +index 000000000..4b517f396 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_trace_timeline.h @@ -0,0 +1,363 @@ @@ -322845,7 +322845,7 @@ index 000000000000..4b517f396f8c + diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_trace_timeline_defs.h b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_trace_timeline_defs.h new file mode 100755 -index 000000000000..156a95a67f4a +index 000000000..156a95a67 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_trace_timeline_defs.h @@ -0,0 +1,140 @@ @@ -322991,7 +322991,7 @@ index 000000000000..156a95a67f4a +"_tgid,job_slot,_producerof_atom_number_completed") diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_uku.h b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_uku.h new file mode 100755 -index 000000000000..cf8ee0572dc5 +index 000000000..cf8ee0572 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_uku.h @@ -0,0 +1,532 @@ @@ -323529,7 +323529,7 @@ index 000000000000..cf8ee0572dc5 + diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_utility.c b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_utility.c new file mode 100755 -index 000000000000..be474ff87401 +index 000000000..be474ff87 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_utility.c @@ -0,0 +1,33 @@ @@ -323568,7 +323568,7 @@ index 000000000000..be474ff87401 +} diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_utility.h b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_utility.h new file mode 100755 -index 000000000000..fd7252dab0de +index 000000000..fd7252dab --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_utility.h @@ -0,0 +1,37 @@ @@ -323611,7 +323611,7 @@ index 000000000000..fd7252dab0de +#endif /* _KBASE_UTILITY_H */ diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_vinstr.c b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_vinstr.c new file mode 100755 -index 000000000000..9c5b2e46c0e5 +index 000000000..9c5b2e46c --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_vinstr.c @@ -0,0 +1,2072 @@ @@ -325689,7 +325689,7 @@ index 000000000000..9c5b2e46c0e5 +} diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_kbase_vinstr.h b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_vinstr.h new file mode 100755 -index 000000000000..6207d25aef06 +index 000000000..6207d25ae --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_kbase_vinstr.h @@ -0,0 +1,155 @@ @@ -325850,7 +325850,7 @@ index 000000000000..6207d25aef06 + diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_linux_kbase_trace.h b/drivers/gpu/arm/bifrost_for_linux/mali_linux_kbase_trace.h new file mode 100755 -index 000000000000..5d6b4021d626 +index 000000000..5d6b4021d --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_linux_kbase_trace.h @@ -0,0 +1,201 @@ @@ -326057,7 +326057,7 @@ index 000000000000..5d6b4021d626 +#include diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_linux_trace.h b/drivers/gpu/arm/bifrost_for_linux/mali_linux_trace.h new file mode 100755 -index 000000000000..2be06a552768 +index 000000000..2be06a552 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_linux_trace.h @@ -0,0 +1,189 @@ @@ -326252,7 +326252,7 @@ index 000000000000..2be06a552768 +#include diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_malisw.h b/drivers/gpu/arm/bifrost_for_linux/mali_malisw.h new file mode 100755 -index 000000000000..99452933eab4 +index 000000000..99452933e --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_malisw.h @@ -0,0 +1,131 @@ @@ -326389,7 +326389,7 @@ index 000000000000..99452933eab4 +#endif /* _MALISW_H_ */ diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_midg_coherency.h b/drivers/gpu/arm/bifrost_for_linux/mali_midg_coherency.h new file mode 100755 -index 000000000000..a509cbd5f175 +index 000000000..a509cbd5f --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_midg_coherency.h @@ -0,0 +1,26 @@ @@ -326421,7 +326421,7 @@ index 000000000000..a509cbd5f175 +#endif /* _MIDG_COHERENCY_H_ */ diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_midg_regmap.h b/drivers/gpu/arm/bifrost_for_linux/mali_midg_regmap.h new file mode 100755 -index 000000000000..554ed8dcb3eb +index 000000000..554ed8dcb --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_midg_regmap.h @@ -0,0 +1,611 @@ @@ -327038,7 +327038,7 @@ index 000000000000..554ed8dcb3eb +#endif /* _MIDGARD_REGMAP_H_ */ diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_timeline.h b/drivers/gpu/arm/bifrost_for_linux/mali_timeline.h new file mode 100755 -index 000000000000..bd5f6614b6bb +index 000000000..bd5f6614b --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_timeline.h @@ -0,0 +1,396 @@ @@ -327440,7 +327440,7 @@ index 000000000000..bd5f6614b6bb + diff --git a/drivers/gpu/arm/bifrost_for_linux/mali_uk.h b/drivers/gpu/arm/bifrost_for_linux/mali_uk.h new file mode 100755 -index 000000000000..841d03fb5873 +index 000000000..841d03fb5 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/mali_uk.h @@ -0,0 +1,141 @@ @@ -327587,7 +327587,7 @@ index 000000000000..841d03fb5873 +#endif /* _UK_H_ */ diff --git a/drivers/gpu/arm/bifrost_for_linux/platform/Kconfig b/drivers/gpu/arm/bifrost_for_linux/platform/Kconfig new file mode 100755 -index 000000000000..38835d3d1531 +index 000000000..38835d3d1 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/platform/Kconfig @@ -0,0 +1,24 @@ @@ -327617,7 +327617,7 @@ index 000000000000..38835d3d1531 + diff --git a/drivers/gpu/arm/bifrost_for_linux/platform/devicetree/Kbuild b/drivers/gpu/arm/bifrost_for_linux/platform/devicetree/Kbuild new file mode 100755 -index 000000000000..d40d7982ff04 +index 000000000..d40d7982f --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/platform/devicetree/Kbuild @@ -0,0 +1,18 @@ @@ -327641,7 +327641,7 @@ index 000000000000..d40d7982ff04 + $(MALI_PLATFORM_DIR)/mali_kbase_runtime_pm.o diff --git a/drivers/gpu/arm/bifrost_for_linux/platform/devicetree/mali_kbase_config_devicetree.c b/drivers/gpu/arm/bifrost_for_linux/platform/devicetree/mali_kbase_config_devicetree.c new file mode 100755 -index 000000000000..29ccc29e4125 +index 000000000..29ccc29e4 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/platform/devicetree/mali_kbase_config_devicetree.c @@ -0,0 +1,40 @@ @@ -327687,7 +327687,7 @@ index 000000000000..29ccc29e4125 +} diff --git a/drivers/gpu/arm/bifrost_for_linux/platform/devicetree/mali_kbase_config_platform.h b/drivers/gpu/arm/bifrost_for_linux/platform/devicetree/mali_kbase_config_platform.h new file mode 100755 -index 000000000000..2ceca34945b9 +index 000000000..2ceca3494 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/platform/devicetree/mali_kbase_config_platform.h @@ -0,0 +1,80 @@ @@ -327773,7 +327773,7 @@ index 000000000000..2ceca34945b9 +#define AUTO_SUSPEND_DELAY (100) diff --git a/drivers/gpu/arm/bifrost_for_linux/platform/devicetree/mali_kbase_runtime_pm.c b/drivers/gpu/arm/bifrost_for_linux/platform/devicetree/mali_kbase_runtime_pm.c new file mode 100755 -index 000000000000..9fe37c8d835e +index 000000000..9fe37c8d8 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/platform/devicetree/mali_kbase_runtime_pm.c @@ -0,0 +1,121 @@ @@ -327900,7 +327900,7 @@ index 000000000000..9fe37c8d835e + diff --git a/drivers/gpu/arm/bifrost_for_linux/platform/mali_kbase_platform_common.h b/drivers/gpu/arm/bifrost_for_linux/platform/mali_kbase_platform_common.h new file mode 100755 -index 000000000000..7cb3be7f78ce +index 000000000..7cb3be7f7 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/platform/mali_kbase_platform_common.h @@ -0,0 +1,26 @@ @@ -327932,7 +327932,7 @@ index 000000000000..7cb3be7f78ce +int kbase_platform_early_init(void); diff --git a/drivers/gpu/arm/bifrost_for_linux/platform/rk/Kbuild b/drivers/gpu/arm/bifrost_for_linux/platform/rk/Kbuild new file mode 100755 -index 000000000000..7cc6c59d969f +index 000000000..7cc6c59d9 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/platform/rk/Kbuild @@ -0,0 +1,17 @@ @@ -327955,7 +327955,7 @@ index 000000000000..7cc6c59d969f + diff --git a/drivers/gpu/arm/bifrost_for_linux/platform/rk/custom_log.h b/drivers/gpu/arm/bifrost_for_linux/platform/rk/custom_log.h new file mode 100755 -index 000000000000..5de70ee13d25 +index 000000000..5de70ee13 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/platform/rk/custom_log.h @@ -0,0 +1,192 @@ @@ -328153,7 +328153,7 @@ index 000000000000..5de70ee13d25 +#endif /* __CUSTOM_LOG_H__ */ diff --git a/drivers/gpu/arm/bifrost_for_linux/platform/rk/mali_kbase_config_platform.h b/drivers/gpu/arm/bifrost_for_linux/platform/rk/mali_kbase_config_platform.h new file mode 100755 -index 000000000000..07c5b6f8a760 +index 000000000..07c5b6f8a --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/platform/rk/mali_kbase_config_platform.h @@ -0,0 +1,88 @@ @@ -328247,7 +328247,7 @@ index 000000000000..07c5b6f8a760 + diff --git a/drivers/gpu/arm/bifrost_for_linux/platform/rk/mali_kbase_config_rk.c b/drivers/gpu/arm/bifrost_for_linux/platform/rk/mali_kbase_config_rk.c new file mode 100755 -index 000000000000..926c2dd3f8c9 +index 000000000..926c2dd3f --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/platform/rk/mali_kbase_config_rk.c @@ -0,0 +1,459 @@ @@ -328712,7 +328712,7 @@ index 000000000000..926c2dd3f8c9 +} diff --git a/drivers/gpu/arm/bifrost_for_linux/platform/rk/mali_kbase_rk.h b/drivers/gpu/arm/bifrost_for_linux/platform/rk/mali_kbase_rk.h new file mode 100755 -index 000000000000..6eab25014d21 +index 000000000..6eab25014 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/platform/rk/mali_kbase_rk.h @@ -0,0 +1,62 @@ @@ -328780,7 +328780,7 @@ index 000000000000..6eab25014d21 + diff --git a/drivers/gpu/arm/bifrost_for_linux/platform/vexpress/Kbuild b/drivers/gpu/arm/bifrost_for_linux/platform/vexpress/Kbuild new file mode 100755 -index 000000000000..d9d5e9085231 +index 000000000..d9d5e9085 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/platform/vexpress/Kbuild @@ -0,0 +1,19 @@ @@ -328805,7 +328805,7 @@ index 000000000000..d9d5e9085231 + mali_kbase_platform_fake.o diff --git a/drivers/gpu/arm/bifrost_for_linux/platform/vexpress/mali_kbase_config_platform.h b/drivers/gpu/arm/bifrost_for_linux/platform/vexpress/mali_kbase_config_platform.h new file mode 100755 -index 000000000000..02835f129aa3 +index 000000000..02835f129 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/platform/vexpress/mali_kbase_config_platform.h @@ -0,0 +1,75 @@ @@ -328886,7 +328886,7 @@ index 000000000000..02835f129aa3 +extern struct kbase_pm_callback_conf pm_callbacks; diff --git a/drivers/gpu/arm/bifrost_for_linux/platform/vexpress/mali_kbase_config_vexpress.c b/drivers/gpu/arm/bifrost_for_linux/platform/vexpress/mali_kbase_config_vexpress.c new file mode 100755 -index 000000000000..15ce2bc5eea5 +index 000000000..15ce2bc5e --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/platform/vexpress/mali_kbase_config_vexpress.c @@ -0,0 +1,85 @@ @@ -328977,7 +328977,7 @@ index 000000000000..15ce2bc5eea5 +} diff --git a/drivers/gpu/arm/bifrost_for_linux/platform/vexpress/mali_kbase_cpu_vexpress.c b/drivers/gpu/arm/bifrost_for_linux/platform/vexpress/mali_kbase_cpu_vexpress.c new file mode 100755 -index 000000000000..4665f98cbbe4 +index 000000000..4665f98cb --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/platform/vexpress/mali_kbase_cpu_vexpress.c @@ -0,0 +1,279 @@ @@ -329262,7 +329262,7 @@ index 000000000000..4665f98cbbe4 +} diff --git a/drivers/gpu/arm/bifrost_for_linux/platform/vexpress/mali_kbase_cpu_vexpress.h b/drivers/gpu/arm/bifrost_for_linux/platform/vexpress/mali_kbase_cpu_vexpress.h new file mode 100755 -index 000000000000..da865698133a +index 000000000..da8656981 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/platform/vexpress/mali_kbase_cpu_vexpress.h @@ -0,0 +1,38 @@ @@ -329306,7 +329306,7 @@ index 000000000000..da865698133a +#endif /* _KBASE_CPU_VEXPRESS_H_ */ diff --git a/drivers/gpu/arm/bifrost_for_linux/platform/vexpress_1xv7_a57/Kbuild b/drivers/gpu/arm/bifrost_for_linux/platform/vexpress_1xv7_a57/Kbuild new file mode 100755 -index 000000000000..df87c74f43ba +index 000000000..df87c74f4 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/platform/vexpress_1xv7_a57/Kbuild @@ -0,0 +1,18 @@ @@ -329330,7 +329330,7 @@ index 000000000000..df87c74f43ba + mali_kbase_platform_fake.o diff --git a/drivers/gpu/arm/bifrost_for_linux/platform/vexpress_1xv7_a57/mali_kbase_config_platform.h b/drivers/gpu/arm/bifrost_for_linux/platform/vexpress_1xv7_a57/mali_kbase_config_platform.h new file mode 100755 -index 000000000000..0efbf3962f98 +index 000000000..0efbf3962 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/platform/vexpress_1xv7_a57/mali_kbase_config_platform.h @@ -0,0 +1,73 @@ @@ -329409,7 +329409,7 @@ index 000000000000..0efbf3962f98 +extern struct kbase_pm_callback_conf pm_callbacks; diff --git a/drivers/gpu/arm/bifrost_for_linux/platform/vexpress_1xv7_a57/mali_kbase_config_vexpress.c b/drivers/gpu/arm/bifrost_for_linux/platform/vexpress_1xv7_a57/mali_kbase_config_vexpress.c new file mode 100755 -index 000000000000..3ff0930fb4a3 +index 000000000..3ff0930fb --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/platform/vexpress_1xv7_a57/mali_kbase_config_vexpress.c @@ -0,0 +1,79 @@ @@ -329494,7 +329494,7 @@ index 000000000000..3ff0930fb4a3 +} diff --git a/drivers/gpu/arm/bifrost_for_linux/platform/vexpress_6xvirtex7_10mhz/Kbuild b/drivers/gpu/arm/bifrost_for_linux/platform/vexpress_6xvirtex7_10mhz/Kbuild new file mode 100755 -index 000000000000..d9d5e9085231 +index 000000000..d9d5e9085 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/platform/vexpress_6xvirtex7_10mhz/Kbuild @@ -0,0 +1,19 @@ @@ -329519,7 +329519,7 @@ index 000000000000..d9d5e9085231 + mali_kbase_platform_fake.o diff --git a/drivers/gpu/arm/bifrost_for_linux/platform/vexpress_6xvirtex7_10mhz/mali_kbase_config_platform.h b/drivers/gpu/arm/bifrost_for_linux/platform/vexpress_6xvirtex7_10mhz/mali_kbase_config_platform.h new file mode 100755 -index 000000000000..dbdf21e009f9 +index 000000000..dbdf21e00 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/platform/vexpress_6xvirtex7_10mhz/mali_kbase_config_platform.h @@ -0,0 +1,75 @@ @@ -329600,7 +329600,7 @@ index 000000000000..dbdf21e009f9 +extern struct kbase_pm_callback_conf pm_callbacks; diff --git a/drivers/gpu/arm/bifrost_for_linux/platform/vexpress_6xvirtex7_10mhz/mali_kbase_config_vexpress.c b/drivers/gpu/arm/bifrost_for_linux/platform/vexpress_6xvirtex7_10mhz/mali_kbase_config_vexpress.c new file mode 100755 -index 000000000000..76ffe4a1e59e +index 000000000..76ffe4a1e --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/platform/vexpress_6xvirtex7_10mhz/mali_kbase_config_vexpress.c @@ -0,0 +1,83 @@ @@ -329689,7 +329689,7 @@ index 000000000000..76ffe4a1e59e + diff --git a/drivers/gpu/arm/bifrost_for_linux/platform/vexpress_6xvirtex7_10mhz/mali_kbase_cpu_vexpress.c b/drivers/gpu/arm/bifrost_for_linux/platform/vexpress_6xvirtex7_10mhz/mali_kbase_cpu_vexpress.c new file mode 100755 -index 000000000000..816dff49835f +index 000000000..816dff498 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/platform/vexpress_6xvirtex7_10mhz/mali_kbase_cpu_vexpress.c @@ -0,0 +1,71 @@ @@ -329766,7 +329766,7 @@ index 000000000000..816dff49835f +} diff --git a/drivers/gpu/arm/bifrost_for_linux/platform/vexpress_6xvirtex7_10mhz/mali_kbase_cpu_vexpress.h b/drivers/gpu/arm/bifrost_for_linux/platform/vexpress_6xvirtex7_10mhz/mali_kbase_cpu_vexpress.h new file mode 100755 -index 000000000000..23647ccb0871 +index 000000000..23647ccb0 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/platform/vexpress_6xvirtex7_10mhz/mali_kbase_cpu_vexpress.h @@ -0,0 +1,28 @@ @@ -329800,7 +329800,7 @@ index 000000000000..23647ccb0871 +#endif /* _KBASE_CPU_VEXPRESS_H_ */ diff --git a/drivers/gpu/arm/bifrost_for_linux/platform_dummy/mali_ukk_os.h b/drivers/gpu/arm/bifrost_for_linux/platform_dummy/mali_ukk_os.h new file mode 100755 -index 000000000000..5fa9b39c4bc0 +index 000000000..5fa9b39c4 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/platform_dummy/mali_ukk_os.h @@ -0,0 +1,53 @@ @@ -329859,7 +329859,7 @@ index 000000000000..5fa9b39c4bc0 +#endif /* _UKK_OS_H__ */ diff --git a/drivers/gpu/arm/bifrost_for_linux/protected_mode_switcher.h b/drivers/gpu/arm/bifrost_for_linux/protected_mode_switcher.h new file mode 100755 -index 000000000000..5dc2f3ba8cf6 +index 000000000..5dc2f3ba8 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/protected_mode_switcher.h @@ -0,0 +1,64 @@ @@ -329929,7 +329929,7 @@ index 000000000000..5dc2f3ba8cf6 +#endif /* _PROTECTED_MODE_SWITCH_H_ */ diff --git a/drivers/gpu/arm/bifrost_for_linux/sconscript b/drivers/gpu/arm/bifrost_for_linux/sconscript new file mode 100755 -index 000000000000..e738dd7a3869 +index 000000000..e738dd7a3 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/sconscript @@ -0,0 +1,72 @@ @@ -330007,7 +330007,7 @@ index 000000000000..e738dd7a3869 +env.AppendUnique(BASE=['cutils_linked_list']) diff --git a/drivers/gpu/arm/bifrost_for_linux/tests/Kbuild b/drivers/gpu/arm/bifrost_for_linux/tests/Kbuild new file mode 100755 -index 000000000000..b4bed0473439 +index 000000000..b4bed0473 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/tests/Kbuild @@ -0,0 +1,17 @@ @@ -330030,7 +330030,7 @@ index 000000000000..b4bed0473439 +obj-$(CONFIG_MALI_IRQ_LATENCY) += mali_kutf_irq_test/ diff --git a/drivers/gpu/arm/bifrost_for_linux/tests/Kconfig b/drivers/gpu/arm/bifrost_for_linux/tests/Kconfig new file mode 100755 -index 000000000000..da0515c065de +index 000000000..da0515c06 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/tests/Kconfig @@ -0,0 +1,17 @@ @@ -330053,7 +330053,7 @@ index 000000000000..da0515c065de +source "drivers/gpu/arm/midgard/tests/mali_kutf_irq_test/Kconfig" diff --git a/drivers/gpu/arm/bifrost_for_linux/tests/include/kutf/kutf_helpers.h b/drivers/gpu/arm/bifrost_for_linux/tests/include/kutf/kutf_helpers.h new file mode 100755 -index 000000000000..3f1dfc244d30 +index 000000000..3f1dfc244 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/tests/include/kutf/kutf_helpers.h @@ -0,0 +1,216 @@ @@ -330275,7 +330275,7 @@ index 000000000000..3f1dfc244d30 +#endif /* _KERNEL_UTF_HELPERS_H_ */ diff --git a/drivers/gpu/arm/bifrost_for_linux/tests/include/kutf/kutf_helpers_user.h b/drivers/gpu/arm/bifrost_for_linux/tests/include/kutf/kutf_helpers_user.h new file mode 100755 -index 000000000000..759bf717c7cd +index 000000000..759bf717c --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/tests/include/kutf/kutf_helpers_user.h @@ -0,0 +1,179 @@ @@ -330460,7 +330460,7 @@ index 000000000000..759bf717c7cd +#endif /* _KERNEL_UTF_HELPERS_USER_H_ */ diff --git a/drivers/gpu/arm/bifrost_for_linux/tests/include/kutf/kutf_mem.h b/drivers/gpu/arm/bifrost_for_linux/tests/include/kutf/kutf_mem.h new file mode 100755 -index 000000000000..584c9dd4bc13 +index 000000000..584c9dd4b --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/tests/include/kutf/kutf_mem.h @@ -0,0 +1,68 @@ @@ -330534,7 +330534,7 @@ index 000000000000..584c9dd4bc13 +#endif /* _KERNEL_UTF_MEM_H_ */ diff --git a/drivers/gpu/arm/bifrost_for_linux/tests/include/kutf/kutf_resultset.h b/drivers/gpu/arm/bifrost_for_linux/tests/include/kutf/kutf_resultset.h new file mode 100755 -index 000000000000..1cc85f1b7a46 +index 000000000..1cc85f1b7 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/tests/include/kutf/kutf_resultset.h @@ -0,0 +1,121 @@ @@ -330661,7 +330661,7 @@ index 000000000000..1cc85f1b7a46 +#endif /* _KERNEL_UTF_RESULTSET_H_ */ diff --git a/drivers/gpu/arm/bifrost_for_linux/tests/include/kutf/kutf_suite.h b/drivers/gpu/arm/bifrost_for_linux/tests/include/kutf/kutf_suite.h new file mode 100755 -index 000000000000..cba2b2d84d62 +index 000000000..cba2b2d84 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/tests/include/kutf/kutf_suite.h @@ -0,0 +1,568 @@ @@ -331235,7 +331235,7 @@ index 000000000000..cba2b2d84d62 +#endif /* _KERNEL_UTF_SUITE_H_ */ diff --git a/drivers/gpu/arm/bifrost_for_linux/tests/include/kutf/kutf_utils.h b/drivers/gpu/arm/bifrost_for_linux/tests/include/kutf/kutf_utils.h new file mode 100755 -index 000000000000..c458c1f73802 +index 000000000..c458c1f73 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/tests/include/kutf/kutf_utils.h @@ -0,0 +1,55 @@ @@ -331296,7 +331296,7 @@ index 000000000000..c458c1f73802 +#endif /* _KERNEL_UTF_UTILS_H_ */ diff --git a/drivers/gpu/arm/bifrost_for_linux/tests/kutf/Kbuild b/drivers/gpu/arm/bifrost_for_linux/tests/kutf/Kbuild new file mode 100755 -index 000000000000..97f80057224f +index 000000000..97f800572 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/tests/kutf/Kbuild @@ -0,0 +1,20 @@ @@ -331322,7 +331322,7 @@ index 000000000000..97f80057224f +kutf-y := kutf_mem.o kutf_resultset.o kutf_suite.o kutf_utils.o kutf_helpers.o kutf_helpers_user.o diff --git a/drivers/gpu/arm/bifrost_for_linux/tests/kutf/Kconfig b/drivers/gpu/arm/bifrost_for_linux/tests/kutf/Kconfig new file mode 100755 -index 000000000000..6a87bdbf746e +index 000000000..6a87bdbf7 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/tests/kutf/Kconfig @@ -0,0 +1,22 @@ @@ -331350,7 +331350,7 @@ index 000000000000..6a87bdbf746e + choose M here - this will generate a single module called kutf. diff --git a/drivers/gpu/arm/bifrost_for_linux/tests/kutf/Makefile b/drivers/gpu/arm/bifrost_for_linux/tests/kutf/Makefile new file mode 100755 -index 000000000000..010c92ca39b9 +index 000000000..010c92ca3 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/tests/kutf/Makefile @@ -0,0 +1,29 @@ @@ -331385,7 +331385,7 @@ index 000000000000..010c92ca39b9 + $(MAKE) ARCH=$(ARCH) -C $(KDIR) M=$(CURDIR) clean diff --git a/drivers/gpu/arm/bifrost_for_linux/tests/kutf/kutf_helpers.c b/drivers/gpu/arm/bifrost_for_linux/tests/kutf/kutf_helpers.c new file mode 100755 -index 000000000000..793d58c789ff +index 000000000..793d58c78 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/tests/kutf/kutf_helpers.c @@ -0,0 +1,768 @@ @@ -332159,7 +332159,7 @@ index 000000000000..793d58c789ff +EXPORT_SYMBOL(kutf_helper_textbuf_userdata_ops); diff --git a/drivers/gpu/arm/bifrost_for_linux/tests/kutf/kutf_helpers_user.c b/drivers/gpu/arm/bifrost_for_linux/tests/kutf/kutf_helpers_user.c new file mode 100755 -index 000000000000..cf3b00563c5f +index 000000000..cf3b00563 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/tests/kutf/kutf_helpers_user.c @@ -0,0 +1,460 @@ @@ -332625,7 +332625,7 @@ index 000000000000..cf3b00563c5f +EXPORT_SYMBOL(kutf_helper_output_named_val); diff --git a/drivers/gpu/arm/bifrost_for_linux/tests/kutf/kutf_mem.c b/drivers/gpu/arm/bifrost_for_linux/tests/kutf/kutf_mem.c new file mode 100755 -index 000000000000..a75e15fde05f +index 000000000..a75e15fde --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/tests/kutf/kutf_mem.c @@ -0,0 +1,102 @@ @@ -332733,7 +332733,7 @@ index 000000000000..a75e15fde05f +EXPORT_SYMBOL(kutf_mempool_alloc); diff --git a/drivers/gpu/arm/bifrost_for_linux/tests/kutf/kutf_resultset.c b/drivers/gpu/arm/bifrost_for_linux/tests/kutf/kutf_resultset.c new file mode 100755 -index 000000000000..5bd04969fd55 +index 000000000..5bd04969f --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/tests/kutf/kutf_resultset.c @@ -0,0 +1,95 @@ @@ -332834,7 +332834,7 @@ index 000000000000..5bd04969fd55 + diff --git a/drivers/gpu/arm/bifrost_for_linux/tests/kutf/kutf_suite.c b/drivers/gpu/arm/bifrost_for_linux/tests/kutf/kutf_suite.c new file mode 100755 -index 000000000000..ad30cc86a3b0 +index 000000000..ad30cc86a --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/tests/kutf/kutf_suite.c @@ -0,0 +1,1398 @@ @@ -334238,7 +334238,7 @@ index 000000000000..ad30cc86a3b0 +module_exit(exit_kutf_core); diff --git a/drivers/gpu/arm/bifrost_for_linux/tests/kutf/kutf_utils.c b/drivers/gpu/arm/bifrost_for_linux/tests/kutf/kutf_utils.c new file mode 100755 -index 000000000000..a429a2dbf788 +index 000000000..a429a2dbf --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/tests/kutf/kutf_utils.c @@ -0,0 +1,71 @@ @@ -334315,7 +334315,7 @@ index 000000000000..a429a2dbf788 +EXPORT_SYMBOL(kutf_dsprintf); diff --git a/drivers/gpu/arm/bifrost_for_linux/tests/kutf/sconscript b/drivers/gpu/arm/bifrost_for_linux/tests/kutf/sconscript new file mode 100755 -index 000000000000..d7f112448e42 +index 000000000..d7f112448 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/tests/kutf/sconscript @@ -0,0 +1,21 @@ @@ -334342,7 +334342,7 @@ index 000000000000..d7f112448e42 +kutf_env.KernelObjTarget('kutf', mod) diff --git a/drivers/gpu/arm/bifrost_for_linux/tests/mali_kutf_irq_test/Kbuild b/drivers/gpu/arm/bifrost_for_linux/tests/mali_kutf_irq_test/Kbuild new file mode 100755 -index 000000000000..0cd9cebe9d8b +index 000000000..0cd9cebe9 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/tests/mali_kutf_irq_test/Kbuild @@ -0,0 +1,20 @@ @@ -334368,7 +334368,7 @@ index 000000000000..0cd9cebe9d8b +mali_kutf_irq_test-y := mali_kutf_irq_test_main.o diff --git a/drivers/gpu/arm/bifrost_for_linux/tests/mali_kutf_irq_test/Kconfig b/drivers/gpu/arm/bifrost_for_linux/tests/mali_kutf_irq_test/Kconfig new file mode 100755 -index 000000000000..4caa8ec8a0e2 +index 000000000..4caa8ec8a --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/tests/mali_kutf_irq_test/Kconfig @@ -0,0 +1,23 @@ @@ -334397,7 +334397,7 @@ index 000000000000..4caa8ec8a0e2 + Choosing M here will generate a single module called mali_kutf_irq_test. diff --git a/drivers/gpu/arm/bifrost_for_linux/tests/mali_kutf_irq_test/Makefile b/drivers/gpu/arm/bifrost_for_linux/tests/mali_kutf_irq_test/Makefile new file mode 100755 -index 000000000000..ced37b08e532 +index 000000000..ced37b08e --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/tests/mali_kutf_irq_test/Makefile @@ -0,0 +1,47 @@ @@ -334450,7 +334450,7 @@ index 000000000000..ced37b08e532 + $(MAKE) ARCH=$(ARCH) -C $(KDIR) M=$(CURDIR) clean diff --git a/drivers/gpu/arm/bifrost_for_linux/tests/mali_kutf_irq_test/mali_kutf_irq_test_main.c b/drivers/gpu/arm/bifrost_for_linux/tests/mali_kutf_irq_test/mali_kutf_irq_test_main.c new file mode 100755 -index 000000000000..c9cc4447cf37 +index 000000000..c9cc4447c --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/tests/mali_kutf_irq_test/mali_kutf_irq_test_main.c @@ -0,0 +1,269 @@ @@ -334725,7 +334725,7 @@ index 000000000000..c9cc4447cf37 +MODULE_VERSION("1.0"); diff --git a/drivers/gpu/arm/bifrost_for_linux/tests/mali_kutf_irq_test/sconscript b/drivers/gpu/arm/bifrost_for_linux/tests/mali_kutf_irq_test/sconscript new file mode 100755 -index 000000000000..b06d9ea32924 +index 000000000..b06d9ea32 --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/tests/mali_kutf_irq_test/sconscript @@ -0,0 +1,30 @@ @@ -334761,7 +334761,7 @@ index 000000000000..b06d9ea32924 + env.KernelObjTarget('mali_kutf_irq_test', cmd) diff --git a/drivers/gpu/arm/bifrost_for_linux/tests/sconscript b/drivers/gpu/arm/bifrost_for_linux/tests/sconscript new file mode 100755 -index 000000000000..04584117ccef +index 000000000..04584117c --- /dev/null +++ b/drivers/gpu/arm/bifrost_for_linux/tests/sconscript @@ -0,0 +1,38 @@ @@ -334805,14 +334805,14 @@ index 000000000000..04584117ccef + SConscript('mali_kutf_vinstr_test/sconscript') diff --git a/drivers/gpu/arm/mali400/.gitignore b/drivers/gpu/arm/mali400/.gitignore new file mode 100755 -index 000000000000..d91c8078a009 +index 000000000..d91c8078a --- /dev/null +++ b/drivers/gpu/arm/mali400/.gitignore @@ -0,0 +1 @@ +./mali/__malidrv_build_info.c diff --git a/drivers/gpu/arm/mali400/Kbuild b/drivers/gpu/arm/mali400/Kbuild new file mode 100755 -index 000000000000..dbb7ad3e5d85 +index 000000000..dbb7ad3e5 --- /dev/null +++ b/drivers/gpu/arm/mali400/Kbuild @@ -0,0 +1,2 @@ @@ -334820,14 +334820,14 @@ index 000000000000..dbb7ad3e5d85 +obj-y += mali/ diff --git a/drivers/gpu/arm/mali400/mali/.gitignore b/drivers/gpu/arm/mali400/mali/.gitignore new file mode 100755 -index 000000000000..6b1a3ed27a7f +index 000000000..6b1a3ed27 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/.gitignore @@ -0,0 +1 @@ +__malidrv_build_info.c diff --git a/drivers/gpu/arm/mali400/mali/Kbuild b/drivers/gpu/arm/mali400/mali/Kbuild new file mode 100755 -index 000000000000..7390ab758f22 +index 000000000..7390ab758 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/Kbuild @@ -0,0 +1,254 @@ @@ -335087,7 +335087,7 @@ index 000000000000..7390ab758f22 + @echo 'const char *__malidrv_build_info(void) { return "malidrv: $(VERSION_STRINGS)";}' > $(src)/__malidrv_build_info.c diff --git a/drivers/gpu/arm/mali400/mali/Kconfig b/drivers/gpu/arm/mali400/mali/Kconfig new file mode 100755 -index 000000000000..34c5f72edcda +index 000000000..34c5f72ed --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/Kconfig @@ -0,0 +1,118 @@ @@ -335211,7 +335211,7 @@ index 000000000000..34c5f72edcda + If unsure, say N. diff --git a/drivers/gpu/arm/mali400/mali/Makefile b/drivers/gpu/arm/mali400/mali/Makefile new file mode 100755 -index 000000000000..0b91321a5af1 +index 000000000..0b91321a5 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/Makefile @@ -0,0 +1,206 @@ @@ -335423,7 +335423,7 @@ index 000000000000..0b91321a5af1 +export CONFIG KBUILD_EXTRA_SYMBOLS diff --git a/drivers/gpu/arm/mali400/mali/common/mali_broadcast.c b/drivers/gpu/arm/mali400/mali/common/mali_broadcast.c new file mode 100755 -index 000000000000..79a418c36ccb +index 000000000..79a418c36 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/common/mali_broadcast.c @@ -0,0 +1,142 @@ @@ -335571,7 +335571,7 @@ index 000000000000..79a418c36ccb +} diff --git a/drivers/gpu/arm/mali400/mali/common/mali_broadcast.h b/drivers/gpu/arm/mali400/mali/common/mali_broadcast.h new file mode 100755 -index 000000000000..0475b7171d8d +index 000000000..0475b7171 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/common/mali_broadcast.h @@ -0,0 +1,57 @@ @@ -335634,7 +335634,7 @@ index 000000000000..0475b7171d8d +#endif /* __MALI_BROADCAST_H__ */ diff --git a/drivers/gpu/arm/mali400/mali/common/mali_control_timer.c b/drivers/gpu/arm/mali400/mali/common/mali_control_timer.c new file mode 100755 -index 000000000000..5bed27a8c5c9 +index 000000000..5bed27a8c --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/common/mali_control_timer.c @@ -0,0 +1,139 @@ @@ -335779,7 +335779,7 @@ index 000000000000..5bed27a8c5c9 +} diff --git a/drivers/gpu/arm/mali400/mali/common/mali_control_timer.h b/drivers/gpu/arm/mali400/mali/common/mali_control_timer.h new file mode 100755 -index 000000000000..c9e6e058ea8e +index 000000000..c9e6e058e --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/common/mali_control_timer.h @@ -0,0 +1,30 @@ @@ -335815,7 +335815,7 @@ index 000000000000..c9e6e058ea8e + diff --git a/drivers/gpu/arm/mali400/mali/common/mali_dlbu.c b/drivers/gpu/arm/mali400/mali/common/mali_dlbu.c new file mode 100755 -index 000000000000..99b7f360768b +index 000000000..99b7f3607 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/common/mali_dlbu.c @@ -0,0 +1,213 @@ @@ -336034,7 +336034,7 @@ index 000000000000..99b7f360768b +} diff --git a/drivers/gpu/arm/mali400/mali/common/mali_dlbu.h b/drivers/gpu/arm/mali400/mali/common/mali_dlbu.h new file mode 100755 -index 000000000000..a7ecf41471d8 +index 000000000..a7ecf4147 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/common/mali_dlbu.h @@ -0,0 +1,45 @@ @@ -336085,7 +336085,7 @@ index 000000000000..a7ecf41471d8 +#endif /* __MALI_DLBU_H__ */ diff --git a/drivers/gpu/arm/mali400/mali/common/mali_dvfs_policy.c b/drivers/gpu/arm/mali400/mali/common/mali_dvfs_policy.c new file mode 100755 -index 000000000000..55b21a410754 +index 000000000..55b21a410 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/common/mali_dvfs_policy.c @@ -0,0 +1,308 @@ @@ -336399,7 +336399,7 @@ index 000000000000..55b21a410754 + diff --git a/drivers/gpu/arm/mali400/mali/common/mali_dvfs_policy.h b/drivers/gpu/arm/mali400/mali/common/mali_dvfs_policy.h new file mode 100755 -index 000000000000..662348c4e6ac +index 000000000..662348c4e --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/common/mali_dvfs_policy.h @@ -0,0 +1,34 @@ @@ -336439,7 +336439,7 @@ index 000000000000..662348c4e6ac +#endif/* __MALI_DVFS_POLICY_H__ */ diff --git a/drivers/gpu/arm/mali400/mali/common/mali_executor.c b/drivers/gpu/arm/mali400/mali/common/mali_executor.c new file mode 100755 -index 000000000000..ee40520ed0ce +index 000000000..ee40520ed --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/common/mali_executor.c @@ -0,0 +1,2707 @@ @@ -339152,7 +339152,7 @@ index 000000000000..ee40520ed0ce +} diff --git a/drivers/gpu/arm/mali400/mali/common/mali_executor.h b/drivers/gpu/arm/mali400/mali/common/mali_executor.h new file mode 100755 -index 000000000000..4224d6a6cdc4 +index 000000000..4224d6a6c --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/common/mali_executor.h @@ -0,0 +1,102 @@ @@ -339260,7 +339260,7 @@ index 000000000000..4224d6a6cdc4 +#endif /* __MALI_EXECUTOR_H__ */ diff --git a/drivers/gpu/arm/mali400/mali/common/mali_gp.c b/drivers/gpu/arm/mali400/mali/common/mali_gp.c new file mode 100755 -index 000000000000..7d3d4aff7c3f +index 000000000..7d3d4aff7 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/common/mali_gp.c @@ -0,0 +1,357 @@ @@ -339623,7 +339623,7 @@ index 000000000000..7d3d4aff7c3f +} diff --git a/drivers/gpu/arm/mali400/mali/common/mali_gp.h b/drivers/gpu/arm/mali400/mali/common/mali_gp.h new file mode 100755 -index 000000000000..3156310f21c7 +index 000000000..3156310f2 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/common/mali_gp.h @@ -0,0 +1,127 @@ @@ -339756,7 +339756,7 @@ index 000000000000..3156310f21c7 +#endif /* __MALI_GP_H__ */ diff --git a/drivers/gpu/arm/mali400/mali/common/mali_gp_job.c b/drivers/gpu/arm/mali400/mali/common/mali_gp_job.c new file mode 100755 -index 000000000000..5d4d9f2530d3 +index 000000000..5d4d9f253 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/common/mali_gp_job.c @@ -0,0 +1,306 @@ @@ -340068,7 +340068,7 @@ index 000000000000..5d4d9f2530d3 +} diff --git a/drivers/gpu/arm/mali400/mali/common/mali_gp_job.h b/drivers/gpu/arm/mali400/mali/common/mali_gp_job.h new file mode 100755 -index 000000000000..b84333f9f810 +index 000000000..b84333f9f --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/common/mali_gp_job.h @@ -0,0 +1,324 @@ @@ -340398,7 +340398,7 @@ index 000000000000..b84333f9f810 +#endif /* __MALI_GP_JOB_H__ */ diff --git a/drivers/gpu/arm/mali400/mali/common/mali_group.c b/drivers/gpu/arm/mali400/mali/common/mali_group.c new file mode 100755 -index 000000000000..47979a2f1a35 +index 000000000..47979a2f1 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/common/mali_group.c @@ -0,0 +1,1875 @@ @@ -342279,7 +342279,7 @@ index 000000000000..47979a2f1a35 +#endif /* #if defined(CONFIG_MALI400_PROFILING) */ diff --git a/drivers/gpu/arm/mali400/mali/common/mali_group.h b/drivers/gpu/arm/mali400/mali/common/mali_group.h new file mode 100755 -index 000000000000..32481e4a6748 +index 000000000..32481e4a6 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/common/mali_group.h @@ -0,0 +1,460 @@ @@ -342745,7 +342745,7 @@ index 000000000000..32481e4a6748 +#endif /* __MALI_GROUP_H__ */ diff --git a/drivers/gpu/arm/mali400/mali/common/mali_hw_core.c b/drivers/gpu/arm/mali400/mali/common/mali_hw_core.c new file mode 100755 -index 000000000000..a813816e998d +index 000000000..a813816e9 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/common/mali_hw_core.c @@ -0,0 +1,47 @@ @@ -342798,7 +342798,7 @@ index 000000000000..a813816e998d +} diff --git a/drivers/gpu/arm/mali400/mali/common/mali_hw_core.h b/drivers/gpu/arm/mali400/mali/common/mali_hw_core.h new file mode 100755 -index 000000000000..38d96e240a20 +index 000000000..38d96e240 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/common/mali_hw_core.h @@ -0,0 +1,111 @@ @@ -342915,7 +342915,7 @@ index 000000000000..38d96e240a20 +#endif /* __MALI_HW_CORE_H__ */ diff --git a/drivers/gpu/arm/mali400/mali/common/mali_kernel_common.h b/drivers/gpu/arm/mali400/mali/common/mali_kernel_common.h new file mode 100755 -index 000000000000..6a8f0f0116a4 +index 000000000..6a8f0f011 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/common/mali_kernel_common.h @@ -0,0 +1,181 @@ @@ -343102,7 +343102,7 @@ index 000000000000..6a8f0f0116a4 +#endif /* __MALI_KERNEL_COMMON_H__ */ diff --git a/drivers/gpu/arm/mali400/mali/common/mali_kernel_core.c b/drivers/gpu/arm/mali400/mali/common/mali_kernel_core.c new file mode 100755 -index 000000000000..87f97b710257 +index 000000000..87f97b710 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/common/mali_kernel_core.c @@ -0,0 +1,1349 @@ @@ -344457,7 +344457,7 @@ index 000000000000..87f97b710257 +#endif diff --git a/drivers/gpu/arm/mali400/mali/common/mali_kernel_core.h b/drivers/gpu/arm/mali400/mali/common/mali_kernel_core.h new file mode 100755 -index 000000000000..c471fc955107 +index 000000000..c471fc955 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/common/mali_kernel_core.h @@ -0,0 +1,57 @@ @@ -344520,7 +344520,7 @@ index 000000000000..c471fc955107 +#endif /* __MALI_KERNEL_CORE_H__ */ diff --git a/drivers/gpu/arm/mali400/mali/common/mali_kernel_utilization.c b/drivers/gpu/arm/mali400/mali/common/mali_kernel_utilization.c new file mode 100755 -index 000000000000..d1b8dc3b0b0e +index 000000000..d1b8dc3b0 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/common/mali_kernel_utilization.c @@ -0,0 +1,440 @@ @@ -344966,7 +344966,7 @@ index 000000000000..d1b8dc3b0b0e +} diff --git a/drivers/gpu/arm/mali400/mali/common/mali_kernel_utilization.h b/drivers/gpu/arm/mali400/mali/common/mali_kernel_utilization.h new file mode 100755 -index 000000000000..06f585dcb238 +index 000000000..06f585dcb --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/common/mali_kernel_utilization.h @@ -0,0 +1,72 @@ @@ -345044,7 +345044,7 @@ index 000000000000..06f585dcb238 +#endif /* __MALI_KERNEL_UTILIZATION_H__ */ diff --git a/drivers/gpu/arm/mali400/mali/common/mali_kernel_vsync.c b/drivers/gpu/arm/mali400/mali/common/mali_kernel_vsync.c new file mode 100755 -index 000000000000..dd44e5e7fa03 +index 000000000..dd44e5e7f --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/common/mali_kernel_vsync.c @@ -0,0 +1,45 @@ @@ -345095,7 +345095,7 @@ index 000000000000..dd44e5e7fa03 + diff --git a/drivers/gpu/arm/mali400/mali/common/mali_l2_cache.c b/drivers/gpu/arm/mali400/mali/common/mali_l2_cache.c new file mode 100755 -index 000000000000..fe33f561b2aa +index 000000000..fe33f561b --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/common/mali_l2_cache.c @@ -0,0 +1,534 @@ @@ -345635,7 +345635,7 @@ index 000000000000..fe33f561b2aa +} diff --git a/drivers/gpu/arm/mali400/mali/common/mali_l2_cache.h b/drivers/gpu/arm/mali400/mali/common/mali_l2_cache.h new file mode 100755 -index 000000000000..c48a8844075f +index 000000000..c48a88440 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/common/mali_l2_cache.h @@ -0,0 +1,124 @@ @@ -345765,7 +345765,7 @@ index 000000000000..c48a8844075f +#endif /* __MALI_KERNEL_L2_CACHE_H__ */ diff --git a/drivers/gpu/arm/mali400/mali/common/mali_mem_validation.c b/drivers/gpu/arm/mali400/mali/common/mali_mem_validation.c new file mode 100755 -index 000000000000..eb95998f1469 +index 000000000..eb95998f1 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/common/mali_mem_validation.c @@ -0,0 +1,68 @@ @@ -345839,7 +345839,7 @@ index 000000000000..eb95998f1469 +} diff --git a/drivers/gpu/arm/mali400/mali/common/mali_mem_validation.h b/drivers/gpu/arm/mali400/mali/common/mali_mem_validation.h new file mode 100755 -index 000000000000..05013f46f901 +index 000000000..05013f46f --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/common/mali_mem_validation.h @@ -0,0 +1,19 @@ @@ -345864,7 +345864,7 @@ index 000000000000..05013f46f901 +#endif /* __MALI_MEM_VALIDATION_H__ */ diff --git a/drivers/gpu/arm/mali400/mali/common/mali_mmu.c b/drivers/gpu/arm/mali400/mali/common/mali_mmu.c new file mode 100755 -index 000000000000..b82486fa66c0 +index 000000000..b82486fa6 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/common/mali_mmu.c @@ -0,0 +1,433 @@ @@ -346303,7 +346303,7 @@ index 000000000000..b82486fa66c0 +#endif diff --git a/drivers/gpu/arm/mali400/mali/common/mali_mmu.h b/drivers/gpu/arm/mali400/mali/common/mali_mmu.h new file mode 100755 -index 000000000000..6ed48585f3d2 +index 000000000..6ed48585f --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/common/mali_mmu.h @@ -0,0 +1,124 @@ @@ -346433,7 +346433,7 @@ index 000000000000..6ed48585f3d2 +#endif /* __MALI_MMU_H__ */ diff --git a/drivers/gpu/arm/mali400/mali/common/mali_mmu_page_directory.c b/drivers/gpu/arm/mali400/mali/common/mali_mmu_page_directory.c new file mode 100755 -index 000000000000..9ad3e8970b7d +index 000000000..9ad3e8970 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/common/mali_mmu_page_directory.c @@ -0,0 +1,495 @@ @@ -346934,7 +346934,7 @@ index 000000000000..9ad3e8970b7d +} diff --git a/drivers/gpu/arm/mali400/mali/common/mali_mmu_page_directory.h b/drivers/gpu/arm/mali400/mali/common/mali_mmu_page_directory.h new file mode 100755 -index 000000000000..3fdf07210259 +index 000000000..3fdf07210 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/common/mali_mmu_page_directory.h @@ -0,0 +1,110 @@ @@ -347050,7 +347050,7 @@ index 000000000000..3fdf07210259 +#endif /* __MALI_MMU_PAGE_DIRECTORY_H__ */ diff --git a/drivers/gpu/arm/mali400/mali/common/mali_osk.h b/drivers/gpu/arm/mali400/mali/common/mali_osk.h new file mode 100755 -index 000000000000..9ade362d6b28 +index 000000000..9ade362d6 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/common/mali_osk.h @@ -0,0 +1,1389 @@ @@ -348445,7 +348445,7 @@ index 000000000000..9ade362d6b28 +#endif /* __MALI_OSK_H__ */ diff --git a/drivers/gpu/arm/mali400/mali/common/mali_osk_bitops.h b/drivers/gpu/arm/mali400/mali/common/mali_osk_bitops.h new file mode 100755 -index 000000000000..bb1831753a40 +index 000000000..bb1831753 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/common/mali_osk_bitops.h @@ -0,0 +1,162 @@ @@ -348613,7 +348613,7 @@ index 000000000000..bb1831753a40 +#endif /* __MALI_OSK_BITOPS_H__ */ diff --git a/drivers/gpu/arm/mali400/mali/common/mali_osk_list.h b/drivers/gpu/arm/mali400/mali/common/mali_osk_list.h new file mode 100755 -index 000000000000..9af2d7d4d621 +index 000000000..9af2d7d4d --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/common/mali_osk_list.h @@ -0,0 +1,273 @@ @@ -348892,7 +348892,7 @@ index 000000000000..9af2d7d4d621 +#endif /* __MALI_OSK_LIST_H__ */ diff --git a/drivers/gpu/arm/mali400/mali/common/mali_osk_mali.h b/drivers/gpu/arm/mali400/mali/common/mali_osk_mali.h new file mode 100755 -index 000000000000..bf69925a43a7 +index 000000000..bf69925a4 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/common/mali_osk_mali.h @@ -0,0 +1,152 @@ @@ -349050,7 +349050,7 @@ index 000000000000..bf69925a43a7 +#endif /* __MALI_OSK_MALI_H__ */ diff --git a/drivers/gpu/arm/mali400/mali/common/mali_osk_profiling.h b/drivers/gpu/arm/mali400/mali/common/mali_osk_profiling.h new file mode 100755 -index 000000000000..6e4583db1c80 +index 000000000..6e4583db1 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/common/mali_osk_profiling.h @@ -0,0 +1,146 @@ @@ -349202,7 +349202,7 @@ index 000000000000..6e4583db1c80 + diff --git a/drivers/gpu/arm/mali400/mali/common/mali_osk_types.h b/drivers/gpu/arm/mali400/mali/common/mali_osk_types.h new file mode 100755 -index 000000000000..b6fa94ce16b3 +index 000000000..b6fa94ce1 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/common/mali_osk_types.h @@ -0,0 +1,471 @@ @@ -349679,7 +349679,7 @@ index 000000000000..b6fa94ce16b3 +#endif /* __MALI_OSK_TYPES_H__ */ diff --git a/drivers/gpu/arm/mali400/mali/common/mali_pm.c b/drivers/gpu/arm/mali400/mali/common/mali_pm.c new file mode 100755 -index 000000000000..3989a33aeaef +index 000000000..3989a33ae --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/common/mali_pm.c @@ -0,0 +1,1362 @@ @@ -351047,7 +351047,7 @@ index 000000000000..3989a33aeaef +} diff --git a/drivers/gpu/arm/mali400/mali/common/mali_pm.h b/drivers/gpu/arm/mali400/mali/common/mali_pm.h new file mode 100755 -index 000000000000..dac69958e034 +index 000000000..dac69958e --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/common/mali_pm.h @@ -0,0 +1,91 @@ @@ -351144,7 +351144,7 @@ index 000000000000..dac69958e034 +#endif /* __MALI_PM_H__ */ diff --git a/drivers/gpu/arm/mali400/mali/common/mali_pm_domain.c b/drivers/gpu/arm/mali400/mali/common/mali_pm_domain.c new file mode 100755 -index 000000000000..8290f7d88f6a +index 000000000..8290f7d88 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/common/mali_pm_domain.c @@ -0,0 +1,209 @@ @@ -351359,7 +351359,7 @@ index 000000000000..8290f7d88f6a +#endif diff --git a/drivers/gpu/arm/mali400/mali/common/mali_pm_domain.h b/drivers/gpu/arm/mali400/mali/common/mali_pm_domain.h new file mode 100755 -index 000000000000..5776abe39f3d +index 000000000..5776abe39 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/common/mali_pm_domain.h @@ -0,0 +1,104 @@ @@ -351469,7 +351469,7 @@ index 000000000000..5776abe39f3d +#endif /* __MALI_PM_DOMAIN_H__ */ diff --git a/drivers/gpu/arm/mali400/mali/common/mali_pm_metrics.c b/drivers/gpu/arm/mali400/mali/common/mali_pm_metrics.c new file mode 100755 -index 000000000000..cf74823230f7 +index 000000000..cf7482323 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/common/mali_pm_metrics.c @@ -0,0 +1,255 @@ @@ -351730,7 +351730,7 @@ index 000000000000..cf74823230f7 +} diff --git a/drivers/gpu/arm/mali400/mali/common/mali_pm_metrics.h b/drivers/gpu/arm/mali400/mali/common/mali_pm_metrics.h new file mode 100755 -index 000000000000..2b136b0de4e3 +index 000000000..2b136b0de --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/common/mali_pm_metrics.h @@ -0,0 +1,74 @@ @@ -351810,7 +351810,7 @@ index 000000000000..2b136b0de4e3 +#endif /* __MALI_PM_METRICS_H__ */ diff --git a/drivers/gpu/arm/mali400/mali/common/mali_pmu.c b/drivers/gpu/arm/mali400/mali/common/mali_pmu.c new file mode 100755 -index 000000000000..6f0af59f6fd4 +index 000000000..6f0af59f6 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/common/mali_pmu.c @@ -0,0 +1,270 @@ @@ -352086,7 +352086,7 @@ index 000000000000..6f0af59f6fd4 +} diff --git a/drivers/gpu/arm/mali400/mali/common/mali_pmu.h b/drivers/gpu/arm/mali400/mali/common/mali_pmu.h new file mode 100755 -index 000000000000..5b856240fdac +index 000000000..5b856240f --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/common/mali_pmu.h @@ -0,0 +1,123 @@ @@ -352215,7 +352215,7 @@ index 000000000000..5b856240fdac +#endif /* __MALI_PMU_H__ */ diff --git a/drivers/gpu/arm/mali400/mali/common/mali_pp.c b/drivers/gpu/arm/mali400/mali/common/mali_pp.c new file mode 100755 -index 000000000000..2dd8b8766f8e +index 000000000..2dd8b8766 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/common/mali_pp.c @@ -0,0 +1,502 @@ @@ -352723,7 +352723,7 @@ index 000000000000..2dd8b8766f8e +#endif diff --git a/drivers/gpu/arm/mali400/mali/common/mali_pp.h b/drivers/gpu/arm/mali400/mali/common/mali_pp.h new file mode 100755 -index 000000000000..f98b29866ffa +index 000000000..f98b29866 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/common/mali_pp.h @@ -0,0 +1,138 @@ @@ -352867,7 +352867,7 @@ index 000000000000..f98b29866ffa +#endif /* __MALI_PP_H__ */ diff --git a/drivers/gpu/arm/mali400/mali/common/mali_pp_job.c b/drivers/gpu/arm/mali400/mali/common/mali_pp_job.c new file mode 100755 -index 000000000000..b0216d4c1ac8 +index 000000000..b0216d4c1 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/common/mali_pp_job.c @@ -0,0 +1,316 @@ @@ -353189,7 +353189,7 @@ index 000000000000..b0216d4c1ac8 +} diff --git a/drivers/gpu/arm/mali400/mali/common/mali_pp_job.h b/drivers/gpu/arm/mali400/mali/common/mali_pp_job.h new file mode 100755 -index 000000000000..d0331f398ff9 +index 000000000..d0331f398 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/common/mali_pp_job.h @@ -0,0 +1,594 @@ @@ -353789,7 +353789,7 @@ index 000000000000..d0331f398ff9 +#endif /* __MALI_PP_JOB_H__ */ diff --git a/drivers/gpu/arm/mali400/mali/common/mali_scheduler.c b/drivers/gpu/arm/mali400/mali/common/mali_scheduler.c new file mode 100755 -index 000000000000..b5e6cfddbb0e +index 000000000..b5e6cfddb --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/common/mali_scheduler.c @@ -0,0 +1,1548 @@ @@ -355343,7 +355343,7 @@ index 000000000000..b5e6cfddbb0e +} diff --git a/drivers/gpu/arm/mali400/mali/common/mali_scheduler.h b/drivers/gpu/arm/mali400/mali/common/mali_scheduler.h new file mode 100755 -index 000000000000..de81a421ea9a +index 000000000..de81a421e --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/common/mali_scheduler.h @@ -0,0 +1,131 @@ @@ -355480,7 +355480,7 @@ index 000000000000..de81a421ea9a +#endif /* __MALI_SCHEDULER_H__ */ diff --git a/drivers/gpu/arm/mali400/mali/common/mali_scheduler_types.h b/drivers/gpu/arm/mali400/mali/common/mali_scheduler_types.h new file mode 100755 -index 000000000000..ba1d71d01d46 +index 000000000..ba1d71d01 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/common/mali_scheduler_types.h @@ -0,0 +1,29 @@ @@ -355515,7 +355515,7 @@ index 000000000000..ba1d71d01d46 +#endif /* __MALI_SCHEDULER_TYPES_H__ */ diff --git a/drivers/gpu/arm/mali400/mali/common/mali_session.c b/drivers/gpu/arm/mali400/mali/common/mali_session.c new file mode 100755 -index 000000000000..7504fb108779 +index 000000000..7504fb108 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/common/mali_session.c @@ -0,0 +1,155 @@ @@ -355676,7 +355676,7 @@ index 000000000000..7504fb108779 +} diff --git a/drivers/gpu/arm/mali400/mali/common/mali_session.h b/drivers/gpu/arm/mali400/mali/common/mali_session.h new file mode 100755 -index 000000000000..da8b9927ee60 +index 000000000..da8b9927e --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/common/mali_session.h @@ -0,0 +1,136 @@ @@ -355818,7 +355818,7 @@ index 000000000000..da8b9927ee60 +#endif /* __MALI_SESSION_H__ */ diff --git a/drivers/gpu/arm/mali400/mali/common/mali_soft_job.c b/drivers/gpu/arm/mali400/mali/common/mali_soft_job.c new file mode 100755 -index 000000000000..35cd830bc83a +index 000000000..35cd830bc --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/common/mali_soft_job.c @@ -0,0 +1,438 @@ @@ -356262,7 +356262,7 @@ index 000000000000..35cd830bc83a +} diff --git a/drivers/gpu/arm/mali400/mali/common/mali_soft_job.h b/drivers/gpu/arm/mali400/mali/common/mali_soft_job.h new file mode 100755 -index 000000000000..018ef4c527d9 +index 000000000..018ef4c52 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/common/mali_soft_job.h @@ -0,0 +1,190 @@ @@ -356458,7 +356458,7 @@ index 000000000000..018ef4c527d9 +#endif /* __MALI_SOFT_JOB_H__ */ diff --git a/drivers/gpu/arm/mali400/mali/common/mali_spinlock_reentrant.c b/drivers/gpu/arm/mali400/mali/common/mali_spinlock_reentrant.c new file mode 100755 -index 000000000000..f829e99f02ab +index 000000000..f829e99f0 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/common/mali_spinlock_reentrant.c @@ -0,0 +1,77 @@ @@ -356541,7 +356541,7 @@ index 000000000000..f829e99f02ab +} diff --git a/drivers/gpu/arm/mali400/mali/common/mali_spinlock_reentrant.h b/drivers/gpu/arm/mali400/mali/common/mali_spinlock_reentrant.h new file mode 100755 -index 000000000000..4d788ec1bbe4 +index 000000000..4d788ec1b --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/common/mali_spinlock_reentrant.h @@ -0,0 +1,70 @@ @@ -356617,7 +356617,7 @@ index 000000000000..4d788ec1bbe4 +#endif /* __MALI_SPINLOCK_REENTRANT_H__ */ diff --git a/drivers/gpu/arm/mali400/mali/common/mali_timeline.c b/drivers/gpu/arm/mali400/mali/common/mali_timeline.c new file mode 100755 -index 000000000000..ffffee9306ce +index 000000000..ffffee930 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/common/mali_timeline.c @@ -0,0 +1,1964 @@ @@ -358587,7 +358587,7 @@ index 000000000000..ffffee9306ce +#endif diff --git a/drivers/gpu/arm/mali400/mali/common/mali_timeline.h b/drivers/gpu/arm/mali400/mali/common/mali_timeline.h new file mode 100755 -index 000000000000..3e8bfc8fb733 +index 000000000..3e8bfc8fb --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/common/mali_timeline.h @@ -0,0 +1,587 @@ @@ -359180,7 +359180,7 @@ index 000000000000..3e8bfc8fb733 +#endif /* __MALI_TIMELINE_H__ */ diff --git a/drivers/gpu/arm/mali400/mali/common/mali_timeline_fence_wait.c b/drivers/gpu/arm/mali400/mali/common/mali_timeline_fence_wait.c new file mode 100755 -index 000000000000..1ab13f50997f +index 000000000..1ab13f509 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/common/mali_timeline_fence_wait.c @@ -0,0 +1,218 @@ @@ -359404,7 +359404,7 @@ index 000000000000..1ab13f50997f +} diff --git a/drivers/gpu/arm/mali400/mali/common/mali_timeline_fence_wait.h b/drivers/gpu/arm/mali400/mali/common/mali_timeline_fence_wait.h new file mode 100755 -index 000000000000..9da12baeef1a +index 000000000..9da12baee --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/common/mali_timeline_fence_wait.h @@ -0,0 +1,67 @@ @@ -359477,7 +359477,7 @@ index 000000000000..9da12baeef1a +#endif /* __MALI_TIMELINE_FENCE_WAIT_H__ */ diff --git a/drivers/gpu/arm/mali400/mali/common/mali_timeline_sync_fence.c b/drivers/gpu/arm/mali400/mali/common/mali_timeline_sync_fence.c new file mode 100755 -index 000000000000..bb7f6a04e8bd +index 000000000..bb7f6a04e --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/common/mali_timeline_sync_fence.c @@ -0,0 +1,179 @@ @@ -359662,7 +359662,7 @@ index 000000000000..bb7f6a04e8bd +#endif /* defined(CONFIG_SYNC) || defined(CONFIG_SYNC_FILE) */ diff --git a/drivers/gpu/arm/mali400/mali/common/mali_timeline_sync_fence.h b/drivers/gpu/arm/mali400/mali/common/mali_timeline_sync_fence.h new file mode 100755 -index 000000000000..65e368ae7c9e +index 000000000..65e368ae7 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/common/mali_timeline_sync_fence.h @@ -0,0 +1,51 @@ @@ -359719,7 +359719,7 @@ index 000000000000..65e368ae7c9e +#endif /* __MALI_TIMELINE_SYNC_FENCE_H__ */ diff --git a/drivers/gpu/arm/mali400/mali/common/mali_ukk.h b/drivers/gpu/arm/mali400/mali/common/mali_ukk.h new file mode 100755 -index 000000000000..55a05c50436a +index 000000000..55a05c504 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/common/mali_ukk.h @@ -0,0 +1,551 @@ @@ -360276,7 +360276,7 @@ index 000000000000..55a05c50436a +#endif /* __MALI_UKK_H__ */ diff --git a/drivers/gpu/arm/mali400/mali/common/mali_user_settings_db.c b/drivers/gpu/arm/mali400/mali/common/mali_user_settings_db.c new file mode 100755 -index 000000000000..1911eff87a72 +index 000000000..1911eff87 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/common/mali_user_settings_db.c @@ -0,0 +1,147 @@ @@ -360429,7 +360429,7 @@ index 000000000000..1911eff87a72 +} diff --git a/drivers/gpu/arm/mali400/mali/common/mali_user_settings_db.h b/drivers/gpu/arm/mali400/mali/common/mali_user_settings_db.h new file mode 100755 -index 000000000000..da9c0630e371 +index 000000000..da9c0630e --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/common/mali_user_settings_db.h @@ -0,0 +1,39 @@ @@ -360474,7 +360474,7 @@ index 000000000000..da9c0630e371 +#endif /* __MALI_KERNEL_USER_SETTING__ */ diff --git a/drivers/gpu/arm/mali400/mali/include/linux/mali/mali_utgard.h b/drivers/gpu/arm/mali400/mali/include/linux/mali/mali_utgard.h new file mode 100755 -index 000000000000..7df55c951d6f +index 000000000..7df55c951 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/include/linux/mali/mali_utgard.h @@ -0,0 +1,526 @@ @@ -361006,7 +361006,7 @@ index 000000000000..7df55c951d6f +#endif diff --git a/drivers/gpu/arm/mali400/mali/include/linux/mali/mali_utgard_ioctl.h b/drivers/gpu/arm/mali400/mali/include/linux/mali/mali_utgard_ioctl.h new file mode 100755 -index 000000000000..686708eaef75 +index 000000000..686708eae --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/include/linux/mali/mali_utgard_ioctl.h @@ -0,0 +1,97 @@ @@ -361109,7 +361109,7 @@ index 000000000000..686708eaef75 +#endif /* __MALI_UTGARD_IOCTL_H__ */ diff --git a/drivers/gpu/arm/mali400/mali/include/linux/mali/mali_utgard_profiling_events.h b/drivers/gpu/arm/mali400/mali/include/linux/mali/mali_utgard_profiling_events.h new file mode 100755 -index 000000000000..17d31de931d0 +index 000000000..17d31de93 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/include/linux/mali/mali_utgard_profiling_events.h @@ -0,0 +1,190 @@ @@ -361305,7 +361305,7 @@ index 000000000000..17d31de931d0 +#endif /*_MALI_UTGARD_PROFILING_EVENTS_H_*/ diff --git a/drivers/gpu/arm/mali400/mali/include/linux/mali/mali_utgard_profiling_gator_api.h b/drivers/gpu/arm/mali400/mali/include/linux/mali/mali_utgard_profiling_gator_api.h new file mode 100755 -index 000000000000..c1927d1450dc +index 000000000..c1927d145 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/include/linux/mali/mali_utgard_profiling_gator_api.h @@ -0,0 +1,305 @@ @@ -361616,7 +361616,7 @@ index 000000000000..c1927d1450dc +#endif /* __MALI_UTGARD_PROFILING_GATOR_API_H__ */ diff --git a/drivers/gpu/arm/mali400/mali/include/linux/mali/mali_utgard_uk_types.h b/drivers/gpu/arm/mali400/mali/include/linux/mali/mali_utgard_uk_types.h new file mode 100755 -index 000000000000..34656f09b2ab +index 000000000..34656f09b --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/include/linux/mali/mali_utgard_uk_types.h @@ -0,0 +1,1108 @@ @@ -362730,7 +362730,7 @@ index 000000000000..34656f09b2ab +#endif /* __MALI_UTGARD_UK_TYPES_H__ */ diff --git a/drivers/gpu/arm/mali400/mali/linux/license/gpl/mali_kernel_license.h b/drivers/gpu/arm/mali400/mali/linux/license/gpl/mali_kernel_license.h new file mode 100755 -index 000000000000..6fafc6777e48 +index 000000000..6fafc6777 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/linux/license/gpl/mali_kernel_license.h @@ -0,0 +1,30 @@ @@ -362766,7 +362766,7 @@ index 000000000000..6fafc6777e48 +#endif /* __MALI_KERNEL_LICENSE_H__ */ diff --git a/drivers/gpu/arm/mali400/mali/linux/mali_devfreq.c b/drivers/gpu/arm/mali400/mali/linux/mali_devfreq.c new file mode 100755 -index 000000000000..260c2a8227a9 +index 000000000..260c2a822 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/linux/mali_devfreq.c @@ -0,0 +1,354 @@ @@ -363126,7 +363126,7 @@ index 000000000000..260c2a8227a9 +} diff --git a/drivers/gpu/arm/mali400/mali/linux/mali_devfreq.h b/drivers/gpu/arm/mali400/mali/linux/mali_devfreq.h new file mode 100755 -index 000000000000..ba7c017d88dc +index 000000000..ba7c017d8 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/linux/mali_devfreq.h @@ -0,0 +1,17 @@ @@ -363149,7 +363149,7 @@ index 000000000000..ba7c017d88dc +#endif diff --git a/drivers/gpu/arm/mali400/mali/linux/mali_device_pause_resume.c b/drivers/gpu/arm/mali400/mali/linux/mali_device_pause_resume.c new file mode 100755 -index 000000000000..95c3ea12d645 +index 000000000..95c3ea12d --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/linux/mali_device_pause_resume.c @@ -0,0 +1,36 @@ @@ -363191,7 +363191,7 @@ index 000000000000..95c3ea12d645 +EXPORT_SYMBOL(mali_dev_resume); diff --git a/drivers/gpu/arm/mali400/mali/linux/mali_dma_fence.c b/drivers/gpu/arm/mali400/mali/linux/mali_dma_fence.c new file mode 100755 -index 000000000000..e026e11e4bc5 +index 000000000..e026e11e4 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/linux/mali_dma_fence.c @@ -0,0 +1,439 @@ @@ -363636,7 +363636,7 @@ index 000000000000..e026e11e4bc5 +} diff --git a/drivers/gpu/arm/mali400/mali/linux/mali_dma_fence.h b/drivers/gpu/arm/mali400/mali/linux/mali_dma_fence.h new file mode 100755 -index 000000000000..d44f6d1a8926 +index 000000000..d44f6d1a8 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/linux/mali_dma_fence.h @@ -0,0 +1,124 @@ @@ -363766,7 +363766,7 @@ index 000000000000..d44f6d1a8926 +#endif diff --git a/drivers/gpu/arm/mali400/mali/linux/mali_internal_sync.c b/drivers/gpu/arm/mali400/mali/linux/mali_internal_sync.c new file mode 100755 -index 000000000000..e13cbad3e513 +index 000000000..e13cbad3e --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/linux/mali_internal_sync.c @@ -0,0 +1,783 @@ @@ -364555,7 +364555,7 @@ index 000000000000..e13cbad3e513 +#endif diff --git a/drivers/gpu/arm/mali400/mali/linux/mali_internal_sync.h b/drivers/gpu/arm/mali400/mali/linux/mali_internal_sync.h new file mode 100755 -index 000000000000..dbb29222ba98 +index 000000000..dbb29222b --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/linux/mali_internal_sync.h @@ -0,0 +1,191 @@ @@ -364752,7 +364752,7 @@ index 000000000000..dbb29222ba98 +#endif /* _MALI_INTERNAL_SYNC_H */ diff --git a/drivers/gpu/arm/mali400/mali/linux/mali_kernel_linux.c b/drivers/gpu/arm/mali400/mali/linux/mali_kernel_linux.c new file mode 100755 -index 000000000000..e45c7d2f2b1e +index 000000000..e45c7d2f2 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/linux/mali_kernel_linux.c @@ -0,0 +1,1154 @@ @@ -365912,7 +365912,7 @@ index 000000000000..e45c7d2f2b1e +MODULE_VERSION(SVN_REV_STRING); diff --git a/drivers/gpu/arm/mali400/mali/linux/mali_kernel_linux.h b/drivers/gpu/arm/mali400/mali/linux/mali_kernel_linux.h new file mode 100755 -index 000000000000..be754cb15646 +index 000000000..be754cb15 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/linux/mali_kernel_linux.h @@ -0,0 +1,36 @@ @@ -365954,7 +365954,7 @@ index 000000000000..be754cb15646 +#endif /* __MALI_KERNEL_LINUX_H__ */ diff --git a/drivers/gpu/arm/mali400/mali/linux/mali_kernel_sysfs.c b/drivers/gpu/arm/mali400/mali/linux/mali_kernel_sysfs.c new file mode 100755 -index 000000000000..7bda438fef50 +index 000000000..7bda438fe --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/linux/mali_kernel_sysfs.c @@ -0,0 +1,1410 @@ @@ -367370,7 +367370,7 @@ index 000000000000..7bda438fef50 +#endif /* MALI_LICENSE_IS_GPL */ diff --git a/drivers/gpu/arm/mali400/mali/linux/mali_kernel_sysfs.h b/drivers/gpu/arm/mali400/mali/linux/mali_kernel_sysfs.h new file mode 100755 -index 000000000000..91580a87c1e1 +index 000000000..91580a87c --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/linux/mali_kernel_sysfs.h @@ -0,0 +1,29 @@ @@ -367405,7 +367405,7 @@ index 000000000000..91580a87c1e1 +#endif /* __MALI_KERNEL_LINUX_H__ */ diff --git a/drivers/gpu/arm/mali400/mali/linux/mali_linux_trace.h b/drivers/gpu/arm/mali400/mali/linux/mali_linux_trace.h new file mode 100755 -index 000000000000..222260823c81 +index 000000000..222260823 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/linux/mali_linux_trace.h @@ -0,0 +1,161 @@ @@ -367572,7 +367572,7 @@ index 000000000000..222260823c81 + diff --git a/drivers/gpu/arm/mali400/mali/linux/mali_memory.c b/drivers/gpu/arm/mali400/mali/linux/mali_memory.c new file mode 100755 -index 000000000000..dfc769e6cc40 +index 000000000..dfc769e6c --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/linux/mali_memory.c @@ -0,0 +1,531 @@ @@ -368109,7 +368109,7 @@ index 000000000000..dfc769e6cc40 + diff --git a/drivers/gpu/arm/mali400/mali/linux/mali_memory.h b/drivers/gpu/arm/mali400/mali/linux/mali_memory.h new file mode 100755 -index 000000000000..efebbef235d8 +index 000000000..efebbef23 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/linux/mali_memory.h @@ -0,0 +1,143 @@ @@ -368258,7 +368258,7 @@ index 000000000000..efebbef235d8 +#endif /* __MALI_MEMORY_H__ */ diff --git a/drivers/gpu/arm/mali400/mali/linux/mali_memory_block_alloc.c b/drivers/gpu/arm/mali400/mali/linux/mali_memory_block_alloc.c new file mode 100755 -index 000000000000..bccef3576914 +index 000000000..bccef3576 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/linux/mali_memory_block_alloc.c @@ -0,0 +1,362 @@ @@ -368626,7 +368626,7 @@ index 000000000000..bccef3576914 +} diff --git a/drivers/gpu/arm/mali400/mali/linux/mali_memory_block_alloc.h b/drivers/gpu/arm/mali400/mali/linux/mali_memory_block_alloc.h new file mode 100755 -index 000000000000..70fd9ec25f50 +index 000000000..70fd9ec25 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/linux/mali_memory_block_alloc.h @@ -0,0 +1,58 @@ @@ -368690,7 +368690,7 @@ index 000000000000..70fd9ec25f50 +#endif /* __MALI_BLOCK_ALLOCATOR_H__ */ diff --git a/drivers/gpu/arm/mali400/mali/linux/mali_memory_cow.c b/drivers/gpu/arm/mali400/mali/linux/mali_memory_cow.c new file mode 100755 -index 000000000000..0bdf90b167d6 +index 000000000..0bdf90b16 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/linux/mali_memory_cow.c @@ -0,0 +1,776 @@ @@ -369472,7 +369472,7 @@ index 000000000000..0bdf90b167d6 +} diff --git a/drivers/gpu/arm/mali400/mali/linux/mali_memory_cow.h b/drivers/gpu/arm/mali400/mali/linux/mali_memory_cow.h new file mode 100755 -index 000000000000..5f83a37fc8f8 +index 000000000..5f83a37fc --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/linux/mali_memory_cow.h @@ -0,0 +1,48 @@ @@ -369526,7 +369526,7 @@ index 000000000000..5f83a37fc8f8 + diff --git a/drivers/gpu/arm/mali400/mali/linux/mali_memory_defer_bind.c b/drivers/gpu/arm/mali400/mali/linux/mali_memory_defer_bind.c new file mode 100755 -index 000000000000..a9db577cb851 +index 000000000..a9db577cb --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/linux/mali_memory_defer_bind.c @@ -0,0 +1,262 @@ @@ -369794,7 +369794,7 @@ index 000000000000..a9db577cb851 + diff --git a/drivers/gpu/arm/mali400/mali/linux/mali_memory_defer_bind.h b/drivers/gpu/arm/mali400/mali/linux/mali_memory_defer_bind.h new file mode 100755 -index 000000000000..defa08d52a46 +index 000000000..defa08d52 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/linux/mali_memory_defer_bind.h @@ -0,0 +1,64 @@ @@ -369864,7 +369864,7 @@ index 000000000000..defa08d52a46 +#endif diff --git a/drivers/gpu/arm/mali400/mali/linux/mali_memory_dma_buf.c b/drivers/gpu/arm/mali400/mali/linux/mali_memory_dma_buf.c new file mode 100755 -index 000000000000..1f4565127a6b +index 000000000..1f4565127 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/linux/mali_memory_dma_buf.c @@ -0,0 +1,369 @@ @@ -370239,7 +370239,7 @@ index 000000000000..1f4565127a6b +} diff --git a/drivers/gpu/arm/mali400/mali/linux/mali_memory_dma_buf.h b/drivers/gpu/arm/mali400/mali/linux/mali_memory_dma_buf.h new file mode 100755 -index 000000000000..a9b2870389ff +index 000000000..a9b287038 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/linux/mali_memory_dma_buf.h @@ -0,0 +1,53 @@ @@ -370298,7 +370298,7 @@ index 000000000000..a9b2870389ff +#endif /* __MALI_MEMORY_DMA_BUF_H__ */ diff --git a/drivers/gpu/arm/mali400/mali/linux/mali_memory_external.c b/drivers/gpu/arm/mali400/mali/linux/mali_memory_external.c new file mode 100755 -index 000000000000..76018b7ab90b +index 000000000..76018b7ab --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/linux/mali_memory_external.c @@ -0,0 +1,89 @@ @@ -370393,7 +370393,7 @@ index 000000000000..76018b7ab90b + diff --git a/drivers/gpu/arm/mali400/mali/linux/mali_memory_external.h b/drivers/gpu/arm/mali400/mali/linux/mali_memory_external.h new file mode 100755 -index 000000000000..2db178d96233 +index 000000000..2db178d96 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/linux/mali_memory_external.h @@ -0,0 +1,29 @@ @@ -370428,7 +370428,7 @@ index 000000000000..2db178d96233 +#endif diff --git a/drivers/gpu/arm/mali400/mali/linux/mali_memory_manager.c b/drivers/gpu/arm/mali400/mali/linux/mali_memory_manager.c new file mode 100755 -index 000000000000..27dee0f19c81 +index 000000000..27dee0f19 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/linux/mali_memory_manager.c @@ -0,0 +1,993 @@ @@ -371427,7 +371427,7 @@ index 000000000000..27dee0f19c81 +} diff --git a/drivers/gpu/arm/mali400/mali/linux/mali_memory_manager.h b/drivers/gpu/arm/mali400/mali/linux/mali_memory_manager.h new file mode 100755 -index 000000000000..23d8cde753a1 +index 000000000..23d8cde75 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/linux/mali_memory_manager.h @@ -0,0 +1,51 @@ @@ -371484,7 +371484,7 @@ index 000000000000..23d8cde753a1 + diff --git a/drivers/gpu/arm/mali400/mali/linux/mali_memory_os_alloc.c b/drivers/gpu/arm/mali400/mali/linux/mali_memory_os_alloc.c new file mode 100755 -index 000000000000..1e1f5eb4a0f7 +index 000000000..1e1f5eb4a --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/linux/mali_memory_os_alloc.c @@ -0,0 +1,810 @@ @@ -372300,7 +372300,7 @@ index 000000000000..1e1f5eb4a0f7 +} diff --git a/drivers/gpu/arm/mali400/mali/linux/mali_memory_os_alloc.h b/drivers/gpu/arm/mali400/mali/linux/mali_memory_os_alloc.h new file mode 100755 -index 000000000000..8c9b35d0b230 +index 000000000..8c9b35d0b --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/linux/mali_memory_os_alloc.h @@ -0,0 +1,54 @@ @@ -372360,7 +372360,7 @@ index 000000000000..8c9b35d0b230 +#endif /* __MALI_MEMORY_OS_ALLOC_H__ */ diff --git a/drivers/gpu/arm/mali400/mali/linux/mali_memory_secure.c b/drivers/gpu/arm/mali400/mali/linux/mali_memory_secure.c new file mode 100755 -index 000000000000..0b4f828680d0 +index 000000000..0b4f82868 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/linux/mali_memory_secure.c @@ -0,0 +1,170 @@ @@ -372536,7 +372536,7 @@ index 000000000000..0b4f828680d0 + diff --git a/drivers/gpu/arm/mali400/mali/linux/mali_memory_secure.h b/drivers/gpu/arm/mali400/mali/linux/mali_memory_secure.h new file mode 100755 -index 000000000000..48691d4790fe +index 000000000..48691d479 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/linux/mali_memory_secure.h @@ -0,0 +1,30 @@ @@ -372572,7 +372572,7 @@ index 000000000000..48691d4790fe +#endif /* __MALI_MEMORY_SECURE_H__ */ diff --git a/drivers/gpu/arm/mali400/mali/linux/mali_memory_swap_alloc.c b/drivers/gpu/arm/mali400/mali/linux/mali_memory_swap_alloc.c new file mode 100755 -index 000000000000..d682785b9673 +index 000000000..d682785b9 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/linux/mali_memory_swap_alloc.c @@ -0,0 +1,943 @@ @@ -373521,7 +373521,7 @@ index 000000000000..d682785b9673 +#endif diff --git a/drivers/gpu/arm/mali400/mali/linux/mali_memory_swap_alloc.h b/drivers/gpu/arm/mali400/mali/linux/mali_memory_swap_alloc.h new file mode 100755 -index 000000000000..5810960e204a +index 000000000..5810960e2 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/linux/mali_memory_swap_alloc.h @@ -0,0 +1,121 @@ @@ -373648,7 +373648,7 @@ index 000000000000..5810960e204a + diff --git a/drivers/gpu/arm/mali400/mali/linux/mali_memory_types.h b/drivers/gpu/arm/mali400/mali/linux/mali_memory_types.h new file mode 100755 -index 000000000000..33db40929642 +index 000000000..33db40929 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/linux/mali_memory_types.h @@ -0,0 +1,219 @@ @@ -373873,7 +373873,7 @@ index 000000000000..33db40929642 +#endif /* __MALI_MEMORY_TYPES__ */ diff --git a/drivers/gpu/arm/mali400/mali/linux/mali_memory_ump.c b/drivers/gpu/arm/mali400/mali/linux/mali_memory_ump.c new file mode 100755 -index 000000000000..666d4b0fb1cd +index 000000000..666d4b0fb --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/linux/mali_memory_ump.c @@ -0,0 +1,154 @@ @@ -374033,7 +374033,7 @@ index 000000000000..666d4b0fb1cd + diff --git a/drivers/gpu/arm/mali400/mali/linux/mali_memory_ump.h b/drivers/gpu/arm/mali400/mali/linux/mali_memory_ump.h new file mode 100755 -index 000000000000..c314c8dcbf1c +index 000000000..c314c8dcb --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/linux/mali_memory_ump.h @@ -0,0 +1,29 @@ @@ -374068,7 +374068,7 @@ index 000000000000..c314c8dcbf1c +#endif /* __MALI_MEMORY_DMA_BUF_H__ */ diff --git a/drivers/gpu/arm/mali400/mali/linux/mali_memory_util.c b/drivers/gpu/arm/mali400/mali/linux/mali_memory_util.c new file mode 100755 -index 000000000000..8e13e923c3fb +index 000000000..8e13e923c --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/linux/mali_memory_util.c @@ -0,0 +1,158 @@ @@ -374232,7 +374232,7 @@ index 000000000000..8e13e923c3fb +} diff --git a/drivers/gpu/arm/mali400/mali/linux/mali_memory_util.h b/drivers/gpu/arm/mali400/mali/linux/mali_memory_util.h new file mode 100755 -index 000000000000..33ac99509740 +index 000000000..33ac99509 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/linux/mali_memory_util.h @@ -0,0 +1,20 @@ @@ -374258,7 +374258,7 @@ index 000000000000..33ac99509740 +#endif diff --git a/drivers/gpu/arm/mali400/mali/linux/mali_memory_virtual.c b/drivers/gpu/arm/mali400/mali/linux/mali_memory_virtual.c new file mode 100755 -index 000000000000..0b31e3a23432 +index 000000000..0b31e3a23 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/linux/mali_memory_virtual.c @@ -0,0 +1,127 @@ @@ -374391,7 +374391,7 @@ index 000000000000..0b31e3a23432 + diff --git a/drivers/gpu/arm/mali400/mali/linux/mali_memory_virtual.h b/drivers/gpu/arm/mali400/mali/linux/mali_memory_virtual.h new file mode 100755 -index 000000000000..fd03ed9f2bbb +index 000000000..fd03ed9f2 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/linux/mali_memory_virtual.h @@ -0,0 +1,35 @@ @@ -374432,7 +374432,7 @@ index 000000000000..fd03ed9f2bbb +#endif diff --git a/drivers/gpu/arm/mali400/mali/linux/mali_osk_atomics.c b/drivers/gpu/arm/mali400/mali/linux/mali_osk_atomics.c new file mode 100755 -index 000000000000..5bc0e52ebe23 +index 000000000..5bc0e52eb --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/linux/mali_osk_atomics.c @@ -0,0 +1,59 @@ @@ -374497,7 +374497,7 @@ index 000000000000..5bc0e52ebe23 +} diff --git a/drivers/gpu/arm/mali400/mali/linux/mali_osk_bitmap.c b/drivers/gpu/arm/mali400/mali/linux/mali_osk_bitmap.c new file mode 100755 -index 000000000000..fb9ccd2ad1e2 +index 000000000..fb9ccd2ad --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/linux/mali_osk_bitmap.c @@ -0,0 +1,152 @@ @@ -374655,7 +374655,7 @@ index 000000000000..fb9ccd2ad1e2 + diff --git a/drivers/gpu/arm/mali400/mali/linux/mali_osk_irq.c b/drivers/gpu/arm/mali400/mali/linux/mali_osk_irq.c new file mode 100755 -index 000000000000..5c8b9ceab9ab +index 000000000..5c8b9ceab --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/linux/mali_osk_irq.c @@ -0,0 +1,200 @@ @@ -374861,7 +374861,7 @@ index 000000000000..5c8b9ceab9ab +} diff --git a/drivers/gpu/arm/mali400/mali/linux/mali_osk_locks.c b/drivers/gpu/arm/mali400/mali/linux/mali_osk_locks.c new file mode 100755 -index 000000000000..ed5f0b0da7cb +index 000000000..ed5f0b0da --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/linux/mali_osk_locks.c @@ -0,0 +1,287 @@ @@ -375154,7 +375154,7 @@ index 000000000000..ed5f0b0da7cb +#endif /* DEBUG */ diff --git a/drivers/gpu/arm/mali400/mali/linux/mali_osk_locks.h b/drivers/gpu/arm/mali400/mali/linux/mali_osk_locks.h new file mode 100755 -index 000000000000..6fd5af95285b +index 000000000..6fd5af952 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/linux/mali_osk_locks.h @@ -0,0 +1,326 @@ @@ -375486,7 +375486,7 @@ index 000000000000..6fd5af95285b +#endif diff --git a/drivers/gpu/arm/mali400/mali/linux/mali_osk_low_level_mem.c b/drivers/gpu/arm/mali400/mali/linux/mali_osk_low_level_mem.c new file mode 100755 -index 000000000000..994b04dad745 +index 000000000..994b04dad --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/linux/mali_osk_low_level_mem.c @@ -0,0 +1,146 @@ @@ -375638,7 +375638,7 @@ index 000000000000..994b04dad745 +} diff --git a/drivers/gpu/arm/mali400/mali/linux/mali_osk_mali.c b/drivers/gpu/arm/mali400/mali/linux/mali_osk_mali.c new file mode 100755 -index 000000000000..a729d0499869 +index 000000000..a729d0499 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/linux/mali_osk_mali.c @@ -0,0 +1,505 @@ @@ -376149,7 +376149,7 @@ index 000000000000..a729d0499869 + diff --git a/drivers/gpu/arm/mali400/mali/linux/mali_osk_math.c b/drivers/gpu/arm/mali400/mali/linux/mali_osk_math.c new file mode 100755 -index 000000000000..0b2d00762771 +index 000000000..0b2d00762 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/linux/mali_osk_math.c @@ -0,0 +1,27 @@ @@ -376182,7 +376182,7 @@ index 000000000000..0b2d00762771 +} diff --git a/drivers/gpu/arm/mali400/mali/linux/mali_osk_memory.c b/drivers/gpu/arm/mali400/mali/linux/mali_osk_memory.c new file mode 100755 -index 000000000000..174616b566c4 +index 000000000..174616b56 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/linux/mali_osk_memory.c @@ -0,0 +1,61 @@ @@ -376249,7 +376249,7 @@ index 000000000000..174616b566c4 +} diff --git a/drivers/gpu/arm/mali400/mali/linux/mali_osk_misc.c b/drivers/gpu/arm/mali400/mali/linux/mali_osk_misc.c new file mode 100755 -index 000000000000..9845187f8122 +index 000000000..9845187f8 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/linux/mali_osk_misc.c @@ -0,0 +1,81 @@ @@ -376336,7 +376336,7 @@ index 000000000000..9845187f8122 +} diff --git a/drivers/gpu/arm/mali400/mali/linux/mali_osk_notification.c b/drivers/gpu/arm/mali400/mali/linux/mali_osk_notification.c new file mode 100755 -index 000000000000..a05f8f066964 +index 000000000..a05f8f066 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/linux/mali_osk_notification.c @@ -0,0 +1,182 @@ @@ -376524,7 +376524,7 @@ index 000000000000..a05f8f066964 +} diff --git a/drivers/gpu/arm/mali400/mali/linux/mali_osk_pm.c b/drivers/gpu/arm/mali400/mali/linux/mali_osk_pm.c new file mode 100755 -index 000000000000..e28e2eb21fe2 +index 000000000..e28e2eb21 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/linux/mali_osk_pm.c @@ -0,0 +1,83 @@ @@ -376613,7 +376613,7 @@ index 000000000000..e28e2eb21fe2 +} diff --git a/drivers/gpu/arm/mali400/mali/linux/mali_osk_profiling.c b/drivers/gpu/arm/mali400/mali/linux/mali_osk_profiling.c new file mode 100755 -index 000000000000..9e977ea4d0ff +index 000000000..9e977ea4d --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/linux/mali_osk_profiling.c @@ -0,0 +1,1282 @@ @@ -377901,7 +377901,7 @@ index 000000000000..9e977ea4d0ff +EXPORT_SYMBOL(_mali_profiling_get_mali_version); diff --git a/drivers/gpu/arm/mali400/mali/linux/mali_osk_specific.h b/drivers/gpu/arm/mali400/mali/linux/mali_osk_specific.h new file mode 100755 -index 000000000000..af51161f9da1 +index 000000000..af51161f9 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/linux/mali_osk_specific.h @@ -0,0 +1,74 @@ @@ -377981,7 +377981,7 @@ index 000000000000..af51161f9da1 +#endif /* __MALI_OSK_SPECIFIC_H__ */ diff --git a/drivers/gpu/arm/mali400/mali/linux/mali_osk_time.c b/drivers/gpu/arm/mali400/mali/linux/mali_osk_time.c new file mode 100755 -index 000000000000..d295e712ac7a +index 000000000..d295e712a --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/linux/mali_osk_time.c @@ -0,0 +1,59 @@ @@ -378046,7 +378046,7 @@ index 000000000000..d295e712ac7a +} diff --git a/drivers/gpu/arm/mali400/mali/linux/mali_osk_timers.c b/drivers/gpu/arm/mali400/mali/linux/mali_osk_timers.c new file mode 100755 -index 000000000000..d01c1148272a +index 000000000..d01c11482 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/linux/mali_osk_timers.c @@ -0,0 +1,76 @@ @@ -378128,7 +378128,7 @@ index 000000000000..d01c1148272a +} diff --git a/drivers/gpu/arm/mali400/mali/linux/mali_osk_wait_queue.c b/drivers/gpu/arm/mali400/mali/linux/mali_osk_wait_queue.c new file mode 100755 -index 000000000000..fa12abd3f5dc +index 000000000..fa12abd3f --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/linux/mali_osk_wait_queue.c @@ -0,0 +1,78 @@ @@ -378212,7 +378212,7 @@ index 000000000000..fa12abd3f5dc +} diff --git a/drivers/gpu/arm/mali400/mali/linux/mali_osk_wq.c b/drivers/gpu/arm/mali400/mali/linux/mali_osk_wq.c new file mode 100755 -index 000000000000..d5e258a83a29 +index 000000000..d5e258a83 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/linux/mali_osk_wq.c @@ -0,0 +1,240 @@ @@ -378458,7 +378458,7 @@ index 000000000000..d5e258a83a29 +} diff --git a/drivers/gpu/arm/mali400/mali/linux/mali_pmu_power_up_down.c b/drivers/gpu/arm/mali400/mali/linux/mali_pmu_power_up_down.c new file mode 100755 -index 000000000000..931d7f07a1d2 +index 000000000..931d7f07a --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/linux/mali_pmu_power_up_down.c @@ -0,0 +1,23 @@ @@ -378487,7 +378487,7 @@ index 000000000000..931d7f07a1d2 +EXPORT_SYMBOL(mali_perf_set_num_pp_cores); diff --git a/drivers/gpu/arm/mali400/mali/linux/mali_profiling_events.h b/drivers/gpu/arm/mali400/mali/linux/mali_profiling_events.h new file mode 100755 -index 000000000000..4661cac42b3f +index 000000000..4661cac42 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/linux/mali_profiling_events.h @@ -0,0 +1,17 @@ @@ -378510,7 +378510,7 @@ index 000000000000..4661cac42b3f +#endif /* __MALI_PROFILING_EVENTS_H__ */ diff --git a/drivers/gpu/arm/mali400/mali/linux/mali_profiling_gator_api.h b/drivers/gpu/arm/mali400/mali/linux/mali_profiling_gator_api.h new file mode 100755 -index 000000000000..6fdaa427c4cf +index 000000000..6fdaa427c --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/linux/mali_profiling_gator_api.h @@ -0,0 +1,17 @@ @@ -378533,7 +378533,7 @@ index 000000000000..6fdaa427c4cf +#endif /* __MALI_PROFILING_GATOR_API_H__ */ diff --git a/drivers/gpu/arm/mali400/mali/linux/mali_profiling_internal.c b/drivers/gpu/arm/mali400/mali/linux/mali_profiling_internal.c new file mode 100755 -index 000000000000..c3a526f0ad90 +index 000000000..c3a526f0a --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/linux/mali_profiling_internal.c @@ -0,0 +1,275 @@ @@ -378814,7 +378814,7 @@ index 000000000000..c3a526f0ad90 +} diff --git a/drivers/gpu/arm/mali400/mali/linux/mali_profiling_internal.h b/drivers/gpu/arm/mali400/mali/linux/mali_profiling_internal.h new file mode 100755 -index 000000000000..f17b4583307a +index 000000000..f17b45833 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/linux/mali_profiling_internal.h @@ -0,0 +1,35 @@ @@ -378855,7 +378855,7 @@ index 000000000000..f17b4583307a +#endif /* __MALI_PROFILING_INTERNAL_H__ */ diff --git a/drivers/gpu/arm/mali400/mali/linux/mali_sync.c b/drivers/gpu/arm/mali400/mali/linux/mali_sync.c new file mode 100755 -index 000000000000..0d98b518f1ac +index 000000000..0d98b518f --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/linux/mali_sync.c @@ -0,0 +1,665 @@ @@ -379526,7 +379526,7 @@ index 000000000000..0d98b518f1ac + diff --git a/drivers/gpu/arm/mali400/mali/linux/mali_sync.h b/drivers/gpu/arm/mali400/mali/linux/mali_sync.h new file mode 100755 -index 000000000000..91be8b9cf314 +index 000000000..91be8b9cf --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/linux/mali_sync.h @@ -0,0 +1,169 @@ @@ -379701,7 +379701,7 @@ index 000000000000..91be8b9cf314 +#endif /* _MALI_SYNC_H_ */ diff --git a/drivers/gpu/arm/mali400/mali/linux/mali_uk_types.h b/drivers/gpu/arm/mali400/mali/linux/mali_uk_types.h new file mode 100755 -index 000000000000..68b27b8be067 +index 000000000..68b27b8be --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/linux/mali_uk_types.h @@ -0,0 +1,17 @@ @@ -379724,7 +379724,7 @@ index 000000000000..68b27b8be067 +#endif /* __MALI_UK_TYPES_H__ */ diff --git a/drivers/gpu/arm/mali400/mali/linux/mali_ukk_core.c b/drivers/gpu/arm/mali400/mali/linux/mali_ukk_core.c new file mode 100755 -index 000000000000..0bd1cddb10c6 +index 000000000..0bd1cddb1 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/linux/mali_ukk_core.c @@ -0,0 +1,171 @@ @@ -379901,7 +379901,7 @@ index 000000000000..0bd1cddb10c6 +} diff --git a/drivers/gpu/arm/mali400/mali/linux/mali_ukk_gp.c b/drivers/gpu/arm/mali400/mali/linux/mali_ukk_gp.c new file mode 100755 -index 000000000000..68fcd971938a +index 000000000..68fcd9719 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/linux/mali_ukk_gp.c @@ -0,0 +1,91 @@ @@ -379998,7 +379998,7 @@ index 000000000000..68fcd971938a +} diff --git a/drivers/gpu/arm/mali400/mali/linux/mali_ukk_mem.c b/drivers/gpu/arm/mali400/mali/linux/mali_ukk_mem.c new file mode 100755 -index 000000000000..baea4c688db9 +index 000000000..baea4c688 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/linux/mali_ukk_mem.c @@ -0,0 +1,333 @@ @@ -380337,7 +380337,7 @@ index 000000000000..baea4c688db9 + diff --git a/drivers/gpu/arm/mali400/mali/linux/mali_ukk_pp.c b/drivers/gpu/arm/mali400/mali/linux/mali_ukk_pp.c new file mode 100755 -index 000000000000..a9b0958c06aa +index 000000000..a9b0958c0 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/linux/mali_ukk_pp.c @@ -0,0 +1,105 @@ @@ -380448,7 +380448,7 @@ index 000000000000..a9b0958c06aa +} diff --git a/drivers/gpu/arm/mali400/mali/linux/mali_ukk_profiling.c b/drivers/gpu/arm/mali400/mali/linux/mali_ukk_profiling.c new file mode 100755 -index 000000000000..8b49ebc50b95 +index 000000000..8b49ebc50 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/linux/mali_ukk_profiling.c @@ -0,0 +1,183 @@ @@ -380637,7 +380637,7 @@ index 000000000000..8b49ebc50b95 +} diff --git a/drivers/gpu/arm/mali400/mali/linux/mali_ukk_soft_job.c b/drivers/gpu/arm/mali400/mali/linux/mali_ukk_soft_job.c new file mode 100755 -index 000000000000..1dd4a7c6fb1e +index 000000000..1dd4a7c6f --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/linux/mali_ukk_soft_job.c @@ -0,0 +1,90 @@ @@ -380733,7 +380733,7 @@ index 000000000000..1dd4a7c6fb1e +} diff --git a/drivers/gpu/arm/mali400/mali/linux/mali_ukk_timeline.c b/drivers/gpu/arm/mali400/mali/linux/mali_ukk_timeline.c new file mode 100755 -index 000000000000..ff0c909393a4 +index 000000000..ff0c90939 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/linux/mali_ukk_timeline.c @@ -0,0 +1,88 @@ @@ -380827,7 +380827,7 @@ index 000000000000..ff0c909393a4 +} diff --git a/drivers/gpu/arm/mali400/mali/linux/mali_ukk_vsync.c b/drivers/gpu/arm/mali400/mali/linux/mali_ukk_vsync.c new file mode 100755 -index 000000000000..52519d1f96e0 +index 000000000..52519d1f9 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/linux/mali_ukk_vsync.c @@ -0,0 +1,39 @@ @@ -380872,7 +380872,7 @@ index 000000000000..52519d1f96e0 + diff --git a/drivers/gpu/arm/mali400/mali/linux/mali_ukk_wrappers.h b/drivers/gpu/arm/mali400/mali/linux/mali_ukk_wrappers.h new file mode 100755 -index 000000000000..1add628fe323 +index 000000000..1add628fe --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/linux/mali_ukk_wrappers.h @@ -0,0 +1,82 @@ @@ -380960,7 +380960,7 @@ index 000000000000..1add628fe323 +#endif /* __MALI_UKK_WRAPPERS_H__ */ diff --git a/drivers/gpu/arm/mali400/mali/platform/arm/arm.c b/drivers/gpu/arm/mali400/mali/platform/arm/arm.c new file mode 100755 -index 000000000000..fc7017bbfe08 +index 000000000..fc7017bbf --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/platform/arm/arm.c @@ -0,0 +1,629 @@ @@ -381595,7 +381595,7 @@ index 000000000000..fc7017bbfe08 +} diff --git a/drivers/gpu/arm/mali400/mali/platform/arm/arm_core_scaling.c b/drivers/gpu/arm/mali400/mali/platform/arm/arm_core_scaling.c new file mode 100755 -index 000000000000..7a2fc8107b4f +index 000000000..7a2fc8107 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/platform/arm/arm_core_scaling.c @@ -0,0 +1,122 @@ @@ -381723,7 +381723,7 @@ index 000000000000..7a2fc8107b4f +} diff --git a/drivers/gpu/arm/mali400/mali/platform/arm/arm_core_scaling.h b/drivers/gpu/arm/mali400/mali/platform/arm/arm_core_scaling.h new file mode 100755 -index 000000000000..8e0101830749 +index 000000000..8e0101830 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/platform/arm/arm_core_scaling.h @@ -0,0 +1,44 @@ @@ -381773,7 +381773,7 @@ index 000000000000..8e0101830749 +#endif /* __ARM_CORE_SCALING_H__ */ diff --git a/drivers/gpu/arm/mali400/mali/platform/arm/juno_opp.c b/drivers/gpu/arm/mali400/mali/platform/arm/juno_opp.c new file mode 100755 -index 000000000000..e4e7ab8b2c2e +index 000000000..e4e7ab8b2 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/platform/arm/juno_opp.c @@ -0,0 +1,127 @@ @@ -381906,7 +381906,7 @@ index 000000000000..e4e7ab8b2c2e +#endif diff --git a/drivers/gpu/arm/mali400/mali/platform/rk/custom_log.h b/drivers/gpu/arm/mali400/mali/platform/rk/custom_log.h new file mode 100755 -index 000000000000..fe5e1224149e +index 000000000..fe5e12241 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/platform/rk/custom_log.h @@ -0,0 +1,209 @@ @@ -382121,7 +382121,7 @@ index 000000000000..fe5e1224149e +#endif /* __CUSTOM_LOG_H__ */ diff --git a/drivers/gpu/arm/mali400/mali/platform/rk/rk.c b/drivers/gpu/arm/mali400/mali/platform/rk/rk.c new file mode 100755 -index 000000000000..9a012fdf8d35 +index 000000000..9a012fdf8 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/platform/rk/rk.c @@ -0,0 +1,676 @@ @@ -382803,7 +382803,7 @@ index 000000000000..9a012fdf8d35 +} diff --git a/drivers/gpu/arm/mali400/mali/platform/rk/rk_ext.h b/drivers/gpu/arm/mali400/mali/platform/rk/rk_ext.h new file mode 100755 -index 000000000000..bd939350c425 +index 000000000..bd939350c --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/platform/rk/rk_ext.h @@ -0,0 +1,37 @@ @@ -382846,7 +382846,7 @@ index 000000000000..bd939350c425 + diff --git a/drivers/gpu/arm/mali400/mali/readme.txt b/drivers/gpu/arm/mali400/mali/readme.txt new file mode 100755 -index 000000000000..6785ac933b38 +index 000000000..6785ac933 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/readme.txt @@ -0,0 +1,28 @@ @@ -382880,7 +382880,7 @@ index 000000000000..6785ac933b38 +resources. diff --git a/drivers/gpu/arm/mali400/mali/regs/mali_200_regs.h b/drivers/gpu/arm/mali400/mali/regs/mali_200_regs.h new file mode 100755 -index 000000000000..0345fb169a95 +index 000000000..0345fb169 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/regs/mali_200_regs.h @@ -0,0 +1,131 @@ @@ -383017,7 +383017,7 @@ index 000000000000..0345fb169a95 +#endif /* _MALI200_REGS_H_ */ diff --git a/drivers/gpu/arm/mali400/mali/regs/mali_gp_regs.h b/drivers/gpu/arm/mali400/mali/regs/mali_gp_regs.h new file mode 100755 -index 000000000000..7f8b58fd6c49 +index 000000000..7f8b58fd6 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/regs/mali_gp_regs.h @@ -0,0 +1,172 @@ @@ -383195,7 +383195,7 @@ index 000000000000..7f8b58fd6c49 +#endif diff --git a/drivers/gpu/arm/mali400/mali/timestamp-arm11-cc/mali_timestamp.c b/drivers/gpu/arm/mali400/mali/timestamp-arm11-cc/mali_timestamp.c new file mode 100755 -index 000000000000..7df934c12122 +index 000000000..7df934c12 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/timestamp-arm11-cc/mali_timestamp.c @@ -0,0 +1,13 @@ @@ -383214,7 +383214,7 @@ index 000000000000..7df934c12122 +/* This file is intentionally left empty, as all functions are inlined in mali_profiling_sampler.h */ diff --git a/drivers/gpu/arm/mali400/mali/timestamp-arm11-cc/mali_timestamp.h b/drivers/gpu/arm/mali400/mali/timestamp-arm11-cc/mali_timestamp.h new file mode 100755 -index 000000000000..f52097c1901b +index 000000000..f52097c19 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/timestamp-arm11-cc/mali_timestamp.h @@ -0,0 +1,48 @@ @@ -383268,7 +383268,7 @@ index 000000000000..f52097c1901b +#endif /* __MALI_TIMESTAMP_H__ */ diff --git a/drivers/gpu/arm/mali400/mali/timestamp-default/mali_timestamp.c b/drivers/gpu/arm/mali400/mali/timestamp-default/mali_timestamp.c new file mode 100755 -index 000000000000..7df934c12122 +index 000000000..7df934c12 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/timestamp-default/mali_timestamp.c @@ -0,0 +1,13 @@ @@ -383287,7 +383287,7 @@ index 000000000000..7df934c12122 +/* This file is intentionally left empty, as all functions are inlined in mali_profiling_sampler.h */ diff --git a/drivers/gpu/arm/mali400/mali/timestamp-default/mali_timestamp.h b/drivers/gpu/arm/mali400/mali/timestamp-default/mali_timestamp.h new file mode 100755 -index 000000000000..709a16a82f31 +index 000000000..709a16a82 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/timestamp-default/mali_timestamp.h @@ -0,0 +1,26 @@ @@ -383319,7 +383319,7 @@ index 000000000000..709a16a82f31 +#endif /* __MALI_TIMESTAMP_H__ */ diff --git a/drivers/gpu/arm/mali400/rk_ver_info.txt b/drivers/gpu/arm/mali400/rk_ver_info.txt new file mode 100755 -index 000000000000..2a6cbbbb5a97 +index 000000000..2a6cbbbb5 --- /dev/null +++ b/drivers/gpu/arm/mali400/rk_ver_info.txt @@ -0,0 +1,11 @@ @@ -383336,7 +383336,7 @@ index 000000000000..2a6cbbbb5a97 + diff --git a/drivers/gpu/arm/mali400/ump/Kbuild b/drivers/gpu/arm/mali400/ump/Kbuild new file mode 100755 -index 000000000000..a3067ba72459 +index 000000000..a3067ba72 --- /dev/null +++ b/drivers/gpu/arm/mali400/ump/Kbuild @@ -0,0 +1,92 @@ @@ -383434,7 +383434,7 @@ index 000000000000..a3067ba72459 + diff --git a/drivers/gpu/arm/mali400/ump/Kconfig b/drivers/gpu/arm/mali400/ump/Kconfig new file mode 100755 -index 000000000000..ec3509057732 +index 000000000..ec3509057 --- /dev/null +++ b/drivers/gpu/arm/mali400/ump/Kconfig @@ -0,0 +1,17 @@ @@ -383457,7 +383457,7 @@ index 000000000000..ec3509057732 + diff --git a/drivers/gpu/arm/mali400/ump/Makefile b/drivers/gpu/arm/mali400/ump/Makefile new file mode 100755 -index 000000000000..88b02a22fce5 +index 000000000..88b02a22f --- /dev/null +++ b/drivers/gpu/arm/mali400/ump/Makefile @@ -0,0 +1,67 @@ @@ -383530,7 +383530,7 @@ index 000000000000..88b02a22fce5 + $(MAKE) -C $(KDIR) M=$(CURDIR)/../mali clean diff --git a/drivers/gpu/arm/mali400/ump/Makefile.common b/drivers/gpu/arm/mali400/ump/Makefile.common new file mode 100755 -index 000000000000..ad2c18da98a0 +index 000000000..ad2c18da9 --- /dev/null +++ b/drivers/gpu/arm/mali400/ump/Makefile.common @@ -0,0 +1,20 @@ @@ -383556,7 +383556,7 @@ index 000000000000..ad2c18da98a0 +EXTRA_CFLAGS += -DSVN_REV_STRING=\"$(SVN_REV)\" diff --git a/drivers/gpu/arm/mali400/ump/arch-default/config.h b/drivers/gpu/arm/mali400/ump/arch-default/config.h new file mode 100755 -index 000000000000..d4aef9dd09c7 +index 000000000..d4aef9dd0 --- /dev/null +++ b/drivers/gpu/arm/mali400/ump/arch-default/config.h @@ -0,0 +1,24 @@ @@ -383586,7 +383586,7 @@ index 000000000000..d4aef9dd09c7 +#endif /* __ARCH_CONFIG_H__ */ diff --git a/drivers/gpu/arm/mali400/ump/arch-pb-virtex5/config.h b/drivers/gpu/arm/mali400/ump/arch-pb-virtex5/config.h new file mode 100755 -index 000000000000..182e90c1d64f +index 000000000..182e90c1d --- /dev/null +++ b/drivers/gpu/arm/mali400/ump/arch-pb-virtex5/config.h @@ -0,0 +1,18 @@ @@ -383610,7 +383610,7 @@ index 000000000000..182e90c1d64f +#endif /* __ARCH_CONFIG_H__ */ diff --git a/drivers/gpu/arm/mali400/ump/arch/config.h b/drivers/gpu/arm/mali400/ump/arch/config.h new file mode 100755 -index 000000000000..d4aef9dd09c7 +index 000000000..d4aef9dd0 --- /dev/null +++ b/drivers/gpu/arm/mali400/ump/arch/config.h @@ -0,0 +1,24 @@ @@ -383640,7 +383640,7 @@ index 000000000000..d4aef9dd09c7 +#endif /* __ARCH_CONFIG_H__ */ diff --git a/drivers/gpu/arm/mali400/ump/common/ump_kernel_api.c b/drivers/gpu/arm/mali400/ump/common/ump_kernel_api.c new file mode 100755 -index 000000000000..36adb2f5383e +index 000000000..36adb2f53 --- /dev/null +++ b/drivers/gpu/arm/mali400/ump/common/ump_kernel_api.c @@ -0,0 +1,455 @@ @@ -384101,7 +384101,7 @@ index 000000000000..36adb2f5383e +} diff --git a/drivers/gpu/arm/mali400/ump/common/ump_kernel_common.c b/drivers/gpu/arm/mali400/ump/common/ump_kernel_common.c new file mode 100755 -index 000000000000..73aa9e4c49f9 +index 000000000..73aa9e4c4 --- /dev/null +++ b/drivers/gpu/arm/mali400/ump/common/ump_kernel_common.c @@ -0,0 +1,358 @@ @@ -384465,7 +384465,7 @@ index 000000000000..73aa9e4c49f9 +} diff --git a/drivers/gpu/arm/mali400/ump/common/ump_kernel_common.h b/drivers/gpu/arm/mali400/ump/common/ump_kernel_common.h new file mode 100755 -index 000000000000..aa65f1cb6c88 +index 000000000..aa65f1cb6 --- /dev/null +++ b/drivers/gpu/arm/mali400/ump/common/ump_kernel_common.h @@ -0,0 +1,125 @@ @@ -384596,7 +384596,7 @@ index 000000000000..aa65f1cb6c88 +#endif /* __UMP_KERNEL_COMMON_H__ */ diff --git a/drivers/gpu/arm/mali400/ump/common/ump_kernel_descriptor_mapping.c b/drivers/gpu/arm/mali400/ump/common/ump_kernel_descriptor_mapping.c new file mode 100755 -index 000000000000..e4642f0394c2 +index 000000000..e4642f039 --- /dev/null +++ b/drivers/gpu/arm/mali400/ump/common/ump_kernel_descriptor_mapping.c @@ -0,0 +1,155 @@ @@ -384757,7 +384757,7 @@ index 000000000000..e4642f0394c2 + diff --git a/drivers/gpu/arm/mali400/ump/common/ump_kernel_descriptor_mapping.h b/drivers/gpu/arm/mali400/ump/common/ump_kernel_descriptor_mapping.h new file mode 100755 -index 000000000000..a888ba833fbb +index 000000000..a888ba833 --- /dev/null +++ b/drivers/gpu/arm/mali400/ump/common/ump_kernel_descriptor_mapping.h @@ -0,0 +1,89 @@ @@ -384852,7 +384852,7 @@ index 000000000000..a888ba833fbb +#endif /* __UMP_KERNEL_DESCRIPTOR_MAPPING_H__ */ diff --git a/drivers/gpu/arm/mali400/ump/common/ump_kernel_memory_backend.h b/drivers/gpu/arm/mali400/ump/common/ump_kernel_memory_backend.h new file mode 100755 -index 000000000000..2b69f68e87ac +index 000000000..2b69f68e8 --- /dev/null +++ b/drivers/gpu/arm/mali400/ump/common/ump_kernel_memory_backend.h @@ -0,0 +1,48 @@ @@ -384906,7 +384906,7 @@ index 000000000000..2b69f68e87ac + diff --git a/drivers/gpu/arm/mali400/ump/common/ump_kernel_ref_drv.c b/drivers/gpu/arm/mali400/ump/common/ump_kernel_ref_drv.c new file mode 100755 -index 000000000000..0b6434bee00f +index 000000000..0b6434bee --- /dev/null +++ b/drivers/gpu/arm/mali400/ump/common/ump_kernel_ref_drv.c @@ -0,0 +1,181 @@ @@ -385093,7 +385093,7 @@ index 000000000000..0b6434bee00f +} diff --git a/drivers/gpu/arm/mali400/ump/common/ump_kernel_types.h b/drivers/gpu/arm/mali400/ump/common/ump_kernel_types.h new file mode 100755 -index 000000000000..32f32ccbe9fc +index 000000000..32f32ccbe --- /dev/null +++ b/drivers/gpu/arm/mali400/ump/common/ump_kernel_types.h @@ -0,0 +1,58 @@ @@ -385157,7 +385157,7 @@ index 000000000000..32f32ccbe9fc +#endif /* __UMP_KERNEL_TYPES_H__ */ diff --git a/drivers/gpu/arm/mali400/ump/common/ump_osk.h b/drivers/gpu/arm/mali400/ump/common/ump_osk.h new file mode 100755 -index 000000000000..9adc4d3df3f5 +index 000000000..9adc4d3df --- /dev/null +++ b/drivers/gpu/arm/mali400/ump/common/ump_osk.h @@ -0,0 +1,48 @@ @@ -385211,7 +385211,7 @@ index 000000000000..9adc4d3df3f5 +#endif diff --git a/drivers/gpu/arm/mali400/ump/common/ump_uk_types.h b/drivers/gpu/arm/mali400/ump/common/ump_uk_types.h new file mode 100755 -index 000000000000..db842cdcbeff +index 000000000..db842cdcb --- /dev/null +++ b/drivers/gpu/arm/mali400/ump/common/ump_uk_types.h @@ -0,0 +1,202 @@ @@ -385419,7 +385419,7 @@ index 000000000000..db842cdcbeff +#endif /* __UMP_UK_TYPES_H__ */ diff --git a/drivers/gpu/arm/mali400/ump/common/ump_ukk.h b/drivers/gpu/arm/mali400/ump/common/ump_ukk.h new file mode 100755 -index 000000000000..f2906768c37f +index 000000000..f2906768c --- /dev/null +++ b/drivers/gpu/arm/mali400/ump/common/ump_ukk.h @@ -0,0 +1,60 @@ @@ -385485,7 +385485,7 @@ index 000000000000..f2906768c37f +#endif /* __UMP_UKK_H__ */ diff --git a/drivers/gpu/arm/mali400/ump/linux/license/gpl/ump_kernel_license.h b/drivers/gpu/arm/mali400/ump/linux/license/gpl/ump_kernel_license.h new file mode 100755 -index 000000000000..d0174055aa28 +index 000000000..d0174055a --- /dev/null +++ b/drivers/gpu/arm/mali400/ump/linux/license/gpl/ump_kernel_license.h @@ -0,0 +1,30 @@ @@ -385521,7 +385521,7 @@ index 000000000000..d0174055aa28 +#endif /* __UMP_KERNEL_LICENSE_H__ */ diff --git a/drivers/gpu/arm/mali400/ump/linux/ump_ioctl.h b/drivers/gpu/arm/mali400/ump/linux/ump_ioctl.h new file mode 100755 -index 000000000000..bfb4e8d64885 +index 000000000..bfb4e8d64 --- /dev/null +++ b/drivers/gpu/arm/mali400/ump/linux/ump_ioctl.h @@ -0,0 +1,54 @@ @@ -385581,7 +385581,7 @@ index 000000000000..bfb4e8d64885 +#endif /* __UMP_IOCTL_H__ */ diff --git a/drivers/gpu/arm/mali400/ump/linux/ump_kernel_linux.c b/drivers/gpu/arm/mali400/ump/linux/ump_kernel_linux.c new file mode 100755 -index 000000000000..71b30830c308 +index 000000000..71b30830c --- /dev/null +++ b/drivers/gpu/arm/mali400/ump/linux/ump_kernel_linux.c @@ -0,0 +1,449 @@ @@ -386036,7 +386036,7 @@ index 000000000000..71b30830c308 +MODULE_VERSION(SVN_REV_STRING); diff --git a/drivers/gpu/arm/mali400/ump/linux/ump_kernel_linux.h b/drivers/gpu/arm/mali400/ump/linux/ump_kernel_linux.h new file mode 100755 -index 000000000000..8d32ddbb5449 +index 000000000..8d32ddbb5 --- /dev/null +++ b/drivers/gpu/arm/mali400/ump/linux/ump_kernel_linux.h @@ -0,0 +1,18 @@ @@ -386060,7 +386060,7 @@ index 000000000000..8d32ddbb5449 +#endif /* __UMP_KERNEL_H__ */ diff --git a/drivers/gpu/arm/mali400/ump/linux/ump_kernel_memory_backend_dedicated.c b/drivers/gpu/arm/mali400/ump/linux/ump_kernel_memory_backend_dedicated.c new file mode 100755 -index 000000000000..5a1257a25b82 +index 000000000..5a1257a25 --- /dev/null +++ b/drivers/gpu/arm/mali400/ump/linux/ump_kernel_memory_backend_dedicated.c @@ -0,0 +1,271 @@ @@ -386337,7 +386337,7 @@ index 000000000000..5a1257a25b82 +} diff --git a/drivers/gpu/arm/mali400/ump/linux/ump_kernel_memory_backend_dedicated.h b/drivers/gpu/arm/mali400/ump/linux/ump_kernel_memory_backend_dedicated.h new file mode 100755 -index 000000000000..949fd245c6af +index 000000000..949fd245c --- /dev/null +++ b/drivers/gpu/arm/mali400/ump/linux/ump_kernel_memory_backend_dedicated.h @@ -0,0 +1,23 @@ @@ -386366,7 +386366,7 @@ index 000000000000..949fd245c6af + diff --git a/drivers/gpu/arm/mali400/ump/linux/ump_kernel_memory_backend_os.c b/drivers/gpu/arm/mali400/ump/linux/ump_kernel_memory_backend_os.c new file mode 100755 -index 000000000000..7cd8d5d381cf +index 000000000..7cd8d5d38 --- /dev/null +++ b/drivers/gpu/arm/mali400/ump/linux/ump_kernel_memory_backend_os.c @@ -0,0 +1,235 @@ @@ -386607,7 +386607,7 @@ index 000000000000..7cd8d5d381cf +} diff --git a/drivers/gpu/arm/mali400/ump/linux/ump_kernel_memory_backend_os.h b/drivers/gpu/arm/mali400/ump/linux/ump_kernel_memory_backend_os.h new file mode 100755 -index 000000000000..d21d503512ec +index 000000000..d21d50351 --- /dev/null +++ b/drivers/gpu/arm/mali400/ump/linux/ump_kernel_memory_backend_os.h @@ -0,0 +1,23 @@ @@ -386636,7 +386636,7 @@ index 000000000000..d21d503512ec + diff --git a/drivers/gpu/arm/mali400/ump/linux/ump_kernel_random_mapping.c b/drivers/gpu/arm/mali400/ump/linux/ump_kernel_random_mapping.c new file mode 100755 -index 000000000000..6be0f86440de +index 000000000..6be0f8644 --- /dev/null +++ b/drivers/gpu/arm/mali400/ump/linux/ump_kernel_random_mapping.c @@ -0,0 +1,222 @@ @@ -386864,7 +386864,7 @@ index 000000000000..6be0f86440de +} diff --git a/drivers/gpu/arm/mali400/ump/linux/ump_kernel_random_mapping.h b/drivers/gpu/arm/mali400/ump/linux/ump_kernel_random_mapping.h new file mode 100755 -index 000000000000..2cea6cedc380 +index 000000000..2cea6cedc --- /dev/null +++ b/drivers/gpu/arm/mali400/ump/linux/ump_kernel_random_mapping.h @@ -0,0 +1,84 @@ @@ -386954,7 +386954,7 @@ index 000000000000..2cea6cedc380 +#endif /* __UMP_KERNEL_RANDOM_MAPPING_H__ */ diff --git a/drivers/gpu/arm/mali400/ump/linux/ump_memory_backend.c b/drivers/gpu/arm/mali400/ump/linux/ump_memory_backend.c new file mode 100755 -index 000000000000..e41931e1ea75 +index 000000000..e41931e1e --- /dev/null +++ b/drivers/gpu/arm/mali400/ump/linux/ump_memory_backend.c @@ -0,0 +1,65 @@ @@ -387025,7 +387025,7 @@ index 000000000000..e41931e1ea75 +} diff --git a/drivers/gpu/arm/mali400/ump/linux/ump_osk_atomics.c b/drivers/gpu/arm/mali400/ump/linux/ump_osk_atomics.c new file mode 100755 -index 000000000000..2b634ba79c6e +index 000000000..2b634ba79 --- /dev/null +++ b/drivers/gpu/arm/mali400/ump/linux/ump_osk_atomics.c @@ -0,0 +1,27 @@ @@ -387058,7 +387058,7 @@ index 000000000000..2b634ba79c6e +} diff --git a/drivers/gpu/arm/mali400/ump/linux/ump_osk_low_level_mem.c b/drivers/gpu/arm/mali400/ump/linux/ump_osk_low_level_mem.c new file mode 100755 -index 000000000000..e08bf25257b0 +index 000000000..e08bf2525 --- /dev/null +++ b/drivers/gpu/arm/mali400/ump/linux/ump_osk_low_level_mem.c @@ -0,0 +1,314 @@ @@ -387378,7 +387378,7 @@ index 000000000000..e08bf25257b0 +} diff --git a/drivers/gpu/arm/mali400/ump/linux/ump_osk_misc.c b/drivers/gpu/arm/mali400/ump/linux/ump_osk_misc.c new file mode 100755 -index 000000000000..58c9f1bf27b8 +index 000000000..58c9f1bf2 --- /dev/null +++ b/drivers/gpu/arm/mali400/ump/linux/ump_osk_misc.c @@ -0,0 +1,36 @@ @@ -387420,7 +387420,7 @@ index 000000000000..58c9f1bf27b8 +} diff --git a/drivers/gpu/arm/mali400/ump/linux/ump_ukk_ref_wrappers.c b/drivers/gpu/arm/mali400/ump/linux/ump_ukk_ref_wrappers.c new file mode 100755 -index 000000000000..56a787ff64dc +index 000000000..56a787ff6 --- /dev/null +++ b/drivers/gpu/arm/mali400/ump/linux/ump_ukk_ref_wrappers.c @@ -0,0 +1,230 @@ @@ -387656,7 +387656,7 @@ index 000000000000..56a787ff64dc +#endif diff --git a/drivers/gpu/arm/mali400/ump/linux/ump_ukk_ref_wrappers.h b/drivers/gpu/arm/mali400/ump/linux/ump_ukk_ref_wrappers.h new file mode 100755 -index 000000000000..61a7095a6920 +index 000000000..61a7095a6 --- /dev/null +++ b/drivers/gpu/arm/mali400/ump/linux/ump_ukk_ref_wrappers.h @@ -0,0 +1,36 @@ @@ -387698,7 +387698,7 @@ index 000000000000..61a7095a6920 +#endif /* __UMP_UKK_REF_WRAPPERS_H__ */ diff --git a/drivers/gpu/arm/mali400/ump/linux/ump_ukk_wrappers.c b/drivers/gpu/arm/mali400/ump/linux/ump_ukk_wrappers.c new file mode 100755 -index 000000000000..4d6b69608fd4 +index 000000000..4d6b69608 --- /dev/null +++ b/drivers/gpu/arm/mali400/ump/linux/ump_ukk_wrappers.c @@ -0,0 +1,280 @@ @@ -387984,7 +387984,7 @@ index 000000000000..4d6b69608fd4 +} diff --git a/drivers/gpu/arm/mali400/ump/linux/ump_ukk_wrappers.h b/drivers/gpu/arm/mali400/ump/linux/ump_ukk_wrappers.h new file mode 100755 -index 000000000000..5f8fc683c8f5 +index 000000000..5f8fc683c --- /dev/null +++ b/drivers/gpu/arm/mali400/ump/linux/ump_ukk_wrappers.h @@ -0,0 +1,46 @@ @@ -388036,7 +388036,7 @@ index 000000000000..5f8fc683c8f5 +#endif /* __UMP_UKK_WRAPPERS_H__ */ diff --git a/drivers/gpu/arm/mali400/ump/readme.txt b/drivers/gpu/arm/mali400/ump/readme.txt new file mode 100755 -index 000000000000..c238cf0f2b1f +index 000000000..c238cf0f2 --- /dev/null +++ b/drivers/gpu/arm/mali400/ump/readme.txt @@ -0,0 +1,28 @@ @@ -388070,7 +388070,7 @@ index 000000000000..c238cf0f2b1f +kernel itself. diff --git a/drivers/gpu/arm/mali400/umplock/Makefile b/drivers/gpu/arm/mali400/umplock/Makefile new file mode 100755 -index 000000000000..e5549a33f91d +index 000000000..e5549a33f --- /dev/null +++ b/drivers/gpu/arm/mali400/umplock/Makefile @@ -0,0 +1,69 @@ @@ -388145,7 +388145,7 @@ index 000000000000..e5549a33f91d +endif diff --git a/drivers/gpu/arm/mali400/umplock/umplock_driver.c b/drivers/gpu/arm/mali400/umplock/umplock_driver.c new file mode 100755 -index 000000000000..173f4d9bb5c7 +index 000000000..173f4d9bb --- /dev/null +++ b/drivers/gpu/arm/mali400/umplock/umplock_driver.c @@ -0,0 +1,618 @@ @@ -388769,7 +388769,7 @@ index 000000000000..173f4d9bb5c7 +MODULE_DESCRIPTION("ARM UMP locker"); diff --git a/drivers/gpu/arm/mali400/umplock/umplock_ioctl.h b/drivers/gpu/arm/mali400/umplock/umplock_ioctl.h new file mode 100755 -index 000000000000..8afdaad7000f +index 000000000..8afdaad70 --- /dev/null +++ b/drivers/gpu/arm/mali400/umplock/umplock_ioctl.h @@ -0,0 +1,66 @@ @@ -388841,7 +388841,7 @@ index 000000000000..8afdaad7000f + diff --git a/drivers/gpu/arm/midgard/Kbuild b/drivers/gpu/arm/midgard/Kbuild new file mode 100755 -index 000000000000..b2c2bbcda668 +index 000000000..b2c2bbcda --- /dev/null +++ b/drivers/gpu/arm/midgard/Kbuild @@ -0,0 +1,221 @@ @@ -389068,7 +389068,7 @@ index 000000000000..b2c2bbcda668 +obj-$(CONFIG_MALI_KUTF) += tests/ diff --git a/drivers/gpu/arm/midgard/Kconfig b/drivers/gpu/arm/midgard/Kconfig new file mode 100755 -index 000000000000..1b28bb73ad59 +index 000000000..1b28bb73a --- /dev/null +++ b/drivers/gpu/arm/midgard/Kconfig @@ -0,0 +1,248 @@ @@ -389322,7 +389322,7 @@ index 000000000000..1b28bb73ad59 +source "drivers/gpu/arm/midgard/tests/Kconfig" diff --git a/drivers/gpu/arm/midgard/Makefile b/drivers/gpu/arm/midgard/Makefile new file mode 100755 -index 000000000000..9aa242c4f8c4 +index 000000000..9aa242c4f --- /dev/null +++ b/drivers/gpu/arm/midgard/Makefile @@ -0,0 +1,42 @@ @@ -389370,7 +389370,7 @@ index 000000000000..9aa242c4f8c4 + $(MAKE) -C $(KDIR) M=$(CURDIR) clean diff --git a/drivers/gpu/arm/midgard/Makefile.kbase b/drivers/gpu/arm/midgard/Makefile.kbase new file mode 100755 -index 000000000000..2bef9c25eaeb +index 000000000..2bef9c25e --- /dev/null +++ b/drivers/gpu/arm/midgard/Makefile.kbase @@ -0,0 +1,17 @@ @@ -389393,7 +389393,7 @@ index 000000000000..2bef9c25eaeb + diff --git a/drivers/gpu/arm/midgard/backend/gpu/Kbuild b/drivers/gpu/arm/midgard/backend/gpu/Kbuild new file mode 100755 -index 000000000000..5f700e9b6b44 +index 000000000..5f700e9b6 --- /dev/null +++ b/drivers/gpu/arm/midgard/backend/gpu/Kbuild @@ -0,0 +1,60 @@ @@ -389459,7 +389459,7 @@ index 000000000000..5f700e9b6b44 +endif diff --git a/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_backend_config.h b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_backend_config.h new file mode 100755 -index 000000000000..c8ae87eb84a2 +index 000000000..c8ae87eb8 --- /dev/null +++ b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_backend_config.h @@ -0,0 +1,29 @@ @@ -389494,7 +389494,7 @@ index 000000000000..c8ae87eb84a2 + diff --git a/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_cache_policy_backend.c b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_cache_policy_backend.c new file mode 100755 -index 000000000000..fef9a2cb743e +index 000000000..fef9a2cb7 --- /dev/null +++ b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_cache_policy_backend.c @@ -0,0 +1,29 @@ @@ -389529,7 +389529,7 @@ index 000000000000..fef9a2cb743e + diff --git a/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_cache_policy_backend.h b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_cache_policy_backend.h new file mode 100755 -index 000000000000..fe9869109a82 +index 000000000..fe9869109 --- /dev/null +++ b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_cache_policy_backend.h @@ -0,0 +1,34 @@ @@ -389569,7 +389569,7 @@ index 000000000000..fe9869109a82 +#endif /* _KBASE_CACHE_POLICY_H_ */ diff --git a/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_debug_job_fault_backend.c b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_debug_job_fault_backend.c new file mode 100755 -index 000000000000..7851ea6466c7 +index 000000000..7851ea646 --- /dev/null +++ b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_debug_job_fault_backend.c @@ -0,0 +1,157 @@ @@ -389732,7 +389732,7 @@ index 000000000000..7851ea6466c7 +#endif diff --git a/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_devfreq.c b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_devfreq.c new file mode 100755 -index 000000000000..ab14bc2e2ae4 +index 000000000..ab14bc2e2 --- /dev/null +++ b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_devfreq.c @@ -0,0 +1,458 @@ @@ -390196,7 +390196,7 @@ index 000000000000..ab14bc2e2ae4 +} diff --git a/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_devfreq.h b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_devfreq.h new file mode 100755 -index 000000000000..c0bf8b15b3bc +index 000000000..c0bf8b15b --- /dev/null +++ b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_devfreq.h @@ -0,0 +1,24 @@ @@ -390226,7 +390226,7 @@ index 000000000000..c0bf8b15b3bc +#endif /* _BASE_DEVFREQ_H_ */ diff --git a/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_device_hw.c b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_device_hw.c new file mode 100755 -index 000000000000..dcdf15cdc3e8 +index 000000000..dcdf15cdc --- /dev/null +++ b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_device_hw.c @@ -0,0 +1,255 @@ @@ -390487,7 +390487,7 @@ index 000000000000..dcdf15cdc3e8 +} diff --git a/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_device_internal.h b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_device_internal.h new file mode 100755 -index 000000000000..5b20445932fb +index 000000000..5b2044593 --- /dev/null +++ b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_device_internal.h @@ -0,0 +1,67 @@ @@ -390560,7 +390560,7 @@ index 000000000000..5b20445932fb +#endif /* _KBASE_DEVICE_INTERNAL_H_ */ diff --git a/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_gpu.c b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_gpu.c new file mode 100755 -index 000000000000..d578fd78e825 +index 000000000..d578fd78e --- /dev/null +++ b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_gpu.c @@ -0,0 +1,123 @@ @@ -390689,7 +390689,7 @@ index 000000000000..d578fd78e825 + diff --git a/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_gpuprops_backend.c b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_gpuprops_backend.c new file mode 100755 -index 000000000000..b395325b556b +index 000000000..b395325b5 --- /dev/null +++ b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_gpuprops_backend.c @@ -0,0 +1,110 @@ @@ -390805,7 +390805,7 @@ index 000000000000..b395325b556b + diff --git a/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_instr_backend.c b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_instr_backend.c new file mode 100755 -index 000000000000..7ad309e8d7f4 +index 000000000..7ad309e8d --- /dev/null +++ b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_instr_backend.c @@ -0,0 +1,492 @@ @@ -391303,7 +391303,7 @@ index 000000000000..7ad309e8d7f4 + diff --git a/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_instr_defs.h b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_instr_defs.h new file mode 100755 -index 000000000000..4794672da8f0 +index 000000000..4794672da --- /dev/null +++ b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_instr_defs.h @@ -0,0 +1,58 @@ @@ -391367,7 +391367,7 @@ index 000000000000..4794672da8f0 + diff --git a/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_instr_internal.h b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_instr_internal.h new file mode 100755 -index 000000000000..e96aeae786e1 +index 000000000..e96aeae78 --- /dev/null +++ b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_instr_internal.h @@ -0,0 +1,45 @@ @@ -391418,7 +391418,7 @@ index 000000000000..e96aeae786e1 +#endif /* _KBASE_INSTR_INTERNAL_H_ */ diff --git a/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_irq_internal.h b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_irq_internal.h new file mode 100755 -index 000000000000..8781561e73d0 +index 000000000..8781561e7 --- /dev/null +++ b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_irq_internal.h @@ -0,0 +1,39 @@ @@ -391463,7 +391463,7 @@ index 000000000000..8781561e73d0 +#endif /* _KBASE_IRQ_INTERNAL_H_ */ diff --git a/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_irq_linux.c b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_irq_linux.c new file mode 100755 -index 000000000000..8416b80e8b77 +index 000000000..8416b80e8 --- /dev/null +++ b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_irq_linux.c @@ -0,0 +1,469 @@ @@ -391938,7 +391938,7 @@ index 000000000000..8416b80e8b77 +#endif /* !defined(CONFIG_MALI_NO_MALI) */ diff --git a/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_jm_as.c b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_jm_as.c new file mode 100755 -index 000000000000..92358f2bf298 +index 000000000..92358f2bf --- /dev/null +++ b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_jm_as.c @@ -0,0 +1,237 @@ @@ -392181,7 +392181,7 @@ index 000000000000..92358f2bf298 + diff --git a/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_jm_defs.h b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_jm_defs.h new file mode 100755 -index 000000000000..08a7400e66d5 +index 000000000..08a7400e6 --- /dev/null +++ b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_jm_defs.h @@ -0,0 +1,123 @@ @@ -392310,7 +392310,7 @@ index 000000000000..08a7400e66d5 +#endif /* _KBASE_HWACCESS_GPU_DEFS_H_ */ diff --git a/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_jm_hw.c b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_jm_hw.c new file mode 100755 -index 000000000000..a6fb097b94f9 +index 000000000..a6fb097b9 --- /dev/null +++ b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_jm_hw.c @@ -0,0 +1,1518 @@ @@ -393834,7 +393834,7 @@ index 000000000000..a6fb097b94f9 +#endif /* KBASE_GPU_RESET_EN */ diff --git a/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_jm_internal.h b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_jm_internal.h new file mode 100755 -index 000000000000..1f382b3c1af4 +index 000000000..1f382b3c1 --- /dev/null +++ b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_jm_internal.h @@ -0,0 +1,164 @@ @@ -394004,7 +394004,7 @@ index 000000000000..1f382b3c1af4 +#endif /* _KBASE_JM_HWACCESS_H_ */ diff --git a/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_jm_rb.c b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_jm_rb.c new file mode 100755 -index 000000000000..4b4541660ec4 +index 000000000..4b4541660 --- /dev/null +++ b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_jm_rb.c @@ -0,0 +1,1952 @@ @@ -395962,7 +395962,7 @@ index 000000000000..4b4541660ec4 + diff --git a/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_jm_rb.h b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_jm_rb.h new file mode 100755 -index 000000000000..1e0e05ad3ea4 +index 000000000..1e0e05ad3 --- /dev/null +++ b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_jm_rb.h @@ -0,0 +1,76 @@ @@ -396044,7 +396044,7 @@ index 000000000000..1e0e05ad3ea4 +#endif /* _KBASE_HWACCESS_GPU_H_ */ diff --git a/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_js_affinity.c b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_js_affinity.c new file mode 100755 -index 000000000000..54d8ddd80097 +index 000000000..54d8ddd80 --- /dev/null +++ b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_js_affinity.c @@ -0,0 +1,303 @@ @@ -396353,7 +396353,7 @@ index 000000000000..54d8ddd80097 +#endif /* KBASE_TRACE_ENABLE */ diff --git a/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_js_affinity.h b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_js_affinity.h new file mode 100755 -index 000000000000..35d9781ae092 +index 000000000..35d9781ae --- /dev/null +++ b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_js_affinity.h @@ -0,0 +1,129 @@ @@ -396488,7 +396488,7 @@ index 000000000000..35d9781ae092 +#endif /* _KBASE_JS_AFFINITY_H_ */ diff --git a/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_js_backend.c b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_js_backend.c new file mode 100755 -index 000000000000..a8c1af23a369 +index 000000000..a8c1af23a --- /dev/null +++ b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_js_backend.c @@ -0,0 +1,356 @@ @@ -396850,7 +396850,7 @@ index 000000000000..a8c1af23a369 + diff --git a/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_js_internal.h b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_js_internal.h new file mode 100755 -index 000000000000..3f53779c6747 +index 000000000..3f53779c6 --- /dev/null +++ b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_js_internal.h @@ -0,0 +1,69 @@ @@ -396925,7 +396925,7 @@ index 000000000000..3f53779c6747 +#endif /* _KBASE_JS_BACKEND_H_ */ diff --git a/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_mmu_hw_direct.c b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_mmu_hw_direct.c new file mode 100755 -index 000000000000..ba826184dd3f +index 000000000..ba826184d --- /dev/null +++ b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_mmu_hw_direct.c @@ -0,0 +1,407 @@ @@ -397338,7 +397338,7 @@ index 000000000000..ba826184dd3f +} diff --git a/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_mmu_hw_direct.h b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_mmu_hw_direct.h new file mode 100755 -index 000000000000..c02253c6acc3 +index 000000000..c02253c6a --- /dev/null +++ b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_mmu_hw_direct.h @@ -0,0 +1,42 @@ @@ -397386,7 +397386,7 @@ index 000000000000..c02253c6acc3 +#endif /* _MALI_KBASE_MMU_HW_DIRECT_H_ */ diff --git a/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_pm_always_on.c b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_pm_always_on.c new file mode 100755 -index 000000000000..0614348e935a +index 000000000..0614348e9 --- /dev/null +++ b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_pm_always_on.c @@ -0,0 +1,63 @@ @@ -397455,7 +397455,7 @@ index 000000000000..0614348e935a +KBASE_EXPORT_TEST_API(kbase_pm_always_on_policy_ops); diff --git a/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_pm_always_on.h b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_pm_always_on.h new file mode 100755 -index 000000000000..f9d244b01bc2 +index 000000000..f9d244b01 --- /dev/null +++ b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_pm_always_on.h @@ -0,0 +1,77 @@ @@ -397538,7 +397538,7 @@ index 000000000000..f9d244b01bc2 + diff --git a/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_pm_backend.c b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_pm_backend.c new file mode 100755 -index 000000000000..146fd48bab92 +index 000000000..146fd48ba --- /dev/null +++ b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_pm_backend.c @@ -0,0 +1,482 @@ @@ -398026,7 +398026,7 @@ index 000000000000..146fd48bab92 +} diff --git a/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_pm_ca.c b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_pm_ca.c new file mode 100755 -index 000000000000..85890f1e85f5 +index 000000000..85890f1e8 --- /dev/null +++ b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_pm_ca.c @@ -0,0 +1,182 @@ @@ -398214,7 +398214,7 @@ index 000000000000..85890f1e85f5 +} diff --git a/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_pm_ca.h b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_pm_ca.h new file mode 100755 -index 000000000000..ee9e751f2d79 +index 000000000..ee9e751f2 --- /dev/null +++ b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_pm_ca.h @@ -0,0 +1,92 @@ @@ -398312,7 +398312,7 @@ index 000000000000..ee9e751f2d79 +#endif /* _KBASE_PM_CA_H_ */ diff --git a/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_pm_ca_devfreq.c b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_pm_ca_devfreq.c new file mode 100755 -index 000000000000..66bf660cffb6 +index 000000000..66bf660cf --- /dev/null +++ b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_pm_ca_devfreq.c @@ -0,0 +1,129 @@ @@ -398447,7 +398447,7 @@ index 000000000000..66bf660cffb6 + diff --git a/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_pm_ca_devfreq.h b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_pm_ca_devfreq.h new file mode 100755 -index 000000000000..7ab3cd4d8460 +index 000000000..7ab3cd4d8 --- /dev/null +++ b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_pm_ca_devfreq.h @@ -0,0 +1,55 @@ @@ -398508,7 +398508,7 @@ index 000000000000..7ab3cd4d8460 + diff --git a/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_pm_ca_fixed.c b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_pm_ca_fixed.c new file mode 100755 -index 000000000000..864612d31f9b +index 000000000..864612d31 --- /dev/null +++ b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_pm_ca_fixed.c @@ -0,0 +1,65 @@ @@ -398579,7 +398579,7 @@ index 000000000000..864612d31f9b +KBASE_EXPORT_TEST_API(kbase_pm_ca_fixed_policy_ops); diff --git a/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_pm_ca_fixed.h b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_pm_ca_fixed.h new file mode 100755 -index 000000000000..a763155cb703 +index 000000000..a763155cb --- /dev/null +++ b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_pm_ca_fixed.h @@ -0,0 +1,40 @@ @@ -398625,7 +398625,7 @@ index 000000000000..a763155cb703 + diff --git a/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_pm_coarse_demand.c b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_pm_coarse_demand.c new file mode 100755 -index 000000000000..f891fa225a89 +index 000000000..f891fa225 --- /dev/null +++ b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_pm_coarse_demand.c @@ -0,0 +1,70 @@ @@ -398701,7 +398701,7 @@ index 000000000000..f891fa225a89 +KBASE_EXPORT_TEST_API(kbase_pm_coarse_demand_policy_ops); diff --git a/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_pm_coarse_demand.h b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_pm_coarse_demand.h new file mode 100755 -index 000000000000..749d305eee9a +index 000000000..749d305ee --- /dev/null +++ b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_pm_coarse_demand.h @@ -0,0 +1,64 @@ @@ -398771,7 +398771,7 @@ index 000000000000..749d305eee9a +#endif /* MALI_KBASE_PM_COARSE_DEMAND_H */ diff --git a/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_pm_defs.h b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_pm_defs.h new file mode 100755 -index 000000000000..352744ee6d73 +index 000000000..352744ee6 --- /dev/null +++ b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_pm_defs.h @@ -0,0 +1,519 @@ @@ -399296,7 +399296,7 @@ index 000000000000..352744ee6d73 +#endif /* _KBASE_PM_HWACCESS_DEFS_H_ */ diff --git a/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_pm_demand.c b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_pm_demand.c new file mode 100755 -index 000000000000..81322fd0dd17 +index 000000000..81322fd0d --- /dev/null +++ b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_pm_demand.c @@ -0,0 +1,73 @@ @@ -399375,7 +399375,7 @@ index 000000000000..81322fd0dd17 +KBASE_EXPORT_TEST_API(kbase_pm_demand_policy_ops); diff --git a/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_pm_demand.h b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_pm_demand.h new file mode 100755 -index 000000000000..c0c84b6e9189 +index 000000000..c0c84b6e9 --- /dev/null +++ b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_pm_demand.h @@ -0,0 +1,64 @@ @@ -399445,7 +399445,7 @@ index 000000000000..c0c84b6e9189 +#endif /* MALI_KBASE_PM_DEMAND_H */ diff --git a/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_pm_driver.c b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_pm_driver.c new file mode 100755 -index 000000000000..82727937c545 +index 000000000..82727937c --- /dev/null +++ b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_pm_driver.c @@ -0,0 +1,1713 @@ @@ -401164,7 +401164,7 @@ index 000000000000..82727937c545 +KBASE_EXPORT_TEST_API(kbase_pm_release_gpu_cycle_counter); diff --git a/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_pm_internal.h b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_pm_internal.h new file mode 100755 -index 000000000000..6804f45ac27b +index 000000000..6804f45ac --- /dev/null +++ b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_pm_internal.h @@ -0,0 +1,548 @@ @@ -401718,7 +401718,7 @@ index 000000000000..6804f45ac27b +#endif /* _KBASE_BACKEND_PM_INTERNAL_H_ */ diff --git a/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_pm_metrics.c b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_pm_metrics.c new file mode 100755 -index 000000000000..024248ca7123 +index 000000000..024248ca7 --- /dev/null +++ b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_pm_metrics.c @@ -0,0 +1,401 @@ @@ -402125,7 +402125,7 @@ index 000000000000..024248ca7123 +} diff --git a/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_pm_policy.c b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_pm_policy.c new file mode 100755 -index 000000000000..075f020c66e6 +index 000000000..075f020c6 --- /dev/null +++ b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_pm_policy.c @@ -0,0 +1,973 @@ @@ -403104,7 +403104,7 @@ index 000000000000..075f020c66e6 +KBASE_EXPORT_TEST_API(kbase_pm_release_l2_caches); diff --git a/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_pm_policy.h b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_pm_policy.h new file mode 100755 -index 000000000000..611a90e66e65 +index 000000000..611a90e66 --- /dev/null +++ b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_pm_policy.h @@ -0,0 +1,227 @@ @@ -403337,7 +403337,7 @@ index 000000000000..611a90e66e65 +#endif /* _KBASE_PM_POLICY_H_ */ diff --git a/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_time.c b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_time.c new file mode 100755 -index 000000000000..d08c628dd433 +index 000000000..d08c628dd --- /dev/null +++ b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_time.c @@ -0,0 +1,103 @@ @@ -403446,7 +403446,7 @@ index 000000000000..d08c628dd433 +#endif /* CONFIG_MALI_NO_MALI */ diff --git a/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_time.h b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_time.h new file mode 100755 -index 000000000000..433aa4b9cb5e +index 000000000..433aa4b9c --- /dev/null +++ b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_time.h @@ -0,0 +1,52 @@ @@ -403504,7 +403504,7 @@ index 000000000000..433aa4b9cb5e +#endif /* _KBASE_BACKEND_TIME_H_ */ diff --git a/drivers/gpu/arm/midgard/docs/Doxyfile b/drivers/gpu/arm/midgard/docs/Doxyfile new file mode 100755 -index 000000000000..35ff2f1ce4a0 +index 000000000..35ff2f1ce --- /dev/null +++ b/drivers/gpu/arm/midgard/docs/Doxyfile @@ -0,0 +1,126 @@ @@ -403636,7 +403636,7 @@ index 000000000000..35ff2f1ce4a0 + diff --git a/drivers/gpu/arm/midgard/docs/policy_operation_diagram.dot b/drivers/gpu/arm/midgard/docs/policy_operation_diagram.dot new file mode 100755 -index 000000000000..7ae05c2f8ded +index 000000000..7ae05c2f8 --- /dev/null +++ b/drivers/gpu/arm/midgard/docs/policy_operation_diagram.dot @@ -0,0 +1,112 @@ @@ -403754,7 +403754,7 @@ index 000000000000..7ae05c2f8ded +} diff --git a/drivers/gpu/arm/midgard/docs/policy_overview.dot b/drivers/gpu/arm/midgard/docs/policy_overview.dot new file mode 100755 -index 000000000000..159b993b7d61 +index 000000000..159b993b7 --- /dev/null +++ b/drivers/gpu/arm/midgard/docs/policy_overview.dot @@ -0,0 +1,63 @@ @@ -403823,7 +403823,7 @@ index 000000000000..159b993b7d61 +} diff --git a/drivers/gpu/arm/midgard/ipa/Kbuild b/drivers/gpu/arm/midgard/ipa/Kbuild new file mode 100755 -index 000000000000..602b15f5225c +index 000000000..602b15f52 --- /dev/null +++ b/drivers/gpu/arm/midgard/ipa/Kbuild @@ -0,0 +1,24 @@ @@ -403853,7 +403853,7 @@ index 000000000000..602b15f5225c +endif diff --git a/drivers/gpu/arm/midgard/ipa/mali_kbase_ipa.c b/drivers/gpu/arm/midgard/ipa/mali_kbase_ipa.c new file mode 100755 -index 000000000000..01bdbb4e8eb1 +index 000000000..01bdbb4e8 --- /dev/null +++ b/drivers/gpu/arm/midgard/ipa/mali_kbase_ipa.c @@ -0,0 +1,585 @@ @@ -404444,7 +404444,7 @@ index 000000000000..01bdbb4e8eb1 +KBASE_EXPORT_TEST_API(kbase_ipa_power_model_ops); diff --git a/drivers/gpu/arm/midgard/ipa/mali_kbase_ipa.h b/drivers/gpu/arm/midgard/ipa/mali_kbase_ipa.h new file mode 100755 -index 000000000000..b2d3db149579 +index 000000000..b2d3db149 --- /dev/null +++ b/drivers/gpu/arm/midgard/ipa/mali_kbase_ipa.h @@ -0,0 +1,148 @@ @@ -404598,7 +404598,7 @@ index 000000000000..b2d3db149579 +#endif diff --git a/drivers/gpu/arm/midgard/ipa/mali_kbase_ipa_debugfs.c b/drivers/gpu/arm/midgard/ipa/mali_kbase_ipa_debugfs.c new file mode 100755 -index 000000000000..eafc14009ddc +index 000000000..eafc14009 --- /dev/null +++ b/drivers/gpu/arm/midgard/ipa/mali_kbase_ipa_debugfs.c @@ -0,0 +1,219 @@ @@ -404823,7 +404823,7 @@ index 000000000000..eafc14009ddc +} diff --git a/drivers/gpu/arm/midgard/ipa/mali_kbase_ipa_debugfs.h b/drivers/gpu/arm/midgard/ipa/mali_kbase_ipa_debugfs.h new file mode 100755 -index 000000000000..ec06e2096f94 +index 000000000..ec06e2096 --- /dev/null +++ b/drivers/gpu/arm/midgard/ipa/mali_kbase_ipa_debugfs.h @@ -0,0 +1,49 @@ @@ -404878,7 +404878,7 @@ index 000000000000..ec06e2096f94 +#endif /* _KBASE_IPA_DEBUGFS_H_ */ diff --git a/drivers/gpu/arm/midgard/ipa/mali_kbase_ipa_simple.c b/drivers/gpu/arm/midgard/ipa/mali_kbase_ipa_simple.c new file mode 100755 -index 000000000000..da0a4d4a0e7e +index 000000000..da0a4d4a0 --- /dev/null +++ b/drivers/gpu/arm/midgard/ipa/mali_kbase_ipa_simple.c @@ -0,0 +1,222 @@ @@ -405106,7 +405106,7 @@ index 000000000000..da0a4d4a0e7e +}; diff --git a/drivers/gpu/arm/midgard/mali_base_hwconfig_features.h b/drivers/gpu/arm/midgard/mali_base_hwconfig_features.h new file mode 100755 -index 000000000000..6be0a334f99f +index 000000000..6be0a334f --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_base_hwconfig_features.h @@ -0,0 +1,311 @@ @@ -405423,7 +405423,7 @@ index 000000000000..6be0a334f99f +#endif /* _BASE_HWCONFIG_FEATURES_H_ */ diff --git a/drivers/gpu/arm/midgard/mali_base_hwconfig_issues.h b/drivers/gpu/arm/midgard/mali_base_hwconfig_issues.h new file mode 100755 -index 000000000000..6d7e5c57e6a4 +index 000000000..6d7e5c57e --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_base_hwconfig_issues.h @@ -0,0 +1,1098 @@ @@ -406527,7 +406527,7 @@ index 000000000000..6d7e5c57e6a4 +#endif /* _BASE_HWCONFIG_ISSUES_H_ */ diff --git a/drivers/gpu/arm/midgard/mali_base_kernel.h b/drivers/gpu/arm/midgard/mali_base_kernel.h new file mode 100755 -index 000000000000..ea5e473caef6 +index 000000000..ea5e473ca --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_base_kernel.h @@ -0,0 +1,1858 @@ @@ -408391,7 +408391,7 @@ index 000000000000..ea5e473caef6 +#endif /* _BASE_KERNEL_H_ */ diff --git a/drivers/gpu/arm/midgard/mali_base_mem_priv.h b/drivers/gpu/arm/midgard/mali_base_mem_priv.h new file mode 100755 -index 000000000000..4a98a72cc37a +index 000000000..4a98a72cc --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_base_mem_priv.h @@ -0,0 +1,52 @@ @@ -408449,7 +408449,7 @@ index 000000000000..4a98a72cc37a +#endif diff --git a/drivers/gpu/arm/midgard/mali_base_vendor_specific_func.h b/drivers/gpu/arm/midgard/mali_base_vendor_specific_func.h new file mode 100755 -index 000000000000..be454a216a39 +index 000000000..be454a216 --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_base_vendor_specific_func.h @@ -0,0 +1,24 @@ @@ -408479,7 +408479,7 @@ index 000000000000..be454a216a39 +#endif /*_BASE_VENDOR_SPEC_FUNC_H_*/ diff --git a/drivers/gpu/arm/midgard/mali_kbase.h b/drivers/gpu/arm/midgard/mali_kbase.h new file mode 100755 -index 000000000000..0d9bf23dc685 +index 000000000..0d9bf23dc --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase.h @@ -0,0 +1,612 @@ @@ -409097,7 +409097,7 @@ index 000000000000..0d9bf23dc685 + diff --git a/drivers/gpu/arm/midgard/mali_kbase_10969_workaround.c b/drivers/gpu/arm/midgard/mali_kbase_10969_workaround.c new file mode 100755 -index 000000000000..fde0f8ff8582 +index 000000000..fde0f8ff8 --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_10969_workaround.c @@ -0,0 +1,209 @@ @@ -409312,7 +409312,7 @@ index 000000000000..fde0f8ff8582 +} diff --git a/drivers/gpu/arm/midgard/mali_kbase_10969_workaround.h b/drivers/gpu/arm/midgard/mali_kbase_10969_workaround.h new file mode 100755 -index 000000000000..099a29861672 +index 000000000..099a29861 --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_10969_workaround.h @@ -0,0 +1,23 @@ @@ -409341,7 +409341,7 @@ index 000000000000..099a29861672 +#endif /* _KBASE_10969_WORKAROUND_ */ diff --git a/drivers/gpu/arm/midgard/mali_kbase_as_fault_debugfs.c b/drivers/gpu/arm/midgard/mali_kbase_as_fault_debugfs.c new file mode 100755 -index 000000000000..f910fe970feb +index 000000000..f910fe970 --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_as_fault_debugfs.c @@ -0,0 +1,102 @@ @@ -409449,7 +409449,7 @@ index 000000000000..f910fe970feb +} diff --git a/drivers/gpu/arm/midgard/mali_kbase_as_fault_debugfs.h b/drivers/gpu/arm/midgard/mali_kbase_as_fault_debugfs.h new file mode 100755 -index 000000000000..3ed2248897fc +index 000000000..3ed224889 --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_as_fault_debugfs.h @@ -0,0 +1,45 @@ @@ -409500,7 +409500,7 @@ index 000000000000..3ed2248897fc +#endif /*_KBASE_AS_FAULT_DEBUG_FS_H*/ diff --git a/drivers/gpu/arm/midgard/mali_kbase_cache_policy.c b/drivers/gpu/arm/midgard/mali_kbase_cache_policy.c new file mode 100755 -index 000000000000..c67b3e97f1af +index 000000000..c67b3e97f --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_cache_policy.c @@ -0,0 +1,64 @@ @@ -409570,7 +409570,7 @@ index 000000000000..c67b3e97f1af +} diff --git a/drivers/gpu/arm/midgard/mali_kbase_cache_policy.h b/drivers/gpu/arm/midgard/mali_kbase_cache_policy.h new file mode 100755 -index 000000000000..0c18bdb357b0 +index 000000000..0c18bdb35 --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_cache_policy.h @@ -0,0 +1,45 @@ @@ -409621,7 +409621,7 @@ index 000000000000..0c18bdb357b0 +#endif /* _KBASE_CACHE_POLICY_H_ */ diff --git a/drivers/gpu/arm/midgard/mali_kbase_config.c b/drivers/gpu/arm/midgard/mali_kbase_config.c new file mode 100755 -index 000000000000..fb615ae02ead +index 000000000..fb615ae02 --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_config.c @@ -0,0 +1,51 @@ @@ -409678,7 +409678,7 @@ index 000000000000..fb615ae02ead + diff --git a/drivers/gpu/arm/midgard/mali_kbase_config.h b/drivers/gpu/arm/midgard/mali_kbase_config.h new file mode 100755 -index 000000000000..356d52bcd774 +index 000000000..356d52bcd --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_config.h @@ -0,0 +1,345 @@ @@ -410029,7 +410029,7 @@ index 000000000000..356d52bcd774 +#endif /* _KBASE_CONFIG_H_ */ diff --git a/drivers/gpu/arm/midgard/mali_kbase_config_defaults.h b/drivers/gpu/arm/midgard/mali_kbase_config_defaults.h new file mode 100755 -index 000000000000..1cf44b3500cf +index 000000000..1cf44b350 --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_config_defaults.h @@ -0,0 +1,227 @@ @@ -410262,7 +410262,7 @@ index 000000000000..1cf44b3500cf + diff --git a/drivers/gpu/arm/midgard/mali_kbase_context.c b/drivers/gpu/arm/midgard/mali_kbase_context.c new file mode 100755 -index 000000000000..6338a7e221ed +index 000000000..6338a7e22 --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_context.c @@ -0,0 +1,342 @@ @@ -410610,7 +410610,7 @@ index 000000000000..6338a7e221ed +KBASE_EXPORT_SYMBOL(kbase_context_set_create_flags); diff --git a/drivers/gpu/arm/midgard/mali_kbase_context.h b/drivers/gpu/arm/midgard/mali_kbase_context.h new file mode 100755 -index 000000000000..a3f5bb0ce0da +index 000000000..a3f5bb0ce --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_context.h @@ -0,0 +1,90 @@ @@ -410706,7 +410706,7 @@ index 000000000000..a3f5bb0ce0da +#endif /* _KBASE_CONTEXT_H_ */ diff --git a/drivers/gpu/arm/midgard/mali_kbase_core_linux.c b/drivers/gpu/arm/midgard/mali_kbase_core_linux.c new file mode 100755 -index 000000000000..da55cb080d00 +index 000000000..da55cb080 --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_core_linux.c @@ -0,0 +1,4990 @@ @@ -415702,7 +415702,7 @@ index 000000000000..da55cb080d00 +#endif diff --git a/drivers/gpu/arm/midgard/mali_kbase_ctx_sched.c b/drivers/gpu/arm/midgard/mali_kbase_ctx_sched.c new file mode 100755 -index 000000000000..ce004841403f +index 000000000..ce0048414 --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_ctx_sched.c @@ -0,0 +1,208 @@ @@ -415916,7 +415916,7 @@ index 000000000000..ce004841403f +} diff --git a/drivers/gpu/arm/midgard/mali_kbase_ctx_sched.h b/drivers/gpu/arm/midgard/mali_kbase_ctx_sched.h new file mode 100755 -index 000000000000..47474fecc2a9 +index 000000000..47474fecc --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_ctx_sched.h @@ -0,0 +1,134 @@ @@ -416056,7 +416056,7 @@ index 000000000000..47474fecc2a9 +#endif /* _KBASE_CTX_SCHED_H_ */ diff --git a/drivers/gpu/arm/midgard/mali_kbase_debug.c b/drivers/gpu/arm/midgard/mali_kbase_debug.c new file mode 100755 -index 000000000000..fb57ac2e31ad +index 000000000..fb57ac2e3 --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_debug.c @@ -0,0 +1,39 @@ @@ -416101,7 +416101,7 @@ index 000000000000..fb57ac2e31ad + diff --git a/drivers/gpu/arm/midgard/mali_kbase_debug.h b/drivers/gpu/arm/midgard/mali_kbase_debug.h new file mode 100755 -index 000000000000..5fff2892bb55 +index 000000000..5fff2892b --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_debug.h @@ -0,0 +1,164 @@ @@ -416271,7 +416271,7 @@ index 000000000000..5fff2892bb55 +#endif /* _KBASE_DEBUG_H */ diff --git a/drivers/gpu/arm/midgard/mali_kbase_debug_job_fault.c b/drivers/gpu/arm/midgard/mali_kbase_debug_job_fault.c new file mode 100755 -index 000000000000..f29430ddf8f9 +index 000000000..f29430ddf --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_debug_job_fault.c @@ -0,0 +1,499 @@ @@ -416776,7 +416776,7 @@ index 000000000000..f29430ddf8f9 +#endif /* CONFIG_DEBUG_FS */ diff --git a/drivers/gpu/arm/midgard/mali_kbase_debug_job_fault.h b/drivers/gpu/arm/midgard/mali_kbase_debug_job_fault.h new file mode 100755 -index 000000000000..a2bf8983c37c +index 000000000..a2bf8983c --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_debug_job_fault.h @@ -0,0 +1,96 @@ @@ -416878,7 +416878,7 @@ index 000000000000..a2bf8983c37c +#endif /*_KBASE_DEBUG_JOB_FAULT_H*/ diff --git a/drivers/gpu/arm/midgard/mali_kbase_debug_mem_view.c b/drivers/gpu/arm/midgard/mali_kbase_debug_mem_view.c new file mode 100755 -index 000000000000..6f2cbdf571cb +index 000000000..6f2cbdf57 --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_debug_mem_view.c @@ -0,0 +1,306 @@ @@ -417190,7 +417190,7 @@ index 000000000000..6f2cbdf571cb +#endif diff --git a/drivers/gpu/arm/midgard/mali_kbase_debug_mem_view.h b/drivers/gpu/arm/midgard/mali_kbase_debug_mem_view.h new file mode 100755 -index 000000000000..20ab51a776c6 +index 000000000..20ab51a77 --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_debug_mem_view.h @@ -0,0 +1,25 @@ @@ -417221,7 +417221,7 @@ index 000000000000..20ab51a776c6 +#endif diff --git a/drivers/gpu/arm/midgard/mali_kbase_defs.h b/drivers/gpu/arm/midgard/mali_kbase_defs.h new file mode 100755 -index 000000000000..f8a6f33df2da +index 000000000..f8a6f33df --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_defs.h @@ -0,0 +1,1602 @@ @@ -418829,7 +418829,7 @@ index 000000000000..f8a6f33df2da +#endif /* _KBASE_DEFS_H_ */ diff --git a/drivers/gpu/arm/midgard/mali_kbase_device.c b/drivers/gpu/arm/midgard/mali_kbase_device.c new file mode 100755 -index 000000000000..b0eb67da8644 +index 000000000..b0eb67da8 --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_device.c @@ -0,0 +1,674 @@ @@ -419509,7 +419509,7 @@ index 000000000000..b0eb67da8644 + diff --git a/drivers/gpu/arm/midgard/mali_kbase_disjoint_events.c b/drivers/gpu/arm/midgard/mali_kbase_disjoint_events.c new file mode 100755 -index 000000000000..f70bcccf4050 +index 000000000..f70bcccf4 --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_disjoint_events.c @@ -0,0 +1,76 @@ @@ -419591,7 +419591,7 @@ index 000000000000..f70bcccf4050 +KBASE_EXPORT_TEST_API(kbase_disjoint_event_get); diff --git a/drivers/gpu/arm/midgard/mali_kbase_dma_fence.c b/drivers/gpu/arm/midgard/mali_kbase_dma_fence.c new file mode 100755 -index 000000000000..9197743c81d4 +index 000000000..9197743c8 --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_dma_fence.c @@ -0,0 +1,449 @@ @@ -420046,7 +420046,7 @@ index 000000000000..9197743c81d4 +} diff --git a/drivers/gpu/arm/midgard/mali_kbase_dma_fence.h b/drivers/gpu/arm/midgard/mali_kbase_dma_fence.h new file mode 100755 -index 000000000000..c9ab40350422 +index 000000000..c9ab40350 --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_dma_fence.h @@ -0,0 +1,131 @@ @@ -420183,7 +420183,7 @@ index 000000000000..c9ab40350422 +#endif diff --git a/drivers/gpu/arm/midgard/mali_kbase_event.c b/drivers/gpu/arm/midgard/mali_kbase_event.c new file mode 100755 -index 000000000000..188148645f37 +index 000000000..188148645 --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_event.c @@ -0,0 +1,259 @@ @@ -420448,7 +420448,7 @@ index 000000000000..188148645f37 +KBASE_EXPORT_TEST_API(kbase_event_cleanup); diff --git a/drivers/gpu/arm/midgard/mali_kbase_fence.c b/drivers/gpu/arm/midgard/mali_kbase_fence.c new file mode 100755 -index 000000000000..3bcfb38c31c2 +index 000000000..3bcfb38c3 --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_fence.c @@ -0,0 +1,200 @@ @@ -420654,7 +420654,7 @@ index 000000000000..3bcfb38c31c2 +} diff --git a/drivers/gpu/arm/midgard/mali_kbase_fence.h b/drivers/gpu/arm/midgard/mali_kbase_fence.h new file mode 100755 -index 000000000000..639cc2ef4348 +index 000000000..639cc2ef4 --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_fence.h @@ -0,0 +1,275 @@ @@ -420935,7 +420935,7 @@ index 000000000000..639cc2ef4348 +#endif /* _KBASE_FENCE_H_ */ diff --git a/drivers/gpu/arm/midgard/mali_kbase_fence_defs.h b/drivers/gpu/arm/midgard/mali_kbase_fence_defs.h new file mode 100755 -index 000000000000..fa2c6dfe999e +index 000000000..fa2c6dfe9 --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_fence_defs.h @@ -0,0 +1,51 @@ @@ -420992,7 +420992,7 @@ index 000000000000..fa2c6dfe999e +#endif /* _KBASE_FENCE_DEFS_H_ */ diff --git a/drivers/gpu/arm/midgard/mali_kbase_gator.h b/drivers/gpu/arm/midgard/mali_kbase_gator.h new file mode 100755 -index 000000000000..ce65b5562a2b +index 000000000..ce65b5562 --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_gator.h @@ -0,0 +1,45 @@ @@ -421043,7 +421043,7 @@ index 000000000000..ce65b5562a2b +#endif /* _KBASE_GATOR_H_ */ diff --git a/drivers/gpu/arm/midgard/mali_kbase_gator_api.c b/drivers/gpu/arm/midgard/mali_kbase_gator_api.c new file mode 100755 -index 000000000000..860e10159fb3 +index 000000000..860e10159 --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_gator_api.c @@ -0,0 +1,334 @@ @@ -421383,7 +421383,7 @@ index 000000000000..860e10159fb3 +KBASE_EXPORT_SYMBOL(kbase_gator_instr_hwcnt_dump_irq); diff --git a/drivers/gpu/arm/midgard/mali_kbase_gator_api.h b/drivers/gpu/arm/midgard/mali_kbase_gator_api.h new file mode 100755 -index 000000000000..ef9ac0f7b633 +index 000000000..ef9ac0f7b --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_gator_api.h @@ -0,0 +1,219 @@ @@ -421608,7 +421608,7 @@ index 000000000000..ef9ac0f7b633 +#endif diff --git a/drivers/gpu/arm/midgard/mali_kbase_gator_hwcnt_names.h b/drivers/gpu/arm/midgard/mali_kbase_gator_hwcnt_names.h new file mode 100755 -index 000000000000..cad19b66200d +index 000000000..cad19b662 --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_gator_hwcnt_names.h @@ -0,0 +1,2170 @@ @@ -423784,7 +423784,7 @@ index 000000000000..cad19b66200d +#endif diff --git a/drivers/gpu/arm/midgard/mali_kbase_gator_hwcnt_names_thex.h b/drivers/gpu/arm/midgard/mali_kbase_gator_hwcnt_names_thex.h new file mode 100755 -index 000000000000..bcceef4fc9bc +index 000000000..bcceef4fc --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_gator_hwcnt_names_thex.h @@ -0,0 +1,291 @@ @@ -424081,7 +424081,7 @@ index 000000000000..bcceef4fc9bc +#endif /* _KBASE_GATOR_HWCNT_NAMES_THEX_H_ */ diff --git a/drivers/gpu/arm/midgard/mali_kbase_gator_hwcnt_names_tmix.h b/drivers/gpu/arm/midgard/mali_kbase_gator_hwcnt_names_tmix.h new file mode 100755 -index 000000000000..5ea06770fdb2 +index 000000000..5ea06770f --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_gator_hwcnt_names_tmix.h @@ -0,0 +1,291 @@ @@ -424378,7 +424378,7 @@ index 000000000000..5ea06770fdb2 +#endif /* _KBASE_GATOR_HWCNT_NAMES_TMIX_H_ */ diff --git a/drivers/gpu/arm/midgard/mali_kbase_gator_hwcnt_names_tsix.h b/drivers/gpu/arm/midgard/mali_kbase_gator_hwcnt_names_tsix.h new file mode 100755 -index 000000000000..be09c4556735 +index 000000000..be09c4556 --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_gator_hwcnt_names_tsix.h @@ -0,0 +1,291 @@ @@ -424675,7 +424675,7 @@ index 000000000000..be09c4556735 +#endif /* _KBASE_GATOR_HWCNT_NAMES_TSIX_H_ */ diff --git a/drivers/gpu/arm/midgard/mali_kbase_gpu_id.h b/drivers/gpu/arm/midgard/mali_kbase_gpu_id.h new file mode 100755 -index 000000000000..42f0111c474f +index 000000000..42f0111c4 --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_gpu_id.h @@ -0,0 +1,123 @@ @@ -424804,7 +424804,7 @@ index 000000000000..42f0111c474f +#endif /* _KBASE_GPU_ID_H_ */ diff --git a/drivers/gpu/arm/midgard/mali_kbase_gpu_memory_debugfs.c b/drivers/gpu/arm/midgard/mali_kbase_gpu_memory_debugfs.c new file mode 100755 -index 000000000000..6df0a1cb1264 +index 000000000..6df0a1cb1 --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_gpu_memory_debugfs.c @@ -0,0 +1,97 @@ @@ -424907,7 +424907,7 @@ index 000000000000..6df0a1cb1264 +#endif diff --git a/drivers/gpu/arm/midgard/mali_kbase_gpu_memory_debugfs.h b/drivers/gpu/arm/midgard/mali_kbase_gpu_memory_debugfs.h new file mode 100755 -index 000000000000..7045693eb910 +index 000000000..7045693eb --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_gpu_memory_debugfs.h @@ -0,0 +1,37 @@ @@ -424950,7 +424950,7 @@ index 000000000000..7045693eb910 +#endif /*_KBASE_GPU_MEMORY_DEBUGFS_H*/ diff --git a/drivers/gpu/arm/midgard/mali_kbase_gpuprops.c b/drivers/gpu/arm/midgard/mali_kbase_gpuprops.c new file mode 100755 -index 000000000000..a947a2e03a2f +index 000000000..a947a2e03 --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_gpuprops.c @@ -0,0 +1,510 @@ @@ -425466,7 +425466,7 @@ index 000000000000..a947a2e03a2f +} diff --git a/drivers/gpu/arm/midgard/mali_kbase_gpuprops.h b/drivers/gpu/arm/midgard/mali_kbase_gpuprops.h new file mode 100755 -index 000000000000..57b3eaf9cd53 +index 000000000..57b3eaf9c --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_gpuprops.h @@ -0,0 +1,84 @@ @@ -425556,7 +425556,7 @@ index 000000000000..57b3eaf9cd53 +#endif /* _KBASE_GPUPROPS_H_ */ diff --git a/drivers/gpu/arm/midgard/mali_kbase_gpuprops_types.h b/drivers/gpu/arm/midgard/mali_kbase_gpuprops_types.h new file mode 100755 -index 000000000000..10794fc27318 +index 000000000..10794fc27 --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_gpuprops_types.h @@ -0,0 +1,92 @@ @@ -425654,7 +425654,7 @@ index 000000000000..10794fc27318 +#endif /* _KBASE_GPUPROPS_TYPES_H_ */ diff --git a/drivers/gpu/arm/midgard/mali_kbase_hw.c b/drivers/gpu/arm/midgard/mali_kbase_hw.c new file mode 100755 -index 000000000000..9a390d233939 +index 000000000..9a390d233 --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_hw.c @@ -0,0 +1,453 @@ @@ -426113,7 +426113,7 @@ index 000000000000..9a390d233939 +} diff --git a/drivers/gpu/arm/midgard/mali_kbase_hw.h b/drivers/gpu/arm/midgard/mali_kbase_hw.h new file mode 100755 -index 000000000000..754250ce968d +index 000000000..754250ce9 --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_hw.h @@ -0,0 +1,65 @@ @@ -426184,7 +426184,7 @@ index 000000000000..754250ce968d +#endif /* _KBASE_HW_H_ */ diff --git a/drivers/gpu/arm/midgard/mali_kbase_hwaccess_backend.h b/drivers/gpu/arm/midgard/mali_kbase_hwaccess_backend.h new file mode 100755 -index 000000000000..b09be99e6b4e +index 000000000..b09be99e6 --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_hwaccess_backend.h @@ -0,0 +1,54 @@ @@ -426244,7 +426244,7 @@ index 000000000000..b09be99e6b4e +#endif /* _KBASE_HWACCESS_BACKEND_H_ */ diff --git a/drivers/gpu/arm/midgard/mali_kbase_hwaccess_defs.h b/drivers/gpu/arm/midgard/mali_kbase_hwaccess_defs.h new file mode 100755 -index 000000000000..0acf297192fd +index 000000000..0acf29719 --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_hwaccess_defs.h @@ -0,0 +1,36 @@ @@ -426286,7 +426286,7 @@ index 000000000000..0acf297192fd +#endif /* _KBASE_HWACCESS_DEFS_H_ */ diff --git a/drivers/gpu/arm/midgard/mali_kbase_hwaccess_gpuprops.h b/drivers/gpu/arm/midgard/mali_kbase_hwaccess_gpuprops.h new file mode 100755 -index 000000000000..cf8a8131c22e +index 000000000..cf8a8131c --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_hwaccess_gpuprops.h @@ -0,0 +1,47 @@ @@ -426339,7 +426339,7 @@ index 000000000000..cf8a8131c22e +#endif /* _KBASE_HWACCESS_GPUPROPS_H_ */ diff --git a/drivers/gpu/arm/midgard/mali_kbase_hwaccess_instr.h b/drivers/gpu/arm/midgard/mali_kbase_hwaccess_instr.h new file mode 100755 -index 000000000000..5de2b7535bb4 +index 000000000..5de2b7535 --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_hwaccess_instr.h @@ -0,0 +1,116 @@ @@ -426461,7 +426461,7 @@ index 000000000000..5de2b7535bb4 +#endif /* _KBASE_HWACCESS_INSTR_H_ */ diff --git a/drivers/gpu/arm/midgard/mali_kbase_hwaccess_jm.h b/drivers/gpu/arm/midgard/mali_kbase_hwaccess_jm.h new file mode 100755 -index 000000000000..750fda2cd81d +index 000000000..750fda2cd --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_hwaccess_jm.h @@ -0,0 +1,381 @@ @@ -426848,7 +426848,7 @@ index 000000000000..750fda2cd81d +#endif /* _KBASE_HWACCESS_JM_H_ */ diff --git a/drivers/gpu/arm/midgard/mali_kbase_hwaccess_pm.h b/drivers/gpu/arm/midgard/mali_kbase_hwaccess_pm.h new file mode 100755 -index 000000000000..71c7d495c40a +index 000000000..71c7d495c --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_hwaccess_pm.h @@ -0,0 +1,209 @@ @@ -427063,7 +427063,7 @@ index 000000000000..71c7d495c40a +#endif /* _KBASE_HWACCESS_PM_H_ */ diff --git a/drivers/gpu/arm/midgard/mali_kbase_hwaccess_time.h b/drivers/gpu/arm/midgard/mali_kbase_hwaccess_time.h new file mode 100755 -index 000000000000..10b65798e6cf +index 000000000..10b65798e --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_hwaccess_time.h @@ -0,0 +1,53 @@ @@ -427122,7 +427122,7 @@ index 000000000000..10b65798e6cf +#endif /* _KBASE_BACKEND_TIME_H_ */ diff --git a/drivers/gpu/arm/midgard/mali_kbase_hwcnt_reader.h b/drivers/gpu/arm/midgard/mali_kbase_hwcnt_reader.h new file mode 100755 -index 000000000000..cf7bf1b35dc5 +index 000000000..cf7bf1b35 --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_hwcnt_reader.h @@ -0,0 +1,66 @@ @@ -427194,7 +427194,7 @@ index 000000000000..cf7bf1b35dc5 + diff --git a/drivers/gpu/arm/midgard/mali_kbase_ioctl.h b/drivers/gpu/arm/midgard/mali_kbase_ioctl.h new file mode 100755 -index 000000000000..dcbed9c774d6 +index 000000000..dcbed9c77 --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_ioctl.h @@ -0,0 +1,656 @@ @@ -427856,7 +427856,7 @@ index 000000000000..dcbed9c774d6 +#endif diff --git a/drivers/gpu/arm/midgard/mali_kbase_jd.c b/drivers/gpu/arm/midgard/mali_kbase_jd.c new file mode 100755 -index 000000000000..d9d8658d31dc +index 000000000..d9d8658d3 --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_jd.c @@ -0,0 +1,1903 @@ @@ -429765,7 +429765,7 @@ index 000000000000..d9d8658d31dc +KBASE_EXPORT_TEST_API(kbase_jd_exit); diff --git a/drivers/gpu/arm/midgard/mali_kbase_jd_debugfs.c b/drivers/gpu/arm/midgard/mali_kbase_jd_debugfs.c new file mode 100755 -index 000000000000..44643abf85aa +index 000000000..44643abf8 --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_jd_debugfs.c @@ -0,0 +1,233 @@ @@ -430004,7 +430004,7 @@ index 000000000000..44643abf85aa +#endif /* CONFIG_DEBUG_FS */ diff --git a/drivers/gpu/arm/midgard/mali_kbase_jd_debugfs.h b/drivers/gpu/arm/midgard/mali_kbase_jd_debugfs.h new file mode 100755 -index 000000000000..0935f1db7296 +index 000000000..0935f1db7 --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_jd_debugfs.h @@ -0,0 +1,39 @@ @@ -430049,7 +430049,7 @@ index 000000000000..0935f1db7296 +#endif /*_KBASE_JD_DEBUGFS_H*/ diff --git a/drivers/gpu/arm/midgard/mali_kbase_jm.c b/drivers/gpu/arm/midgard/mali_kbase_jm.c new file mode 100755 -index 000000000000..0c5c6a6f78cb +index 000000000..0c5c6a6f7 --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_jm.c @@ -0,0 +1,131 @@ @@ -430186,7 +430186,7 @@ index 000000000000..0c5c6a6f78cb + diff --git a/drivers/gpu/arm/midgard/mali_kbase_jm.h b/drivers/gpu/arm/midgard/mali_kbase_jm.h new file mode 100755 -index 000000000000..a74ee24c8058 +index 000000000..a74ee24c8 --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_jm.h @@ -0,0 +1,110 @@ @@ -430302,7 +430302,7 @@ index 000000000000..a74ee24c8058 +#endif /* _KBASE_JM_H_ */ diff --git a/drivers/gpu/arm/midgard/mali_kbase_js.c b/drivers/gpu/arm/midgard/mali_kbase_js.c new file mode 100755 -index 000000000000..10a1d5909bbe +index 000000000..10a1d5909 --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_js.c @@ -0,0 +1,2834 @@ @@ -433142,7 +433142,7 @@ index 000000000000..10a1d5909bbe +} diff --git a/drivers/gpu/arm/midgard/mali_kbase_js.h b/drivers/gpu/arm/midgard/mali_kbase_js.h new file mode 100755 -index 000000000000..ddada8e468a1 +index 000000000..ddada8e46 --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_js.h @@ -0,0 +1,925 @@ @@ -434073,7 +434073,7 @@ index 000000000000..ddada8e468a1 +#endif /* _KBASE_JS_H_ */ diff --git a/drivers/gpu/arm/midgard/mali_kbase_js_ctx_attr.c b/drivers/gpu/arm/midgard/mali_kbase_js_ctx_attr.c new file mode 100755 -index 000000000000..321506ada835 +index 000000000..321506ada --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_js_ctx_attr.c @@ -0,0 +1,301 @@ @@ -434380,7 +434380,7 @@ index 000000000000..321506ada835 +} diff --git a/drivers/gpu/arm/midgard/mali_kbase_js_ctx_attr.h b/drivers/gpu/arm/midgard/mali_kbase_js_ctx_attr.h new file mode 100755 -index 000000000000..ce9183326a57 +index 000000000..ce9183326 --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_js_ctx_attr.h @@ -0,0 +1,158 @@ @@ -434544,7 +434544,7 @@ index 000000000000..ce9183326a57 +#endif /* _KBASE_JS_DEFS_H_ */ diff --git a/drivers/gpu/arm/midgard/mali_kbase_js_defs.h b/drivers/gpu/arm/midgard/mali_kbase_js_defs.h new file mode 100755 -index 000000000000..ba8b6441549b +index 000000000..ba8b64415 --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_js_defs.h @@ -0,0 +1,386 @@ @@ -434936,7 +434936,7 @@ index 000000000000..ba8b6441549b +#endif /* _KBASE_JS_DEFS_H_ */ diff --git a/drivers/gpu/arm/midgard/mali_kbase_linux.h b/drivers/gpu/arm/midgard/mali_kbase_linux.h new file mode 100755 -index 000000000000..6d1e61fd41e0 +index 000000000..6d1e61fd4 --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_linux.h @@ -0,0 +1,43 @@ @@ -434985,7 +434985,7 @@ index 000000000000..6d1e61fd41e0 +#endif /* _KBASE_LINUX_H_ */ diff --git a/drivers/gpu/arm/midgard/mali_kbase_mem.c b/drivers/gpu/arm/midgard/mali_kbase_mem.c new file mode 100755 -index 000000000000..8cbb5f6765b8 +index 000000000..8cbb5f676 --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_mem.c @@ -0,0 +1,2657 @@ @@ -437648,7 +437648,7 @@ index 000000000000..8cbb5f6765b8 +} diff --git a/drivers/gpu/arm/midgard/mali_kbase_mem.h b/drivers/gpu/arm/midgard/mali_kbase_mem.h new file mode 100755 -index 000000000000..3f3eaa3fda98 +index 000000000..3f3eaa3fd --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_mem.h @@ -0,0 +1,1068 @@ @@ -438722,7 +438722,7 @@ index 000000000000..3f3eaa3fda98 +#endif /* _KBASE_MEM_H_ */ diff --git a/drivers/gpu/arm/midgard/mali_kbase_mem_linux.c b/drivers/gpu/arm/midgard/mali_kbase_mem_linux.c new file mode 100755 -index 000000000000..e20315e67242 +index 000000000..e20315e67 --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_mem_linux.c @@ -0,0 +1,2578 @@ @@ -441306,7 +441306,7 @@ index 000000000000..e20315e67242 + diff --git a/drivers/gpu/arm/midgard/mali_kbase_mem_linux.h b/drivers/gpu/arm/midgard/mali_kbase_mem_linux.h new file mode 100755 -index 000000000000..33b3554f9d82 +index 000000000..33b3554f9 --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_mem_linux.h @@ -0,0 +1,231 @@ @@ -441543,7 +441543,7 @@ index 000000000000..33b3554f9d82 +#endif /* _KBASE_MEM_LINUX_H_ */ diff --git a/drivers/gpu/arm/midgard/mali_kbase_mem_lowlevel.h b/drivers/gpu/arm/midgard/mali_kbase_mem_lowlevel.h new file mode 100755 -index 000000000000..9725fd3f05df +index 000000000..9725fd3f0 --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_mem_lowlevel.h @@ -0,0 +1,45 @@ @@ -441594,7 +441594,7 @@ index 000000000000..9725fd3f05df +#endif /* _KBASE_LOWLEVEL_H */ diff --git a/drivers/gpu/arm/midgard/mali_kbase_mem_pool.c b/drivers/gpu/arm/midgard/mali_kbase_mem_pool.c new file mode 100755 -index 000000000000..a8269940a037 +index 000000000..a8269940a --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_mem_pool.c @@ -0,0 +1,569 @@ @@ -442169,7 +442169,7 @@ index 000000000000..a8269940a037 +} diff --git a/drivers/gpu/arm/midgard/mali_kbase_mem_pool_debugfs.c b/drivers/gpu/arm/midgard/mali_kbase_mem_pool_debugfs.c new file mode 100755 -index 000000000000..585fba036c9e +index 000000000..585fba036 --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_mem_pool_debugfs.c @@ -0,0 +1,81 @@ @@ -442256,7 +442256,7 @@ index 000000000000..585fba036c9e +#endif /* CONFIG_DEBUG_FS */ diff --git a/drivers/gpu/arm/midgard/mali_kbase_mem_pool_debugfs.h b/drivers/gpu/arm/midgard/mali_kbase_mem_pool_debugfs.h new file mode 100755 -index 000000000000..1442854e8956 +index 000000000..1442854e8 --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_mem_pool_debugfs.h @@ -0,0 +1,36 @@ @@ -442298,7 +442298,7 @@ index 000000000000..1442854e8956 + diff --git a/drivers/gpu/arm/midgard/mali_kbase_mem_profile_debugfs.c b/drivers/gpu/arm/midgard/mali_kbase_mem_profile_debugfs.c new file mode 100755 -index 000000000000..d58fd8d62fde +index 000000000..d58fd8d62 --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_mem_profile_debugfs.c @@ -0,0 +1,121 @@ @@ -442425,7 +442425,7 @@ index 000000000000..d58fd8d62fde +#endif /* CONFIG_DEBUG_FS */ diff --git a/drivers/gpu/arm/midgard/mali_kbase_mem_profile_debugfs.h b/drivers/gpu/arm/midgard/mali_kbase_mem_profile_debugfs.h new file mode 100755 -index 000000000000..a1dc2e0b165b +index 000000000..a1dc2e0b1 --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_mem_profile_debugfs.h @@ -0,0 +1,59 @@ @@ -442490,7 +442490,7 @@ index 000000000000..a1dc2e0b165b + diff --git a/drivers/gpu/arm/midgard/mali_kbase_mem_profile_debugfs_buf_size.h b/drivers/gpu/arm/midgard/mali_kbase_mem_profile_debugfs_buf_size.h new file mode 100755 -index 000000000000..82f0702974c2 +index 000000000..82f070297 --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_mem_profile_debugfs_buf_size.h @@ -0,0 +1,33 @@ @@ -442529,7 +442529,7 @@ index 000000000000..82f0702974c2 + diff --git a/drivers/gpu/arm/midgard/mali_kbase_mmu.c b/drivers/gpu/arm/midgard/mali_kbase_mmu.c new file mode 100755 -index 000000000000..26144850a588 +index 000000000..26144850a --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_mmu.c @@ -0,0 +1,2088 @@ @@ -444623,7 +444623,7 @@ index 000000000000..26144850a588 +} diff --git a/drivers/gpu/arm/midgard/mali_kbase_mmu_hw.h b/drivers/gpu/arm/midgard/mali_kbase_mmu_hw.h new file mode 100755 -index 000000000000..986e959e9a0c +index 000000000..986e959e9 --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_mmu_hw.h @@ -0,0 +1,123 @@ @@ -444752,7 +444752,7 @@ index 000000000000..986e959e9a0c +#endif /* _MALI_KBASE_MMU_HW_H_ */ diff --git a/drivers/gpu/arm/midgard/mali_kbase_mmu_mode.h b/drivers/gpu/arm/midgard/mali_kbase_mmu_mode.h new file mode 100755 -index 000000000000..b487c00426ae +index 000000000..b487c0042 --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_mmu_mode.h @@ -0,0 +1,47 @@ @@ -444805,7 +444805,7 @@ index 000000000000..b487c00426ae +#endif /* _MALI_KBASE_MMU_MODE_ */ diff --git a/drivers/gpu/arm/midgard/mali_kbase_mmu_mode_aarch64.c b/drivers/gpu/arm/midgard/mali_kbase_mmu_mode_aarch64.c new file mode 100755 -index 000000000000..60df171164ff +index 000000000..60df17116 --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_mmu_mode_aarch64.c @@ -0,0 +1,200 @@ @@ -445011,7 +445011,7 @@ index 000000000000..60df171164ff +} diff --git a/drivers/gpu/arm/midgard/mali_kbase_mmu_mode_lpae.c b/drivers/gpu/arm/midgard/mali_kbase_mmu_mode_lpae.c new file mode 100755 -index 000000000000..53fbbc73af91 +index 000000000..53fbbc73a --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_mmu_mode_lpae.c @@ -0,0 +1,198 @@ @@ -445215,7 +445215,7 @@ index 000000000000..53fbbc73af91 +} diff --git a/drivers/gpu/arm/midgard/mali_kbase_platform_fake.c b/drivers/gpu/arm/midgard/mali_kbase_platform_fake.c new file mode 100755 -index 000000000000..1a44957fe44a +index 000000000..1a44957fe --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_platform_fake.c @@ -0,0 +1,124 @@ @@ -445345,7 +445345,7 @@ index 000000000000..1a44957fe44a + diff --git a/drivers/gpu/arm/midgard/mali_kbase_pm.c b/drivers/gpu/arm/midgard/mali_kbase_pm.c new file mode 100755 -index 000000000000..97d543464c28 +index 000000000..97d543464 --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_pm.c @@ -0,0 +1,205 @@ @@ -445556,7 +445556,7 @@ index 000000000000..97d543464c28 + diff --git a/drivers/gpu/arm/midgard/mali_kbase_pm.h b/drivers/gpu/arm/midgard/mali_kbase_pm.h new file mode 100755 -index 000000000000..37fa2479df74 +index 000000000..37fa2479d --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_pm.h @@ -0,0 +1,171 @@ @@ -445733,7 +445733,7 @@ index 000000000000..37fa2479df74 +#endif /* _KBASE_PM_H_ */ diff --git a/drivers/gpu/arm/midgard/mali_kbase_profiling_gator_api.h b/drivers/gpu/arm/midgard/mali_kbase_profiling_gator_api.h new file mode 100755 -index 000000000000..7fb674eded37 +index 000000000..7fb674ede --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_profiling_gator_api.h @@ -0,0 +1,40 @@ @@ -445779,7 +445779,7 @@ index 000000000000..7fb674eded37 +#endif /* _KBASE_PROFILING_GATOR_API */ diff --git a/drivers/gpu/arm/midgard/mali_kbase_regs_history_debugfs.c b/drivers/gpu/arm/midgard/mali_kbase_regs_history_debugfs.c new file mode 100755 -index 000000000000..c970650069cd +index 000000000..c97065006 --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_regs_history_debugfs.c @@ -0,0 +1,130 @@ @@ -445915,7 +445915,7 @@ index 000000000000..c970650069cd +#endif /* CONFIG_DEBUG_FS */ diff --git a/drivers/gpu/arm/midgard/mali_kbase_regs_history_debugfs.h b/drivers/gpu/arm/midgard/mali_kbase_regs_history_debugfs.h new file mode 100755 -index 000000000000..f10837002330 +index 000000000..f10837002 --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_regs_history_debugfs.h @@ -0,0 +1,50 @@ @@ -445971,7 +445971,7 @@ index 000000000000..f10837002330 +#endif /*_KBASE_REGS_HISTORY_DEBUGFS_H*/ diff --git a/drivers/gpu/arm/midgard/mali_kbase_replay.c b/drivers/gpu/arm/midgard/mali_kbase_replay.c new file mode 100755 -index 000000000000..84aa3316e435 +index 000000000..84aa3316e --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_replay.c @@ -0,0 +1,1166 @@ @@ -447143,7 +447143,7 @@ index 000000000000..84aa3316e435 +} diff --git a/drivers/gpu/arm/midgard/mali_kbase_smc.c b/drivers/gpu/arm/midgard/mali_kbase_smc.c new file mode 100755 -index 000000000000..6c8cf73ae58c +index 000000000..6c8cf73ae --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_smc.c @@ -0,0 +1,86 @@ @@ -447235,7 +447235,7 @@ index 000000000000..6c8cf73ae58c + diff --git a/drivers/gpu/arm/midgard/mali_kbase_smc.h b/drivers/gpu/arm/midgard/mali_kbase_smc.h new file mode 100755 -index 000000000000..9bff3d2e8b4d +index 000000000..9bff3d2e8 --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_smc.h @@ -0,0 +1,67 @@ @@ -447308,7 +447308,7 @@ index 000000000000..9bff3d2e8b4d +#endif /* _KBASE_SMC_H_ */ diff --git a/drivers/gpu/arm/midgard/mali_kbase_softjobs.c b/drivers/gpu/arm/midgard/mali_kbase_softjobs.c new file mode 100755 -index 000000000000..396953e780a8 +index 000000000..396953e78 --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_softjobs.c @@ -0,0 +1,1549 @@ @@ -448863,7 +448863,7 @@ index 000000000000..396953e780a8 +} diff --git a/drivers/gpu/arm/midgard/mali_kbase_strings.c b/drivers/gpu/arm/midgard/mali_kbase_strings.c new file mode 100755 -index 000000000000..c98762cec244 +index 000000000..c98762cec --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_strings.c @@ -0,0 +1,23 @@ @@ -448892,7 +448892,7 @@ index 000000000000..c98762cec244 +const char kbase_timeline_name[] = KBASE_TIMELINE_NAME; diff --git a/drivers/gpu/arm/midgard/mali_kbase_strings.h b/drivers/gpu/arm/midgard/mali_kbase_strings.h new file mode 100755 -index 000000000000..41b8fdbec6a4 +index 000000000..41b8fdbec --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_strings.h @@ -0,0 +1,19 @@ @@ -448917,7 +448917,7 @@ index 000000000000..41b8fdbec6a4 +extern const char kbase_timeline_name[]; diff --git a/drivers/gpu/arm/midgard/mali_kbase_sync.h b/drivers/gpu/arm/midgard/mali_kbase_sync.h new file mode 100755 -index 000000000000..33b580595563 +index 000000000..33b580595 --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_sync.h @@ -0,0 +1,203 @@ @@ -449126,7 +449126,7 @@ index 000000000000..33b580595563 +#endif /* MALI_KBASE_SYNC_H */ diff --git a/drivers/gpu/arm/midgard/mali_kbase_sync_android.c b/drivers/gpu/arm/midgard/mali_kbase_sync_android.c new file mode 100755 -index 000000000000..d7349dcae69a +index 000000000..d7349dcae --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_sync_android.c @@ -0,0 +1,537 @@ @@ -449669,7 +449669,7 @@ index 000000000000..d7349dcae69a +#endif diff --git a/drivers/gpu/arm/midgard/mali_kbase_sync_common.c b/drivers/gpu/arm/midgard/mali_kbase_sync_common.c new file mode 100755 -index 000000000000..457def296684 +index 000000000..457def296 --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_sync_common.c @@ -0,0 +1,43 @@ @@ -449718,7 +449718,7 @@ index 000000000000..457def296684 +} diff --git a/drivers/gpu/arm/midgard/mali_kbase_sync_file.c b/drivers/gpu/arm/midgard/mali_kbase_sync_file.c new file mode 100755 -index 000000000000..60b5d74db33e +index 000000000..60b5d74db --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_sync_file.c @@ -0,0 +1,359 @@ @@ -450083,7 +450083,7 @@ index 000000000000..60b5d74db33e +#endif diff --git a/drivers/gpu/arm/midgard/mali_kbase_tlstream.c b/drivers/gpu/arm/midgard/mali_kbase_tlstream.c new file mode 100755 -index 000000000000..c8310c45f143 +index 000000000..c8310c45f --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_tlstream.c @@ -0,0 +1,2572 @@ @@ -452661,7 +452661,7 @@ index 000000000000..c8310c45f143 +} diff --git a/drivers/gpu/arm/midgard/mali_kbase_tlstream.h b/drivers/gpu/arm/midgard/mali_kbase_tlstream.h new file mode 100755 -index 000000000000..c0a1117d5f25 +index 000000000..c0a1117d5 --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_tlstream.h @@ -0,0 +1,623 @@ @@ -453290,7 +453290,7 @@ index 000000000000..c0a1117d5f25 + diff --git a/drivers/gpu/arm/midgard/mali_kbase_trace_defs.h b/drivers/gpu/arm/midgard/mali_kbase_trace_defs.h new file mode 100755 -index 000000000000..e2e0544208ce +index 000000000..e2e054420 --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_trace_defs.h @@ -0,0 +1,264 @@ @@ -453560,7 +453560,7 @@ index 000000000000..e2e0544208ce +/* ***** THE LACK OF HEADER GUARDS IS INTENTIONAL ***** */ diff --git a/drivers/gpu/arm/midgard/mali_kbase_trace_timeline.c b/drivers/gpu/arm/midgard/mali_kbase_trace_timeline.c new file mode 100755 -index 000000000000..5830e87f0818 +index 000000000..5830e87f0 --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_trace_timeline.c @@ -0,0 +1,236 @@ @@ -453802,7 +453802,7 @@ index 000000000000..5830e87f0818 +#endif /* CONFIG_MALI_TRACE_TIMELINE */ diff --git a/drivers/gpu/arm/midgard/mali_kbase_trace_timeline.h b/drivers/gpu/arm/midgard/mali_kbase_trace_timeline.h new file mode 100755 -index 000000000000..a04f7c1420e0 +index 000000000..a04f7c142 --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_trace_timeline.h @@ -0,0 +1,363 @@ @@ -454171,7 +454171,7 @@ index 000000000000..a04f7c1420e0 + diff --git a/drivers/gpu/arm/midgard/mali_kbase_trace_timeline_defs.h b/drivers/gpu/arm/midgard/mali_kbase_trace_timeline_defs.h new file mode 100755 -index 000000000000..156a95a67f4a +index 000000000..156a95a67 --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_trace_timeline_defs.h @@ -0,0 +1,140 @@ @@ -454317,7 +454317,7 @@ index 000000000000..156a95a67f4a +"_tgid,job_slot,_producerof_atom_number_completed") diff --git a/drivers/gpu/arm/midgard/mali_kbase_uku.h b/drivers/gpu/arm/midgard/mali_kbase_uku.h new file mode 100755 -index 000000000000..c22a59324248 +index 000000000..c22a59324 --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_uku.h @@ -0,0 +1,545 @@ @@ -454868,7 +454868,7 @@ index 000000000000..c22a59324248 + diff --git a/drivers/gpu/arm/midgard/mali_kbase_utility.c b/drivers/gpu/arm/midgard/mali_kbase_utility.c new file mode 100755 -index 000000000000..be474ff87401 +index 000000000..be474ff87 --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_utility.c @@ -0,0 +1,33 @@ @@ -454907,7 +454907,7 @@ index 000000000000..be474ff87401 +} diff --git a/drivers/gpu/arm/midgard/mali_kbase_utility.h b/drivers/gpu/arm/midgard/mali_kbase_utility.h new file mode 100755 -index 000000000000..fd7252dab0de +index 000000000..fd7252dab --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_utility.h @@ -0,0 +1,37 @@ @@ -454950,7 +454950,7 @@ index 000000000000..fd7252dab0de +#endif /* _KBASE_UTILITY_H */ diff --git a/drivers/gpu/arm/midgard/mali_kbase_vinstr.c b/drivers/gpu/arm/midgard/mali_kbase_vinstr.c new file mode 100755 -index 000000000000..8395568d0efa +index 000000000..8395568d0 --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_vinstr.c @@ -0,0 +1,2070 @@ @@ -457026,7 +457026,7 @@ index 000000000000..8395568d0efa +} diff --git a/drivers/gpu/arm/midgard/mali_kbase_vinstr.h b/drivers/gpu/arm/midgard/mali_kbase_vinstr.h new file mode 100755 -index 000000000000..6207d25aef06 +index 000000000..6207d25ae --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_kbase_vinstr.h @@ -0,0 +1,155 @@ @@ -457187,7 +457187,7 @@ index 000000000000..6207d25aef06 + diff --git a/drivers/gpu/arm/midgard/mali_linux_kbase_trace.h b/drivers/gpu/arm/midgard/mali_linux_kbase_trace.h new file mode 100755 -index 000000000000..5d6b4021d626 +index 000000000..5d6b4021d --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_linux_kbase_trace.h @@ -0,0 +1,201 @@ @@ -457394,7 +457394,7 @@ index 000000000000..5d6b4021d626 +#include diff --git a/drivers/gpu/arm/midgard/mali_linux_trace.h b/drivers/gpu/arm/midgard/mali_linux_trace.h new file mode 100755 -index 000000000000..2be06a552768 +index 000000000..2be06a552 --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_linux_trace.h @@ -0,0 +1,189 @@ @@ -457589,7 +457589,7 @@ index 000000000000..2be06a552768 +#include diff --git a/drivers/gpu/arm/midgard/mali_malisw.h b/drivers/gpu/arm/midgard/mali_malisw.h new file mode 100755 -index 000000000000..99452933eab4 +index 000000000..99452933e --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_malisw.h @@ -0,0 +1,131 @@ @@ -457726,7 +457726,7 @@ index 000000000000..99452933eab4 +#endif /* _MALISW_H_ */ diff --git a/drivers/gpu/arm/midgard/mali_midg_coherency.h b/drivers/gpu/arm/midgard/mali_midg_coherency.h new file mode 100755 -index 000000000000..a509cbd5f175 +index 000000000..a509cbd5f --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_midg_coherency.h @@ -0,0 +1,26 @@ @@ -457758,7 +457758,7 @@ index 000000000000..a509cbd5f175 +#endif /* _MIDG_COHERENCY_H_ */ diff --git a/drivers/gpu/arm/midgard/mali_midg_regmap.h b/drivers/gpu/arm/midgard/mali_midg_regmap.h new file mode 100755 -index 000000000000..7d7b7bcd3cc3 +index 000000000..7d7b7bcd3 --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_midg_regmap.h @@ -0,0 +1,611 @@ @@ -458375,7 +458375,7 @@ index 000000000000..7d7b7bcd3cc3 +#endif /* _MIDGARD_REGMAP_H_ */ diff --git a/drivers/gpu/arm/midgard/mali_timeline.h b/drivers/gpu/arm/midgard/mali_timeline.h new file mode 100755 -index 000000000000..bd5f6614b6bb +index 000000000..bd5f6614b --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_timeline.h @@ -0,0 +1,396 @@ @@ -458777,7 +458777,7 @@ index 000000000000..bd5f6614b6bb + diff --git a/drivers/gpu/arm/midgard/mali_uk.h b/drivers/gpu/arm/midgard/mali_uk.h new file mode 100755 -index 000000000000..841d03fb5873 +index 000000000..841d03fb5 --- /dev/null +++ b/drivers/gpu/arm/midgard/mali_uk.h @@ -0,0 +1,141 @@ @@ -458924,7 +458924,7 @@ index 000000000000..841d03fb5873 +#endif /* _UK_H_ */ diff --git a/drivers/gpu/arm/midgard/platform/Kconfig b/drivers/gpu/arm/midgard/platform/Kconfig new file mode 100755 -index 000000000000..8fb4e917c4fa +index 000000000..8fb4e917c --- /dev/null +++ b/drivers/gpu/arm/midgard/platform/Kconfig @@ -0,0 +1,24 @@ @@ -458954,7 +458954,7 @@ index 000000000000..8fb4e917c4fa + diff --git a/drivers/gpu/arm/midgard/platform/devicetree/Kbuild b/drivers/gpu/arm/midgard/platform/devicetree/Kbuild new file mode 100755 -index 000000000000..e888a42fc69a +index 000000000..e888a42fc --- /dev/null +++ b/drivers/gpu/arm/midgard/platform/devicetree/Kbuild @@ -0,0 +1,18 @@ @@ -458978,7 +458978,7 @@ index 000000000000..e888a42fc69a + $(MALI_PLATFORM_THIRDPARTY_DIR)/mali_kbase_runtime_pm.o diff --git a/drivers/gpu/arm/midgard/platform/devicetree/mali_kbase_config_devicetree.c b/drivers/gpu/arm/midgard/platform/devicetree/mali_kbase_config_devicetree.c new file mode 100755 -index 000000000000..b2a7c93f12a9 +index 000000000..b2a7c93f1 --- /dev/null +++ b/drivers/gpu/arm/midgard/platform/devicetree/mali_kbase_config_devicetree.c @@ -0,0 +1,31 @@ @@ -459015,7 +459015,7 @@ index 000000000000..b2a7c93f12a9 +} diff --git a/drivers/gpu/arm/midgard/platform/devicetree/mali_kbase_config_platform.h b/drivers/gpu/arm/midgard/platform/devicetree/mali_kbase_config_platform.h new file mode 100755 -index 000000000000..49e107f98000 +index 000000000..49e107f98 --- /dev/null +++ b/drivers/gpu/arm/midgard/platform/devicetree/mali_kbase_config_platform.h @@ -0,0 +1,73 @@ @@ -459094,7 +459094,7 @@ index 000000000000..49e107f98000 +extern struct kbase_pm_callback_conf pm_callbacks; diff --git a/drivers/gpu/arm/midgard/platform/devicetree/mali_kbase_runtime_pm.c b/drivers/gpu/arm/midgard/platform/devicetree/mali_kbase_runtime_pm.c new file mode 100755 -index 000000000000..aa4376afd3ba +index 000000000..aa4376afd --- /dev/null +++ b/drivers/gpu/arm/midgard/platform/devicetree/mali_kbase_runtime_pm.c @@ -0,0 +1,100 @@ @@ -459200,7 +459200,7 @@ index 000000000000..aa4376afd3ba + diff --git a/drivers/gpu/arm/midgard/platform/mali_kbase_platform_common.h b/drivers/gpu/arm/midgard/platform/mali_kbase_platform_common.h new file mode 100755 -index 000000000000..c11085af5f24 +index 000000000..c11085af5 --- /dev/null +++ b/drivers/gpu/arm/midgard/platform/mali_kbase_platform_common.h @@ -0,0 +1,28 @@ @@ -459234,7 +459234,7 @@ index 000000000000..c11085af5f24 +int kbase_platform_rk_init_opp_table(struct kbase_device *kbdev); diff --git a/drivers/gpu/arm/midgard/platform/mali_kbase_platform_fake.h b/drivers/gpu/arm/midgard/platform/mali_kbase_platform_fake.h new file mode 100755 -index 000000000000..01f9dfce93cc +index 000000000..01f9dfce9 --- /dev/null +++ b/drivers/gpu/arm/midgard/platform/mali_kbase_platform_fake.h @@ -0,0 +1,38 @@ @@ -459278,7 +459278,7 @@ index 000000000000..01f9dfce93cc +#endif /* CONFIG_MALI_PLATFORM_FAKE */ diff --git a/drivers/gpu/arm/midgard/platform/rk/Kbuild b/drivers/gpu/arm/midgard/platform/rk/Kbuild new file mode 100755 -index 000000000000..db993487e3be +index 000000000..db993487e --- /dev/null +++ b/drivers/gpu/arm/midgard/platform/rk/Kbuild @@ -0,0 +1,17 @@ @@ -459301,7 +459301,7 @@ index 000000000000..db993487e3be + diff --git a/drivers/gpu/arm/midgard/platform/rk/custom_log.h b/drivers/gpu/arm/midgard/platform/rk/custom_log.h new file mode 100755 -index 000000000000..fe5e1224149e +index 000000000..fe5e12241 --- /dev/null +++ b/drivers/gpu/arm/midgard/platform/rk/custom_log.h @@ -0,0 +1,209 @@ @@ -459516,7 +459516,7 @@ index 000000000000..fe5e1224149e +#endif /* __CUSTOM_LOG_H__ */ diff --git a/drivers/gpu/arm/midgard/platform/rk/mali_kbase_config_platform.h b/drivers/gpu/arm/midgard/platform/rk/mali_kbase_config_platform.h new file mode 100755 -index 000000000000..07c5b6f8a760 +index 000000000..07c5b6f8a --- /dev/null +++ b/drivers/gpu/arm/midgard/platform/rk/mali_kbase_config_platform.h @@ -0,0 +1,88 @@ @@ -459610,7 +459610,7 @@ index 000000000000..07c5b6f8a760 + diff --git a/drivers/gpu/arm/midgard/platform/rk/mali_kbase_config_rk.c b/drivers/gpu/arm/midgard/platform/rk/mali_kbase_config_rk.c new file mode 100755 -index 000000000000..8ad910c1256f +index 000000000..8ad910c12 --- /dev/null +++ b/drivers/gpu/arm/midgard/platform/rk/mali_kbase_config_rk.c @@ -0,0 +1,492 @@ @@ -460108,7 +460108,7 @@ index 000000000000..8ad910c1256f +} diff --git a/drivers/gpu/arm/midgard/platform/rk/mali_kbase_rk.h b/drivers/gpu/arm/midgard/platform/rk/mali_kbase_rk.h new file mode 100755 -index 000000000000..6eab25014d21 +index 000000000..6eab25014 --- /dev/null +++ b/drivers/gpu/arm/midgard/platform/rk/mali_kbase_rk.h @@ -0,0 +1,62 @@ @@ -460176,7 +460176,7 @@ index 000000000000..6eab25014d21 + diff --git a/drivers/gpu/arm/midgard/platform/vexpress/Kbuild b/drivers/gpu/arm/midgard/platform/vexpress/Kbuild new file mode 100755 -index 000000000000..1caa293666d3 +index 000000000..1caa29366 --- /dev/null +++ b/drivers/gpu/arm/midgard/platform/vexpress/Kbuild @@ -0,0 +1,18 @@ @@ -460200,7 +460200,7 @@ index 000000000000..1caa293666d3 + $(MALI_PLATFORM_THIRDPARTY_DIR)/mali_kbase_cpu_vexpress.o diff --git a/drivers/gpu/arm/midgard/platform/vexpress/mali_kbase_config_platform.h b/drivers/gpu/arm/midgard/platform/vexpress/mali_kbase_config_platform.h new file mode 100755 -index 000000000000..02835f129aa3 +index 000000000..02835f129 --- /dev/null +++ b/drivers/gpu/arm/midgard/platform/vexpress/mali_kbase_config_platform.h @@ -0,0 +1,75 @@ @@ -460281,7 +460281,7 @@ index 000000000000..02835f129aa3 +extern struct kbase_pm_callback_conf pm_callbacks; diff --git a/drivers/gpu/arm/midgard/platform/vexpress/mali_kbase_config_vexpress.c b/drivers/gpu/arm/midgard/platform/vexpress/mali_kbase_config_vexpress.c new file mode 100755 -index 000000000000..15ce2bc5eea5 +index 000000000..15ce2bc5e --- /dev/null +++ b/drivers/gpu/arm/midgard/platform/vexpress/mali_kbase_config_vexpress.c @@ -0,0 +1,85 @@ @@ -460372,7 +460372,7 @@ index 000000000000..15ce2bc5eea5 +} diff --git a/drivers/gpu/arm/midgard/platform/vexpress/mali_kbase_cpu_vexpress.c b/drivers/gpu/arm/midgard/platform/vexpress/mali_kbase_cpu_vexpress.c new file mode 100755 -index 000000000000..4665f98cbbe4 +index 000000000..4665f98cb --- /dev/null +++ b/drivers/gpu/arm/midgard/platform/vexpress/mali_kbase_cpu_vexpress.c @@ -0,0 +1,279 @@ @@ -460657,7 +460657,7 @@ index 000000000000..4665f98cbbe4 +} diff --git a/drivers/gpu/arm/midgard/platform/vexpress/mali_kbase_cpu_vexpress.h b/drivers/gpu/arm/midgard/platform/vexpress/mali_kbase_cpu_vexpress.h new file mode 100755 -index 000000000000..da865698133a +index 000000000..da8656981 --- /dev/null +++ b/drivers/gpu/arm/midgard/platform/vexpress/mali_kbase_cpu_vexpress.h @@ -0,0 +1,38 @@ @@ -460701,7 +460701,7 @@ index 000000000000..da865698133a +#endif /* _KBASE_CPU_VEXPRESS_H_ */ diff --git a/drivers/gpu/arm/midgard/platform/vexpress_1xv7_a57/Kbuild b/drivers/gpu/arm/midgard/platform/vexpress_1xv7_a57/Kbuild new file mode 100755 -index 000000000000..7efe8fa4263b +index 000000000..7efe8fa42 --- /dev/null +++ b/drivers/gpu/arm/midgard/platform/vexpress_1xv7_a57/Kbuild @@ -0,0 +1,16 @@ @@ -460723,7 +460723,7 @@ index 000000000000..7efe8fa4263b +mali_kbase-y += $(MALI_PLATFORM_THIRDPARTY_DIR)/mali_kbase_config_vexpress.o diff --git a/drivers/gpu/arm/midgard/platform/vexpress_1xv7_a57/mali_kbase_config_platform.h b/drivers/gpu/arm/midgard/platform/vexpress_1xv7_a57/mali_kbase_config_platform.h new file mode 100755 -index 000000000000..0efbf3962f98 +index 000000000..0efbf3962 --- /dev/null +++ b/drivers/gpu/arm/midgard/platform/vexpress_1xv7_a57/mali_kbase_config_platform.h @@ -0,0 +1,73 @@ @@ -460802,7 +460802,7 @@ index 000000000000..0efbf3962f98 +extern struct kbase_pm_callback_conf pm_callbacks; diff --git a/drivers/gpu/arm/midgard/platform/vexpress_1xv7_a57/mali_kbase_config_vexpress.c b/drivers/gpu/arm/midgard/platform/vexpress_1xv7_a57/mali_kbase_config_vexpress.c new file mode 100755 -index 000000000000..3ff0930fb4a3 +index 000000000..3ff0930fb --- /dev/null +++ b/drivers/gpu/arm/midgard/platform/vexpress_1xv7_a57/mali_kbase_config_vexpress.c @@ -0,0 +1,79 @@ @@ -460887,7 +460887,7 @@ index 000000000000..3ff0930fb4a3 +} diff --git a/drivers/gpu/arm/midgard/platform/vexpress_6xvirtex7_10mhz/Kbuild b/drivers/gpu/arm/midgard/platform/vexpress_6xvirtex7_10mhz/Kbuild new file mode 100755 -index 000000000000..1caa293666d3 +index 000000000..1caa29366 --- /dev/null +++ b/drivers/gpu/arm/midgard/platform/vexpress_6xvirtex7_10mhz/Kbuild @@ -0,0 +1,18 @@ @@ -460911,7 +460911,7 @@ index 000000000000..1caa293666d3 + $(MALI_PLATFORM_THIRDPARTY_DIR)/mali_kbase_cpu_vexpress.o diff --git a/drivers/gpu/arm/midgard/platform/vexpress_6xvirtex7_10mhz/mali_kbase_config_platform.h b/drivers/gpu/arm/midgard/platform/vexpress_6xvirtex7_10mhz/mali_kbase_config_platform.h new file mode 100755 -index 000000000000..dbdf21e009f9 +index 000000000..dbdf21e00 --- /dev/null +++ b/drivers/gpu/arm/midgard/platform/vexpress_6xvirtex7_10mhz/mali_kbase_config_platform.h @@ -0,0 +1,75 @@ @@ -460992,7 +460992,7 @@ index 000000000000..dbdf21e009f9 +extern struct kbase_pm_callback_conf pm_callbacks; diff --git a/drivers/gpu/arm/midgard/platform/vexpress_6xvirtex7_10mhz/mali_kbase_config_vexpress.c b/drivers/gpu/arm/midgard/platform/vexpress_6xvirtex7_10mhz/mali_kbase_config_vexpress.c new file mode 100755 -index 000000000000..76ffe4a1e59e +index 000000000..76ffe4a1e --- /dev/null +++ b/drivers/gpu/arm/midgard/platform/vexpress_6xvirtex7_10mhz/mali_kbase_config_vexpress.c @@ -0,0 +1,83 @@ @@ -461081,7 +461081,7 @@ index 000000000000..76ffe4a1e59e + diff --git a/drivers/gpu/arm/midgard/platform/vexpress_6xvirtex7_10mhz/mali_kbase_cpu_vexpress.c b/drivers/gpu/arm/midgard/platform/vexpress_6xvirtex7_10mhz/mali_kbase_cpu_vexpress.c new file mode 100755 -index 000000000000..816dff49835f +index 000000000..816dff498 --- /dev/null +++ b/drivers/gpu/arm/midgard/platform/vexpress_6xvirtex7_10mhz/mali_kbase_cpu_vexpress.c @@ -0,0 +1,71 @@ @@ -461158,7 +461158,7 @@ index 000000000000..816dff49835f +} diff --git a/drivers/gpu/arm/midgard/platform/vexpress_6xvirtex7_10mhz/mali_kbase_cpu_vexpress.h b/drivers/gpu/arm/midgard/platform/vexpress_6xvirtex7_10mhz/mali_kbase_cpu_vexpress.h new file mode 100755 -index 000000000000..23647ccb0871 +index 000000000..23647ccb0 --- /dev/null +++ b/drivers/gpu/arm/midgard/platform/vexpress_6xvirtex7_10mhz/mali_kbase_cpu_vexpress.h @@ -0,0 +1,28 @@ @@ -461192,7 +461192,7 @@ index 000000000000..23647ccb0871 +#endif /* _KBASE_CPU_VEXPRESS_H_ */ diff --git a/drivers/gpu/arm/midgard/platform_dummy/mali_ukk_os.h b/drivers/gpu/arm/midgard/platform_dummy/mali_ukk_os.h new file mode 100755 -index 000000000000..5fa9b39c4bc0 +index 000000000..5fa9b39c4 --- /dev/null +++ b/drivers/gpu/arm/midgard/platform_dummy/mali_ukk_os.h @@ -0,0 +1,53 @@ @@ -461251,7 +461251,7 @@ index 000000000000..5fa9b39c4bc0 +#endif /* _UKK_OS_H__ */ diff --git a/drivers/gpu/arm/midgard/protected_mode_switcher.h b/drivers/gpu/arm/midgard/protected_mode_switcher.h new file mode 100755 -index 000000000000..5dc2f3ba8cf6 +index 000000000..5dc2f3ba8 --- /dev/null +++ b/drivers/gpu/arm/midgard/protected_mode_switcher.h @@ -0,0 +1,64 @@ @@ -461321,7 +461321,7 @@ index 000000000000..5dc2f3ba8cf6 +#endif /* _PROTECTED_MODE_SWITCH_H_ */ diff --git a/drivers/gpu/arm/midgard/rename.h b/drivers/gpu/arm/midgard/rename.h new file mode 100755 -index 000000000000..c94b67ff2c27 +index 000000000..c94b67ff2 --- /dev/null +++ b/drivers/gpu/arm/midgard/rename.h @@ -0,0 +1,422 @@ @@ -461749,7 +461749,7 @@ index 000000000000..c94b67ff2c27 +#endif diff --git a/drivers/gpu/arm/midgard/sconscript b/drivers/gpu/arm/midgard/sconscript new file mode 100755 -index 000000000000..ff23d7aebe6e +index 000000000..ff23d7aeb --- /dev/null +++ b/drivers/gpu/arm/midgard/sconscript @@ -0,0 +1,92 @@ @@ -461847,7 +461847,7 @@ index 000000000000..ff23d7aebe6e +env.AppendUnique(BASE=['cutils_linked_list']) diff --git a/drivers/gpu/arm/midgard/tests/Kbuild b/drivers/gpu/arm/midgard/tests/Kbuild new file mode 100755 -index 000000000000..b4bed0473439 +index 000000000..b4bed0473 --- /dev/null +++ b/drivers/gpu/arm/midgard/tests/Kbuild @@ -0,0 +1,17 @@ @@ -461870,7 +461870,7 @@ index 000000000000..b4bed0473439 +obj-$(CONFIG_MALI_IRQ_LATENCY) += mali_kutf_irq_test/ diff --git a/drivers/gpu/arm/midgard/tests/Kconfig b/drivers/gpu/arm/midgard/tests/Kconfig new file mode 100755 -index 000000000000..da0515c065de +index 000000000..da0515c06 --- /dev/null +++ b/drivers/gpu/arm/midgard/tests/Kconfig @@ -0,0 +1,17 @@ @@ -461893,7 +461893,7 @@ index 000000000000..da0515c065de +source "drivers/gpu/arm/midgard/tests/mali_kutf_irq_test/Kconfig" diff --git a/drivers/gpu/arm/midgard/tests/include/kutf/kutf_mem.h b/drivers/gpu/arm/midgard/tests/include/kutf/kutf_mem.h new file mode 100755 -index 000000000000..0d145e42a0ca +index 000000000..0d145e42a --- /dev/null +++ b/drivers/gpu/arm/midgard/tests/include/kutf/kutf_mem.h @@ -0,0 +1,65 @@ @@ -461964,7 +461964,7 @@ index 000000000000..0d145e42a0ca +#endif /* _KERNEL_UTF_MEM_H_ */ diff --git a/drivers/gpu/arm/midgard/tests/include/kutf/kutf_resultset.h b/drivers/gpu/arm/midgard/tests/include/kutf/kutf_resultset.h new file mode 100755 -index 000000000000..1cc85f1b7a46 +index 000000000..1cc85f1b7 --- /dev/null +++ b/drivers/gpu/arm/midgard/tests/include/kutf/kutf_resultset.h @@ -0,0 +1,121 @@ @@ -462091,7 +462091,7 @@ index 000000000000..1cc85f1b7a46 +#endif /* _KERNEL_UTF_RESULTSET_H_ */ diff --git a/drivers/gpu/arm/midgard/tests/include/kutf/kutf_suite.h b/drivers/gpu/arm/midgard/tests/include/kutf/kutf_suite.h new file mode 100755 -index 000000000000..754c3adb1cca +index 000000000..754c3adb1 --- /dev/null +++ b/drivers/gpu/arm/midgard/tests/include/kutf/kutf_suite.h @@ -0,0 +1,508 @@ @@ -462605,7 +462605,7 @@ index 000000000000..754c3adb1cca +#endif /* _KERNEL_UTF_SUITE_H_ */ diff --git a/drivers/gpu/arm/midgard/tests/include/kutf/kutf_utils.h b/drivers/gpu/arm/midgard/tests/include/kutf/kutf_utils.h new file mode 100755 -index 000000000000..c458c1f73802 +index 000000000..c458c1f73 --- /dev/null +++ b/drivers/gpu/arm/midgard/tests/include/kutf/kutf_utils.h @@ -0,0 +1,55 @@ @@ -462666,7 +462666,7 @@ index 000000000000..c458c1f73802 +#endif /* _KERNEL_UTF_UTILS_H_ */ diff --git a/drivers/gpu/arm/midgard/tests/kutf/Kbuild b/drivers/gpu/arm/midgard/tests/kutf/Kbuild new file mode 100755 -index 000000000000..6b840c2ef7b7 +index 000000000..6b840c2ef --- /dev/null +++ b/drivers/gpu/arm/midgard/tests/kutf/Kbuild @@ -0,0 +1,20 @@ @@ -462692,7 +462692,7 @@ index 000000000000..6b840c2ef7b7 +kutf-y := kutf_mem.o kutf_resultset.o kutf_suite.o kutf_utils.o diff --git a/drivers/gpu/arm/midgard/tests/kutf/Kconfig b/drivers/gpu/arm/midgard/tests/kutf/Kconfig new file mode 100755 -index 000000000000..84364716afe3 +index 000000000..84364716a --- /dev/null +++ b/drivers/gpu/arm/midgard/tests/kutf/Kconfig @@ -0,0 +1,22 @@ @@ -462720,7 +462720,7 @@ index 000000000000..84364716afe3 + choose M here - this will generate a single module called kutf. diff --git a/drivers/gpu/arm/midgard/tests/kutf/Makefile b/drivers/gpu/arm/midgard/tests/kutf/Makefile new file mode 100755 -index 000000000000..010c92ca39b9 +index 000000000..010c92ca3 --- /dev/null +++ b/drivers/gpu/arm/midgard/tests/kutf/Makefile @@ -0,0 +1,29 @@ @@ -462755,7 +462755,7 @@ index 000000000000..010c92ca39b9 + $(MAKE) ARCH=$(ARCH) -C $(KDIR) M=$(CURDIR) clean diff --git a/drivers/gpu/arm/midgard/tests/kutf/kutf_mem.c b/drivers/gpu/arm/midgard/tests/kutf/kutf_mem.c new file mode 100755 -index 000000000000..5408e57d469a +index 000000000..5408e57d4 --- /dev/null +++ b/drivers/gpu/arm/midgard/tests/kutf/kutf_mem.c @@ -0,0 +1,94 @@ @@ -462855,7 +462855,7 @@ index 000000000000..5408e57d469a +EXPORT_SYMBOL(kutf_mempool_alloc); diff --git a/drivers/gpu/arm/midgard/tests/kutf/kutf_resultset.c b/drivers/gpu/arm/midgard/tests/kutf/kutf_resultset.c new file mode 100755 -index 000000000000..5bd04969fd55 +index 000000000..5bd04969f --- /dev/null +++ b/drivers/gpu/arm/midgard/tests/kutf/kutf_resultset.c @@ -0,0 +1,95 @@ @@ -462956,7 +462956,7 @@ index 000000000000..5bd04969fd55 + diff --git a/drivers/gpu/arm/midgard/tests/kutf/kutf_suite.c b/drivers/gpu/arm/midgard/tests/kutf/kutf_suite.c new file mode 100755 -index 000000000000..a7cfd3be9c46 +index 000000000..a7cfd3be9 --- /dev/null +++ b/drivers/gpu/arm/midgard/tests/kutf/kutf_suite.c @@ -0,0 +1,1041 @@ @@ -464003,7 +464003,7 @@ index 000000000000..a7cfd3be9c46 +module_exit(exit_kutf_core); diff --git a/drivers/gpu/arm/midgard/tests/kutf/kutf_utils.c b/drivers/gpu/arm/midgard/tests/kutf/kutf_utils.c new file mode 100755 -index 000000000000..a429a2dbf788 +index 000000000..a429a2dbf --- /dev/null +++ b/drivers/gpu/arm/midgard/tests/kutf/kutf_utils.c @@ -0,0 +1,71 @@ @@ -464080,7 +464080,7 @@ index 000000000000..a429a2dbf788 +EXPORT_SYMBOL(kutf_dsprintf); diff --git a/drivers/gpu/arm/midgard/tests/kutf/sconscript b/drivers/gpu/arm/midgard/tests/kutf/sconscript new file mode 100755 -index 000000000000..d7f112448e42 +index 000000000..d7f112448 --- /dev/null +++ b/drivers/gpu/arm/midgard/tests/kutf/sconscript @@ -0,0 +1,21 @@ @@ -464107,7 +464107,7 @@ index 000000000000..d7f112448e42 +kutf_env.KernelObjTarget('kutf', mod) diff --git a/drivers/gpu/arm/midgard/tests/mali_kutf_irq_test/Kbuild b/drivers/gpu/arm/midgard/tests/mali_kutf_irq_test/Kbuild new file mode 100755 -index 000000000000..0cd9cebe9d8b +index 000000000..0cd9cebe9 --- /dev/null +++ b/drivers/gpu/arm/midgard/tests/mali_kutf_irq_test/Kbuild @@ -0,0 +1,20 @@ @@ -464133,7 +464133,7 @@ index 000000000000..0cd9cebe9d8b +mali_kutf_irq_test-y := mali_kutf_irq_test_main.o diff --git a/drivers/gpu/arm/midgard/tests/mali_kutf_irq_test/Kconfig b/drivers/gpu/arm/midgard/tests/mali_kutf_irq_test/Kconfig new file mode 100755 -index 000000000000..16f68d15c46e +index 000000000..16f68d15c --- /dev/null +++ b/drivers/gpu/arm/midgard/tests/mali_kutf_irq_test/Kconfig @@ -0,0 +1,23 @@ @@ -464162,7 +464162,7 @@ index 000000000000..16f68d15c46e + Choosing M here will generate a single module called mali_kutf_irq_test. diff --git a/drivers/gpu/arm/midgard/tests/mali_kutf_irq_test/Makefile b/drivers/gpu/arm/midgard/tests/mali_kutf_irq_test/Makefile new file mode 100755 -index 000000000000..4e948767a4ac +index 000000000..4e948767a --- /dev/null +++ b/drivers/gpu/arm/midgard/tests/mali_kutf_irq_test/Makefile @@ -0,0 +1,51 @@ @@ -464219,7 +464219,7 @@ index 000000000000..4e948767a4ac + $(MAKE) ARCH=$(ARCH) -C $(KDIR) M=$(CURDIR) clean diff --git a/drivers/gpu/arm/midgard/tests/mali_kutf_irq_test/mali_kutf_irq_test_main.c b/drivers/gpu/arm/midgard/tests/mali_kutf_irq_test/mali_kutf_irq_test_main.c new file mode 100755 -index 000000000000..e2ff4432bf80 +index 000000000..e2ff4432b --- /dev/null +++ b/drivers/gpu/arm/midgard/tests/mali_kutf_irq_test/mali_kutf_irq_test_main.c @@ -0,0 +1,257 @@ @@ -464482,7 +464482,7 @@ index 000000000000..e2ff4432bf80 +MODULE_VERSION("1.0"); diff --git a/drivers/gpu/arm/midgard/tests/mali_kutf_irq_test/sconscript b/drivers/gpu/arm/midgard/tests/mali_kutf_irq_test/sconscript new file mode 100755 -index 000000000000..ec837f16448d +index 000000000..ec837f164 --- /dev/null +++ b/drivers/gpu/arm/midgard/tests/mali_kutf_irq_test/sconscript @@ -0,0 +1,30 @@ @@ -464518,7 +464518,7 @@ index 000000000000..ec837f16448d + env.KernelObjTarget('mali_kutf_irq_test', cmd) diff --git a/drivers/gpu/arm/midgard/tests/sconscript b/drivers/gpu/arm/midgard/tests/sconscript new file mode 100755 -index 000000000000..5337e1078e20 +index 000000000..5337e1078 --- /dev/null +++ b/drivers/gpu/arm/midgard/tests/sconscript @@ -0,0 +1,37 @@ @@ -464561,7 +464561,7 @@ index 000000000000..5337e1078e20 + SConscript('mali_kutf_vinstr_test/sconscript') diff --git a/drivers/gpu/arm/sconscript b/drivers/gpu/arm/sconscript new file mode 100755 -index 000000000000..a06092bd5bf0 +index 000000000..a06092bd5 --- /dev/null +++ b/drivers/gpu/arm/sconscript @@ -0,0 +1,25 @@ @@ -464591,7 +464591,7 @@ index 000000000000..a06092bd5bf0 + +SConscript('midgard/sconscript') diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig -index ca868271f4c4..2a9184156172 100644 +index ca868271f..2a9184156 100644 --- a/drivers/gpu/drm/Kconfig +++ b/drivers/gpu/drm/Kconfig @@ -31,6 +31,10 @@ config DRM_MIPI_DBI @@ -464606,7 +464606,7 @@ index ca868271f4c4..2a9184156172 100644 bool depends on DRM diff --git a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c -index aa1bb86293fd..4a1e90bdd8ab 100644 +index aa1bb8629..4a1e90bdd 100644 --- a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c +++ b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c @@ -13,6 +13,7 @@ @@ -465853,7 +465853,7 @@ index aa1bb86293fd..4a1e90bdd8ab 100644 int analogix_dp_start_crc(struct drm_connector *connector) { diff --git a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.h b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.h -index c051502d7fbf..28f2aaa144ef 100644 +index c051502d7..28f2aaa14 100644 --- a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.h +++ b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.h @@ -10,6 +10,7 @@ @@ -465972,7 +465972,7 @@ index c051502d7fbf..28f2aaa144ef 100644 #endif /* _ANALOGIX_DP_CORE_H */ diff --git a/drivers/gpu/drm/bridge/analogix/analogix_dp_reg.c b/drivers/gpu/drm/bridge/analogix/analogix_dp_reg.c -index 914c569ab8c1..e76c66c7c322 100644 +index 914c569ab..e76c66c7c 100644 --- a/drivers/gpu/drm/bridge/analogix/analogix_dp_reg.c +++ b/drivers/gpu/drm/bridge/analogix/analogix_dp_reg.c @@ -11,6 +11,7 @@ @@ -467559,7 +467559,7 @@ index 914c569ab8c1..e76c66c7c322 100644 + analogix_dp_write(dp, ANALOGIX_DP_FUNC_EN_1, reg); +} diff --git a/drivers/gpu/drm/bridge/analogix/analogix_dp_reg.h b/drivers/gpu/drm/bridge/analogix/analogix_dp_reg.h -index e284ee8da58b..df88f1ad0883 100644 +index e284ee8da..df88f1ad0 100644 --- a/drivers/gpu/drm/bridge/analogix/analogix_dp_reg.h +++ b/drivers/gpu/drm/bridge/analogix/analogix_dp_reg.h @@ -15,9 +15,27 @@ @@ -467732,7 +467732,7 @@ index e284ee8da58b..df88f1ad0883 100644 + #endif /* _ANALOGIX_DP_REG_H */ diff --git a/drivers/gpu/drm/bridge/synopsys/Makefile b/drivers/gpu/drm/bridge/synopsys/Makefile -index 91d746ad5de1..ea11fa1d4800 100644 +index 91d746ad5..ea11fa1d4 100644 --- a/drivers/gpu/drm/bridge/synopsys/Makefile +++ b/drivers/gpu/drm/bridge/synopsys/Makefile @@ -1,7 +1,8 @@ @@ -467747,7 +467747,7 @@ index 91d746ad5de1..ea11fa1d4800 100644 obj-$(CONFIG_DRM_DW_MIPI_DSI) += dw-mipi-dsi.o diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi-cec.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi-cec.c -index 70ab4fbdc23e..48fc36d56bc2 100644 +index 70ab4fbdc..48fc36d56 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi-cec.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi-cec.c @@ -12,6 +12,7 @@ @@ -467769,7 +467769,7 @@ index 70ab4fbdc23e..48fc36d56bc2 100644 diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi-hdcp.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi-hdcp.c new file mode 100755 -index 000000000000..24aab5043e61 +index 000000000..24aab5043 --- /dev/null +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi-hdcp.c @@ -0,0 +1,748 @@ @@ -468523,7 +468523,7 @@ index 000000000000..24aab5043e61 +MODULE_LICENSE("GPL"); diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi-hdcp.h b/drivers/gpu/drm/bridge/synopsys/dw-hdmi-hdcp.h new file mode 100755 -index 000000000000..d138f91f3422 +index 000000000..d138f91f3 --- /dev/null +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi-hdcp.h @@ -0,0 +1,54 @@ @@ -468583,7 +468583,7 @@ index 000000000000..d138f91f3422 +#endif diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp-audio.h b/drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp-audio.h new file mode 100755 -index 000000000000..93f1a42954e7 +index 000000000..93f1a4295 --- /dev/null +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp-audio.h @@ -0,0 +1,29 @@ @@ -468618,7 +468618,7 @@ index 000000000000..93f1a42954e7 +#endif diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp-i2s-audio.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp-i2s-audio.c new file mode 100755 -index 000000000000..8aa581555e42 +index 000000000..8aa581555 --- /dev/null +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp-i2s-audio.c @@ -0,0 +1,262 @@ @@ -468886,7 +468886,7 @@ index 000000000000..8aa581555e42 +MODULE_ALIAS("platform:" DRIVER_NAME); diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.c new file mode 100755 -index 000000000000..cd8150b33bbb +index 000000000..cd8150b33 --- /dev/null +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.c @@ -0,0 +1,2455 @@ @@ -471347,7 +471347,7 @@ index 000000000000..cd8150b33bbb +MODULE_ALIAS("platform:dw-hdmi-qp"); diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.h b/drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.h new file mode 100755 -index 000000000000..a891c8333e9b +index 000000000..a891c8333 --- /dev/null +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.h @@ -0,0 +1,824 @@ @@ -472176,7 +472176,7 @@ index 000000000000..a891c8333e9b + +#endif /* __DW_HDMI_QP_H__ */ diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c -index 0c79a9ba48bb..52374e943c57 100644 +index 0c79a9ba4..52374e943 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c @@ -9,6 +9,8 @@ @@ -474606,7 +474606,7 @@ index 0c79a9ba48bb..52374e943c57 100644 EXPORT_SYMBOL_GPL(dw_hdmi_resume); diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.h b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.h -index 1999db05bc3b..50973280048c 100644 +index 1999db05b..509732800 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.h +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.h @@ -509,6 +509,51 @@ @@ -474693,7 +474693,7 @@ index 1999db05bc3b..50973280048c 100644 /* diff --git a/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c b/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c -index 6b268f9445b3..fa00e24c128c 100644 +index 6b268f944..fa00e24c1 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c @@ -244,7 +244,7 @@ struct dw_mipi_dsi { @@ -474944,7 +474944,7 @@ index 6b268f9445b3..fa00e24c128c 100644 MODULE_AUTHOR("Philippe Cornu "); MODULE_DESCRIPTION("DW MIPI DSI host controller driver"); diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c -index 8a871e5c3e26..9418d0847630 100644 +index 8a871e5c3..9418d0847 100644 --- a/drivers/gpu/drm/drm_atomic_helper.c +++ b/drivers/gpu/drm/drm_atomic_helper.c @@ -296,12 +296,14 @@ update_connector_routing(struct drm_atomic_state *state, @@ -474985,7 +474985,7 @@ index 8a871e5c3e26..9418d0847630 100644 ret = drm_atomic_commit(state); diff --git a/drivers/gpu/drm/drm_atomic_state_helper.c b/drivers/gpu/drm/drm_atomic_state_helper.c -index 9ad74045158e..c29183d2aa4e 100644 +index 9ad740451..c29183d2a 100644 --- a/drivers/gpu/drm/drm_atomic_state_helper.c +++ b/drivers/gpu/drm/drm_atomic_state_helper.c @@ -141,6 +141,10 @@ void __drm_atomic_helper_crtc_duplicate_state(struct drm_crtc *crtc, @@ -475010,7 +475010,7 @@ index 9ad74045158e..c29183d2aa4e 100644 EXPORT_SYMBOL(__drm_atomic_helper_crtc_destroy_state); diff --git a/drivers/gpu/drm/drm_atomic_uapi.c b/drivers/gpu/drm/drm_atomic_uapi.c -index 25c269bc4681..975ece7e00a4 100644 +index 25c269bc4..975ece7e0 100644 --- a/drivers/gpu/drm/drm_atomic_uapi.c +++ b/drivers/gpu/drm/drm_atomic_uapi.c @@ -459,6 +459,16 @@ static int drm_atomic_crtc_set_property(struct drm_crtc *crtc, @@ -475042,7 +475042,7 @@ index 25c269bc4681..975ece7e00a4 100644 *val = 0; else if (crtc->funcs->atomic_get_property) diff --git a/drivers/gpu/drm/drm_auth.c b/drivers/gpu/drm/drm_auth.c -index c7adbeaf10b1..232abbba3686 100644 +index c7adbeaf1..232abbba3 100644 --- a/drivers/gpu/drm/drm_auth.c +++ b/drivers/gpu/drm/drm_auth.c @@ -135,18 +135,16 @@ static void drm_set_master(struct drm_device *dev, struct drm_file *fpriv, @@ -475117,7 +475117,7 @@ index c7adbeaf10b1..232abbba3686 100644 { struct drm_master *master = container_of(kref, struct drm_master, refcount); diff --git a/drivers/gpu/drm/drm_color_mgmt.c b/drivers/gpu/drm/drm_color_mgmt.c -index 138ff34b31db..7b270b68ade4 100644 +index 138ff34b3..7b270b68a 100644 --- a/drivers/gpu/drm/drm_color_mgmt.c +++ b/drivers/gpu/drm/drm_color_mgmt.c @@ -33,7 +33,7 @@ @@ -475185,7 +475185,7 @@ index 138ff34b31db..7b270b68ade4 100644 * Setting this to NULL (blob property value set to 0) means a * linear/pass-thru gamma table should be used. This is generally the diff --git a/drivers/gpu/drm/drm_debugfs.c b/drivers/gpu/drm/drm_debugfs.c -index b0a826489488..3d7182001004 100644 +index b0a826489..3d7182001 100644 --- a/drivers/gpu/drm/drm_debugfs.c +++ b/drivers/gpu/drm/drm_debugfs.c @@ -91,7 +91,6 @@ static int drm_clients_info(struct seq_file *m, void *data) @@ -475206,7 +475206,7 @@ index b0a826489488..3d7182001004 100644 from_kuid_munged(seq_user_ns(m), uid), priv->magic); diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c -index add317bd8d55..cfb96e181b93 100644 +index add317bd8..cfb96e181 100644 --- a/drivers/gpu/drm/drm_edid.c +++ b/drivers/gpu/drm/drm_edid.c @@ -1835,20 +1835,11 @@ static void connector_bad_edid(struct drm_connector *connector, @@ -475355,7 +475355,7 @@ index add317bd8d55..cfb96e181b93 100644 } diff --git a/drivers/gpu/drm/drm_file.c b/drivers/gpu/drm/drm_file.c -index 537e7de8e9c3..01670305df3d 100644 +index 537e7de8e..01670305d 100644 --- a/drivers/gpu/drm/drm_file.c +++ b/drivers/gpu/drm/drm_file.c @@ -177,7 +177,6 @@ struct drm_file *drm_file_alloc(struct drm_minor *minor) @@ -475467,7 +475467,7 @@ index 537e7de8e9c3..01670305df3d 100644 } EXPORT_SYMBOL(drm_send_event); diff --git a/drivers/gpu/drm/drm_fourcc.c b/drivers/gpu/drm/drm_fourcc.c -index 722c7ebe4e88..e2241a5fde33 100644 +index 722c7ebe4..e2241a5fd 100644 --- a/drivers/gpu/drm/drm_fourcc.c +++ b/drivers/gpu/drm/drm_fourcc.c @@ -278,6 +278,16 @@ const struct drm_format_info *__drm_format_info(u32 format) @@ -475488,7 +475488,7 @@ index 722c7ebe4e88..e2241a5fde33 100644 .num_planes = 3, .char_per_block = { 2, 2, 2 }, .block_w = { 1, 1, 1 }, .block_h = { 1, 1, 1 }, .hsub = 0, diff --git a/drivers/gpu/drm/drm_ioctl.c b/drivers/gpu/drm/drm_ioctl.c -index 4606cc938b36..83fc51b13615 100644 +index 4606cc938..83fc51b13 100644 --- a/drivers/gpu/drm/drm_ioctl.c +++ b/drivers/gpu/drm/drm_ioctl.c @@ -537,6 +537,7 @@ int drm_version(struct drm_device *dev, void *data, @@ -475521,7 +475521,7 @@ index 4606cc938b36..83fc51b13615 100644 DRM_IOCTL_DEF(DRM_IOCTL_MODE_OBJ_SETPROPERTY, drm_mode_obj_set_property_ioctl, DRM_MASTER), DRM_IOCTL_DEF(DRM_IOCTL_MODE_CURSOR2, drm_mode_cursor2_ioctl, DRM_MASTER), diff --git a/drivers/gpu/drm/drm_lease.c b/drivers/gpu/drm/drm_lease.c -index aef22634005e..da4f085fc09e 100644 +index aef226340..da4f085fc 100644 --- a/drivers/gpu/drm/drm_lease.c +++ b/drivers/gpu/drm/drm_lease.c @@ -107,19 +107,10 @@ static bool _drm_has_leased(struct drm_master *master, int id) @@ -475758,7 +475758,7 @@ index aef22634005e..da4f085fc09e 100644 return ret; } diff --git a/drivers/gpu/drm/drm_mipi_dsi.c b/drivers/gpu/drm/drm_mipi_dsi.c -index 5dd475e82995..c73aaab95e0f 100644 +index 5dd475e82..c73aaab95 100644 --- a/drivers/gpu/drm/drm_mipi_dsi.c +++ b/drivers/gpu/drm/drm_mipi_dsi.c @@ -355,6 +355,7 @@ static ssize_t mipi_dsi_device_transfer(struct mipi_dsi_device *dsi, @@ -475770,7 +475770,7 @@ index 5dd475e82995..c73aaab95e0f 100644 return ops->transfer(dsi->host, msg); } diff --git a/drivers/gpu/drm/drm_mode_config.c b/drivers/gpu/drm/drm_mode_config.c -index f1affc1bb679..f7f21dfc4f47 100644 +index f1affc1bb..f7f21dfc4 100644 --- a/drivers/gpu/drm/drm_mode_config.c +++ b/drivers/gpu/drm/drm_mode_config.c @@ -364,6 +364,22 @@ static int drm_mode_create_standard_properties(struct drm_device *dev) @@ -475797,7 +475797,7 @@ index f1affc1bb679..f7f21dfc4f47 100644 DRM_MODE_PROP_IMMUTABLE | DRM_MODE_PROP_BLOB, "IN_FORMATS", 0); diff --git a/drivers/gpu/drm/drm_modes.c b/drivers/gpu/drm/drm_modes.c -index 0f99e5453f15..39b092e33e71 100644 +index 0f99e5453..39b092e33 100644 --- a/drivers/gpu/drm/drm_modes.c +++ b/drivers/gpu/drm/drm_modes.c @@ -1290,8 +1290,7 @@ EXPORT_SYMBOL(drm_mode_prune_invalid); @@ -475827,7 +475827,7 @@ index 0f99e5453f15..39b092e33e71 100644 /** * drm_mode_is_420_only - if a given videomode can be only supported in YCBCR420 diff --git a/drivers/gpu/drm/drm_prime.c b/drivers/gpu/drm/drm_prime.c -index 9f955f2010c2..ca6d13eb3190 100644 +index 9f955f201..ca6d13eb3 100644 --- a/drivers/gpu/drm/drm_prime.c +++ b/drivers/gpu/drm/drm_prime.c @@ -780,6 +780,28 @@ int drm_gem_dmabuf_mmap(struct dma_buf *dma_buf, struct vm_area_struct *vma) @@ -475869,7 +475869,7 @@ index 9f955f2010c2..ca6d13eb3190 100644 /** diff --git a/drivers/gpu/drm/drm_sync_helper.c b/drivers/gpu/drm/drm_sync_helper.c new file mode 100755 -index 000000000000..0c6aa875b4c6 +index 000000000..0c6aa875b --- /dev/null +++ b/drivers/gpu/drm/drm_sync_helper.c @@ -0,0 +1,314 @@ @@ -476188,7 +476188,7 @@ index 000000000000..0c6aa875b4c6 +} +EXPORT_SYMBOL(drm_sw_fence_new); diff --git a/drivers/gpu/drm/drm_vblank.c b/drivers/gpu/drm/drm_vblank.c -index f135b79593dd..286edbe1bf7a 100644 +index f135b7959..286edbe1b 100644 --- a/drivers/gpu/drm/drm_vblank.c +++ b/drivers/gpu/drm/drm_vblank.c @@ -1000,7 +1000,14 @@ static void send_vblank_event(struct drm_device *dev, @@ -476208,7 +476208,7 @@ index f135b79593dd..286edbe1bf7a 100644 /** diff --git a/drivers/gpu/drm/i915/gt/intel_engine_cs.c b/drivers/gpu/drm/i915/gt/intel_engine_cs.c -index c940ac3aae2f..a19537706ed1 100644 +index c940ac3aa..a19537706 100644 --- a/drivers/gpu/drm/i915/gt/intel_engine_cs.c +++ b/drivers/gpu/drm/i915/gt/intel_engine_cs.c @@ -305,9 +305,8 @@ static int intel_engine_setup(struct intel_gt *gt, enum intel_engine_id id) @@ -476223,7 +476223,7 @@ index c940ac3aae2f..a19537706ed1 100644 engine->class = info->class; engine->instance = info->instance; diff --git a/drivers/gpu/drm/i915/gt/uc/intel_guc.c b/drivers/gpu/drm/i915/gt/uc/intel_guc.c -index 6909da1e1a73..942c7c187adb 100644 +index 6909da1e1..942c7c187 100644 --- a/drivers/gpu/drm/i915/gt/uc/intel_guc.c +++ b/drivers/gpu/drm/i915/gt/uc/intel_guc.c @@ -213,6 +213,23 @@ static u32 guc_ctl_feature_flags(struct intel_guc *guc) @@ -476259,7 +476259,7 @@ index 6909da1e1a73..942c7c187adb 100644 params[GUC_CTL_FEATURE] = guc_ctl_feature_flags(guc); params[GUC_CTL_DEBUG] = guc_ctl_debug_flags(guc); diff --git a/drivers/gpu/drm/i915/gt/uc/intel_guc_ads.c b/drivers/gpu/drm/i915/gt/uc/intel_guc_ads.c -index 7950d28beb8c..d44061033f23 100644 +index 7950d28be..d44061033 100644 --- a/drivers/gpu/drm/i915/gt/uc/intel_guc_ads.c +++ b/drivers/gpu/drm/i915/gt/uc/intel_guc_ads.c @@ -10,52 +10,11 @@ @@ -476462,7 +476462,7 @@ index 7950d28beb8c..d44061033f23 100644 - guc_ads_private_data_reset(guc); } diff --git a/drivers/gpu/drm/i915/gt/uc/intel_guc_fwif.h b/drivers/gpu/drm/i915/gt/uc/intel_guc_fwif.h -index 79c560d9c0b6..a6b733c146c9 100644 +index 79c560d9c..a6b733c14 100644 --- a/drivers/gpu/drm/i915/gt/uc/intel_guc_fwif.h +++ b/drivers/gpu/drm/i915/gt/uc/intel_guc_fwif.h @@ -26,8 +26,8 @@ @@ -476613,7 +476613,7 @@ index 79c560d9c0b6..a6b733c146c9 100644 /* GuC logging structures */ diff --git a/drivers/gpu/drm/i915/gt/uc/intel_guc_reg.h b/drivers/gpu/drm/i915/gt/uc/intel_guc_reg.h -index b37fc2ffaef2..1949346e714e 100644 +index b37fc2ffa..1949346e7 100644 --- a/drivers/gpu/drm/i915/gt/uc/intel_guc_reg.h +++ b/drivers/gpu/drm/i915/gt/uc/intel_guc_reg.h @@ -118,11 +118,6 @@ struct guc_doorbell_info { @@ -476629,7 +476629,7 @@ index b37fc2ffaef2..1949346e714e 100644 #define GUC_BCS_RCS_IER _MMIO(0xC550) diff --git a/drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c b/drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c -index ee4ac3922277..80e8b6c3bc8c 100644 +index ee4ac3922..80e8b6c3b 100644 --- a/drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c +++ b/drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c @@ -44,19 +44,23 @@ void intel_uc_fw_change_status(struct intel_uc_fw *uc_fw, @@ -476677,7 +476677,7 @@ index ee4ac3922277..80e8b6c3bc8c 100644 if (IS_ERR(obj)) { err = PTR_ERR(obj); diff --git a/drivers/gpu/drm/i915/gt/uc/intel_uc_fw.h b/drivers/gpu/drm/i915/gt/uc/intel_uc_fw.h -index 99bb1fe1af66..23d3a423ac0f 100644 +index 99bb1fe1a..23d3a423a 100644 --- a/drivers/gpu/drm/i915/gt/uc/intel_uc_fw.h +++ b/drivers/gpu/drm/i915/gt/uc/intel_uc_fw.h @@ -88,8 +88,6 @@ struct intel_uc_fw { @@ -476690,7 +476690,7 @@ index 99bb1fe1af66..23d3a423ac0f 100644 #ifdef CONFIG_DRM_I915_DEBUG_GUC diff --git a/drivers/gpu/drm/i915/gt/uc/intel_uc_fw_abi.h b/drivers/gpu/drm/i915/gt/uc/intel_uc_fw_abi.h -index e41ffc7a7fbc..029214cdedd5 100644 +index e41ffc7a7..029214cde 100644 --- a/drivers/gpu/drm/i915/gt/uc/intel_uc_fw_abi.h +++ b/drivers/gpu/drm/i915/gt/uc/intel_uc_fw_abi.h @@ -69,11 +69,7 @@ struct uc_css_header { @@ -476707,7 +476707,7 @@ index e41ffc7a7fbc..029214cdedd5 100644 } __packed; static_assert(sizeof(struct uc_css_header) == 128); diff --git a/drivers/gpu/drm/nouveau/nouveau_drm.c b/drivers/gpu/drm/nouveau/nouveau_drm.c -index ac96b6ab44c0..42fc5c813a9b 100644 +index ac96b6ab4..42fc5c813 100644 --- a/drivers/gpu/drm/nouveau/nouveau_drm.c +++ b/drivers/gpu/drm/nouveau/nouveau_drm.c @@ -557,7 +557,6 @@ nouveau_drm_device_init(struct drm_device *dev) @@ -476812,7 +476812,7 @@ index ac96b6ab44c0..42fc5c813a9b 100644 static const struct drm_ioctl_desc diff --git a/drivers/gpu/drm/nouveau/nouveau_drv.h b/drivers/gpu/drm/nouveau/nouveau_drv.h -index 8b252dca0fc3..b8025507a9e4 100644 +index 8b252dca0..b8025507a 100644 --- a/drivers/gpu/drm/nouveau/nouveau_drv.h +++ b/drivers/gpu/drm/nouveau/nouveau_drv.h @@ -142,11 +142,6 @@ struct nouveau_drm { @@ -476828,7 +476828,7 @@ index 8b252dca0fc3..b8025507a9e4 100644 struct { diff --git a/drivers/gpu/drm/panel/Kconfig b/drivers/gpu/drm/panel/Kconfig -index 6153972e0127..b9dbedf8f15e 100644 +index 6153972e0..b9dbedf8f 100644 --- a/drivers/gpu/drm/panel/Kconfig +++ b/drivers/gpu/drm/panel/Kconfig @@ -233,7 +233,6 @@ config DRM_PANEL_OLIMEX_LCD_OLINUXINO @@ -476840,7 +476840,7 @@ index 6153972e0127..b9dbedf8f15e 100644 The panel is used with different sizes LCDs, from 480x272 to 1280x800, and 24 bit per pixel. diff --git a/drivers/gpu/drm/panel/panel-ilitek-ili9881c.c b/drivers/gpu/drm/panel/panel-ilitek-ili9881c.c -index 534dd7414d42..0145129d7c66 100644 +index 534dd7414..0145129d7 100644 --- a/drivers/gpu/drm/panel/panel-ilitek-ili9881c.c +++ b/drivers/gpu/drm/panel/panel-ilitek-ili9881c.c @@ -590,14 +590,14 @@ static const struct drm_display_mode k101_im2byl02_default_mode = { @@ -476865,7 +476865,7 @@ index 534dd7414d42..0145129d7c66 100644 .width_mm = 135, .height_mm = 217, diff --git a/drivers/gpu/drm/panel/panel-simple.c b/drivers/gpu/drm/panel/panel-simple.c -index 204674fccd64..d8acc4d660fd 100644 +index 204674fcc..d8acc4d66 100644 --- a/drivers/gpu/drm/panel/panel-simple.c +++ b/drivers/gpu/drm/panel/panel-simple.c @@ -30,6 +30,7 @@ @@ -477543,7 +477543,7 @@ index 204674fccd64..d8acc4d660fd 100644 dsi->lanes = desc->lanes; diff --git a/drivers/gpu/drm/panel/panel-simple.h b/drivers/gpu/drm/panel/panel-simple.h new file mode 100755 -index 000000000000..1958926d9738 +index 000000000..7349c35e3 --- /dev/null +++ b/drivers/gpu/drm/panel/panel-simple.h @@ -0,0 +1,19 @@ @@ -477567,7 +477567,7 @@ index 000000000000..1958926d9738 +#endif +#endif diff --git a/drivers/gpu/drm/rockchip/Kconfig b/drivers/gpu/drm/rockchip/Kconfig -index 310aa1546893..87b26b59e4a9 100644 +index 310aa1546..87b26b59e 100644 --- a/drivers/gpu/drm/rockchip/Kconfig +++ b/drivers/gpu/drm/rockchip/Kconfig @@ -20,6 +20,23 @@ config DRM_ROCKCHIP @@ -477631,7 +477631,7 @@ index 310aa1546893..87b26b59e4a9 100644 + endif diff --git a/drivers/gpu/drm/rockchip/Makefile b/drivers/gpu/drm/rockchip/Makefile -index 17a9e7eb2130..7ad5bf3ed030 100644 +index 17a9e7eb2..7ad5bf3ed 100644 --- a/drivers/gpu/drm/rockchip/Makefile +++ b/drivers/gpu/drm/rockchip/Makefile @@ -4,16 +4,24 @@ @@ -477662,7 +477662,7 @@ index 17a9e7eb2130..7ad5bf3ed030 100644 + +obj-$(CONFIG_DRM_ROCKCHIP_RK628) += rk628/ diff --git a/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c b/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c -index ade2327a10e2..4726b16a36ec 100644 +index ade2327a1..4726b16a3 100644 --- a/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c +++ b/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c @@ -16,6 +16,7 @@ @@ -478309,7 +478309,7 @@ index ade2327a10e2..4726b16a36ec 100644 }; MODULE_DEVICE_TABLE(of, rockchip_dp_dt_ids); diff --git a/drivers/gpu/drm/rockchip/cdn-dp-core.c b/drivers/gpu/drm/rockchip/cdn-dp-core.c -index dec54c70e008..261490fcb5f9 100644 +index dec54c70e..261490fcb 100644 --- a/drivers/gpu/drm/rockchip/cdn-dp-core.c +++ b/drivers/gpu/drm/rockchip/cdn-dp-core.c @@ -6,7 +6,6 @@ @@ -478584,7 +478584,7 @@ index dec54c70e008..261490fcb5f9 100644 } diff --git a/drivers/gpu/drm/rockchip/cdn-dp-core.h b/drivers/gpu/drm/rockchip/cdn-dp-core.h -index 81ac9b658a70..519900c673cb 100644 +index 81ac9b658..519900c67 100644 --- a/drivers/gpu/drm/rockchip/cdn-dp-core.h +++ b/drivers/gpu/drm/rockchip/cdn-dp-core.h @@ -53,8 +53,6 @@ struct cdn_firmware_header { @@ -478609,7 +478609,7 @@ index 81ac9b658a70..519900c673cb 100644 bool connected; diff --git a/drivers/gpu/drm/rockchip/cdn-dp-link-training.c b/drivers/gpu/drm/rockchip/cdn-dp-link-training.c new file mode 100755 -index 000000000000..08962e96b17c +index 000000000..08962e96b --- /dev/null +++ b/drivers/gpu/drm/rockchip/cdn-dp-link-training.c @@ -0,0 +1,439 @@ @@ -479054,7 +479054,7 @@ index 000000000000..08962e96b17c +} diff --git a/drivers/gpu/drm/rockchip/dw-dp.c b/drivers/gpu/drm/rockchip/dw-dp.c new file mode 100755 -index 000000000000..5c0c8e69a45e +index 000000000..5c0c8e69a --- /dev/null +++ b/drivers/gpu/drm/rockchip/dw-dp.c @@ -0,0 +1,2519 @@ @@ -481578,7 +481578,7 @@ index 000000000000..5c0c8e69a45e + }, +}; diff --git a/drivers/gpu/drm/rockchip/dw-mipi-dsi-rockchip.c b/drivers/gpu/drm/rockchip/dw-mipi-dsi-rockchip.c -index d0c9610ad220..96e130da4953 100644 +index d0c9610ad..96e130da4 100644 --- a/drivers/gpu/drm/rockchip/dw-mipi-dsi-rockchip.c +++ b/drivers/gpu/drm/rockchip/dw-mipi-dsi-rockchip.c @@ -16,8 +16,9 @@ @@ -482531,7 +482531,7 @@ index d0c9610ad220..96e130da4953 100644 }; diff --git a/drivers/gpu/drm/rockchip/dw-mipi-dsi2-rockchip.c b/drivers/gpu/drm/rockchip/dw-mipi-dsi2-rockchip.c new file mode 100755 -index 000000000000..f4fe6d8c3743 +index 000000000..f4fe6d8c3 --- /dev/null +++ b/drivers/gpu/drm/rockchip/dw-mipi-dsi2-rockchip.c @@ -0,0 +1,1591 @@ @@ -484127,7 +484127,7 @@ index 000000000000..f4fe6d8c3743 + }, +}; diff --git a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c -index 23de359a1dec..a5667e7914d3 100644 +index 23de359a1..a5667e791 100644 --- a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c +++ b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c @@ -4,21 +4,31 @@ @@ -487411,7 +487411,7 @@ index 23de359a1dec..a5667e7914d3 100644 .pm = &dw_hdmi_rockchip_pm, diff --git a/drivers/gpu/drm/rockchip/ebc-dev/Kconfig b/drivers/gpu/drm/rockchip/ebc-dev/Kconfig new file mode 100755 -index 000000000000..949c8e4b7b57 +index 000000000..949c8e4b7 --- /dev/null +++ b/drivers/gpu/drm/rockchip/ebc-dev/Kconfig @@ -0,0 +1,14 @@ @@ -487431,7 +487431,7 @@ index 000000000000..949c8e4b7b57 +endchoice diff --git a/drivers/gpu/drm/rockchip/ebc-dev/Makefile b/drivers/gpu/drm/rockchip/ebc-dev/Makefile new file mode 100755 -index 000000000000..848ac22fd0b2 +index 000000000..848ac22fd --- /dev/null +++ b/drivers/gpu/drm/rockchip/ebc-dev/Makefile @@ -0,0 +1,9 @@ @@ -487446,7 +487446,7 @@ index 000000000000..848ac22fd0b2 +rkebc-$(CONFIG_ARM64) += ebc_dev_v8.o diff --git a/drivers/gpu/drm/rockchip/ebc-dev/bufmanage/Makefile b/drivers/gpu/drm/rockchip/ebc-dev/bufmanage/Makefile new file mode 100755 -index 000000000000..a63ef49dea04 +index 000000000..a63ef49de --- /dev/null +++ b/drivers/gpu/drm/rockchip/ebc-dev/bufmanage/Makefile @@ -0,0 +1,3 @@ @@ -487455,7 +487455,7 @@ index 000000000000..a63ef49dea04 +obj-$(CONFIG_ROCKCHIP_EBC_DEV) += buf_manage.o buf_list.o diff --git a/drivers/gpu/drm/rockchip/ebc-dev/bufmanage/buf_list.c b/drivers/gpu/drm/rockchip/ebc-dev/bufmanage/buf_list.c new file mode 100755 -index 000000000000..90f350110b70 +index 000000000..90f350110 --- /dev/null +++ b/drivers/gpu/drm/rockchip/ebc-dev/bufmanage/buf_list.c @@ -0,0 +1,171 @@ @@ -487632,7 +487632,7 @@ index 000000000000..90f350110b70 +} diff --git a/drivers/gpu/drm/rockchip/ebc-dev/bufmanage/buf_list.h b/drivers/gpu/drm/rockchip/ebc-dev/bufmanage/buf_list.h new file mode 100755 -index 000000000000..eaf504560fb8 +index 000000000..eaf504560 --- /dev/null +++ b/drivers/gpu/drm/rockchip/ebc-dev/bufmanage/buf_list.h @@ -0,0 +1,95 @@ @@ -487733,7 +487733,7 @@ index 000000000000..eaf504560fb8 +#endif diff --git a/drivers/gpu/drm/rockchip/ebc-dev/bufmanage/buf_manage.c b/drivers/gpu/drm/rockchip/ebc-dev/bufmanage/buf_manage.c new file mode 100755 -index 000000000000..a2e47b45c148 +index 000000000..a2e47b45c --- /dev/null +++ b/drivers/gpu/drm/rockchip/ebc-dev/bufmanage/buf_manage.c @@ -0,0 +1,327 @@ @@ -488066,7 +488066,7 @@ index 000000000000..a2e47b45c148 +} diff --git a/drivers/gpu/drm/rockchip/ebc-dev/bufmanage/buf_manage.h b/drivers/gpu/drm/rockchip/ebc-dev/bufmanage/buf_manage.h new file mode 100755 -index 000000000000..745cdbf9cfde +index 000000000..745cdbf9c --- /dev/null +++ b/drivers/gpu/drm/rockchip/ebc-dev/bufmanage/buf_manage.h @@ -0,0 +1,49 @@ @@ -488121,7 +488121,7 @@ index 000000000000..745cdbf9cfde + diff --git a/drivers/gpu/drm/rockchip/ebc-dev/ebc_dev.h b/drivers/gpu/drm/rockchip/ebc-dev/ebc_dev.h new file mode 100755 -index 000000000000..5fc2fecd22cb +index 000000000..5fc2fecd2 --- /dev/null +++ b/drivers/gpu/drm/rockchip/ebc-dev/ebc_dev.h @@ -0,0 +1,114 @@ @@ -488241,7 +488241,7 @@ index 000000000000..5fc2fecd22cb +#endif diff --git a/drivers/gpu/drm/rockchip/ebc-dev/ebc_dev_v8.S b/drivers/gpu/drm/rockchip/ebc-dev/ebc_dev_v8.S new file mode 100755 -index 000000000000..65be1fdee09f +index 000000000..65be1fdee --- /dev/null +++ b/drivers/gpu/drm/rockchip/ebc-dev/ebc_dev_v8.S @@ -0,0 +1,55302 @@ @@ -543549,7 +543549,7 @@ index 000000000000..65be1fdee09f + .section .note.GNU-stack,"",@progbits diff --git a/drivers/gpu/drm/rockchip/ebc-dev/ebc_panel.h b/drivers/gpu/drm/rockchip/ebc-dev/ebc_panel.h new file mode 100755 -index 000000000000..dc0a72b11b21 +index 000000000..dc0a72b11 --- /dev/null +++ b/drivers/gpu/drm/rockchip/ebc-dev/ebc_panel.h @@ -0,0 +1,50 @@ @@ -543605,7 +543605,7 @@ index 000000000000..dc0a72b11b21 +#endif diff --git a/drivers/gpu/drm/rockchip/ebc-dev/ebc_public.c b/drivers/gpu/drm/rockchip/ebc-dev/ebc_public.c new file mode 100755 -index 000000000000..8ecccb7f6403 +index 000000000..8ecccb7f6 --- /dev/null +++ b/drivers/gpu/drm/rockchip/ebc-dev/ebc_public.c @@ -0,0 +1,36 @@ @@ -543647,7 +543647,7 @@ index 000000000000..8ecccb7f6403 +} diff --git a/drivers/gpu/drm/rockchip/ebc-dev/epdlut/Makefile b/drivers/gpu/drm/rockchip/ebc-dev/epdlut/Makefile new file mode 100755 -index 000000000000..6b99702b7a6f +index 000000000..6b99702b7 --- /dev/null +++ b/drivers/gpu/drm/rockchip/ebc-dev/epdlut/Makefile @@ -0,0 +1,5 @@ @@ -543658,7 +543658,7 @@ index 000000000000..6b99702b7a6f +waveform-$(CONFIG_ARM64) += pvi_waveform_v8.o rkf_waveform_v8.o diff --git a/drivers/gpu/drm/rockchip/ebc-dev/epdlut/epd_lut.c b/drivers/gpu/drm/rockchip/ebc-dev/epdlut/epd_lut.c new file mode 100755 -index 000000000000..8871b37d52cc +index 000000000..8871b37d5 --- /dev/null +++ b/drivers/gpu/drm/rockchip/ebc-dev/epdlut/epd_lut.c @@ -0,0 +1,72 @@ @@ -543736,7 +543736,7 @@ index 000000000000..8871b37d52cc +} diff --git a/drivers/gpu/drm/rockchip/ebc-dev/epdlut/epd_lut.h b/drivers/gpu/drm/rockchip/ebc-dev/epdlut/epd_lut.h new file mode 100755 -index 000000000000..8d2210603a29 +index 000000000..8d2210603 --- /dev/null +++ b/drivers/gpu/drm/rockchip/ebc-dev/epdlut/epd_lut.h @@ -0,0 +1,66 @@ @@ -543808,7 +543808,7 @@ index 000000000000..8d2210603a29 +#endif diff --git a/drivers/gpu/drm/rockchip/ebc-dev/epdlut/pvi_waveform_v8.S b/drivers/gpu/drm/rockchip/ebc-dev/epdlut/pvi_waveform_v8.S new file mode 100755 -index 000000000000..849c81dcfc71 +index 000000000..849c81dcf --- /dev/null +++ b/drivers/gpu/drm/rockchip/ebc-dev/epdlut/pvi_waveform_v8.S @@ -0,0 +1,18656 @@ @@ -562470,7 +562470,7 @@ index 000000000000..849c81dcfc71 + .section .note.GNU-stack,"",@progbits diff --git a/drivers/gpu/drm/rockchip/ebc-dev/epdlut/rkf_waveform_v8.S b/drivers/gpu/drm/rockchip/ebc-dev/epdlut/rkf_waveform_v8.S new file mode 100755 -index 000000000000..8a17822240c5 +index 000000000..8a1782224 --- /dev/null +++ b/drivers/gpu/drm/rockchip/ebc-dev/epdlut/rkf_waveform_v8.S @@ -0,0 +1,19357 @@ @@ -581833,7 +581833,7 @@ index 000000000000..8a17822240c5 + .section .note.GNU-stack,"",@progbits diff --git a/drivers/gpu/drm/rockchip/ebc-dev/pmic/Makefile b/drivers/gpu/drm/rockchip/ebc-dev/pmic/Makefile new file mode 100755 -index 000000000000..a05717f1ce98 +index 000000000..a05717f1c --- /dev/null +++ b/drivers/gpu/drm/rockchip/ebc-dev/pmic/Makefile @@ -0,0 +1,4 @@ @@ -581843,7 +581843,7 @@ index 000000000000..a05717f1ce98 +obj-$(CONFIG_EPD_TPS65185_SENSOR) += tps65185.o diff --git a/drivers/gpu/drm/rockchip/ebc-dev/pmic/ebc_pmic.c b/drivers/gpu/drm/rockchip/ebc-dev/pmic/ebc_pmic.c new file mode 100755 -index 000000000000..c24db23dc47d +index 000000000..c24db23dc --- /dev/null +++ b/drivers/gpu/drm/rockchip/ebc-dev/pmic/ebc_pmic.c @@ -0,0 +1,70 @@ @@ -581919,7 +581919,7 @@ index 000000000000..c24db23dc47d +module_param(vcom, int, 0644); diff --git a/drivers/gpu/drm/rockchip/ebc-dev/pmic/ebc_pmic.h b/drivers/gpu/drm/rockchip/ebc-dev/pmic/ebc_pmic.h new file mode 100755 -index 000000000000..f95192094ba7 +index 000000000..f95192094 --- /dev/null +++ b/drivers/gpu/drm/rockchip/ebc-dev/pmic/ebc_pmic.h @@ -0,0 +1,60 @@ @@ -581985,7 +581985,7 @@ index 000000000000..f95192094ba7 +#endif diff --git a/drivers/gpu/drm/rockchip/ebc-dev/pmic/tps65185.c b/drivers/gpu/drm/rockchip/ebc-dev/pmic/tps65185.c new file mode 100755 -index 000000000000..f007dd0adb65 +index 000000000..f007dd0ad --- /dev/null +++ b/drivers/gpu/drm/rockchip/ebc-dev/pmic/tps65185.c @@ -0,0 +1,672 @@ @@ -582663,7 +582663,7 @@ index 000000000000..f007dd0adb65 +MODULE_LICENSE("GPL"); diff --git a/drivers/gpu/drm/rockchip/ebc-dev/tcon/Makefile b/drivers/gpu/drm/rockchip/ebc-dev/tcon/Makefile new file mode 100755 -index 000000000000..913d4813773b +index 000000000..913d48137 --- /dev/null +++ b/drivers/gpu/drm/rockchip/ebc-dev/tcon/Makefile @@ -0,0 +1,3 @@ @@ -582672,7 +582672,7 @@ index 000000000000..913d4813773b +obj-$(CONFIG_ROCKCHIP_EBC_DEV) += ebc_tcon.o eink_tcon.o diff --git a/drivers/gpu/drm/rockchip/ebc-dev/tcon/ebc_tcon.c b/drivers/gpu/drm/rockchip/ebc-dev/tcon/ebc_tcon.c new file mode 100755 -index 000000000000..23c82751bb1b +index 000000000..23c82751b --- /dev/null +++ b/drivers/gpu/drm/rockchip/ebc-dev/tcon/ebc_tcon.c @@ -0,0 +1,416 @@ @@ -583094,7 +583094,7 @@ index 000000000000..23c82751bb1b +MODULE_LICENSE("GPL v2"); diff --git a/drivers/gpu/drm/rockchip/ebc-dev/tcon/ebc_tcon.h b/drivers/gpu/drm/rockchip/ebc-dev/tcon/ebc_tcon.h new file mode 100755 -index 000000000000..9a9ea56f3cdb +index 000000000..9a9ea56f3 --- /dev/null +++ b/drivers/gpu/drm/rockchip/ebc-dev/tcon/ebc_tcon.h @@ -0,0 +1,119 @@ @@ -583219,7 +583219,7 @@ index 000000000000..9a9ea56f3cdb +#endif diff --git a/drivers/gpu/drm/rockchip/ebc-dev/tcon/eink_tcon.c b/drivers/gpu/drm/rockchip/ebc-dev/tcon/eink_tcon.c new file mode 100755 -index 000000000000..01b2b9629c35 +index 000000000..01b2b9629 --- /dev/null +++ b/drivers/gpu/drm/rockchip/ebc-dev/tcon/eink_tcon.c @@ -0,0 +1,301 @@ @@ -583525,7 +583525,7 @@ index 000000000000..01b2b9629c35 +MODULE_DESCRIPTION("ROCKCHIP EINK tcon driver"); +MODULE_LICENSE("GPL v2"); diff --git a/drivers/gpu/drm/rockchip/inno_hdmi.c b/drivers/gpu/drm/rockchip/inno_hdmi.c -index 7afdc54eb3ec..67ffb23faecb 100644 +index 7afdc54eb..67ffb23fa 100644 --- a/drivers/gpu/drm/rockchip/inno_hdmi.c +++ b/drivers/gpu/drm/rockchip/inno_hdmi.c @@ -602,7 +602,7 @@ static int inno_hdmi_register(struct drm_device *drm, struct inno_hdmi *hdmi) @@ -583538,7 +583538,7 @@ index 7afdc54eb3ec..67ffb23faecb 100644 /* * If we failed to find the CRTC(s) which this encoder is diff --git a/drivers/gpu/drm/rockchip/rk3066_hdmi.c b/drivers/gpu/drm/rockchip/rk3066_hdmi.c -index 1c546c3a8998..58b366f4f3a9 100644 +index 1c546c3a8..58b366f4f 100644 --- a/drivers/gpu/drm/rockchip/rk3066_hdmi.c +++ b/drivers/gpu/drm/rockchip/rk3066_hdmi.c @@ -542,7 +542,7 @@ rk3066_hdmi_register(struct drm_device *drm, struct rk3066_hdmi *hdmi) @@ -583552,7 +583552,7 @@ index 1c546c3a8998..58b366f4f3a9 100644 * If we failed to find the CRTC(s) which this encoder is diff --git a/drivers/gpu/drm/rockchip/rk618/Kconfig b/drivers/gpu/drm/rockchip/rk618/Kconfig new file mode 100755 -index 000000000000..f81940b5b055 +index 000000000..f81940b5b --- /dev/null +++ b/drivers/gpu/drm/rockchip/rk618/Kconfig @@ -0,0 +1,9 @@ @@ -583567,7 +583567,7 @@ index 000000000000..f81940b5b055 + Rockchip rk618 display bridge chips driver. diff --git a/drivers/gpu/drm/rockchip/rk618/Makefile b/drivers/gpu/drm/rockchip/rk618/Makefile new file mode 100755 -index 000000000000..ad3ac27b36ad +index 000000000..ad3ac27b3 --- /dev/null +++ b/drivers/gpu/drm/rockchip/rk618/Makefile @@ -0,0 +1,12 @@ @@ -583585,7 +583585,7 @@ index 000000000000..ad3ac27b36ad + rk618_dsi.o diff --git a/drivers/gpu/drm/rockchip/rk618/rk618_dither.c b/drivers/gpu/drm/rockchip/rk618/rk618_dither.c new file mode 100755 -index 000000000000..ab1bbe9cee4e +index 000000000..ab1bbe9ce --- /dev/null +++ b/drivers/gpu/drm/rockchip/rk618/rk618_dither.c @@ -0,0 +1,50 @@ @@ -583641,7 +583641,7 @@ index 000000000000..ab1bbe9cee4e +EXPORT_SYMBOL_GPL(rk618_frc_dclk_invert); diff --git a/drivers/gpu/drm/rockchip/rk618/rk618_dither.h b/drivers/gpu/drm/rockchip/rk618/rk618_dither.h new file mode 100755 -index 000000000000..c74bb95f0ce4 +index 000000000..c74bb95f0 --- /dev/null +++ b/drivers/gpu/drm/rockchip/rk618/rk618_dither.h @@ -0,0 +1,17 @@ @@ -583664,7 +583664,7 @@ index 000000000000..c74bb95f0ce4 +#endif diff --git a/drivers/gpu/drm/rockchip/rk618/rk618_dsi.c b/drivers/gpu/drm/rockchip/rk618/rk618_dsi.c new file mode 100755 -index 000000000000..69db2cd25bd3 +index 000000000..69db2cd25 --- /dev/null +++ b/drivers/gpu/drm/rockchip/rk618/rk618_dsi.c @@ -0,0 +1,1201 @@ @@ -584871,7 +584871,7 @@ index 000000000000..69db2cd25bd3 +MODULE_LICENSE("GPL v2"); diff --git a/drivers/gpu/drm/rockchip/rk618/rk618_hdmi.c b/drivers/gpu/drm/rockchip/rk618/rk618_hdmi.c new file mode 100755 -index 000000000000..12c9475e9d80 +index 000000000..12c9475e9 --- /dev/null +++ b/drivers/gpu/drm/rockchip/rk618/rk618_hdmi.c @@ -0,0 +1,1605 @@ @@ -586482,7 +586482,7 @@ index 000000000000..12c9475e9d80 +MODULE_LICENSE("GPL v2"); diff --git a/drivers/gpu/drm/rockchip/rk618/rk618_lvds.c b/drivers/gpu/drm/rockchip/rk618/rk618_lvds.c new file mode 100755 -index 000000000000..46ad676879f9 +index 000000000..46ad67687 --- /dev/null +++ b/drivers/gpu/drm/rockchip/rk618/rk618_lvds.c @@ -0,0 +1,310 @@ @@ -586798,7 +586798,7 @@ index 000000000000..46ad676879f9 +MODULE_LICENSE("GPL v2"); diff --git a/drivers/gpu/drm/rockchip/rk618/rk618_rgb.c b/drivers/gpu/drm/rockchip/rk618/rk618_rgb.c new file mode 100755 -index 000000000000..2f72c52342a9 +index 000000000..2f72c5234 --- /dev/null +++ b/drivers/gpu/drm/rockchip/rk618/rk618_rgb.c @@ -0,0 +1,303 @@ @@ -587107,7 +587107,7 @@ index 000000000000..2f72c52342a9 +MODULE_LICENSE("GPL v2"); diff --git a/drivers/gpu/drm/rockchip/rk618/rk618_scaler.c b/drivers/gpu/drm/rockchip/rk618/rk618_scaler.c new file mode 100755 -index 000000000000..d2c9c1cb2fb8 +index 000000000..d2c9c1cb2 --- /dev/null +++ b/drivers/gpu/drm/rockchip/rk618/rk618_scaler.c @@ -0,0 +1,424 @@ @@ -587537,7 +587537,7 @@ index 000000000000..d2c9c1cb2fb8 +MODULE_LICENSE("GPL v2"); diff --git a/drivers/gpu/drm/rockchip/rk618/rk618_vif.c b/drivers/gpu/drm/rockchip/rk618/rk618_vif.c new file mode 100755 -index 000000000000..ca13750536fc +index 000000000..ca1375053 --- /dev/null +++ b/drivers/gpu/drm/rockchip/rk618/rk618_vif.c @@ -0,0 +1,260 @@ @@ -587803,7 +587803,7 @@ index 000000000000..ca13750536fc +MODULE_LICENSE("GPL v2"); diff --git a/drivers/gpu/drm/rockchip/rk628/Kconfig b/drivers/gpu/drm/rockchip/rk628/Kconfig new file mode 100755 -index 000000000000..41e1fbbe1e61 +index 000000000..41e1fbbe1 --- /dev/null +++ b/drivers/gpu/drm/rockchip/rk628/Kconfig @@ -0,0 +1,8 @@ @@ -587817,7 +587817,7 @@ index 000000000000..41e1fbbe1e61 + Rockchip RK628 display bridge chips driver. diff --git a/drivers/gpu/drm/rockchip/rk628/Makefile b/drivers/gpu/drm/rockchip/rk628/Makefile new file mode 100755 -index 000000000000..76d768d29776 +index 000000000..76d768d29 --- /dev/null +++ b/drivers/gpu/drm/rockchip/rk628/Makefile @@ -0,0 +1,14 @@ @@ -587837,7 +587837,7 @@ index 000000000000..76d768d29776 + rk628_hdmirx.o diff --git a/drivers/gpu/drm/rockchip/rk628/rk628_combrxphy.c b/drivers/gpu/drm/rockchip/rk628/rk628_combrxphy.c new file mode 100755 -index 000000000000..bf3a901a65b3 +index 000000000..bf3a901a6 --- /dev/null +++ b/drivers/gpu/drm/rockchip/rk628/rk628_combrxphy.c @@ -0,0 +1,995 @@ @@ -588838,7 +588838,7 @@ index 000000000000..bf3a901a65b3 +MODULE_LICENSE("GPL v2"); diff --git a/drivers/gpu/drm/rockchip/rk628/rk628_combtxphy.c b/drivers/gpu/drm/rockchip/rk628/rk628_combtxphy.c new file mode 100755 -index 000000000000..1b29b24fd0f6 +index 000000000..1b29b24fd --- /dev/null +++ b/drivers/gpu/drm/rockchip/rk628/rk628_combtxphy.c @@ -0,0 +1,515 @@ @@ -589359,7 +589359,7 @@ index 000000000000..1b29b24fd0f6 +MODULE_LICENSE("GPL v2"); diff --git a/drivers/gpu/drm/rockchip/rk628/rk628_combtxphy.h b/drivers/gpu/drm/rockchip/rk628/rk628_combtxphy.h new file mode 100755 -index 000000000000..40d785eecd67 +index 000000000..40d785eec --- /dev/null +++ b/drivers/gpu/drm/rockchip/rk628/rk628_combtxphy.h @@ -0,0 +1,13 @@ @@ -589378,7 +589378,7 @@ index 000000000000..40d785eecd67 +#endif diff --git a/drivers/gpu/drm/rockchip/rk628/rk628_dsi.c b/drivers/gpu/drm/rockchip/rk628/rk628_dsi.c new file mode 100755 -index 000000000000..37d4df171426 +index 000000000..37d4df171 --- /dev/null +++ b/drivers/gpu/drm/rockchip/rk628/rk628_dsi.c @@ -0,0 +1,1395 @@ @@ -590779,7 +590779,7 @@ index 000000000000..37d4df171426 +MODULE_LICENSE("GPL v2"); diff --git a/drivers/gpu/drm/rockchip/rk628/rk628_gvi.c b/drivers/gpu/drm/rockchip/rk628/rk628_gvi.c new file mode 100755 -index 000000000000..a5fc042dcaee +index 000000000..a5fc042dc --- /dev/null +++ b/drivers/gpu/drm/rockchip/rk628/rk628_gvi.c @@ -0,0 +1,668 @@ @@ -591453,7 +591453,7 @@ index 000000000000..a5fc042dcaee +MODULE_LICENSE("GPL v2"); diff --git a/drivers/gpu/drm/rockchip/rk628/rk628_hdmi.c b/drivers/gpu/drm/rockchip/rk628/rk628_hdmi.c new file mode 100755 -index 000000000000..329508681ec8 +index 000000000..329508681 --- /dev/null +++ b/drivers/gpu/drm/rockchip/rk628/rk628_hdmi.c @@ -0,0 +1,1615 @@ @@ -593074,7 +593074,7 @@ index 000000000000..329508681ec8 +MODULE_LICENSE("GPL v2"); diff --git a/drivers/gpu/drm/rockchip/rk628/rk628_hdmirx.c b/drivers/gpu/drm/rockchip/rk628/rk628_hdmirx.c new file mode 100755 -index 000000000000..87467ed8a3c9 +index 000000000..87467ed8a --- /dev/null +++ b/drivers/gpu/drm/rockchip/rk628/rk628_hdmirx.c @@ -0,0 +1,982 @@ @@ -594062,7 +594062,7 @@ index 000000000000..87467ed8a3c9 +MODULE_LICENSE("GPL v2"); diff --git a/drivers/gpu/drm/rockchip/rk628/rk628_lvds.c b/drivers/gpu/drm/rockchip/rk628/rk628_lvds.c new file mode 100755 -index 000000000000..848b6ed8e0f1 +index 000000000..848b6ed8e --- /dev/null +++ b/drivers/gpu/drm/rockchip/rk628/rk628_lvds.c @@ -0,0 +1,325 @@ @@ -594393,7 +594393,7 @@ index 000000000000..848b6ed8e0f1 +MODULE_LICENSE("GPL v2"); diff --git a/drivers/gpu/drm/rockchip/rk628/rk628_post_process.c b/drivers/gpu/drm/rockchip/rk628/rk628_post_process.c new file mode 100755 -index 000000000000..4e2a5d56333d +index 000000000..4e2a5d563 --- /dev/null +++ b/drivers/gpu/drm/rockchip/rk628/rk628_post_process.c @@ -0,0 +1,488 @@ @@ -594887,7 +594887,7 @@ index 000000000000..4e2a5d56333d +MODULE_LICENSE("GPL v2"); diff --git a/drivers/gpu/drm/rockchip/rk628/rk628_rgb.c b/drivers/gpu/drm/rockchip/rk628/rk628_rgb.c new file mode 100755 -index 000000000000..a7983f8ab6f9 +index 000000000..a7983f8ab --- /dev/null +++ b/drivers/gpu/drm/rockchip/rk628/rk628_rgb.c @@ -0,0 +1,387 @@ @@ -595280,7 +595280,7 @@ index 000000000000..a7983f8ab6f9 +MODULE_LICENSE("GPL v2"); diff --git a/drivers/gpu/drm/rockchip/rockchip-mipi-csi-tx.c b/drivers/gpu/drm/rockchip/rockchip-mipi-csi-tx.c new file mode 100755 -index 000000000000..adbc11679f53 +index 000000000..adbc11679 --- /dev/null +++ b/drivers/gpu/drm/rockchip/rockchip-mipi-csi-tx.c @@ -0,0 +1,1403 @@ @@ -596689,7 +596689,7 @@ index 000000000000..adbc11679f53 +MODULE_ALIAS("platform:" DRIVER_NAME); diff --git a/drivers/gpu/drm/rockchip/rockchip-mipi-csi-tx.h b/drivers/gpu/drm/rockchip/rockchip-mipi-csi-tx.h new file mode 100755 -index 000000000000..a4330df85b33 +index 000000000..a4330df85 --- /dev/null +++ b/drivers/gpu/drm/rockchip/rockchip-mipi-csi-tx.h @@ -0,0 +1,289 @@ @@ -596984,7 +596984,7 @@ index 000000000000..a4330df85b33 +#endif diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_backlight.c b/drivers/gpu/drm/rockchip/rockchip_drm_backlight.c new file mode 100755 -index 000000000000..2f0a98749683 +index 000000000..2f0a98749 --- /dev/null +++ b/drivers/gpu/drm/rockchip/rockchip_drm_backlight.c @@ -0,0 +1,514 @@ @@ -597504,7 +597504,7 @@ index 000000000000..2f0a98749683 +MODULE_LICENSE("GPL v2"); diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_backlight.h b/drivers/gpu/drm/rockchip/rockchip_drm_backlight.h new file mode 100755 -index 000000000000..4c8dc6348354 +index 000000000..4c8dc6348 --- /dev/null +++ b/drivers/gpu/drm/rockchip/rockchip_drm_backlight.h @@ -0,0 +1,64 @@ @@ -597574,7 +597574,7 @@ index 000000000000..4c8dc6348354 +#endif diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_debugfs.c b/drivers/gpu/drm/rockchip/rockchip_drm_debugfs.c new file mode 100755 -index 000000000000..070fe43f51a0 +index 000000000..070fe43f5 --- /dev/null +++ b/drivers/gpu/drm/rockchip/rockchip_drm_debugfs.c @@ -0,0 +1,217 @@ @@ -597797,7 +597797,7 @@ index 000000000000..070fe43f51a0 +} diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_debugfs.h b/drivers/gpu/drm/rockchip/rockchip_drm_debugfs.h new file mode 100755 -index 000000000000..b043b79289af +index 000000000..b043b7928 --- /dev/null +++ b/drivers/gpu/drm/rockchip/rockchip_drm_debugfs.h @@ -0,0 +1,72 @@ @@ -597874,7 +597874,7 @@ index 000000000000..b043b79289af + +#endif diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c -index 0f3eb392fe39..022c449beed4 100644 +index 0f3eb392f..022c449be 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c +++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c @@ -6,17 +6,24 @@ @@ -599456,7 +599456,7 @@ index 0f3eb392fe39..022c449beed4 100644 err_unreg_drivers: diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.h b/drivers/gpu/drm/rockchip/rockchip_drm_drv.h -index e33c2dcd0d4b..a093c86fb81d 100644 +index e33c2dcd0..a093c86fb 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.h +++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.h @@ -9,21 +9,128 @@ @@ -599905,7 +599905,7 @@ index e33c2dcd0d4b..a093c86fb81d 100644 +extern struct platform_driver vconn_platform_driver; #endif /* _ROCKCHIP_DRM_DRV_H_ */ diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_fb.c b/drivers/gpu/drm/rockchip/rockchip_drm_fb.c -index 3aa37e177667..97522f6f9dce 100644 +index 3aa37e177..97522f6f9 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_fb.c +++ b/drivers/gpu/drm/rockchip/rockchip_drm_fb.c @@ -5,6 +5,7 @@ @@ -600113,7 +600113,7 @@ index 3aa37e177667..97522f6f9dce 100644 dev->mode_config.funcs = &rockchip_drm_mode_config_funcs; dev->mode_config.helper_private = &rockchip_mode_config_helpers; diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_fb.h b/drivers/gpu/drm/rockchip/rockchip_drm_fb.h -index 1a696521096d..3b8755e9f191 100644 +index 1a6965210..3b8755e9f 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_fb.h +++ b/drivers/gpu/drm/rockchip/rockchip_drm_fb.h @@ -7,6 +7,10 @@ @@ -600145,7 +600145,7 @@ index 1a696521096d..3b8755e9f191 100644 + #endif /* _ROCKCHIP_DRM_FB_H */ diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_fbdev.c b/drivers/gpu/drm/rockchip/rockchip_drm_fbdev.c -index 2fdc455c4ad7..065fa7fde336 100644 +index 2fdc455c4..065fa7fde 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_fbdev.c +++ b/drivers/gpu/drm/rockchip/rockchip_drm_fbdev.c @@ -15,14 +15,12 @@ @@ -600208,7 +600208,7 @@ index 2fdc455c4ad7..065fa7fde336 100644 drm_fb_helper_unregister_fbi(helper); diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_gem.c b/drivers/gpu/drm/rockchip/rockchip_drm_gem.c -index 62e5d0970525..4ed34f8477cd 100644 +index 62e5d0970..4ed34f847 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_gem.c +++ b/drivers/gpu/drm/rockchip/rockchip_drm_gem.c @@ -4,7 +4,7 @@ @@ -601046,7 +601046,7 @@ index 62e5d0970525..4ed34f8477cd 100644 + return 0; +} diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_gem.h b/drivers/gpu/drm/rockchip/rockchip_drm_gem.h -index 7ffc541bea07..6a1d8e55b35a 100644 +index 7ffc541be..6a1d8e55b 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_gem.h +++ b/drivers/gpu/drm/rockchip/rockchip_drm_gem.h @@ -7,14 +7,24 @@ @@ -601123,7 +601123,7 @@ index 7ffc541bea07..6a1d8e55b35a 100644 #endif /* _ROCKCHIP_DRM_GEM_H */ diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_logo.c b/drivers/gpu/drm/rockchip/rockchip_drm_logo.c new file mode 100755 -index 000000000000..a52b6a9e18a5 +index 000000000..97dd7eff7 --- /dev/null +++ b/drivers/gpu/drm/rockchip/rockchip_drm_logo.c @@ -0,0 +1,1071 @@ @@ -602200,7 +602200,7 @@ index 000000000000..a52b6a9e18a5 +#endif diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_logo.h b/drivers/gpu/drm/rockchip/rockchip_drm_logo.h new file mode 100755 -index 000000000000..0dfc81d5e7ed +index 000000000..0dfc81d5e --- /dev/null +++ b/drivers/gpu/drm/rockchip/rockchip_drm_logo.h @@ -0,0 +1,42 @@ @@ -602248,7 +602248,7 @@ index 000000000000..0dfc81d5e7ed +#endif diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_tve.c b/drivers/gpu/drm/rockchip/rockchip_drm_tve.c new file mode 100755 -index 000000000000..0acf55916056 +index 000000000..0acf55916 --- /dev/null +++ b/drivers/gpu/drm/rockchip/rockchip_drm_tve.c @@ -0,0 +1,615 @@ @@ -602869,7 +602869,7 @@ index 000000000000..0acf55916056 +MODULE_LICENSE("GPL v2"); diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_tve.h b/drivers/gpu/drm/rockchip/rockchip_drm_tve.h new file mode 100755 -index 000000000000..cd0bcb1a32fc +index 000000000..cd0bcb1a3 --- /dev/null +++ b/drivers/gpu/drm/rockchip/rockchip_drm_tve.h @@ -0,0 +1,165 @@ @@ -603040,7 +603040,7 @@ index 000000000000..cd0bcb1a32fc +#endif /* _ROCKCHIP_DRM_TVE_ */ diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vconn.c b/drivers/gpu/drm/rockchip/rockchip_drm_vconn.c new file mode 100755 -index 000000000000..b9f637ffa8d7 +index 000000000..b9f637ffa --- /dev/null +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vconn.c @@ -0,0 +1,537 @@ @@ -603582,7 +603582,7 @@ index 000000000000..b9f637ffa8d7 + }, +}; diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c -index 0f23144491e4..ccf39dcf63dc 100644 +index 0f2314449..ccf39dcf6 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c @@ -6,21 +6,28 @@ @@ -608988,7 +608988,7 @@ index 0f23144491e4..ccf39dcf63dc 100644 const struct component_ops vop_component_ops = { diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.h b/drivers/gpu/drm/rockchip/rockchip_drm_vop.h -index 857d97cdc67c..8c2b38419242 100644 +index 857d97cdc..8c2b38419 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.h +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.h @@ -7,6 +7,9 @@ @@ -610279,7 +610279,7 @@ index 857d97cdc67c..8c2b38419242 100644 #endif /* _ROCKCHIP_DRM_VOP_H */ diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c b/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c new file mode 100755 -index 000000000000..812abde3d4b9 +index 000000000..812abde3d --- /dev/null +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c @@ -0,0 +1,8670 @@ @@ -618955,7 +618955,7 @@ index 000000000000..812abde3d4b9 +EXPORT_SYMBOL_GPL(vop2_component_ops); diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vvop.c b/drivers/gpu/drm/rockchip/rockchip_drm_vvop.c new file mode 100755 -index 000000000000..9c74221d7a05 +index 000000000..9c74221d7 --- /dev/null +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vvop.c @@ -0,0 +1,371 @@ @@ -619331,7 +619331,7 @@ index 000000000000..9c74221d7a05 +MODULE_AUTHOR("Andy Yan "); +MODULE_LICENSE("GPL"); diff --git a/drivers/gpu/drm/rockchip/rockchip_lvds.c b/drivers/gpu/drm/rockchip/rockchip_lvds.c -index 7c20b4a24a7e..ca2838db89eb 100644 +index 7c20b4a24..ca2838db8 100644 --- a/drivers/gpu/drm/rockchip/rockchip_lvds.c +++ b/drivers/gpu/drm/rockchip/rockchip_lvds.c @@ -6,98 +6,141 @@ @@ -620500,7 +620500,7 @@ index 7c20b4a24a7e..ca2838db89eb 100644 .probe = rockchip_lvds_probe, .remove = rockchip_lvds_remove, diff --git a/drivers/gpu/drm/rockchip/rockchip_rgb.c b/drivers/gpu/drm/rockchip/rockchip_rgb.c -index 9a771af5d0c9..654de19f7cc1 100644 +index 9a771af5d..654de19f7 100644 --- a/drivers/gpu/drm/rockchip/rockchip_rgb.c +++ b/drivers/gpu/drm/rockchip/rockchip_rgb.c @@ -6,29 +6,172 @@ @@ -621069,7 +621069,7 @@ index 9a771af5d0c9..654de19f7cc1 100644 + }, +}; diff --git a/drivers/gpu/drm/rockchip/rockchip_rgb.h b/drivers/gpu/drm/rockchip/rockchip_rgb.h -index 27b9635124bc..8973232e0caa 100644 +index 27b963512..8973232e0 100644 --- a/drivers/gpu/drm/rockchip/rockchip_rgb.h +++ b/drivers/gpu/drm/rockchip/rockchip_rgb.h @@ -8,12 +8,14 @@ @@ -621091,7 +621091,7 @@ index 27b9635124bc..8973232e0caa 100644 } diff --git a/drivers/gpu/drm/rockchip/rockchip_vop2_clk.c b/drivers/gpu/drm/rockchip/rockchip_vop2_clk.c new file mode 100755 -index 000000000000..d381d767d726 +index 000000000..d381d767d --- /dev/null +++ b/drivers/gpu/drm/rockchip/rockchip_vop2_clk.c @@ -0,0 +1,337 @@ @@ -621434,7 +621434,7 @@ index 000000000000..d381d767d726 +} diff --git a/drivers/gpu/drm/rockchip/rockchip_vop2_reg.c b/drivers/gpu/drm/rockchip/rockchip_vop2_reg.c new file mode 100755 -index 000000000000..3a0f3110dcc6 +index 000000000..3a0f3110d --- /dev/null +++ b/drivers/gpu/drm/rockchip/rockchip_vop2_reg.c @@ -0,0 +1,2796 @@ @@ -624235,7 +624235,7 @@ index 000000000000..3a0f3110dcc6 + }, +}; diff --git a/drivers/gpu/drm/rockchip/rockchip_vop_reg.c b/drivers/gpu/drm/rockchip/rockchip_vop_reg.c -index a6fe03c3748a..f33e7d1be2a6 100644 +index a6fe03c37..f33e7d1be 100644 --- a/drivers/gpu/drm/rockchip/rockchip_vop_reg.c +++ b/drivers/gpu/drm/rockchip/rockchip_vop_reg.c @@ -5,36 +5,36 @@ @@ -626894,7 +626894,7 @@ index a6fe03c3748a..f33e7d1be2a6 100644 .data = &rk3368_vop }, { .compatible = "rockchip,rk3366-vop", diff --git a/drivers/gpu/drm/rockchip/rockchip_vop_reg.h b/drivers/gpu/drm/rockchip/rockchip_vop_reg.h -index 6e9fa5815d4d..ffd49a8625d5 100644 +index 6e9fa5815..ffd49a862 100644 --- a/drivers/gpu/drm/rockchip/rockchip_vop_reg.h +++ b/drivers/gpu/drm/rockchip/rockchip_vop_reg.h @@ -113,6 +113,11 @@ @@ -627762,7 +627762,7 @@ index 6e9fa5815d4d..ffd49a8625d5 100644 #endif /* _ROCKCHIP_VOP_REG_H */ diff --git a/drivers/i2c/busses/i2c-rk3x.c b/drivers/i2c/busses/i2c-rk3x.c -index 819ab4ee517e..c7c8d2f0abe7 100644 +index 819ab4ee5..c7c8d2f0a 100644 --- a/drivers/i2c/busses/i2c-rk3x.c +++ b/drivers/i2c/busses/i2c-rk3x.c @@ -23,6 +23,8 @@ @@ -628278,7 +628278,7 @@ index 819ab4ee517e..c7c8d2f0abe7 100644 MODULE_DESCRIPTION("Rockchip RK3xxx I2C Bus driver"); MODULE_AUTHOR("Max Schwarz "); diff --git a/drivers/i2c/i2c-core-base.c b/drivers/i2c/i2c-core-base.c -index bdce6d3e5327..c0315596d5cd 100644 +index bdce6d3e5..c0315596d 100644 --- a/drivers/i2c/i2c-core-base.c +++ b/drivers/i2c/i2c-core-base.c @@ -61,6 +61,7 @@ @@ -628383,7 +628383,7 @@ index bdce6d3e5327..c0315596d5cd 100644 unsigned cmd; void *arg; diff --git a/drivers/iio/adc/Kconfig b/drivers/iio/adc/Kconfig -index e39b679126a2..2760f1e52b97 100644 +index e39b67912..2760f1e52 100644 --- a/drivers/iio/adc/Kconfig +++ b/drivers/iio/adc/Kconfig @@ -876,6 +876,13 @@ config ROCKCHIP_SARADC @@ -628401,7 +628401,7 @@ index e39b679126a2..2760f1e52b97 100644 tristate "Spreadtrum SC27xx series PMICs ADC" depends on MFD_SC27XX_PMIC || COMPILE_TEST diff --git a/drivers/iio/adc/rockchip_saradc.c b/drivers/iio/adc/rockchip_saradc.c -index 12584f1631d8..c266169dfe61 100644 +index 12584f163..c266169df 100644 --- a/drivers/iio/adc/rockchip_saradc.c +++ b/drivers/iio/adc/rockchip_saradc.c @@ -35,7 +35,7 @@ @@ -628630,7 +628630,7 @@ index 12584f1631d8..c266169dfe61 100644 } diff --git a/drivers/input/Kconfig b/drivers/input/Kconfig -index 1efd3154b68d..1c80fe7b3c4a 100644 +index 1efd3154b..1c80fe7b3 100644 --- a/drivers/input/Kconfig +++ b/drivers/input/Kconfig @@ -197,6 +197,10 @@ source "drivers/input/tablet/Kconfig" @@ -628645,7 +628645,7 @@ index 1efd3154b68d..1c80fe7b3c4a 100644 source "drivers/input/rmi4/Kconfig" diff --git a/drivers/input/Makefile b/drivers/input/Makefile -index e35650930371..5cd16233ce08 100644 +index e35650930..5cd16233c 100644 --- a/drivers/input/Makefile +++ b/drivers/input/Makefile @@ -24,6 +24,8 @@ obj-$(CONFIG_INPUT_MOUSE) += mouse/ @@ -628658,7 +628658,7 @@ index e35650930371..5cd16233ce08 100644 obj-$(CONFIG_INPUT_APMPOWER) += apm-power.o diff --git a/drivers/input/keyboard/Kconfig b/drivers/input/keyboard/Kconfig -index 9f60f1559e49..793ecbbda32c 100644 +index 9f60f1559..793ecbbda 100644 --- a/drivers/input/keyboard/Kconfig +++ b/drivers/input/keyboard/Kconfig @@ -67,6 +67,9 @@ config KEYBOARD_AMIGA @@ -628672,7 +628672,7 @@ index 9f60f1559e49..793ecbbda32c 100644 tristate "Apple SPI keyboard and trackpad" depends on ACPI && EFI diff --git a/drivers/input/keyboard/hil_kbd.c b/drivers/input/keyboard/hil_kbd.c -index 54afb38601b9..bb29a7c9a1c0 100644 +index 54afb3860..bb29a7c9a 100644 --- a/drivers/input/keyboard/hil_kbd.c +++ b/drivers/input/keyboard/hil_kbd.c @@ -512,7 +512,6 @@ static int hil_dev_connect(struct serio *serio, struct serio_driver *drv) @@ -628685,7 +628685,7 @@ index 54afb38601b9..bb29a7c9a1c0 100644 diff --git a/drivers/input/keyboard/rk_keys.c b/drivers/input/keyboard/rk_keys.c new file mode 100755 -index 000000000000..375cfbd600ea +index 000000000..375cfbd60 --- /dev/null +++ b/drivers/input/keyboard/rk_keys.c @@ -0,0 +1,555 @@ @@ -629246,7 +629246,7 @@ index 000000000000..375cfbd600ea +module_exit(rk_keys_driver_exit); diff --git a/drivers/input/remotectl/Kconfig b/drivers/input/remotectl/Kconfig new file mode 100755 -index 000000000000..67558b48869e +index 000000000..67558b488 --- /dev/null +++ b/drivers/input/remotectl/Kconfig @@ -0,0 +1,19 @@ @@ -629271,7 +629271,7 @@ index 000000000000..67558b48869e +endif diff --git a/drivers/input/remotectl/Makefile b/drivers/input/remotectl/Makefile new file mode 100755 -index 000000000000..209472b4a356 +index 000000000..209472b4a --- /dev/null +++ b/drivers/input/remotectl/Makefile @@ -0,0 +1,8 @@ @@ -629285,7 +629285,7 @@ index 000000000000..209472b4a356 +obj-$(CONFIG_ROCKCHIP_REMOTECTL_PWM) += rockchip_pwm_remotectl.o diff --git a/drivers/input/remotectl/rockchip_pwm_remotectl.c b/drivers/input/remotectl/rockchip_pwm_remotectl.c new file mode 100755 -index 000000000000..f24ba9edf08b +index 000000000..f24ba9edf --- /dev/null +++ b/drivers/input/remotectl/rockchip_pwm_remotectl.c @@ -0,0 +1,828 @@ @@ -630119,7 +630119,7 @@ index 000000000000..f24ba9edf08b +MODULE_LICENSE("GPL"); diff --git a/drivers/input/remotectl/rockchip_pwm_remotectl.h b/drivers/input/remotectl/rockchip_pwm_remotectl.h new file mode 100755 -index 000000000000..5126a3edb5d5 +index 000000000..5126a3edb --- /dev/null +++ b/drivers/input/remotectl/rockchip_pwm_remotectl.h @@ -0,0 +1,160 @@ @@ -630285,7 +630285,7 @@ index 000000000000..5126a3edb5d5 +#endif diff --git a/drivers/input/sensors/Kconfig b/drivers/input/sensors/Kconfig new file mode 100755 -index 000000000000..ebff9437aa66 +index 000000000..ebff9437a --- /dev/null +++ b/drivers/input/sensors/Kconfig @@ -0,0 +1,23 @@ @@ -630314,7 +630314,7 @@ index 000000000000..ebff9437aa66 +endif diff --git a/drivers/input/sensors/Makefile b/drivers/input/sensors/Makefile new file mode 100755 -index 000000000000..df8d372dafe1 +index 000000000..df8d372da --- /dev/null +++ b/drivers/input/sensors/Makefile @@ -0,0 +1,15 @@ @@ -630335,7 +630335,7 @@ index 000000000000..df8d372dafe1 +sensor_dev-y = sensor-i2c.o sensor-dev.o diff --git a/drivers/input/sensors/accel/Kconfig b/drivers/input/sensors/accel/Kconfig new file mode 100755 -index 000000000000..724cb2ca1e7a +index 000000000..724cb2ca1 --- /dev/null +++ b/drivers/input/sensors/accel/Kconfig @@ -0,0 +1,149 @@ @@ -630490,7 +630490,7 @@ index 000000000000..724cb2ca1e7a +endif diff --git a/drivers/input/sensors/accel/Makefile b/drivers/input/sensors/accel/Makefile new file mode 100755 -index 000000000000..de250ef4a282 +index 000000000..de250ef4a --- /dev/null +++ b/drivers/input/sensors/accel/Makefile @@ -0,0 +1,22 @@ @@ -630518,7 +630518,7 @@ index 000000000000..de250ef4a282 +da223-y := da223_cust.o da223_core.o diff --git a/drivers/input/sensors/accel/bma2xx.c b/drivers/input/sensors/accel/bma2xx.c new file mode 100755 -index 000000000000..19f578a77295 +index 000000000..19f578a77 --- /dev/null +++ b/drivers/input/sensors/accel/bma2xx.c @@ -0,0 +1,2268 @@ @@ -632792,7 +632792,7 @@ index 000000000000..19f578a77295 +MODULE_LICENSE("GPL"); diff --git a/drivers/input/sensors/accel/da223_core.c b/drivers/input/sensors/accel/da223_core.c new file mode 100755 -index 000000000000..b0e25eac9b5f +index 000000000..b0e25eac9 --- /dev/null +++ b/drivers/input/sensors/accel/da223_core.c @@ -0,0 +1,1907 @@ @@ -634705,7 +634705,7 @@ index 000000000000..b0e25eac9b5f +} diff --git a/drivers/input/sensors/accel/da223_core.h b/drivers/input/sensors/accel/da223_core.h new file mode 100755 -index 000000000000..de67d711b486 +index 000000000..de67d711b --- /dev/null +++ b/drivers/input/sensors/accel/da223_core.h @@ -0,0 +1,303 @@ @@ -635014,7 +635014,7 @@ index 000000000000..de67d711b486 + diff --git a/drivers/input/sensors/accel/da223_cust.c b/drivers/input/sensors/accel/da223_cust.c new file mode 100755 -index 000000000000..c00836d5b78d +index 000000000..c00836d5b --- /dev/null +++ b/drivers/input/sensors/accel/da223_cust.c @@ -0,0 +1,898 @@ @@ -635918,7 +635918,7 @@ index 000000000000..c00836d5b78d +MODULE_LICENSE("GPL"); diff --git a/drivers/input/sensors/accel/da223_cust.h b/drivers/input/sensors/accel/da223_cust.h new file mode 100755 -index 000000000000..e6bf15a02da8 +index 000000000..e6bf15a02 --- /dev/null +++ b/drivers/input/sensors/accel/da223_cust.h @@ -0,0 +1,44 @@ @@ -635968,7 +635968,7 @@ index 000000000000..e6bf15a02da8 + diff --git a/drivers/input/sensors/accel/dmard10.c b/drivers/input/sensors/accel/dmard10.c new file mode 100755 -index 000000000000..8be258c316a2 +index 000000000..8be258c31 --- /dev/null +++ b/drivers/input/sensors/accel/dmard10.c @@ -0,0 +1,454 @@ @@ -636428,7 +636428,7 @@ index 000000000000..8be258c316a2 + diff --git a/drivers/input/sensors/accel/icm2060x_acc.c b/drivers/input/sensors/accel/icm2060x_acc.c new file mode 100755 -index 000000000000..80a5c96e6207 +index 000000000..80a5c96e6 --- /dev/null +++ b/drivers/input/sensors/accel/icm2060x_acc.c @@ -0,0 +1,260 @@ @@ -636694,7 +636694,7 @@ index 000000000000..80a5c96e6207 +MODULE_LICENSE("GPL"); diff --git a/drivers/input/sensors/accel/kxtik.c b/drivers/input/sensors/accel/kxtik.c new file mode 100755 -index 000000000000..734b471f5d3a +index 000000000..734b471f5 --- /dev/null +++ b/drivers/input/sensors/accel/kxtik.c @@ -0,0 +1,359 @@ @@ -637059,7 +637059,7 @@ index 000000000000..734b471f5d3a +MODULE_LICENSE("GPL"); diff --git a/drivers/input/sensors/accel/kxtj9.c b/drivers/input/sensors/accel/kxtj9.c new file mode 100755 -index 000000000000..6fc6a8c5f119 +index 000000000..6fc6a8c5f --- /dev/null +++ b/drivers/input/sensors/accel/kxtj9.c @@ -0,0 +1,332 @@ @@ -637397,7 +637397,7 @@ index 000000000000..6fc6a8c5f119 +MODULE_LICENSE("GPL"); diff --git a/drivers/input/sensors/accel/lis3dh.c b/drivers/input/sensors/accel/lis3dh.c new file mode 100755 -index 000000000000..55f0fe526899 +index 000000000..55f0fe526 --- /dev/null +++ b/drivers/input/sensors/accel/lis3dh.c @@ -0,0 +1,303 @@ @@ -637706,7 +637706,7 @@ index 000000000000..55f0fe526899 +MODULE_LICENSE("GPL"); diff --git a/drivers/input/sensors/accel/lsm303d.c b/drivers/input/sensors/accel/lsm303d.c new file mode 100755 -index 000000000000..ff238278f10c +index 000000000..ff238278f --- /dev/null +++ b/drivers/input/sensors/accel/lsm303d.c @@ -0,0 +1,362 @@ @@ -638074,7 +638074,7 @@ index 000000000000..ff238278f10c +MODULE_LICENSE("GPL"); diff --git a/drivers/input/sensors/accel/lsm330_acc.c b/drivers/input/sensors/accel/lsm330_acc.c new file mode 100755 -index 000000000000..ed93bb0147ff +index 000000000..ed93bb014 --- /dev/null +++ b/drivers/input/sensors/accel/lsm330_acc.c @@ -0,0 +1,278 @@ @@ -638358,7 +638358,7 @@ index 000000000000..ed93bb0147ff +MODULE_LICENSE("GPL"); diff --git a/drivers/input/sensors/accel/mc3230.c b/drivers/input/sensors/accel/mc3230.c new file mode 100755 -index 000000000000..d5827f2f2bee +index 000000000..d5827f2f2 --- /dev/null +++ b/drivers/input/sensors/accel/mc3230.c @@ -0,0 +1,1353 @@ @@ -639717,7 +639717,7 @@ index 000000000000..d5827f2f2bee +MODULE_DESCRIPTION("mc3230 3-Axis accelerometer driver"); diff --git a/drivers/input/sensors/accel/mma7660.c b/drivers/input/sensors/accel/mma7660.c new file mode 100755 -index 000000000000..33e2dec7bb22 +index 000000000..33e2dec7b --- /dev/null +++ b/drivers/input/sensors/accel/mma7660.c @@ -0,0 +1,258 @@ @@ -639981,7 +639981,7 @@ index 000000000000..33e2dec7bb22 +MODULE_LICENSE("GPL"); diff --git a/drivers/input/sensors/accel/mma8452.c b/drivers/input/sensors/accel/mma8452.c new file mode 100755 -index 000000000000..9c8bb48f0848 +index 000000000..9c8bb48f0 --- /dev/null +++ b/drivers/input/sensors/accel/mma8452.c @@ -0,0 +1,424 @@ @@ -640411,7 +640411,7 @@ index 000000000000..9c8bb48f0848 +MODULE_LICENSE("GPL"); diff --git a/drivers/input/sensors/accel/mpu6500_acc.c b/drivers/input/sensors/accel/mpu6500_acc.c new file mode 100755 -index 000000000000..6fc2058e0f9f +index 000000000..6fc2058e0 --- /dev/null +++ b/drivers/input/sensors/accel/mpu6500_acc.c @@ -0,0 +1,300 @@ @@ -640717,7 +640717,7 @@ index 000000000000..6fc2058e0f9f +MODULE_LICENSE("GPL"); diff --git a/drivers/input/sensors/accel/mpu6880_acc.c b/drivers/input/sensors/accel/mpu6880_acc.c new file mode 100755 -index 000000000000..4cf8c89506a5 +index 000000000..4cf8c8950 --- /dev/null +++ b/drivers/input/sensors/accel/mpu6880_acc.c @@ -0,0 +1,296 @@ @@ -641019,7 +641019,7 @@ index 000000000000..4cf8c89506a5 +MODULE_LICENSE("GPL"); diff --git a/drivers/input/sensors/accel/mxc622x.c b/drivers/input/sensors/accel/mxc622x.c new file mode 100755 -index 000000000000..614242584e0a +index 000000000..614242584 --- /dev/null +++ b/drivers/input/sensors/accel/mxc622x.c @@ -0,0 +1,284 @@ @@ -641309,7 +641309,7 @@ index 000000000000..614242584e0a +MODULE_LICENSE("GPL"); diff --git a/drivers/input/sensors/accel/mxc6655xa.c b/drivers/input/sensors/accel/mxc6655xa.c new file mode 100755 -index 000000000000..535a83a262f5 +index 000000000..535a83a26 --- /dev/null +++ b/drivers/input/sensors/accel/mxc6655xa.c @@ -0,0 +1,262 @@ @@ -641577,7 +641577,7 @@ index 000000000000..535a83a262f5 +MODULE_LICENSE("GPL"); diff --git a/drivers/input/sensors/accel/sc7660.c b/drivers/input/sensors/accel/sc7660.c new file mode 100755 -index 000000000000..39106b111000 +index 000000000..39106b111 --- /dev/null +++ b/drivers/input/sensors/accel/sc7660.c @@ -0,0 +1,1655 @@ @@ -643238,7 +643238,7 @@ index 000000000000..39106b111000 +MODULE_LICENSE("GPL"); diff --git a/drivers/input/sensors/accel/sc7a20.c b/drivers/input/sensors/accel/sc7a20.c new file mode 100755 -index 000000000000..f7443f922e7e +index 000000000..f7443f922 --- /dev/null +++ b/drivers/input/sensors/accel/sc7a20.c @@ -0,0 +1,1768 @@ @@ -645012,7 +645012,7 @@ index 000000000000..f7443f922e7e +MODULE_LICENSE("GPL"); diff --git a/drivers/input/sensors/accel/sc7a30.c b/drivers/input/sensors/accel/sc7a30.c new file mode 100755 -index 000000000000..576c9188029b +index 000000000..576c91880 --- /dev/null +++ b/drivers/input/sensors/accel/sc7a30.c @@ -0,0 +1,1215 @@ @@ -646233,7 +646233,7 @@ index 000000000000..576c9188029b +MODULE_LICENSE("GPL"); diff --git a/drivers/input/sensors/accel/stk8baxx.c b/drivers/input/sensors/accel/stk8baxx.c new file mode 100755 -index 000000000000..9ca93971d914 +index 000000000..9ca93971d --- /dev/null +++ b/drivers/input/sensors/accel/stk8baxx.c @@ -0,0 +1,957 @@ @@ -647196,7 +647196,7 @@ index 000000000000..9ca93971d914 +MODULE_VERSION(STK_ACC_DRIVER_VERSION); diff --git a/drivers/input/sensors/angle/Kconfig b/drivers/input/sensors/angle/Kconfig new file mode 100755 -index 000000000000..088837f92ed8 +index 000000000..088837f92 --- /dev/null +++ b/drivers/input/sensors/angle/Kconfig @@ -0,0 +1,27 @@ @@ -647229,7 +647229,7 @@ index 000000000000..088837f92ed8 + diff --git a/drivers/input/sensors/angle/Makefile b/drivers/input/sensors/angle/Makefile new file mode 100755 -index 000000000000..0696550b53f8 +index 000000000..0696550b5 --- /dev/null +++ b/drivers/input/sensors/angle/Makefile @@ -0,0 +1,3 @@ @@ -647238,7 +647238,7 @@ index 000000000000..0696550b53f8 +obj-$(CONFIG_ANGLE_LIS3DH) += angle_lis3dh.o diff --git a/drivers/input/sensors/angle/angle_kxtik.c b/drivers/input/sensors/angle/angle_kxtik.c new file mode 100755 -index 000000000000..7373c6bd4068 +index 000000000..7373c6bd4 --- /dev/null +++ b/drivers/input/sensors/angle/angle_kxtik.c @@ -0,0 +1,398 @@ @@ -647642,7 +647642,7 @@ index 000000000000..7373c6bd4068 +MODULE_LICENSE("GPL"); diff --git a/drivers/input/sensors/angle/angle_lis3dh.c b/drivers/input/sensors/angle/angle_lis3dh.c new file mode 100755 -index 000000000000..ae247ffa2312 +index 000000000..ae247ffa2 --- /dev/null +++ b/drivers/input/sensors/angle/angle_lis3dh.c @@ -0,0 +1,342 @@ @@ -647990,7 +647990,7 @@ index 000000000000..ae247ffa2312 + diff --git a/drivers/input/sensors/compass/Kconfig b/drivers/input/sensors/compass/Kconfig new file mode 100755 -index 000000000000..91a19ffe23ea +index 000000000..91a19ffe2 --- /dev/null +++ b/drivers/input/sensors/compass/Kconfig @@ -0,0 +1,58 @@ @@ -648054,7 +648054,7 @@ index 000000000000..91a19ffe23ea + diff --git a/drivers/input/sensors/compass/Makefile b/drivers/input/sensors/compass/Makefile new file mode 100755 -index 000000000000..f42c2aa2dd17 +index 000000000..f42c2aa2d --- /dev/null +++ b/drivers/input/sensors/compass/Makefile @@ -0,0 +1,8 @@ @@ -648068,7 +648068,7 @@ index 000000000000..f42c2aa2dd17 +obj-$(CONFIG_COMPASS_AK09918) += ak09918.o diff --git a/drivers/input/sensors/compass/ak09911.c b/drivers/input/sensors/compass/ak09911.c new file mode 100755 -index 000000000000..b1e334d0b5a8 +index 000000000..b1e334d0b --- /dev/null +++ b/drivers/input/sensors/compass/ak09911.c @@ -0,0 +1,667 @@ @@ -648741,7 +648741,7 @@ index 000000000000..b1e334d0b5a8 +MODULE_LICENSE("GPL"); diff --git a/drivers/input/sensors/compass/ak09918.c b/drivers/input/sensors/compass/ak09918.c new file mode 100755 -index 000000000000..1c3056a824e5 +index 000000000..1c3056a82 --- /dev/null +++ b/drivers/input/sensors/compass/ak09918.c @@ -0,0 +1,692 @@ @@ -649439,7 +649439,7 @@ index 000000000000..1c3056a824e5 +MODULE_LICENSE("GPL"); diff --git a/drivers/input/sensors/compass/ak8963.c b/drivers/input/sensors/compass/ak8963.c new file mode 100755 -index 000000000000..10e91eb2d0be +index 000000000..10e91eb2d --- /dev/null +++ b/drivers/input/sensors/compass/ak8963.c @@ -0,0 +1,714 @@ @@ -650159,7 +650159,7 @@ index 000000000000..10e91eb2d0be +MODULE_LICENSE("GPL"); diff --git a/drivers/input/sensors/compass/ak8975.c b/drivers/input/sensors/compass/ak8975.c new file mode 100755 -index 000000000000..c48a808ed18d +index 000000000..c48a808ed --- /dev/null +++ b/drivers/input/sensors/compass/ak8975.c @@ -0,0 +1,650 @@ @@ -650815,7 +650815,7 @@ index 000000000000..c48a808ed18d + diff --git a/drivers/input/sensors/gyro/Kconfig b/drivers/input/sensors/gyro/Kconfig new file mode 100755 -index 000000000000..fb721d4cb30d +index 000000000..fb721d4cb --- /dev/null +++ b/drivers/input/sensors/gyro/Kconfig @@ -0,0 +1,42 @@ @@ -650863,7 +650863,7 @@ index 000000000000..fb721d4cb30d +endif diff --git a/drivers/input/sensors/gyro/Makefile b/drivers/input/sensors/gyro/Makefile new file mode 100755 -index 000000000000..0943257a11de +index 000000000..0943257a1 --- /dev/null +++ b/drivers/input/sensors/gyro/Makefile @@ -0,0 +1,11 @@ @@ -650880,7 +650880,7 @@ index 000000000000..0943257a11de +obj-$(CONFIG_GYRO_ICM2060X) += icm2060x_gyro.o diff --git a/drivers/input/sensors/gyro/ewtsa.c b/drivers/input/sensors/gyro/ewtsa.c new file mode 100755 -index 000000000000..acbc0ac4b143 +index 000000000..acbc0ac4b --- /dev/null +++ b/drivers/input/sensors/gyro/ewtsa.c @@ -0,0 +1,461 @@ @@ -651347,7 +651347,7 @@ index 000000000000..acbc0ac4b143 +MODULE_LICENSE("GPL"); diff --git a/drivers/input/sensors/gyro/icm2060x_gyro.c b/drivers/input/sensors/gyro/icm2060x_gyro.c new file mode 100755 -index 000000000000..3d4624b5dbd6 +index 000000000..3d4624b5d --- /dev/null +++ b/drivers/input/sensors/gyro/icm2060x_gyro.c @@ -0,0 +1,216 @@ @@ -651569,7 +651569,7 @@ index 000000000000..3d4624b5dbd6 +MODULE_LICENSE("GPL"); diff --git a/drivers/input/sensors/gyro/l3g20d.c b/drivers/input/sensors/gyro/l3g20d.c new file mode 100755 -index 000000000000..8822a0e3bfe0 +index 000000000..8822a0e3b --- /dev/null +++ b/drivers/input/sensors/gyro/l3g20d.c @@ -0,0 +1,257 @@ @@ -651832,7 +651832,7 @@ index 000000000000..8822a0e3bfe0 +MODULE_LICENSE("GPL"); diff --git a/drivers/input/sensors/gyro/l3g4200d.c b/drivers/input/sensors/gyro/l3g4200d.c new file mode 100755 -index 000000000000..b1e3af6589cb +index 000000000..b1e3af658 --- /dev/null +++ b/drivers/input/sensors/gyro/l3g4200d.c @@ -0,0 +1,257 @@ @@ -652095,7 +652095,7 @@ index 000000000000..b1e3af6589cb +MODULE_LICENSE("GPL"); diff --git a/drivers/input/sensors/gyro/lsm330_gyro.c b/drivers/input/sensors/gyro/lsm330_gyro.c new file mode 100755 -index 000000000000..a488d4826acf +index 000000000..a488d4826 --- /dev/null +++ b/drivers/input/sensors/gyro/lsm330_gyro.c @@ -0,0 +1,262 @@ @@ -652363,7 +652363,7 @@ index 000000000000..a488d4826acf +MODULE_LICENSE("GPL"); diff --git a/drivers/input/sensors/gyro/mpu6500_gyro.c b/drivers/input/sensors/gyro/mpu6500_gyro.c new file mode 100755 -index 000000000000..6b4f81154b7f +index 000000000..6b4f81154 --- /dev/null +++ b/drivers/input/sensors/gyro/mpu6500_gyro.c @@ -0,0 +1,216 @@ @@ -652585,7 +652585,7 @@ index 000000000000..6b4f81154b7f +MODULE_LICENSE("GPL"); diff --git a/drivers/input/sensors/gyro/mpu6880_gyro.c b/drivers/input/sensors/gyro/mpu6880_gyro.c new file mode 100755 -index 000000000000..324e66ecfab6 +index 000000000..324e66ecf --- /dev/null +++ b/drivers/input/sensors/gyro/mpu6880_gyro.c @@ -0,0 +1,216 @@ @@ -652807,7 +652807,7 @@ index 000000000000..324e66ecfab6 +MODULE_LICENSE("GPL"); diff --git a/drivers/input/sensors/hall/Kconfig b/drivers/input/sensors/hall/Kconfig new file mode 100755 -index 000000000000..33ca28c87cda +index 000000000..33ca28c87 --- /dev/null +++ b/drivers/input/sensors/hall/Kconfig @@ -0,0 +1,16 @@ @@ -652829,7 +652829,7 @@ index 000000000000..33ca28c87cda +endif diff --git a/drivers/input/sensors/hall/Makefile b/drivers/input/sensors/hall/Makefile new file mode 100755 -index 000000000000..f78ba4ffb850 +index 000000000..f78ba4ffb --- /dev/null +++ b/drivers/input/sensors/hall/Makefile @@ -0,0 +1,3 @@ @@ -652838,7 +652838,7 @@ index 000000000000..f78ba4ffb850 +obj-$(CONFIG_HS_MH248) += mh248.o diff --git a/drivers/input/sensors/hall/mh248.c b/drivers/input/sensors/hall/mh248.c new file mode 100755 -index 000000000000..88ee00980514 +index 000000000..88ee00980 --- /dev/null +++ b/drivers/input/sensors/hall/mh248.c @@ -0,0 +1,165 @@ @@ -653009,7 +653009,7 @@ index 000000000000..88ee00980514 +MODULE_DESCRIPTION("Hall Sensor MH248 driver"); diff --git a/drivers/input/sensors/hall/och165t_hall.c b/drivers/input/sensors/hall/och165t_hall.c new file mode 100755 -index 000000000000..71711a95028d +index 000000000..71711a950 --- /dev/null +++ b/drivers/input/sensors/hall/och165t_hall.c @@ -0,0 +1,159 @@ @@ -653174,7 +653174,7 @@ index 000000000000..71711a95028d +MODULE_LICENSE("GPL"); diff --git a/drivers/input/sensors/lsensor/Kconfig b/drivers/input/sensors/lsensor/Kconfig new file mode 100755 -index 000000000000..8ea493862dd3 +index 000000000..8ea493862 --- /dev/null +++ b/drivers/input/sensors/lsensor/Kconfig @@ -0,0 +1,50 @@ @@ -653230,7 +653230,7 @@ index 000000000000..8ea493862dd3 + diff --git a/drivers/input/sensors/lsensor/Makefile b/drivers/input/sensors/lsensor/Makefile new file mode 100755 -index 000000000000..aa8bf78f440c +index 000000000..aa8bf78f4 --- /dev/null +++ b/drivers/input/sensors/lsensor/Makefile @@ -0,0 +1,13 @@ @@ -653249,7 +653249,7 @@ index 000000000000..aa8bf78f440c +obj-$(CONFIG_LS_EM3071X) += ls_em3071x.o diff --git a/drivers/input/sensors/lsensor/cm3217.c b/drivers/input/sensors/lsensor/cm3217.c new file mode 100755 -index 000000000000..182fee423993 +index 000000000..182fee423 --- /dev/null +++ b/drivers/input/sensors/lsensor/cm3217.c @@ -0,0 +1,237 @@ @@ -653492,7 +653492,7 @@ index 000000000000..182fee423993 +MODULE_LICENSE("GPL"); diff --git a/drivers/input/sensors/lsensor/cm3218.c b/drivers/input/sensors/lsensor/cm3218.c new file mode 100755 -index 000000000000..eed39578b005 +index 000000000..eed39578b --- /dev/null +++ b/drivers/input/sensors/lsensor/cm3218.c @@ -0,0 +1,415 @@ @@ -653913,7 +653913,7 @@ index 000000000000..eed39578b005 +MODULE_LICENSE("GPL"); diff --git a/drivers/input/sensors/lsensor/cm3232.c b/drivers/input/sensors/lsensor/cm3232.c new file mode 100755 -index 000000000000..6322e57bb1a9 +index 000000000..6322e57bb --- /dev/null +++ b/drivers/input/sensors/lsensor/cm3232.c @@ -0,0 +1,245 @@ @@ -654164,7 +654164,7 @@ index 000000000000..6322e57bb1a9 +MODULE_LICENSE("GPL"); diff --git a/drivers/input/sensors/lsensor/isl29023.c b/drivers/input/sensors/lsensor/isl29023.c new file mode 100755 -index 000000000000..200c4b2959c7 +index 000000000..200c4b295 --- /dev/null +++ b/drivers/input/sensors/lsensor/isl29023.c @@ -0,0 +1,273 @@ @@ -654443,7 +654443,7 @@ index 000000000000..200c4b2959c7 +MODULE_LICENSE("GPL"); diff --git a/drivers/input/sensors/lsensor/ls_al3006.c b/drivers/input/sensors/lsensor/ls_al3006.c new file mode 100755 -index 000000000000..8334d0faceaf +index 000000000..8334d0fac --- /dev/null +++ b/drivers/input/sensors/lsensor/ls_al3006.c @@ -0,0 +1,301 @@ @@ -654750,7 +654750,7 @@ index 000000000000..8334d0faceaf + diff --git a/drivers/input/sensors/lsensor/ls_ap321xx.c b/drivers/input/sensors/lsensor/ls_ap321xx.c new file mode 100755 -index 000000000000..8181cec587a0 +index 000000000..8181cec58 --- /dev/null +++ b/drivers/input/sensors/lsensor/ls_ap321xx.c @@ -0,0 +1,415 @@ @@ -655171,7 +655171,7 @@ index 000000000000..8181cec587a0 + diff --git a/drivers/input/sensors/lsensor/ls_em3071x.c b/drivers/input/sensors/lsensor/ls_em3071x.c new file mode 100755 -index 000000000000..fc7500963ab5 +index 000000000..fc7500963 --- /dev/null +++ b/drivers/input/sensors/lsensor/ls_em3071x.c @@ -0,0 +1,283 @@ @@ -655460,7 +655460,7 @@ index 000000000000..fc7500963ab5 +MODULE_LICENSE("GPL"); diff --git a/drivers/input/sensors/lsensor/ls_stk3171.c b/drivers/input/sensors/lsensor/ls_stk3171.c new file mode 100755 -index 000000000000..a8bc7d0e9af3 +index 000000000..a8bc7d0e9 --- /dev/null +++ b/drivers/input/sensors/lsensor/ls_stk3171.c @@ -0,0 +1,321 @@ @@ -655787,7 +655787,7 @@ index 000000000000..a8bc7d0e9af3 + diff --git a/drivers/input/sensors/lsensor/ls_stk3410.c b/drivers/input/sensors/lsensor/ls_stk3410.c new file mode 100755 -index 000000000000..25722040fc31 +index 000000000..25722040f --- /dev/null +++ b/drivers/input/sensors/lsensor/ls_stk3410.c @@ -0,0 +1,374 @@ @@ -656167,7 +656167,7 @@ index 000000000000..25722040fc31 +MODULE_LICENSE("GPL"); diff --git a/drivers/input/sensors/lsensor/ls_us5152.c b/drivers/input/sensors/lsensor/ls_us5152.c new file mode 100755 -index 000000000000..4f5b470bc735 +index 000000000..4f5b470bc --- /dev/null +++ b/drivers/input/sensors/lsensor/ls_us5152.c @@ -0,0 +1,440 @@ @@ -656613,7 +656613,7 @@ index 000000000000..4f5b470bc735 +MODULE_VERSION(DRIVER_VERSION); diff --git a/drivers/input/sensors/lsensor/ls_us5152.h b/drivers/input/sensors/lsensor/ls_us5152.h new file mode 100755 -index 000000000000..71f108572639 +index 000000000..71f108572 --- /dev/null +++ b/drivers/input/sensors/lsensor/ls_us5152.h @@ -0,0 +1,235 @@ @@ -656854,7 +656854,7 @@ index 000000000000..71f108572639 +#endif diff --git a/drivers/input/sensors/pressure/Kconfig b/drivers/input/sensors/pressure/Kconfig new file mode 100755 -index 000000000000..8bbaaa148690 +index 000000000..8bbaaa148 --- /dev/null +++ b/drivers/input/sensors/pressure/Kconfig @@ -0,0 +1,15 @@ @@ -656875,7 +656875,7 @@ index 000000000000..8bbaaa148690 +endif diff --git a/drivers/input/sensors/pressure/Makefile b/drivers/input/sensors/pressure/Makefile new file mode 100755 -index 000000000000..18872b53bb4b +index 000000000..18872b53b --- /dev/null +++ b/drivers/input/sensors/pressure/Makefile @@ -0,0 +1,7 @@ @@ -656888,7 +656888,7 @@ index 000000000000..18872b53bb4b + diff --git a/drivers/input/sensors/pressure/pr_ms5607.c b/drivers/input/sensors/pressure/pr_ms5607.c new file mode 100755 -index 000000000000..9833ad5d9a9e +index 000000000..9833ad5d9 --- /dev/null +++ b/drivers/input/sensors/pressure/pr_ms5607.c @@ -0,0 +1,297 @@ @@ -657191,7 +657191,7 @@ index 000000000000..9833ad5d9a9e +MODULE_LICENSE("GPL"); diff --git a/drivers/input/sensors/psensor/Kconfig b/drivers/input/sensors/psensor/Kconfig new file mode 100755 -index 000000000000..c7d32f51e7d0 +index 000000000..c7d32f51e --- /dev/null +++ b/drivers/input/sensors/psensor/Kconfig @@ -0,0 +1,32 @@ @@ -657229,7 +657229,7 @@ index 000000000000..c7d32f51e7d0 + diff --git a/drivers/input/sensors/psensor/Makefile b/drivers/input/sensors/psensor/Makefile new file mode 100755 -index 000000000000..49210d0e71cc +index 000000000..49210d0e7 --- /dev/null +++ b/drivers/input/sensors/psensor/Makefile @@ -0,0 +1,8 @@ @@ -657243,7 +657243,7 @@ index 000000000000..49210d0e71cc +obj-$(CONFIG_PS_EM3071X) += ps_em3071x.o diff --git a/drivers/input/sensors/psensor/ps_al3006.c b/drivers/input/sensors/psensor/ps_al3006.c new file mode 100755 -index 000000000000..3242af2be23f +index 000000000..3242af2be --- /dev/null +++ b/drivers/input/sensors/psensor/ps_al3006.c @@ -0,0 +1,261 @@ @@ -657510,7 +657510,7 @@ index 000000000000..3242af2be23f +MODULE_LICENSE("GPL"); diff --git a/drivers/input/sensors/psensor/ps_ap321xx.c b/drivers/input/sensors/psensor/ps_ap321xx.c new file mode 100755 -index 000000000000..d3711461af20 +index 000000000..d3711461a --- /dev/null +++ b/drivers/input/sensors/psensor/ps_ap321xx.c @@ -0,0 +1,325 @@ @@ -657841,7 +657841,7 @@ index 000000000000..d3711461af20 +MODULE_LICENSE("GPL"); diff --git a/drivers/input/sensors/psensor/ps_em3071x.c b/drivers/input/sensors/psensor/ps_em3071x.c new file mode 100755 -index 000000000000..5f387348881b +index 000000000..5f3873488 --- /dev/null +++ b/drivers/input/sensors/psensor/ps_em3071x.c @@ -0,0 +1,280 @@ @@ -658127,7 +658127,7 @@ index 000000000000..5f387348881b +MODULE_LICENSE("GPL"); diff --git a/drivers/input/sensors/psensor/ps_stk3171.c b/drivers/input/sensors/psensor/ps_stk3171.c new file mode 100755 -index 000000000000..1753bbe65c19 +index 000000000..1753bbe65 --- /dev/null +++ b/drivers/input/sensors/psensor/ps_stk3171.c @@ -0,0 +1,268 @@ @@ -658401,7 +658401,7 @@ index 000000000000..1753bbe65c19 +MODULE_LICENSE("GPL"); diff --git a/drivers/input/sensors/psensor/ps_stk3410.c b/drivers/input/sensors/psensor/ps_stk3410.c new file mode 100755 -index 000000000000..90f9a2313d1f +index 000000000..90f9a2313 --- /dev/null +++ b/drivers/input/sensors/psensor/ps_stk3410.c @@ -0,0 +1,377 @@ @@ -658784,7 +658784,7 @@ index 000000000000..90f9a2313d1f +MODULE_LICENSE("GPL"); diff --git a/drivers/input/sensors/sensor-dev.c b/drivers/input/sensors/sensor-dev.c new file mode 100755 -index 000000000000..5aeeba175edd +index 000000000..5aeeba175 --- /dev/null +++ b/drivers/input/sensors/sensor-dev.c @@ -0,0 +1,2042 @@ @@ -660832,7 +660832,7 @@ index 000000000000..5aeeba175edd +MODULE_LICENSE("GPL"); diff --git a/drivers/input/sensors/sensor-i2c.c b/drivers/input/sensors/sensor-i2c.c new file mode 100755 -index 000000000000..35c3feec8b32 +index 000000000..35c3feec8 --- /dev/null +++ b/drivers/input/sensors/sensor-i2c.c @@ -0,0 +1,245 @@ @@ -661083,7 +661083,7 @@ index 000000000000..35c3feec8b32 + diff --git a/drivers/input/sensors/temperature/Kconfig b/drivers/input/sensors/temperature/Kconfig new file mode 100755 -index 000000000000..34edaa7838ac +index 000000000..34edaa783 --- /dev/null +++ b/drivers/input/sensors/temperature/Kconfig @@ -0,0 +1,15 @@ @@ -661104,7 +661104,7 @@ index 000000000000..34edaa7838ac +endif diff --git a/drivers/input/sensors/temperature/Makefile b/drivers/input/sensors/temperature/Makefile new file mode 100755 -index 000000000000..6045760d7e93 +index 000000000..6045760d7 --- /dev/null +++ b/drivers/input/sensors/temperature/Makefile @@ -0,0 +1,7 @@ @@ -661117,7 +661117,7 @@ index 000000000000..6045760d7e93 + diff --git a/drivers/input/sensors/temperature/tmp_ms5607.c b/drivers/input/sensors/temperature/tmp_ms5607.c new file mode 100755 -index 000000000000..1e5183ccc11d +index 000000000..1e5183ccc --- /dev/null +++ b/drivers/input/sensors/temperature/tmp_ms5607.c @@ -0,0 +1,314 @@ @@ -661436,7 +661436,7 @@ index 000000000000..1e5183ccc11d +MODULE_DESCRIPTION("ms5607 temperature driver"); +MODULE_LICENSE("GPL"); diff --git a/drivers/input/serio/ambakmi.c b/drivers/input/serio/ambakmi.c -index ecdeca147ed7..4408245b61d2 100644 +index ecdeca147..4408245b6 100644 --- a/drivers/input/serio/ambakmi.c +++ b/drivers/input/serio/ambakmi.c @@ -159,7 +159,7 @@ static int amba_kmi_probe(struct amba_device *dev, @@ -661457,7 +661457,7 @@ index ecdeca147ed7..4408245b61d2 100644 static int __maybe_unused amba_kmi_resume(struct device *dev) diff --git a/drivers/input/touchscreen/Kconfig b/drivers/input/touchscreen/Kconfig -index cc18f54ea887..b9db13edafc1 100644 +index cc18f54ea..b9db13eda 100644 --- a/drivers/input/touchscreen/Kconfig +++ b/drivers/input/touchscreen/Kconfig @@ -404,6 +404,24 @@ config TOUCHSCREEN_GOODIX @@ -661486,7 +661486,7 @@ index cc18f54ea887..b9db13edafc1 100644 tristate "HiDeep Touch IC" depends on I2C diff --git a/drivers/input/touchscreen/Makefile b/drivers/input/touchscreen/Makefile -index 6233541e9173..4a3cd29bd96d 100644 +index 6233541e9..4a3cd29bd 100644 --- a/drivers/input/touchscreen/Makefile +++ b/drivers/input/touchscreen/Makefile @@ -45,6 +45,10 @@ obj-$(CONFIG_TOUCHSCREEN_EGALAX_SERIAL) += egalax_ts_serial.o @@ -661502,7 +661502,7 @@ index 6233541e9173..4a3cd29bd96d 100644 obj-$(CONFIG_TOUCHSCREEN_IMX6UL_TSC) += imx6ul_tsc.o diff --git a/drivers/input/touchscreen/cy8c_touchpad.c b/drivers/input/touchscreen/cy8c_touchpad.c new file mode 100755 -index 000000000000..8088cb918c79 +index 000000000..8088cb918 --- /dev/null +++ b/drivers/input/touchscreen/cy8c_touchpad.c @@ -0,0 +1,296 @@ @@ -661804,7 +661804,7 @@ index 000000000000..8088cb918c79 +MODULE_LICENSE("GPL v2"); diff --git a/drivers/input/touchscreen/cyttsp5/Kconfig b/drivers/input/touchscreen/cyttsp5/Kconfig new file mode 100755 -index 000000000000..4bdeb1b8365d +index 000000000..4bdeb1b83 --- /dev/null +++ b/drivers/input/touchscreen/cyttsp5/Kconfig @@ -0,0 +1,205 @@ @@ -662015,7 +662015,7 @@ index 000000000000..4bdeb1b8365d + diff --git a/drivers/input/touchscreen/cyttsp5/Makefile b/drivers/input/touchscreen/cyttsp5/Makefile new file mode 100755 -index 000000000000..ff1fe526035d +index 000000000..ff1fe5260 --- /dev/null +++ b/drivers/input/touchscreen/cyttsp5/Makefile @@ -0,0 +1,23 @@ @@ -662044,7 +662044,7 @@ index 000000000000..ff1fe526035d +obj-$(CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP5_TEST_DEVICE_ACCESS_API) += cyttsp5_test_device_access_api.o diff --git a/drivers/input/touchscreen/cyttsp5/cyttsp5_btn.c b/drivers/input/touchscreen/cyttsp5/cyttsp5_btn.c new file mode 100755 -index 000000000000..52c0eb85d29e +index 000000000..52c0eb85d --- /dev/null +++ b/drivers/input/touchscreen/cyttsp5/cyttsp5_btn.c @@ -0,0 +1,369 @@ @@ -662419,7 +662419,7 @@ index 000000000000..52c0eb85d29e +} diff --git a/drivers/input/touchscreen/cyttsp5/cyttsp5_core.c b/drivers/input/touchscreen/cyttsp5/cyttsp5_core.c new file mode 100755 -index 000000000000..7fac39a1bbaf +index 000000000..7fac39a1b --- /dev/null +++ b/drivers/input/touchscreen/cyttsp5/cyttsp5_core.c @@ -0,0 +1,6292 @@ @@ -668717,7 +668717,7 @@ index 000000000000..7fac39a1bbaf +MODULE_AUTHOR("Parade Technologies "); diff --git a/drivers/input/touchscreen/cyttsp5/cyttsp5_core.h b/drivers/input/touchscreen/cyttsp5/cyttsp5_core.h new file mode 100755 -index 000000000000..5989613865c1 +index 000000000..598961386 --- /dev/null +++ b/drivers/input/touchscreen/cyttsp5/cyttsp5_core.h @@ -0,0 +1,182 @@ @@ -668905,7 +668905,7 @@ index 000000000000..5989613865c1 +#endif /* _LINUX_CYTTSP5_CORE_H */ diff --git a/drivers/input/touchscreen/cyttsp5/cyttsp5_debug.c b/drivers/input/touchscreen/cyttsp5/cyttsp5_debug.c new file mode 100755 -index 000000000000..f4ebba784936 +index 000000000..f4ebba784 --- /dev/null +++ b/drivers/input/touchscreen/cyttsp5/cyttsp5_debug.c @@ -0,0 +1,393 @@ @@ -669304,7 +669304,7 @@ index 000000000000..f4ebba784936 +MODULE_AUTHOR("Parade Technologies "); diff --git a/drivers/input/touchscreen/cyttsp5/cyttsp5_device_access.c b/drivers/input/touchscreen/cyttsp5/cyttsp5_device_access.c new file mode 100755 -index 000000000000..51cd63dc6ac0 +index 000000000..51cd63dc6 --- /dev/null +++ b/drivers/input/touchscreen/cyttsp5/cyttsp5_device_access.c @@ -0,0 +1,5219 @@ @@ -674529,7 +674529,7 @@ index 000000000000..51cd63dc6ac0 + diff --git a/drivers/input/touchscreen/cyttsp5/cyttsp5_devtree.c b/drivers/input/touchscreen/cyttsp5/cyttsp5_devtree.c new file mode 100755 -index 000000000000..9cb9050960b6 +index 000000000..9cb905096 --- /dev/null +++ b/drivers/input/touchscreen/cyttsp5/cyttsp5_devtree.c @@ -0,0 +1,785 @@ @@ -675320,7 +675320,7 @@ index 000000000000..9cb9050960b6 +MODULE_AUTHOR("Parade Technologies "); diff --git a/drivers/input/touchscreen/cyttsp5/cyttsp5_i2c.c b/drivers/input/touchscreen/cyttsp5/cyttsp5_i2c.c new file mode 100755 -index 000000000000..976db422b907 +index 000000000..976db422b --- /dev/null +++ b/drivers/input/touchscreen/cyttsp5/cyttsp5_i2c.c @@ -0,0 +1,248 @@ @@ -675574,7 +675574,7 @@ index 000000000000..976db422b907 +MODULE_AUTHOR("Parade Technologies "); diff --git a/drivers/input/touchscreen/cyttsp5/cyttsp5_loader.c b/drivers/input/touchscreen/cyttsp5/cyttsp5_loader.c new file mode 100755 -index 000000000000..c900eb206881 +index 000000000..c900eb206 --- /dev/null +++ b/drivers/input/touchscreen/cyttsp5/cyttsp5_loader.c @@ -0,0 +1,1586 @@ @@ -677166,7 +677166,7 @@ index 000000000000..c900eb206881 +MODULE_AUTHOR("Parade Technologies "); diff --git a/drivers/input/touchscreen/cyttsp5/cyttsp5_mt_common.c b/drivers/input/touchscreen/cyttsp5/cyttsp5_mt_common.c new file mode 100755 -index 000000000000..25e5fa7654d4 +index 000000000..25e5fa765 --- /dev/null +++ b/drivers/input/touchscreen/cyttsp5/cyttsp5_mt_common.c @@ -0,0 +1,793 @@ @@ -677965,7 +677965,7 @@ index 000000000000..25e5fa7654d4 +} diff --git a/drivers/input/touchscreen/cyttsp5/cyttsp5_mta.c b/drivers/input/touchscreen/cyttsp5/cyttsp5_mta.c new file mode 100755 -index 000000000000..d457bb66d360 +index 000000000..d457bb66d --- /dev/null +++ b/drivers/input/touchscreen/cyttsp5/cyttsp5_mta.c @@ -0,0 +1,85 @@ @@ -678056,7 +678056,7 @@ index 000000000000..d457bb66d360 +} diff --git a/drivers/input/touchscreen/cyttsp5/cyttsp5_mtb.c b/drivers/input/touchscreen/cyttsp5/cyttsp5_mtb.c new file mode 100755 -index 000000000000..d5f51e9c836f +index 000000000..d5f51e9c8 --- /dev/null +++ b/drivers/input/touchscreen/cyttsp5/cyttsp5_mtb.c @@ -0,0 +1,93 @@ @@ -678155,7 +678155,7 @@ index 000000000000..d5f51e9c836f + diff --git a/drivers/input/touchscreen/cyttsp5/cyttsp5_params.h b/drivers/input/touchscreen/cyttsp5/cyttsp5_params.h new file mode 100755 -index 000000000000..7a92d109fa73 +index 000000000..7a92d109f --- /dev/null +++ b/drivers/input/touchscreen/cyttsp5/cyttsp5_params.h @@ -0,0 +1,1548 @@ @@ -679709,7 +679709,7 @@ index 000000000000..7a92d109fa73 + diff --git a/drivers/input/touchscreen/cyttsp5/cyttsp5_params_pid00.h b/drivers/input/touchscreen/cyttsp5/cyttsp5_params_pid00.h new file mode 100755 -index 000000000000..939ff2a288ae +index 000000000..939ff2a28 --- /dev/null +++ b/drivers/input/touchscreen/cyttsp5/cyttsp5_params_pid00.h @@ -0,0 +1,1548 @@ @@ -681263,7 +681263,7 @@ index 000000000000..939ff2a288ae + diff --git a/drivers/input/touchscreen/cyttsp5/cyttsp5_params_pid01.h b/drivers/input/touchscreen/cyttsp5/cyttsp5_params_pid01.h new file mode 100755 -index 000000000000..3dcb64dd3ba7 +index 000000000..3dcb64dd3 --- /dev/null +++ b/drivers/input/touchscreen/cyttsp5/cyttsp5_params_pid01.h @@ -0,0 +1,1548 @@ @@ -682817,7 +682817,7 @@ index 000000000000..3dcb64dd3ba7 + diff --git a/drivers/input/touchscreen/cyttsp5/cyttsp5_platform.c b/drivers/input/touchscreen/cyttsp5/cyttsp5_platform.c new file mode 100755 -index 000000000000..cc6feaef1031 +index 000000000..cc6feaef1 --- /dev/null +++ b/drivers/input/touchscreen/cyttsp5/cyttsp5_platform.c @@ -0,0 +1,289 @@ @@ -683112,7 +683112,7 @@ index 000000000000..cc6feaef1031 +#endif diff --git a/drivers/input/touchscreen/cyttsp5/cyttsp5_platform.h b/drivers/input/touchscreen/cyttsp5/cyttsp5_platform.h new file mode 100755 -index 000000000000..289b014775c0 +index 000000000..289b01477 --- /dev/null +++ b/drivers/input/touchscreen/cyttsp5/cyttsp5_platform.h @@ -0,0 +1,60 @@ @@ -683178,7 +683178,7 @@ index 000000000000..289b014775c0 +#endif /* _LINUX_CYTTSP5_PLATFORM_H */ diff --git a/drivers/input/touchscreen/cyttsp5/cyttsp5_proximity.c b/drivers/input/touchscreen/cyttsp5/cyttsp5_proximity.c new file mode 100755 -index 000000000000..0dba2c817387 +index 000000000..0dba2c817 --- /dev/null +++ b/drivers/input/touchscreen/cyttsp5/cyttsp5_proximity.c @@ -0,0 +1,555 @@ @@ -683739,7 +683739,7 @@ index 000000000000..0dba2c817387 +} diff --git a/drivers/input/touchscreen/cyttsp5/cyttsp5_regs.h b/drivers/input/touchscreen/cyttsp5/cyttsp5_regs.h new file mode 100755 -index 000000000000..ded98eff2deb +index 000000000..ded98eff2 --- /dev/null +++ b/drivers/input/touchscreen/cyttsp5/cyttsp5_regs.h @@ -0,0 +1,1202 @@ @@ -684947,7 +684947,7 @@ index 000000000000..ded98eff2deb +#endif /* _CYTTSP5_REGS_H */ diff --git a/drivers/input/touchscreen/cyttsp5/cyttsp5_spi.c b/drivers/input/touchscreen/cyttsp5/cyttsp5_spi.c new file mode 100755 -index 000000000000..a01b88b0c8a9 +index 000000000..a01b88b0c --- /dev/null +++ b/drivers/input/touchscreen/cyttsp5/cyttsp5_spi.c @@ -0,0 +1,255 @@ @@ -685208,7 +685208,7 @@ index 000000000000..a01b88b0c8a9 +MODULE_AUTHOR("Parade Technologies "); diff --git a/drivers/input/touchscreen/cyttsp5/cyttsp5_test_device_access_api.c b/drivers/input/touchscreen/cyttsp5/cyttsp5_test_device_access_api.c new file mode 100755 -index 000000000000..b9517d52d5d4 +index 000000000..b9517d52d --- /dev/null +++ b/drivers/input/touchscreen/cyttsp5/cyttsp5_test_device_access_api.c @@ -0,0 +1,442 @@ @@ -685656,7 +685656,7 @@ index 000000000000..b9517d52d5d4 +MODULE_AUTHOR("Parade Technologies "); diff --git a/drivers/input/touchscreen/focaltech_touch/Makefile b/drivers/input/touchscreen/focaltech_touch/Makefile new file mode 100755 -index 000000000000..bf7df1543b01 +index 000000000..bf7df1543 --- /dev/null +++ b/drivers/input/touchscreen/focaltech_touch/Makefile @@ -0,0 +1,18 @@ @@ -685680,7 +685680,7 @@ index 000000000000..bf7df1543b01 + diff --git a/drivers/input/touchscreen/focaltech_touch/focaltech_common.h b/drivers/input/touchscreen/focaltech_touch/focaltech_common.h new file mode 100755 -index 000000000000..7e911d1ac36f +index 000000000..7e911d1ac --- /dev/null +++ b/drivers/input/touchscreen/focaltech_touch/focaltech_common.h @@ -0,0 +1,159 @@ @@ -685845,7 +685845,7 @@ index 000000000000..7e911d1ac36f +#endif /* __LINUX_FOCALTECH_COMMON_H__ */ diff --git a/drivers/input/touchscreen/focaltech_touch/focaltech_config.h b/drivers/input/touchscreen/focaltech_touch/focaltech_config.h new file mode 100755 -index 000000000000..18cf1eafaa9a +index 000000000..18cf1eafa --- /dev/null +++ b/drivers/input/touchscreen/focaltech_touch/focaltech_config.h @@ -0,0 +1,244 @@ @@ -686095,7 +686095,7 @@ index 000000000000..18cf1eafaa9a +#endif /* _LINUX_FOCLATECH_CONFIG_H_ */ diff --git a/drivers/input/touchscreen/focaltech_touch/focaltech_core.c b/drivers/input/touchscreen/focaltech_touch/focaltech_core.c new file mode 100755 -index 000000000000..c8318c0ce8c0 +index 000000000..c8318c0ce --- /dev/null +++ b/drivers/input/touchscreen/focaltech_touch/focaltech_core.c @@ -0,0 +1,1783 @@ @@ -687884,7 +687884,7 @@ index 000000000000..c8318c0ce8c0 +MODULE_LICENSE("GPL v2"); diff --git a/drivers/input/touchscreen/focaltech_touch/focaltech_core.h b/drivers/input/touchscreen/focaltech_touch/focaltech_core.h new file mode 100755 -index 000000000000..6547719b94a9 +index 000000000..6547719b9 --- /dev/null +++ b/drivers/input/touchscreen/focaltech_touch/focaltech_core.h @@ -0,0 +1,254 @@ @@ -688144,7 +688144,7 @@ index 000000000000..6547719b94a9 +#endif /* __LINUX_FOCALTECH_CORE_H__ */ diff --git a/drivers/input/touchscreen/focaltech_touch/focaltech_esdcheck.c b/drivers/input/touchscreen/focaltech_touch/focaltech_esdcheck.c new file mode 100755 -index 000000000000..cb8e6ec18bcf +index 000000000..cb8e6ec18 --- /dev/null +++ b/drivers/input/touchscreen/focaltech_touch/focaltech_esdcheck.c @@ -0,0 +1,552 @@ @@ -688702,7 +688702,7 @@ index 000000000000..cb8e6ec18bcf + diff --git a/drivers/input/touchscreen/focaltech_touch/focaltech_ex_fun.c b/drivers/input/touchscreen/focaltech_touch/focaltech_ex_fun.c new file mode 100755 -index 000000000000..06511c515869 +index 000000000..06511c515 --- /dev/null +++ b/drivers/input/touchscreen/focaltech_touch/focaltech_ex_fun.c @@ -0,0 +1,1130 @@ @@ -689838,7 +689838,7 @@ index 000000000000..06511c515869 +#endif diff --git a/drivers/input/touchscreen/focaltech_touch/focaltech_ex_mode.c b/drivers/input/touchscreen/focaltech_touch/focaltech_ex_mode.c new file mode 100755 -index 000000000000..bca972ebb040 +index 000000000..bca972ebb --- /dev/null +++ b/drivers/input/touchscreen/focaltech_touch/focaltech_ex_mode.c @@ -0,0 +1,382 @@ @@ -690226,7 +690226,7 @@ index 000000000000..bca972ebb040 + diff --git a/drivers/input/touchscreen/focaltech_touch/focaltech_flash.c b/drivers/input/touchscreen/focaltech_touch/focaltech_flash.c new file mode 100755 -index 000000000000..43672a78ddac +index 000000000..43672a78d --- /dev/null +++ b/drivers/input/touchscreen/focaltech_touch/focaltech_flash.c @@ -0,0 +1,1971 @@ @@ -692203,7 +692203,7 @@ index 000000000000..43672a78ddac +#endif /* #if FTS_AUTO_UPGRADE_EN */ diff --git a/drivers/input/touchscreen/focaltech_touch/focaltech_flash.h b/drivers/input/touchscreen/focaltech_touch/focaltech_flash.h new file mode 100755 -index 000000000000..d11f42ca8e1e +index 000000000..d11f42ca8 --- /dev/null +++ b/drivers/input/touchscreen/focaltech_touch/focaltech_flash.h @@ -0,0 +1,182 @@ @@ -692391,7 +692391,7 @@ index 000000000000..d11f42ca8e1e +#endif diff --git a/drivers/input/touchscreen/focaltech_touch/focaltech_flash/Makefile b/drivers/input/touchscreen/focaltech_touch/focaltech_flash/Makefile new file mode 100755 -index 000000000000..133dbcf8d701 +index 000000000..133dbcf8d --- /dev/null +++ b/drivers/input/touchscreen/focaltech_touch/focaltech_flash/Makefile @@ -0,0 +1,8 @@ @@ -692406,7 +692406,7 @@ index 000000000000..133dbcf8d701 \ No newline at end of file diff --git a/drivers/input/touchscreen/focaltech_touch/focaltech_flash/focaltech_upgrade_ft8201.c b/drivers/input/touchscreen/focaltech_touch/focaltech_flash/focaltech_upgrade_ft8201.c new file mode 100755 -index 000000000000..e32de88b2435 +index 000000000..e32de88b2 --- /dev/null +++ b/drivers/input/touchscreen/focaltech_touch/focaltech_flash/focaltech_upgrade_ft8201.c @@ -0,0 +1,1033 @@ @@ -693445,7 +693445,7 @@ index 000000000000..e32de88b2435 +}; diff --git a/drivers/input/touchscreen/focaltech_touch/focaltech_gesture.c b/drivers/input/touchscreen/focaltech_touch/focaltech_gesture.c new file mode 100755 -index 000000000000..0874729e5d59 +index 000000000..0874729e5 --- /dev/null +++ b/drivers/input/touchscreen/focaltech_touch/focaltech_gesture.c @@ -0,0 +1,597 @@ @@ -694048,7 +694048,7 @@ index 000000000000..0874729e5d59 +#endif diff --git a/drivers/input/touchscreen/focaltech_touch/focaltech_i2c.c b/drivers/input/touchscreen/focaltech_touch/focaltech_i2c.c new file mode 100755 -index 000000000000..5e8294145b28 +index 000000000..5e8294145 --- /dev/null +++ b/drivers/input/touchscreen/focaltech_touch/focaltech_i2c.c @@ -0,0 +1,240 @@ @@ -694294,7 +694294,7 @@ index 000000000000..5e8294145b28 + diff --git a/drivers/input/touchscreen/focaltech_touch/focaltech_point_report_check.c b/drivers/input/touchscreen/focaltech_touch/focaltech_point_report_check.c new file mode 100755 -index 000000000000..7157f444080d +index 000000000..7157f4440 --- /dev/null +++ b/drivers/input/touchscreen/focaltech_touch/focaltech_point_report_check.c @@ -0,0 +1,135 @@ @@ -694435,7 +694435,7 @@ index 000000000000..7157f444080d + diff --git a/drivers/input/touchscreen/focaltech_touch/focaltech_test/Makefile b/drivers/input/touchscreen/focaltech_touch/focaltech_test/Makefile new file mode 100755 -index 000000000000..2a2945ec021a +index 000000000..2a2945ec0 --- /dev/null +++ b/drivers/input/touchscreen/focaltech_touch/focaltech_test/Makefile @@ -0,0 +1,11 @@ @@ -694452,7 +694452,7 @@ index 000000000000..2a2945ec021a + diff --git a/drivers/input/touchscreen/focaltech_touch/focaltech_test/focaltech_test.c b/drivers/input/touchscreen/focaltech_touch/focaltech_test/focaltech_test.c new file mode 100755 -index 000000000000..991bbba87c70 +index 000000000..991bbba87 --- /dev/null +++ b/drivers/input/touchscreen/focaltech_touch/focaltech_test/focaltech_test.c @@ -0,0 +1,1948 @@ @@ -696406,7 +696406,7 @@ index 000000000000..991bbba87c70 +} diff --git a/drivers/input/touchscreen/focaltech_touch/focaltech_test/focaltech_test.h b/drivers/input/touchscreen/focaltech_touch/focaltech_test/focaltech_test.h new file mode 100755 -index 000000000000..bf36233363a1 +index 000000000..bf3623336 --- /dev/null +++ b/drivers/input/touchscreen/focaltech_touch/focaltech_test/focaltech_test.h @@ -0,0 +1,589 @@ @@ -697001,7 +697001,7 @@ index 000000000000..bf36233363a1 +#endif diff --git a/drivers/input/touchscreen/focaltech_touch/focaltech_test/focaltech_test_ini.c b/drivers/input/touchscreen/focaltech_touch/focaltech_test/focaltech_test_ini.c new file mode 100755 -index 000000000000..a6ea11fd6025 +index 000000000..a6ea11fd6 --- /dev/null +++ b/drivers/input/touchscreen/focaltech_touch/focaltech_test/focaltech_test_ini.c @@ -0,0 +1,1220 @@ @@ -698227,7 +698227,7 @@ index 000000000000..a6ea11fd6025 +} diff --git a/drivers/input/touchscreen/focaltech_touch/focaltech_test/focaltech_test_ini.h b/drivers/input/touchscreen/focaltech_touch/focaltech_test/focaltech_test_ini.h new file mode 100755 -index 000000000000..a6c8d50c11d2 +index 000000000..a6c8d50c1 --- /dev/null +++ b/drivers/input/touchscreen/focaltech_touch/focaltech_test/focaltech_test_ini.h @@ -0,0 +1,144 @@ @@ -698377,7 +698377,7 @@ index 000000000000..a6c8d50c11d2 +#endif /* _INI_H */ diff --git a/drivers/input/touchscreen/focaltech_touch/focaltech_test/supported_ic/Makefile b/drivers/input/touchscreen/focaltech_touch/focaltech_test/supported_ic/Makefile new file mode 100755 -index 000000000000..2e3a5e524418 +index 000000000..2e3a5e524 --- /dev/null +++ b/drivers/input/touchscreen/focaltech_touch/focaltech_test/supported_ic/Makefile @@ -0,0 +1,6 @@ @@ -698389,7 +698389,7 @@ index 000000000000..2e3a5e524418 +obj-y += focaltech_test_ft8201.o diff --git a/drivers/input/touchscreen/focaltech_touch/focaltech_test/supported_ic/focaltech_test_ft8201.c b/drivers/input/touchscreen/focaltech_touch/focaltech_test/supported_ic/focaltech_test_ft8201.c new file mode 100755 -index 000000000000..a5d666724e55 +index 000000000..a5d666724 --- /dev/null +++ b/drivers/input/touchscreen/focaltech_touch/focaltech_test/supported_ic/focaltech_test_ft8201.c @@ -0,0 +1,1034 @@ @@ -699429,10 +699429,10 @@ index 000000000000..a5d666724e55 + diff --git a/drivers/input/touchscreen/focaltech_touch/include/firmware/fw_sample.h b/drivers/input/touchscreen/focaltech_touch/include/firmware/fw_sample.h new file mode 100755 -index 000000000000..e69de29bb2d1 +index 000000000..e69de29bb diff --git a/drivers/input/touchscreen/focaltech_touch/include/pramboot/FT8006M_Pramboot_V1.6_20180426_le.h b/drivers/input/touchscreen/focaltech_touch/include/pramboot/FT8006M_Pramboot_V1.6_20180426_le.h new file mode 100755 -index 000000000000..0db3f051175a +index 000000000..0db3f0511 --- /dev/null +++ b/drivers/input/touchscreen/focaltech_touch/include/pramboot/FT8006M_Pramboot_V1.6_20180426_le.h @@ -0,0 +1,299 @@ @@ -699738,7 +699738,7 @@ index 000000000000..0db3f051175a \ No newline at end of file diff --git a/drivers/input/touchscreen/focaltech_touch_ft5436/Makefile b/drivers/input/touchscreen/focaltech_touch_ft5436/Makefile new file mode 100755 -index 000000000000..df8d3e5ef10a +index 000000000..df8d3e5ef --- /dev/null +++ b/drivers/input/touchscreen/focaltech_touch_ft5436/Makefile @@ -0,0 +1,16 @@ @@ -699760,7 +699760,7 @@ index 000000000000..df8d3e5ef10a +obj-y += focaltech_flash/ diff --git a/drivers/input/touchscreen/focaltech_touch_ft5436/focaltech_common.h b/drivers/input/touchscreen/focaltech_touch_ft5436/focaltech_common.h new file mode 100755 -index 000000000000..1d7ac55572fe +index 000000000..1d7ac5557 --- /dev/null +++ b/drivers/input/touchscreen/focaltech_touch_ft5436/focaltech_common.h @@ -0,0 +1,166 @@ @@ -699932,7 +699932,7 @@ index 000000000000..1d7ac55572fe +#endif /* __LINUX_FOCALTECH_COMMON_H__ */ diff --git a/drivers/input/touchscreen/focaltech_touch_ft5436/focaltech_config.h b/drivers/input/touchscreen/focaltech_touch_ft5436/focaltech_config.h new file mode 100755 -index 000000000000..d30ca81df9a9 +index 000000000..d30ca81df --- /dev/null +++ b/drivers/input/touchscreen/focaltech_touch_ft5436/focaltech_config.h @@ -0,0 +1,241 @@ @@ -700179,7 +700179,7 @@ index 000000000000..d30ca81df9a9 +#endif /* _LINUX_FOCLATECH_CONFIG_H_ */ diff --git a/drivers/input/touchscreen/focaltech_touch_ft5436/focaltech_core.c b/drivers/input/touchscreen/focaltech_touch_ft5436/focaltech_core.c new file mode 100755 -index 000000000000..932b2f866274 +index 000000000..932b2f866 --- /dev/null +++ b/drivers/input/touchscreen/focaltech_touch_ft5436/focaltech_core.c @@ -0,0 +1,1747 @@ @@ -701932,7 +701932,7 @@ index 000000000000..932b2f866274 +MODULE_LICENSE("GPL v2"); diff --git a/drivers/input/touchscreen/focaltech_touch_ft5436/focaltech_core.h b/drivers/input/touchscreen/focaltech_touch_ft5436/focaltech_core.h new file mode 100755 -index 000000000000..66e98371bf1c +index 000000000..66e98371b --- /dev/null +++ b/drivers/input/touchscreen/focaltech_touch_ft5436/focaltech_core.h @@ -0,0 +1,263 @@ @@ -702201,7 +702201,7 @@ index 000000000000..66e98371bf1c +#endif /* __LINUX_FOCALTECH_CORE_H__ */ diff --git a/drivers/input/touchscreen/focaltech_touch_ft5436/focaltech_esdcheck.c b/drivers/input/touchscreen/focaltech_touch_ft5436/focaltech_esdcheck.c new file mode 100755 -index 000000000000..b34bb26e8529 +index 000000000..b34bb26e8 --- /dev/null +++ b/drivers/input/touchscreen/focaltech_touch_ft5436/focaltech_esdcheck.c @@ -0,0 +1,464 @@ @@ -702671,7 +702671,7 @@ index 000000000000..b34bb26e8529 + diff --git a/drivers/input/touchscreen/focaltech_touch_ft5436/focaltech_ex_fun.c b/drivers/input/touchscreen/focaltech_touch_ft5436/focaltech_ex_fun.c new file mode 100755 -index 000000000000..b012c093b4d5 +index 000000000..b012c093b --- /dev/null +++ b/drivers/input/touchscreen/focaltech_touch_ft5436/focaltech_ex_fun.c @@ -0,0 +1,1181 @@ @@ -703858,7 +703858,7 @@ index 000000000000..b012c093b4d5 +} diff --git a/drivers/input/touchscreen/focaltech_touch_ft5436/focaltech_ex_mode.c b/drivers/input/touchscreen/focaltech_touch_ft5436/focaltech_ex_mode.c new file mode 100755 -index 000000000000..c0c970b12e48 +index 000000000..c0c970b12 --- /dev/null +++ b/drivers/input/touchscreen/focaltech_touch_ft5436/focaltech_ex_mode.c @@ -0,0 +1,307 @@ @@ -704171,7 +704171,7 @@ index 000000000000..c0c970b12e48 +} diff --git a/drivers/input/touchscreen/focaltech_touch_ft5436/focaltech_flash.c b/drivers/input/touchscreen/focaltech_touch_ft5436/focaltech_flash.c new file mode 100755 -index 000000000000..83bf8f4a6039 +index 000000000..83bf8f4a6 --- /dev/null +++ b/drivers/input/touchscreen/focaltech_touch_ft5436/focaltech_flash.c @@ -0,0 +1,2011 @@ @@ -706188,7 +706188,7 @@ index 000000000000..83bf8f4a6039 +} diff --git a/drivers/input/touchscreen/focaltech_touch_ft5436/focaltech_flash.h b/drivers/input/touchscreen/focaltech_touch_ft5436/focaltech_flash.h new file mode 100755 -index 000000000000..cfebe2d12489 +index 000000000..cfebe2d12 --- /dev/null +++ b/drivers/input/touchscreen/focaltech_touch_ft5436/focaltech_flash.h @@ -0,0 +1,205 @@ @@ -706399,7 +706399,7 @@ index 000000000000..cfebe2d12489 +#endif diff --git a/drivers/input/touchscreen/focaltech_touch_ft5436/focaltech_flash/Makefile b/drivers/input/touchscreen/focaltech_touch_ft5436/focaltech_flash/Makefile new file mode 100755 -index 000000000000..17c9595ca5c9 +index 000000000..17c9595ca --- /dev/null +++ b/drivers/input/touchscreen/focaltech_touch_ft5436/focaltech_flash/Makefile @@ -0,0 +1,7 @@ @@ -706412,7 +706412,7 @@ index 000000000000..17c9595ca5c9 + diff --git a/drivers/input/touchscreen/focaltech_touch_ft5436/focaltech_flash/focaltech_upgrade_ft5436.c b/drivers/input/touchscreen/focaltech_touch_ft5436/focaltech_flash/focaltech_upgrade_ft5436.c new file mode 100755 -index 000000000000..7ed7315f0d93 +index 000000000..7ed7315f0 --- /dev/null +++ b/drivers/input/touchscreen/focaltech_touch_ft5436/focaltech_flash/focaltech_upgrade_ft5436.c @@ -0,0 +1,154 @@ @@ -706572,7 +706572,7 @@ index 000000000000..7ed7315f0d93 +}; diff --git a/drivers/input/touchscreen/focaltech_touch_ft5436/focaltech_gesture.c b/drivers/input/touchscreen/focaltech_touch_ft5436/focaltech_gesture.c new file mode 100755 -index 000000000000..b65cf39451d2 +index 000000000..b65cf3945 --- /dev/null +++ b/drivers/input/touchscreen/focaltech_touch_ft5436/focaltech_gesture.c @@ -0,0 +1,460 @@ @@ -707038,7 +707038,7 @@ index 000000000000..b65cf39451d2 +} diff --git a/drivers/input/touchscreen/focaltech_touch_ft5436/focaltech_i2c.c b/drivers/input/touchscreen/focaltech_touch_ft5436/focaltech_i2c.c new file mode 100755 -index 000000000000..f2e335c3db4f +index 000000000..f2e335c3d --- /dev/null +++ b/drivers/input/touchscreen/focaltech_touch_ft5436/focaltech_i2c.c @@ -0,0 +1,193 @@ @@ -707238,7 +707238,7 @@ index 000000000000..f2e335c3db4f \ No newline at end of file diff --git a/drivers/input/touchscreen/focaltech_touch_ft5436/focaltech_point_report_check.c b/drivers/input/touchscreen/focaltech_touch_ft5436/focaltech_point_report_check.c new file mode 100755 -index 000000000000..1296af1551db +index 000000000..1296af155 --- /dev/null +++ b/drivers/input/touchscreen/focaltech_touch_ft5436/focaltech_point_report_check.c @@ -0,0 +1,135 @@ @@ -707379,7 +707379,7 @@ index 000000000000..1296af1551db + diff --git a/drivers/input/touchscreen/focaltech_touch_ft5436/include/firmware/fw_sample.h b/drivers/input/touchscreen/focaltech_touch_ft5436/include/firmware/fw_sample.h new file mode 100755 -index 000000000000..60120df3213d +index 000000000..60120df32 --- /dev/null +++ b/drivers/input/touchscreen/focaltech_touch_ft5436/include/firmware/fw_sample.h @@ -0,0 +1,3223 @@ @@ -710609,7 +710609,7 @@ index 000000000000..60120df3213d \ No newline at end of file diff --git a/drivers/input/touchscreen/gsl3673.c b/drivers/input/touchscreen/gsl3673.c new file mode 100755 -index 000000000000..2191bb6af26b +index 000000000..2191bb6af --- /dev/null +++ b/drivers/input/touchscreen/gsl3673.c @@ -0,0 +1,1302 @@ @@ -711917,7 +711917,7 @@ index 000000000000..2191bb6af26b +MODULE_ALIAS("platform:gsl_ts"); diff --git a/drivers/input/touchscreen/gsl3673.h b/drivers/input/touchscreen/gsl3673.h new file mode 100755 -index 000000000000..5d8d8ef02bec +index 000000000..5d8d8ef02 --- /dev/null +++ b/drivers/input/touchscreen/gsl3673.h @@ -0,0 +1,5091 @@ @@ -717014,7 +717014,7 @@ index 000000000000..5d8d8ef02bec +#endif diff --git a/drivers/input/touchscreen/gsl3673_800x1280.c b/drivers/input/touchscreen/gsl3673_800x1280.c new file mode 100755 -index 000000000000..191029084c22 +index 000000000..191029084 --- /dev/null +++ b/drivers/input/touchscreen/gsl3673_800x1280.c @@ -0,0 +1,1247 @@ @@ -718267,7 +718267,7 @@ index 000000000000..191029084c22 +MODULE_ALIAS("platform:gsl_ts"); diff --git a/drivers/input/touchscreen/gsl3673_800x1280.h b/drivers/input/touchscreen/gsl3673_800x1280.h new file mode 100755 -index 000000000000..38fa03963eb1 +index 000000000..38fa03963 --- /dev/null +++ b/drivers/input/touchscreen/gsl3673_800x1280.h @@ -0,0 +1,5187 @@ @@ -723460,7 +723460,7 @@ index 000000000000..38fa03963eb1 +#endif diff --git a/drivers/input/touchscreen/gsl3676/Makefile b/drivers/input/touchscreen/gsl3676/Makefile new file mode 100755 -index 000000000000..27c3264812e1 +index 000000000..27c326481 --- /dev/null +++ b/drivers/input/touchscreen/gsl3676/Makefile @@ -0,0 +1,3 @@ @@ -723469,7 +723469,7 @@ index 000000000000..27c3264812e1 + diff --git a/drivers/input/touchscreen/gsl3676/gsl3676.c b/drivers/input/touchscreen/gsl3676/gsl3676.c new file mode 100755 -index 000000000000..4b1baca365fd +index 000000000..4b1baca36 --- /dev/null +++ b/drivers/input/touchscreen/gsl3676/gsl3676.c @@ -0,0 +1,1261 @@ @@ -724736,7 +724736,7 @@ index 000000000000..4b1baca365fd +MODULE_ALIAS("platform:gsl_ts"); diff --git a/drivers/input/touchscreen/gsl3676/rk3368_th863c_10.h b/drivers/input/touchscreen/gsl3676/rk3368_th863c_10.h new file mode 100755 -index 000000000000..617860f76401 +index 000000000..617860f76 --- /dev/null +++ b/drivers/input/touchscreen/gsl3676/rk3368_th863c_10.h @@ -0,0 +1,5331 @@ @@ -730073,7 +730073,7 @@ index 000000000000..617860f76401 +#endif diff --git a/drivers/input/touchscreen/gsl_point_id.c b/drivers/input/touchscreen/gsl_point_id.c new file mode 100755 -index 000000000000..624502b6bacc +index 000000000..624502b6b --- /dev/null +++ b/drivers/input/touchscreen/gsl_point_id.c @@ -0,0 +1,3100 @@ @@ -733179,7 +733179,7 @@ index 000000000000..624502b6bacc +}*/ diff --git a/drivers/input/touchscreen/gslx680.c b/drivers/input/touchscreen/gslx680.c new file mode 100755 -index 000000000000..ab970845c64f +index 000000000..ab970845c --- /dev/null +++ b/drivers/input/touchscreen/gslx680.c @@ -0,0 +1,1905 @@ @@ -735090,7 +735090,7 @@ index 000000000000..ab970845c64f +MODULE_ALIAS("platform:gsl_ts"); diff --git a/drivers/input/touchscreen/gslx680.h b/drivers/input/touchscreen/gslx680.h new file mode 100755 -index 000000000000..2a76ec410c81 +index 000000000..2a76ec410 --- /dev/null +++ b/drivers/input/touchscreen/gslx680.h @@ -0,0 +1,10368 @@ @@ -745464,7 +745464,7 @@ index 000000000000..2a76ec410c81 +#endif diff --git a/drivers/input/touchscreen/gslx6801.c b/drivers/input/touchscreen/gslx6801.c new file mode 100755 -index 000000000000..3c1e1655c0a8 +index 000000000..3c1e1655c --- /dev/null +++ b/drivers/input/touchscreen/gslx6801.c @@ -0,0 +1,1680 @@ @@ -747150,7 +747150,7 @@ index 000000000000..3c1e1655c0a8 +MODULE_ALIAS("platform:gsl_ts"); diff --git a/drivers/input/touchscreen/gslx6801.h b/drivers/input/touchscreen/gslx6801.h new file mode 100755 -index 000000000000..45bb3469d2ea +index 000000000..45bb3469d --- /dev/null +++ b/drivers/input/touchscreen/gslx6801.h @@ -0,0 +1,4955 @@ @@ -752111,7 +752111,7 @@ index 000000000000..45bb3469d2ea +#endif diff --git a/drivers/input/touchscreen/gslx680_d708/Makefile b/drivers/input/touchscreen/gslx680_d708/Makefile new file mode 100755 -index 000000000000..86d995c5e6c5 +index 000000000..86d995c5e --- /dev/null +++ b/drivers/input/touchscreen/gslx680_d708/Makefile @@ -0,0 +1,9 @@ @@ -752126,7 +752126,7 @@ index 000000000000..86d995c5e6c5 + diff --git a/drivers/input/touchscreen/gslx680_d708/rockchip_gsl3670.h b/drivers/input/touchscreen/gslx680_d708/rockchip_gsl3670.h new file mode 100755 -index 000000000000..89b74fe3e23c +index 000000000..89b74fe3e --- /dev/null +++ b/drivers/input/touchscreen/gslx680_d708/rockchip_gsl3670.h @@ -0,0 +1,5047 @@ @@ -757179,7 +757179,7 @@ index 000000000000..89b74fe3e23c +#endif diff --git a/drivers/input/touchscreen/gslx680_d708/rockchip_gslX680.c b/drivers/input/touchscreen/gslx680_d708/rockchip_gslX680.c new file mode 100755 -index 000000000000..f75586e2d37a +index 000000000..f75586e2d --- /dev/null +++ b/drivers/input/touchscreen/gslx680_d708/rockchip_gslX680.c @@ -0,0 +1,1393 @@ @@ -758578,7 +758578,7 @@ index 000000000000..f75586e2d37a +MODULE_ALIAS("platform:gsl_ts"); diff --git a/drivers/input/touchscreen/gslx680_d708/rockchip_gslX680_88v.h b/drivers/input/touchscreen/gslx680_d708/rockchip_gslX680_88v.h new file mode 100755 -index 000000000000..f58ba4a8a72b +index 000000000..f58ba4a8a --- /dev/null +++ b/drivers/input/touchscreen/gslx680_d708/rockchip_gslX680_88v.h @@ -0,0 +1,5248 @@ @@ -763832,7 +763832,7 @@ index 000000000000..f58ba4a8a72b + diff --git a/drivers/input/touchscreen/gslx680_firefly.c b/drivers/input/touchscreen/gslx680_firefly.c new file mode 100755 -index 000000000000..0786b5ecb311 +index 000000000..0786b5ecb --- /dev/null +++ b/drivers/input/touchscreen/gslx680_firefly.c @@ -0,0 +1,1130 @@ @@ -764968,7 +764968,7 @@ index 000000000000..0786b5ecb311 +MODULE_DESCRIPTION("GSLX680 touchscreen controller driver"); diff --git a/drivers/input/touchscreen/gslx680_firefly.h b/drivers/input/touchscreen/gslx680_firefly.h new file mode 100755 -index 000000000000..8f40c59d7d2d +index 000000000..8f40c59d7 --- /dev/null +++ b/drivers/input/touchscreen/gslx680_firefly.h @@ -0,0 +1,5120 @@ @@ -770094,7 +770094,7 @@ index 000000000000..8f40c59d7d2d +#endif diff --git a/drivers/input/touchscreen/gslx680_pad.c b/drivers/input/touchscreen/gslx680_pad.c new file mode 100755 -index 000000000000..d61a5ec76e94 +index 000000000..d61a5ec76 --- /dev/null +++ b/drivers/input/touchscreen/gslx680_pad.c @@ -0,0 +1,1198 @@ @@ -771298,7 +771298,7 @@ index 000000000000..d61a5ec76e94 +MODULE_ALIAS("platform:gsl_ts"); diff --git a/drivers/input/touchscreen/gslx680_pad.h b/drivers/input/touchscreen/gslx680_pad.h new file mode 100755 -index 000000000000..aab1786f221a +index 000000000..aab1786f2 --- /dev/null +++ b/drivers/input/touchscreen/gslx680_pad.h @@ -0,0 +1,10232 @@ @@ -781536,7 +781536,7 @@ index 000000000000..aab1786f221a +#endif diff --git a/drivers/input/touchscreen/gslx680a.c b/drivers/input/touchscreen/gslx680a.c new file mode 100755 -index 000000000000..380a0fd93fa0 +index 000000000..380a0fd93 --- /dev/null +++ b/drivers/input/touchscreen/gslx680a.c @@ -0,0 +1,1320 @@ @@ -782862,14 +782862,14 @@ index 000000000000..380a0fd93fa0 +MODULE_ALIAS("platform:gsl_ts"); diff --git a/drivers/input/touchscreen/gt1x/GT5688_Config_20170713_1080_1920.cfg b/drivers/input/touchscreen/gt1x/GT5688_Config_20170713_1080_1920.cfg new file mode 100755 -index 000000000000..2f65c7ee0482 +index 000000000..2f65c7ee0 --- /dev/null +++ b/drivers/input/touchscreen/gt1x/GT5688_Config_20170713_1080_1920.cfg @@ -0,0 +1 @@ +0x88,0x38,0x04,0x80,0x07,0x05,0x35,0x1E,0x05,0x40,0x00,0x08,0x50,0x3C,0x53,0x11,0x00,0x00,0x11,0x11,0x14,0x17,0x19,0x1C,0x0A,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x64,0x1E,0x28,0x8B,0x2B,0x0C,0x15,0x17,0xDF,0x07,0x04,0xA1,0x00,0x03,0x02,0x24,0x00,0x00,0x28,0x50,0x80,0x14,0x02,0x00,0x00,0x54,0xAD,0x2E,0x9B,0x35,0x8C,0x3B,0x81,0x42,0x79,0x49,0x71,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x50,0x3C,0xFF,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x41,0x20,0x78,0x78,0x64,0x00,0x00,0x00,0x00,0x00,0x01,0x08,0x02,0x09,0x03,0x0A,0x04,0x0B,0x05,0x0C,0x06,0x0D,0xFF,0xFF,0x0A,0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x01,0x00,0x15,0x14,0x13,0x12,0x11,0x10,0x0F,0x0E,0x0D,0x0C,0x0B,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x00,0x05,0x1E,0x00,0x02,0x2A,0x1E,0x19,0x14,0x02,0x00,0x03,0x0A,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xFF,0xFF,0x86,0x22,0x03,0x00,0x00,0x33,0x00,0x0F,0x00,0x00,0x00,0x50,0x3C,0x50,0x00,0x00,0x00,0x23,0x13,0x01 diff --git a/drivers/input/touchscreen/gt1x/Makefile b/drivers/input/touchscreen/gt1x/Makefile new file mode 100755 -index 000000000000..2b3fa3680e98 +index 000000000..2b3fa3680 --- /dev/null +++ b/drivers/input/touchscreen/gt1x/Makefile @@ -0,0 +1,8 @@ @@ -782883,7 +782883,7 @@ index 000000000000..2b3fa3680e98 + diff --git a/drivers/input/touchscreen/gt1x/gt1x.c b/drivers/input/touchscreen/gt1x/gt1x.c new file mode 100755 -index 000000000000..f65ca3b916e4 +index 000000000..f65ca3b91 --- /dev/null +++ b/drivers/input/touchscreen/gt1x/gt1x.c @@ -0,0 +1,809 @@ @@ -783698,7 +783698,7 @@ index 000000000000..f65ca3b916e4 +MODULE_LICENSE("GPL"); diff --git a/drivers/input/touchscreen/gt1x/gt1x.h b/drivers/input/touchscreen/gt1x/gt1x.h new file mode 100755 -index 000000000000..b9339f10b0ad +index 000000000..b9339f10b --- /dev/null +++ b/drivers/input/touchscreen/gt1x/gt1x.h @@ -0,0 +1,64 @@ @@ -783768,7 +783768,7 @@ index 000000000000..b9339f10b0ad +#endif /* _GOODIX_GT1X_H_ */ diff --git a/drivers/input/touchscreen/gt1x/gt1x_cfg.h b/drivers/input/touchscreen/gt1x/gt1x_cfg.h new file mode 100755 -index 000000000000..6581aebfeda7 +index 000000000..6581aebfe --- /dev/null +++ b/drivers/input/touchscreen/gt1x/gt1x_cfg.h @@ -0,0 +1,27 @@ @@ -783801,7 +783801,7 @@ index 000000000000..6581aebfeda7 +#endif /* _GOODIX_GT1X_CFG_H_ */ diff --git a/drivers/input/touchscreen/gt1x/gt1x_extents.c b/drivers/input/touchscreen/gt1x/gt1x_extents.c new file mode 100755 -index 000000000000..ed087d8f0031 +index 000000000..ed087d8f0 --- /dev/null +++ b/drivers/input/touchscreen/gt1x/gt1x_extents.c @@ -0,0 +1,928 @@ @@ -784735,7 +784735,7 @@ index 000000000000..ed087d8f0031 +} diff --git a/drivers/input/touchscreen/gt1x/gt1x_firmware.h b/drivers/input/touchscreen/gt1x/gt1x_firmware.h new file mode 100755 -index 000000000000..7588633397f5 +index 000000000..758863339 --- /dev/null +++ b/drivers/input/touchscreen/gt1x/gt1x_firmware.h @@ -0,0 +1,548 @@ @@ -785289,7 +785289,7 @@ index 000000000000..7588633397f5 +#endif diff --git a/drivers/input/touchscreen/gt1x/gt1x_generic.c b/drivers/input/touchscreen/gt1x/gt1x_generic.c new file mode 100755 -index 000000000000..48b29ab50bcd +index 000000000..48b29ab50 --- /dev/null +++ b/drivers/input/touchscreen/gt1x/gt1x_generic.c @@ -0,0 +1,2445 @@ @@ -787740,7 +787740,7 @@ index 000000000000..48b29ab50bcd + diff --git a/drivers/input/touchscreen/gt1x/gt1x_generic.h b/drivers/input/touchscreen/gt1x/gt1x_generic.h new file mode 100755 -index 000000000000..7acc390d47ef +index 000000000..7acc390d4 --- /dev/null +++ b/drivers/input/touchscreen/gt1x/gt1x_generic.h @@ -0,0 +1,595 @@ @@ -788341,7 +788341,7 @@ index 000000000000..7acc390d47ef + diff --git a/drivers/input/touchscreen/gt1x/gt1x_tools.c b/drivers/input/touchscreen/gt1x/gt1x_tools.c new file mode 100755 -index 000000000000..1d824bdafd8a +index 000000000..1d824bdaf --- /dev/null +++ b/drivers/input/touchscreen/gt1x/gt1x_tools.c @@ -0,0 +1,433 @@ @@ -788780,7 +788780,7 @@ index 000000000000..1d824bdafd8a +} diff --git a/drivers/input/touchscreen/gt1x/gt1x_update.c b/drivers/input/touchscreen/gt1x/gt1x_update.c new file mode 100755 -index 000000000000..0979bb32d52f +index 000000000..0979bb32d --- /dev/null +++ b/drivers/input/touchscreen/gt1x/gt1x_update.c @@ -0,0 +1,1456 @@ @@ -790242,7 +790242,7 @@ index 000000000000..0979bb32d52f +} diff --git a/drivers/input/touchscreen/gt9xx/GT9110P(2020)V71_Config_20201028_170326.cfg b/drivers/input/touchscreen/gt9xx/GT9110P(2020)V71_Config_20201028_170326.cfg new file mode 100755 -index 000000000000..62a3d0e496c6 +index 000000000..62a3d0e49 --- /dev/null +++ b/drivers/input/touchscreen/gt9xx/GT9110P(2020)V71_Config_20201028_170326.cfg @@ -0,0 +1,19 @@ @@ -790268,7 +790268,7 @@ index 000000000000..62a3d0e496c6 \ No newline at end of file diff --git a/drivers/input/touchscreen/gt9xx/GT9110P_Config_20160217_1526_2048_97.cfg b/drivers/input/touchscreen/gt9xx/GT9110P_Config_20160217_1526_2048_97.cfg new file mode 100755 -index 000000000000..952ea845390e +index 000000000..952ea8453 --- /dev/null +++ b/drivers/input/touchscreen/gt9xx/GT9110P_Config_20160217_1526_2048_97.cfg @@ -0,0 +1 @@ @@ -790276,7 +790276,7 @@ index 000000000000..952ea845390e \ No newline at end of file diff --git a/drivers/input/touchscreen/gt9xx/GT9271_Config_20170526.cfg b/drivers/input/touchscreen/gt9xx/GT9271_Config_20170526.cfg new file mode 100755 -index 000000000000..a7ac38fe331e +index 000000000..a7ac38fe3 --- /dev/null +++ b/drivers/input/touchscreen/gt9xx/GT9271_Config_20170526.cfg @@ -0,0 +1 @@ @@ -790284,7 +790284,7 @@ index 000000000000..a7ac38fe331e \ No newline at end of file diff --git a/drivers/input/touchscreen/gt9xx/HLS-0102-1398V1-1060-GT911_Config_20201204_V66.cfg b/drivers/input/touchscreen/gt9xx/HLS-0102-1398V1-1060-GT911_Config_20201204_V66.cfg new file mode 100755 -index 000000000000..77b72c416bea +index 000000000..77b72c416 --- /dev/null +++ b/drivers/input/touchscreen/gt9xx/HLS-0102-1398V1-1060-GT911_Config_20201204_V66.cfg @@ -0,0 +1 @@ @@ -790292,7 +790292,7 @@ index 000000000000..77b72c416bea \ No newline at end of file diff --git a/drivers/input/touchscreen/gt9xx/Makefile b/drivers/input/touchscreen/gt9xx/Makefile new file mode 100755 -index 000000000000..f63b5f2783a5 +index 000000000..f63b5f278 --- /dev/null +++ b/drivers/input/touchscreen/gt9xx/Makefile @@ -0,0 +1,6 @@ @@ -790304,7 +790304,7 @@ index 000000000000..f63b5f2783a5 +goodix_gt9xx-y +=gt9xx_update.o diff --git a/drivers/input/touchscreen/gt9xx/WGJ10162B_GT9271_1060_Config_20140821_1341110X42.cfg b/drivers/input/touchscreen/gt9xx/WGJ10162B_GT9271_1060_Config_20140821_1341110X42.cfg new file mode 100755 -index 000000000000..db5ed0f34b82 +index 000000000..db5ed0f34 --- /dev/null +++ b/drivers/input/touchscreen/gt9xx/WGJ10162B_GT9271_1060_Config_20140821_1341110X42.cfg @@ -0,0 +1 @@ @@ -790312,7 +790312,7 @@ index 000000000000..db5ed0f34b82 \ No newline at end of file diff --git a/drivers/input/touchscreen/gt9xx/WGJ10162_GT9271_Config_20140820_182456.cfg b/drivers/input/touchscreen/gt9xx/WGJ10162_GT9271_Config_20140820_182456.cfg new file mode 100755 -index 000000000000..96bf8cb7961c +index 000000000..96bf8cb79 --- /dev/null +++ b/drivers/input/touchscreen/gt9xx/WGJ10162_GT9271_Config_20140820_182456.cfg @@ -0,0 +1 @@ @@ -790320,7 +790320,7 @@ index 000000000000..96bf8cb7961c \ No newline at end of file diff --git a/drivers/input/touchscreen/gt9xx/WGJ10187_GT910_Config_20140623_104014_0X41.cfg b/drivers/input/touchscreen/gt9xx/WGJ10187_GT910_Config_20140623_104014_0X41.cfg new file mode 100755 -index 000000000000..ffc4679bf2d9 +index 000000000..ffc4679bf --- /dev/null +++ b/drivers/input/touchscreen/gt9xx/WGJ10187_GT910_Config_20140623_104014_0X41.cfg @@ -0,0 +1 @@ @@ -790328,7 +790328,7 @@ index 000000000000..ffc4679bf2d9 \ No newline at end of file diff --git a/drivers/input/touchscreen/gt9xx/WGJ10187_GT9271_Config_20140623_104014_0X41.cfg b/drivers/input/touchscreen/gt9xx/WGJ10187_GT9271_Config_20140623_104014_0X41.cfg new file mode 100755 -index 000000000000..ffbfe3d547da +index 000000000..ffbfe3d54 --- /dev/null +++ b/drivers/input/touchscreen/gt9xx/WGJ10187_GT9271_Config_20140623_104014_0X41.cfg @@ -0,0 +1 @@ @@ -790336,7 +790336,7 @@ index 000000000000..ffbfe3d547da \ No newline at end of file diff --git a/drivers/input/touchscreen/gt9xx/WGJ89006B_GT911_Config_20140625_085816_0X43.cfg b/drivers/input/touchscreen/gt9xx/WGJ89006B_GT911_Config_20140625_085816_0X43.cfg new file mode 100755 -index 000000000000..1c42d9ef7ce1 +index 000000000..1c42d9ef7 --- /dev/null +++ b/drivers/input/touchscreen/gt9xx/WGJ89006B_GT911_Config_20140625_085816_0X43.cfg @@ -0,0 +1 @@ @@ -790344,7 +790344,7 @@ index 000000000000..1c42d9ef7ce1 \ No newline at end of file diff --git a/drivers/input/touchscreen/gt9xx/WGJ89006B_GT9271_Config_20140625_085816_0X41.cfg b/drivers/input/touchscreen/gt9xx/WGJ89006B_GT9271_Config_20140625_085816_0X41.cfg new file mode 100755 -index 000000000000..7ed0266acfaa +index 000000000..7ed0266ac --- /dev/null +++ b/drivers/input/touchscreen/gt9xx/WGJ89006B_GT9271_Config_20140625_085816_0X41.cfg @@ -0,0 +1 @@ @@ -790352,7 +790352,7 @@ index 000000000000..7ed0266acfaa \ No newline at end of file diff --git a/drivers/input/touchscreen/gt9xx/goodix_tool.c b/drivers/input/touchscreen/gt9xx/goodix_tool.c new file mode 100755 -index 000000000000..b2dffcb5e105 +index 000000000..b2dffcb5e --- /dev/null +++ b/drivers/input/touchscreen/gt9xx/goodix_tool.c @@ -0,0 +1,627 @@ @@ -790985,7 +790985,7 @@ index 000000000000..b2dffcb5e105 +} diff --git a/drivers/input/touchscreen/gt9xx/gt9xx.c b/drivers/input/touchscreen/gt9xx/gt9xx.c new file mode 100755 -index 000000000000..cdc421cfd093 +index 000000000..cdc421cfd --- /dev/null +++ b/drivers/input/touchscreen/gt9xx/gt9xx.c @@ -0,0 +1,3236 @@ @@ -794227,7 +794227,7 @@ index 000000000000..cdc421cfd093 +MODULE_LICENSE("GPL"); diff --git a/drivers/input/touchscreen/gt9xx/gt9xx.h b/drivers/input/touchscreen/gt9xx/gt9xx.h new file mode 100755 -index 000000000000..acc288575691 +index 000000000..acc288575 --- /dev/null +++ b/drivers/input/touchscreen/gt9xx/gt9xx.h @@ -0,0 +1,397 @@ @@ -794630,7 +794630,7 @@ index 000000000000..acc288575691 +#endif /* _GOODIX_GT9XX_H_ */ diff --git a/drivers/input/touchscreen/gt9xx/gt9xx_cfg.h b/drivers/input/touchscreen/gt9xx/gt9xx_cfg.h new file mode 100755 -index 000000000000..2b083c5655f8 +index 000000000..2b083c565 --- /dev/null +++ b/drivers/input/touchscreen/gt9xx/gt9xx_cfg.h @@ -0,0 +1,65 @@ @@ -794701,7 +794701,7 @@ index 000000000000..2b083c5655f8 +#endif /* _GOODIX_GT9XX_CFG_H_ */ diff --git a/drivers/input/touchscreen/gt9xx/gt9xx_firmware.h b/drivers/input/touchscreen/gt9xx/gt9xx_firmware.h new file mode 100755 -index 000000000000..7dce6045b736 +index 000000000..7dce6045b --- /dev/null +++ b/drivers/input/touchscreen/gt9xx/gt9xx_firmware.h @@ -0,0 +1,2338 @@ @@ -797045,7 +797045,7 @@ index 000000000000..7dce6045b736 +#endif diff --git a/drivers/input/touchscreen/gt9xx/gt9xx_update.c b/drivers/input/touchscreen/gt9xx/gt9xx_update.c new file mode 100755 -index 000000000000..312b1f93be60 +index 000000000..312b1f93b --- /dev/null +++ b/drivers/input/touchscreen/gt9xx/gt9xx_update.c @@ -0,0 +1,3637 @@ @@ -800688,7 +800688,7 @@ index 000000000000..312b1f93be60 +//**************** For GT9XXF End ********************// diff --git a/drivers/input/touchscreen/hyn_cst2xx/CST21680SE_S126_D863_7.h b/drivers/input/touchscreen/hyn_cst2xx/CST21680SE_S126_D863_7.h new file mode 100755 -index 000000000000..af607b6f7c6a +index 000000000..af607b6f7 --- /dev/null +++ b/drivers/input/touchscreen/hyn_cst2xx/CST21680SE_S126_D863_7.h @@ -0,0 +1,514 @@ @@ -801208,7 +801208,7 @@ index 000000000000..af607b6f7c6a + diff --git a/drivers/input/touchscreen/hyn_cst2xx/CST21680SE_S126_D89.h b/drivers/input/touchscreen/hyn_cst2xx/CST21680SE_S126_D89.h new file mode 100755 -index 000000000000..2a2045660c0a +index 000000000..2a2045660 --- /dev/null +++ b/drivers/input/touchscreen/hyn_cst2xx/CST21680SE_S126_D89.h @@ -0,0 +1,514 @@ @@ -801728,7 +801728,7 @@ index 000000000000..2a2045660c0a + diff --git a/drivers/input/touchscreen/hyn_cst2xx/Makefile b/drivers/input/touchscreen/hyn_cst2xx/Makefile new file mode 100755 -index 000000000000..247b6045dd13 +index 000000000..247b6045d --- /dev/null +++ b/drivers/input/touchscreen/hyn_cst2xx/Makefile @@ -0,0 +1,2 @@ @@ -801736,7 +801736,7 @@ index 000000000000..247b6045dd13 + diff --git a/drivers/input/touchscreen/hyn_cst2xx/hyn_cst2xx.c b/drivers/input/touchscreen/hyn_cst2xx/hyn_cst2xx.c new file mode 100755 -index 000000000000..689e0a8a7e26 +index 000000000..689e0a8a7 --- /dev/null +++ b/drivers/input/touchscreen/hyn_cst2xx/hyn_cst2xx.c @@ -0,0 +1,1970 @@ @@ -803712,7 +803712,7 @@ index 000000000000..689e0a8a7e26 + diff --git a/drivers/input/touchscreen/tp_gslx680_board.h b/drivers/input/touchscreen/tp_gslx680_board.h new file mode 100755 -index 000000000000..bc90005e215d +index 000000000..bc90005e2 --- /dev/null +++ b/drivers/input/touchscreen/tp_gslx680_board.h @@ -0,0 +1,4908 @@ @@ -808626,7 +808626,7 @@ index 000000000000..bc90005e215d +#endif diff --git a/drivers/input/touchscreen/tp_suspend.h b/drivers/input/touchscreen/tp_suspend.h new file mode 100755 -index 000000000000..e4248663febc +index 000000000..e4248663f --- /dev/null +++ b/drivers/input/touchscreen/tp_suspend.h @@ -0,0 +1,109 @@ @@ -808741,7 +808741,7 @@ index 000000000000..e4248663febc +#endif diff --git a/drivers/input/touchscreen/vtl_ts/LX20JS06_A1_CT363_V03_5198_121015.dat b/drivers/input/touchscreen/vtl_ts/LX20JS06_A1_CT363_V03_5198_121015.dat new file mode 100755 -index 000000000000..dd2c3d8b25b4 +index 000000000..dd2c3d8b2 --- /dev/null +++ b/drivers/input/touchscreen/vtl_ts/LX20JS06_A1_CT363_V03_5198_121015.dat @@ -0,0 +1,4096 @@ @@ -812844,7 +812844,7 @@ index 000000000000..dd2c3d8b25b4 \ No newline at end of file diff --git a/drivers/input/touchscreen/vtl_ts/Makefile b/drivers/input/touchscreen/vtl_ts/Makefile new file mode 100755 -index 000000000000..0d15d7471f7f +index 000000000..0d15d7471 --- /dev/null +++ b/drivers/input/touchscreen/vtl_ts/Makefile @@ -0,0 +1,9 @@ @@ -812859,7 +812859,7 @@ index 000000000000..0d15d7471f7f + diff --git a/drivers/input/touchscreen/vtl_ts/apk.c b/drivers/input/touchscreen/vtl_ts/apk.c new file mode 100755 -index 000000000000..44db1086d264 +index 000000000..44db1086d --- /dev/null +++ b/drivers/input/touchscreen/vtl_ts/apk.c @@ -0,0 +1,232 @@ @@ -813097,7 +813097,7 @@ index 000000000000..44db1086d264 + diff --git a/drivers/input/touchscreen/vtl_ts/apk.h b/drivers/input/touchscreen/vtl_ts/apk.h new file mode 100755 -index 000000000000..a0a14b6b3cc8 +index 000000000..a0a14b6b3 --- /dev/null +++ b/drivers/input/touchscreen/vtl_ts/apk.h @@ -0,0 +1,7 @@ @@ -813110,7 +813110,7 @@ index 000000000000..a0a14b6b3cc8 +#endif diff --git a/drivers/input/touchscreen/vtl_ts/chip.c b/drivers/input/touchscreen/vtl_ts/chip.c new file mode 100755 -index 000000000000..50004cef1f0c +index 000000000..50004cef1 --- /dev/null +++ b/drivers/input/touchscreen/vtl_ts/chip.c @@ -0,0 +1,860 @@ @@ -813976,7 +813976,7 @@ index 000000000000..50004cef1f0c + diff --git a/drivers/input/touchscreen/vtl_ts/chip.h b/drivers/input/touchscreen/vtl_ts/chip.h new file mode 100755 -index 000000000000..5ebb121276ed +index 000000000..5ebb12127 --- /dev/null +++ b/drivers/input/touchscreen/vtl_ts/chip.h @@ -0,0 +1,13 @@ @@ -813995,7 +813995,7 @@ index 000000000000..5ebb121276ed +#endif diff --git a/drivers/input/touchscreen/vtl_ts/f307&f317&f316_CT363S_01_V10_F7E9_140212.dat b/drivers/input/touchscreen/vtl_ts/f307&f317&f316_CT363S_01_V10_F7E9_140212.dat new file mode 100755 -index 000000000000..8d43138759b3 +index 000000000..8d4313875 --- /dev/null +++ b/drivers/input/touchscreen/vtl_ts/f307&f317&f316_CT363S_01_V10_F7E9_140212.dat @@ -0,0 +1,2048 @@ @@ -816050,7 +816050,7 @@ index 000000000000..8d43138759b3 \ No newline at end of file diff --git a/drivers/input/touchscreen/vtl_ts/lx--js77_97_CT365_V01_E7DA_130419.dat b/drivers/input/touchscreen/vtl_ts/lx--js77_97_CT365_V01_E7DA_130419.dat new file mode 100755 -index 000000000000..d3fc42f43e6b +index 000000000..d3fc42f43 --- /dev/null +++ b/drivers/input/touchscreen/vtl_ts/lx--js77_97_CT365_V01_E7DA_130419.dat @@ -0,0 +1,2048 @@ @@ -818105,7 +818105,7 @@ index 000000000000..d3fc42f43e6b \ No newline at end of file diff --git a/drivers/input/touchscreen/vtl_ts/tp_fw.h b/drivers/input/touchscreen/vtl_ts/tp_fw.h new file mode 100755 -index 000000000000..df431fcabca8 +index 000000000..df431fcab --- /dev/null +++ b/drivers/input/touchscreen/vtl_ts/tp_fw.h @@ -0,0 +1,2051 @@ @@ -820162,7 +820162,7 @@ index 000000000000..df431fcabca8 +}; diff --git a/drivers/input/touchscreen/vtl_ts/vtl_ts.c b/drivers/input/touchscreen/vtl_ts/vtl_ts.c new file mode 100755 -index 000000000000..8c8e374ab9d2 +index 000000000..8c8e374ab --- /dev/null +++ b/drivers/input/touchscreen/vtl_ts/vtl_ts.c @@ -0,0 +1,728 @@ @@ -820896,7 +820896,7 @@ index 000000000000..8c8e374ab9d2 + diff --git a/drivers/input/touchscreen/vtl_ts/vtl_ts.h b/drivers/input/touchscreen/vtl_ts/vtl_ts.h new file mode 100755 -index 000000000000..95e280688d74 +index 000000000..95e280688 --- /dev/null +++ b/drivers/input/touchscreen/vtl_ts/vtl_ts.h @@ -0,0 +1,193 @@ @@ -821095,7 +821095,7 @@ index 000000000000..95e280688d74 + diff --git a/drivers/input/touchscreen/vtl_ts/wgj36js07_A1_CT363_V01_0187_140306.dat b/drivers/input/touchscreen/vtl_ts/wgj36js07_A1_CT363_V01_0187_140306.dat new file mode 100755 -index 000000000000..a488e98122a6 +index 000000000..a488e9812 --- /dev/null +++ b/drivers/input/touchscreen/vtl_ts/wgj36js07_A1_CT363_V01_0187_140306.dat @@ -0,0 +1,2048 @@ @@ -823150,7 +823150,7 @@ index 000000000000..a488e98122a6 \ No newline at end of file diff --git a/drivers/input/touchscreen/wacom_w9013.c b/drivers/input/touchscreen/wacom_w9013.c new file mode 100755 -index 000000000000..6bbdb01e40ac +index 000000000..6bbdb01e4 --- /dev/null +++ b/drivers/input/touchscreen/wacom_w9013.c @@ -0,0 +1,510 @@ @@ -823665,7 +823665,7 @@ index 000000000000..6bbdb01e40ac +MODULE_DESCRIPTION("WACOM EMR I2C Driver"); +MODULE_LICENSE("GPL"); diff --git a/drivers/iommu/Kconfig b/drivers/iommu/Kconfig -index 04878caf6da4..fe1256b01f7e 100644 +index 04878caf6..fe1256b01 100644 --- a/drivers/iommu/Kconfig +++ b/drivers/iommu/Kconfig @@ -160,7 +160,8 @@ config OMAP_IOMMU_DEBUG @@ -823680,7 +823680,7 @@ index 04878caf6da4..fe1256b01f7e 100644 select ARM_DMA_USE_IOMMU diff --git a/drivers/iommu/dma-iommu-ops.c b/drivers/iommu/dma-iommu-ops.c new file mode 100755 -index 000000000000..862d7823985e +index 000000000..862d78239 --- /dev/null +++ b/drivers/iommu/dma-iommu-ops.c @@ -0,0 +1,473 @@ @@ -824158,7 +824158,7 @@ index 000000000000..862d7823985e +} +EXPORT_SYMBOL_GPL(common_iommu_teardown_dma_ops); diff --git a/drivers/iommu/dma-iommu.c b/drivers/iommu/dma-iommu.c -index d1539b7399a9..d5020a7299a3 100644 +index d1539b739..d5020a729 100644 --- a/drivers/iommu/dma-iommu.c +++ b/drivers/iommu/dma-iommu.c @@ -372,6 +372,52 @@ static int iommu_dma_deferred_attach(struct device *dev, @@ -824226,7 +824226,7 @@ index d1539b7399a9..d5020a7299a3 100644 switch (dir) { case DMA_BIDIRECTIONAL: diff --git a/drivers/iommu/iommu.c b/drivers/iommu/iommu.c -index bcf060b5cf85..c8605ebc039c 100644 +index bcf060b5c..c8605ebc0 100644 --- a/drivers/iommu/iommu.c +++ b/drivers/iommu/iommu.c @@ -8,6 +8,7 @@ @@ -824478,7 +824478,7 @@ index bcf060b5cf85..c8605ebc039c 100644 out_err: diff --git a/drivers/iommu/rockchip-iommu.c b/drivers/iommu/rockchip-iommu.c -index e5d86b7177de..b359fcf2c1b0 100644 +index e5d86b717..b359fcf2c 100644 --- a/drivers/iommu/rockchip-iommu.c +++ b/drivers/iommu/rockchip-iommu.c @@ -19,6 +19,7 @@ @@ -825637,7 +825637,7 @@ index e5d86b7177de..b359fcf2c1b0 100644 +MODULE_ALIAS("platform:rockchip-iommu"); +MODULE_LICENSE("GPL v2"); diff --git a/drivers/irqchip/Kconfig b/drivers/irqchip/Kconfig -index dc062e8c2caf..122f81a0912b 100644 +index dc062e8c2..122f81a09 100644 --- a/drivers/irqchip/Kconfig +++ b/drivers/irqchip/Kconfig @@ -416,8 +416,9 @@ config IRQ_UNIPHIER_AIDET @@ -825653,7 +825653,7 @@ index dc062e8c2caf..122f81a0912b 100644 help Support Meson SoC Family GPIO Interrupt Multiplexer diff --git a/drivers/irqchip/irq-gic-v3-its.c b/drivers/irqchip/irq-gic-v3-its.c -index 95e0b82b6c66..effd2bbb9e9e 100644 +index 95e0b82b6..effd2bbb9 100644 --- a/drivers/irqchip/irq-gic-v3-its.c +++ b/drivers/irqchip/irq-gic-v3-its.c @@ -2167,6 +2167,8 @@ static struct page *its_allocate_prop_table(gfp_t gfp_flags) @@ -825836,7 +825836,7 @@ index 95e0b82b6c66..effd2bbb9e9e 100644 if (!(tmp & GITS_CBASER_SHAREABILITY_MASK)) { /* diff --git a/drivers/irqchip/irq-gic-v3.c b/drivers/irqchip/irq-gic-v3.c -index 1bdb7acf445f..0145d142b322 100644 +index 1bdb7acf4..0145d142b 100644 --- a/drivers/irqchip/irq-gic-v3.c +++ b/drivers/irqchip/irq-gic-v3.c @@ -18,6 +18,9 @@ @@ -825894,7 +825894,7 @@ index 1bdb7acf445f..0145d142b322 100644 if (gic_dist_supports_lpis()) { its_init(handle, &gic_data.rdists, gic_data.domain); diff --git a/drivers/irqchip/irq-gic-v4.c b/drivers/irqchip/irq-gic-v4.c -index 0c18714ae13e..5d1dc9915272 100644 +index 0c18714ae..5d1dc9915 100644 --- a/drivers/irqchip/irq-gic-v4.c +++ b/drivers/irqchip/irq-gic-v4.c @@ -232,6 +232,8 @@ int its_make_vpe_non_resident(struct its_vpe *vpe, bool db) @@ -825931,7 +825931,7 @@ index 0c18714ae13e..5d1dc9915272 100644 { struct its_cmd_info info = { diff --git a/drivers/irqchip/irq-meson-gpio.c b/drivers/irqchip/irq-meson-gpio.c -index bc7aebcc96e9..e3b462bd3981 100644 +index bc7aebcc9..e3b462bd3 100644 --- a/drivers/irqchip/irq-meson-gpio.c +++ b/drivers/irqchip/irq-meson-gpio.c @@ -15,6 +15,7 @@ @@ -826078,7 +826078,7 @@ index bc7aebcc96e9..e3b462bd3981 100644 +MODULE_LICENSE("GPL v2"); +MODULE_ALIAS("platform:meson-gpio-intc"); diff --git a/drivers/mailbox/rockchip-mailbox.c b/drivers/mailbox/rockchip-mailbox.c -index 979acc810f30..99b9421b8494 100644 +index 979acc810..99b9421b8 100644 --- a/drivers/mailbox/rockchip-mailbox.c +++ b/drivers/mailbox/rockchip-mailbox.c @@ -11,6 +11,7 @@ @@ -826311,7 +826311,7 @@ index 979acc810f30..99b9421b8494 100644 ret = devm_mbox_controller_register(&pdev->dev, &mb->mbox); diff --git a/drivers/media/i2c/Kconfig b/drivers/media/i2c/Kconfig -index 878f66ef2719..ab87428481c5 100644 +index 878f66ef2..ab8742848 100644 --- a/drivers/media/i2c/Kconfig +++ b/drivers/media/i2c/Kconfig @@ -725,6 +725,17 @@ config VIDEO_APTINA_PLL @@ -826333,7 +826333,7 @@ index 878f66ef2719..ab87428481c5 100644 tristate "Hynix Hi-556 sensor support" depends on I2C && VIDEO_V4L2 diff --git a/drivers/media/i2c/Makefile b/drivers/media/i2c/Makefile -index f0a77473979d..298863171375 100644 +index f0a774739..298863171 100644 --- a/drivers/media/i2c/Makefile +++ b/drivers/media/i2c/Makefile @@ -111,6 +111,7 @@ obj-$(CONFIG_VIDEO_I2C) += video-i2c.o @@ -826346,7 +826346,7 @@ index f0a77473979d..298863171375 100644 obj-$(CONFIG_VIDEO_IMX219) += imx219.o diff --git a/drivers/media/i2c/gc8034.c b/drivers/media/i2c/gc8034.c new file mode 100755 -index 000000000000..6edbf5e02995 +index 000000000..6edbf5e02 --- /dev/null +++ b/drivers/media/i2c/gc8034.c @@ -0,0 +1,2827 @@ @@ -829179,7 +829179,7 @@ index 000000000000..6edbf5e02995 +MODULE_LICENSE("GPL v2"); diff --git a/drivers/media/i2c/rk628_csi.c b/drivers/media/i2c/rk628_csi.c new file mode 100755 -index 000000000000..3fe765c148c7 +index 000000000..3fe765c14 --- /dev/null +++ b/drivers/media/i2c/rk628_csi.c @@ -0,0 +1,2696 @@ @@ -831881,7 +831881,7 @@ index 000000000000..3fe765c148c7 +MODULE_LICENSE("GPL v2"); diff --git a/drivers/media/i2c/rk628_csi.h b/drivers/media/i2c/rk628_csi.h new file mode 100755 -index 000000000000..e4aa258663b8 +index 000000000..e4aa25866 --- /dev/null +++ b/drivers/media/i2c/rk628_csi.h @@ -0,0 +1,344 @@ @@ -832230,7 +832230,7 @@ index 000000000000..e4aa258663b8 + +#endif diff --git a/drivers/media/platform/Kconfig b/drivers/media/platform/Kconfig -index 7e152bbb4fa6..51d069028c3d 100644 +index 7e152bbb4..51d069028 100644 --- a/drivers/media/platform/Kconfig +++ b/drivers/media/platform/Kconfig @@ -153,6 +153,9 @@ source "drivers/media/platform/xilinx/Kconfig" @@ -832244,7 +832244,7 @@ index 7e152bbb4fa6..51d069028c3d 100644 config VIDEO_TI_CAL tristate "TI CAL (Camera Adaptation Layer) driver" diff --git a/drivers/media/platform/Makefile b/drivers/media/platform/Makefile -index 62b6cdc8c730..c7cb2135bb56 100644 +index 62b6cdc8c..c7cb2135b 100644 --- a/drivers/media/platform/Makefile +++ b/drivers/media/platform/Makefile @@ -53,6 +53,9 @@ obj-$(CONFIG_VIDEO_RENESAS_JPU) += rcar_jpu.o @@ -832259,7 +832259,7 @@ index 62b6cdc8c730..c7cb2135bb56 100644 diff --git a/drivers/media/platform/rockchip-tsp/Kconfig b/drivers/media/platform/rockchip-tsp/Kconfig new file mode 100755 -index 000000000000..5394bfa7c63c +index 000000000..5394bfa7c --- /dev/null +++ b/drivers/media/platform/rockchip-tsp/Kconfig @@ -0,0 +1,12 @@ @@ -832277,7 +832277,7 @@ index 000000000000..5394bfa7c63c + diff --git a/drivers/media/platform/rockchip-tsp/Makefile b/drivers/media/platform/rockchip-tsp/Makefile new file mode 100755 -index 000000000000..ca555d0ef9e9 +index 000000000..ca555d0ef --- /dev/null +++ b/drivers/media/platform/rockchip-tsp/Makefile @@ -0,0 +1,6 @@ @@ -832289,7 +832289,7 @@ index 000000000000..ca555d0ef9e9 +obj-$(CONFIG_ROCKCHIP_TSP) += rockchip_tsp.o diff --git a/drivers/media/platform/rockchip-tsp/rockchip_tsp.c b/drivers/media/platform/rockchip-tsp/rockchip_tsp.c new file mode 100755 -index 000000000000..830147909eeb +index 000000000..830147909 --- /dev/null +++ b/drivers/media/platform/rockchip-tsp/rockchip_tsp.c @@ -0,0 +1,1182 @@ @@ -833477,7 +833477,7 @@ index 000000000000..830147909eeb +MODULE_ALIAS("platform:" MODE_NAME); diff --git a/drivers/media/platform/rockchip-tsp/rockchip_tsp.h b/drivers/media/platform/rockchip-tsp/rockchip_tsp.h new file mode 100755 -index 000000000000..bafe641cdf9f +index 000000000..bafe641cd --- /dev/null +++ b/drivers/media/platform/rockchip-tsp/rockchip_tsp.h @@ -0,0 +1,230 @@ @@ -833713,7 +833713,7 @@ index 000000000000..bafe641cdf9f +#endif diff --git a/drivers/media/platform/rockchip/cif/Kconfig b/drivers/media/platform/rockchip/cif/Kconfig new file mode 100755 -index 000000000000..592842bf3386 +index 000000000..592842bf3 --- /dev/null +++ b/drivers/media/platform/rockchip/cif/Kconfig @@ -0,0 +1,40 @@ @@ -833759,7 +833759,7 @@ index 000000000000..592842bf3386 + diff --git a/drivers/media/platform/rockchip/cif/Makefile b/drivers/media/platform/rockchip/cif/Makefile new file mode 100755 -index 000000000000..279be843e093 +index 000000000..279be843e --- /dev/null +++ b/drivers/media/platform/rockchip/cif/Makefile @@ -0,0 +1,11 @@ @@ -833776,7 +833776,7 @@ index 000000000000..279be843e093 + common.o diff --git a/drivers/media/platform/rockchip/cif/capture.c b/drivers/media/platform/rockchip/cif/capture.c new file mode 100755 -index 000000000000..9832721da8e3 +index 000000000..9832721da --- /dev/null +++ b/drivers/media/platform/rockchip/cif/capture.c @@ -0,0 +1,7915 @@ @@ -841697,7 +841697,7 @@ index 000000000000..9832721da8e3 + diff --git a/drivers/media/platform/rockchip/cif/cif-luma.c b/drivers/media/platform/rockchip/cif/cif-luma.c new file mode 100755 -index 000000000000..9d751df3c4e5 +index 000000000..9d751df3c --- /dev/null +++ b/drivers/media/platform/rockchip/cif/cif-luma.c @@ -0,0 +1,520 @@ @@ -842223,7 +842223,7 @@ index 000000000000..9d751df3c4e5 +} diff --git a/drivers/media/platform/rockchip/cif/cif-luma.h b/drivers/media/platform/rockchip/cif/cif-luma.h new file mode 100755 -index 000000000000..f57d19c4123a +index 000000000..f57d19c41 --- /dev/null +++ b/drivers/media/platform/rockchip/cif/cif-luma.h @@ -0,0 +1,83 @@ @@ -842312,7 +842312,7 @@ index 000000000000..f57d19c4123a +#endif /* _RKCIF_LUMA_H */ diff --git a/drivers/media/platform/rockchip/cif/cif-scale.c b/drivers/media/platform/rockchip/cif/cif-scale.c new file mode 100755 -index 000000000000..afcf8801f425 +index 000000000..afcf8801f --- /dev/null +++ b/drivers/media/platform/rockchip/cif/cif-scale.c @@ -0,0 +1,1202 @@ @@ -843520,7 +843520,7 @@ index 000000000000..afcf8801f425 + diff --git a/drivers/media/platform/rockchip/cif/common.c b/drivers/media/platform/rockchip/cif/common.c new file mode 100755 -index 000000000000..7442dfe82c14 +index 000000000..7442dfe82 --- /dev/null +++ b/drivers/media/platform/rockchip/cif/common.c @@ -0,0 +1,187 @@ @@ -843713,7 +843713,7 @@ index 000000000000..7442dfe82c14 + diff --git a/drivers/media/platform/rockchip/cif/common.h b/drivers/media/platform/rockchip/cif/common.h new file mode 100755 -index 000000000000..86dbd55d1283 +index 000000000..86dbd55d1 --- /dev/null +++ b/drivers/media/platform/rockchip/cif/common.h @@ -0,0 +1,27 @@ @@ -843746,7 +843746,7 @@ index 000000000000..86dbd55d1283 + diff --git a/drivers/media/platform/rockchip/cif/dev.c b/drivers/media/platform/rockchip/cif/dev.c new file mode 100755 -index 000000000000..5f59c9401059 +index 000000000..5f59c9401 --- /dev/null +++ b/drivers/media/platform/rockchip/cif/dev.c @@ -0,0 +1,1928 @@ @@ -845680,7 +845680,7 @@ index 000000000000..5f59c9401059 +MODULE_LICENSE("GPL v2"); diff --git a/drivers/media/platform/rockchip/cif/dev.h b/drivers/media/platform/rockchip/cif/dev.h new file mode 100755 -index 000000000000..a6f210bd8166 +index 000000000..a6f210bd8 --- /dev/null +++ b/drivers/media/platform/rockchip/cif/dev.h @@ -0,0 +1,786 @@ @@ -846472,7 +846472,7 @@ index 000000000000..a6f210bd8166 +#endif diff --git a/drivers/media/platform/rockchip/cif/hw.c b/drivers/media/platform/rockchip/cif/hw.c new file mode 100755 -index 000000000000..a85f2e14c8e7 +index 000000000..a85f2e14c --- /dev/null +++ b/drivers/media/platform/rockchip/cif/hw.c @@ -0,0 +1,1186 @@ @@ -847664,7 +847664,7 @@ index 000000000000..a85f2e14c8e7 +MODULE_LICENSE("GPL v2"); diff --git a/drivers/media/platform/rockchip/cif/hw.h b/drivers/media/platform/rockchip/cif/hw.h new file mode 100755 -index 000000000000..b5698f7c35e6 +index 000000000..b5698f7c3 --- /dev/null +++ b/drivers/media/platform/rockchip/cif/hw.h @@ -0,0 +1,130 @@ @@ -847800,7 +847800,7 @@ index 000000000000..b5698f7c35e6 +#endif diff --git a/drivers/media/platform/rockchip/cif/mipi-csi2.c b/drivers/media/platform/rockchip/cif/mipi-csi2.c new file mode 100755 -index 000000000000..fb2312e2bb63 +index 000000000..fb2312e2b --- /dev/null +++ b/drivers/media/platform/rockchip/cif/mipi-csi2.c @@ -0,0 +1,940 @@ @@ -848746,7 +848746,7 @@ index 000000000000..fb2312e2bb63 +MODULE_LICENSE("GPL"); diff --git a/drivers/media/platform/rockchip/cif/mipi-csi2.h b/drivers/media/platform/rockchip/cif/mipi-csi2.h new file mode 100755 -index 000000000000..e04a7dd2eef3 +index 000000000..e04a7dd2e --- /dev/null +++ b/drivers/media/platform/rockchip/cif/mipi-csi2.h @@ -0,0 +1,159 @@ @@ -848911,7 +848911,7 @@ index 000000000000..e04a7dd2eef3 +#endif diff --git a/drivers/media/platform/rockchip/cif/procfs.c b/drivers/media/platform/rockchip/cif/procfs.c new file mode 100755 -index 000000000000..43d6e2c232b0 +index 000000000..43d6e2c23 --- /dev/null +++ b/drivers/media/platform/rockchip/cif/procfs.c @@ -0,0 +1,406 @@ @@ -849323,7 +849323,7 @@ index 000000000000..43d6e2c232b0 +#endif diff --git a/drivers/media/platform/rockchip/cif/procfs.h b/drivers/media/platform/rockchip/cif/procfs.h new file mode 100755 -index 000000000000..798533849cd9 +index 000000000..798533849 --- /dev/null +++ b/drivers/media/platform/rockchip/cif/procfs.h @@ -0,0 +1,25 @@ @@ -849354,7 +849354,7 @@ index 000000000000..798533849cd9 +#endif diff --git a/drivers/media/platform/rockchip/cif/regs.h b/drivers/media/platform/rockchip/cif/regs.h new file mode 100755 -index 000000000000..d9a1303c16af +index 000000000..d9a1303c1 --- /dev/null +++ b/drivers/media/platform/rockchip/cif/regs.h @@ -0,0 +1,979 @@ @@ -850339,7 +850339,7 @@ index 000000000000..d9a1303c16af +#endif diff --git a/drivers/media/platform/rockchip/cif/subdev-itf.c b/drivers/media/platform/rockchip/cif/subdev-itf.c new file mode 100755 -index 000000000000..3cf240ee4945 +index 000000000..3cf240ee4 --- /dev/null +++ b/drivers/media/platform/rockchip/cif/subdev-itf.c @@ -0,0 +1,635 @@ @@ -850980,7 +850980,7 @@ index 000000000000..3cf240ee4945 +MODULE_LICENSE("GPL v2"); diff --git a/drivers/media/platform/rockchip/cif/subdev-itf.h b/drivers/media/platform/rockchip/cif/subdev-itf.h new file mode 100755 -index 000000000000..a1ebbe02a820 +index 000000000..a1ebbe02a --- /dev/null +++ b/drivers/media/platform/rockchip/cif/subdev-itf.h @@ -0,0 +1,69 @@ @@ -851055,7 +851055,7 @@ index 000000000000..a1ebbe02a820 +#endif diff --git a/drivers/media/platform/rockchip/cif/version.h b/drivers/media/platform/rockchip/cif/version.h new file mode 100755 -index 000000000000..627b4a3a11e5 +index 000000000..627b4a3a1 --- /dev/null +++ b/drivers/media/platform/rockchip/cif/version.h @@ -0,0 +1,74 @@ @@ -851135,7 +851135,7 @@ index 000000000000..627b4a3a11e5 +#endif diff --git a/drivers/media/platform/rockchip/isp/Kconfig b/drivers/media/platform/rockchip/isp/Kconfig new file mode 100755 -index 000000000000..98a530a171f1 +index 000000000..98a530a17 --- /dev/null +++ b/drivers/media/platform/rockchip/isp/Kconfig @@ -0,0 +1,39 @@ @@ -851180,7 +851180,7 @@ index 000000000000..98a530a171f1 +endif diff --git a/drivers/media/platform/rockchip/isp/Makefile b/drivers/media/platform/rockchip/isp/Makefile new file mode 100755 -index 000000000000..52cac629003f +index 000000000..52cac6290 --- /dev/null +++ b/drivers/media/platform/rockchip/isp/Makefile @@ -0,0 +1,42 @@ @@ -851228,7 +851228,7 @@ index 000000000000..52cac629003f +video_rkisp-$(CONFIG_VIDEO_ROCKCHIP_THUNDER_BOOT_ISP) += rkisp_tb_helper.o diff --git a/drivers/media/platform/rockchip/isp/bridge.c b/drivers/media/platform/rockchip/isp/bridge.c new file mode 100755 -index 000000000000..51c8254ccfe2 +index 000000000..51c8254cc --- /dev/null +++ b/drivers/media/platform/rockchip/isp/bridge.c @@ -0,0 +1,629 @@ @@ -851863,7 +851863,7 @@ index 000000000000..51c8254ccfe2 +EXPORT_SYMBOL(rkisp_get_bridge_sd); diff --git a/drivers/media/platform/rockchip/isp/bridge.h b/drivers/media/platform/rockchip/isp/bridge.h new file mode 100755 -index 000000000000..8310b13df88a +index 000000000..8310b13df --- /dev/null +++ b/drivers/media/platform/rockchip/isp/bridge.h @@ -0,0 +1,105 @@ @@ -851974,7 +851974,7 @@ index 000000000000..8310b13df88a +#endif diff --git a/drivers/media/platform/rockchip/isp/bridge_v20.c b/drivers/media/platform/rockchip/isp/bridge_v20.c new file mode 100755 -index 000000000000..ff1d4af07424 +index 000000000..ff1d4af07 --- /dev/null +++ b/drivers/media/platform/rockchip/isp/bridge_v20.c @@ -0,0 +1,1094 @@ @@ -853074,7 +853074,7 @@ index 000000000000..ff1d4af07424 +} diff --git a/drivers/media/platform/rockchip/isp/bridge_v30.c b/drivers/media/platform/rockchip/isp/bridge_v30.c new file mode 100755 -index 000000000000..c0b639bddd56 +index 000000000..c0b639bdd --- /dev/null +++ b/drivers/media/platform/rockchip/isp/bridge_v30.c @@ -0,0 +1,236 @@ @@ -853316,7 +853316,7 @@ index 000000000000..c0b639bddd56 +} diff --git a/drivers/media/platform/rockchip/isp/capture.c b/drivers/media/platform/rockchip/isp/capture.c new file mode 100755 -index 000000000000..476c147b5f60 +index 000000000..476c147b5 --- /dev/null +++ b/drivers/media/platform/rockchip/isp/capture.c @@ -0,0 +1,1717 @@ @@ -855039,7 +855039,7 @@ index 000000000000..476c147b5f60 +} diff --git a/drivers/media/platform/rockchip/isp/capture.h b/drivers/media/platform/rockchip/isp/capture.h new file mode 100755 -index 000000000000..5a9251a9c973 +index 000000000..5a9251a9c --- /dev/null +++ b/drivers/media/platform/rockchip/isp/capture.h @@ -0,0 +1,295 @@ @@ -855340,7 +855340,7 @@ index 000000000000..5a9251a9c973 +#endif /* _RKISP_PATH_VIDEO_H */ diff --git a/drivers/media/platform/rockchip/isp/capture_v1x.c b/drivers/media/platform/rockchip/isp/capture_v1x.c new file mode 100755 -index 000000000000..b829bd5e512a +index 000000000..b829bd5e5 --- /dev/null +++ b/drivers/media/platform/rockchip/isp/capture_v1x.c @@ -0,0 +1,957 @@ @@ -856303,7 +856303,7 @@ index 000000000000..b829bd5e512a +} diff --git a/drivers/media/platform/rockchip/isp/capture_v1x.h b/drivers/media/platform/rockchip/isp/capture_v1x.h new file mode 100755 -index 000000000000..f26f1bde0010 +index 000000000..f26f1bde0 --- /dev/null +++ b/drivers/media/platform/rockchip/isp/capture_v1x.h @@ -0,0 +1,17 @@ @@ -856326,7 +856326,7 @@ index 000000000000..f26f1bde0010 +#endif diff --git a/drivers/media/platform/rockchip/isp/capture_v20.c b/drivers/media/platform/rockchip/isp/capture_v20.c new file mode 100755 -index 000000000000..4dbb87110d54 +index 000000000..4dbb87110 --- /dev/null +++ b/drivers/media/platform/rockchip/isp/capture_v20.c @@ -0,0 +1,1969 @@ @@ -858301,7 +858301,7 @@ index 000000000000..4dbb87110d54 +} diff --git a/drivers/media/platform/rockchip/isp/capture_v21.c b/drivers/media/platform/rockchip/isp/capture_v21.c new file mode 100755 -index 000000000000..4bef12f6a9a4 +index 000000000..4bef12f6a --- /dev/null +++ b/drivers/media/platform/rockchip/isp/capture_v21.c @@ -0,0 +1,1699 @@ @@ -860006,7 +860006,7 @@ index 000000000000..4bef12f6a9a4 +} diff --git a/drivers/media/platform/rockchip/isp/capture_v2x.h b/drivers/media/platform/rockchip/isp/capture_v2x.h new file mode 100755 -index 000000000000..8ec036998a4a +index 000000000..8ec036998 --- /dev/null +++ b/drivers/media/platform/rockchip/isp/capture_v2x.h @@ -0,0 +1,48 @@ @@ -860060,7 +860060,7 @@ index 000000000000..8ec036998a4a +#endif diff --git a/drivers/media/platform/rockchip/isp/capture_v30.c b/drivers/media/platform/rockchip/isp/capture_v30.c new file mode 100755 -index 000000000000..05fad30e2ba3 +index 000000000..05fad30e2 --- /dev/null +++ b/drivers/media/platform/rockchip/isp/capture_v30.c @@ -0,0 +1,1495 @@ @@ -861561,7 +861561,7 @@ index 000000000000..05fad30e2ba3 +} diff --git a/drivers/media/platform/rockchip/isp/capture_v3x.h b/drivers/media/platform/rockchip/isp/capture_v3x.h new file mode 100755 -index 000000000000..cb3d59391e87 +index 000000000..cb3d59391 --- /dev/null +++ b/drivers/media/platform/rockchip/isp/capture_v3x.h @@ -0,0 +1,23 @@ @@ -861590,7 +861590,7 @@ index 000000000000..cb3d59391e87 +#endif diff --git a/drivers/media/platform/rockchip/isp/common.c b/drivers/media/platform/rockchip/isp/common.c new file mode 100755 -index 000000000000..30b69b204914 +index 000000000..30b69b204 --- /dev/null +++ b/drivers/media/platform/rockchip/isp/common.c @@ -0,0 +1,369 @@ @@ -861965,7 +861965,7 @@ index 000000000000..30b69b204914 +} diff --git a/drivers/media/platform/rockchip/isp/common.h b/drivers/media/platform/rockchip/isp/common.h new file mode 100755 -index 000000000000..6ff84a21b216 +index 000000000..6ff84a21b --- /dev/null +++ b/drivers/media/platform/rockchip/isp/common.h @@ -0,0 +1,212 @@ @@ -862183,7 +862183,7 @@ index 000000000000..6ff84a21b216 +#endif /* _RKISP_COMMON_H */ diff --git a/drivers/media/platform/rockchip/isp/csi.c b/drivers/media/platform/rockchip/isp/csi.c new file mode 100755 -index 000000000000..2ffd02c73e0d +index 000000000..2ffd02c73 --- /dev/null +++ b/drivers/media/platform/rockchip/isp/csi.c @@ -0,0 +1,637 @@ @@ -862826,7 +862826,7 @@ index 000000000000..2ffd02c73e0d +} diff --git a/drivers/media/platform/rockchip/isp/csi.h b/drivers/media/platform/rockchip/isp/csi.h new file mode 100755 -index 000000000000..4a8c7020078b +index 000000000..4a8c70200 --- /dev/null +++ b/drivers/media/platform/rockchip/isp/csi.h @@ -0,0 +1,83 @@ @@ -862915,7 +862915,7 @@ index 000000000000..4a8c7020078b +#endif diff --git a/drivers/media/platform/rockchip/isp/dev.c b/drivers/media/platform/rockchip/isp/dev.c new file mode 100755 -index 000000000000..e8628681d570 +index 000000000..e8628681d --- /dev/null +++ b/drivers/media/platform/rockchip/isp/dev.c @@ -0,0 +1,913 @@ @@ -863834,7 +863834,7 @@ index 000000000000..e8628681d570 +MODULE_LICENSE("Dual BSD/GPL"); diff --git a/drivers/media/platform/rockchip/isp/dev.h b/drivers/media/platform/rockchip/isp/dev.h new file mode 100755 -index 000000000000..e057491111fa +index 000000000..e05749111 --- /dev/null +++ b/drivers/media/platform/rockchip/isp/dev.h @@ -0,0 +1,238 @@ @@ -864078,7 +864078,7 @@ index 000000000000..e057491111fa +#endif diff --git a/drivers/media/platform/rockchip/isp/dmarx.c b/drivers/media/platform/rockchip/isp/dmarx.c new file mode 100755 -index 000000000000..0dcc080d7cdc +index 000000000..0dcc080d7 --- /dev/null +++ b/drivers/media/platform/rockchip/isp/dmarx.c @@ -0,0 +1,1183 @@ @@ -865267,7 +865267,7 @@ index 000000000000..0dcc080d7cdc +} diff --git a/drivers/media/platform/rockchip/isp/dmarx.h b/drivers/media/platform/rockchip/isp/dmarx.h new file mode 100755 -index 000000000000..348096e286ef +index 000000000..348096e28 --- /dev/null +++ b/drivers/media/platform/rockchip/isp/dmarx.h @@ -0,0 +1,67 @@ @@ -865340,7 +865340,7 @@ index 000000000000..348096e286ef +#endif /* _RKISP_DMARX_H */ diff --git a/drivers/media/platform/rockchip/isp/hw.c b/drivers/media/platform/rockchip/isp/hw.c new file mode 100755 -index 000000000000..899bee986397 +index 000000000..899bee986 --- /dev/null +++ b/drivers/media/platform/rockchip/isp/hw.c @@ -0,0 +1,1019 @@ @@ -866365,7 +866365,7 @@ index 000000000000..899bee986397 +module_init(rkisp_hw_drv_init); diff --git a/drivers/media/platform/rockchip/isp/hw.h b/drivers/media/platform/rockchip/isp/hw.h new file mode 100755 -index 000000000000..dce2f0a715ee +index 000000000..dce2f0a71 --- /dev/null +++ b/drivers/media/platform/rockchip/isp/hw.h @@ -0,0 +1,89 @@ @@ -866460,7 +866460,7 @@ index 000000000000..dce2f0a715ee +#endif diff --git a/drivers/media/platform/rockchip/isp/isp_external.h b/drivers/media/platform/rockchip/isp/isp_external.h new file mode 100755 -index 000000000000..655c4b943835 +index 000000000..655c4b943 --- /dev/null +++ b/drivers/media/platform/rockchip/isp/isp_external.h @@ -0,0 +1,44 @@ @@ -866510,7 +866510,7 @@ index 000000000000..655c4b943835 +#endif diff --git a/drivers/media/platform/rockchip/isp/isp_ispp.h b/drivers/media/platform/rockchip/isp/isp_ispp.h new file mode 100755 -index 000000000000..98300cae0347 +index 000000000..98300cae0 --- /dev/null +++ b/drivers/media/platform/rockchip/isp/isp_ispp.h @@ -0,0 +1,138 @@ @@ -866654,7 +866654,7 @@ index 000000000000..98300cae0347 +#endif diff --git a/drivers/media/platform/rockchip/isp/isp_mipi_luma.c b/drivers/media/platform/rockchip/isp/isp_mipi_luma.c new file mode 100755 -index 000000000000..ebca58e7102f +index 000000000..ebca58e71 --- /dev/null +++ b/drivers/media/platform/rockchip/isp/isp_mipi_luma.c @@ -0,0 +1,524 @@ @@ -867184,7 +867184,7 @@ index 000000000000..ebca58e7102f +} diff --git a/drivers/media/platform/rockchip/isp/isp_mipi_luma.h b/drivers/media/platform/rockchip/isp/isp_mipi_luma.h new file mode 100755 -index 000000000000..537a9d6a0796 +index 000000000..537a9d6a0 --- /dev/null +++ b/drivers/media/platform/rockchip/isp/isp_mipi_luma.h @@ -0,0 +1,79 @@ @@ -867269,7 +867269,7 @@ index 000000000000..537a9d6a0796 +#endif /* _RKISP_ISP_LUMA_H */ diff --git a/drivers/media/platform/rockchip/isp/isp_params.c b/drivers/media/platform/rockchip/isp/isp_params.c new file mode 100755 -index 000000000000..c5e91d18f973 +index 000000000..c5e91d18f --- /dev/null +++ b/drivers/media/platform/rockchip/isp/isp_params.c @@ -0,0 +1,459 @@ @@ -867734,7 +867734,7 @@ index 000000000000..c5e91d18f973 + diff --git a/drivers/media/platform/rockchip/isp/isp_params.h b/drivers/media/platform/rockchip/isp/isp_params.h new file mode 100755 -index 000000000000..fb4e3a2d7569 +index 000000000..fb4e3a2d7 --- /dev/null +++ b/drivers/media/platform/rockchip/isp/isp_params.h @@ -0,0 +1,147 @@ @@ -867887,7 +867887,7 @@ index 000000000000..fb4e3a2d7569 +#endif /* _RKISP_ISP_PARAM_H */ diff --git a/drivers/media/platform/rockchip/isp/isp_params_v1x.c b/drivers/media/platform/rockchip/isp/isp_params_v1x.c new file mode 100755 -index 000000000000..4ca6c6dbbd2c +index 000000000..4ca6c6dbb --- /dev/null +++ b/drivers/media/platform/rockchip/isp/isp_params_v1x.c @@ -0,0 +1,2352 @@ @@ -870245,7 +870245,7 @@ index 000000000000..4ca6c6dbbd2c + diff --git a/drivers/media/platform/rockchip/isp/isp_params_v1x.h b/drivers/media/platform/rockchip/isp/isp_params_v1x.h new file mode 100755 -index 000000000000..316bef51eaca +index 000000000..316bef51e --- /dev/null +++ b/drivers/media/platform/rockchip/isp/isp_params_v1x.h @@ -0,0 +1,87 @@ @@ -870338,7 +870338,7 @@ index 000000000000..316bef51eaca +#endif /* _RKISP_ISP_PARAM_V1X_H */ diff --git a/drivers/media/platform/rockchip/isp/isp_params_v21.c b/drivers/media/platform/rockchip/isp/isp_params_v21.c new file mode 100755 -index 000000000000..f2b8b9cd82fa +index 000000000..eeb242a14 --- /dev/null +++ b/drivers/media/platform/rockchip/isp/isp_params_v21.c @@ -0,0 +1,4195 @@ @@ -874539,7 +874539,7 @@ index 000000000000..f2b8b9cd82fa +} diff --git a/drivers/media/platform/rockchip/isp/isp_params_v21.h b/drivers/media/platform/rockchip/isp/isp_params_v21.h new file mode 100755 -index 000000000000..860b9156f761 +index 000000000..860b9156f --- /dev/null +++ b/drivers/media/platform/rockchip/isp/isp_params_v21.h @@ -0,0 +1,175 @@ @@ -874720,7 +874720,7 @@ index 000000000000..860b9156f761 +#endif /* _RKISP_ISP_PARAM_V21_H */ diff --git a/drivers/media/platform/rockchip/isp/isp_params_v2x.c b/drivers/media/platform/rockchip/isp/isp_params_v2x.c new file mode 100755 -index 000000000000..656834e2a922 +index 000000000..656834e2a --- /dev/null +++ b/drivers/media/platform/rockchip/isp/isp_params_v2x.c @@ -0,0 +1,4466 @@ @@ -879192,7 +879192,7 @@ index 000000000000..656834e2a922 + diff --git a/drivers/media/platform/rockchip/isp/isp_params_v2x.h b/drivers/media/platform/rockchip/isp/isp_params_v2x.h new file mode 100755 -index 000000000000..707ada18205b +index 000000000..707ada182 --- /dev/null +++ b/drivers/media/platform/rockchip/isp/isp_params_v2x.h @@ -0,0 +1,359 @@ @@ -879557,7 +879557,7 @@ index 000000000000..707ada18205b +#endif /* _RKISP_ISP_PARAM_V2X_H */ diff --git a/drivers/media/platform/rockchip/isp/isp_params_v3x.c b/drivers/media/platform/rockchip/isp/isp_params_v3x.c new file mode 100755 -index 000000000000..2f35b42e1d7c +index 000000000..2f35b42e1 --- /dev/null +++ b/drivers/media/platform/rockchip/isp/isp_params_v3x.c @@ -0,0 +1,4688 @@ @@ -884251,7 +884251,7 @@ index 000000000000..2f35b42e1d7c +} diff --git a/drivers/media/platform/rockchip/isp/isp_params_v3x.h b/drivers/media/platform/rockchip/isp/isp_params_v3x.h new file mode 100755 -index 000000000000..3f9d6989d453 +index 000000000..3f9d6989d --- /dev/null +++ b/drivers/media/platform/rockchip/isp/isp_params_v3x.h @@ -0,0 +1,210 @@ @@ -884467,7 +884467,7 @@ index 000000000000..3f9d6989d453 +#endif /* _RKISP_ISP_PARAM_V3X_H */ diff --git a/drivers/media/platform/rockchip/isp/isp_stats.c b/drivers/media/platform/rockchip/isp/isp_stats.c new file mode 100755 -index 000000000000..e472dbdb7bee +index 000000000..e472dbdb7 --- /dev/null +++ b/drivers/media/platform/rockchip/isp/isp_stats.c @@ -0,0 +1,373 @@ @@ -884846,7 +884846,7 @@ index 000000000000..e472dbdb7bee + diff --git a/drivers/media/platform/rockchip/isp/isp_stats.h b/drivers/media/platform/rockchip/isp/isp_stats.h new file mode 100755 -index 000000000000..249ed2535585 +index 000000000..249ed2535 --- /dev/null +++ b/drivers/media/platform/rockchip/isp/isp_stats.h @@ -0,0 +1,89 @@ @@ -884941,7 +884941,7 @@ index 000000000000..249ed2535585 +#endif /* _RKISP_ISP_STATS_H */ diff --git a/drivers/media/platform/rockchip/isp/isp_stats_v1x.c b/drivers/media/platform/rockchip/isp/isp_stats_v1x.c new file mode 100755 -index 000000000000..dce904b5f7c5 +index 000000000..dce904b5f --- /dev/null +++ b/drivers/media/platform/rockchip/isp/isp_stats_v1x.c @@ -0,0 +1,420 @@ @@ -885367,7 +885367,7 @@ index 000000000000..dce904b5f7c5 + diff --git a/drivers/media/platform/rockchip/isp/isp_stats_v1x.h b/drivers/media/platform/rockchip/isp/isp_stats_v1x.h new file mode 100755 -index 000000000000..8f1853d4b01d +index 000000000..8f1853d4b --- /dev/null +++ b/drivers/media/platform/rockchip/isp/isp_stats_v1x.h @@ -0,0 +1,42 @@ @@ -885415,7 +885415,7 @@ index 000000000000..8f1853d4b01d +#endif /* _RKISP_ISP_STATS_V1X_H */ diff --git a/drivers/media/platform/rockchip/isp/isp_stats_v21.c b/drivers/media/platform/rockchip/isp/isp_stats_v21.c new file mode 100755 -index 000000000000..d6946c9fe80b +index 000000000..956775f3b --- /dev/null +++ b/drivers/media/platform/rockchip/isp/isp_stats_v21.c @@ -0,0 +1,1166 @@ @@ -886587,7 +886587,7 @@ index 000000000000..d6946c9fe80b +} diff --git a/drivers/media/platform/rockchip/isp/isp_stats_v21.h b/drivers/media/platform/rockchip/isp/isp_stats_v21.h new file mode 100755 -index 000000000000..c1dba6c65933 +index 000000000..c1dba6c65 --- /dev/null +++ b/drivers/media/platform/rockchip/isp/isp_stats_v21.h @@ -0,0 +1,52 @@ @@ -886645,7 +886645,7 @@ index 000000000000..c1dba6c65933 +#endif /* _RKISP_ISP_STATS_V21_H */ diff --git a/drivers/media/platform/rockchip/isp/isp_stats_v2x.c b/drivers/media/platform/rockchip/isp/isp_stats_v2x.c new file mode 100755 -index 000000000000..6e458a571b18 +index 000000000..6e458a571 --- /dev/null +++ b/drivers/media/platform/rockchip/isp/isp_stats_v2x.c @@ -0,0 +1,1526 @@ @@ -888177,7 +888177,7 @@ index 000000000000..6e458a571b18 + diff --git a/drivers/media/platform/rockchip/isp/isp_stats_v2x.h b/drivers/media/platform/rockchip/isp/isp_stats_v2x.h new file mode 100755 -index 000000000000..5793ebfefcbb +index 000000000..5793ebfef --- /dev/null +++ b/drivers/media/platform/rockchip/isp/isp_stats_v2x.h @@ -0,0 +1,70 @@ @@ -888253,7 +888253,7 @@ index 000000000000..5793ebfefcbb +#endif /* _RKISP_ISP_STATS_V2X_H */ diff --git a/drivers/media/platform/rockchip/isp/isp_stats_v3x.c b/drivers/media/platform/rockchip/isp/isp_stats_v3x.c new file mode 100755 -index 000000000000..7d1883c37ba8 +index 000000000..7d1883c37 --- /dev/null +++ b/drivers/media/platform/rockchip/isp/isp_stats_v3x.c @@ -0,0 +1,1309 @@ @@ -889568,7 +889568,7 @@ index 000000000000..7d1883c37ba8 +} diff --git a/drivers/media/platform/rockchip/isp/isp_stats_v3x.h b/drivers/media/platform/rockchip/isp/isp_stats_v3x.h new file mode 100755 -index 000000000000..1b40c571f19e +index 000000000..1b40c571f --- /dev/null +++ b/drivers/media/platform/rockchip/isp/isp_stats_v3x.h @@ -0,0 +1,52 @@ @@ -889626,7 +889626,7 @@ index 000000000000..1b40c571f19e +#endif /* _RKISP_ISP_STATS_V3X_H */ diff --git a/drivers/media/platform/rockchip/isp/procfs.c b/drivers/media/platform/rockchip/isp/procfs.c new file mode 100755 -index 000000000000..4594789ac355 +index 000000000..4594789ac --- /dev/null +++ b/drivers/media/platform/rockchip/isp/procfs.c @@ -0,0 +1,805 @@ @@ -890437,7 +890437,7 @@ index 000000000000..4594789ac355 +#endif /* CONFIG_PROC_FS */ diff --git a/drivers/media/platform/rockchip/isp/procfs.h b/drivers/media/platform/rockchip/isp/procfs.h new file mode 100755 -index 000000000000..09c650abc5cb +index 000000000..09c650abc --- /dev/null +++ b/drivers/media/platform/rockchip/isp/procfs.h @@ -0,0 +1,21 @@ @@ -890464,7 +890464,7 @@ index 000000000000..09c650abc5cb +#endif diff --git a/drivers/media/platform/rockchip/isp/regs.c b/drivers/media/platform/rockchip/isp/regs.c new file mode 100755 -index 000000000000..908e05d8c6a0 +index 000000000..908e05d8c --- /dev/null +++ b/drivers/media/platform/rockchip/isp/regs.c @@ -0,0 +1,328 @@ @@ -890798,7 +890798,7 @@ index 000000000000..908e05d8c6a0 +} diff --git a/drivers/media/platform/rockchip/isp/regs.h b/drivers/media/platform/rockchip/isp/regs.h new file mode 100755 -index 000000000000..7b7f5972a3a9 +index 000000000..7b7f5972a --- /dev/null +++ b/drivers/media/platform/rockchip/isp/regs.h @@ -0,0 +1,2031 @@ @@ -892835,7 +892835,7 @@ index 000000000000..7b7f5972a3a9 +#endif /* _RKISP_REGS_H */ diff --git a/drivers/media/platform/rockchip/isp/regs_v2x.h b/drivers/media/platform/rockchip/isp/regs_v2x.h new file mode 100755 -index 000000000000..9e55bdfa7783 +index 000000000..9e55bdfa7 --- /dev/null +++ b/drivers/media/platform/rockchip/isp/regs_v2x.h @@ -0,0 +1,2717 @@ @@ -895558,7 +895558,7 @@ index 000000000000..9e55bdfa7783 +#endif /* _RKISP_REGS_V2X_H */ diff --git a/drivers/media/platform/rockchip/isp/regs_v3x.h b/drivers/media/platform/rockchip/isp/regs_v3x.h new file mode 100755 -index 000000000000..b8db3e46f439 +index 000000000..b8db3e46f --- /dev/null +++ b/drivers/media/platform/rockchip/isp/regs_v3x.h @@ -0,0 +1,1822 @@ @@ -897386,7 +897386,7 @@ index 000000000000..b8db3e46f439 +#endif /* _RKISP_REGS_V3X_H */ diff --git a/drivers/media/platform/rockchip/isp/rkisp.c b/drivers/media/platform/rockchip/isp/rkisp.c new file mode 100755 -index 000000000000..31bbb5eb09d0 +index 000000000..31bbb5eb0 --- /dev/null +++ b/drivers/media/platform/rockchip/isp/rkisp.c @@ -0,0 +1,3578 @@ @@ -900970,7 +900970,7 @@ index 000000000000..31bbb5eb09d0 + diff --git a/drivers/media/platform/rockchip/isp/rkisp.h b/drivers/media/platform/rockchip/isp/rkisp.h new file mode 100755 -index 000000000000..bb19692e8a87 +index 000000000..bb19692e8 --- /dev/null +++ b/drivers/media/platform/rockchip/isp/rkisp.h @@ -0,0 +1,197 @@ @@ -901173,7 +901173,7 @@ index 000000000000..bb19692e8a87 +#endif /* _RKISP_H */ diff --git a/drivers/media/platform/rockchip/isp/rkisp_tb_helper.c b/drivers/media/platform/rockchip/isp/rkisp_tb_helper.c new file mode 100755 -index 000000000000..a32e5fe5e370 +index 000000000..a32e5fe5e --- /dev/null +++ b/drivers/media/platform/rockchip/isp/rkisp_tb_helper.c @@ -0,0 +1,266 @@ @@ -901445,7 +901445,7 @@ index 000000000000..a32e5fe5e370 +EXPORT_SYMBOL(rkisp_tb_get_state); diff --git a/drivers/media/platform/rockchip/isp/rkisp_tb_helper.h b/drivers/media/platform/rockchip/isp/rkisp_tb_helper.h new file mode 100755 -index 000000000000..79d06469a354 +index 000000000..79d06469a --- /dev/null +++ b/drivers/media/platform/rockchip/isp/rkisp_tb_helper.h @@ -0,0 +1,33 @@ @@ -901484,7 +901484,7 @@ index 000000000000..79d06469a354 +#endif diff --git a/drivers/media/platform/rockchip/isp/version.h b/drivers/media/platform/rockchip/isp/version.h new file mode 100755 -index 000000000000..fd10553869e9 +index 000000000..fd1055386 --- /dev/null +++ b/drivers/media/platform/rockchip/isp/version.h @@ -0,0 +1,224 @@ @@ -901714,7 +901714,7 @@ index 000000000000..fd10553869e9 +#endif diff --git a/drivers/media/platform/rockchip/isp/videobuf2-rdma-sg.c b/drivers/media/platform/rockchip/isp/videobuf2-rdma-sg.c new file mode 100755 -index 000000000000..5fe71b21d930 +index 000000000..5fe71b21d --- /dev/null +++ b/drivers/media/platform/rockchip/isp/videobuf2-rdma-sg.c @@ -0,0 +1,608 @@ @@ -902328,7 +902328,7 @@ index 000000000000..5fe71b21d930 +EXPORT_SYMBOL_GPL(vb2_rdma_sg_memops); diff --git a/drivers/media/platform/rockchip/isp1/Kconfig b/drivers/media/platform/rockchip/isp1/Kconfig new file mode 100755 -index 000000000000..5637cc758cc5 +index 000000000..5637cc758 --- /dev/null +++ b/drivers/media/platform/rockchip/isp1/Kconfig @@ -0,0 +1,12 @@ @@ -902346,7 +902346,7 @@ index 000000000000..5637cc758cc5 + Support for ISP1 on the rockchip SoC. diff --git a/drivers/media/platform/rockchip/isp1/Makefile b/drivers/media/platform/rockchip/isp1/Makefile new file mode 100755 -index 000000000000..788e3d97978a +index 000000000..788e3d979 --- /dev/null +++ b/drivers/media/platform/rockchip/isp1/Makefile @@ -0,0 +1,10 @@ @@ -902362,7 +902362,7 @@ index 000000000000..788e3d97978a + dmarx.o diff --git a/drivers/media/platform/rockchip/isp1/capture.c b/drivers/media/platform/rockchip/isp1/capture.c new file mode 100755 -index 000000000000..e61d59a4000a +index 000000000..e61d59a40 --- /dev/null +++ b/drivers/media/platform/rockchip/isp1/capture.c @@ -0,0 +1,2313 @@ @@ -904681,7 +904681,7 @@ index 000000000000..e61d59a4000a +} diff --git a/drivers/media/platform/rockchip/isp1/capture.h b/drivers/media/platform/rockchip/isp1/capture.h new file mode 100755 -index 000000000000..8613618352e9 +index 000000000..861361835 --- /dev/null +++ b/drivers/media/platform/rockchip/isp1/capture.h @@ -0,0 +1,219 @@ @@ -904906,7 +904906,7 @@ index 000000000000..8613618352e9 +#endif /* _RKISP1_PATH_VIDEO_H */ diff --git a/drivers/media/platform/rockchip/isp1/common.h b/drivers/media/platform/rockchip/isp1/common.h new file mode 100755 -index 000000000000..f20a0829c96c +index 000000000..f20a0829c --- /dev/null +++ b/drivers/media/platform/rockchip/isp1/common.h @@ -0,0 +1,133 @@ @@ -905045,7 +905045,7 @@ index 000000000000..f20a0829c96c +#endif /* _RKISP1_COMMON_H */ diff --git a/drivers/media/platform/rockchip/isp1/dev.c b/drivers/media/platform/rockchip/isp1/dev.c new file mode 100755 -index 000000000000..4e548f0ae81b +index 000000000..4e548f0ae --- /dev/null +++ b/drivers/media/platform/rockchip/isp1/dev.c @@ -0,0 +1,1200 @@ @@ -906251,7 +906251,7 @@ index 000000000000..4e548f0ae81b +MODULE_LICENSE("Dual BSD/GPL"); diff --git a/drivers/media/platform/rockchip/isp1/dev.h b/drivers/media/platform/rockchip/isp1/dev.h new file mode 100755 -index 000000000000..980f7711302d +index 000000000..980f77113 --- /dev/null +++ b/drivers/media/platform/rockchip/isp1/dev.h @@ -0,0 +1,173 @@ @@ -906430,7 +906430,7 @@ index 000000000000..980f7711302d +#endif diff --git a/drivers/media/platform/rockchip/isp1/dmarx.c b/drivers/media/platform/rockchip/isp1/dmarx.c new file mode 100755 -index 000000000000..7ac08d249c0b +index 000000000..7ac08d249 --- /dev/null +++ b/drivers/media/platform/rockchip/isp1/dmarx.c @@ -0,0 +1,687 @@ @@ -907123,7 +907123,7 @@ index 000000000000..7ac08d249c0b +} diff --git a/drivers/media/platform/rockchip/isp1/dmarx.h b/drivers/media/platform/rockchip/isp1/dmarx.h new file mode 100755 -index 000000000000..abc3b39aa0b5 +index 000000000..abc3b39aa --- /dev/null +++ b/drivers/media/platform/rockchip/isp1/dmarx.h @@ -0,0 +1,29 @@ @@ -907158,7 +907158,7 @@ index 000000000000..abc3b39aa0b5 +#endif /* _RKISP1_DMARX_H */ diff --git a/drivers/media/platform/rockchip/isp1/isp_params.c b/drivers/media/platform/rockchip/isp1/isp_params.c new file mode 100755 -index 000000000000..5315aabf3957 +index 000000000..5315aabf3 --- /dev/null +++ b/drivers/media/platform/rockchip/isp1/isp_params.c @@ -0,0 +1,2655 @@ @@ -909819,7 +909819,7 @@ index 000000000000..5315aabf3957 +} diff --git a/drivers/media/platform/rockchip/isp1/isp_params.h b/drivers/media/platform/rockchip/isp1/isp_params.h new file mode 100755 -index 000000000000..ea707b7cf0e4 +index 000000000..ea707b7cf --- /dev/null +++ b/drivers/media/platform/rockchip/isp1/isp_params.h @@ -0,0 +1,151 @@ @@ -909976,7 +909976,7 @@ index 000000000000..ea707b7cf0e4 +#endif /* _RKISP1_ISP_H */ diff --git a/drivers/media/platform/rockchip/isp1/isp_stats.c b/drivers/media/platform/rockchip/isp1/isp_stats.c new file mode 100755 -index 000000000000..b682f6a4f9d1 +index 000000000..b682f6a4f --- /dev/null +++ b/drivers/media/platform/rockchip/isp1/isp_stats.c @@ -0,0 +1,684 @@ @@ -910666,7 +910666,7 @@ index 000000000000..b682f6a4f9d1 +} diff --git a/drivers/media/platform/rockchip/isp1/isp_stats.h b/drivers/media/platform/rockchip/isp1/isp_stats.h new file mode 100755 -index 000000000000..bdb4779b1f69 +index 000000000..bdb4779b1 --- /dev/null +++ b/drivers/media/platform/rockchip/isp1/isp_stats.h @@ -0,0 +1,112 @@ @@ -910784,7 +910784,7 @@ index 000000000000..bdb4779b1f69 +#endif /* _RKISP1_ISP_STATS_H */ diff --git a/drivers/media/platform/rockchip/isp1/regs.c b/drivers/media/platform/rockchip/isp1/regs.c new file mode 100755 -index 000000000000..82f6cd92475e +index 000000000..82f6cd924 --- /dev/null +++ b/drivers/media/platform/rockchip/isp1/regs.c @@ -0,0 +1,244 @@ @@ -911034,7 +911034,7 @@ index 000000000000..82f6cd92475e +} diff --git a/drivers/media/platform/rockchip/isp1/regs.h b/drivers/media/platform/rockchip/isp1/regs.h new file mode 100755 -index 000000000000..d31ef1b127f5 +index 000000000..d31ef1b12 --- /dev/null +++ b/drivers/media/platform/rockchip/isp1/regs.h @@ -0,0 +1,1994 @@ @@ -913034,7 +913034,7 @@ index 000000000000..d31ef1b127f5 +#endif /* _RKISP1_REGS_H */ diff --git a/drivers/media/platform/rockchip/isp1/rkisp1.c b/drivers/media/platform/rockchip/isp1/rkisp1.c new file mode 100755 -index 000000000000..07246bca865c +index 000000000..07246bca8 --- /dev/null +++ b/drivers/media/platform/rockchip/isp1/rkisp1.c @@ -0,0 +1,1873 @@ @@ -914913,7 +914913,7 @@ index 000000000000..07246bca865c + diff --git a/drivers/media/platform/rockchip/isp1/rkisp1.h b/drivers/media/platform/rockchip/isp1/rkisp1.h new file mode 100755 -index 000000000000..afafc2c0f78f +index 000000000..afafc2c0f --- /dev/null +++ b/drivers/media/platform/rockchip/isp1/rkisp1.h @@ -0,0 +1,163 @@ @@ -915082,7 +915082,7 @@ index 000000000000..afafc2c0f78f +#endif /* _RKISP1_H */ diff --git a/drivers/media/platform/rockchip/isp1/version.h b/drivers/media/platform/rockchip/isp1/version.h new file mode 100755 -index 000000000000..3bfb0c98fd6e +index 000000000..3bfb0c98f --- /dev/null +++ b/drivers/media/platform/rockchip/isp1/version.h @@ -0,0 +1,61 @@ @@ -915149,7 +915149,7 @@ index 000000000000..3bfb0c98fd6e +#endif diff --git a/drivers/media/platform/rockchip/ispp/Kconfig b/drivers/media/platform/rockchip/ispp/Kconfig new file mode 100755 -index 000000000000..7de4f688633b +index 000000000..7de4f6886 --- /dev/null +++ b/drivers/media/platform/rockchip/ispp/Kconfig @@ -0,0 +1,31 @@ @@ -915186,7 +915186,7 @@ index 000000000000..7de4f688633b +endif diff --git a/drivers/media/platform/rockchip/ispp/Makefile b/drivers/media/platform/rockchip/ispp/Makefile new file mode 100755 -index 000000000000..6148f70ff50a +index 000000000..6148f70ff --- /dev/null +++ b/drivers/media/platform/rockchip/ispp/Makefile @@ -0,0 +1,23 @@ @@ -915215,7 +915215,7 @@ index 000000000000..6148f70ff50a +endif diff --git a/drivers/media/platform/rockchip/ispp/common.c b/drivers/media/platform/rockchip/ispp/common.c new file mode 100755 -index 000000000000..91bd4cb96840 +index 000000000..91bd4cb96 --- /dev/null +++ b/drivers/media/platform/rockchip/ispp/common.c @@ -0,0 +1,595 @@ @@ -915816,7 +915816,7 @@ index 000000000000..91bd4cb96840 +} diff --git a/drivers/media/platform/rockchip/ispp/common.h b/drivers/media/platform/rockchip/ispp/common.h new file mode 100755 -index 000000000000..0d24cbb6c2d0 +index 000000000..0d24cbb6c --- /dev/null +++ b/drivers/media/platform/rockchip/ispp/common.h @@ -0,0 +1,145 @@ @@ -915967,7 +915967,7 @@ index 000000000000..0d24cbb6c2d0 +#endif diff --git a/drivers/media/platform/rockchip/ispp/dev.c b/drivers/media/platform/rockchip/ispp/dev.c new file mode 100755 -index 000000000000..54fa571f8de1 +index 000000000..54fa571f8 --- /dev/null +++ b/drivers/media/platform/rockchip/ispp/dev.c @@ -0,0 +1,385 @@ @@ -916358,7 +916358,7 @@ index 000000000000..54fa571f8de1 +MODULE_LICENSE("GPL v2"); diff --git a/drivers/media/platform/rockchip/ispp/dev.h b/drivers/media/platform/rockchip/ispp/dev.h new file mode 100755 -index 000000000000..32a6736bbb1c +index 000000000..32a6736bb --- /dev/null +++ b/drivers/media/platform/rockchip/ispp/dev.h @@ -0,0 +1,60 @@ @@ -916424,7 +916424,7 @@ index 000000000000..32a6736bbb1c +#endif diff --git a/drivers/media/platform/rockchip/ispp/fec.c b/drivers/media/platform/rockchip/ispp/fec.c new file mode 100755 -index 000000000000..a742dc18b8c7 +index 000000000..a742dc18b --- /dev/null +++ b/drivers/media/platform/rockchip/ispp/fec.c @@ -0,0 +1,480 @@ @@ -916910,7 +916910,7 @@ index 000000000000..a742dc18b8c7 +} diff --git a/drivers/media/platform/rockchip/ispp/fec.h b/drivers/media/platform/rockchip/ispp/fec.h new file mode 100755 -index 000000000000..b89615a0747d +index 000000000..b89615a07 --- /dev/null +++ b/drivers/media/platform/rockchip/ispp/fec.h @@ -0,0 +1,27 @@ @@ -916943,7 +916943,7 @@ index 000000000000..b89615a0747d +#endif diff --git a/drivers/media/platform/rockchip/ispp/hw.c b/drivers/media/platform/rockchip/ispp/hw.c new file mode 100755 -index 000000000000..2d0466070fd6 +index 000000000..2d0466070 --- /dev/null +++ b/drivers/media/platform/rockchip/ispp/hw.c @@ -0,0 +1,510 @@ @@ -917459,7 +917459,7 @@ index 000000000000..2d0466070fd6 +#endif diff --git a/drivers/media/platform/rockchip/ispp/hw.h b/drivers/media/platform/rockchip/ispp/hw.h new file mode 100755 -index 000000000000..8eb2585ecb71 +index 000000000..8eb2585ec --- /dev/null +++ b/drivers/media/platform/rockchip/ispp/hw.h @@ -0,0 +1,67 @@ @@ -917532,7 +917532,7 @@ index 000000000000..8eb2585ecb71 +#endif diff --git a/drivers/media/platform/rockchip/ispp/ispp.c b/drivers/media/platform/rockchip/ispp/ispp.c new file mode 100755 -index 000000000000..e1efba145533 +index 000000000..e1efba145 --- /dev/null +++ b/drivers/media/platform/rockchip/ispp/ispp.c @@ -0,0 +1,590 @@ @@ -918128,7 +918128,7 @@ index 000000000000..e1efba145533 +} diff --git a/drivers/media/platform/rockchip/ispp/ispp.h b/drivers/media/platform/rockchip/ispp/ispp.h new file mode 100755 -index 000000000000..baa07a09352c +index 000000000..baa07a093 --- /dev/null +++ b/drivers/media/platform/rockchip/ispp/ispp.h @@ -0,0 +1,50 @@ @@ -918184,7 +918184,7 @@ index 000000000000..baa07a09352c +#endif diff --git a/drivers/media/platform/rockchip/ispp/params.c b/drivers/media/platform/rockchip/ispp/params.c new file mode 100755 -index 000000000000..9d82b959b3c9 +index 000000000..9d82b959b --- /dev/null +++ b/drivers/media/platform/rockchip/ispp/params.c @@ -0,0 +1,427 @@ @@ -918617,7 +918617,7 @@ index 000000000000..9d82b959b3c9 +} diff --git a/drivers/media/platform/rockchip/ispp/params.h b/drivers/media/platform/rockchip/ispp/params.h new file mode 100755 -index 000000000000..a5083891ac1f +index 000000000..a5083891a --- /dev/null +++ b/drivers/media/platform/rockchip/ispp/params.h @@ -0,0 +1,69 @@ @@ -918692,7 +918692,7 @@ index 000000000000..a5083891ac1f +#endif diff --git a/drivers/media/platform/rockchip/ispp/params_v10.c b/drivers/media/platform/rockchip/ispp/params_v10.c new file mode 100755 -index 000000000000..9430d0b84797 +index 000000000..9430d0b84 --- /dev/null +++ b/drivers/media/platform/rockchip/ispp/params_v10.c @@ -0,0 +1,739 @@ @@ -919437,7 +919437,7 @@ index 000000000000..9430d0b84797 +} diff --git a/drivers/media/platform/rockchip/ispp/params_v20.c b/drivers/media/platform/rockchip/ispp/params_v20.c new file mode 100755 -index 000000000000..03c944c8af0d +index 000000000..03c944c8a --- /dev/null +++ b/drivers/media/platform/rockchip/ispp/params_v20.c @@ -0,0 +1,209 @@ @@ -919652,7 +919652,7 @@ index 000000000000..03c944c8af0d +} diff --git a/drivers/media/platform/rockchip/ispp/procfs.c b/drivers/media/platform/rockchip/ispp/procfs.c new file mode 100755 -index 000000000000..9cee3fc71ce1 +index 000000000..9cee3fc71 --- /dev/null +++ b/drivers/media/platform/rockchip/ispp/procfs.c @@ -0,0 +1,143 @@ @@ -919801,7 +919801,7 @@ index 000000000000..9cee3fc71ce1 +#endif /* CONFIG_PROC_FS */ diff --git a/drivers/media/platform/rockchip/ispp/procfs.h b/drivers/media/platform/rockchip/ispp/procfs.h new file mode 100755 -index 000000000000..21ea0c471b58 +index 000000000..21ea0c471 --- /dev/null +++ b/drivers/media/platform/rockchip/ispp/procfs.h @@ -0,0 +1,21 @@ @@ -919828,7 +919828,7 @@ index 000000000000..21ea0c471b58 +#endif diff --git a/drivers/media/platform/rockchip/ispp/regs.h b/drivers/media/platform/rockchip/ispp/regs.h new file mode 100755 -index 000000000000..bc9f66766e0c +index 000000000..bc9f66766 --- /dev/null +++ b/drivers/media/platform/rockchip/ispp/regs.h @@ -0,0 +1,523 @@ @@ -920357,7 +920357,7 @@ index 000000000000..bc9f66766e0c +#endif /* _RKISPP_REGS_H */ diff --git a/drivers/media/platform/rockchip/ispp/stats.c b/drivers/media/platform/rockchip/ispp/stats.c new file mode 100755 -index 000000000000..df011710b1aa +index 000000000..df011710b --- /dev/null +++ b/drivers/media/platform/rockchip/ispp/stats.c @@ -0,0 +1,388 @@ @@ -920751,7 +920751,7 @@ index 000000000000..df011710b1aa + diff --git a/drivers/media/platform/rockchip/ispp/stats.h b/drivers/media/platform/rockchip/ispp/stats.h new file mode 100755 -index 000000000000..e4d43bf25bde +index 000000000..e4d43bf25 --- /dev/null +++ b/drivers/media/platform/rockchip/ispp/stats.h @@ -0,0 +1,53 @@ @@ -920810,7 +920810,7 @@ index 000000000000..e4d43bf25bde +#endif /* _RKISPP_STATS_H */ diff --git a/drivers/media/platform/rockchip/ispp/stream.c b/drivers/media/platform/rockchip/ispp/stream.c new file mode 100755 -index 000000000000..a2f4a96bdec2 +index 000000000..a2f4a96bd --- /dev/null +++ b/drivers/media/platform/rockchip/ispp/stream.c @@ -0,0 +1,2016 @@ @@ -922832,7 +922832,7 @@ index 000000000000..a2f4a96bdec2 +} diff --git a/drivers/media/platform/rockchip/ispp/stream.h b/drivers/media/platform/rockchip/ispp/stream.h new file mode 100755 -index 000000000000..8ffde026109d +index 000000000..8ffde0261 --- /dev/null +++ b/drivers/media/platform/rockchip/ispp/stream.h @@ -0,0 +1,280 @@ @@ -923118,7 +923118,7 @@ index 000000000000..8ffde026109d +#endif diff --git a/drivers/media/platform/rockchip/ispp/stream_v10.c b/drivers/media/platform/rockchip/ispp/stream_v10.c new file mode 100755 -index 000000000000..9a6ed6d89fda +index 000000000..9a6ed6d89 --- /dev/null +++ b/drivers/media/platform/rockchip/ispp/stream_v10.c @@ -0,0 +1,1733 @@ @@ -924857,7 +924857,7 @@ index 000000000000..9a6ed6d89fda +} diff --git a/drivers/media/platform/rockchip/ispp/stream_v20.c b/drivers/media/platform/rockchip/ispp/stream_v20.c new file mode 100755 -index 000000000000..728a9c0afdf8 +index 000000000..728a9c0af --- /dev/null +++ b/drivers/media/platform/rockchip/ispp/stream_v20.c @@ -0,0 +1,463 @@ @@ -925326,7 +925326,7 @@ index 000000000000..728a9c0afdf8 +} diff --git a/drivers/media/platform/rockchip/ispp/version.h b/drivers/media/platform/rockchip/ispp/version.h new file mode 100755 -index 000000000000..b7f01737aa92 +index 000000000..b7f01737a --- /dev/null +++ b/drivers/media/platform/rockchip/ispp/version.h @@ -0,0 +1,138 @@ @@ -925469,7 +925469,7 @@ index 000000000000..b7f01737aa92 + +#endif diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c -index 282f3d2388cc..5f3f90123123 100644 +index 282f3d238..5f3f90123 100644 --- a/drivers/media/usb/uvc/uvc_driver.c +++ b/drivers/media/usb/uvc/uvc_driver.c @@ -12,6 +12,7 @@ @@ -925494,7 +925494,7 @@ index 282f3d2388cc..5f3f90123123 100644 error: diff --git a/drivers/media/v4l2-core/v4l2-async.c b/drivers/media/v4l2-core/v4l2-async.c -index 33babe6e8b3a..1b5d4d99ec68 100644 +index 33babe6e8..1b5d4d99e 100644 --- a/drivers/media/v4l2-core/v4l2-async.c +++ b/drivers/media/v4l2-core/v4l2-async.c @@ -555,6 +555,60 @@ int v4l2_async_notifier_register(struct v4l2_device *v4l2_dev, @@ -925559,7 +925559,7 @@ index 33babe6e8b3a..1b5d4d99ec68 100644 struct v4l2_async_notifier *notifier) { diff --git a/drivers/mfd/rk808.c b/drivers/mfd/rk808.c -index d109b9f14407..fd755d98af84 100644 +index d109b9f14..fd755d98a 100644 --- a/drivers/mfd/rk808.c +++ b/drivers/mfd/rk808.c @@ -2,7 +2,7 @@ @@ -926795,7 +926795,7 @@ index d109b9f14407..fd755d98af84 100644 MODULE_LICENSE("GPL"); MODULE_AUTHOR("Chris Zhong "); diff --git a/drivers/mmc/core/block.c b/drivers/mmc/core/block.c -index 94caee49da99..3ade0e0f323f 100644 +index 94caee49d..3ade0e0f3 100644 --- a/drivers/mmc/core/block.c +++ b/drivers/mmc/core/block.c @@ -2893,6 +2893,9 @@ static void mmc_blk_remove_debugfs(struct mmc_card *card, @@ -926809,7 +926809,7 @@ index 94caee49da99..3ade0e0f323f 100644 { struct mmc_blk_data *md, *part_md; diff --git a/drivers/mmc/core/block.h b/drivers/mmc/core/block.h -index 31153f656f41..b71b3ec148f3 100644 +index 31153f656..b71b3ec14 100644 --- a/drivers/mmc/core/block.h +++ b/drivers/mmc/core/block.h @@ -17,4 +17,5 @@ struct work_struct; @@ -926819,7 +926819,7 @@ index 31153f656f41..b71b3ec148f3 100644 +extern struct mmc_card *this_card; #endif diff --git a/drivers/mmc/core/core.h b/drivers/mmc/core/core.h -index db3c9c68875d..842b679251f8 100644 +index db3c9c688..842b67925 100644 --- a/drivers/mmc/core/core.h +++ b/drivers/mmc/core/core.h @@ -80,6 +80,8 @@ int mmc_attach_mmc(struct mmc_host *host); @@ -926832,7 +926832,7 @@ index db3c9c68875d..842b679251f8 100644 extern bool use_spi_crc; diff --git a/drivers/mmc/core/host.c b/drivers/mmc/core/host.c -index 58112999a69a..f4d000a16637 100644 +index 58112999a..f4d000a16 100644 --- a/drivers/mmc/core/host.c +++ b/drivers/mmc/core/host.c @@ -504,6 +504,9 @@ struct mmc_host *mmc_alloc_host(int extra, struct device *dev) @@ -926892,7 +926892,7 @@ index 58112999a69a..f4d000a16637 100644 +} +EXPORT_SYMBOL(mmc_host_rescan); diff --git a/drivers/mmc/core/sdio.c b/drivers/mmc/core/sdio.c -index 1b0853a82189..0482a37a0d2f 100644 +index 1b0853a82..0482a37a0 100644 --- a/drivers/mmc/core/sdio.c +++ b/drivers/mmc/core/sdio.c @@ -3,9 +3,15 @@ @@ -927603,7 +927603,7 @@ index 1b0853a82189..0482a37a0d2f 100644 +} +EXPORT_SYMBOL(sdio_reset_comm); diff --git a/drivers/mmc/host/Makefile b/drivers/mmc/host/Makefile -index 451c25fc2c69..6dfb791fa621 100644 +index 451c25fc2..6dfb791fa 100644 --- a/drivers/mmc/host/Makefile +++ b/drivers/mmc/host/Makefile @@ -61,6 +61,7 @@ obj-$(CONFIG_MMC_DW_HI3798CV200) += dw_mmc-hi3798cv200.o @@ -927615,7 +927615,7 @@ index 451c25fc2c69..6dfb791fa621 100644 obj-$(CONFIG_MMC_SH_MMCIF) += sh_mmcif.o obj-$(CONFIG_MMC_JZ4740) += jz4740_mmc.o diff --git a/drivers/mmc/host/dw_mmc-rockchip.c b/drivers/mmc/host/dw_mmc-rockchip.c -index 753502ce3c85..ac2ef5ea0c8d 100644 +index 753502ce3..ac2ef5ea0 100644 --- a/drivers/mmc/host/dw_mmc-rockchip.c +++ b/drivers/mmc/host/dw_mmc-rockchip.c @@ -22,6 +22,9 @@ struct dw_mci_rockchip_priv_data { @@ -927792,7 +927792,7 @@ index 753502ce3c85..ac2ef5ea0c8d 100644 return 0; } diff --git a/drivers/mmc/host/dw_mmc.h b/drivers/mmc/host/dw_mmc.h -index da5923a92e60..0b53484e9306 100644 +index da5923a92..0b53484e9 100644 --- a/drivers/mmc/host/dw_mmc.h +++ b/drivers/mmc/host/dw_mmc.h @@ -230,6 +230,8 @@ struct dw_mci { @@ -927806,7 +927806,7 @@ index da5923a92e60..0b53484e9306 100644 /* DMA ops for Internal/External DMAC interface */ diff --git a/drivers/mmc/host/rk_sdmmc.h b/drivers/mmc/host/rk_sdmmc.h new file mode 100755 -index 000000000000..cad989246002 +index 000000000..cad989246 --- /dev/null +++ b/drivers/mmc/host/rk_sdmmc.h @@ -0,0 +1,387 @@ @@ -928199,7 +928199,7 @@ index 000000000000..cad989246002 +#endif /* _DW_MMC_H_ */ diff --git a/drivers/mmc/host/rk_sdmmc_ops.c b/drivers/mmc/host/rk_sdmmc_ops.c new file mode 100755 -index 000000000000..96f20d2dcfc7 +index 000000000..96f20d2dc --- /dev/null +++ b/drivers/mmc/host/rk_sdmmc_ops.c @@ -0,0 +1,194 @@ @@ -928399,7 +928399,7 @@ index 000000000000..96f20d2dcfc7 +MODULE_LICENSE("GPL"); diff --git a/drivers/mmc/host/rk_sdmmc_ops.h b/drivers/mmc/host/rk_sdmmc_ops.h new file mode 100755 -index 000000000000..8261d69f561d +index 000000000..8261d69f5 --- /dev/null +++ b/drivers/mmc/host/rk_sdmmc_ops.h @@ -0,0 +1,11 @@ @@ -928415,7 +928415,7 @@ index 000000000000..8261d69f561d + +#endif diff --git a/drivers/mmc/host/sdhci-of-dwcmshc.c b/drivers/mmc/host/sdhci-of-dwcmshc.c -index 59d8d96ce206..f344bd300018 100644 +index 59d8d96ce..f344bd300 100644 --- a/drivers/mmc/host/sdhci-of-dwcmshc.c +++ b/drivers/mmc/host/sdhci-of-dwcmshc.c @@ -9,9 +9,12 @@ @@ -928771,7 +928771,7 @@ index 59d8d96ce206..f344bd300018 100644 MODULE_DEVICE_TABLE(of, sdhci_dwcmshc_dt_ids); diff --git a/drivers/mtd/nand/raw/Kconfig b/drivers/mtd/nand/raw/Kconfig -index 6c46f25b57e2..2cc533e4e239 100644 +index 6c46f25b5..2cc533e4e 100644 --- a/drivers/mtd/nand/raw/Kconfig +++ b/drivers/mtd/nand/raw/Kconfig @@ -462,6 +462,18 @@ config MTD_NAND_ARASAN @@ -928794,7 +928794,7 @@ index 6c46f25b57e2..2cc533e4e239 100644 config MTD_SM_COMMON diff --git a/drivers/mtd/nand/raw/Makefile b/drivers/mtd/nand/raw/Makefile -index 2930f5b9015d..960c9be25204 100644 +index 2930f5b90..960c9be25 100644 --- a/drivers/mtd/nand/raw/Makefile +++ b/drivers/mtd/nand/raw/Makefile @@ -58,6 +58,7 @@ obj-$(CONFIG_MTD_NAND_STM32_FMC2) += stm32_fmc2_nand.o @@ -928807,7 +928807,7 @@ index 2930f5b9015d..960c9be25204 100644 nand-objs += nand_onfi.o diff --git a/drivers/mtd/nand/raw/rockchip-nand-controller.c b/drivers/mtd/nand/raw/rockchip-nand-controller.c new file mode 100644 -index 000000000000..796b678cb108 +index 000000000..796b678cb --- /dev/null +++ b/drivers/mtd/nand/raw/rockchip-nand-controller.c @@ -0,0 +1,1495 @@ @@ -930307,7 +930307,7 @@ index 000000000000..796b678cb108 +MODULE_DESCRIPTION("Rockchip Nand Flash Controller Driver"); +MODULE_ALIAS("platform:rockchip-nand-controller"); diff --git a/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_utils.c b/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_utils.c -index da1d185f6d22..404cbf60d3f2 100644 +index da1d185f6..404cbf60d 100644 --- a/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_utils.c +++ b/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_utils.c @@ -559,11 +559,6 @@ int hw_atl_utils_fw_rpc_wait(struct aq_hw_s *self, @@ -930335,7 +930335,7 @@ index da1d185f6d22..404cbf60d3f2 100644 hw_atl_utils_fw_downld_dwords(self, self->rpc_addr, diff --git a/drivers/net/ethernet/stmicro/stmmac/Makefile b/drivers/net/ethernet/stmicro/stmmac/Makefile -index 24e6145d4eae..be661832cef8 100644 +index 24e6145d4..be661832c 100644 --- a/drivers/net/ethernet/stmicro/stmmac/Makefile +++ b/drivers/net/ethernet/stmicro/stmmac/Makefile @@ -19,7 +19,8 @@ obj-$(CONFIG_DWMAC_MEDIATEK) += dwmac-mediatek.o @@ -930350,7 +930350,7 @@ index 24e6145d4eae..be661832cef8 100644 obj-$(CONFIG_DWMAC_STM32) += dwmac-stm32.o diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-rk-tool.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-rk-tool.c new file mode 100755 -index 000000000000..541788f9e2c8 +index 000000000..541788f9e --- /dev/null +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-rk-tool.c @@ -0,0 +1,1613 @@ @@ -931969,7 +931969,7 @@ index 000000000000..541788f9e2c8 +} diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-rk-tool.h b/drivers/net/ethernet/stmicro/stmmac/dwmac-rk-tool.h new file mode 100755 -index 000000000000..d71989b0fc74 +index 000000000..d71989b0f --- /dev/null +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-rk-tool.h @@ -0,0 +1,25 @@ @@ -931999,7 +931999,7 @@ index 000000000000..d71989b0fc74 +#endif /* __DWMAC_RK_TOOL_H__ */ + diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c -index 6ef30252bfe0..bb0c0e44b5cb 100644 +index 6ef30252b..bb0c0e44b 100644 --- a/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c @@ -11,6 +11,7 @@ @@ -933218,7 +933218,7 @@ index 6ef30252bfe0..bb0c0e44b5cb 100644 }; MODULE_DEVICE_TABLE(of, rk_gmac_dwmac_match); diff --git a/drivers/net/wireless/Kconfig b/drivers/net/wireless/Kconfig -index 170a64e67709..46f5cc40788a 100644 +index 170a64e67..46f5cc407 100644 --- a/drivers/net/wireless/Kconfig +++ b/drivers/net/wireless/Kconfig @@ -48,6 +48,7 @@ source "drivers/net/wireless/st/Kconfig" @@ -933230,7 +933230,7 @@ index 170a64e67709..46f5cc40788a 100644 config PCMCIA_RAYCS tristate "Aviator/Raytheon 2.4GHz wireless support" diff --git a/drivers/net/wireless/Makefile b/drivers/net/wireless/Makefile -index 80b324499786..5671364ae98d 100644 +index 80b324499..5671364ae 100644 --- a/drivers/net/wireless/Makefile +++ b/drivers/net/wireless/Makefile @@ -30,3 +30,4 @@ obj-$(CONFIG_USB_NET_RNDIS_WLAN) += rndis_wlan.o @@ -933239,7 +933239,7 @@ index 80b324499786..5671364ae98d 100644 obj-$(CONFIG_VIRT_WIFI) += virt_wifi.o +obj-$(CONFIG_WL_ROCKCHIP) += rockchip_wlan/ diff --git a/drivers/net/wireless/marvell/mwifiex/usb.c b/drivers/net/wireless/marvell/mwifiex/usb.c -index 6d81e87861ca..426e39d4ccf0 100644 +index 6d81e8786..426e39d4c 100644 --- a/drivers/net/wireless/marvell/mwifiex/usb.c +++ b/drivers/net/wireless/marvell/mwifiex/usb.c @@ -130,8 +130,7 @@ static int mwifiex_usb_recv(struct mwifiex_adapter *adapter, @@ -933254,7 +933254,7 @@ index 6d81e87861ca..426e39d4ccf0 100644 case MWIFIEX_USB_EP_DATA: diff --git a/drivers/net/wireless/rockchip_wlan/Kconfig b/drivers/net/wireless/rockchip_wlan/Kconfig new file mode 100755 -index 000000000000..d77741df5cc0 +index 000000000..d77741df5 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/Kconfig @@ -0,0 +1,39 @@ @@ -933299,7 +933299,7 @@ index 000000000000..d77741df5cc0 +endif # WL_ROCKCHIP diff --git a/drivers/net/wireless/rockchip_wlan/Makefile b/drivers/net/wireless/rockchip_wlan/Makefile new file mode 100755 -index 000000000000..8279a393719f +index 000000000..8279a3937 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/Makefile @@ -0,0 +1,3 @@ @@ -933308,7 +933308,7 @@ index 000000000000..8279a393719f +obj-$(CONFIG_WL_ROCKCHIP) += rkwifi/rk_wifi_config.o diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/Kconfig b/drivers/net/wireless/rockchip_wlan/rkwifi/Kconfig new file mode 100755 -index 000000000000..2ec5138b79a7 +index 000000000..2ec5138b7 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/Kconfig @@ -0,0 +1,33 @@ @@ -933347,7 +933347,7 @@ index 000000000000..2ec5138b79a7 + default to add wlan1 interface diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/Makefile b/drivers/net/wireless/rockchip_wlan/rkwifi/Makefile new file mode 100755 -index 000000000000..e4e2c6964a6b +index 000000000..e4e2c6964 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/Makefile @@ -0,0 +1,10 @@ @@ -933363,7 +933363,7 @@ index 000000000000..e4e2c6964a6b + find . -name '*.o*' -exec rm -f {} \; diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/Kconfig b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/Kconfig new file mode 100755 -index 000000000000..3e6e78888be2 +index 000000000..3e6e78888 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/Kconfig @@ -0,0 +1,59 @@ @@ -933428,7 +933428,7 @@ index 000000000000..3e6e78888be2 +endchoice diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/Makefile b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/Makefile new file mode 100755 -index 000000000000..1d9f6d0c09ae +index 000000000..1d9f6d0c0 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/Makefile @@ -0,0 +1,258 @@ @@ -933692,7 +933692,7 @@ index 000000000000..1d9f6d0c09ae +EXTRA_CFLAGS += -Wno-non-literal-null-conversion diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/aiutils.c b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/aiutils.c new file mode 100755 -index 000000000000..cc0b854d34d5 +index 000000000..cc0b854d3 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/aiutils.c @@ -0,0 +1,2099 @@ @@ -935797,7 +935797,7 @@ index 000000000000..cc0b854d34d5 +} diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/bcm_app_utils.c b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/bcm_app_utils.c new file mode 100755 -index 000000000000..76490b575fae +index 000000000..76490b575 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/bcm_app_utils.c @@ -0,0 +1,1033 @@ @@ -936836,7 +936836,7 @@ index 000000000000..76490b575fae +} diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/bcmbloom.c b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/bcmbloom.c new file mode 100755 -index 000000000000..80eb786f035a +index 000000000..80eb786f0 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/bcmbloom.c @@ -0,0 +1,243 @@ @@ -937085,7 +937085,7 @@ index 000000000000..80eb786f035a +} diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/bcmevent.c b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/bcmevent.c new file mode 100755 -index 000000000000..40bdb4bfda4f +index 000000000..40bdb4bfd --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/bcmevent.c @@ -0,0 +1,396 @@ @@ -937487,7 +937487,7 @@ index 000000000000..40bdb4bfda4f +} diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/bcmsdh.c b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/bcmsdh.c new file mode 100755 -index 000000000000..b59edd7540ca +index 000000000..b59edd754 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/bcmsdh.c @@ -0,0 +1,893 @@ @@ -938386,7 +938386,7 @@ index 000000000000..b59edd7540ca +#endif diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/bcmsdh_linux.c b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/bcmsdh_linux.c new file mode 100755 -index 000000000000..84cc71992635 +index 000000000..84cc71992 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/bcmsdh_linux.c @@ -0,0 +1,524 @@ @@ -938916,7 +938916,7 @@ index 000000000000..84cc71992635 +#endif /* BCMSDH_MODULE */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/bcmsdh_sdmmc.c b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/bcmsdh_sdmmc.c new file mode 100755 -index 000000000000..01f7fa23b2b3 +index 000000000..01f7fa23b --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/bcmsdh_sdmmc.c @@ -0,0 +1,1801 @@ @@ -940723,7 +940723,7 @@ index 000000000000..01f7fa23b2b3 +} diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/bcmsdh_sdmmc_linux.c b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/bcmsdh_sdmmc_linux.c new file mode 100755 -index 000000000000..a2d34724f6c4 +index 000000000..a2d34724f --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/bcmsdh_sdmmc_linux.c @@ -0,0 +1,381 @@ @@ -941110,7 +941110,7 @@ index 000000000000..a2d34724f6c4 +} diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/bcmsdspi_linux.c b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/bcmsdspi_linux.c new file mode 100755 -index 000000000000..86d4cb9e3575 +index 000000000..86d4cb9e3 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/bcmsdspi_linux.c @@ -0,0 +1,438 @@ @@ -941554,7 +941554,7 @@ index 000000000000..86d4cb9e3575 +#endif /* !BCMSPI_ANDROID */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/bcmspibrcm.c b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/bcmspibrcm.c new file mode 100755 -index 000000000000..c0431638b995 +index 000000000..c0431638b --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/bcmspibrcm.c @@ -0,0 +1,1800 @@ @@ -943360,7 +943360,7 @@ index 000000000000..c0431638b995 +} diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/bcmstdlib_s.c b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/bcmstdlib_s.c new file mode 100755 -index 000000000000..bc27ba560e1d +index 000000000..bc27ba560 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/bcmstdlib_s.c @@ -0,0 +1,307 @@ @@ -943673,7 +943673,7 @@ index 000000000000..bc27ba560e1d +} diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/bcmutils.c b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/bcmutils.c new file mode 100755 -index 000000000000..c9b01bd66820 +index 000000000..c9b01bd66 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/bcmutils.c @@ -0,0 +1,4379 @@ @@ -948058,7 +948058,7 @@ index 000000000000..c9b01bd66820 +} diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/bcmwifi_channels.c b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/bcmwifi_channels.c new file mode 100755 -index 000000000000..fc916db9cb61 +index 000000000..fc916db9c --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/bcmwifi_channels.c @@ -0,0 +1,1494 @@ @@ -949558,7 +949558,7 @@ index 000000000000..fc916db9cb61 +} diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/bcmwifi_channels.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/bcmwifi_channels.h new file mode 100755 -index 000000000000..ad3a6a4ae693 +index 000000000..ad3a6a4ae --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/bcmwifi_channels.h @@ -0,0 +1,816 @@ @@ -950380,7 +950380,7 @@ index 000000000000..ad3a6a4ae693 +#endif /* _bcmwifi_channels_h_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/bcmwifi_rates.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/bcmwifi_rates.h new file mode 100755 -index 000000000000..196ff0fe0eff +index 000000000..196ff0fe0 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/bcmwifi_rates.h @@ -0,0 +1,832 @@ @@ -951218,7 +951218,7 @@ index 000000000000..196ff0fe0eff +#endif /* _bcmwifi_rates_h_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/bcmwifi_rspec.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/bcmwifi_rspec.h new file mode 100755 -index 000000000000..5c3d4a674814 +index 000000000..5c3d4a674 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/bcmwifi_rspec.h @@ -0,0 +1,213 @@ @@ -951437,7 +951437,7 @@ index 000000000000..5c3d4a674814 +#endif /* _bcmwifi_rspec_h_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/bcmxtlv.c b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/bcmxtlv.c new file mode 100755 -index 000000000000..51d0f5aaf623 +index 000000000..51d0f5aaf --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/bcmxtlv.c @@ -0,0 +1,623 @@ @@ -952066,7 +952066,7 @@ index 000000000000..51d0f5aaf623 +} diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dbus.c b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dbus.c new file mode 100755 -index 000000000000..d8d151631705 +index 000000000..d8d151631 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dbus.c @@ -0,0 +1,2903 @@ @@ -954975,7 +954975,7 @@ index 000000000000..d8d151631705 +#endif /* #ifdef LINUX_EXTERNAL_MODULE_DBUS */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dbus_usb.c b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dbus_usb.c new file mode 100755 -index 000000000000..3be28b2da9d4 +index 000000000..3be28b2da --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dbus_usb.c @@ -0,0 +1,1173 @@ @@ -956154,7 +956154,7 @@ index 000000000000..3be28b2da9d4 +} /* dbus_bus_fw_get */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dbus_usb_linux.c b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dbus_usb_linux.c new file mode 100755 -index 000000000000..2d999b12bc94 +index 000000000..2d999b12b --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dbus_usb_linux.c @@ -0,0 +1,3404 @@ @@ -959564,7 +959564,7 @@ index 000000000000..2d999b12bc94 +#endif /* BCMUSBDEV_COMPOSITE */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd.h new file mode 100755 -index 000000000000..427e96ea33bb +index 000000000..427e96ea3 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd.h @@ -0,0 +1,3433 @@ @@ -963003,7 +963003,7 @@ index 000000000000..427e96ea33bb +#endif /* _dhd_h_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_bus.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_bus.h new file mode 100755 -index 000000000000..c5b07cf493d9 +index 000000000..c5b07cf49 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_bus.h @@ -0,0 +1,357 @@ @@ -963366,7 +963366,7 @@ index 000000000000..c5b07cf493d9 +#endif /* _dhd_bus_h_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_buzzz.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_buzzz.h new file mode 100755 -index 000000000000..342cc004d25a +index 000000000..342cc004d --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_buzzz.h @@ -0,0 +1,38 @@ @@ -963410,7 +963410,7 @@ index 000000000000..342cc004d25a +#endif /* _DHD_BUZZZ_H_INCLUDED_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_ccode.c b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_ccode.c new file mode 100755 -index 000000000000..fe9a826325e6 +index 000000000..fe9a82632 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_ccode.c @@ -0,0 +1,274 @@ @@ -963690,7 +963690,7 @@ index 000000000000..fe9a826325e6 +#endif diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_cdc.c b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_cdc.c new file mode 100755 -index 000000000000..44cd1cbf24e6 +index 000000000..44cd1cbf2 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_cdc.c @@ -0,0 +1,981 @@ @@ -964677,7 +964677,7 @@ index 000000000000..44cd1cbf24e6 +} diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_cfg80211.c b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_cfg80211.c new file mode 100755 -index 000000000000..cc35d086068a +index 000000000..cc35d0860 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_cfg80211.c @@ -0,0 +1,305 @@ @@ -964988,7 +964988,7 @@ index 000000000000..cc35d086068a +} diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_cfg80211.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_cfg80211.h new file mode 100755 -index 000000000000..88c2e0a16bcc +index 000000000..88c2e0a16 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_cfg80211.h @@ -0,0 +1,55 @@ @@ -965049,7 +965049,7 @@ index 000000000000..88c2e0a16bcc +#endif /* __DHD_CFG80211__ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_common.c b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_common.c new file mode 100755 -index 000000000000..df11fa183e60 +index 000000000..df11fa183 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_common.c @@ -0,0 +1,7496 @@ @@ -972551,7 +972551,7 @@ index 000000000000..df11fa183e60 +#endif /* DISABLE_HE_ENAB || CUSTOM_CONTROL_HE_ENAB */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_config.c b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_config.c new file mode 100755 -index 000000000000..c4713ded8a23 +index 000000000..c4713ded8 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_config.c @@ -0,0 +1,4730 @@ @@ -977287,7 +977287,7 @@ index 000000000000..c4713ded8a23 +} diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_config.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_config.h new file mode 100755 -index 000000000000..6af9c7b18013 +index 000000000..6af9c7b18 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_config.h @@ -0,0 +1,384 @@ @@ -977677,7 +977677,7 @@ index 000000000000..6af9c7b18013 +#endif /* _dhd_config_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_csi.c b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_csi.c new file mode 100755 -index 000000000000..dd1a0681bf4f +index 000000000..dd1a0681b --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_csi.c @@ -0,0 +1,220 @@ @@ -977903,7 +977903,7 @@ index 000000000000..dd1a0681bf4f + diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_csi.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_csi.h new file mode 100755 -index 000000000000..bcc712c2999b +index 000000000..bcc712c29 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_csi.h @@ -0,0 +1,77 @@ @@ -977986,7 +977986,7 @@ index 000000000000..bcc712c2999b + diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_custom_gpio.c b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_custom_gpio.c new file mode 100755 -index 000000000000..8553e74562dc +index 000000000..8553e7456 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_custom_gpio.c @@ -0,0 +1,279 @@ @@ -978271,7 +978271,7 @@ index 000000000000..8553e74562dc +} diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_custom_hikey.c b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_custom_hikey.c new file mode 100755 -index 000000000000..8acb153a45e3 +index 000000000..8acb153a4 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_custom_hikey.c @@ -0,0 +1,294 @@ @@ -978571,7 +978571,7 @@ index 000000000000..8acb153a45e3 +#endif /* BOARD_HIKEY_MODULAR */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_custom_memprealloc.c b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_custom_memprealloc.c new file mode 100755 -index 000000000000..1c0f3ca65e7a +index 000000000..1c0f3ca65 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_custom_memprealloc.c @@ -0,0 +1,562 @@ @@ -979139,7 +979139,7 @@ index 000000000000..1c0f3ca65e7a +#endif /* CONFIG_BROADCOM_WIFI_RESERVED_MEM */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_dbg.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_dbg.h new file mode 100755 -index 000000000000..4bc2511c6da2 +index 000000000..4bc2511c6 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_dbg.h @@ -0,0 +1,367 @@ @@ -979512,7 +979512,7 @@ index 000000000000..4bc2511c6da2 +#endif /* _dhd_dbg_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_dbg_ring.c b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_dbg_ring.c new file mode 100755 -index 000000000000..c909431c0b46 +index 000000000..c909431c0 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_dbg_ring.c @@ -0,0 +1,426 @@ @@ -979944,7 +979944,7 @@ index 000000000000..c909431c0b46 +} diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_dbg_ring.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_dbg_ring.h new file mode 100755 -index 000000000000..c6deb98f2ace +index 000000000..c6deb98f2 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_dbg_ring.h @@ -0,0 +1,141 @@ @@ -980091,7 +980091,7 @@ index 000000000000..c6deb98f2ace +#endif /* __DHD_DBG_RING_H__ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_debug.c b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_debug.c new file mode 100755 -index 000000000000..a6066289c543 +index 000000000..a6066289c --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_debug.c @@ -0,0 +1,2411 @@ @@ -982508,7 +982508,7 @@ index 000000000000..a6066289c543 +} diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_debug.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_debug.h new file mode 100755 -index 000000000000..008c45316f1c +index 000000000..008c45316 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_debug.h @@ -0,0 +1,853 @@ @@ -983367,7 +983367,7 @@ index 000000000000..008c45316f1c +#endif /* _dhd_debug_h_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_debug_linux.c b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_debug_linux.c new file mode 100755 -index 000000000000..2f33db421877 +index 000000000..2f33db421 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_debug_linux.c @@ -0,0 +1,516 @@ @@ -983889,7 +983889,7 @@ index 000000000000..2f33db421877 +} diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_flowring.c b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_flowring.c new file mode 100755 -index 000000000000..d457437d39ed +index 000000000..d457437d3 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_flowring.c @@ -0,0 +1,1238 @@ @@ -985133,7 +985133,7 @@ index 000000000000..d457437d39ed +} diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_flowring.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_flowring.h new file mode 100755 -index 000000000000..ac2639d19396 +index 000000000..ac2639d19 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_flowring.h @@ -0,0 +1,289 @@ @@ -985428,7 +985428,7 @@ index 000000000000..ac2639d19396 +#endif /* _dhd_flowrings_h_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_gpio.c b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_gpio.c new file mode 100755 -index 000000000000..cdb70099fb19 +index 000000000..cdb70099f --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_gpio.c @@ -0,0 +1,350 @@ @@ -985784,7 +985784,7 @@ index 000000000000..cdb70099fb19 + diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_ip.c b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_ip.c new file mode 100755 -index 000000000000..3772fdfca4e5 +index 000000000..3772fdfca --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_ip.c @@ -0,0 +1,1429 @@ @@ -987219,7 +987219,7 @@ index 000000000000..3772fdfca4e5 +#endif /* DHDTCPSYNC_FLOOD_BLK */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_ip.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_ip.h new file mode 100755 -index 000000000000..45be081e3473 +index 000000000..45be081e3 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_ip.h @@ -0,0 +1,97 @@ @@ -987322,7 +987322,7 @@ index 000000000000..45be081e3473 +#endif /* _dhd_ip_h_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_linux.c b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_linux.c new file mode 100755 -index 000000000000..37a12817a999 +index 000000000..37a12817a --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_linux.c @@ -0,0 +1,22324 @@ @@ -1009652,7 +1009652,7 @@ index 000000000000..37a12817a999 +#endif /* defiend(WLDWDS) && defined(FOURADDR_AUTO_BRG) */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_linux.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_linux.h new file mode 100755 -index 000000000000..f2b295f54f5b +index 000000000..f2b295f54 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_linux.h @@ -0,0 +1,448 @@ @@ -1010106,7 +1010106,7 @@ index 000000000000..f2b295f54f5b +#endif /* __DHD_LINUX_H__ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_linux_exportfs.c b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_linux_exportfs.c new file mode 100755 -index 000000000000..6518b357aa30 +index 000000000..6518b357a --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_linux_exportfs.c @@ -0,0 +1,1420 @@ @@ -1011532,7 +1011532,7 @@ index 000000000000..6518b357aa30 +} diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_linux_lb.c b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_linux_lb.c new file mode 100755 -index 000000000000..30dfaa2b7e41 +index 000000000..30dfaa2b7 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_linux_lb.c @@ -0,0 +1,1324 @@ @@ -1012862,7 +1012862,7 @@ index 000000000000..30dfaa2b7e41 +#endif /* DHD_LB_TXP */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_linux_pktdump.c b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_linux_pktdump.c new file mode 100755 -index 000000000000..3efe02c9ed49 +index 000000000..3efe02c9e --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_linux_pktdump.c @@ -0,0 +1,1472 @@ @@ -1014340,7 +1014340,7 @@ index 000000000000..3efe02c9ed49 +#endif /* DHD_RX_DUMP */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_linux_pktdump.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_linux_pktdump.h new file mode 100755 -index 000000000000..12bb32fd5dae +index 000000000..12bb32fd5 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_linux_pktdump.h @@ -0,0 +1,125 @@ @@ -1014471,7 +1014471,7 @@ index 000000000000..12bb32fd5dae +#endif /* __DHD_LINUX_PKTDUMP_H_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_linux_platdev.c b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_linux_platdev.c new file mode 100755 -index 000000000000..93961824abae +index 000000000..93961824a --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_linux_platdev.c @@ -0,0 +1,1041 @@ @@ -1015518,7 +1015518,7 @@ index 000000000000..93961824abae +} diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_linux_priv.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_linux_priv.h new file mode 100755 -index 000000000000..9959c2c50141 +index 000000000..9959c2c50 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_linux_priv.h @@ -0,0 +1,432 @@ @@ -1015956,7 +1015956,7 @@ index 000000000000..9959c2c50141 +#endif /* __DHD_LINUX_PRIV_H__ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_linux_sched.c b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_linux_sched.c new file mode 100755 -index 000000000000..7980b02c65ab +index 000000000..7980b02c6 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_linux_sched.c @@ -0,0 +1,52 @@ @@ -1016014,7 +1016014,7 @@ index 000000000000..7980b02c65ab +} diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_linux_wq.c b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_linux_wq.c new file mode 100755 -index 000000000000..26c66add8aa3 +index 000000000..26c66add8 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_linux_wq.c @@ -0,0 +1,397 @@ @@ -1016417,7 +1016417,7 @@ index 000000000000..26c66add8aa3 +} diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_linux_wq.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_linux_wq.h new file mode 100755 -index 000000000000..f6c77c4b30b0 +index 000000000..f6c77c4b3 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_linux_wq.h @@ -0,0 +1,93 @@ @@ -1016516,7 +1016516,7 @@ index 000000000000..f6c77c4b30b0 +#endif /* _dhd_linux_wq_h_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_mschdbg.c b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_mschdbg.c new file mode 100755 -index 000000000000..713422a713cc +index 000000000..713422a71 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_mschdbg.c @@ -0,0 +1,789 @@ @@ -1017311,7 +1017311,7 @@ index 000000000000..713422a713cc +#endif /* SHOW_LOGTRACE */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_mschdbg.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_mschdbg.h new file mode 100755 -index 000000000000..4645ccb890ab +index 000000000..4645ccb89 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_mschdbg.h @@ -0,0 +1,40 @@ @@ -1017357,7 +1017357,7 @@ index 000000000000..4645ccb890ab +#endif /* _dhd_mschdbg_h_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_msgbuf.c b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_msgbuf.c new file mode 100755 -index 000000000000..ab8c9b399308 +index 000000000..ab8c9b399 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_msgbuf.c @@ -0,0 +1,11162 @@ @@ -1028525,7 +1028525,7 @@ index 000000000000..ab8c9b399308 +#endif /* DHD_MAP_LOGGING */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_pcie.c b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_pcie.c new file mode 100755 -index 000000000000..45dd0e66ea04 +index 000000000..45dd0e66e --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_pcie.c @@ -0,0 +1,11618 @@ @@ -1040149,7 +1040149,7 @@ index 000000000000..45dd0e66ea04 +} diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_pcie.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_pcie.h new file mode 100755 -index 000000000000..028b7082c897 +index 000000000..028b7082c --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_pcie.h @@ -0,0 +1,605 @@ @@ -1040760,7 +1040760,7 @@ index 000000000000..028b7082c897 +#endif /* dhd_pcie_h */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_pcie_linux.c b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_pcie_linux.c new file mode 100755 -index 000000000000..3fb799247421 +index 000000000..3fb799247 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_pcie_linux.c @@ -0,0 +1,2738 @@ @@ -1043504,7 +1043504,7 @@ index 000000000000..3fb799247421 +EXPORT_SYMBOL(dhd_bus_check_driver_up); diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_pno.c b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_pno.c new file mode 100755 -index 000000000000..005c03e3d181 +index 000000000..005c03e3d --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_pno.c @@ -0,0 +1,4458 @@ @@ -1047968,7 +1047968,7 @@ index 000000000000..005c03e3d181 +#endif /* PNO_SUPPORT */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_pno.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_pno.h new file mode 100755 -index 000000000000..903a732554c0 +index 000000000..903a73255 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_pno.h @@ -0,0 +1,590 @@ @@ -1048564,7 +1048564,7 @@ index 000000000000..903a732554c0 +#endif /* __DHD_PNO_H__ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_proto.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_proto.h new file mode 100755 -index 000000000000..b83c1bdc0b83 +index 000000000..b83c1bdc0 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_proto.h @@ -0,0 +1,243 @@ @@ -1048813,7 +1048813,7 @@ index 000000000000..b83c1bdc0b83 +#endif /* _dhd_proto_h_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_rtt.c b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_rtt.c new file mode 100755 -index 000000000000..49e367890f47 +index 000000000..49e367890 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_rtt.c @@ -0,0 +1,4103 @@ @@ -1052922,7 +1052922,7 @@ index 000000000000..49e367890f47 +} diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_rtt.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_rtt.h new file mode 100755 -index 000000000000..d0c6af209db6 +index 000000000..d0c6af209 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_rtt.h @@ -0,0 +1,537 @@ @@ -1053465,7 +1053465,7 @@ index 000000000000..d0c6af209db6 +#endif /* __DHD_RTT_H__ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_sdio.c b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_sdio.c new file mode 100755 -index 000000000000..6bc9b0ea60ab +index 000000000..6bc9b0ea6 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_sdio.c @@ -0,0 +1,10712 @@ @@ -1064184,7 +1064184,7 @@ index 000000000000..6bc9b0ea60ab \ No newline at end of file diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_static_buf.c b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_static_buf.c new file mode 100755 -index 000000000000..2df6b62cd6b2 +index 000000000..2df6b62cd --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_static_buf.c @@ -0,0 +1,586 @@ @@ -1064776,7 +1064776,7 @@ index 000000000000..2df6b62cd6b2 +module_exit(dhd_static_buf_exit); diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_wlfc.c b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_wlfc.c new file mode 100755 -index 000000000000..bafcb0b5c7e4 +index 000000000..bafcb0b5c --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_wlfc.c @@ -0,0 +1,4616 @@ @@ -1069398,7 +1069398,7 @@ index 000000000000..bafcb0b5c7e4 +#endif /* PROP_TXSTATUS */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_wlfc.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_wlfc.h new file mode 100755 -index 000000000000..a2aa2bca76f7 +index 000000000..a2aa2bca7 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dhd_wlfc.h @@ -0,0 +1,570 @@ @@ -1069974,7 +1069974,7 @@ index 000000000000..a2aa2bca76f7 +#endif /* __wlfc_host_driver_definitions_h__ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dngl_stats.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dngl_stats.h new file mode 100755 -index 000000000000..5bd8e4613da0 +index 000000000..5bd8e4613 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dngl_stats.h @@ -0,0 +1,387 @@ @@ -1070367,7 +1070367,7 @@ index 000000000000..5bd8e4613da0 +#endif /* _dngl_stats_h_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dngl_wlhdr.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dngl_wlhdr.h new file mode 100755 -index 000000000000..d71ebb65d63d +index 000000000..d71ebb65d --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/dngl_wlhdr.h @@ -0,0 +1,44 @@ @@ -1070417,7 +1070417,7 @@ index 000000000000..d71ebb65d63d +#endif /* _dngl_wlhdr_h_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/frag.c b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/frag.c new file mode 100755 -index 000000000000..fa9ff43e5c2c +index 000000000..fa9ff43e5 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/frag.c @@ -0,0 +1,113 @@ @@ -1070536,7 +1070536,7 @@ index 000000000000..fa9ff43e5c2c +} diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/frag.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/frag.h new file mode 100755 -index 000000000000..57c149dfdff3 +index 000000000..57c149dfd --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/frag.h @@ -0,0 +1,39 @@ @@ -1070581,7 +1070581,7 @@ index 000000000000..57c149dfdff3 +#endif /* __FRAG_H__ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/hnd_pktpool.c b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/hnd_pktpool.c new file mode 100755 -index 000000000000..09c2520b8fec +index 000000000..09c2520b8 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/hnd_pktpool.c @@ -0,0 +1,1428 @@ @@ -1072015,7 +1072015,7 @@ index 000000000000..09c2520b8fec +#endif /* BCMPKTPOOL */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/hnd_pktq.c b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/hnd_pktq.c new file mode 100755 -index 000000000000..f4768ff69096 +index 000000000..f4768ff69 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/hnd_pktq.c @@ -0,0 +1,1429 @@ @@ -1073450,7 +1073450,7 @@ index 000000000000..f4768ff69096 +#endif /* HND_PKTQ_THREAD_SAFE */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/hndlhl.c b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/hndlhl.c new file mode 100755 -index 000000000000..fd229c2f585b +index 000000000..fd229c2f5 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/hndlhl.c @@ -0,0 +1,538 @@ @@ -1073994,7 +1073994,7 @@ index 000000000000..fd229c2f585b +} diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/hndmem.c b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/hndmem.c new file mode 100755 -index 000000000000..fde6108c50e2 +index 000000000..fde6108c5 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/hndmem.c @@ -0,0 +1,430 @@ @@ -1074430,7 +1074430,7 @@ index 000000000000..fde6108c50e2 +} diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/hndpmu.c b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/hndpmu.c new file mode 100755 -index 000000000000..cb8294f25274 +index 000000000..cb8294f25 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/hndpmu.c @@ -0,0 +1,789 @@ @@ -1075225,7 +1075225,7 @@ index 000000000000..cb8294f25274 +#endif /* BCMPMU_STATS */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/802.11.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/802.11.h new file mode 100755 -index 000000000000..cd46e747cc8b +index 000000000..cd46e747c --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/802.11.h @@ -0,0 +1,5364 @@ @@ -1080595,7 +1080595,7 @@ index 000000000000..cd46e747cc8b +#endif /* _802_11_H_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/802.11e.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/802.11e.h new file mode 100755 -index 000000000000..7b1414961ee1 +index 000000000..7b1414961 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/802.11e.h @@ -0,0 +1,140 @@ @@ -1080741,7 +1080741,7 @@ index 000000000000..7b1414961ee1 +#endif /* _802_11e_CAC_H_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/802.11s.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/802.11s.h new file mode 100755 -index 000000000000..91ca2f3b1ce4 +index 000000000..91ca2f3b1 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/802.11s.h @@ -0,0 +1,335 @@ @@ -1081082,7 +1081082,7 @@ index 000000000000..91ca2f3b1ce4 +#endif /* #ifndef _802_11s_H_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/802.1d.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/802.1d.h new file mode 100755 -index 000000000000..06364be73fa8 +index 000000000..06364be73 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/802.1d.h @@ -0,0 +1,54 @@ @@ -1081142,7 +1081142,7 @@ index 000000000000..06364be73fa8 +#endif /* _802_1_D__ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/802.3.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/802.3.h new file mode 100755 -index 000000000000..496ca3a3795e +index 000000000..496ca3a37 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/802.3.h @@ -0,0 +1,56 @@ @@ -1081204,7 +1081204,7 @@ index 000000000000..496ca3a3795e +#endif /* #ifndef _802_3_h_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/aidmp.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/aidmp.h new file mode 100755 -index 000000000000..8c826062d436 +index 000000000..8c826062d --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/aidmp.h @@ -0,0 +1,430 @@ @@ -1081640,7 +1081640,7 @@ index 000000000000..8c826062d436 +#endif /* _AIDMP_H */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcm_cfg.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcm_cfg.h new file mode 100755 -index 000000000000..63c72e481fe8 +index 000000000..63c72e481 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcm_cfg.h @@ -0,0 +1,33 @@ @@ -1081679,7 +1081679,7 @@ index 000000000000..63c72e481fe8 +#endif /* _bcm_cfg_h_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcm_mpool_pub.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcm_mpool_pub.h new file mode 100755 -index 000000000000..347d53a862d2 +index 000000000..347d53a86 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcm_mpool_pub.h @@ -0,0 +1,351 @@ @@ -1082036,7 +1082036,7 @@ index 000000000000..347d53a862d2 +#endif /* _BCM_MPOOL_PUB_H */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcm_ring.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcm_ring.h new file mode 100755 -index 000000000000..978e5dd2f554 +index 000000000..978e5dd2f --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcm_ring.h @@ -0,0 +1,614 @@ @@ -1082656,7 +1082656,7 @@ index 000000000000..978e5dd2f554 +#endif /* ! __bcm_ring_h_included__ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmarp.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmarp.h new file mode 100755 -index 000000000000..f0fc3e32fda9 +index 000000000..f0fc3e32f --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmarp.h @@ -0,0 +1,91 @@ @@ -1082753,7 +1082753,7 @@ index 000000000000..f0fc3e32fda9 +#endif /* !defined(_bcmarp_h_) */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmbloom.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmbloom.h new file mode 100755 -index 000000000000..cb572307e126 +index 000000000..cb572307e --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmbloom.h @@ -0,0 +1,80 @@ @@ -1082839,7 +1082839,7 @@ index 000000000000..cb572307e126 +#endif /* _bcmbloom_h_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmcdc.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmcdc.h new file mode 100755 -index 000000000000..e88366426909 +index 000000000..e88366426 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmcdc.h @@ -0,0 +1,122 @@ @@ -1082967,7 +1082967,7 @@ index 000000000000..e88366426909 +#endif /* _bcmcdc_h_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmdefs.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmdefs.h new file mode 100755 -index 000000000000..393ec7d10e12 +index 000000000..393ec7d10 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmdefs.h @@ -0,0 +1,616 @@ @@ -1083589,7 +1083589,7 @@ index 000000000000..393ec7d10e12 +#endif /* _bcmdefs_h_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmdevs.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmdevs.h new file mode 100755 -index 000000000000..afc6b54d9e0b +index 000000000..afc6b54d9 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmdevs.h @@ -0,0 +1,945 @@ @@ -1084540,7 +1084540,7 @@ index 000000000000..afc6b54d9e0b +#endif /* _BCMDEVS_H */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmdhcp.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmdhcp.h new file mode 100755 -index 000000000000..da46d1a717b5 +index 000000000..da46d1a71 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmdhcp.h @@ -0,0 +1,93 @@ @@ -1084639,7 +1084639,7 @@ index 000000000000..da46d1a717b5 +#endif /* #ifndef _bcmdhcp_h_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmendian.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmendian.h new file mode 100755 -index 000000000000..7eecf9f16115 +index 000000000..7eecf9f16 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmendian.h @@ -0,0 +1,417 @@ @@ -1085062,7 +1085062,7 @@ index 000000000000..7eecf9f16115 +#endif /* !_BCMENDIAN_H_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmeth.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmeth.h new file mode 100755 -index 000000000000..4ac3c376ca98 +index 000000000..4ac3c376c --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmeth.h @@ -0,0 +1,116 @@ @@ -1085184,7 +1085184,7 @@ index 000000000000..4ac3c376ca98 +#endif /* _BCMETH_H_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmevent.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmevent.h new file mode 100755 -index 000000000000..fc47263e81e2 +index 000000000..fc47263e8 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmevent.h @@ -0,0 +1,1297 @@ @@ -1086487,7 +1086487,7 @@ index 000000000000..fc47263e81e2 +#endif /* _BCMEVENT_H_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmicmp.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmicmp.h new file mode 100755 -index 000000000000..472ec722339b +index 000000000..472ec7223 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmicmp.h @@ -0,0 +1,90 @@ @@ -1086583,7 +1086583,7 @@ index 000000000000..472ec722339b +#endif /* #ifndef _bcmicmp_h_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmiov.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmiov.h new file mode 100755 -index 000000000000..42633f8c7d32 +index 000000000..42633f8c7 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmiov.h @@ -0,0 +1,357 @@ @@ -1086946,7 +1086946,7 @@ index 000000000000..42633f8c7d32 +#endif /* _bcmiov_h_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmip.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmip.h new file mode 100755 -index 000000000000..cec5b903c6f4 +index 000000000..cec5b903c --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmip.h @@ -0,0 +1,251 @@ @@ -1087203,7 +1087203,7 @@ index 000000000000..cec5b903c6f4 +#endif /* _bcmip_h_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmipv6.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmipv6.h new file mode 100755 -index 000000000000..88cac9009183 +index 000000000..88cac9009 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmipv6.h @@ -0,0 +1,162 @@ @@ -1087371,7 +1087371,7 @@ index 000000000000..88cac9009183 +#endif /* !defined(_bcmipv6_h_) */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmmsgbuf.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmmsgbuf.h new file mode 100755 -index 000000000000..4215d3298c21 +index 000000000..4215d3298 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmmsgbuf.h @@ -0,0 +1,1395 @@ @@ -1088772,7 +1088772,7 @@ index 000000000000..4215d3298c21 +#endif /* _bcmmsgbuf_h_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmnvram.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmnvram.h new file mode 100755 -index 000000000000..988ac4813a5f +index 000000000..988ac4813 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmnvram.h @@ -0,0 +1,329 @@ @@ -1089107,7 +1089107,7 @@ index 000000000000..988ac4813a5f +#endif /* _bcmnvram_h_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmpcie.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmpcie.h new file mode 100755 -index 000000000000..8f80018ac9dd +index 000000000..8f80018ac --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmpcie.h @@ -0,0 +1,537 @@ @@ -1089650,7 +1089650,7 @@ index 000000000000..8f80018ac9dd +#endif /* _bcmpcie_h_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmpcispi.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmpcispi.h new file mode 100755 -index 000000000000..6308a3aaf7f5 +index 000000000..6308a3aaf --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmpcispi.h @@ -0,0 +1,182 @@ @@ -1089838,7 +1089838,7 @@ index 000000000000..6308a3aaf7f5 +#endif /* _BCM_PCI_SPI_H */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmperf.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmperf.h new file mode 100755 -index 000000000000..8ac9001f55eb +index 000000000..8ac9001f5 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmperf.h @@ -0,0 +1,40 @@ @@ -1089884,7 +1089884,7 @@ index 000000000000..8ac9001f55eb +#endif /* _BCMPERF_H_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmsdbus.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmsdbus.h new file mode 100755 -index 000000000000..b9759b9b186e +index 000000000..b9759b9b1 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmsdbus.h @@ -0,0 +1,184 @@ @@ -1090074,7 +1090074,7 @@ index 000000000000..b9759b9b186e +#endif /* _sdio_api_h_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmsdh.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmsdh.h new file mode 100755 -index 000000000000..b2300ec635c6 +index 000000000..b2300ec63 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmsdh.h @@ -0,0 +1,279 @@ @@ -1090359,7 +1090359,7 @@ index 000000000000..b2300ec635c6 +#endif /* _bcmsdh_h_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmsdh_sdmmc.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmsdh_sdmmc.h new file mode 100755 -index 000000000000..4e3c72d194ce +index 000000000..4e3c72d19 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmsdh_sdmmc.h @@ -0,0 +1,130 @@ @@ -1090495,7 +1090495,7 @@ index 000000000000..4e3c72d194ce +#endif /* __BCMSDH_SDMMC_H__ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmsdpcm.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmsdpcm.h new file mode 100755 -index 000000000000..09a81c24398f +index 000000000..09a81c243 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmsdpcm.h @@ -0,0 +1,310 @@ @@ -1090811,7 +1090811,7 @@ index 000000000000..09a81c24398f +#endif /* _bcmsdpcm_h_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmsdspi.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmsdspi.h new file mode 100755 -index 000000000000..2d299a140cb3 +index 000000000..2d299a140 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmsdspi.h @@ -0,0 +1,139 @@ @@ -1090956,7 +1090956,7 @@ index 000000000000..2d299a140cb3 +#endif /* _BCM_SD_SPI_H */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmsdstd.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmsdstd.h new file mode 100755 -index 000000000000..5132d4340ecd +index 000000000..5132d4340 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmsdstd.h @@ -0,0 +1,282 @@ @@ -1091244,7 +1091244,7 @@ index 000000000000..5132d4340ecd +#endif /* _BCM_SD_STD_H */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmspi.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmspi.h new file mode 100755 -index 000000000000..6f71ddc9519e +index 000000000..6f71ddc95 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmspi.h @@ -0,0 +1,44 @@ @@ -1091294,7 +1091294,7 @@ index 000000000000..6f71ddc9519e +#endif /* _BCM_SPI_H */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmspibrcm.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmspibrcm.h new file mode 100755 -index 000000000000..2d9f972496c3 +index 000000000..2d9f97249 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmspibrcm.h @@ -0,0 +1,168 @@ @@ -1091468,7 +1091468,7 @@ index 000000000000..2d9f972496c3 +#endif /* _BCM_SPI_BRCM_H */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmsrom_fmt.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmsrom_fmt.h new file mode 100755 -index 000000000000..e1bd05548c1f +index 000000000..e1bd05548 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmsrom_fmt.h @@ -0,0 +1,1014 @@ @@ -1092488,7 +1092488,7 @@ index 000000000000..e1bd05548c1f +#endif /* _bcmsrom_fmt_h_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmsrom_tbl.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmsrom_tbl.h new file mode 100755 -index 000000000000..aa72338de34f +index 000000000..aa72338de --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmsrom_tbl.h @@ -0,0 +1,1459 @@ @@ -1093953,7 +1093953,7 @@ index 000000000000..aa72338de34f +#endif /* _bcmsrom_tbl_h_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmstdlib_s.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmstdlib_s.h new file mode 100755 -index 000000000000..6c79800c8cda +index 000000000..6c79800c8 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmstdlib_s.h @@ -0,0 +1,46 @@ @@ -1094005,7 +1094005,7 @@ index 000000000000..6c79800c8cda +#endif /* _bcmstdlib_s_h_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmtcp.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmtcp.h new file mode 100755 -index 000000000000..6803cad809c3 +index 000000000..6803cad80 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmtcp.h @@ -0,0 +1,93 @@ @@ -1094104,7 +1094104,7 @@ index 000000000000..6803cad809c3 +#endif /* #ifndef _bcmtcp_h_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmtlv.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmtlv.h new file mode 100755 -index 000000000000..279840e41a35 +index 000000000..279840e41 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmtlv.h @@ -0,0 +1,343 @@ @@ -1094453,7 +1094453,7 @@ index 000000000000..279840e41a35 +#endif /* _bcmtlv_h_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmudp.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmudp.h new file mode 100755 -index 000000000000..397bc5985e25 +index 000000000..397bc5985 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmudp.h @@ -0,0 +1,61 @@ @@ -1094520,7 +1094520,7 @@ index 000000000000..397bc5985e25 +#endif /* #ifndef _bcmudp_h_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmutils.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmutils.h new file mode 100755 -index 000000000000..c779ea07ea2d +index 000000000..c779ea07e --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/bcmutils.h @@ -0,0 +1,1342 @@ @@ -1095868,7 +1095868,7 @@ index 000000000000..c779ea07ea2d +#endif /* _bcmutils_h_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/brcm_nl80211.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/brcm_nl80211.h new file mode 100755 -index 000000000000..0e0aa766a678 +index 000000000..0e0aa766a --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/brcm_nl80211.h @@ -0,0 +1,73 @@ @@ -1095947,7 +1095947,7 @@ index 000000000000..0e0aa766a678 +#endif /* _brcm_nl80211_h_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/dbus.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/dbus.h new file mode 100755 -index 000000000000..e4b87288b3d6 +index 000000000..e4b87288b --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/dbus.h @@ -0,0 +1,599 @@ @@ -1096552,7 +1096552,7 @@ index 000000000000..e4b87288b3d6 +#endif /* __DBUS_H__ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/dhd_daemon.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/dhd_daemon.h new file mode 100755 -index 000000000000..785b440116cc +index 000000000..785b44011 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/dhd_daemon.h @@ -0,0 +1,67 @@ @@ -1096625,7 +1096625,7 @@ index 000000000000..785b440116cc +#endif /* __BCM_DHDD_H__ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/dhdioctl.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/dhdioctl.h new file mode 100755 -index 000000000000..f7012a0f5115 +index 000000000..f7012a0f5 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/dhdioctl.h @@ -0,0 +1,278 @@ @@ -1096909,7 +1096909,7 @@ index 000000000000..f7012a0f5115 +#endif /* _dhdioctl_h_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/dnglevent.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/dnglevent.h new file mode 100755 -index 000000000000..ec2cbbaf0b1f +index 000000000..ec2cbbaf0 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/dnglevent.h @@ -0,0 +1,142 @@ @@ -1097057,7 +1097057,7 @@ index 000000000000..ec2cbbaf0b1f +#endif /* _DNGLEVENT_H_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/eapol.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/eapol.h new file mode 100755 -index 000000000000..08a296828189 +index 000000000..08a296828 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/eapol.h @@ -0,0 +1,283 @@ @@ -1097346,7 +1097346,7 @@ index 000000000000..08a296828189 +#endif /* _eapol_h_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/epivers.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/epivers.h new file mode 100755 -index 000000000000..23f8d324361b +index 000000000..23f8d3243 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/epivers.h @@ -0,0 +1,52 @@ @@ -1097404,7 +1097404,7 @@ index 000000000000..23f8d324361b +#endif /* _epivers_h_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/etd.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/etd.h new file mode 100755 -index 000000000000..a2181daf525e +index 000000000..a2181daf5 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/etd.h @@ -0,0 +1,626 @@ @@ -1098036,7 +1098036,7 @@ index 000000000000..a2181daf525e +#endif /* _ETD_H_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/ethernet.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/ethernet.h new file mode 100755 -index 000000000000..41c9b62b0d5c +index 000000000..41c9b62b0 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/ethernet.h @@ -0,0 +1,225 @@ @@ -1098267,7 +1098267,7 @@ index 000000000000..41c9b62b0d5c +#endif /* _NET_ETHERNET_H_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/event_log.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/event_log.h new file mode 100755 -index 000000000000..e43715d72646 +index 000000000..e43715d72 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/event_log.h @@ -0,0 +1,423 @@ @@ -1098696,7 +1098696,7 @@ index 000000000000..e43715d72646 +#endif /* _EVENT_LOG_H_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/event_log_payload.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/event_log_payload.h new file mode 100755 -index 000000000000..fc110219ec75 +index 000000000..fc110219e --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/event_log_payload.h @@ -0,0 +1,1017 @@ @@ -1099719,7 +1099719,7 @@ index 000000000000..fc110219ec75 +#endif /* _EVENT_LOG_PAYLOAD_H_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/event_log_set.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/event_log_set.h new file mode 100755 -index 000000000000..47c991c20019 +index 000000000..47c991c20 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/event_log_set.h @@ -0,0 +1,124 @@ @@ -1099849,7 +1099849,7 @@ index 000000000000..47c991c20019 +#endif /* _EVENT_LOG_SET_H_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/event_log_tag.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/event_log_tag.h new file mode 100755 -index 000000000000..144ed7275932 +index 000000000..144ed7275 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/event_log_tag.h @@ -0,0 +1,479 @@ @@ -1100334,7 +1100334,7 @@ index 000000000000..144ed7275932 +#endif /* _EVENT_LOG_TAG_H_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/event_trace.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/event_trace.h new file mode 100755 -index 000000000000..0c6fc6b262a0 +index 000000000..0c6fc6b26 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/event_trace.h @@ -0,0 +1,124 @@ @@ -1100464,7 +1100464,7 @@ index 000000000000..0c6fc6b262a0 +#endif /* _WL_DIAG_H */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/fils.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/fils.h new file mode 100755 -index 000000000000..1d3c8e0b52a8 +index 000000000..1d3c8e0b5 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/fils.h @@ -0,0 +1,295 @@ @@ -1100765,7 +1100765,7 @@ index 000000000000..1d3c8e0b52a8 +#endif /* __FILSAUTH_H__ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/hnd_armtrap.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/hnd_armtrap.h new file mode 100755 -index 000000000000..177ef53141fe +index 000000000..177ef5314 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/hnd_armtrap.h @@ -0,0 +1,90 @@ @@ -1100861,7 +1100861,7 @@ index 000000000000..177ef53141fe +#endif /* _hnd_armtrap_h_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/hnd_cons.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/hnd_cons.h new file mode 100755 -index 000000000000..81a699d8b5de +index 000000000..81a699d8b --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/hnd_cons.h @@ -0,0 +1,87 @@ @@ -1100954,7 +1100954,7 @@ index 000000000000..81a699d8b5de +#endif /* _hnd_cons_h_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/hnd_debug.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/hnd_debug.h new file mode 100755 -index 000000000000..b8dca36b84c6 +index 000000000..b8dca36b8 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/hnd_debug.h @@ -0,0 +1,169 @@ @@ -1101129,7 +1101129,7 @@ index 000000000000..b8dca36b84c6 +#endif /* _HND_DEBUG_H */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/hnd_pktpool.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/hnd_pktpool.h new file mode 100755 -index 000000000000..57f222967488 +index 000000000..57f222967 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/hnd_pktpool.h @@ -0,0 +1,244 @@ @@ -1101379,7 +1101379,7 @@ index 000000000000..57f222967488 +#endif /* _hnd_pktpool_h_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/hnd_pktq.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/hnd_pktq.h new file mode 100755 -index 000000000000..824bbc1420d9 +index 000000000..824bbc142 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/hnd_pktq.h @@ -0,0 +1,326 @@ @@ -1101711,7 +1101711,7 @@ index 000000000000..824bbc1420d9 +#endif /* _hnd_pktq_h_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/hnd_trap.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/hnd_trap.h new file mode 100755 -index 000000000000..caf006ee26d9 +index 000000000..caf006ee2 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/hnd_trap.h @@ -0,0 +1,40 @@ @@ -1101757,7 +1101757,7 @@ index 000000000000..caf006ee26d9 +#endif /* _hnd_trap_h_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/hndchipc.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/hndchipc.h new file mode 100755 -index 000000000000..be9a2e65cb55 +index 000000000..be9a2e65c --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/hndchipc.h @@ -0,0 +1,54 @@ @@ -1101817,7 +1101817,7 @@ index 000000000000..be9a2e65cb55 +#endif /* _hndchipc_h_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/hndlhl.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/hndlhl.h new file mode 100755 -index 000000000000..c6794464ebe7 +index 000000000..c6794464e --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/hndlhl.h @@ -0,0 +1,62 @@ @@ -1101885,7 +1101885,7 @@ index 000000000000..c6794464ebe7 +#endif /* _hndlhl_h_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/hndmem.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/hndmem.h new file mode 100755 -index 000000000000..de348e7d3c45 +index 000000000..de348e7d3 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/hndmem.h @@ -0,0 +1,81 @@ @@ -1101972,7 +1101972,7 @@ index 000000000000..de348e7d3c45 +#endif /* _HNDMEM_H_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/hndoobr.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/hndoobr.h new file mode 100755 -index 000000000000..88e2952cf7c5 +index 000000000..88e2952cf --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/hndoobr.h @@ -0,0 +1,76 @@ @@ -1102054,7 +1102054,7 @@ index 000000000000..88e2952cf7c5 +#endif /* _hndoobr_h_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/hndpmu.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/hndpmu.h new file mode 100755 -index 000000000000..df3b31bf46ee +index 000000000..df3b31bf4 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/hndpmu.h @@ -0,0 +1,80 @@ @@ -1102140,7 +1102140,7 @@ index 000000000000..df3b31bf46ee +#endif /* _hndpmu_h_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/hndsoc.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/hndsoc.h new file mode 100755 -index 000000000000..b4cb16001b97 +index 000000000..b4cb16001 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/hndsoc.h @@ -0,0 +1,351 @@ @@ -1102497,7 +1102497,7 @@ index 000000000000..b4cb16001b97 +#endif /* _HNDSOC_H */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/linux_osl.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/linux_osl.h new file mode 100755 -index 000000000000..bb916706702d +index 000000000..bb9167067 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/linux_osl.h @@ -0,0 +1,636 @@ @@ -1103139,7 +1103139,7 @@ index 000000000000..bb916706702d +#endif /* _linux_osl_h_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/linux_pkt.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/linux_pkt.h new file mode 100755 -index 000000000000..30fff18479f3 +index 000000000..30fff1847 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/linux_pkt.h @@ -0,0 +1,236 @@ @@ -1103381,7 +1103381,7 @@ index 000000000000..30fff18479f3 +#endif /* _linux_pkt_h_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/linuxver.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/linuxver.h new file mode 100755 -index 000000000000..32ad78f6c932 +index 000000000..32ad78f6c --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/linuxver.h @@ -0,0 +1,900 @@ @@ -1104287,7 +1104287,7 @@ index 000000000000..32ad78f6c932 +#endif /* _linuxver_h_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/lpflags.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/lpflags.h new file mode 100755 -index 000000000000..ed0ff7825b08 +index 000000000..ed0ff7825 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/lpflags.h @@ -0,0 +1,46 @@ @@ -1104339,7 +1104339,7 @@ index 000000000000..ed0ff7825b08 +#endif /* _lpflags_h_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/mbo.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/mbo.h new file mode 100755 -index 000000000000..eef005063065 +index 000000000..eef005063 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/mbo.h @@ -0,0 +1,286 @@ @@ -1104631,7 +1104631,7 @@ index 000000000000..eef005063065 +#endif /* __MBO_H__ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/miniopt.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/miniopt.h new file mode 100755 -index 000000000000..1c1d8e9e2004 +index 000000000..1c1d8e9e2 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/miniopt.h @@ -0,0 +1,80 @@ @@ -1104717,7 +1104717,7 @@ index 000000000000..1c1d8e9e2004 +#endif /* MINI_OPT_H */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/msf.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/msf.h new file mode 100755 -index 000000000000..5f0022e53250 +index 000000000..5f0022e53 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/msf.h @@ -0,0 +1,67 @@ @@ -1104790,7 +1104790,7 @@ index 000000000000..5f0022e53250 +#endif /* _WLC_MSF_H */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/msgtrace.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/msgtrace.h new file mode 100755 -index 000000000000..c871c7ce620d +index 000000000..c871c7ce6 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/msgtrace.h @@ -0,0 +1,63 @@ @@ -1104859,7 +1104859,7 @@ index 000000000000..c871c7ce620d +#endif /* _MSGTRACE_H */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/nan.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/nan.h new file mode 100755 -index 000000000000..bdb07f8460da +index 000000000..bdb07f846 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/nan.h @@ -0,0 +1,1559 @@ @@ -1106424,7 +1106424,7 @@ index 000000000000..bdb07f8460da +#endif /* _NAN_H_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/osl.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/osl.h new file mode 100755 -index 000000000000..2a7aec17d1db +index 000000000..2a7aec17d --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/osl.h @@ -0,0 +1,378 @@ @@ -1106808,7 +1106808,7 @@ index 000000000000..2a7aec17d1db +#endif /* _osl_h_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/osl_decl.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/osl_decl.h new file mode 100755 -index 000000000000..a5643079c831 +index 000000000..a5643079c --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/osl_decl.h @@ -0,0 +1,38 @@ @@ -1106852,7 +1106852,7 @@ index 000000000000..a5643079c831 +#endif // endif diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/osl_ext.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/osl_ext.h new file mode 100755 -index 000000000000..2c182ca29bd1 +index 000000000..2c182ca29 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/osl_ext.h @@ -0,0 +1,766 @@ @@ -1107624,7 +1107624,7 @@ index 000000000000..2c182ca29bd1 +#endif /* _osl_ext_h_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/p2p.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/p2p.h new file mode 100755 -index 000000000000..b68d5c32e466 +index 000000000..b68d5c32e --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/p2p.h @@ -0,0 +1,702 @@ @@ -1108332,7 +1108332,7 @@ index 000000000000..b68d5c32e466 +#endif /* _P2P_H_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/packed_section_end.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/packed_section_end.h new file mode 100755 -index 000000000000..64c7579ae26c +index 000000000..64c7579ae --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/packed_section_end.h @@ -0,0 +1,60 @@ @@ -1108398,7 +1108398,7 @@ index 000000000000..64c7579ae26c +#undef BWL_POST_PACKED_STRUCT diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/packed_section_start.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/packed_section_start.h new file mode 100755 -index 000000000000..097611ed404a +index 000000000..097611ed4 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/packed_section_start.h @@ -0,0 +1,105 @@ @@ -1108509,7 +1108509,7 @@ index 000000000000..097611ed404a +#endif // endif diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/pcicfg.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/pcicfg.h new file mode 100755 -index 000000000000..c8ec32a62406 +index 000000000..c8ec32a62 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/pcicfg.h @@ -0,0 +1,402 @@ @@ -1108917,7 +1108917,7 @@ index 000000000000..c8ec32a62406 +#endif /* _h_pcicfg_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/pcie_core.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/pcie_core.h new file mode 100755 -index 000000000000..592ad25e4832 +index 000000000..592ad25e4 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/pcie_core.h @@ -0,0 +1,1193 @@ @@ -1110116,7 +1110116,7 @@ index 000000000000..592ad25e4832 +#endif /* _PCIE_CORE_H */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/rte_ioctl.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/rte_ioctl.h new file mode 100755 -index 000000000000..90669be876b4 +index 000000000..90669be87 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/rte_ioctl.h @@ -0,0 +1,104 @@ @@ -1110226,7 +1110226,7 @@ index 000000000000..90669be876b4 +#endif /* _rte_ioctl_h_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/sbchipc.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/sbchipc.h new file mode 100755 -index 000000000000..f7eb1cfde400 +index 000000000..f7eb1cfde --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/sbchipc.h @@ -0,0 +1,4619 @@ @@ -1114851,7 +1114851,7 @@ index 000000000000..f7eb1cfde400 +#endif /* _SBCHIPC_H */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/sbconfig.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/sbconfig.h new file mode 100755 -index 000000000000..b05cd510aa0b +index 000000000..b05cd510a --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/sbconfig.h @@ -0,0 +1,286 @@ @@ -1115143,7 +1115143,7 @@ index 000000000000..b05cd510aa0b +#endif /* _SBCONFIG_H */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/sbgci.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/sbgci.h new file mode 100755 -index 000000000000..bbf0e4337124 +index 000000000..bbf0e4337 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/sbgci.h @@ -0,0 +1,274 @@ @@ -1115423,7 +1115423,7 @@ index 000000000000..bbf0e4337124 +#endif /* _SBGCI_H */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/sbhndarm.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/sbhndarm.h new file mode 100755 -index 000000000000..ee1279a4a807 +index 000000000..ee1279a4a --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/sbhndarm.h @@ -0,0 +1,142 @@ @@ -1115571,7 +1115571,7 @@ index 000000000000..ee1279a4a807 +#endif /* _sbhndarm_h_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/sbhnddma.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/sbhnddma.h new file mode 100755 -index 000000000000..52a39dc6d415 +index 000000000..52a39dc6d --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/sbhnddma.h @@ -0,0 +1,450 @@ @@ -1116027,7 +1116027,7 @@ index 000000000000..52a39dc6d415 +#endif /* _sbhnddma_h_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/sbpcmcia.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/sbpcmcia.h new file mode 100755 -index 000000000000..8b6c6cf45556 +index 000000000..8b6c6cf45 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/sbpcmcia.h @@ -0,0 +1,138 @@ @@ -1116171,7 +1116171,7 @@ index 000000000000..8b6c6cf45556 +#endif /* _SBPCMCIA_H */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/sbsdio.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/sbsdio.h new file mode 100755 -index 000000000000..ba7d66266afb +index 000000000..ba7d66266 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/sbsdio.h @@ -0,0 +1,189 @@ @@ -1116366,7 +1116366,7 @@ index 000000000000..ba7d66266afb +#endif /* _SBSDIO_H */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/sbsdpcmdev.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/sbsdpcmdev.h new file mode 100755 -index 000000000000..c60600d81f33 +index 000000000..c60600d81 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/sbsdpcmdev.h @@ -0,0 +1,310 @@ @@ -1116682,7 +1116682,7 @@ index 000000000000..c60600d81f33 +#endif /* _sbsdpcmdev_h_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/sbsocram.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/sbsocram.h new file mode 100755 -index 000000000000..5e709aa52d4e +index 000000000..5e709aa52 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/sbsocram.h @@ -0,0 +1,205 @@ @@ -1116893,7 +1116893,7 @@ index 000000000000..5e709aa52d4e +#endif /* _SBSOCRAM_H */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/sbsysmem.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/sbsysmem.h new file mode 100755 -index 000000000000..065b3f1980f6 +index 000000000..065b3f198 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/sbsysmem.h @@ -0,0 +1,181 @@ @@ -1117080,7 +1117080,7 @@ index 000000000000..065b3f1980f6 +#endif /* _SBSYSMEM_H */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/sdio.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/sdio.h new file mode 100755 -index 000000000000..844fc2780d5b +index 000000000..844fc2780 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/sdio.h @@ -0,0 +1,626 @@ @@ -1117712,7 +1117712,7 @@ index 000000000000..844fc2780d5b +#endif /* _SDIO_H */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/sdioh.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/sdioh.h new file mode 100755 -index 000000000000..327d1c4d0e1f +index 000000000..327d1c4d0 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/sdioh.h @@ -0,0 +1,451 @@ @@ -1118169,7 +1118169,7 @@ index 000000000000..327d1c4d0e1f +#endif /* _SDIOH_H */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/sdiovar.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/sdiovar.h new file mode 100755 -index 000000000000..bfbe2bf94390 +index 000000000..bfbe2bf94 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/sdiovar.h @@ -0,0 +1,125 @@ @@ -1118300,7 +1118300,7 @@ index 000000000000..bfbe2bf94390 +#endif /* _sdiovar_h_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/sdspi.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/sdspi.h new file mode 100755 -index 000000000000..d42f4c783490 +index 000000000..d42f4c783 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/sdspi.h @@ -0,0 +1,79 @@ @@ -1118385,7 +1118385,7 @@ index 000000000000..d42f4c783490 +#endif /* _SD_SPI_H */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/siutils.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/siutils.h new file mode 100755 -index 000000000000..eba0d0a97c89 +index 000000000..eba0d0a97 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/siutils.h @@ -0,0 +1,810 @@ @@ -1119201,7 +1119201,7 @@ index 000000000000..eba0d0a97c89 +#endif /* _siutils_h_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/spid.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/spid.h new file mode 100755 -index 000000000000..3a08b59986ac +index 000000000..3a08b5998 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/spid.h @@ -0,0 +1,169 @@ @@ -1119376,7 +1119376,7 @@ index 000000000000..3a08b59986ac +#endif /* _SPI_H */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/trxhdr.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/trxhdr.h new file mode 100755 -index 000000000000..b717e62017d9 +index 000000000..b717e6201 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/trxhdr.h @@ -0,0 +1,96 @@ @@ -1119478,7 +1119478,7 @@ index 000000000000..b717e62017d9 +#endif /* _TRX_HDR_H */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/typedefs.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/typedefs.h new file mode 100755 -index 000000000000..c446005668db +index 000000000..c44600566 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/typedefs.h @@ -0,0 +1,368 @@ @@ -1119852,7 +1119852,7 @@ index 000000000000..c446005668db +#endif /* _TYPEDEFS_H_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/usbrdl.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/usbrdl.h new file mode 100755 -index 000000000000..f15fbd697cea +index 000000000..f15fbd697 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/usbrdl.h @@ -0,0 +1,135 @@ @@ -1119993,7 +1119993,7 @@ index 000000000000..f15fbd697cea +#endif /* _USB_RDL_H */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/vlan.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/vlan.h new file mode 100755 -index 000000000000..ddc64a9381cb +index 000000000..ddc64a938 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/vlan.h @@ -0,0 +1,98 @@ @@ -1120097,7 +1120097,7 @@ index 000000000000..ddc64a9381cb +#endif /* _vlan_h_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/wlfc_proto.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/wlfc_proto.h new file mode 100755 -index 000000000000..0b592c6a2bc6 +index 000000000..0b592c6a2 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/wlfc_proto.h @@ -0,0 +1,414 @@ @@ -1120517,7 +1120517,7 @@ index 000000000000..0b592c6a2bc6 +#endif /* __wlfc_proto_definitions_h__ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/wlioctl.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/wlioctl.h new file mode 100755 -index 000000000000..7f14967db99d +index 000000000..7f14967db --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/wlioctl.h @@ -0,0 +1,20752 @@ @@ -1141275,7 +1141275,7 @@ index 000000000000..7f14967db99d +#endif /* _wlioctl_h_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/wlioctl_defs.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/wlioctl_defs.h new file mode 100755 -index 000000000000..100b836284ce +index 000000000..100b83628 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/wlioctl_defs.h @@ -0,0 +1,2466 @@ @@ -1143747,7 +1143747,7 @@ index 000000000000..100b836284ce +#endif /* wlioctl_defs_h */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/wlioctl_utils.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/wlioctl_utils.h new file mode 100755 -index 000000000000..6dee521a3853 +index 000000000..6dee521a3 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/wlioctl_utils.h @@ -0,0 +1,62 @@ @@ -1143815,7 +1143815,7 @@ index 000000000000..6dee521a3853 +#endif /* _wlioctl_utils_h_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/wpa.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/wpa.h new file mode 100755 -index 000000000000..d618ea91b1ee +index 000000000..d618ea91b --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/wpa.h @@ -0,0 +1,312 @@ @@ -1144133,7 +1144133,7 @@ index 000000000000..d618ea91b1ee +#endif /* _proto_wpa_h_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/wps.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/wps.h new file mode 100755 -index 000000000000..c2ebace54013 +index 000000000..c2ebace54 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/include/wps.h @@ -0,0 +1,386 @@ @@ -1144525,7 +1144525,7 @@ index 000000000000..c2ebace54013 +#endif /* _WPS_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/linux_osl.c b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/linux_osl.c new file mode 100755 -index 000000000000..321ee05c4ccb +index 000000000..321ee05c4 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/linux_osl.c @@ -0,0 +1,2124 @@ @@ -1146656,7 +1146656,7 @@ index 000000000000..321ee05c4ccb \ No newline at end of file diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/linux_osl_priv.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/linux_osl_priv.h new file mode 100755 -index 000000000000..f56f292c0ecf +index 000000000..f56f292c0 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/linux_osl_priv.h @@ -0,0 +1,185 @@ @@ -1146847,7 +1146847,7 @@ index 000000000000..f56f292c0ecf +#endif /* _LINUX_OSL_PRIV_H_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/linux_pkt.c b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/linux_pkt.c new file mode 100755 -index 000000000000..e66ea740c092 +index 000000000..e66ea740c --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/linux_pkt.c @@ -0,0 +1,694 @@ @@ -1147547,7 +1147547,7 @@ index 000000000000..e66ea740c092 +#endif /* LINUX_VERSION >= 3.6.0 && TSQ_MULTIPLIER */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/otpdefs.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/otpdefs.h new file mode 100755 -index 000000000000..542e5a90b3f3 +index 000000000..542e5a90b --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/otpdefs.h @@ -0,0 +1,122 @@ @@ -1147675,7 +1147675,7 @@ index 000000000000..542e5a90b3f3 +#endif /* _OTPDEFS_H */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/pcie_core.c b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/pcie_core.c new file mode 100755 -index 000000000000..dd54c675a180 +index 000000000..dd54c675a --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/pcie_core.c @@ -0,0 +1,159 @@ @@ -1147840,7 +1147840,7 @@ index 000000000000..dd54c675a180 +#endif /* BCMDRIVER */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/sbutils.c b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/sbutils.c new file mode 100755 -index 000000000000..bd22c9aab076 +index 000000000..bd22c9aab --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/sbutils.c @@ -0,0 +1,1094 @@ @@ -1148940,7 +1148940,7 @@ index 000000000000..bd22c9aab076 +#endif // endif diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/siutils.c b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/siutils.c new file mode 100755 -index 000000000000..1f9cc39d17a4 +index 000000000..1f9cc39d1 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/siutils.c @@ -0,0 +1,3801 @@ @@ -1152747,7 +1152747,7 @@ index 000000000000..1f9cc39d17a4 +} diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/siutils_priv.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/siutils_priv.h new file mode 100755 -index 000000000000..1686e888248d +index 000000000..1686e8882 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/siutils_priv.h @@ -0,0 +1,356 @@ @@ -1153109,7 +1153109,7 @@ index 000000000000..1686e888248d +#endif /* _siutils_priv_h_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/wl_android.c b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/wl_android.c new file mode 100755 -index 000000000000..a8e96385bd8d +index 000000000..a8e96385b --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/wl_android.c @@ -0,0 +1,6630 @@ @@ -1159745,7 +1159745,7 @@ index 000000000000..a8e96385bd8d +#endif /* WL_STATIC_IF */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/wl_android.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/wl_android.h new file mode 100755 -index 000000000000..b0b4a4dce1ef +index 000000000..b0b4a4dce --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/wl_android.h @@ -0,0 +1,418 @@ @@ -1160169,7 +1160169,7 @@ index 000000000000..b0b4a4dce1ef +#endif /* _wl_android_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/wl_android_ext.c b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/wl_android_ext.c new file mode 100755 -index 000000000000..ff10499ff189 +index 000000000..ff10499ff --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/wl_android_ext.c @@ -0,0 +1,7973 @@ @@ -1168148,7 +1168148,7 @@ index 000000000000..ff10499ff189 + diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/wl_cfg80211.c b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/wl_cfg80211.c new file mode 100755 -index 000000000000..7680903aa450 +index 000000000..7680903aa --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/wl_cfg80211.c @@ -0,0 +1,24840 @@ @@ -1192994,7 +1192994,7 @@ index 000000000000..7680903aa450 +} diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/wl_cfg80211.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/wl_cfg80211.h new file mode 100755 -index 000000000000..39e827d8b887 +index 000000000..39e827d8b --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/wl_cfg80211.h @@ -0,0 +1,2451 @@ @@ -1195451,7 +1195451,7 @@ index 000000000000..39e827d8b887 +#endif /* _wl_cfg80211_h_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/wl_cfg_btcoex.c b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/wl_cfg_btcoex.c new file mode 100755 -index 000000000000..4780d116e5fe +index 000000000..4780d116e --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/wl_cfg_btcoex.c @@ -0,0 +1,569 @@ @@ -1196026,7 +1196026,7 @@ index 000000000000..4780d116e5fe +} diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/wl_cfgnan.c b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/wl_cfgnan.c new file mode 100755 -index 000000000000..70a2022b0c9f +index 000000000..70a2022b0 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/wl_cfgnan.c @@ -0,0 +1,8182 @@ @@ -1204214,7 +1204214,7 @@ index 000000000000..70a2022b0c9f +#endif /* WL_NAN */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/wl_cfgnan.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/wl_cfgnan.h new file mode 100755 -index 000000000000..6eca82b8067c +index 000000000..6eca82b80 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/wl_cfgnan.h @@ -0,0 +1,899 @@ @@ -1205119,7 +1205119,7 @@ index 000000000000..6eca82b8067c +#endif /* _wl_cfgnan_h_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/wl_cfgp2p.c b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/wl_cfgp2p.c new file mode 100755 -index 000000000000..2452ffa3b44e +index 000000000..510fbd2f0 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/wl_cfgp2p.c @@ -0,0 +1,2750 @@ @@ -1207875,7 +1207875,7 @@ index 000000000000..2452ffa3b44e +} diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/wl_cfgp2p.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/wl_cfgp2p.h new file mode 100755 -index 000000000000..e47f8af9b4d6 +index 000000000..e47f8af9b --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/wl_cfgp2p.h @@ -0,0 +1,458 @@ @@ -1208339,7 +1208339,7 @@ index 000000000000..e47f8af9b4d6 +#endif /* _wl_cfgp2p_h_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/wl_cfgscan.c b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/wl_cfgscan.c new file mode 100755 -index 000000000000..8b9382deb9e0 +index 000000000..8b9382deb --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/wl_cfgscan.c @@ -0,0 +1,3298 @@ @@ -1211643,7 +1211643,7 @@ index 000000000000..8b9382deb9e0 +} diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/wl_cfgscan.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/wl_cfgscan.h new file mode 100755 -index 000000000000..236d3ed2971f +index 000000000..236d3ed29 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/wl_cfgscan.h @@ -0,0 +1,96 @@ @@ -1211745,7 +1211745,7 @@ index 000000000000..236d3ed2971f +#endif /* _wl_cfgscan_h_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/wl_cfgvendor.c b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/wl_cfgvendor.c new file mode 100755 -index 000000000000..b2f6cb5087d0 +index 000000000..b2f6cb508 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/wl_cfgvendor.c @@ -0,0 +1,8751 @@ @@ -1220502,7 +1220502,7 @@ index 000000000000..b2f6cb5087d0 +#endif /* (LINUX_VERSION_CODE > KERNEL_VERSION(3, 13, 0)) || defined(WL_VENDOR_EXT_SUPPORT) */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/wl_cfgvendor.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/wl_cfgvendor.h new file mode 100755 -index 000000000000..b70aa354dad3 +index 000000000..b70aa354d --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/wl_cfgvendor.h @@ -0,0 +1,721 @@ @@ -1221229,7 +1221229,7 @@ index 000000000000..b70aa354dad3 +#endif /* _wl_cfgvendor_h_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/wl_dbg.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/wl_dbg.h new file mode 100755 -index 000000000000..640907ea81ff +index 000000000..640907ea8 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/wl_dbg.h @@ -0,0 +1,381 @@ @@ -1221616,7 +1221616,7 @@ index 000000000000..640907ea81ff +#endif /* _wl_dbg_h_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/wl_escan.c b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/wl_escan.c new file mode 100755 -index 000000000000..9d611bd843ff +index 000000000..9d611bd84 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/wl_escan.c @@ -0,0 +1,1691 @@ @@ -1223313,7 +1223313,7 @@ index 000000000000..9d611bd843ff + diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/wl_escan.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/wl_escan.h new file mode 100755 -index 000000000000..7e4241eae508 +index 000000000..7e4241eae --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/wl_escan.h @@ -0,0 +1,78 @@ @@ -1223397,7 +1223397,7 @@ index 000000000000..7e4241eae508 + diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/wl_event.c b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/wl_event.c new file mode 100755 -index 000000000000..9d3d860061fb +index 000000000..9d3d86006 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/wl_event.c @@ -0,0 +1,509 @@ @@ -1223912,7 +1223912,7 @@ index 000000000000..9d3d860061fb +#endif diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/wl_ext_genl.c b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/wl_ext_genl.c new file mode 100755 -index 000000000000..d1ff33ae4065 +index 000000000..d1ff33ae4 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/wl_ext_genl.c @@ -0,0 +1,568 @@ @@ -1224486,7 +1224486,7 @@ index 000000000000..d1ff33ae4065 + diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/wl_iw.c b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/wl_iw.c new file mode 100755 -index 000000000000..9281cdbe472e +index 000000000..9281cdbe4 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/wl_iw.c @@ -0,0 +1,4335 @@ @@ -1228827,7 +1228827,7 @@ index 000000000000..9281cdbe472e +#endif /* USE_IW */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/wl_iw.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/wl_iw.h new file mode 100755 -index 000000000000..ba2cae8bd7c6 +index 000000000..ba2cae8bd --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/wl_iw.h @@ -0,0 +1,178 @@ @@ -1229011,7 +1229011,7 @@ index 000000000000..ba2cae8bd7c6 +#endif /* _wl_iw_h_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/wl_linux_mon.c b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/wl_linux_mon.c new file mode 100755 -index 000000000000..7ed4d120de51 +index 000000000..3df2acde2 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/wl_linux_mon.c @@ -0,0 +1,474 @@ @@ -1229491,7 +1229491,7 @@ index 000000000000..7ed4d120de51 +} diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/wl_roam.c b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/wl_roam.c new file mode 100755 -index 000000000000..a7d49bddc3e6 +index 000000000..a7d49bddc --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/wl_roam.c @@ -0,0 +1,375 @@ @@ -1229872,7 +1229872,7 @@ index 000000000000..a7d49bddc3e6 +#endif /* ESCAN_CHANNEL_CACHE */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/wldev_common.c b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/wldev_common.c new file mode 100755 -index 000000000000..4a1aae7316e0 +index 000000000..4a1aae731 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/wldev_common.c @@ -0,0 +1,535 @@ @@ -1230413,7 +1230413,7 @@ index 000000000000..4a1aae7316e0 +} diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/wldev_common.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/wldev_common.h new file mode 100755 -index 000000000000..772152e79070 +index 000000000..772152e79 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/wldev_common.h @@ -0,0 +1,135 @@ @@ -1230554,7 +1230554,7 @@ index 000000000000..772152e79070 +#endif /* __WLDEV_COMMON_H__ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/rk_wifi_config.c b/drivers/net/wireless/rockchip_wlan/rkwifi/rk_wifi_config.c new file mode 100755 -index 000000000000..82799df987e8 +index 000000000..82799df98 --- /dev/null +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/rk_wifi_config.c @@ -0,0 +1,30 @@ @@ -1230589,7 +1230589,7 @@ index 000000000000..82799df987e8 +EXPORT_SYMBOL(rkwifi_set_firmware); +MODULE_LICENSE("GPL"); diff --git a/drivers/nvmem/core.c b/drivers/nvmem/core.c -index 6b170083cd24..a8d527cda933 100644 +index 6b170083c..a8d527cda 100644 --- a/drivers/nvmem/core.c +++ b/drivers/nvmem/core.c @@ -1665,7 +1665,11 @@ static void __exit nvmem_exit(void) @@ -1230605,7 +1230605,7 @@ index 6b170083cd24..a8d527cda933 100644 MODULE_AUTHOR("Srinivas Kandagatla "); +MODULE_LICENSE("GPL v2"); diff --git a/drivers/pinctrl/pinctrl-rk805.c b/drivers/pinctrl/pinctrl-rk805.c -index c6f4229eb106..46e426cf4e20 100644 +index c6f4229eb..46e426cf4 100644 --- a/drivers/pinctrl/pinctrl-rk805.c +++ b/drivers/pinctrl/pinctrl-rk805.c @@ -78,6 +78,7 @@ struct rk805_pctrl_info { @@ -1261381,7 +1261381,7 @@ index c6f4229eb106..46e426cf4e20 100644 MODULE_DESCRIPTION("RK805 pin control and GPIO driver"); MODULE_AUTHOR("Joseph Chen "); diff --git a/drivers/pinctrl/pinctrl-rockchip.c b/drivers/pinctrl/pinctrl-rockchip.c -index 53a0badc6b03..c03815d27e7d 100644 +index 53a0badc6..c03815d27 100644 --- a/drivers/pinctrl/pinctrl-rockchip.c +++ b/drivers/pinctrl/pinctrl-rockchip.c @@ -16,12 +16,14 @@ @@ -1264718,7 +1264718,7 @@ index 53a0badc6b03..c03815d27e7d 100644 +MODULE_DEVICE_TABLE(of, rockchip_pinctrl_dt_match); diff --git a/drivers/pinctrl/pinctrl-rockchip.h b/drivers/pinctrl/pinctrl-rockchip.h new file mode 100755 -index 000000000000..cd1662db5c97 +index 000000000..cd1662db5 --- /dev/null +++ b/drivers/pinctrl/pinctrl-rockchip.h @@ -0,0 +1,277 @@ @@ -1265001,7 +1265001,7 @@ index 000000000000..cd1662db5c97 +#endif diff --git a/drivers/power/ec_battery.c b/drivers/power/ec_battery.c new file mode 100755 -index 000000000000..9627cd1a0a11 +index 000000000..9627cd1a0 --- /dev/null +++ b/drivers/power/ec_battery.c @@ -0,0 +1,466 @@ @@ -1265472,7 +1265472,7 @@ index 000000000000..9627cd1a0a11 +MODULE_ALIAS("platform:ec-charger"); +MODULE_AUTHOR("Shunqing Chen"); diff --git a/drivers/power/reset/gpio-poweroff.c b/drivers/power/reset/gpio-poweroff.c -index 1c5af2fef142..c5067eb75370 100644 +index 1c5af2fef..c5067eb75 100644 --- a/drivers/power/reset/gpio-poweroff.c +++ b/drivers/power/reset/gpio-poweroff.c @@ -90,7 +90,6 @@ static const struct of_device_id of_gpio_poweroff_match[] = { @@ -1265485,7 +1265485,7 @@ index 1c5af2fef142..c5067eb75370 100644 .probe = gpio_poweroff_probe, diff --git a/drivers/power/reset/reboot-mode.h b/drivers/power/reset/reboot-mode.h new file mode 100755 -index 000000000000..342df786d043 +index 000000000..342df786d --- /dev/null +++ b/drivers/power/reset/reboot-mode.h @@ -0,0 +1,7 @@ @@ -1265497,7 +1265497,7 @@ index 000000000000..342df786d043 + +#endif diff --git a/drivers/power/supply/Kconfig b/drivers/power/supply/Kconfig -index 0aa46b451017..31abccec4d93 100644 +index 0aa46b451..31abccec4 100644 --- a/drivers/power/supply/Kconfig +++ b/drivers/power/supply/Kconfig @@ -629,6 +629,12 @@ config CHARGER_BQ2515X @@ -1265566,7 +1265566,7 @@ index 0aa46b451017..31abccec4d93 100644 + endif # POWER_SUPPLY diff --git a/drivers/power/supply/Makefile b/drivers/power/supply/Makefile -index dd4b86318cd9..eec17d90f846 100644 +index dd4b86318..eec17d90f 100644 --- a/drivers/power/supply/Makefile +++ b/drivers/power/supply/Makefile @@ -83,6 +83,7 @@ obj-$(CONFIG_CHARGER_BQ24190) += bq24190_charger.o @@ -1265588,7 +1265588,7 @@ index dd4b86318cd9..eec17d90f846 100644 +obj-$(CONFIG_BATTERY_RK818) += rk818_battery.o +obj-$(CONFIG_CHARGER_RK818) += rk818_charger.o diff --git a/drivers/power/supply/ab8500_btemp.c b/drivers/power/supply/ab8500_btemp.c -index 4417d64c31f9..909f0242bacb 100644 +index 4417d64c3..909f0242b 100644 --- a/drivers/power/supply/ab8500_btemp.c +++ b/drivers/power/supply/ab8500_btemp.c @@ -1142,7 +1142,6 @@ static const struct of_device_id ab8500_btemp_match[] = { @@ -1265600,7 +1265600,7 @@ index 4417d64c31f9..909f0242bacb 100644 static struct platform_driver ab8500_btemp_driver = { .probe = ab8500_btemp_probe, diff --git a/drivers/power/supply/ab8500_charger.c b/drivers/power/supply/ab8500_charger.c -index 3d627768ad7b..db65be026920 100644 +index 3d627768a..db65be026 100644 --- a/drivers/power/supply/ab8500_charger.c +++ b/drivers/power/supply/ab8500_charger.c @@ -413,14 +413,6 @@ static void ab8500_enable_disable_sw_fallback(struct ab8500_charger *di, @@ -1265644,7 +1265644,7 @@ index 3d627768ad7b..db65be026920 100644 static struct platform_driver ab8500_charger_driver = { .probe = ab8500_charger_probe, diff --git a/drivers/power/supply/ab8500_fg.c b/drivers/power/supply/ab8500_fg.c -index f1da757c939f..592a73d4dde6 100644 +index f1da757c9..592a73d4d 100644 --- a/drivers/power/supply/ab8500_fg.c +++ b/drivers/power/supply/ab8500_fg.c @@ -3249,7 +3249,6 @@ static const struct of_device_id ab8500_fg_match[] = { @@ -1265656,7 +1265656,7 @@ index f1da757c939f..592a73d4dde6 100644 static struct platform_driver ab8500_fg_driver = { .probe = ab8500_fg_probe, diff --git a/drivers/power/supply/axp288_fuel_gauge.c b/drivers/power/supply/axp288_fuel_gauge.c -index be24529157be..148eb8105803 100644 +index be2452915..148eb8105 100644 --- a/drivers/power/supply/axp288_fuel_gauge.c +++ b/drivers/power/supply/axp288_fuel_gauge.c @@ -149,7 +149,7 @@ static int fuel_gauge_reg_readb(struct axp288_fg_info *info, int reg) @@ -1265679,7 +1265679,7 @@ index be24529157be..148eb8105803 100644 } diff --git a/drivers/power/supply/bq25700_charger.c b/drivers/power/supply/bq25700_charger.c new file mode 100755 -index 000000000000..5b2a516509ed +index 000000000..5b2a51650 --- /dev/null +++ b/drivers/power/supply/bq25700_charger.c @@ -0,0 +1,2105 @@ @@ -1267789,7 +1267789,7 @@ index 000000000000..5b2a516509ed +MODULE_AUTHOR("shengfeixu "); +MODULE_DESCRIPTION("TI bq25700 Charger Driver"); diff --git a/drivers/power/supply/charger-manager.c b/drivers/power/supply/charger-manager.c -index 333349275b96..6fcebe441552 100644 +index 333349275..6fcebe441 100644 --- a/drivers/power/supply/charger-manager.c +++ b/drivers/power/supply/charger-manager.c @@ -1279,7 +1279,6 @@ static const struct of_device_id charger_manager_match[] = { @@ -1267801,7 +1267801,7 @@ index 333349275b96..6fcebe441552 100644 static struct charger_desc *of_cm_parse_desc(struct device *dev) { diff --git a/drivers/power/supply/cw2015_battery.c b/drivers/power/supply/cw2015_battery.c -index de1fa71be1e8..0146f1bfc29b 100644 +index de1fa71be..0146f1bfc 100644 --- a/drivers/power/supply/cw2015_battery.c +++ b/drivers/power/supply/cw2015_battery.c @@ -673,9 +673,7 @@ static int cw_bat_probe(struct i2c_client *client) @@ -1267816,7 +1267816,7 @@ index de1fa71be1e8..0146f1bfc29b 100644 } diff --git a/drivers/power/supply/max17042_battery.c b/drivers/power/supply/max17042_battery.c -index 69bb0f56e492..2e9672fe4df1 100644 +index 69bb0f56e..2e9672fe4 100644 --- a/drivers/power/supply/max17042_battery.c +++ b/drivers/power/supply/max17042_battery.c @@ -738,7 +738,7 @@ static inline void max17042_override_por_values(struct max17042_chip *chip) @@ -1267852,7 +1267852,7 @@ index 69bb0f56e492..2e9672fe4df1 100644 /* * On ACPI systems the IRQ may be handled by ACPI-event code, diff --git a/drivers/power/supply/power_supply_core.c b/drivers/power/supply/power_supply_core.c -index 38e3aa642131..668369b26f99 100644 +index 38e3aa642..668369b26 100644 --- a/drivers/power/supply/power_supply_core.c +++ b/drivers/power/supply/power_supply_core.c @@ -32,6 +32,13 @@ EXPORT_SYMBOL_GPL(power_supply_notifier); @@ -1267948,7 +1267948,7 @@ index 38e3aa642131..668369b26f99 100644 { struct power_supply **psy = res; diff --git a/drivers/power/supply/power_supply_sysfs.c b/drivers/power/supply/power_supply_sysfs.c -index a616b9d8f43c..a5e65636057d 100644 +index a616b9d8f..a5e656360 100644 --- a/drivers/power/supply/power_supply_sysfs.c +++ b/drivers/power/supply/power_supply_sysfs.c @@ -89,6 +89,7 @@ static const char * const POWER_SUPPLY_CHARGE_TYPE_TEXT[] = { @@ -1267961,7 +1267961,7 @@ index a616b9d8f43c..a5e65636057d 100644 static const char * const POWER_SUPPLY_HEALTH_TEXT[] = { diff --git a/drivers/power/supply/rk816_battery.c b/drivers/power/supply/rk816_battery.c new file mode 100755 -index 000000000000..d204a0129a8d +index 000000000..d204a0129 --- /dev/null +++ b/drivers/power/supply/rk816_battery.c @@ -0,0 +1,5172 @@ @@ -1273139,7 +1273139,7 @@ index 000000000000..d204a0129a8d +MODULE_AUTHOR("chenjh"); diff --git a/drivers/power/supply/rk816_battery.h b/drivers/power/supply/rk816_battery.h new file mode 100755 -index 000000000000..b8b467114c1f +index 000000000..b8b467114 --- /dev/null +++ b/drivers/power/supply/rk816_battery.h @@ -0,0 +1,286 @@ @@ -1273431,7 +1273431,7 @@ index 000000000000..b8b467114c1f +#endif diff --git a/drivers/power/supply/rk817_battery.c b/drivers/power/supply/rk817_battery.c new file mode 100755 -index 000000000000..d9003ad9e534 +index 000000000..d9003ad9e --- /dev/null +++ b/drivers/power/supply/rk817_battery.c @@ -0,0 +1,3418 @@ @@ -1276855,7 +1276855,7 @@ index 000000000000..d9003ad9e534 +MODULE_LICENSE("GPL"); diff --git a/drivers/power/supply/rk817_charger.c b/drivers/power/supply/rk817_charger.c new file mode 100755 -index 000000000000..b7e4f7627bdb +index 000000000..b7e4f7627 --- /dev/null +++ b/drivers/power/supply/rk817_charger.c @@ -0,0 +1,1798 @@ @@ -1278659,7 +1278659,7 @@ index 000000000000..b7e4f7627bdb +MODULE_LICENSE("GPL"); diff --git a/drivers/power/supply/rk818_battery.c b/drivers/power/supply/rk818_battery.c new file mode 100755 -index 000000000000..90ff1fac163c +index 000000000..90ff1fac1 --- /dev/null +++ b/drivers/power/supply/rk818_battery.c @@ -0,0 +1,3622 @@ @@ -1282287,7 +1282287,7 @@ index 000000000000..90ff1fac163c +MODULE_AUTHOR("chenjh"); diff --git a/drivers/power/supply/rk818_battery.h b/drivers/power/supply/rk818_battery.h new file mode 100755 -index 000000000000..66cbbe9dac4c +index 000000000..66cbbe9da --- /dev/null +++ b/drivers/power/supply/rk818_battery.h @@ -0,0 +1,168 @@ @@ -1282461,7 +1282461,7 @@ index 000000000000..66cbbe9dac4c +#endif diff --git a/drivers/power/supply/rk818_charger.c b/drivers/power/supply/rk818_charger.c new file mode 100755 -index 000000000000..56961effd13c +index 000000000..56961effd --- /dev/null +++ b/drivers/power/supply/rk818_charger.c @@ -0,0 +1,1889 @@ @@ -1284355,7 +1284355,7 @@ index 000000000000..56961effd13c +MODULE_ALIAS("platform:rk818-charger"); +MODULE_AUTHOR("chenjh"); diff --git a/drivers/power/supply/rt5033_battery.c b/drivers/power/supply/rt5033_battery.c -index 9ad0afe83d1b..f330452341f0 100644 +index 9ad0afe83..f33045234 100644 --- a/drivers/power/supply/rt5033_battery.c +++ b/drivers/power/supply/rt5033_battery.c @@ -164,16 +164,9 @@ static const struct i2c_device_id rt5033_battery_id[] = { @@ -1284376,7 +1284376,7 @@ index 9ad0afe83d1b..f330452341f0 100644 .probe = rt5033_battery_probe, .remove = rt5033_battery_remove, diff --git a/drivers/power/supply/sc2731_charger.c b/drivers/power/supply/sc2731_charger.c -index 288b79836c13..335cb857ef30 100644 +index 288b79836..335cb857e 100644 --- a/drivers/power/supply/sc2731_charger.c +++ b/drivers/power/supply/sc2731_charger.c @@ -524,7 +524,6 @@ static const struct of_device_id sc2731_charger_of_match[] = { @@ -1284388,7 +1284388,7 @@ index 288b79836c13..335cb857ef30 100644 static struct platform_driver sc2731_charger_driver = { .driver = { diff --git a/drivers/power/supply/sc27xx_fuel_gauge.c b/drivers/power/supply/sc27xx_fuel_gauge.c -index 1ae8374e1ceb..9c627618c224 100644 +index 1ae8374e1..9c627618c 100644 --- a/drivers/power/supply/sc27xx_fuel_gauge.c +++ b/drivers/power/supply/sc27xx_fuel_gauge.c @@ -1342,7 +1342,6 @@ static const struct of_device_id sc27xx_fgu_of_match[] = { @@ -1284400,7 +1284400,7 @@ index 1ae8374e1ceb..9c627618c224 100644 static struct platform_driver sc27xx_fgu_driver = { .probe = sc27xx_fgu_probe, diff --git a/drivers/power/supply/smb347-charger.c b/drivers/power/supply/smb347-charger.c -index 912e2184f918..8cfbd8d6b478 100644 +index 912e2184f..8cfbd8d6b 100644 --- a/drivers/power/supply/smb347-charger.c +++ b/drivers/power/supply/smb347-charger.c @@ -56,7 +56,6 @@ @@ -1284429,7 +1284429,7 @@ index 912e2184f918..8cfbd8d6b478 100644 * command register unless pin control is specified in the platform diff --git a/drivers/power/sy6982c_charger.c b/drivers/power/sy6982c_charger.c new file mode 100755 -index 000000000000..dfa82c3f8d27 +index 000000000..dfa82c3f8 --- /dev/null +++ b/drivers/power/sy6982c_charger.c @@ -0,0 +1,401 @@ @@ -1284836,7 +1284836,7 @@ index 000000000000..dfa82c3f8d27 +MODULE_AUTHOR("chen Shunqing"); diff --git a/drivers/power/universal_charger.c b/drivers/power/universal_charger.c new file mode 100755 -index 000000000000..0f7b4c9e8003 +index 000000000..0f7b4c9e8 --- /dev/null +++ b/drivers/power/universal_charger.c @@ -0,0 +1,419 @@ @@ -1285260,7 +1285260,7 @@ index 000000000000..0f7b4c9e8003 +MODULE_ALIAS("platform:universal-charger"); +MODULE_AUTHOR("chen Shunqing"); diff --git a/drivers/pwm/Kconfig b/drivers/pwm/Kconfig -index 63be5362fd3a..ca5db43118d4 100644 +index 63be5362f..ca5db4311 100644 --- a/drivers/pwm/Kconfig +++ b/drivers/pwm/Kconfig @@ -408,6 +408,12 @@ config PWM_ROCKCHIP @@ -1285277,7 +1285277,7 @@ index 63be5362fd3a..ca5db43118d4 100644 tristate "Samsung PWM support" depends on PLAT_SAMSUNG || ARCH_S5PV210 || ARCH_EXYNOS || COMPILE_TEST diff --git a/drivers/pwm/pwm-rockchip.c b/drivers/pwm/pwm-rockchip.c -index 1f3079562b38..e6394eb8176b 100644 +index 1f3079562..e6394eb81 100644 --- a/drivers/pwm/pwm-rockchip.c +++ b/drivers/pwm/pwm-rockchip.c @@ -11,6 +11,7 @@ @@ -1285561,7 +1285561,7 @@ index 1f3079562b38..e6394eb8176b 100644 MODULE_AUTHOR("Beniamino Galvani "); MODULE_DESCRIPTION("Rockchip SoC PWM driver"); diff --git a/drivers/pwm/sysfs.c b/drivers/pwm/sysfs.c -index 9903c3a7eced..54619969dce6 100644 +index 9903c3a7e..54619969d 100644 --- a/drivers/pwm/sysfs.c +++ b/drivers/pwm/sysfs.c @@ -103,6 +103,43 @@ static ssize_t duty_cycle_store(struct device *child, @@ -1285629,7 +1285629,7 @@ index 9903c3a7eced..54619969dce6 100644 &dev_attr_polarity.attr, &dev_attr_capture.attr, diff --git a/drivers/regulator/Kconfig b/drivers/regulator/Kconfig -index 020a00d6696b..2da933776c81 100644 +index 020a00d66..2da933776 100644 --- a/drivers/regulator/Kconfig +++ b/drivers/regulator/Kconfig @@ -1279,5 +1279,11 @@ config REGULATOR_QCOM_LABIBB @@ -1285645,7 +1285645,7 @@ index 020a00d6696b..2da933776c81 100644 endif diff --git a/drivers/regulator/Makefile b/drivers/regulator/Makefile -index 6ebae516258e..17e3300e71d5 100644 +index 6ebae5162..17e3300e7 100644 --- a/drivers/regulator/Makefile +++ b/drivers/regulator/Makefile @@ -24,6 +24,7 @@ obj-$(CONFIG_REGULATOR_AD5398) += ad5398.o @@ -1285680,7 +1285680,7 @@ index 6ebae516258e..17e3300e71d5 100644 ccflags-$(CONFIG_REGULATOR_DEBUG) += -DDEBUG diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c -index a6d27334a71d..470354ae07a4 100644 +index a6d27334a..470354ae0 100644 --- a/drivers/regulator/core.c +++ b/drivers/regulator/core.c @@ -51,6 +51,7 @@ static LIST_HEAD(regulator_map_list); @@ -1286080,7 +1286080,7 @@ index a6d27334a71d..470354ae07a4 100644 static int regulator_late_cleanup(struct device *dev, void *data) { diff --git a/drivers/regulator/fan53555.c b/drivers/regulator/fan53555.c -index aa426183b6a1..5d83e1311983 100644 +index aa426183b..5d83e1311 100644 --- a/drivers/regulator/fan53555.c +++ b/drivers/regulator/fan53555.c @@ -20,10 +20,23 @@ @@ -1286774,7 +1286774,7 @@ index aa426183b6a1..5d83e1311983 100644 diff --git a/drivers/regulator/lp8752.c b/drivers/regulator/lp8752.c new file mode 100755 -index 000000000000..cf8e685f304a +index 000000000..cf8e685f3 --- /dev/null +++ b/drivers/regulator/lp8752.c @@ -0,0 +1,316 @@ @@ -1287096,7 +1287096,7 @@ index 000000000000..cf8e685f304a +MODULE_LICENSE("GPL v2"); diff --git a/drivers/regulator/mp8865-regulator.c b/drivers/regulator/mp8865-regulator.c new file mode 100755 -index 000000000000..607e3a8f2df4 +index 000000000..607e3a8f2 --- /dev/null +++ b/drivers/regulator/mp8865-regulator.c @@ -0,0 +1,248 @@ @@ -1287349,7 +1287349,7 @@ index 000000000000..607e3a8f2df4 +MODULE_DESCRIPTION("mp8865 voltage regulator driver"); +MODULE_LICENSE("GPL v2"); diff --git a/drivers/regulator/of_regulator.c b/drivers/regulator/of_regulator.c -index 06c0b15fe4c0..564f928eb1db 100644 +index 06c0b15fe..564f928eb 100644 --- a/drivers/regulator/of_regulator.c +++ b/drivers/regulator/of_regulator.c @@ -413,8 +413,12 @@ device_node *regulator_of_get_init_node(struct device *dev, @@ -1287368,7 +1287368,7 @@ index 06c0b15fe4c0..564f928eb1db 100644 if (!strcmp(desc->of_match, name)) { of_node_put(search); diff --git a/drivers/regulator/rk808-regulator.c b/drivers/regulator/rk808-regulator.c -index e926c1a85846..bb8b2f604a24 100644 +index e926c1a85..bb8b2f604 100644 --- a/drivers/regulator/rk808-regulator.c +++ b/drivers/regulator/rk808-regulator.c @@ -34,6 +34,11 @@ @@ -1288258,7 +1288258,7 @@ index e926c1a85846..bb8b2f604a24 100644 MODULE_AUTHOR("Zhang Qing "); diff --git a/drivers/regulator/scmi-regulator.c b/drivers/regulator/scmi-regulator.c new file mode 100755 -index 000000000000..9a4297276098 +index 000000000..9a4297276 --- /dev/null +++ b/drivers/regulator/scmi-regulator.c @@ -0,0 +1,421 @@ @@ -1288685,7 +1288685,7 @@ index 000000000000..9a4297276098 +MODULE_LICENSE("GPL v2"); diff --git a/drivers/regulator/syr82x.c b/drivers/regulator/syr82x.c new file mode 100755 -index 000000000000..4f7b0892a3bc +index 000000000..4f7b0892a --- /dev/null +++ b/drivers/regulator/syr82x.c @@ -0,0 +1,520 @@ @@ -1289211,7 +1289211,7 @@ index 000000000000..4f7b0892a3bc + diff --git a/drivers/regulator/tps549b22-regulator.c b/drivers/regulator/tps549b22-regulator.c new file mode 100755 -index 000000000000..bae2a67f4345 +index 000000000..bae2a67f4 --- /dev/null +++ b/drivers/regulator/tps549b22-regulator.c @@ -0,0 +1,437 @@ @@ -1289654,7 +1289654,7 @@ index 000000000000..bae2a67f4345 +MODULE_DESCRIPTION(" tps549b22 dcdc driver"); diff --git a/drivers/regulator/xz3216.c b/drivers/regulator/xz3216.c new file mode 100755 -index 000000000000..54182559b161 +index 000000000..54182559b --- /dev/null +++ b/drivers/regulator/xz3216.c @@ -0,0 +1,404 @@ @@ -1290064,7 +1290064,7 @@ index 000000000000..54182559b161 +MODULE_DESCRIPTION("xz3216 PMIC driver"); diff --git a/drivers/rk_nand/Kconfig b/drivers/rk_nand/Kconfig new file mode 100755 -index 000000000000..c49a1c28b702 +index 000000000..c49a1c28b --- /dev/null +++ b/drivers/rk_nand/Kconfig @@ -0,0 +1,10 @@ @@ -1290080,7 +1290080,7 @@ index 000000000000..c49a1c28b702 +endif diff --git a/drivers/rk_nand/Makefile b/drivers/rk_nand/Makefile new file mode 100755 -index 000000000000..dbd156f6e78b +index 000000000..dbd156f6e --- /dev/null +++ b/drivers/rk_nand/Makefile @@ -0,0 +1,9 @@ @@ -1290095,7 +1290095,7 @@ index 000000000000..dbd156f6e78b +endif diff --git a/drivers/rk_nand/rk_ftl_api.h b/drivers/rk_nand/rk_ftl_api.h new file mode 100755 -index 000000000000..ebde01e3dbb6 +index 000000000..ebde01e3d --- /dev/null +++ b/drivers/rk_nand/rk_ftl_api.h @@ -0,0 +1,41 @@ @@ -1290142,7 +1290142,7 @@ index 000000000000..ebde01e3dbb6 + diff --git a/drivers/rk_nand/rk_ftl_arm_v7.S b/drivers/rk_nand/rk_ftl_arm_v7.S new file mode 100755 -index 000000000000..db549c3b269e +index 000000000..db549c3b2 --- /dev/null +++ b/drivers/rk_nand/rk_ftl_arm_v7.S @@ -0,0 +1,30165 @@ @@ -1320313,7 +1320313,7 @@ index 000000000000..db549c3b269e + .ascii "\0013vendor storage %x,%x,%x\012\000" diff --git a/drivers/rk_nand/rk_ftl_arm_v7_thumb.S b/drivers/rk_nand/rk_ftl_arm_v7_thumb.S new file mode 100755 -index 000000000000..a67898acb677 +index 000000000..a67898acb --- /dev/null +++ b/drivers/rk_nand/rk_ftl_arm_v7_thumb.S @@ -0,0 +1,30192 @@ @@ -1350511,7 +1350511,7 @@ index 000000000000..a67898acb677 + .ascii "\0013vendor storage %x,%x,%x\012\000" diff --git a/drivers/rk_nand/rk_ftl_arm_v8.S b/drivers/rk_nand/rk_ftl_arm_v8.S new file mode 100755 -index 000000000000..537155f1fcde +index 000000000..537155f1f --- /dev/null +++ b/drivers/rk_nand/rk_ftl_arm_v8.S @@ -0,0 +1,27968 @@ @@ -1378485,7 +1378485,7 @@ index 000000000000..537155f1fcde + .string "\0013vendor storage %x,%x,%x\n" diff --git a/drivers/rk_nand/rk_ftlv5_arm32.S b/drivers/rk_nand/rk_ftlv5_arm32.S new file mode 100755 -index 000000000000..26e2a694fb6d +index 000000000..26e2a694f --- /dev/null +++ b/drivers/rk_nand/rk_ftlv5_arm32.S @@ -0,0 +1,27612 @@ @@ -1406103,7 +1406103,7 @@ index 000000000000..26e2a694fb6d + .ascii "erase power lost blk = %x vpc=%x\012\000" diff --git a/drivers/rk_nand/rk_ftlv5_arm64.S b/drivers/rk_nand/rk_ftlv5_arm64.S new file mode 100755 -index 000000000000..260a57d855b5 +index 000000000..260a57d85 --- /dev/null +++ b/drivers/rk_nand/rk_ftlv5_arm64.S @@ -0,0 +1,25632 @@ @@ -1431741,7 +1431741,7 @@ index 000000000000..260a57d855b5 + .string "erase power lost blk = %x vpc=%x\n" diff --git a/drivers/rk_nand/rk_nand_base.c b/drivers/rk_nand/rk_nand_base.c new file mode 100755 -index 000000000000..9d5e2fb02baa +index 000000000..9d5e2fb02 --- /dev/null +++ b/drivers/rk_nand/rk_nand_base.c @@ -0,0 +1,456 @@ @@ -1432203,7 +1432203,7 @@ index 000000000000..9d5e2fb02baa +MODULE_LICENSE("GPL v2"); diff --git a/drivers/rk_nand/rk_nand_base.h b/drivers/rk_nand/rk_nand_base.h new file mode 100755 -index 000000000000..023e58d5fc5c +index 000000000..023e58d5f --- /dev/null +++ b/drivers/rk_nand/rk_nand_base.h @@ -0,0 +1,46 @@ @@ -1432255,7 +1432255,7 @@ index 000000000000..023e58d5fc5c +#endif diff --git a/drivers/rk_nand/rk_nand_blk.c b/drivers/rk_nand/rk_nand_blk.c new file mode 100755 -index 000000000000..7d1c46966481 +index 000000000..7d1c46966 --- /dev/null +++ b/drivers/rk_nand/rk_nand_blk.c @@ -0,0 +1,711 @@ @@ -1432972,7 +1432972,7 @@ index 000000000000..7d1c46966481 +} diff --git a/drivers/rk_nand/rk_nand_blk.h b/drivers/rk_nand/rk_nand_blk.h new file mode 100755 -index 000000000000..681c625f5081 +index 000000000..681c625f5 --- /dev/null +++ b/drivers/rk_nand/rk_nand_blk.h @@ -0,0 +1,67 @@ @@ -1433045,7 +1433045,7 @@ index 000000000000..681c625f5081 +#endif diff --git a/drivers/rk_nand/rk_zftl_arm32.S b/drivers/rk_nand/rk_zftl_arm32.S new file mode 100755 -index 000000000000..ec6959a4c9c9 +index 000000000..ec6959a4c --- /dev/null +++ b/drivers/rk_nand/rk_zftl_arm32.S @@ -0,0 +1,37095 @@ @@ -1470146,7 +1470146,7 @@ index 000000000000..ec6959a4c9c9 + .ascii "\0013vendor storage %x,%x,%x\012\000" diff --git a/drivers/rk_nand/rk_zftl_arm64.S b/drivers/rk_nand/rk_zftl_arm64.S new file mode 100755 -index 000000000000..943e37110677 +index 000000000..943e37110 --- /dev/null +++ b/drivers/rk_nand/rk_zftl_arm64.S @@ -0,0 +1,35207 @@ @@ -1505359,7 +1505359,7 @@ index 000000000000..943e37110677 + .string "\0013vendor storage %x,%x,%x\n" diff --git a/drivers/rkflash/Kconfig b/drivers/rkflash/Kconfig new file mode 100755 -index 000000000000..4c791915e7bc +index 000000000..4c791915e --- /dev/null +++ b/drivers/rkflash/Kconfig @@ -0,0 +1,80 @@ @@ -1505445,7 +1505445,7 @@ index 000000000000..4c791915e7bc +endif # ARCH_ROCKCHIP diff --git a/drivers/rkflash/Makefile b/drivers/rkflash/Makefile new file mode 100755 -index 000000000000..283a217eb6ca +index 000000000..283a217eb --- /dev/null +++ b/drivers/rkflash/Makefile @@ -0,0 +1,14 @@ @@ -1505465,7 +1505465,7 @@ index 000000000000..283a217eb6ca +endif diff --git a/drivers/rkflash/flash.c b/drivers/rkflash/flash.c new file mode 100755 -index 000000000000..52be15969cda +index 000000000..52be15969 --- /dev/null +++ b/drivers/rkflash/flash.c @@ -0,0 +1,505 @@ @@ -1505976,7 +1505976,7 @@ index 000000000000..52be15969cda +} diff --git a/drivers/rkflash/flash.h b/drivers/rkflash/flash.h new file mode 100755 -index 000000000000..8f1284c9026a +index 000000000..8f1284c90 --- /dev/null +++ b/drivers/rkflash/flash.h @@ -0,0 +1,132 @@ @@ -1506114,7 +1506114,7 @@ index 000000000000..8f1284c9026a +#endif diff --git a/drivers/rkflash/flash_com.h b/drivers/rkflash/flash_com.h new file mode 100755 -index 000000000000..da6eb29968a1 +index 000000000..da6eb2996 --- /dev/null +++ b/drivers/rkflash/flash_com.h @@ -0,0 +1,77 @@ @@ -1506197,7 +1506197,7 @@ index 000000000000..da6eb29968a1 +#endif diff --git a/drivers/rkflash/nand_boot.c b/drivers/rkflash/nand_boot.c new file mode 100755 -index 000000000000..7db6ff9e7f48 +index 000000000..7db6ff9e7 --- /dev/null +++ b/drivers/rkflash/nand_boot.c @@ -0,0 +1,83 @@ @@ -1506286,7 +1506286,7 @@ index 000000000000..7db6ff9e7f48 + diff --git a/drivers/rkflash/nandc.c b/drivers/rkflash/nandc.c new file mode 100755 -index 000000000000..69e3b0ed5598 +index 000000000..69e3b0ed5 --- /dev/null +++ b/drivers/rkflash/nandc.c @@ -0,0 +1,467 @@ @@ -1506759,7 +1506759,7 @@ index 000000000000..69e3b0ed5598 +} diff --git a/drivers/rkflash/nandc.h b/drivers/rkflash/nandc.h new file mode 100755 -index 000000000000..e650493dbe4d +index 000000000..e650493db --- /dev/null +++ b/drivers/rkflash/nandc.h @@ -0,0 +1,346 @@ @@ -1507111,7 +1507111,7 @@ index 000000000000..e650493dbe4d +#endif diff --git a/drivers/rkflash/rk_sftl.h b/drivers/rkflash/rk_sftl.h new file mode 100755 -index 000000000000..378f83714b5d +index 000000000..378f83714 --- /dev/null +++ b/drivers/rkflash/rk_sftl.h @@ -0,0 +1,48 @@ @@ -1507165,7 +1507165,7 @@ index 000000000000..378f83714b5d +#endif diff --git a/drivers/rkflash/rk_sftl_arm_v7.S b/drivers/rkflash/rk_sftl_arm_v7.S new file mode 100755 -index 000000000000..a8119e884d35 +index 000000000..a8119e884 --- /dev/null +++ b/drivers/rkflash/rk_sftl_arm_v7.S @@ -0,0 +1,15787 @@ @@ -1522958,7 +1522958,7 @@ index 000000000000..a8119e884d35 + .ascii "vendor_storage\000" diff --git a/drivers/rkflash/rk_sftl_arm_v7_thumb.S b/drivers/rkflash/rk_sftl_arm_v7_thumb.S new file mode 100755 -index 000000000000..d4429f7f1db4 +index 000000000..d4429f7f1 --- /dev/null +++ b/drivers/rkflash/rk_sftl_arm_v7_thumb.S @@ -0,0 +1,15586 @@ @@ -1538550,7 +1538550,7 @@ index 000000000000..d4429f7f1db4 + .ascii "vendor_storage\000" diff --git a/drivers/rkflash/rk_sftl_arm_v8.S b/drivers/rkflash/rk_sftl_arm_v8.S new file mode 100755 -index 000000000000..7e2944e55a76 +index 000000000..7e2944e55 --- /dev/null +++ b/drivers/rkflash/rk_sftl_arm_v8.S @@ -0,0 +1,15768 @@ @@ -1554324,7 +1554324,7 @@ index 000000000000..7e2944e55a76 + .align 3 diff --git a/drivers/rkflash/rkflash_api.h b/drivers/rkflash/rkflash_api.h new file mode 100755 -index 000000000000..402109b60521 +index 000000000..402109b60 --- /dev/null +++ b/drivers/rkflash/rkflash_api.h @@ -0,0 +1,58 @@ @@ -1554388,7 +1554388,7 @@ index 000000000000..402109b60521 +#endif diff --git a/drivers/rkflash/rkflash_blk.c b/drivers/rkflash/rkflash_blk.c new file mode 100755 -index 000000000000..17ffe73865fe +index 000000000..17ffe7386 --- /dev/null +++ b/drivers/rkflash/rkflash_blk.c @@ -0,0 +1,789 @@ @@ -1555183,7 +1555183,7 @@ index 000000000000..17ffe73865fe +} diff --git a/drivers/rkflash/rkflash_blk.h b/drivers/rkflash/rkflash_blk.h new file mode 100755 -index 000000000000..3d95436c55e7 +index 000000000..3d95436c5 --- /dev/null +++ b/drivers/rkflash/rkflash_blk.h @@ -0,0 +1,121 @@ @@ -1555310,7 +1555310,7 @@ index 000000000000..3d95436c55e7 +#endif diff --git a/drivers/rkflash/rkflash_debug.c b/drivers/rkflash/rkflash_debug.c new file mode 100755 -index 000000000000..ce742b0382ef +index 000000000..ce742b038 --- /dev/null +++ b/drivers/rkflash/rkflash_debug.c @@ -0,0 +1,116 @@ @@ -1555432,7 +1555432,7 @@ index 000000000000..ce742b0382ef +MODULE_PARM_DESC(rkflash_debug, "config rkflash_debug module"); diff --git a/drivers/rkflash/rkflash_debug.h b/drivers/rkflash/rkflash_debug.h new file mode 100755 -index 000000000000..3fe4068322e7 +index 000000000..3fe406832 --- /dev/null +++ b/drivers/rkflash/rkflash_debug.h @@ -0,0 +1,42 @@ @@ -1555480,7 +1555480,7 @@ index 000000000000..3fe4068322e7 + diff --git a/drivers/rkflash/rknandc_base.c b/drivers/rkflash/rknandc_base.c new file mode 100755 -index 000000000000..d2e97883dec4 +index 000000000..d2e97883d --- /dev/null +++ b/drivers/rkflash/rknandc_base.c @@ -0,0 +1,192 @@ @@ -1555678,7 +1555678,7 @@ index 000000000000..d2e97883dec4 +MODULE_ALIAS("rknandc"); diff --git a/drivers/rkflash/rksfc_base.c b/drivers/rkflash/rksfc_base.c new file mode 100755 -index 000000000000..6cf74e103972 +index 000000000..6cf74e103 --- /dev/null +++ b/drivers/rkflash/rksfc_base.c @@ -0,0 +1,267 @@ @@ -1555951,7 +1555951,7 @@ index 000000000000..6cf74e103972 +MODULE_ALIAS("rksfc"); diff --git a/drivers/rkflash/sfc.c b/drivers/rkflash/sfc.c new file mode 100755 -index 000000000000..9ee5d6a97f13 +index 000000000..9ee5d6a97 --- /dev/null +++ b/drivers/rkflash/sfc.c @@ -0,0 +1,255 @@ @@ -1556212,7 +1556212,7 @@ index 000000000000..9ee5d6a97f13 +} diff --git a/drivers/rkflash/sfc.h b/drivers/rkflash/sfc.h new file mode 100755 -index 000000000000..355cd26170c6 +index 000000000..355cd2617 --- /dev/null +++ b/drivers/rkflash/sfc.h @@ -0,0 +1,224 @@ @@ -1556442,7 +1556442,7 @@ index 000000000000..355cd26170c6 +#endif diff --git a/drivers/rkflash/sfc_nand.c b/drivers/rkflash/sfc_nand.c new file mode 100755 -index 000000000000..cf3d3e887198 +index 000000000..cf3d3e887 --- /dev/null +++ b/drivers/rkflash/sfc_nand.c @@ -0,0 +1,1051 @@ @@ -1557499,7 +1557499,7 @@ index 000000000000..cf3d3e887198 +} diff --git a/drivers/rkflash/sfc_nand.h b/drivers/rkflash/sfc_nand.h new file mode 100755 -index 000000000000..43f4adf4508b +index 000000000..43f4adf45 --- /dev/null +++ b/drivers/rkflash/sfc_nand.h @@ -0,0 +1,133 @@ @@ -1557638,7 +1557638,7 @@ index 000000000000..43f4adf4508b +#endif diff --git a/drivers/rkflash/sfc_nand_boot.c b/drivers/rkflash/sfc_nand_boot.c new file mode 100755 -index 000000000000..8db7f8df968f +index 000000000..8db7f8df9 --- /dev/null +++ b/drivers/rkflash/sfc_nand_boot.c @@ -0,0 +1,89 @@ @@ -1557733,7 +1557733,7 @@ index 000000000000..8db7f8df968f +}; diff --git a/drivers/rkflash/sfc_nand_mtd.c b/drivers/rkflash/sfc_nand_mtd.c new file mode 100755 -index 000000000000..1b4d306050cf +index 000000000..1b4d30605 --- /dev/null +++ b/drivers/rkflash/sfc_nand_mtd.c @@ -0,0 +1,423 @@ @@ -1558162,7 +1558162,7 @@ index 000000000000..1b4d306050cf +#endif diff --git a/drivers/rkflash/sfc_nand_mtd.h b/drivers/rkflash/sfc_nand_mtd.h new file mode 100755 -index 000000000000..0d49c74654ab +index 000000000..0d49c7465 --- /dev/null +++ b/drivers/rkflash/sfc_nand_mtd.h @@ -0,0 +1,82 @@ @@ -1558250,7 +1558250,7 @@ index 000000000000..0d49c74654ab +#endif diff --git a/drivers/rkflash/sfc_nand_mtd_bbt.c b/drivers/rkflash/sfc_nand_mtd_bbt.c new file mode 100755 -index 000000000000..eb641f89306c +index 000000000..eb641f893 --- /dev/null +++ b/drivers/rkflash/sfc_nand_mtd_bbt.c @@ -0,0 +1,441 @@ @@ -1558697,7 +1558697,7 @@ index 000000000000..eb641f89306c +EXPORT_SYMBOL_GPL(snanddev_bbt_set_block_status); diff --git a/drivers/rkflash/sfc_nor.c b/drivers/rkflash/sfc_nor.c new file mode 100755 -index 000000000000..f7abe75a5b09 +index 000000000..f7abe75a5 --- /dev/null +++ b/drivers/rkflash/sfc_nor.c @@ -0,0 +1,783 @@ @@ -1559486,7 +1559486,7 @@ index 000000000000..f7abe75a5b09 + diff --git a/drivers/rkflash/sfc_nor.h b/drivers/rkflash/sfc_nor.h new file mode 100755 -index 000000000000..950af6a5e686 +index 000000000..950af6a5e --- /dev/null +++ b/drivers/rkflash/sfc_nor.h @@ -0,0 +1,176 @@ @@ -1559668,7 +1559668,7 @@ index 000000000000..950af6a5e686 +#endif diff --git a/drivers/rkflash/sfc_nor_boot.c b/drivers/rkflash/sfc_nor_boot.c new file mode 100755 -index 000000000000..791c1291b475 +index 000000000..791c1291b --- /dev/null +++ b/drivers/rkflash/sfc_nor_boot.c @@ -0,0 +1,180 @@ @@ -1559854,7 +1559854,7 @@ index 000000000000..791c1291b475 +}; diff --git a/drivers/rkflash/sfc_nor_mtd.c b/drivers/rkflash/sfc_nor_mtd.c new file mode 100755 -index 000000000000..8c9d69a581f2 +index 000000000..8c9d69a58 --- /dev/null +++ b/drivers/rkflash/sfc_nor_mtd.c @@ -0,0 +1,266 @@ @@ -1560126,7 +1560126,7 @@ index 000000000000..8c9d69a581f2 +} diff --git a/drivers/rkflash/typedef.h b/drivers/rkflash/typedef.h new file mode 100755 -index 000000000000..5808ec281fa2 +index 000000000..5808ec281 --- /dev/null +++ b/drivers/rkflash/typedef.h @@ -0,0 +1,30 @@ @@ -1560161,7 +1560161,7 @@ index 000000000000..5808ec281fa2 + +#endif /*__TYPEDEF_H */ diff --git a/drivers/soc/rockchip/Kconfig b/drivers/soc/rockchip/Kconfig -index 25eb2c1e31bb..1b460700cdb8 100644 +index 25eb2c1e3..1b460700c 100644 --- a/drivers/soc/rockchip/Kconfig +++ b/drivers/soc/rockchip/Kconfig @@ -1,19 +1,49 @@ @@ -1560322,7 +1560322,7 @@ index 25eb2c1e31bb..1b460700cdb8 100644 endif diff --git a/drivers/soc/rockchip/Kconfig.cpu b/drivers/soc/rockchip/Kconfig.cpu new file mode 100755 -index 000000000000..40be45361c8a +index 000000000..40be45361 --- /dev/null +++ b/drivers/soc/rockchip/Kconfig.cpu @@ -0,0 +1,62 @@ @@ -1560389,7 +1560389,7 @@ index 000000000000..40be45361c8a + +endmenu diff --git a/drivers/soc/rockchip/Makefile b/drivers/soc/rockchip/Makefile -index 875032f7344e..fbbfccf899b3 100644 +index 875032f73..fbbfccf89 100644 --- a/drivers/soc/rockchip/Makefile +++ b/drivers/soc/rockchip/Makefile @@ -2,6 +2,20 @@ @@ -1560415,7 +1560415,7 @@ index 875032f7344e..fbbfccf899b3 100644 +obj-$(CONFIG_ROCKCHIP_DEBUG) += rockchip_debug.o diff --git a/drivers/soc/rockchip/flash_vendor_storage.c b/drivers/soc/rockchip/flash_vendor_storage.c new file mode 100755 -index 000000000000..72961108ee5a +index 000000000..72961108e --- /dev/null +++ b/drivers/soc/rockchip/flash_vendor_storage.c @@ -0,0 +1,363 @@ @@ -1560784,7 +1560784,7 @@ index 000000000000..72961108ee5a +MODULE_LICENSE("GPL"); diff --git a/drivers/soc/rockchip/flash_vendor_storage.h b/drivers/soc/rockchip/flash_vendor_storage.h new file mode 100755 -index 000000000000..55ca52486de7 +index 000000000..55ca52486 --- /dev/null +++ b/drivers/soc/rockchip/flash_vendor_storage.h @@ -0,0 +1,16 @@ @@ -1560805,7 +1560805,7 @@ index 000000000000..55ca52486de7 +#endif + diff --git a/drivers/soc/rockchip/grf.c b/drivers/soc/rockchip/grf.c -index 494cf2b5bf7b..a252b07a696a 100644 +index 494cf2b5b..a252b07a6 100644 --- a/drivers/soc/rockchip/grf.c +++ b/drivers/soc/rockchip/grf.c @@ -7,6 +7,7 @@ @@ -1560922,7 +1560922,7 @@ index 494cf2b5bf7b..a252b07a696a 100644 +MODULE_DESCRIPTION("Rockchip GRF"); +MODULE_LICENSE("GPL"); diff --git a/drivers/soc/rockchip/io-domain.c b/drivers/soc/rockchip/io-domain.c -index b29e829e815e..7bedfdab09a0 100644 +index b29e829e8..7bedfdab0 100644 --- a/drivers/soc/rockchip/io-domain.c +++ b/drivers/soc/rockchip/io-domain.c @@ -51,6 +51,10 @@ @@ -1561087,7 +1561087,7 @@ index b29e829e815e..7bedfdab09a0 100644 goto unreg_notify; diff --git a/drivers/soc/rockchip/mtd_vendor_storage.c b/drivers/soc/rockchip/mtd_vendor_storage.c new file mode 100755 -index 000000000000..4c6d955f104a +index 000000000..4c6d955f1 --- /dev/null +++ b/drivers/soc/rockchip/mtd_vendor_storage.c @@ -0,0 +1,462 @@ @@ -1561554,7 +1561554,7 @@ index 000000000000..4c6d955f104a +module_exit(vendor_storage_deinit); +MODULE_LICENSE("GPL"); diff --git a/drivers/soc/rockchip/pm_domains.c b/drivers/soc/rockchip/pm_domains.c -index 54eb6cfc5d5b..f0484cf2e08a 100644 +index 54eb6cfc5..f0484cf2e 100644 --- a/drivers/soc/rockchip/pm_domains.c +++ b/drivers/soc/rockchip/pm_domains.c @@ -5,6 +5,7 @@ @@ -1562943,7 +1562943,7 @@ index 54eb6cfc5d5b..f0484cf2e08a 100644 +MODULE_LICENSE("GPL"); diff --git a/drivers/soc/rockchip/rk_camera_sensor_info.h b/drivers/soc/rockchip/rk_camera_sensor_info.h new file mode 100755 -index 000000000000..55823b3839b2 +index 000000000..55823b383 --- /dev/null +++ b/drivers/soc/rockchip/rk_camera_sensor_info.h @@ -0,0 +1,421 @@ @@ -1563370,7 +1563370,7 @@ index 000000000000..55823b3839b2 +#endif diff --git a/drivers/soc/rockchip/rk_fiq_debugger.c b/drivers/soc/rockchip/rk_fiq_debugger.c new file mode 100755 -index 000000000000..b3408969c103 +index 000000000..b3408969c --- /dev/null +++ b/drivers/soc/rockchip/rk_fiq_debugger.c @@ -0,0 +1,1051 @@ @@ -1564427,7 +1564427,7 @@ index 000000000000..b3408969c103 +MODULE_ALIAS("platform:rk-fiq-debugger"); diff --git a/drivers/soc/rockchip/rk_vendor_storage.c b/drivers/soc/rockchip/rk_vendor_storage.c new file mode 100755 -index 000000000000..5c49667e7e5c +index 000000000..5c49667e7 --- /dev/null +++ b/drivers/soc/rockchip/rk_vendor_storage.c @@ -0,0 +1,52 @@ @@ -1564485,7 +1564485,7 @@ index 000000000000..5c49667e7e5c +MODULE_LICENSE("GPL"); diff --git a/drivers/soc/rockchip/rockchip-cpuinfo.c b/drivers/soc/rockchip/rockchip-cpuinfo.c new file mode 100755 -index 000000000000..c88d54cff8ab +index 000000000..c88d54cff --- /dev/null +++ b/drivers/soc/rockchip/rockchip-cpuinfo.c @@ -0,0 +1,243 @@ @@ -1564734,7 +1564734,7 @@ index 000000000000..c88d54cff8ab +MODULE_LICENSE("GPL"); diff --git a/drivers/soc/rockchip/rockchip_debug.c b/drivers/soc/rockchip/rockchip_debug.c new file mode 100755 -index 000000000000..67c46c15b6b4 +index 000000000..67c46c15b --- /dev/null +++ b/drivers/soc/rockchip/rockchip_debug.c @@ -0,0 +1,423 @@ @@ -1565163,7 +1565163,7 @@ index 000000000000..67c46c15b6b4 +MODULE_ALIAS("platform:rockchip-debugger"); diff --git a/drivers/soc/rockchip/rockchip_debug.h b/drivers/soc/rockchip/rockchip_debug.h new file mode 100755 -index 000000000000..82036d8ebf72 +index 000000000..82036d8eb --- /dev/null +++ b/drivers/soc/rockchip/rockchip_debug.h @@ -0,0 +1,14 @@ @@ -1565183,7 +1565183,7 @@ index 000000000000..82036d8ebf72 +#endif diff --git a/drivers/soc/rockchip/rockchip_decompress.c b/drivers/soc/rockchip/rockchip_decompress.c new file mode 100755 -index 000000000000..47401f4b260f +index 000000000..47401f4b2 --- /dev/null +++ b/drivers/soc/rockchip/rockchip_decompress.c @@ -0,0 +1,333 @@ @@ -1565522,7 +1565522,7 @@ index 000000000000..47401f4b260f +pure_initcall(rockchip_hw_decompress_init); diff --git a/drivers/soc/rockchip/rockchip_ipa.c b/drivers/soc/rockchip/rockchip_ipa.c new file mode 100755 -index 000000000000..e8982b7defee +index 000000000..e8982b7de --- /dev/null +++ b/drivers/soc/rockchip/rockchip_ipa.c @@ -0,0 +1,232 @@ @@ -1565760,7 +1565760,7 @@ index 000000000000..e8982b7defee +MODULE_LICENSE("GPL"); diff --git a/drivers/soc/rockchip/rockchip_opp_select.c b/drivers/soc/rockchip/rockchip_opp_select.c new file mode 100755 -index 000000000000..e7ce13c5295d +index 000000000..e7ce13c52 --- /dev/null +++ b/drivers/soc/rockchip/rockchip_opp_select.c @@ -0,0 +1,1211 @@ @@ -1566977,7 +1566977,7 @@ index 000000000000..e7ce13c5295d +MODULE_LICENSE("GPL"); diff --git a/drivers/soc/rockchip/rockchip_pm_config.c b/drivers/soc/rockchip/rockchip_pm_config.c new file mode 100755 -index 000000000000..4b971573024a +index 000000000..4b9715730 --- /dev/null +++ b/drivers/soc/rockchip/rockchip_pm_config.c @@ -0,0 +1,303 @@ @@ -1567286,7 +1567286,7 @@ index 000000000000..4b971573024a +MODULE_LICENSE("GPL"); diff --git a/drivers/soc/rockchip/rockchip_pvtm.c b/drivers/soc/rockchip/rockchip_pvtm.c new file mode 100755 -index 000000000000..4109557babba +index 000000000..4109557ba --- /dev/null +++ b/drivers/soc/rockchip/rockchip_pvtm.c @@ -0,0 +1,985 @@ @@ -1568277,7 +1568277,7 @@ index 000000000000..4109557babba +MODULE_LICENSE("GPL v2"); diff --git a/drivers/soc/rockchip/rockchip_ramdisk.c b/drivers/soc/rockchip/rockchip_ramdisk.c new file mode 100755 -index 000000000000..c7143a9644b0 +index 000000000..c7143a964 --- /dev/null +++ b/drivers/soc/rockchip/rockchip_ramdisk.c @@ -0,0 +1,285 @@ @@ -1568568,7 +1568568,7 @@ index 000000000000..c7143a9644b0 +MODULE_LICENSE("GPL"); diff --git a/drivers/soc/rockchip/rockchip_system_monitor.c b/drivers/soc/rockchip/rockchip_system_monitor.c new file mode 100755 -index 000000000000..cc8f4220f7e9 +index 000000000..cc8f4220f --- /dev/null +++ b/drivers/soc/rockchip/rockchip_system_monitor.c @@ -0,0 +1,1698 @@ @@ -1570272,7 +1570272,7 @@ index 000000000000..cc8f4220f7e9 +MODULE_DESCRIPTION("rockchip system monitor driver"); diff --git a/drivers/soc/rockchip/rockchip_thunderboot_crypto.c b/drivers/soc/rockchip/rockchip_thunderboot_crypto.c new file mode 100755 -index 000000000000..7a3c93a0304e +index 000000000..7a3c93a03 --- /dev/null +++ b/drivers/soc/rockchip/rockchip_thunderboot_crypto.c @@ -0,0 +1,440 @@ @@ -1570718,7 +1570718,7 @@ index 000000000000..7a3c93a0304e +pure_initcall(rk_tb_crypto_init); diff --git a/drivers/soc/rockchip/rockchip_thunderboot_mmc.c b/drivers/soc/rockchip/rockchip_thunderboot_mmc.c new file mode 100755 -index 000000000000..5c8e0cbe4d78 +index 000000000..5c8e0cbe4 --- /dev/null +++ b/drivers/soc/rockchip/rockchip_thunderboot_mmc.c @@ -0,0 +1,148 @@ @@ -1570872,7 +1570872,7 @@ index 000000000000..5c8e0cbe4d78 +pure_initcall(rk_tb_mmc_init); diff --git a/drivers/soc/rockchip/rockchip_thunderboot_sfc.c b/drivers/soc/rockchip/rockchip_thunderboot_sfc.c new file mode 100755 -index 000000000000..d81ca755aa12 +index 000000000..d81ca755a --- /dev/null +++ b/drivers/soc/rockchip/rockchip_thunderboot_sfc.c @@ -0,0 +1,141 @@ @@ -1571019,7 +1571019,7 @@ index 000000000000..d81ca755aa12 +pure_initcall(rk_tb_sfc_init); diff --git a/drivers/soc/rockchip/sdmmc_vendor_storage.c b/drivers/soc/rockchip/sdmmc_vendor_storage.c new file mode 100755 -index 000000000000..469eda37e7e4 +index 000000000..469eda37e --- /dev/null +++ b/drivers/soc/rockchip/sdmmc_vendor_storage.c @@ -0,0 +1,635 @@ @@ -1571659,7 +1571659,7 @@ index 000000000000..469eda37e7e4 +module_exit(vendor_storage_deinit); +MODULE_LICENSE("GPL"); diff --git a/drivers/spi/spi-rockchip.c b/drivers/spi/spi-rockchip.c -index 624273d0e727..93aba7d292c3 100644 +index 624273d0e..93aba7d29 100644 --- a/drivers/spi/spi-rockchip.c +++ b/drivers/spi/spi-rockchip.c @@ -10,6 +10,7 @@ @@ -1572055,7 +1572055,7 @@ index 624273d0e727..93aba7d292c3 100644 }; MODULE_DEVICE_TABLE(of, rockchip_spi_dt_match); diff --git a/drivers/spi/spidev.c b/drivers/spi/spidev.c -index 859910ec8d9f..da816d5ba2d7 100644 +index 859910ec8..da816d5ba 100644 --- a/drivers/spi/spidev.c +++ b/drivers/spi/spidev.c @@ -682,6 +682,7 @@ static const struct of_device_id spidev_dt_ids[] = { @@ -1572067,7 +1572067,7 @@ index 859910ec8d9f..da816d5ba2d7 100644 }; MODULE_DEVICE_TABLE(of, spidev_dt_ids); diff --git a/drivers/staging/android/Kconfig b/drivers/staging/android/Kconfig -index 8d8fd5c29349..24c79b442f2d 100644 +index 8d8fd5c29..24c79b442 100644 --- a/drivers/staging/android/Kconfig +++ b/drivers/staging/android/Kconfig @@ -16,6 +16,8 @@ config ASHMEM @@ -1572080,7 +1572080,7 @@ index 8d8fd5c29349..24c79b442f2d 100644 endmenu diff --git a/drivers/staging/android/Makefile b/drivers/staging/android/Makefile -index 3b66cd0b0ec5..5788c4def0f5 100644 +index 3b66cd0b0..5788c4def 100644 --- a/drivers/staging/android/Makefile +++ b/drivers/staging/android/Makefile @@ -2,5 +2,6 @@ @@ -1572092,7 +1572092,7 @@ index 3b66cd0b0ec5..5788c4def0f5 100644 obj-$(CONFIG_ASHMEM) += ashmem.o diff --git a/drivers/staging/android/fiq_debugger/Kconfig b/drivers/staging/android/fiq_debugger/Kconfig new file mode 100755 -index 000000000000..74bf574d671c +index 000000000..74bf574d6 --- /dev/null +++ b/drivers/staging/android/fiq_debugger/Kconfig @@ -0,0 +1,72 @@ @@ -1572170,7 +1572170,7 @@ index 000000000000..74bf574d671c + Normal kernel printk will write out to UART by "kconsole" kthread diff --git a/drivers/staging/android/fiq_debugger/Makefile b/drivers/staging/android/fiq_debugger/Makefile new file mode 100755 -index 000000000000..47152bc21869 +index 000000000..47152bc21 --- /dev/null +++ b/drivers/staging/android/fiq_debugger/Makefile @@ -0,0 +1,2 @@ @@ -1572178,7 +1572178,7 @@ index 000000000000..47152bc21869 +obj-$(CONFIG_FIQ_WATCHDOG) += fiq_watchdog.o diff --git a/drivers/staging/android/fiq_debugger/fiq_debugger.c b/drivers/staging/android/fiq_debugger/fiq_debugger.c new file mode 100755 -index 000000000000..079b9e442e21 +index 000000000..079b9e442 --- /dev/null +++ b/drivers/staging/android/fiq_debugger/fiq_debugger.c @@ -0,0 +1,1672 @@ @@ -1573856,7 +1573856,7 @@ index 000000000000..079b9e442e21 +MODULE_ALIAS("platform:fiq-debugger"); diff --git a/drivers/staging/android/fiq_debugger/fiq_debugger.h b/drivers/staging/android/fiq_debugger/fiq_debugger.h new file mode 100755 -index 000000000000..2e7e33eea862 +index 000000000..2e7e33eea --- /dev/null +++ b/drivers/staging/android/fiq_debugger/fiq_debugger.h @@ -0,0 +1,73 @@ @@ -1573935,7 +1573935,7 @@ index 000000000000..2e7e33eea862 +#endif diff --git a/drivers/staging/android/fiq_debugger/fiq_debugger_arm.c b/drivers/staging/android/fiq_debugger/fiq_debugger_arm.c new file mode 100755 -index 000000000000..e91238332d6b +index 000000000..e91238332 --- /dev/null +++ b/drivers/staging/android/fiq_debugger/fiq_debugger_arm.c @@ -0,0 +1,273 @@ @@ -1574214,7 +1574214,7 @@ index 000000000000..e91238332d6b +#endif diff --git a/drivers/staging/android/fiq_debugger/fiq_debugger_arm64.c b/drivers/staging/android/fiq_debugger/fiq_debugger_arm64.c new file mode 100755 -index 000000000000..af4251c07de6 +index 000000000..af4251c07 --- /dev/null +++ b/drivers/staging/android/fiq_debugger/fiq_debugger_arm64.c @@ -0,0 +1,198 @@ @@ -1574418,7 +1574418,7 @@ index 000000000000..af4251c07de6 +#endif diff --git a/drivers/staging/android/fiq_debugger/fiq_debugger_priv.h b/drivers/staging/android/fiq_debugger/fiq_debugger_priv.h new file mode 100755 -index 000000000000..915860a6b38a +index 000000000..915860a6b --- /dev/null +++ b/drivers/staging/android/fiq_debugger/fiq_debugger_priv.h @@ -0,0 +1,39 @@ @@ -1574463,7 +1574463,7 @@ index 000000000000..915860a6b38a +#endif diff --git a/drivers/staging/android/fiq_debugger/fiq_debugger_ringbuf.h b/drivers/staging/android/fiq_debugger/fiq_debugger_ringbuf.h new file mode 100755 -index 000000000000..10c3c5d09098 +index 000000000..10c3c5d09 --- /dev/null +++ b/drivers/staging/android/fiq_debugger/fiq_debugger_ringbuf.h @@ -0,0 +1,94 @@ @@ -1574563,7 +1574563,7 @@ index 000000000000..10c3c5d09098 +} diff --git a/drivers/staging/android/fiq_debugger/fiq_watchdog.c b/drivers/staging/android/fiq_debugger/fiq_watchdog.c new file mode 100755 -index 000000000000..194b54138417 +index 000000000..194b54138 --- /dev/null +++ b/drivers/staging/android/fiq_debugger/fiq_watchdog.c @@ -0,0 +1,56 @@ @@ -1574625,7 +1574625,7 @@ index 000000000000..194b54138417 +} diff --git a/drivers/staging/android/fiq_debugger/fiq_watchdog.h b/drivers/staging/android/fiq_debugger/fiq_watchdog.h new file mode 100755 -index 000000000000..c6b507f8d976 +index 000000000..c6b507f8d --- /dev/null +++ b/drivers/staging/android/fiq_debugger/fiq_watchdog.h @@ -0,0 +1,20 @@ @@ -1574650,7 +1574650,7 @@ index 000000000000..c6b507f8d976 + +#endif diff --git a/drivers/staging/android/ion/Kconfig b/drivers/staging/android/ion/Kconfig -index 989fe84a9f9d..7b7da979991e 100644 +index 989fe84a9..7b7da9799 100644 --- a/drivers/staging/android/ion/Kconfig +++ b/drivers/staging/android/ion/Kconfig @@ -11,17 +11,4 @@ menuconfig ION @@ -1574673,7 +1574673,7 @@ index 989fe84a9f9d..7b7da979991e 100644 - regions, you should say Y here. +source "drivers/staging/android/ion/heaps/Kconfig" diff --git a/drivers/staging/android/ion/Makefile b/drivers/staging/android/ion/Makefile -index 5f4487b1a224..7f8fd0f537b4 100644 +index 5f4487b1a..7f8fd0f53 100644 --- a/drivers/staging/android/ion/Makefile +++ b/drivers/staging/android/ion/Makefile @@ -1,4 +1,4 @@ @@ -1574686,7 +1574686,7 @@ index 5f4487b1a224..7f8fd0f537b4 100644 +obj-y += heaps/ diff --git a/drivers/staging/android/ion/heaps/Kconfig b/drivers/staging/android/ion/heaps/Kconfig new file mode 100755 -index 000000000000..5034c45a397d +index 000000000..5034c45a3 --- /dev/null +++ b/drivers/staging/android/ion/heaps/Kconfig @@ -0,0 +1,15 @@ @@ -1574707,7 +1574707,7 @@ index 000000000000..5034c45a397d + regions, you should say Y here. diff --git a/drivers/staging/android/ion/heaps/Makefile b/drivers/staging/android/ion/heaps/Makefile new file mode 100755 -index 000000000000..82e36e89e978 +index 000000000..82e36e89e --- /dev/null +++ b/drivers/staging/android/ion/heaps/Makefile @@ -0,0 +1,5 @@ @@ -1574722,7 +1574722,7 @@ new mode 100755 similarity index 72% rename from drivers/staging/android/ion/ion_cma_heap.c rename to drivers/staging/android/ion/heaps/ion_cma_heap.c -index bf65e67ef9d8..6ba7fd84c9ee +index bf65e67ef..6ba7fd84c --- a/drivers/staging/android/ion/ion_cma_heap.c +++ b/drivers/staging/android/ion/heaps/ion_cma_heap.c @@ -7,6 +7,7 @@ @@ -1574841,7 +1574841,7 @@ new mode 100755 similarity index 87% rename from drivers/staging/android/ion/ion_page_pool.c rename to drivers/staging/android/ion/heaps/ion_page_pool.c -index 0198b886d906..efd6ce4cc0ad +index 0198b886d..efd6ce4cc --- a/drivers/staging/android/ion/ion_page_pool.c +++ b/drivers/staging/android/ion/heaps/ion_page_pool.c @@ -10,7 +10,7 @@ @@ -1574909,7 +1574909,7 @@ index 0198b886d906..efd6ce4cc0ad +EXPORT_SYMBOL_GPL(ion_page_pool_destroy); diff --git a/drivers/staging/android/ion/heaps/ion_page_pool.h b/drivers/staging/android/ion/heaps/ion_page_pool.h new file mode 100755 -index 000000000000..10c79090c7a0 +index 000000000..10c79090c --- /dev/null +++ b/drivers/staging/android/ion/heaps/ion_page_pool.h @@ -0,0 +1,67 @@ @@ -1574986,7 +1574986,7 @@ new mode 100755 similarity index 65% rename from drivers/staging/android/ion/ion_system_heap.c rename to drivers/staging/android/ion/heaps/ion_system_heap.c -index eac0632ab4e8..45d23bea3822 +index eac0632ab..45d23bea3 --- a/drivers/staging/android/ion/ion_system_heap.c +++ b/drivers/staging/android/ion/heaps/ion_system_heap.c @@ -9,12 +9,14 @@ @@ -1575302,7 +1575302,7 @@ index eac0632ab4e8..45d23bea3822 +module_exit(ion_system_heap_exit); +MODULE_LICENSE("GPL v2"); diff --git a/drivers/staging/android/ion/ion.c b/drivers/staging/android/ion/ion.c -index e1fe03ceb7f1..268c4610c25a 100644 +index e1fe03ceb..268c4610c 100644 --- a/drivers/staging/android/ion/ion.c +++ b/drivers/staging/android/ion/ion.c @@ -3,8 +3,11 @@ @@ -1576021,7 +1576021,7 @@ index e1fe03ceb7f1..268c4610c25a 100644 subsys_initcall(ion_device_create); diff --git a/drivers/staging/android/ion/ion.h b/drivers/staging/android/ion/ion.h deleted file mode 100644 -index c199e88afc6c..000000000000 +index c199e88af..000000000 --- a/drivers/staging/android/ion/ion.h +++ /dev/null @@ -1,302 +0,0 @@ @@ -1576329,7 +1576329,7 @@ index c199e88afc6c..000000000000 -#endif /* _ION_H */ diff --git a/drivers/staging/android/ion/ion_buffer.c b/drivers/staging/android/ion/ion_buffer.c new file mode 100755 -index 000000000000..9baca1a472b6 +index 000000000..9baca1a47 --- /dev/null +++ b/drivers/staging/android/ion/ion_buffer.c @@ -0,0 +1,278 @@ @@ -1576613,7 +1576613,7 @@ index 000000000000..9baca1a472b6 +} diff --git a/drivers/staging/android/ion/ion_dma_buf.c b/drivers/staging/android/ion/ion_dma_buf.c new file mode 100755 -index 000000000000..47ae54af5ccf +index 000000000..47ae54af5 --- /dev/null +++ b/drivers/staging/android/ion/ion_dma_buf.c @@ -0,0 +1,359 @@ @@ -1576977,7 +1576977,7 @@ index 000000000000..47ae54af5ccf + return dmabuf; +} diff --git a/drivers/staging/android/ion/ion_heap.c b/drivers/staging/android/ion/ion_heap.c -index ea7e0a244ffc..aa29a4ee48a3 100644 +index ea7e0a244..aa29a4ee4 100644 --- a/drivers/staging/android/ion/ion_heap.c +++ b/drivers/staging/android/ion/ion_heap.c @@ -15,12 +15,118 @@ @@ -1577383,7 +1577383,7 @@ index ea7e0a244ffc..aa29a4ee48a3 100644 } diff --git a/drivers/staging/android/ion/ion_private.h b/drivers/staging/android/ion/ion_private.h new file mode 100755 -index 000000000000..db4e90683f4c +index 000000000..db4e90683 --- /dev/null +++ b/drivers/staging/android/ion/ion_private.h @@ -0,0 +1,58 @@ @@ -1577447,7 +1577447,7 @@ index 000000000000..db4e90683f4c +#endif /* _ION_PRIVATE_H */ diff --git a/drivers/staging/android/ion/ion_protected_heap.c b/drivers/staging/android/ion/ion_protected_heap.c new file mode 100755 -index 000000000000..c7f25373a744 +index 000000000..c7f25373a --- /dev/null +++ b/drivers/staging/android/ion/ion_protected_heap.c @@ -0,0 +1,526 @@ @@ -1577979,7 +1577979,7 @@ index 000000000000..c7f25373a744 +#endif diff --git a/drivers/staging/android/ion/ion_trace.h b/drivers/staging/android/ion/ion_trace.h new file mode 100755 -index 000000000000..eacb47d4f135 +index 000000000..eacb47d4f --- /dev/null +++ b/drivers/staging/android/ion/ion_trace.h @@ -0,0 +1,55 @@ @@ -1578040,7 +1578040,7 @@ index 000000000000..eacb47d4f135 +#include diff --git a/drivers/staging/android/ion/rockchip/Makefile b/drivers/staging/android/ion/rockchip/Makefile new file mode 100755 -index 000000000000..89265fcbbe6f +index 000000000..89265fcbb --- /dev/null +++ b/drivers/staging/android/ion/rockchip/Makefile @@ -0,0 +1,3 @@ @@ -1578049,7 +1578049,7 @@ index 000000000000..89265fcbbe6f +obj-$(CONFIG_ION_ROCKCHIP_SNAPSHOT) += rockchip_ion_snapshot.o diff --git a/drivers/staging/android/ion/rockchip/rockchip_ion.c b/drivers/staging/android/ion/rockchip/rockchip_ion.c new file mode 100755 -index 000000000000..d3c3d06856ad +index 000000000..d3c3d0685 --- /dev/null +++ b/drivers/staging/android/ion/rockchip/rockchip_ion.c @@ -0,0 +1,224 @@ @@ -1578279,7 +1578279,7 @@ index 000000000000..d3c3d06856ad +MODULE_DEVICE_TABLE(of, rk_ion_match); diff --git a/drivers/staging/android/ion/rockchip/rockchip_ion_snapshot.c b/drivers/staging/android/ion/rockchip/rockchip_ion_snapshot.c new file mode 100755 -index 000000000000..ab27d05319ae +index 000000000..ab27d0531 --- /dev/null +++ b/drivers/staging/android/ion/rockchip/rockchip_ion_snapshot.c @@ -0,0 +1,145 @@ @@ -1578429,7 +1578429,7 @@ index 000000000000..ab27d05319ae + +postcore_initcall(rockchip_ion_snapshot_init); diff --git a/drivers/staging/blackbox/Kconfig b/drivers/staging/blackbox/Kconfig -index 0e985823c2e8..7f1eb0e16e2d 100644 +index 0e985823c..7f1eb0e16 100644 --- a/drivers/staging/blackbox/Kconfig +++ b/drivers/staging/blackbox/Kconfig @@ -106,3 +106,14 @@ config DEF_BLACKBOX_STORAGE @@ -1578448,7 +1578448,7 @@ index 0e985823c2e8..7f1eb0e16e2d 100644 + +endif diff --git a/drivers/staging/blackbox/Makefile b/drivers/staging/blackbox/Makefile -index 9befa81a176e..77c1a37e5102 100644 +index 9befa81a1..77c1a37e5 100644 --- a/drivers/staging/blackbox/Makefile +++ b/drivers/staging/blackbox/Makefile @@ -3,3 +3,5 @@ @@ -1578458,7 +1578458,7 @@ index 9befa81a176e..77c1a37e5102 100644 + +obj-$(CONFIG_BLACKBOX_ROCKCHIP) += rockchip/ diff --git a/drivers/staging/blackbox/blackbox_storage.c b/drivers/staging/blackbox/blackbox_storage.c -index 635e3aa036ab..aad08c7291f1 100644 +index 635e3aa03..aad08c729 100644 --- a/drivers/staging/blackbox/blackbox_storage.c +++ b/drivers/staging/blackbox/blackbox_storage.c @@ -62,7 +62,7 @@ static void do_kmsg_dump(struct kmsg_dumper *dumper, @@ -1578472,7 +1578472,7 @@ index 635e3aa036ab..aad08c7291f1 100644 #define PSTORE_MOUNT_POINT "/sys/fs/pstore/" diff --git a/drivers/staging/blackbox/rockchip/Makefile b/drivers/staging/blackbox/rockchip/Makefile new file mode 100644 -index 000000000000..8bef3d7285ed +index 000000000..8bef3d728 --- /dev/null +++ b/drivers/staging/blackbox/rockchip/Makefile @@ -0,0 +1,4 @@ @@ -1578482,7 +1578482,7 @@ index 000000000000..8bef3d7285ed +obj-$(CONFIG_BLACKBOX_STORAGE_BY_MEMORY) += system_adapter_by_memory.o diff --git a/drivers/staging/blackbox/rockchip/system_adapter.c b/drivers/staging/blackbox/rockchip/system_adapter.c new file mode 100644 -index 000000000000..3fab38a0f032 +index 000000000..3fab38a0f --- /dev/null +++ b/drivers/staging/blackbox/rockchip/system_adapter.c @@ -0,0 +1,314 @@ @@ -1578802,7 +1578802,7 @@ index 000000000000..3fab38a0f032 +MODULE_AUTHOR("OHOS"); diff --git a/drivers/staging/blackbox/rockchip/system_adapter_by_pstore_ram.c b/drivers/staging/blackbox/rockchip/system_adapter_by_pstore_ram.c new file mode 100644 -index 000000000000..3fab38a0f032 +index 000000000..3fab38a0f --- /dev/null +++ b/drivers/staging/blackbox/rockchip/system_adapter_by_pstore_ram.c @@ -0,0 +1,314 @@ @@ -1579121,7 +1579121,7 @@ index 000000000000..3fab38a0f032 +MODULE_DESCRIPTION("Blackbox for system"); +MODULE_AUTHOR("OHOS"); diff --git a/drivers/thermal/rockchip_thermal.c b/drivers/thermal/rockchip_thermal.c -index aa9e0e31ef98..e1c667e8fe2a 100644 +index aa9e0e31e..e1c667e8f 100644 --- a/drivers/thermal/rockchip_thermal.c +++ b/drivers/thermal/rockchip_thermal.c @@ -18,6 +18,7 @@ @@ -1580084,7 +1580084,7 @@ index aa9e0e31ef98..e1c667e8fe2a 100644 module_platform_driver(rockchip_thermal_driver); diff --git a/drivers/thermal/thermal_core.c b/drivers/thermal/thermal_core.c -index 17de8a9b991e..c83fb45e1d67 100644 +index 17de8a9b9..c83fb45e1 100644 --- a/drivers/thermal/thermal_core.c +++ b/drivers/thermal/thermal_core.c @@ -540,6 +540,7 @@ int thermal_zone_device_is_enabled(struct thermal_zone_device *tz) @@ -1580096,7 +1580096,7 @@ index 17de8a9b991e..c83fb45e1d67 100644 void thermal_zone_device_update(struct thermal_zone_device *tz, enum thermal_notify_event event) diff --git a/drivers/thermal/thermal_core.h b/drivers/thermal/thermal_core.h -index 681209db42a8..5e80cb3264d9 100644 +index 681209db4..5e80cb326 100644 --- a/drivers/thermal/thermal_core.h +++ b/drivers/thermal/thermal_core.h @@ -179,6 +179,4 @@ of_thermal_get_trip_points(struct thermal_zone_device *tz) @@ -1580107,7 +1580107,7 @@ index 681209db42a8..5e80cb3264d9 100644 - #endif /* __THERMAL_CORE_H__ */ diff --git a/drivers/tty/serial/8250/8250.h b/drivers/tty/serial/8250/8250.h -index 34aa2714f3c9..71ace116fe6b 100644 +index 34aa2714f..71ace116f 100644 --- a/drivers/tty/serial/8250/8250.h +++ b/drivers/tty/serial/8250/8250.h @@ -48,6 +48,9 @@ struct uart_8250_dma { @@ -1580154,7 +1580154,7 @@ index 34aa2714f3c9..71ace116fe6b 100644 static inline int serial8250_request_dma(struct uart_8250_port *p) { diff --git a/drivers/tty/serial/8250/8250_core.c b/drivers/tty/serial/8250/8250_core.c -index cae61d1ebec5..fc81bbc7697e 100644 +index cae61d1eb..fc81bbc76 100644 --- a/drivers/tty/serial/8250/8250_core.c +++ b/drivers/tty/serial/8250/8250_core.c @@ -558,6 +558,7 @@ static void __init serial8250_isa_init_ports(void) @@ -1580197,7 +1580197,7 @@ index cae61d1ebec5..fc81bbc7697e 100644 MODULE_LICENSE("GPL"); diff --git a/drivers/tty/serial/8250/8250_dma.c b/drivers/tty/serial/8250/8250_dma.c -index 890fa7ddaa7f..136ed708f3a7 100644 +index 890fa7dda..136ed708f 100644 --- a/drivers/tty/serial/8250/8250_dma.c +++ b/drivers/tty/serial/8250/8250_dma.c @@ -11,6 +11,12 @@ @@ -1580487,7 +1580487,7 @@ index 890fa7ddaa7f..136ed708f3a7 100644 } EXPORT_SYMBOL_GPL(serial8250_release_dma); diff --git a/drivers/tty/serial/8250/8250_dw.c b/drivers/tty/serial/8250/8250_dw.c -index a3a0154da567..7f24617474f0 100644 +index a3a0154da..7f2461747 100644 --- a/drivers/tty/serial/8250/8250_dw.c +++ b/drivers/tty/serial/8250/8250_dw.c @@ -33,6 +33,7 @@ @@ -1580678,7 +1580678,7 @@ index a3a0154da567..7f24617474f0 100644 return 0; } diff --git a/drivers/tty/serial/8250/8250_dwlib.c b/drivers/tty/serial/8250/8250_dwlib.c -index 6d6a78eead3e..fee4f2933919 100644 +index 6d6a78eea..fee4f2933 100644 --- a/drivers/tty/serial/8250/8250_dwlib.c +++ b/drivers/tty/serial/8250/8250_dwlib.c @@ -106,6 +106,15 @@ void dw8250_setup_port(struct uart_port *p) @@ -1580708,7 +1580708,7 @@ index 6d6a78eead3e..fee4f2933919 100644 } diff --git a/drivers/tty/serial/8250/8250_port.c b/drivers/tty/serial/8250/8250_port.c -index 5d40f1010fbf..6e86ce405aaf 100644 +index 5d40f1010..6e86ce405 100644 --- a/drivers/tty/serial/8250/8250_port.c +++ b/drivers/tty/serial/8250/8250_port.c @@ -1567,8 +1567,13 @@ static inline void __start_tx(struct uart_port *port) @@ -1580920,8 +1580920,258 @@ index 5d40f1010fbf..6e86ce405aaf 100644 spin_unlock_irqrestore(&port->lock, flags); serial8250_rpm_put(up); +diff --git a/drivers/usb/common/common.c b/drivers/usb/common/common.c +old mode 100644 +new mode 100755 +index 1433260d9..347fb3d38 +--- a/drivers/usb/common/common.c ++++ b/drivers/usb/common/common.c +@@ -25,6 +25,12 @@ static const char *const ep_type_names[] = { + [USB_ENDPOINT_XFER_INT] = "intr", + }; + ++/** ++ * usb_ep_type_string() - Returns human readable-name of the endpoint type. ++ * @ep_type: The endpoint type to return human-readable name for. If it's not ++ * any of the types: USB_ENDPOINT_XFER_{CONTROL, ISOC, BULK, INT}, ++ * usually got by usb_endpoint_type(), the string 'unknown' will be returned. ++ */ + const char *usb_ep_type_string(int ep_type) + { + if (ep_type < 0 || ep_type >= ARRAY_SIZE(ep_type_names)) +@@ -69,6 +75,19 @@ static const char *const speed_names[] = { + [USB_SPEED_SUPER_PLUS] = "super-speed-plus", + }; + ++static const char *const ssp_rate[] = { ++ [USB_SSP_GEN_UNKNOWN] = "UNKNOWN", ++ [USB_SSP_GEN_2x1] = "super-speed-plus-gen2x1", ++ [USB_SSP_GEN_1x2] = "super-speed-plus-gen1x2", ++ [USB_SSP_GEN_2x2] = "super-speed-plus-gen2x2", ++}; ++ ++/** ++ * usb_speed_string() - Returns human readable-name of the speed. ++ * @speed: The speed to return human-readable name for. If it's not ++ * any of the speeds defined in usb_device_speed enum, string for ++ * USB_SPEED_UNKNOWN will be returned. ++ */ + const char *usb_speed_string(enum usb_device_speed speed) + { + if (speed < 0 || speed >= ARRAY_SIZE(speed_names)) +@@ -77,6 +96,14 @@ const char *usb_speed_string(enum usb_device_speed speed) + } + EXPORT_SYMBOL_GPL(usb_speed_string); + ++/** ++ * usb_get_maximum_speed - Get maximum requested speed for a given USB ++ * controller. ++ * @dev: Pointer to the given USB controller device ++ * ++ * The function gets the maximum speed string from property "maximum-speed", ++ * and returns the corresponding enum usb_device_speed. ++ */ + enum usb_device_speed usb_get_maximum_speed(struct device *dev) + { + const char *maximum_speed; +@@ -86,12 +113,44 @@ enum usb_device_speed usb_get_maximum_speed(struct device *dev) + if (ret < 0) + return USB_SPEED_UNKNOWN; + +- ret = match_string(speed_names, ARRAY_SIZE(speed_names), maximum_speed); ++ ret = match_string(ssp_rate, ARRAY_SIZE(ssp_rate), maximum_speed); ++ if (ret > 0) ++ return USB_SPEED_SUPER_PLUS; + ++ ret = match_string(speed_names, ARRAY_SIZE(speed_names), maximum_speed); + return (ret < 0) ? USB_SPEED_UNKNOWN : ret; + } + EXPORT_SYMBOL_GPL(usb_get_maximum_speed); + ++/** ++ * usb_get_maximum_ssp_rate - Get the signaling rate generation and lane count ++ * of a SuperSpeed Plus capable device. ++ * @dev: Pointer to the given USB controller device ++ * ++ * If the string from "maximum-speed" property is super-speed-plus-genXxY where ++ * 'X' is the generation number and 'Y' is the number of lanes, then this ++ * function returns the corresponding enum usb_ssp_rate. ++ */ ++enum usb_ssp_rate usb_get_maximum_ssp_rate(struct device *dev) ++{ ++ const char *maximum_speed; ++ int ret; ++ ++ ret = device_property_read_string(dev, "maximum-speed", &maximum_speed); ++ if (ret < 0) ++ return USB_SSP_GEN_UNKNOWN; ++ ++ ret = match_string(ssp_rate, ARRAY_SIZE(ssp_rate), maximum_speed); ++ return (ret < 0) ? USB_SSP_GEN_UNKNOWN : ret; ++} ++EXPORT_SYMBOL_GPL(usb_get_maximum_ssp_rate); ++ ++/** ++ * usb_state_string - Returns human readable name for the state. ++ * @state: The state to return a human-readable name for. If it's not ++ * any of the states devices in usb_device_state_string enum, ++ * the string UNKNOWN will be returned. ++ */ + const char *usb_state_string(enum usb_device_state state) + { + static const char *const names[] = { +@@ -141,6 +200,47 @@ enum usb_dr_mode usb_get_dr_mode(struct device *dev) + } + EXPORT_SYMBOL_GPL(usb_get_dr_mode); + ++/** ++ * usb_decode_interval - Decode bInterval into the time expressed in 1us unit ++ * @epd: The descriptor of the endpoint ++ * @speed: The speed that the endpoint works as ++ * ++ * Function returns the interval expressed in 1us unit for servicing ++ * endpoint for data transfers. ++ */ ++unsigned int usb_decode_interval(const struct usb_endpoint_descriptor *epd, ++ enum usb_device_speed speed) ++{ ++ unsigned int interval = 0; ++ ++ switch (usb_endpoint_type(epd)) { ++ case USB_ENDPOINT_XFER_CONTROL: ++ /* uframes per NAK */ ++ if (speed == USB_SPEED_HIGH) ++ interval = epd->bInterval; ++ break; ++ case USB_ENDPOINT_XFER_ISOC: ++ interval = 1 << (epd->bInterval - 1); ++ break; ++ case USB_ENDPOINT_XFER_BULK: ++ /* uframes per NAK */ ++ if (speed == USB_SPEED_HIGH && usb_endpoint_dir_out(epd)) ++ interval = epd->bInterval; ++ break; ++ case USB_ENDPOINT_XFER_INT: ++ if (speed >= USB_SPEED_HIGH) ++ interval = 1 << (epd->bInterval - 1); ++ else ++ interval = epd->bInterval; ++ break; ++ } ++ ++ interval *= (speed >= USB_SPEED_HIGH) ? 125 : 1000; ++ ++ return interval; ++} ++EXPORT_SYMBOL_GPL(usb_decode_interval); ++ + #ifdef CONFIG_OF + /** + * of_usb_get_dr_mode_by_phy - Get dual role mode for the controller device +diff --git a/drivers/usb/core/devices.c b/drivers/usb/core/devices.c +old mode 100644 +new mode 100755 +index 1ef2de6e3..d8b0041de +--- a/drivers/usb/core/devices.c ++++ b/drivers/usb/core/devices.c +@@ -157,38 +157,25 @@ static char *usb_dump_endpoint_descriptor(int speed, char *start, char *end, + switch (usb_endpoint_type(desc)) { + case USB_ENDPOINT_XFER_CONTROL: + type = "Ctrl"; +- if (speed == USB_SPEED_HIGH) /* uframes per NAK */ +- interval = desc->bInterval; +- else +- interval = 0; + dir = 'B'; /* ctrl is bidirectional */ + break; + case USB_ENDPOINT_XFER_ISOC: + type = "Isoc"; +- interval = 1 << (desc->bInterval - 1); + break; + case USB_ENDPOINT_XFER_BULK: + type = "Bulk"; +- if (speed == USB_SPEED_HIGH && dir == 'O') /* uframes per NAK */ +- interval = desc->bInterval; +- else +- interval = 0; + break; + case USB_ENDPOINT_XFER_INT: + type = "Int."; +- if (speed == USB_SPEED_HIGH || speed >= USB_SPEED_SUPER) +- interval = 1 << (desc->bInterval - 1); +- else +- interval = desc->bInterval; + break; + default: /* "can't happen" */ + return start; + } +- interval *= (speed == USB_SPEED_HIGH || +- speed >= USB_SPEED_SUPER) ? 125 : 1000; +- if (interval % 1000) ++ ++ interval = usb_decode_interval(desc, speed); ++ if (interval % 1000) { + unit = 'u'; +- else { ++ } else { + unit = 'm'; + interval /= 1000; + } +diff --git a/drivers/usb/core/endpoint.c b/drivers/usb/core/endpoint.c +old mode 100644 +new mode 100755 +index 1c2c04079..fc3341f2b +--- a/drivers/usb/core/endpoint.c ++++ b/drivers/usb/core/endpoint.c +@@ -84,40 +84,13 @@ static ssize_t interval_show(struct device *dev, struct device_attribute *attr, + char *buf) + { + struct ep_device *ep = to_ep_device(dev); ++ unsigned int interval; + char unit; +- unsigned interval = 0; +- unsigned in; + +- in = (ep->desc->bEndpointAddress & USB_DIR_IN); +- +- switch (usb_endpoint_type(ep->desc)) { +- case USB_ENDPOINT_XFER_CONTROL: +- if (ep->udev->speed == USB_SPEED_HIGH) +- /* uframes per NAK */ +- interval = ep->desc->bInterval; +- break; +- +- case USB_ENDPOINT_XFER_ISOC: +- interval = 1 << (ep->desc->bInterval - 1); +- break; +- +- case USB_ENDPOINT_XFER_BULK: +- if (ep->udev->speed == USB_SPEED_HIGH && !in) +- /* uframes per NAK */ +- interval = ep->desc->bInterval; +- break; +- +- case USB_ENDPOINT_XFER_INT: +- if (ep->udev->speed == USB_SPEED_HIGH) +- interval = 1 << (ep->desc->bInterval - 1); +- else +- interval = ep->desc->bInterval; +- break; +- } +- interval *= (ep->udev->speed == USB_SPEED_HIGH) ? 125 : 1000; +- if (interval % 1000) ++ interval = usb_decode_interval(ep->desc, ep->udev->speed); ++ if (interval % 1000) { + unit = 'u'; +- else { ++ } else { + unit = 'm'; + interval /= 1000; + } diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c -index 95a9bae72f13..e5cc1db2a15d 100644 +old mode 100644 +new mode 100755 +index 95a9bae72..c1395d568 --- a/drivers/usb/core/hub.c +++ b/drivers/usb/core/hub.c @@ -1826,7 +1826,8 @@ static int hub_probe(struct usb_interface *intf, const struct usb_device_id *id) @@ -1580934,8 +1581184,18 @@ index 95a9bae72f13..e5cc1db2a15d 100644 } else { /* root hub */ const struct hc_driver *drv = bus_to_hcd(hdev->bus)->driver; +@@ -5322,7 +5323,8 @@ static void hub_port_connect(struct usb_hub *hub, int port1, u16 portstatus, + done: + hub_port_disable(hub, port1, 1); + if (hcd->driver->relinquish_port && !hub->hdev->parent) { +- if (status != -ENOTCONN && status != -ENODEV) ++ if ((status != -ENOTCONN && status != -ENODEV) || ++ (status == -ENOTCONN && of_machine_is_compatible("rockchip,rk3288"))) + hcd->driver->relinquish_port(hcd, port1); + } + } diff --git a/drivers/usb/core/quirks.c b/drivers/usb/core/quirks.c -index a54a735b6384..8b1f40384ce0 100644 +index a54a735b6..8b1f40384 100644 --- a/drivers/usb/core/quirks.c +++ b/drivers/usb/core/quirks.c @@ -322,6 +322,10 @@ static const struct usb_device_id usb_quirk_list[] = { @@ -1580960,8 +1581220,3000 @@ index a54a735b6384..8b1f40384ce0 100644 /* SONiX USB DEVICE Touchpad */ { USB_DEVICE(0x0c45, 0x7056), .driver_info = USB_QUIRK_IGNORE_REMOTE_WAKEUP }, +diff --git a/drivers/usb/dwc2/core.h b/drivers/usb/dwc2/core.h +old mode 100644 +new mode 100755 +index 641e4251c..3d497811f +--- a/drivers/usb/dwc2/core.h ++++ b/drivers/usb/dwc2/core.h +@@ -1061,6 +1061,7 @@ struct dwc2_hsotg { + unsigned int hcd_enabled:1; + unsigned int gadget_enabled:1; + unsigned int ll_hw_enabled:1; ++ unsigned int ll_phy_enabled:1; + unsigned int hibernated:1; + unsigned int reset_phy_on_wake:1; + unsigned int need_phy_for_wake:1; +@@ -1077,7 +1078,8 @@ struct dwc2_hsotg { + spinlock_t lock; + void *priv; + int irq; +- struct clk *clk; ++ struct clk_bulk_data *clks; ++ int num_clks; + struct reset_control *reset; + struct reset_control *reset_ecc; + +@@ -1345,6 +1347,9 @@ extern const struct of_device_id dwc2_of_match_table[]; + int dwc2_lowlevel_hw_enable(struct dwc2_hsotg *hsotg); + int dwc2_lowlevel_hw_disable(struct dwc2_hsotg *hsotg); + ++int dwc2_lowlevel_phy_enable(struct dwc2_hsotg *hsotg); ++int dwc2_lowlevel_phy_disable(struct dwc2_hsotg *hsotg); ++ + /* Common polling functions */ + int dwc2_hsotg_wait_bit_set(struct dwc2_hsotg *hs_otg, u32 reg, u32 bit, + u32 timeout); +diff --git a/drivers/usb/dwc2/gadget.c b/drivers/usb/dwc2/gadget.c +old mode 100644 +new mode 100755 +index 7207a36c6..46ad220e4 +--- a/drivers/usb/dwc2/gadget.c ++++ b/drivers/usb/dwc2/gadget.c +@@ -4518,6 +4518,14 @@ static int dwc2_hsotg_udc_start(struct usb_gadget *gadget, + goto err; + } + ++ if (hsotg->dr_mode == USB_DR_MODE_OTG && dwc2_is_device_mode(hsotg)) { ++ if (!hsotg->ll_phy_enabled) { ++ ret = dwc2_lowlevel_phy_enable(hsotg); ++ if (ret) ++ goto err; ++ } ++ } ++ + if (!IS_ERR_OR_NULL(hsotg->uphy)) + otg_set_peripheral(hsotg->uphy->otg, &hsotg->gadget); + +@@ -4577,6 +4585,11 @@ static int dwc2_hsotg_udc_stop(struct usb_gadget *gadget) + if (hsotg->dr_mode == USB_DR_MODE_PERIPHERAL) + dwc2_lowlevel_hw_disable(hsotg); + ++ if (hsotg->dr_mode == USB_DR_MODE_OTG && dwc2_is_device_mode(hsotg)) { ++ if (hsotg->ll_phy_enabled) ++ dwc2_lowlevel_phy_disable(hsotg); ++ } ++ + return 0; + } + +diff --git a/drivers/usb/dwc2/hcd.c b/drivers/usb/dwc2/hcd.c +old mode 100644 +new mode 100755 +index 30919f741..76ef2f024 +--- a/drivers/usb/dwc2/hcd.c ++++ b/drivers/usb/dwc2/hcd.c +@@ -812,11 +812,13 @@ void dwc2_hc_halt(struct dwc2_hsotg *hsotg, struct dwc2_host_chan *chan, + * uframe/frame (in the worst case), the core generates a channel + * halted and disables the channel automatically. + */ +- if ((hsotg->params.g_dma && !hsotg->params.g_dma_desc) || ++ if ((hsotg->params.host_dma && !hsotg->params.dma_desc_enable) || + hsotg->hw_params.arch == GHWCFG2_EXT_DMA_ARCH) { + if (!chan->do_split && + (chan->ep_type == USB_ENDPOINT_XFER_ISOC || +- chan->ep_type == USB_ENDPOINT_XFER_INT)) { ++ chan->ep_type == USB_ENDPOINT_XFER_INT) && ++ (halt_status == DWC2_HC_XFER_URB_DEQUEUE)) { ++ chan->halt_status = halt_status; + dev_err(hsotg->dev, "%s() Channel can't be halted\n", + __func__); + return; +@@ -1827,11 +1829,13 @@ void dwc2_hcd_disconnect(struct dwc2_hsotg *hsotg, bool force) + * Without the extra check here we will end calling disconnect + * and won't get any future interrupts to handle the connect. + */ +- if (!force) { +- hprt0 = dwc2_readl(hsotg, HPRT0); +- if (!(hprt0 & HPRT0_CONNDET) && (hprt0 & HPRT0_CONNSTS)) +- dwc2_hcd_connect(hsotg); +- } ++ hprt0 = dwc2_readl(hsotg, HPRT0); ++ ++ if (!force && !(hprt0 & HPRT0_CONNDET) && ++ (hprt0 & HPRT0_CONNSTS)) ++ dwc2_hcd_connect(hsotg); ++ else if (hsotg->lx_state != DWC2_L0) ++ usb_hcd_resume_root_hub(hsotg->priv); + } + + /** +@@ -2441,10 +2445,13 @@ static void dwc2_hc_init_xfer(struct dwc2_hsotg *hsotg, + } + } + +-static int dwc2_alloc_split_dma_aligned_buf(struct dwc2_hsotg *hsotg, +- struct dwc2_qh *qh, +- struct dwc2_host_chan *chan) ++static int dwc2_alloc_qh_dma_aligned_buf(struct dwc2_hsotg *hsotg, ++ struct dwc2_qh *qh, ++ struct dwc2_qtd *qtd, ++ struct dwc2_host_chan *chan) + { ++ u32 offset; ++ + if (!hsotg->unaligned_cache || + chan->max_packet > DWC2_KMEM_UNALIGNED_BUF_SIZE) + return -ENOMEM; +@@ -2456,6 +2463,18 @@ static int dwc2_alloc_split_dma_aligned_buf(struct dwc2_hsotg *hsotg, + return -ENOMEM; + } + ++ if (!chan->ep_is_in) { ++ if (qh->do_split) { ++ offset = chan->xfer_dma - qtd->urb->dma; ++ memcpy(qh->dw_align_buf, (u8 *)qtd->urb->buf + offset, ++ (chan->xfer_len > 188 ? 188 : chan->xfer_len)); ++ } else { ++ offset = chan->xfer_dma - qtd->urb->dma; ++ memcpy(qh->dw_align_buf, (u8 *)qtd->urb->buf + offset, ++ chan->xfer_len); ++ } ++ } ++ + qh->dw_align_buf_dma = dma_map_single(hsotg->dev, qh->dw_align_buf, + DWC2_KMEM_UNALIGNED_BUF_SIZE, + DMA_FROM_DEVICE); +@@ -2660,10 +2679,10 @@ static int dwc2_assign_and_init_hc(struct dwc2_hsotg *hsotg, struct dwc2_qh *qh) + dwc2_hc_init_xfer(hsotg, chan, qtd); + + /* For non-dword aligned buffers */ +- if (hsotg->params.host_dma && qh->do_split && +- chan->ep_is_in && (chan->xfer_dma & 0x3)) { ++ if (hsotg->params.host_dma && (chan->xfer_dma & 0x3) && ++ chan->ep_type == USB_ENDPOINT_XFER_ISOC) { + dev_vdbg(hsotg->dev, "Non-aligned buffer\n"); +- if (dwc2_alloc_split_dma_aligned_buf(hsotg, qh, chan)) { ++ if (dwc2_alloc_qh_dma_aligned_buf(hsotg, qh, qtd, chan)) { + dev_err(hsotg->dev, + "Failed to allocate memory to handle non-aligned buffer\n"); + /* Add channel back to free list */ +@@ -3173,6 +3192,9 @@ static void dwc2_conn_id_status_change(struct work_struct *work) + + dev_dbg(hsotg->dev, "%s()\n", __func__); + ++ if (!hsotg->ll_phy_enabled && dwc2_is_host_mode(hsotg)) ++ dwc2_lowlevel_phy_enable(hsotg); ++ + gotgctl = dwc2_readl(hsotg, GOTGCTL); + dev_dbg(hsotg->dev, "gotgctl=%0x\n", gotgctl); + dev_dbg(hsotg->dev, "gotgctl.b.conidsts=%d\n", +@@ -5074,10 +5096,6 @@ int dwc2_hcd_init(struct dwc2_hsotg *hsotg) + hcd->has_tt = 1; + + res = platform_get_resource(pdev, IORESOURCE_MEM, 0); +- if (!res) { +- retval = -EINVAL; +- goto error1; +- } + hcd->rsrc_start = res->start; + hcd->rsrc_len = resource_size(res); + +@@ -5228,6 +5246,13 @@ int dwc2_hcd_init(struct dwc2_hsotg *hsotg) + if (!IS_ERR_OR_NULL(hsotg->uphy)) + otg_set_host(hsotg->uphy->otg, &hcd->self); + ++ /* ++ * do not manage the PHY state in the HCD core, instead let the driver ++ * handle this (for example if the PHY can only be turned on after a ++ * specific event) ++ */ ++ hcd->skip_phy_initialization = 1; ++ + /* + * Finish generic HCD initialization and start the HCD. This function + * allocates the DMA buffer pool, registers the USB bus, requests the +diff --git a/drivers/usb/dwc2/hcd_intr.c b/drivers/usb/dwc2/hcd_intr.c +old mode 100644 +new mode 100755 +index d5f4ec1b7..4989ec761 +--- a/drivers/usb/dwc2/hcd_intr.c ++++ b/drivers/usb/dwc2/hcd_intr.c +@@ -1180,7 +1180,10 @@ static void dwc2_update_urb_state_abn(struct dwc2_hsotg *hsotg, + + if (urb->actual_length + xfer_length > urb->length) { + dev_warn(hsotg->dev, "%s(): trimming xfer length\n", __func__); +- xfer_length = urb->length - urb->actual_length; ++ if (urb->length & 0x3) ++ xfer_length = 0; ++ else ++ xfer_length = urb->length - urb->actual_length; + } + + urb->actual_length += xfer_length; +@@ -2065,8 +2068,6 @@ static void dwc2_hc_n_intr(struct dwc2_hsotg *hsotg, int chnum) + hcint, hcintmsk, hcint & hcintmsk); + } + +- dwc2_writel(hsotg, hcint, HCINT(chnum)); +- + /* + * If we got an interrupt after someone called + * dwc2_hcd_endpoint_disable() we don't want to crash below +@@ -2079,6 +2080,8 @@ static void dwc2_hc_n_intr(struct dwc2_hsotg *hsotg, int chnum) + chan->hcint = hcint; + hcint &= hcintmsk; + ++ dwc2_writel(hsotg, hcint, HCINT(chnum)); ++ + /* + * If the channel was halted due to a dequeue, the qtd list might + * be empty or at least the first entry will not be the active qtd. +diff --git a/drivers/usb/dwc2/hcd_queue.c b/drivers/usb/dwc2/hcd_queue.c +old mode 100644 +new mode 100755 +index 68bbac64b..9d2b92a37 +--- a/drivers/usb/dwc2/hcd_queue.c ++++ b/drivers/usb/dwc2/hcd_queue.c +@@ -730,8 +730,14 @@ static int dwc2_uframe_schedule_split(struct dwc2_hsotg *hsotg, + * Note that this will tend to front-load the high speed schedule. + * We may eventually want to try to avoid this by either considering + * both schedules together or doing some sort of round robin. ++ * ++ * For isoc split out, start schedule at the 2 * DWC2_SLICES_PER_UFRAME ++ * to transfer SSPLIT-begin OUT transaction like EHCI controller. + */ +- ls_search_slice = 0; ++ if (qh->ep_type == USB_ENDPOINT_XFER_ISOC && !qh->ep_is_in) ++ ls_search_slice = 2 * DWC2_SLICES_PER_UFRAME; ++ else ++ ls_search_slice = 0; + + while (ls_search_slice < DWC2_LS_SCHEDULE_SLICES) { + int start_s_uframe; +diff --git a/drivers/usb/dwc2/params.c b/drivers/usb/dwc2/params.c +old mode 100644 +new mode 100755 +index 267543c3d..195cca1fe +--- a/drivers/usb/dwc2/params.c ++++ b/drivers/usb/dwc2/params.c +@@ -90,6 +90,8 @@ static void dwc2_set_rk_params(struct dwc2_hsotg *hsotg) + p->ahbcfg = GAHBCFG_HBSTLEN_INCR16 << + GAHBCFG_HBSTLEN_SHIFT; + p->power_down = DWC2_POWER_DOWN_PARAM_NONE; ++ p->lpm = false; ++ p->g_dma_desc = false; + } + + static void dwc2_set_ltq_params(struct dwc2_hsotg *hsotg) +@@ -177,7 +179,10 @@ static void dwc2_set_stm32mp15_fsotg_params(struct dwc2_hsotg *hsotg) + p->i2c_enable = false; + p->activate_stm_fs_transceiver = true; + p->activate_stm_id_vb_detection = true; ++ p->ahbcfg = GAHBCFG_HBSTLEN_INCR16 << GAHBCFG_HBSTLEN_SHIFT; + p->power_down = DWC2_POWER_DOWN_PARAM_NONE; ++ p->host_support_fs_ls_low_power = true; ++ p->host_ls_low_power_phy_clk = true; + } + + static void dwc2_set_stm32mp15_hsotg_params(struct dwc2_hsotg *hsotg) +@@ -189,7 +194,12 @@ static void dwc2_set_stm32mp15_hsotg_params(struct dwc2_hsotg *hsotg) + p->host_rx_fifo_size = 440; + p->host_nperio_tx_fifo_size = 256; + p->host_perio_tx_fifo_size = 256; ++ p->ahbcfg = GAHBCFG_HBSTLEN_INCR16 << GAHBCFG_HBSTLEN_SHIFT; + p->power_down = DWC2_POWER_DOWN_PARAM_NONE; ++ p->lpm = false; ++ p->lpm_clock_gating = false; ++ p->besl = false; ++ p->hird_threshold_en = false; + } + + const struct of_device_id dwc2_of_match_table[] = { +diff --git a/drivers/usb/dwc2/platform.c b/drivers/usb/dwc2/platform.c +old mode 100644 +new mode 100755 +index 5f18acac7..c83eaf74f +--- a/drivers/usb/dwc2/platform.c ++++ b/drivers/usb/dwc2/platform.c +@@ -128,27 +128,11 @@ static void __dwc2_disable_regulators(void *data) + regulator_bulk_disable(ARRAY_SIZE(hsotg->supplies), hsotg->supplies); + } + +-static int __dwc2_lowlevel_hw_enable(struct dwc2_hsotg *hsotg) ++static int __dwc2_lowlevel_phy_enable(struct dwc2_hsotg *hsotg) + { + struct platform_device *pdev = to_platform_device(hsotg->dev); + int ret; + +- ret = regulator_bulk_enable(ARRAY_SIZE(hsotg->supplies), +- hsotg->supplies); +- if (ret) +- return ret; +- +- ret = devm_add_action_or_reset(&pdev->dev, +- __dwc2_disable_regulators, hsotg); +- if (ret) +- return ret; +- +- if (hsotg->clk) { +- ret = clk_prepare_enable(hsotg->clk); +- if (ret) +- return ret; +- } +- + if (hsotg->uphy) { + ret = usb_phy_init(hsotg->uphy); + } else if (hsotg->plat && hsotg->plat->phy_init) { +@@ -163,22 +147,22 @@ static int __dwc2_lowlevel_hw_enable(struct dwc2_hsotg *hsotg) + } + + /** +- * dwc2_lowlevel_hw_enable - enable platform lowlevel hw resources ++ * dwc2_lowlevel_phy_enable - enable lowlevel PHY resources + * @hsotg: The driver state + * + * A wrapper for platform code responsible for controlling +- * low-level USB platform resources (phy, clock, regulators) ++ * low-level PHY resources. + */ +-int dwc2_lowlevel_hw_enable(struct dwc2_hsotg *hsotg) ++int dwc2_lowlevel_phy_enable(struct dwc2_hsotg *hsotg) + { +- int ret = __dwc2_lowlevel_hw_enable(hsotg); ++ int ret = __dwc2_lowlevel_phy_enable(hsotg); + + if (ret == 0) +- hsotg->ll_hw_enabled = true; ++ hsotg->ll_phy_enabled = true; + return ret; + } + +-static int __dwc2_lowlevel_hw_disable(struct dwc2_hsotg *hsotg) ++static int __dwc2_lowlevel_phy_disable(struct dwc2_hsotg *hsotg) + { + struct platform_device *pdev = to_platform_device(hsotg->dev); + int ret = 0; +@@ -192,11 +176,78 @@ static int __dwc2_lowlevel_hw_disable(struct dwc2_hsotg *hsotg) + if (ret == 0) + ret = phy_power_off(hsotg->phy); + } ++ ++ return ret; ++} ++ ++/** ++ * dwc2_lowlevel_phy_disable - disable lowlevel PHY resources ++ * @hsotg: The driver state ++ * ++ * A wrapper for platform code responsible for controlling ++ * low-level PHY platform resources. ++ */ ++int dwc2_lowlevel_phy_disable(struct dwc2_hsotg *hsotg) ++{ ++ int ret = __dwc2_lowlevel_phy_disable(hsotg); ++ ++ if (ret == 0) ++ hsotg->ll_phy_enabled = false; ++ return ret; ++} ++ ++static int __dwc2_lowlevel_hw_enable(struct dwc2_hsotg *hsotg) ++{ ++ struct platform_device *pdev = to_platform_device(hsotg->dev); ++ int ret; ++ ++ ret = regulator_bulk_enable(ARRAY_SIZE(hsotg->supplies), ++ hsotg->supplies); + if (ret) + return ret; + +- if (hsotg->clk) +- clk_disable_unprepare(hsotg->clk); ++ ret = devm_add_action_or_reset(&pdev->dev, ++ __dwc2_disable_regulators, hsotg); ++ if (ret) ++ return ret; ++ ++ ret = clk_bulk_prepare_enable(hsotg->num_clks, hsotg->clks); ++ if (ret) ++ return ret; ++ ++ if (!hsotg->ll_phy_enabled) ++ ret = dwc2_lowlevel_phy_enable(hsotg); ++ ++ return ret; ++} ++ ++/** ++ * dwc2_lowlevel_hw_enable - enable platform lowlevel hw resources ++ * @hsotg: The driver state ++ * ++ * A wrapper for platform code responsible for controlling ++ * low-level USB platform resources (phy, clock, regulators) ++ */ ++int dwc2_lowlevel_hw_enable(struct dwc2_hsotg *hsotg) ++{ ++ int ret = __dwc2_lowlevel_hw_enable(hsotg); ++ ++ if (ret == 0) ++ hsotg->ll_hw_enabled = true; ++ return ret; ++} ++ ++static int __dwc2_lowlevel_hw_disable(struct dwc2_hsotg *hsotg) ++{ ++ int ret = 0; ++ ++ if (hsotg->ll_phy_enabled) ++ ret = dwc2_lowlevel_phy_disable(hsotg); ++ ++ if (ret) ++ return ret; ++ ++ clk_bulk_disable_unprepare(hsotg->num_clks, hsotg->clks); + + return 0; + } +@@ -281,10 +332,18 @@ static int dwc2_lowlevel_hw_init(struct dwc2_hsotg *hsotg) + hsotg->plat = dev_get_platdata(hsotg->dev); + + /* Clock */ +- hsotg->clk = devm_clk_get_optional(hsotg->dev, "otg"); +- if (IS_ERR(hsotg->clk)) { +- dev_err(hsotg->dev, "cannot get otg clock\n"); +- return PTR_ERR(hsotg->clk); ++ if (hsotg->dev->of_node) { ++ ret = devm_clk_bulk_get_all(hsotg->dev, &hsotg->clks); ++ if (ret == -EPROBE_DEFER) ++ return ret; ++ /* ++ * Clocks are optional, but new DT platforms should support all ++ * clocks as required by the DT-binding. ++ */ ++ if (ret < 0) ++ hsotg->num_clks = 0; ++ else ++ hsotg->num_clks = ret; + } + + /* Regulators */ +@@ -328,6 +387,9 @@ static int dwc2_driver_remove(struct platform_device *dev) + if (hsotg->params.activate_stm_id_vb_detection) + regulator_disable(hsotg->usb33d); + ++ pm_runtime_put_sync(hsotg->dev); ++ pm_runtime_disable(hsotg->dev); ++ + if (hsotg->ll_hw_enabled) + dwc2_lowlevel_hw_disable(hsotg); + +@@ -479,6 +541,11 @@ static int dwc2_driver_probe(struct platform_device *dev) + + hsotg->needs_byte_swap = dwc2_check_core_endianness(hsotg); + ++ pm_runtime_enable(hsotg->dev); ++ retval = pm_runtime_get_sync(hsotg->dev); ++ if (retval < 0) ++ goto error; ++ + retval = dwc2_get_dr_mode(hsotg); + if (retval) + goto error; +@@ -594,6 +661,11 @@ static int dwc2_driver_probe(struct platform_device *dev) + if (hsotg->dr_mode == USB_DR_MODE_PERIPHERAL) + dwc2_lowlevel_hw_disable(hsotg); + ++ if (hsotg->dr_mode == USB_DR_MODE_OTG && dwc2_is_device_mode(hsotg)) { ++ if (hsotg->ll_phy_enabled) ++ dwc2_lowlevel_phy_disable(hsotg); ++ } ++ + #if IS_ENABLED(CONFIG_USB_DWC2_PERIPHERAL) || \ + IS_ENABLED(CONFIG_USB_DWC2_DUAL_ROLE) + /* Postponed adding a new gadget to the udc class driver list */ +@@ -622,6 +694,8 @@ static int dwc2_driver_probe(struct platform_device *dev) + if (hsotg->params.activate_stm_id_vb_detection) + regulator_disable(hsotg->usb33d); + error: ++ pm_runtime_put_sync(hsotg->dev); ++ pm_runtime_disable(hsotg->dev); + if (hsotg->dr_mode != USB_DR_MODE_PERIPHERAL) + dwc2_lowlevel_hw_disable(hsotg); + return retval; +@@ -681,6 +755,7 @@ static int __maybe_unused dwc2_suspend(struct device *dev) + static int __maybe_unused dwc2_resume(struct device *dev) + { + struct dwc2_hsotg *dwc2 = dev_get_drvdata(dev); ++ unsigned long flags; + int ret = 0; + + if (dwc2->phy_off_for_suspend && dwc2->ll_hw_enabled) { +@@ -720,6 +795,17 @@ static int __maybe_unused dwc2_resume(struct device *dev) + + dwc2_drd_resume(dwc2); + ++ /* Stop hcd if dr_mode is host and PD is power off when suspend */ ++ if (dwc2->op_state == OTG_STATE_A_HOST && dwc2_is_device_mode(dwc2)) { ++ spin_lock_irqsave(&dwc2->lock, flags); ++ dwc2_hcd_disconnect(dwc2, true); ++ dwc2->op_state = OTG_STATE_B_PERIPHERAL; ++ dwc2->lx_state = DWC2_L3; ++ if (!dwc2->driver) ++ dwc2_hsotg_core_init_disconnected(dwc2, false); ++ spin_unlock_irqrestore(&dwc2->lock, flags); ++ } ++ + if (dwc2_is_device_mode(dwc2)) + ret = dwc2_hsotg_resume(dwc2); + +diff --git a/drivers/usb/dwc3/Kconfig b/drivers/usb/dwc3/Kconfig +old mode 100644 +new mode 100755 +index 7a2304565..2133acf8e +--- a/drivers/usb/dwc3/Kconfig ++++ b/drivers/usb/dwc3/Kconfig +@@ -139,4 +139,14 @@ config USB_DWC3_QCOM + for peripheral mode support. + Say 'Y' or 'M' if you have one such device. + ++config USB_DWC3_IMX8MP ++ tristate "NXP iMX8MP Platform" ++ depends on OF && COMMON_CLK ++ depends on (ARCH_MXC && ARM64) || COMPILE_TEST ++ default USB_DWC3 ++ help ++ NXP iMX8M Plus SoC use DesignWare Core IP for USB2/3 ++ functionality. ++ Say 'Y' or 'M' if you have one such device. ++ + endif +diff --git a/drivers/usb/dwc3/Makefile b/drivers/usb/dwc3/Makefile +old mode 100644 +new mode 100755 +index ae86da0dc..2259f8876 +--- a/drivers/usb/dwc3/Makefile ++++ b/drivers/usb/dwc3/Makefile +@@ -51,3 +51,4 @@ obj-$(CONFIG_USB_DWC3_MESON_G12A) += dwc3-meson-g12a.o + obj-$(CONFIG_USB_DWC3_OF_SIMPLE) += dwc3-of-simple.o + obj-$(CONFIG_USB_DWC3_ST) += dwc3-st.o + obj-$(CONFIG_USB_DWC3_QCOM) += dwc3-qcom.o ++obj-$(CONFIG_USB_DWC3_IMX8MP) += dwc3-imx8mp.o +diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c +old mode 100644 +new mode 100755 +index 1580d51ae..4f3eb0ac7 +--- a/drivers/usb/dwc3/core.c ++++ b/drivers/usb/dwc3/core.c +@@ -114,19 +114,30 @@ void dwc3_set_prtcap(struct dwc3 *dwc, u32 mode) + dwc->current_dr_role = mode; + } + +-static int dwc3_core_soft_reset(struct dwc3 *dwc); +- + static void __dwc3_set_mode(struct work_struct *work) + { + struct dwc3 *dwc = work_to_dwc(work); + unsigned long flags; + int ret; ++ int retries = 1000; + u32 reg; + + mutex_lock(&dwc->mutex); + + pm_runtime_get_sync(dwc->dev); + ++#if defined(CONFIG_ARCH_ROCKCHIP) && defined(CONFIG_NO_GKI) ++ if (dwc->desired_role_sw_mode == USB_DR_MODE_PERIPHERAL && ++ dwc->desired_role_sw_mode != dwc->current_role_sw_mode) ++ pm_runtime_get(dwc->dev); ++ else if ((dwc->desired_role_sw_mode == USB_DR_MODE_UNKNOWN || ++ dwc->desired_role_sw_mode == USB_DR_MODE_HOST) && ++ dwc->current_role_sw_mode == USB_DR_MODE_PERIPHERAL) ++ pm_runtime_put(dwc->dev); ++ ++ dwc->current_role_sw_mode = dwc->desired_role_sw_mode; ++#endif ++ + if (dwc->current_dr_role == DWC3_GCTL_PRTCAP_OTG) + dwc3_otg_update(dwc, 0); + +@@ -201,7 +212,26 @@ static void __dwc3_set_mode(struct work_struct *work) + } + break; + case DWC3_GCTL_PRTCAP_DEVICE: +- dwc3_core_soft_reset(dwc); ++ reg = dwc3_readl(dwc->regs, DWC3_DCTL); ++ reg |= DWC3_DCTL_CSFTRST; ++ dwc3_writel(dwc->regs, DWC3_DCTL, reg); ++ ++ if (DWC3_VER_IS_WITHIN(DWC31, 190A, ANY) || DWC3_IP_IS(DWC32)) ++ retries = 10; ++ ++ do { ++ reg = dwc3_readl(dwc->regs, DWC3_DCTL); ++ if (!(reg & DWC3_DCTL_CSFTRST)) ++ goto done; ++ ++ if (DWC3_VER_IS_WITHIN(DWC31, 190A, ANY) || DWC3_IP_IS(DWC32)) ++ msleep(20); ++ else ++ udelay(1); ++ } while (--retries); ++done: ++ if (DWC3_VER_IS_WITHIN(DWC31, ANY, 180A)) ++ msleep(50); + + dwc3_event_buffers_setup(dwc); + +@@ -264,6 +294,19 @@ static int dwc3_core_soft_reset(struct dwc3 *dwc) + { + u32 reg; + int retries = 1000; ++ int ret; ++ ++ usb_phy_init(dwc->usb2_phy); ++ usb_phy_init(dwc->usb3_phy); ++ ret = phy_init(dwc->usb2_generic_phy); ++ if (ret < 0) ++ return ret; ++ ++ ret = phy_init(dwc->usb3_generic_phy); ++ if (ret < 0) { ++ phy_exit(dwc->usb2_generic_phy); ++ return ret; ++ } + + /* + * We're resetting only the device side because, if we're in host mode, +@@ -297,6 +340,9 @@ static int dwc3_core_soft_reset(struct dwc3 *dwc) + udelay(1); + } while (--retries); + ++ phy_exit(dwc->usb3_generic_phy); ++ phy_exit(dwc->usb2_generic_phy); ++ + return -ETIMEDOUT; + + done: +@@ -554,6 +600,9 @@ static void dwc3_cache_hwparams(struct dwc3 *dwc) + parms->hwparams6 = dwc3_readl(dwc->regs, DWC3_GHWPARAMS6); + parms->hwparams7 = dwc3_readl(dwc->regs, DWC3_GHWPARAMS7); + parms->hwparams8 = dwc3_readl(dwc->regs, DWC3_GHWPARAMS8); ++ ++ if (DWC3_IP_IS(DWC32)) ++ parms->hwparams9 = dwc3_readl(dwc->regs, DWC3_GHWPARAMS9); + } + + static int dwc3_core_ulpi_init(struct dwc3 *dwc) +@@ -963,21 +1012,9 @@ static int dwc3_core_init(struct dwc3 *dwc) + dwc->phys_ready = true; + } + +- usb_phy_init(dwc->usb2_phy); +- usb_phy_init(dwc->usb3_phy); +- ret = phy_init(dwc->usb2_generic_phy); +- if (ret < 0) +- goto err0a; +- +- ret = phy_init(dwc->usb3_generic_phy); +- if (ret < 0) { +- phy_exit(dwc->usb2_generic_phy); +- goto err0a; +- } +- + ret = dwc3_core_soft_reset(dwc); + if (ret) +- goto err1; ++ goto err0a; + + if (hw_mode == DWC3_GHWPARAMS0_MODE_DRD && + !DWC3_VER_IS_WITHIN(DWC3, ANY, 194A)) { +@@ -1043,12 +1080,25 @@ static int dwc3_core_init(struct dwc3 *dwc) + if (!DWC3_VER_IS_PRIOR(DWC3, 290A)) + reg |= DWC3_GUCTL1_DEV_L1_EXIT_BY_HW; + ++ /* ++ * Decouple USB 2.0 L1 & L2 events which will allow for ++ * gadget driver to only receive U3/L2 suspend & wakeup ++ * events and prevent the more frequent L1 LPM transitions ++ * from interrupting the driver. ++ */ ++ if (!DWC3_VER_IS_PRIOR(DWC3, 300A)) ++ reg |= DWC3_GUCTL1_DEV_DECOUPLE_L1L2_EVT; ++ + if (dwc->dis_tx_ipgap_linecheck_quirk) + reg |= DWC3_GUCTL1_TX_IPGAP_LINECHECK_DIS; + + if (dwc->parkmode_disable_ss_quirk) + reg |= DWC3_GUCTL1_PARKMODE_DISABLE_SS; + ++ if (dwc->maximum_speed == USB_SPEED_HIGH || ++ dwc->maximum_speed == USB_SPEED_FULL) ++ reg |= DWC3_GUCTL1_DEV_FORCE_20_CLK_FOR_30_CLK; ++ + dwc3_writel(dwc->regs, DWC3_GUCTL1, reg); + } + +@@ -1148,11 +1198,8 @@ static int dwc3_core_get_phy(struct dwc3 *dwc) + ret = PTR_ERR(dwc->usb2_phy); + if (ret == -ENXIO || ret == -ENODEV) { + dwc->usb2_phy = NULL; +- } else if (ret == -EPROBE_DEFER) { +- return ret; + } else { +- dev_err(dev, "no usb2 phy configured\n"); +- return ret; ++ return dev_err_probe(dev, ret, "no usb2 phy configured\n"); + } + } + +@@ -1160,11 +1207,8 @@ static int dwc3_core_get_phy(struct dwc3 *dwc) + ret = PTR_ERR(dwc->usb3_phy); + if (ret == -ENXIO || ret == -ENODEV) { + dwc->usb3_phy = NULL; +- } else if (ret == -EPROBE_DEFER) { +- return ret; + } else { +- dev_err(dev, "no usb3 phy configured\n"); +- return ret; ++ return dev_err_probe(dev, ret, "no usb3 phy configured\n"); + } + } + +@@ -1173,11 +1217,8 @@ static int dwc3_core_get_phy(struct dwc3 *dwc) + ret = PTR_ERR(dwc->usb2_generic_phy); + if (ret == -ENOSYS || ret == -ENODEV) { + dwc->usb2_generic_phy = NULL; +- } else if (ret == -EPROBE_DEFER) { +- return ret; + } else { +- dev_err(dev, "no usb2 phy configured\n"); +- return ret; ++ return dev_err_probe(dev, ret, "no usb2 phy configured\n"); + } + } + +@@ -1186,11 +1227,8 @@ static int dwc3_core_get_phy(struct dwc3 *dwc) + ret = PTR_ERR(dwc->usb3_generic_phy); + if (ret == -ENOSYS || ret == -ENODEV) { + dwc->usb3_generic_phy = NULL; +- } else if (ret == -EPROBE_DEFER) { +- return ret; + } else { +- dev_err(dev, "no usb3 phy configured\n"); +- return ret; ++ return dev_err_probe(dev, ret, "no usb3 phy configured\n"); + } + } + +@@ -1212,11 +1250,8 @@ static int dwc3_core_init_mode(struct dwc3 *dwc) + phy_set_mode(dwc->usb3_generic_phy, PHY_MODE_USB_DEVICE); + + ret = dwc3_gadget_init(dwc); +- if (ret) { +- if (ret != -EPROBE_DEFER) +- dev_err(dev, "failed to initialize gadget\n"); +- return ret; +- } ++ if (ret) ++ return dev_err_probe(dev, ret, "failed to initialize gadget\n"); + break; + case USB_DR_MODE_HOST: + dwc3_set_prtcap(dwc, DWC3_GCTL_PRTCAP_HOST); +@@ -1227,20 +1262,14 @@ static int dwc3_core_init_mode(struct dwc3 *dwc) + phy_set_mode(dwc->usb3_generic_phy, PHY_MODE_USB_HOST); + + ret = dwc3_host_init(dwc); +- if (ret) { +- if (ret != -EPROBE_DEFER) +- dev_err(dev, "failed to initialize host\n"); +- return ret; +- } ++ if (ret) ++ return dev_err_probe(dev, ret, "failed to initialize host\n"); + break; + case USB_DR_MODE_OTG: + INIT_WORK(&dwc->drd_work, __dwc3_set_mode); + ret = dwc3_drd_init(dwc); +- if (ret) { +- if (ret != -EPROBE_DEFER) +- dev_err(dev, "failed to initialize dual-role\n"); +- return ret; +- } ++ if (ret) ++ return dev_err_probe(dev, ret, "failed to initialize dual-role\n"); + break; + default: + dev_err(dev, "Unsupported mode of operation %d\n", dwc->dr_mode); +@@ -1281,6 +1310,9 @@ static void dwc3_get_properties(struct dwc3 *dwc) + u8 rx_max_burst_prd; + u8 tx_thr_num_pkt_prd; + u8 tx_max_burst_prd; ++ u8 tx_fifo_resize_max_num; ++ const char *usb_psy_name; ++ int ret; + + /* default to highest possible threshold */ + lpm_nyet_threshold = 0xf; +@@ -1294,7 +1326,15 @@ static void dwc3_get_properties(struct dwc3 *dwc) + */ + hird_threshold = 12; + ++ /* ++ * default to a TXFIFO size large enough to fit 6 max packets. This ++ * allows for systems with larger bus latencies to have some headroom ++ * for endpoints that have a large bMaxBurst value. ++ */ ++ tx_fifo_resize_max_num = 6; ++ + dwc->maximum_speed = usb_get_maximum_speed(dev); ++ dwc->max_ssp_rate = usb_get_maximum_ssp_rate(dev); + dwc->dr_mode = usb_get_dr_mode(dev); + dwc->hsphy_mode = of_usb_get_phy_mode(dev->of_node); + +@@ -1305,6 +1345,13 @@ static void dwc3_get_properties(struct dwc3 *dwc) + else + dwc->sysdev = dwc->dev; + ++ ret = device_property_read_string(dev, "usb-psy-name", &usb_psy_name); ++ if (ret >= 0) { ++ dwc->usb_psy = power_supply_get_by_name(usb_psy_name); ++ if (!dwc->usb_psy) ++ dev_err(dev, "couldn't get usb power supply\n"); ++ } ++ + dwc->has_lpm_erratum = device_property_read_bool(dev, + "snps,has-lpm-erratum"); + device_property_read_u8(dev, "snps,lpm-nyet-threshold", +@@ -1329,6 +1376,11 @@ static void dwc3_get_properties(struct dwc3 *dwc) + &tx_thr_num_pkt_prd); + device_property_read_u8(dev, "snps,tx-max-burst-prd", + &tx_max_burst_prd); ++ dwc->do_fifo_resize = device_property_read_bool(dev, ++ "tx-fifo-resize"); ++ if (dwc->do_fifo_resize) ++ device_property_read_u8(dev, "tx-fifo-max-num", ++ &tx_fifo_resize_max_num); + + dwc->disable_scramble_quirk = device_property_read_bool(dev, + "snps,disable_scramble_quirk"); +@@ -1394,6 +1446,8 @@ static void dwc3_get_properties(struct dwc3 *dwc) + dwc->tx_max_burst_prd = tx_max_burst_prd; + + dwc->imod_interval = 0; ++ ++ dwc->tx_fifo_resize_max_num = tx_fifo_resize_max_num; + } + + /* check whether the core supports IMOD */ +@@ -1468,21 +1522,59 @@ static void dwc3_check_params(struct dwc3 *dwc) + } + break; + } ++ ++ /* ++ * Currently the controller does not have visibility into the HW ++ * parameter to determine the maximum number of lanes the HW supports. ++ * If the number of lanes is not specified in the device property, then ++ * set the default to support dual-lane for DWC_usb32 and single-lane ++ * for DWC_usb31 for super-speed-plus. ++ */ ++ if (dwc->maximum_speed == USB_SPEED_SUPER_PLUS) { ++ switch (dwc->max_ssp_rate) { ++ case USB_SSP_GEN_2x1: ++ if (hwparam_gen == DWC3_GHWPARAMS3_SSPHY_IFC_GEN1) ++ dev_warn(dev, "UDC only supports Gen 1\n"); ++ break; ++ case USB_SSP_GEN_1x2: ++ case USB_SSP_GEN_2x2: ++ if (DWC3_IP_IS(DWC31)) ++ dev_warn(dev, "UDC only supports single lane\n"); ++ break; ++ case USB_SSP_GEN_UNKNOWN: ++ default: ++ switch (hwparam_gen) { ++ case DWC3_GHWPARAMS3_SSPHY_IFC_GEN2: ++ if (DWC3_IP_IS(DWC32)) ++ dwc->max_ssp_rate = USB_SSP_GEN_2x2; ++ else ++ dwc->max_ssp_rate = USB_SSP_GEN_2x1; ++ break; ++ case DWC3_GHWPARAMS3_SSPHY_IFC_GEN1: ++ if (DWC3_IP_IS(DWC32)) ++ dwc->max_ssp_rate = USB_SSP_GEN_1x2; ++ break; ++ } ++ break; ++ } ++ } + } + + static int dwc3_probe(struct platform_device *pdev) + { + struct device *dev = &pdev->dev; + struct resource *res, dwc_res; ++ struct dwc3_vendor *vdwc; + struct dwc3 *dwc; + + int ret; + + void __iomem *regs; + +- dwc = devm_kzalloc(dev, sizeof(*dwc), GFP_KERNEL); +- if (!dwc) ++ vdwc = devm_kzalloc(dev, sizeof(*vdwc), GFP_KERNEL); ++ if (!vdwc) + return -ENOMEM; ++ dwc = &vdwc->dwc; + + dwc->dev = dev; + +@@ -1514,7 +1606,7 @@ static int dwc3_probe(struct platform_device *pdev) + + dwc3_get_properties(dwc); + +- dwc->reset = devm_reset_control_array_get(dev, true, true); ++ dwc->reset = devm_reset_control_array_get_optional_shared(dev); + if (IS_ERR(dwc->reset)) + return PTR_ERR(dwc->reset); + +@@ -1580,8 +1672,7 @@ static int dwc3_probe(struct platform_device *pdev) + + ret = dwc3_core_init(dwc); + if (ret) { +- if (ret != -EPROBE_DEFER) +- dev_err(dev, "failed to initialize core: %d\n", ret); ++ dev_err_probe(dev, ret, "failed to initialize core\n"); + goto err4; + } + +@@ -1592,7 +1683,17 @@ static int dwc3_probe(struct platform_device *pdev) + if (ret) + goto err5; + +- pm_runtime_put(dev); ++ if (dwc->dr_mode == USB_DR_MODE_OTG && ++ of_device_is_compatible(dev->parent->of_node, ++ "rockchip,rk3399-dwc3")) { ++#if defined(CONFIG_ARCH_ROCKCHIP) && defined(CONFIG_NO_GKI) ++ pm_runtime_set_autosuspend_delay(dev, 100); ++#endif ++ pm_runtime_allow(dev); ++ pm_runtime_put_sync_suspend(dev); ++ } else { ++ pm_runtime_put(dev); ++ } + + return 0; + +@@ -1630,6 +1731,9 @@ static int dwc3_probe(struct platform_device *pdev) + assert_reset: + reset_control_assert(dwc->reset); + ++ if (dwc->usb_psy) ++ power_supply_put(dwc->usb_psy); ++ + return ret; + } + +@@ -1652,6 +1756,9 @@ static int dwc3_remove(struct platform_device *pdev) + dwc3_free_event_buffers(dwc); + dwc3_free_scratch_buffers(dwc); + ++ if (dwc->usb_psy) ++ power_supply_put(dwc->usb_psy); ++ + return 0; + } + +@@ -1836,7 +1943,7 @@ static int dwc3_runtime_suspend(struct device *dev) + if (ret) + return ret; + +- device_init_wakeup(dev, true); ++ device_init_wakeup(dev, false); + + return 0; + } +@@ -1846,7 +1953,7 @@ static int dwc3_runtime_resume(struct device *dev) + struct dwc3 *dwc = dev_get_drvdata(dev); + int ret; + +- device_init_wakeup(dev, false); ++ device_init_wakeup(dev, true); + + ret = dwc3_resume_common(dwc, PMSG_AUTO_RESUME); + if (ret) +@@ -1895,6 +2002,9 @@ static int dwc3_suspend(struct device *dev) + struct dwc3 *dwc = dev_get_drvdata(dev); + int ret; + ++ if (pm_runtime_suspended(dwc->dev)) ++ return 0; ++ + ret = dwc3_suspend_common(dwc, PMSG_SUSPEND); + if (ret) + return ret; +@@ -1909,6 +2019,9 @@ static int dwc3_resume(struct device *dev) + struct dwc3 *dwc = dev_get_drvdata(dev); + int ret; + ++ if (pm_runtime_suspended(dwc->dev)) ++ return 0; ++ + pinctrl_pm_select_default_state(dev); + + ret = dwc3_resume_common(dwc, PMSG_RESUME); +diff --git a/drivers/usb/dwc3/core.h b/drivers/usb/dwc3/core.h +old mode 100644 +new mode 100755 +index 79e1b82e5..9d770434f +--- a/drivers/usb/dwc3/core.h ++++ b/drivers/usb/dwc3/core.h +@@ -31,6 +31,8 @@ + + #include + ++#include ++ + #define DWC3_MSG_MAX 500 + + /* Global constants */ +@@ -55,7 +57,7 @@ + #define DWC3_DEVICE_EVENT_LINK_STATUS_CHANGE 3 + #define DWC3_DEVICE_EVENT_WAKEUP 4 + #define DWC3_DEVICE_EVENT_HIBER_REQ 5 +-#define DWC3_DEVICE_EVENT_EOPF 6 ++#define DWC3_DEVICE_EVENT_SUSPEND 6 + #define DWC3_DEVICE_EVENT_SOF 7 + #define DWC3_DEVICE_EVENT_ERRATIC_ERROR 9 + #define DWC3_DEVICE_EVENT_CMD_CMPL 10 +@@ -141,6 +143,7 @@ + #define DWC3_GHWPARAMS8 0xc600 + #define DWC3_GUCTL3 0xc60c + #define DWC3_GFLADJ 0xc630 ++#define DWC3_GHWPARAMS9 0xc680 + + /* Device Registers */ + #define DWC3_DCFG 0xc700 +@@ -253,9 +256,11 @@ + #define DWC3_GUCTL_HSTINAUTORETRY BIT(14) + + /* Global User Control 1 Register */ +-#define DWC3_GUCTL1_PARKMODE_DISABLE_SS BIT(17) ++#define DWC3_GUCTL1_DEV_DECOUPLE_L1L2_EVT BIT(31) + #define DWC3_GUCTL1_TX_IPGAP_LINECHECK_DIS BIT(28) +-#define DWC3_GUCTL1_DEV_L1_EXIT_BY_HW BIT(24) ++#define DWC3_GUCTL1_DEV_FORCE_20_CLK_FOR_30_CLK BIT(26) ++#define DWC3_GUCTL1_DEV_L1_EXIT_BY_HW BIT(24) ++#define DWC3_GUCTL1_PARKMODE_DISABLE_SS BIT(17) + + /* Global Status Register */ + #define DWC3_GSTS_OTG_IP BIT(10) +@@ -376,6 +381,9 @@ + #define DWC3_GHWPARAMS7_RAM1_DEPTH(n) ((n) & 0xffff) + #define DWC3_GHWPARAMS7_RAM2_DEPTH(n) (((n) >> 16) & 0xffff) + ++/* Global HWPARAMS9 Register */ ++#define DWC3_GHWPARAMS9_DEV_TXF_FLUSH_BYPASS BIT(0) ++ + /* Global Frame Length Adjustment Register */ + #define DWC3_GFLADJ_30MHZ_SDBND_SEL BIT(7) + #define DWC3_GFLADJ_30MHZ_MASK 0x3f +@@ -387,6 +395,8 @@ + #define DWC3_GUCTL3_SPLITDISABLE BIT(14) + + /* Device Configuration Register */ ++#define DWC3_DCFG_NUMLANES(n) (((n) & 0x3) << 30) /* DWC_usb32 only */ ++ + #define DWC3_DCFG_DEVADDR(addr) ((addr) << 3) + #define DWC3_DCFG_DEVADDR_MASK DWC3_DCFG_DEVADDR(0x7f) + +@@ -401,6 +411,7 @@ + #define DWC3_DCFG_NUMP(n) (((n) >> DWC3_DCFG_NUMP_SHIFT) & 0x1f) + #define DWC3_DCFG_NUMP_MASK (0x1f << DWC3_DCFG_NUMP_SHIFT) + #define DWC3_DCFG_LPM_CAP BIT(22) ++#define DWC3_DCFG_IGNSTRMPP BIT(23) + + /* Device Control Register */ + #define DWC3_DCTL_RUN_STOP BIT(31) +@@ -452,7 +463,7 @@ + #define DWC3_DEVTEN_CMDCMPLTEN BIT(10) + #define DWC3_DEVTEN_ERRTICERREN BIT(9) + #define DWC3_DEVTEN_SOFEN BIT(7) +-#define DWC3_DEVTEN_EOPFEN BIT(6) ++#define DWC3_DEVTEN_U3L2L1SUSPEN BIT(6) + #define DWC3_DEVTEN_HIBERNATIONREQEVTEN BIT(5) + #define DWC3_DEVTEN_WKUPEVTEN BIT(4) + #define DWC3_DEVTEN_ULSTCNGEN BIT(3) +@@ -460,6 +471,8 @@ + #define DWC3_DEVTEN_USBRSTEN BIT(1) + #define DWC3_DEVTEN_DISCONNEVTEN BIT(0) + ++#define DWC3_DSTS_CONNLANES(n) (((n) >> 30) & 0x3) /* DWC_usb32 only */ ++ + /* Device Status Register */ + #define DWC3_DSTS_DCNRD BIT(29) + +@@ -713,6 +726,7 @@ struct dwc3_ep { + #define DWC3_EP_FORCE_RESTART_STREAM BIT(9) + #define DWC3_EP_FIRST_STREAM_PRIMED BIT(10) + #define DWC3_EP_PENDING_CLEAR_STALL BIT(11) ++#define DWC3_EP_TXFIFO_RESIZED BIT(12) + + /* This last one is specific to EP0 */ + #define DWC3_EP0_DIR_IN BIT(31) +@@ -852,13 +866,12 @@ struct dwc3_hwparams { + u32 hwparams6; + u32 hwparams7; + u32 hwparams8; ++ u32 hwparams9; + }; + + /* HWPARAMS0 */ + #define DWC3_MODE(n) ((n) & 0x7) + +-#define DWC3_MDWIDTH(n) (((n) & 0xff00) >> 8) +- + /* HWPARAMS1 */ + #define DWC3_NUM_INT(n) (((n) & (0x3f << 15)) >> 15) + +@@ -905,11 +918,13 @@ struct dwc3_request { + unsigned int remaining; + + unsigned int status; +-#define DWC3_REQUEST_STATUS_QUEUED 0 +-#define DWC3_REQUEST_STATUS_STARTED 1 +-#define DWC3_REQUEST_STATUS_CANCELLED 2 +-#define DWC3_REQUEST_STATUS_COMPLETED 3 +-#define DWC3_REQUEST_STATUS_UNKNOWN -1 ++#define DWC3_REQUEST_STATUS_QUEUED 0 ++#define DWC3_REQUEST_STATUS_STARTED 1 ++#define DWC3_REQUEST_STATUS_DISCONNECTED 2 ++#define DWC3_REQUEST_STATUS_DEQUEUED 3 ++#define DWC3_REQUEST_STATUS_STALLED 4 ++#define DWC3_REQUEST_STATUS_COMPLETED 5 ++#define DWC3_REQUEST_STATUS_UNKNOWN -1 + + u8 epnum; + struct dwc3_trb *trb; +@@ -1122,6 +1137,12 @@ struct dwc3 { + enum usb_phy_interface hsphy_mode; + struct usb_role_switch *role_sw; + enum usb_dr_mode role_switch_default_mode; ++#if defined(CONFIG_ARCH_ROCKCHIP) && defined(CONFIG_NO_GKI) ++ u32 current_role_sw_mode; ++ u32 desired_role_sw_mode; ++#endif ++ ++ struct power_supply *usb_psy; + + u32 fladj; + u32 irq_gadget; +@@ -1132,6 +1153,9 @@ struct dwc3 { + u32 nr_scratch; + u32 u1u2; + u32 maximum_speed; ++ u32 gadget_max_speed; ++ enum usb_ssp_rate max_ssp_rate; ++ enum usb_ssp_rate gadget_ssp_rate; + + u32 ip; + +@@ -1214,6 +1238,7 @@ struct dwc3 { + u8 rx_max_burst_prd; + u8 tx_thr_num_pkt_prd; + u8 tx_max_burst_prd; ++ u8 tx_fifo_resize_max_num; + + const char *hsphy_interface; + +@@ -1227,6 +1252,7 @@ struct dwc3 { + unsigned is_utmi_l1_suspend:1; + unsigned is_fpga:1; + unsigned pending_events:1; ++ unsigned do_fifo_resize:1; + unsigned pullups_connected:1; + unsigned setup_packet_pending:1; + unsigned three_stage_setup:1; +@@ -1260,8 +1286,24 @@ struct dwc3 { + unsigned dis_metastability_quirk:1; + + unsigned dis_split_quirk:1; ++ unsigned async_callbacks:1; + + u16 imod_interval; ++ ++ int max_cfg_eps; ++ int last_fifo_depth; ++ int num_ep_resized; ++ ++}; ++ ++/** ++ * struct dwc3_vendor - contains parameters without modifying the format of DWC3 core ++ * @dwc: contains dwc3 core reference ++ * @softconnect: true when gadget connect is called, false when disconnect runs ++ */ ++struct dwc3_vendor { ++ struct dwc3 dwc; ++ unsigned softconnect:1; + }; + + #define INCRX_BURST_MODE 0 +@@ -1451,6 +1493,23 @@ u32 dwc3_core_fifo_space(struct dwc3_ep *dep, u8 type); + (!(_ip##_VERSIONTYPE_##_to) || \ + dwc->version_type <= _ip##_VERSIONTYPE_##_to)) + ++/** ++ * dwc3_mdwidth - get MDWIDTH value in bits ++ * @dwc: pointer to our context structure ++ * ++ * Return MDWIDTH configuration value in bits. ++ */ ++static inline u32 dwc3_mdwidth(struct dwc3 *dwc) ++{ ++ u32 mdwidth; ++ ++ mdwidth = DWC3_GHWPARAMS0_MDWIDTH(dwc->hwparams.hwparams0); ++ if (DWC3_IP_IS(DWC32)) ++ mdwidth += DWC3_GHWPARAMS6_MDWIDTH(dwc->hwparams.hwparams6); ++ ++ return mdwidth; ++} ++ + bool dwc3_has_imod(struct dwc3 *dwc); + + int dwc3_event_buffers_setup(struct dwc3 *dwc); +@@ -1476,6 +1535,8 @@ int dwc3_send_gadget_ep_cmd(struct dwc3_ep *dep, unsigned int cmd, + struct dwc3_gadget_ep_cmd_params *params); + int dwc3_send_gadget_generic_command(struct dwc3 *dwc, unsigned int cmd, + u32 param); ++void dwc3_stop_active_transfer(struct dwc3_ep *dep, bool force, bool interrupt); ++void dwc3_gadget_clear_tx_fifos(struct dwc3 *dwc); + #else + static inline int dwc3_gadget_init(struct dwc3 *dwc) + { return 0; } +@@ -1495,6 +1556,11 @@ static inline int dwc3_send_gadget_ep_cmd(struct dwc3_ep *dep, unsigned int cmd, + static inline int dwc3_send_gadget_generic_command(struct dwc3 *dwc, + int cmd, u32 param) + { return 0; } ++static inline void dwc3_stop_active_transfer(struct dwc3_ep *dep, bool force, ++ bool interrupt) ++{ } ++static inline void dwc3_gadget_clear_tx_fifos(struct dwc3 *dwc) ++{ } + #endif + + #if IS_ENABLED(CONFIG_USB_DWC3_DUAL_ROLE) +diff --git a/drivers/usb/dwc3/debug.h b/drivers/usb/dwc3/debug.h +old mode 100644 +new mode 100755 +index 74d9c2c38..b2aa7272f +--- a/drivers/usb/dwc3/debug.h ++++ b/drivers/usb/dwc3/debug.h +@@ -221,8 +221,8 @@ static inline const char *dwc3_gadget_event_string(char *str, size_t size, + snprintf(str, size, "WakeUp [%s]", + dwc3_gadget_link_string(state)); + break; +- case DWC3_DEVICE_EVENT_EOPF: +- snprintf(str, size, "End-Of-Frame [%s]", ++ case DWC3_DEVICE_EVENT_SUSPEND: ++ snprintf(str, size, "Suspend [%s]", + dwc3_gadget_link_string(state)); + break; + case DWC3_DEVICE_EVENT_SOF: +@@ -353,8 +353,8 @@ static inline const char *dwc3_gadget_event_type_string(u8 event) + return "Wake-Up"; + case DWC3_DEVICE_EVENT_HIBER_REQ: + return "Hibernation"; +- case DWC3_DEVICE_EVENT_EOPF: +- return "End of Periodic Frame"; ++ case DWC3_DEVICE_EVENT_SUSPEND: ++ return "Suspend"; + case DWC3_DEVICE_EVENT_SOF: + return "Start of Frame"; + case DWC3_DEVICE_EVENT_ERRATIC_ERROR: +diff --git a/drivers/usb/dwc3/debugfs.c b/drivers/usb/dwc3/debugfs.c +old mode 100644 +new mode 100755 +index 3ebe3e6c2..dc81e8349 +--- a/drivers/usb/dwc3/debugfs.c ++++ b/drivers/usb/dwc3/debugfs.c +@@ -440,6 +440,10 @@ static ssize_t dwc3_mode_write(struct file *file, + if (!strncmp(buf, "otg", 3)) + mode = DWC3_GCTL_PRTCAP_OTG; + ++#if defined(CONFIG_ARCH_ROCKCHIP) && defined(CONFIG_NO_GKI) ++ dwc->desired_role_sw_mode = mode; ++#endif ++ + dwc3_set_mode(dwc, mode); + + return count; +@@ -638,16 +642,14 @@ static int dwc3_tx_fifo_size_show(struct seq_file *s, void *unused) + struct dwc3_ep *dep = s->private; + struct dwc3 *dwc = dep->dwc; + unsigned long flags; +- int mdwidth; ++ u32 mdwidth; + u32 val; + + spin_lock_irqsave(&dwc->lock, flags); + val = dwc3_core_fifo_space(dep, DWC3_TXFIFO); + + /* Convert to bytes */ +- mdwidth = DWC3_MDWIDTH(dwc->hwparams.hwparams0); +- if (DWC3_IP_IS(DWC32)) +- mdwidth += DWC3_GHWPARAMS6_MDWIDTH(dwc->hwparams.hwparams6); ++ mdwidth = dwc3_mdwidth(dwc); + + val *= mdwidth; + val >>= 3; +@@ -662,16 +664,14 @@ static int dwc3_rx_fifo_size_show(struct seq_file *s, void *unused) + struct dwc3_ep *dep = s->private; + struct dwc3 *dwc = dep->dwc; + unsigned long flags; +- int mdwidth; ++ u32 mdwidth; + u32 val; + + spin_lock_irqsave(&dwc->lock, flags); + val = dwc3_core_fifo_space(dep, DWC3_RXFIFO); + + /* Convert to bytes */ +- mdwidth = DWC3_MDWIDTH(dwc->hwparams.hwparams0); +- if (DWC3_IP_IS(DWC32)) +- mdwidth += DWC3_GHWPARAMS6_MDWIDTH(dwc->hwparams.hwparams6); ++ mdwidth = dwc3_mdwidth(dwc); + + val *= mdwidth; + val >>= 3; +diff --git a/drivers/usb/dwc3/drd.c b/drivers/usb/dwc3/drd.c +old mode 100644 +new mode 100755 +index 3e1c1aacf..43340ea7b +--- a/drivers/usb/dwc3/drd.c ++++ b/drivers/usb/dwc3/drd.c +@@ -420,6 +420,12 @@ static void dwc3_drd_update(struct dwc3 *dwc) + id = extcon_get_state(dwc->edev, EXTCON_USB_HOST); + if (id < 0) + id = 0; ++ ++#if defined(CONFIG_ARCH_ROCKCHIP) && defined(CONFIG_NO_GKI) ++ dwc->desired_role_sw_mode = (id ? USB_DR_MODE_HOST : ++ USB_DR_MODE_PERIPHERAL); ++#endif ++ + dwc3_set_mode(dwc, id ? + DWC3_GCTL_PRTCAP_HOST : + DWC3_GCTL_PRTCAP_DEVICE); +@@ -431,6 +437,15 @@ static int dwc3_drd_notifier(struct notifier_block *nb, + { + struct dwc3 *dwc = container_of(nb, struct dwc3, edev_nb); + ++#if defined(CONFIG_ARCH_ROCKCHIP) && defined(CONFIG_NO_GKI) ++ if (extcon_get_state(dwc->edev, EXTCON_USB)) ++ dwc->desired_role_sw_mode = USB_DR_MODE_PERIPHERAL; ++ else if (extcon_get_state(dwc->edev, EXTCON_USB_HOST)) ++ dwc->desired_role_sw_mode = USB_DR_MODE_HOST; ++ else ++ dwc->desired_role_sw_mode = USB_DR_MODE_UNKNOWN; ++#endif ++ + dwc3_set_mode(dwc, event ? + DWC3_GCTL_PRTCAP_HOST : + DWC3_GCTL_PRTCAP_DEVICE); +@@ -441,8 +456,8 @@ static int dwc3_drd_notifier(struct notifier_block *nb, + static struct extcon_dev *dwc3_get_extcon(struct dwc3 *dwc) + { + struct device *dev = dwc->dev; +- struct device_node *np_phy, *np_conn; +- struct extcon_dev *edev; ++ struct device_node *np_phy; ++ struct extcon_dev *edev = NULL; + const char *name; + + if (device_property_read_bool(dev, "extcon")) +@@ -462,15 +477,22 @@ static struct extcon_dev *dwc3_get_extcon(struct dwc3 *dwc) + return edev; + } + ++ /* ++ * Try to get an extcon device from the USB PHY controller's "port" ++ * node. Check if it has the "port" node first, to avoid printing the ++ * error message from underlying code, as it's a valid case: extcon ++ * device (and "port" node) may be missing in case of "usb-role-switch" ++ * or OTG mode. ++ */ + np_phy = of_parse_phandle(dev->of_node, "phys", 0); +- np_conn = of_graph_get_remote_node(np_phy, -1, -1); +- +- if (np_conn) +- edev = extcon_find_edev_by_node(np_conn); +- else +- edev = NULL; ++ if (of_graph_is_present(np_phy)) { ++ struct device_node *np_conn; + +- of_node_put(np_conn); ++ np_conn = of_graph_get_remote_node(np_phy, -1, -1); ++ if (np_conn) ++ edev = extcon_find_edev_by_node(np_conn); ++ of_node_put(np_conn); ++ } + of_node_put(np_phy); + + return edev; +@@ -484,6 +506,10 @@ static int dwc3_usb_role_switch_set(struct usb_role_switch *sw, + struct dwc3 *dwc = usb_role_switch_get_drvdata(sw); + u32 mode; + ++#if defined(CONFIG_ARCH_ROCKCHIP) && defined(CONFIG_NO_GKI) ++ dwc->desired_role_sw_mode = role; ++#endif ++ + switch (role) { + case USB_ROLE_HOST: + mode = DWC3_GCTL_PRTCAP_HOST; +diff --git a/drivers/usb/dwc3/dwc3-imx8mp.c b/drivers/usb/dwc3/dwc3-imx8mp.c +new file mode 100755 +index 000000000..84c1a4ac2 +--- /dev/null ++++ b/drivers/usb/dwc3/dwc3-imx8mp.c +@@ -0,0 +1,364 @@ ++// SPDX-License-Identifier: GPL-2.0 ++/** ++ * dwc3-imx8mp.c - NXP imx8mp Specific Glue layer ++ * ++ * Copyright (c) 2020 NXP. ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include "core.h" ++ ++/* USB wakeup registers */ ++#define USB_WAKEUP_CTRL 0x00 ++ ++/* Global wakeup interrupt enable, also used to clear interrupt */ ++#define USB_WAKEUP_EN BIT(31) ++/* Wakeup from connect or disconnect, only for superspeed */ ++#define USB_WAKEUP_SS_CONN BIT(5) ++/* 0 select vbus_valid, 1 select sessvld */ ++#define USB_WAKEUP_VBUS_SRC_SESS_VAL BIT(4) ++/* Enable signal for wake up from u3 state */ ++#define USB_WAKEUP_U3_EN BIT(3) ++/* Enable signal for wake up from id change */ ++#define USB_WAKEUP_ID_EN BIT(2) ++/* Enable signal for wake up from vbus change */ ++#define USB_WAKEUP_VBUS_EN BIT(1) ++/* Enable signal for wake up from dp/dm change */ ++#define USB_WAKEUP_DPDM_EN BIT(0) ++ ++#define USB_WAKEUP_EN_MASK GENMASK(5, 0) ++ ++struct dwc3_imx8mp { ++ struct device *dev; ++ struct platform_device *dwc3; ++ void __iomem *glue_base; ++ struct clk *hsio_clk; ++ struct clk *suspend_clk; ++ int irq; ++ bool pm_suspended; ++ bool wakeup_pending; ++}; ++ ++static void dwc3_imx8mp_wakeup_enable(struct dwc3_imx8mp *dwc3_imx) ++{ ++ struct dwc3 *dwc3 = platform_get_drvdata(dwc3_imx->dwc3); ++ u32 val; ++ ++ if (!dwc3) ++ return; ++ ++ val = readl(dwc3_imx->glue_base + USB_WAKEUP_CTRL); ++ ++ if ((dwc3->current_dr_role == DWC3_GCTL_PRTCAP_HOST) && dwc3->xhci) ++ val |= USB_WAKEUP_EN | USB_WAKEUP_SS_CONN | ++ USB_WAKEUP_U3_EN | USB_WAKEUP_DPDM_EN; ++ else if (dwc3->current_dr_role == DWC3_GCTL_PRTCAP_DEVICE) ++ val |= USB_WAKEUP_EN | USB_WAKEUP_VBUS_EN | ++ USB_WAKEUP_VBUS_SRC_SESS_VAL; ++ ++ writel(val, dwc3_imx->glue_base + USB_WAKEUP_CTRL); ++} ++ ++static void dwc3_imx8mp_wakeup_disable(struct dwc3_imx8mp *dwc3_imx) ++{ ++ u32 val; ++ ++ val = readl(dwc3_imx->glue_base + USB_WAKEUP_CTRL); ++ val &= ~(USB_WAKEUP_EN | USB_WAKEUP_EN_MASK); ++ writel(val, dwc3_imx->glue_base + USB_WAKEUP_CTRL); ++} ++ ++static irqreturn_t dwc3_imx8mp_interrupt(int irq, void *_dwc3_imx) ++{ ++ struct dwc3_imx8mp *dwc3_imx = _dwc3_imx; ++ struct dwc3 *dwc = platform_get_drvdata(dwc3_imx->dwc3); ++ ++ if (!dwc3_imx->pm_suspended) ++ return IRQ_HANDLED; ++ ++ disable_irq_nosync(dwc3_imx->irq); ++ dwc3_imx->wakeup_pending = true; ++ ++ if ((dwc->current_dr_role == DWC3_GCTL_PRTCAP_HOST) && dwc->xhci) ++ pm_runtime_resume(&dwc->xhci->dev); ++ else if (dwc->current_dr_role == DWC3_GCTL_PRTCAP_DEVICE) ++ pm_runtime_get(dwc->dev); ++ ++ return IRQ_HANDLED; ++} ++ ++static int dwc3_imx8mp_probe(struct platform_device *pdev) ++{ ++ struct device *dev = &pdev->dev; ++ struct device_node *dwc3_np, *node = dev->of_node; ++ struct dwc3_imx8mp *dwc3_imx; ++ int err, irq; ++ ++ if (!node) { ++ dev_err(dev, "device node not found\n"); ++ return -EINVAL; ++ } ++ ++ dwc3_imx = devm_kzalloc(dev, sizeof(*dwc3_imx), GFP_KERNEL); ++ if (!dwc3_imx) ++ return -ENOMEM; ++ ++ platform_set_drvdata(pdev, dwc3_imx); ++ ++ dwc3_imx->dev = dev; ++ ++ dwc3_imx->glue_base = devm_platform_ioremap_resource(pdev, 0); ++ if (IS_ERR(dwc3_imx->glue_base)) ++ return PTR_ERR(dwc3_imx->glue_base); ++ ++ dwc3_imx->hsio_clk = devm_clk_get(dev, "hsio"); ++ if (IS_ERR(dwc3_imx->hsio_clk)) { ++ err = PTR_ERR(dwc3_imx->hsio_clk); ++ dev_err(dev, "Failed to get hsio clk, err=%d\n", err); ++ return err; ++ } ++ ++ err = clk_prepare_enable(dwc3_imx->hsio_clk); ++ if (err) { ++ dev_err(dev, "Failed to enable hsio clk, err=%d\n", err); ++ return err; ++ } ++ ++ dwc3_imx->suspend_clk = devm_clk_get(dev, "suspend"); ++ if (IS_ERR(dwc3_imx->suspend_clk)) { ++ err = PTR_ERR(dwc3_imx->suspend_clk); ++ dev_err(dev, "Failed to get suspend clk, err=%d\n", err); ++ goto disable_hsio_clk; ++ } ++ ++ err = clk_prepare_enable(dwc3_imx->suspend_clk); ++ if (err) { ++ dev_err(dev, "Failed to enable suspend clk, err=%d\n", err); ++ goto disable_hsio_clk; ++ } ++ ++ irq = platform_get_irq(pdev, 0); ++ if (irq < 0) { ++ err = irq; ++ goto disable_clks; ++ } ++ dwc3_imx->irq = irq; ++ ++ err = devm_request_threaded_irq(dev, irq, NULL, dwc3_imx8mp_interrupt, ++ IRQF_ONESHOT, dev_name(dev), dwc3_imx); ++ if (err) { ++ dev_err(dev, "failed to request IRQ #%d --> %d\n", irq, err); ++ goto disable_clks; ++ } ++ ++ pm_runtime_set_active(dev); ++ pm_runtime_enable(dev); ++ err = pm_runtime_get_sync(dev); ++ if (err < 0) ++ goto disable_rpm; ++ ++ dwc3_np = of_get_child_by_name(node, "dwc3"); ++ if (!dwc3_np) { ++ err = -ENODEV; ++ dev_err(dev, "failed to find dwc3 core child\n"); ++ goto disable_rpm; ++ } ++ ++ err = of_platform_populate(node, NULL, NULL, dev); ++ if (err) { ++ dev_err(&pdev->dev, "failed to create dwc3 core\n"); ++ goto err_node_put; ++ } ++ ++ dwc3_imx->dwc3 = of_find_device_by_node(dwc3_np); ++ if (!dwc3_imx->dwc3) { ++ dev_err(dev, "failed to get dwc3 platform device\n"); ++ err = -ENODEV; ++ goto depopulate; ++ } ++ of_node_put(dwc3_np); ++ ++ device_set_wakeup_capable(dev, true); ++ pm_runtime_put(dev); ++ ++ return 0; ++ ++depopulate: ++ of_platform_depopulate(dev); ++err_node_put: ++ of_node_put(dwc3_np); ++disable_rpm: ++ pm_runtime_disable(dev); ++ pm_runtime_put_noidle(dev); ++disable_clks: ++ clk_disable_unprepare(dwc3_imx->suspend_clk); ++disable_hsio_clk: ++ clk_disable_unprepare(dwc3_imx->hsio_clk); ++ ++ return err; ++} ++ ++static int dwc3_imx8mp_remove(struct platform_device *pdev) ++{ ++ struct dwc3_imx8mp *dwc3_imx = platform_get_drvdata(pdev); ++ struct device *dev = &pdev->dev; ++ ++ pm_runtime_get_sync(dev); ++ of_platform_depopulate(dev); ++ ++ clk_disable_unprepare(dwc3_imx->suspend_clk); ++ clk_disable_unprepare(dwc3_imx->hsio_clk); ++ ++ pm_runtime_disable(dev); ++ pm_runtime_put_noidle(dev); ++ platform_set_drvdata(pdev, NULL); ++ ++ return 0; ++} ++ ++static int __maybe_unused dwc3_imx8mp_suspend(struct dwc3_imx8mp *dwc3_imx, ++ pm_message_t msg) ++{ ++ if (dwc3_imx->pm_suspended) ++ return 0; ++ ++ /* Wakeup enable */ ++ if (PMSG_IS_AUTO(msg) || device_may_wakeup(dwc3_imx->dev)) ++ dwc3_imx8mp_wakeup_enable(dwc3_imx); ++ ++ dwc3_imx->pm_suspended = true; ++ ++ return 0; ++} ++ ++static int __maybe_unused dwc3_imx8mp_resume(struct dwc3_imx8mp *dwc3_imx, ++ pm_message_t msg) ++{ ++ struct dwc3 *dwc = platform_get_drvdata(dwc3_imx->dwc3); ++ int ret = 0; ++ ++ if (!dwc3_imx->pm_suspended) ++ return 0; ++ ++ /* Wakeup disable */ ++ dwc3_imx8mp_wakeup_disable(dwc3_imx); ++ dwc3_imx->pm_suspended = false; ++ ++ if (dwc3_imx->wakeup_pending) { ++ dwc3_imx->wakeup_pending = false; ++ if (dwc->current_dr_role == DWC3_GCTL_PRTCAP_DEVICE) { ++ pm_runtime_mark_last_busy(dwc->dev); ++ pm_runtime_put_autosuspend(dwc->dev); ++ } else { ++ /* ++ * Add wait for xhci switch from suspend ++ * clock to normal clock to detect connection. ++ */ ++ usleep_range(9000, 10000); ++ } ++ enable_irq(dwc3_imx->irq); ++ } ++ ++ return ret; ++} ++ ++static int __maybe_unused dwc3_imx8mp_pm_suspend(struct device *dev) ++{ ++ struct dwc3_imx8mp *dwc3_imx = dev_get_drvdata(dev); ++ int ret; ++ ++ ret = dwc3_imx8mp_suspend(dwc3_imx, PMSG_SUSPEND); ++ ++ if (device_may_wakeup(dwc3_imx->dev)) ++ enable_irq_wake(dwc3_imx->irq); ++ else ++ clk_disable_unprepare(dwc3_imx->suspend_clk); ++ ++ clk_disable_unprepare(dwc3_imx->hsio_clk); ++ dev_dbg(dev, "dwc3 imx8mp pm suspend.\n"); ++ ++ return ret; ++} ++ ++static int __maybe_unused dwc3_imx8mp_pm_resume(struct device *dev) ++{ ++ struct dwc3_imx8mp *dwc3_imx = dev_get_drvdata(dev); ++ int ret; ++ ++ if (device_may_wakeup(dwc3_imx->dev)) { ++ disable_irq_wake(dwc3_imx->irq); ++ } else { ++ ret = clk_prepare_enable(dwc3_imx->suspend_clk); ++ if (ret) ++ return ret; ++ } ++ ++ ret = clk_prepare_enable(dwc3_imx->hsio_clk); ++ if (ret) ++ return ret; ++ ++ ret = dwc3_imx8mp_resume(dwc3_imx, PMSG_RESUME); ++ ++ pm_runtime_disable(dev); ++ pm_runtime_set_active(dev); ++ pm_runtime_enable(dev); ++ ++ dev_dbg(dev, "dwc3 imx8mp pm resume.\n"); ++ ++ return ret; ++} ++ ++static int __maybe_unused dwc3_imx8mp_runtime_suspend(struct device *dev) ++{ ++ struct dwc3_imx8mp *dwc3_imx = dev_get_drvdata(dev); ++ ++ dev_dbg(dev, "dwc3 imx8mp runtime suspend.\n"); ++ ++ return dwc3_imx8mp_suspend(dwc3_imx, PMSG_AUTO_SUSPEND); ++} ++ ++static int __maybe_unused dwc3_imx8mp_runtime_resume(struct device *dev) ++{ ++ struct dwc3_imx8mp *dwc3_imx = dev_get_drvdata(dev); ++ ++ dev_dbg(dev, "dwc3 imx8mp runtime resume.\n"); ++ ++ return dwc3_imx8mp_resume(dwc3_imx, PMSG_AUTO_RESUME); ++} ++ ++static const struct dev_pm_ops dwc3_imx8mp_dev_pm_ops = { ++ SET_SYSTEM_SLEEP_PM_OPS(dwc3_imx8mp_pm_suspend, dwc3_imx8mp_pm_resume) ++ SET_RUNTIME_PM_OPS(dwc3_imx8mp_runtime_suspend, ++ dwc3_imx8mp_runtime_resume, NULL) ++}; ++ ++static const struct of_device_id dwc3_imx8mp_of_match[] = { ++ { .compatible = "fsl,imx8mp-dwc3", }, ++ {}, ++}; ++MODULE_DEVICE_TABLE(of, dwc3_imx8mp_of_match); ++ ++static struct platform_driver dwc3_imx8mp_driver = { ++ .probe = dwc3_imx8mp_probe, ++ .remove = dwc3_imx8mp_remove, ++ .driver = { ++ .name = "imx8mp-dwc3", ++ .pm = &dwc3_imx8mp_dev_pm_ops, ++ .of_match_table = dwc3_imx8mp_of_match, ++ }, ++}; ++ ++module_platform_driver(dwc3_imx8mp_driver); ++ ++MODULE_ALIAS("platform:imx8mp-dwc3"); ++MODULE_AUTHOR("jun.li@nxp.com"); ++MODULE_LICENSE("GPL v2"); ++MODULE_DESCRIPTION("DesignWare USB3 imx8mp Glue Layer"); +diff --git a/drivers/usb/dwc3/dwc3-keystone.c b/drivers/usb/dwc3/dwc3-keystone.c +old mode 100644 +new mode 100755 +index 9a99253d5..057056c09 +--- a/drivers/usb/dwc3/dwc3-keystone.c ++++ b/drivers/usb/dwc3/dwc3-keystone.c +@@ -99,13 +99,8 @@ static int kdwc3_probe(struct platform_device *pdev) + + /* PSC dependency on AM65 needs SERDES0 to be powered before USB0 */ + kdwc->usb3_phy = devm_phy_optional_get(dev, "usb3-phy"); +- if (IS_ERR(kdwc->usb3_phy)) { +- error = PTR_ERR(kdwc->usb3_phy); +- if (error != -EPROBE_DEFER) +- dev_err(dev, "couldn't get usb3 phy: %d\n", error); +- +- return error; +- } ++ if (IS_ERR(kdwc->usb3_phy)) ++ return dev_err_probe(dev, PTR_ERR(kdwc->usb3_phy), "couldn't get usb3 phy\n"); + + phy_pm_runtime_get_sync(kdwc->usb3_phy); + +diff --git a/drivers/usb/dwc3/dwc3-pci.c b/drivers/usb/dwc3/dwc3-pci.c +old mode 100644 +new mode 100755 +index 17117870f..e5d7eed2e +--- a/drivers/usb/dwc3/dwc3-pci.c ++++ b/drivers/usb/dwc3/dwc3-pci.c +@@ -40,7 +40,9 @@ + #define PCI_DEVICE_ID_INTEL_TGPLP 0xa0ee + #define PCI_DEVICE_ID_INTEL_TGPH 0x43ee + #define PCI_DEVICE_ID_INTEL_JSP 0x4dee ++#define PCI_DEVICE_ID_INTEL_ADLP 0x51ee + #define PCI_DEVICE_ID_INTEL_ADLS 0x7ae1 ++#define PCI_DEVICE_ID_INTEL_TGL 0x9a15 + + #define PCI_INTEL_BXT_DSM_GUID "732b85d5-b7a7-4a1b-9ba0-4bbd00ffd511" + #define PCI_INTEL_BXT_FUNC_PMU_PWR 4 +@@ -145,6 +147,18 @@ static const struct property_entry dwc3_pci_amd_properties[] = { + {} + }; + ++static const struct software_node dwc3_pci_intel_swnode = { ++ .properties = dwc3_pci_intel_properties, ++}; ++ ++static const struct software_node dwc3_pci_intel_mrfld_swnode = { ++ .properties = dwc3_pci_mrfld_properties, ++}; ++ ++static const struct software_node dwc3_pci_amd_swnode = { ++ .properties = dwc3_pci_amd_properties, ++}; ++ + static int dwc3_pci_quirks(struct dwc3_pci *dwc) + { + struct pci_dev *pdev = dwc->pci; +@@ -225,7 +239,6 @@ static void dwc3_pci_resume_work(struct work_struct *work) + + static int dwc3_pci_probe(struct pci_dev *pci, const struct pci_device_id *id) + { +- struct property_entry *p = (struct property_entry *)id->driver_data; + struct dwc3_pci *dwc; + struct resource res[2]; + int ret; +@@ -268,7 +281,7 @@ static int dwc3_pci_probe(struct pci_dev *pci, const struct pci_device_id *id) + dwc->dwc3->dev.parent = dev; + ACPI_COMPANION_SET(&dwc->dwc3->dev, ACPI_COMPANION(dev)); + +- ret = platform_device_add_properties(dwc->dwc3, p); ++ ret = device_add_software_node(&dwc->dwc3->dev, (void *)id->driver_data); + if (ret < 0) + goto err; + +@@ -291,6 +304,7 @@ static int dwc3_pci_probe(struct pci_dev *pci, const struct pci_device_id *id) + + return 0; + err: ++ device_remove_software_node(&dwc->dwc3->dev); + platform_device_put(dwc->dwc3); + return ret; + } +@@ -307,75 +321,82 @@ static void dwc3_pci_remove(struct pci_dev *pci) + #endif + device_init_wakeup(&pci->dev, false); + pm_runtime_get(&pci->dev); ++ device_remove_software_node(&dwc->dwc3->dev); + platform_device_unregister(dwc->dwc3); + } + + static const struct pci_device_id dwc3_pci_id_table[] = { + { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_BSW), +- (kernel_ulong_t) &dwc3_pci_intel_properties }, ++ (kernel_ulong_t) &dwc3_pci_intel_swnode, }, + + { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_BYT), +- (kernel_ulong_t) &dwc3_pci_intel_properties, }, ++ (kernel_ulong_t) &dwc3_pci_intel_swnode, }, + + { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_MRFLD), +- (kernel_ulong_t) &dwc3_pci_mrfld_properties, }, ++ (kernel_ulong_t) &dwc3_pci_intel_mrfld_swnode, }, + + { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_CMLLP), +- (kernel_ulong_t) &dwc3_pci_intel_properties, }, ++ (kernel_ulong_t) &dwc3_pci_intel_swnode, }, + + { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_CMLH), +- (kernel_ulong_t) &dwc3_pci_intel_properties, }, ++ (kernel_ulong_t) &dwc3_pci_intel_swnode, }, + + { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_SPTLP), +- (kernel_ulong_t) &dwc3_pci_intel_properties, }, ++ (kernel_ulong_t) &dwc3_pci_intel_swnode, }, + + { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_SPTH), +- (kernel_ulong_t) &dwc3_pci_intel_properties, }, ++ (kernel_ulong_t) &dwc3_pci_intel_swnode, }, + + { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_BXT), +- (kernel_ulong_t) &dwc3_pci_intel_properties, }, ++ (kernel_ulong_t) &dwc3_pci_intel_swnode, }, + + { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_BXT_M), +- (kernel_ulong_t) &dwc3_pci_intel_properties, }, ++ (kernel_ulong_t) &dwc3_pci_intel_swnode, }, + + { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_APL), +- (kernel_ulong_t) &dwc3_pci_intel_properties, }, ++ (kernel_ulong_t) &dwc3_pci_intel_swnode, }, + + { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_KBP), +- (kernel_ulong_t) &dwc3_pci_intel_properties, }, ++ (kernel_ulong_t) &dwc3_pci_intel_swnode, }, + + { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_GLK), +- (kernel_ulong_t) &dwc3_pci_intel_properties, }, ++ (kernel_ulong_t) &dwc3_pci_intel_swnode, }, + + { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_CNPLP), +- (kernel_ulong_t) &dwc3_pci_intel_properties, }, ++ (kernel_ulong_t) &dwc3_pci_intel_swnode, }, + + { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_CNPH), +- (kernel_ulong_t) &dwc3_pci_intel_properties, }, ++ (kernel_ulong_t) &dwc3_pci_intel_swnode, }, + + { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_CNPV), +- (kernel_ulong_t) &dwc3_pci_intel_properties, }, ++ (kernel_ulong_t) &dwc3_pci_intel_swnode, }, + + { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_ICLLP), +- (kernel_ulong_t) &dwc3_pci_intel_properties, }, ++ (kernel_ulong_t) &dwc3_pci_intel_swnode, }, + + { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_EHLLP), +- (kernel_ulong_t) &dwc3_pci_intel_properties, }, ++ (kernel_ulong_t) &dwc3_pci_intel_swnode }, + + { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_TGPLP), +- (kernel_ulong_t) &dwc3_pci_intel_properties, }, ++ (kernel_ulong_t) &dwc3_pci_intel_swnode, }, + + { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_TGPH), +- (kernel_ulong_t) &dwc3_pci_intel_properties, }, ++ (kernel_ulong_t) &dwc3_pci_intel_swnode, }, + + { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_JSP), +- (kernel_ulong_t) &dwc3_pci_intel_properties, }, ++ (kernel_ulong_t) &dwc3_pci_intel_swnode, }, ++ ++ { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_ADLP), ++ (kernel_ulong_t) &dwc3_pci_intel_swnode, }, + + { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_ADLS), +- (kernel_ulong_t) &dwc3_pci_intel_properties, }, ++ (kernel_ulong_t) &dwc3_pci_intel_swnode, }, ++ ++ { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_TGL), ++ (kernel_ulong_t) &dwc3_pci_intel_swnode, }, + + { PCI_VDEVICE(AMD, PCI_DEVICE_ID_AMD_NL_USB), +- (kernel_ulong_t) &dwc3_pci_amd_properties, }, ++ (kernel_ulong_t) &dwc3_pci_amd_swnode, }, + { } /* Terminating Entry */ + }; + MODULE_DEVICE_TABLE(pci, dwc3_pci_id_table); +diff --git a/drivers/usb/dwc3/dwc3-qcom.c b/drivers/usb/dwc3/dwc3-qcom.c +old mode 100644 +new mode 100755 +index 2a29e2f68..8842cc79c +--- a/drivers/usb/dwc3/dwc3-qcom.c ++++ b/drivers/usb/dwc3/dwc3-qcom.c +@@ -652,6 +652,20 @@ static int dwc3_qcom_of_register_core(struct platform_device *pdev) + return -ENODEV; + } + ++ prop = devm_kzalloc(dev, sizeof(*prop), GFP_KERNEL); ++ if (!prop) { ++ ret = -ENOMEM; ++ dev_err(dev, "unable to allocate memory for property\n"); ++ goto node_put; ++ } ++ ++ prop->name = "tx-fifo-resize"; ++ ret = of_add_property(dwc3_np, prop); ++ if (ret) { ++ dev_err(dev, "unable to add property\n"); ++ goto node_put; ++ } ++ + ret = of_platform_populate(np, NULL, NULL, dev); + if (ret) { + dev_err(dev, "failed to register dwc3 core - %d\n", ret); +diff --git a/drivers/usb/dwc3/ep0.c b/drivers/usb/dwc3/ep0.c +old mode 100644 +new mode 100755 +index 3cd294264..658739410 +--- a/drivers/usb/dwc3/ep0.c ++++ b/drivers/usb/dwc3/ep0.c +@@ -597,11 +597,13 @@ static int dwc3_ep0_set_address(struct dwc3 *dwc, struct usb_ctrlrequest *ctrl) + + static int dwc3_ep0_delegate_req(struct dwc3 *dwc, struct usb_ctrlrequest *ctrl) + { +- int ret; ++ int ret = -EINVAL; + +- spin_unlock(&dwc->lock); +- ret = dwc->gadget_driver->setup(dwc->gadget, ctrl); +- spin_lock(&dwc->lock); ++ if (dwc->async_callbacks) { ++ spin_unlock(&dwc->lock); ++ ret = dwc->gadget_driver->setup(dwc->gadget, ctrl); ++ spin_lock(&dwc->lock); ++ } + return ret; + } + +@@ -619,6 +621,8 @@ static int dwc3_ep0_set_config(struct dwc3 *dwc, struct usb_ctrlrequest *ctrl) + return -EINVAL; + + case USB_STATE_ADDRESS: ++ dwc3_gadget_clear_tx_fifos(dwc); ++ + ret = dwc3_ep0_delegate_req(dwc, ctrl); + /* if the cfg matches and the cfg is non zero */ + if (cfg && (!ret || (ret == USB_GADGET_DELAYED_STATUS))) { +diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c +old mode 100644 +new mode 100755 +index b75fe5680..1c3988a6f +--- a/drivers/usb/dwc3/gadget.c ++++ b/drivers/usb/dwc3/gadget.c +@@ -405,6 +405,7 @@ int dwc3_send_gadget_ep_cmd(struct dwc3_ep *dep, unsigned int cmd, + + return ret; + } ++EXPORT_SYMBOL_GPL(dwc3_send_gadget_ep_cmd); + + static int dwc3_send_clear_stall_ep_cmd(struct dwc3_ep *dep) + { +@@ -628,8 +629,192 @@ static int dwc3_gadget_set_ep_config(struct dwc3_ep *dep, unsigned int action) + return dwc3_send_gadget_ep_cmd(dep, DWC3_DEPCMD_SETEPCONFIG, ¶ms); + } + +-static void dwc3_stop_active_transfer(struct dwc3_ep *dep, bool force, +- bool interrupt); ++/** ++ * dwc3_gadget_calc_tx_fifo_size - calculates the txfifo size value ++ * @dwc: pointer to the DWC3 context ++ * @nfifos: number of fifos to calculate for ++ * ++ * Calculates the size value based on the equation below: ++ * ++ * DWC3 revision 280A and prior: ++ * fifo_size = mult * (max_packet / mdwidth) + 1; ++ * ++ * DWC3 revision 290A and onwards: ++ * fifo_size = mult * ((max_packet + mdwidth)/mdwidth + 1) + 1 ++ * ++ * The max packet size is set to 1024, as the txfifo requirements mainly apply ++ * to super speed USB use cases. However, it is safe to overestimate the fifo ++ * allocations for other scenarios, i.e. high speed USB. ++ */ ++static int dwc3_gadget_calc_tx_fifo_size(struct dwc3 *dwc, int mult) ++{ ++ int max_packet = 1024; ++ int fifo_size; ++ int mdwidth; ++ ++ mdwidth = dwc3_mdwidth(dwc); ++ ++ /* MDWIDTH is represented in bits, we need it in bytes */ ++ mdwidth >>= 3; ++ ++ if (DWC3_VER_IS_PRIOR(DWC3, 290A)) ++ fifo_size = mult * (max_packet / mdwidth) + 1; ++ else ++ fifo_size = mult * ((max_packet + mdwidth) / mdwidth) + 1; ++ return fifo_size; ++} ++ ++/** ++ * dwc3_gadget_clear_tx_fifo_size - Clears txfifo allocation ++ * @dwc: pointer to the DWC3 context ++ * ++ * Iterates through all the endpoint registers and clears the previous txfifo ++ * allocations. ++ */ ++void dwc3_gadget_clear_tx_fifos(struct dwc3 *dwc) ++{ ++ struct dwc3_ep *dep; ++ int fifo_depth; ++ int size; ++ int num; ++ ++ if (!dwc->do_fifo_resize) ++ return; ++ ++ /* Read ep0IN related TXFIFO size */ ++ dep = dwc->eps[1]; ++ size = dwc3_readl(dwc->regs, DWC3_GTXFIFOSIZ(0)); ++ if (DWC3_IP_IS(DWC3)) ++ fifo_depth = DWC3_GTXFIFOSIZ_TXFDEP(size); ++ else ++ fifo_depth = DWC31_GTXFIFOSIZ_TXFDEP(size); ++ ++ dwc->last_fifo_depth = fifo_depth; ++ /* Clear existing TXFIFO for all IN eps except ep0 */ ++ for (num = 3; num < min_t(int, dwc->num_eps, DWC3_ENDPOINTS_NUM); ++ num += 2) { ++ dep = dwc->eps[num]; ++ /* Don't change TXFRAMNUM on usb31 version */ ++ size = DWC3_IP_IS(DWC3) ? 0 : ++ dwc3_readl(dwc->regs, DWC3_GTXFIFOSIZ(num >> 1)) & ++ DWC31_GTXFIFOSIZ_TXFRAMNUM; ++ ++ dwc3_writel(dwc->regs, DWC3_GTXFIFOSIZ(num >> 1), size); ++ dep->flags &= ~DWC3_EP_TXFIFO_RESIZED; ++ } ++ dwc->num_ep_resized = 0; ++} ++ ++/* ++ * dwc3_gadget_resize_tx_fifos - reallocate fifo spaces for current use-case ++ * @dwc: pointer to our context structure ++ * ++ * This function will a best effort FIFO allocation in order ++ * to improve FIFO usage and throughput, while still allowing ++ * us to enable as many endpoints as possible. ++ * ++ * Keep in mind that this operation will be highly dependent ++ * on the configured size for RAM1 - which contains TxFifo -, ++ * the amount of endpoints enabled on coreConsultant tool, and ++ * the width of the Master Bus. ++ * ++ * In general, FIFO depths are represented with the following equation: ++ * ++ * fifo_size = mult * ((max_packet + mdwidth)/mdwidth + 1) + 1 ++ * ++ * In conjunction with dwc3_gadget_check_config(), this resizing logic will ++ * ensure that all endpoints will have enough internal memory for one max ++ * packet per endpoint. ++ */ ++static int dwc3_gadget_resize_tx_fifos(struct dwc3_ep *dep) ++{ ++ struct dwc3 *dwc = dep->dwc; ++ int fifo_0_start; ++ int ram1_depth; ++ int fifo_size; ++ int min_depth; ++ int num_in_ep; ++ int remaining; ++ int num_fifos = 1; ++ int fifo; ++ int tmp; ++ ++ if (!dwc->do_fifo_resize) ++ return 0; ++ ++ /* resize IN endpoints except ep0 */ ++ if (!usb_endpoint_dir_in(dep->endpoint.desc) || dep->number <= 1) ++ return 0; ++ ++ /* bail if already resized */ ++ if (dep->flags & DWC3_EP_TXFIFO_RESIZED) ++ return 0; ++ ++ ram1_depth = DWC3_RAM1_DEPTH(dwc->hwparams.hwparams7); ++ ++ if ((dep->endpoint.maxburst > 1 && ++ usb_endpoint_xfer_bulk(dep->endpoint.desc)) || ++ usb_endpoint_xfer_isoc(dep->endpoint.desc)) ++ num_fifos = 3; ++ ++ if (dep->endpoint.maxburst > 6 && ++ usb_endpoint_xfer_bulk(dep->endpoint.desc) && DWC3_IP_IS(DWC31)) ++ num_fifos = dwc->tx_fifo_resize_max_num; ++ ++ /* FIFO size for a single buffer */ ++ fifo = dwc3_gadget_calc_tx_fifo_size(dwc, 1); ++ ++ /* Calculate the number of remaining EPs w/o any FIFO */ ++ num_in_ep = dwc->max_cfg_eps; ++ num_in_ep -= dwc->num_ep_resized; ++ ++ /* Reserve at least one FIFO for the number of IN EPs */ ++ min_depth = num_in_ep * (fifo + 1); ++ remaining = ram1_depth - min_depth - dwc->last_fifo_depth; ++ remaining = max_t(int, 0, remaining); ++ /* ++ * We've already reserved 1 FIFO per EP, so check what we can fit in ++ * addition to it. If there is not enough remaining space, allocate ++ * all the remaining space to the EP. ++ */ ++ fifo_size = (num_fifos - 1) * fifo; ++ if (remaining < fifo_size) ++ fifo_size = remaining; ++ ++ fifo_size += fifo; ++ /* Last increment according to the TX FIFO size equation */ ++ fifo_size++; ++ ++ /* Check if TXFIFOs start at non-zero addr */ ++ tmp = dwc3_readl(dwc->regs, DWC3_GTXFIFOSIZ(0)); ++ fifo_0_start = DWC3_GTXFIFOSIZ_TXFSTADDR(tmp); ++ ++ fifo_size |= (fifo_0_start + (dwc->last_fifo_depth << 16)); ++ if (DWC3_IP_IS(DWC3)) ++ dwc->last_fifo_depth += DWC3_GTXFIFOSIZ_TXFDEP(fifo_size); ++ else ++ dwc->last_fifo_depth += DWC31_GTXFIFOSIZ_TXFDEP(fifo_size); ++ ++ /* Check fifo size allocation doesn't exceed available RAM size. */ ++ if (dwc->last_fifo_depth >= ram1_depth) { ++ dev_err(dwc->dev, "Fifosize(%d) > RAM size(%d) %s depth:%d\n", ++ dwc->last_fifo_depth, ram1_depth, ++ dep->endpoint.name, fifo_size); ++ if (DWC3_IP_IS(DWC3)) ++ fifo_size = DWC3_GTXFIFOSIZ_TXFDEP(fifo_size); ++ else ++ fifo_size = DWC31_GTXFIFOSIZ_TXFDEP(fifo_size); ++ ++ dwc->last_fifo_depth -= fifo_size; ++ return -ENOMEM; ++ } ++ ++ dwc3_writel(dwc->regs, DWC3_GTXFIFOSIZ(dep->number >> 1), fifo_size); ++ dep->flags |= DWC3_EP_TXFIFO_RESIZED; ++ dwc->num_ep_resized++; ++ ++ return 0; ++} + + /** + * __dwc3_gadget_ep_enable - initializes a hw endpoint +@@ -648,6 +833,10 @@ static int __dwc3_gadget_ep_enable(struct dwc3_ep *dep, unsigned int action) + int ret; + + if (!(dep->flags & DWC3_EP_ENABLED)) { ++ ret = dwc3_gadget_resize_tx_fifos(dep); ++ if (ret) ++ return ret; ++ + ret = dwc3_gadget_start_config(dep); + if (ret) + return ret; +@@ -730,8 +919,16 @@ static int __dwc3_gadget_ep_enable(struct dwc3_ep *dep, unsigned int action) + * All stream eps will reinitiate stream on NoStream + * rejection until we can determine that the host can + * prime after the first transfer. ++ * ++ * However, if the controller is capable of ++ * TXF_FLUSH_BYPASS, then IN direction endpoints will ++ * automatically restart the stream without the driver ++ * initiation. + */ +- dep->flags |= DWC3_EP_FORCE_RESTART_STREAM; ++ if (!dep->direction || ++ !(dwc->hwparams.hwparams9 & ++ DWC3_GHWPARAMS9_DEV_TXF_FLUSH_BYPASS)) ++ dep->flags |= DWC3_EP_FORCE_RESTART_STREAM; + } + } + +@@ -802,7 +999,7 @@ static int __dwc3_gadget_ep_disable(struct dwc3_ep *dep) + + dep->stream_capable = false; + dep->type = 0; +- dep->flags = 0; ++ dep->flags &= DWC3_EP_TXFIFO_RESIZED; + + return 0; + } +@@ -1404,7 +1601,7 @@ static int __dwc3_gadget_kick_transfer(struct dwc3_ep *dep) + dwc3_stop_active_transfer(dep, true, true); + + list_for_each_entry_safe(req, tmp, &dep->started_list, list) +- dwc3_gadget_move_cancelled_request(req); ++ dwc3_gadget_move_cancelled_request(req, DWC3_REQUEST_STATUS_DEQUEUED); + + /* If ep isn't started, then there's no end transfer pending */ + if (!(dep->flags & DWC3_EP_END_TRANSFER_PENDING)) +@@ -1620,7 +1817,7 @@ static int __dwc3_gadget_ep_queue(struct dwc3_ep *dep, struct dwc3_request *req) + struct dwc3 *dwc = dep->dwc; + + if (!dep->endpoint.desc || !dwc->pullups_connected || !dwc->connected) { +- dev_err(dwc->dev, "%s: can't queue to disabled endpoint\n", ++ dev_dbg(dwc->dev, "%s: can't queue to disabled endpoint\n", + dep->name); + return -ESHUTDOWN; + } +@@ -1733,10 +1930,25 @@ static void dwc3_gadget_ep_cleanup_cancelled_requests(struct dwc3_ep *dep) + { + struct dwc3_request *req; + struct dwc3_request *tmp; ++ struct dwc3 *dwc = dep->dwc; + + list_for_each_entry_safe(req, tmp, &dep->cancelled_list, list) { + dwc3_gadget_ep_skip_trbs(dep, req); +- dwc3_gadget_giveback(dep, req, -ECONNRESET); ++ switch (req->status) { ++ case DWC3_REQUEST_STATUS_DISCONNECTED: ++ dwc3_gadget_giveback(dep, req, -ESHUTDOWN); ++ break; ++ case DWC3_REQUEST_STATUS_DEQUEUED: ++ dwc3_gadget_giveback(dep, req, -ECONNRESET); ++ break; ++ case DWC3_REQUEST_STATUS_STALLED: ++ dwc3_gadget_giveback(dep, req, -EPIPE); ++ break; ++ default: ++ dev_err(dwc->dev, "request cancelled with wrong reason:%d\n", req->status); ++ dwc3_gadget_giveback(dep, req, -ECONNRESET); ++ break; ++ } + } + } + +@@ -1780,7 +1992,8 @@ static int dwc3_gadget_ep_dequeue(struct usb_ep *ep, + * cancelled. + */ + list_for_each_entry_safe(r, t, &dep->started_list, list) +- dwc3_gadget_move_cancelled_request(r); ++ dwc3_gadget_move_cancelled_request(r, ++ DWC3_REQUEST_STATUS_DEQUEUED); + + dep->flags &= ~DWC3_EP_WAIT_TRANSFER_COMPLETE; + +@@ -1801,8 +2014,6 @@ int __dwc3_gadget_ep_set_halt(struct dwc3_ep *dep, int value, int protocol) + { + struct dwc3_gadget_ep_cmd_params params; + struct dwc3 *dwc = dep->dwc; +- struct dwc3_request *req; +- struct dwc3_request *tmp; + int ret; + + if (usb_endpoint_xfer_isoc(dep->endpoint.desc)) { +@@ -1851,16 +2062,14 @@ int __dwc3_gadget_ep_set_halt(struct dwc3_ep *dep, int value, int protocol) + + dwc3_stop_active_transfer(dep, true, true); + +- list_for_each_entry_safe(req, tmp, &dep->started_list, list) +- dwc3_gadget_move_cancelled_request(req); ++ if (!list_empty(&dep->started_list)) ++ dep->flags |= DWC3_EP_DELAY_START; + + if (dep->flags & DWC3_EP_END_TRANSFER_PENDING) { + dep->flags |= DWC3_EP_PENDING_CLEAR_STALL; + return 0; + } + +- dwc3_gadget_ep_cleanup_cancelled_requests(dep); +- + ret = dwc3_send_clear_stall_ep_cmd(dep); + if (ret) { + dev_err(dwc->dev, "failed to clear STALL on %s\n", +@@ -2059,6 +2268,102 @@ static void dwc3_stop_active_transfers(struct dwc3 *dwc) + } + } + ++static void __dwc3_gadget_set_ssp_rate(struct dwc3 *dwc) ++{ ++ enum usb_ssp_rate ssp_rate = dwc->gadget_ssp_rate; ++ u32 reg; ++ ++ if (ssp_rate == USB_SSP_GEN_UNKNOWN) ++ ssp_rate = dwc->max_ssp_rate; ++ ++ reg = dwc3_readl(dwc->regs, DWC3_DCFG); ++ reg &= ~DWC3_DCFG_SPEED_MASK; ++ reg &= ~DWC3_DCFG_NUMLANES(~0); ++ ++ if (ssp_rate == USB_SSP_GEN_1x2) ++ reg |= DWC3_DCFG_SUPERSPEED; ++ else if (dwc->max_ssp_rate != USB_SSP_GEN_1x2) ++ reg |= DWC3_DCFG_SUPERSPEED_PLUS; ++ ++ if (ssp_rate != USB_SSP_GEN_2x1 && ++ dwc->max_ssp_rate != USB_SSP_GEN_2x1) ++ reg |= DWC3_DCFG_NUMLANES(1); ++ ++ dwc3_writel(dwc->regs, DWC3_DCFG, reg); ++} ++ ++static void __dwc3_gadget_set_speed(struct dwc3 *dwc) ++{ ++ enum usb_device_speed speed; ++ u32 reg; ++ ++ speed = dwc->gadget_max_speed; ++ if (speed == USB_SPEED_UNKNOWN || speed > dwc->maximum_speed) ++ speed = dwc->maximum_speed; ++ ++ if (speed == USB_SPEED_SUPER_PLUS && ++ DWC3_IP_IS(DWC32)) { ++ __dwc3_gadget_set_ssp_rate(dwc); ++ return; ++ } ++ ++ reg = dwc3_readl(dwc->regs, DWC3_DCFG); ++ reg &= ~(DWC3_DCFG_SPEED_MASK); ++ ++ /* ++ * WORKAROUND: DWC3 revision < 2.20a have an issue ++ * which would cause metastability state on Run/Stop ++ * bit if we try to force the IP to USB2-only mode. ++ * ++ * Because of that, we cannot configure the IP to any ++ * speed other than the SuperSpeed ++ * ++ * Refers to: ++ * ++ * STAR#9000525659: Clock Domain Crossing on DCTL in ++ * USB 2.0 Mode ++ */ ++ if (DWC3_VER_IS_PRIOR(DWC3, 220A) && ++ !dwc->dis_metastability_quirk) { ++ reg |= DWC3_DCFG_SUPERSPEED; ++ } else { ++ switch (speed) { ++ case USB_SPEED_LOW: ++ reg |= DWC3_DCFG_LOWSPEED; ++ break; ++ case USB_SPEED_FULL: ++ reg |= DWC3_DCFG_FULLSPEED; ++ break; ++ case USB_SPEED_HIGH: ++ reg |= DWC3_DCFG_HIGHSPEED; ++ break; ++ case USB_SPEED_SUPER: ++ reg |= DWC3_DCFG_SUPERSPEED; ++ break; ++ case USB_SPEED_SUPER_PLUS: ++ if (DWC3_IP_IS(DWC3)) ++ reg |= DWC3_DCFG_SUPERSPEED; ++ else ++ reg |= DWC3_DCFG_SUPERSPEED_PLUS; ++ break; ++ default: ++ dev_err(dwc->dev, "invalid speed (%d)\n", speed); ++ ++ if (DWC3_IP_IS(DWC3)) ++ reg |= DWC3_DCFG_SUPERSPEED; ++ else ++ reg |= DWC3_DCFG_SUPERSPEED_PLUS; ++ } ++ } ++ ++ if (DWC3_IP_IS(DWC32) && ++ speed > USB_SPEED_UNKNOWN && ++ speed < USB_SPEED_SUPER_PLUS) ++ reg &= ~DWC3_DCFG_NUMLANES(~0); ++ ++ dwc3_writel(dwc->regs, DWC3_DCFG, reg); ++} ++ + static int dwc3_gadget_run_stop(struct dwc3 *dwc, int is_on, int suspend) + { + u32 reg; +@@ -2081,6 +2386,7 @@ static int dwc3_gadget_run_stop(struct dwc3 *dwc, int is_on, int suspend) + if (dwc->has_hibernation) + reg |= DWC3_DCTL_KEEP_CONNECT; + ++ __dwc3_gadget_set_speed(dwc); + dwc->pullups_connected = true; + } else { + reg &= ~DWC3_DCTL_RUN_STOP; +@@ -2111,10 +2417,12 @@ static int __dwc3_gadget_start(struct dwc3 *dwc); + static int dwc3_gadget_pullup(struct usb_gadget *g, int is_on) + { + struct dwc3 *dwc = gadget_to_dwc(g); ++ struct dwc3_vendor *vdwc = container_of(dwc, struct dwc3_vendor, dwc); + unsigned long flags; + int ret; + + is_on = !!is_on; ++ vdwc->softconnect = is_on; + + /* + * Per databook, when we want to stop the gadget, if a control transfer +@@ -2205,8 +2513,7 @@ static void dwc3_gadget_enable_irq(struct dwc3 *dwc) + u32 reg; + + /* Enable all but Start and End of Frame IRQs */ +- reg = (DWC3_DEVTEN_VNDRDEVTSTRCVEDEN | +- DWC3_DEVTEN_EVNTOVERFLOWEN | ++ reg = (DWC3_DEVTEN_EVNTOVERFLOWEN | + DWC3_DEVTEN_CMDCMPLTEN | + DWC3_DEVTEN_ERRTICERREN | + DWC3_DEVTEN_WKUPEVTEN | +@@ -2219,7 +2526,7 @@ static void dwc3_gadget_enable_irq(struct dwc3 *dwc) + + /* On 2.30a and above this bit enables U3/L2-L1 Suspend Events */ + if (!DWC3_VER_IS_PRIOR(DWC3, 230A)) +- reg |= DWC3_DEVTEN_EOPFEN; ++ reg |= DWC3_DEVTEN_U3L2L1SUSPEN; + + dwc3_writel(dwc->regs, DWC3_DEVTEN, reg); + } +@@ -2262,9 +2569,7 @@ static void dwc3_gadget_setup_nump(struct dwc3 *dwc) + u32 reg; + + ram2_depth = DWC3_GHWPARAMS7_RAM2_DEPTH(dwc->hwparams.hwparams7); +- mdwidth = DWC3_GHWPARAMS0_MDWIDTH(dwc->hwparams.hwparams0); +- if (DWC3_IP_IS(DWC32)) +- mdwidth += DWC3_GHWPARAMS6_MDWIDTH(dwc->hwparams.hwparams6); ++ mdwidth = dwc3_mdwidth(dwc); + + nump = ((ram2_depth * mdwidth / 8) - 24 - 16) / 1024; + nump = min_t(u32, nump, 16); +@@ -2282,6 +2587,15 @@ static int __dwc3_gadget_start(struct dwc3 *dwc) + int ret = 0; + u32 reg; + ++ /* ++ * If the DWC3 is in runtime suspend, the clocks maybe ++ * disabled, so avoid enable the DWC3 endpoints here. ++ * The DWC3 runtime PM resume routine will handle the ++ * gadget start sequence. ++ */ ++ if (pm_runtime_suspended(dwc->dev)) ++ return ret; ++ + /* + * Use IMOD if enabled via dwc->imod_interval. Otherwise, if + * the core supports IMOD, disable it. +@@ -2310,6 +2624,17 @@ static int __dwc3_gadget_start(struct dwc3 *dwc) + + dwc3_gadget_setup_nump(dwc); + ++ /* ++ * Currently the controller handles single stream only. So, Ignore ++ * Packet Pending bit for stream selection and don't search for another ++ * stream if the host sends Data Packet with PP=0 (for OUT direction) or ++ * ACK with NumP=0 and PP=0 (for IN direction). This slightly improves ++ * the stream performance. ++ */ ++ reg = dwc3_readl(dwc->regs, DWC3_DCFG); ++ reg |= DWC3_DCFG_IGNSTRMPP; ++ dwc3_writel(dwc->regs, DWC3_DCFG, reg); ++ + /* Start with SuperSpeed Default */ + dwc3_gadget_ep0_desc.wMaxPacketSize = cpu_to_le16(512); + +@@ -2397,6 +2722,7 @@ static int dwc3_gadget_stop(struct usb_gadget *g) + + spin_lock_irqsave(&dwc->lock, flags); + dwc->gadget_driver = NULL; ++ dwc->max_cfg_eps = 0; + spin_unlock_irqrestore(&dwc->lock, flags); + + free_irq(dwc->irq_gadget, dwc->ev_buf); +@@ -2448,59 +2774,94 @@ static void dwc3_gadget_set_speed(struct usb_gadget *g, + { + struct dwc3 *dwc = gadget_to_dwc(g); + unsigned long flags; +- u32 reg; + + spin_lock_irqsave(&dwc->lock, flags); +- reg = dwc3_readl(dwc->regs, DWC3_DCFG); +- reg &= ~(DWC3_DCFG_SPEED_MASK); ++ dwc->gadget_max_speed = speed; ++ spin_unlock_irqrestore(&dwc->lock, flags); ++} + +- /* +- * WORKAROUND: DWC3 revision < 2.20a have an issue +- * which would cause metastability state on Run/Stop +- * bit if we try to force the IP to USB2-only mode. +- * +- * Because of that, we cannot configure the IP to any +- * speed other than the SuperSpeed +- * +- * Refers to: +- * +- * STAR#9000525659: Clock Domain Crossing on DCTL in +- * USB 2.0 Mode +- */ +- if (DWC3_VER_IS_PRIOR(DWC3, 220A) && +- !dwc->dis_metastability_quirk) { +- reg |= DWC3_DCFG_SUPERSPEED; +- } else { +- switch (speed) { +- case USB_SPEED_LOW: +- reg |= DWC3_DCFG_LOWSPEED; +- break; +- case USB_SPEED_FULL: +- reg |= DWC3_DCFG_FULLSPEED; +- break; +- case USB_SPEED_HIGH: +- reg |= DWC3_DCFG_HIGHSPEED; +- break; +- case USB_SPEED_SUPER: +- reg |= DWC3_DCFG_SUPERSPEED; +- break; +- case USB_SPEED_SUPER_PLUS: +- if (DWC3_IP_IS(DWC3)) +- reg |= DWC3_DCFG_SUPERSPEED; +- else +- reg |= DWC3_DCFG_SUPERSPEED_PLUS; +- break; +- default: +- dev_err(dwc->dev, "invalid speed (%d)\n", speed); ++static void dwc3_gadget_set_ssp_rate(struct usb_gadget *g, ++ enum usb_ssp_rate rate) ++{ ++ struct dwc3 *dwc = gadget_to_dwc(g); ++ unsigned long flags; + +- if (DWC3_IP_IS(DWC3)) +- reg |= DWC3_DCFG_SUPERSPEED; +- else +- reg |= DWC3_DCFG_SUPERSPEED_PLUS; +- } ++ spin_lock_irqsave(&dwc->lock, flags); ++ dwc->gadget_max_speed = USB_SPEED_SUPER_PLUS; ++ dwc->gadget_ssp_rate = rate; ++ spin_unlock_irqrestore(&dwc->lock, flags); ++} ++ ++static int dwc3_gadget_vbus_draw(struct usb_gadget *g, unsigned int mA) ++{ ++ struct dwc3 *dwc = gadget_to_dwc(g); ++ union power_supply_propval val = {0}; ++ int ret; ++ ++ if (dwc->usb2_phy) ++ return usb_phy_set_power(dwc->usb2_phy, mA); ++ ++ if (!dwc->usb_psy) ++ return -EOPNOTSUPP; ++ ++ val.intval = 1000 * mA; ++ ret = power_supply_set_property(dwc->usb_psy, POWER_SUPPLY_PROP_INPUT_CURRENT_LIMIT, &val); ++ ++ return ret; ++} ++ ++/** ++ * dwc3_gadget_check_config - ensure dwc3 can support the USB configuration ++ * @g: pointer to the USB gadget ++ * ++ * Used to record the maximum number of endpoints being used in a USB composite ++ * device. (across all configurations) This is to be used in the calculation ++ * of the TXFIFO sizes when resizing internal memory for individual endpoints. ++ * It will help ensured that the resizing logic reserves enough space for at ++ * least one max packet. ++ */ ++static int dwc3_gadget_check_config(struct usb_gadget *g) ++{ ++ struct dwc3 *dwc = gadget_to_dwc(g); ++ struct usb_ep *ep; ++ int fifo_size = 0; ++ int ram1_depth; ++ int ep_num = 0; ++ ++ if (!dwc->do_fifo_resize) ++ return 0; ++ ++ list_for_each_entry(ep, &g->ep_list, ep_list) { ++ /* Only interested in the IN endpoints */ ++ if (ep->claimed && (ep->address & USB_DIR_IN)) ++ ep_num++; + } +- dwc3_writel(dwc->regs, DWC3_DCFG, reg); + ++ if (ep_num <= dwc->max_cfg_eps) ++ return 0; ++ ++ /* Update the max number of eps in the composition */ ++ dwc->max_cfg_eps = ep_num; ++ ++ fifo_size = dwc3_gadget_calc_tx_fifo_size(dwc, dwc->max_cfg_eps); ++ /* Based on the equation, increment by one for every ep */ ++ fifo_size += dwc->max_cfg_eps; ++ ++ /* Check if we can fit a single fifo per endpoint */ ++ ram1_depth = DWC3_RAM1_DEPTH(dwc->hwparams.hwparams7); ++ if (fifo_size > ram1_depth) ++ return -ENOMEM; ++ ++ return 0; ++} ++ ++static void dwc3_gadget_async_callbacks(struct usb_gadget *g, bool enable) ++{ ++ struct dwc3 *dwc = gadget_to_dwc(g); ++ unsigned long flags; ++ ++ spin_lock_irqsave(&dwc->lock, flags); ++ dwc->async_callbacks = enable; + spin_unlock_irqrestore(&dwc->lock, flags); + } + +@@ -2512,7 +2873,11 @@ static const struct usb_gadget_ops dwc3_gadget_ops = { + .udc_start = dwc3_gadget_start, + .udc_stop = dwc3_gadget_stop, + .udc_set_speed = dwc3_gadget_set_speed, ++ .udc_set_ssp_rate = dwc3_gadget_set_ssp_rate, + .get_config_params = dwc3_gadget_config_params, ++ .vbus_draw = dwc3_gadget_vbus_draw, ++ .check_config = dwc3_gadget_check_config, ++ .udc_async_callbacks = dwc3_gadget_async_callbacks, + }; + + /* -------------------------------------------------------------------------- */ +@@ -2535,12 +2900,10 @@ static int dwc3_gadget_init_control_endpoint(struct dwc3_ep *dep) + static int dwc3_gadget_init_in_endpoint(struct dwc3_ep *dep) + { + struct dwc3 *dwc = dep->dwc; +- int mdwidth; ++ u32 mdwidth; + int size; + +- mdwidth = DWC3_MDWIDTH(dwc->hwparams.hwparams0); +- if (DWC3_IP_IS(DWC32)) +- mdwidth += DWC3_GHWPARAMS6_MDWIDTH(dwc->hwparams.hwparams6); ++ mdwidth = dwc3_mdwidth(dwc); + + /* MDWIDTH is represented in bits, we need it in bytes */ + mdwidth /= 8; +@@ -2582,12 +2945,10 @@ static int dwc3_gadget_init_in_endpoint(struct dwc3_ep *dep) + static int dwc3_gadget_init_out_endpoint(struct dwc3_ep *dep) + { + struct dwc3 *dwc = dep->dwc; +- int mdwidth; ++ u32 mdwidth; + int size; + +- mdwidth = DWC3_MDWIDTH(dwc->hwparams.hwparams0); +- if (DWC3_IP_IS(DWC32)) +- mdwidth += DWC3_GHWPARAMS6_MDWIDTH(dwc->hwparams.hwparams6); ++ mdwidth = dwc3_mdwidth(dwc); + + /* MDWIDTH is represented in bits, convert to bytes */ + mdwidth /= 8; +@@ -2880,6 +3241,11 @@ static void dwc3_gadget_ep_cleanup_completed_requests(struct dwc3_ep *dep, + static bool dwc3_gadget_ep_should_continue(struct dwc3_ep *dep) + { + struct dwc3_request *req; ++ struct dwc3 *dwc = dep->dwc; ++ ++ if (!dep->endpoint.desc || !dwc->pullups_connected || ++ !dwc->connected) ++ return false; + + if (!list_empty(&dep->pending_list)) + return true; +@@ -2907,6 +3273,9 @@ static bool dwc3_gadget_endpoint_trbs_complete(struct dwc3_ep *dep, + struct dwc3 *dwc = dep->dwc; + bool no_started_trb = true; + ++ if (!dep->endpoint.desc) ++ return no_started_trb; ++ + dwc3_gadget_ep_cleanup_completed_requests(dep, event, status); + + if (dep->flags & DWC3_EP_END_TRANSFER_PENDING) +@@ -2954,6 +3323,9 @@ static void dwc3_gadget_endpoint_transfer_in_progress(struct dwc3_ep *dep, + { + int status = 0; + ++ if (!dep->endpoint.desc) ++ return; ++ + if (usb_endpoint_xfer_isoc(dep->endpoint.desc)) + dwc3_gadget_endpoint_frame_from_event(dep, event); + +@@ -3145,7 +3517,7 @@ static void dwc3_endpoint_interrupt(struct dwc3 *dwc, + + static void dwc3_disconnect_gadget(struct dwc3 *dwc) + { +- if (dwc->gadget_driver && dwc->gadget_driver->disconnect) { ++ if (dwc->async_callbacks && dwc->gadget_driver->disconnect) { + spin_unlock(&dwc->lock); + dwc->gadget_driver->disconnect(dwc->gadget); + spin_lock(&dwc->lock); +@@ -3154,7 +3526,7 @@ static void dwc3_disconnect_gadget(struct dwc3 *dwc) + + static void dwc3_suspend_gadget(struct dwc3 *dwc) + { +- if (dwc->gadget_driver && dwc->gadget_driver->suspend) { ++ if (dwc->async_callbacks && dwc->gadget_driver->suspend) { + spin_unlock(&dwc->lock); + dwc->gadget_driver->suspend(dwc->gadget); + spin_lock(&dwc->lock); +@@ -3163,7 +3535,7 @@ static void dwc3_suspend_gadget(struct dwc3 *dwc) + + static void dwc3_resume_gadget(struct dwc3 *dwc) + { +- if (dwc->gadget_driver && dwc->gadget_driver->resume) { ++ if (dwc->async_callbacks && dwc->gadget_driver->resume) { + spin_unlock(&dwc->lock); + dwc->gadget_driver->resume(dwc->gadget); + spin_lock(&dwc->lock); +@@ -3175,14 +3547,14 @@ static void dwc3_reset_gadget(struct dwc3 *dwc) + if (!dwc->gadget_driver) + return; + +- if (dwc->gadget->speed != USB_SPEED_UNKNOWN) { ++ if (dwc->async_callbacks && dwc->gadget->speed != USB_SPEED_UNKNOWN) { + spin_unlock(&dwc->lock); + usb_gadget_udc_reset(dwc->gadget, dwc->gadget_driver); + spin_lock(&dwc->lock); + } + } + +-static void dwc3_stop_active_transfer(struct dwc3_ep *dep, bool force, ++void dwc3_stop_active_transfer(struct dwc3_ep *dep, bool force, + bool interrupt) + { + struct dwc3_gadget_ep_cmd_params params; +@@ -3242,6 +3614,7 @@ static void dwc3_stop_active_transfer(struct dwc3_ep *dep, bool force, + else + dep->flags |= DWC3_EP_END_TRANSFER_PENDING; + } ++EXPORT_SYMBOL_GPL(dwc3_stop_active_transfer); + + static void dwc3_clear_stall_all_ep(struct dwc3 *dwc) + { +@@ -3356,12 +3729,18 @@ static void dwc3_gadget_conndone_interrupt(struct dwc3 *dwc) + struct dwc3_ep *dep; + int ret; + u32 reg; ++ u8 lanes = 1; + u8 speed; + + reg = dwc3_readl(dwc->regs, DWC3_DSTS); + speed = reg & DWC3_DSTS_CONNECTSPD; + dwc->speed = speed; + ++ if (DWC3_IP_IS(DWC32)) ++ lanes = DWC3_DSTS_CONNLANES(reg) + 1; ++ ++ dwc->gadget->ssp_rate = USB_SSP_GEN_UNKNOWN; ++ + /* + * RAMClkSel is reset to 0 after USB reset, so it must be reprogrammed + * each time on Connect Done. +@@ -3376,6 +3755,11 @@ static void dwc3_gadget_conndone_interrupt(struct dwc3 *dwc) + dwc3_gadget_ep0_desc.wMaxPacketSize = cpu_to_le16(512); + dwc->gadget->ep0->maxpacket = 512; + dwc->gadget->speed = USB_SPEED_SUPER_PLUS; ++ ++ if (lanes > 1) ++ dwc->gadget->ssp_rate = USB_SSP_GEN_2x2; ++ else ++ dwc->gadget->ssp_rate = USB_SSP_GEN_2x1; + break; + case DWC3_DSTS_SUPERSPEED: + /* +@@ -3397,6 +3781,11 @@ static void dwc3_gadget_conndone_interrupt(struct dwc3 *dwc) + dwc3_gadget_ep0_desc.wMaxPacketSize = cpu_to_le16(512); + dwc->gadget->ep0->maxpacket = 512; + dwc->gadget->speed = USB_SPEED_SUPER; ++ ++ if (lanes > 1) { ++ dwc->gadget->speed = USB_SPEED_SUPER_PLUS; ++ dwc->gadget->ssp_rate = USB_SSP_GEN_1x2; ++ } + break; + case DWC3_DSTS_HIGHSPEED: + dwc3_gadget_ep0_desc.wMaxPacketSize = cpu_to_le16(64); +@@ -3488,7 +3877,7 @@ static void dwc3_gadget_wakeup_interrupt(struct dwc3 *dwc) + * implemented. + */ + +- if (dwc->gadget_driver && dwc->gadget_driver->resume) { ++ if (dwc->async_callbacks && dwc->gadget_driver->resume) { + spin_unlock(&dwc->lock); + dwc->gadget_driver->resume(dwc->gadget); + spin_lock(&dwc->lock); +@@ -3654,7 +4043,7 @@ static void dwc3_gadget_interrupt(struct dwc3 *dwc, + case DWC3_DEVICE_EVENT_LINK_STATUS_CHANGE: + dwc3_gadget_linksts_change_interrupt(dwc, event->event_info); + break; +- case DWC3_DEVICE_EVENT_EOPF: ++ case DWC3_DEVICE_EVENT_SUSPEND: + /* It changed to be suspend event for version 2.30a and above */ + if (!DWC3_VER_IS_PRIOR(DWC3, 230A)) { + /* +@@ -3898,6 +4287,7 @@ int dwc3_gadget_init(struct dwc3 *dwc) + dev->platform_data = dwc; + dwc->gadget->ops = &dwc3_gadget_ops; + dwc->gadget->speed = USB_SPEED_UNKNOWN; ++ dwc->gadget->ssp_rate = USB_SSP_GEN_UNKNOWN; + dwc->gadget->sg_supported = true; + dwc->gadget->name = "dwc3-gadget"; + dwc->gadget->lpm_capable = !dwc->usb2_gadget_lpm_disable; +@@ -3924,6 +4314,7 @@ int dwc3_gadget_init(struct dwc3 *dwc) + dwc->revision); + + dwc->gadget->max_speed = dwc->maximum_speed; ++ dwc->gadget->max_ssp_rate = dwc->max_ssp_rate; + + /* + * REVISIT: Here we should clear all pending IRQs to be +@@ -3940,7 +4331,10 @@ int dwc3_gadget_init(struct dwc3 *dwc) + goto err5; + } + +- dwc3_gadget_set_speed(dwc->gadget, dwc->maximum_speed); ++ if (DWC3_IP_IS(DWC32) && dwc->maximum_speed == USB_SPEED_SUPER_PLUS) ++ dwc3_gadget_set_ssp_rate(dwc->gadget, dwc->max_ssp_rate); ++ else ++ dwc3_gadget_set_speed(dwc->gadget, dwc->maximum_speed); + + return 0; + +@@ -3995,9 +4389,10 @@ int dwc3_gadget_suspend(struct dwc3 *dwc) + + int dwc3_gadget_resume(struct dwc3 *dwc) + { ++ struct dwc3_vendor *vdwc = container_of(dwc, struct dwc3_vendor, dwc); + int ret; + +- if (!dwc->gadget_driver) ++ if (!dwc->gadget_driver || !vdwc->softconnect) + return 0; + + ret = __dwc3_gadget_start(dwc); +diff --git a/drivers/usb/dwc3/gadget.h b/drivers/usb/dwc3/gadget.h +old mode 100644 +new mode 100755 +index 0cd281949..77df4b6d6 +--- a/drivers/usb/dwc3/gadget.h ++++ b/drivers/usb/dwc3/gadget.h +@@ -90,15 +90,17 @@ static inline void dwc3_gadget_move_started_request(struct dwc3_request *req) + /** + * dwc3_gadget_move_cancelled_request - move @req to the cancelled_list + * @req: the request to be moved ++ * @reason: cancelled reason for the dwc3 request + * + * Caller should take care of locking. This function will move @req from its + * current list to the endpoint's cancelled_list. + */ +-static inline void dwc3_gadget_move_cancelled_request(struct dwc3_request *req) ++static inline void dwc3_gadget_move_cancelled_request(struct dwc3_request *req, ++ unsigned int reason) + { + struct dwc3_ep *dep = req->dep; + +- req->status = DWC3_REQUEST_STATUS_CANCELLED; ++ req->status = reason; + list_move_tail(&req->list, &dep->cancelled_list); + } + +diff --git a/drivers/usb/dwc3/trace.c b/drivers/usb/dwc3/trace.c +old mode 100644 +new mode 100755 +index 1b45a9723..8a4fe12bb +--- a/drivers/usb/dwc3/trace.c ++++ b/drivers/usb/dwc3/trace.c +@@ -9,3 +9,10 @@ + + #define CREATE_TRACE_POINTS + #include "trace.h" ++ ++EXPORT_TRACEPOINT_SYMBOL_GPL(dwc3_ep_queue); ++EXPORT_TRACEPOINT_SYMBOL_GPL(dwc3_readl); ++EXPORT_TRACEPOINT_SYMBOL_GPL(dwc3_writel); ++EXPORT_TRACEPOINT_SYMBOL_GPL(dwc3_event); ++EXPORT_TRACEPOINT_SYMBOL_GPL(dwc3_ctrl_req); ++EXPORT_TRACEPOINT_SYMBOL_GPL(dwc3_complete_trb); diff --git a/drivers/usb/gadget/Kconfig b/drivers/usb/gadget/Kconfig -index 2d152571a7de..c333d13b38c1 100644 +index 2d152571a..c333d13b3 100644 --- a/drivers/usb/gadget/Kconfig +++ b/drivers/usb/gadget/Kconfig @@ -216,6 +216,12 @@ config USB_F_PRINTER @@ -1581017,7 +1584269,7 @@ index 2d152571a7de..c333d13b38c1 100644 bool "Audio Class 1.0" depends on USB_CONFIGFS diff --git a/drivers/usb/gadget/composite.c b/drivers/usb/gadget/composite.c -index a980799900e7..553382ce3837 100644 +index a98079990..553382ce3 100644 --- a/drivers/usb/gadget/composite.c +++ b/drivers/usb/gadget/composite.c @@ -13,6 +13,7 @@ @@ -1581175,7 +1584427,9 @@ index a980799900e7..553382ce3837 100644 .suspend = composite_suspend, diff --git a/drivers/usb/gadget/configfs.c b/drivers/usb/gadget/configfs.c -index 9b7fa53d6642..13cd4a21a2c9 100644 +old mode 100644 +new mode 100755 +index 9b7fa53d6..18a096cac --- a/drivers/usb/gadget/configfs.c +++ b/drivers/usb/gadget/configfs.c @@ -10,6 +10,32 @@ @@ -1581243,7 +1584497,18 @@ index 9b7fa53d6642..13cd4a21a2c9 100644 } c->next_interface_id = 0; memset(c->interface, 0, sizeof(c->interface)); -@@ -1422,6 +1457,57 @@ static int configfs_composite_bind(struct usb_gadget *gadget, +@@ -1404,6 +1439,10 @@ static int configfs_composite_bind(struct usb_gadget *gadget, + goto err_purge_funcs; + } + } ++ ret = usb_gadget_check_config(cdev->gadget); ++ if (ret) ++ goto err_purge_funcs; ++ + usb_ep_autoconfig_reset(cdev->gadget); + } + if (cdev->use_os_string) { +@@ -1422,6 +1461,57 @@ static int configfs_composite_bind(struct usb_gadget *gadget, return ret; } @@ -1581301,7 +1584566,7 @@ index 9b7fa53d6642..13cd4a21a2c9 100644 static void configfs_composite_unbind(struct usb_gadget *gadget) { struct usb_composite_dev *cdev; -@@ -1447,6 +1533,51 @@ static void configfs_composite_unbind(struct usb_gadget *gadget) +@@ -1447,6 +1537,60 @@ static void configfs_composite_unbind(struct usb_gadget *gadget) spin_unlock_irqrestore(&gi->spinlock, flags); } @@ -1581309,19 +1584574,29 @@ index 9b7fa53d6642..13cd4a21a2c9 100644 +static int android_setup(struct usb_gadget *gadget, + const struct usb_ctrlrequest *c) +{ -+ struct usb_composite_dev *cdev = get_gadget_data(gadget); ++ struct usb_composite_dev *cdev; + unsigned long flags; -+ struct gadget_info *gi = container_of(cdev, struct gadget_info, cdev); ++ struct gadget_info *gi; + int value = -EOPNOTSUPP; + struct usb_function_instance *fi; + -+ spin_lock_irqsave(&cdev->lock, flags); ++ if (!android_device) ++ return 0; ++ ++ gi = dev_get_drvdata(android_device); ++ spin_lock_irqsave(&gi->spinlock, flags); ++ cdev = get_gadget_data(gadget); ++ if (!cdev || gi->unbind) { ++ spin_unlock_irqrestore(&gi->spinlock, flags); ++ return 0; ++ } ++ + if (c->bRequest == USB_REQ_GET_DESCRIPTOR && + (c->wValue >> 8) == USB_DT_CONFIG && !gi->connected) { + gi->connected = 1; + schedule_work(&gi->work); + } -+ spin_unlock_irqrestore(&cdev->lock, flags); ++ + list_for_each_entry(fi, &gi->available_func, cfs_list) { + if (fi != NULL && fi->f != NULL && fi->f->setup != NULL) { + value = fi->f->setup(fi->f, c); @@ -1581338,12 +1584613,11 @@ index 9b7fa53d6642..13cd4a21a2c9 100644 + if (value < 0) + value = composite_setup(gadget, c); + -+ spin_lock_irqsave(&cdev->lock, flags); + if (c->bRequest == USB_REQ_SET_CONFIGURATION && + cdev->config) { + schedule_work(&gi->work); + } -+ spin_unlock_irqrestore(&cdev->lock, flags); ++ spin_unlock_irqrestore(&gi->spinlock, flags); + + return value; +} @@ -1581353,7 +1584627,7 @@ index 9b7fa53d6642..13cd4a21a2c9 100644 static int configfs_composite_setup(struct usb_gadget *gadget, const struct usb_ctrlrequest *ctrl) { -@@ -1472,6 +1603,8 @@ static int configfs_composite_setup(struct usb_gadget *gadget, +@@ -1472,6 +1616,8 @@ static int configfs_composite_setup(struct usb_gadget *gadget, return ret; } @@ -1581362,7 +1584636,7 @@ index 9b7fa53d6642..13cd4a21a2c9 100644 static void configfs_composite_disconnect(struct usb_gadget *gadget) { struct usb_composite_dev *cdev; -@@ -1482,6 +1615,14 @@ static void configfs_composite_disconnect(struct usb_gadget *gadget) +@@ -1482,6 +1628,14 @@ static void configfs_composite_disconnect(struct usb_gadget *gadget) if (!cdev) return; @@ -1581377,7 +1584651,7 @@ index 9b7fa53d6642..13cd4a21a2c9 100644 gi = container_of(cdev, struct gadget_info, cdev); spin_lock_irqsave(&gi->spinlock, flags); cdev = get_gadget_data(gadget); -@@ -1490,10 +1631,36 @@ static void configfs_composite_disconnect(struct usb_gadget *gadget) +@@ -1490,10 +1644,36 @@ static void configfs_composite_disconnect(struct usb_gadget *gadget) return; } @@ -1581414,7 +1584688,7 @@ index 9b7fa53d6642..13cd4a21a2c9 100644 static void configfs_composite_suspend(struct usb_gadget *gadget) { struct usb_composite_dev *cdev; -@@ -1542,10 +1709,13 @@ static const struct usb_gadget_driver configfs_driver_template = { +@@ -1542,10 +1722,13 @@ static const struct usb_gadget_driver configfs_driver_template = { .bind = configfs_composite_bind, .unbind = configfs_composite_unbind, @@ -1581430,7 +1584704,7 @@ index 9b7fa53d6642..13cd4a21a2c9 100644 .suspend = configfs_composite_suspend, .resume = configfs_composite_resume, -@@ -1557,6 +1727,91 @@ static const struct usb_gadget_driver configfs_driver_template = { +@@ -1557,6 +1740,91 @@ static const struct usb_gadget_driver configfs_driver_template = { .match_existing_only = 1, }; @@ -1581522,7 +1584796,7 @@ index 9b7fa53d6642..13cd4a21a2c9 100644 static struct config_group *gadgets_make( struct config_group *group, const char *name) -@@ -1609,7 +1864,11 @@ static struct config_group *gadgets_make( +@@ -1609,7 +1877,11 @@ static struct config_group *gadgets_make( if (!gi->composite.gadget_driver.function) goto err; @@ -1581534,7 +1584808,7 @@ index 9b7fa53d6642..13cd4a21a2c9 100644 err: kfree(gi); return ERR_PTR(-ENOMEM); -@@ -1617,7 +1876,11 @@ static struct config_group *gadgets_make( +@@ -1617,7 +1889,11 @@ static struct config_group *gadgets_make( static void gadgets_drop(struct config_group *group, struct config_item *item) { @@ -1581546,7 +1584820,7 @@ index 9b7fa53d6642..13cd4a21a2c9 100644 } static struct configfs_group_operations gadgets_ops = { -@@ -1657,6 +1920,13 @@ static int __init gadget_cfs_init(void) +@@ -1657,6 +1933,13 @@ static int __init gadget_cfs_init(void) config_group_init(&gadget_subsys.su_group); ret = configfs_register_subsystem(&gadget_subsys); @@ -1581560,7 +1584834,7 @@ index 9b7fa53d6642..13cd4a21a2c9 100644 return ret; } module_init(gadget_cfs_init); -@@ -1664,5 +1934,10 @@ module_init(gadget_cfs_init); +@@ -1664,5 +1947,10 @@ module_init(gadget_cfs_init); static void __exit gadget_cfs_exit(void) { configfs_unregister_subsystem(&gadget_subsys); @@ -1581572,7 +1584846,7 @@ index 9b7fa53d6642..13cd4a21a2c9 100644 } module_exit(gadget_cfs_exit); diff --git a/drivers/usb/gadget/epautoconf.c b/drivers/usb/gadget/epautoconf.c -index 1eb4fa2e623f..177645f3250a 100644 +index 1eb4fa2e6..177645f32 100644 --- a/drivers/usb/gadget/epautoconf.c +++ b/drivers/usb/gadget/epautoconf.c @@ -67,6 +67,9 @@ struct usb_ep *usb_ep_autoconfig_ss( @@ -1581613,1384 +1584887,2929 @@ index 1eb4fa2e623f..177645f3250a 100644 return ep; } EXPORT_SYMBOL_GPL(usb_ep_autoconfig_ss); -diff --git a/drivers/usb/gadget/function/f_fs.c b/drivers/usb/gadget/function/f_fs.c -index 725e35167837..e3f836977969 100644 ---- a/drivers/usb/gadget/function/f_fs.c -+++ b/drivers/usb/gadget/function/f_fs.c -@@ -71,7 +71,7 @@ struct ffs_function { - struct ffs_data *ffs; - - struct ffs_ep *eps; -- u8 eps_revmap[16]; -+ u8 eps_revmap[32]; - short *interfaces_nums; - - struct usb_function function; -@@ -2796,7 +2796,7 @@ static int __ffs_func_bind_do_descs(enum ffs_entity_type type, u8 *valuep, - struct ffs_function *func = priv; - struct ffs_ep *ffs_ep; - unsigned ep_desc_id; -- int idx; -+ int idx, ep_num; - static const char *speed_names[] = { "full", "high", "super" }; - - if (type != FFS_DESCRIPTOR) -@@ -2869,8 +2869,9 @@ static int __ffs_func_bind_do_descs(enum ffs_entity_type type, u8 *valuep, - - ffs_ep->ep = ep; - ffs_ep->req = req; -- func->eps_revmap[ds->bEndpointAddress & -- USB_ENDPOINT_NUMBER_MASK] = idx + 1; -+ ep_num = ((ds->bEndpointAddress & USB_ENDPOINT_DIR_MASK) >> 3) | -+ (ds->bEndpointAddress & USB_ENDPOINT_NUMBER_MASK); -+ func->eps_revmap[ep_num] = idx + 1; - /* - * If we use virtual address mapping, we restore - * original bEndpointAddress value. -@@ -3405,7 +3406,10 @@ static void ffs_func_resume(struct usb_function *f) - - static int ffs_func_revmap_ep(struct ffs_function *func, u8 num) - { -- num = func->eps_revmap[num & USB_ENDPOINT_NUMBER_MASK]; -+ int ep_num = ((num & USB_ENDPOINT_DIR_MASK) >> 3) | -+ (num & USB_ENDPOINT_NUMBER_MASK); +diff --git a/drivers/usb/gadget/function/Makefile b/drivers/usb/gadget/function/Makefile +old mode 100644 +new mode 100755 +index 5d3a6cf02..dd33a1243 +--- a/drivers/usb/gadget/function/Makefile ++++ b/drivers/usb/gadget/function/Makefile +@@ -50,3 +50,7 @@ usb_f_printer-y := f_printer.o + obj-$(CONFIG_USB_F_PRINTER) += usb_f_printer.o + usb_f_tcm-y := f_tcm.o + obj-$(CONFIG_USB_F_TCM) += usb_f_tcm.o ++usb_f_accessory-y := f_accessory.o ++obj-$(CONFIG_USB_F_ACC) += usb_f_accessory.o ++usb_f_audio_source-y := f_audio_source.o ++obj-$(CONFIG_USB_F_AUDIO_SRC) += usb_f_audio_source.o +diff --git a/drivers/usb/gadget/function/f_accessory.c b/drivers/usb/gadget/function/f_accessory.c +new file mode 100755 +index 000000000..73185410d +--- /dev/null ++++ b/drivers/usb/gadget/function/f_accessory.c +@@ -0,0 +1,1556 @@ ++// SPDX-License-Identifier: GPL-2.0 ++/* ++ * Gadget Function Driver for Android USB accessories ++ * ++ * Copyright (C) 2011 Google, Inc. ++ * Author: Mike Lockwood ++ * ++ * This software is licensed under the terms of the GNU General Public ++ * License version 2, as published by the Free Software Foundation, and ++ * may be copied, distributed, and modified under those terms. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ */ + -+ num = func->eps_revmap[ep_num]; - return num ? num : -EDOM; - } - -diff --git a/drivers/usb/gadget/function/f_rndis.c b/drivers/usb/gadget/function/f_rndis.c -index ee95e8f5f9d4..b550fcb234ff 100644 ---- a/drivers/usb/gadget/function/f_rndis.c -+++ b/drivers/usb/gadget/function/f_rndis.c -@@ -115,9 +115,9 @@ static struct usb_interface_descriptor rndis_control_intf = { - /* .bInterfaceNumber = DYNAMIC */ - /* status endpoint is optional; this could be patched later */ - .bNumEndpoints = 1, -- .bInterfaceClass = USB_CLASS_COMM, -- .bInterfaceSubClass = USB_CDC_SUBCLASS_ACM, -- .bInterfaceProtocol = USB_CDC_ACM_PROTO_VENDOR, -+ .bInterfaceClass = USB_CLASS_WIRELESS_CONTROLLER, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 3, - /* .iInterface = DYNAMIC */ - }; - -@@ -176,9 +176,9 @@ rndis_iad_descriptor = { - - .bFirstInterface = 0, /* XXX, hardcoded */ - .bInterfaceCount = 2, // control + data -- .bFunctionClass = USB_CLASS_COMM, -- .bFunctionSubClass = USB_CDC_SUBCLASS_ETHERNET, -- .bFunctionProtocol = USB_CDC_PROTO_NONE, -+ .bFunctionClass = USB_CLASS_WIRELESS_CONTROLLER, -+ .bFunctionSubClass = 1, -+ .bFunctionProtocol = 3, - /* .iFunction = DYNAMIC */ - }; - -@@ -512,6 +512,20 @@ rndis_setup(struct usb_function *f, const struct usb_ctrlrequest *ctrl) - } - break; - -+ case ((USB_DIR_OUT | USB_TYPE_CLASS | USB_RECIP_INTERFACE) << 8) -+ | USB_CDC_SET_ETHERNET_PACKET_FILTER: -+ /* -+ * see 6.2.30: no data, wIndex = interface, wValue = packet -+ * filter bitmap. However, we don't really set cdc_filter to -+ * wValue for rndis, because cdc_filter is not RNDIS-specific. -+ * Return value 0 to avoid usb controllers stall ep0. -+ */ -+ if (w_length != 0 || w_index != rndis->ctrl_id) -+ goto invalid; -+ DBG(cdev, "packet filter %02x\n", w_value); -+ value = 0; -+ break; ++/* #define DEBUG */ ++/* #define VERBOSE_DEBUG */ + - default: - invalid: - VDBG(cdev, "invalid control req%02x.%02x v%04x i%04x l%d\n", -diff --git a/drivers/usb/gadget/function/f_uac1.c b/drivers/usb/gadget/function/f_uac1.c -index e65f474ad7b3..fc66ab8bbc58 100644 ---- a/drivers/usb/gadget/function/f_uac1.c -+++ b/drivers/usb/gadget/function/f_uac1.c -@@ -3,6 +3,7 @@ - * f_uac1.c -- USB Audio Class 1.0 Function (using u_audio API) - * - * Copyright (C) 2016 Ruslan Bilovol -+ * Copyright (C) 2017 Julian Scheel - * - * This driver doesn't expect any real Audio codec to be present - * on the device - the audio streams are simply sinked to and -@@ -17,26 +18,7 @@ - #include - - #include "u_audio.h" --#include "u_uac1.h" -- --/* UAC1 spec: 3.7.2.3 Audio Channel Cluster Format */ --#define UAC1_CHANNEL_MASK 0x0FFF -- --struct f_uac1 { -- struct g_audio g_audio; -- u8 ac_intf, as_in_intf, as_out_intf; -- u8 ac_alt, as_in_alt, as_out_alt; /* needed for get_alt() */ --}; -- --static inline struct f_uac1 *func_to_uac1(struct usb_function *f) --{ -- return container_of(f, struct f_uac1, g_audio.func); --} -- --static inline struct f_uac1_opts *g_audio_to_uac1_opts(struct g_audio *audio) --{ -- return container_of(audio->func.fi, struct f_uac1_opts, func_inst); --} -+#include "u_uac.h" - - /* - * DESCRIPTORS ... most are static, but strings and full -@@ -56,6 +38,16 @@ static inline struct f_uac1_opts *g_audio_to_uac1_opts(struct g_audio *audio) - /* Number of streaming interfaces */ - #define F_AUDIO_NUM_INTERFACES 2 - -+static struct usb_interface_assoc_descriptor iad_desc = { -+ .bLength = sizeof(iad_desc), -+ .bDescriptorType = USB_DT_INTERFACE_ASSOCIATION, ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include ++#include ++#include ++#include ++ ++#include ++#include ++#include ++#include ++#include ++ ++#include ++#include ++ ++#define MAX_INST_NAME_LEN 40 ++#define BULK_BUFFER_SIZE 16384 ++#define ACC_STRING_SIZE 256 + -+ .bFirstInterface = 0, -+ .bFunctionClass = USB_CLASS_AUDIO, -+ .bFunctionSubClass = USB_SUBCLASS_AUDIOSTREAMING, -+ .bFunctionProtocol = UAC_VERSION_1, ++#define PROTOCOL_VERSION 2 ++ ++/* String IDs */ ++#define INTERFACE_STRING_INDEX 0 ++ ++/* number of tx and rx requests to allocate */ ++#define TX_REQ_MAX 4 ++#define RX_REQ_MAX 2 ++ ++struct acc_hid_dev { ++ struct list_head list; ++ struct hid_device *hid; ++ struct acc_dev *dev; ++ /* accessory defined ID */ ++ int id; ++ /* HID report descriptor */ ++ u8 *report_desc; ++ /* length of HID report descriptor */ ++ int report_desc_len; ++ /* number of bytes of report_desc we have received so far */ ++ int report_desc_offset; +}; + - /* B.3.1 Standard AC Interface Descriptor */ - static struct usb_interface_descriptor ac_interface_desc = { - .bLength = USB_DT_INTERFACE_SIZE, -@@ -71,67 +63,112 @@ static struct usb_interface_descriptor ac_interface_desc = { - */ - DECLARE_UAC_AC_HEADER_DESCRIPTOR(2); - --#define UAC_DT_AC_HEADER_LENGTH UAC_DT_AC_HEADER_SIZE(F_AUDIO_NUM_INTERFACES) --/* 2 input terminals and 2 output terminals */ --#define UAC_DT_TOTAL_LENGTH (UAC_DT_AC_HEADER_LENGTH \ -- + 2*UAC_DT_INPUT_TERMINAL_SIZE + 2*UAC_DT_OUTPUT_TERMINAL_SIZE) - /* B.3.2 Class-Specific AC Interface Descriptor */ - static struct uac1_ac_header_descriptor_2 ac_header_desc = { -- .bLength = UAC_DT_AC_HEADER_LENGTH, - .bDescriptorType = USB_DT_CS_INTERFACE, - .bDescriptorSubtype = UAC_HEADER, - .bcdADC = cpu_to_le16(0x0100), -- .wTotalLength = cpu_to_le16(UAC_DT_TOTAL_LENGTH), -- .bInCollection = F_AUDIO_NUM_INTERFACES, -- .baInterfaceNr = { -- /* Interface number of the AudioStream interfaces */ -- [0] = 1, -- [1] = 2, -- } -+ /* .baInterfaceNr[0] = DYNAMIC */ -+ /* .baInterfaceNr[1] = DYNAMIC */ - }; - --#define USB_OUT_IT_ID 1 - static struct uac_input_terminal_descriptor usb_out_it_desc = { - .bLength = UAC_DT_INPUT_TERMINAL_SIZE, - .bDescriptorType = USB_DT_CS_INTERFACE, - .bDescriptorSubtype = UAC_INPUT_TERMINAL, -- .bTerminalID = USB_OUT_IT_ID, - .wTerminalType = cpu_to_le16(UAC_TERMINAL_STREAMING), - .bAssocTerminal = 0, - .wChannelConfig = cpu_to_le16(0x3), - }; - --#define IO_OUT_OT_ID 2 -+DECLARE_UAC_FEATURE_UNIT_DESCRIPTOR(0); ++struct acc_dev { ++ struct usb_function function; ++ struct usb_composite_dev *cdev; ++ spinlock_t lock; ++ struct acc_dev_ref *ref; + -+static struct uac_feature_unit_descriptor_0 io_out_ot_fu_desc = { -+ .bLength = UAC_DT_FEATURE_UNIT_SIZE(0), -+ .bDescriptorType = USB_DT_CS_INTERFACE, -+ .bDescriptorSubtype = UAC_FEATURE_UNIT, -+ .bControlSize = 2, -+ .bmaControls[0] = (UAC_CONTROL_BIT(UAC_FU_MUTE) | -+ UAC_CONTROL_BIT(UAC_FU_VOLUME)), ++ struct usb_ep *ep_in; ++ struct usb_ep *ep_out; ++ ++ /* online indicates state of function_set_alt & function_unbind ++ * set to 1 when we connect ++ */ ++ int online; ++ ++ /* disconnected indicates state of open & release ++ * Set to 1 when we disconnect. ++ * Not cleared until our file is closed. ++ */ ++ int disconnected; ++ ++ /* strings sent by the host */ ++ char manufacturer[ACC_STRING_SIZE]; ++ char model[ACC_STRING_SIZE]; ++ char description[ACC_STRING_SIZE]; ++ char version[ACC_STRING_SIZE]; ++ char uri[ACC_STRING_SIZE]; ++ char serial[ACC_STRING_SIZE]; ++ ++ /* for acc_complete_set_string */ ++ int string_index; ++ ++ /* set to 1 if we have a pending start request */ ++ int start_requested; ++ ++ int audio_mode; ++ ++ /* synchronize access to our device file */ ++ atomic_t open_excl; ++ ++ struct list_head tx_idle; ++ ++ wait_queue_head_t read_wq; ++ wait_queue_head_t write_wq; ++ struct usb_request *rx_req[RX_REQ_MAX]; ++ int rx_done; ++ ++ /* delayed work for handling ACCESSORY_START */ ++ struct delayed_work start_work; ++ ++ /* work for handling ACCESSORY GET PROTOCOL */ ++ struct work_struct getprotocol_work; ++ ++ /* work for handling ACCESSORY SEND STRING */ ++ struct work_struct sendstring_work; ++ ++ /* worker for registering and unregistering hid devices */ ++ struct work_struct hid_work; ++ ++ /* list of active HID devices */ ++ struct list_head hid_list; ++ ++ /* list of new HID devices to register */ ++ struct list_head new_hid_list; ++ ++ /* list of dead HID devices to unregister */ ++ struct list_head dead_hid_list; +}; + -+static struct usb_audio_control c_mute_control = { -+ .list = LIST_HEAD_INIT(c_mute_control.list), -+ .name = "Capture Mute", -+ .type = UAC_FU_MUTE, -+ .set = u_audio_fu_set_cmd, -+ .get = u_audio_fu_get_cmd, ++static struct usb_interface_descriptor acc_interface_desc = { ++ .bLength = USB_DT_INTERFACE_SIZE, ++ .bDescriptorType = USB_DT_INTERFACE, ++ .bInterfaceNumber = 0, ++ .bNumEndpoints = 2, ++ .bInterfaceClass = USB_CLASS_VENDOR_SPEC, ++ .bInterfaceSubClass = USB_SUBCLASS_VENDOR_SPEC, ++ .bInterfaceProtocol = 0, +}; + -+static struct usb_audio_control c_volume_control = { -+ .list = LIST_HEAD_INIT(c_volume_control.list), -+ .name = "Capture Volume", -+ .type = UAC_FU_VOLUME, -+ .set = u_audio_fu_set_cmd, -+ .get = u_audio_fu_get_cmd, ++static struct usb_endpoint_descriptor acc_superspeedplus_in_desc = { ++ .bLength = USB_DT_ENDPOINT_SIZE, ++ .bDescriptorType = USB_DT_ENDPOINT, ++ .bEndpointAddress = USB_DIR_IN, ++ .bmAttributes = USB_ENDPOINT_XFER_BULK, ++ .wMaxPacketSize = cpu_to_le16(1024), +}; + -+static struct usb_audio_control_selector c_feature_unit = { -+ .list = LIST_HEAD_INIT(c_feature_unit.list), -+ .name = "Capture Mute & Volume Control", -+ .type = UAC_FEATURE_UNIT, -+ .desc = (struct usb_descriptor_header *)&io_out_ot_fu_desc, ++static struct usb_endpoint_descriptor acc_superspeedplus_out_desc = { ++ .bLength = USB_DT_ENDPOINT_SIZE, ++ .bDescriptorType = USB_DT_ENDPOINT, ++ .bEndpointAddress = USB_DIR_OUT, ++ .bmAttributes = USB_ENDPOINT_XFER_BULK, ++ .wMaxPacketSize = cpu_to_le16(1024), +}; + - static struct uac1_output_terminal_descriptor io_out_ot_desc = { - .bLength = UAC_DT_OUTPUT_TERMINAL_SIZE, - .bDescriptorType = USB_DT_CS_INTERFACE, - .bDescriptorSubtype = UAC_OUTPUT_TERMINAL, -- .bTerminalID = IO_OUT_OT_ID, - .wTerminalType = cpu_to_le16(UAC_OUTPUT_TERMINAL_SPEAKER), - .bAssocTerminal = 0, -- .bSourceID = USB_OUT_IT_ID, - }; - --#define IO_IN_IT_ID 3 - static struct uac_input_terminal_descriptor io_in_it_desc = { - .bLength = UAC_DT_INPUT_TERMINAL_SIZE, - .bDescriptorType = USB_DT_CS_INTERFACE, - .bDescriptorSubtype = UAC_INPUT_TERMINAL, -- .bTerminalID = IO_IN_IT_ID, - .wTerminalType = cpu_to_le16(UAC_INPUT_TERMINAL_MICROPHONE), - .bAssocTerminal = 0, - .wChannelConfig = cpu_to_le16(0x3), - }; - --#define USB_IN_OT_ID 4 -+static struct uac_feature_unit_descriptor_0 usb_in_ot_fu_desc = { -+ .bLength = UAC_DT_FEATURE_UNIT_SIZE(0), -+ .bDescriptorType = USB_DT_CS_INTERFACE, -+ .bDescriptorSubtype = UAC_FEATURE_UNIT, -+ .bControlSize = 2, -+ .bmaControls[0] = (UAC_FU_MUTE | UAC_FU_VOLUME), ++static struct usb_ss_ep_comp_descriptor acc_superspeedplus_comp_desc = { ++ .bLength = sizeof(acc_superspeedplus_comp_desc), ++ .bDescriptorType = USB_DT_SS_ENDPOINT_COMP, ++ ++ /* the following 2 values can be tweaked if necessary */ ++ /* .bMaxBurst = 0, */ ++ /* .bmAttributes = 0, */ +}; + -+static struct usb_audio_control p_mute_control = { -+ .list = LIST_HEAD_INIT(p_mute_control.list), -+ .name = "Playback Mute", -+ .type = UAC_FU_MUTE, -+ .set = u_audio_fu_set_cmd, -+ .get = u_audio_fu_get_cmd, ++static struct usb_endpoint_descriptor acc_superspeed_in_desc = { ++ .bLength = USB_DT_ENDPOINT_SIZE, ++ .bDescriptorType = USB_DT_ENDPOINT, ++ .bEndpointAddress = USB_DIR_IN, ++ .bmAttributes = USB_ENDPOINT_XFER_BULK, ++ .wMaxPacketSize = cpu_to_le16(1024), +}; + -+static struct usb_audio_control p_volume_control = { -+ .list = LIST_HEAD_INIT(p_volume_control.list), -+ .name = "Playback Volume", -+ .type = UAC_FU_VOLUME, -+ .set = u_audio_fu_set_cmd, -+ .get = u_audio_fu_get_cmd, ++static struct usb_endpoint_descriptor acc_superspeed_out_desc = { ++ .bLength = USB_DT_ENDPOINT_SIZE, ++ .bDescriptorType = USB_DT_ENDPOINT, ++ .bEndpointAddress = USB_DIR_OUT, ++ .bmAttributes = USB_ENDPOINT_XFER_BULK, ++ .wMaxPacketSize = cpu_to_le16(1024), +}; + -+static struct usb_audio_control_selector p_feature_unit = { -+ .list = LIST_HEAD_INIT(p_feature_unit.list), -+ .name = "Playback Mute & Volume Control", -+ .type = UAC_FEATURE_UNIT, -+ .desc = (struct usb_descriptor_header *)&usb_in_ot_fu_desc, ++static struct usb_ss_ep_comp_descriptor acc_superspeed_comp_desc = { ++ .bLength = sizeof(acc_superspeed_comp_desc), ++ .bDescriptorType = USB_DT_SS_ENDPOINT_COMP, ++ ++ /* the following 2 values can be tweaked if necessary */ ++ /* .bMaxBurst = 0, */ ++ /* .bmAttributes = 0, */ +}; + - static struct uac1_output_terminal_descriptor usb_in_ot_desc = { - .bLength = UAC_DT_OUTPUT_TERMINAL_SIZE, - .bDescriptorType = USB_DT_CS_INTERFACE, - .bDescriptorSubtype = UAC_OUTPUT_TERMINAL, -- .bTerminalID = USB_IN_OT_ID, - .wTerminalType = cpu_to_le16(UAC_TERMINAL_STREAMING), - .bAssocTerminal = 0, -- .bSourceID = IO_IN_IT_ID, - }; - - /* B.4.1 Standard AS Interface Descriptor */ -@@ -176,7 +213,6 @@ static struct uac1_as_header_descriptor as_out_header_desc = { - .bLength = UAC_DT_AS_HEADER_SIZE, - .bDescriptorType = USB_DT_CS_INTERFACE, - .bDescriptorSubtype = UAC_AS_GENERAL, -- .bTerminalLink = USB_OUT_IT_ID, - .bDelay = 1, - .wFormatTag = cpu_to_le16(UAC_FORMAT_TYPE_I_PCM), - }; -@@ -185,21 +221,22 @@ static struct uac1_as_header_descriptor as_in_header_desc = { - .bLength = UAC_DT_AS_HEADER_SIZE, - .bDescriptorType = USB_DT_CS_INTERFACE, - .bDescriptorSubtype = UAC_AS_GENERAL, -- .bTerminalLink = USB_IN_OT_ID, - .bDelay = 1, - .wFormatTag = cpu_to_le16(UAC_FORMAT_TYPE_I_PCM), - }; - --DECLARE_UAC_FORMAT_TYPE_I_DISCRETE_DESC(1); -+DECLARE_UAC_FORMAT_TYPE_I_DISCRETE_DESC(UAC_MAX_RATES); -+#define uac_format_type_i_discrete_descriptor \ -+ uac_format_type_i_discrete_descriptor_##UAC_MAX_RATES - --static struct uac_format_type_i_discrete_descriptor_1 as_out_type_i_desc = { -- .bLength = UAC_FORMAT_TYPE_I_DISCRETE_DESC_SIZE(1), -+static struct uac_format_type_i_discrete_descriptor as_out_type_i_desc = { -+ .bLength = 0, /* filled on rate setup */ - .bDescriptorType = USB_DT_CS_INTERFACE, - .bDescriptorSubtype = UAC_FORMAT_TYPE, - .bFormatType = UAC_FORMAT_TYPE_I, - .bSubframeSize = 2, - .bBitResolution = 16, -- .bSamFreqType = 1, -+ .bSamFreqType = 0, /* filled on rate setup */ - }; - - /* Standard ISO OUT Endpoint Descriptor */ -@@ -209,10 +246,28 @@ static struct usb_endpoint_descriptor as_out_ep_desc = { - .bEndpointAddress = USB_DIR_OUT, - .bmAttributes = USB_ENDPOINT_SYNC_ADAPTIVE - | USB_ENDPOINT_XFER_ISOC, -- .wMaxPacketSize = cpu_to_le16(UAC1_OUT_EP_MAX_PACKET_SIZE), -+ /* .wMaxPacketSize = DYNAMIC */ - .bInterval = 4, - }; - -+static struct usb_endpoint_descriptor ss_out_ep_desc = { -+ .bLength = USB_DT_ENDPOINT_AUDIO_SIZE, -+ .bDescriptorType = USB_DT_ENDPOINT, ++static struct usb_endpoint_descriptor acc_highspeed_in_desc = { ++ .bLength = USB_DT_ENDPOINT_SIZE, ++ .bDescriptorType = USB_DT_ENDPOINT, ++ .bEndpointAddress = USB_DIR_IN, ++ .bmAttributes = USB_ENDPOINT_XFER_BULK, ++ .wMaxPacketSize = cpu_to_le16(512), ++}; + -+ .bEndpointAddress = USB_DIR_OUT, -+ .bmAttributes = USB_ENDPOINT_XFER_ISOC | USB_ENDPOINT_SYNC_ADAPTIVE, -+ /* .wMaxPacketSize = DYNAMIC */ -+ .bInterval = 4, ++static struct usb_endpoint_descriptor acc_highspeed_out_desc = { ++ .bLength = USB_DT_ENDPOINT_SIZE, ++ .bDescriptorType = USB_DT_ENDPOINT, ++ .bEndpointAddress = USB_DIR_OUT, ++ .bmAttributes = USB_ENDPOINT_XFER_BULK, ++ .wMaxPacketSize = cpu_to_le16(512), +}; + -+static struct usb_ss_ep_comp_descriptor ss_out_ep_desc_comp = { -+ .bLength = sizeof(ss_out_ep_desc_comp), -+ .bDescriptorType = USB_DT_SS_ENDPOINT_COMP, -+ .bMaxBurst = 0, -+ .bmAttributes = 0, -+ /* wBytesPerInterval = DYNAMIC */ ++static struct usb_endpoint_descriptor acc_fullspeed_in_desc = { ++ .bLength = USB_DT_ENDPOINT_SIZE, ++ .bDescriptorType = USB_DT_ENDPOINT, ++ .bEndpointAddress = USB_DIR_IN, ++ .bmAttributes = USB_ENDPOINT_XFER_BULK, +}; + - /* Class-specific AS ISO OUT Endpoint Descriptor */ - static struct uac_iso_endpoint_descriptor as_iso_out_desc = { - .bLength = UAC_ISO_ENDPOINT_DESC_SIZE, -@@ -223,14 +278,14 @@ static struct uac_iso_endpoint_descriptor as_iso_out_desc = { - .wLockDelay = cpu_to_le16(1), - }; - --static struct uac_format_type_i_discrete_descriptor_1 as_in_type_i_desc = { -- .bLength = UAC_FORMAT_TYPE_I_DISCRETE_DESC_SIZE(1), -+static struct uac_format_type_i_discrete_descriptor as_in_type_i_desc = { -+ .bLength = 0, /* filled on rate setup */ - .bDescriptorType = USB_DT_CS_INTERFACE, - .bDescriptorSubtype = UAC_FORMAT_TYPE, - .bFormatType = UAC_FORMAT_TYPE_I, - .bSubframeSize = 2, - .bBitResolution = 16, -- .bSamFreqType = 1, -+ .bSamFreqType = 0, /* filled on rate setup */ - }; - - /* Standard ISO OUT Endpoint Descriptor */ -@@ -240,10 +295,28 @@ static struct usb_endpoint_descriptor as_in_ep_desc = { - .bEndpointAddress = USB_DIR_IN, - .bmAttributes = USB_ENDPOINT_SYNC_ASYNC - | USB_ENDPOINT_XFER_ISOC, -- .wMaxPacketSize = cpu_to_le16(UAC1_OUT_EP_MAX_PACKET_SIZE), -+ /* .wMaxPacketSize = DYNAMIC */ - .bInterval = 4, - }; - -+static struct usb_endpoint_descriptor ss_in_ep_desc = { -+ .bLength = USB_DT_ENDPOINT_AUDIO_SIZE, -+ .bDescriptorType = USB_DT_ENDPOINT, ++static struct usb_endpoint_descriptor acc_fullspeed_out_desc = { ++ .bLength = USB_DT_ENDPOINT_SIZE, ++ .bDescriptorType = USB_DT_ENDPOINT, ++ .bEndpointAddress = USB_DIR_OUT, ++ .bmAttributes = USB_ENDPOINT_XFER_BULK, ++}; + -+ .bEndpointAddress = USB_DIR_IN, -+ .bmAttributes = USB_ENDPOINT_XFER_ISOC | USB_ENDPOINT_SYNC_ASYNC, -+ /* .wMaxPacketSize = DYNAMIC */ -+ .bInterval = 4, ++static struct usb_descriptor_header *fs_acc_descs[] = { ++ (struct usb_descriptor_header *) &acc_interface_desc, ++ (struct usb_descriptor_header *) &acc_fullspeed_in_desc, ++ (struct usb_descriptor_header *) &acc_fullspeed_out_desc, ++ NULL, +}; + -+static struct usb_ss_ep_comp_descriptor ss_in_ep_desc_comp = { -+ .bLength = sizeof(ss_in_ep_desc_comp), -+ .bDescriptorType = USB_DT_SS_ENDPOINT_COMP, -+ .bMaxBurst = 0, -+ .bmAttributes = 0, -+ /* wBytesPerInterval = DYNAMIC */ ++static struct usb_descriptor_header *hs_acc_descs[] = { ++ (struct usb_descriptor_header *) &acc_interface_desc, ++ (struct usb_descriptor_header *) &acc_highspeed_in_desc, ++ (struct usb_descriptor_header *) &acc_highspeed_out_desc, ++ NULL, +}; + - /* Class-specific AS ISO OUT Endpoint Descriptor */ - static struct uac_iso_endpoint_descriptor as_iso_in_desc = { - .bLength = UAC_ISO_ENDPOINT_DESC_SIZE, -@@ -255,12 +328,15 @@ static struct uac_iso_endpoint_descriptor as_iso_in_desc = { - }; - - static struct usb_descriptor_header *f_audio_desc[] = { -+ (struct usb_descriptor_header *)&iad_desc, - (struct usb_descriptor_header *)&ac_interface_desc, - (struct usb_descriptor_header *)&ac_header_desc, - - (struct usb_descriptor_header *)&usb_out_it_desc, -+ (struct usb_descriptor_header *)&io_out_ot_fu_desc, - (struct usb_descriptor_header *)&io_out_ot_desc, - (struct usb_descriptor_header *)&io_in_it_desc, -+ (struct usb_descriptor_header *)&usb_in_ot_fu_desc, - (struct usb_descriptor_header *)&usb_in_ot_desc, - - (struct usb_descriptor_header *)&as_out_interface_alt_0_desc, -@@ -283,13 +359,50 @@ static struct usb_descriptor_header *f_audio_desc[] = { - NULL, - }; - -+static struct usb_descriptor_header *f_ss_audio_desc[] = { -+ (struct usb_descriptor_header *)&iad_desc, -+ (struct usb_descriptor_header *)&ac_interface_desc, -+ (struct usb_descriptor_header *)&ac_header_desc, ++static struct usb_descriptor_header *ss_acc_descs[] = { ++ (struct usb_descriptor_header *) &acc_interface_desc, ++ (struct usb_descriptor_header *) &acc_superspeed_in_desc, ++ (struct usb_descriptor_header *) &acc_superspeed_comp_desc, ++ (struct usb_descriptor_header *) &acc_superspeed_out_desc, ++ (struct usb_descriptor_header *) &acc_superspeed_comp_desc, ++ NULL, ++}; + -+ (struct usb_descriptor_header *)&usb_out_it_desc, -+ (struct usb_descriptor_header *)&io_out_ot_fu_desc, -+ (struct usb_descriptor_header *)&io_out_ot_desc, -+ (struct usb_descriptor_header *)&io_in_it_desc, -+ (struct usb_descriptor_header *)&usb_in_ot_fu_desc, -+ (struct usb_descriptor_header *)&usb_in_ot_desc, ++static struct usb_descriptor_header *ssp_acc_descs[] = { ++ (struct usb_descriptor_header *) &acc_interface_desc, ++ (struct usb_descriptor_header *) &acc_superspeedplus_in_desc, ++ (struct usb_descriptor_header *) &acc_superspeedplus_comp_desc, ++ (struct usb_descriptor_header *) &acc_superspeedplus_out_desc, ++ (struct usb_descriptor_header *) &acc_superspeedplus_comp_desc, ++ NULL, ++}; + -+ (struct usb_descriptor_header *)&as_out_interface_alt_0_desc, -+ (struct usb_descriptor_header *)&as_out_interface_alt_1_desc, -+ (struct usb_descriptor_header *)&as_out_header_desc, ++static struct usb_string acc_string_defs[] = { ++ [INTERFACE_STRING_INDEX].s = "Android Accessory Interface", ++ { }, /* end of list */ ++}; + -+ (struct usb_descriptor_header *)&as_out_type_i_desc, ++static struct usb_gadget_strings acc_string_table = { ++ .language = 0x0409, /* en-US */ ++ .strings = acc_string_defs, ++}; + -+ (struct usb_descriptor_header *)&ss_out_ep_desc, -+ (struct usb_descriptor_header *)&ss_out_ep_desc_comp, -+ (struct usb_descriptor_header *)&as_iso_out_desc, ++static struct usb_gadget_strings *acc_strings[] = { ++ &acc_string_table, ++ NULL, ++}; + -+ (struct usb_descriptor_header *)&as_in_interface_alt_0_desc, -+ (struct usb_descriptor_header *)&as_in_interface_alt_1_desc, -+ (struct usb_descriptor_header *)&as_in_header_desc, ++struct acc_dev_ref { ++ struct kref kref; ++ struct acc_dev *acc_dev; ++}; + -+ (struct usb_descriptor_header *)&as_in_type_i_desc, ++static struct acc_dev_ref _acc_dev_ref = { ++ .kref = KREF_INIT(0), ++}; + -+ (struct usb_descriptor_header *)&ss_in_ep_desc, -+ (struct usb_descriptor_header *)&ss_in_ep_desc_comp, -+ (struct usb_descriptor_header *)&as_iso_in_desc, -+ NULL, ++struct acc_instance { ++ struct usb_function_instance func_inst; ++ const char *name; +}; + - enum { -+ STR_ASSOC, - STR_AC_IF, - STR_USB_OUT_IT, - STR_USB_OUT_IT_CH_NAMES, -+ STR_IO_OUT_OT_FU, - STR_IO_OUT_OT, - STR_IO_IN_IT, - STR_IO_IN_IT_CH_NAMES, -+ STR_USB_IN_OT_FU, - STR_USB_IN_OT, - STR_AS_OUT_IF_ALT0, - STR_AS_OUT_IF_ALT1, -@@ -298,12 +411,15 @@ enum { - }; - - static struct usb_string strings_uac1[] = { -+ [STR_ASSOC].s = "Source/Sink", - [STR_AC_IF].s = "AC Interface", - [STR_USB_OUT_IT].s = "Playback Input terminal", - [STR_USB_OUT_IT_CH_NAMES].s = "Playback Channels", -+ [STR_IO_OUT_OT_FU].s = "Playback Feature Unit", - [STR_IO_OUT_OT].s = "Playback Output terminal", - [STR_IO_IN_IT].s = "Capture Input terminal", - [STR_IO_IN_IT_CH_NAMES].s = "Capture Channels", -+ [STR_USB_IN_OT_FU].s = "Capture Feature Unit", - [STR_USB_IN_OT].s = "Capture Output terminal", - [STR_AS_OUT_IF_ALT0].s = "Playback Inactive", - [STR_AS_OUT_IF_ALT1].s = "Playback Active", -@@ -325,24 +441,151 @@ static struct usb_gadget_strings *uac1_strings[] = { - /* - * This function is an ALSA sound card following USB Audio Class Spec 1.0. - */ -+static void intf_complete(struct usb_ep *ep, struct usb_request *req) ++static struct acc_dev *get_acc_dev(void) +{ -+ struct f_uac *uac1 = req->context; -+ int status = req->status; -+ u32 data = 0; ++ struct acc_dev_ref *ref = &_acc_dev_ref; + -+ switch (status) { -+ case 0: /* normal completion? */ -+ if (uac1->set_con) { -+ memcpy(&data, req->buf, req->length); -+ uac1->set_con->set(uac1->set_con, uac1->set_cmd, -+ le16_to_cpu(data)); -+ uac1->set_con = NULL; -+ } ++ return kref_get_unless_zero(&ref->kref) ? ref->acc_dev : NULL; ++} ++ ++static void __put_acc_dev(struct kref *kref) ++{ ++ struct acc_dev_ref *ref = container_of(kref, struct acc_dev_ref, kref); ++ struct acc_dev *dev = ref->acc_dev; ++ ++ /* Cancel any async work */ ++ cancel_delayed_work_sync(&dev->start_work); ++ cancel_work_sync(&dev->getprotocol_work); ++ cancel_work_sync(&dev->sendstring_work); ++ cancel_work_sync(&dev->hid_work); ++ ++ ref->acc_dev = NULL; ++ kfree(dev); ++} ++ ++static void put_acc_dev(struct acc_dev *dev) ++{ ++ struct acc_dev_ref *ref = dev->ref; ++ ++ WARN_ON(ref->acc_dev != dev); ++ kref_put(&ref->kref, __put_acc_dev); ++} ++ ++static inline struct acc_dev *func_to_dev(struct usb_function *f) ++{ ++ return container_of(f, struct acc_dev, function); ++} ++ ++static struct usb_request *acc_request_new(struct usb_ep *ep, int buffer_size) ++{ ++ struct usb_request *req = usb_ep_alloc_request(ep, GFP_KERNEL); ++ ++ if (!req) ++ return NULL; ++ ++ /* now allocate buffers for the requests */ ++ req->buf = kmalloc(buffer_size, GFP_KERNEL); ++ if (!req->buf) { ++ usb_ep_free_request(ep, req); ++ return NULL; ++ } ++ ++ return req; ++} ++ ++static void acc_request_free(struct usb_request *req, struct usb_ep *ep) ++{ ++ if (req) { ++ kfree(req->buf); ++ usb_ep_free_request(ep, req); ++ } ++} ++ ++/* add a request to the tail of a list */ ++static void req_put(struct acc_dev *dev, struct list_head *head, ++ struct usb_request *req) ++{ ++ unsigned long flags; ++ ++ spin_lock_irqsave(&dev->lock, flags); ++ list_add_tail(&req->list, head); ++ spin_unlock_irqrestore(&dev->lock, flags); ++} ++ ++/* remove a request from the head of a list */ ++static struct usb_request *req_get(struct acc_dev *dev, struct list_head *head) ++{ ++ unsigned long flags; ++ struct usb_request *req; ++ ++ spin_lock_irqsave(&dev->lock, flags); ++ if (list_empty(head)) { ++ req = 0; ++ } else { ++ req = list_first_entry(head, struct usb_request, list); ++ list_del(&req->list); ++ } ++ spin_unlock_irqrestore(&dev->lock, flags); ++ return req; ++} ++ ++static void acc_set_disconnected(struct acc_dev *dev) ++{ ++ dev->disconnected = 1; ++} ++ ++static void acc_complete_in(struct usb_ep *ep, struct usb_request *req) ++{ ++ struct acc_dev *dev = get_acc_dev(); ++ ++ if (!dev) ++ return; ++ ++ if (req->status == -ESHUTDOWN) { ++ pr_debug("acc_complete_in set disconnected"); ++ acc_set_disconnected(dev); ++ } ++ ++ req_put(dev, &dev->tx_idle, req); ++ ++ wake_up(&dev->write_wq); ++ put_acc_dev(dev); ++} ++ ++static void acc_complete_out(struct usb_ep *ep, struct usb_request *req) ++{ ++ struct acc_dev *dev = get_acc_dev(); ++ ++ if (!dev) ++ return; ++ ++ dev->rx_done = 1; ++ if (req->status == -ESHUTDOWN) { ++ pr_debug("acc_complete_out set disconnected"); ++ acc_set_disconnected(dev); ++ } ++ ++ wake_up(&dev->read_wq); ++ put_acc_dev(dev); ++} ++ ++static void acc_complete_set_string(struct usb_ep *ep, struct usb_request *req) ++{ ++ struct acc_dev *dev = ep->driver_data; ++ char *string_dest = NULL; ++ int length = req->actual; ++ ++ if (req->status != 0) { ++ pr_err("acc_complete_set_string, err %d\n", req->status); ++ return; ++ } ++ ++ switch (dev->string_index) { ++ case ACCESSORY_STRING_MANUFACTURER: ++ string_dest = dev->manufacturer; + break; -+ default: ++ case ACCESSORY_STRING_MODEL: ++ string_dest = dev->model; ++ break; ++ case ACCESSORY_STRING_DESCRIPTION: ++ string_dest = dev->description; ++ break; ++ case ACCESSORY_STRING_VERSION: ++ string_dest = dev->version; ++ break; ++ case ACCESSORY_STRING_URI: ++ string_dest = dev->uri; ++ break; ++ case ACCESSORY_STRING_SERIAL: ++ string_dest = dev->serial; + break; + } ++ if (string_dest) { ++ unsigned long flags; ++ ++ if (length >= ACC_STRING_SIZE) ++ length = ACC_STRING_SIZE - 1; ++ ++ spin_lock_irqsave(&dev->lock, flags); ++ memcpy(string_dest, req->buf, length); ++ /* ensure zero termination */ ++ string_dest[length] = 0; ++ spin_unlock_irqrestore(&dev->lock, flags); ++ } else { ++ pr_err("unknown accessory string index %d\n", ++ dev->string_index); ++ } +} + -+static void uac_cs_attr_sample_rate(struct usb_ep *ep, struct usb_request *req) ++static void acc_complete_set_hid_report_desc(struct usb_ep *ep, ++ struct usb_request *req) +{ -+ struct usb_function *fn = ep->driver_data; -+ struct usb_composite_dev *cdev = fn->config->cdev; -+ struct g_audio *agdev = func_to_g_audio(fn); -+ struct f_uac *uac1 = func_to_uac(fn); -+ struct f_uac_opts *opts = g_audio_to_uac_opts(agdev); -+ u8 *buf = (u8 *)req->buf; -+ u32 val = 0; ++ struct acc_hid_dev *hid = req->context; ++ struct acc_dev *dev = hid->dev; ++ int length = req->actual; + -+ if (req->actual != 3) { -+ WARN(cdev, "Invalid data size for UAC_EP_CS_ATTR_SAMPLE_RATE.\n"); ++ if (req->status != 0) { ++ pr_err("acc_complete_set_hid_report_desc, err %d\n", ++ req->status); + return; + } + -+ val = buf[0] | (buf[1] << 8) | (buf[2] << 16); ++ memcpy(hid->report_desc + hid->report_desc_offset, req->buf, length); ++ hid->report_desc_offset += length; ++ if (hid->report_desc_offset == hid->report_desc_len) { ++ /* After we have received the entire report descriptor ++ * we schedule work to initialize the HID device ++ */ ++ schedule_work(&dev->hid_work); ++ } ++} ++ ++static void acc_complete_send_hid_event(struct usb_ep *ep, ++ struct usb_request *req) ++{ ++ struct acc_hid_dev *hid = req->context; ++ int length = req->actual; + -+ if (uac1->ctl_id == agdev->in_ep->address) { -+ opts->p_srate_active = val; -+ u_audio_set_playback_srate(agdev, opts->p_srate_active); -+ } else if (uac1->ctl_id == agdev->out_ep->address) { -+ opts->c_srate_active = val; -+ u_audio_set_capture_srate(agdev, opts->c_srate_active); ++ if (req->status != 0) { ++ pr_err("acc_complete_send_hid_event, err %d\n", req->status); ++ return; + } ++ ++ hid_report_raw_event(hid->hid, HID_INPUT_REPORT, req->buf, length, 1); +} + -+static int audio_set_intf_req(struct usb_function *f, -+ const struct usb_ctrlrequest *ctrl) ++static int acc_hid_parse(struct hid_device *hid) +{ -+ struct f_uac *uac1 = func_to_uac(f); -+ struct usb_composite_dev *cdev = f->config->cdev; -+ struct usb_request *req = cdev->req; -+ u8 id = ((le16_to_cpu(ctrl->wIndex) >> 8) & 0xFF); -+ u16 len = le16_to_cpu(ctrl->wLength); -+ u16 w_value = le16_to_cpu(ctrl->wValue); -+ u8 con_sel = (w_value >> 8) & 0xFF; -+ u8 cmd = (ctrl->bRequest & 0x0F); -+ struct usb_audio_control_selector *cs; -+ struct usb_audio_control *con; -+ -+ DBG(cdev, "bRequest 0x%x, w_value 0x%04x, len %d, entity %d\n", -+ ctrl->bRequest, w_value, len, id); -+ -+ list_for_each_entry(cs, &uac1->cs, list) { -+ if (cs->id == id) { -+ list_for_each_entry(con, &cs->control, list) { -+ if (con->type == con_sel) { -+ uac1->set_con = con; -+ break; -+ } -+ } -+ break; -+ } ++ struct acc_hid_dev *hdev = hid->driver_data; ++ ++ hid_parse_report(hid, hdev->report_desc, hdev->report_desc_len); ++ return 0; ++} ++ ++static int acc_hid_start(struct hid_device *hid) ++{ ++ return 0; ++} ++ ++static void acc_hid_stop(struct hid_device *hid) ++{ ++} ++ ++static int acc_hid_open(struct hid_device *hid) ++{ ++ return 0; ++} ++ ++static void acc_hid_close(struct hid_device *hid) ++{ ++} ++ ++static int acc_hid_raw_request(struct hid_device *hid, unsigned char reportnum, ++ __u8 *buf, size_t len, unsigned char rtype, int reqtype) ++{ ++ return 0; ++} ++ ++static struct hid_ll_driver acc_hid_ll_driver = { ++ .parse = acc_hid_parse, ++ .start = acc_hid_start, ++ .stop = acc_hid_stop, ++ .open = acc_hid_open, ++ .close = acc_hid_close, ++ .raw_request = acc_hid_raw_request, ++}; ++ ++static struct acc_hid_dev *acc_hid_new(struct acc_dev *dev, ++ int id, int desc_len) ++{ ++ struct acc_hid_dev *hdev; ++ ++ hdev = kzalloc(sizeof(*hdev), GFP_ATOMIC); ++ if (!hdev) ++ return NULL; ++ hdev->report_desc = kzalloc(desc_len, GFP_ATOMIC); ++ if (!hdev->report_desc) { ++ kfree(hdev); ++ return NULL; + } ++ hdev->dev = dev; ++ hdev->id = id; ++ hdev->report_desc_len = desc_len; ++ ++ return hdev; ++} + -+ uac1->set_cmd = cmd; -+ req->context = uac1; -+ req->complete = intf_complete; ++static struct acc_hid_dev *acc_hid_get(struct list_head *list, int id) ++{ ++ struct acc_hid_dev *hid; + -+ return len; ++ list_for_each_entry(hid, list, list) { ++ if (hid->id == id) ++ return hid; ++ } ++ return NULL; +} + -+static int audio_get_intf_req(struct usb_function *f, -+ const struct usb_ctrlrequest *ctrl) ++static int acc_register_hid(struct acc_dev *dev, int id, int desc_length) +{ -+ struct f_uac *uac1 = func_to_uac(f); -+ struct usb_composite_dev *cdev = f->config->cdev; -+ struct usb_request *req = cdev->req; -+ int value = -EOPNOTSUPP; -+ u8 id = ((le16_to_cpu(ctrl->wIndex) >> 8) & 0xFF); -+ u16 len = le16_to_cpu(ctrl->wLength); -+ u16 w_value = le16_to_cpu(ctrl->wValue); -+ u8 con_sel = (w_value >> 8) & 0xFF; -+ u8 cmd = (ctrl->bRequest & 0x0F); -+ struct usb_audio_control_selector *cs; -+ struct usb_audio_control *con; -+ -+ DBG(cdev, "bRequest 0x%x, w_value 0x%04x, len %d, entity %d\n", -+ ctrl->bRequest, w_value, len, id); -+ -+ list_for_each_entry(cs, &uac1->cs, list) { -+ if (cs->id == id) { -+ list_for_each_entry(con, &cs->control, list) { -+ if (con->type == con_sel && con->get) { -+ value = con->get(con, cmd); -+ break; -+ } -+ } -+ break; ++ struct acc_hid_dev *hid; ++ unsigned long flags; ++ ++ /* report descriptor length must be > 0 */ ++ if (desc_length <= 0) ++ return -EINVAL; ++ ++ spin_lock_irqsave(&dev->lock, flags); ++ /* replace HID if one already exists with this ID */ ++ hid = acc_hid_get(&dev->hid_list, id); ++ if (!hid) ++ hid = acc_hid_get(&dev->new_hid_list, id); ++ if (hid) ++ list_move(&hid->list, &dev->dead_hid_list); ++ ++ hid = acc_hid_new(dev, id, desc_length); ++ if (!hid) { ++ spin_unlock_irqrestore(&dev->lock, flags); ++ return -ENOMEM; ++ } ++ ++ list_add(&hid->list, &dev->new_hid_list); ++ spin_unlock_irqrestore(&dev->lock, flags); ++ ++ /* schedule work to register the HID device */ ++ schedule_work(&dev->hid_work); ++ return 0; ++} ++ ++static int acc_unregister_hid(struct acc_dev *dev, int id) ++{ ++ struct acc_hid_dev *hid; ++ unsigned long flags; ++ ++ spin_lock_irqsave(&dev->lock, flags); ++ hid = acc_hid_get(&dev->hid_list, id); ++ if (!hid) ++ hid = acc_hid_get(&dev->new_hid_list, id); ++ if (!hid) { ++ spin_unlock_irqrestore(&dev->lock, flags); ++ return -EINVAL; ++ } ++ ++ list_move(&hid->list, &dev->dead_hid_list); ++ spin_unlock_irqrestore(&dev->lock, flags); ++ ++ schedule_work(&dev->hid_work); ++ return 0; ++} ++ ++static int create_bulk_endpoints(struct acc_dev *dev, ++ struct usb_endpoint_descriptor *in_desc, ++ struct usb_endpoint_descriptor *out_desc) ++{ ++ struct usb_composite_dev *cdev = dev->cdev; ++ struct usb_request *req; ++ struct usb_ep *ep; ++ int i; ++ ++ DBG(cdev, "create_bulk_endpoints dev: %p\n", dev); ++ ++ ep = usb_ep_autoconfig(cdev->gadget, in_desc); ++ if (!ep) { ++ DBG(cdev, "usb_ep_autoconfig for ep_in failed\n"); ++ return -ENODEV; ++ } ++ DBG(cdev, "usb_ep_autoconfig for ep_in got %s\n", ep->name); ++ ep->driver_data = dev; /* claim the endpoint */ ++ dev->ep_in = ep; ++ ++ ep = usb_ep_autoconfig(cdev->gadget, out_desc); ++ if (!ep) { ++ DBG(cdev, "usb_ep_autoconfig for ep_out failed\n"); ++ return -ENODEV; ++ } ++ DBG(cdev, "usb_ep_autoconfig for ep_out got %s\n", ep->name); ++ ep->driver_data = dev; /* claim the endpoint */ ++ dev->ep_out = ep; ++ ++ /* now allocate requests for our endpoints */ ++ for (i = 0; i < TX_REQ_MAX; i++) { ++ req = acc_request_new(dev->ep_in, BULK_BUFFER_SIZE); ++ if (!req) ++ goto fail; ++ req->complete = acc_complete_in; ++ req_put(dev, &dev->tx_idle, req); ++ } ++ for (i = 0; i < RX_REQ_MAX; i++) { ++ req = acc_request_new(dev->ep_out, BULK_BUFFER_SIZE); ++ if (!req) ++ goto fail; ++ req->complete = acc_complete_out; ++ dev->rx_req[i] = req; ++ } ++ ++ return 0; ++ ++fail: ++ pr_err("acc_bind() could not allocate requests\n"); ++ while ((req = req_get(dev, &dev->tx_idle))) ++ acc_request_free(req, dev->ep_in); ++ for (i = 0; i < RX_REQ_MAX; i++) { ++ acc_request_free(dev->rx_req[i], dev->ep_out); ++ dev->rx_req[i] = NULL; ++ } ++ ++ return -1; ++} ++ ++static ssize_t acc_read(struct file *fp, char __user *buf, ++ size_t count, loff_t *pos) ++{ ++ struct acc_dev *dev = fp->private_data; ++ struct usb_request *req; ++ ssize_t r = count; ++ ssize_t data_length; ++ unsigned xfer; ++ int ret = 0; ++ ++ pr_debug("acc_read(%zu)\n", count); ++ ++ if (dev->disconnected) { ++ pr_debug("acc_read disconnected"); ++ return -ENODEV; ++ } ++ ++ if (count > BULK_BUFFER_SIZE) ++ count = BULK_BUFFER_SIZE; ++ ++ /* we will block until we're online */ ++ pr_debug("acc_read: waiting for online\n"); ++ ret = wait_event_interruptible(dev->read_wq, dev->online); ++ if (ret < 0) { ++ r = ret; ++ goto done; ++ } ++ ++ if (!dev->rx_req[0]) { ++ pr_warn("acc_read: USB request already handled/freed"); ++ r = -EINVAL; ++ goto done; ++ } ++ ++ /* ++ * Calculate the data length by considering termination character. ++ * Then compansite the difference of rounding up to ++ * integer multiple of maxpacket size. ++ */ ++ data_length = count; ++ data_length += dev->ep_out->maxpacket - 1; ++ data_length -= data_length % dev->ep_out->maxpacket; ++ ++ if (dev->rx_done) { ++ // last req cancelled. try to get it. ++ req = dev->rx_req[0]; ++ goto copy_data; ++ } ++ ++requeue_req: ++ /* queue a request */ ++ req = dev->rx_req[0]; ++ req->length = data_length; ++ dev->rx_done = 0; ++ ret = usb_ep_queue(dev->ep_out, req, GFP_KERNEL); ++ if (ret < 0) { ++ r = -EIO; ++ goto done; ++ } else { ++ pr_debug("rx %p queue\n", req); ++ } ++ ++ /* wait for a request to complete */ ++ ret = wait_event_interruptible(dev->read_wq, dev->rx_done); ++ if (ret < 0) { ++ r = ret; ++ ret = usb_ep_dequeue(dev->ep_out, req); ++ if (ret != 0) { ++ // cancel failed. There can be a data already received. ++ // it will be retrieved in the next read. ++ pr_debug("acc_read: cancelling failed %d", ret); + } ++ goto done; + } + -+ req->context = uac1; -+ req->complete = intf_complete; -+ len = min_t(size_t, sizeof(value), len); -+ memcpy(req->buf, &value, len); ++copy_data: ++ dev->rx_done = 0; ++ if (dev->online) { ++ /* If we got a 0-len packet, throw it back and try again. */ ++ if (req->actual == 0) ++ goto requeue_req; + -+ return len; ++ pr_debug("rx %p %u\n", req, req->actual); ++ xfer = (req->actual < count) ? req->actual : count; ++ r = xfer; ++ if (copy_to_user(buf, req->buf, xfer)) ++ r = -EFAULT; ++ } else ++ r = -EIO; ++ ++done: ++ pr_debug("acc_read returning %zd\n", r); ++ return r; +} - - static int audio_set_endpoint_req(struct usb_function *f, - const struct usb_ctrlrequest *ctrl) - { - struct usb_composite_dev *cdev = f->config->cdev; -+ struct usb_request *req = f->config->cdev->req; -+ struct f_uac *uac1 = func_to_uac(f); - int value = -EOPNOTSUPP; -- u16 ep = le16_to_cpu(ctrl->wIndex); -+ u8 ep = le16_to_cpu(ctrl->wIndex) & 0xff; - u16 len = le16_to_cpu(ctrl->wLength); - u16 w_value = le16_to_cpu(ctrl->wValue); -+ u8 cs = w_value >> 8; - - DBG(cdev, "bRequest 0x%x, w_value 0x%04x, len %d, endpoint %d\n", - ctrl->bRequest, w_value, len, ep); - - switch (ctrl->bRequest) { -- case UAC_SET_CUR: -+ case UAC_SET_CUR: { -+ if (cs == UAC_EP_CS_ATTR_SAMPLE_RATE) { -+ cdev->gadget->ep0->driver_data = f; -+ uac1->ctl_id = ep; -+ req->complete = uac_cs_attr_sample_rate; -+ } - value = len; - break; -- ++ ++static ssize_t acc_write(struct file *fp, const char __user *buf, ++ size_t count, loff_t *pos) ++{ ++ struct acc_dev *dev = fp->private_data; ++ struct usb_request *req = 0; ++ ssize_t r = count; ++ unsigned xfer; ++ int ret; ++ ++ pr_debug("acc_write(%zu)\n", count); ++ ++ if (!dev->online || dev->disconnected) { ++ pr_debug("acc_write disconnected or not online"); ++ return -ENODEV; ++ } ++ ++ while (count > 0) { ++ /* get an idle tx request to use */ ++ req = 0; ++ ret = wait_event_interruptible(dev->write_wq, ++ ((req = req_get(dev, &dev->tx_idle)) || !dev->online)); ++ if (!dev->online || dev->disconnected) { ++ pr_debug("acc_write dev->error\n"); ++ r = -EIO; ++ break; + } - case UAC_SET_MIN: - break; - -@@ -366,16 +609,34 @@ static int audio_get_endpoint_req(struct usb_function *f, - const struct usb_ctrlrequest *ctrl) - { - struct usb_composite_dev *cdev = f->config->cdev; -+ struct usb_request *req = f->config->cdev->req; -+ struct g_audio *agdev = func_to_g_audio(f); -+ struct f_uac_opts *opts = g_audio_to_uac_opts(agdev); -+ u8 *buf = (u8 *)req->buf; - int value = -EOPNOTSUPP; -- u8 ep = ((le16_to_cpu(ctrl->wIndex) >> 8) & 0xFF); -+ u8 ep = le16_to_cpu(ctrl->wIndex) & 0xff; - u16 len = le16_to_cpu(ctrl->wLength); - u16 w_value = le16_to_cpu(ctrl->wValue); -+ u8 cs = w_value >> 8; -+ u32 val = 0; - - DBG(cdev, "bRequest 0x%x, w_value 0x%04x, len %d, endpoint %d\n", - ctrl->bRequest, w_value, len, ep); - - switch (ctrl->bRequest) { -- case UAC_GET_CUR: -+ case UAC_GET_CUR: { -+ if (cs == UAC_EP_CS_ATTR_SAMPLE_RATE) { -+ if (ep == agdev->in_ep->address) -+ val = opts->p_srate_active; -+ else if (ep == agdev->out_ep->address) -+ val = opts->c_srate_active; -+ buf[2] = (val >> 16) & 0xff; -+ buf[1] = (val >> 8) & 0xff; -+ buf[0] = val & 0xff; ++ ++ if (!req) { ++ r = ret; ++ break; + } -+ value = len; -+ break; ++ ++ if (count > BULK_BUFFER_SIZE) { ++ xfer = BULK_BUFFER_SIZE; ++ /* ZLP, They will be more TX requests so not yet. */ ++ req->zero = 0; ++ } else { ++ xfer = count; ++ /* If the data length is a multple of the ++ * maxpacket size then send a zero length packet(ZLP). ++ */ ++ req->zero = ((xfer % dev->ep_in->maxpacket) == 0); ++ } ++ if (copy_from_user(req->buf, buf, xfer)) { ++ r = -EFAULT; ++ break; + } - case UAC_GET_MIN: - case UAC_GET_MAX: - case UAC_GET_RES: -@@ -404,6 +665,14 @@ f_audio_setup(struct usb_function *f, const struct usb_ctrlrequest *ctrl) - * activation uses set_alt(). - */ - switch (ctrl->bRequestType) { -+ case USB_DIR_OUT | USB_TYPE_CLASS | USB_RECIP_INTERFACE: -+ value = audio_set_intf_req(f, ctrl); -+ break; + -+ case USB_DIR_IN | USB_TYPE_CLASS | USB_RECIP_INTERFACE: -+ value = audio_get_intf_req(f, ctrl); -+ break; ++ req->length = xfer; ++ ret = usb_ep_queue(dev->ep_in, req, GFP_KERNEL); ++ if (ret < 0) { ++ pr_debug("acc_write: xfer error %d\n", ret); ++ r = -EIO; ++ break; ++ } + - case USB_DIR_OUT | USB_TYPE_CLASS | USB_RECIP_ENDPOINT: - value = audio_set_endpoint_req(f, ctrl); - break; -@@ -439,7 +708,7 @@ static int f_audio_set_alt(struct usb_function *f, unsigned intf, unsigned alt) - struct usb_composite_dev *cdev = f->config->cdev; - struct usb_gadget *gadget = cdev->gadget; - struct device *dev = &gadget->dev; -- struct f_uac1 *uac1 = func_to_uac1(f); -+ struct f_uac *uac1 = func_to_uac(f); - int ret = 0; - - /* No i/f has more than 2 alt settings */ -@@ -484,7 +753,7 @@ static int f_audio_get_alt(struct usb_function *f, unsigned intf) - struct usb_composite_dev *cdev = f->config->cdev; - struct usb_gadget *gadget = cdev->gadget; - struct device *dev = &gadget->dev; -- struct f_uac1 *uac1 = func_to_uac1(f); -+ struct f_uac *uac1 = func_to_uac(f); - - if (intf == uac1->ac_intf) - return uac1->ac_alt; -@@ -502,7 +771,7 @@ static int f_audio_get_alt(struct usb_function *f, unsigned intf) - - static void f_audio_disable(struct usb_function *f) - { -- struct f_uac1 *uac1 = func_to_uac1(f); -+ struct f_uac *uac1 = func_to_uac(f); - - uac1->as_out_alt = 0; - uac1->as_in_alt = 0; -@@ -512,34 +781,189 @@ static void f_audio_disable(struct usb_function *f) - } - - /*-------------------------------------------------------------------------*/ -+#define USBDHDR(p) (struct usb_descriptor_header *)(p) - --static int f_audio_validate_opts(struct g_audio *audio, struct device *dev) -+static void setup_headers(struct f_uac_opts *opts, -+ struct usb_descriptor_header **headers, -+ enum usb_device_speed speed) - { -- struct f_uac1_opts *opts = g_audio_to_uac1_opts(audio); -+ struct usb_ss_ep_comp_descriptor *epout_desc_comp = NULL; -+ struct usb_ss_ep_comp_descriptor *epin_desc_comp = NULL; -+ struct usb_endpoint_descriptor *epout_desc; -+ struct usb_endpoint_descriptor *epin_desc; -+ int i; ++ buf += xfer; ++ count -= xfer; + -+ switch (speed) { -+ case USB_SPEED_FULL: -+ fallthrough; -+ case USB_SPEED_HIGH: -+ epout_desc = &as_out_ep_desc; -+ epin_desc = &as_in_ep_desc; ++ /* zero this so we don't try to free it on error exit */ ++ req = 0; ++ } ++ ++ if (req) ++ req_put(dev, &dev->tx_idle, req); ++ ++ pr_debug("acc_write returning %zd\n", r); ++ return r; ++} ++ ++static long acc_ioctl(struct file *fp, unsigned code, unsigned long value) ++{ ++ struct acc_dev *dev = fp->private_data; ++ char *src = NULL; ++ int ret; ++ ++ switch (code) { ++ case ACCESSORY_GET_STRING_MANUFACTURER: ++ src = dev->manufacturer; + break; -+ default: -+ epout_desc = &ss_out_ep_desc; -+ epin_desc = &ss_in_ep_desc; -+ epout_desc_comp = &ss_out_ep_desc_comp; -+ epin_desc_comp = &ss_in_ep_desc_comp; ++ case ACCESSORY_GET_STRING_MODEL: ++ src = dev->model; ++ break; ++ case ACCESSORY_GET_STRING_DESCRIPTION: ++ src = dev->description; ++ break; ++ case ACCESSORY_GET_STRING_VERSION: ++ src = dev->version; ++ break; ++ case ACCESSORY_GET_STRING_URI: ++ src = dev->uri; ++ break; ++ case ACCESSORY_GET_STRING_SERIAL: ++ src = dev->serial; ++ break; ++ case ACCESSORY_IS_START_REQUESTED: ++ return dev->start_requested; ++ case ACCESSORY_GET_AUDIO_MODE: ++ return dev->audio_mode; + } - -- if (!opts->p_chmask && !opts->c_chmask) { -- dev_err(dev, "Error: no playback and capture channels\n"); -- return -EINVAL; -- } else if (opts->p_chmask & ~UAC1_CHANNEL_MASK) { -- dev_err(dev, "Error: unsupported playback channels mask\n"); -- return -EINVAL; -- } else if (opts->c_chmask & ~UAC1_CHANNEL_MASK) { -- dev_err(dev, "Error: unsupported capture channels mask\n"); -- return -EINVAL; -- } else if ((opts->p_ssize < 1) || (opts->p_ssize > 4)) { -- dev_err(dev, "Error: incorrect playback sample size\n"); -- return -EINVAL; -- } else if ((opts->c_ssize < 1) || (opts->c_ssize > 4)) { -- dev_err(dev, "Error: incorrect capture sample size\n"); -- return -EINVAL; -- } else if (!opts->p_srate) { -- dev_err(dev, "Error: incorrect playback sampling rate\n"); -- return -EINVAL; -- } else if (!opts->c_srate) { -- dev_err(dev, "Error: incorrect capture sampling rate\n"); -+ i = 0; -+ headers[i++] = USBDHDR(&iad_desc); -+ headers[i++] = USBDHDR(&ac_interface_desc); -+ headers[i++] = USBDHDR(&ac_header_desc); ++ if (!src) ++ return -EINVAL; + -+ if (EPOUT_EN(opts)) { -+ headers[i++] = USBDHDR(&usb_out_it_desc); -+ if (EPOUT_FU(opts)) -+ headers[i++] = USBDHDR(&io_out_ot_fu_desc); -+ headers[i++] = USBDHDR(&io_out_ot_desc); ++ ret = strlen(src) + 1; ++ if (copy_to_user((void __user *)value, src, ret)) ++ ret = -EFAULT; ++ return ret; ++} ++ ++static int acc_open(struct inode *ip, struct file *fp) ++{ ++ struct acc_dev *dev = get_acc_dev(); ++ ++ if (!dev) ++ return -ENODEV; ++ ++ if (atomic_xchg(&dev->open_excl, 1)) { ++ put_acc_dev(dev); ++ return -EBUSY; + } + -+ if (EPIN_EN(opts)) { -+ headers[i++] = USBDHDR(&io_in_it_desc); -+ if (EPIN_FU(opts)) -+ headers[i++] = USBDHDR(&usb_in_ot_fu_desc); -+ headers[i++] = USBDHDR(&usb_in_ot_desc); ++ dev->disconnected = 0; ++ fp->private_data = dev; ++ return 0; ++} ++ ++static int acc_release(struct inode *ip, struct file *fp) ++{ ++ struct acc_dev *dev = fp->private_data; ++ ++ if (!dev) ++ return -ENOENT; ++ ++ /* indicate that we are disconnected ++ * still could be online so don't touch online flag ++ */ ++ dev->disconnected = 1; ++ ++ fp->private_data = NULL; ++ WARN_ON(!atomic_xchg(&dev->open_excl, 0)); ++ put_acc_dev(dev); ++ return 0; ++} ++ ++/* file operations for /dev/usb_accessory */ ++static const struct file_operations acc_fops = { ++ .owner = THIS_MODULE, ++ .read = acc_read, ++ .write = acc_write, ++ .unlocked_ioctl = acc_ioctl, ++#ifdef CONFIG_COMPAT ++ .compat_ioctl = acc_ioctl, ++#endif ++ .open = acc_open, ++ .release = acc_release, ++}; ++ ++static int acc_hid_probe(struct hid_device *hdev, ++ const struct hid_device_id *id) ++{ ++ int ret; ++ ++ ret = hid_parse(hdev); ++ if (ret) ++ return ret; ++ return hid_hw_start(hdev, HID_CONNECT_DEFAULT); ++} ++ ++static struct miscdevice acc_device = { ++ .minor = MISC_DYNAMIC_MINOR, ++ .name = "usb_accessory", ++ .fops = &acc_fops, ++}; ++ ++static const struct hid_device_id acc_hid_table[] = { ++ { HID_USB_DEVICE(HID_ANY_ID, HID_ANY_ID) }, ++ { } ++}; ++ ++static struct hid_driver acc_hid_driver = { ++ .name = "USB accessory", ++ .id_table = acc_hid_table, ++ .probe = acc_hid_probe, ++}; ++ ++static void acc_complete_setup_noop(struct usb_ep *ep, struct usb_request *req) ++{ ++ /* ++ * Default no-op function when nothing needs to be done for the ++ * setup request ++ */ ++} ++ ++int acc_ctrlrequest(struct usb_composite_dev *cdev, ++ const struct usb_ctrlrequest *ctrl) ++{ ++ struct acc_dev *dev = get_acc_dev(); ++ int value = -EOPNOTSUPP; ++ struct acc_hid_dev *hid; ++ int offset; ++ u8 b_requestType = ctrl->bRequestType; ++ u8 b_request = ctrl->bRequest; ++ u16 w_index = le16_to_cpu(ctrl->wIndex); ++ u16 w_value = le16_to_cpu(ctrl->wValue); ++ u16 w_length = le16_to_cpu(ctrl->wLength); ++ unsigned long flags; ++ ++ /* ++ * If instance is not created which is the case in power off charging ++ * mode, dev will be NULL. Hence return error if it is the case. ++ */ ++ if (!dev) ++ return -ENODEV; ++ ++ if (b_requestType == (USB_DIR_OUT | USB_TYPE_VENDOR)) { ++ if (b_request == ACCESSORY_START) { ++ dev->start_requested = 1; ++ schedule_delayed_work( ++ &dev->start_work, msecs_to_jiffies(10)); ++ value = 0; ++ cdev->req->complete = acc_complete_setup_noop; ++ } else if (b_request == ACCESSORY_SEND_STRING) { ++ schedule_work(&dev->sendstring_work); ++ dev->string_index = w_index; ++ cdev->gadget->ep0->driver_data = dev; ++ cdev->req->complete = acc_complete_set_string; ++ value = w_length; ++ } else if (b_request == ACCESSORY_SET_AUDIO_MODE && ++ w_index == 0 && w_length == 0) { ++ dev->audio_mode = w_value; ++ cdev->req->complete = acc_complete_setup_noop; ++ value = 0; ++ } else if (b_request == ACCESSORY_REGISTER_HID) { ++ cdev->req->complete = acc_complete_setup_noop; ++ value = acc_register_hid(dev, w_value, w_index); ++ } else if (b_request == ACCESSORY_UNREGISTER_HID) { ++ cdev->req->complete = acc_complete_setup_noop; ++ value = acc_unregister_hid(dev, w_value); ++ } else if (b_request == ACCESSORY_SET_HID_REPORT_DESC) { ++ spin_lock_irqsave(&dev->lock, flags); ++ hid = acc_hid_get(&dev->new_hid_list, w_value); ++ spin_unlock_irqrestore(&dev->lock, flags); ++ if (!hid) { ++ value = -EINVAL; ++ goto err; ++ } ++ offset = w_index; ++ if (offset != hid->report_desc_offset ++ || offset + w_length > hid->report_desc_len) { ++ value = -EINVAL; ++ goto err; ++ } ++ cdev->req->context = hid; ++ cdev->req->complete = acc_complete_set_hid_report_desc; ++ value = w_length; ++ } else if (b_request == ACCESSORY_SEND_HID_EVENT) { ++ spin_lock_irqsave(&dev->lock, flags); ++ hid = acc_hid_get(&dev->hid_list, w_value); ++ spin_unlock_irqrestore(&dev->lock, flags); ++ if (!hid) { ++ value = -EINVAL; ++ goto err; ++ } ++ cdev->req->context = hid; ++ cdev->req->complete = acc_complete_send_hid_event; ++ value = w_length; ++ } ++ } else if (b_requestType == (USB_DIR_IN | USB_TYPE_VENDOR)) { ++ if (b_request == ACCESSORY_GET_PROTOCOL) { ++ schedule_work(&dev->getprotocol_work); ++ *((u16 *)cdev->req->buf) = PROTOCOL_VERSION; ++ value = sizeof(u16); ++ cdev->req->complete = acc_complete_setup_noop; ++ /* clear any string left over from a previous session */ ++ memset(dev->manufacturer, 0, sizeof(dev->manufacturer)); ++ memset(dev->model, 0, sizeof(dev->model)); ++ memset(dev->description, 0, sizeof(dev->description)); ++ memset(dev->version, 0, sizeof(dev->version)); ++ memset(dev->uri, 0, sizeof(dev->uri)); ++ memset(dev->serial, 0, sizeof(dev->serial)); ++ dev->start_requested = 0; ++ dev->audio_mode = 0; ++ } ++ } ++ ++ if (value >= 0) { ++ cdev->req->zero = 0; ++ cdev->req->length = value; ++ value = usb_ep_queue(cdev->gadget->ep0, cdev->req, GFP_ATOMIC); ++ if (value < 0) ++ ERROR(cdev, "%s setup response queue error\n", ++ __func__); + } + -+ if (EPOUT_EN(opts)) { -+ headers[i++] = USBDHDR(&as_out_interface_alt_0_desc); -+ headers[i++] = USBDHDR(&as_out_interface_alt_1_desc); -+ headers[i++] = USBDHDR(&as_out_header_desc); -+ headers[i++] = USBDHDR(&as_out_type_i_desc); -+ headers[i++] = USBDHDR(epout_desc); -+ if (epout_desc_comp) -+ headers[i++] = USBDHDR(epout_desc_comp); ++err: ++ if (value == -EOPNOTSUPP) ++ VDBG(cdev, ++ "unknown class-specific control req " ++ "%02x.%02x v%04x i%04x l%u\n", ++ ctrl->bRequestType, ctrl->bRequest, ++ w_value, w_index, w_length); ++ put_acc_dev(dev); ++ return value; ++} ++EXPORT_SYMBOL_GPL(acc_ctrlrequest); + -+ headers[i++] = USBDHDR(&as_iso_out_desc); ++static int ++__acc_function_bind(struct usb_configuration *c, ++ struct usb_function *f, bool configfs) ++{ ++ struct usb_composite_dev *cdev = c->cdev; ++ struct acc_dev *dev = func_to_dev(f); ++ int id; ++ int ret; ++ ++ DBG(cdev, "acc_function_bind dev: %p\n", dev); ++ ++ if (configfs) { ++ if (acc_string_defs[INTERFACE_STRING_INDEX].id == 0) { ++ ret = usb_string_id(c->cdev); ++ if (ret < 0) ++ return ret; ++ acc_string_defs[INTERFACE_STRING_INDEX].id = ret; ++ acc_interface_desc.iInterface = ret; ++ } ++ dev->cdev = c->cdev; + } ++ ret = hid_register_driver(&acc_hid_driver); ++ if (ret) ++ return ret; + -+ if (EPIN_EN(opts)) { -+ headers[i++] = USBDHDR(&as_in_interface_alt_0_desc); -+ headers[i++] = USBDHDR(&as_in_interface_alt_1_desc); -+ headers[i++] = USBDHDR(&as_in_header_desc); -+ headers[i++] = USBDHDR(&as_in_type_i_desc); -+ headers[i++] = USBDHDR(epin_desc); -+ if (epin_desc_comp) -+ headers[i++] = USBDHDR(epin_desc_comp); ++ dev->start_requested = 0; + -+ headers[i++] = USBDHDR(&as_iso_in_desc); ++ /* allocate interface ID(s) */ ++ id = usb_interface_id(c, f); ++ if (id < 0) ++ return id; ++ acc_interface_desc.bInterfaceNumber = id; ++ ++ /* allocate endpoints */ ++ ret = create_bulk_endpoints(dev, &acc_fullspeed_in_desc, ++ &acc_fullspeed_out_desc); ++ if (ret) ++ return ret; ++ ++ /* support high speed hardware */ ++ acc_highspeed_in_desc.bEndpointAddress = ++ acc_fullspeed_in_desc.bEndpointAddress; ++ acc_highspeed_out_desc.bEndpointAddress = ++ acc_fullspeed_out_desc.bEndpointAddress; ++ ++ /* support super speed hardware */ ++ acc_superspeed_in_desc.bEndpointAddress = ++ acc_fullspeed_in_desc.bEndpointAddress; ++ acc_superspeed_out_desc.bEndpointAddress = ++ acc_fullspeed_out_desc.bEndpointAddress; ++ ++ /* support super speed plus hardware */ ++ acc_superspeedplus_in_desc.bEndpointAddress = ++ acc_fullspeed_in_desc.bEndpointAddress; ++ acc_superspeedplus_out_desc.bEndpointAddress = ++ acc_fullspeed_out_desc.bEndpointAddress; ++ ++ DBG(cdev, "%s speed %s: IN/%s, OUT/%s\n", ++ gadget_is_dualspeed(c->cdev->gadget) ? "dual" : "full", ++ f->name, dev->ep_in->name, dev->ep_out->name); ++ return 0; ++} ++ ++static int ++acc_function_bind_configfs(struct usb_configuration *c, ++ struct usb_function *f) { ++ return __acc_function_bind(c, f, true); ++} ++ ++static void ++kill_all_hid_devices(struct acc_dev *dev) ++{ ++ struct acc_hid_dev *hid; ++ struct list_head *entry, *temp; ++ unsigned long flags; ++ ++ spin_lock_irqsave(&dev->lock, flags); ++ list_for_each_safe(entry, temp, &dev->hid_list) { ++ hid = list_entry(entry, struct acc_hid_dev, list); ++ list_del(&hid->list); ++ list_add(&hid->list, &dev->dead_hid_list); + } -+ headers[i] = NULL; ++ list_for_each_safe(entry, temp, &dev->new_hid_list) { ++ hid = list_entry(entry, struct acc_hid_dev, list); ++ list_del(&hid->list); ++ list_add(&hid->list, &dev->dead_hid_list); ++ } ++ spin_unlock_irqrestore(&dev->lock, flags); ++ ++ schedule_work(&dev->hid_work); +} + -+static void setup_descriptor(struct f_uac_opts *opts) ++static void ++acc_hid_unbind(struct acc_dev *dev) +{ -+ int i = 1; -+ u16 len = 0; ++ hid_unregister_driver(&acc_hid_driver); ++ kill_all_hid_devices(dev); ++} + -+ if (EPOUT_EN(opts)) -+ usb_out_it_desc.bTerminalID = i++; -+ if (EPIN_EN(opts)) -+ io_in_it_desc.bTerminalID = i++; -+ if (EPOUT_EN(opts) && EPOUT_FU(opts)) -+ io_out_ot_fu_desc.bUnitID = i++; -+ if (EPIN_EN(opts) && EPIN_FU(opts)) -+ usb_in_ot_fu_desc.bUnitID = i++; -+ if (EPOUT_EN(opts)) -+ io_out_ot_desc.bTerminalID = i++; -+ if (EPIN_EN(opts)) -+ usb_in_ot_desc.bTerminalID = i++; ++static void ++acc_function_unbind(struct usb_configuration *c, struct usb_function *f) ++{ ++ struct acc_dev *dev = func_to_dev(f); ++ struct usb_request *req; ++ int i; ++ ++ dev->online = 0; /* clear online flag */ ++ wake_up(&dev->read_wq); /* unblock reads on closure */ ++ wake_up(&dev->write_wq); /* likewise for writes */ ++ ++ while ((req = req_get(dev, &dev->tx_idle))) ++ acc_request_free(req, dev->ep_in); ++ for (i = 0; i < RX_REQ_MAX; i++) { ++ acc_request_free(dev->rx_req[i], dev->ep_out); ++ dev->rx_req[i] = NULL; ++ } ++ ++ acc_hid_unbind(dev); ++} ++ ++static void acc_getprotocol_work(struct work_struct *data) ++{ ++ char *envp[2] = { "ACCESSORY=GETPROTOCOL", NULL }; ++ ++ kobject_uevent_env(&acc_device.this_device->kobj, KOBJ_CHANGE, envp); ++} ++ ++static void acc_sendstring_work(struct work_struct *data) ++{ ++ char *envp[2] = { "ACCESSORY=SENDSTRING", NULL }; ++ ++ kobject_uevent_env(&acc_device.this_device->kobj, KOBJ_CHANGE, envp); ++} ++ ++static void acc_start_work(struct work_struct *data) ++{ ++ char *envp[2] = { "ACCESSORY=START", NULL }; ++ ++ kobject_uevent_env(&acc_device.this_device->kobj, KOBJ_CHANGE, envp); ++} ++ ++static int acc_hid_init(struct acc_hid_dev *hdev) ++{ ++ struct hid_device *hid; ++ int ret; ++ ++ hid = hid_allocate_device(); ++ if (IS_ERR(hid)) ++ return PTR_ERR(hid); ++ ++ hid->ll_driver = &acc_hid_ll_driver; ++ hid->dev.parent = acc_device.this_device; ++ ++ hid->bus = BUS_USB; ++ hid->vendor = HID_ANY_ID; ++ hid->product = HID_ANY_ID; ++ hid->driver_data = hdev; ++ ret = hid_add_device(hid); ++ if (ret) { ++ pr_err("can't add hid device: %d\n", ret); ++ hid_destroy_device(hid); ++ return ret; ++ } ++ ++ hdev->hid = hid; ++ return 0; ++} ++ ++static void acc_hid_delete(struct acc_hid_dev *hid) ++{ ++ kfree(hid->report_desc); ++ kfree(hid); ++} ++ ++static void acc_hid_work(struct work_struct *data) ++{ ++ struct acc_dev *dev = get_acc_dev(); ++ struct list_head *entry, *temp; ++ struct acc_hid_dev *hid; ++ struct list_head new_list, dead_list; ++ unsigned long flags; ++ ++ if (!dev) ++ return; ++ ++ INIT_LIST_HEAD(&new_list); + -+ if (EPIN_FU(opts)) { -+ usb_in_ot_desc.bSourceID = usb_in_ot_fu_desc.bUnitID; -+ usb_in_ot_fu_desc.bSourceID = io_in_it_desc.bTerminalID; -+ p_feature_unit.id = usb_in_ot_fu_desc.bUnitID; ++ spin_lock_irqsave(&dev->lock, flags); ++ ++ /* copy hids that are ready for initialization to new_list */ ++ list_for_each_safe(entry, temp, &dev->new_hid_list) { ++ hid = list_entry(entry, struct acc_hid_dev, list); ++ if (hid->report_desc_offset == hid->report_desc_len) ++ list_move(&hid->list, &new_list); ++ } ++ ++ if (list_empty(&dev->dead_hid_list)) { ++ INIT_LIST_HEAD(&dead_list); + } else { -+ usb_in_ot_desc.bSourceID = io_in_it_desc.bTerminalID; ++ /* move all of dev->dead_hid_list to dead_list */ ++ dead_list.prev = dev->dead_hid_list.prev; ++ dead_list.next = dev->dead_hid_list.next; ++ dead_list.next->prev = &dead_list; ++ dead_list.prev->next = &dead_list; ++ INIT_LIST_HEAD(&dev->dead_hid_list); ++ } ++ ++ spin_unlock_irqrestore(&dev->lock, flags); ++ ++ /* register new HID devices */ ++ list_for_each_safe(entry, temp, &new_list) { ++ hid = list_entry(entry, struct acc_hid_dev, list); ++ if (acc_hid_init(hid)) { ++ pr_err("can't add HID device %p\n", hid); ++ acc_hid_delete(hid); ++ } else { ++ spin_lock_irqsave(&dev->lock, flags); ++ list_move(&hid->list, &dev->hid_list); ++ spin_unlock_irqrestore(&dev->lock, flags); ++ } ++ } ++ ++ /* remove dead HID devices */ ++ list_for_each_safe(entry, temp, &dead_list) { ++ hid = list_entry(entry, struct acc_hid_dev, list); ++ list_del(&hid->list); ++ if (hid->hid) ++ hid_destroy_device(hid->hid); ++ acc_hid_delete(hid); ++ } ++ ++ put_acc_dev(dev); ++} ++ ++static int acc_function_set_alt(struct usb_function *f, ++ unsigned intf, unsigned alt) ++{ ++ struct acc_dev *dev = func_to_dev(f); ++ struct usb_composite_dev *cdev = f->config->cdev; ++ int ret; ++ ++ DBG(cdev, "acc_function_set_alt intf: %d alt: %d\n", intf, alt); ++ ++ ret = config_ep_by_speed(cdev->gadget, f, dev->ep_in); ++ if (ret) ++ return ret; ++ ++ ret = usb_ep_enable(dev->ep_in); ++ if (ret) ++ return ret; ++ ++ ret = config_ep_by_speed(cdev->gadget, f, dev->ep_out); ++ if (ret) ++ return ret; ++ ++ ret = usb_ep_enable(dev->ep_out); ++ if (ret) { ++ usb_ep_disable(dev->ep_in); ++ return ret; + } -+ if (EPOUT_FU(opts)) { -+ io_out_ot_desc.bSourceID = io_out_ot_fu_desc.bUnitID; -+ io_out_ot_fu_desc.bSourceID = usb_out_it_desc.bTerminalID; -+ c_feature_unit.id = io_out_ot_fu_desc.bUnitID; ++ ++ dev->online = 1; ++ dev->disconnected = 0; /* if online then not disconnected */ ++ ++ /* readers may be blocked waiting for us to go online */ ++ wake_up(&dev->read_wq); ++ return 0; ++} ++ ++static void acc_function_disable(struct usb_function *f) ++{ ++ struct acc_dev *dev = func_to_dev(f); ++ struct usb_composite_dev *cdev = dev->cdev; ++ ++ DBG(cdev, "acc_function_disable\n"); ++ acc_set_disconnected(dev); /* this now only sets disconnected */ ++ dev->online = 0; /* so now need to clear online flag here too */ ++ usb_ep_disable(dev->ep_in); ++ usb_ep_disable(dev->ep_out); ++ ++ /* readers may be blocked waiting for us to go online */ ++ wake_up(&dev->read_wq); ++ ++ VDBG(cdev, "%s disabled\n", dev->function.name); ++} ++ ++static int acc_setup(void) ++{ ++ struct acc_dev_ref *ref = &_acc_dev_ref; ++ struct acc_dev *dev; ++ int ret; ++ ++ if (kref_read(&ref->kref)) ++ return -EBUSY; ++ ++ dev = kzalloc(sizeof(*dev), GFP_KERNEL); ++ if (!dev) ++ return -ENOMEM; ++ ++ spin_lock_init(&dev->lock); ++ init_waitqueue_head(&dev->read_wq); ++ init_waitqueue_head(&dev->write_wq); ++ atomic_set(&dev->open_excl, 0); ++ INIT_LIST_HEAD(&dev->tx_idle); ++ INIT_LIST_HEAD(&dev->hid_list); ++ INIT_LIST_HEAD(&dev->new_hid_list); ++ INIT_LIST_HEAD(&dev->dead_hid_list); ++ INIT_DELAYED_WORK(&dev->start_work, acc_start_work); ++ INIT_WORK(&dev->hid_work, acc_hid_work); ++ INIT_WORK(&dev->getprotocol_work, acc_getprotocol_work); ++ INIT_WORK(&dev->sendstring_work, acc_sendstring_work); ++ ++ dev->ref = ref; ++ if (cmpxchg_relaxed(&ref->acc_dev, NULL, dev)) { ++ ret = -EBUSY; ++ goto err_free_dev; ++ } ++ ++ ret = misc_register(&acc_device); ++ if (ret) ++ goto err_zap_ptr; ++ ++ kref_init(&ref->kref); ++ return 0; ++ ++err_zap_ptr: ++ ref->acc_dev = NULL; ++err_free_dev: ++ kfree(dev); ++ pr_err("USB accessory gadget driver failed to initialize\n"); ++ return ret; ++} ++ ++void acc_disconnect(void) ++{ ++ struct acc_dev *dev = get_acc_dev(); ++ ++ if (!dev) ++ return; ++ ++ /* unregister all HID devices if USB is disconnected */ ++ kill_all_hid_devices(dev); ++ put_acc_dev(dev); ++} ++EXPORT_SYMBOL_GPL(acc_disconnect); ++ ++static void acc_cleanup(void) ++{ ++ struct acc_dev *dev = get_acc_dev(); ++ ++ misc_deregister(&acc_device); ++ put_acc_dev(dev); ++ put_acc_dev(dev); /* Pairs with kref_init() in acc_setup() */ ++} ++static struct acc_instance *to_acc_instance(struct config_item *item) ++{ ++ return container_of(to_config_group(item), struct acc_instance, ++ func_inst.group); ++} ++ ++static void acc_attr_release(struct config_item *item) ++{ ++ struct acc_instance *fi_acc = to_acc_instance(item); ++ ++ usb_put_function_instance(&fi_acc->func_inst); ++} ++ ++static struct configfs_item_operations acc_item_ops = { ++ .release = acc_attr_release, ++}; ++ ++static struct config_item_type acc_func_type = { ++ .ct_item_ops = &acc_item_ops, ++ .ct_owner = THIS_MODULE, ++}; ++ ++static struct acc_instance *to_fi_acc(struct usb_function_instance *fi) ++{ ++ return container_of(fi, struct acc_instance, func_inst); ++} ++ ++static int acc_set_inst_name(struct usb_function_instance *fi, const char *name) ++{ ++ struct acc_instance *fi_acc; ++ char *ptr; ++ int name_len; ++ ++ name_len = strlen(name) + 1; ++ if (name_len > MAX_INST_NAME_LEN) ++ return -ENAMETOOLONG; ++ ++ ptr = kstrndup(name, name_len, GFP_KERNEL); ++ if (!ptr) ++ return -ENOMEM; ++ ++ fi_acc = to_fi_acc(fi); ++ fi_acc->name = ptr; ++ return 0; ++} ++ ++static void acc_free_inst(struct usb_function_instance *fi) ++{ ++ struct acc_instance *fi_acc; ++ ++ fi_acc = to_fi_acc(fi); ++ kfree(fi_acc->name); ++ acc_cleanup(); ++} ++ ++static struct usb_function_instance *acc_alloc_inst(void) ++{ ++ struct acc_instance *fi_acc; ++ int err; ++ ++ fi_acc = kzalloc(sizeof(*fi_acc), GFP_KERNEL); ++ if (!fi_acc) ++ return ERR_PTR(-ENOMEM); ++ fi_acc->func_inst.set_inst_name = acc_set_inst_name; ++ fi_acc->func_inst.free_func_inst = acc_free_inst; ++ ++ err = acc_setup(); ++ if (err) { ++ kfree(fi_acc); ++ return ERR_PTR(err); ++ } ++ ++ config_group_init_type_name(&fi_acc->func_inst.group, ++ "", &acc_func_type); ++ return &fi_acc->func_inst; ++} ++ ++static void acc_free(struct usb_function *f) ++{ ++ struct acc_dev *dev = func_to_dev(f); ++ ++ put_acc_dev(dev); ++} ++ ++int acc_ctrlrequest_configfs(struct usb_function *f, ++ const struct usb_ctrlrequest *ctrl) { ++ if (f->config != NULL && f->config->cdev != NULL) ++ return acc_ctrlrequest(f->config->cdev, ctrl); ++ else ++ return -1; ++} ++ ++static struct usb_function *acc_alloc(struct usb_function_instance *fi) ++{ ++ struct acc_dev *dev = get_acc_dev(); ++ ++ dev->function.name = "accessory"; ++ dev->function.strings = acc_strings, ++ dev->function.fs_descriptors = fs_acc_descs; ++ dev->function.hs_descriptors = hs_acc_descs; ++ dev->function.ss_descriptors = ss_acc_descs; ++ dev->function.ssp_descriptors = ssp_acc_descs; ++ dev->function.bind = acc_function_bind_configfs; ++ dev->function.unbind = acc_function_unbind; ++ dev->function.set_alt = acc_function_set_alt; ++ dev->function.disable = acc_function_disable; ++ dev->function.free_func = acc_free; ++ dev->function.setup = acc_ctrlrequest_configfs; ++ ++ return &dev->function; ++} ++DECLARE_USB_FUNCTION_INIT(accessory, acc_alloc_inst, acc_alloc); ++MODULE_LICENSE("GPL"); +diff --git a/drivers/usb/gadget/function/f_audio_source.c b/drivers/usb/gadget/function/f_audio_source.c +new file mode 100755 +index 000000000..c768a526b +--- /dev/null ++++ b/drivers/usb/gadget/function/f_audio_source.c +@@ -0,0 +1,1071 @@ ++/* ++ * Gadget Function Driver for USB audio source device ++ * ++ * Copyright (C) 2012 Google, Inc. ++ * ++ * This software is licensed under the terms of the GNU General Public ++ * License version 2, as published by the Free Software Foundation, and ++ * may be copied, distributed, and modified under those terms. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#define SAMPLE_RATE 44100 ++#define FRAMES_PER_MSEC (SAMPLE_RATE / 1000) ++ ++#define IN_EP_MAX_PACKET_SIZE 256 ++ ++/* Number of requests to allocate */ ++#define IN_EP_REQ_COUNT 4 ++ ++#define AUDIO_AC_INTERFACE 0 ++#define AUDIO_AS_INTERFACE 1 ++#define AUDIO_NUM_INTERFACES 2 ++#define MAX_INST_NAME_LEN 40 ++ ++/* B.3.1 Standard AC Interface Descriptor */ ++static struct usb_interface_descriptor ac_interface_desc = { ++ .bLength = USB_DT_INTERFACE_SIZE, ++ .bDescriptorType = USB_DT_INTERFACE, ++ .bNumEndpoints = 0, ++ .bInterfaceClass = USB_CLASS_AUDIO, ++ .bInterfaceSubClass = USB_SUBCLASS_AUDIOCONTROL, ++}; ++ ++DECLARE_UAC_AC_HEADER_DESCRIPTOR(2); ++ ++#define UAC_DT_AC_HEADER_LENGTH UAC_DT_AC_HEADER_SIZE(AUDIO_NUM_INTERFACES) ++/* 1 input terminal, 1 output terminal and 1 feature unit */ ++#define UAC_DT_TOTAL_LENGTH (UAC_DT_AC_HEADER_LENGTH \ ++ + UAC_DT_INPUT_TERMINAL_SIZE + UAC_DT_OUTPUT_TERMINAL_SIZE \ ++ + UAC_DT_FEATURE_UNIT_SIZE(0)) ++/* B.3.2 Class-Specific AC Interface Descriptor */ ++static struct uac1_ac_header_descriptor_2 ac_header_desc = { ++ .bLength = UAC_DT_AC_HEADER_LENGTH, ++ .bDescriptorType = USB_DT_CS_INTERFACE, ++ .bDescriptorSubtype = UAC_HEADER, ++ .bcdADC = __constant_cpu_to_le16(0x0100), ++ .wTotalLength = __constant_cpu_to_le16(UAC_DT_TOTAL_LENGTH), ++ .bInCollection = AUDIO_NUM_INTERFACES, ++ .baInterfaceNr = { ++ [0] = AUDIO_AC_INTERFACE, ++ [1] = AUDIO_AS_INTERFACE, ++ } ++}; ++ ++#define INPUT_TERMINAL_ID 1 ++static struct uac_input_terminal_descriptor input_terminal_desc = { ++ .bLength = UAC_DT_INPUT_TERMINAL_SIZE, ++ .bDescriptorType = USB_DT_CS_INTERFACE, ++ .bDescriptorSubtype = UAC_INPUT_TERMINAL, ++ .bTerminalID = INPUT_TERMINAL_ID, ++ .wTerminalType = UAC_INPUT_TERMINAL_MICROPHONE, ++ .bAssocTerminal = 0, ++ .wChannelConfig = 0x3, ++}; ++ ++DECLARE_UAC_FEATURE_UNIT_DESCRIPTOR(0); ++ ++#define FEATURE_UNIT_ID 2 ++static struct uac_feature_unit_descriptor_0 feature_unit_desc = { ++ .bLength = UAC_DT_FEATURE_UNIT_SIZE(0), ++ .bDescriptorType = USB_DT_CS_INTERFACE, ++ .bDescriptorSubtype = UAC_FEATURE_UNIT, ++ .bUnitID = FEATURE_UNIT_ID, ++ .bSourceID = INPUT_TERMINAL_ID, ++ .bControlSize = 2, ++}; ++ ++#define OUTPUT_TERMINAL_ID 3 ++static struct uac1_output_terminal_descriptor output_terminal_desc = { ++ .bLength = UAC_DT_OUTPUT_TERMINAL_SIZE, ++ .bDescriptorType = USB_DT_CS_INTERFACE, ++ .bDescriptorSubtype = UAC_OUTPUT_TERMINAL, ++ .bTerminalID = OUTPUT_TERMINAL_ID, ++ .wTerminalType = UAC_TERMINAL_STREAMING, ++ .bAssocTerminal = FEATURE_UNIT_ID, ++ .bSourceID = FEATURE_UNIT_ID, ++}; ++ ++/* B.4.1 Standard AS Interface Descriptor */ ++static struct usb_interface_descriptor as_interface_alt_0_desc = { ++ .bLength = USB_DT_INTERFACE_SIZE, ++ .bDescriptorType = USB_DT_INTERFACE, ++ .bAlternateSetting = 0, ++ .bNumEndpoints = 0, ++ .bInterfaceClass = USB_CLASS_AUDIO, ++ .bInterfaceSubClass = USB_SUBCLASS_AUDIOSTREAMING, ++}; ++ ++static struct usb_interface_descriptor as_interface_alt_1_desc = { ++ .bLength = USB_DT_INTERFACE_SIZE, ++ .bDescriptorType = USB_DT_INTERFACE, ++ .bAlternateSetting = 1, ++ .bNumEndpoints = 1, ++ .bInterfaceClass = USB_CLASS_AUDIO, ++ .bInterfaceSubClass = USB_SUBCLASS_AUDIOSTREAMING, ++}; ++ ++/* B.4.2 Class-Specific AS Interface Descriptor */ ++static struct uac1_as_header_descriptor as_header_desc = { ++ .bLength = UAC_DT_AS_HEADER_SIZE, ++ .bDescriptorType = USB_DT_CS_INTERFACE, ++ .bDescriptorSubtype = UAC_AS_GENERAL, ++ .bTerminalLink = INPUT_TERMINAL_ID, ++ .bDelay = 1, ++ .wFormatTag = UAC_FORMAT_TYPE_I_PCM, ++}; ++ ++DECLARE_UAC_FORMAT_TYPE_I_DISCRETE_DESC(1); ++ ++static struct uac_format_type_i_discrete_descriptor_1 as_type_i_desc = { ++ .bLength = UAC_FORMAT_TYPE_I_DISCRETE_DESC_SIZE(1), ++ .bDescriptorType = USB_DT_CS_INTERFACE, ++ .bDescriptorSubtype = UAC_FORMAT_TYPE, ++ .bFormatType = UAC_FORMAT_TYPE_I, ++ .bSubframeSize = 2, ++ .bBitResolution = 16, ++ .bSamFreqType = 1, ++}; ++ ++/* Standard ISO IN Endpoint Descriptor for highspeed */ ++static struct usb_endpoint_descriptor hs_as_in_ep_desc = { ++ .bLength = USB_DT_ENDPOINT_AUDIO_SIZE, ++ .bDescriptorType = USB_DT_ENDPOINT, ++ .bEndpointAddress = USB_DIR_IN, ++ .bmAttributes = USB_ENDPOINT_SYNC_SYNC ++ | USB_ENDPOINT_XFER_ISOC, ++ .wMaxPacketSize = __constant_cpu_to_le16(IN_EP_MAX_PACKET_SIZE), ++ .bInterval = 4, /* poll 1 per millisecond */ ++}; ++ ++/* Standard ISO IN Endpoint Descriptor for highspeed */ ++static struct usb_endpoint_descriptor fs_as_in_ep_desc = { ++ .bLength = USB_DT_ENDPOINT_AUDIO_SIZE, ++ .bDescriptorType = USB_DT_ENDPOINT, ++ .bEndpointAddress = USB_DIR_IN, ++ .bmAttributes = USB_ENDPOINT_SYNC_SYNC ++ | USB_ENDPOINT_XFER_ISOC, ++ .wMaxPacketSize = __constant_cpu_to_le16(IN_EP_MAX_PACKET_SIZE), ++ .bInterval = 1, /* poll 1 per millisecond */ ++}; ++ ++/* Class-specific AS ISO OUT Endpoint Descriptor */ ++static struct uac_iso_endpoint_descriptor as_iso_in_desc = { ++ .bLength = UAC_ISO_ENDPOINT_DESC_SIZE, ++ .bDescriptorType = USB_DT_CS_ENDPOINT, ++ .bDescriptorSubtype = UAC_EP_GENERAL, ++ .bmAttributes = 1, ++ .bLockDelayUnits = 1, ++ .wLockDelay = __constant_cpu_to_le16(1), ++}; ++ ++static struct usb_descriptor_header *hs_audio_desc[] = { ++ (struct usb_descriptor_header *)&ac_interface_desc, ++ (struct usb_descriptor_header *)&ac_header_desc, ++ ++ (struct usb_descriptor_header *)&input_terminal_desc, ++ (struct usb_descriptor_header *)&output_terminal_desc, ++ (struct usb_descriptor_header *)&feature_unit_desc, ++ ++ (struct usb_descriptor_header *)&as_interface_alt_0_desc, ++ (struct usb_descriptor_header *)&as_interface_alt_1_desc, ++ (struct usb_descriptor_header *)&as_header_desc, ++ ++ (struct usb_descriptor_header *)&as_type_i_desc, ++ ++ (struct usb_descriptor_header *)&hs_as_in_ep_desc, ++ (struct usb_descriptor_header *)&as_iso_in_desc, ++ NULL, ++}; ++ ++static struct usb_descriptor_header *fs_audio_desc[] = { ++ (struct usb_descriptor_header *)&ac_interface_desc, ++ (struct usb_descriptor_header *)&ac_header_desc, ++ ++ (struct usb_descriptor_header *)&input_terminal_desc, ++ (struct usb_descriptor_header *)&output_terminal_desc, ++ (struct usb_descriptor_header *)&feature_unit_desc, ++ ++ (struct usb_descriptor_header *)&as_interface_alt_0_desc, ++ (struct usb_descriptor_header *)&as_interface_alt_1_desc, ++ (struct usb_descriptor_header *)&as_header_desc, ++ ++ (struct usb_descriptor_header *)&as_type_i_desc, ++ ++ (struct usb_descriptor_header *)&fs_as_in_ep_desc, ++ (struct usb_descriptor_header *)&as_iso_in_desc, ++ NULL, ++}; ++ ++static struct snd_pcm_hardware audio_hw_info = { ++ .info = SNDRV_PCM_INFO_MMAP | ++ SNDRV_PCM_INFO_MMAP_VALID | ++ SNDRV_PCM_INFO_BATCH | ++ SNDRV_PCM_INFO_INTERLEAVED | ++ SNDRV_PCM_INFO_BLOCK_TRANSFER, ++ ++ .formats = SNDRV_PCM_FMTBIT_S16_LE, ++ .channels_min = 2, ++ .channels_max = 2, ++ .rate_min = SAMPLE_RATE, ++ .rate_max = SAMPLE_RATE, ++ ++ .buffer_bytes_max = 1024 * 1024, ++ .period_bytes_min = 64, ++ .period_bytes_max = 512 * 1024, ++ .periods_min = 2, ++ .periods_max = 1024, ++}; ++ ++/*-------------------------------------------------------------------------*/ ++ ++struct audio_source_config { ++ int card; ++ int device; ++}; ++ ++struct audio_dev { ++ struct usb_function func; ++ struct snd_card *card; ++ struct snd_pcm *pcm; ++ struct snd_pcm_substream *substream; ++ ++ struct list_head idle_reqs; ++ struct usb_ep *in_ep; ++ ++ spinlock_t lock; ++ ++ /* beginning, end and current position in our buffer */ ++ void *buffer_start; ++ void *buffer_end; ++ void *buffer_pos; ++ ++ /* byte size of a "period" */ ++ unsigned int period; ++ /* bytes sent since last call to snd_pcm_period_elapsed */ ++ unsigned int period_offset; ++ /* time we started playing */ ++ ktime_t start_time; ++ /* number of frames sent since start_time */ ++ s64 frames_sent; ++ struct audio_source_config *config; ++ /* for creating and issuing QoS requests */ ++ struct pm_qos_request pm_qos; ++}; ++ ++static inline struct audio_dev *func_to_audio(struct usb_function *f) ++{ ++ return container_of(f, struct audio_dev, func); ++} ++ ++/*-------------------------------------------------------------------------*/ ++ ++struct audio_source_instance { ++ struct usb_function_instance func_inst; ++ const char *name; ++ struct audio_source_config *config; ++ struct device *audio_device; ++}; ++ ++static void audio_source_attr_release(struct config_item *item); ++ ++static struct configfs_item_operations audio_source_item_ops = { ++ .release = audio_source_attr_release, ++}; ++ ++static struct config_item_type audio_source_func_type = { ++ .ct_item_ops = &audio_source_item_ops, ++ .ct_owner = THIS_MODULE, ++}; ++ ++static ssize_t audio_source_pcm_show(struct device *dev, ++ struct device_attribute *attr, char *buf); ++ ++static DEVICE_ATTR(pcm, S_IRUGO, audio_source_pcm_show, NULL); ++ ++static struct device_attribute *audio_source_function_attributes[] = { ++ &dev_attr_pcm, ++ NULL ++}; ++ ++/*--------------------------------------------------------------------------*/ ++ ++static struct usb_request *audio_request_new(struct usb_ep *ep, int buffer_size) ++{ ++ struct usb_request *req = usb_ep_alloc_request(ep, GFP_KERNEL); ++ ++ if (!req) ++ return NULL; ++ ++ req->buf = kmalloc(buffer_size, GFP_KERNEL); ++ if (!req->buf) { ++ usb_ep_free_request(ep, req); ++ return NULL; ++ } ++ req->length = buffer_size; ++ return req; ++} ++ ++static void audio_request_free(struct usb_request *req, struct usb_ep *ep) ++{ ++ if (req) { ++ kfree(req->buf); ++ usb_ep_free_request(ep, req); ++ } ++} ++ ++static void audio_req_put(struct audio_dev *audio, struct usb_request *req) ++{ ++ unsigned long flags; ++ ++ spin_lock_irqsave(&audio->lock, flags); ++ list_add_tail(&req->list, &audio->idle_reqs); ++ spin_unlock_irqrestore(&audio->lock, flags); ++} ++ ++static struct usb_request *audio_req_get(struct audio_dev *audio) ++{ ++ unsigned long flags; ++ struct usb_request *req; ++ ++ spin_lock_irqsave(&audio->lock, flags); ++ if (list_empty(&audio->idle_reqs)) { ++ req = 0; + } else { -+ io_out_ot_desc.bSourceID = usb_out_it_desc.bTerminalID; ++ req = list_first_entry(&audio->idle_reqs, struct usb_request, ++ list); ++ list_del(&req->list); + } -+ as_out_header_desc.bTerminalLink = usb_out_it_desc.bTerminalID; -+ as_in_header_desc.bTerminalLink = usb_in_ot_desc.bTerminalID; ++ spin_unlock_irqrestore(&audio->lock, flags); ++ return req; ++} + -+ iad_desc.bInterfaceCount = 1; -+ ac_header_desc.bInCollection = 0; ++/* send the appropriate number of packets to match our bitrate */ ++static void audio_send(struct audio_dev *audio) ++{ ++ struct snd_pcm_runtime *runtime; ++ struct usb_request *req; ++ int length, length1, length2, ret; ++ s64 msecs; ++ s64 frames; ++ ktime_t now; + -+ if (EPIN_EN(opts)) { -+ len += UAC_DT_INPUT_TERMINAL_SIZE + UAC_DT_OUTPUT_TERMINAL_SIZE; -+ if (EPIN_FU(opts)) -+ len += UAC_DT_FEATURE_UNIT_SIZE(0); -+ iad_desc.bInterfaceCount++; -+ ac_header_desc.bInCollection++; ++ /* audio->substream will be null if we have been closed */ ++ if (!audio->substream) ++ return; ++ /* audio->buffer_pos will be null if we have been stopped */ ++ if (!audio->buffer_pos) ++ return; ++ ++ runtime = audio->substream->runtime; ++ ++ /* compute number of frames to send */ ++ now = ktime_get(); ++ msecs = div_s64((ktime_to_ns(now) - ktime_to_ns(audio->start_time)), ++ 1000000); ++ frames = div_s64((msecs * SAMPLE_RATE), 1000); ++ ++ /* Readjust our frames_sent if we fall too far behind. ++ * If we get too far behind it is better to drop some frames than ++ * to keep sending data too fast in an attempt to catch up. ++ */ ++ if (frames - audio->frames_sent > 10 * FRAMES_PER_MSEC) ++ audio->frames_sent = frames - FRAMES_PER_MSEC; ++ ++ frames -= audio->frames_sent; ++ ++ /* We need to send something to keep the pipeline going */ ++ if (frames <= 0) ++ frames = FRAMES_PER_MSEC; ++ ++ while (frames > 0) { ++ req = audio_req_get(audio); ++ if (!req) ++ break; ++ ++ length = frames_to_bytes(runtime, frames); ++ if (length > IN_EP_MAX_PACKET_SIZE) ++ length = IN_EP_MAX_PACKET_SIZE; ++ ++ if (audio->buffer_pos + length > audio->buffer_end) ++ length1 = audio->buffer_end - audio->buffer_pos; ++ else ++ length1 = length; ++ memcpy(req->buf, audio->buffer_pos, length1); ++ if (length1 < length) { ++ /* Wrap around and copy remaining length ++ * at beginning of buffer. ++ */ ++ length2 = length - length1; ++ memcpy(req->buf + length1, audio->buffer_start, ++ length2); ++ audio->buffer_pos = audio->buffer_start + length2; ++ } else { ++ audio->buffer_pos += length1; ++ if (audio->buffer_pos >= audio->buffer_end) ++ audio->buffer_pos = audio->buffer_start; ++ } ++ ++ req->length = length; ++ ret = usb_ep_queue(audio->in_ep, req, GFP_ATOMIC); ++ if (ret < 0) { ++ pr_err("usb_ep_queue failed ret: %d\n", ret); ++ audio_req_put(audio, req); ++ break; ++ } ++ ++ frames -= bytes_to_frames(runtime, length); ++ audio->frames_sent += bytes_to_frames(runtime, length); + } ++} + -+ if (EPOUT_EN(opts)) { -+ len += UAC_DT_INPUT_TERMINAL_SIZE + UAC_DT_OUTPUT_TERMINAL_SIZE; -+ if (EPOUT_FU(opts)) -+ len += UAC_DT_FEATURE_UNIT_SIZE(0); -+ iad_desc.bInterfaceCount++; -+ ac_header_desc.bInCollection++; ++static void audio_control_complete(struct usb_ep *ep, struct usb_request *req) ++{ ++ /* nothing to do here */ ++} ++ ++static void audio_data_complete(struct usb_ep *ep, struct usb_request *req) ++{ ++ struct audio_dev *audio = req->context; ++ ++ pr_debug("audio_data_complete req->status %d req->actual %d\n", ++ req->status, req->actual); ++ ++ audio_req_put(audio, req); ++ ++ if (!audio->buffer_start || req->status) ++ return; ++ ++ audio->period_offset += req->actual; ++ if (audio->period_offset >= audio->period) { ++ snd_pcm_period_elapsed(audio->substream); ++ audio->period_offset = 0; + } -+ ac_header_desc.bLength = -+ UAC_DT_AC_HEADER_SIZE(ac_header_desc.bInCollection); -+ ac_header_desc.wTotalLength = cpu_to_le16(len + ac_header_desc.bLength); ++ audio_send(audio); ++} ++ ++static int audio_set_endpoint_req(struct usb_function *f, ++ const struct usb_ctrlrequest *ctrl) ++{ ++ int value = -EOPNOTSUPP; ++ u16 ep = le16_to_cpu(ctrl->wIndex); ++ u16 len = le16_to_cpu(ctrl->wLength); ++ u16 w_value = le16_to_cpu(ctrl->wValue); ++ ++ pr_debug("bRequest 0x%x, w_value 0x%04x, len %d, endpoint %d\n", ++ ctrl->bRequest, w_value, len, ep); + -+ setup_headers(opts, f_audio_desc, USB_SPEED_HIGH); -+ setup_headers(opts, f_ss_audio_desc, USB_SPEED_SUPER); ++ switch (ctrl->bRequest) { ++ case UAC_SET_CUR: ++ case UAC_SET_MIN: ++ case UAC_SET_MAX: ++ case UAC_SET_RES: ++ value = len; ++ break; ++ default: ++ break; ++ } ++ ++ return value; +} + -+static int set_ep_max_packet_size(const struct f_uac_opts *opts, -+ struct usb_endpoint_descriptor *ep_desc, -+ enum usb_device_speed speed, bool is_playback) ++static int audio_get_endpoint_req(struct usb_function *f, ++ const struct usb_ctrlrequest *ctrl) +{ -+ int chmask, srate = 0, ssize; -+ u16 max_size_bw, max_size_ep; -+ unsigned int factor; -+ int i; ++ struct usb_composite_dev *cdev = f->config->cdev; ++ int value = -EOPNOTSUPP; ++ u8 ep = ((le16_to_cpu(ctrl->wIndex) >> 8) & 0xFF); ++ u16 len = le16_to_cpu(ctrl->wLength); ++ u16 w_value = le16_to_cpu(ctrl->wValue); ++ u8 *buf = cdev->req->buf; ++ ++ pr_debug("bRequest 0x%x, w_value 0x%04x, len %d, endpoint %d\n", ++ ctrl->bRequest, w_value, len, ep); ++ ++ if (w_value == UAC_EP_CS_ATTR_SAMPLE_RATE << 8) { ++ switch (ctrl->bRequest) { ++ case UAC_GET_CUR: ++ case UAC_GET_MIN: ++ case UAC_GET_MAX: ++ case UAC_GET_RES: ++ /* return our sample rate */ ++ buf[0] = (u8)SAMPLE_RATE; ++ buf[1] = (u8)(SAMPLE_RATE >> 8); ++ buf[2] = (u8)(SAMPLE_RATE >> 16); ++ value = 3; ++ break; ++ default: ++ break; ++ } ++ } + -+ switch (speed) { -+ case USB_SPEED_FULL: -+ max_size_ep = 1023; -+ factor = 1000; ++ return value; ++} ++ ++static int ++audio_setup(struct usb_function *f, const struct usb_ctrlrequest *ctrl) ++{ ++ struct usb_composite_dev *cdev = f->config->cdev; ++ struct usb_request *req = cdev->req; ++ int value = -EOPNOTSUPP; ++ u16 w_index = le16_to_cpu(ctrl->wIndex); ++ u16 w_value = le16_to_cpu(ctrl->wValue); ++ u16 w_length = le16_to_cpu(ctrl->wLength); ++ ++ /* composite driver infrastructure handles everything; interface ++ * activation uses set_alt(). ++ */ ++ switch (ctrl->bRequestType) { ++ case USB_DIR_OUT | USB_TYPE_CLASS | USB_RECIP_ENDPOINT: ++ value = audio_set_endpoint_req(f, ctrl); + break; + -+ case USB_SPEED_HIGH: -+ fallthrough; -+ case USB_SPEED_SUPER: -+ max_size_ep = 1024; -+ factor = 8000; ++ case USB_DIR_IN | USB_TYPE_CLASS | USB_RECIP_ENDPOINT: ++ value = audio_get_endpoint_req(f, ctrl); + break; ++ } + -+ default: - return -EINVAL; - } - -+ if (is_playback) { -+ chmask = opts->p_chmask; -+ for (i = 0; i < UAC_MAX_RATES; i++) { -+ if (opts->p_srate[i] == 0) -+ break; -+ if (opts->p_srate[i] > srate) -+ srate = opts->p_srate[i]; -+ } -+ ssize = opts->p_ssize; -+ } else { -+ chmask = opts->c_chmask; -+ for (i = 0; i < UAC_MAX_RATES; i++) { -+ if (opts->c_srate[i] == 0) -+ break; -+ if (opts->c_srate[i] > srate) -+ srate = opts->c_srate[i]; -+ } -+ ssize = opts->c_ssize; ++ /* respond with data transfer or status phase? */ ++ if (value >= 0) { ++ pr_debug("audio req%02x.%02x v%04x i%04x l%d\n", ++ ctrl->bRequestType, ctrl->bRequest, ++ w_value, w_index, w_length); ++ req->zero = 0; ++ req->length = value; ++ req->complete = audio_control_complete; ++ value = usb_ep_queue(cdev->gadget->ep0, req, GFP_ATOMIC); ++ if (value < 0) ++ pr_err("audio response on err %d\n", value); + } + -+ max_size_bw = num_channels(chmask) * ssize * -+ ((srate / (factor / (1 << (ep_desc->bInterval - 1)))) + 1); -+ ep_desc->wMaxPacketSize = cpu_to_le16(min_t(u16, max_size_bw, -+ max_size_ep)); ++ /* device either stalls (value < 0) or reports success */ ++ return value; ++} + - return 0; - } - -@@ -548,33 +972,32 @@ static int f_audio_bind(struct usb_configuration *c, struct usb_function *f) - { - struct usb_composite_dev *cdev = c->cdev; - struct usb_gadget *gadget = cdev->gadget; -- struct device *dev = &gadget->dev; -- struct f_uac1 *uac1 = func_to_uac1(f); -+ struct f_uac *uac1 = func_to_uac(f); - struct g_audio *audio = func_to_g_audio(f); -- struct f_uac1_opts *audio_opts; -+ struct f_uac_opts *audio_opts; - struct usb_ep *ep = NULL; - struct usb_string *us; -- u8 *sam_freq; -- int rate; -+ struct device *dev = &gadget->dev; - int status; -+ int idx, i; - -- status = f_audio_validate_opts(audio, dev); -- if (status) -- return status; -- -- audio_opts = container_of(f->fi, struct f_uac1_opts, func_inst); -+ audio_opts = container_of(f->fi, struct f_uac_opts, func_inst); - - us = usb_gstrings_attach(cdev, uac1_strings, ARRAY_SIZE(strings_uac1)); - if (IS_ERR(us)) - return PTR_ERR(us); -+ -+ iad_desc.iFunction = us[STR_ASSOC].id; - ac_interface_desc.iInterface = us[STR_AC_IF].id; - usb_out_it_desc.iTerminal = us[STR_USB_OUT_IT].id; - usb_out_it_desc.iChannelNames = us[STR_USB_OUT_IT_CH_NAMES].id; -+ io_out_ot_fu_desc.iFeature = us[STR_IO_OUT_OT_FU].id; - io_out_ot_desc.iTerminal = us[STR_IO_OUT_OT].id; - as_out_interface_alt_0_desc.iInterface = us[STR_AS_OUT_IF_ALT0].id; - as_out_interface_alt_1_desc.iInterface = us[STR_AS_OUT_IF_ALT1].id; - io_in_it_desc.iTerminal = us[STR_IO_IN_IT].id; - io_in_it_desc.iChannelNames = us[STR_IO_IN_IT_CH_NAMES].id; -+ usb_in_ot_fu_desc.iFeature = us[STR_USB_IN_OT_FU].id; - usb_in_ot_desc.iTerminal = us[STR_USB_IN_OT].id; - as_in_interface_alt_0_desc.iInterface = us[STR_AS_IN_IF_ALT0].id; - as_in_interface_alt_1_desc.iInterface = us[STR_AS_IN_IF_ALT1].id; -@@ -592,69 +1015,141 @@ static int f_audio_bind(struct usb_configuration *c, struct usb_function *f) - as_in_type_i_desc.bBitResolution = audio_opts->p_ssize * 8; - - /* Set sample rates */ -- rate = audio_opts->c_srate; -- sam_freq = as_out_type_i_desc.tSamFreq[0]; -- memcpy(sam_freq, &rate, 3); -- rate = audio_opts->p_srate; -- sam_freq = as_in_type_i_desc.tSamFreq[0]; -- memcpy(sam_freq, &rate, 3); -+ for (i = 0, idx = 0; i < UAC_MAX_RATES; i++) { -+ if (audio_opts->c_srate[i] == 0) -+ break; -+ memcpy(as_out_type_i_desc.tSamFreq[idx++], -+ &audio_opts->c_srate[i], 3); -+ } -+ -+ /* -+ * Calculate wMaxPacketSize according to audio bandwidth. -+ * Set the max packet with USB_SPEED_HIGH by default to -+ * be compatible with larger bandwidth requirements for -+ * high speed mode. -+ */ -+ status = set_ep_max_packet_size(audio_opts, &as_out_ep_desc, -+ USB_SPEED_HIGH, false); -+ if (status < 0) { -+ dev_err(dev, "%s:%d Error!\n", __func__, __LINE__); -+ goto fail; ++static int audio_set_alt(struct usb_function *f, unsigned intf, unsigned alt) ++{ ++ struct audio_dev *audio = func_to_audio(f); ++ struct usb_composite_dev *cdev = f->config->cdev; ++ int ret; ++ ++ pr_debug("audio_set_alt intf %d, alt %d\n", intf, alt); ++ ++ ret = config_ep_by_speed(cdev->gadget, f, audio->in_ep); ++ if (ret) ++ return ret; ++ ++ usb_ep_enable(audio->in_ep); ++ return 0; ++} ++ ++static void audio_disable(struct usb_function *f) ++{ ++ struct audio_dev *audio = func_to_audio(f); ++ ++ pr_debug("audio_disable\n"); ++ usb_ep_disable(audio->in_ep); ++} ++ ++static void audio_free_func(struct usb_function *f) ++{ ++ /* no-op */ ++} ++ ++/*-------------------------------------------------------------------------*/ ++ ++static void audio_build_desc(struct audio_dev *audio) ++{ ++ u8 *sam_freq; ++ int rate; ++ ++ /* Set channel numbers */ ++ input_terminal_desc.bNrChannels = 2; ++ as_type_i_desc.bNrChannels = 2; ++ ++ /* Set sample rates */ ++ rate = SAMPLE_RATE; ++ sam_freq = as_type_i_desc.tSamFreq[0]; ++ memcpy(sam_freq, &rate, 3); ++} ++ ++ ++static int snd_card_setup(struct usb_configuration *c, ++ struct audio_source_config *config); ++static struct audio_source_instance *to_fi_audio_source( ++ const struct usb_function_instance *fi); ++ ++ ++/* audio function driver setup/binding */ ++static int ++audio_bind(struct usb_configuration *c, struct usb_function *f) ++{ ++ struct usb_composite_dev *cdev = c->cdev; ++ struct audio_dev *audio = func_to_audio(f); ++ int status; ++ struct usb_ep *ep; ++ struct usb_request *req; ++ int i; ++ int err; ++ ++ if (IS_ENABLED(CONFIG_USB_CONFIGFS)) { ++ struct audio_source_instance *fi_audio = ++ to_fi_audio_source(f->fi); ++ struct audio_source_config *config = ++ fi_audio->config; ++ ++ err = snd_card_setup(c, config); ++ if (err) ++ return err; + } + -+ status = set_ep_max_packet_size(audio_opts, &as_in_ep_desc, -+ USB_SPEED_HIGH, true); -+ if (status < 0) { -+ dev_err(dev, "%s:%d Error!\n", __func__, __LINE__); ++ audio_build_desc(audio); ++ ++ /* allocate instance-specific interface IDs, and patch descriptors */ ++ status = usb_interface_id(c, f); ++ if (status < 0) + goto fail; -+ } ++ ac_interface_desc.bInterfaceNumber = status; + -+ status = set_ep_max_packet_size(audio_opts, &ss_out_ep_desc, -+ USB_SPEED_SUPER, false); -+ if (status < 0) { -+ dev_err(dev, "%s:%d Error!\n", __func__, __LINE__); ++ /* AUDIO_AC_INTERFACE */ ++ ac_header_desc.baInterfaceNr[0] = status; ++ ++ status = usb_interface_id(c, f); ++ if (status < 0) + goto fail; -+ } ++ as_interface_alt_0_desc.bInterfaceNumber = status; ++ as_interface_alt_1_desc.bInterfaceNumber = status; + -+ ss_out_ep_desc_comp.wBytesPerInterval = ss_out_ep_desc.wMaxPacketSize; ++ /* AUDIO_AS_INTERFACE */ ++ ac_header_desc.baInterfaceNr[1] = status; + -+ status = set_ep_max_packet_size(audio_opts, &ss_in_ep_desc, -+ USB_SPEED_SUPER, true); -+ if (status < 0) { -+ dev_err(dev, "%s:%d Error!\n", __func__, __LINE__); ++ status = -ENODEV; ++ ++ /* allocate our endpoint */ ++ ep = usb_ep_autoconfig(cdev->gadget, &fs_as_in_ep_desc); ++ if (!ep) + goto fail; ++ audio->in_ep = ep; ++ ep->driver_data = audio; /* claim */ ++ ++ if (gadget_is_dualspeed(c->cdev->gadget)) ++ hs_as_in_ep_desc.bEndpointAddress = ++ fs_as_in_ep_desc.bEndpointAddress; ++ ++ f->fs_descriptors = fs_audio_desc; ++ f->hs_descriptors = hs_audio_desc; ++ ++ for (i = 0, status = 0; i < IN_EP_REQ_COUNT && status == 0; i++) { ++ req = audio_request_new(ep, IN_EP_MAX_PACKET_SIZE); ++ if (req) { ++ req->context = audio; ++ req->complete = audio_data_complete; ++ audio_req_put(audio, req); ++ } else ++ status = -ENOMEM; + } + -+ ss_in_ep_desc_comp.wBytesPerInterval = ss_in_ep_desc.wMaxPacketSize; ++fail: ++ return status; ++} ++ ++static void ++audio_unbind(struct usb_configuration *c, struct usb_function *f) ++{ ++ struct audio_dev *audio = func_to_audio(f); ++ struct usb_request *req; + -+ as_out_type_i_desc.bLength = UAC_FORMAT_TYPE_I_DISCRETE_DESC_SIZE(idx); -+ as_out_type_i_desc.bSamFreqType = idx; ++ while ((req = audio_req_get(audio))) ++ audio_request_free(req, audio->in_ep); + -+ for (i = 0, idx = 0; i < UAC_MAX_RATES; i++) { -+ if (audio_opts->p_srate[i] == 0) -+ break; -+ memcpy(as_in_type_i_desc.tSamFreq[idx++], -+ &audio_opts->p_srate[i], 3); ++ snd_card_free_when_closed(audio->card); ++ audio->card = NULL; ++ audio->pcm = NULL; ++ audio->substream = NULL; ++ audio->in_ep = NULL; ++ ++ if (IS_ENABLED(CONFIG_USB_CONFIGFS)) { ++ struct audio_source_instance *fi_audio = ++ to_fi_audio_source(f->fi); ++ struct audio_source_config *config = ++ fi_audio->config; ++ ++ config->card = -1; ++ config->device = -1; + } -+ as_in_type_i_desc.bLength = UAC_FORMAT_TYPE_I_DISCRETE_DESC_SIZE(idx); -+ as_in_type_i_desc.bSamFreqType = idx; - - /* allocate instance-specific interface IDs, and patch descriptors */ - status = usb_interface_id(c, f); - if (status < 0) - goto fail; -+ iad_desc.bFirstInterface = status; - ac_interface_desc.bInterfaceNumber = status; - uac1->ac_intf = status; - uac1->ac_alt = 0; -+ ac_header_desc.baInterfaceNr[0] = ++status; -+ ac_header_desc.baInterfaceNr[1] = ++status; -+ -+ if (EPOUT_EN(audio_opts)) { -+ status = usb_interface_id(c, f); -+ if (status < 0) -+ goto fail; -+ as_out_interface_alt_0_desc.bInterfaceNumber = status; -+ as_out_interface_alt_1_desc.bInterfaceNumber = status; -+ uac1->as_out_intf = status; -+ uac1->as_out_alt = 0; ++} ++ ++static void audio_pcm_playback_start(struct audio_dev *audio) ++{ ++ audio->start_time = ktime_get(); ++ audio->frames_sent = 0; ++ audio_send(audio); ++} ++ ++static void audio_pcm_playback_stop(struct audio_dev *audio) ++{ ++ unsigned long flags; ++ ++ spin_lock_irqsave(&audio->lock, flags); ++ audio->buffer_start = 0; ++ audio->buffer_end = 0; ++ audio->buffer_pos = 0; ++ spin_unlock_irqrestore(&audio->lock, flags); ++} ++ ++static int audio_pcm_open(struct snd_pcm_substream *substream) ++{ ++ struct snd_pcm_runtime *runtime = substream->runtime; ++ struct audio_dev *audio = substream->private_data; ++ ++ runtime->private_data = audio; ++ runtime->hw = audio_hw_info; ++ snd_pcm_limit_hw_rates(runtime); ++ runtime->hw.channels_max = 2; ++ ++ audio->substream = substream; ++ ++ /* Add the QoS request and set the latency to 0 */ ++ cpu_latency_qos_add_request(&audio->pm_qos, 0); ++ ++ return 0; ++} ++ ++static int audio_pcm_close(struct snd_pcm_substream *substream) ++{ ++ struct audio_dev *audio = substream->private_data; ++ unsigned long flags; ++ ++ spin_lock_irqsave(&audio->lock, flags); ++ ++ /* Remove the QoS request */ ++ cpu_latency_qos_remove_request(&audio->pm_qos); ++ ++ audio->substream = NULL; ++ spin_unlock_irqrestore(&audio->lock, flags); ++ ++ return 0; ++} ++ ++static int audio_pcm_hw_params(struct snd_pcm_substream *substream, ++ struct snd_pcm_hw_params *params) ++{ ++ unsigned int channels = params_channels(params); ++ unsigned int rate = params_rate(params); ++ ++ if (rate != SAMPLE_RATE) ++ return -EINVAL; ++ if (channels != 2) ++ return -EINVAL; ++ ++ return snd_pcm_lib_alloc_vmalloc_buffer(substream, ++ params_buffer_bytes(params)); ++} ++ ++static int audio_pcm_hw_free(struct snd_pcm_substream *substream) ++{ ++ return snd_pcm_lib_free_vmalloc_buffer(substream); ++} ++ ++static int audio_pcm_prepare(struct snd_pcm_substream *substream) ++{ ++ struct snd_pcm_runtime *runtime = substream->runtime; ++ struct audio_dev *audio = runtime->private_data; ++ ++ audio->period = snd_pcm_lib_period_bytes(substream); ++ audio->period_offset = 0; ++ audio->buffer_start = runtime->dma_area; ++ audio->buffer_end = audio->buffer_start ++ + snd_pcm_lib_buffer_bytes(substream); ++ audio->buffer_pos = audio->buffer_start; ++ ++ return 0; ++} ++ ++static snd_pcm_uframes_t audio_pcm_pointer(struct snd_pcm_substream *substream) ++{ ++ struct snd_pcm_runtime *runtime = substream->runtime; ++ struct audio_dev *audio = runtime->private_data; ++ ssize_t bytes = audio->buffer_pos - audio->buffer_start; ++ ++ /* return offset of next frame to fill in our buffer */ ++ return bytes_to_frames(runtime, bytes); ++} ++ ++static int audio_pcm_playback_trigger(struct snd_pcm_substream *substream, ++ int cmd) ++{ ++ struct audio_dev *audio = substream->runtime->private_data; ++ int ret = 0; ++ ++ switch (cmd) { ++ case SNDRV_PCM_TRIGGER_START: ++ case SNDRV_PCM_TRIGGER_RESUME: ++ audio_pcm_playback_start(audio); ++ break; ++ ++ case SNDRV_PCM_TRIGGER_STOP: ++ case SNDRV_PCM_TRIGGER_SUSPEND: ++ audio_pcm_playback_stop(audio); ++ break; ++ ++ default: ++ ret = -EINVAL; + } - -- status = usb_interface_id(c, f); -- if (status < 0) -- goto fail; -- as_out_interface_alt_0_desc.bInterfaceNumber = status; -- as_out_interface_alt_1_desc.bInterfaceNumber = status; -- ac_header_desc.baInterfaceNr[0] = status; -- uac1->as_out_intf = status; -- uac1->as_out_alt = 0; -- -- status = usb_interface_id(c, f); -- if (status < 0) -- goto fail; -- as_in_interface_alt_0_desc.bInterfaceNumber = status; -- as_in_interface_alt_1_desc.bInterfaceNumber = status; -- ac_header_desc.baInterfaceNr[1] = status; -- uac1->as_in_intf = status; -- uac1->as_in_alt = 0; -+ if (EPIN_EN(audio_opts)) { -+ status = usb_interface_id(c, f); -+ if (status < 0) -+ goto fail; -+ as_in_interface_alt_0_desc.bInterfaceNumber = status; -+ as_in_interface_alt_1_desc.bInterfaceNumber = status; -+ uac1->as_in_intf = status; -+ uac1->as_in_alt = 0; ++ ++ return ret; ++} ++ ++static struct audio_dev _audio_dev = { ++ .func = { ++ .name = "audio_source", ++ .bind = audio_bind, ++ .unbind = audio_unbind, ++ .set_alt = audio_set_alt, ++ .setup = audio_setup, ++ .disable = audio_disable, ++ .free_func = audio_free_func, ++ }, ++ .lock = __SPIN_LOCK_UNLOCKED(_audio_dev.lock), ++ .idle_reqs = LIST_HEAD_INIT(_audio_dev.idle_reqs), ++}; ++ ++static struct snd_pcm_ops audio_playback_ops = { ++ .open = audio_pcm_open, ++ .close = audio_pcm_close, ++ .ioctl = snd_pcm_lib_ioctl, ++ .hw_params = audio_pcm_hw_params, ++ .hw_free = audio_pcm_hw_free, ++ .prepare = audio_pcm_prepare, ++ .trigger = audio_pcm_playback_trigger, ++ .pointer = audio_pcm_pointer, ++}; ++ ++int audio_source_bind_config(struct usb_configuration *c, ++ struct audio_source_config *config) ++{ ++ struct audio_dev *audio; ++ int err; ++ ++ config->card = -1; ++ config->device = -1; ++ ++ audio = &_audio_dev; ++ ++ err = snd_card_setup(c, config); ++ if (err) ++ return err; ++ ++ err = usb_add_function(c, &audio->func); ++ if (err) ++ goto add_fail; ++ ++ return 0; ++ ++add_fail: ++ snd_card_free(audio->card); ++ return err; ++} ++ ++static int snd_card_setup(struct usb_configuration *c, ++ struct audio_source_config *config) ++{ ++ struct audio_dev *audio; ++ struct snd_card *card; ++ struct snd_pcm *pcm; ++ int err; ++ ++ audio = &_audio_dev; ++ ++ err = snd_card_new(&c->cdev->gadget->dev, ++ SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1, ++ THIS_MODULE, 0, &card); ++ if (err) ++ return err; ++ ++ err = snd_pcm_new(card, "USB audio source", 0, 1, 0, &pcm); ++ if (err) ++ goto pcm_fail; ++ ++ pcm->private_data = audio; ++ pcm->info_flags = 0; ++ audio->pcm = pcm; ++ ++ strlcpy(pcm->name, "USB gadget audio", sizeof(pcm->name)); ++ ++ snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_PLAYBACK, &audio_playback_ops); ++ snd_pcm_lib_preallocate_pages_for_all(pcm, SNDRV_DMA_TYPE_DEV, ++ NULL, 0, 64 * 1024); ++ ++ strlcpy(card->driver, "audio_source", sizeof(card->driver)); ++ strlcpy(card->shortname, card->driver, sizeof(card->shortname)); ++ strlcpy(card->longname, "USB accessory audio source", ++ sizeof(card->longname)); ++ ++ err = snd_card_register(card); ++ if (err) ++ goto register_fail; ++ ++ config->card = pcm->card->number; ++ config->device = pcm->device; ++ audio->card = card; ++ return 0; ++ ++register_fail: ++pcm_fail: ++ snd_card_free(audio->card); ++ return err; ++} ++ ++static struct audio_source_instance *to_audio_source_instance( ++ struct config_item *item) ++{ ++ return container_of(to_config_group(item), struct audio_source_instance, ++ func_inst.group); ++} ++ ++static struct audio_source_instance *to_fi_audio_source( ++ const struct usb_function_instance *fi) ++{ ++ return container_of(fi, struct audio_source_instance, func_inst); ++} ++ ++static void audio_source_attr_release(struct config_item *item) ++{ ++ struct audio_source_instance *fi_audio = to_audio_source_instance(item); ++ ++ usb_put_function_instance(&fi_audio->func_inst); ++} ++ ++static int audio_source_set_inst_name(struct usb_function_instance *fi, ++ const char *name) ++{ ++ struct audio_source_instance *fi_audio; ++ char *ptr; ++ int name_len; ++ ++ name_len = strlen(name) + 1; ++ if (name_len > MAX_INST_NAME_LEN) ++ return -ENAMETOOLONG; ++ ++ ptr = kstrndup(name, name_len, GFP_KERNEL); ++ if (!ptr) ++ return -ENOMEM; ++ ++ fi_audio = to_fi_audio_source(fi); ++ fi_audio->name = ptr; ++ ++ return 0; ++} ++ ++static void audio_source_free_inst(struct usb_function_instance *fi) ++{ ++ struct audio_source_instance *fi_audio; ++ ++ fi_audio = to_fi_audio_source(fi); ++ device_destroy(fi_audio->audio_device->class, ++ fi_audio->audio_device->devt); ++ kfree(fi_audio->name); ++ kfree(fi_audio->config); ++} ++ ++static ssize_t audio_source_pcm_show(struct device *dev, ++ struct device_attribute *attr, char *buf) ++{ ++ struct audio_source_instance *fi_audio = dev_get_drvdata(dev); ++ struct audio_source_config *config = fi_audio->config; ++ ++ /* print PCM card and device numbers */ ++ return sprintf(buf, "%d %d\n", config->card, config->device); ++} ++ ++struct device *create_function_device(char *name); ++ ++static struct usb_function_instance *audio_source_alloc_inst(void) ++{ ++ struct audio_source_instance *fi_audio; ++ struct device_attribute **attrs; ++ struct device_attribute *attr; ++ struct device *dev; ++ void *err_ptr; ++ int err = 0; ++ ++ fi_audio = kzalloc(sizeof(*fi_audio), GFP_KERNEL); ++ if (!fi_audio) ++ return ERR_PTR(-ENOMEM); ++ ++ fi_audio->func_inst.set_inst_name = audio_source_set_inst_name; ++ fi_audio->func_inst.free_func_inst = audio_source_free_inst; ++ ++ fi_audio->config = kzalloc(sizeof(struct audio_source_config), ++ GFP_KERNEL); ++ if (!fi_audio->config) { ++ err_ptr = ERR_PTR(-ENOMEM); ++ goto fail_audio; ++ } ++ ++ config_group_init_type_name(&fi_audio->func_inst.group, "", ++ &audio_source_func_type); ++ dev = create_function_device("f_audio_source"); ++ ++ if (IS_ERR(dev)) { ++ err_ptr = dev; ++ goto fail_audio_config; + } ++ ++ fi_audio->config->card = -1; ++ fi_audio->config->device = -1; ++ fi_audio->audio_device = dev; ++ ++ attrs = audio_source_function_attributes; ++ if (attrs) { ++ while ((attr = *attrs++) && !err) ++ err = device_create_file(dev, attr); ++ if (err) { ++ err_ptr = ERR_PTR(-EINVAL); ++ goto fail_device; ++ } ++ } ++ ++ dev_set_drvdata(dev, fi_audio); ++ _audio_dev.config = fi_audio->config; ++ ++ return &fi_audio->func_inst; ++ ++fail_device: ++ device_destroy(dev->class, dev->devt); ++fail_audio_config: ++ kfree(fi_audio->config); ++fail_audio: ++ kfree(fi_audio); ++ return err_ptr; ++ ++} ++ ++static struct usb_function *audio_source_alloc(struct usb_function_instance *fi) ++{ ++ return &_audio_dev.func; ++} ++ ++DECLARE_USB_FUNCTION_INIT(audio_source, audio_source_alloc_inst, ++ audio_source_alloc); ++MODULE_LICENSE("GPL"); +diff --git a/drivers/usb/gadget/function/f_fs.c b/drivers/usb/gadget/function/f_fs.c +old mode 100644 +new mode 100755 +index 725e35167..51f98d00d +--- a/drivers/usb/gadget/function/f_fs.c ++++ b/drivers/usb/gadget/function/f_fs.c +@@ -71,7 +71,7 @@ struct ffs_function { + struct ffs_data *ffs; - audio->gadget = gadget; + struct ffs_ep *eps; +- u8 eps_revmap[16]; ++ u8 eps_revmap[32]; + short *interfaces_nums; - status = -ENODEV; + struct usb_function function; +@@ -614,7 +614,7 @@ static int ffs_ep0_open(struct inode *inode, struct file *file) + file->private_data = ffs; + ffs_data_opened(ffs); - /* allocate instance-specific endpoints */ -- ep = usb_ep_autoconfig(cdev->gadget, &as_out_ep_desc); -- if (!ep) -- goto fail; -- audio->out_ep = ep; -- audio->out_ep->desc = &as_out_ep_desc; -+ if (EPOUT_EN(audio_opts)) { -+ ep = usb_ep_autoconfig(cdev->gadget, &as_out_ep_desc); -+ if (!ep) -+ goto fail; -+ audio->out_ep = ep; -+ audio->out_ep->desc = &as_out_ep_desc; -+ } +- return 0; ++ return stream_open(inode, file); + } -- ep = usb_ep_autoconfig(cdev->gadget, &as_in_ep_desc); -- if (!ep) -- goto fail; -- audio->in_ep = ep; -- audio->in_ep->desc = &as_in_ep_desc; -+ if (EPIN_EN(audio_opts)) { -+ ep = usb_ep_autoconfig(cdev->gadget, &as_in_ep_desc); -+ if (!ep) -+ goto fail; -+ ep->maxpacket = usb_endpoint_maxp(&as_in_ep_desc); -+ audio->in_ep = ep; -+ audio->in_ep->desc = &as_in_ep_desc; -+ } -+ -+ ss_out_ep_desc.bEndpointAddress = as_out_ep_desc.bEndpointAddress; -+ ss_in_ep_desc.bEndpointAddress = as_in_ep_desc.bEndpointAddress; + static int ffs_ep0_release(struct inode *inode, struct file *file) +@@ -1152,7 +1152,7 @@ ffs_epfile_open(struct inode *inode, struct file *file) + file->private_data = epfile; + ffs_data_opened(epfile->ffs); -+ setup_descriptor(audio_opts); - /* copy descriptors, and track endpoint copies */ -- status = usb_assign_descriptors(f, f_audio_desc, f_audio_desc, NULL, -- NULL); -+ status = usb_assign_descriptors(f, f_audio_desc, f_audio_desc, -+ f_ss_audio_desc, f_ss_audio_desc); - if (status) - goto fail; +- return 0; ++ return stream_open(inode, file); + } - audio->out_ep_maxpsize = le16_to_cpu(as_out_ep_desc.wMaxPacketSize); - audio->in_ep_maxpsize = le16_to_cpu(as_in_ep_desc.wMaxPacketSize); -+ audio->out_ep_maxpsize = max_t(u16, audio->out_ep_maxpsize, -+ le16_to_cpu(ss_out_ep_desc.wMaxPacketSize)); -+ audio->in_ep_maxpsize = max_t(u16, audio->in_ep_maxpsize, -+ le16_to_cpu(ss_in_ep_desc.wMaxPacketSize)); - audio->params.c_chmask = audio_opts->c_chmask; -- audio->params.c_srate = audio_opts->c_srate; -+ memcpy(audio->params.c_srate, audio_opts->c_srate, -+ sizeof(audio->params.c_srate)); -+ audio->params.c_srate_active = audio_opts->c_srate_active; - audio->params.c_ssize = audio_opts->c_ssize; - audio->params.p_chmask = audio_opts->p_chmask; -- audio->params.p_srate = audio_opts->p_srate; -+ memcpy(audio->params.p_srate, audio_opts->p_srate, -+ sizeof(audio->params.p_srate)); -+ audio->params.p_srate_active = audio_opts->p_srate_active; - audio->params.p_ssize = audio_opts->p_ssize; - audio->params.req_number = audio_opts->req_number; - -@@ -672,82 +1167,69 @@ static int f_audio_bind(struct usb_configuration *c, struct usb_function *f) + static int ffs_aio_cancel(struct kiocb *kiocb) +@@ -2796,7 +2796,7 @@ static int __ffs_func_bind_do_descs(enum ffs_entity_type type, u8 *valuep, + struct ffs_function *func = priv; + struct ffs_ep *ffs_ep; + unsigned ep_desc_id; +- int idx; ++ int idx, ep_num; + static const char *speed_names[] = { "full", "high", "super" }; - /*-------------------------------------------------------------------------*/ + if (type != FFS_DESCRIPTOR) +@@ -2869,8 +2869,9 @@ static int __ffs_func_bind_do_descs(enum ffs_entity_type type, u8 *valuep, --static inline struct f_uac1_opts *to_f_uac1_opts(struct config_item *item) -+/* Todo: add more control selecotor dynamically */ -+static int control_selector_init(struct f_uac *uac1) + ffs_ep->ep = ep; + ffs_ep->req = req; +- func->eps_revmap[ds->bEndpointAddress & +- USB_ENDPOINT_NUMBER_MASK] = idx + 1; ++ ep_num = ((ds->bEndpointAddress & USB_ENDPOINT_DIR_MASK) >> 3) | ++ (ds->bEndpointAddress & USB_ENDPOINT_NUMBER_MASK); ++ func->eps_revmap[ep_num] = idx + 1; + /* + * If we use virtual address mapping, we restore + * original bEndpointAddress value. +@@ -3405,7 +3406,10 @@ static void ffs_func_resume(struct usb_function *f) + + static int ffs_func_revmap_ep(struct ffs_function *func, u8 num) { -- return container_of(to_config_group(item), struct f_uac1_opts, -- func_inst.group); --} -+ INIT_LIST_HEAD(&uac1->cs); +- num = func->eps_revmap[num & USB_ENDPOINT_NUMBER_MASK]; ++ int ep_num = ((num & USB_ENDPOINT_DIR_MASK) >> 3) | ++ (num & USB_ENDPOINT_NUMBER_MASK); ++ ++ num = func->eps_revmap[ep_num]; + return num ? num : -EDOM; + } --static void f_uac1_attr_release(struct config_item *item) --{ -- struct f_uac1_opts *opts = to_f_uac1_opts(item); -+ /* playback feature unit */ -+ list_add(&p_feature_unit.list, &uac1->cs); +diff --git a/drivers/usb/gadget/function/f_mass_storage.c b/drivers/usb/gadget/function/f_mass_storage.c +old mode 100644 +new mode 100755 +index 950c9435b..73a28f8a3 +--- a/drivers/usb/gadget/function/f_mass_storage.c ++++ b/drivers/usb/gadget/function/f_mass_storage.c +@@ -2301,6 +2301,16 @@ static void fsg_disable(struct usb_function *f) + { + struct fsg_dev *fsg = fsg_from_func(f); + ++ /* Disable the endpoints */ ++ if (fsg->bulk_in_enabled) { ++ usb_ep_disable(fsg->bulk_in); ++ fsg->bulk_in_enabled = 0; ++ } ++ if (fsg->bulk_out_enabled) { ++ usb_ep_disable(fsg->bulk_out); ++ fsg->bulk_out_enabled = 0; ++ } + -+ INIT_LIST_HEAD(&p_feature_unit.control); -+ list_add(&p_mute_control.list, &p_feature_unit.control); -+ list_add(&p_volume_control.list, &p_feature_unit.control); + __raise_exception(fsg->common, FSG_STATE_CONFIG_CHANGE, NULL); + } + +diff --git a/drivers/usb/gadget/function/f_midi.c b/drivers/usb/gadget/function/f_midi.c +old mode 100644 +new mode 100755 +index 8fff995b8..566531bf6 +--- a/drivers/usb/gadget/function/f_midi.c ++++ b/drivers/usb/gadget/function/f_midi.c +@@ -1222,6 +1222,65 @@ static void f_midi_free_inst(struct usb_function_instance *f) + } + } + ++#ifdef CONFIG_USB_CONFIGFS_UEVENT ++extern struct device *create_function_device(char *name); ++static ssize_t alsa_show(struct device *dev, ++ struct device_attribute *attr, char *buf) ++{ ++ struct usb_function_instance *fi_midi = dev_get_drvdata(dev); ++ struct f_midi *midi; + -+ p_volume_control.data[UAC__CUR] = UAC_VOLUME_CUR; -+ p_volume_control.data[UAC__MIN] = UAC_VOLUME_MIN; -+ p_volume_control.data[UAC__MAX] = UAC_VOLUME_MAX; -+ p_volume_control.data[UAC__RES] = UAC_VOLUME_RES; ++ if (!fi_midi->f) ++ dev_warn(dev, "f_midi: function not set\n"); + -+ p_volume_control.context = &uac1->g_audio; -+ p_mute_control.context = &uac1->g_audio; ++ if (fi_midi && fi_midi->f) { ++ midi = func_to_midi(fi_midi->f); ++ if (midi->rmidi && midi->card && midi->rmidi->card) ++ return sprintf(buf, "%d %d\n", ++ midi->rmidi->card->number, midi->rmidi->device); ++ } + -+ /* capture feature unit */ -+ list_add(&c_feature_unit.list, &uac1->cs); ++ /* print PCM card and device numbers */ ++ return sprintf(buf, "%d %d\n", -1, -1); ++} + -+ INIT_LIST_HEAD(&c_feature_unit.control); -+ list_add(&c_mute_control.list, &c_feature_unit.control); -+ list_add(&c_volume_control.list, &c_feature_unit.control); ++static DEVICE_ATTR(alsa, S_IRUGO, alsa_show, NULL); + -+ c_volume_control.data[UAC__CUR] = UAC_VOLUME_CUR; -+ c_volume_control.data[UAC__MIN] = UAC_VOLUME_MIN; -+ c_volume_control.data[UAC__MAX] = UAC_VOLUME_MAX; -+ c_volume_control.data[UAC__RES] = UAC_VOLUME_RES; - -- usb_put_function_instance(&opts->func_inst); -+ c_volume_control.context = &uac1->g_audio; -+ c_mute_control.context = &uac1->g_audio; ++static struct device_attribute *alsa_function_attributes[] = { ++ &dev_attr_alsa, ++ NULL ++}; + ++static int create_alsa_device(struct usb_function_instance *fi) ++{ ++ struct device *dev; ++ struct device_attribute **attrs; ++ struct device_attribute *attr; ++ int err = 0; ++ ++ dev = create_function_device("f_midi"); ++ if (IS_ERR(dev)) ++ return PTR_ERR(dev); ++ ++ attrs = alsa_function_attributes; ++ if (attrs) { ++ while ((attr = *attrs++) && !err) ++ err = device_create_file(dev, attr); ++ if (err) { ++ device_destroy(dev->class, dev->devt); ++ return -EINVAL; ++ } ++ } ++ dev_set_drvdata(dev, fi); + return 0; - } ++} ++#else ++static int create_alsa_device(struct usb_function_instance *fi) ++{ ++ return 0; ++} ++#endif ++ + static struct usb_function_instance *f_midi_alloc_inst(void) + { + struct f_midi_opts *opts; +@@ -1240,6 +1299,11 @@ static struct usb_function_instance *f_midi_alloc_inst(void) + opts->out_ports = 1; + opts->refcnt = 1; - static struct configfs_item_operations f_uac1_item_ops = { -- .release = f_uac1_attr_release, --}; -- --#define UAC1_ATTRIBUTE(name) \ --static ssize_t f_uac1_opts_##name##_show( \ -- struct config_item *item, \ -- char *page) \ --{ \ -- struct f_uac1_opts *opts = to_f_uac1_opts(item); \ -- int result; \ -- \ -- mutex_lock(&opts->lock); \ -- result = sprintf(page, "%u\n", opts->name); \ -- mutex_unlock(&opts->lock); \ -- \ -- return result; \ --} \ -- \ --static ssize_t f_uac1_opts_##name##_store( \ -- struct config_item *item, \ -- const char *page, size_t len) \ --{ \ -- struct f_uac1_opts *opts = to_f_uac1_opts(item); \ -- int ret; \ -- u32 num; \ -- \ -- mutex_lock(&opts->lock); \ -- if (opts->refcnt) { \ -- ret = -EBUSY; \ -- goto end; \ -- } \ -- \ -- ret = kstrtou32(page, 0, &num); \ -- if (ret) \ -- goto end; \ -- \ -- opts->name = num; \ -- ret = len; \ -- \ --end: \ -- mutex_unlock(&opts->lock); \ -- return ret; \ --} \ -- \ --CONFIGFS_ATTR(f_uac1_opts_, name) -- --UAC1_ATTRIBUTE(c_chmask); --UAC1_ATTRIBUTE(c_srate); --UAC1_ATTRIBUTE(c_ssize); --UAC1_ATTRIBUTE(p_chmask); --UAC1_ATTRIBUTE(p_srate); --UAC1_ATTRIBUTE(p_ssize); --UAC1_ATTRIBUTE(req_number); -+ .release = f_uac_attr_release, -+}; -+ -+UAC_ATTRIBUTE(c_chmask); -+UAC_ATTRIBUTE(c_ssize); -+UAC_ATTRIBUTE(c_feature_unit); -+UAC_ATTRIBUTE(p_chmask); -+UAC_ATTRIBUTE(p_ssize); -+UAC_ATTRIBUTE(p_feature_unit); -+UAC_ATTRIBUTE(req_number); -+ -+UAC_RATE_ATTRIBUTE(p_srate); -+UAC_RATE_ATTRIBUTE(c_srate); - - static struct configfs_attribute *f_uac1_attrs[] = { -- &f_uac1_opts_attr_c_chmask, -- &f_uac1_opts_attr_c_srate, -- &f_uac1_opts_attr_c_ssize, -- &f_uac1_opts_attr_p_chmask, -- &f_uac1_opts_attr_p_srate, -- &f_uac1_opts_attr_p_ssize, -- &f_uac1_opts_attr_req_number, -+ &f_uac_opts_attr_c_chmask, -+ &f_uac_opts_attr_c_srate, -+ &f_uac_opts_attr_c_ssize, -+ &f_uac_opts_attr_c_feature_unit, -+ &f_uac_opts_attr_p_chmask, -+ &f_uac_opts_attr_p_srate, -+ &f_uac_opts_attr_p_ssize, -+ &f_uac_opts_attr_p_feature_unit, -+ &f_uac_opts_attr_req_number, - NULL, - }; ++ if (create_alsa_device(&opts->func_inst)) { ++ kfree(opts); ++ return ERR_PTR(-ENODEV); ++ } ++ + config_group_init_type_name(&opts->func_inst.group, "", + &midi_func_type); -@@ -759,15 +1241,15 @@ static const struct config_item_type f_uac1_func_type = { +@@ -1260,6 +1324,7 @@ static void f_midi_free(struct usb_function *f) + kfifo_free(&midi->in_req_fifo); + kfree(midi); + free = true; ++ opts->func_inst.f = NULL; + } + mutex_unlock(&opts->lock); - static void f_audio_free_inst(struct usb_function_instance *f) - { -- struct f_uac1_opts *opts; -+ struct f_uac_opts *opts; +@@ -1347,6 +1412,7 @@ static struct usb_function *f_midi_alloc(struct usb_function_instance *fi) + midi->func.disable = f_midi_disable; + midi->func.free_func = f_midi_free; -- opts = container_of(f, struct f_uac1_opts, func_inst); -+ opts = container_of(f, struct f_uac_opts, func_inst); - kfree(opts); - } ++ fi->f = &midi->func; + return &midi->func; - static struct usb_function_instance *f_audio_alloc_inst(void) - { -- struct f_uac1_opts *opts; -+ struct f_uac_opts *opts; + midi_free: +diff --git a/drivers/usb/gadget/function/f_printer.c b/drivers/usb/gadget/function/f_printer.c +old mode 100644 +new mode 100755 +index 236ecc968..61bbf27b5 +--- a/drivers/usb/gadget/function/f_printer.c ++++ b/drivers/usb/gadget/function/f_printer.c +@@ -51,6 +51,8 @@ + #define GET_PORT_STATUS 1 + #define SOFT_RESET 2 - opts = kzalloc(sizeof(*opts), GFP_KERNEL); - if (!opts) -@@ -779,23 +1261,27 @@ static struct usb_function_instance *f_audio_alloc_inst(void) - config_group_init_type_name(&opts->func_inst.group, "", - &f_uac1_func_type); - -- opts->c_chmask = UAC1_DEF_CCHMASK; -- opts->c_srate = UAC1_DEF_CSRATE; -- opts->c_ssize = UAC1_DEF_CSSIZE; -- opts->p_chmask = UAC1_DEF_PCHMASK; -- opts->p_srate = UAC1_DEF_PSRATE; -- opts->p_ssize = UAC1_DEF_PSSIZE; -- opts->req_number = UAC1_DEF_REQ_NUM; -+ opts->c_chmask = UAC_DEF_CCHMASK; -+ opts->c_srate[0] = UAC_DEF_CSRATE; -+ opts->c_srate_active = UAC_DEF_CSRATE; -+ opts->c_ssize = UAC_DEF_CSSIZE; -+ opts->c_feature_unit = UAC_DEF_CFU; -+ opts->p_chmask = UAC_DEF_PCHMASK; -+ opts->p_srate[0] = UAC_DEF_PSRATE; -+ opts->p_srate_active = UAC_DEF_PSRATE; -+ opts->p_ssize = UAC_DEF_PSSIZE; -+ opts->p_feature_unit = UAC_DEF_PFU; -+ opts->req_number = UAC_DEF_REQ_NUM; - return &opts->func_inst; - } ++#define DEFAULT_Q_LEN 10 /* same as legacy g_printer gadget */ ++ + static int major, minors; + static struct class *usb_gadget_class; + static DEFINE_IDA(printer_ida); +@@ -1365,6 +1367,9 @@ static struct usb_function_instance *gprinter_alloc_inst(void) + opts->func_inst.free_func_inst = gprinter_free_inst; + ret = &opts->func_inst; - static void f_audio_free(struct usb_function *f) - { - struct g_audio *audio; -- struct f_uac1_opts *opts; -+ struct f_uac_opts *opts; ++ /* Make sure q_len is initialized, otherwise the bound device can't support read/write! */ ++ opts->q_len = DEFAULT_Q_LEN; ++ + mutex_lock(&printer_ida_lock); - audio = func_to_g_audio(f); -- opts = container_of(f->fi, struct f_uac1_opts, func_inst); -+ opts = container_of(f->fi, struct f_uac_opts, func_inst); - kfree(audio); - mutex_lock(&opts->lock); - --opts->refcnt; -@@ -814,15 +1300,15 @@ static void f_audio_unbind(struct usb_configuration *c, struct usb_function *f) + if (ida_is_empty(&printer_ida)) { +diff --git a/drivers/usb/gadget/function/f_rndis.c b/drivers/usb/gadget/function/f_rndis.c +index ee95e8f5f..b550fcb23 100644 +--- a/drivers/usb/gadget/function/f_rndis.c ++++ b/drivers/usb/gadget/function/f_rndis.c +@@ -115,9 +115,9 @@ static struct usb_interface_descriptor rndis_control_intf = { + /* .bInterfaceNumber = DYNAMIC */ + /* status endpoint is optional; this could be patched later */ + .bNumEndpoints = 1, +- .bInterfaceClass = USB_CLASS_COMM, +- .bInterfaceSubClass = USB_CDC_SUBCLASS_ACM, +- .bInterfaceProtocol = USB_CDC_ACM_PROTO_VENDOR, ++ .bInterfaceClass = USB_CLASS_WIRELESS_CONTROLLER, ++ .bInterfaceSubClass = 1, ++ .bInterfaceProtocol = 3, + /* .iInterface = DYNAMIC */ + }; - static struct usb_function *f_audio_alloc(struct usb_function_instance *fi) - { -- struct f_uac1 *uac1; -- struct f_uac1_opts *opts; -+ struct f_uac *uac1; -+ struct f_uac_opts *opts; - - /* allocate and initialize one new instance */ - uac1 = kzalloc(sizeof(*uac1), GFP_KERNEL); - if (!uac1) - return ERR_PTR(-ENOMEM); +@@ -176,9 +176,9 @@ rndis_iad_descriptor = { -- opts = container_of(fi, struct f_uac1_opts, func_inst); -+ opts = container_of(fi, struct f_uac_opts, func_inst); - mutex_lock(&opts->lock); - ++opts->refcnt; - mutex_unlock(&opts->lock); -@@ -836,6 +1322,8 @@ static struct usb_function *f_audio_alloc(struct usb_function_instance *fi) - uac1->g_audio.func.disable = f_audio_disable; - uac1->g_audio.func.free_func = f_audio_free; + .bFirstInterface = 0, /* XXX, hardcoded */ + .bInterfaceCount = 2, // control + data +- .bFunctionClass = USB_CLASS_COMM, +- .bFunctionSubClass = USB_CDC_SUBCLASS_ETHERNET, +- .bFunctionProtocol = USB_CDC_PROTO_NONE, ++ .bFunctionClass = USB_CLASS_WIRELESS_CONTROLLER, ++ .bFunctionSubClass = 1, ++ .bFunctionProtocol = 3, + /* .iFunction = DYNAMIC */ + }; + +@@ -512,6 +512,20 @@ rndis_setup(struct usb_function *f, const struct usb_ctrlrequest *ctrl) + } + break; -+ control_selector_init(uac1); ++ case ((USB_DIR_OUT | USB_TYPE_CLASS | USB_RECIP_INTERFACE) << 8) ++ | USB_CDC_SET_ETHERNET_PACKET_FILTER: ++ /* ++ * see 6.2.30: no data, wIndex = interface, wValue = packet ++ * filter bitmap. However, we don't really set cdc_filter to ++ * wValue for rndis, because cdc_filter is not RNDIS-specific. ++ * Return value 0 to avoid usb controllers stall ep0. ++ */ ++ if (w_length != 0 || w_index != rndis->ctrl_id) ++ goto invalid; ++ DBG(cdev, "packet filter %02x\n", w_value); ++ value = 0; ++ break; + - return &uac1->g_audio.func; - } - + default: + invalid: + VDBG(cdev, "invalid control req%02x.%02x v%04x i%04x l%d\n", +diff --git a/drivers/usb/gadget/function/f_uac1.c b/drivers/usb/gadget/function/f_uac1.c +old mode 100644 +new mode 100755 diff --git a/drivers/usb/gadget/function/f_uac1_legacy.c b/drivers/usb/gadget/function/f_uac1_legacy.c -index e2d7f69128a0..1519ac654803 100644 +index e2d7f6912..1519ac654 100644 --- a/drivers/usb/gadget/function/f_uac1_legacy.c +++ b/drivers/usb/gadget/function/f_uac1_legacy.c @@ -670,6 +670,11 @@ static int f_audio_get_alt(struct usb_function *f, unsigned intf) @@ -1583014,235 +1587833,34 @@ index e2d7f69128a0..1519ac654803 100644 mutex_lock(&opts->lock); --opts->refcnt; diff --git a/drivers/usb/gadget/function/f_uac2.c b/drivers/usb/gadget/function/f_uac2.c -index dd960cea642f..e4429c8462c7 100644 +old mode 100644 +new mode 100755 +index dd960cea6..53cb6b263 --- a/drivers/usb/gadget/function/f_uac2.c +++ b/drivers/usb/gadget/function/f_uac2.c -@@ -5,6 +5,7 @@ - * Copyright (C) 2011 - * Yadwinder Singh (yadi.brar01@gmail.com) - * Jaswinder Singh (jaswinder.singh@linaro.org) -+ * Copyright (C) 2017 Julian Scheel - */ - - #include -@@ -12,10 +13,7 @@ - #include - - #include "u_audio.h" --#include "u_uac2.h" -- --/* UAC2 spec: 4.1 Audio Channel Cluster Descriptor */ --#define UAC2_CHANNEL_MASK 0x07FFFFFF -+#include "u_uac.h" - - /* - * The driver implements a simple UAC_2 topology. -@@ -42,26 +40,6 @@ - #define UNFLW_CTRL 8 - #define OVFLW_CTRL 10 - --#define EPIN_EN(_opts) ((_opts)->p_chmask != 0) --#define EPOUT_EN(_opts) ((_opts)->c_chmask != 0) -- --struct f_uac2 { -- struct g_audio g_audio; -- u8 ac_intf, as_in_intf, as_out_intf; -- u8 ac_alt, as_in_alt, as_out_alt; /* needed for get_alt() */ --}; -- --static inline struct f_uac2 *func_to_uac2(struct usb_function *f) --{ -- return container_of(f, struct f_uac2, g_audio.func); --} -- --static inline --struct f_uac2_opts *g_audio_to_uac2_opts(struct g_audio *agdev) --{ -- return container_of(agdev->func.fi, struct f_uac2_opts, func_inst); --} -- - /* --------- USB Function Interface ------------- */ - - enum { -@@ -71,6 +49,8 @@ enum { - STR_CLKSRC_OUT, - STR_USB_IT, - STR_IO_IT, -+ STR_USB_OT_FU, -+ STR_IO_OT_FU, - STR_USB_OT, - STR_IO_OT, - STR_AS_OUT_ALT0, -@@ -79,16 +59,15 @@ enum { - STR_AS_IN_ALT1, - }; - --static char clksrc_in[8]; --static char clksrc_out[8]; -- - static struct usb_string strings_fn[] = { - [STR_ASSOC].s = "Source/Sink", - [STR_IF_CTRL].s = "Topology Control", -- [STR_CLKSRC_IN].s = clksrc_in, -- [STR_CLKSRC_OUT].s = clksrc_out, -+ [STR_CLKSRC_IN].s = "Input clock", -+ [STR_CLKSRC_OUT].s = "Output clock", - [STR_USB_IT].s = "USBH Out", - [STR_IO_IT].s = "USBD Out", -+ [STR_USB_OT_FU].s = "USBH In Feature Unit", -+ [STR_IO_OT_FU].s = "USBD In Feature Unit", - [STR_USB_OT].s = "USBH In", - [STR_IO_OT].s = "USBD In", - [STR_AS_OUT_ALT0].s = "Playback Inactive", -@@ -139,7 +118,7 @@ static struct uac_clock_source_descriptor in_clk_src_desc = { - .bDescriptorSubtype = UAC2_CLOCK_SOURCE, - /* .bClockID = DYNAMIC */ - .bmAttributes = UAC_CLOCK_SOURCE_TYPE_INT_FIXED, -- .bmControls = (CONTROL_RDONLY << CLK_FREQ_CTRL), -+ .bmControls = (CONTROL_RDWR << CLK_FREQ_CTRL), - .bAssocTerminal = 0, - }; - -@@ -151,7 +130,7 @@ static struct uac_clock_source_descriptor out_clk_src_desc = { - .bDescriptorSubtype = UAC2_CLOCK_SOURCE, - /* .bClockID = DYNAMIC */ - .bmAttributes = UAC_CLOCK_SOURCE_TYPE_INT_FIXED, -- .bmControls = (CONTROL_RDONLY << CLK_FREQ_CTRL), -+ .bmControls = (CONTROL_RDWR << CLK_FREQ_CTRL), - .bAssocTerminal = 0, - }; +@@ -44,6 +44,7 @@ -@@ -176,13 +155,88 @@ static struct uac2_input_terminal_descriptor io_in_it_desc = { + #define EPIN_EN(_opts) ((_opts)->p_chmask != 0) + #define EPOUT_EN(_opts) ((_opts)->c_chmask != 0) ++#define EPOUT_FBACK_IN_EN(_opts) ((_opts)->c_sync == USB_ENDPOINT_SYNC_ASYNC) - .bDescriptorSubtype = UAC_INPUT_TERMINAL, - /* .bTerminalID = DYNAMIC */ -- .wTerminalType = cpu_to_le16(UAC_INPUT_TERMINAL_UNDEFINED), -+ .wTerminalType = cpu_to_le16(UAC_INPUT_TERMINAL_MICROPHONE), - .bAssocTerminal = 0, - /* .bCSourceID = DYNAMIC */ - .iChannelNames = 0, - .bmControls = cpu_to_le16(CONTROL_RDWR << COPY_CTRL), - }; - -+DECLARE_UAC2_FEATURE_UNIT_DESCRIPTOR(0); -+ -+/* Feature Unit for I/O-out */ -+static struct uac2_feature_unit_descriptor_0 io_out_ot_fu_desc = { -+ -+ .bLength = UAC2_DT_FEATURE_UNIT_SIZE(0), -+ .bDescriptorType = USB_DT_CS_INTERFACE, -+ -+ .bDescriptorSubtype = UAC_FEATURE_UNIT, -+ /* .bUnitID = DYNAMIC */ -+ /* .bSourceID = DYNAMIC */ -+ .bmaControls[0] = (UAC2_CONTROL_BIT_RW(UAC_FU_MUTE) | -+ UAC2_CONTROL_BIT_RW(UAC_FU_VOLUME)), -+}; -+ -+static struct usb_audio_control c_mute_control = { -+ .list = LIST_HEAD_INIT(c_mute_control.list), -+ .name = "Capture Mute", -+ .type = UAC_FU_MUTE, -+ .set = u_audio_fu_set_cmd, -+ .get = u_audio_fu_get_cmd, -+}; -+ -+static struct usb_audio_control c_volume_control = { -+ .list = LIST_HEAD_INIT(c_volume_control.list), -+ .name = "Capture Volume", -+ .type = UAC_FU_VOLUME, -+ .set = u_audio_fu_set_cmd, -+ .get = u_audio_fu_get_cmd, -+}; -+ -+static struct usb_audio_control_selector c_feature_unit = { -+ .list = LIST_HEAD_INIT(c_feature_unit.list), -+ /* .id = DYNAMIC */ -+ .name = "Capture Mute & Volume Control", -+ .type = UAC_FEATURE_UNIT, -+ .desc = (struct usb_descriptor_header *)&io_out_ot_fu_desc, -+}; -+ -+/* Feature Unit for USB_IN */ -+static struct uac2_feature_unit_descriptor_0 usb_in_ot_fu_desc = { -+ .bLength = UAC2_DT_FEATURE_UNIT_SIZE(0), -+ .bDescriptorType = USB_DT_CS_INTERFACE, -+ -+ .bDescriptorSubtype = UAC_FEATURE_UNIT, -+ /* .bUnitID = DYNAMIC */ -+ /* .bSourceID = DYNAMIC */ -+ .bmaControls[0] = (UAC2_CONTROL_BIT_RW(UAC_FU_MUTE) | -+ UAC2_CONTROL_BIT_RW(UAC_FU_VOLUME)), -+}; -+ -+static struct usb_audio_control p_mute_control = { -+ .list = LIST_HEAD_INIT(p_mute_control.list), -+ .name = "Playback Mute", -+ .type = UAC_FU_MUTE, -+ .set = u_audio_fu_set_cmd, -+ .get = u_audio_fu_get_cmd, -+}; -+ -+static struct usb_audio_control p_volume_control = { -+ .list = LIST_HEAD_INIT(p_volume_control.list), -+ .name = "Playback Volume", -+ .type = UAC_FU_VOLUME, -+ .set = u_audio_fu_set_cmd, -+ .get = u_audio_fu_get_cmd, -+}; -+ -+static struct usb_audio_control_selector p_feature_unit = { -+ .list = LIST_HEAD_INIT(p_feature_unit.list), -+ /* .id = DYNAMIC */ -+ .name = "Playback Mute & Volume Control", -+ .type = UAC_FEATURE_UNIT, -+ .desc = (struct usb_descriptor_header *)&usb_in_ot_fu_desc, -+}; -+ - /* Ouput Terminal for USB_IN */ - static struct uac2_output_terminal_descriptor usb_in_ot_desc = { - .bLength = sizeof usb_in_ot_desc, -@@ -204,7 +258,7 @@ static struct uac2_output_terminal_descriptor io_out_ot_desc = { - - .bDescriptorSubtype = UAC_OUTPUT_TERMINAL, - /* .bTerminalID = DYNAMIC */ -- .wTerminalType = cpu_to_le16(UAC_OUTPUT_TERMINAL_UNDEFINED), -+ .wTerminalType = cpu_to_le16(UAC_OUTPUT_TERMINAL_SPEAKER), - .bAssocTerminal = 0, - /* .bSourceID = DYNAMIC */ - /* .bCSourceID = DYNAMIC */ -@@ -215,10 +269,14 @@ static struct uac2_ac_header_descriptor ac_hdr_desc = { - .bLength = sizeof ac_hdr_desc, - .bDescriptorType = USB_DT_CS_INTERFACE, - -- .bDescriptorSubtype = UAC_MS_HEADER, -+ .bDescriptorSubtype = UAC_HEADER, - .bcdADC = cpu_to_le16(0x200), - .bCategory = UAC2_FUNCTION_IO_BOX, -- /* .wTotalLength = DYNAMIC */ -+ .wTotalLength = cpu_to_le16(sizeof ac_hdr_desc + sizeof in_clk_src_desc -+ + sizeof out_clk_src_desc + sizeof usb_out_it_desc -+ + sizeof io_in_it_desc + sizeof usb_in_ot_desc -+ + sizeof io_out_ot_desc + sizeof usb_in_ot_fu_desc -+ + sizeof io_out_ot_fu_desc), - .bmControls = 0, - }; - -@@ -273,7 +331,7 @@ static struct usb_endpoint_descriptor fs_epout_desc = { + struct f_uac2 { + struct g_audio g_audio; +@@ -273,7 +274,7 @@ static struct usb_endpoint_descriptor fs_epout_desc = { .bDescriptorType = USB_DT_ENDPOINT, .bEndpointAddress = USB_DIR_OUT, - .bmAttributes = USB_ENDPOINT_XFER_ISOC | USB_ENDPOINT_SYNC_ASYNC, -+ .bmAttributes = USB_ENDPOINT_XFER_ISOC | USB_ENDPOINT_SYNC_ADAPTIVE, ++ /* .bmAttributes = DYNAMIC */ /* .wMaxPacketSize = DYNAMIC */ .bInterval = 1, }; -@@ -282,11 +340,29 @@ static struct usb_endpoint_descriptor hs_epout_desc = { +@@ -282,11 +283,29 @@ static struct usb_endpoint_descriptor hs_epout_desc = { .bLength = USB_DT_ENDPOINT_SIZE, .bDescriptorType = USB_DT_ENDPOINT, - .bmAttributes = USB_ENDPOINT_XFER_ISOC | USB_ENDPOINT_SYNC_ASYNC, -+ .bmAttributes = USB_ENDPOINT_XFER_ISOC | USB_ENDPOINT_SYNC_ADAPTIVE, ++ /* .bmAttributes = DYNAMIC */ /* .wMaxPacketSize = DYNAMIC */ .bInterval = 4, }; @@ -1583252,7 +1587870,7 @@ index dd960cea642f..e4429c8462c7 100644 + .bDescriptorType = USB_DT_ENDPOINT, + + .bEndpointAddress = USB_DIR_OUT, -+ .bmAttributes = USB_ENDPOINT_XFER_ISOC | USB_ENDPOINT_SYNC_ADAPTIVE, ++ /* .bmAttributes = DYNAMIC */ + /* .wMaxPacketSize = DYNAMIC */ + .bInterval = 4, +}; @@ -1583268,34 +1587886,66 @@ index dd960cea642f..e4429c8462c7 100644 /* CS AS ISO OUT Endpoint */ static struct uac2_iso_endpoint_descriptor as_iso_out_desc = { .bLength = sizeof as_iso_out_desc, -@@ -350,7 +426,7 @@ static struct usb_endpoint_descriptor fs_epin_desc = { - .bDescriptorType = USB_DT_ENDPOINT, - - .bEndpointAddress = USB_DIR_IN, -- .bmAttributes = USB_ENDPOINT_XFER_ISOC | USB_ENDPOINT_SYNC_ASYNC, -+ .bmAttributes = USB_ENDPOINT_XFER_ISOC | USB_ENDPOINT_SYNC_SYNC, - /* .wMaxPacketSize = DYNAMIC */ - .bInterval = 1, +@@ -299,6 +318,45 @@ static struct uac2_iso_endpoint_descriptor as_iso_out_desc = { + .wLockDelay = 0, }; -@@ -359,11 +435,29 @@ static struct usb_endpoint_descriptor hs_epin_desc = { - .bLength = USB_DT_ENDPOINT_SIZE, - .bDescriptorType = USB_DT_ENDPOINT, -+ .bmAttributes = USB_ENDPOINT_XFER_ISOC | USB_ENDPOINT_SYNC_SYNC, -+ /* .wMaxPacketSize = DYNAMIC */ ++/* STD AS ISO IN Feedback Endpoint */ ++static struct usb_endpoint_descriptor fs_epin_fback_desc = { ++ .bLength = USB_DT_ENDPOINT_SIZE, ++ .bDescriptorType = USB_DT_ENDPOINT, ++ ++ .bEndpointAddress = USB_DIR_IN, ++ .bmAttributes = USB_ENDPOINT_XFER_ISOC | USB_ENDPOINT_USAGE_FEEDBACK, ++ .wMaxPacketSize = cpu_to_le16(3), ++ .bInterval = 1, ++}; ++ ++static struct usb_endpoint_descriptor hs_epin_fback_desc = { ++ .bLength = USB_DT_ENDPOINT_SIZE, ++ .bDescriptorType = USB_DT_ENDPOINT, ++ ++ .bmAttributes = USB_ENDPOINT_XFER_ISOC | USB_ENDPOINT_USAGE_FEEDBACK, ++ .wMaxPacketSize = cpu_to_le16(4), + .bInterval = 4, +}; + -+static struct usb_endpoint_descriptor ss_epin_desc = { ++static struct usb_endpoint_descriptor ss_epin_fback_desc = { + .bLength = USB_DT_ENDPOINT_SIZE, + .bDescriptorType = USB_DT_ENDPOINT, + + .bEndpointAddress = USB_DIR_IN, - .bmAttributes = USB_ENDPOINT_XFER_ISOC | USB_ENDPOINT_SYNC_ASYNC, - /* .wMaxPacketSize = DYNAMIC */ ++ .bmAttributes = USB_ENDPOINT_XFER_ISOC | USB_ENDPOINT_USAGE_FEEDBACK, ++ .wMaxPacketSize = cpu_to_le16(4), ++ .bInterval = 4, ++}; ++ ++static struct usb_ss_ep_comp_descriptor ss_epin_fback_desc_comp = { ++ .bLength = sizeof(ss_epin_fback_desc_comp), ++ .bDescriptorType = USB_DT_SS_ENDPOINT_COMP, ++ .bMaxBurst = 0, ++ .bmAttributes = 0, ++ .wBytesPerInterval = cpu_to_le16(4), ++}; ++ ++ + /* Audio Streaming IN Interface - Alt0 */ + static struct usb_interface_descriptor std_as_in_if0_desc = { + .bLength = sizeof std_as_in_if0_desc, +@@ -364,6 +422,24 @@ static struct usb_endpoint_descriptor hs_epin_desc = { .bInterval = 4, }; ++static struct usb_endpoint_descriptor ss_epin_desc = { ++ .bLength = USB_DT_ENDPOINT_SIZE, ++ .bDescriptorType = USB_DT_ENDPOINT, ++ ++ .bEndpointAddress = USB_DIR_IN, ++ .bmAttributes = USB_ENDPOINT_XFER_ISOC | USB_ENDPOINT_SYNC_ASYNC, ++ /* .wMaxPacketSize = DYNAMIC */ ++ .bInterval = 4, ++}; ++ +static struct usb_ss_ep_comp_descriptor ss_epin_desc_comp = { + .bLength = sizeof(ss_epin_desc_comp), + .bDescriptorType = USB_DT_SS_ENDPOINT_COMP, @@ -1583307,25 +1587957,23 @@ index dd960cea642f..e4429c8462c7 100644 /* CS AS ISO IN Endpoint */ static struct uac2_iso_endpoint_descriptor as_iso_in_desc = { .bLength = sizeof as_iso_in_desc, -@@ -385,6 +479,8 @@ static struct usb_descriptor_header *fs_audio_desc[] = { - (struct usb_descriptor_header *)&out_clk_src_desc, - (struct usb_descriptor_header *)&usb_out_it_desc, - (struct usb_descriptor_header *)&io_in_it_desc, -+ (struct usb_descriptor_header *)&usb_in_ot_fu_desc, -+ (struct usb_descriptor_header *)&io_out_ot_fu_desc, - (struct usb_descriptor_header *)&usb_in_ot_desc, - (struct usb_descriptor_header *)&io_out_ot_desc, - -@@ -415,6 +511,8 @@ static struct usb_descriptor_header *hs_audio_desc[] = { - (struct usb_descriptor_header *)&out_clk_src_desc, - (struct usb_descriptor_header *)&usb_out_it_desc, - (struct usb_descriptor_header *)&io_in_it_desc, -+ (struct usb_descriptor_header *)&usb_in_ot_fu_desc, -+ (struct usb_descriptor_header *)&io_out_ot_fu_desc, - (struct usb_descriptor_header *)&usb_in_ot_desc, - (struct usb_descriptor_header *)&io_out_ot_desc, - -@@ -436,24 +534,76 @@ static struct usb_descriptor_header *hs_audio_desc[] = { +@@ -395,6 +471,7 @@ static struct usb_descriptor_header *fs_audio_desc[] = { + (struct usb_descriptor_header *)&as_out_fmt1_desc, + (struct usb_descriptor_header *)&fs_epout_desc, + (struct usb_descriptor_header *)&as_iso_out_desc, ++ (struct usb_descriptor_header *)&fs_epin_fback_desc, + + (struct usb_descriptor_header *)&std_as_in_if0_desc, + (struct usb_descriptor_header *)&std_as_in_if1_desc, +@@ -425,6 +502,7 @@ static struct usb_descriptor_header *hs_audio_desc[] = { + (struct usb_descriptor_header *)&as_out_fmt1_desc, + (struct usb_descriptor_header *)&hs_epout_desc, + (struct usb_descriptor_header *)&as_iso_out_desc, ++ (struct usb_descriptor_header *)&hs_epin_fback_desc, + + (struct usb_descriptor_header *)&std_as_in_if0_desc, + (struct usb_descriptor_header *)&std_as_in_if1_desc, +@@ -436,6 +514,40 @@ static struct usb_descriptor_header *hs_audio_desc[] = { NULL, }; @@ -1583338,8 +1587986,6 @@ index dd960cea642f..e4429c8462c7 100644 + (struct usb_descriptor_header *)&out_clk_src_desc, + (struct usb_descriptor_header *)&usb_out_it_desc, + (struct usb_descriptor_header *)&io_in_it_desc, -+ (struct usb_descriptor_header *)&usb_in_ot_fu_desc, -+ (struct usb_descriptor_header *)&io_out_ot_fu_desc, + (struct usb_descriptor_header *)&usb_in_ot_desc, + (struct usb_descriptor_header *)&io_out_ot_desc, + @@ -1583351,6 +1587997,8 @@ index dd960cea642f..e4429c8462c7 100644 + (struct usb_descriptor_header *)&ss_epout_desc, + (struct usb_descriptor_header *)&ss_epout_desc_comp, + (struct usb_descriptor_header *)&as_iso_out_desc, ++ (struct usb_descriptor_header *)&ss_epin_fback_desc, ++ (struct usb_descriptor_header *)&ss_epin_fback_desc_comp, + + (struct usb_descriptor_header *)&std_as_in_if0_desc, + (struct usb_descriptor_header *)&std_as_in_if1_desc, @@ -1583362,50 +1588010,11 @@ index dd960cea642f..e4429c8462c7 100644 + (struct usb_descriptor_header *)&as_iso_in_desc, + NULL, +}; -+ -+struct cntrl_cur_lay2 { -+ __le16 dCUR; -+}; -+ -+struct cntrl_range_lay2 { -+ __le16 wNumSubRanges; -+ __le16 dMIN; -+ __le16 dMAX; -+ __le16 dRES; -+} __packed; + struct cntrl_cur_lay3 { __le32 dCUR; }; - - struct cntrl_range_lay3 { -- __le16 wNumSubRanges; - __le32 dMIN; - __le32 dMAX; - __le32 dRES; - } __packed; - --static int set_ep_max_packet_size(const struct f_uac2_opts *uac2_opts, -+#define ranges_size(c) (sizeof(c.wNumSubRanges) + c.wNumSubRanges \ -+ * sizeof(struct cntrl_ranges_lay3)) -+struct cntrl_ranges_lay3 { -+ __u16 wNumSubRanges; -+ struct cntrl_range_lay3 r[UAC_MAX_RATES]; -+} __packed; -+ -+static int set_ep_max_packet_size(const struct f_uac_opts *uac2_opts, - struct usb_endpoint_descriptor *ep_desc, - enum usb_device_speed speed, bool is_playback) - { -- int chmask, srate, ssize; -+ int chmask, srate = 0, ssize; - u16 max_size_bw, max_size_ep; - unsigned int factor; -+ int i; - - switch (speed) { - case USB_SPEED_FULL: -@@ -462,6 +612,7 @@ static int set_ep_max_packet_size(const struct f_uac2_opts *uac2_opts, +@@ -462,6 +574,7 @@ static int set_ep_max_packet_size(const struct f_uac2_opts *uac2_opts, break; case USB_SPEED_HIGH: @@ -1583413,59 +1588022,60 @@ index dd960cea642f..e4429c8462c7 100644 max_size_ep = 1024; factor = 8000; break; -@@ -472,11 +623,21 @@ static int set_ep_max_packet_size(const struct f_uac2_opts *uac2_opts, - - if (is_playback) { - chmask = uac2_opts->p_chmask; -- srate = uac2_opts->p_srate; -+ for (i = 0; i < UAC_MAX_RATES; i++) { -+ if (uac2_opts->p_srate[i] == 0) -+ break; -+ if (uac2_opts->p_srate[i] > srate) -+ srate = uac2_opts->p_srate[i]; -+ } - ssize = uac2_opts->p_ssize; - } else { - chmask = uac2_opts->c_chmask; -- srate = uac2_opts->c_srate; -+ for (i = 0; i < UAC_MAX_RATES; i++) { -+ if (uac2_opts->c_srate[i] == 0) -+ break; -+ if (uac2_opts->c_srate[i] > srate) -+ srate = uac2_opts->c_srate[i]; -+ } +@@ -480,8 +593,17 @@ static int set_ep_max_packet_size(const struct f_uac2_opts *uac2_opts, ssize = uac2_opts->c_ssize; } -@@ -491,7 +652,77 @@ static int set_ep_max_packet_size(const struct f_uac2_opts *uac2_opts, +- max_size_bw = num_channels(chmask) * ssize * +- ((srate / (factor / (1 << (ep_desc->bInterval - 1)))) + 1); ++ if (!is_playback && (uac2_opts->c_sync == USB_ENDPOINT_SYNC_ASYNC)) { ++ // Win10 requires max packet size + 1 frame ++ srate = srate * (1000 + uac2_opts->fb_max) / 1000; ++ // updated srate is always bigger, therefore DIV_ROUND_UP always yields +1 ++ max_size_bw = num_channels(chmask) * ssize * ++ (DIV_ROUND_UP(srate, factor / (1 << (ep_desc->bInterval - 1)))); ++ } else { ++ // adding 1 frame provision for Win10 ++ max_size_bw = num_channels(chmask) * ssize * ++ (DIV_ROUND_UP(srate, factor / (1 << (ep_desc->bInterval - 1))) + 1); ++ } + ep_desc->wMaxPacketSize = cpu_to_le16(min_t(u16, max_size_bw, + max_size_ep)); + +@@ -491,6 +613,84 @@ static int set_ep_max_packet_size(const struct f_uac2_opts *uac2_opts, /* Use macro to overcome line length limitation */ #define USBDHDR(p) (struct usb_descriptor_header *)(p) --static void setup_descriptor(struct f_uac2_opts *opts) -+static void setup_headers(struct f_uac_opts *opts, ++static void setup_headers(struct f_uac2_opts *opts, + struct usb_descriptor_header **headers, + enum usb_device_speed speed) +{ + struct usb_ss_ep_comp_descriptor *epout_desc_comp = NULL; + struct usb_ss_ep_comp_descriptor *epin_desc_comp = NULL; ++ struct usb_ss_ep_comp_descriptor *epin_fback_desc_comp = NULL; + struct usb_endpoint_descriptor *epout_desc; + struct usb_endpoint_descriptor *epin_desc; ++ struct usb_endpoint_descriptor *epin_fback_desc; + int i; + + switch (speed) { + case USB_SPEED_FULL: + epout_desc = &fs_epout_desc; + epin_desc = &fs_epin_desc; ++ epin_fback_desc = &fs_epin_fback_desc; + break; + case USB_SPEED_HIGH: + epout_desc = &hs_epout_desc; + epin_desc = &hs_epin_desc; ++ epin_fback_desc = &hs_epin_fback_desc; + break; + default: + epout_desc = &ss_epout_desc; + epin_desc = &ss_epin_desc; + epout_desc_comp = &ss_epout_desc_comp; + epin_desc_comp = &ss_epin_desc_comp; ++ epin_fback_desc = &ss_epin_fback_desc; ++ epin_fback_desc_comp = &ss_epin_fback_desc_comp; + } + + i = 0; @@ -1583480,13 +1588090,9 @@ index dd960cea642f..e4429c8462c7 100644 + } + if (EPIN_EN(opts)) { + headers[i++] = USBDHDR(&io_in_it_desc); -+ if (EPIN_FU(opts)) -+ headers[i++] = USBDHDR(&usb_in_ot_fu_desc); + headers[i++] = USBDHDR(&usb_in_ot_desc); + } + if (EPOUT_EN(opts)) { -+ if (EPOUT_FU(opts)) -+ headers[i++] = USBDHDR(&io_out_ot_fu_desc); + headers[i++] = USBDHDR(&io_out_ot_desc); + headers[i++] = USBDHDR(&std_as_out_if0_desc); + headers[i++] = USBDHDR(&std_as_out_if1_desc); @@ -1583497,6 +1588103,12 @@ index dd960cea642f..e4429c8462c7 100644 + headers[i++] = USBDHDR(epout_desc_comp); + + headers[i++] = USBDHDR(&as_iso_out_desc); ++ ++ if (EPOUT_FBACK_IN_EN(opts)) { ++ headers[i++] = USBDHDR(epin_fback_desc); ++ if (epin_fback_desc_comp) ++ headers[i++] = USBDHDR(epin_fback_desc_comp); ++ } + } + if (EPIN_EN(opts)) { + headers[i++] = USBDHDR(&std_as_in_if0_desc); @@ -1583512,64 +1588124,10 @@ index dd960cea642f..e4429c8462c7 100644 + headers[i] = NULL; +} + -+static void setup_descriptor(struct f_uac_opts *opts) + static void setup_descriptor(struct f_uac2_opts *opts) { /* patch descriptors */ - int i = 1; /* ID's start with 1 */ -@@ -500,6 +731,10 @@ static void setup_descriptor(struct f_uac2_opts *opts) - usb_out_it_desc.bTerminalID = i++; - if (EPIN_EN(opts)) - io_in_it_desc.bTerminalID = i++; -+ if (EPOUT_EN(opts) && EPOUT_FU(opts)) -+ io_out_ot_fu_desc.bUnitID = i++; -+ if (EPIN_EN(opts) && EPIN_FU(opts)) -+ usb_in_ot_fu_desc.bUnitID = i++; - if (EPOUT_EN(opts)) - io_out_ot_desc.bTerminalID = i++; - if (EPIN_EN(opts)) -@@ -510,11 +745,23 @@ static void setup_descriptor(struct f_uac2_opts *opts) - in_clk_src_desc.bClockID = i++; - - usb_out_it_desc.bCSourceID = out_clk_src_desc.bClockID; -- usb_in_ot_desc.bSourceID = io_in_it_desc.bTerminalID; -+ if (EPIN_FU(opts)) { -+ usb_in_ot_fu_desc.bSourceID = io_in_it_desc.bTerminalID; -+ usb_in_ot_desc.bSourceID = usb_in_ot_fu_desc.bUnitID; -+ p_feature_unit.id = usb_in_ot_fu_desc.bUnitID; -+ } else { -+ usb_in_ot_desc.bSourceID = io_in_it_desc.bTerminalID; -+ } - usb_in_ot_desc.bCSourceID = in_clk_src_desc.bClockID; - io_in_it_desc.bCSourceID = in_clk_src_desc.bClockID; - io_out_ot_desc.bCSourceID = out_clk_src_desc.bClockID; -- io_out_ot_desc.bSourceID = usb_out_it_desc.bTerminalID; -+ if (EPOUT_FU(opts)) { -+ io_out_ot_fu_desc.bSourceID = usb_out_it_desc.bTerminalID; -+ io_out_ot_desc.bSourceID = io_out_ot_fu_desc.bUnitID; -+ c_feature_unit.id = io_out_ot_fu_desc.bUnitID; -+ } else { -+ io_out_ot_desc.bSourceID = usb_out_it_desc.bTerminalID; -+ } - as_out_hdr_desc.bTerminalLink = usb_out_it_desc.bTerminalID; - as_in_hdr_desc.bTerminalLink = usb_in_ot_desc.bTerminalID; - -@@ -526,6 +773,8 @@ static void setup_descriptor(struct f_uac2_opts *opts) - - len += sizeof(in_clk_src_desc); - len += sizeof(usb_in_ot_desc); -+ if (EPIN_FU(opts)) -+ len += sizeof(usb_in_ot_fu_desc); - len += sizeof(io_in_it_desc); - ac_hdr_desc.wTotalLength = cpu_to_le16(len); - iad_desc.bInterfaceCount++; -@@ -535,123 +784,31 @@ static void setup_descriptor(struct f_uac2_opts *opts) - - len += sizeof(out_clk_src_desc); - len += sizeof(usb_out_it_desc); -+ if (EPOUT_FU(opts)) -+ len += sizeof(io_out_ot_fu_desc); - len += sizeof(io_out_ot_desc); - ac_hdr_desc.wTotalLength = cpu_to_le16(len); +@@ -540,71 +740,9 @@ static void setup_descriptor(struct f_uac2_opts *opts) iad_desc.bInterfaceCount++; } @@ -1583638,82 +1588196,37 @@ index dd960cea642f..e4429c8462c7 100644 - hs_audio_desc[i++] = USBDHDR(&as_iso_in_desc); - } - hs_audio_desc[i] = NULL; --} -- --static int afunc_validate_opts(struct g_audio *agdev, struct device *dev) --{ -- struct f_uac2_opts *opts = g_audio_to_uac2_opts(agdev); -- -- if (!opts->p_chmask && !opts->c_chmask) { -- dev_err(dev, "Error: no playback and capture channels\n"); -- return -EINVAL; -- } else if (opts->p_chmask & ~UAC2_CHANNEL_MASK) { -- dev_err(dev, "Error: unsupported playback channels mask\n"); -- return -EINVAL; -- } else if (opts->c_chmask & ~UAC2_CHANNEL_MASK) { -- dev_err(dev, "Error: unsupported capture channels mask\n"); -- return -EINVAL; -- } else if ((opts->p_ssize < 1) || (opts->p_ssize > 4)) { -- dev_err(dev, "Error: incorrect playback sample size\n"); -- return -EINVAL; -- } else if ((opts->c_ssize < 1) || (opts->c_ssize > 4)) { -- dev_err(dev, "Error: incorrect capture sample size\n"); -- return -EINVAL; -- } else if (!opts->p_srate) { -- dev_err(dev, "Error: incorrect playback sampling rate\n"); -- return -EINVAL; -- } else if (!opts->c_srate) { -- dev_err(dev, "Error: incorrect capture sampling rate\n"); -- return -EINVAL; -- } -- -- return 0; + setup_headers(opts, fs_audio_desc, USB_SPEED_FULL); + setup_headers(opts, hs_audio_desc, USB_SPEED_HIGH); + setup_headers(opts, ss_audio_desc, USB_SPEED_SUPER); } - static int - afunc_bind(struct usb_configuration *cfg, struct usb_function *fn) - { -- struct f_uac2 *uac2 = func_to_uac2(fn); -+ struct f_uac *uac2 = func_to_uac(fn); - struct g_audio *agdev = func_to_g_audio(fn); - struct usb_composite_dev *cdev = cfg->cdev; - struct usb_gadget *gadget = cdev->gadget; - struct device *dev = &gadget->dev; -- struct f_uac2_opts *uac2_opts = g_audio_to_uac2_opts(agdev); -+ struct f_uac_opts *uac2_opts; - struct usb_string *us; - int ret; + static int afunc_validate_opts(struct g_audio *agdev, struct device *dev) +@@ -708,6 +846,23 @@ afunc_bind(struct usb_configuration *cfg, struct usb_function *fn) + std_as_out_if1_desc.bInterfaceNumber = ret; + uac2->as_out_intf = ret; + uac2->as_out_alt = 0; ++ ++ if (EPOUT_FBACK_IN_EN(uac2_opts)) { ++ fs_epout_desc.bmAttributes = ++ USB_ENDPOINT_XFER_ISOC | USB_ENDPOINT_SYNC_ASYNC; ++ hs_epout_desc.bmAttributes = ++ USB_ENDPOINT_XFER_ISOC | USB_ENDPOINT_SYNC_ASYNC; ++ ss_epout_desc.bmAttributes = ++ USB_ENDPOINT_XFER_ISOC | USB_ENDPOINT_SYNC_ASYNC; ++ std_as_out_if1_desc.bNumEndpoints++; ++ } else { ++ fs_epout_desc.bmAttributes = ++ USB_ENDPOINT_XFER_ISOC | USB_ENDPOINT_SYNC_ADAPTIVE; ++ hs_epout_desc.bmAttributes = ++ USB_ENDPOINT_XFER_ISOC | USB_ENDPOINT_SYNC_ADAPTIVE; ++ ss_epout_desc.bmAttributes = ++ USB_ENDPOINT_XFER_ISOC | USB_ENDPOINT_SYNC_ADAPTIVE; ++ } + } -- ret = afunc_validate_opts(agdev, dev); -- if (ret) -- return ret; -+ uac2_opts = container_of(fn->fi, struct f_uac_opts, func_inst); - - us = usb_gstrings_attach(cdev, fn_strings, ARRAY_SIZE(strings_fn)); - if (IS_ERR(us)) -@@ -662,6 +819,8 @@ afunc_bind(struct usb_configuration *cfg, struct usb_function *fn) - out_clk_src_desc.iClockSource = us[STR_CLKSRC_OUT].id; - usb_out_it_desc.iTerminal = us[STR_USB_IT].id; - io_in_it_desc.iTerminal = us[STR_IO_IT].id; -+ usb_in_ot_fu_desc.iFeature = us[STR_USB_OT_FU].id; -+ io_out_ot_fu_desc.iFeature = us[STR_IO_OT_FU].id; - usb_in_ot_desc.iTerminal = us[STR_USB_OT].id; - io_out_ot_desc.iTerminal = us[STR_IO_OT].id; - std_as_out_if0_desc.iInterface = us[STR_AS_OUT_ALT0].id; -@@ -684,9 +843,6 @@ afunc_bind(struct usb_configuration *cfg, struct usb_function *fn) - as_in_fmt1_desc.bSubslotSize = uac2_opts->p_ssize; - as_in_fmt1_desc.bBitResolution = uac2_opts->p_ssize * 8; - -- snprintf(clksrc_in, sizeof(clksrc_in), "%uHz", uac2_opts->p_srate); -- snprintf(clksrc_out, sizeof(clksrc_out), "%uHz", uac2_opts->c_srate); -- - ret = usb_interface_id(cfg, fn); - if (ret < 0) { - dev_err(dev, "%s:%d Error!\n", __func__, __LINE__); -@@ -751,6 +907,24 @@ afunc_bind(struct usb_configuration *cfg, struct usb_function *fn) + if (EPIN_EN(uac2_opts)) { +@@ -751,12 +906,35 @@ afunc_bind(struct usb_configuration *cfg, struct usb_function *fn) return ret; } @@ -1583724,29 +1588237,32 @@ index dd960cea642f..e4429c8462c7 100644 + return ret; + } + -+ ss_epin_desc_comp.wBytesPerInterval = ss_epin_desc.wMaxPacketSize; -+ + ret = set_ep_max_packet_size(uac2_opts, &ss_epout_desc, USB_SPEED_SUPER, + false); + if (ret < 0) { + dev_err(dev, "%s:%d Error!\n", __func__, __LINE__); + return ret; + } -+ -+ ss_epout_desc_comp.wBytesPerInterval = ss_epout_desc.wMaxPacketSize; + if (EPOUT_EN(uac2_opts)) { agdev->out_ep = usb_ep_autoconfig(gadget, &fs_epout_desc); if (!agdev->out_ep) { -@@ -765,6 +939,7 @@ afunc_bind(struct usb_configuration *cfg, struct usb_function *fn) dev_err(dev, "%s:%d Error!\n", __func__, __LINE__); return -ENODEV; } -+ agdev->in_ep->maxpacket = usb_endpoint_maxp(&fs_epin_desc); ++ if (EPOUT_FBACK_IN_EN(uac2_opts)) { ++ agdev->in_ep_fback = usb_ep_autoconfig(gadget, ++ &fs_epin_fback_desc); ++ if (!agdev->in_ep_fback) { ++ dev_err(dev, "%s:%d Error!\n", ++ __func__, __LINE__); ++ return -ENODEV; ++ } ++ } } - agdev->in_ep_maxpsize = max_t(u16, -@@ -774,23 +949,34 @@ afunc_bind(struct usb_configuration *cfg, struct usb_function *fn) + if (EPIN_EN(uac2_opts)) { +@@ -774,13 +952,25 @@ afunc_bind(struct usb_configuration *cfg, struct usb_function *fn) le16_to_cpu(fs_epout_desc.wMaxPacketSize), le16_to_cpu(hs_epout_desc.wMaxPacketSize)); @@ -1583754,10 +1588270,15 @@ index dd960cea642f..e4429c8462c7 100644 + le16_to_cpu(ss_epin_desc.wMaxPacketSize)); + agdev->out_ep_maxpsize = max_t(u16, agdev->out_ep_maxpsize, + le16_to_cpu(ss_epout_desc.wMaxPacketSize)); ++ ++ ss_epin_desc_comp.wBytesPerInterval = ss_epin_desc.wMaxPacketSize; ++ ss_epout_desc_comp.wBytesPerInterval = ss_epout_desc.wMaxPacketSize; + hs_epout_desc.bEndpointAddress = fs_epout_desc.bEndpointAddress; ++ hs_epin_fback_desc.bEndpointAddress = fs_epin_fback_desc.bEndpointAddress; hs_epin_desc.bEndpointAddress = fs_epin_desc.bEndpointAddress; + ss_epout_desc.bEndpointAddress = fs_epout_desc.bEndpointAddress; ++ ss_epin_fback_desc.bEndpointAddress = fs_epin_fback_desc.bEndpointAddress; + ss_epin_desc.bEndpointAddress = fs_epin_desc.bEndpointAddress; setup_descriptor(uac2_opts); @@ -1583769,607 +1588290,108 @@ index dd960cea642f..e4429c8462c7 100644 if (ret) return ret; - agdev->gadget = gadget; - - agdev->params.p_chmask = uac2_opts->p_chmask; -- agdev->params.p_srate = uac2_opts->p_srate; -+ memcpy(agdev->params.p_srate, uac2_opts->p_srate, -+ sizeof(agdev->params.p_srate)); -+ agdev->params.p_srate_active = uac2_opts->p_srate_active; - agdev->params.p_ssize = uac2_opts->p_ssize; - agdev->params.c_chmask = uac2_opts->c_chmask; -- agdev->params.c_srate = uac2_opts->c_srate; -+ memcpy(agdev->params.c_srate, uac2_opts->c_srate, -+ sizeof(agdev->params.c_srate)); -+ agdev->params.c_srate_active = uac2_opts->c_srate_active; +@@ -793,6 +983,7 @@ afunc_bind(struct usb_configuration *cfg, struct usb_function *fn) + agdev->params.c_srate = uac2_opts->c_srate; agdev->params.c_ssize = uac2_opts->c_ssize; agdev->params.req_number = uac2_opts->req_number; ++ agdev->params.fb_max = uac2_opts->fb_max; ret = g_audio_setup(agdev, "UAC2 PCM", "UAC2_Gadget"); -@@ -808,7 +994,7 @@ static int - afunc_set_alt(struct usb_function *fn, unsigned intf, unsigned alt) - { - struct usb_composite_dev *cdev = fn->config->cdev; -- struct f_uac2 *uac2 = func_to_uac2(fn); -+ struct f_uac *uac2 = func_to_uac(fn); - struct usb_gadget *gadget = cdev->gadget; - struct device *dev = &gadget->dev; - int ret = 0; -@@ -853,7 +1039,7 @@ afunc_set_alt(struct usb_function *fn, unsigned intf, unsigned alt) - static int - afunc_get_alt(struct usb_function *fn, unsigned intf) - { -- struct f_uac2 *uac2 = func_to_uac2(fn); -+ struct f_uac *uac2 = func_to_uac(fn); - struct g_audio *agdev = func_to_g_audio(fn); - - if (intf == uac2->ac_intf) -@@ -873,7 +1059,7 @@ afunc_get_alt(struct usb_function *fn, unsigned intf) - static void - afunc_disable(struct usb_function *fn) - { -- struct f_uac2 *uac2 = func_to_uac2(fn); -+ struct f_uac *uac2 = func_to_uac(fn); - - uac2->as_in_alt = 0; - uac2->as_out_alt = 0; -@@ -882,11 +1068,11 @@ afunc_disable(struct usb_function *fn) - } - - static int --in_rq_cur(struct usb_function *fn, const struct usb_ctrlrequest *cr) -+in_rq_cs_cur(struct usb_function *fn, const struct usb_ctrlrequest *cr) - { - struct usb_request *req = fn->config->cdev->req; - struct g_audio *agdev = func_to_g_audio(fn); -- struct f_uac2_opts *opts; -+ struct f_uac_opts *opts; - u16 w_length = le16_to_cpu(cr->wLength); - u16 w_index = le16_to_cpu(cr->wIndex); - u16 w_value = le16_to_cpu(cr->wValue); -@@ -895,9 +1081,9 @@ in_rq_cur(struct usb_function *fn, const struct usb_ctrlrequest *cr) - int value = -EOPNOTSUPP; - int p_srate, c_srate; - -- opts = g_audio_to_uac2_opts(agdev); -- p_srate = opts->p_srate; -- c_srate = opts->c_srate; -+ opts = g_audio_to_uac_opts(agdev); -+ p_srate = opts->p_srate_active; -+ c_srate = opts->c_srate_active; - - if (control_selector == UAC2_CS_CONTROL_SAM_FREQ) { - struct cntrl_cur_lay3 c; -@@ -908,6 +1094,7 @@ in_rq_cur(struct usb_function *fn, const struct usb_ctrlrequest *cr) - else if (entity_id == USB_OUT_CLK_ID) - c.dCUR = cpu_to_le32(c_srate); - -+ DBG(fn->config->cdev, "%s(): %d\n", __func__, c.dCUR); - value = min_t(unsigned, w_length, sizeof c); - memcpy(req->buf, &c, value); - } else if (control_selector == UAC2_CS_CONTROL_CLOCK_VALID) { -@@ -923,38 +1110,50 @@ in_rq_cur(struct usb_function *fn, const struct usb_ctrlrequest *cr) - } - - static int --in_rq_range(struct usb_function *fn, const struct usb_ctrlrequest *cr) -+in_rq_cs_range(struct usb_function *fn, const struct usb_ctrlrequest *cr) - { - struct usb_request *req = fn->config->cdev->req; - struct g_audio *agdev = func_to_g_audio(fn); -- struct f_uac2_opts *opts; -+ struct f_uac_opts *opts; - u16 w_length = le16_to_cpu(cr->wLength); - u16 w_index = le16_to_cpu(cr->wIndex); - u16 w_value = le16_to_cpu(cr->wValue); - u8 entity_id = (w_index >> 8) & 0xff; - u8 control_selector = w_value >> 8; -- struct cntrl_range_lay3 r; -+ struct cntrl_ranges_lay3 rs; - int value = -EOPNOTSUPP; -- int p_srate, c_srate; -+ int srate = 0; -+ int i; - -- opts = g_audio_to_uac2_opts(agdev); -- p_srate = opts->p_srate; -- c_srate = opts->c_srate; -+ opts = g_audio_to_uac_opts(agdev); - - if (control_selector == UAC2_CS_CONTROL_SAM_FREQ) { -- if (entity_id == USB_IN_CLK_ID) -- r.dMIN = cpu_to_le32(p_srate); -- else if (entity_id == USB_OUT_CLK_ID) -- r.dMIN = cpu_to_le32(c_srate); -- else -- return -EOPNOTSUPP; -- -- r.dMAX = r.dMIN; -- r.dRES = 0; -- r.wNumSubRanges = cpu_to_le16(1); -+ rs.wNumSubRanges = 0; -+ for (i = 0; i < UAC_MAX_RATES; i++) { -+ if (entity_id == USB_IN_CLK_ID) -+ srate = opts->p_srate[i]; -+ else if (entity_id == USB_OUT_CLK_ID) -+ srate = opts->c_srate[i]; -+ else -+ return -EOPNOTSUPP; -+ -+ if (srate == 0) -+ break; -+ -+ rs.r[rs.wNumSubRanges].dMIN = srate; -+ rs.r[rs.wNumSubRanges].dMAX = srate; -+ rs.r[rs.wNumSubRanges].dRES = 0; -+ rs.wNumSubRanges++; -+ DBG(fn->config->cdev, -+ "%s(): clk %d: report rate %d. %d\n", -+ __func__, entity_id, rs.wNumSubRanges, -+ srate); -+ } - -- value = min_t(unsigned, w_length, sizeof r); -- memcpy(req->buf, &r, value); -+ value = min_t(unsigned int, w_length, ranges_size(rs)); -+ DBG(fn->config->cdev, "%s(): send %d rates, size %d\n", -+ __func__, rs.wNumSubRanges, value); -+ memcpy(req->buf, &rs, value); - } else { - dev_err(&agdev->gadget->dev, - "%s:%d control_selector=%d TODO!\n", -@@ -964,26 +1163,195 @@ in_rq_range(struct usb_function *fn, const struct usb_ctrlrequest *cr) - return value; - } - -+static int -+in_rq_fu(struct usb_function *fn, const struct usb_ctrlrequest *cr) -+{ -+ struct f_uac *uac2 = func_to_uac(fn); -+ struct usb_request *req = fn->config->cdev->req; -+ u16 w_length = le16_to_cpu(cr->wLength); -+ struct usb_audio_control *con = uac2->get_con; -+ u8 cmd = uac2->get_cmd; -+ char c1; -+ struct cntrl_cur_lay2 c2; -+ struct cntrl_range_lay2 r; -+ int value = -EOPNOTSUPP; -+ -+ if (cmd == UAC2_CS_CUR && con->type == UAC_FU_MUTE) { -+ c1 = con->get(con, UAC__CUR); -+ value = min_t(unsigned int, w_length, 1); -+ memcpy(req->buf, &c1, value); -+ } else if (cmd == UAC2_CS_CUR && con->type == UAC_FU_VOLUME) { -+ c2.dCUR = cpu_to_le16(con->get(con, UAC__CUR)); -+ value = min_t(unsigned int, w_length, sizeof(c2)); -+ memcpy(req->buf, &c2, value); -+ } else if (cmd == UAC2_CS_RANGE) { -+ r.wNumSubRanges = cpu_to_le16(1); -+ r.dMIN = cpu_to_le16(con->get(con, UAC__MIN)); -+ r.dMAX = cpu_to_le16(con->get(con, UAC__MAX)); -+ r.dRES = cpu_to_le16(con->get(con, UAC__RES)); -+ value = min_t(unsigned int, w_length, sizeof(r)); -+ memcpy(req->buf, &r, value); -+ } -+ -+ DBG(fn->config->cdev, "%s(): send size %d\n", __func__, value); -+ -+ return value; -+} -+ -+static void uac2_fu_control_complt(struct usb_ep *ep, struct usb_request *req) -+{ -+ struct f_uac *uac2 = req->context; -+ struct usb_audio_control *con = uac2->set_con; -+ u8 cmd = uac2->set_cmd; -+ int status = req->status; -+ char c1; -+ struct cntrl_cur_lay2 c2; -+ struct cntrl_range_lay2 r; -+ -+ switch (status) { -+ case 0: /* normal completion? */ -+ if (!con) -+ break; -+ -+ if (cmd == UAC2_CS_CUR && con->type == UAC_FU_MUTE) { -+ memcpy(&c1, req->buf, 1); -+ con->set(con, UAC__CUR, c1); -+ } else if (cmd == UAC2_CS_CUR && con->type == UAC_FU_VOLUME) { -+ memcpy(&c2, req->buf, sizeof(c2)); -+ con->set(con, UAC__CUR, le16_to_cpu(c2.dCUR)); -+ } else if (cmd == UAC2_CS_RANGE) { -+ memcpy(&r, req->buf, sizeof(r)); -+ con->set(con, UAC__MIN, le16_to_cpu(r.dMIN)); -+ con->set(con, UAC__MAX, le16_to_cpu(r.dMAX)); -+ con->set(con, UAC__RES, le16_to_cpu(r.dRES)); -+ } -+ -+ uac2->set_con = NULL; -+ break; -+ default: -+ break; -+ } -+} -+ - static int - ac_rq_in(struct usb_function *fn, const struct usb_ctrlrequest *cr) - { -- if (cr->bRequest == UAC2_CS_CUR) -- return in_rq_cur(fn, cr); -- else if (cr->bRequest == UAC2_CS_RANGE) -- return in_rq_range(fn, cr); -- else -- return -EOPNOTSUPP; -+ struct f_uac *uac2 = func_to_uac(fn); -+ struct usb_composite_dev *cdev = fn->config->cdev; -+ struct usb_request *req = cdev->req; -+ u8 id = ((le16_to_cpu(cr->wIndex) >> 8) & 0xFF); -+ u16 len = le16_to_cpu(cr->wLength); -+ u16 w_value = le16_to_cpu(cr->wValue); -+ u8 con_sel = (w_value >> 8) & 0xFF; -+ u8 cmd = (cr->bRequest & 0x0F); -+ struct usb_audio_control_selector *cs; -+ struct usb_audio_control *con; -+ -+ DBG(cdev, "bRequest in 0x%x, w_value 0x%04x, len %d, entity %d\n", -+ cr->bRequest, w_value, len, id); -+ -+ if (id == USB_OUT_CLK_ID || id == USB_IN_CLK_ID) { -+ if (cr->bRequest == UAC2_CS_CUR) -+ return in_rq_cs_cur(fn, cr); -+ else if (cr->bRequest == UAC2_CS_RANGE) -+ return in_rq_cs_range(fn, cr); -+ } -+ -+ list_for_each_entry(cs, &uac2->cs, list) -+ if (cs->id == id) -+ list_for_each_entry(con, &cs->control, list) -+ if (con->type == con_sel) { -+ req->context = uac2; -+ uac2->get_con = con; -+ uac2->get_cmd = cmd; -+ req->complete = uac2_fu_control_complt; -+ return in_rq_fu(fn, cr); -+ } -+ -+ return -EOPNOTSUPP; -+} -+ -+static void uac2_cs_control_sam_freq(struct usb_ep *ep, struct usb_request *req) -+{ -+ struct usb_function *fn = ep->driver_data; -+ struct usb_composite_dev *cdev = fn->config->cdev; -+ struct g_audio *agdev = func_to_g_audio(fn); -+ struct f_uac *uac2 = func_to_uac(fn); -+ struct f_uac_opts *opts = g_audio_to_uac_opts(agdev); -+ u32 val; -+ -+ if (req->actual != 4) { -+ WARN(cdev, "Invalid data size for UAC2_CS_CONTROL_SAM_FREQ.\n"); -+ return; -+ } -+ -+ val = le32_to_cpu(*((u32 *)req->buf)); -+ if (uac2->ctl_id == USB_IN_CLK_ID) { -+ opts->p_srate_active = val; -+ u_audio_set_playback_srate(agdev, opts->p_srate_active); -+ } else if (uac2->ctl_id == USB_OUT_CLK_ID) { -+ opts->c_srate_active = val; -+ u_audio_set_capture_srate(agdev, opts->c_srate_active); -+ } - } - - static int --out_rq_cur(struct usb_function *fn, const struct usb_ctrlrequest *cr) -+out_rq_cs_cur(struct usb_function *fn, const struct usb_ctrlrequest *cr) - { -+ struct usb_composite_dev *cdev = fn->config->cdev; -+ struct usb_request *req = cdev->req; - u16 w_length = le16_to_cpu(cr->wLength); -+ struct f_uac *uac2 = func_to_uac(fn); - u16 w_value = le16_to_cpu(cr->wValue); -+ u16 w_index = le16_to_cpu(cr->wIndex); - u8 control_selector = w_value >> 8; -+ u8 clock_id = w_index >> 8; - -- if (control_selector == UAC2_CS_CONTROL_SAM_FREQ) -+ if (control_selector == UAC2_CS_CONTROL_SAM_FREQ) { -+ DBG(cdev, "control_selector UAC2_CS_CONTROL_SAM_FREQ, clock: %d\n", -+ clock_id); -+ cdev->gadget->ep0->driver_data = fn; -+ uac2->ctl_id = clock_id; -+ req->complete = uac2_cs_control_sam_freq; - return w_length; -+ } -+ -+ return -EOPNOTSUPP; -+} -+ -+static int -+ac_rq_out(struct usb_function *fn, const struct usb_ctrlrequest *cr) -+{ -+ struct f_uac *uac2 = func_to_uac(fn); -+ struct usb_composite_dev *cdev = fn->config->cdev; -+ struct usb_request *req = cdev->req; -+ u16 w_index = le16_to_cpu(cr->wIndex); -+ u16 w_value = le16_to_cpu(cr->wValue); -+ u16 w_length = le16_to_cpu(cr->wLength); -+ u8 id = (w_index >> 8) & 0xff; -+ u8 con_sel = (w_value >> 8) & 0xff; -+ u8 cmd = (cr->bRequest & 0x0f); -+ struct usb_audio_control_selector *cs; -+ struct usb_audio_control *con; -+ -+ DBG(cdev, "bRequest out 0x%x, w_value 0x%04x, len %d, entity %d\n", -+ cr->bRequest, w_value, w_length, id); -+ -+ if (id == USB_OUT_CLK_ID || id == USB_IN_CLK_ID) { -+ if (cr->bRequest == UAC2_CS_CUR) -+ return out_rq_cs_cur(fn, cr); -+ } -+ -+ list_for_each_entry(cs, &uac2->cs, list) -+ if (cs->id == id) -+ list_for_each_entry(con, &cs->control, list) -+ if (con->type == con_sel) { -+ req->context = uac2; -+ uac2->set_con = con; -+ uac2->set_cmd = cmd; -+ req->complete = uac2_fu_control_complt; -+ return w_length; -+ } - - return -EOPNOTSUPP; - } -@@ -991,7 +1359,7 @@ out_rq_cur(struct usb_function *fn, const struct usb_ctrlrequest *cr) - static int - setup_rq_inf(struct usb_function *fn, const struct usb_ctrlrequest *cr) - { -- struct f_uac2 *uac2 = func_to_uac2(fn); -+ struct f_uac *uac2 = func_to_uac(fn); - struct g_audio *agdev = func_to_g_audio(fn); - u16 w_index = le16_to_cpu(cr->wIndex); - u8 intf = w_index & 0xff; -@@ -1004,10 +1372,8 @@ setup_rq_inf(struct usb_function *fn, const struct usb_ctrlrequest *cr) - - if (cr->bRequestType & USB_DIR_IN) - return ac_rq_in(fn, cr); -- else if (cr->bRequest == UAC2_CS_CUR) -- return out_rq_cur(fn, cr); -- -- return -EOPNOTSUPP; -+ else -+ return ac_rq_out(fn, cr); - } - - static int -@@ -1043,80 +1409,31 @@ afunc_setup(struct usb_function *fn, const struct usb_ctrlrequest *cr) - return value; - } - --static inline struct f_uac2_opts *to_f_uac2_opts(struct config_item *item) --{ -- return container_of(to_config_group(item), struct f_uac2_opts, -- func_inst.group); --} -- --static void f_uac2_attr_release(struct config_item *item) --{ -- struct f_uac2_opts *opts = to_f_uac2_opts(item); -- -- usb_put_function_instance(&opts->func_inst); --} -- - static struct configfs_item_operations f_uac2_item_ops = { -- .release = f_uac2_attr_release, -+ .release = f_uac_attr_release, - }; + if (ret) + goto err_free_descs; +@@ -1101,13 +1292,71 @@ end: \ + \ + CONFIGFS_ATTR(f_uac2_opts_, name) --#define UAC2_ATTRIBUTE(name) \ --static ssize_t f_uac2_opts_##name##_show(struct config_item *item, \ -- char *page) \ --{ \ -- struct f_uac2_opts *opts = to_f_uac2_opts(item); \ -- int result; \ -- \ -- mutex_lock(&opts->lock); \ -- result = sprintf(page, "%u\n", opts->name); \ -- mutex_unlock(&opts->lock); \ -- \ -- return result; \ --} \ -- \ --static ssize_t f_uac2_opts_##name##_store(struct config_item *item, \ -- const char *page, size_t len) \ --{ \ -- struct f_uac2_opts *opts = to_f_uac2_opts(item); \ -- int ret; \ -- u32 num; \ -- \ -- mutex_lock(&opts->lock); \ -- if (opts->refcnt) { \ -- ret = -EBUSY; \ -- goto end; \ -- } \ -- \ -- ret = kstrtou32(page, 0, &num); \ -- if (ret) \ -- goto end; \ -- \ -- opts->name = num; \ -- ret = len; \ -- \ --end: \ -- mutex_unlock(&opts->lock); \ -- return ret; \ --} \ -- \ --CONFIGFS_ATTR(f_uac2_opts_, name) -- --UAC2_ATTRIBUTE(p_chmask); --UAC2_ATTRIBUTE(p_srate); --UAC2_ATTRIBUTE(p_ssize); --UAC2_ATTRIBUTE(c_chmask); --UAC2_ATTRIBUTE(c_srate); --UAC2_ATTRIBUTE(c_ssize); --UAC2_ATTRIBUTE(req_number); -+UAC_ATTRIBUTE(p_chmask); -+UAC_ATTRIBUTE(p_ssize); -+UAC_ATTRIBUTE(p_feature_unit); -+UAC_ATTRIBUTE(c_chmask); -+UAC_ATTRIBUTE(c_ssize); -+UAC_ATTRIBUTE(c_feature_unit); -+UAC_ATTRIBUTE(req_number); -+ -+UAC_RATE_ATTRIBUTE(p_srate); -+UAC_RATE_ATTRIBUTE(c_srate); ++#define UAC2_ATTRIBUTE_SYNC(name) \ ++static ssize_t f_uac2_opts_##name##_show(struct config_item *item, \ ++ char *page) \ ++{ \ ++ struct f_uac2_opts *opts = to_f_uac2_opts(item); \ ++ int result; \ ++ char *str; \ ++ \ ++ mutex_lock(&opts->lock); \ ++ switch (opts->name) { \ ++ case USB_ENDPOINT_SYNC_ASYNC: \ ++ str = "async"; \ ++ break; \ ++ case USB_ENDPOINT_SYNC_ADAPTIVE: \ ++ str = "adaptive"; \ ++ break; \ ++ default: \ ++ str = "unknown"; \ ++ break; \ ++ } \ ++ result = sprintf(page, "%s\n", str); \ ++ mutex_unlock(&opts->lock); \ ++ \ ++ return result; \ ++} \ ++ \ ++static ssize_t f_uac2_opts_##name##_store(struct config_item *item, \ ++ const char *page, size_t len) \ ++{ \ ++ struct f_uac2_opts *opts = to_f_uac2_opts(item); \ ++ int ret = 0; \ ++ \ ++ mutex_lock(&opts->lock); \ ++ if (opts->refcnt) { \ ++ ret = -EBUSY; \ ++ goto end; \ ++ } \ ++ \ ++ if (!strncmp(page, "async", 5)) \ ++ opts->name = USB_ENDPOINT_SYNC_ASYNC; \ ++ else if (!strncmp(page, "adaptive", 8)) \ ++ opts->name = USB_ENDPOINT_SYNC_ADAPTIVE; \ ++ else { \ ++ ret = -EINVAL; \ ++ goto end; \ ++ } \ ++ \ ++ ret = len; \ ++ \ ++end: \ ++ mutex_unlock(&opts->lock); \ ++ return ret; \ ++} \ ++ \ ++CONFIGFS_ATTR(f_uac2_opts_, name) ++ + UAC2_ATTRIBUTE(p_chmask); + UAC2_ATTRIBUTE(p_srate); + UAC2_ATTRIBUTE(p_ssize); + UAC2_ATTRIBUTE(c_chmask); + UAC2_ATTRIBUTE(c_srate); ++UAC2_ATTRIBUTE_SYNC(c_sync); + UAC2_ATTRIBUTE(c_ssize); + UAC2_ATTRIBUTE(req_number); ++UAC2_ATTRIBUTE(fb_max); static struct configfs_attribute *f_uac2_attrs[] = { -- &f_uac2_opts_attr_p_chmask, -- &f_uac2_opts_attr_p_srate, -- &f_uac2_opts_attr_p_ssize, -- &f_uac2_opts_attr_c_chmask, -- &f_uac2_opts_attr_c_srate, -- &f_uac2_opts_attr_c_ssize, -- &f_uac2_opts_attr_req_number, -+ &f_uac_opts_attr_p_chmask, -+ &f_uac_opts_attr_p_srate, -+ &f_uac_opts_attr_p_ssize, -+ &f_uac_opts_attr_p_feature_unit, -+ &f_uac_opts_attr_c_chmask, -+ &f_uac_opts_attr_c_srate, -+ &f_uac_opts_attr_c_ssize, -+ &f_uac_opts_attr_c_feature_unit, -+ &f_uac_opts_attr_req_number, + &f_uac2_opts_attr_p_chmask, +@@ -1116,7 +1365,9 @@ static struct configfs_attribute *f_uac2_attrs[] = { + &f_uac2_opts_attr_c_chmask, + &f_uac2_opts_attr_c_srate, + &f_uac2_opts_attr_c_ssize, ++ &f_uac2_opts_attr_c_sync, + &f_uac2_opts_attr_req_number, ++ &f_uac2_opts_attr_fb_max, NULL, }; -@@ -1128,15 +1445,15 @@ static const struct config_item_type f_uac2_func_type = { - - static void afunc_free_inst(struct usb_function_instance *f) - { -- struct f_uac2_opts *opts; -+ struct f_uac_opts *opts; - -- opts = container_of(f, struct f_uac2_opts, func_inst); -+ opts = container_of(f, struct f_uac_opts, func_inst); - kfree(opts); - } - - static struct usb_function_instance *afunc_alloc_inst(void) - { -- struct f_uac2_opts *opts; -+ struct f_uac_opts *opts; - - opts = kzalloc(sizeof(*opts), GFP_KERNEL); - if (!opts) -@@ -1148,23 +1465,27 @@ static struct usb_function_instance *afunc_alloc_inst(void) - config_group_init_type_name(&opts->func_inst.group, "", - &f_uac2_func_type); - -- opts->p_chmask = UAC2_DEF_PCHMASK; -- opts->p_srate = UAC2_DEF_PSRATE; -- opts->p_ssize = UAC2_DEF_PSSIZE; -- opts->c_chmask = UAC2_DEF_CCHMASK; -- opts->c_srate = UAC2_DEF_CSRATE; -- opts->c_ssize = UAC2_DEF_CSSIZE; -- opts->req_number = UAC2_DEF_REQ_NUM; -+ opts->p_chmask = UAC_DEF_PCHMASK; -+ opts->p_srate[0] = UAC_DEF_PSRATE; -+ opts->p_srate_active = UAC_DEF_PSRATE; -+ opts->p_ssize = UAC_DEF_PSSIZE; -+ opts->p_feature_unit = UAC_DEF_PFU; -+ opts->c_chmask = UAC_DEF_CCHMASK; -+ opts->c_srate[0] = UAC_DEF_CSRATE; -+ opts->c_srate_active = UAC_DEF_CSRATE; -+ opts->c_ssize = UAC_DEF_CSSIZE; -+ opts->c_feature_unit = UAC_DEF_CFU; -+ opts->req_number = UAC_DEF_REQ_NUM; +@@ -1154,7 +1405,9 @@ static struct usb_function_instance *afunc_alloc_inst(void) + opts->c_chmask = UAC2_DEF_CCHMASK; + opts->c_srate = UAC2_DEF_CSRATE; + opts->c_ssize = UAC2_DEF_CSSIZE; ++ opts->c_sync = UAC2_DEF_CSYNC; + opts->req_number = UAC2_DEF_REQ_NUM; ++ opts->fb_max = UAC2_DEF_FB_MAX; return &opts->func_inst; } - static void afunc_free(struct usb_function *f) - { - struct g_audio *agdev; -- struct f_uac2_opts *opts; -+ struct f_uac_opts *opts; - - agdev = func_to_g_audio(f); -- opts = container_of(f->fi, struct f_uac2_opts, func_inst); -+ opts = container_of(f->fi, struct f_uac_opts, func_inst); - kfree(agdev); - mutex_lock(&opts->lock); - --opts->refcnt; -@@ -1181,16 +1502,55 @@ static void afunc_unbind(struct usb_configuration *c, struct usb_function *f) - agdev->gadget = NULL; - } - -+/* Todo: add more control selecotor dynamically */ -+static int control_selector_init(struct f_uac *uac2) -+{ -+ INIT_LIST_HEAD(&uac2->cs); -+ -+ /* playback feature unit */ -+ list_add(&p_feature_unit.list, &uac2->cs); -+ -+ INIT_LIST_HEAD(&p_feature_unit.control); -+ list_add(&p_mute_control.list, &p_feature_unit.control); -+ list_add(&p_volume_control.list, &p_feature_unit.control); -+ -+ p_volume_control.data[UAC__CUR] = UAC_VOLUME_CUR; -+ p_volume_control.data[UAC__MIN] = UAC_VOLUME_MIN; -+ p_volume_control.data[UAC__MAX] = UAC_VOLUME_MAX; -+ p_volume_control.data[UAC__RES] = UAC_VOLUME_RES; -+ -+ p_volume_control.context = &uac2->g_audio; -+ p_mute_control.context = &uac2->g_audio; -+ -+ /* capture feature unit */ -+ list_add(&c_feature_unit.list, &uac2->cs); -+ -+ INIT_LIST_HEAD(&c_feature_unit.control); -+ list_add(&c_mute_control.list, &c_feature_unit.control); -+ list_add(&c_volume_control.list, &c_feature_unit.control); -+ -+ c_volume_control.data[UAC__CUR] = UAC_VOLUME_CUR; -+ c_volume_control.data[UAC__MIN] = UAC_VOLUME_MIN; -+ c_volume_control.data[UAC__MAX] = UAC_VOLUME_MAX; -+ c_volume_control.data[UAC__RES] = UAC_VOLUME_RES; -+ -+ c_volume_control.context = &uac2->g_audio; -+ c_mute_control.context = &uac2->g_audio; -+ -+ return 0; -+} -+ -+ - static struct usb_function *afunc_alloc(struct usb_function_instance *fi) - { -- struct f_uac2 *uac2; -- struct f_uac2_opts *opts; -+ struct f_uac *uac2; -+ struct f_uac_opts *opts; - - uac2 = kzalloc(sizeof(*uac2), GFP_KERNEL); - if (uac2 == NULL) - return ERR_PTR(-ENOMEM); - -- opts = container_of(fi, struct f_uac2_opts, func_inst); -+ opts = container_of(fi, struct f_uac_opts, func_inst); - mutex_lock(&opts->lock); - ++opts->refcnt; - mutex_unlock(&opts->lock); -@@ -1204,6 +1564,8 @@ static struct usb_function *afunc_alloc(struct usb_function_instance *fi) - uac2->g_audio.func.setup = afunc_setup; - uac2->g_audio.func.free_func = afunc_free; - -+ control_selector_init(uac2); -+ - return &uac2->g_audio.func; - } - diff --git a/drivers/usb/gadget/function/f_uvc.c b/drivers/usb/gadget/function/f_uvc.c -index f48a00e49794..31cc58171905 100644 +index f48a00e49..31cc58171 100644 --- a/drivers/usb/gadget/function/f_uvc.c +++ b/drivers/usb/gadget/function/f_uvc.c @@ -124,6 +124,18 @@ static struct usb_interface_descriptor uvc_streaming_intf_alt0 = { @@ -1585092,19 +1589114,20 @@ index f48a00e49794..31cc58171905 100644 return &uvc->func; diff --git a/drivers/usb/gadget/function/u_audio.c b/drivers/usb/gadget/function/u_audio.c -index 95605b1ef4eb..eaba6e7b3836 100644 +old mode 100644 +new mode 100755 +index 95605b1ef..e35a66aec --- a/drivers/usb/gadget/function/u_audio.c +++ b/drivers/usb/gadget/function/u_audio.c -@@ -13,6 +13,8 @@ - */ - - #include -+#include -+#include +@@ -16,6 +16,7 @@ #include #include #include -@@ -23,10 +25,9 @@ ++#include + + #include "u_audio.h" + +@@ -23,11 +24,6 @@ #define PRD_SIZE_MAX PAGE_SIZE #define MIN_PERIODS 4 @@ -1585112,24 +1589135,79 @@ index 95605b1ef4eb..eaba6e7b3836 100644 - struct uac_rtd_params *pp; /* parent param */ - struct usb_request *req; -}; -+#define CLK_PPM_GROUP_SIZE 20 -+ -+static struct class *audio_class; - +- /* Runtime data params for one stream */ struct uac_rtd_params { -@@ -41,9 +42,8 @@ struct uac_rtd_params { + struct snd_uac_chip *uac; /* parent chip */ +@@ -40,10 +36,13 @@ struct uac_rtd_params { + void *rbuf; ++ unsigned int pitch; /* Stream pitch ratio to 1000000 */ unsigned int max_psize; /* MaxPacketSize of endpoint */ - struct uac_req *ureq; - spinlock_t lock; + struct usb_request **reqs; ++ ++ struct usb_request *req_fback; /* Feedback endpoint request */ ++ bool fb_ep_enabled; /* if the ep is enabled */ }; struct snd_uac_chip { -@@ -79,13 +79,11 @@ static const struct snd_pcm_hardware uac_pcm_hardware = { +@@ -76,16 +75,63 @@ static const struct snd_pcm_hardware uac_pcm_hardware = { + .periods_min = MIN_PERIODS, + }; + ++static void u_audio_set_fback_frequency(enum usb_device_speed speed, ++ struct usb_ep *out_ep, ++ unsigned long long freq, ++ unsigned int pitch, ++ void *buf) ++{ ++ u32 ff = 0; ++ const struct usb_endpoint_descriptor *ep_desc; ++ ++ /* ++ * Because the pitch base is 1000000, the final divider here ++ * will be 1000 * 1000000 = 1953125 << 9 ++ * ++ * Instead of dealing with big numbers lets fold this 9 left shift ++ */ ++ ++ if (speed == USB_SPEED_FULL) { ++ /* ++ * Full-speed feedback endpoints report frequency ++ * in samples/frame ++ * Format is encoded in Q10.10 left-justified in the 24 bits, ++ * so that it has a Q10.14 format. ++ * ++ * ff = (freq << 14) / 1000 ++ */ ++ freq <<= 5; ++ } else { ++ /* ++ * High-speed feedback endpoints report frequency ++ * in samples/microframe. ++ * Format is encoded in Q12.13 fitted into four bytes so that ++ * the binary point is located between the second and the third ++ * byte fromat (that is Q16.16) ++ * ++ * ff = (freq << 16) / 8000 ++ * ++ * Win10 and OSX UAC2 drivers require number of samples per packet ++ * in order to honor the feedback value. ++ * Linux snd-usb-audio detects the applied bit-shift automatically. ++ */ ++ ep_desc = out_ep->desc; ++ freq <<= 4 + (ep_desc->bInterval - 1); ++ } ++ ++ ff = DIV_ROUND_CLOSEST_ULL((freq * pitch), 1953125); ++ ++ *(__le32 *)buf = cpu_to_le32(ff); ++} ++ static void u_audio_iso_complete(struct usb_ep *ep, struct usb_request *req) { unsigned int pending; @@ -1585144,7 +1589222,7 @@ index 95605b1ef4eb..eaba6e7b3836 100644 struct snd_uac_chip *uac = prm->uac; /* i/f shutting down */ -@@ -111,16 +109,14 @@ static void u_audio_iso_complete(struct usb_ep *ep, struct usb_request *req) +@@ -111,16 +157,14 @@ static void u_audio_iso_complete(struct usb_ep *ep, struct usb_request *req) if (!substream) goto exit; @@ -1585163,7 +1589241,7 @@ index 95605b1ef4eb..eaba6e7b3836 100644 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) { /* * For each IN packet, take the quotient of the current data -@@ -147,8 +143,6 @@ static void u_audio_iso_complete(struct usb_ep *ep, struct usb_request *req) +@@ -147,8 +191,6 @@ static void u_audio_iso_complete(struct usb_ep *ep, struct usb_request *req) hw_ptr = prm->hw_ptr; @@ -1585172,7 +1589250,7 @@ index 95605b1ef4eb..eaba6e7b3836 100644 /* Pack USB load in ALSA ring buffer */ pending = runtime->dma_bytes - hw_ptr; -@@ -172,12 +166,10 @@ static void u_audio_iso_complete(struct usb_ep *ep, struct usb_request *req) +@@ -172,12 +214,10 @@ static void u_audio_iso_complete(struct usb_ep *ep, struct usb_request *req) } } @@ -1585186,7 +1589264,48 @@ index 95605b1ef4eb..eaba6e7b3836 100644 if ((hw_ptr % snd_pcm_lib_period_bytes(substream)) < req->actual) snd_pcm_period_elapsed(substream); -@@ -193,7 +185,6 @@ static int uac_pcm_trigger(struct snd_pcm_substream *substream, int cmd) +@@ -187,13 +227,47 @@ static void u_audio_iso_complete(struct usb_ep *ep, struct usb_request *req) + dev_err(uac->card->dev, "%d Error!\n", __LINE__); + } + ++static void u_audio_iso_fback_complete(struct usb_ep *ep, ++ struct usb_request *req) ++{ ++ struct uac_rtd_params *prm = req->context; ++ struct snd_uac_chip *uac = prm->uac; ++ struct g_audio *audio_dev = uac->audio_dev; ++ struct uac_params *params = &audio_dev->params; ++ int status = req->status; ++ ++ /* i/f shutting down */ ++ if (!prm->fb_ep_enabled) { ++ kfree(req->buf); ++ usb_ep_free_request(ep, req); ++ return; ++ } ++ ++ if (req->status == -ESHUTDOWN) ++ return; ++ ++ /* ++ * We can't really do much about bad xfers. ++ * Afterall, the ISOCH xfers could fail legitimately. ++ */ ++ if (status) ++ pr_debug("%s: iso_complete status(%d) %d/%d\n", ++ __func__, status, req->actual, req->length); ++ ++ u_audio_set_fback_frequency(audio_dev->gadget->speed, audio_dev->out_ep, ++ params->c_srate, prm->pitch, ++ req->buf); ++ ++ if (usb_ep_queue(ep, req, GFP_ATOMIC)) ++ dev_err(uac->card->dev, "%d Error!\n", __LINE__); ++} ++ + static int uac_pcm_trigger(struct snd_pcm_substream *substream, int cmd) + { + struct snd_uac_chip *uac = snd_pcm_substream_chip(substream); struct uac_rtd_params *prm; struct g_audio *audio_dev; struct uac_params *params; @@ -1585194,7 +1589313,7 @@ index 95605b1ef4eb..eaba6e7b3836 100644 int err = 0; audio_dev = uac->audio_dev; -@@ -204,8 +195,6 @@ static int uac_pcm_trigger(struct snd_pcm_substream *substream, int cmd) +@@ -204,8 +278,6 @@ static int uac_pcm_trigger(struct snd_pcm_substream *substream, int cmd) else prm = &uac->c_prm; @@ -1585203,7 +1589322,7 @@ index 95605b1ef4eb..eaba6e7b3836 100644 /* Reset */ prm->hw_ptr = 0; -@@ -222,8 +211,6 @@ static int uac_pcm_trigger(struct snd_pcm_substream *substream, int cmd) +@@ -222,8 +294,6 @@ static int uac_pcm_trigger(struct snd_pcm_substream *substream, int cmd) err = -EINVAL; } @@ -1585212,7 +1589331,7 @@ index 95605b1ef4eb..eaba6e7b3836 100644 /* Clear buffer after Play stops */ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK && !prm->ss) memset(prm->rbuf, 0, prm->max_psize * params->req_number); -@@ -244,22 +231,40 @@ static snd_pcm_uframes_t uac_pcm_pointer(struct snd_pcm_substream *substream) +@@ -244,6 +314,25 @@ static snd_pcm_uframes_t uac_pcm_pointer(struct snd_pcm_substream *substream) return bytes_to_frames(substream->runtime, prm->hw_ptr); } @@ -1585238,26 +1589357,7 @@ index 95605b1ef4eb..eaba6e7b3836 100644 static int uac_pcm_open(struct snd_pcm_substream *substream) { struct snd_uac_chip *uac = snd_pcm_substream_chip(substream); - struct snd_pcm_runtime *runtime = substream->runtime; -- struct g_audio *audio_dev; -+ struct g_audio *audio_dev = uac->audio_dev; - struct uac_params *params; - int p_ssize, c_ssize; - int p_srate, c_srate; - int p_chmask, c_chmask; - -- audio_dev = uac->audio_dev; - params = &audio_dev->params; - p_ssize = params->p_ssize; - c_ssize = params->c_ssize; -- p_srate = params->p_srate; -- c_srate = params->c_srate; -+ p_srate = params->p_srate_active; -+ c_srate = params->c_srate_active; - p_chmask = params->p_chmask; - c_chmask = params->c_chmask; - uac->p_residue = 0; -@@ -267,36 +272,14 @@ static int uac_pcm_open(struct snd_pcm_substream *substream) +@@ -267,36 +356,14 @@ static int uac_pcm_open(struct snd_pcm_substream *substream) runtime->hw = uac_pcm_hardware; if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) { @@ -1585296,60 +1589396,7 @@ index 95605b1ef4eb..eaba6e7b3836 100644 runtime->hw.channels_min = num_channels(c_chmask); runtime->hw.period_bytes_min = 2 * uac->c_prm.max_psize / runtime->hw.periods_min; -@@ -310,6 +293,52 @@ static int uac_pcm_open(struct snd_pcm_substream *substream) - return 0; - } - -+static int uac_pcm_rate_info(struct snd_kcontrol *kcontrol, -+ struct snd_ctl_elem_info *uinfo) -+{ -+ uinfo->type = SNDRV_CTL_ELEM_TYPE_INTEGER; -+ uinfo->count = 1; -+ uinfo->value.integer.min = 0; -+ uinfo->value.integer.max = 324000; -+ return 0; -+} -+ -+static int uac_pcm_rate_get(struct snd_kcontrol *kcontrol, -+ struct snd_ctl_elem_value *ucontrol) -+{ -+ struct snd_uac_chip *uac = snd_kcontrol_chip(kcontrol); -+ struct g_audio *audio_dev = uac->audio_dev; -+ struct uac_params *params = &audio_dev->params; -+ -+ if (kcontrol->private_value == SNDRV_PCM_STREAM_CAPTURE) -+ ucontrol->value.integer.value[0] = params->c_srate_active; -+ else if (kcontrol->private_value == SNDRV_PCM_STREAM_PLAYBACK) -+ ucontrol->value.integer.value[0] = params->p_srate_active; -+ else -+ return -EINVAL; -+ -+ return 0; -+} -+ -+static struct snd_kcontrol_new uac_pcm_controls[] = { -+{ -+ .iface = SNDRV_CTL_ELEM_IFACE_PCM, -+ .name = "Capture Rate", -+ .access = SNDRV_CTL_ELEM_ACCESS_READ | SNDRV_CTL_ELEM_ACCESS_VOLATILE, -+ .info = uac_pcm_rate_info, -+ .get = uac_pcm_rate_get, -+ .private_value = SNDRV_PCM_STREAM_CAPTURE, -+}, -+{ -+ .iface = SNDRV_CTL_ELEM_IFACE_PCM, -+ .name = "Playback Rate", -+ .access = SNDRV_CTL_ELEM_ACCESS_READ | SNDRV_CTL_ELEM_ACCESS_VOLATILE, -+ .info = uac_pcm_rate_info, -+ .get = uac_pcm_rate_get, -+ .private_value = SNDRV_PCM_STREAM_PLAYBACK, -+}, -+}; -+ - /* ALSA cries without these function pointers */ - static int uac_pcm_null(struct snd_pcm_substream *substream) - { -@@ -338,16 +367,16 @@ static inline void free_ep(struct uac_rtd_params *prm, struct usb_ep *ep) +@@ -338,16 +405,16 @@ static inline void free_ep(struct uac_rtd_params *prm, struct usb_ep *ep) params = &audio_dev->params; for (i = 0; i < params->req_number; i++) { @@ -1585370,128 +1589417,44 @@ index 95605b1ef4eb..eaba6e7b3836 100644 } } -@@ -357,17 +386,119 @@ static inline void free_ep(struct uac_rtd_params *prm, struct usb_ep *ep) +@@ -357,13 +424,34 @@ static inline void free_ep(struct uac_rtd_params *prm, struct usb_ep *ep) dev_err(uac->card->dev, "%s:%d Error!\n", __func__, __LINE__); } -+static struct snd_kcontrol *u_audio_get_ctl(struct g_audio *audio_dev, -+ const char *name) -+{ -+ struct snd_ctl_elem_id elem_id; -+ -+ memset(&elem_id, 0, sizeof(elem_id)); -+ elem_id.iface = SNDRV_CTL_ELEM_IFACE_PCM; -+ strlcpy(elem_id.name, name, sizeof(elem_id.name)); -+ return snd_ctl_find_id(audio_dev->uac->card, &elem_id); -+} -+ -+int u_audio_set_capture_srate(struct g_audio *audio_dev, int srate) -+{ -+ struct snd_kcontrol *ctl = u_audio_get_ctl(audio_dev, "Capture Rate"); -+ struct uac_params *params = &audio_dev->params; -+ int i; -+ -+ for (i = 0; i < UAC_MAX_RATES; i++) { -+ if (params->c_srate[i] == srate) { -+ audio_dev->usb_state[SET_SAMPLE_RATE_OUT] = true; -+ schedule_work(&audio_dev->work); -+ -+ params->c_srate_active = srate; -+ snd_ctl_notify(audio_dev->uac->card, -+ SNDRV_CTL_EVENT_MASK_VALUE, &ctl->id); -+ return 0; -+ } -+ if (params->c_srate[i] == 0) -+ break; -+ } -+ -+ return -EINVAL; -+} -+EXPORT_SYMBOL_GPL(u_audio_set_capture_srate); -+ -+static void u_audio_set_playback_pktsize(struct g_audio *audio_dev, int srate) ++static inline void free_ep_fback(struct uac_rtd_params *prm, struct usb_ep *ep) +{ -+ struct uac_params *params = &audio_dev->params; -+ struct snd_uac_chip *uac = audio_dev->uac; -+ struct usb_gadget *gadget = audio_dev->gadget; -+ const struct usb_endpoint_descriptor *ep_desc; -+ struct uac_rtd_params *prm; -+ unsigned int factor; ++ struct snd_uac_chip *uac = prm->uac; + -+ prm = &uac->p_prm; -+ /* set srate before starting playback, epin is not configured */ -+ if (!prm->ep_enabled) ++ if (!prm->fb_ep_enabled) + return; + -+ ep_desc = audio_dev->in_ep->desc; -+ -+ /* pre-calculate the playback endpoint's interval */ -+ if (gadget->speed == USB_SPEED_FULL) -+ factor = 1000; -+ else -+ factor = 8000; -+ -+ /* pre-compute some values for iso_complete() */ -+ uac->p_framesize = params->p_ssize * -+ num_channels(params->p_chmask); -+ uac->p_interval = factor / (1 << (ep_desc->bInterval - 1)); -+ uac->p_pktsize = min_t(unsigned int, -+ uac->p_framesize * -+ (params->p_srate_active / uac->p_interval), -+ prm->max_psize); -+ -+ if (uac->p_pktsize < prm->max_psize) -+ uac->p_pktsize_residue = uac->p_framesize * -+ (params->p_srate_active % uac->p_interval); -+ else -+ uac->p_pktsize_residue = 0; -+} -+ -+int u_audio_set_playback_srate(struct g_audio *audio_dev, int srate) -+{ -+ struct snd_kcontrol *ctl = u_audio_get_ctl(audio_dev, "Playback Rate"); -+ struct uac_params *params = &audio_dev->params; -+ int i; -+ -+ for (i = 0; i < UAC_MAX_RATES; i++) { -+ if (params->p_srate[i] == srate) { -+ audio_dev->usb_state[SET_SAMPLE_RATE_IN] = true; -+ schedule_work(&audio_dev->work); ++ prm->fb_ep_enabled = false; + -+ params->p_srate_active = srate; -+ u_audio_set_playback_pktsize(audio_dev, srate); -+ snd_ctl_notify(audio_dev->uac->card, -+ SNDRV_CTL_EVENT_MASK_VALUE, &ctl->id); -+ return 0; ++ if (prm->req_fback) { ++ if (usb_ep_dequeue(ep, prm->req_fback)) { ++ kfree(prm->req_fback->buf); ++ usb_ep_free_request(ep, prm->req_fback); + } -+ if (params->p_srate[i] == 0) -+ break; ++ prm->req_fback = NULL; + } + -+ return -EINVAL; ++ if (usb_ep_disable(ep)) ++ dev_err(uac->card->dev, "%s:%d Error!\n", __func__, __LINE__); +} -+EXPORT_SYMBOL_GPL(u_audio_set_playback_srate); + int u_audio_start_capture(struct g_audio *audio_dev) { struct snd_uac_chip *uac = audio_dev->uac; struct usb_gadget *gadget = audio_dev->gadget; -- struct device *dev = &gadget->dev; -+ struct device *dev = audio_dev->device; - struct usb_request *req; - struct usb_ep *ep; + struct device *dev = &gadget->dev; +- struct usb_request *req; +- struct usb_ep *ep; ++ struct usb_request *req, *req_fback; ++ struct usb_ep *ep, *ep_fback; struct uac_rtd_params *prm; struct uac_params *params = &audio_dev->params; int req_len, i; - -+ audio_dev->usb_state[SET_INTERFACE_OUT] = true; -+ audio_dev->stream_state[STATE_OUT] = true; -+ schedule_work(&audio_dev->work); -+ - ep = audio_dev->out_ep; - prm = &uac->c_prm; - config_ep_by_speed(gadget, &audio_dev->func, ep); -@@ -377,22 +508,21 @@ int u_audio_start_capture(struct g_audio *audio_dev) +@@ -377,25 +465,61 @@ int u_audio_start_capture(struct g_audio *audio_dev) usb_ep_enable(ep); for (i = 0; i < params->req_number; i++) { @@ -1585518,72 +1589481,58 @@ index 95605b1ef4eb..eaba6e7b3836 100644 dev_err(dev, "%s:%d Error!\n", __func__, __LINE__); } -@@ -405,6 +535,10 @@ void u_audio_stop_capture(struct g_audio *audio_dev) - struct snd_uac_chip *uac = audio_dev->uac; - - free_ep(&uac->c_prm, audio_dev->out_ep); ++ ep_fback = audio_dev->in_ep_fback; ++ if (!ep_fback) ++ return 0; ++ ++ /* Setup feedback endpoint */ ++ config_ep_by_speed(gadget, &audio_dev->func, ep_fback); ++ prm->fb_ep_enabled = true; ++ usb_ep_enable(ep_fback); ++ req_len = ep_fback->maxpacket; ++ ++ req_fback = usb_ep_alloc_request(ep_fback, GFP_ATOMIC); ++ if (req_fback == NULL) ++ return -ENOMEM; ++ ++ prm->req_fback = req_fback; ++ req_fback->zero = 0; ++ req_fback->context = prm; ++ req_fback->length = req_len; ++ req_fback->complete = u_audio_iso_fback_complete; ++ ++ req_fback->buf = kzalloc(req_len, GFP_ATOMIC); ++ if (!req_fback->buf) ++ return -ENOMEM; ++ ++ /* ++ * Configure the feedback endpoint's reported frequency. ++ * Always start with original frequency since its deviation can't ++ * be meauserd at start of playback ++ */ ++ prm->pitch = 1000000; ++ u_audio_set_fback_frequency(audio_dev->gadget->speed, ep, ++ params->c_srate, prm->pitch, ++ req_fback->buf); ++ ++ if (usb_ep_queue(ep_fback, req_fback, GFP_ATOMIC)) ++ dev_err(dev, "%s:%d Error!\n", __func__, __LINE__); + -+ audio_dev->usb_state[SET_INTERFACE_OUT] = true; -+ audio_dev->stream_state[STATE_OUT] = false; -+ schedule_work(&audio_dev->work); + return 0; } - EXPORT_SYMBOL_GPL(u_audio_stop_capture); - -@@ -412,65 +546,45 @@ int u_audio_start_playback(struct g_audio *audio_dev) + EXPORT_SYMBOL_GPL(u_audio_start_capture); +@@ -404,6 +528,8 @@ void u_audio_stop_capture(struct g_audio *audio_dev) { struct snd_uac_chip *uac = audio_dev->uac; - struct usb_gadget *gadget = audio_dev->gadget; -- struct device *dev = &gadget->dev; -+ struct device *dev = audio_dev->device; - struct usb_request *req; - struct usb_ep *ep; - struct uac_rtd_params *prm; - struct uac_params *params = &audio_dev->params; -- unsigned int factor; -- const struct usb_endpoint_descriptor *ep_desc; - int req_len, i; - -+ audio_dev->usb_state[SET_INTERFACE_IN] = true; -+ audio_dev->stream_state[STATE_IN] = true; -+ schedule_work(&audio_dev->work); -+ -+ dev_dbg(dev, "start playback with rate %d\n", params->p_srate_active); - ep = audio_dev->in_ep; - prm = &uac->p_prm; - config_ep_by_speed(gadget, &audio_dev->func, ep); - -- ep_desc = ep->desc; -- -- /* pre-calculate the playback endpoint's interval */ -- if (gadget->speed == USB_SPEED_FULL) -- factor = 1000; -- else -- factor = 8000; -- -- /* pre-compute some values for iso_complete() */ -- uac->p_framesize = params->p_ssize * -- num_channels(params->p_chmask); -- uac->p_interval = factor / (1 << (ep_desc->bInterval - 1)); -- uac->p_pktsize = min_t(unsigned int, -- uac->p_framesize * -- (params->p_srate / uac->p_interval), -- ep->maxpacket); -- -- if (uac->p_pktsize < ep->maxpacket) -- uac->p_pktsize_residue = uac->p_framesize * -- (params->p_srate % uac->p_interval); -- else -- uac->p_pktsize_residue = 0; -+ prm->ep_enabled = true; -+ usb_ep_enable(ep); -+ u_audio_set_playback_pktsize(audio_dev, params->p_srate_active); - req_len = uac->p_pktsize; - uac->p_residue = 0; ++ if (audio_dev->in_ep_fback) ++ free_ep_fback(&uac->c_prm, audio_dev->in_ep_fback); + free_ep(&uac->c_prm, audio_dev->out_ep); + } + EXPORT_SYMBOL_GPL(u_audio_stop_capture); +@@ -455,22 +581,21 @@ int u_audio_start_playback(struct g_audio *audio_dev) + usb_ep_enable(ep); -- prm->ep_enabled = true; -- usb_ep_enable(ep); -- for (i = 0; i < params->req_number; i++) { - if (!prm->ureq[i].req) { + if (!prm->reqs[i]) { @@ -1585608,270 +1589557,90 @@ index 95605b1ef4eb..eaba6e7b3836 100644 dev_err(dev, "%s:%d Error!\n", __func__, __LINE__); } -@@ -483,9 +597,242 @@ void u_audio_stop_playback(struct g_audio *audio_dev) - struct snd_uac_chip *uac = audio_dev->uac; - - free_ep(&uac->p_prm, audio_dev->in_ep); -+ -+ audio_dev->usb_state[SET_INTERFACE_IN] = true; -+ audio_dev->stream_state[STATE_IN] = false; -+ schedule_work(&audio_dev->work); +@@ -486,12 +611,82 @@ void u_audio_stop_playback(struct g_audio *audio_dev) } EXPORT_SYMBOL_GPL(u_audio_stop_playback); -+int u_audio_fu_set_cmd(struct usb_audio_control *con, u8 cmd, int value) ++static int u_audio_pitch_info(struct snd_kcontrol *kcontrol, ++ struct snd_ctl_elem_info *uinfo) +{ -+ struct g_audio *audio_dev = (struct g_audio *)con->context; ++ struct uac_rtd_params *prm = snd_kcontrol_chip(kcontrol); ++ struct snd_uac_chip *uac = prm->uac; ++ struct g_audio *audio_dev = uac->audio_dev; + struct uac_params *params = &audio_dev->params; ++ unsigned int pitch_min, pitch_max; + -+ switch (cmd) { -+ case UAC_SET_CUR: -+ if (!strncmp(con->name, "Capture Mute", 12)) { -+ params->c_mute = value; -+ audio_dev->usb_state[SET_MUTE_OUT] = true; -+ } else if (!strncmp(con->name, "Capture Volume", 14)) { -+ params->c_volume = value; -+ audio_dev->usb_state[SET_VOLUME_OUT] = true; -+ } else if (!strncmp(con->name, "Playback Mute", 13)) { -+ params->p_mute = value; -+ audio_dev->usb_state[SET_MUTE_IN] = true; -+ } else if (!strncmp(con->name, "Playback Volume", 15)) { -+ params->p_volume = value; -+ audio_dev->usb_state[SET_VOLUME_IN] = true; -+ } -+ break; -+ case UAC_SET_RES: -+ fallthrough; -+ default: -+ return 0; -+ } -+ -+ con->data[cmd] = value; -+ schedule_work(&audio_dev->work); ++ pitch_min = (1000 - FBACK_SLOW_MAX) * 1000; ++ pitch_max = (1000 + params->fb_max) * 1000; + ++ uinfo->type = SNDRV_CTL_ELEM_TYPE_INTEGER; ++ uinfo->count = 1; ++ uinfo->value.integer.min = pitch_min; ++ uinfo->value.integer.max = pitch_max; ++ uinfo->value.integer.step = 1; + return 0; +} -+EXPORT_SYMBOL_GPL(u_audio_fu_set_cmd); -+ -+int u_audio_fu_get_cmd(struct usb_audio_control *con, u8 cmd) -+{ -+ struct g_audio *audio_dev = (struct g_audio *)con->context; -+ -+ dev_dbg(audio_dev->device, "GET_CMD con %s cmd %d data %d\n", -+ con->name, cmd, (int16_t)con->data[cmd]); -+ return con->data[cmd]; -+} -+EXPORT_SYMBOL_GPL(u_audio_fu_get_cmd); + -+static void g_audio_work(struct work_struct *data) ++static int u_audio_pitch_get(struct snd_kcontrol *kcontrol, ++ struct snd_ctl_elem_value *ucontrol) +{ -+ struct g_audio *audio = container_of(data, struct g_audio, work); -+ struct uac_params *params = &audio->params; -+ char *uac_event[4] = { NULL, NULL, NULL, NULL }; -+ char str[19]; -+ signed short volume; -+ int i; ++ struct uac_rtd_params *prm = snd_kcontrol_chip(kcontrol); + -+ for (i = 0; i < SET_USB_STATE_MAX; i++) { -+ if (!audio->usb_state[i]) -+ continue; -+ -+ switch (i) { -+ case SET_INTERFACE_OUT: -+ uac_event[0] = "USB_STATE=SET_INTERFACE"; -+ uac_event[1] = "STREAM_DIRECTION=OUT"; -+ uac_event[2] = audio->stream_state[STATE_OUT] ? -+ "STREAM_STATE=ON" : "STREAM_STATE=OFF"; -+ break; -+ case SET_INTERFACE_IN: -+ uac_event[0] = "USB_STATE=SET_INTERFACE"; -+ uac_event[1] = "STREAM_DIRECTION=IN"; -+ uac_event[2] = audio->stream_state[STATE_IN] ? -+ "STREAM_STATE=ON" : "STREAM_STATE=OFF"; -+ break; -+ case SET_SAMPLE_RATE_OUT: -+ uac_event[0] = "USB_STATE=SET_SAMPLE_RATE"; -+ uac_event[1] = "STREAM_DIRECTION=OUT"; -+ snprintf(str, sizeof(str), "SAMPLE_RATE=%d", -+ params->c_srate_active); -+ uac_event[2] = str; -+ break; -+ case SET_SAMPLE_RATE_IN: -+ uac_event[0] = "USB_STATE=SET_SAMPLE_RATE"; -+ uac_event[1] = "STREAM_DIRECTION=IN"; -+ snprintf(str, sizeof(str), "SAMPLE_RATE=%d", -+ params->p_srate_active); -+ uac_event[2] = str; -+ break; -+ case SET_MUTE_OUT: -+ uac_event[0] = "USB_STATE=SET_MUTE"; -+ uac_event[1] = "STREAM_DIRECTION=OUT"; -+ snprintf(str, sizeof(str), "MUTE=%d", params->c_mute); -+ uac_event[2] = str; -+ break; -+ case SET_MUTE_IN: -+ uac_event[0] = "USB_STATE=SET_MUTE"; -+ uac_event[1] = "STREAM_DIRECTION=IN"; -+ snprintf(str, sizeof(str), "MUTE=%d", params->p_mute); -+ uac_event[2] = str; -+ break; -+ case SET_VOLUME_OUT: -+ uac_event[0] = "USB_STATE=SET_VOLUME"; -+ uac_event[1] = "STREAM_DIRECTION=OUT"; -+ volume = (signed short)params->c_volume; -+ volume /= UAC_VOLUME_RES; -+ snprintf(str, sizeof(str), "VOLUME=%d%%", volume + 50); -+ uac_event[2] = str; -+ break; -+ case SET_VOLUME_IN: -+ uac_event[0] = "USB_STATE=SET_VOLUME"; -+ uac_event[1] = "STREAM_DIRECTION=IN"; -+ volume = (signed short)params->p_volume; -+ volume /= UAC_VOLUME_RES; -+ snprintf(str, sizeof(str), "VOLUME=%d%%", volume + 50); -+ uac_event[2] = str; -+ break; -+ case SET_AUDIO_CLK: -+ uac_event[0] = "USB_STATE=SET_AUDIO_CLK"; -+ snprintf(str, sizeof(str), "PPM=%d", params->ppm); -+ uac_event[1] = str; -+ default: -+ break; -+ } ++ ucontrol->value.integer.value[0] = prm->pitch; + -+ audio->usb_state[i] = false; -+ kobject_uevent_env(&audio->device->kobj, KOBJ_CHANGE, -+ uac_event); -+ dev_dbg(audio->device, "%s: sent uac uevent %s %s %s\n", -+ __func__, uac_event[0], uac_event[1], uac_event[2]); -+ } ++ return 0; +} + -+static void ppm_calculate_work(struct work_struct *data) ++static int u_audio_pitch_put(struct snd_kcontrol *kcontrol, ++ struct snd_ctl_elem_value *ucontrol) +{ -+ struct g_audio *g_audio = container_of(data, struct g_audio, -+ ppm_work.work); -+ struct usb_gadget *gadget = g_audio->gadget; -+ uint32_t frame_number, fn_msec, clk_msec; -+ struct frame_number_data *fn = g_audio->fn; -+ uint64_t time_now, time_msec_tmp; -+ int32_t ppm; -+ static int32_t ppms[CLK_PPM_GROUP_SIZE]; -+ static int32_t ppm_sum; -+ int32_t cnt = fn->second % CLK_PPM_GROUP_SIZE; -+ -+ time_now = ktime_get_raw(); -+ frame_number = gadget->ops->get_frame(gadget); -+ -+ if (g_audio->fn->time_last && -+ time_now - g_audio->fn->time_last > 1500000000ULL) -+ dev_warn(g_audio->device, "PPM work scheduled too slow!\n"); -+ -+ g_audio->fn->time_last = time_now; -+ -+ /* -+ * If usb is disconnected, the controller will not receive the -+ * SoF signal and frame number will be invalid. Because we can't -+ * get accurate time of disconnect and whether the gadget will be -+ * plugged into the same host next time or not. We must clear all -+ * statistics. -+ */ -+ if (gadget->state != USB_STATE_CONFIGURED) { -+ memset(g_audio->fn, 0, sizeof(*g_audio->fn)); -+ dev_dbg(g_audio->device, "Disconnect. frame number is cleared\n"); -+ goto out; -+ } -+ -+ /* Fist statistic to record begin frame number and system time */ -+ if (!g_audio->fn->second++) { -+ g_audio->fn->time_begin = g_audio->fn->time_last; -+ g_audio->fn->fn_begin = frame_number; -+ g_audio->fn->fn_last = frame_number; -+ goto out; -+ } -+ -+ /* -+ * For DWC3 Controller, only 13 bits is used to store frame(micro) -+ * number. In other words, the frame number will overflow at most -+ * 2.047 seconds. We add another registor fn_overflow the record -+ * total frame number. -+ */ -+ if (frame_number <= g_audio->fn->fn_last) -+ g_audio->fn->fn_overflow++; -+ g_audio->fn->fn_last = frame_number; -+ -+ if (!g_audio->fn->fn_overflow) -+ goto out; -+ -+ /* The lower 3 bits represent micro number frame, we don't need it */ -+ fn_msec = (((fn->fn_overflow - 1) << 14) + -+ (BIT(14) + fn->fn_last - fn->fn_begin) + BIT(2)) >> 3; -+ time_msec_tmp = fn->time_last - fn->time_begin + 500000ULL; -+ do_div(time_msec_tmp, 1000000U); -+ clk_msec = (uint32_t)time_msec_tmp; ++ struct uac_rtd_params *prm = snd_kcontrol_chip(kcontrol); ++ struct snd_uac_chip *uac = prm->uac; ++ struct g_audio *audio_dev = uac->audio_dev; ++ struct uac_params *params = &audio_dev->params; ++ unsigned int val; ++ unsigned int pitch_min, pitch_max; ++ int change = 0; + -+ /* -+ * According to the definition of ppm: -+ * host_clk = (1 + ppm / 1000000) * gadget_clk -+ * we can get: -+ * ppm = (host_clk - gadget_clk) * 1000000 / gadget_clk -+ */ -+ ppm = (fn_msec > clk_msec) ? -+ (fn_msec - clk_msec) * 1000000L / clk_msec : -+ -((clk_msec - fn_msec) * 1000000L / clk_msec); ++ pitch_min = (1000 - FBACK_SLOW_MAX) * 1000; ++ pitch_max = (1000 + params->fb_max) * 1000; + -+ ppm_sum = ppm_sum - ppms[cnt] + ppm; -+ ppms[cnt] = ppm; ++ val = ucontrol->value.integer.value[0]; + -+ dev_dbg(g_audio->device, -+ "frame %u msec %u ppm_calc %d ppm_avage(%d) %d\n", -+ fn_msec, clk_msec, ppm, CLK_PPM_GROUP_SIZE, -+ ppm_sum / CLK_PPM_GROUP_SIZE); ++ if (val < pitch_min) ++ val = pitch_min; ++ if (val > pitch_max) ++ val = pitch_max; + -+ /* -+ * We calculate the average of ppm over a period of time. If the -+ * latest frame number is too far from the average, no event will -+ * be sent. -+ */ -+ if (abs(ppm_sum / CLK_PPM_GROUP_SIZE - ppm) < 3) { -+ ppm = ppm_sum > 0 ? -+ (ppm_sum + CLK_PPM_GROUP_SIZE / 2) / CLK_PPM_GROUP_SIZE : -+ (ppm_sum - CLK_PPM_GROUP_SIZE / 2) / CLK_PPM_GROUP_SIZE; -+ if (ppm != g_audio->params.ppm) { -+ g_audio->params.ppm = ppm; -+ g_audio->usb_state[SET_AUDIO_CLK] = true; -+ schedule_work(&g_audio->work); -+ } ++ if (prm->pitch != val) { ++ prm->pitch = val; ++ change = 1; + } + -+out: -+ schedule_delayed_work(&g_audio->ppm_work, 1 * HZ); ++ return change; +} ++ ++static const struct snd_kcontrol_new u_audio_controls[] = { ++{ ++ .iface = SNDRV_CTL_ELEM_IFACE_PCM, ++ .name = "Capture Pitch 1000000", ++ .info = u_audio_pitch_info, ++ .get = u_audio_pitch_get, ++ .put = u_audio_pitch_put, ++}, ++}; + int g_audio_setup(struct g_audio *g_audio, const char *pcm_name, const char *card_name) { -@@ -495,6 +842,7 @@ int g_audio_setup(struct g_audio *g_audio, const char *pcm_name, + struct snd_uac_chip *uac; + struct snd_card *card; + struct snd_pcm *pcm; ++ struct snd_kcontrol *kctl; struct uac_params *params; int p_chmask, c_chmask; int err; -+ int i; - - if (!g_audio) - return -EINVAL; -@@ -509,15 +857,22 @@ int g_audio_setup(struct g_audio *g_audio, const char *pcm_name, - p_chmask = params->p_chmask; - c_chmask = params->c_chmask; - -+ g_audio->fn = kzalloc(sizeof(*g_audio->fn), GFP_KERNEL); -+ if (!g_audio->fn) { -+ err = -ENOMEM; -+ goto fail; -+ } -+ - if (c_chmask) { - struct uac_rtd_params *prm = &uac->c_prm; - +@@ -515,9 +710,10 @@ int g_audio_setup(struct g_audio *g_audio, const char *pcm_name, uac->c_prm.uac = uac; prm->max_psize = g_audio->out_ep_maxpsize; @@ -1585885,7 +1589654,7 @@ index 95605b1ef4eb..eaba6e7b3836 100644 err = -ENOMEM; goto fail; } -@@ -537,9 +892,10 @@ int g_audio_setup(struct g_audio *g_audio, const char *pcm_name, +@@ -537,9 +733,10 @@ int g_audio_setup(struct g_audio *g_audio, const char *pcm_name, uac->p_prm.uac = uac; prm->max_psize = g_audio->in_ep_maxpsize; @@ -1585899,36 +1589668,43 @@ index 95605b1ef4eb..eaba6e7b3836 100644 err = -ENOMEM; goto fail; } -@@ -584,7 +940,28 @@ int g_audio_setup(struct g_audio *g_audio, const char *pcm_name, - snd_pcm_set_managed_buffer_all(pcm, SNDRV_DMA_TYPE_CONTINUOUS, - NULL, 0, BUFF_SIZE_MAX); +@@ -570,15 +767,32 @@ int g_audio_setup(struct g_audio *g_audio, const char *pcm_name, + if (err < 0) + goto snd_fail; -+ /* Add controls */ -+ for (i = 0; i < ARRAY_SIZE(uac_pcm_controls); i++) { -+ err = snd_ctl_add(card, -+ snd_ctl_new1(&uac_pcm_controls[i], uac)); -+ if (err < 0) +- strlcpy(pcm->name, pcm_name, sizeof(pcm->name)); ++ strscpy(pcm->name, pcm_name, sizeof(pcm->name)); + pcm->private_data = uac; + uac->pcm = pcm; + + snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_PLAYBACK, &uac_pcm_ops); + snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE, &uac_pcm_ops); + +- strlcpy(card->driver, card_name, sizeof(card->driver)); +- strlcpy(card->shortname, card_name, sizeof(card->shortname)); ++ if (c_chmask && g_audio->in_ep_fback) { ++ strscpy(card->mixername, card_name, sizeof(card->driver)); ++ ++ kctl = snd_ctl_new1(&u_audio_controls[0], &uac->c_prm); ++ if (!kctl) { ++ err = -ENOMEM; + goto snd_fail; -+ } ++ } + - err = snd_card_register(card); -+ if (err < 0) -+ goto snd_fail; ++ kctl->id.device = pcm->device; ++ kctl->id.subdevice = 0; + -+ g_audio->device = device_create(audio_class, NULL, MKDEV(0, 0), NULL, -+ "%s", g_audio->uac->card->longname); -+ if (IS_ERR(g_audio->device)) { -+ err = PTR_ERR(g_audio->device); -+ goto snd_fail; ++ err = snd_ctl_add(card, kctl); ++ if (err < 0) ++ goto snd_fail; + } + -+ INIT_WORK(&g_audio->work, g_audio_work); -+ INIT_DELAYED_WORK(&g_audio->ppm_work, ppm_calculate_work); -+ ppm_calculate_work(&g_audio->ppm_work.work); ++ strscpy(card->driver, card_name, sizeof(card->driver)); ++ strscpy(card->shortname, card_name, sizeof(card->shortname)); + sprintf(card->longname, "%s %i", card_name, card->dev->id); - if (!err) - return 0; -@@ -592,11 +969,12 @@ int g_audio_setup(struct g_audio *g_audio, const char *pcm_name, + snd_pcm_set_managed_buffer_all(pcm, SNDRV_DMA_TYPE_CONTINUOUS, +@@ -592,8 +806,8 @@ int g_audio_setup(struct g_audio *g_audio, const char *pcm_name, snd_fail: snd_card_free(card); fail: @@ -1585939,195 +1589715,411 @@ index 95605b1ef4eb..eaba6e7b3836 100644 kfree(uac->p_prm.rbuf); kfree(uac->c_prm.rbuf); kfree(uac); -+ kfree(g_audio->fn); - - return err; - } -@@ -610,19 +988,49 @@ void g_audio_cleanup(struct g_audio *g_audio) - if (!g_audio || !g_audio->uac) - return; - -+ cancel_work_sync(&g_audio->work); -+ cancel_delayed_work_sync(&g_audio->ppm_work); -+ device_destroy(g_audio->device->class, g_audio->device->devt); -+ g_audio->device = NULL; -+ - uac = g_audio->uac; - card = uac->card; +@@ -615,8 +829,8 @@ void g_audio_cleanup(struct g_audio *g_audio) if (card) snd_card_free(card); - kfree(uac->p_prm.ureq); - kfree(uac->c_prm.ureq); -+ free_ep(&uac->c_prm, g_audio->out_ep); -+ free_ep(&uac->p_prm, g_audio->in_ep); -+ + kfree(uac->p_prm.reqs); + kfree(uac->c_prm.reqs); kfree(uac->p_prm.rbuf); kfree(uac->c_prm.rbuf); kfree(uac); -+ kfree(g_audio->fn); - } - EXPORT_SYMBOL_GPL(g_audio_cleanup); - -+static int __init u_audio_init(void) -+{ -+ int err = 0; -+ -+ audio_class = class_create(THIS_MODULE, "u_audio"); -+ if (IS_ERR(audio_class)) { -+ err = PTR_ERR(audio_class); -+ audio_class = NULL; -+ } -+ -+ return err; -+} -+module_init(u_audio_init); -+ -+static void __exit u_audio_exit(void) -+{ -+ if (audio_class) -+ class_destroy(audio_class); -+} -+module_exit(u_audio_exit); -+ - MODULE_LICENSE("GPL"); - MODULE_DESCRIPTION("USB gadget \"ALSA sound card\" utilities"); - MODULE_AUTHOR("Ruslan Bilovol"); diff --git a/drivers/usb/gadget/function/u_audio.h b/drivers/usb/gadget/function/u_audio.h -index 5ea6b86f1fda..49764d1c09ee 100644 +old mode 100644 +new mode 100755 +index 5ea6b86f1..a218cdf77 --- a/drivers/usb/gadget/function/u_audio.h +++ b/drivers/usb/gadget/function/u_audio.h -@@ -11,21 +11,70 @@ +@@ -11,6 +11,14 @@ #include -+#define UAC_VOLUME_CUR 0x0000 -+#define UAC_VOLUME_RES 0x0080 /* 0.5 dB */ -+#define UAC_VOLUME_MAX 0x1900 /* 25 dB */ -+#define UAC_VOLUME_MIN 0xE700 /* -25 dB */ -+#define UAC_VOLUME_NEGATIVE_INFINITY 0x8000 -+#define UAC_MAX_RATES 10 ++/* ++ * Same maximum frequency deviation on the slower side as in ++ * sound/usb/endpoint.c. Value is expressed in per-mil deviation. ++ * The maximum deviation on the faster side will be provided as ++ * parameter, as it impacts the endpoint required bandwidth. ++ */ ++#define FBACK_SLOW_MAX 250 ++ struct uac_params { /* playback */ -+ int p_volume; -+ int p_mute; int p_chmask; /* channel mask */ -- int p_srate; /* rate in Hz */ -+ int p_srate[UAC_MAX_RATES]; /* rate in Hz */ -+ int p_srate_active; /* selected rate in Hz */ - int p_ssize; /* sample size */ - - /* capture */ -+ int c_volume; -+ int c_mute; - int c_chmask; /* channel mask */ -- int c_srate; /* rate in Hz */ -+ int c_srate[UAC_MAX_RATES]; /* rate in Hz */ -+ int c_srate_active; /* selected rate in Hz */ +@@ -23,6 +31,7 @@ struct uac_params { int c_ssize; /* sample size */ -+ int ppm; /* difference between audio clk and usb clk */ -+ int req_number; /* number of preallocated requests */ ++ int fb_max; /* upper frequency drift feedback limit per-mil */ }; -+enum usb_state_index { -+ SET_INTERFACE_OUT, -+ SET_INTERFACE_IN, -+ SET_SAMPLE_RATE_OUT, -+ SET_SAMPLE_RATE_IN, -+ SET_VOLUME_OUT, -+ SET_VOLUME_IN, -+ SET_MUTE_OUT, -+ SET_MUTE_IN, -+ SET_AUDIO_CLK, -+ SET_USB_STATE_MAX, -+}; + struct g_audio { +@@ -30,7 +39,10 @@ struct g_audio { + struct usb_gadget *gadget; + + struct usb_ep *in_ep; + -+enum stream_state_index { -+ STATE_OUT, -+ STATE_IN, -+}; + struct usb_ep *out_ep; ++ /* feedback IN endpoint corresponding to out_ep */ ++ struct usb_ep *in_ep_fback; + + /* Max packet size for all in_ep possible speeds */ + unsigned int in_ep_maxpsize; +diff --git a/drivers/usb/gadget/function/u_ether.c b/drivers/usb/gadget/function/u_ether.c +old mode 100644 +new mode 100755 +index a9cb647ba..85a3f6d4b +--- a/drivers/usb/gadget/function/u_ether.c ++++ b/drivers/usb/gadget/function/u_ether.c +@@ -80,6 +80,7 @@ struct eth_dev { + + bool zlp; + bool no_skb_reserve; ++ bool ifname_set; + u8 host_mac[ETH_ALEN]; + u8 dev_mac[ETH_ALEN]; + }; +@@ -1005,15 +1006,45 @@ EXPORT_SYMBOL_GPL(gether_get_qmult); + + int gether_get_ifname(struct net_device *net, char *name, int len) + { ++ struct eth_dev *dev = netdev_priv(net); + int ret; + + rtnl_lock(); +- ret = scnprintf(name, len, "%s\n", netdev_name(net)); ++ ret = scnprintf(name, len, "%s\n", ++ dev->ifname_set ? net->name : netdev_name(net)); + rtnl_unlock(); + return ret; + } + EXPORT_SYMBOL_GPL(gether_get_ifname); + ++int gether_set_ifname(struct net_device *net, const char *name, int len) ++{ ++ struct eth_dev *dev = netdev_priv(net); ++ char tmp[IFNAMSIZ]; ++ const char *p; + -+struct frame_number_data { -+ uint32_t fn_begin; /* frame number when starting statistics */ -+ uint32_t fn_last; /* frame number in the latest statistics */ -+ uint32_t fn_overflow; /* the time of frame number overflow */ -+ uint32_t second; /* total seconds counted */ -+ ktime_t time_begin; /* system time when starting statistics */ -+ ktime_t time_last; /* system time in the latest statistics */ -+}; ++ if (name[len - 1] == '\n') ++ len--; + - struct g_audio { -+ struct device *device; -+ bool usb_state[SET_USB_STATE_MAX]; -+ bool stream_state[2]; -+ struct work_struct work; ++ if (len >= sizeof(tmp)) ++ return -E2BIG; + -+ struct frame_number_data *fn; -+ struct delayed_work ppm_work; ++ strscpy(tmp, name, len + 1); ++ if (!dev_valid_name(tmp)) ++ return -EINVAL; + - struct usb_function func; - struct usb_gadget *gadget; ++ /* Require exactly one %d, so binding will not fail with EEXIST. */ ++ p = strchr(name, '%'); ++ if (!p || p[1] != 'd' || strchr(p + 2, '%')) ++ return -EINVAL; ++ ++ strncpy(net->name, tmp, sizeof(net->name)); ++ dev->ifname_set = true; ++ ++ return 0; ++} ++EXPORT_SYMBOL_GPL(gether_set_ifname); ++ + /* + * gether_cleanup - remove Ethernet-over-USB device + * Context: may sleep +diff --git a/drivers/usb/gadget/function/u_ether.h b/drivers/usb/gadget/function/u_ether.h +old mode 100644 +new mode 100755 +index 10dd64068..40144546d +--- a/drivers/usb/gadget/function/u_ether.h ++++ b/drivers/usb/gadget/function/u_ether.h +@@ -244,6 +244,18 @@ unsigned gether_get_qmult(struct net_device *net); + */ + int gether_get_ifname(struct net_device *net, char *name, int len); + ++/** ++ * gether_set_ifname - set an ethernet-over-usb link interface name ++ * @net: device representing this link ++ * @name: new interface name ++ * @len: length of @name ++ * ++ * This sets the interface name of this ethernet-over-usb link. ++ * A single terminating newline, if any, is ignored. ++ * Returns zero on success, else negative errno. ++ */ ++int gether_set_ifname(struct net_device *net, const char *name, int len); ++ + void gether_cleanup(struct eth_dev *dev); + + /* connect/disconnect is handled by individual functions */ +diff --git a/drivers/usb/gadget/function/u_ether_configfs.h b/drivers/usb/gadget/function/u_ether_configfs.h +old mode 100644 +new mode 100755 +index f982e18a5..f558c3139 +--- a/drivers/usb/gadget/function/u_ether_configfs.h ++++ b/drivers/usb/gadget/function/u_ether_configfs.h +@@ -148,7 +148,20 @@ out: \ + return ret; \ + } \ + \ +- CONFIGFS_ATTR_RO(_f_##_opts_, ifname) ++ static ssize_t _f_##_opts_ifname_store(struct config_item *item, \ ++ const char *page, size_t len)\ ++ { \ ++ struct f_##_f_##_opts *opts = to_f_##_f_##_opts(item); \ ++ int ret = -EBUSY; \ ++ \ ++ mutex_lock(&opts->lock); \ ++ if (!opts->refcnt) \ ++ ret = gether_set_ifname(opts->net, page, len); \ ++ mutex_unlock(&opts->lock); \ ++ return ret ?: len; \ ++ } \ ++ \ ++ CONFIGFS_ATTR(_f_##_opts_, ifname) + + #define USB_ETHER_CONFIGFS_ITEM_ATTR_U8_RW(_f_, _n_) \ + static ssize_t _f_##_opts_##_n_##_show(struct config_item *item,\ +diff --git a/drivers/usb/gadget/function/u_serial.c b/drivers/usb/gadget/function/u_serial.c +old mode 100644 +new mode 100755 +index 2caccbb6e..1e59204ec +--- a/drivers/usb/gadget/function/u_serial.c ++++ b/drivers/usb/gadget/function/u_serial.c +@@ -258,9 +258,7 @@ __acquires(&port->port_lock) + list_del(&req->list); + req->zero = kfifo_is_empty(&port->port_write_buf); + +- pr_vdebug("ttyGS%d: tx len=%d, 0x%02x 0x%02x 0x%02x ...\n", +- port->port_num, len, *((u8 *)req->buf), +- *((u8 *)req->buf+1), *((u8 *)req->buf+2)); ++ pr_vdebug("ttyGS%d: tx len=%d, %3ph ...\n", port->port_num, len, req->buf); + + /* Drop lock while we call out of driver; completions + * could be issued while we do so. Disconnection may +@@ -346,7 +344,7 @@ __acquires(&port->port_lock) + } -@@ -81,5 +130,9 @@ int u_audio_start_capture(struct g_audio *g_audio); - void u_audio_stop_capture(struct g_audio *g_audio); - int u_audio_start_playback(struct g_audio *g_audio); - void u_audio_stop_playback(struct g_audio *g_audio); -+int u_audio_set_capture_srate(struct g_audio *audio_dev, int srate); -+int u_audio_set_playback_srate(struct g_audio *audio_dev, int srate); -+int u_audio_fu_set_cmd(struct usb_audio_control *con, u8 cmd, int value); -+int u_audio_fu_get_cmd(struct usb_audio_control *con, u8 cmd); + /* +- * RX tasklet takes data out of the RX queue and hands it up to the TTY ++ * RX work takes data out of the RX queue and hands it up to the TTY + * layer until it refuses to take any more data (or is throttled back). + * Then it issues reads for any further data. + * +@@ -709,7 +707,7 @@ static void gs_close(struct tty_struct *tty, struct file *file) - #endif /* __U_AUDIO_H */ + /* Iff we're disconnected, there can be no I/O in flight so it's + * ok to free the circular buffer; else just scrub it. And don't +- * let the push tasklet fire again until we're re-opened. ++ * let the push async work fire again until we're re-opened. + */ + if (gser == NULL) + kfifo_free(&port->port_write_buf); +diff --git a/drivers/usb/gadget/function/u_uac.h b/drivers/usb/gadget/function/u_uac.h +new file mode 100755 +index 000000000..224ddc397 +--- /dev/null ++++ b/drivers/usb/gadget/function/u_uac.h +@@ -0,0 +1,194 @@ ++/* ++ * u_uac.h - Utility definitions for UAC function ++ * ++ * Copyright (C) 2016 Ruslan Bilovol ++ * Copyright (C) 2017 Julian Scheel ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License version 2 as ++ * published by the Free Software Foundation. ++ */ ++ ++#ifndef __U_UAC_H ++#define __U_UAC_H ++ ++#include ++#include "u_audio.h" ++ ++#define UAC_DEF_CCHMASK 0x3 ++#define UAC_DEF_CSRATE 48000 ++#define UAC_DEF_CSSIZE 2 ++#define UAC_DEF_CFU 0 ++#define UAC_DEF_PCHMASK 0x3 ++#define UAC_DEF_PSRATE 48000 ++#define UAC_DEF_PSSIZE 2 ++#define UAC_DEF_PFU 0 ++#define UAC_DEF_REQ_NUM 2 ++ ++#define UAC1_OUT_EP_MAX_PACKET_SIZE 200 ++ ++#define EPIN_EN(_opts) ((_opts)->p_chmask != 0) ++#define EPOUT_EN(_opts) ((_opts)->c_chmask != 0) ++#define EPIN_FU(_opts) ((_opts)->p_feature_unit != 0) ++#define EPOUT_FU(_opts) ((_opts)->c_feature_unit != 0) ++ ++struct f_uac_opts { ++ struct usb_function_instance func_inst; ++ int c_chmask; ++ int c_srate[UAC_MAX_RATES]; ++ int c_srate_active; ++ int c_ssize; ++ int c_feature_unit; ++ int p_chmask; ++ int p_srate[UAC_MAX_RATES]; ++ int p_srate_active; ++ int p_ssize; ++ int p_feature_unit; ++ int req_number; ++ unsigned bound:1; ++ ++ struct mutex lock; ++ int refcnt; ++}; ++ ++#define UAC_ATTRIBUTE(name) \ ++static ssize_t f_uac_opts_##name##_show( \ ++ struct config_item *item, \ ++ char *page) \ ++{ \ ++ struct f_uac_opts *opts = to_f_uac_opts(item); \ ++ int result; \ ++ \ ++ mutex_lock(&opts->lock); \ ++ result = sprintf(page, "%u\n", opts->name); \ ++ mutex_unlock(&opts->lock); \ ++ \ ++ return result; \ ++} \ ++ \ ++static ssize_t f_uac_opts_##name##_store( \ ++ struct config_item *item, \ ++ const char *page, size_t len) \ ++{ \ ++ struct f_uac_opts *opts = to_f_uac_opts(item); \ ++ int ret; \ ++ u32 num; \ ++ \ ++ mutex_lock(&opts->lock); \ ++ if (opts->refcnt) { \ ++ ret = -EBUSY; \ ++ goto end; \ ++ } \ ++ \ ++ ret = kstrtou32(page, 0, &num); \ ++ if (ret) \ ++ goto end; \ ++ \ ++ opts->name = num; \ ++ ret = len; \ ++ \ ++end: \ ++ mutex_unlock(&opts->lock); \ ++ return ret; \ ++} \ ++ \ ++CONFIGFS_ATTR(f_uac_opts_, name) ++ ++#define UAC_RATE_ATTRIBUTE(name) \ ++static ssize_t f_uac_opts_##name##_show(struct config_item *item, \ ++ char *page) \ ++{ \ ++ struct f_uac_opts *opts = to_f_uac_opts(item); \ ++ int result = 0; \ ++ int i; \ ++ \ ++ mutex_lock(&opts->lock); \ ++ page[0] = '\0'; \ ++ for (i = 0; i < UAC_MAX_RATES; i++) { \ ++ if (opts->name[i] == 0) \ ++ continue; \ ++ result += sprintf(page + strlen(page), "%u,", \ ++ opts->name[i]); \ ++ } \ ++ if (strlen(page) > 0) \ ++ page[strlen(page) - 1] = '\n'; \ ++ mutex_unlock(&opts->lock); \ ++ \ ++ return result; \ ++} \ ++ \ ++static ssize_t f_uac_opts_##name##_store(struct config_item *item, \ ++ const char *page, size_t len) \ ++{ \ ++ struct f_uac_opts *opts = to_f_uac_opts(item); \ ++ char *split_page = NULL; \ ++ int ret = -EINVAL; \ ++ char *token; \ ++ u32 num; \ ++ int i; \ ++ \ ++ mutex_lock(&opts->lock); \ ++ if (opts->refcnt) { \ ++ ret = -EBUSY; \ ++ goto end; \ ++ } \ ++ \ ++ i = 0; \ ++ memset(opts->name, 0x00, sizeof(opts->name)); \ ++ split_page = kstrdup(page, GFP_KERNEL); \ ++ while ((token = strsep(&split_page, ",")) != NULL) { \ ++ ret = kstrtou32(token, 0, &num); \ ++ if (ret) \ ++ goto end; \ ++ \ ++ opts->name[i++] = num; \ ++ opts->name##_active = num; \ ++ ret = len; \ ++ }; \ ++ \ ++end: \ ++ kfree(split_page); \ ++ mutex_unlock(&opts->lock); \ ++ return ret; \ ++} \ ++ \ ++CONFIGFS_ATTR(f_uac_opts_, name) ++ ++struct f_uac { ++ struct g_audio g_audio; ++ u8 ac_intf, as_in_intf, as_out_intf; ++ u8 ac_alt, as_in_alt, as_out_alt; /* needed for get_alt() */ ++ int ctl_id; ++ ++ struct list_head cs; ++ u8 set_cmd; ++ u8 get_cmd; ++ struct usb_audio_control *set_con; ++ struct usb_audio_control *get_con; ++}; ++ ++static inline struct f_uac *func_to_uac(struct usb_function *f) ++{ ++ return container_of(f, struct f_uac, g_audio.func); ++} ++ ++static inline ++struct f_uac_opts *g_audio_to_uac_opts(struct g_audio *agdev) ++{ ++ return container_of(agdev->func.fi, struct f_uac_opts, func_inst); ++} ++ ++static inline struct f_uac_opts *to_f_uac_opts(struct config_item *item) ++{ ++ return container_of(to_config_group(item), struct f_uac_opts, ++ func_inst.group); ++} ++ ++static inline void f_uac_attr_release(struct config_item *item) ++{ ++ struct f_uac_opts *opts = to_f_uac_opts(item); ++ ++ usb_put_function_instance(&opts->func_inst); ++} ++ ++#endif /* __U_UAC_H */ diff --git a/drivers/usb/gadget/function/u_uac1.h b/drivers/usb/gadget/function/u_uac1.h -deleted file mode 100644 -index 39c0e29e1b46..000000000000 ---- a/drivers/usb/gadget/function/u_uac1.h -+++ /dev/null -@@ -1,38 +0,0 @@ --/* SPDX-License-Identifier: GPL-2.0 */ --/* -- * u_uac1.h - Utility definitions for UAC1 function -- * -- * Copyright (C) 2016 Ruslan Bilovol -- */ -- --#ifndef __U_UAC1_H --#define __U_UAC1_H -- --#include -- --#define UAC1_OUT_EP_MAX_PACKET_SIZE 200 --#define UAC1_DEF_CCHMASK 0x3 --#define UAC1_DEF_CSRATE 48000 --#define UAC1_DEF_CSSIZE 2 --#define UAC1_DEF_PCHMASK 0x3 --#define UAC1_DEF_PSRATE 48000 --#define UAC1_DEF_PSSIZE 2 --#define UAC1_DEF_REQ_NUM 2 -- -- --struct f_uac1_opts { -- struct usb_function_instance func_inst; -- int c_chmask; -- int c_srate; -- int c_ssize; -- int p_chmask; -- int p_srate; -- int p_ssize; -- int req_number; -- unsigned bound:1; -- -- struct mutex lock; -- int refcnt; --}; -- --#endif /* __U_UAC1_H */ +old mode 100644 +new mode 100755 diff --git a/drivers/usb/gadget/function/u_uac1_legacy.c b/drivers/usb/gadget/function/u_uac1_legacy.c -index 60ae8b2d3f6a..2f149853a91b 100644 +index 60ae8b2d3..2f149853a 100644 --- a/drivers/usb/gadget/function/u_uac1_legacy.c +++ b/drivers/usb/gadget/function/u_uac1_legacy.c @@ -119,6 +119,10 @@ static int playback_default_hw_params(struct gaudio_snd_dev *snd) @@ -1586142,54 +1590134,33 @@ index 60ae8b2d3f6a..2f149853a91b 100644 snd_pcm_kernel_ioctl(substream, SNDRV_PCM_IOCTL_DROP, NULL); snd_pcm_kernel_ioctl(substream, SNDRV_PCM_IOCTL_HW_PARAMS, params); diff --git a/drivers/usb/gadget/function/u_uac2.h b/drivers/usb/gadget/function/u_uac2.h -deleted file mode 100644 -index b5035711172d..000000000000 +old mode 100644 +new mode 100755 +index b50357111..179d3ef6a --- a/drivers/usb/gadget/function/u_uac2.h -+++ /dev/null -@@ -1,41 +0,0 @@ --/* SPDX-License-Identifier: GPL-2.0 */ --/* -- * u_uac2.h -- * -- * Utility definitions for UAC2 function -- * -- * Copyright (c) 2014 Samsung Electronics Co., Ltd. -- * http://www.samsung.com -- * -- * Author: Andrzej Pietrasiewicz -- */ -- --#ifndef U_UAC2_H --#define U_UAC2_H -- --#include -- --#define UAC2_DEF_PCHMASK 0x3 --#define UAC2_DEF_PSRATE 48000 --#define UAC2_DEF_PSSIZE 2 --#define UAC2_DEF_CCHMASK 0x3 --#define UAC2_DEF_CSRATE 64000 --#define UAC2_DEF_CSSIZE 2 --#define UAC2_DEF_REQ_NUM 2 -- --struct f_uac2_opts { -- struct usb_function_instance func_inst; -- int p_chmask; -- int p_srate; -- int p_ssize; -- int c_chmask; -- int c_srate; -- int c_ssize; -- int req_number; -- bool bound; -- -- struct mutex lock; -- int refcnt; --}; -- --#endif ++++ b/drivers/usb/gadget/function/u_uac2.h +@@ -21,7 +21,9 @@ + #define UAC2_DEF_CCHMASK 0x3 + #define UAC2_DEF_CSRATE 64000 + #define UAC2_DEF_CSSIZE 2 ++#define UAC2_DEF_CSYNC USB_ENDPOINT_SYNC_ASYNC + #define UAC2_DEF_REQ_NUM 2 ++#define UAC2_DEF_FB_MAX 5 + + struct f_uac2_opts { + struct usb_function_instance func_inst; +@@ -31,7 +33,9 @@ struct f_uac2_opts { + int c_chmask; + int c_srate; + int c_ssize; ++ int c_sync; + int req_number; ++ int fb_max; + bool bound; + + struct mutex lock; diff --git a/drivers/usb/gadget/function/u_uvc.h b/drivers/usb/gadget/function/u_uvc.h -index 9a01a7d4f17f..3e92a28d8d78 100644 +index 9a01a7d4f..3e92a28d8 100644 --- a/drivers/usb/gadget/function/u_uvc.h +++ b/drivers/usb/gadget/function/u_uvc.h @@ -18,15 +18,18 @@ @@ -1586239,7 +1590210,7 @@ index 9a01a7d4f17f..3e92a28d8d78 100644 #endif /* U_UVC_H */ diff --git a/drivers/usb/gadget/function/uvc.h b/drivers/usb/gadget/function/uvc.h -index 23ee25383c1f..8fb61023dd14 100644 +index 23ee25383..8fb61023d 100644 --- a/drivers/usb/gadget/function/uvc.h +++ b/drivers/usb/gadget/function/uvc.h @@ -14,6 +14,7 @@ @@ -1586287,7 +1590258,7 @@ index 23ee25383c1f..8fb61023dd14 100644 static inline struct uvc_device *to_uvc(struct usb_function *f) diff --git a/drivers/usb/gadget/function/uvc_configfs.c b/drivers/usb/gadget/function/uvc_configfs.c -index 00fb58e50a15..62c20c0bcd87 100644 +index 00fb58e50..62c20c0bc 100644 --- a/drivers/usb/gadget/function/uvc_configfs.c +++ b/drivers/usb/gadget/function/uvc_configfs.c @@ -12,6 +12,7 @@ @@ -1586801,7 +1590772,7 @@ index 00fb58e50a15..62c20c0bcd87 100644 }; diff --git a/drivers/usb/gadget/function/uvc_queue.c b/drivers/usb/gadget/function/uvc_queue.c -index 61e2c94cc0b0..3cc3da8ffb77 100644 +index 61e2c94cc..3cc3da8ff 100644 --- a/drivers/usb/gadget/function/uvc_queue.c +++ b/drivers/usb/gadget/function/uvc_queue.c @@ -124,6 +124,14 @@ int uvcg_queue_init(struct uvc_video_queue *queue, enum v4l2_buf_type type, @@ -1586820,7 +1590791,7 @@ index 61e2c94cc0b0..3cc3da8ffb77 100644 if (ret) return ret; diff --git a/drivers/usb/gadget/function/uvc_v4l2.c b/drivers/usb/gadget/function/uvc_v4l2.c -index 4ca89eab6159..2528c894254f 100644 +index 4ca89eab6..2528c8942 100644 --- a/drivers/usb/gadget/function/uvc_v4l2.c +++ b/drivers/usb/gadget/function/uvc_v4l2.c @@ -41,6 +41,7 @@ uvc_send_response(struct uvc_device *uvc, struct uvc_request_data *data) @@ -1586877,7 +1590848,7 @@ index 4ca89eab6159..2528c894254f 100644 .poll = uvc_v4l2_poll, #ifndef CONFIG_MMU diff --git a/drivers/usb/gadget/function/uvc_video.c b/drivers/usb/gadget/function/uvc_video.c -index 633e23d58d86..5311b0f40e78 100644 +index 633e23d58..5311b0f40 100644 --- a/drivers/usb/gadget/function/uvc_video.c +++ b/drivers/usb/gadget/function/uvc_video.c @@ -12,12 +12,14 @@ @@ -1586993,171 +1590964,10 @@ index 633e23d58d86..5311b0f40e78 100644 return ret; diff --git a/drivers/usb/gadget/legacy/audio.c b/drivers/usb/gadget/legacy/audio.c -index a748ed0842e8..104d1c4ce7f9 100644 ---- a/drivers/usb/gadget/legacy/audio.c -+++ b/drivers/usb/gadget/legacy/audio.c -@@ -17,69 +17,36 @@ - - USB_GADGET_COMPOSITE_OPTIONS(); - --#ifndef CONFIG_GADGET_UAC1 --#include "u_uac2.h" -+#if !defined(CONFIG_GADGET_UAC1) || !defined(CONFIG_GADGET_UAC1_LEGACY) -+#include "u_uac.h" - - /* Playback(USB-IN) Default Stereo - Fl/Fr */ --static int p_chmask = UAC2_DEF_PCHMASK; -+static int p_chmask = UAC_DEF_PCHMASK; - module_param(p_chmask, uint, S_IRUGO); - MODULE_PARM_DESC(p_chmask, "Playback Channel Mask"); - - /* Playback Default 48 KHz */ --static int p_srate = UAC2_DEF_PSRATE; -+static int p_srate = UAC_DEF_PSRATE; - module_param(p_srate, uint, S_IRUGO); - MODULE_PARM_DESC(p_srate, "Playback Sampling Rate"); - - /* Playback Default 16bits/sample */ --static int p_ssize = UAC2_DEF_PSSIZE; -+static int p_ssize = UAC_DEF_PSSIZE; - module_param(p_ssize, uint, S_IRUGO); - MODULE_PARM_DESC(p_ssize, "Playback Sample Size(bytes)"); - - /* Capture(USB-OUT) Default Stereo - Fl/Fr */ --static int c_chmask = UAC2_DEF_CCHMASK; -+static int c_chmask = UAC_DEF_CCHMASK; - module_param(c_chmask, uint, S_IRUGO); - MODULE_PARM_DESC(c_chmask, "Capture Channel Mask"); - - /* Capture Default 64 KHz */ --static int c_srate = UAC2_DEF_CSRATE; -+static int c_srate = UAC_DEF_CSRATE; - module_param(c_srate, uint, S_IRUGO); - MODULE_PARM_DESC(c_srate, "Capture Sampling Rate"); - - /* Capture Default 16bits/sample */ --static int c_ssize = UAC2_DEF_CSSIZE; --module_param(c_ssize, uint, S_IRUGO); --MODULE_PARM_DESC(c_ssize, "Capture Sample Size(bytes)"); --#else --#ifndef CONFIG_GADGET_UAC1_LEGACY --#include "u_uac1.h" -- --/* Playback(USB-IN) Default Stereo - Fl/Fr */ --static int p_chmask = UAC1_DEF_PCHMASK; --module_param(p_chmask, uint, S_IRUGO); --MODULE_PARM_DESC(p_chmask, "Playback Channel Mask"); -- --/* Playback Default 48 KHz */ --static int p_srate = UAC1_DEF_PSRATE; --module_param(p_srate, uint, S_IRUGO); --MODULE_PARM_DESC(p_srate, "Playback Sampling Rate"); -- --/* Playback Default 16bits/sample */ --static int p_ssize = UAC1_DEF_PSSIZE; --module_param(p_ssize, uint, S_IRUGO); --MODULE_PARM_DESC(p_ssize, "Playback Sample Size(bytes)"); -- --/* Capture(USB-OUT) Default Stereo - Fl/Fr */ --static int c_chmask = UAC1_DEF_CCHMASK; --module_param(c_chmask, uint, S_IRUGO); --MODULE_PARM_DESC(c_chmask, "Capture Channel Mask"); -- --/* Capture Default 48 KHz */ --static int c_srate = UAC1_DEF_CSRATE; --module_param(c_srate, uint, S_IRUGO); --MODULE_PARM_DESC(c_srate, "Capture Sampling Rate"); -- --/* Capture Default 16bits/sample */ --static int c_ssize = UAC1_DEF_CSSIZE; -+static int c_ssize = UAC_DEF_CSSIZE; - module_param(c_ssize, uint, S_IRUGO); - MODULE_PARM_DESC(c_ssize, "Capture Sample Size(bytes)"); - #else /* CONFIG_GADGET_UAC1_LEGACY */ -@@ -109,7 +76,6 @@ static int audio_buf_size = UAC1_AUDIO_BUF_SIZE; - module_param(audio_buf_size, int, S_IRUGO); - MODULE_PARM_DESC(audio_buf_size, "Audio buffer size"); - #endif /* CONFIG_GADGET_UAC1_LEGACY */ --#endif - - /* string IDs are assigned dynamically */ - -@@ -235,14 +201,10 @@ static struct usb_configuration audio_config_driver = { - - static int audio_bind(struct usb_composite_dev *cdev) - { --#ifndef CONFIG_GADGET_UAC1 -- struct f_uac2_opts *uac2_opts; --#else --#ifndef CONFIG_GADGET_UAC1_LEGACY -- struct f_uac1_opts *uac1_opts; -+#if !defined(CONFIG_GADGET_UAC1) || !defined(CONFIG_GADGET_UAC1_LEGACY) -+ struct f_uac_opts *uac_opts; - #else - struct f_uac1_legacy_opts *uac1_opts; --#endif - #endif - int status; - -@@ -250,9 +212,11 @@ static int audio_bind(struct usb_composite_dev *cdev) - fi_uac2 = usb_get_function_instance("uac2"); - if (IS_ERR(fi_uac2)) - return PTR_ERR(fi_uac2); -+ uac_opts = container_of(fi_uac2, struct f_uac_opts, func_inst); - #else - #ifndef CONFIG_GADGET_UAC1_LEGACY - fi_uac1 = usb_get_function_instance("uac1"); -+ uac_opts = container_of(fi_uac1, struct f_uac_opts, func_inst); - #else - fi_uac1 = usb_get_function_instance("uac1_legacy"); - #endif -@@ -260,25 +224,17 @@ static int audio_bind(struct usb_composite_dev *cdev) - return PTR_ERR(fi_uac1); - #endif - --#ifndef CONFIG_GADGET_UAC1 -- uac2_opts = container_of(fi_uac2, struct f_uac2_opts, func_inst); -- uac2_opts->p_chmask = p_chmask; -- uac2_opts->p_srate = p_srate; -- uac2_opts->p_ssize = p_ssize; -- uac2_opts->c_chmask = c_chmask; -- uac2_opts->c_srate = c_srate; -- uac2_opts->c_ssize = c_ssize; -- uac2_opts->req_number = UAC2_DEF_REQ_NUM; --#else --#ifndef CONFIG_GADGET_UAC1_LEGACY -- uac1_opts = container_of(fi_uac1, struct f_uac1_opts, func_inst); -- uac1_opts->p_chmask = p_chmask; -- uac1_opts->p_srate = p_srate; -- uac1_opts->p_ssize = p_ssize; -- uac1_opts->c_chmask = c_chmask; -- uac1_opts->c_srate = c_srate; -- uac1_opts->c_ssize = c_ssize; -- uac1_opts->req_number = UAC1_DEF_REQ_NUM; -+#if !defined(CONFIG_GADGET_UAC1) || !defined(CONFIG_GADGET_UAC1_LEGACY) -+ memset(uac_opts, 0x0, sizeof(*uac_opts)); -+ uac_opts->p_chmask = p_chmask; -+ uac_opts->p_srate[0] = p_srate; -+ uac_opts->p_srate_active = p_srate; -+ uac_opts->p_ssize = p_ssize; -+ uac_opts->c_chmask = c_chmask; -+ uac_opts->c_srate[0] = c_srate; -+ uac_opts->c_srate_active = c_srate; -+ uac_opts->c_ssize = c_ssize; -+ uac_opts->req_number = UAC_DEF_REQ_NUM; - #else /* CONFIG_GADGET_UAC1_LEGACY */ - uac1_opts = container_of(fi_uac1, struct f_uac1_legacy_opts, func_inst); - uac1_opts->fn_play = fn_play; -@@ -288,7 +244,6 @@ static int audio_bind(struct usb_composite_dev *cdev) - uac1_opts->req_count = req_count; - uac1_opts->audio_buf_size = audio_buf_size; - #endif /* CONFIG_GADGET_UAC1_LEGACY */ --#endif - - status = usb_string_ids_tab(cdev, strings_dev); - if (status < 0) +old mode 100644 +new mode 100755 diff --git a/drivers/usb/gadget/legacy/webcam.c b/drivers/usb/gadget/legacy/webcam.c -index 2c9eab2b863d..b18e011b57a1 100644 +index 2c9eab2b8..b18e011b5 100644 --- a/drivers/usb/gadget/legacy/webcam.c +++ b/drivers/usb/gadget/legacy/webcam.c @@ -383,6 +383,8 @@ webcam_bind(struct usb_composite_dev *cdev) @@ -1587170,10 +1590980,46 @@ index 2c9eab2b863d..b18e011b57a1 100644 /* Allocate string descriptor numbers ... note that string contents * can be overridden by the composite_dev glue. diff --git a/drivers/usb/gadget/udc/core.c b/drivers/usb/gadget/udc/core.c -index da691a69fec1..0e6dbf9da7a5 100644 +old mode 100644 +new mode 100755 +index da691a69f..193974849 --- a/drivers/usb/gadget/udc/core.c +++ b/drivers/usb/gadget/udc/core.c -@@ -755,7 +755,7 @@ int usb_gadget_deactivate(struct usb_gadget *gadget) +@@ -29,6 +29,7 @@ + * @list: for use by the udc class driver + * @vbus: for udcs who care about vbus status, this value is real vbus status; + * for udcs who do not care about vbus status, this value is always true ++ * @started: the UDC's started state. True if the UDC had started. + * + * This represents the internal data structure which is used by the UDC-class + * to hold information about udc driver and gadget together. +@@ -39,6 +40,7 @@ struct usb_udc { + struct device dev; + struct list_head list; + bool vbus; ++ bool started; + }; + + static struct class *udc_class; +@@ -87,7 +89,7 @@ EXPORT_SYMBOL_GPL(usb_ep_set_maxpacket_limit); + * configurable, with more generic names like "ep-a". (remember that for + * USB, "in" means "towards the USB host".) + * +- * This routine must be called in process context. ++ * This routine may be called in an atomic (interrupt) context. + * + * returns zero, or a negative error code. + */ +@@ -132,7 +134,7 @@ EXPORT_SYMBOL_GPL(usb_ep_enable); + * gadget drivers must call usb_ep_enable() again before queueing + * requests to the endpoint. + * +- * This routine must be called in process context. ++ * This routine may be called in an atomic (interrupt) context. + * + * returns zero, or a negative error code. + */ +@@ -755,7 +757,7 @@ int usb_gadget_deactivate(struct usb_gadget *gadget) { int ret = 0; @@ -1587182,8 +1591028,4165 @@ index da691a69fec1..0e6dbf9da7a5 100644 goto out; if (gadget->connected) { +@@ -1004,6 +1006,25 @@ int usb_gadget_ep_match_desc(struct usb_gadget *gadget, + } + EXPORT_SYMBOL_GPL(usb_gadget_ep_match_desc); + ++/** ++ * usb_gadget_check_config - checks if the UDC can support the binded ++ * configuration ++ * @gadget: controller to check the USB configuration ++ * ++ * Ensure that a UDC is able to support the requested resources by a ++ * configuration, and that there are no resource limitations, such as ++ * internal memory allocated to all requested endpoints. ++ * ++ * Returns zero on success, else a negative errno. ++ */ ++int usb_gadget_check_config(struct usb_gadget *gadget) ++{ ++ if (gadget->ops->check_config) ++ return gadget->ops->check_config(gadget); ++ return 0; ++} ++EXPORT_SYMBOL_GPL(usb_gadget_check_config); ++ + /* ------------------------------------------------------------------------- */ + + static void usb_gadget_state_work(struct work_struct *work) +@@ -1085,7 +1106,18 @@ EXPORT_SYMBOL_GPL(usb_gadget_udc_reset); + */ + static inline int usb_gadget_udc_start(struct usb_udc *udc) + { +- return udc->gadget->ops->udc_start(udc->gadget, udc->driver); ++ int ret; ++ ++ if (udc->started) { ++ dev_err(&udc->dev, "UDC had already started\n"); ++ return -EBUSY; ++ } ++ ++ ret = udc->gadget->ops->udc_start(udc->gadget, udc->driver); ++ if (!ret) ++ udc->started = true; ++ ++ return ret; + } + + /** +@@ -1101,7 +1133,13 @@ static inline int usb_gadget_udc_start(struct usb_udc *udc) + */ + static inline void usb_gadget_udc_stop(struct usb_udc *udc) + { ++ if (!udc->started) { ++ dev_err(&udc->dev, "UDC had already stopped\n"); ++ return; ++ } ++ + udc->gadget->ops->udc_stop(udc->gadget); ++ udc->started = false; + } + + /** +@@ -1117,12 +1155,65 @@ static inline void usb_gadget_udc_stop(struct usb_udc *udc) + static inline void usb_gadget_udc_set_speed(struct usb_udc *udc, + enum usb_device_speed speed) + { +- if (udc->gadget->ops->udc_set_speed) { +- enum usb_device_speed s; ++ struct usb_gadget *gadget = udc->gadget; ++ enum usb_device_speed s; + +- s = min(speed, udc->gadget->max_speed); +- udc->gadget->ops->udc_set_speed(udc->gadget, s); +- } ++ if (speed == USB_SPEED_UNKNOWN) ++ s = gadget->max_speed; ++ else ++ s = min(speed, gadget->max_speed); ++ ++ if (s == USB_SPEED_SUPER_PLUS && gadget->ops->udc_set_ssp_rate) ++ gadget->ops->udc_set_ssp_rate(gadget, gadget->max_ssp_rate); ++ else if (gadget->ops->udc_set_speed) ++ gadget->ops->udc_set_speed(gadget, s); ++} ++ ++/** ++ * usb_gadget_enable_async_callbacks - tell usb device controller to enable asynchronous callbacks ++ * @udc: The UDC which should enable async callbacks ++ * ++ * This routine is used when binding gadget drivers. It undoes the effect ++ * of usb_gadget_disable_async_callbacks(); the UDC driver should enable IRQs ++ * (if necessary) and resume issuing callbacks. ++ * ++ * This routine will always be called in process context. ++ */ ++static inline void usb_gadget_enable_async_callbacks(struct usb_udc *udc) ++{ ++ struct usb_gadget *gadget = udc->gadget; ++ ++ if (gadget->ops->udc_async_callbacks) ++ gadget->ops->udc_async_callbacks(gadget, true); ++} ++ ++/** ++ * usb_gadget_disable_async_callbacks - tell usb device controller to disable asynchronous callbacks ++ * @udc: The UDC which should disable async callbacks ++ * ++ * This routine is used when unbinding gadget drivers. It prevents a race: ++ * The UDC driver doesn't know when the gadget driver's ->unbind callback ++ * runs, so unless it is told to disable asynchronous callbacks, it might ++ * issue a callback (such as ->disconnect) after the unbind has completed. ++ * ++ * After this function runs, the UDC driver must suppress all ->suspend, ++ * ->resume, ->disconnect, ->reset, and ->setup callbacks to the gadget driver ++ * until async callbacks are again enabled. A simple-minded but effective ++ * way to accomplish this is to tell the UDC hardware not to generate any ++ * more IRQs. ++ * ++ * Request completion callbacks must still be issued. However, it's okay ++ * to defer them until the request is cancelled, since the pull-up will be ++ * turned off during the time period when async callbacks are disabled. ++ * ++ * This routine will always be called in process context. ++ */ ++static inline void usb_gadget_disable_async_callbacks(struct usb_udc *udc) ++{ ++ struct usb_gadget *gadget = udc->gadget; ++ ++ if (gadget->ops->udc_async_callbacks) ++ gadget->ops->udc_async_callbacks(gadget, false); + } + + /** +@@ -1225,6 +1316,8 @@ int usb_add_gadget(struct usb_gadget *gadget) + udc->gadget = gadget; + gadget->udc = udc; + ++ udc->started = false; ++ + mutex_lock(&udc_lock); + list_add_tail(&udc->list, &udc_list); + +@@ -1337,6 +1430,7 @@ static void usb_gadget_remove_driver(struct usb_udc *udc) + kobject_uevent(&udc->dev.kobj, KOBJ_CHANGE); + + usb_gadget_disconnect(udc->gadget); ++ usb_gadget_disable_async_callbacks(udc); + if (udc->gadget->irq) + synchronize_irq(udc->gadget->irq); + udc->driver->unbind(udc->gadget); +@@ -1418,6 +1512,7 @@ static int udc_bind_to_driver(struct usb_udc *udc, struct usb_gadget_driver *dri + driver->unbind(udc->gadget); + goto err1; + } ++ usb_gadget_enable_async_callbacks(udc); + usb_udc_connect_control(udc); + + kobject_uevent(&udc->dev.kobj, KOBJ_CHANGE); +diff --git a/drivers/usb/gadget/udc/snps_udc_core.c b/drivers/usb/gadget/udc/snps_udc_core.c +old mode 100644 +new mode 100755 +index 6c726d2e1..d046c09fa +--- a/drivers/usb/gadget/udc/snps_udc_core.c ++++ b/drivers/usb/gadget/udc/snps_udc_core.c +@@ -36,7 +36,6 @@ + #include + #include "amd5536udc.h" + +-static void udc_tasklet_disconnect(unsigned long); + static void udc_setup_endpoints(struct udc *dev); + static void udc_soft_reset(struct udc *dev); + static struct udc_request *udc_alloc_bna_dummy(struct udc_ep *ep); +@@ -95,9 +94,6 @@ static struct timer_list udc_pollstall_timer; + static int stop_pollstall_timer; + static DECLARE_COMPLETION(on_pollstall_exit); + +-/* tasklet for usb disconnect */ +-static DECLARE_TASKLET_OLD(disconnect_tasklet, udc_tasklet_disconnect); +- + /* endpoint names used for print */ + static const char ep0_string[] = "ep0in"; + static const struct { +@@ -1637,6 +1633,8 @@ static void usb_connect(struct udc *dev) + */ + static void usb_disconnect(struct udc *dev) + { ++ u32 tmp; ++ + /* Return if already disconnected */ + if (!dev->connected) + return; +@@ -1648,23 +1646,6 @@ static void usb_disconnect(struct udc *dev) + /* mask interrupts */ + udc_mask_unused_interrupts(dev); + +- /* REVISIT there doesn't seem to be a point to having this +- * talk to a tasklet ... do it directly, we already hold +- * the spinlock needed to process the disconnect. +- */ +- +- tasklet_schedule(&disconnect_tasklet); +-} +- +-/* Tasklet for disconnect to be outside of interrupt context */ +-static void udc_tasklet_disconnect(unsigned long par) +-{ +- struct udc *dev = udc; +- u32 tmp; +- +- DBG(dev, "Tasklet disconnect\n"); +- spin_lock_irq(&dev->lock); +- + if (dev->driver) { + spin_unlock(&dev->lock); + dev->driver->disconnect(&dev->gadget); +@@ -1673,13 +1654,10 @@ static void udc_tasklet_disconnect(unsigned long par) + /* empty queues */ + for (tmp = 0; tmp < UDC_EP_NUM; tmp++) + empty_req_queue(&dev->ep[tmp]); +- + } + + /* disable ep0 */ +- ep_init(dev->regs, +- &dev->ep[UDC_EP0IN_IX]); +- ++ ep_init(dev->regs, &dev->ep[UDC_EP0IN_IX]); + + if (!soft_reset_occured) { + /* init controller by soft reset */ +@@ -1695,8 +1673,6 @@ static void udc_tasklet_disconnect(unsigned long par) + tmp = AMD_ADDBITS(tmp, UDC_DEVCFG_SPD_FS, UDC_DEVCFG_SPD); + writel(tmp, &dev->regs->cfg); + } +- +- spin_unlock_irq(&dev->lock); + } + + /* Reset the UDC core */ +diff --git a/drivers/usb/gadget/udc/trace.c b/drivers/usb/gadget/udc/trace.c +old mode 100644 +new mode 100755 +index 7430624c0..e0e617280 +--- a/drivers/usb/gadget/udc/trace.c ++++ b/drivers/usb/gadget/udc/trace.c +@@ -8,3 +8,6 @@ + + #define CREATE_TRACE_POINTS + #include "trace.h" ++ ++EXPORT_TRACEPOINT_SYMBOL_GPL(usb_gadget_connect); ++EXPORT_TRACEPOINT_SYMBOL_GPL(usb_gadget_disconnect); +diff --git a/drivers/usb/gadget/udc/udc-xilinx.c b/drivers/usb/gadget/udc/udc-xilinx.c +old mode 100644 +new mode 100755 +index 096f56a09..78561630a +--- a/drivers/usb/gadget/udc/udc-xilinx.c ++++ b/drivers/usb/gadget/udc/udc-xilinx.c +@@ -1960,7 +1960,7 @@ static void xudc_nonctrl_ep_handler(struct xusb_udc *udc, u8 epnum, + if (intrstatus & (XUSB_STATUS_EP0_BUFF1_COMP_MASK << epnum)) + ep->buffer0ready = 0; + if (intrstatus & (XUSB_STATUS_EP0_BUFF2_COMP_MASK << epnum)) +- ep->buffer1ready = 0; ++ ep->buffer1ready = false; + + if (list_empty(&ep->queue)) + return; +diff --git a/drivers/usb/host/Makefile b/drivers/usb/host/Makefile +old mode 100644 +new mode 100755 +index bc731332f..2c7155fae +--- a/drivers/usb/host/Makefile ++++ b/drivers/usb/host/Makefile +@@ -19,9 +19,7 @@ ifneq ($(CONFIG_USB_XHCI_DBGCAP), ) + xhci-hcd-y += xhci-dbgcap.o xhci-dbgtty.o + endif + +-ifneq ($(CONFIG_USB_XHCI_MTK), ) +- xhci-hcd-y += xhci-mtk-sch.o +-endif ++xhci-mtk-hcd-y := xhci-mtk.o xhci-mtk-sch.o + + xhci-plat-hcd-y := xhci-plat.o + ifneq ($(CONFIG_USB_XHCI_MVEBU), ) +@@ -75,7 +73,7 @@ obj-$(CONFIG_USB_XHCI_PCI) += xhci-pci.o + obj-$(CONFIG_USB_XHCI_PCI_RENESAS) += xhci-pci-renesas.o + obj-$(CONFIG_USB_XHCI_PLATFORM) += xhci-plat-hcd.o + obj-$(CONFIG_USB_XHCI_HISTB) += xhci-histb.o +-obj-$(CONFIG_USB_XHCI_MTK) += xhci-mtk.o ++obj-$(CONFIG_USB_XHCI_MTK) += xhci-mtk-hcd.o + obj-$(CONFIG_USB_XHCI_TEGRA) += xhci-tegra.o + obj-$(CONFIG_USB_SL811_HCD) += sl811-hcd.o + obj-$(CONFIG_USB_SL811_CS) += sl811_cs.o +diff --git a/drivers/usb/host/ehci-platform.c b/drivers/usb/host/ehci-platform.c +old mode 100644 +new mode 100755 +index 2dcfc67f2..3e48737f8 +--- a/drivers/usb/host/ehci-platform.c ++++ b/drivers/usb/host/ehci-platform.c +@@ -28,6 +28,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -56,6 +57,37 @@ struct ehci_platform_priv { + + static const char hcd_name[] = "ehci-platform"; + ++static void ehci_rockchip_relinquish_port(struct usb_hcd *hcd, int portnum) ++{ ++ struct ehci_hcd *ehci = hcd_to_ehci(hcd); ++ u32 __iomem *status_reg = &ehci->regs->port_status[--portnum]; ++ u32 portsc; ++ ++ portsc = ehci_readl(ehci, status_reg); ++ portsc &= ~(PORT_OWNER | PORT_RWC_BITS); ++ ++ ehci_writel(ehci, portsc, status_reg); ++} ++ ++#define USIC_MICROFRAME_OFFSET 0x90 ++#define USIC_SCALE_DOWN_OFFSET 0xa0 ++#define USIC_ENABLE_OFFSET 0xb0 ++#define USIC_ENABLE BIT(0) ++#define USIC_SCALE_DOWN BIT(2) ++#define USIC_MICROFRAME_COUNT 0x1d4d ++ ++static void ehci_usic_init(struct usb_hcd *hcd) ++{ ++ struct ehci_hcd *ehci = hcd_to_ehci(hcd); ++ ++ ehci_writel(ehci, USIC_ENABLE, ++ hcd->regs + USIC_ENABLE_OFFSET); ++ ehci_writel(ehci, USIC_MICROFRAME_COUNT, ++ hcd->regs + USIC_MICROFRAME_OFFSET); ++ ehci_writel(ehci, USIC_SCALE_DOWN, ++ hcd->regs + USIC_SCALE_DOWN_OFFSET); ++} ++ + static int ehci_platform_reset(struct usb_hcd *hcd) + { + struct platform_device *pdev = to_platform_device(hcd->self.controller); +@@ -303,6 +335,12 @@ static int ehci_platform_probe(struct platform_device *dev) + if (soc_device_match(quirk_poll_match)) + priv->quirk_poll = true; + ++ if (of_machine_is_compatible("rockchip,rk3288") && ++ of_property_read_bool(dev->dev.of_node, ++ "rockchip-relinquish-port")) ++ ehci_platform_hc_driver.relinquish_port = ++ ehci_rockchip_relinquish_port; ++ + for (clk = 0; clk < EHCI_MAX_CLKS; clk++) { + priv->clks[clk] = of_clk_get(dev->dev.of_node, clk); + if (IS_ERR(priv->clks[clk])) { +@@ -351,6 +389,9 @@ static int ehci_platform_probe(struct platform_device *dev) + } + #endif + ++ pm_runtime_set_active(&dev->dev); ++ pm_runtime_enable(&dev->dev); ++ pm_runtime_get_sync(&dev->dev); + if (pdata->power_on) { + err = pdata->power_on(dev); + if (err < 0) +@@ -370,6 +411,9 @@ static int ehci_platform_probe(struct platform_device *dev) + if (err) + goto err_power; + ++ if (of_usb_get_phy_mode(dev->dev.of_node) == USBPHY_INTERFACE_MODE_HSIC) ++ ehci_usic_init(hcd); ++ + device_wakeup_enable(hcd->self.controller); + device_enable_async_suspend(hcd->self.controller); + platform_set_drvdata(dev, hcd); +@@ -383,6 +427,8 @@ static int ehci_platform_probe(struct platform_device *dev) + if (pdata->power_off) + pdata->power_off(dev); + err_reset: ++ pm_runtime_put_sync(&dev->dev); ++ pm_runtime_disable(&dev->dev); + reset_control_assert(priv->rsts); + err_put_clks: + while (--clk >= 0) +@@ -418,6 +464,9 @@ static int ehci_platform_remove(struct platform_device *dev) + + usb_put_hcd(hcd); + ++ pm_runtime_put_sync(&dev->dev); ++ pm_runtime_disable(&dev->dev); ++ + if (pdata == &ehci_platform_defaults) + dev->dev.platform_data = NULL; + +diff --git a/drivers/usb/host/ohci-platform.c b/drivers/usb/host/ohci-platform.c +old mode 100644 +new mode 100755 +index 4a8456f12..492353678 +--- a/drivers/usb/host/ohci-platform.c ++++ b/drivers/usb/host/ohci-platform.c +@@ -32,7 +32,7 @@ + #include "ohci.h" + + #define DRIVER_DESC "OHCI generic platform driver" +-#define OHCI_MAX_CLKS 3 ++#define OHCI_MAX_CLKS 4 + #define hcd_to_ohci_priv(h) ((struct ohci_platform_priv *)hcd_to_ohci(h)->priv) + + struct ohci_platform_priv { +@@ -96,7 +96,7 @@ static int ohci_platform_probe(struct platform_device *dev) + struct ohci_hcd *ohci; + int err, irq, clk = 0; + +- if (usb_disabled()) ++ if (usb_disabled() || of_machine_is_compatible("rockchip,rk3288")) + return -ENODEV; + + /* +diff --git a/drivers/usb/host/xhci-hub.c b/drivers/usb/host/xhci-hub.c +old mode 100644 +new mode 100755 +index 8466527eb..15d543f1d +--- a/drivers/usb/host/xhci-hub.c ++++ b/drivers/usb/host/xhci-hub.c +@@ -448,8 +448,13 @@ static int xhci_stop_device(struct xhci_hcd *xhci, int slot_id, int suspend) + cmd->status == COMP_COMMAND_RING_STOPPED) { + xhci_warn(xhci, "Timeout while waiting for stop endpoint command\n"); + ret = -ETIME; ++ goto cmd_cleanup; + } + ++ ret = xhci_vendor_sync_dev_ctx(xhci, slot_id); ++ if (ret) ++ xhci_warn(xhci, "Sync device context failed, ret=%d\n", ret); ++ + cmd_cleanup: + xhci_free_command(xhci, cmd); + return ret; +@@ -1719,6 +1724,7 @@ int xhci_bus_suspend(struct usb_hcd *hcd) + + return 0; + } ++EXPORT_SYMBOL_GPL(xhci_bus_suspend); + + /* + * Workaround for missing Cold Attach Status (CAS) if device re-plugged in S3. +@@ -1863,6 +1869,7 @@ int xhci_bus_resume(struct usb_hcd *hcd) + spin_unlock_irqrestore(&xhci->lock, flags); + return 0; + } ++EXPORT_SYMBOL_GPL(xhci_bus_resume); + + unsigned long xhci_get_resuming_ports(struct usb_hcd *hcd) + { +diff --git a/drivers/usb/host/xhci-mem.c b/drivers/usb/host/xhci-mem.c +old mode 100644 +new mode 100755 +index ed380ee58..4324fd31b +--- a/drivers/usb/host/xhci-mem.c ++++ b/drivers/usb/host/xhci-mem.c +@@ -65,7 +65,7 @@ static struct xhci_segment *xhci_segment_alloc(struct xhci_hcd *xhci, + return seg; + } + +-static void xhci_segment_free(struct xhci_hcd *xhci, struct xhci_segment *seg) ++void xhci_segment_free(struct xhci_hcd *xhci, struct xhci_segment *seg) + { + if (seg->trbs) { + dma_pool_free(xhci->segment_pool, seg->trbs, seg->dma); +@@ -74,8 +74,9 @@ static void xhci_segment_free(struct xhci_hcd *xhci, struct xhci_segment *seg) + kfree(seg->bounce_buf); + kfree(seg); + } ++EXPORT_SYMBOL_GPL(xhci_segment_free); + +-static void xhci_free_segments_for_ring(struct xhci_hcd *xhci, ++void xhci_free_segments_for_ring(struct xhci_hcd *xhci, + struct xhci_segment *first) + { + struct xhci_segment *seg; +@@ -96,9 +97,9 @@ static void xhci_free_segments_for_ring(struct xhci_hcd *xhci, + * DMA address of the next segment. The caller needs to set any Link TRB + * related flags, such as End TRB, Toggle Cycle, and no snoop. + */ +-static void xhci_link_segments(struct xhci_segment *prev, +- struct xhci_segment *next, +- enum xhci_ring_type type, bool chain_links) ++void xhci_link_segments(struct xhci_segment *prev, ++ struct xhci_segment *next, ++ enum xhci_ring_type type, bool chain_links) + { + u32 val; + +@@ -118,6 +119,7 @@ static void xhci_link_segments(struct xhci_segment *prev, + prev->trbs[TRBS_PER_SEGMENT-1].link.control = cpu_to_le32(val); + } + } ++EXPORT_SYMBOL_GPL(xhci_link_segments); + + /* + * Link the ring to the new segments. +@@ -292,6 +294,7 @@ void xhci_ring_free(struct xhci_hcd *xhci, struct xhci_ring *ring) + + kfree(ring); + } ++EXPORT_SYMBOL_GPL(xhci_ring_free); + + void xhci_initialize_ring_info(struct xhci_ring *ring, + unsigned int cycle_state) +@@ -316,6 +319,7 @@ void xhci_initialize_ring_info(struct xhci_ring *ring, + */ + ring->num_trbs_free = ring->num_segs * (TRBS_PER_SEGMENT - 1) - 1; + } ++EXPORT_SYMBOL_GPL(xhci_initialize_ring_info); + + /* Allocate segments and link them for a ring */ + static int xhci_alloc_segments_for_ring(struct xhci_hcd *xhci, +@@ -361,6 +365,54 @@ static int xhci_alloc_segments_for_ring(struct xhci_hcd *xhci, + return 0; + } + ++static void xhci_vendor_free_container_ctx(struct xhci_hcd *xhci, struct xhci_container_ctx *ctx) ++{ ++ struct xhci_vendor_ops *ops = xhci_vendor_get_ops(xhci); ++ ++ if (ops && ops->free_container_ctx) ++ ops->free_container_ctx(xhci, ctx); ++} ++ ++static void xhci_vendor_alloc_container_ctx(struct xhci_hcd *xhci, struct xhci_container_ctx *ctx, ++ int type, gfp_t flags) ++{ ++ struct xhci_vendor_ops *ops = xhci_vendor_get_ops(xhci); ++ ++ if (ops && ops->alloc_container_ctx) ++ ops->alloc_container_ctx(xhci, ctx, type, flags); ++} ++ ++static struct xhci_ring *xhci_vendor_alloc_transfer_ring(struct xhci_hcd *xhci, ++ u32 endpoint_type, enum xhci_ring_type ring_type, ++ unsigned int max_packet, gfp_t mem_flags) ++{ ++ struct xhci_vendor_ops *ops = xhci_vendor_get_ops(xhci); ++ ++ if (ops && ops->alloc_transfer_ring) ++ return ops->alloc_transfer_ring(xhci, endpoint_type, ring_type, ++ max_packet, mem_flags); ++ return 0; ++} ++ ++void xhci_vendor_free_transfer_ring(struct xhci_hcd *xhci, ++ struct xhci_virt_device *virt_dev, unsigned int ep_index) ++{ ++ struct xhci_vendor_ops *ops = xhci_vendor_get_ops(xhci); ++ ++ if (ops && ops->free_transfer_ring) ++ ops->free_transfer_ring(xhci, virt_dev, ep_index); ++} ++ ++bool xhci_vendor_is_usb_offload_enabled(struct xhci_hcd *xhci, ++ struct xhci_virt_device *virt_dev, unsigned int ep_index) ++{ ++ struct xhci_vendor_ops *ops = xhci_vendor_get_ops(xhci); ++ ++ if (ops && ops->is_usb_offload_enabled) ++ return ops->is_usb_offload_enabled(xhci, virt_dev, ep_index); ++ return false; ++} ++ + /* + * Create a new ring with zero or more segments. + * +@@ -407,12 +459,17 @@ struct xhci_ring *xhci_ring_alloc(struct xhci_hcd *xhci, + kfree(ring); + return NULL; + } ++EXPORT_SYMBOL_GPL(xhci_ring_alloc); + + void xhci_free_endpoint_ring(struct xhci_hcd *xhci, + struct xhci_virt_device *virt_dev, + unsigned int ep_index) + { +- xhci_ring_free(xhci, virt_dev->eps[ep_index].ring); ++ if (xhci_vendor_is_usb_offload_enabled(xhci, virt_dev, ep_index)) ++ xhci_vendor_free_transfer_ring(xhci, virt_dev, ep_index); ++ else ++ xhci_ring_free(xhci, virt_dev->eps[ep_index].ring); ++ + virt_dev->eps[ep_index].ring = NULL; + } + +@@ -471,6 +528,7 @@ struct xhci_container_ctx *xhci_alloc_container_ctx(struct xhci_hcd *xhci, + { + struct xhci_container_ctx *ctx; + struct device *dev = xhci_to_hcd(xhci)->self.sysdev; ++ struct xhci_vendor_ops *ops = xhci_vendor_get_ops(xhci); + + if ((type != XHCI_CTX_TYPE_DEVICE) && (type != XHCI_CTX_TYPE_INPUT)) + return NULL; +@@ -484,7 +542,12 @@ struct xhci_container_ctx *xhci_alloc_container_ctx(struct xhci_hcd *xhci, + if (type == XHCI_CTX_TYPE_INPUT) + ctx->size += CTX_SIZE(xhci->hcc_params); + +- ctx->bytes = dma_pool_zalloc(xhci->device_pool, flags, &ctx->dma); ++ if (xhci_vendor_is_usb_offload_enabled(xhci, NULL, 0) && ++ (ops && ops->alloc_container_ctx)) ++ xhci_vendor_alloc_container_ctx(xhci, ctx, type, flags); ++ else ++ ctx->bytes = dma_pool_zalloc(xhci->device_pool, flags, &ctx->dma); ++ + if (!ctx->bytes) { + kfree(ctx); + return NULL; +@@ -495,9 +558,16 @@ struct xhci_container_ctx *xhci_alloc_container_ctx(struct xhci_hcd *xhci, + void xhci_free_container_ctx(struct xhci_hcd *xhci, + struct xhci_container_ctx *ctx) + { ++ struct xhci_vendor_ops *ops = xhci_vendor_get_ops(xhci); ++ + if (!ctx) + return; +- dma_pool_free(xhci->device_pool, ctx->bytes, ctx->dma); ++ if (xhci_vendor_is_usb_offload_enabled(xhci, NULL, 0) && ++ (ops && ops->free_container_ctx)) ++ xhci_vendor_free_container_ctx(xhci, ctx); ++ else ++ dma_pool_free(xhci->device_pool, ctx->bytes, ctx->dma); ++ + kfree(ctx); + } + +@@ -519,6 +589,7 @@ struct xhci_slot_ctx *xhci_get_slot_ctx(struct xhci_hcd *xhci, + return (struct xhci_slot_ctx *) + (ctx->bytes + CTX_SIZE(xhci->hcc_params)); + } ++EXPORT_SYMBOL_GPL(xhci_get_slot_ctx); + + struct xhci_ep_ctx *xhci_get_ep_ctx(struct xhci_hcd *xhci, + struct xhci_container_ctx *ctx, +@@ -532,6 +603,7 @@ struct xhci_ep_ctx *xhci_get_ep_ctx(struct xhci_hcd *xhci, + return (struct xhci_ep_ctx *) + (ctx->bytes + (ep_index * CTX_SIZE(xhci->hcc_params))); + } ++EXPORT_SYMBOL_GPL(xhci_get_ep_ctx); + + + /***************** Streams structures manipulation *************************/ +@@ -592,23 +664,6 @@ struct xhci_ring *xhci_dma_to_transfer_ring( + return ep->ring; + } + +-struct xhci_ring *xhci_stream_id_to_ring( +- struct xhci_virt_device *dev, +- unsigned int ep_index, +- unsigned int stream_id) +-{ +- struct xhci_virt_ep *ep = &dev->eps[ep_index]; +- +- if (stream_id == 0) +- return ep->ring; +- if (!ep->stream_info) +- return NULL; +- +- if (stream_id >= ep->stream_info->num_streams) +- return NULL; +- return ep->stream_info->stream_rings[stream_id]; +-} +- + /* + * Change an endpoint's internal structure so it supports stream IDs. The + * number of requested streams includes stream 0, which cannot be used by device +@@ -906,7 +961,7 @@ void xhci_free_virt_device(struct xhci_hcd *xhci, int slot_id) + + for (i = 0; i < 31; i++) { + if (dev->eps[i].ring) +- xhci_ring_free(xhci, dev->eps[i].ring); ++ xhci_free_endpoint_ring(xhci, dev, i); + if (dev->eps[i].stream_info) + xhci_free_stream_info(xhci, + dev->eps[i].stream_info); +@@ -994,6 +1049,8 @@ int xhci_alloc_virt_device(struct xhci_hcd *xhci, int slot_id, + if (!dev) + return 0; + ++ dev->slot_id = slot_id; ++ + /* Allocate the (output) device context that will be used in the HC. */ + dev->out_ctx = xhci_alloc_container_ctx(xhci, XHCI_CTX_TYPE_DEVICE, flags); + if (!dev->out_ctx) +@@ -1012,6 +1069,8 @@ int xhci_alloc_virt_device(struct xhci_hcd *xhci, int slot_id, + + /* Initialize the cancellation list and watchdog timers for each ep */ + for (i = 0; i < 31; i++) { ++ dev->eps[i].ep_index = i; ++ dev->eps[i].vdev = dev; + xhci_init_endpoint_timer(xhci, &dev->eps[i]); + INIT_LIST_HEAD(&dev->eps[i].cancelled_td_list); + INIT_LIST_HEAD(&dev->eps[i].bw_endpoint_list); +@@ -1501,8 +1560,16 @@ int xhci_endpoint_init(struct xhci_hcd *xhci, + mult = 0; + + /* Set up the endpoint ring */ +- virt_dev->eps[ep_index].new_ring = +- xhci_ring_alloc(xhci, 2, 1, ring_type, max_packet, mem_flags); ++ if (xhci_vendor_is_usb_offload_enabled(xhci, virt_dev, ep_index) && ++ usb_endpoint_xfer_isoc(&ep->desc)) { ++ virt_dev->eps[ep_index].new_ring = ++ xhci_vendor_alloc_transfer_ring(xhci, endpoint_type, ring_type, ++ max_packet, mem_flags); ++ } else { ++ virt_dev->eps[ep_index].new_ring = ++ xhci_ring_alloc(xhci, 2, 1, ring_type, max_packet, mem_flags); ++ } ++ + if (!virt_dev->eps[ep_index].new_ring) + return -ENOMEM; + +@@ -1769,6 +1836,7 @@ struct xhci_command *xhci_alloc_command(struct xhci_hcd *xhci, + INIT_LIST_HEAD(&command->cmd_list); + return command; + } ++EXPORT_SYMBOL_GPL(xhci_alloc_command); + + struct xhci_command *xhci_alloc_command_with_ctx(struct xhci_hcd *xhci, + bool allocate_completion, gfp_t mem_flags) +@@ -1802,6 +1870,7 @@ void xhci_free_command(struct xhci_hcd *xhci, + kfree(command->completion); + kfree(command); + } ++EXPORT_SYMBOL_GPL(xhci_free_command); + + int xhci_alloc_erst(struct xhci_hcd *xhci, + struct xhci_ring *evt_ring, +@@ -1832,6 +1901,7 @@ int xhci_alloc_erst(struct xhci_hcd *xhci, + + return 0; + } ++EXPORT_SYMBOL_GPL(xhci_alloc_erst); + + void xhci_free_erst(struct xhci_hcd *xhci, struct xhci_erst *erst) + { +@@ -1845,6 +1915,25 @@ void xhci_free_erst(struct xhci_hcd *xhci, struct xhci_erst *erst) + erst->erst_dma_addr); + erst->entries = NULL; + } ++EXPORT_SYMBOL_GPL(xhci_free_erst); ++ ++static struct xhci_device_context_array *xhci_vendor_alloc_dcbaa( ++ struct xhci_hcd *xhci, gfp_t flags) ++{ ++ struct xhci_vendor_ops *ops = xhci_vendor_get_ops(xhci); ++ ++ if (ops && ops->alloc_dcbaa) ++ return ops->alloc_dcbaa(xhci, flags); ++ return 0; ++} ++ ++static void xhci_vendor_free_dcbaa(struct xhci_hcd *xhci) ++{ ++ struct xhci_vendor_ops *ops = xhci_vendor_get_ops(xhci); ++ ++ if (ops && ops->free_dcbaa) ++ ops->free_dcbaa(xhci); ++} + + void xhci_mem_cleanup(struct xhci_hcd *xhci) + { +@@ -1900,9 +1989,13 @@ void xhci_mem_cleanup(struct xhci_hcd *xhci) + xhci_dbg_trace(xhci, trace_xhci_dbg_init, + "Freed medium stream array pool"); + +- if (xhci->dcbaa) +- dma_free_coherent(dev, sizeof(*xhci->dcbaa), +- xhci->dcbaa, xhci->dcbaa->dma); ++ if (xhci_vendor_is_usb_offload_enabled(xhci, NULL, 0)) { ++ xhci_vendor_free_dcbaa(xhci); ++ } else { ++ if (xhci->dcbaa) ++ dma_free_coherent(dev, sizeof(*xhci->dcbaa), ++ xhci->dcbaa, xhci->dcbaa->dma); ++ } + xhci->dcbaa = NULL; + + scratchpad_free(xhci); +@@ -1983,7 +2076,7 @@ static int xhci_test_trb_in_td(struct xhci_hcd *xhci, + } + + /* TRB math checks for xhci_trb_in_td(), using the command and event rings. */ +-static int xhci_check_trb_in_td_math(struct xhci_hcd *xhci) ++int xhci_check_trb_in_td_math(struct xhci_hcd *xhci) + { + struct { + dma_addr_t input_dma; +@@ -2103,6 +2196,7 @@ static int xhci_check_trb_in_td_math(struct xhci_hcd *xhci) + xhci_dbg(xhci, "TRB math tests passed.\n"); + return 0; + } ++EXPORT_SYMBOL_GPL(xhci_check_trb_in_td_math); + + static void xhci_set_hc_event_deq(struct xhci_hcd *xhci) + { +@@ -2442,15 +2536,21 @@ int xhci_mem_init(struct xhci_hcd *xhci, gfp_t flags) + * xHCI section 5.4.6 - doorbell array must be + * "physically contiguous and 64-byte (cache line) aligned". + */ +- xhci->dcbaa = dma_alloc_coherent(dev, sizeof(*xhci->dcbaa), &dma, +- flags); +- if (!xhci->dcbaa) +- goto fail; +- xhci->dcbaa->dma = dma; ++ if (xhci_vendor_is_usb_offload_enabled(xhci, NULL, 0)) { ++ xhci->dcbaa = xhci_vendor_alloc_dcbaa(xhci, flags); ++ if (!xhci->dcbaa) ++ goto fail; ++ } else { ++ xhci->dcbaa = dma_alloc_coherent(dev, sizeof(*xhci->dcbaa), &dma, ++ flags); ++ if (!xhci->dcbaa) ++ goto fail; ++ xhci->dcbaa->dma = dma; ++ } + xhci_dbg_trace(xhci, trace_xhci_dbg_init, + "// Device context base array address = 0x%llx (DMA), %p (virt)", + (unsigned long long)xhci->dcbaa->dma, xhci->dcbaa); +- xhci_write_64(xhci, dma, &xhci->op_regs->dcbaa_ptr); ++ xhci_write_64(xhci, xhci->dcbaa->dma, &xhci->op_regs->dcbaa_ptr); + + /* + * Initialize the ring segment pool. The ring must be a contiguous +diff --git a/drivers/usb/host/xhci-mtk-sch.c b/drivers/usb/host/xhci-mtk-sch.c +old mode 100644 +new mode 100755 +index 8950d1f10..8b90da5a6 +--- a/drivers/usb/host/xhci-mtk-sch.c ++++ b/drivers/usb/host/xhci-mtk-sch.c +@@ -25,6 +25,15 @@ + */ + #define TT_MICROFRAMES_MAX 9 + ++#define DBG_BUF_EN 64 ++ ++/* schedule error type */ ++#define ESCH_SS_Y6 1001 ++#define ESCH_SS_OVERLAP 1002 ++#define ESCH_CS_OVERFLOW 1003 ++#define ESCH_BW_OVERFLOW 1004 ++#define ESCH_FIXME 1005 ++ + /* mtk scheduler bitmasks */ + #define EP_BPKTS(p) ((p) & 0x7f) + #define EP_BCSCOUNT(p) (((p) & 0x7) << 8) +@@ -32,13 +41,75 @@ + #define EP_BOFFSET(p) ((p) & 0x3fff) + #define EP_BREPEAT(p) (((p) & 0x7fff) << 16) + ++static char *sch_error_string(int err_num) ++{ ++ switch (err_num) { ++ case ESCH_SS_Y6: ++ return "Can't schedule Start-Split in Y6"; ++ case ESCH_SS_OVERLAP: ++ return "Can't find a suitable Start-Split location"; ++ case ESCH_CS_OVERFLOW: ++ return "The last Complete-Split is greater than 7"; ++ case ESCH_BW_OVERFLOW: ++ return "Bandwidth exceeds the maximum limit"; ++ case ESCH_FIXME: ++ return "FIXME, to be resolved"; ++ default: ++ return "Unknown"; ++ } ++} ++ + static int is_fs_or_ls(enum usb_device_speed speed) + { + return speed == USB_SPEED_FULL || speed == USB_SPEED_LOW; + } + ++static const char * ++decode_ep(struct usb_host_endpoint *ep, enum usb_device_speed speed) ++{ ++ static char buf[DBG_BUF_EN]; ++ struct usb_endpoint_descriptor *epd = &ep->desc; ++ unsigned int interval; ++ const char *unit; ++ ++ interval = usb_decode_interval(epd, speed); ++ if (interval % 1000) { ++ unit = "us"; ++ } else { ++ unit = "ms"; ++ interval /= 1000; ++ } ++ ++ snprintf(buf, DBG_BUF_EN, "%s ep%d%s %s, mpkt:%d, interval:%d/%d%s\n", ++ usb_speed_string(speed), usb_endpoint_num(epd), ++ usb_endpoint_dir_in(epd) ? "in" : "out", ++ usb_ep_type_string(usb_endpoint_type(epd)), ++ usb_endpoint_maxp(epd), epd->bInterval, interval, unit); ++ ++ return buf; ++} ++ ++static u32 get_bw_boundary(enum usb_device_speed speed) ++{ ++ u32 boundary; ++ ++ switch (speed) { ++ case USB_SPEED_SUPER_PLUS: ++ boundary = SSP_BW_BOUNDARY; ++ break; ++ case USB_SPEED_SUPER: ++ boundary = SS_BW_BOUNDARY; ++ break; ++ default: ++ boundary = HS_BW_BOUNDARY; ++ break; ++ } ++ ++ return boundary; ++} ++ + /* +-* get the index of bandwidth domains array which @ep belongs to. ++* get the bandwidth domain which @ep belongs to. + * + * the bandwidth domain array is saved to @sch_array of struct xhci_hcd_mtk, + * each HS root port is treated as a single bandwidth domain, +@@ -49,9 +120,11 @@ static int is_fs_or_ls(enum usb_device_speed speed) + * so the bandwidth domain array is organized as follow for simplification: + * SSport0-OUT, SSport0-IN, ..., SSportX-OUT, SSportX-IN, HSport0, ..., HSportY + */ +-static int get_bw_index(struct xhci_hcd *xhci, struct usb_device *udev, +- struct usb_host_endpoint *ep) ++static struct mu3h_sch_bw_info * ++get_bw_info(struct xhci_hcd_mtk *mtk, struct usb_device *udev, ++ struct usb_host_endpoint *ep) + { ++ struct xhci_hcd *xhci = hcd_to_xhci(mtk->hcd); + struct xhci_virt_device *virt_dev; + int bw_index; + +@@ -67,7 +140,7 @@ static int get_bw_index(struct xhci_hcd *xhci, struct usb_device *udev, + bw_index = virt_dev->real_port + xhci->usb3_rhub.num_ports - 1; + } + +- return bw_index; ++ return &mtk->sch_array[bw_index]; + } + + static u32 get_esit(struct xhci_ep_ctx *ep_ctx) +@@ -85,7 +158,6 @@ static struct mu3h_sch_tt *find_tt(struct usb_device *udev) + { + struct usb_tt *utt = udev->tt; + struct mu3h_sch_tt *tt, **tt_index, **ptt; +- unsigned int port; + bool allocated_index = false; + + if (!utt) +@@ -107,10 +179,8 @@ static struct mu3h_sch_tt *find_tt(struct usb_device *udev) + utt->hcpriv = tt_index; + allocated_index = true; + } +- port = udev->ttport - 1; +- ptt = &tt_index[port]; ++ ptt = &tt_index[udev->ttport - 1]; + } else { +- port = 0; + ptt = (struct mu3h_sch_tt **) &utt->hcpriv; + } + +@@ -125,8 +195,6 @@ static struct mu3h_sch_tt *find_tt(struct usb_device *udev) + return ERR_PTR(-ENOMEM); + } + INIT_LIST_HEAD(&tt->ep_list); +- tt->usb_tt = utt; +- tt->tt_port = port; + *ptt = tt; + } + +@@ -200,14 +268,15 @@ static struct mu3h_sch_ep_info *create_sch_ep(struct usb_device *udev, + + sch_ep->sch_tt = tt; + sch_ep->ep = ep; ++ sch_ep->speed = udev->speed; + INIT_LIST_HEAD(&sch_ep->endpoint); + INIT_LIST_HEAD(&sch_ep->tt_endpoint); + + return sch_ep; + } + +-static void setup_sch_info(struct usb_device *udev, +- struct xhci_ep_ctx *ep_ctx, struct mu3h_sch_ep_info *sch_ep) ++static void setup_sch_info(struct xhci_ep_ctx *ep_ctx, ++ struct mu3h_sch_ep_info *sch_ep) + { + u32 ep_type; + u32 maxpkt; +@@ -234,7 +303,7 @@ static void setup_sch_info(struct usb_device *udev, + sch_ep->burst_mode = 0; + sch_ep->repeat = 0; + +- if (udev->speed == USB_SPEED_HIGH) { ++ if (sch_ep->speed == USB_SPEED_HIGH) { + sch_ep->cs_count = 0; + + /* +@@ -252,7 +321,7 @@ static void setup_sch_info(struct usb_device *udev, + sch_ep->pkts = max_burst + 1; + sch_ep->bw_cost_per_microframe = maxpkt * sch_ep->pkts; + bwb_table[0] = sch_ep->bw_cost_per_microframe; +- } else if (udev->speed >= USB_SPEED_SUPER) { ++ } else if (sch_ep->speed >= USB_SPEED_SUPER) { + /* usb3_r1 spec section4.4.7 & 4.4.8 */ + sch_ep->cs_count = 0; + sch_ep->burst_mode = 1; +@@ -272,7 +341,6 @@ static void setup_sch_info(struct usb_device *udev, + } + + if (ep_type == ISOC_IN_EP || ep_type == ISOC_OUT_EP) { +- u32 remainder; + + if (sch_ep->esit == 1) + sch_ep->pkts = esit_pkts; +@@ -288,16 +356,14 @@ static void setup_sch_info(struct usb_device *udev, + sch_ep->repeat = !!(sch_ep->num_budget_microframes > 1); + sch_ep->bw_cost_per_microframe = maxpkt * sch_ep->pkts; + +- remainder = sch_ep->bw_cost_per_microframe; +- remainder *= sch_ep->num_budget_microframes; +- remainder -= (maxpkt * esit_pkts); + for (i = 0; i < sch_ep->num_budget_microframes - 1; i++) + bwb_table[i] = sch_ep->bw_cost_per_microframe; + + /* last one <= bw_cost_per_microframe */ +- bwb_table[i] = remainder; ++ bwb_table[i] = maxpkt * esit_pkts ++ - i * sch_ep->bw_cost_per_microframe; + } +- } else if (is_fs_or_ls(udev->speed)) { ++ } else if (is_fs_or_ls(sch_ep->speed)) { + sch_ep->pkts = 1; /* at most one packet for each microframe */ + + /* +@@ -375,7 +441,6 @@ static void update_bus_bw(struct mu3h_sch_bw_info *sch_bw, + sch_ep->bw_budget_table[j]; + } + } +- sch_ep->allocated = used; + } + + static int check_fs_bus_bw(struct mu3h_sch_ep_info *sch_ep, int offset) +@@ -396,25 +461,22 @@ static int check_fs_bus_bw(struct mu3h_sch_ep_info *sch_ep, int offset) + for (j = 0; j < sch_ep->cs_count; j++) { + tmp = tt->fs_bus_bw[base + j] + sch_ep->bw_cost_per_microframe; + if (tmp > FS_PAYLOAD_MAX) +- return -ERANGE; ++ return -ESCH_BW_OVERFLOW; + } + } + + return 0; + } + +-static int check_sch_tt(struct usb_device *udev, +- struct mu3h_sch_ep_info *sch_ep, u32 offset) ++static int check_sch_tt(struct mu3h_sch_ep_info *sch_ep, u32 offset) + { + struct mu3h_sch_tt *tt = sch_ep->sch_tt; + u32 extra_cs_count; +- u32 fs_budget_start; + u32 start_ss, last_ss; + u32 start_cs, last_cs; + int i; + + start_ss = offset % 8; +- fs_budget_start = (start_ss + 1) % 8; + + if (sch_ep->ep_type == ISOC_OUT_EP) { + last_ss = start_ss + sch_ep->cs_count - 1; +@@ -424,11 +486,11 @@ static int check_sch_tt(struct usb_device *udev, + * must never schedule Start-Split in Y6 + */ + if (!(start_ss == 7 || last_ss < 6)) +- return -ERANGE; ++ return -ESCH_SS_Y6; + + for (i = 0; i < sch_ep->cs_count; i++) + if (test_bit(offset + i, tt->ss_bit_map)) +- return -ERANGE; ++ return -ESCH_SS_OVERLAP; + + } else { + u32 cs_count = DIV_ROUND_UP(sch_ep->maxpkt, FS_PAYLOAD_MAX); +@@ -438,28 +500,26 @@ static int check_sch_tt(struct usb_device *udev, + * must never schedule Start-Split in Y6 + */ + if (start_ss == 6) +- return -ERANGE; ++ return -ESCH_SS_Y6; + + /* one uframe for ss + one uframe for idle */ + start_cs = (start_ss + 2) % 8; + last_cs = start_cs + cs_count - 1; + + if (last_cs > 7) +- return -ERANGE; ++ return -ESCH_CS_OVERFLOW; + + if (sch_ep->ep_type == ISOC_IN_EP) + extra_cs_count = (last_cs == 7) ? 1 : 2; + else /* ep_type : INTR IN / INTR OUT */ +- extra_cs_count = (fs_budget_start == 6) ? 1 : 2; ++ extra_cs_count = 1; + + cs_count += extra_cs_count; + if (cs_count > 7) + cs_count = 7; /* HW limit */ + +- for (i = 0; i < cs_count + 2; i++) { +- if (test_bit(offset + i, tt->ss_bit_map)) +- return -ERANGE; +- } ++ if (test_bit(offset, tt->ss_bit_map)) ++ return -ESCH_SS_OVERLAP; + + sch_ep->cs_count = cs_count; + /* one for ss, the other for idle */ +@@ -476,8 +536,7 @@ static int check_sch_tt(struct usb_device *udev, + return check_fs_bus_bw(sch_ep, offset); + } + +-static void update_sch_tt(struct usb_device *udev, +- struct mu3h_sch_ep_info *sch_ep, bool used) ++static void update_sch_tt(struct mu3h_sch_ep_info *sch_ep, bool used) + { + struct mu3h_sch_tt *tt = sch_ep->sch_tt; + u32 base, num_esit; +@@ -513,21 +572,46 @@ static void update_sch_tt(struct usb_device *udev, + list_del(&sch_ep->tt_endpoint); + } + +-static int check_sch_bw(struct usb_device *udev, +- struct mu3h_sch_bw_info *sch_bw, struct mu3h_sch_ep_info *sch_ep) ++static int load_ep_bw(struct mu3h_sch_bw_info *sch_bw, ++ struct mu3h_sch_ep_info *sch_ep, bool loaded) ++{ ++ if (sch_ep->sch_tt) ++ update_sch_tt(sch_ep, loaded); ++ ++ /* update bus bandwidth info */ ++ update_bus_bw(sch_bw, sch_ep, loaded); ++ sch_ep->allocated = loaded; ++ ++ return 0; ++} ++ ++static u32 get_esit_boundary(struct mu3h_sch_ep_info *sch_ep) ++{ ++ u32 boundary = sch_ep->esit; ++ ++ if (sch_ep->sch_tt) { /* LS/FS with TT */ ++ /* tune for CS */ ++ if (sch_ep->ep_type != ISOC_OUT_EP) ++ boundary++; ++ else if (boundary > 1) /* normally esit >= 8 for FS/LS */ ++ boundary--; ++ } ++ ++ return boundary; ++} ++ ++static int check_sch_bw(struct mu3h_sch_bw_info *sch_bw, ++ struct mu3h_sch_ep_info *sch_ep) + { + u32 offset; +- u32 esit; + u32 min_bw; + u32 min_index; + u32 worst_bw; + u32 bw_boundary; ++ u32 esit_boundary; + u32 min_num_budget; + u32 min_cs_count; +- bool tt_offset_ok = false; +- int ret; +- +- esit = sch_ep->esit; ++ int ret = 0; + + /* + * Search through all possible schedule microframes. +@@ -537,16 +621,15 @@ static int check_sch_bw(struct usb_device *udev, + min_index = 0; + min_cs_count = sch_ep->cs_count; + min_num_budget = sch_ep->num_budget_microframes; +- for (offset = 0; offset < esit; offset++) { +- if (is_fs_or_ls(udev->speed)) { +- ret = check_sch_tt(udev, sch_ep, offset); ++ esit_boundary = get_esit_boundary(sch_ep); ++ for (offset = 0; offset < sch_ep->esit; offset++) { ++ if (sch_ep->sch_tt) { ++ ret = check_sch_tt(sch_ep, offset); + if (ret) + continue; +- else +- tt_offset_ok = true; + } + +- if ((offset + sch_ep->num_budget_microframes) > sch_ep->esit) ++ if ((offset + sch_ep->num_budget_microframes) > esit_boundary) + break; + + worst_bw = get_max_bw(sch_bw, sch_ep, offset); +@@ -560,44 +643,24 @@ static int check_sch_bw(struct usb_device *udev, + break; + } + +- if (udev->speed == USB_SPEED_SUPER_PLUS) +- bw_boundary = SSP_BW_BOUNDARY; +- else if (udev->speed == USB_SPEED_SUPER) +- bw_boundary = SS_BW_BOUNDARY; +- else +- bw_boundary = HS_BW_BOUNDARY; +- ++ bw_boundary = get_bw_boundary(sch_ep->speed); + /* check bandwidth */ + if (min_bw > bw_boundary) +- return -ERANGE; ++ return ret ? ret : -ESCH_BW_OVERFLOW; + + sch_ep->offset = min_index; + sch_ep->cs_count = min_cs_count; + sch_ep->num_budget_microframes = min_num_budget; + +- if (is_fs_or_ls(udev->speed)) { +- /* all offset for tt is not ok*/ +- if (!tt_offset_ok) +- return -ERANGE; +- +- update_sch_tt(udev, sch_ep, 1); +- } +- +- /* update bus bandwidth info */ +- update_bus_bw(sch_bw, sch_ep, 1); +- +- return 0; ++ return load_ep_bw(sch_bw, sch_ep, true); + } + + static void destroy_sch_ep(struct usb_device *udev, + struct mu3h_sch_bw_info *sch_bw, struct mu3h_sch_ep_info *sch_ep) + { + /* only release ep bw check passed by check_sch_bw() */ +- if (sch_ep->allocated) { +- update_bus_bw(sch_bw, sch_ep, 0); +- if (sch_ep->sch_tt) +- update_sch_tt(udev, sch_ep, 0); +- } ++ if (sch_ep->allocated) ++ load_ep_bw(sch_bw, sch_ep, false); + + if (sch_ep->sch_tt) + drop_tt(udev); +@@ -652,37 +715,29 @@ int xhci_mtk_sch_init(struct xhci_hcd_mtk *mtk) + + return 0; + } +-EXPORT_SYMBOL_GPL(xhci_mtk_sch_init); + + void xhci_mtk_sch_exit(struct xhci_hcd_mtk *mtk) + { + kfree(mtk->sch_array); + } +-EXPORT_SYMBOL_GPL(xhci_mtk_sch_exit); + +-int xhci_mtk_add_ep_quirk(struct usb_hcd *hcd, struct usb_device *udev, +- struct usb_host_endpoint *ep) ++static int add_ep_quirk(struct usb_hcd *hcd, struct usb_device *udev, ++ struct usb_host_endpoint *ep) + { + struct xhci_hcd_mtk *mtk = hcd_to_mtk(hcd); +- struct xhci_hcd *xhci; ++ struct xhci_hcd *xhci = hcd_to_xhci(hcd); + struct xhci_ep_ctx *ep_ctx; +- struct xhci_slot_ctx *slot_ctx; + struct xhci_virt_device *virt_dev; + struct mu3h_sch_ep_info *sch_ep; + unsigned int ep_index; + +- xhci = hcd_to_xhci(hcd); + virt_dev = xhci->devs[udev->slot_id]; + ep_index = xhci_get_endpoint_index(&ep->desc); +- slot_ctx = xhci_get_slot_ctx(xhci, virt_dev->in_ctx); + ep_ctx = xhci_get_ep_ctx(xhci, virt_dev->in_ctx, ep_index); + +- xhci_dbg(xhci, "%s() type:%d, speed:%d, mpkt:%d, dir:%d, ep:%p\n", +- __func__, usb_endpoint_type(&ep->desc), udev->speed, +- usb_endpoint_maxp(&ep->desc), +- usb_endpoint_dir_in(&ep->desc), ep); ++ xhci_dbg(xhci, "%s %s\n", __func__, decode_ep(ep, udev->speed)); + +- if (!need_bw_sch(ep, udev->speed, slot_ctx->tt_info & TT_SLOT)) { ++ if (!need_bw_sch(ep, udev->speed, !!virt_dev->tt_info)) { + /* + * set @bpkts to 1 if it is LS or FS periodic endpoint, and its + * device does not connected through an external HS hub +@@ -698,41 +753,30 @@ int xhci_mtk_add_ep_quirk(struct usb_hcd *hcd, struct usb_device *udev, + if (IS_ERR_OR_NULL(sch_ep)) + return -ENOMEM; + +- setup_sch_info(udev, ep_ctx, sch_ep); ++ setup_sch_info(ep_ctx, sch_ep); + + list_add_tail(&sch_ep->endpoint, &mtk->bw_ep_chk_list); + + return 0; + } +-EXPORT_SYMBOL_GPL(xhci_mtk_add_ep_quirk); + +-void xhci_mtk_drop_ep_quirk(struct usb_hcd *hcd, struct usb_device *udev, +- struct usb_host_endpoint *ep) ++static void drop_ep_quirk(struct usb_hcd *hcd, struct usb_device *udev, ++ struct usb_host_endpoint *ep) + { + struct xhci_hcd_mtk *mtk = hcd_to_mtk(hcd); +- struct xhci_hcd *xhci; +- struct xhci_slot_ctx *slot_ctx; ++ struct xhci_hcd *xhci = hcd_to_xhci(hcd); + struct xhci_virt_device *virt_dev; +- struct mu3h_sch_bw_info *sch_array; + struct mu3h_sch_bw_info *sch_bw; + struct mu3h_sch_ep_info *sch_ep, *tmp; +- int bw_index; + +- xhci = hcd_to_xhci(hcd); + virt_dev = xhci->devs[udev->slot_id]; +- slot_ctx = xhci_get_slot_ctx(xhci, virt_dev->in_ctx); +- sch_array = mtk->sch_array; + +- xhci_dbg(xhci, "%s() type:%d, speed:%d, mpks:%d, dir:%d, ep:%p\n", +- __func__, usb_endpoint_type(&ep->desc), udev->speed, +- usb_endpoint_maxp(&ep->desc), +- usb_endpoint_dir_in(&ep->desc), ep); ++ xhci_dbg(xhci, "%s %s\n", __func__, decode_ep(ep, udev->speed)); + +- if (!need_bw_sch(ep, udev->speed, slot_ctx->tt_info & TT_SLOT)) ++ if (!need_bw_sch(ep, udev->speed, !!virt_dev->tt_info)) + return; + +- bw_index = get_bw_index(xhci, udev, ep); +- sch_bw = &sch_array[bw_index]; ++ sch_bw = get_bw_info(mtk, udev, ep); + + list_for_each_entry_safe(sch_ep, tmp, &sch_bw->bw_ep_list, endpoint) { + if (sch_ep->ep == ep) { +@@ -741,7 +785,6 @@ void xhci_mtk_drop_ep_quirk(struct usb_hcd *hcd, struct usb_device *udev, + } + } + } +-EXPORT_SYMBOL_GPL(xhci_mtk_drop_ep_quirk); + + int xhci_mtk_check_bandwidth(struct usb_hcd *hcd, struct usb_device *udev) + { +@@ -750,17 +793,17 @@ int xhci_mtk_check_bandwidth(struct usb_hcd *hcd, struct usb_device *udev) + struct xhci_virt_device *virt_dev = xhci->devs[udev->slot_id]; + struct mu3h_sch_bw_info *sch_bw; + struct mu3h_sch_ep_info *sch_ep, *tmp; +- int bw_index, ret; ++ int ret; + + xhci_dbg(xhci, "%s() udev %s\n", __func__, dev_name(&udev->dev)); + + list_for_each_entry(sch_ep, &mtk->bw_ep_chk_list, endpoint) { +- bw_index = get_bw_index(xhci, udev, sch_ep->ep); +- sch_bw = &mtk->sch_array[bw_index]; ++ sch_bw = get_bw_info(mtk, udev, sch_ep->ep); + +- ret = check_sch_bw(udev, sch_bw, sch_ep); ++ ret = check_sch_bw(sch_bw, sch_ep); + if (ret) { +- xhci_err(xhci, "Not enough bandwidth!\n"); ++ xhci_err(xhci, "Not enough bandwidth! (%s)\n", ++ sch_error_string(-ret)); + return -ENOSPC; + } + } +@@ -770,9 +813,7 @@ int xhci_mtk_check_bandwidth(struct usb_hcd *hcd, struct usb_device *udev) + struct usb_host_endpoint *ep = sch_ep->ep; + unsigned int ep_index = xhci_get_endpoint_index(&ep->desc); + +- bw_index = get_bw_index(xhci, udev, ep); +- sch_bw = &mtk->sch_array[bw_index]; +- ++ sch_bw = get_bw_info(mtk, udev, ep); + list_move_tail(&sch_ep->endpoint, &sch_bw->bw_ep_list); + + ep_ctx = xhci_get_ep_ctx(xhci, virt_dev->in_ctx, ep_index); +@@ -789,7 +830,6 @@ int xhci_mtk_check_bandwidth(struct usb_hcd *hcd, struct usb_device *udev) + + return xhci_check_bandwidth(hcd, udev); + } +-EXPORT_SYMBOL_GPL(xhci_mtk_check_bandwidth); + + void xhci_mtk_reset_bandwidth(struct usb_hcd *hcd, struct usb_device *udev) + { +@@ -797,16 +837,43 @@ void xhci_mtk_reset_bandwidth(struct usb_hcd *hcd, struct usb_device *udev) + struct xhci_hcd *xhci = hcd_to_xhci(hcd); + struct mu3h_sch_bw_info *sch_bw; + struct mu3h_sch_ep_info *sch_ep, *tmp; +- int bw_index; + + xhci_dbg(xhci, "%s() udev %s\n", __func__, dev_name(&udev->dev)); + + list_for_each_entry_safe(sch_ep, tmp, &mtk->bw_ep_chk_list, endpoint) { +- bw_index = get_bw_index(xhci, udev, sch_ep->ep); +- sch_bw = &mtk->sch_array[bw_index]; ++ sch_bw = get_bw_info(mtk, udev, sch_ep->ep); + destroy_sch_ep(udev, sch_bw, sch_ep); + } + + xhci_reset_bandwidth(hcd, udev); + } +-EXPORT_SYMBOL_GPL(xhci_mtk_reset_bandwidth); ++ ++int xhci_mtk_add_ep(struct usb_hcd *hcd, struct usb_device *udev, ++ struct usb_host_endpoint *ep) ++{ ++ int ret; ++ ++ ret = xhci_add_endpoint(hcd, udev, ep); ++ if (ret) ++ return ret; ++ ++ if (ep->hcpriv) ++ ret = add_ep_quirk(hcd, udev, ep); ++ ++ return ret; ++} ++ ++int xhci_mtk_drop_ep(struct usb_hcd *hcd, struct usb_device *udev, ++ struct usb_host_endpoint *ep) ++{ ++ int ret; ++ ++ ret = xhci_drop_endpoint(hcd, udev, ep); ++ if (ret) ++ return ret; ++ ++ if (ep->hcpriv) ++ drop_ep_quirk(hcd, udev, ep); ++ ++ return 0; ++} +diff --git a/drivers/usb/host/xhci-mtk.c b/drivers/usb/host/xhci-mtk.c +old mode 100644 +new mode 100755 +index 1c331577f..09f2ddbfe +--- a/drivers/usb/host/xhci-mtk.c ++++ b/drivers/usb/host/xhci-mtk.c +@@ -344,15 +344,6 @@ static void usb_wakeup_set(struct xhci_hcd_mtk *mtk, bool enable) + usb_wakeup_ip_sleep_set(mtk, enable); + } + +-static int xhci_mtk_setup(struct usb_hcd *hcd); +-static const struct xhci_driver_overrides xhci_mtk_overrides __initconst = { +- .reset = xhci_mtk_setup, +- .check_bandwidth = xhci_mtk_check_bandwidth, +- .reset_bandwidth = xhci_mtk_reset_bandwidth, +-}; +- +-static struct hc_driver __read_mostly xhci_mtk_hc_driver; +- + static int xhci_mtk_ldos_enable(struct xhci_hcd_mtk *mtk) + { + int ret; +@@ -433,6 +424,16 @@ static int xhci_mtk_setup(struct usb_hcd *hcd) + return ret; + } + ++static const struct xhci_driver_overrides xhci_mtk_overrides __initconst = { ++ .reset = xhci_mtk_setup, ++ .add_endpoint = xhci_mtk_add_ep, ++ .drop_endpoint = xhci_mtk_drop_ep, ++ .check_bandwidth = xhci_mtk_check_bandwidth, ++ .reset_bandwidth = xhci_mtk_reset_bandwidth, ++}; ++ ++static struct hc_driver __read_mostly xhci_mtk_hc_driver; ++ + static int xhci_mtk_probe(struct platform_device *pdev) + { + struct device *dev = &pdev->dev; +diff --git a/drivers/usb/host/xhci-mtk.h b/drivers/usb/host/xhci-mtk.h +old mode 100644 +new mode 100755 +index 2fc0568ba..4ccd08e20 +--- a/drivers/usb/host/xhci-mtk.h ++++ b/drivers/usb/host/xhci-mtk.h +@@ -23,15 +23,11 @@ + * @ss_bit_map: used to avoid start split microframes overlay + * @fs_bus_bw: array to keep track of bandwidth already used for FS + * @ep_list: Endpoints using this TT +- * @usb_tt: usb TT related +- * @tt_port: TT port number + */ + struct mu3h_sch_tt { + DECLARE_BITMAP(ss_bit_map, XHCI_MTK_MAX_ESIT); + u32 fs_bus_bw[XHCI_MTK_MAX_ESIT]; + struct list_head ep_list; +- struct usb_tt *usb_tt; +- int tt_port; + }; + + /** +@@ -88,7 +84,8 @@ struct mu3h_sch_ep_info { + struct mu3h_sch_tt *sch_tt; + u32 ep_type; + u32 maxpkt; +- void *ep; ++ struct usb_host_endpoint *ep; ++ enum usb_device_speed speed; + bool allocated; + /* + * mtk xHCI scheduling information put into reserved DWs +@@ -165,38 +162,13 @@ static inline struct xhci_hcd_mtk *hcd_to_mtk(struct usb_hcd *hcd) + return dev_get_drvdata(hcd->self.controller); + } + +-#if IS_ENABLED(CONFIG_USB_XHCI_MTK) + int xhci_mtk_sch_init(struct xhci_hcd_mtk *mtk); + void xhci_mtk_sch_exit(struct xhci_hcd_mtk *mtk); +-int xhci_mtk_add_ep_quirk(struct usb_hcd *hcd, struct usb_device *udev, +- struct usb_host_endpoint *ep); +-void xhci_mtk_drop_ep_quirk(struct usb_hcd *hcd, struct usb_device *udev, +- struct usb_host_endpoint *ep); ++int xhci_mtk_add_ep(struct usb_hcd *hcd, struct usb_device *udev, ++ struct usb_host_endpoint *ep); ++int xhci_mtk_drop_ep(struct usb_hcd *hcd, struct usb_device *udev, ++ struct usb_host_endpoint *ep); + int xhci_mtk_check_bandwidth(struct usb_hcd *hcd, struct usb_device *udev); + void xhci_mtk_reset_bandwidth(struct usb_hcd *hcd, struct usb_device *udev); + +-#else +-static inline int xhci_mtk_add_ep_quirk(struct usb_hcd *hcd, +- struct usb_device *udev, struct usb_host_endpoint *ep) +-{ +- return 0; +-} +- +-static inline void xhci_mtk_drop_ep_quirk(struct usb_hcd *hcd, +- struct usb_device *udev, struct usb_host_endpoint *ep) +-{ +-} +- +-static inline int xhci_mtk_check_bandwidth(struct usb_hcd *hcd, +- struct usb_device *udev) +-{ +- return 0; +-} +- +-static inline void xhci_mtk_reset_bandwidth(struct usb_hcd *hcd, +- struct usb_device *udev) +-{ +-} +-#endif +- + #endif /* _XHCI_MTK_H_ */ +diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c +old mode 100644 +new mode 100755 +index 8c65e9476..119d1a8fb +--- a/drivers/usb/host/xhci-pci.c ++++ b/drivers/usb/host/xhci-pci.c +@@ -30,7 +30,6 @@ + #define PCI_VENDOR_ID_FRESCO_LOGIC 0x1b73 + #define PCI_DEVICE_ID_FRESCO_LOGIC_PDK 0x1000 + #define PCI_DEVICE_ID_FRESCO_LOGIC_FL1009 0x1009 +-#define PCI_DEVICE_ID_FRESCO_LOGIC_FL1100 0x1100 + #define PCI_DEVICE_ID_FRESCO_LOGIC_FL1400 0x1400 + + #define PCI_VENDOR_ID_ETRON 0x1b6f +@@ -113,7 +112,6 @@ static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci) + /* Look for vendor-specific quirks */ + if (pdev->vendor == PCI_VENDOR_ID_FRESCO_LOGIC && + (pdev->device == PCI_DEVICE_ID_FRESCO_LOGIC_PDK || +- pdev->device == PCI_DEVICE_ID_FRESCO_LOGIC_FL1100 || + pdev->device == PCI_DEVICE_ID_FRESCO_LOGIC_FL1400)) { + if (pdev->device == PCI_DEVICE_ID_FRESCO_LOGIC_PDK && + pdev->revision == 0x0) { +@@ -276,10 +274,8 @@ static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci) + pdev->device == 0x3432) + xhci->quirks |= XHCI_BROKEN_STREAMS; + +- if (pdev->vendor == PCI_VENDOR_ID_VIA && pdev->device == 0x3483) { ++ if (pdev->vendor == PCI_VENDOR_ID_VIA && pdev->device == 0x3483) + xhci->quirks |= XHCI_LPM_SUPPORT; +- xhci->quirks |= XHCI_EP_CTX_BROKEN_DCS; +- } + + if (pdev->vendor == PCI_VENDOR_ID_ASMEDIA && + pdev->device == PCI_DEVICE_ID_ASMEDIA_1042_XHCI) +diff --git a/drivers/usb/host/xhci-plat.c b/drivers/usb/host/xhci-plat.c +old mode 100644 +new mode 100755 +index c1edcc9b1..21280a6d5 +--- a/drivers/usb/host/xhci-plat.c ++++ b/drivers/usb/host/xhci-plat.c +@@ -184,6 +184,41 @@ static const struct of_device_id usb_xhci_of_match[] = { + MODULE_DEVICE_TABLE(of, usb_xhci_of_match); + #endif + ++static struct xhci_plat_priv_overwrite xhci_plat_vendor_overwrite; ++ ++int xhci_plat_register_vendor_ops(struct xhci_vendor_ops *vendor_ops) ++{ ++ if (vendor_ops == NULL) ++ return -EINVAL; ++ ++ xhci_plat_vendor_overwrite.vendor_ops = vendor_ops; ++ ++ return 0; ++} ++EXPORT_SYMBOL_GPL(xhci_plat_register_vendor_ops); ++ ++static int xhci_vendor_init(struct xhci_hcd *xhci) ++{ ++ struct xhci_vendor_ops *ops = NULL; ++ ++ if (xhci_plat_vendor_overwrite.vendor_ops) ++ ops = xhci->vendor_ops = xhci_plat_vendor_overwrite.vendor_ops; ++ ++ if (ops && ops->vendor_init) ++ return ops->vendor_init(xhci); ++ return 0; ++} ++ ++static void xhci_vendor_cleanup(struct xhci_hcd *xhci) ++{ ++ struct xhci_vendor_ops *ops = xhci_vendor_get_ops(xhci); ++ ++ if (ops && ops->vendor_cleanup) ++ ops->vendor_cleanup(xhci); ++ ++ xhci->vendor_ops = NULL; ++} ++ + static int xhci_plat_probe(struct platform_device *pdev) + { + const struct xhci_plat_priv *priv_match; +@@ -339,6 +374,10 @@ static int xhci_plat_probe(struct platform_device *pdev) + goto put_usb3_hcd; + } + ++ ret = xhci_vendor_init(xhci); ++ if (ret) ++ goto disable_usb_phy; ++ + hcd->tpl_support = of_usb_host_tpl_support(sysdev->of_node); + xhci->shared_hcd->tpl_support = hcd->tpl_support; + +@@ -418,8 +457,10 @@ static int xhci_plat_remove(struct platform_device *dev) + usb_phy_shutdown(hcd->usb_phy); + + usb_remove_hcd(hcd); +- usb_put_hcd(shared_hcd); + ++ xhci_vendor_cleanup(xhci); ++ ++ usb_put_hcd(shared_hcd); + clk_disable_unprepare(clk); + clk_disable_unprepare(reg_clk); + usb_put_hcd(hcd); +diff --git a/drivers/usb/host/xhci-plat.h b/drivers/usb/host/xhci-plat.h +old mode 100644 +new mode 100755 +index 561d0b7bc..e726a5723 +--- a/drivers/usb/host/xhci-plat.h ++++ b/drivers/usb/host/xhci-plat.h +@@ -13,6 +13,7 @@ + struct xhci_plat_priv { + const char *firmware_name; + unsigned long long quirks; ++ struct xhci_vendor_data *vendor_data; + int (*plat_setup)(struct usb_hcd *); + void (*plat_start)(struct usb_hcd *); + int (*init_quirk)(struct usb_hcd *); +@@ -22,4 +23,11 @@ struct xhci_plat_priv { + + #define hcd_to_xhci_priv(h) ((struct xhci_plat_priv *)hcd_to_xhci(h)->priv) + #define xhci_to_priv(x) ((struct xhci_plat_priv *)(x)->priv) ++ ++struct xhci_plat_priv_overwrite { ++ struct xhci_vendor_ops *vendor_ops; ++}; ++ ++int xhci_plat_register_vendor_ops(struct xhci_vendor_ops *vendor_ops); ++ + #endif /* _XHCI_PLAT_H */ +diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c +old mode 100644 +new mode 100755 +index 4512c4223..a937bc6db +--- a/drivers/usb/host/xhci-ring.c ++++ b/drivers/usb/host/xhci-ring.c +@@ -57,7 +57,10 @@ + #include + #include "xhci.h" + #include "xhci-trace.h" +-#include "xhci-mtk.h" ++ ++static int queue_command(struct xhci_hcd *xhci, struct xhci_command *cmd, ++ u32 field1, u32 field2, ++ u32 field3, u32 field4, bool command_must_succeed); + + /* + * Returns zero if the TRB isn't in this segment, otherwise it returns the DMA +@@ -76,6 +79,7 @@ dma_addr_t xhci_trb_virt_to_dma(struct xhci_segment *seg, + return 0; + return seg->dma + (segment_offset * sizeof(*trb)); + } ++EXPORT_SYMBOL_GPL(xhci_trb_virt_to_dma); + + static bool trb_is_noop(union xhci_trb *trb) + { +@@ -151,10 +155,11 @@ static void next_trb(struct xhci_hcd *xhci, + + /* + * See Cycle bit rules. SW is the consumer for the event ring only. +- * Don't make a ring full of link TRBs. That would be dumb and this would loop. + */ + void inc_deq(struct xhci_hcd *xhci, struct xhci_ring *ring) + { ++ unsigned int link_trb_count = 0; ++ + /* event ring doesn't have link trbs, check for last trb */ + if (ring->type == TYPE_EVENT) { + if (!last_trb_on_seg(ring->deq_seg, ring->dequeue)) { +@@ -170,14 +175,23 @@ void inc_deq(struct xhci_hcd *xhci, struct xhci_ring *ring) + + /* All other rings have link trbs */ + if (!trb_is_link(ring->dequeue)) { +- ring->dequeue++; +- ring->num_trbs_free++; ++ if (last_trb_on_seg(ring->deq_seg, ring->dequeue)) { ++ xhci_warn(xhci, "Missing link TRB at end of segment\n"); ++ } else { ++ ring->dequeue++; ++ ring->num_trbs_free++; ++ } + } ++ + while (trb_is_link(ring->dequeue)) { + ring->deq_seg = ring->deq_seg->next; + ring->dequeue = ring->deq_seg->trbs; +- } + ++ if (link_trb_count++ > ring->num_segs) { ++ xhci_warn(xhci, "Ring is an endless link TRB loop\n"); ++ break; ++ } ++ } + out: + trace_xhci_inc_deq(ring); + +@@ -186,7 +200,6 @@ void inc_deq(struct xhci_hcd *xhci, struct xhci_ring *ring) + + /* + * See Cycle bit rules. SW is the consumer for the event ring only. +- * Don't make a ring full of link TRBs. That would be dumb and this would loop. + * + * If we've just enqueued a TRB that is in the middle of a TD (meaning the + * chain bit is set), then set the chain bit in all the following link TRBs. +@@ -206,11 +219,18 @@ static void inc_enq(struct xhci_hcd *xhci, struct xhci_ring *ring, + { + u32 chain; + union xhci_trb *next; ++ unsigned int link_trb_count = 0; + + chain = le32_to_cpu(ring->enqueue->generic.field[3]) & TRB_CHAIN; + /* If this is not event ring, there is one less usable TRB */ + if (!trb_is_link(ring->enqueue)) + ring->num_trbs_free--; ++ ++ if (last_trb_on_seg(ring->enq_seg, ring->enqueue)) { ++ xhci_err(xhci, "Tried to move enqueue past ring segment\n"); ++ return; ++ } ++ + next = ++(ring->enqueue); + + /* Update the dequeue pointer further if that was a link TRB */ +@@ -247,6 +267,11 @@ static void inc_enq(struct xhci_hcd *xhci, struct xhci_ring *ring, + ring->enq_seg = ring->enq_seg->next; + ring->enqueue = ring->enq_seg->trbs; + next = ring->enqueue; ++ ++ if (link_trb_count++ > ring->num_segs) { ++ xhci_warn(xhci, "%s: Ring link TRB loop\n", __func__); ++ break; ++ } + } + + trace_xhci_inc_enq(ring); +@@ -287,6 +312,7 @@ void xhci_ring_cmd_db(struct xhci_hcd *xhci) + /* Flush PCI posted writes */ + readl(&xhci->dba->doorbell[0]); + } ++EXPORT_SYMBOL_GPL(xhci_ring_cmd_db); + + static bool xhci_mod_cmd_timer(struct xhci_hcd *xhci, unsigned long delay) + { +@@ -414,9 +440,8 @@ void xhci_ring_ep_doorbell(struct xhci_hcd *xhci, + trace_xhci_ring_ep_doorbell(slot_id, DB_VALUE(ep_index, stream_id)); + + writel(DB_VALUE(ep_index, stream_id), db_addr); +- /* The CPU has better things to do at this point than wait for a +- * write-posting flush. It'll get there soon enough. +- */ ++ /* flush the write */ ++ readl(db_addr); + } + + /* Ring the doorbell for any rings with pending URBs */ +@@ -472,6 +497,26 @@ static struct xhci_virt_ep *xhci_get_virt_ep(struct xhci_hcd *xhci, + return &xhci->devs[slot_id]->eps[ep_index]; + } + ++static struct xhci_ring *xhci_virt_ep_to_ring(struct xhci_hcd *xhci, ++ struct xhci_virt_ep *ep, ++ unsigned int stream_id) ++{ ++ /* common case, no streams */ ++ if (!(ep->ep_state & EP_HAS_STREAMS)) ++ return ep->ring; ++ ++ if (!ep->stream_info) ++ return NULL; ++ ++ if (stream_id == 0 || stream_id >= ep->stream_info->num_streams) { ++ xhci_warn(xhci, "Invalid stream_id %u request for slot_id %u ep_index %u\n", ++ stream_id, ep->vdev->slot_id, ep->ep_index); ++ return NULL; ++ } ++ ++ return ep->stream_info->stream_rings[stream_id]; ++} ++ + /* Get the right ring for the given slot_id, ep_index and stream_id. + * If the endpoint supports streams, boundary check the URB's stream ID. + * If the endpoint doesn't support streams, return the singular endpoint ring. +@@ -486,29 +531,7 @@ struct xhci_ring *xhci_triad_to_transfer_ring(struct xhci_hcd *xhci, + if (!ep) + return NULL; + +- /* Common case: no streams */ +- if (!(ep->ep_state & EP_HAS_STREAMS)) +- return ep->ring; +- +- if (stream_id == 0) { +- xhci_warn(xhci, +- "WARN: Slot ID %u, ep index %u has streams, " +- "but URB has no stream ID.\n", +- slot_id, ep_index); +- return NULL; +- } +- +- if (stream_id < ep->stream_info->num_streams) +- return ep->stream_info->stream_rings[stream_id]; +- +- xhci_warn(xhci, +- "WARN: Slot ID %u, ep index %u has " +- "stream IDs 1 to %u allocated, " +- "but stream ID %u is requested.\n", +- slot_id, ep_index, +- ep->stream_info->num_streams - 1, +- stream_id); +- return NULL; ++ return xhci_virt_ep_to_ring(xhci, ep, stream_id); + } + + +@@ -535,97 +558,55 @@ static u64 xhci_get_hw_deq(struct xhci_hcd *xhci, struct xhci_virt_device *vdev, + return le64_to_cpu(ep_ctx->deq); + } + +-/* +- * Move the xHC's endpoint ring dequeue pointer past cur_td. +- * Record the new state of the xHC's endpoint ring dequeue segment, +- * dequeue pointer, stream id, and new consumer cycle state in state. +- * Update our internal representation of the ring's dequeue pointer. +- * +- * We do this in three jumps: +- * - First we update our new ring state to be the same as when the xHC stopped. +- * - Then we traverse the ring to find the segment that contains +- * the last TRB in the TD. We toggle the xHC's new cycle state when we pass +- * any link TRBs with the toggle cycle bit set. +- * - Finally we move the dequeue state one TRB further, toggling the cycle bit +- * if we've moved it past a link TRB with the toggle cycle bit set. +- * +- * Some of the uses of xhci_generic_trb are grotty, but if they're done +- * with correct __le32 accesses they should work fine. Only users of this are +- * in here. +- */ +-void xhci_find_new_dequeue_state(struct xhci_hcd *xhci, +- unsigned int slot_id, unsigned int ep_index, +- unsigned int stream_id, struct xhci_td *cur_td, +- struct xhci_dequeue_state *state) ++static int xhci_move_dequeue_past_td(struct xhci_hcd *xhci, ++ unsigned int slot_id, unsigned int ep_index, ++ unsigned int stream_id, struct xhci_td *td) + { + struct xhci_virt_device *dev = xhci->devs[slot_id]; + struct xhci_virt_ep *ep = &dev->eps[ep_index]; + struct xhci_ring *ep_ring; ++ struct xhci_command *cmd; + struct xhci_segment *new_seg; +- struct xhci_segment *halted_seg = NULL; + union xhci_trb *new_deq; +- union xhci_trb *halted_trb; +- int index = 0; ++ int new_cycle; + dma_addr_t addr; + u64 hw_dequeue; + bool cycle_found = false; + bool td_last_trb_found = false; ++ u32 trb_sct = 0; ++ int ret; + + ep_ring = xhci_triad_to_transfer_ring(xhci, slot_id, + ep_index, stream_id); + if (!ep_ring) { +- xhci_warn(xhci, "WARN can't find new dequeue state " +- "for invalid stream ID %u.\n", +- stream_id); +- return; ++ xhci_warn(xhci, "WARN can't find new dequeue, invalid stream ID %u\n", ++ stream_id); ++ return -ENODEV; + } + /* + * A cancelled TD can complete with a stall if HW cached the trb. +- * In this case driver can't find cur_td, but if the ring is empty we ++ * In this case driver can't find td, but if the ring is empty we + * can move the dequeue pointer to the current enqueue position. ++ * We shouldn't hit this anymore as cached cancelled TRBs are given back ++ * after clearing the cache, but be on the safe side and keep it anyway + */ +- if (!cur_td) { ++ if (!td) { + if (list_empty(&ep_ring->td_list)) { +- state->new_deq_seg = ep_ring->enq_seg; +- state->new_deq_ptr = ep_ring->enqueue; +- state->new_cycle_state = ep_ring->cycle_state; +- goto done; ++ new_seg = ep_ring->enq_seg; ++ new_deq = ep_ring->enqueue; ++ new_cycle = ep_ring->cycle_state; ++ xhci_dbg(xhci, "ep ring empty, Set new dequeue = enqueue"); ++ goto deq_found; + } else { +- xhci_warn(xhci, "Can't find new dequeue state, missing cur_td\n"); +- return; ++ xhci_warn(xhci, "Can't find new dequeue state, missing td\n"); ++ return -EINVAL; + } + } + +- /* Dig out the cycle state saved by the xHC during the stop ep cmd */ +- xhci_dbg_trace(xhci, trace_xhci_dbg_cancel_urb, +- "Finding endpoint context"); +- + hw_dequeue = xhci_get_hw_deq(xhci, dev, ep_index, stream_id); + new_seg = ep_ring->deq_seg; + new_deq = ep_ring->dequeue; +- +- /* +- * Quirk: xHC write-back of the DCS field in the hardware dequeue +- * pointer is wrong - use the cycle state of the TRB pointed to by +- * the dequeue pointer. +- */ +- if (xhci->quirks & XHCI_EP_CTX_BROKEN_DCS && +- !(ep->ep_state & EP_HAS_STREAMS)) +- halted_seg = trb_in_td(xhci, cur_td->start_seg, +- cur_td->first_trb, cur_td->last_trb, +- hw_dequeue & ~0xf, false); +- if (halted_seg) { +- index = ((dma_addr_t)(hw_dequeue & ~0xf) - halted_seg->dma) / +- sizeof(*halted_trb); +- halted_trb = &halted_seg->trbs[index]; +- state->new_cycle_state = halted_trb->generic.field[3] & 0x1; +- xhci_dbg(xhci, "Endpoint DCS = %d TRB index = %d cycle = %d\n", +- (u8)(hw_dequeue & 0x1), index, +- state->new_cycle_state); +- } else { +- state->new_cycle_state = hw_dequeue & 0x1; +- } +- state->stream_id = stream_id; ++ new_cycle = hw_dequeue & 0x1; + + /* + * We want to find the pointer, segment and cycle state of the new trb +@@ -640,40 +621,71 @@ void xhci_find_new_dequeue_state(struct xhci_hcd *xhci, + if (td_last_trb_found) + break; + } +- if (new_deq == cur_td->last_trb) ++ if (new_deq == td->last_trb) + td_last_trb_found = true; + + if (cycle_found && trb_is_link(new_deq) && + link_trb_toggles_cycle(new_deq)) +- state->new_cycle_state ^= 0x1; ++ new_cycle ^= 0x1; + + next_trb(xhci, ep_ring, &new_seg, &new_deq); + + /* Search wrapped around, bail out */ + if (new_deq == ep->ring->dequeue) { + xhci_err(xhci, "Error: Failed finding new dequeue state\n"); +- state->new_deq_seg = NULL; +- state->new_deq_ptr = NULL; +- return; ++ return -EINVAL; + } + + } while (!cycle_found || !td_last_trb_found); + +- state->new_deq_seg = new_seg; +- state->new_deq_ptr = new_deq; ++deq_found: + +-done: + /* Don't update the ring cycle state for the producer (us). */ +- xhci_dbg_trace(xhci, trace_xhci_dbg_cancel_urb, +- "Cycle state = 0x%x", state->new_cycle_state); ++ addr = xhci_trb_virt_to_dma(new_seg, new_deq); ++ if (addr == 0) { ++ xhci_warn(xhci, "Can't find dma of new dequeue ptr\n"); ++ xhci_warn(xhci, "deq seg = %p, deq ptr = %p\n", new_seg, new_deq); ++ return -EINVAL; ++ } ++ ++ if ((ep->ep_state & SET_DEQ_PENDING)) { ++ xhci_warn(xhci, "Set TR Deq already pending, don't submit for 0x%pad\n", ++ &addr); ++ return -EBUSY; ++ } ++ ++ /* This function gets called from contexts where it cannot sleep */ ++ cmd = xhci_alloc_command(xhci, false, GFP_ATOMIC); ++ if (!cmd) { ++ xhci_warn(xhci, "Can't alloc Set TR Deq cmd 0x%pad\n", &addr); ++ return -ENOMEM; ++ } ++ ++ if (stream_id) ++ trb_sct = SCT_FOR_TRB(SCT_PRI_TR); ++ ret = queue_command(xhci, cmd, ++ lower_32_bits(addr) | trb_sct | new_cycle, ++ upper_32_bits(addr), ++ STREAM_ID_FOR_TRB(stream_id), SLOT_ID_FOR_TRB(slot_id) | ++ EP_ID_FOR_TRB(ep_index) | TRB_TYPE(TRB_SET_DEQ), false); ++ if (ret < 0) { ++ xhci_free_command(xhci, cmd); ++ return ret; ++ } ++ ep->queued_deq_seg = new_seg; ++ ep->queued_deq_ptr = new_deq; + + xhci_dbg_trace(xhci, trace_xhci_dbg_cancel_urb, +- "New dequeue segment = %p (virtual)", +- state->new_deq_seg); +- addr = xhci_trb_virt_to_dma(state->new_deq_seg, state->new_deq_ptr); +- xhci_dbg_trace(xhci, trace_xhci_dbg_cancel_urb, +- "New dequeue pointer = 0x%llx (DMA)", +- (unsigned long long) addr); ++ "Set TR Deq ptr 0x%llx, cycle %u\n", addr, new_cycle); ++ ++ /* Stop the TD queueing code from ringing the doorbell until ++ * this command completes. The HC won't set the dequeue pointer ++ * if the ring is running, and ringing the doorbell starts the ++ * ring running. ++ */ ++ ep->ep_state |= SET_DEQ_PENDING; ++ xhci_ring_cmd_db(xhci); ++ return 0; + } + + /* flip_cycle means flip the cycle bit of all but the first and last TRB. +@@ -766,153 +778,326 @@ static void xhci_unmap_td_bounce_buffer(struct xhci_hcd *xhci, + seg->bounce_offs = 0; + } + +-/* +- * When we get a command completion for a Stop Endpoint Command, we need to +- * unlink any cancelled TDs from the ring. There are two ways to do that: +- * +- * 1. If the HW was in the middle of processing the TD that needs to be +- * cancelled, then we must move the ring's dequeue pointer past the last TRB +- * in the TD with a Set Dequeue Pointer Command. +- * 2. Otherwise, we turn all the TRBs in the TD into No-op TRBs (with the chain +- * bit cleared) so that the HW will skip over them. +- */ +-static void xhci_handle_cmd_stop_ep(struct xhci_hcd *xhci, int slot_id, +- union xhci_trb *trb, struct xhci_event_cmd *event) ++static int xhci_td_cleanup(struct xhci_hcd *xhci, struct xhci_td *td, ++ struct xhci_ring *ep_ring, int status) + { +- unsigned int ep_index; +- struct xhci_ring *ep_ring; +- struct xhci_virt_ep *ep; +- struct xhci_td *cur_td = NULL; +- struct xhci_td *last_unlinked_td; +- struct xhci_ep_ctx *ep_ctx; +- struct xhci_virt_device *vdev; +- u64 hw_deq; +- struct xhci_dequeue_state deq_state; ++ struct urb *urb = NULL; + +- if (unlikely(TRB_TO_SUSPEND_PORT(le32_to_cpu(trb->generic.field[3])))) { +- if (!xhci->devs[slot_id]) +- xhci_warn(xhci, "Stop endpoint command " +- "completion for disabled slot %u\n", +- slot_id); +- return; ++ /* Clean up the endpoint's TD list */ ++ urb = td->urb; ++ ++ /* if a bounce buffer was used to align this td then unmap it */ ++ xhci_unmap_td_bounce_buffer(xhci, ep_ring, td); ++ ++ /* Do one last check of the actual transfer length. ++ * If the host controller said we transferred more data than the buffer ++ * length, urb->actual_length will be a very big number (since it's ++ * unsigned). Play it safe and say we didn't transfer anything. ++ */ ++ if (urb->actual_length > urb->transfer_buffer_length) { ++ xhci_warn(xhci, "URB req %u and actual %u transfer length mismatch\n", ++ urb->transfer_buffer_length, urb->actual_length); ++ urb->actual_length = 0; ++ status = 0; + } ++ /* TD might be removed from td_list if we are giving back a cancelled URB */ ++ if (!list_empty(&td->td_list)) ++ list_del_init(&td->td_list); ++ /* Giving back a cancelled URB, or if a slated TD completed anyway */ ++ if (!list_empty(&td->cancelled_td_list)) ++ list_del_init(&td->cancelled_td_list); + +- memset(&deq_state, 0, sizeof(deq_state)); +- ep_index = TRB_TO_EP_INDEX(le32_to_cpu(trb->generic.field[3])); ++ inc_td_cnt(urb); ++ /* Giveback the urb when all the tds are completed */ ++ if (last_td_in_urb(td)) { ++ if ((urb->actual_length != urb->transfer_buffer_length && ++ (urb->transfer_flags & URB_SHORT_NOT_OK)) || ++ (status != 0 && !usb_endpoint_xfer_isoc(&urb->ep->desc))) ++ xhci_dbg(xhci, "Giveback URB %p, len = %d, expected = %d, status = %d\n", ++ urb, urb->actual_length, ++ urb->transfer_buffer_length, status); + +- ep = xhci_get_virt_ep(xhci, slot_id, ep_index); +- if (!ep) +- return; ++ /* set isoc urb status to 0 just as EHCI, UHCI, and OHCI */ ++ if (usb_pipetype(urb->pipe) == PIPE_ISOCHRONOUS) ++ status = 0; ++ xhci_giveback_urb_in_irq(xhci, td, status); ++ } + +- vdev = xhci->devs[slot_id]; +- ep_ctx = xhci_get_ep_ctx(xhci, vdev->out_ctx, ep_index); +- trace_xhci_handle_cmd_stop_ep(ep_ctx); ++ return 0; ++} + +- last_unlinked_td = list_last_entry(&ep->cancelled_td_list, +- struct xhci_td, cancelled_td_list); + +- if (list_empty(&ep->cancelled_td_list)) { +- xhci_stop_watchdog_timer_in_irq(xhci, ep); +- ring_doorbell_for_active_rings(xhci, slot_id, ep_index); +- return; ++/* Complete the cancelled URBs we unlinked from td_list. */ ++static void xhci_giveback_invalidated_tds(struct xhci_virt_ep *ep) ++{ ++ struct xhci_ring *ring; ++ struct xhci_td *td, *tmp_td; ++ ++ list_for_each_entry_safe(td, tmp_td, &ep->cancelled_td_list, ++ cancelled_td_list) { ++ ++ ring = xhci_urb_to_transfer_ring(ep->xhci, td->urb); ++ ++ if (td->cancel_status == TD_CLEARED) ++ xhci_td_cleanup(ep->xhci, td, ring, td->status); ++ ++ if (ep->xhci->xhc_state & XHCI_STATE_DYING) ++ return; + } ++} ++ ++static int xhci_reset_halted_ep(struct xhci_hcd *xhci, unsigned int slot_id, ++ unsigned int ep_index, enum xhci_ep_reset_type reset_type) ++{ ++ struct xhci_command *command; ++ int ret = 0; + +- /* Fix up the ep ring first, so HW stops executing cancelled TDs. +- * We have the xHCI lock, so nothing can modify this list until we drop +- * it. We're also in the event handler, so we can't get re-interrupted +- * if another Stop Endpoint command completes ++ command = xhci_alloc_command(xhci, false, GFP_ATOMIC); ++ if (!command) { ++ ret = -ENOMEM; ++ goto done; ++ } ++ ++ ret = xhci_queue_reset_ep(xhci, command, slot_id, ep_index, reset_type); ++done: ++ if (ret) ++ xhci_err(xhci, "ERROR queuing reset endpoint for slot %d ep_index %d, %d\n", ++ slot_id, ep_index, ret); ++ return ret; ++} ++ ++static int xhci_handle_halted_endpoint(struct xhci_hcd *xhci, ++ struct xhci_virt_ep *ep, unsigned int stream_id, ++ struct xhci_td *td, ++ enum xhci_ep_reset_type reset_type) ++{ ++ unsigned int slot_id = ep->vdev->slot_id; ++ int err; ++ ++ /* ++ * Avoid resetting endpoint if link is inactive. Can cause host hang. ++ * Device will be reset soon to recover the link so don't do anything + */ +- list_for_each_entry(cur_td, &ep->cancelled_td_list, cancelled_td_list) { ++ if (ep->vdev->flags & VDEV_PORT_ERROR) ++ return -ENODEV; ++ ++ /* add td to cancelled list and let reset ep handler take care of it */ ++ if (reset_type == EP_HARD_RESET) { ++ ep->ep_state |= EP_HARD_CLEAR_TOGGLE; ++ if (td && list_empty(&td->cancelled_td_list)) { ++ list_add_tail(&td->cancelled_td_list, &ep->cancelled_td_list); ++ td->cancel_status = TD_HALTED; ++ } ++ } ++ ++ if (ep->ep_state & EP_HALTED) { ++ xhci_dbg(xhci, "Reset ep command already pending\n"); ++ return 0; ++ } ++ ++ err = xhci_reset_halted_ep(xhci, slot_id, ep->ep_index, reset_type); ++ if (err) ++ return err; ++ ++ ep->ep_state |= EP_HALTED; ++ ++ xhci_ring_cmd_db(xhci); ++ ++ return 0; ++} ++ ++/* ++ * Fix up the ep ring first, so HW stops executing cancelled TDs. ++ * We have the xHCI lock, so nothing can modify this list until we drop it. ++ * We're also in the event handler, so we can't get re-interrupted if another ++ * Stop Endpoint command completes. ++ * ++ * only call this when ring is not in a running state ++ */ ++ ++static int xhci_invalidate_cancelled_tds(struct xhci_virt_ep *ep) ++{ ++ struct xhci_hcd *xhci; ++ struct xhci_td *td = NULL; ++ struct xhci_td *tmp_td = NULL; ++ struct xhci_td *cached_td = NULL; ++ struct xhci_ring *ring; ++ u64 hw_deq; ++ unsigned int slot_id = ep->vdev->slot_id; ++ int err; ++ ++ xhci = ep->xhci; ++ ++ list_for_each_entry_safe(td, tmp_td, &ep->cancelled_td_list, cancelled_td_list) { + xhci_dbg_trace(xhci, trace_xhci_dbg_cancel_urb, + "Removing canceled TD starting at 0x%llx (dma).", + (unsigned long long)xhci_trb_virt_to_dma( +- cur_td->start_seg, cur_td->first_trb)); +- ep_ring = xhci_urb_to_transfer_ring(xhci, cur_td->urb); +- if (!ep_ring) { +- /* This shouldn't happen unless a driver is mucking +- * with the stream ID after submission. This will +- * leave the TD on the hardware ring, and the hardware +- * will try to execute it, and may access a buffer +- * that has already been freed. In the best case, the +- * hardware will execute it, and the event handler will +- * ignore the completion event for that TD, since it was +- * removed from the td_list for that endpoint. In +- * short, don't muck with the stream ID after +- * submission. +- */ +- xhci_warn(xhci, "WARN Cancelled URB %p " +- "has invalid stream ID %u.\n", +- cur_td->urb, +- cur_td->urb->stream_id); +- goto remove_finished_td; ++ td->start_seg, td->first_trb)); ++ list_del_init(&td->td_list); ++ ring = xhci_urb_to_transfer_ring(xhci, td->urb); ++ if (!ring) { ++ xhci_warn(xhci, "WARN Cancelled URB %p has invalid stream ID %u.\n", ++ td->urb, td->urb->stream_id); ++ continue; + } + /* +- * If we stopped on the TD we need to cancel, then we have to ++ * If a ring stopped on the TD we need to cancel then we have to + * move the xHC endpoint ring dequeue pointer past this TD. ++ * Rings halted due to STALL may show hw_deq is past the stalled ++ * TD, but still require a set TR Deq command to flush xHC cache. + */ +- hw_deq = xhci_get_hw_deq(xhci, vdev, ep_index, +- cur_td->urb->stream_id); ++ hw_deq = xhci_get_hw_deq(xhci, ep->vdev, ep->ep_index, ++ td->urb->stream_id); + hw_deq &= ~0xf; + +- if (trb_in_td(xhci, cur_td->start_seg, cur_td->first_trb, +- cur_td->last_trb, hw_deq, false)) { +- xhci_find_new_dequeue_state(xhci, slot_id, ep_index, +- cur_td->urb->stream_id, +- cur_td, &deq_state); ++ if (td->cancel_status == TD_HALTED) { ++ cached_td = td; ++ } else if (trb_in_td(xhci, td->start_seg, td->first_trb, ++ td->last_trb, hw_deq, false)) { ++ switch (td->cancel_status) { ++ case TD_CLEARED: /* TD is already no-op */ ++ case TD_CLEARING_CACHE: /* set TR deq command already queued */ ++ break; ++ case TD_DIRTY: /* TD is cached, clear it */ ++ case TD_HALTED: ++ /* FIXME stream case, several stopped rings */ ++ cached_td = td; ++ break; ++ } + } else { +- td_to_noop(xhci, ep_ring, cur_td, false); ++ td_to_noop(xhci, ring, td, false); ++ td->cancel_status = TD_CLEARED; + } ++ } ++ if (cached_td) { ++ cached_td->cancel_status = TD_CLEARING_CACHE; ++ ++ err = xhci_move_dequeue_past_td(xhci, slot_id, ep->ep_index, ++ cached_td->urb->stream_id, ++ cached_td); ++ /* Failed to move past cached td, try just setting it noop */ ++ if (err) { ++ td_to_noop(xhci, ring, cached_td, false); ++ cached_td->cancel_status = TD_CLEARED; ++ } ++ cached_td = NULL; ++ } ++ return 0; ++} + +-remove_finished_td: +- /* +- * The event handler won't see a completion for this TD anymore, +- * so remove it from the endpoint ring's TD list. Keep it in +- * the cancelled TD list for URB completion later. +- */ +- list_del_init(&cur_td->td_list); ++/* ++ * Returns the TD the endpoint ring halted on. ++ * Only call for non-running rings without streams. ++ */ ++static struct xhci_td *find_halted_td(struct xhci_virt_ep *ep) ++{ ++ struct xhci_td *td; ++ u64 hw_deq; ++ ++ if (!list_empty(&ep->ring->td_list)) { /* Not streams compatible */ ++ hw_deq = xhci_get_hw_deq(ep->xhci, ep->vdev, ep->ep_index, 0); ++ hw_deq &= ~0xf; ++ td = list_first_entry(&ep->ring->td_list, struct xhci_td, td_list); ++ if (trb_in_td(ep->xhci, td->start_seg, td->first_trb, ++ td->last_trb, hw_deq, false)) ++ return td; + } ++ return NULL; ++} + +- xhci_stop_watchdog_timer_in_irq(xhci, ep); ++/* ++ * When we get a command completion for a Stop Endpoint Command, we need to ++ * unlink any cancelled TDs from the ring. There are two ways to do that: ++ * ++ * 1. If the HW was in the middle of processing the TD that needs to be ++ * cancelled, then we must move the ring's dequeue pointer past the last TRB ++ * in the TD with a Set Dequeue Pointer Command. ++ * 2. Otherwise, we turn all the TRBs in the TD into No-op TRBs (with the chain ++ * bit cleared) so that the HW will skip over them. ++ */ ++static void xhci_handle_cmd_stop_ep(struct xhci_hcd *xhci, int slot_id, ++ union xhci_trb *trb, u32 comp_code) ++{ ++ unsigned int ep_index; ++ struct xhci_virt_ep *ep; ++ struct xhci_ep_ctx *ep_ctx; ++ struct xhci_td *td = NULL; ++ enum xhci_ep_reset_type reset_type; ++ struct xhci_command *command; ++ int err; + +- /* If necessary, queue a Set Transfer Ring Dequeue Pointer command */ +- if (deq_state.new_deq_ptr && deq_state.new_deq_seg) { +- xhci_queue_new_dequeue_state(xhci, slot_id, ep_index, +- &deq_state); +- xhci_ring_cmd_db(xhci); +- } else { +- /* Otherwise ring the doorbell(s) to restart queued transfers */ +- ring_doorbell_for_active_rings(xhci, slot_id, ep_index); ++ if (unlikely(TRB_TO_SUSPEND_PORT(le32_to_cpu(trb->generic.field[3])))) { ++ if (!xhci->devs[slot_id]) ++ xhci_warn(xhci, "Stop endpoint command completion for disabled slot %u\n", ++ slot_id); ++ return; + } + ++ ep_index = TRB_TO_EP_INDEX(le32_to_cpu(trb->generic.field[3])); ++ ep = xhci_get_virt_ep(xhci, slot_id, ep_index); ++ if (!ep) ++ return; ++ ++ ep_ctx = xhci_get_ep_ctx(xhci, ep->vdev->out_ctx, ep_index); ++ ++ trace_xhci_handle_cmd_stop_ep(ep_ctx); ++ ++ if (comp_code == COMP_CONTEXT_STATE_ERROR) { + /* +- * Drop the lock and complete the URBs in the cancelled TD list. +- * New TDs to be cancelled might be added to the end of the list before +- * we can complete all the URBs for the TDs we already unlinked. +- * So stop when we've completed the URB for the last TD we unlinked. ++ * If stop endpoint command raced with a halting endpoint we need to ++ * reset the host side endpoint first. ++ * If the TD we halted on isn't cancelled the TD should be given back ++ * with a proper error code, and the ring dequeue moved past the TD. ++ * If streams case we can't find hw_deq, or the TD we halted on so do a ++ * soft reset. ++ * ++ * Proper error code is unknown here, it would be -EPIPE if device side ++ * of enadpoit halted (aka STALL), and -EPROTO if not (transaction error) ++ * We use -EPROTO, if device is stalled it should return a stall error on ++ * next transfer, which then will return -EPIPE, and device side stall is ++ * noted and cleared by class driver. + */ +- do { +- cur_td = list_first_entry(&ep->cancelled_td_list, +- struct xhci_td, cancelled_td_list); +- list_del_init(&cur_td->cancelled_td_list); ++ switch (GET_EP_CTX_STATE(ep_ctx)) { ++ case EP_STATE_HALTED: ++ xhci_dbg(xhci, "Stop ep completion raced with stall, reset ep\n"); ++ if (ep->ep_state & EP_HAS_STREAMS) { ++ reset_type = EP_SOFT_RESET; ++ } else { ++ reset_type = EP_HARD_RESET; ++ td = find_halted_td(ep); ++ if (td) ++ td->status = -EPROTO; ++ } ++ /* reset ep, reset handler cleans up cancelled tds */ ++ err = xhci_handle_halted_endpoint(xhci, ep, 0, td, ++ reset_type); ++ if (err) ++ break; ++ xhci_stop_watchdog_timer_in_irq(xhci, ep); ++ return; ++ case EP_STATE_RUNNING: ++ /* Race, HW handled stop ep cmd before ep was running */ ++ command = xhci_alloc_command(xhci, false, GFP_ATOMIC); ++ if (!command) ++ xhci_stop_watchdog_timer_in_irq(xhci, ep); + +- /* Clean up the cancelled URB */ +- /* Doesn't matter what we pass for status, since the core will +- * just overwrite it (because the URB has been unlinked). +- */ +- ep_ring = xhci_urb_to_transfer_ring(xhci, cur_td->urb); +- xhci_unmap_td_bounce_buffer(xhci, ep_ring, cur_td); +- inc_td_cnt(cur_td->urb); +- if (last_td_in_urb(cur_td)) +- xhci_giveback_urb_in_irq(xhci, cur_td, 0); ++ mod_timer(&ep->stop_cmd_timer, ++ jiffies + XHCI_STOP_EP_CMD_TIMEOUT * HZ); ++ xhci_queue_stop_endpoint(xhci, command, slot_id, ep_index, 0); ++ xhci_ring_cmd_db(xhci); + +- /* Stop processing the cancelled list if the watchdog timer is +- * running. +- */ +- if (xhci->xhc_state & XHCI_STATE_DYING) + return; +- } while (cur_td != last_unlinked_td); ++ default: ++ break; ++ } ++ } ++ /* will queue a set TR deq if stopped on a cancelled, uncleared TD */ ++ xhci_invalidate_cancelled_tds(ep); ++ xhci_stop_watchdog_timer_in_irq(xhci, ep); + +- /* Return to the event handler with xhci->lock re-acquired */ ++ /* Otherwise ring the doorbell(s) to restart queued transfers */ ++ xhci_giveback_invalidated_tds(ep); ++ ring_doorbell_for_active_rings(xhci, slot_id, ep_index); + } + + static void xhci_kill_ring_urbs(struct xhci_hcd *xhci, struct xhci_ring *ring) +@@ -1126,10 +1311,10 @@ static void xhci_handle_cmd_set_deq(struct xhci_hcd *xhci, int slot_id, + unsigned int ep_index; + unsigned int stream_id; + struct xhci_ring *ep_ring; +- struct xhci_virt_device *dev; + struct xhci_virt_ep *ep; + struct xhci_ep_ctx *ep_ctx; + struct xhci_slot_ctx *slot_ctx; ++ struct xhci_td *td, *tmp_td; + + ep_index = TRB_TO_EP_INDEX(le32_to_cpu(trb->generic.field[3])); + stream_id = TRB_TO_STREAM_ID(le32_to_cpu(trb->generic.field[2])); +@@ -1137,8 +1322,7 @@ static void xhci_handle_cmd_set_deq(struct xhci_hcd *xhci, int slot_id, + if (!ep) + return; + +- dev = xhci->devs[slot_id]; +- ep_ring = xhci_stream_id_to_ring(dev, ep_index, stream_id); ++ ep_ring = xhci_virt_ep_to_ring(xhci, ep, stream_id); + if (!ep_ring) { + xhci_warn(xhci, "WARN Set TR deq ptr command for freed stream ID %u\n", + stream_id); +@@ -1146,8 +1330,8 @@ static void xhci_handle_cmd_set_deq(struct xhci_hcd *xhci, int slot_id, + goto cleanup; + } + +- ep_ctx = xhci_get_ep_ctx(xhci, dev->out_ctx, ep_index); +- slot_ctx = xhci_get_slot_ctx(xhci, dev->out_ctx); ++ ep_ctx = xhci_get_ep_ctx(xhci, ep->vdev->out_ctx, ep_index); ++ slot_ctx = xhci_get_slot_ctx(xhci, ep->vdev->out_ctx); + trace_xhci_handle_cmd_set_deq(slot_ctx); + trace_xhci_handle_cmd_set_deq_ep(ep_ctx); + +@@ -1200,7 +1384,7 @@ static void xhci_handle_cmd_set_deq(struct xhci_hcd *xhci, int slot_id, + /* Update the ring's dequeue segment and dequeue pointer + * to reflect the new position. + */ +- update_ring_for_set_deq_completion(xhci, dev, ++ update_ring_for_set_deq_completion(xhci, ep->vdev, + ep_ring, ep_index); + } else { + xhci_warn(xhci, "Mismatch between completed Set TR Deq Ptr command & xHCI internal state.\n"); +@@ -1208,7 +1392,15 @@ static void xhci_handle_cmd_set_deq(struct xhci_hcd *xhci, int slot_id, + ep->queued_deq_seg, ep->queued_deq_ptr); + } + } +- ++ /* HW cached TDs cleared from cache, give them back */ ++ list_for_each_entry_safe(td, tmp_td, &ep->cancelled_td_list, ++ cancelled_td_list) { ++ ep_ring = xhci_urb_to_transfer_ring(ep->xhci, td->urb); ++ if (td->cancel_status == TD_CLEARING_CACHE) { ++ td->cancel_status = TD_CLEARED; ++ xhci_td_cleanup(ep->xhci, td, ep_ring, td->status); ++ } ++ } + cleanup: + ep->ep_state &= ~SET_DEQ_PENDING; + ep->queued_deq_seg = NULL; +@@ -1220,7 +1412,6 @@ static void xhci_handle_cmd_set_deq(struct xhci_hcd *xhci, int slot_id, + static void xhci_handle_cmd_reset_ep(struct xhci_hcd *xhci, int slot_id, + union xhci_trb *trb, u32 cmd_comp_code) + { +- struct xhci_virt_device *vdev; + struct xhci_virt_ep *ep; + struct xhci_ep_ctx *ep_ctx; + unsigned int ep_index; +@@ -1230,8 +1421,7 @@ static void xhci_handle_cmd_reset_ep(struct xhci_hcd *xhci, int slot_id, + if (!ep) + return; + +- vdev = xhci->devs[slot_id]; +- ep_ctx = xhci_get_ep_ctx(xhci, vdev->out_ctx, ep_index); ++ ep_ctx = xhci_get_ep_ctx(xhci, ep->vdev->out_ctx, ep_index); + trace_xhci_handle_cmd_reset_ep(ep_ctx); + + /* This command will only fail if the endpoint wasn't halted, +@@ -1240,27 +1430,15 @@ static void xhci_handle_cmd_reset_ep(struct xhci_hcd *xhci, int slot_id, + xhci_dbg_trace(xhci, trace_xhci_dbg_reset_ep, + "Ignoring reset ep completion code of %u", cmd_comp_code); + +- /* HW with the reset endpoint quirk needs to have a configure endpoint +- * command complete before the endpoint can be used. Queue that here +- * because the HW can't handle two commands being queued in a row. +- */ +- if (xhci->quirks & XHCI_RESET_EP_QUIRK) { +- struct xhci_command *command; ++ /* Cleanup cancelled TDs as ep is stopped. May queue a Set TR Deq cmd */ ++ xhci_invalidate_cancelled_tds(ep); + +- command = xhci_alloc_command(xhci, false, GFP_ATOMIC); +- if (!command) +- return; ++ if (xhci->quirks & XHCI_RESET_EP_QUIRK) ++ xhci_dbg(xhci, "Note: Removed workaround to queue config ep for this hw"); ++ /* Clear our internal halted state */ ++ ep->ep_state &= ~EP_HALTED; + +- xhci_dbg_trace(xhci, trace_xhci_dbg_quirks, +- "Queueing configure endpoint command"); +- xhci_queue_configure_endpoint(xhci, command, +- xhci->devs[slot_id]->in_ctx->dma, slot_id, +- false); +- xhci_ring_cmd_db(xhci); +- } else { +- /* Clear our internal halted state */ +- ep->ep_state &= ~EP_HALTED; +- } ++ xhci_giveback_invalidated_tds(ep); + + /* if this was a soft reset, then restart */ + if ((le32_to_cpu(trb->generic.field[3])) & TRB_TSP) +@@ -1295,7 +1473,7 @@ static void xhci_handle_cmd_disable_slot(struct xhci_hcd *xhci, int slot_id) + } + + static void xhci_handle_cmd_config_ep(struct xhci_hcd *xhci, int slot_id, +- struct xhci_event_cmd *event, u32 cmd_comp_code) ++ u32 cmd_comp_code) + { + struct xhci_virt_device *virt_dev; + struct xhci_input_control_ctx *ctrl_ctx; +@@ -1313,6 +1491,8 @@ static void xhci_handle_cmd_config_ep(struct xhci_hcd *xhci, int slot_id, + * is not waiting on the configure endpoint command. + */ + virt_dev = xhci->devs[slot_id]; ++ if (!virt_dev) ++ return; + ctrl_ctx = xhci_get_input_control_ctx(virt_dev->in_ctx); + if (!ctrl_ctx) { + xhci_warn(xhci, "Could not get input context, bad type.\n"); +@@ -1357,24 +1537,27 @@ static void xhci_handle_cmd_addr_dev(struct xhci_hcd *xhci, int slot_id) + struct xhci_slot_ctx *slot_ctx; + + vdev = xhci->devs[slot_id]; ++ if (!vdev) ++ return; + slot_ctx = xhci_get_slot_ctx(xhci, vdev->out_ctx); + trace_xhci_handle_cmd_addr_dev(slot_ctx); + } + +-static void xhci_handle_cmd_reset_dev(struct xhci_hcd *xhci, int slot_id, +- struct xhci_event_cmd *event) ++static void xhci_handle_cmd_reset_dev(struct xhci_hcd *xhci, int slot_id) + { + struct xhci_virt_device *vdev; + struct xhci_slot_ctx *slot_ctx; + + vdev = xhci->devs[slot_id]; ++ if (!vdev) { ++ xhci_warn(xhci, "Reset device command completion for disabled slot %u\n", ++ slot_id); ++ return; ++ } + slot_ctx = xhci_get_slot_ctx(xhci, vdev->out_ctx); + trace_xhci_handle_cmd_reset_dev(slot_ctx); + + xhci_dbg(xhci, "Completed reset device command.\n"); +- if (!xhci->devs[slot_id]) +- xhci_warn(xhci, "Reset device command completion " +- "for disabled slot %u\n", slot_id); + } + + static void xhci_handle_cmd_nec_get_fw(struct xhci_hcd *xhci, +@@ -1467,7 +1650,7 @@ void xhci_handle_command_timeout(struct work_struct *work) + static void handle_cmd_completion(struct xhci_hcd *xhci, + struct xhci_event_cmd *event) + { +- int slot_id = TRB_TO_SLOT_ID(le32_to_cpu(event->flags)); ++ unsigned int slot_id = TRB_TO_SLOT_ID(le32_to_cpu(event->flags)); + u64 cmd_dma; + dma_addr_t cmd_dequeue_dma; + u32 cmd_comp_code; +@@ -1475,6 +1658,11 @@ static void handle_cmd_completion(struct xhci_hcd *xhci, + struct xhci_command *cmd; + u32 cmd_type; + ++ if (slot_id >= MAX_HC_SLOTS) { ++ xhci_warn(xhci, "Invalid slot_id %u\n", slot_id); ++ return; ++ } ++ + cmd_dma = le64_to_cpu(event->cmd_trb); + cmd_trb = xhci->cmd_ring->dequeue; + +@@ -1535,8 +1723,7 @@ static void handle_cmd_completion(struct xhci_hcd *xhci, + break; + case TRB_CONFIG_EP: + if (!cmd->completion) +- xhci_handle_cmd_config_ep(xhci, slot_id, event, +- cmd_comp_code); ++ xhci_handle_cmd_config_ep(xhci, slot_id, cmd_comp_code); + break; + case TRB_EVAL_CONTEXT: + break; +@@ -1547,7 +1734,8 @@ static void handle_cmd_completion(struct xhci_hcd *xhci, + WARN_ON(slot_id != TRB_TO_SLOT_ID( + le32_to_cpu(cmd_trb->generic.field[3]))); + if (!cmd->completion) +- xhci_handle_cmd_stop_ep(xhci, slot_id, cmd_trb, event); ++ xhci_handle_cmd_stop_ep(xhci, slot_id, cmd_trb, ++ cmd_comp_code); + break; + case TRB_SET_DEQ: + WARN_ON(slot_id != TRB_TO_SLOT_ID( +@@ -1570,7 +1758,7 @@ static void handle_cmd_completion(struct xhci_hcd *xhci, + */ + slot_id = TRB_TO_SLOT_ID( + le32_to_cpu(cmd_trb->generic.field[3])); +- xhci_handle_cmd_reset_dev(xhci, slot_id, event); ++ xhci_handle_cmd_reset_dev(xhci, slot_id); + break; + case TRB_NEC_GET_FW: + xhci_handle_cmd_nec_get_fw(xhci, event); +@@ -1597,11 +1785,8 @@ static void handle_cmd_completion(struct xhci_hcd *xhci, + } + + static void handle_vendor_event(struct xhci_hcd *xhci, +- union xhci_trb *event) ++ union xhci_trb *event, u32 trb_type) + { +- u32 trb_type; +- +- trb_type = TRB_FIELD_TO_TYPE(le32_to_cpu(event->generic.field[3])); + xhci_dbg(xhci, "Vendor specific event TRB type = %u\n", trb_type); + if (trb_type == TRB_NEC_CMD_COMP && (xhci->quirks & XHCI_NEC_HOST)) + handle_cmd_completion(xhci, &event->event_cmd); +@@ -1918,37 +2103,6 @@ static void xhci_clear_hub_tt_buffer(struct xhci_hcd *xhci, struct xhci_td *td, + } + } + +-static void xhci_cleanup_halted_endpoint(struct xhci_hcd *xhci, +- unsigned int slot_id, unsigned int ep_index, +- unsigned int stream_id, struct xhci_td *td, +- enum xhci_ep_reset_type reset_type) +-{ +- struct xhci_virt_ep *ep = &xhci->devs[slot_id]->eps[ep_index]; +- struct xhci_command *command; +- +- /* +- * Avoid resetting endpoint if link is inactive. Can cause host hang. +- * Device will be reset soon to recover the link so don't do anything +- */ +- if (xhci->devs[slot_id]->flags & VDEV_PORT_ERROR) +- return; +- +- command = xhci_alloc_command(xhci, false, GFP_ATOMIC); +- if (!command) +- return; +- +- ep->ep_state |= EP_HALTED; +- +- xhci_queue_reset_ep(xhci, command, slot_id, ep_index, reset_type); +- +- if (reset_type == EP_HARD_RESET) { +- ep->ep_state |= EP_HARD_CLEAR_TOGGLE; +- xhci_cleanup_stalled_ring(xhci, slot_id, ep_index, stream_id, +- td); +- } +- xhci_ring_cmd_db(xhci); +-} +- + /* Check if an error has halted the endpoint ring. The class driver will + * cleanup the halt for a non-default control endpoint if we indicate a stall. + * However, a babble and other errors also halt the endpoint ring, and the class +@@ -1989,82 +2143,60 @@ int xhci_is_vendor_info_code(struct xhci_hcd *xhci, unsigned int trb_comp_code) + return 0; + } + +-static int xhci_td_cleanup(struct xhci_hcd *xhci, struct xhci_td *td, +- struct xhci_ring *ep_ring, int *status) ++static int finish_td(struct xhci_hcd *xhci, struct xhci_virt_ep *ep, ++ struct xhci_ring *ep_ring, struct xhci_td *td, ++ u32 trb_comp_code) + { +- struct urb *urb = NULL; +- +- /* Clean up the endpoint's TD list */ +- urb = td->urb; +- +- /* if a bounce buffer was used to align this td then unmap it */ +- xhci_unmap_td_bounce_buffer(xhci, ep_ring, td); +- +- /* Do one last check of the actual transfer length. +- * If the host controller said we transferred more data than the buffer +- * length, urb->actual_length will be a very big number (since it's +- * unsigned). Play it safe and say we didn't transfer anything. +- */ +- if (urb->actual_length > urb->transfer_buffer_length) { +- xhci_warn(xhci, "URB req %u and actual %u transfer length mismatch\n", +- urb->transfer_buffer_length, urb->actual_length); +- urb->actual_length = 0; +- *status = 0; +- } +- list_del_init(&td->td_list); +- /* Was this TD slated to be cancelled but completed anyway? */ +- if (!list_empty(&td->cancelled_td_list)) +- list_del_init(&td->cancelled_td_list); +- +- inc_td_cnt(urb); +- /* Giveback the urb when all the tds are completed */ +- if (last_td_in_urb(td)) { +- if ((urb->actual_length != urb->transfer_buffer_length && +- (urb->transfer_flags & URB_SHORT_NOT_OK)) || +- (*status != 0 && !usb_endpoint_xfer_isoc(&urb->ep->desc))) +- xhci_dbg(xhci, "Giveback URB %p, len = %d, expected = %d, status = %d\n", +- urb, urb->actual_length, +- urb->transfer_buffer_length, *status); +- +- /* set isoc urb status to 0 just as EHCI, UHCI, and OHCI */ +- if (usb_pipetype(urb->pipe) == PIPE_ISOCHRONOUS) +- *status = 0; +- xhci_giveback_urb_in_irq(xhci, td, *status); +- } +- +- return 0; +-} +- +-static int finish_td(struct xhci_hcd *xhci, struct xhci_td *td, +- struct xhci_transfer_event *event, +- struct xhci_virt_ep *ep, int *status) +-{ +- struct xhci_virt_device *xdev; + struct xhci_ep_ctx *ep_ctx; +- struct xhci_ring *ep_ring; +- unsigned int slot_id; +- u32 trb_comp_code; +- int ep_index; + +- slot_id = TRB_TO_SLOT_ID(le32_to_cpu(event->flags)); +- xdev = xhci->devs[slot_id]; +- ep_index = TRB_TO_EP_ID(le32_to_cpu(event->flags)) - 1; +- ep_ring = xhci_dma_to_transfer_ring(ep, le64_to_cpu(event->buffer)); +- ep_ctx = xhci_get_ep_ctx(xhci, xdev->out_ctx, ep_index); +- trb_comp_code = GET_COMP_CODE(le32_to_cpu(event->transfer_len)); ++ ep_ctx = xhci_get_ep_ctx(xhci, ep->vdev->out_ctx, ep->ep_index); + +- if (trb_comp_code == COMP_STOPPED_LENGTH_INVALID || +- trb_comp_code == COMP_STOPPED || +- trb_comp_code == COMP_STOPPED_SHORT_PACKET) { +- /* The Endpoint Stop Command completion will take care of any +- * stopped TDs. A stopped TD may be restarted, so don't update ++ switch (trb_comp_code) { ++ case COMP_STOPPED_LENGTH_INVALID: ++ case COMP_STOPPED_SHORT_PACKET: ++ case COMP_STOPPED: ++ /* ++ * The "Stop Endpoint" completion will take care of any ++ * stopped TDs. A stopped TD may be restarted, so don't update + * the ring dequeue pointer or take this TD off any lists yet. + */ + return 0; +- } +- if (trb_comp_code == COMP_STALL_ERROR || +- xhci_requires_manual_halt_cleanup(xhci, ep_ctx, +- trb_comp_code)) { ++ case COMP_USB_TRANSACTION_ERROR: ++ case COMP_BABBLE_DETECTED_ERROR: ++ case COMP_SPLIT_TRANSACTION_ERROR: ++ /* ++ * If endpoint context state is not halted we might be ++ * racing with a reset endpoint command issued by a unsuccessful ++ * stop endpoint completion (context error). In that case the ++ * td should be on the cancelled list, and EP_HALTED flag set. ++ * ++ * Or then it's not halted due to the 0.95 spec stating that a ++ * babbling control endpoint should not halt. The 0.96 spec ++ * again says it should. Some HW claims to be 0.95 compliant, ++ * but it halts the control endpoint anyway. ++ */ ++ if (GET_EP_CTX_STATE(ep_ctx) != EP_STATE_HALTED) { ++ /* ++ * If EP_HALTED is set and TD is on the cancelled list ++ * the TD and dequeue pointer will be handled by reset ++ * ep command completion ++ */ ++ if ((ep->ep_state & EP_HALTED) && ++ !list_empty(&td->cancelled_td_list)) { ++ xhci_dbg(xhci, "Already resolving halted ep for 0x%llx\n", ++ (unsigned long long)xhci_trb_virt_to_dma( ++ td->start_seg, td->first_trb)); ++ return 0; ++ } ++ /* endpoint not halted, don't reset it */ ++ break; ++ } ++ /* Almost same procedure as for STALL_ERROR below */ ++ xhci_clear_hub_tt_buffer(xhci, td, ep); ++ xhci_handle_halted_endpoint(xhci, ep, ep_ring->stream_id, td, ++ EP_HARD_RESET); ++ return 0; ++ case COMP_STALL_ERROR: + /* + * xhci internal endpoint state will go to a "halt" state for + * any stall, including default control pipe protocol stall. +@@ -2075,18 +2207,24 @@ static int finish_td(struct xhci_hcd *xhci, struct xhci_td *td, + * stall later. Hub TT buffer should only be cleared for FS/LS + * devices behind HS hubs for functional stalls. + */ +- if ((ep_index != 0) || (trb_comp_code != COMP_STALL_ERROR)) ++ if (ep->ep_index != 0) + xhci_clear_hub_tt_buffer(xhci, td, ep); +- xhci_cleanup_halted_endpoint(xhci, slot_id, ep_index, +- ep_ring->stream_id, td, EP_HARD_RESET); +- } else { +- /* Update ring dequeue pointer */ +- while (ep_ring->dequeue != td->last_trb) +- inc_deq(xhci, ep_ring); +- inc_deq(xhci, ep_ring); ++ ++ xhci_handle_halted_endpoint(xhci, ep, ep_ring->stream_id, td, ++ EP_HARD_RESET); ++ ++ return 0; /* xhci_handle_halted_endpoint marked td cancelled */ ++ default: ++ break; + } + +- return xhci_td_cleanup(xhci, td, ep_ring, status); ++ /* Update ring dequeue pointer */ ++ ep_ring->dequeue = td->last_trb; ++ ep_ring->deq_seg = td->last_trb_seg; ++ ep_ring->num_trbs_free += td->num_trbs - 1; ++ inc_deq(xhci, ep_ring); ++ ++ return xhci_td_cleanup(xhci, td, ep_ring, td->status); + } + + /* sum trb lengths from ring dequeue up to stop_trb, _excluding_ stop_trb */ +@@ -2107,23 +2245,17 @@ static int sum_trb_lengths(struct xhci_hcd *xhci, struct xhci_ring *ring, + /* + * Process control tds, update urb status and actual_length. + */ +-static int process_ctrl_td(struct xhci_hcd *xhci, struct xhci_td *td, +- union xhci_trb *ep_trb, struct xhci_transfer_event *event, +- struct xhci_virt_ep *ep, int *status) ++static int process_ctrl_td(struct xhci_hcd *xhci, struct xhci_virt_ep *ep, ++ struct xhci_ring *ep_ring, struct xhci_td *td, ++ union xhci_trb *ep_trb, struct xhci_transfer_event *event) + { +- struct xhci_virt_device *xdev; +- unsigned int slot_id; +- int ep_index; + struct xhci_ep_ctx *ep_ctx; + u32 trb_comp_code; + u32 remaining, requested; + u32 trb_type; + + trb_type = TRB_FIELD_TO_TYPE(le32_to_cpu(ep_trb->generic.field[3])); +- slot_id = TRB_TO_SLOT_ID(le32_to_cpu(event->flags)); +- xdev = xhci->devs[slot_id]; +- ep_index = TRB_TO_EP_ID(le32_to_cpu(event->flags)) - 1; +- ep_ctx = xhci_get_ep_ctx(xhci, xdev->out_ctx, ep_index); ++ ep_ctx = xhci_get_ep_ctx(xhci, ep->vdev->out_ctx, ep->ep_index); + trb_comp_code = GET_COMP_CODE(le32_to_cpu(event->transfer_len)); + requested = td->urb->transfer_buffer_length; + remaining = EVENT_TRB_LEN(le32_to_cpu(event->transfer_len)); +@@ -2133,13 +2265,13 @@ static int process_ctrl_td(struct xhci_hcd *xhci, struct xhci_td *td, + if (trb_type != TRB_STATUS) { + xhci_warn(xhci, "WARN: Success on ctrl %s TRB without IOC set?\n", + (trb_type == TRB_DATA) ? "data" : "setup"); +- *status = -ESHUTDOWN; ++ td->status = -ESHUTDOWN; + break; + } +- *status = 0; ++ td->status = 0; + break; + case COMP_SHORT_PACKET: +- *status = 0; ++ td->status = 0; + break; + case COMP_STOPPED_SHORT_PACKET: + if (trb_type == TRB_DATA || trb_type == TRB_NORMAL) +@@ -2171,7 +2303,7 @@ static int process_ctrl_td(struct xhci_hcd *xhci, struct xhci_td *td, + ep_ctx, trb_comp_code)) + break; + xhci_dbg(xhci, "TRB error %u, halted endpoint index = %u\n", +- trb_comp_code, ep_index); ++ trb_comp_code, ep->ep_index); + fallthrough; + case COMP_STALL_ERROR: + /* Did we transfer part of the data (middle) phase? */ +@@ -2203,17 +2335,16 @@ static int process_ctrl_td(struct xhci_hcd *xhci, struct xhci_td *td, + td->urb->actual_length = requested; + + finish_td: +- return finish_td(xhci, td, event, ep, status); ++ return finish_td(xhci, ep, ep_ring, td, trb_comp_code); + } + + /* + * Process isochronous tds, update urb packet status and actual_length. + */ +-static int process_isoc_td(struct xhci_hcd *xhci, struct xhci_td *td, +- union xhci_trb *ep_trb, struct xhci_transfer_event *event, +- struct xhci_virt_ep *ep, int *status) ++static int process_isoc_td(struct xhci_hcd *xhci, struct xhci_virt_ep *ep, ++ struct xhci_ring *ep_ring, struct xhci_td *td, ++ union xhci_trb *ep_trb, struct xhci_transfer_event *event) + { +- struct xhci_ring *ep_ring; + struct urb_priv *urb_priv; + int idx; + struct usb_iso_packet_descriptor *frame; +@@ -2222,7 +2353,6 @@ static int process_isoc_td(struct xhci_hcd *xhci, struct xhci_td *td, + u32 remaining, requested, ep_trb_len; + int short_framestatus; + +- ep_ring = xhci_dma_to_transfer_ring(ep, le64_to_cpu(event->buffer)); + trb_comp_code = GET_COMP_CODE(le32_to_cpu(event->transfer_len)); + urb_priv = td->urb->hcpriv; + idx = urb_priv->num_tds_done; +@@ -2283,26 +2413,23 @@ static int process_isoc_td(struct xhci_hcd *xhci, struct xhci_td *td, + } + + if (sum_trbs_for_length) +- frame->actual_length = sum_trb_lengths(xhci, ep_ring, ep_trb) + ++ frame->actual_length = sum_trb_lengths(xhci, ep->ring, ep_trb) + + ep_trb_len - remaining; + else + frame->actual_length = requested; + + td->urb->actual_length += frame->actual_length; + +- return finish_td(xhci, td, event, ep, status); ++ return finish_td(xhci, ep, ep_ring, td, trb_comp_code); + } + + static int skip_isoc_td(struct xhci_hcd *xhci, struct xhci_td *td, +- struct xhci_transfer_event *event, +- struct xhci_virt_ep *ep, int *status) ++ struct xhci_virt_ep *ep, int status) + { +- struct xhci_ring *ep_ring; + struct urb_priv *urb_priv; + struct usb_iso_packet_descriptor *frame; + int idx; + +- ep_ring = xhci_dma_to_transfer_ring(ep, le64_to_cpu(event->buffer)); + urb_priv = td->urb->hcpriv; + idx = urb_priv->num_tds_done; + frame = &td->urb->iso_frame_desc[idx]; +@@ -2314,31 +2441,26 @@ static int skip_isoc_td(struct xhci_hcd *xhci, struct xhci_td *td, + frame->actual_length = 0; + + /* Update ring dequeue pointer */ +- while (ep_ring->dequeue != td->last_trb) +- inc_deq(xhci, ep_ring); +- inc_deq(xhci, ep_ring); ++ ep->ring->dequeue = td->last_trb; ++ ep->ring->deq_seg = td->last_trb_seg; ++ ep->ring->num_trbs_free += td->num_trbs - 1; ++ inc_deq(xhci, ep->ring); + +- return xhci_td_cleanup(xhci, td, ep_ring, status); ++ return xhci_td_cleanup(xhci, td, ep->ring, status); + } + + /* + * Process bulk and interrupt tds, update urb status and actual_length. + */ +-static int process_bulk_intr_td(struct xhci_hcd *xhci, struct xhci_td *td, +- union xhci_trb *ep_trb, struct xhci_transfer_event *event, +- struct xhci_virt_ep *ep, int *status) ++static int process_bulk_intr_td(struct xhci_hcd *xhci, struct xhci_virt_ep *ep, ++ struct xhci_ring *ep_ring, struct xhci_td *td, ++ union xhci_trb *ep_trb, struct xhci_transfer_event *event) + { + struct xhci_slot_ctx *slot_ctx; +- struct xhci_ring *ep_ring; + u32 trb_comp_code; + u32 remaining, requested, ep_trb_len; +- unsigned int slot_id; +- int ep_index; + +- slot_id = TRB_TO_SLOT_ID(le32_to_cpu(event->flags)); +- slot_ctx = xhci_get_slot_ctx(xhci, xhci->devs[slot_id]->out_ctx); +- ep_index = TRB_TO_EP_ID(le32_to_cpu(event->flags)) - 1; +- ep_ring = xhci_dma_to_transfer_ring(ep, le64_to_cpu(event->buffer)); ++ slot_ctx = xhci_get_slot_ctx(xhci, ep->vdev->out_ctx); + trb_comp_code = GET_COMP_CODE(le32_to_cpu(event->transfer_len)); + remaining = EVENT_TRB_LEN(le32_to_cpu(event->transfer_len)); + ep_trb_len = TRB_LEN(le32_to_cpu(ep_trb->generic.field[2])); +@@ -2354,13 +2476,13 @@ static int process_bulk_intr_td(struct xhci_hcd *xhci, struct xhci_td *td, + td->urb->ep->desc.bEndpointAddress, + requested, remaining); + } +- *status = 0; ++ td->status = 0; + break; + case COMP_SHORT_PACKET: + xhci_dbg(xhci, "ep %#x - asked for %d bytes, %d bytes untransferred\n", + td->urb->ep->desc.bEndpointAddress, + requested, remaining); +- *status = 0; ++ td->status = 0; + break; + case COMP_STOPPED_SHORT_PACKET: + td->urb->actual_length = remaining; +@@ -2375,9 +2497,11 @@ static int process_bulk_intr_td(struct xhci_hcd *xhci, struct xhci_td *td, + (ep_ring->err_count++ > MAX_SOFT_RETRY) || + le32_to_cpu(slot_ctx->tt_info) & TT_SLOT) + break; +- *status = 0; +- xhci_cleanup_halted_endpoint(xhci, slot_id, ep_index, +- ep_ring->stream_id, td, EP_SOFT_RESET); ++ ++ td->status = 0; ++ ++ xhci_handle_halted_endpoint(xhci, ep, ep_ring->stream_id, td, ++ EP_SOFT_RESET); + return 0; + default: + /* do nothing */ +@@ -2396,7 +2520,8 @@ static int process_bulk_intr_td(struct xhci_hcd *xhci, struct xhci_td *td, + remaining); + td->urb->actual_length = 0; + } +- return finish_td(xhci, td, event, ep, status); ++ ++ return finish_td(xhci, ep, ep_ring, td, trb_comp_code); + } + + /* +@@ -2407,7 +2532,6 @@ static int process_bulk_intr_td(struct xhci_hcd *xhci, struct xhci_td *td, + static int handle_tx_event(struct xhci_hcd *xhci, + struct xhci_transfer_event *event) + { +- struct xhci_virt_device *xdev; + struct xhci_virt_ep *ep; + struct xhci_ring *ep_ring; + unsigned int slot_id; +@@ -2434,9 +2558,8 @@ static int handle_tx_event(struct xhci_hcd *xhci, + goto err_out; + } + +- xdev = xhci->devs[slot_id]; + ep_ring = xhci_dma_to_transfer_ring(ep, ep_trb_dma); +- ep_ctx = xhci_get_ep_ctx(xhci, xdev->out_ctx, ep_index); ++ ep_ctx = xhci_get_ep_ctx(xhci, ep->vdev->out_ctx, ep_index); + + if (GET_EP_CTX_STATE(ep_ctx) == EP_STATE_DISABLED) { + xhci_err(xhci, +@@ -2452,8 +2575,8 @@ static int handle_tx_event(struct xhci_hcd *xhci, + case COMP_USB_TRANSACTION_ERROR: + case COMP_INVALID_STREAM_TYPE_ERROR: + case COMP_INVALID_STREAM_ID_ERROR: +- xhci_cleanup_halted_endpoint(xhci, slot_id, ep_index, 0, +- NULL, EP_SOFT_RESET); ++ xhci_handle_halted_endpoint(xhci, ep, 0, NULL, ++ EP_SOFT_RESET); + goto cleanup; + case COMP_RING_UNDERRUN: + case COMP_RING_OVERRUN: +@@ -2508,7 +2631,6 @@ static int handle_tx_event(struct xhci_hcd *xhci, + case COMP_STALL_ERROR: + xhci_dbg(xhci, "Stalled endpoint for slot %u ep %u\n", slot_id, + ep_index); +- ep->ep_state |= EP_HALTED; + status = -EPIPE; + break; + case COMP_SPLIT_TRANSACTION_ERROR: +@@ -2636,11 +2758,10 @@ static int handle_tx_event(struct xhci_hcd *xhci, + if (trb_comp_code == COMP_STALL_ERROR || + xhci_requires_manual_halt_cleanup(xhci, ep_ctx, + trb_comp_code)) { +- xhci_cleanup_halted_endpoint(xhci, slot_id, +- ep_index, +- ep_ring->stream_id, +- NULL, +- EP_HARD_RESET); ++ xhci_handle_halted_endpoint(xhci, ep, ++ ep_ring->stream_id, ++ NULL, ++ EP_HARD_RESET); + } + goto cleanup; + } +@@ -2699,7 +2820,7 @@ static int handle_tx_event(struct xhci_hcd *xhci, + return -ESHUTDOWN; + } + +- skip_isoc_td(xhci, td, event, ep, &status); ++ skip_isoc_td(xhci, td, ep, status); + goto cleanup; + } + if (trb_comp_code == COMP_SHORT_PACKET) +@@ -2727,25 +2848,26 @@ static int handle_tx_event(struct xhci_hcd *xhci, + * endpoint. Otherwise, the endpoint remains stalled + * indefinitely. + */ ++ + if (trb_is_noop(ep_trb)) { + if (trb_comp_code == COMP_STALL_ERROR || + xhci_requires_manual_halt_cleanup(xhci, ep_ctx, + trb_comp_code)) +- xhci_cleanup_halted_endpoint(xhci, slot_id, +- ep_index, +- ep_ring->stream_id, +- td, EP_HARD_RESET); ++ xhci_handle_halted_endpoint(xhci, ep, ++ ep_ring->stream_id, ++ td, EP_HARD_RESET); + goto cleanup; + } + ++ td->status = status; ++ + /* update the urb's actual_length and give back to the core */ + if (usb_endpoint_xfer_control(&td->urb->ep->desc)) +- process_ctrl_td(xhci, td, ep_trb, event, ep, &status); ++ process_ctrl_td(xhci, ep, ep_ring, td, ep_trb, event); + else if (usb_endpoint_xfer_isoc(&td->urb->ep->desc)) +- process_isoc_td(xhci, td, ep_trb, event, ep, &status); ++ process_isoc_td(xhci, ep, ep_ring, td, ep_trb, event); + else +- process_bulk_intr_td(xhci, td, ep_trb, event, ep, +- &status); ++ process_bulk_intr_td(xhci, ep, ep_ring, td, ep_trb, event); + cleanup: + handling_skipped_tds = ep->skip && + trb_comp_code != COMP_MISSED_SERVICE_ERROR && +@@ -2786,10 +2908,11 @@ static int handle_tx_event(struct xhci_hcd *xhci, + * Returns >0 for "possibly more events to process" (caller should call again), + * otherwise 0 if done. In future, <0 returns should indicate error code. + */ +-static int xhci_handle_event(struct xhci_hcd *xhci) ++int xhci_handle_event(struct xhci_hcd *xhci) + { + union xhci_trb *event; + int update_ptrs = 1; ++ u32 trb_type; + int ret; + + /* Event ring hasn't been allocated yet. */ +@@ -2811,31 +2934,30 @@ static int xhci_handle_event(struct xhci_hcd *xhci) + * speculative reads of the event's flags/data below. + */ + rmb(); ++ trb_type = TRB_FIELD_TO_TYPE(le32_to_cpu(event->event_cmd.flags)); + /* FIXME: Handle more event types. */ +- switch (le32_to_cpu(event->event_cmd.flags) & TRB_TYPE_BITMASK) { +- case TRB_TYPE(TRB_COMPLETION): ++ ++ switch (trb_type) { ++ case TRB_COMPLETION: + handle_cmd_completion(xhci, &event->event_cmd); + break; +- case TRB_TYPE(TRB_PORT_STATUS): ++ case TRB_PORT_STATUS: + handle_port_status(xhci, event); + update_ptrs = 0; + break; +- case TRB_TYPE(TRB_TRANSFER): ++ case TRB_TRANSFER: + ret = handle_tx_event(xhci, &event->trans_event); + if (ret >= 0) + update_ptrs = 0; + break; +- case TRB_TYPE(TRB_DEV_NOTE): ++ case TRB_DEV_NOTE: + handle_device_notification(xhci, event); + break; + default: +- if ((le32_to_cpu(event->event_cmd.flags) & TRB_TYPE_BITMASK) >= +- TRB_TYPE(48)) +- handle_vendor_event(xhci, event); ++ if (trb_type >= TRB_VENDOR_DEFINED_LOW) ++ handle_vendor_event(xhci, event, trb_type); + else +- xhci_warn(xhci, "ERROR unknown event type %d\n", +- TRB_FIELD_TO_TYPE( +- le32_to_cpu(event->event_cmd.flags))); ++ xhci_warn(xhci, "ERROR unknown event type %d\n", trb_type); + } + /* Any of the above functions may drop and re-acquire the lock, so check + * to make sure a watchdog timer didn't mark the host as non-responsive. +@@ -2855,13 +2977,14 @@ static int xhci_handle_event(struct xhci_hcd *xhci) + */ + return 1; + } ++EXPORT_SYMBOL_GPL(xhci_handle_event); + + /* + * Update Event Ring Dequeue Pointer: + * - When all events have finished + * - To avoid "Event Ring Full Error" condition + */ +-static void xhci_update_erst_dequeue(struct xhci_hcd *xhci, ++void xhci_update_erst_dequeue(struct xhci_hcd *xhci, + union xhci_trb *event_ring_deq) + { + u64 temp_64; +@@ -2891,6 +3014,16 @@ static void xhci_update_erst_dequeue(struct xhci_hcd *xhci, + temp_64 |= ERST_EHB; + xhci_write_64(xhci, temp_64, &xhci->ir_set->erst_dequeue); + } ++EXPORT_SYMBOL_GPL(xhci_update_erst_dequeue); ++ ++static irqreturn_t xhci_vendor_queue_irq_work(struct xhci_hcd *xhci) ++{ ++ struct xhci_vendor_ops *ops = xhci_vendor_get_ops(xhci); ++ ++ if (ops && ops->queue_irq_work) ++ return ops->queue_irq_work(xhci); ++ return IRQ_NONE; ++} + + /* + * xHCI spec says we can get an interrupt, and if the HC has an error condition, +@@ -2926,6 +3059,10 @@ irqreturn_t xhci_irq(struct usb_hcd *hcd) + goto out; + } + ++ ret = xhci_vendor_queue_irq_work(xhci); ++ if (ret == IRQ_HANDLED) ++ goto out; ++ + /* + * Clear the op reg interrupt status first, + * so we can receive interrupts from other MSI-X interrupters. +@@ -3016,6 +3153,7 @@ static int prepare_ring(struct xhci_hcd *xhci, struct xhci_ring *ep_ring, + u32 ep_state, unsigned int num_trbs, gfp_t mem_flags) + { + unsigned int num_trbs_needed; ++ unsigned int link_trb_count = 0; + + /* Make sure the endpoint has been added to xHC schedule */ + switch (ep_state) { +@@ -3086,7 +3224,19 @@ static int prepare_ring(struct xhci_hcd *xhci, struct xhci_ring *ep_ring, + + ep_ring->enq_seg = ep_ring->enq_seg->next; + ep_ring->enqueue = ep_ring->enq_seg->trbs; ++ ++ /* prevent infinite loop if all first trbs are link trbs */ ++ if (link_trb_count++ > ep_ring->num_segs) { ++ xhci_warn(xhci, "Ring is an endless link TRB loop\n"); ++ return -EINVAL; ++ } + } ++ ++ if (last_trb_on_seg(ep_ring->enq_seg, ep_ring->enqueue)) { ++ xhci_warn(xhci, "Missing link TRB at end of ring segment\n"); ++ return -EINVAL; ++ } ++ + return 0; + } + +@@ -3105,7 +3255,8 @@ static int prepare_transfer(struct xhci_hcd *xhci, + struct xhci_ring *ep_ring; + struct xhci_ep_ctx *ep_ctx = xhci_get_ep_ctx(xhci, xdev->out_ctx, ep_index); + +- ep_ring = xhci_stream_id_to_ring(xdev, ep_index, stream_id); ++ ep_ring = xhci_triad_to_transfer_ring(xhci, xdev->slot_id, ep_index, ++ stream_id); + if (!ep_ring) { + xhci_dbg(xhci, "Can't prepare ring for bad stream ID %u\n", + stream_id); +@@ -3474,7 +3625,7 @@ int xhci_queue_bulk_tx(struct xhci_hcd *xhci, gfp_t mem_flags, + field |= TRB_IOC; + more_trbs_coming = false; + td->last_trb = ring->enqueue; +- ++ td->last_trb_seg = ring->enq_seg; + if (xhci_urb_suitable_for_idt(urb)) { + memcpy(&send_addr, urb->transfer_buffer, + trb_buff_len); +@@ -3500,7 +3651,7 @@ int xhci_queue_bulk_tx(struct xhci_hcd *xhci, gfp_t mem_flags, + upper_32_bits(send_addr), + length_field, + field); +- ++ td->num_trbs++; + addr += trb_buff_len; + sent_len = trb_buff_len; + +@@ -3524,8 +3675,10 @@ int xhci_queue_bulk_tx(struct xhci_hcd *xhci, gfp_t mem_flags, + ep_index, urb->stream_id, + 1, urb, 1, mem_flags); + urb_priv->td[1].last_trb = ring->enqueue; ++ urb_priv->td[1].last_trb_seg = ring->enq_seg; + field = TRB_TYPE(TRB_NORMAL) | ring->cycle_state | TRB_IOC; + queue_trb(xhci, ring, 0, 0, 0, TRB_INTR_TARGET(0), field); ++ urb_priv->td[1].num_trbs++; + } + + check_trb_math(urb, enqd_len); +@@ -3576,6 +3729,7 @@ int xhci_queue_ctrl_tx(struct xhci_hcd *xhci, gfp_t mem_flags, + + urb_priv = urb->hcpriv; + td = &urb_priv->td[0]; ++ td->num_trbs = num_trbs; + + /* + * Don't give the first TRB to the hardware (by toggling the cycle bit) +@@ -3648,6 +3802,7 @@ int xhci_queue_ctrl_tx(struct xhci_hcd *xhci, gfp_t mem_flags, + + /* Save the DMA address of the last TRB in the TD */ + td->last_trb = ep_ring->enqueue; ++ td->last_trb_seg = ep_ring->enq_seg; + + /* Queue status TRB - see Table 7 and sections 4.11.2.2 and 6.4.1.2.3 */ + /* If the device sent data, the status stage is an OUT transfer */ +@@ -3892,7 +4047,7 @@ static int xhci_queue_isoc_tx(struct xhci_hcd *xhci, gfp_t mem_flags, + goto cleanup; + } + td = &urb_priv->td[i]; +- ++ td->num_trbs = trbs_per_td; + /* use SIA as default, if frame id is used overwrite it */ + sia_frame_id = TRB_SIA; + if (!(urb->transfer_flags & URB_ISO_ASAP) && +@@ -3935,6 +4090,7 @@ static int xhci_queue_isoc_tx(struct xhci_hcd *xhci, gfp_t mem_flags, + } else { + more_trbs_coming = false; + td->last_trb = ep_ring->enqueue; ++ td->last_trb_seg = ep_ring->enq_seg; + field |= TRB_IOC; + if (trb_block_event_intr(xhci, num_tds, i)) + field |= TRB_BEI; +@@ -4217,71 +4373,7 @@ int xhci_queue_stop_endpoint(struct xhci_hcd *xhci, struct xhci_command *cmd, + return queue_command(xhci, cmd, 0, 0, 0, + trb_slot_id | trb_ep_index | type | trb_suspend, false); + } +- +-/* Set Transfer Ring Dequeue Pointer command */ +-void xhci_queue_new_dequeue_state(struct xhci_hcd *xhci, +- unsigned int slot_id, unsigned int ep_index, +- struct xhci_dequeue_state *deq_state) +-{ +- dma_addr_t addr; +- u32 trb_slot_id = SLOT_ID_FOR_TRB(slot_id); +- u32 trb_ep_index = EP_ID_FOR_TRB(ep_index); +- u32 trb_stream_id = STREAM_ID_FOR_TRB(deq_state->stream_id); +- u32 trb_sct = 0; +- u32 type = TRB_TYPE(TRB_SET_DEQ); +- struct xhci_virt_ep *ep; +- struct xhci_command *cmd; +- int ret; +- +- xhci_dbg_trace(xhci, trace_xhci_dbg_cancel_urb, +- "Set TR Deq Ptr cmd, new deq seg = %p (0x%llx dma), new deq ptr = %p (0x%llx dma), new cycle = %u", +- deq_state->new_deq_seg, +- (unsigned long long)deq_state->new_deq_seg->dma, +- deq_state->new_deq_ptr, +- (unsigned long long)xhci_trb_virt_to_dma( +- deq_state->new_deq_seg, deq_state->new_deq_ptr), +- deq_state->new_cycle_state); +- +- addr = xhci_trb_virt_to_dma(deq_state->new_deq_seg, +- deq_state->new_deq_ptr); +- if (addr == 0) { +- xhci_warn(xhci, "WARN Cannot submit Set TR Deq Ptr\n"); +- xhci_warn(xhci, "WARN deq seg = %p, deq pt = %p\n", +- deq_state->new_deq_seg, deq_state->new_deq_ptr); +- return; +- } +- ep = &xhci->devs[slot_id]->eps[ep_index]; +- if ((ep->ep_state & SET_DEQ_PENDING)) { +- xhci_warn(xhci, "WARN Cannot submit Set TR Deq Ptr\n"); +- xhci_warn(xhci, "A Set TR Deq Ptr command is pending.\n"); +- return; +- } +- +- /* This function gets called from contexts where it cannot sleep */ +- cmd = xhci_alloc_command(xhci, false, GFP_ATOMIC); +- if (!cmd) +- return; +- +- ep->queued_deq_seg = deq_state->new_deq_seg; +- ep->queued_deq_ptr = deq_state->new_deq_ptr; +- if (deq_state->stream_id) +- trb_sct = SCT_FOR_TRB(SCT_PRI_TR); +- ret = queue_command(xhci, cmd, +- lower_32_bits(addr) | trb_sct | deq_state->new_cycle_state, +- upper_32_bits(addr), trb_stream_id, +- trb_slot_id | trb_ep_index | type, false); +- if (ret < 0) { +- xhci_free_command(xhci, cmd); +- return; +- } +- +- /* Stop the TD queueing code from ringing the doorbell until +- * this command completes. The HC won't set the dequeue pointer +- * if the ring is running, and ringing the doorbell starts the +- * ring running. +- */ +- ep->ep_state |= SET_DEQ_PENDING; +-} ++EXPORT_SYMBOL_GPL(xhci_queue_stop_endpoint); + + int xhci_queue_reset_ep(struct xhci_hcd *xhci, struct xhci_command *cmd, + int slot_id, unsigned int ep_index, +diff --git a/drivers/usb/host/xhci-trace.c b/drivers/usb/host/xhci-trace.c +old mode 100644 +new mode 100755 +index d0070814d..c4178357b +--- a/drivers/usb/host/xhci-trace.c ++++ b/drivers/usb/host/xhci-trace.c +@@ -12,3 +12,6 @@ + #include "xhci-trace.h" + + EXPORT_TRACEPOINT_SYMBOL_GPL(xhci_dbg_quirks); ++EXPORT_TRACEPOINT_SYMBOL_GPL(xhci_urb_enqueue); ++EXPORT_TRACEPOINT_SYMBOL_GPL(xhci_handle_transfer); ++EXPORT_TRACEPOINT_SYMBOL_GPL(xhci_urb_giveback); +diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c +old mode 100644 +new mode 100755 +index bf42ba3e4..9b4ecda4b +--- a/drivers/usb/host/xhci.c ++++ b/drivers/usb/host/xhci.c +@@ -20,7 +20,6 @@ + + #include "xhci.h" + #include "xhci-trace.h" +-#include "xhci-mtk.h" + #include "xhci-debugfs.h" + #include "xhci-dbgcap.h" + +@@ -1306,6 +1305,7 @@ unsigned int xhci_get_endpoint_index(struct usb_endpoint_descriptor *desc) + (usb_endpoint_dir_in(desc) ? 1 : 0) - 1; + return index; + } ++EXPORT_SYMBOL_GPL(xhci_get_endpoint_index); + + /* The reverse operation to xhci_get_endpoint_index. Calculate the USB endpoint + * address from the XHCI endpoint index. +@@ -1316,6 +1316,7 @@ unsigned int xhci_get_endpoint_address(unsigned int ep_index) + unsigned int direction = ep_index % 2 ? USB_DIR_OUT : USB_DIR_IN; + return direction | number; + } ++EXPORT_SYMBOL_GPL(xhci_get_endpoint_address); + + /* Find the flag for this endpoint (for use in the control context). Use the + * endpoint index to create a bitmask. The slot context is bit 0, endpoint 0 is +@@ -1326,15 +1327,6 @@ static unsigned int xhci_get_endpoint_flag(struct usb_endpoint_descriptor *desc) + return 1 << (xhci_get_endpoint_index(desc) + 1); + } + +-/* Find the flag for this endpoint (for use in the control context). Use the +- * endpoint index to create a bitmask. The slot context is bit 0, endpoint 0 is +- * bit 1, etc. +- */ +-static unsigned int xhci_get_endpoint_flag_from_index(unsigned int ep_index) +-{ +- return 1 << (ep_index + 1); +-} +- + /* Compute the last valid endpoint context index. Basically, this is the + * endpoint index plus one. For slot contexts with more than valid endpoint, + * we find the most significant bit set in the added contexts flags. +@@ -1498,6 +1490,11 @@ static int xhci_urb_enqueue(struct usb_hcd *hcd, struct urb *urb, gfp_t mem_flag + return -ENODEV; + } + ++ if (xhci_vendor_usb_offload_skip_urb(xhci, urb)) { ++ xhci_dbg(xhci, "skip urb for usb offload\n"); ++ return -EOPNOTSUPP; ++ } ++ + if (usb_endpoint_xfer_isoc(&urb->ep->desc)) + num_tds = urb->number_of_packets; + else if (usb_endpoint_is_bulk_out(&urb->ep->desc) && +@@ -1698,7 +1695,12 @@ static int xhci_urb_dequeue(struct usb_hcd *hcd, struct urb *urb, int status) + + for (; i < urb_priv->num_tds; i++) { + td = &urb_priv->td[i]; +- list_add_tail(&td->cancelled_td_list, &ep->cancelled_td_list); ++ /* TD can already be on cancelled list if ep halted on it */ ++ if (list_empty(&td->cancelled_td_list)) { ++ td->cancel_status = TD_DIRTY; ++ list_add_tail(&td->cancelled_td_list, ++ &ep->cancelled_td_list); ++ } + } + + /* Queue a stop endpoint command, but only if this is +@@ -1744,8 +1746,8 @@ static int xhci_urb_dequeue(struct usb_hcd *hcd, struct urb *urb, int status) + * disabled, so there's no need for mutual exclusion to protect + * the xhci->devs[slot_id] structure. + */ +-static int xhci_drop_endpoint(struct usb_hcd *hcd, struct usb_device *udev, +- struct usb_host_endpoint *ep) ++int xhci_drop_endpoint(struct usb_hcd *hcd, struct usb_device *udev, ++ struct usb_host_endpoint *ep) + { + struct xhci_hcd *xhci; + struct xhci_container_ctx *in_ctx, *out_ctx; +@@ -1805,9 +1807,6 @@ static int xhci_drop_endpoint(struct usb_hcd *hcd, struct usb_device *udev, + + xhci_endpoint_zero(xhci, xhci->devs[udev->slot_id], ep); + +- if (xhci->quirks & XHCI_MTK_HOST) +- xhci_mtk_drop_ep_quirk(hcd, udev, ep); +- + xhci_dbg(xhci, "drop ep 0x%x, slot id %d, new drop flags = %#x, new add flags = %#x\n", + (unsigned int) ep->desc.bEndpointAddress, + udev->slot_id, +@@ -1815,6 +1814,7 @@ static int xhci_drop_endpoint(struct usb_hcd *hcd, struct usb_device *udev, + (unsigned int) new_add_flags); + return 0; + } ++EXPORT_SYMBOL_GPL(xhci_drop_endpoint); + + /* Add an endpoint to a new possible bandwidth configuration for this device. + * Only one call to this function is allowed per endpoint before +@@ -1829,8 +1829,8 @@ static int xhci_drop_endpoint(struct usb_hcd *hcd, struct usb_device *udev, + * configuration or alt setting is installed in the device, so there's no need + * for mutual exclusion to protect the xhci->devs[slot_id] structure. + */ +-static int xhci_add_endpoint(struct usb_hcd *hcd, struct usb_device *udev, +- struct usb_host_endpoint *ep) ++int xhci_add_endpoint(struct usb_hcd *hcd, struct usb_device *udev, ++ struct usb_host_endpoint *ep) + { + struct xhci_hcd *xhci; + struct xhci_container_ctx *in_ctx; +@@ -1904,15 +1904,6 @@ static int xhci_add_endpoint(struct usb_hcd *hcd, struct usb_device *udev, + return -ENOMEM; + } + +- if (xhci->quirks & XHCI_MTK_HOST) { +- ret = xhci_mtk_add_ep_quirk(hcd, udev, ep); +- if (ret < 0) { +- xhci_ring_free(xhci, virt_dev->eps[ep_index].new_ring); +- virt_dev->eps[ep_index].new_ring = NULL; +- return ret; +- } +- } +- + ctrl_ctx->add_flags |= cpu_to_le32(added_ctxs); + new_add_flags = le32_to_cpu(ctrl_ctx->add_flags); + +@@ -1937,6 +1928,7 @@ static int xhci_add_endpoint(struct usb_hcd *hcd, struct usb_device *udev, + (unsigned int) new_add_flags); + return 0; + } ++EXPORT_SYMBOL_GPL(xhci_add_endpoint); + + static void xhci_zero_in_ctx(struct xhci_hcd *xhci, struct xhci_virt_device *virt_dev) + { +@@ -2846,6 +2838,14 @@ static int xhci_configure_endpoint(struct xhci_hcd *xhci, + xhci_finish_resource_reservation(xhci, ctrl_ctx); + spin_unlock_irqrestore(&xhci->lock, flags); + } ++ if (ret) ++ goto failed; ++ ++ ret = xhci_vendor_sync_dev_ctx(xhci, udev->slot_id); ++ if (ret) ++ xhci_warn(xhci, "sync device context failed, ret=%d", ret); ++ ++failed: + return ret; + } + +@@ -2970,6 +2970,7 @@ int xhci_check_bandwidth(struct usb_hcd *hcd, struct usb_device *udev) + + return ret; + } ++EXPORT_SYMBOL_GPL(xhci_check_bandwidth); + + void xhci_reset_bandwidth(struct usb_hcd *hcd, struct usb_device *udev) + { +@@ -2988,12 +2989,17 @@ void xhci_reset_bandwidth(struct usb_hcd *hcd, struct usb_device *udev) + for (i = 0; i < 31; i++) { + if (virt_dev->eps[i].new_ring) { + xhci_debugfs_remove_endpoint(xhci, virt_dev, i); +- xhci_ring_free(xhci, virt_dev->eps[i].new_ring); ++ if (xhci_vendor_is_usb_offload_enabled(xhci, virt_dev, i)) ++ xhci_vendor_free_transfer_ring(xhci, virt_dev, i); ++ else ++ xhci_ring_free(xhci, virt_dev->eps[i].new_ring); ++ + virt_dev->eps[i].new_ring = NULL; + } + } + xhci_zero_in_ctx(xhci, virt_dev); + } ++EXPORT_SYMBOL_GPL(xhci_reset_bandwidth); + + static void xhci_setup_input_ctx_for_config_ep(struct xhci_hcd *xhci, + struct xhci_container_ctx *in_ctx, +@@ -3007,84 +3013,6 @@ static void xhci_setup_input_ctx_for_config_ep(struct xhci_hcd *xhci, + ctrl_ctx->add_flags |= cpu_to_le32(SLOT_FLAG); + } + +-static void xhci_setup_input_ctx_for_quirk(struct xhci_hcd *xhci, +- unsigned int slot_id, unsigned int ep_index, +- struct xhci_dequeue_state *deq_state) +-{ +- struct xhci_input_control_ctx *ctrl_ctx; +- struct xhci_container_ctx *in_ctx; +- struct xhci_ep_ctx *ep_ctx; +- u32 added_ctxs; +- dma_addr_t addr; +- +- in_ctx = xhci->devs[slot_id]->in_ctx; +- ctrl_ctx = xhci_get_input_control_ctx(in_ctx); +- if (!ctrl_ctx) { +- xhci_warn(xhci, "%s: Could not get input context, bad type.\n", +- __func__); +- return; +- } +- +- xhci_endpoint_copy(xhci, xhci->devs[slot_id]->in_ctx, +- xhci->devs[slot_id]->out_ctx, ep_index); +- ep_ctx = xhci_get_ep_ctx(xhci, in_ctx, ep_index); +- addr = xhci_trb_virt_to_dma(deq_state->new_deq_seg, +- deq_state->new_deq_ptr); +- if (addr == 0) { +- xhci_warn(xhci, "WARN Cannot submit config ep after " +- "reset ep command\n"); +- xhci_warn(xhci, "WARN deq seg = %p, deq ptr = %p\n", +- deq_state->new_deq_seg, +- deq_state->new_deq_ptr); +- return; +- } +- ep_ctx->deq = cpu_to_le64(addr | deq_state->new_cycle_state); +- +- added_ctxs = xhci_get_endpoint_flag_from_index(ep_index); +- xhci_setup_input_ctx_for_config_ep(xhci, xhci->devs[slot_id]->in_ctx, +- xhci->devs[slot_id]->out_ctx, ctrl_ctx, +- added_ctxs, added_ctxs); +-} +- +-void xhci_cleanup_stalled_ring(struct xhci_hcd *xhci, unsigned int slot_id, +- unsigned int ep_index, unsigned int stream_id, +- struct xhci_td *td) +-{ +- struct xhci_dequeue_state deq_state; +- +- xhci_dbg_trace(xhci, trace_xhci_dbg_reset_ep, +- "Cleaning up stalled endpoint ring"); +- /* We need to move the HW's dequeue pointer past this TD, +- * or it will attempt to resend it on the next doorbell ring. +- */ +- xhci_find_new_dequeue_state(xhci, slot_id, ep_index, stream_id, td, +- &deq_state); +- +- if (!deq_state.new_deq_ptr || !deq_state.new_deq_seg) +- return; +- +- /* HW with the reset endpoint quirk will use the saved dequeue state to +- * issue a configure endpoint command later. +- */ +- if (!(xhci->quirks & XHCI_RESET_EP_QUIRK)) { +- xhci_dbg_trace(xhci, trace_xhci_dbg_reset_ep, +- "Queueing new dequeue state"); +- xhci_queue_new_dequeue_state(xhci, slot_id, +- ep_index, &deq_state); +- } else { +- /* Better hope no one uses the input context between now and the +- * reset endpoint completion! +- * XXX: No idea how this hardware will react when stream rings +- * are enabled. +- */ +- xhci_dbg_trace(xhci, trace_xhci_dbg_quirks, +- "Setting up input context for " +- "configure endpoint command"); +- xhci_setup_input_ctx_for_quirk(xhci, slot_id, +- ep_index, &deq_state); +- } +-} +- + static void xhci_endpoint_disable(struct usb_hcd *hcd, + struct usb_host_endpoint *host_ep) + { +@@ -3230,6 +3158,13 @@ static void xhci_endpoint_reset(struct usb_hcd *hcd, + + wait_for_completion(stop_cmd->completion); + ++ err = xhci_vendor_sync_dev_ctx(xhci, udev->slot_id); ++ if (err) { ++ xhci_warn(xhci, "%s: Failed to sync device context failed, err=%d", ++ __func__, err); ++ goto cleanup; ++ } ++ + spin_lock_irqsave(&xhci->lock, flags); + + /* config ep command clears toggle if add and drop ep flags are set */ +@@ -3261,6 +3196,11 @@ static void xhci_endpoint_reset(struct usb_hcd *hcd, + + wait_for_completion(cfg_cmd->completion); + ++ err = xhci_vendor_sync_dev_ctx(xhci, udev->slot_id); ++ if (err) ++ xhci_warn(xhci, "%s: Failed to sync device context failed, err=%d", ++ __func__, err); ++ + xhci_free_command(xhci, cfg_cmd); + cleanup: + xhci_free_command(xhci, stop_cmd); +@@ -3806,6 +3746,13 @@ static int xhci_discover_or_reset_device(struct usb_hcd *hcd, + /* Wait for the Reset Device command to finish */ + wait_for_completion(reset_device_cmd->completion); + ++ ret = xhci_vendor_sync_dev_ctx(xhci, slot_id); ++ if (ret) { ++ xhci_warn(xhci, "%s: Failed to sync device context failed, err=%d", ++ __func__, ret); ++ goto command_cleanup; ++ } ++ + /* The Reset Device command can't fail, according to the 0.95/0.96 spec, + * unless we tried to reset a slot ID that wasn't enabled, + * or the device wasn't in the addressed or configured state. +@@ -4045,6 +3992,14 @@ int xhci_alloc_dev(struct usb_hcd *hcd, struct usb_device *udev) + xhci_warn(xhci, "Could not allocate xHCI USB device data structures\n"); + goto disable_slot; + } ++ ++ ret = xhci_vendor_sync_dev_ctx(xhci, slot_id); ++ if (ret) { ++ xhci_warn(xhci, "%s: Failed to sync device context failed, err=%d", ++ __func__, ret); ++ goto disable_slot; ++ } ++ + vdev = xhci->devs[slot_id]; + slot_ctx = xhci_get_slot_ctx(xhci, vdev->out_ctx); + trace_xhci_alloc_dev(slot_ctx); +@@ -4178,6 +4133,13 @@ static int xhci_setup_device(struct usb_hcd *hcd, struct usb_device *udev, + /* ctrl tx can take up to 5 sec; XXX: need more time for xHC? */ + wait_for_completion(command->completion); + ++ ret = xhci_vendor_sync_dev_ctx(xhci, udev->slot_id); ++ if (ret) { ++ xhci_warn(xhci, "%s: Failed to sync device context failed, err=%d", ++ __func__, ret); ++ goto out; ++ } ++ + /* FIXME: From section 4.3.4: "Software shall be responsible for timing + * the SetAddress() "recovery interval" required by USB and aborting the + * command on a timeout. +@@ -4261,10 +4223,11 @@ static int xhci_setup_device(struct usb_hcd *hcd, struct usb_device *udev, + return ret; + } + +-static int xhci_address_device(struct usb_hcd *hcd, struct usb_device *udev) ++int xhci_address_device(struct usb_hcd *hcd, struct usb_device *udev) + { + return xhci_setup_device(hcd, udev, SETUP_CONTEXT_ADDRESS); + } ++EXPORT_SYMBOL_GPL(xhci_address_device); + + static int xhci_enable_device(struct usb_hcd *hcd, struct usb_device *udev) + { +@@ -4324,6 +4287,14 @@ static int __maybe_unused xhci_change_max_exit_latency(struct xhci_hcd *xhci, + return -ENOMEM; + } + ++ ret = xhci_vendor_sync_dev_ctx(xhci, udev->slot_id); ++ if (ret) { ++ spin_unlock_irqrestore(&xhci->lock, flags); ++ xhci_warn(xhci, "%s: Failed to sync device context failed, err=%d", ++ __func__, ret); ++ return ret; ++ } ++ + xhci_slot_copy(xhci, command->in_ctx, virt_dev->out_ctx); + spin_unlock_irqrestore(&xhci->lock, flags); + +@@ -4348,6 +4319,30 @@ static int __maybe_unused xhci_change_max_exit_latency(struct xhci_hcd *xhci, + return ret; + } + ++struct xhci_vendor_ops *xhci_vendor_get_ops(struct xhci_hcd *xhci) ++{ ++ return xhci->vendor_ops; ++} ++EXPORT_SYMBOL_GPL(xhci_vendor_get_ops); ++ ++int xhci_vendor_sync_dev_ctx(struct xhci_hcd *xhci, unsigned int slot_id) ++{ ++ struct xhci_vendor_ops *ops = xhci_vendor_get_ops(xhci); ++ ++ if (ops && ops->sync_dev_ctx) ++ return ops->sync_dev_ctx(xhci, slot_id); ++ return 0; ++} ++ ++bool xhci_vendor_usb_offload_skip_urb(struct xhci_hcd *xhci, struct urb *urb) ++{ ++ struct xhci_vendor_ops *ops = xhci_vendor_get_ops(xhci); ++ ++ if (ops && ops->usb_offload_skip_urb) ++ return ops->usb_offload_skip_urb(xhci, urb); ++ return false; ++} ++ + #ifdef CONFIG_PM + + /* BESL to HIRD Encoding array for USB2 LPM */ +@@ -5087,6 +5082,15 @@ static int xhci_update_hub_device(struct usb_hcd *hcd, struct usb_device *hdev, + return -ENOMEM; + } + ++ ret = xhci_vendor_sync_dev_ctx(xhci, hdev->slot_id); ++ if (ret) { ++ xhci_warn(xhci, "%s: Failed to sync device context failed, err=%d", ++ __func__, ret); ++ xhci_free_command(xhci, config_cmd); ++ spin_unlock_irqrestore(&xhci->lock, flags); ++ return ret; ++ } ++ + xhci_slot_copy(xhci, config_cmd->in_ctx, vdev->out_ctx); + ctrl_ctx->add_flags |= cpu_to_le32(SLOT_FLAG); + slot_ctx = xhci_get_slot_ctx(xhci, config_cmd->in_ctx); +@@ -5410,10 +5414,20 @@ void xhci_init_driver(struct hc_driver *drv, + drv->reset = over->reset; + if (over->start) + drv->start = over->start; ++ if (over->add_endpoint) ++ drv->add_endpoint = over->add_endpoint; ++ if (over->drop_endpoint) ++ drv->drop_endpoint = over->drop_endpoint; + if (over->check_bandwidth) + drv->check_bandwidth = over->check_bandwidth; + if (over->reset_bandwidth) + drv->reset_bandwidth = over->reset_bandwidth; ++ if (over->address_device) ++ drv->address_device = over->address_device; ++ if (over->bus_suspend) ++ drv->bus_suspend = over->bus_suspend; ++ if (over->bus_resume) ++ drv->bus_resume = over->bus_resume; + } + } + EXPORT_SYMBOL_GPL(xhci_init_driver); +diff --git a/drivers/usb/host/xhci.h b/drivers/usb/host/xhci.h +old mode 100644 +new mode 100755 +index 45584a278..b30e76ca0 +--- a/drivers/usb/host/xhci.h ++++ b/drivers/usb/host/xhci.h +@@ -921,6 +921,8 @@ struct xhci_bw_info { + #define SS_BW_RESERVED 10 + + struct xhci_virt_ep { ++ struct xhci_virt_device *vdev; /* parent */ ++ unsigned int ep_index; + struct xhci_ring *ring; + /* Related to endpoints that are configured to use stream IDs only */ + struct xhci_stream_info *stream_info; +@@ -999,6 +1001,7 @@ struct xhci_interval_bw_table { + #define EP_CTX_PER_DEV 31 + + struct xhci_virt_device { ++ int slot_id; + struct usb_device *udev; + /* + * Commands to the hardware are passed an "input context" that +@@ -1415,7 +1418,7 @@ union xhci_trb { + /* MFINDEX Wrap Event - microframe counter wrapped */ + #define TRB_MFINDEX_WRAP 39 + /* TRB IDs 40-47 reserved, 48-63 is vendor-defined */ +- ++#define TRB_VENDOR_DEFINED_LOW 48 + /* Nec vendor-specific command completion event. */ + #define TRB_NEC_CMD_COMP 48 + /* Get NEC firmware revision. */ +@@ -1535,16 +1538,27 @@ struct xhci_segment { + unsigned int bounce_len; + }; + ++enum xhci_cancelled_td_status { ++ TD_DIRTY = 0, ++ TD_HALTED, ++ TD_CLEARING_CACHE, ++ TD_CLEARED, ++}; ++ + struct xhci_td { + struct list_head td_list; + struct list_head cancelled_td_list; ++ int status; ++ enum xhci_cancelled_td_status cancel_status; + struct urb *urb; + struct xhci_segment *start_seg; + union xhci_trb *first_trb; + union xhci_trb *last_trb; ++ struct xhci_segment *last_trb_seg; + struct xhci_segment *bounce_seg; + /* actual_length of the URB has already been set */ + bool urb_length_set; ++ unsigned int num_trbs; + }; + + /* xHCI command default timeout value */ +@@ -1556,13 +1570,6 @@ struct xhci_cd { + union xhci_trb *cmd_trb; + }; + +-struct xhci_dequeue_state { +- struct xhci_segment *new_deq_seg; +- union xhci_trb *new_deq_ptr; +- int new_cycle_state; +- unsigned int stream_id; +-}; +- + enum xhci_ring_type { + TYPE_CTRL = 0, + TYPE_ISOC, +@@ -1913,6 +1920,7 @@ struct xhci_hcd { + struct list_head regset_list; + + void *dbc; ++ struct xhci_vendor_ops *vendor_ops; + /* platform-specific data -- must come last */ + unsigned long priv[] __aligned(sizeof(s64)); + }; +@@ -1922,8 +1930,15 @@ struct xhci_driver_overrides { + size_t extra_priv_size; + int (*reset)(struct usb_hcd *hcd); + int (*start)(struct usb_hcd *hcd); ++ int (*add_endpoint)(struct usb_hcd *hcd, struct usb_device *udev, ++ struct usb_host_endpoint *ep); ++ int (*drop_endpoint)(struct usb_hcd *hcd, struct usb_device *udev, ++ struct usb_host_endpoint *ep); + int (*check_bandwidth)(struct usb_hcd *, struct usb_device *); + void (*reset_bandwidth)(struct usb_hcd *, struct usb_device *); ++ int (*address_device)(struct usb_hcd *hcd, struct usb_device *udev); ++ int (*bus_suspend)(struct usb_hcd *hcd); ++ int (*bus_resume)(struct usb_hcd *hcd); + }; + + #define XHCI_CFC_DELAY 10 +@@ -2050,10 +2065,6 @@ void xhci_free_device_endpoint_resources(struct xhci_hcd *xhci, + struct xhci_ring *xhci_dma_to_transfer_ring( + struct xhci_virt_ep *ep, + u64 address); +-struct xhci_ring *xhci_stream_id_to_ring( +- struct xhci_virt_device *dev, +- unsigned int ep_index, +- unsigned int stream_id); + struct xhci_command *xhci_alloc_command(struct xhci_hcd *xhci, + bool allocate_completion, gfp_t mem_flags); + struct xhci_command *xhci_alloc_command_with_ctx(struct xhci_hcd *xhci, +@@ -2078,8 +2089,13 @@ int xhci_gen_setup(struct usb_hcd *hcd, xhci_get_quirks_t get_quirks); + void xhci_shutdown(struct usb_hcd *hcd); + void xhci_init_driver(struct hc_driver *drv, + const struct xhci_driver_overrides *over); ++int xhci_add_endpoint(struct usb_hcd *hcd, struct usb_device *udev, ++ struct usb_host_endpoint *ep); ++int xhci_drop_endpoint(struct usb_hcd *hcd, struct usb_device *udev, ++ struct usb_host_endpoint *ep); + int xhci_check_bandwidth(struct usb_hcd *hcd, struct usb_device *udev); + void xhci_reset_bandwidth(struct usb_hcd *hcd, struct usb_device *udev); ++int xhci_address_device(struct usb_hcd *hcd, struct usb_device *udev); + int xhci_disable_slot(struct xhci_hcd *xhci, u32 slot_id); + int xhci_ext_cap_init(struct xhci_hcd *xhci); + +@@ -2127,13 +2143,6 @@ int xhci_queue_reset_ep(struct xhci_hcd *xhci, struct xhci_command *cmd, + enum xhci_ep_reset_type reset_type); + int xhci_queue_reset_device(struct xhci_hcd *xhci, struct xhci_command *cmd, + u32 slot_id); +-void xhci_find_new_dequeue_state(struct xhci_hcd *xhci, +- unsigned int slot_id, unsigned int ep_index, +- unsigned int stream_id, struct xhci_td *cur_td, +- struct xhci_dequeue_state *state); +-void xhci_queue_new_dequeue_state(struct xhci_hcd *xhci, +- unsigned int slot_id, unsigned int ep_index, +- struct xhci_dequeue_state *deq_state); + void xhci_cleanup_stalled_ring(struct xhci_hcd *xhci, unsigned int slot_id, + unsigned int ep_index, unsigned int stream_id, + struct xhci_td *td); +@@ -2194,6 +2203,53 @@ static inline struct xhci_ring *xhci_urb_to_transfer_ring(struct xhci_hcd *xhci, + urb->stream_id); + } + ++/** ++ * struct xhci_vendor_ops - function callbacks for vendor specific operations ++ * @vendor_init: called for vendor init process ++ * @vendor_cleanup: called for vendor cleanup process ++ * @is_usb_offload_enabled: called to check if usb offload enabled ++ * @queue_irq_work: called to queue vendor specific irq work ++ * @alloc_dcbaa: called when allocating vendor specific dcbaa ++ * @free_dcbaa: called to free vendor specific dcbaa ++ * @alloc_transfer_ring: called when remote transfer ring allocation is required ++ * @free_transfer_ring: called to free vendor specific transfer ring ++ * @sync_dev_ctx: called when synchronization for device context is required ++ * @alloc_container_ctx: called when allocating vendor specific container context ++ * @free_container_ctx: called to free vendor specific container context ++ */ ++struct xhci_vendor_ops { ++ int (*vendor_init)(struct xhci_hcd *xhci); ++ void (*vendor_cleanup)(struct xhci_hcd *xhci); ++ bool (*is_usb_offload_enabled)(struct xhci_hcd *xhci, ++ struct xhci_virt_device *vdev, ++ unsigned int ep_index); ++ irqreturn_t (*queue_irq_work)(struct xhci_hcd *xhci); ++ ++ struct xhci_device_context_array *(*alloc_dcbaa)(struct xhci_hcd *xhci, ++ gfp_t flags); ++ void (*free_dcbaa)(struct xhci_hcd *xhci); ++ ++ struct xhci_ring *(*alloc_transfer_ring)(struct xhci_hcd *xhci, ++ u32 endpoint_type, enum xhci_ring_type ring_type, ++ unsigned int max_packet, gfp_t mem_flags); ++ void (*free_transfer_ring)(struct xhci_hcd *xhci, ++ struct xhci_virt_device *virt_dev, unsigned int ep_index); ++ int (*sync_dev_ctx)(struct xhci_hcd *xhci, unsigned int slot_id); ++ bool (*usb_offload_skip_urb)(struct xhci_hcd *xhci, struct urb *urb); ++ void (*alloc_container_ctx)(struct xhci_hcd *xhci, struct xhci_container_ctx *ctx, ++ int type, gfp_t flags); ++ void (*free_container_ctx)(struct xhci_hcd *xhci, struct xhci_container_ctx *ctx); ++}; ++ ++struct xhci_vendor_ops *xhci_vendor_get_ops(struct xhci_hcd *xhci); ++ ++int xhci_vendor_sync_dev_ctx(struct xhci_hcd *xhci, unsigned int slot_id); ++bool xhci_vendor_usb_offload_skip_urb(struct xhci_hcd *xhci, struct urb *urb); ++void xhci_vendor_free_transfer_ring(struct xhci_hcd *xhci, ++ struct xhci_virt_device *virt_dev, unsigned int ep_index); ++bool xhci_vendor_is_usb_offload_enabled(struct xhci_hcd *xhci, ++ struct xhci_virt_device *virt_dev, unsigned int ep_index); ++ + /* + * TODO: As per spec Isochronous IDT transmissions are supported. We bypass + * them anyways as we where unable to find a device that matches the diff --git a/drivers/usb/storage/scsiglue.c b/drivers/usb/storage/scsiglue.c -index e5a971b83e3f..a345f2982b24 100644 +index e5a971b83..a345f2982 100644 --- a/drivers/usb/storage/scsiglue.c +++ b/drivers/usb/storage/scsiglue.c @@ -102,6 +102,10 @@ static int slave_configure(struct scsi_device *sdev) @@ -1587198,7 +1595201,7 @@ index e5a971b83e3f..a345f2982b24 100644 max_sectors = PAGE_SIZE >> 9; if (queue_max_hw_sectors(sdev->request_queue) > max_sectors) diff --git a/drivers/usb/storage/unusual_devs.h b/drivers/usb/storage/unusual_devs.h -index 29191d33c0e3..07150541e2ed 100644 +index 29191d33c..07150541e 100644 --- a/drivers/usb/storage/unusual_devs.h +++ b/drivers/usb/storage/unusual_devs.h @@ -927,6 +927,12 @@ UNUSUAL_DEV( 0x05e3, 0x0723, 0x9451, 0x9451, @@ -1587215,7 +1595218,7 @@ index 29191d33c0e3..07150541e2ed 100644 * Reported by Hanno Boeck * Taken from the Lycoris Kernel diff --git a/drivers/usb/storage/unusual_uas.h b/drivers/usb/storage/unusual_uas.h -index 4051c8cd0cd8..1fcb871c6919 100644 +index 4051c8cd0..1fcb871c6 100644 --- a/drivers/usb/storage/unusual_uas.h +++ b/drivers/usb/storage/unusual_uas.h @@ -62,6 +62,12 @@ UNUSUAL_DEV(0x0984, 0x0301, 0x0128, 0x0128, @@ -1587257,8 +1595260,5296 @@ index 4051c8cd0cd8..1fcb871c6919 100644 /* Reported-by: Hans de Goede */ UNUSUAL_DEV(0x2109, 0x0711, 0x0000, 0x9999, "VIA", +diff --git a/drivers/usb/typec/altmodes/Kconfig b/drivers/usb/typec/altmodes/Kconfig +old mode 100644 +new mode 100755 +index 60d375e9c..1a6b5e872 +--- a/drivers/usb/typec/altmodes/Kconfig ++++ b/drivers/usb/typec/altmodes/Kconfig +@@ -4,6 +4,7 @@ menu "USB Type-C Alternate Mode drivers" + + config TYPEC_DP_ALTMODE + tristate "DisplayPort Alternate Mode driver" ++ depends on DRM + help + DisplayPort USB Type-C Alternate Mode allows DisplayPort + displays and adapters to be attached to the USB Type-C +diff --git a/drivers/usb/typec/altmodes/displayport.c b/drivers/usb/typec/altmodes/displayport.c +old mode 100644 +new mode 100755 +index e62e5e3da..8769cab04 +--- a/drivers/usb/typec/altmodes/displayport.c ++++ b/drivers/usb/typec/altmodes/displayport.c +@@ -11,12 +11,14 @@ + #include + #include + #include ++#include + #include + #include ++#include + #include "displayport.h" + +-#define DP_HEADER(_dp, cmd) (VDO((_dp)->alt->svid, 1, cmd) | \ +- VDO_OPOS(USB_TYPEC_DP_MODE)) ++#define DP_HEADER(_dp, ver, cmd) (VDO((_dp)->alt->svid, 1, ver, cmd) \ ++ | VDO_OPOS(USB_TYPEC_DP_MODE)) + + enum { + DP_CONF_USB, +@@ -45,6 +47,17 @@ enum { + BIT(DP_PIN_ASSIGN_D) | \ + BIT(DP_PIN_ASSIGN_F)) + ++/* ++ * A UFP_U that uses a USB Type-C plug describes the pin assignments supported ++ * for the corresponding receptacle. (i.e., a UFP_D will describe the DFP_D pin ++ * assignments to which it connects), whereas a UFP_U that uses a USB Type-C ++ * receptacle describes its pin assignments directly (i.e., a UFP_D will ++ * describe its own UFP_D pin assignments). ++ */ ++#define DP_CAP_PIN_ASSIGN(_cap_) (((_cap_) & DP_CAP_RECEPTACLE) ? \ ++ DP_CAP_UFP_D_PIN_ASSIGN(_cap_) : \ ++ DP_CAP_DFP_D_PIN_ASSIGN(_cap_)) ++ + enum dp_state { + DP_STATE_IDLE, + DP_STATE_ENTER, +@@ -57,11 +70,13 @@ struct dp_altmode { + struct typec_displayport_data data; + + enum dp_state state; ++ bool hpd; + + struct mutex lock; /* device lock */ + struct work_struct work; + struct typec_altmode *alt; + const struct typec_altmode *port; ++ struct fwnode_handle *connector_fwnode; + }; + + static int dp_altmode_notify(struct dp_altmode *dp) +@@ -82,14 +97,10 @@ static int dp_altmode_configure(struct dp_altmode *dp, u8 con) + return 0; + case DP_STATUS_CON_DFP_D: + conf |= DP_CONF_UFP_U_AS_DFP_D; +- pin_assign = DP_CAP_UFP_D_PIN_ASSIGN(dp->alt->vdo) & +- DP_CAP_DFP_D_PIN_ASSIGN(dp->port->vdo); + break; + case DP_STATUS_CON_UFP_D: + case DP_STATUS_CON_BOTH: /* NOTE: First acting as DP source */ + conf |= DP_CONF_UFP_U_AS_UFP_D; +- pin_assign = DP_CAP_DFP_D_PIN_ASSIGN(dp->alt->vdo) & +- DP_CAP_UFP_D_PIN_ASSIGN(dp->port->vdo); + break; + default: + break; +@@ -97,6 +108,8 @@ static int dp_altmode_configure(struct dp_altmode *dp, u8 con) + + /* Determining the initial pin assignment. */ + if (!DP_CONF_GET_PIN_ASSIGN(dp->data.conf)) { ++ pin_assign = DP_CAP_PIN_ASSIGN(dp->alt->vdo); ++ + /* Is USB together with DP preferred */ + if (dp->data.status & DP_STATUS_PREFER_MULTI_FUNC && + pin_assign & DP_PIN_ASSIGN_MULTI_FUNC_MASK) +@@ -104,6 +117,13 @@ static int dp_altmode_configure(struct dp_altmode *dp, u8 con) + else if (pin_assign & DP_PIN_ASSIGN_DP_ONLY_MASK) + pin_assign &= DP_PIN_ASSIGN_DP_ONLY_MASK; + ++ /* ++ * DFP_U never selects Pin Assignment E when Pin Assignment C ++ * and possibly Pin Assignment D are offered by the UFP_U. ++ */ ++ if (pin_assign & (BIT(DP_PIN_ASSIGN_C) | BIT(DP_PIN_ASSIGN_D))) ++ pin_assign &= ~BIT(DP_PIN_ASSIGN_E); ++ + if (!pin_assign) + return -EINVAL; + +@@ -118,6 +138,7 @@ static int dp_altmode_configure(struct dp_altmode *dp, u8 con) + static int dp_altmode_status_update(struct dp_altmode *dp) + { + bool configured = !!DP_CONF_GET_PIN_ASSIGN(dp->data.conf); ++ bool hpd = !!(dp->data.status & DP_STATUS_HPD_STATE); + u8 con = DP_STATUS_CONNECTION(dp->data.status); + int ret = 0; + +@@ -130,6 +151,11 @@ static int dp_altmode_status_update(struct dp_altmode *dp) + ret = dp_altmode_configure(dp, con); + if (!ret) + dp->state = DP_STATE_CONFIGURE; ++ } else { ++ if (dp->hpd != hpd) { ++ drm_connector_oob_hotplug_event(dp->connector_fwnode); ++ dp->hpd = hpd; ++ } + } + + return ret; +@@ -156,9 +182,14 @@ static int dp_altmode_configured(struct dp_altmode *dp) + + static int dp_altmode_configure_vdm(struct dp_altmode *dp, u32 conf) + { +- u32 header = DP_HEADER(dp, DP_CMD_CONFIGURE); ++ int svdm_version = typec_altmode_get_svdm_version(dp->alt); ++ u32 header; + int ret; + ++ if (svdm_version < 0) ++ return svdm_version; ++ ++ header = DP_HEADER(dp, svdm_version, DP_CMD_CONFIGURE); + ret = typec_altmode_notify(dp->alt, TYPEC_STATE_SAFE, &dp->data); + if (ret) { + dev_err(&dp->alt->dev, +@@ -181,6 +212,7 @@ static int dp_altmode_configure_vdm(struct dp_altmode *dp, u32 conf) + static void dp_altmode_work(struct work_struct *work) + { + struct dp_altmode *dp = container_of(work, struct dp_altmode, work); ++ int svdm_version; + u32 header; + u32 vdo; + int ret; +@@ -194,7 +226,10 @@ static void dp_altmode_work(struct work_struct *work) + dev_err(&dp->alt->dev, "failed to enter mode\n"); + break; + case DP_STATE_UPDATE: +- header = DP_HEADER(dp, DP_CMD_STATUS_UPDATE); ++ svdm_version = typec_altmode_get_svdm_version(dp->alt); ++ if (svdm_version < 0) ++ break; ++ header = DP_HEADER(dp, svdm_version, DP_CMD_STATUS_UPDATE); + vdo = 1; + ret = typec_altmode_vdm(dp->alt, header, &vdo, 2); + if (ret) +@@ -435,10 +470,7 @@ pin_assignment_store(struct device *dev, struct device_attribute *attr, + goto out_unlock; + } + +- if (DP_CONF_CURRENTLY(dp->data.conf) == DP_CONF_DFP_D) +- assignments = DP_CAP_UFP_D_PIN_ASSIGN(dp->alt->vdo); +- else +- assignments = DP_CAP_DFP_D_PIN_ASSIGN(dp->alt->vdo); ++ assignments = DP_CAP_PIN_ASSIGN(dp->alt->vdo); + + if (!(DP_CONF_GET_PIN_ASSIGN(conf) & assignments)) { + ret = -EINVAL; +@@ -475,10 +507,7 @@ static ssize_t pin_assignment_show(struct device *dev, + + cur = get_count_order(DP_CONF_GET_PIN_ASSIGN(dp->data.conf)); + +- if (DP_CONF_CURRENTLY(dp->data.conf) == DP_CONF_DFP_D) +- assignments = DP_CAP_UFP_D_PIN_ASSIGN(dp->alt->vdo); +- else +- assignments = DP_CAP_DFP_D_PIN_ASSIGN(dp->alt->vdo); ++ assignments = DP_CAP_PIN_ASSIGN(dp->alt->vdo); + + for (i = 0; assignments; assignments >>= 1, i++) { + if (assignments & 1) { +@@ -512,6 +541,7 @@ static const struct attribute_group dp_altmode_group = { + int dp_altmode_probe(struct typec_altmode *alt) + { + const struct typec_altmode *port = typec_altmode_get_partner(alt); ++ struct fwnode_handle *fwnode; + struct dp_altmode *dp; + int ret; + +@@ -540,6 +570,11 @@ int dp_altmode_probe(struct typec_altmode *alt) + alt->desc = "DisplayPort"; + alt->ops = &dp_altmode_ops; + ++ fwnode = dev_fwnode(alt->dev.parent->parent); /* typec_port fwnode */ ++ dp->connector_fwnode = fwnode_find_reference(fwnode, "displayport", 0); ++ if (IS_ERR(dp->connector_fwnode)) ++ dp->connector_fwnode = NULL; ++ + typec_altmode_set_drvdata(alt, dp); + + dp->state = DP_STATE_ENTER; +@@ -555,6 +590,13 @@ void dp_altmode_remove(struct typec_altmode *alt) + + sysfs_remove_group(&alt->dev.kobj, &dp_altmode_group); + cancel_work_sync(&dp->work); ++ ++ if (dp->connector_fwnode) { ++ if (dp->hpd) ++ drm_connector_oob_hotplug_event(dp->connector_fwnode); ++ ++ fwnode_handle_put(dp->connector_fwnode); ++ } + } + EXPORT_SYMBOL_GPL(dp_altmode_remove); + +diff --git a/drivers/usb/typec/class.c b/drivers/usb/typec/class.c +old mode 100644 +new mode 100755 +index c7d44daa0..df9ba6195 +--- a/drivers/usb/typec/class.c ++++ b/drivers/usb/typec/class.c +@@ -11,6 +11,7 @@ + #include + #include + #include ++#include + + #include "bus.h" + +@@ -18,6 +19,7 @@ struct typec_plug { + struct device dev; + enum typec_plug_index index; + struct ida mode_ids; ++ int num_altmodes; + }; + + struct typec_cable { +@@ -25,6 +27,7 @@ struct typec_cable { + enum typec_plug_type type; + struct usb_pd_identity *identity; + unsigned int active:1; ++ u16 pd_revision; /* 0300H = "3.0" */ + }; + + struct typec_partner { +@@ -33,6 +36,9 @@ struct typec_partner { + struct usb_pd_identity *identity; + enum typec_accessory accessory; + struct ida mode_ids; ++ int num_altmodes; ++ u16 pd_revision; /* 0300H = "3.0" */ ++ enum usb_pd_svdm_ver svdm_version; + }; + + struct typec_port { +@@ -81,6 +87,29 @@ static const char * const typec_accessory_modes[] = { + [TYPEC_ACCESSORY_DEBUG] = "debug", + }; + ++/* Product types defined in USB PD Specification R3.0 V2.0 */ ++static const char * const product_type_ufp[8] = { ++ [IDH_PTYPE_NOT_UFP] = "not_ufp", ++ [IDH_PTYPE_HUB] = "hub", ++ [IDH_PTYPE_PERIPH] = "peripheral", ++ [IDH_PTYPE_PSD] = "psd", ++ [IDH_PTYPE_AMA] = "ama", ++}; ++ ++static const char * const product_type_dfp[8] = { ++ [IDH_PTYPE_NOT_DFP] = "not_dfp", ++ [IDH_PTYPE_DFP_HUB] = "hub", ++ [IDH_PTYPE_DFP_HOST] = "host", ++ [IDH_PTYPE_DFP_PB] = "power_brick", ++}; ++ ++static const char * const product_type_cable[8] = { ++ [IDH_PTYPE_NOT_CABLE] = "not_cable", ++ [IDH_PTYPE_PCABLE] = "passive", ++ [IDH_PTYPE_ACABLE] = "active", ++ [IDH_PTYPE_VPD] = "vpd", ++}; ++ + static struct usb_pd_identity *get_pd_identity(struct device *dev) + { + if (is_typec_partner(dev)) { +@@ -95,6 +124,32 @@ static struct usb_pd_identity *get_pd_identity(struct device *dev) + return NULL; + } + ++static const char *get_pd_product_type(struct device *dev) ++{ ++ struct typec_port *port = to_typec_port(dev->parent); ++ struct usb_pd_identity *id = get_pd_identity(dev); ++ const char *ptype = NULL; ++ ++ if (is_typec_partner(dev)) { ++ if (!id) ++ return NULL; ++ ++ if (port->data_role == TYPEC_HOST) ++ ptype = product_type_ufp[PD_IDH_PTYPE(id->id_header)]; ++ else ++ ptype = product_type_dfp[PD_IDH_DFP_PTYPE(id->id_header)]; ++ } else if (is_typec_cable(dev)) { ++ if (id) ++ ptype = product_type_cable[PD_IDH_PTYPE(id->id_header)]; ++ else ++ ptype = to_typec_cable(dev)->active ? ++ product_type_cable[IDH_PTYPE_ACABLE] : ++ product_type_cable[IDH_PTYPE_PCABLE]; ++ } ++ ++ return ptype; ++} ++ + static ssize_t id_header_show(struct device *dev, struct device_attribute *attr, + char *buf) + { +@@ -122,10 +177,40 @@ static ssize_t product_show(struct device *dev, struct device_attribute *attr, + } + static DEVICE_ATTR_RO(product); + ++static ssize_t product_type_vdo1_show(struct device *dev, struct device_attribute *attr, ++ char *buf) ++{ ++ struct usb_pd_identity *id = get_pd_identity(dev); ++ ++ return sysfs_emit(buf, "0x%08x\n", id->vdo[0]); ++} ++static DEVICE_ATTR_RO(product_type_vdo1); ++ ++static ssize_t product_type_vdo2_show(struct device *dev, struct device_attribute *attr, ++ char *buf) ++{ ++ struct usb_pd_identity *id = get_pd_identity(dev); ++ ++ return sysfs_emit(buf, "0x%08x\n", id->vdo[1]); ++} ++static DEVICE_ATTR_RO(product_type_vdo2); ++ ++static ssize_t product_type_vdo3_show(struct device *dev, struct device_attribute *attr, ++ char *buf) ++{ ++ struct usb_pd_identity *id = get_pd_identity(dev); ++ ++ return sysfs_emit(buf, "0x%08x\n", id->vdo[2]); ++} ++static DEVICE_ATTR_RO(product_type_vdo3); ++ + static struct attribute *usb_pd_id_attrs[] = { + &dev_attr_id_header.attr, + &dev_attr_cert_stat.attr, + &dev_attr_product.attr, ++ &dev_attr_product_type_vdo1.attr, ++ &dev_attr_product_type_vdo2.attr, ++ &dev_attr_product_type_vdo3.attr, + NULL + }; + +@@ -139,13 +224,54 @@ static const struct attribute_group *usb_pd_id_groups[] = { + NULL, + }; + ++static void typec_product_type_notify(struct device *dev) ++{ ++ char *envp[2] = { }; ++ const char *ptype; ++ ++ ptype = get_pd_product_type(dev); ++ if (!ptype) ++ return; ++ ++ sysfs_notify(&dev->kobj, NULL, "type"); ++ ++ envp[0] = kasprintf(GFP_KERNEL, "PRODUCT_TYPE=%s", ptype); ++ if (!envp[0]) ++ return; ++ ++ kobject_uevent_env(&dev->kobj, KOBJ_CHANGE, envp); ++ kfree(envp[0]); ++} ++ + static void typec_report_identity(struct device *dev) + { + sysfs_notify(&dev->kobj, "identity", "id_header"); + sysfs_notify(&dev->kobj, "identity", "cert_stat"); + sysfs_notify(&dev->kobj, "identity", "product"); ++ sysfs_notify(&dev->kobj, "identity", "product_type_vdo1"); ++ sysfs_notify(&dev->kobj, "identity", "product_type_vdo2"); ++ sysfs_notify(&dev->kobj, "identity", "product_type_vdo3"); ++ typec_product_type_notify(dev); + } + ++static ssize_t ++type_show(struct device *dev, struct device_attribute *attr, char *buf) ++{ ++ const char *ptype; ++ ++ ptype = get_pd_product_type(dev); ++ if (!ptype) ++ return 0; ++ ++ return sysfs_emit(buf, "%s\n", ptype); ++} ++static DEVICE_ATTR_RO(type); ++ ++static ssize_t usb_power_delivery_revision_show(struct device *dev, ++ struct device_attribute *attr, ++ char *buf); ++static DEVICE_ATTR_RO(usb_power_delivery_revision); ++ + /* ------------------------------------------------------------------------- */ + /* Alternate Modes */ + +@@ -382,7 +508,7 @@ static umode_t typec_altmode_attr_is_visible(struct kobject *kobj, + return attr->mode; + } + +-static struct attribute_group typec_altmode_group = { ++static const struct attribute_group typec_altmode_group = { + .is_visible = typec_altmode_attr_is_visible, + .attrs = typec_altmode_attrs, + }; +@@ -484,6 +610,10 @@ typec_register_altmode(struct device *parent, + if (is_typec_partner(parent)) + alt->adev.dev.bus = &typec_bus; + ++ /* Plug alt modes need a class to generate udev events. */ ++ if (is_typec_plug(parent)) ++ alt->adev.dev.class = typec_class; ++ + ret = device_register(&alt->adev.dev); + if (ret) { + dev_err(parent, "failed to register alternate mode (%d)\n", +@@ -534,12 +664,61 @@ static ssize_t supports_usb_power_delivery_show(struct device *dev, + } + static DEVICE_ATTR_RO(supports_usb_power_delivery); + ++static ssize_t number_of_alternate_modes_show(struct device *dev, struct device_attribute *attr, ++ char *buf) ++{ ++ struct typec_partner *partner; ++ struct typec_plug *plug; ++ int num_altmodes; ++ ++ if (is_typec_partner(dev)) { ++ partner = to_typec_partner(dev); ++ num_altmodes = partner->num_altmodes; ++ } else if (is_typec_plug(dev)) { ++ plug = to_typec_plug(dev); ++ num_altmodes = plug->num_altmodes; ++ } else { ++ return 0; ++ } ++ ++ return sysfs_emit(buf, "%d\n", num_altmodes); ++} ++static DEVICE_ATTR_RO(number_of_alternate_modes); ++ + static struct attribute *typec_partner_attrs[] = { + &dev_attr_accessory_mode.attr, + &dev_attr_supports_usb_power_delivery.attr, ++ &dev_attr_number_of_alternate_modes.attr, ++ &dev_attr_type.attr, ++ &dev_attr_usb_power_delivery_revision.attr, ++ NULL ++}; ++ ++static umode_t typec_partner_attr_is_visible(struct kobject *kobj, struct attribute *attr, int n) ++{ ++ struct typec_partner *partner = to_typec_partner(kobj_to_dev(kobj)); ++ ++ if (attr == &dev_attr_number_of_alternate_modes.attr) { ++ if (partner->num_altmodes < 0) ++ return 0; ++ } ++ ++ if (attr == &dev_attr_type.attr) ++ if (!get_pd_product_type(kobj_to_dev(kobj))) ++ return 0; ++ ++ return attr->mode; ++} ++ ++static const struct attribute_group typec_partner_group = { ++ .is_visible = typec_partner_attr_is_visible, ++ .attrs = typec_partner_attrs ++}; ++ ++static const struct attribute_group *typec_partner_groups[] = { ++ &typec_partner_group, + NULL + }; +-ATTRIBUTE_GROUPS(typec_partner); + + static void typec_partner_release(struct device *dev) + { +@@ -572,6 +751,61 @@ int typec_partner_set_identity(struct typec_partner *partner) + } + EXPORT_SYMBOL_GPL(typec_partner_set_identity); + ++/** ++ * typec_partner_set_pd_revision - Set the PD revision supported by the partner ++ * @partner: The partner to be updated. ++ * @pd_revision: USB Power Delivery Specification Revision supported by partner ++ * ++ * This routine is used to report that the PD revision of the port partner has ++ * become available. ++ */ ++void typec_partner_set_pd_revision(struct typec_partner *partner, u16 pd_revision) ++{ ++ if (partner->pd_revision == pd_revision) ++ return; ++ ++ partner->pd_revision = pd_revision; ++ sysfs_notify(&partner->dev.kobj, NULL, "usb_power_delivery_revision"); ++ if (pd_revision != 0 && !partner->usb_pd) { ++ partner->usb_pd = 1; ++ sysfs_notify(&partner->dev.kobj, NULL, ++ "supports_usb_power_delivery"); ++ } ++ kobject_uevent(&partner->dev.kobj, KOBJ_CHANGE); ++} ++EXPORT_SYMBOL_GPL(typec_partner_set_pd_revision); ++ ++/** ++ * typec_partner_set_num_altmodes - Set the number of available partner altmodes ++ * @partner: The partner to be updated. ++ * @num_altmodes: The number of altmodes we want to specify as available. ++ * ++ * This routine is used to report the number of alternate modes supported by the ++ * partner. This value is *not* enforced in alternate mode registration routines. ++ * ++ * @partner.num_altmodes is set to -1 on partner registration, denoting that ++ * a valid value has not been set for it yet. ++ * ++ * Returns 0 on success or negative error number on failure. ++ */ ++int typec_partner_set_num_altmodes(struct typec_partner *partner, int num_altmodes) ++{ ++ int ret; ++ ++ if (num_altmodes < 0) ++ return -EINVAL; ++ ++ partner->num_altmodes = num_altmodes; ++ ret = sysfs_update_group(&partner->dev.kobj, &typec_partner_group); ++ if (ret < 0) ++ return ret; ++ ++ sysfs_notify(&partner->dev.kobj, NULL, "number_of_alternate_modes"); ++ ++ return 0; ++} ++EXPORT_SYMBOL_GPL(typec_partner_set_num_altmodes); ++ + /** + * typec_partner_register_altmode - Register USB Type-C Partner Alternate Mode + * @partner: USB Type-C Partner that supports the alternate mode +@@ -592,6 +826,20 @@ typec_partner_register_altmode(struct typec_partner *partner, + } + EXPORT_SYMBOL_GPL(typec_partner_register_altmode); + ++/** ++ * typec_partner_set_svdm_version - Set negotiated Structured VDM (SVDM) Version ++ * @partner: USB Type-C Partner that supports SVDM ++ * @svdm_version: Negotiated SVDM Version ++ * ++ * This routine is used to save the negotiated SVDM Version. ++ */ ++void typec_partner_set_svdm_version(struct typec_partner *partner, ++ enum usb_pd_svdm_ver svdm_version) ++{ ++ partner->svdm_version = svdm_version; ++} ++EXPORT_SYMBOL_GPL(typec_partner_set_svdm_version); ++ + /** + * typec_register_partner - Register a USB Type-C Partner + * @port: The USB Type-C Port the partner is connected to +@@ -614,6 +862,9 @@ struct typec_partner *typec_register_partner(struct typec_port *port, + ida_init(&partner->mode_ids); + partner->usb_pd = desc->usb_pd; + partner->accessory = desc->accessory; ++ partner->num_altmodes = -1; ++ partner->pd_revision = desc->pd_revision; ++ partner->svdm_version = port->cap->svdm_version; + + if (desc->identity) { + /* +@@ -664,11 +915,70 @@ static void typec_plug_release(struct device *dev) + kfree(plug); + } + ++static struct attribute *typec_plug_attrs[] = { ++ &dev_attr_number_of_alternate_modes.attr, ++ NULL ++}; ++ ++static umode_t typec_plug_attr_is_visible(struct kobject *kobj, struct attribute *attr, int n) ++{ ++ struct typec_plug *plug = to_typec_plug(kobj_to_dev(kobj)); ++ ++ if (attr == &dev_attr_number_of_alternate_modes.attr) { ++ if (plug->num_altmodes < 0) ++ return 0; ++ } ++ ++ return attr->mode; ++} ++ ++static const struct attribute_group typec_plug_group = { ++ .is_visible = typec_plug_attr_is_visible, ++ .attrs = typec_plug_attrs ++}; ++ ++static const struct attribute_group *typec_plug_groups[] = { ++ &typec_plug_group, ++ NULL ++}; ++ + static const struct device_type typec_plug_dev_type = { + .name = "typec_plug", ++ .groups = typec_plug_groups, + .release = typec_plug_release, + }; + ++/** ++ * typec_plug_set_num_altmodes - Set the number of available plug altmodes ++ * @plug: The plug to be updated. ++ * @num_altmodes: The number of altmodes we want to specify as available. ++ * ++ * This routine is used to report the number of alternate modes supported by the ++ * plug. This value is *not* enforced in alternate mode registration routines. ++ * ++ * @plug.num_altmodes is set to -1 on plug registration, denoting that ++ * a valid value has not been set for it yet. ++ * ++ * Returns 0 on success or negative error number on failure. ++ */ ++int typec_plug_set_num_altmodes(struct typec_plug *plug, int num_altmodes) ++{ ++ int ret; ++ ++ if (num_altmodes < 0) ++ return -EINVAL; ++ ++ plug->num_altmodes = num_altmodes; ++ ret = sysfs_update_group(&plug->dev.kobj, &typec_plug_group); ++ if (ret < 0) ++ return ret; ++ ++ sysfs_notify(&plug->dev.kobj, NULL, "number_of_alternate_modes"); ++ ++ return 0; ++} ++EXPORT_SYMBOL_GPL(typec_plug_set_num_altmodes); ++ + /** + * typec_plug_register_altmode - Register USB Type-C Cable Plug Alternate Mode + * @plug: USB Type-C Cable Plug that supports the alternate mode +@@ -714,6 +1024,7 @@ struct typec_plug *typec_register_plug(struct typec_cable *cable, + sprintf(name, "plug%d", desc->index); + + ida_init(&plug->mode_ids); ++ plug->num_altmodes = -1; + plug->index = desc->index; + plug->dev.class = typec_class; + plug->dev.parent = &cable->dev; +@@ -746,15 +1057,6 @@ EXPORT_SYMBOL_GPL(typec_unregister_plug); + + /* Type-C Cables */ + +-static ssize_t +-type_show(struct device *dev, struct device_attribute *attr, char *buf) +-{ +- struct typec_cable *cable = to_typec_cable(dev); +- +- return sprintf(buf, "%s\n", cable->active ? "active" : "passive"); +-} +-static DEVICE_ATTR_RO(type); +- + static const char * const typec_plug_types[] = { + [USB_PLUG_NONE] = "unknown", + [USB_PLUG_TYPE_A] = "type-a", +@@ -775,6 +1077,7 @@ static DEVICE_ATTR_RO(plug_type); + static struct attribute *typec_cable_attrs[] = { + &dev_attr_type.attr, + &dev_attr_plug_type.attr, ++ &dev_attr_usb_power_delivery_revision.attr, + NULL + }; + ATTRIBUTE_GROUPS(typec_cable); +@@ -877,6 +1180,7 @@ struct typec_cable *typec_register_cable(struct typec_port *port, + + cable->type = desc->type; + cable->active = desc->active; ++ cable->pd_revision = desc->pd_revision; + + if (desc->identity) { + /* +@@ -1246,11 +1550,23 @@ static ssize_t usb_power_delivery_revision_show(struct device *dev, + struct device_attribute *attr, + char *buf) + { +- struct typec_port *p = to_typec_port(dev); ++ u16 rev = 0; + +- return sprintf(buf, "%d\n", (p->cap->pd_revision >> 8) & 0xff); ++ if (is_typec_partner(dev)) { ++ struct typec_partner *partner = to_typec_partner(dev); ++ ++ rev = partner->pd_revision; ++ } else if (is_typec_cable(dev)) { ++ struct typec_cable *cable = to_typec_cable(dev); ++ ++ rev = cable->pd_revision; ++ } else if (is_typec_port(dev)) { ++ struct typec_port *p = to_typec_port(dev); ++ ++ rev = p->cap->pd_revision; ++ } ++ return sysfs_emit(buf, "%d.%d\n", (rev >> 8) & 0xff, (rev >> 4) & 0xf); + } +-static DEVICE_ATTR_RO(usb_power_delivery_revision); + + static ssize_t orientation_show(struct device *dev, + struct device_attribute *attr, +@@ -1311,7 +1627,7 @@ static umode_t typec_attr_is_visible(struct kobject *kobj, + return attr->mode; + } + +-static struct attribute_group typec_group = { ++static const struct attribute_group typec_group = { + .is_visible = typec_attr_is_visible, + .attrs = typec_attrs, + }; +@@ -1354,6 +1670,11 @@ const struct device_type typec_port_dev_type = { + /* --------------------------------------- */ + /* Driver callbacks to report role updates */ + ++static int partner_match(struct device *dev, void *data) ++{ ++ return is_typec_partner(dev); ++} ++ + /** + * typec_set_data_role - Report data role change + * @port: The USB Type-C Port where the role was changed +@@ -1363,12 +1684,23 @@ const struct device_type typec_port_dev_type = { + */ + void typec_set_data_role(struct typec_port *port, enum typec_data_role role) + { ++ struct device *partner_dev; ++ + if (port->data_role == role) + return; + + port->data_role = role; + sysfs_notify(&port->dev.kobj, NULL, "data_role"); + kobject_uevent(&port->dev.kobj, KOBJ_CHANGE); ++ ++ partner_dev = device_find_child(&port->dev, NULL, partner_match); ++ if (!partner_dev) ++ return; ++ ++ if (to_typec_partner(partner_dev)->identity) ++ typec_product_type_notify(partner_dev); ++ ++ put_device(partner_dev); + } + EXPORT_SYMBOL_GPL(typec_set_data_role); + +@@ -1409,11 +1741,6 @@ void typec_set_vconn_role(struct typec_port *port, enum typec_role role) + } + EXPORT_SYMBOL_GPL(typec_set_vconn_role); + +-static int partner_match(struct device *dev, void *data) +-{ +- return is_typec_partner(dev); +-} +- + /** + * typec_set_pwr_opmode - Report changed power operation mode + * @port: The USB Type-C Port where the mode was changed +@@ -1583,6 +1910,33 @@ EXPORT_SYMBOL_GPL(typec_set_mode); + + /* --------------------------------------- */ + ++/** ++ * typec_get_negotiated_svdm_version - Get negotiated SVDM Version ++ * @port: USB Type-C Port. ++ * ++ * Get the negotiated SVDM Version. The Version is set to the port default ++ * value stored in typec_capability on partner registration, and updated after ++ * a successful Discover Identity if the negotiated value is less than the ++ * default value. ++ * ++ * Returns usb_pd_svdm_ver if the partner has been registered otherwise -ENODEV. ++ */ ++int typec_get_negotiated_svdm_version(struct typec_port *port) ++{ ++ enum usb_pd_svdm_ver svdm_version; ++ struct device *partner_dev; ++ ++ partner_dev = device_find_child(&port->dev, NULL, partner_match); ++ if (!partner_dev) ++ return -ENODEV; ++ ++ svdm_version = to_typec_partner(partner_dev)->svdm_version; ++ put_device(partner_dev); ++ ++ return svdm_version; ++} ++EXPORT_SYMBOL_GPL(typec_get_negotiated_svdm_version); ++ + /** + * typec_get_drvdata - Return private driver data pointer + * @port: USB Type-C port +@@ -1624,6 +1978,62 @@ typec_port_register_altmode(struct typec_port *port, + } + EXPORT_SYMBOL_GPL(typec_port_register_altmode); + ++#ifdef CONFIG_NO_GKI ++void typec_port_register_altmodes(struct typec_port *port, ++ const struct typec_altmode_ops *ops, void *drvdata, ++ struct typec_altmode **altmodes, size_t n) ++{ ++ struct fwnode_handle *altmodes_node, *child; ++ struct typec_altmode_desc desc; ++ struct typec_altmode *alt; ++ size_t index = 0; ++ u32 svid, vdo; ++ int ret; ++ ++ altmodes_node = device_get_named_child_node(&port->dev, "altmodes"); ++ if (!altmodes_node) ++ return; /* No altmodes specified */ ++ ++ fwnode_for_each_child_node(altmodes_node, child) { ++ ret = fwnode_property_read_u32(child, "svid", &svid); ++ if (ret) { ++ dev_err(&port->dev, "Error reading svid for altmode %s\n", ++ fwnode_get_name(child)); ++ continue; ++ } ++ ++ ret = fwnode_property_read_u32(child, "vdo", &vdo); ++ if (ret) { ++ dev_err(&port->dev, "Error reading vdo for altmode %s\n", ++ fwnode_get_name(child)); ++ continue; ++ } ++ ++ if (index >= n) { ++ dev_err(&port->dev, "Error not enough space for altmode %s\n", ++ fwnode_get_name(child)); ++ continue; ++ } ++ ++ desc.svid = svid; ++ desc.vdo = vdo; ++ desc.mode = index + 1; ++ alt = typec_port_register_altmode(port, &desc); ++ if (IS_ERR(alt)) { ++ dev_err(&port->dev, "Error registering altmode %s\n", ++ fwnode_get_name(child)); ++ continue; ++ } ++ ++ alt->ops = ops; ++ typec_altmode_set_drvdata(alt, drvdata); ++ altmodes[index] = alt; ++ index++; ++ } ++} ++EXPORT_SYMBOL_GPL(typec_port_register_altmodes); ++#endif /* CONFIG_NO_GKI */ ++ + /** + * typec_register_port - Register a USB Type-C Port + * @parent: Parent device +diff --git a/drivers/usb/typec/mux/intel_pmc_mux.c b/drivers/usb/typec/mux/intel_pmc_mux.c +old mode 100644 +new mode 100755 +index acdef6fbb..31b1b3b55 +--- a/drivers/usb/typec/mux/intel_pmc_mux.c ++++ b/drivers/usb/typec/mux/intel_pmc_mux.c +@@ -176,6 +176,7 @@ static int hsl_orientation(struct pmc_usb_port *port) + static int pmc_usb_command(struct pmc_usb_port *port, u8 *msg, u32 len) + { + u8 response[4]; ++ u8 status_res; + int ret; + + /* +@@ -189,9 +190,13 @@ static int pmc_usb_command(struct pmc_usb_port *port, u8 *msg, u32 len) + if (ret) + return ret; + +- if (response[2] & PMC_USB_RESP_STATUS_FAILURE) { +- if (response[2] & PMC_USB_RESP_STATUS_FATAL) ++ status_res = (msg[0] & 0xf) < PMC_USB_SAFE_MODE ? ++ response[2] : response[1]; ++ ++ if (status_res & PMC_USB_RESP_STATUS_FAILURE) { ++ if (status_res & PMC_USB_RESP_STATUS_FATAL) + return -EIO; ++ + return -EBUSY; + } + +@@ -267,6 +272,7 @@ static int + pmc_usb_mux_tbt(struct pmc_usb_port *port, struct typec_mux_state *state) + { + struct typec_thunderbolt_data *data = state->data; ++ u8 cable_rounded = TBT_CABLE_ROUNDED_SUPPORT(data->cable_mode); + u8 cable_speed = TBT_CABLE_SPEED(data->cable_mode); + struct altmode_req req = { }; + +@@ -295,6 +301,8 @@ pmc_usb_mux_tbt(struct pmc_usb_port *port, struct typec_mux_state *state) + + req.mode_data |= PMC_USB_ALTMODE_CABLE_SPD(cable_speed); + ++ req.mode_data |= PMC_USB_ALTMODE_TBT_GEN(cable_rounded); ++ + return pmc_usb_command(port, (void *)&req, sizeof(req)); + } + +@@ -330,6 +338,11 @@ pmc_usb_mux_usb4(struct pmc_usb_port *port, struct typec_mux_state *state) + fallthrough; + default: + req.mode_data |= PMC_USB_ALTMODE_ACTIVE_CABLE; ++ ++ /* Configure data rate to rounded in the case of Active TBT3 ++ * and USB4 cables. ++ */ ++ req.mode_data |= PMC_USB_ALTMODE_TBT_GEN(1); + break; + } + +diff --git a/drivers/usb/typec/tcpm/Kconfig b/drivers/usb/typec/tcpm/Kconfig +old mode 100644 +new mode 100755 +index 557f392fe..e16952bb7 +--- a/drivers/usb/typec/tcpm/Kconfig ++++ b/drivers/usb/typec/tcpm/Kconfig +@@ -20,6 +20,13 @@ config TYPEC_TCPCI + + if TYPEC_TCPCI + ++config TYPEC_HUSB311 ++ tristate "Hynetek HUSB311 Type-C chip driver" ++ help ++ Hynetek HUSB311 Type-C chip driver that works with ++ Type-C Port Controller Manager to provide USB PD and USB ++ Type-C functionalities. ++ + config TYPEC_RT1711H + tristate "Richtek RT1711H Type-C chip driver" + help +diff --git a/drivers/usb/typec/tcpm/Makefile b/drivers/usb/typec/tcpm/Makefile +old mode 100644 +new mode 100755 +index 7d499f356..d2ca41aea +--- a/drivers/usb/typec/tcpm/Makefile ++++ b/drivers/usb/typec/tcpm/Makefile +@@ -4,6 +4,7 @@ obj-$(CONFIG_TYPEC_FUSB302) += fusb302.o + obj-$(CONFIG_TYPEC_WCOVE) += typec_wcove.o + typec_wcove-y := wcove.o + obj-$(CONFIG_TYPEC_TCPCI) += tcpci.o ++obj-$(CONFIG_TYPEC_HUSB311) += tcpci_husb311.o + obj-$(CONFIG_TYPEC_RT1711H) += tcpci_rt1711h.o + obj-$(CONFIG_TYPEC_MT6360) += tcpci_mt6360.o + obj-$(CONFIG_TYPEC_TCPCI_MAXIM) += tcpci_maxim.o +diff --git a/drivers/usb/typec/tcpm/fusb302.c b/drivers/usb/typec/tcpm/fusb302.c +old mode 100644 +new mode 100755 +index 99562cc65..887644b39 +--- a/drivers/usb/typec/tcpm/fusb302.c ++++ b/drivers/usb/typec/tcpm/fusb302.c +@@ -343,12 +343,11 @@ static int fusb302_sw_reset(struct fusb302_chip *chip) + return ret; + } + +-static int fusb302_enable_tx_auto_retries(struct fusb302_chip *chip) ++static int fusb302_enable_tx_auto_retries(struct fusb302_chip *chip, u8 retry_count) + { + int ret = 0; + +- ret = fusb302_i2c_set_bits(chip, FUSB_REG_CONTROL3, +- FUSB_REG_CONTROL3_N_RETRIES_3 | ++ ret = fusb302_i2c_set_bits(chip, FUSB_REG_CONTROL3, retry_count | + FUSB_REG_CONTROL3_AUTO_RETRY); + + return ret; +@@ -399,7 +398,7 @@ static int tcpm_init(struct tcpc_dev *dev) + ret = fusb302_sw_reset(chip); + if (ret < 0) + return ret; +- ret = fusb302_enable_tx_auto_retries(chip); ++ ret = fusb302_enable_tx_auto_retries(chip, FUSB_REG_CONTROL3_N_RETRIES_3); + if (ret < 0) + return ret; + ret = fusb302_init_interrupt(chip); +@@ -669,7 +668,7 @@ static int tcpm_set_cc(struct tcpc_dev *dev, enum typec_cc_status cc) + ret = fusb302_i2c_mask_write(chip, FUSB_REG_MASK, + FUSB_REG_MASK_BC_LVL | + FUSB_REG_MASK_COMP_CHNG, +- FUSB_REG_MASK_COMP_CHNG); ++ FUSB_REG_MASK_BC_LVL); + if (ret < 0) { + fusb302_log(chip, "cannot set SRC interrupt, ret=%d", + ret); +@@ -681,9 +680,9 @@ static int tcpm_set_cc(struct tcpc_dev *dev, enum typec_cc_status cc) + ret = fusb302_i2c_mask_write(chip, FUSB_REG_MASK, + FUSB_REG_MASK_BC_LVL | + FUSB_REG_MASK_COMP_CHNG, +- FUSB_REG_MASK_BC_LVL); ++ FUSB_REG_MASK_COMP_CHNG); + if (ret < 0) { +- fusb302_log(chip, "cannot set SRC interrupt, ret=%d", ++ fusb302_log(chip, "cannot set SNK interrupt, ret=%d", + ret); + goto done; + } +@@ -1017,7 +1016,7 @@ static const char * const transmit_type_name[] = { + }; + + static int tcpm_pd_transmit(struct tcpc_dev *dev, enum tcpm_transmit_type type, +- const struct pd_message *msg) ++ const struct pd_message *msg, unsigned int negotiated_rev) + { + struct fusb302_chip *chip = container_of(dev, struct fusb302_chip, + tcpc_dev); +@@ -1026,6 +1025,13 @@ static int tcpm_pd_transmit(struct tcpc_dev *dev, enum tcpm_transmit_type type, + mutex_lock(&chip->lock); + switch (type) { + case TCPC_TX_SOP: ++ /* nRetryCount 3 in P2.0 spec, whereas 2 in PD3.0 spec */ ++ ret = fusb302_enable_tx_auto_retries(chip, negotiated_rev > PD_REV20 ? ++ FUSB_REG_CONTROL3_N_RETRIES_2 : ++ FUSB_REG_CONTROL3_N_RETRIES_3); ++ if (ret < 0) ++ fusb302_log(chip, "Cannot update retry count ret=%d", ret); ++ + ret = fusb302_pd_send_message(chip, msg); + if (ret < 0) + fusb302_log(chip, +@@ -1796,6 +1802,17 @@ static int fusb302_pm_resume(struct device *dev) + { + struct fusb302_chip *chip = dev->driver_data; + unsigned long flags; ++ u8 pwr; ++ int ret = 0; ++ ++ /* ++ * When the power of fusb302 is lost or i2c read failed in PM S/R ++ * process, we must reset the tcpm port first to ensure the devices ++ * can attach again. ++ */ ++ ret = fusb302_i2c_read(chip, FUSB_REG_POWER, &pwr); ++ if (pwr != FUSB_REG_POWER_PWR_ALL || ret < 0) ++ tcpm_tcpc_reset(chip->tcpm_port); + + spin_lock_irqsave(&chip->irq_lock, flags); + if (chip->irq_while_suspended) { +diff --git a/drivers/usb/typec/tcpm/tcpci.c b/drivers/usb/typec/tcpm/tcpci.c +old mode 100644 +new mode 100755 +index a06da1854..0d569966d +--- a/drivers/usb/typec/tcpm/tcpci.c ++++ b/drivers/usb/typec/tcpm/tcpci.c +@@ -18,7 +18,20 @@ + + #include "tcpci.h" + +-#define PD_RETRY_COUNT 3 ++#define PD_RETRY_COUNT_DEFAULT 3 ++#define PD_RETRY_COUNT_3_0_OR_HIGHER 2 ++#define AUTO_DISCHARGE_DEFAULT_THRESHOLD_MV 3500 ++#define VSINKPD_MIN_IR_DROP_MV 750 ++#define VSRC_NEW_MIN_PERCENT 95 ++#define VSRC_VALID_MIN_MV 500 ++#define VPPS_NEW_MIN_PERCENT 95 ++#define VPPS_VALID_MIN_MV 100 ++#define VSINKDISCONNECT_PD_MIN_PERCENT 90 ++ ++#define tcpc_presenting_rd(reg, cc) \ ++ (!(TCPC_ROLE_CTRL_DRP & (reg)) && \ ++ (((reg) & (TCPC_ROLE_CTRL_## cc ##_MASK << TCPC_ROLE_CTRL_## cc ##_SHIFT)) == \ ++ (TCPC_ROLE_CTRL_CC_RD << TCPC_ROLE_CTRL_## cc ##_SHIFT))) + + #define tcpc_presenting_cc1_rd(reg) \ + (!(TCPC_ROLE_CTRL_DRP & (reg)) && \ +@@ -115,6 +128,33 @@ static int tcpci_set_cc(struct tcpc_dev *tcpc, enum typec_cc_status cc) + return 0; + } + ++static int tcpci_apply_rc(struct tcpc_dev *tcpc, enum typec_cc_status cc, ++ enum typec_cc_polarity polarity) ++{ ++ struct tcpci *tcpci = tcpc_to_tcpci(tcpc); ++ unsigned int reg; ++ int ret; ++ ++ ret = regmap_read(tcpci->regmap, TCPC_ROLE_CTRL, ®); ++ if (ret < 0) ++ return ret; ++ ++ /* ++ * APPLY_RC state is when ROLE_CONTROL.CC1 != ROLE_CONTROL.CC2 and vbus autodischarge on ++ * disconnect is disabled. Bail out when ROLE_CONTROL.CC1 != ROLE_CONTROL.CC2. ++ */ ++ if (((reg & (TCPC_ROLE_CTRL_CC2_MASK << TCPC_ROLE_CTRL_CC2_SHIFT)) >> ++ TCPC_ROLE_CTRL_CC2_SHIFT) != ++ ((reg & (TCPC_ROLE_CTRL_CC1_MASK << TCPC_ROLE_CTRL_CC1_SHIFT)) >> ++ TCPC_ROLE_CTRL_CC1_SHIFT)) ++ return 0; ++ ++ return regmap_update_bits(tcpci->regmap, TCPC_ROLE_CTRL, polarity == TYPEC_POLARITY_CC1 ? ++ TCPC_ROLE_CTRL_CC2_MASK << TCPC_ROLE_CTRL_CC2_SHIFT : ++ TCPC_ROLE_CTRL_CC1_MASK << TCPC_ROLE_CTRL_CC1_SHIFT, ++ TCPC_ROLE_CTRL_CC_OPEN); ++} ++ + static int tcpci_start_toggling(struct tcpc_dev *tcpc, + enum typec_port_type port_type, + enum typec_cc_status cc) +@@ -122,6 +162,7 @@ static int tcpci_start_toggling(struct tcpc_dev *tcpc, + int ret; + struct tcpci *tcpci = tcpc_to_tcpci(tcpc); + unsigned int reg = TCPC_ROLE_CTRL_DRP; ++ int override_toggling = 0; + + if (port_type != TYPEC_PORT_DRP) + return -EOPNOTSUPP; +@@ -197,11 +238,11 @@ static int tcpci_get_cc(struct tcpc_dev *tcpc, + *cc1 = tcpci_to_typec_cc((reg >> TCPC_CC_STATUS_CC1_SHIFT) & + TCPC_CC_STATUS_CC1_MASK, + reg & TCPC_CC_STATUS_TERM || +- tcpc_presenting_cc1_rd(role_control)); ++ tcpc_presenting_rd(role_control, CC1)); + *cc2 = tcpci_to_typec_cc((reg >> TCPC_CC_STATUS_CC2_SHIFT) & + TCPC_CC_STATUS_CC2_MASK, + reg & TCPC_CC_STATUS_TERM || +- tcpc_presenting_cc2_rd(role_control)); ++ tcpc_presenting_rd(role_control, CC2)); + + return 0; + } +@@ -266,6 +307,14 @@ static int tcpci_set_polarity(struct tcpc_dev *tcpc, + TCPC_TCPC_CTRL_ORIENTATION : 0); + } + ++static void tcpci_set_partner_usb_comm_capable(struct tcpc_dev *tcpc, bool capable) ++{ ++ struct tcpci *tcpci = tcpc_to_tcpci(tcpc); ++ ++ if (tcpci->data->set_partner_usb_comm_capable) ++ tcpci->data->set_partner_usb_comm_capable(tcpci, tcpci->data, capable); ++} ++ + static int tcpci_set_vconn(struct tcpc_dev *tcpc, bool enable) + { + struct tcpci *tcpci = tcpc_to_tcpci(tcpc); +@@ -283,6 +332,60 @@ static int tcpci_set_vconn(struct tcpc_dev *tcpc, bool enable) + enable ? TCPC_POWER_CTRL_VCONN_ENABLE : 0); + } + ++static int tcpci_enable_auto_vbus_discharge(struct tcpc_dev *dev, bool enable) ++{ ++ struct tcpci *tcpci = tcpc_to_tcpci(dev); ++ int ret; ++ ++ ret = regmap_update_bits(tcpci->regmap, TCPC_POWER_CTRL, TCPC_POWER_CTRL_AUTO_DISCHARGE, ++ enable ? TCPC_POWER_CTRL_AUTO_DISCHARGE : 0); ++ return ret; ++} ++ ++static int tcpci_set_auto_vbus_discharge_threshold(struct tcpc_dev *dev, enum typec_pwr_opmode mode, ++ bool pps_active, u32 requested_vbus_voltage_mv) ++{ ++ struct tcpci *tcpci = tcpc_to_tcpci(dev); ++ unsigned int pwr_ctrl, threshold = 0; ++ int ret; ++ ++ /* ++ * Indicates that vbus is going to go away due PR_SWAP, hard reset etc. ++ * Do not discharge vbus here. ++ */ ++ if (requested_vbus_voltage_mv == 0) ++ goto write_thresh; ++ ++ ret = regmap_read(tcpci->regmap, TCPC_POWER_CTRL, &pwr_ctrl); ++ if (ret < 0) ++ return ret; ++ ++ if (pwr_ctrl & TCPC_FAST_ROLE_SWAP_EN) { ++ /* To prevent disconnect when the source is fast role swap is capable. */ ++ threshold = AUTO_DISCHARGE_DEFAULT_THRESHOLD_MV; ++ } else if (mode == TYPEC_PWR_MODE_PD) { ++ if (pps_active) ++ threshold = ((VPPS_NEW_MIN_PERCENT * requested_vbus_voltage_mv / 100) - ++ VSINKPD_MIN_IR_DROP_MV - VPPS_VALID_MIN_MV) * ++ VSINKDISCONNECT_PD_MIN_PERCENT / 100; ++ else ++ threshold = ((VSRC_NEW_MIN_PERCENT * requested_vbus_voltage_mv / 100) - ++ VSINKPD_MIN_IR_DROP_MV - VSRC_VALID_MIN_MV) * ++ VSINKDISCONNECT_PD_MIN_PERCENT / 100; ++ } else { ++ /* 3.5V for non-pd sink */ ++ threshold = AUTO_DISCHARGE_DEFAULT_THRESHOLD_MV; ++ } ++ ++ threshold = threshold / TCPC_VBUS_SINK_DISCONNECT_THRESH_LSB_MV; ++ ++ if (threshold > TCPC_VBUS_SINK_DISCONNECT_THRESH_MAX) ++ return -EINVAL; ++ ++write_thresh: ++ return tcpci_write16(tcpci, TCPC_VBUS_SINK_DISCONNECT_THRESH, threshold); ++} ++ + static int tcpci_enable_frs(struct tcpc_dev *dev, bool enable) + { + struct tcpci *tcpci = tcpc_to_tcpci(dev); +@@ -299,6 +402,14 @@ static int tcpci_enable_frs(struct tcpc_dev *dev, bool enable) + return ret; + } + ++static void tcpci_frs_sourcing_vbus(struct tcpc_dev *dev) ++{ ++ struct tcpci *tcpci = tcpc_to_tcpci(dev); ++ ++ if (tcpci->data->frs_sourcing_vbus) ++ tcpci->data->frs_sourcing_vbus(tcpci, tcpci->data); ++} ++ + static int tcpci_set_bist_data(struct tcpc_dev *tcpc, bool enable) + { + struct tcpci *tcpci = tcpc_to_tcpci(tcpc); +@@ -354,6 +465,19 @@ static int tcpci_get_vbus(struct tcpc_dev *tcpc) + return !!(reg & TCPC_POWER_STATUS_VBUS_PRES); + } + ++static bool tcpci_is_vbus_vsafe0v(struct tcpc_dev *tcpc) ++{ ++ struct tcpci *tcpci = tcpc_to_tcpci(tcpc); ++ unsigned int reg; ++ int ret; ++ ++ ret = regmap_read(tcpci->regmap, TCPC_EXTENDED_STATUS, ®); ++ if (ret < 0) ++ return false; ++ ++ return !!(reg & TCPC_EXTENDED_STATUS_VSAFE0V); ++} ++ + static int tcpci_set_vbus(struct tcpc_dev *tcpc, bool source, bool sink) + { + struct tcpci *tcpci = tcpc_to_tcpci(tcpc); +@@ -399,9 +523,8 @@ static int tcpci_set_vbus(struct tcpc_dev *tcpc, bool source, bool sink) + return 0; + } + +-static int tcpci_pd_transmit(struct tcpc_dev *tcpc, +- enum tcpm_transmit_type type, +- const struct pd_message *msg) ++static int tcpci_pd_transmit(struct tcpc_dev *tcpc, enum tcpm_transmit_type type, ++ const struct pd_message *msg, unsigned int negotiated_rev) + { + struct tcpci *tcpci = tcpc_to_tcpci(tcpc); + u16 header = msg ? le16_to_cpu(msg->header) : 0; +@@ -449,7 +572,9 @@ static int tcpci_pd_transmit(struct tcpc_dev *tcpc, + } + } + +- reg = (PD_RETRY_COUNT << TCPC_TRANSMIT_RETRY_SHIFT) | (type << TCPC_TRANSMIT_TYPE_SHIFT); ++ /* nRetryCount is 3 in PD2.0 spec where 2 in PD3.0 spec */ ++ reg = ((negotiated_rev > PD_REV20 ? PD_RETRY_COUNT_3_0_OR_HIGHER : PD_RETRY_COUNT_DEFAULT) ++ << TCPC_TRANSMIT_RETRY_SHIFT) | (type << TCPC_TRANSMIT_TYPE_SHIFT); + ret = regmap_write(tcpci->regmap, TCPC_TRANSMIT, reg); + if (ret < 0) + return ret; +@@ -506,12 +631,22 @@ static int tcpci_init(struct tcpc_dev *tcpc) + TCPC_ALERT_RX_HARD_RST | TCPC_ALERT_CC_STATUS; + if (tcpci->controls_vbus) + reg |= TCPC_ALERT_POWER_STATUS; ++ /* Enable VSAFE0V status interrupt when detecting VSAFE0V is supported */ ++ if (tcpci->data->vbus_vsafe0v) { ++ reg |= TCPC_ALERT_EXTENDED_STATUS; ++ ret = regmap_write(tcpci->regmap, TCPC_EXTENDED_STATUS_MASK, ++ TCPC_EXTENDED_STATUS_VSAFE0V); ++ if (ret < 0) ++ return ret; ++ } + return tcpci_write16(tcpci, TCPC_ALERT_MASK, reg); + } + + irqreturn_t tcpci_irq(struct tcpci *tcpci) + { + u16 status; ++ int ret; ++ unsigned int raw; + + tcpci_read16(tcpci, TCPC_ALERT, &status); + +@@ -527,15 +662,12 @@ irqreturn_t tcpci_irq(struct tcpci *tcpci) + tcpm_cc_change(tcpci->port); + + if (status & TCPC_ALERT_POWER_STATUS) { +- unsigned int reg; +- +- regmap_read(tcpci->regmap, TCPC_POWER_STATUS_MASK, ®); +- ++ regmap_read(tcpci->regmap, TCPC_POWER_STATUS_MASK, &raw); + /* + * If power status mask has been reset, then the TCPC + * has reset. + */ +- if (reg == 0xff) ++ if (raw == 0xff) + tcpm_tcpc_reset(tcpci->port); + else + tcpm_vbus_change(tcpci->port); +@@ -574,6 +706,12 @@ irqreturn_t tcpci_irq(struct tcpci *tcpci) + tcpm_pd_receive(tcpci->port, &msg); + } + ++ if (status & TCPC_ALERT_EXTENDED_STATUS) { ++ ret = regmap_read(tcpci->regmap, TCPC_EXTENDED_STATUS, &raw); ++ if (!ret && (raw & TCPC_EXTENDED_STATUS_VSAFE0V)) ++ tcpm_vbus_change(tcpci->port); ++ } ++ + if (status & TCPC_ALERT_RX_HARD_RST) + tcpm_pd_hard_reset(tcpci->port); + +@@ -633,6 +771,7 @@ struct tcpci *tcpci_register_port(struct device *dev, struct tcpci_data *data) + tcpci->tcpc.get_vbus = tcpci_get_vbus; + tcpci->tcpc.set_vbus = tcpci_set_vbus; + tcpci->tcpc.set_cc = tcpci_set_cc; ++ tcpci->tcpc.apply_rc = tcpci_apply_rc; + tcpci->tcpc.get_cc = tcpci_get_cc; + tcpci->tcpc.set_polarity = tcpci_set_polarity; + tcpci->tcpc.set_vconn = tcpci_set_vconn; +@@ -643,6 +782,19 @@ struct tcpci *tcpci_register_port(struct device *dev, struct tcpci_data *data) + tcpci->tcpc.pd_transmit = tcpci_pd_transmit; + tcpci->tcpc.set_bist_data = tcpci_set_bist_data; + tcpci->tcpc.enable_frs = tcpci_enable_frs; ++ tcpci->tcpc.frs_sourcing_vbus = tcpci_frs_sourcing_vbus; ++ tcpci->tcpc.set_partner_usb_comm_capable = tcpci_set_partner_usb_comm_capable; ++ ++ if (tcpci->data->auto_discharge_disconnect) { ++ tcpci->tcpc.enable_auto_vbus_discharge = tcpci_enable_auto_vbus_discharge; ++ tcpci->tcpc.set_auto_vbus_discharge_threshold = ++ tcpci_set_auto_vbus_discharge_threshold; ++ regmap_update_bits(tcpci->regmap, TCPC_POWER_CTRL, TCPC_POWER_CTRL_BLEED_DISCHARGE, ++ TCPC_POWER_CTRL_BLEED_DISCHARGE); ++ } ++ ++ if (tcpci->data->vbus_vsafe0v) ++ tcpci->tcpc.is_vbus_vsafe0v = tcpci_is_vbus_vsafe0v; + + err = tcpci_parse_config(tcpci); + if (err < 0) +diff --git a/drivers/usb/typec/tcpm/tcpci.h b/drivers/usb/typec/tcpm/tcpci.h +old mode 100644 +new mode 100755 +index 5ef07a56d..2be7a77d4 +--- a/drivers/usb/typec/tcpm/tcpci.h ++++ b/drivers/usb/typec/tcpm/tcpci.h +@@ -8,6 +8,8 @@ + #ifndef __LINUX_USB_TCPCI_H + #define __LINUX_USB_TCPCI_H + ++#include ++ + #define TCPC_VENDOR_ID 0x0 + #define TCPC_PRODUCT_ID 0x2 + #define TCPC_BCD_DEV 0x4 +@@ -45,7 +47,13 @@ + + #define TCPC_TCPC_CTRL 0x19 + #define TCPC_TCPC_CTRL_ORIENTATION BIT(0) ++#define PLUG_ORNT_CC1 0 ++#define PLUG_ORNT_CC2 1 + #define TCPC_TCPC_CTRL_BIST_TM BIT(1) ++#define TCPC_TCPC_CTRL_EN_LK4CONN_ALRT BIT(6) ++ ++#define TCPC_EXTENDED_STATUS 0x20 ++#define TCPC_EXTENDED_STATUS_VSAFE0V BIT(0) + + #define TCPC_ROLE_CTRL 0x1a + #define TCPC_ROLE_CTRL_DRP BIT(6) +@@ -67,21 +75,30 @@ + + #define TCPC_POWER_CTRL 0x1c + #define TCPC_POWER_CTRL_VCONN_ENABLE BIT(0) ++#define TCPC_POWER_CTRL_BLEED_DISCHARGE BIT(3) ++#define TCPC_POWER_CTRL_AUTO_DISCHARGE BIT(4) ++#define TCPC_DIS_VOLT_ALRM BIT(5) ++#define TCPC_POWER_CTRL_VBUS_VOLT_MON BIT(6) + #define TCPC_FAST_ROLE_SWAP_EN BIT(7) + + #define TCPC_CC_STATUS 0x1d + #define TCPC_CC_STATUS_TOGGLING BIT(5) + #define TCPC_CC_STATUS_TERM BIT(4) ++#define TCPC_CC_STATUS_TERM_RP 0 ++#define TCPC_CC_STATUS_TERM_RD 1 ++#define TCPC_CC_STATE_SRC_OPEN 0 + #define TCPC_CC_STATUS_CC2_SHIFT 2 + #define TCPC_CC_STATUS_CC2_MASK 0x3 + #define TCPC_CC_STATUS_CC1_SHIFT 0 + #define TCPC_CC_STATUS_CC1_MASK 0x3 + + #define TCPC_POWER_STATUS 0x1e ++#define TCPC_POWER_STATUS_DBG_ACC_CON BIT(7) + #define TCPC_POWER_STATUS_UNINIT BIT(6) + #define TCPC_POWER_STATUS_SOURCING_VBUS BIT(4) + #define TCPC_POWER_STATUS_VBUS_DET BIT(3) + #define TCPC_POWER_STATUS_VBUS_PRES BIT(2) ++#define TCPC_POWER_STATUS_SINKING_VBUS BIT(0) + + #define TCPC_FAULT_STATUS 0x1f + +@@ -114,6 +131,10 @@ + #define TCPC_RX_DETECT 0x2f + #define TCPC_RX_DETECT_HARD_RESET BIT(5) + #define TCPC_RX_DETECT_SOP BIT(0) ++#define TCPC_RX_DETECT_SOP1 BIT(1) ++#define TCPC_RX_DETECT_SOP2 BIT(2) ++#define TCPC_RX_DETECT_DBG1 BIT(3) ++#define TCPC_RX_DETECT_DBG2 BIT(4) + + #define TCPC_RX_BYTE_CNT 0x30 + #define TCPC_RX_BUF_FRAME_TYPE 0x31 +@@ -132,7 +153,11 @@ + #define TCPC_TX_DATA 0x54 /* through 0x6f */ + + #define TCPC_VBUS_VOLTAGE 0x70 ++#define TCPC_VBUS_VOLTAGE_MASK 0x3ff ++#define TCPC_VBUS_VOLTAGE_LSB_MV 25 + #define TCPC_VBUS_SINK_DISCONNECT_THRESH 0x72 ++#define TCPC_VBUS_SINK_DISCONNECT_THRESH_LSB_MV 25 ++#define TCPC_VBUS_SINK_DISCONNECT_THRESH_MAX 0x3ff + #define TCPC_VBUS_STOP_DISCHARGE_THRESH 0x74 + #define TCPC_VBUS_VOLTAGE_ALARM_HI_CFG 0x76 + #define TCPC_VBUS_VOLTAGE_ALARM_LO_CFG 0x78 +@@ -140,20 +165,38 @@ + /* I2C_WRITE_BYTE_COUNT + 1 when TX_BUF_BYTE_x is only accessible I2C_WRITE_BYTE_COUNT */ + #define TCPC_TRANSMIT_BUFFER_MAX_LEN 31 + ++struct tcpci; ++ + /* +- * @TX_BUF_BYTE_x_hidden ++ * @TX_BUF_BYTE_x_hidden: + * optional; Set when TX_BUF_BYTE_x can only be accessed through I2C_WRITE_BYTE_COUNT. ++ * @frs_sourcing_vbus: ++ * Optional; Callback to perform chip specific operations when FRS ++ * is sourcing vbus. ++ * @auto_discharge_disconnect: ++ * Optional; Enables TCPC to autonously discharge vbus on disconnect. ++ * @vbus_vsafe0v: ++ * optional; Set when TCPC can detect whether vbus is at VSAFE0V. ++ * @set_partner_usb_comm_capable: ++ * Optional; The USB Communications Capable bit indicates if port ++ * partner is capable of communication over the USB data lines ++ * (e.g. D+/- or SS Tx/Rx). Called to notify the status of the bit. + */ +-struct tcpci; + struct tcpci_data { + struct regmap *regmap; + unsigned char TX_BUF_BYTE_x_hidden:1; ++ unsigned char auto_discharge_disconnect:1; ++ unsigned char vbus_vsafe0v:1; ++ + int (*init)(struct tcpci *tcpci, struct tcpci_data *data); + int (*set_vconn)(struct tcpci *tcpci, struct tcpci_data *data, + bool enable); + int (*start_drp_toggling)(struct tcpci *tcpci, struct tcpci_data *data, + enum typec_cc_status cc); + int (*set_vbus)(struct tcpci *tcpci, struct tcpci_data *data, bool source, bool sink); ++ void (*frs_sourcing_vbus)(struct tcpci *tcpci, struct tcpci_data *data); ++ void (*set_partner_usb_comm_capable)(struct tcpci *tcpci, struct tcpci_data *data, ++ bool capable); + }; + + struct tcpci *tcpci_register_port(struct device *dev, struct tcpci_data *data); +diff --git a/drivers/usb/typec/tcpm/tcpci_husb311.c b/drivers/usb/typec/tcpm/tcpci_husb311.c +new file mode 100755 +index 000000000..72a524b5c +--- /dev/null ++++ b/drivers/usb/typec/tcpm/tcpci_husb311.c +@@ -0,0 +1,298 @@ ++// SPDX-License-Identifier: GPL-2.0 ++/* ++ * Copyright (C) 2021 Rockchip Co.,Ltd. ++ * Author: Wang Jie ++ * ++ * Hynetek Husb311 Type-C Chip Driver ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include "tcpci.h" ++ ++#define HUSB311_VID 0x2E99 ++#define HUSB311_PID 0x0311 ++#define HUSB311_TCPC_POWER 0x90 ++#define HUSB311_TCPC_I2C_RESET 0x9E ++#define HUSB311_TCPC_SOFTRESET 0xA0 ++#define HUSB311_TCPC_FILTER 0xA1 ++#define HUSB311_TCPC_TDRP 0xA2 ++#define HUSB311_TCPC_DCSRCDRP 0xA3 ++ ++struct husb311_chip { ++ struct tcpci_data data; ++ struct tcpci *tcpci; ++ struct device *dev; ++ struct regulator *vbus; ++ bool vbus_on; ++}; ++ ++static int husb311_read8(struct husb311_chip *chip, unsigned int reg, u8 *val) ++{ ++ return regmap_raw_read(chip->data.regmap, reg, val, sizeof(u8)); ++} ++ ++static int husb311_write8(struct husb311_chip *chip, unsigned int reg, u8 val) ++{ ++ return regmap_raw_write(chip->data.regmap, reg, &val, sizeof(u8)); ++} ++ ++static int husb311_write16(struct husb311_chip *chip, unsigned int reg, u16 val) ++{ ++ return regmap_raw_write(chip->data.regmap, reg, &val, sizeof(u16)); ++} ++ ++static const struct regmap_config husb311_regmap_config = { ++ .reg_bits = 8, ++ .val_bits = 8, ++ .max_register = 0xFF, /* 0x80 .. 0xFF are vendor defined */ ++}; ++ ++static struct husb311_chip *tdata_to_husb311(struct tcpci_data *tdata) ++{ ++ return container_of(tdata, struct husb311_chip, data); ++} ++ ++static int husb311_sw_reset(struct husb311_chip *chip) ++{ ++ /* soft reset */ ++ return husb311_write8(chip, HUSB311_TCPC_SOFTRESET, 0x01); ++} ++ ++static int husb311_init(struct tcpci *tcpci, struct tcpci_data *tdata) ++{ ++ int ret; ++ struct husb311_chip *chip = tdata_to_husb311(tdata); ++ ++ /* I2C reset : (val + 1) * 12.5ms */ ++ ret = husb311_write8(chip, HUSB311_TCPC_I2C_RESET, 0x8F); ++ /* tTCPCfilter : (26.7 * val) us */ ++ ret |= husb311_write8(chip, HUSB311_TCPC_FILTER, 0x0F); ++ /* tDRP : (51.2 + 6.4 * val) ms */ ++ ret |= husb311_write8(chip, HUSB311_TCPC_TDRP, 0x04); ++ /* dcSRC.DRP : 33% */ ++ ret |= husb311_write16(chip, HUSB311_TCPC_DCSRCDRP, 330); ++ ++ if (ret < 0) ++ dev_err(chip->dev, "fail to init registers(%d)\n", ret); ++ ++ return ret; ++} ++ ++static int husb311_set_vbus(struct tcpci *tcpci, struct tcpci_data *tdata, ++ bool on, bool charge) ++{ ++ struct husb311_chip *chip = tdata_to_husb311(tdata); ++ int ret = 0; ++ ++ if (chip->vbus_on == on) { ++ dev_dbg(chip->dev, "vbus is already %s", on ? "On" : "Off"); ++ goto done; ++ } ++ ++ if (on) ++ ret = regulator_enable(chip->vbus); ++ else ++ ret = regulator_disable(chip->vbus); ++ if (ret < 0) { ++ dev_err(chip->dev, "cannot %s vbus regulator, ret=%d", ++ on ? "enable" : "disable", ret); ++ goto done; ++ } ++ ++ chip->vbus_on = on; ++ ++done: ++ return ret; ++} ++ ++static irqreturn_t husb311_irq(int irq, void *dev_id) ++{ ++ struct husb311_chip *chip = dev_id; ++ ++ return tcpci_irq(chip->tcpci); ++} ++ ++static int husb311_check_revision(struct i2c_client *i2c) ++{ ++ int ret; ++ ++ ret = i2c_smbus_read_word_data(i2c, TCPC_VENDOR_ID); ++ if (ret < 0) { ++ dev_err(&i2c->dev, "fail to read Vendor id(%d)\n", ret); ++ return ret; ++ } ++ ++ if (ret != HUSB311_VID) { ++ dev_err(&i2c->dev, "vid is not correct, 0x%04x\n", ret); ++ return -ENODEV; ++ } ++ ++ ret = i2c_smbus_read_word_data(i2c, TCPC_PRODUCT_ID); ++ if (ret < 0) { ++ dev_err(&i2c->dev, "fail to read Product id(%d)\n", ret); ++ return ret; ++ } ++ ++ if (ret != HUSB311_PID) { ++ dev_err(&i2c->dev, "pid is not correct, 0x%04x\n", ret); ++ return -ENODEV; ++ } ++ ++ return 0; ++} ++ ++static int husb311_probe(struct i2c_client *client, ++ const struct i2c_device_id *i2c_id) ++{ ++ int ret; ++ struct husb311_chip *chip; ++ ++ ret = husb311_check_revision(client); ++ if (ret < 0) { ++ dev_err(&client->dev, "check vid/pid fail(%d)\n", ret); ++ return ret; ++ } ++ ++ chip = devm_kzalloc(&client->dev, sizeof(*chip), GFP_KERNEL); ++ if (!chip) ++ return -ENOMEM; ++ ++ chip->data.regmap = devm_regmap_init_i2c(client, ++ &husb311_regmap_config); ++ if (IS_ERR(chip->data.regmap)) ++ return PTR_ERR(chip->data.regmap); ++ ++ chip->dev = &client->dev; ++ i2c_set_clientdata(client, chip); ++ ++ chip->vbus = devm_regulator_get_optional(chip->dev, "vbus"); ++ if (IS_ERR(chip->vbus)) { ++ ret = PTR_ERR(chip->vbus); ++ chip->vbus = NULL; ++ if (ret != -ENODEV) ++ return ret; ++ } ++ ++ ret = husb311_sw_reset(chip); ++ if (ret < 0) { ++ dev_err(chip->dev, "fail to soft reset, ret = %d\n", ret); ++ return ret; ++ } ++ ++ if (chip->vbus) ++ chip->data.set_vbus = husb311_set_vbus; ++ chip->data.init = husb311_init; ++ chip->tcpci = tcpci_register_port(chip->dev, &chip->data); ++ if (IS_ERR(chip->tcpci)) ++ return PTR_ERR(chip->tcpci); ++ ++ ret = devm_request_threaded_irq(chip->dev, client->irq, NULL, ++ husb311_irq, ++ IRQF_ONESHOT | IRQF_TRIGGER_LOW, ++ client->name, chip); ++ if (ret < 0) { ++ tcpci_unregister_port(chip->tcpci); ++ return ret; ++ } ++ ++ enable_irq_wake(client->irq); ++ ++ return 0; ++} ++ ++static int husb311_remove(struct i2c_client *client) ++{ ++ struct husb311_chip *chip = i2c_get_clientdata(client); ++ ++ tcpci_unregister_port(chip->tcpci); ++ return 0; ++} ++ ++static int husb311_pm_suspend(struct device *dev) ++{ ++ struct husb311_chip *chip = dev->driver_data; ++ int ret = 0; ++ u8 pwr; ++ ++ /* ++ * Disable 12M oscillator to save power consumption, and it will be ++ * enabled automatically when INT occur after system resume. ++ */ ++ ret = husb311_read8(chip, HUSB311_TCPC_POWER, &pwr); ++ if (ret < 0) ++ return ret; ++ ++ pwr &= ~BIT(0); ++ ret = husb311_write8(chip, HUSB311_TCPC_POWER, pwr); ++ if (ret < 0) ++ return ret; ++ ++ return 0; ++} ++ ++static int husb311_pm_resume(struct device *dev) ++{ ++ struct husb311_chip *chip = dev->driver_data; ++ int ret = 0; ++ u8 pwr; ++ ++ /* ++ * When the power of husb311 is lost or i2c read failed in PM S/R ++ * process, we must reset the tcpm port first to ensure the devices ++ * can attach again. ++ */ ++ ret = husb311_read8(chip, HUSB311_TCPC_POWER, &pwr); ++ if (pwr & BIT(0) || ret < 0) { ++ ret = husb311_sw_reset(chip); ++ if (ret < 0) { ++ dev_err(chip->dev, "fail to soft reset, ret = %d\n", ret); ++ return ret; ++ } ++ ++ tcpm_tcpc_reset(tcpci_get_tcpm_port(chip->tcpci)); ++ } ++ ++ return 0; ++} ++ ++static const struct i2c_device_id husb311_id[] = { ++ { "husb311", 0 }, ++ { } ++}; ++MODULE_DEVICE_TABLE(i2c, husb311_id); ++ ++#ifdef CONFIG_OF ++static const struct of_device_id husb311_of_match[] = { ++ { .compatible = "hynetek,husb311" }, ++ {}, ++}; ++MODULE_DEVICE_TABLE(of, husb311_of_match); ++#endif ++ ++static const struct dev_pm_ops husb311_pm_ops = { ++ .suspend = husb311_pm_suspend, ++ .resume = husb311_pm_resume, ++}; ++ ++static struct i2c_driver husb311_i2c_driver = { ++ .driver = { ++ .name = "husb311", ++ .pm = &husb311_pm_ops, ++ .of_match_table = of_match_ptr(husb311_of_match), ++ }, ++ .probe = husb311_probe, ++ .remove = husb311_remove, ++ .id_table = husb311_id, ++}; ++module_i2c_driver(husb311_i2c_driver); ++ ++MODULE_AUTHOR("Wang Jie "); ++MODULE_DESCRIPTION("Husb311 USB Type-C Port Controller Interface Driver"); ++MODULE_LICENSE("GPL v2"); +diff --git a/drivers/usb/typec/tcpm/tcpci_maxim.c b/drivers/usb/typec/tcpm/tcpci_maxim.c +old mode 100644 +new mode 100755 +index 723d7dd38..7b39cbd09 +--- a/drivers/usb/typec/tcpm/tcpci_maxim.c ++++ b/drivers/usb/typec/tcpm/tcpci_maxim.c +@@ -22,6 +22,9 @@ + #define PD_ACTIVITY_TIMEOUT_MS 10000 + + #define TCPC_VENDOR_ALERT 0x80 ++#define TCPC_VENDOR_USBSW_CTRL 0x93 ++#define TCPC_VENDOR_USBSW_CTRL_ENABLE_USB_DATA 0x9 ++#define TCPC_VENDOR_USBSW_CTRL_DISABLE_USB_DATA 0 + + #define TCPC_RECEIVE_BUFFER_COUNT_OFFSET 0 + #define TCPC_RECEIVE_BUFFER_FRAME_TYPE_OFFSET 1 +@@ -112,11 +115,18 @@ static void max_tcpci_init_regs(struct max_tcpci_chip *chip) + return; + } + ++ /* Enable VSAFE0V detection */ ++ ret = max_tcpci_write8(chip, TCPC_EXTENDED_STATUS_MASK, TCPC_EXTENDED_STATUS_VSAFE0V); ++ if (ret < 0) { ++ dev_err(chip->dev, "Unable to unmask TCPC_EXTENDED_STATUS_VSAFE0V ret:%d\n", ret); ++ return; ++ } ++ + alert_mask = TCPC_ALERT_TX_SUCCESS | TCPC_ALERT_TX_DISCARDED | TCPC_ALERT_TX_FAILED | + TCPC_ALERT_RX_HARD_RST | TCPC_ALERT_RX_STATUS | TCPC_ALERT_CC_STATUS | + TCPC_ALERT_VBUS_DISCNCT | TCPC_ALERT_RX_BUF_OVF | TCPC_ALERT_POWER_STATUS | + /* Enable Extended alert for detecting Fast Role Swap Signal */ +- TCPC_ALERT_EXTND; ++ TCPC_ALERT_EXTND | TCPC_ALERT_EXTENDED_STATUS; + + ret = max_tcpci_write16(chip, TCPC_ALERT_MASK, alert_mask); + if (ret < 0) { +@@ -238,23 +248,22 @@ static void process_power_status(struct max_tcpci_chip *chip) + if (ret < 0) + return; + +- if (pwr_status == 0xff) { ++ if (pwr_status == 0xff) + max_tcpci_init_regs(chip); +- } else if (pwr_status & TCPC_POWER_STATUS_SOURCING_VBUS) { ++ else if (pwr_status & TCPC_POWER_STATUS_SOURCING_VBUS) + tcpm_sourcing_vbus(chip->port); +- /* +- * Alawys re-enable boost here. +- * In normal case, when say an headset is attached, TCPM would +- * have instructed to TCPC to enable boost, so the call is a +- * no-op. +- * But for Fast Role Swap case, Boost turns on autonomously without +- * AP intervention, but, needs AP to enable source mode explicitly +- * for AP to regain control. +- */ +- max_tcpci_set_vbus(chip->tcpci, &chip->data, true, false); +- } else { ++ else + tcpm_vbus_change(chip->port); +- } ++} ++ ++static void max_tcpci_frs_sourcing_vbus(struct tcpci *tcpci, struct tcpci_data *tdata) ++{ ++ /* ++ * For Fast Role Swap case, Boost turns on autonomously without ++ * AP intervention, but, needs AP to enable source mode explicitly ++ * for AP to regain control. ++ */ ++ max_tcpci_set_vbus(tcpci, tdata, true, false); + } + + static void process_tx(struct max_tcpci_chip *chip, u16 status) +@@ -271,6 +280,21 @@ static void process_tx(struct max_tcpci_chip *chip, u16 status) + max_tcpci_init_regs(chip); + } + ++/* Enable USB switches when partner is USB communications capable */ ++static void max_tcpci_set_partner_usb_comm_capable(struct tcpci *tcpci, struct tcpci_data *data, ++ bool capable) ++{ ++ struct max_tcpci_chip *chip = tdata_to_max_tcpci(data); ++ int ret; ++ ++ ret = max_tcpci_write8(chip, TCPC_VENDOR_USBSW_CTRL, capable ? ++ TCPC_VENDOR_USBSW_CTRL_ENABLE_USB_DATA : ++ TCPC_VENDOR_USBSW_CTRL_DISABLE_USB_DATA); ++ ++ if (ret < 0) ++ dev_err(chip->dev, "Failed to enable USB switches"); ++} ++ + static irqreturn_t _max_tcpci_irq(struct max_tcpci_chip *chip, u16 status) + { + u16 mask; +@@ -316,6 +340,12 @@ static irqreturn_t _max_tcpci_irq(struct max_tcpci_chip *chip, u16 status) + } + } + ++ if (status & TCPC_ALERT_EXTENDED_STATUS) { ++ ret = max_tcpci_read8(chip, TCPC_EXTENDED_STATUS, (u8 *)®_status); ++ if (ret >= 0 && (reg_status & TCPC_EXTENDED_STATUS_VSAFE0V)) ++ tcpm_vbus_change(chip->port); ++ } ++ + if (status & TCPC_ALERT_RX_STATUS) + process_rx(chip, status); + +@@ -344,7 +374,7 @@ static irqreturn_t max_tcpci_irq(int irq, void *dev_id) + { + struct max_tcpci_chip *chip = dev_id; + u16 status; +- irqreturn_t irq_return; ++ irqreturn_t irq_return = IRQ_HANDLED; + int ret; + + if (!chip->port) +@@ -441,10 +471,14 @@ static int max_tcpci_probe(struct i2c_client *client, const struct i2c_device_id + chip->data.start_drp_toggling = max_tcpci_start_toggling; + chip->data.TX_BUF_BYTE_x_hidden = true; + chip->data.init = tcpci_init; ++ chip->data.frs_sourcing_vbus = max_tcpci_frs_sourcing_vbus; ++ chip->data.auto_discharge_disconnect = true; ++ chip->data.vbus_vsafe0v = true; ++ chip->data.set_partner_usb_comm_capable = max_tcpci_set_partner_usb_comm_capable; + + max_tcpci_init_regs(chip); + chip->tcpci = tcpci_register_port(chip->dev, &chip->data); +- if (IS_ERR_OR_NULL(chip->tcpci)) { ++ if (IS_ERR(chip->tcpci)) { + dev_err(&client->dev, "TCPCI port registration failed"); + ret = PTR_ERR(chip->tcpci); + return PTR_ERR(chip->tcpci); +@@ -481,7 +515,7 @@ MODULE_DEVICE_TABLE(i2c, max_tcpci_id); + + #ifdef CONFIG_OF + static const struct of_device_id max_tcpci_of_match[] = { +- { .compatible = "maxim,tcpc", }, ++ { .compatible = "maxim,max33359", }, + {}, + }; + MODULE_DEVICE_TABLE(of, max_tcpci_of_match); +diff --git a/drivers/usb/typec/tcpm/tcpm.c b/drivers/usb/typec/tcpm/tcpm.c +old mode 100644 +new mode 100755 +index 291d02042..41fcd89a7 +--- a/drivers/usb/typec/tcpm/tcpm.c ++++ b/drivers/usb/typec/tcpm/tcpm.c +@@ -76,6 +76,8 @@ + S(SNK_HARD_RESET_SINK_ON), \ + \ + S(SOFT_RESET), \ ++ S(SRC_SOFT_RESET_WAIT_SNK_TX), \ ++ S(SNK_SOFT_RESET), \ + S(SOFT_RESET_SEND), \ + \ + S(DR_SWAP_ACCEPT), \ +@@ -139,7 +141,46 @@ + \ + S(ERROR_RECOVERY), \ + S(PORT_RESET), \ +- S(PORT_RESET_WAIT_OFF) ++ S(PORT_RESET_WAIT_OFF), \ ++ \ ++ S(AMS_START), \ ++ S(CHUNK_NOT_SUPP) ++ ++#define FOREACH_AMS(S) \ ++ S(NONE_AMS), \ ++ S(POWER_NEGOTIATION), \ ++ S(GOTOMIN), \ ++ S(SOFT_RESET_AMS), \ ++ S(HARD_RESET), \ ++ S(CABLE_RESET), \ ++ S(GET_SOURCE_CAPABILITIES), \ ++ S(GET_SINK_CAPABILITIES), \ ++ S(POWER_ROLE_SWAP), \ ++ S(FAST_ROLE_SWAP), \ ++ S(DATA_ROLE_SWAP), \ ++ S(VCONN_SWAP), \ ++ S(SOURCE_ALERT), \ ++ S(GETTING_SOURCE_EXTENDED_CAPABILITIES),\ ++ S(GETTING_SOURCE_SINK_STATUS), \ ++ S(GETTING_BATTERY_CAPABILITIES), \ ++ S(GETTING_BATTERY_STATUS), \ ++ S(GETTING_MANUFACTURER_INFORMATION), \ ++ S(SECURITY), \ ++ S(FIRMWARE_UPDATE), \ ++ S(DISCOVER_IDENTITY), \ ++ S(SOURCE_STARTUP_CABLE_PLUG_DISCOVER_IDENTITY), \ ++ S(DISCOVER_SVIDS), \ ++ S(DISCOVER_MODES), \ ++ S(DFP_TO_UFP_ENTER_MODE), \ ++ S(DFP_TO_UFP_EXIT_MODE), \ ++ S(DFP_TO_CABLE_PLUG_ENTER_MODE), \ ++ S(DFP_TO_CABLE_PLUG_EXIT_MODE), \ ++ S(ATTENTION), \ ++ S(BIST), \ ++ S(UNSTRUCTURED_VDMS), \ ++ S(STRUCTURED_VDMS), \ ++ S(COUNTRY_INFO), \ ++ S(COUNTRY_CODES) + + #define GENERATE_ENUM(e) e + #define GENERATE_STRING(s) #s +@@ -152,6 +193,14 @@ static const char * const tcpm_states[] = { + FOREACH_STATE(GENERATE_STRING) + }; + ++enum tcpm_ams { ++ FOREACH_AMS(GENERATE_ENUM) ++}; ++ ++static const char * const tcpm_ams_str[] = { ++ FOREACH_AMS(GENERATE_STRING) ++}; ++ + enum vdm_states { + VDM_STATE_ERR_BUSY = -3, + VDM_STATE_ERR_SEND = -2, +@@ -161,6 +210,7 @@ enum vdm_states { + VDM_STATE_READY = 1, + VDM_STATE_BUSY = 2, + VDM_STATE_WAIT_RSP_BUSY = 3, ++ VDM_STATE_SEND_MESSAGE = 4, + }; + + enum pd_msg_request { +@@ -209,6 +259,7 @@ enum frs_typec_current { + #define ALTMODE_DISCOVERY_MAX (SVID_DISCOVERY_MAX * MODE_DISCOVERY_MAX) + + #define GET_SINK_CAP_RETRY_MS 100 ++#define SEND_DISCOVER_RETRY_MS 100 + + struct pd_mode_data { + int svid_index; /* current SVID index */ +@@ -273,11 +324,24 @@ struct tcpm_port { + bool attached; + bool connected; + enum typec_port_type port_type; ++ ++ /* ++ * Set to true when vbus is greater than VSAFE5V min. ++ * Set to false when vbus falls below vSinkDisconnect max threshold. ++ */ + bool vbus_present; ++ ++ /* ++ * Set to true when vbus is less than VSAFE0V max. ++ * Set to false when vbus is greater than VSAFE0V max. ++ */ ++ bool vbus_vsafe0v; ++ + bool vbus_never_low; + bool vbus_source; + bool vbus_charge; + ++ /* Set to true when Discover_Identity Command is expected to be sent in Ready states. */ + bool send_discover; + bool op_vsafe5v; + +@@ -304,7 +368,11 @@ struct tcpm_port { + struct kthread_work vdm_state_machine; + struct hrtimer enable_frs_timer; + struct kthread_work enable_frs; ++ struct hrtimer send_discover_timer; ++ struct kthread_work send_discover_work; + bool state_machine_running; ++ /* Set to true when VDM State Machine has following actions. */ ++ bool vdm_sm_running; + + struct completion tx_complete; + enum tcpm_transmit_status tx_status; +@@ -335,6 +403,8 @@ struct tcpm_port { + unsigned int nr_src_pdo; + u32 snk_pdo[PDO_MAX_OBJECTS]; + unsigned int nr_snk_pdo; ++ u32 snk_vdo_v1[VDO_MAX_OBJECTS]; ++ unsigned int nr_snk_vdo_v1; + u32 snk_vdo[VDO_MAX_OBJECTS]; + unsigned int nr_snk_vdo; + +@@ -381,12 +451,30 @@ struct tcpm_port { + /* port belongs to a self powered device */ + bool self_powered; + +- /* FRS */ +- enum frs_typec_current frs_current; ++ /* Sink FRS */ ++ enum frs_typec_current new_source_frs_current; + + /* Sink caps have been queried */ + bool sink_cap_done; + ++ /* Port is still in tCCDebounce */ ++ bool debouncing; ++ ++ /* Collision Avoidance and Atomic Message Sequence */ ++ enum tcpm_state upcoming_state; ++ enum tcpm_ams ams; ++ enum tcpm_ams next_ams; ++ bool in_ams; ++ ++ /* Auto vbus discharge status */ ++ bool auto_vbus_discharge_enabled; ++ ++ /* ++ * When set, port requests PD_P_SNK_STDBY_MW upon entering SNK_DISCOVERY and ++ * the actual currrent limit after RX of PD_CTRL_PSRDY for PD link, ++ * SNK_READY for non-pd link. ++ */ ++ bool slow_charger_loop; + #ifdef CONFIG_DEBUG_FS + struct dentry *dentry; + struct mutex logbuffer_lock; /* log buffer access lock */ +@@ -402,6 +490,12 @@ struct pd_rx_event { + struct pd_message msg; + }; + ++static const char * const pd_rev[] = { ++ [PD_REV10] = "rev1", ++ [PD_REV20] = "rev2", ++ [PD_REV30] = "rev3", ++}; ++ + #define tcpm_cc_is_sink(cc) \ + ((cc) == TYPEC_CC_RP_DEF || (cc) == TYPEC_CC_RP_1_5 || \ + (cc) == TYPEC_CC_RP_3_0) +@@ -446,6 +540,13 @@ struct pd_rx_event { + ((port)->typec_caps.data == TYPEC_PORT_DFP ? \ + TYPEC_HOST : TYPEC_DEVICE) + ++#define tcpm_sink_tx_ok(port) \ ++ (tcpm_port_is_sink(port) && \ ++ ((port)->cc1 == TYPEC_CC_RP_3_0 || (port)->cc2 == TYPEC_CC_RP_3_0)) ++ ++#define tcpm_wait_for_discharge(port) \ ++ (((port)->auto_vbus_discharge_enabled && !(port)->vbus_vsafe0v) ? PD_T_SAFE_0V : 0) ++ + static enum tcpm_state tcpm_default_state(struct tcpm_port *port) + { + if (port->port_type == TYPEC_PORT_DRP) { +@@ -488,6 +589,7 @@ static void _tcpm_log(struct tcpm_port *port, const char *fmt, va_list args) + char tmpbuffer[LOG_BUFFER_ENTRY_SIZE]; + u64 ts_nsec = local_clock(); + unsigned long rem_nsec; ++ bool bypass_log = false; + + mutex_lock(&port->logbuffer_lock); + if (!port->logbuffer[port->logbuffer_head]) { +@@ -672,6 +774,91 @@ static void tcpm_debugfs_exit(const struct tcpm_port *port) { } + + #endif + ++static void tcpm_set_cc(struct tcpm_port *port, enum typec_cc_status cc) ++{ ++ tcpm_log(port, "cc:=%d", cc); ++ port->cc_req = cc; ++ port->tcpc->set_cc(port->tcpc, cc); ++} ++ ++static int tcpm_enable_auto_vbus_discharge(struct tcpm_port *port, bool enable) ++{ ++ int ret = 0; ++ ++ if (port->tcpc->enable_auto_vbus_discharge) { ++ ret = port->tcpc->enable_auto_vbus_discharge(port->tcpc, enable); ++ tcpm_log_force(port, "%s vbus discharge ret:%d", enable ? "enable" : "disable", ++ ret); ++ if (!ret) ++ port->auto_vbus_discharge_enabled = enable; ++ } ++ ++ return ret; ++} ++ ++static void tcpm_apply_rc(struct tcpm_port *port) ++{ ++ /* ++ * TCPCI: Move to APPLY_RC state to prevent disconnect during PR_SWAP ++ * when Vbus auto discharge on disconnect is enabled. ++ */ ++ if (port->tcpc->enable_auto_vbus_discharge && port->tcpc->apply_rc) { ++ tcpm_log(port, "Apply_RC"); ++ port->tcpc->apply_rc(port->tcpc, port->cc_req, port->polarity); ++ tcpm_enable_auto_vbus_discharge(port, false); ++ } ++} ++ ++/* ++ * Determine RP value to set based on maximum current supported ++ * by a port if configured as source. ++ * Returns CC value to report to link partner. ++ */ ++static enum typec_cc_status tcpm_rp_cc(struct tcpm_port *port) ++{ ++ const u32 *src_pdo = port->src_pdo; ++ int nr_pdo = port->nr_src_pdo; ++ int i; ++ ++ /* ++ * Search for first entry with matching voltage. ++ * It should report the maximum supported current. ++ */ ++ for (i = 0; i < nr_pdo; i++) { ++ const u32 pdo = src_pdo[i]; ++ ++ if (pdo_type(pdo) == PDO_TYPE_FIXED && ++ pdo_fixed_voltage(pdo) == 5000) { ++ unsigned int curr = pdo_max_current(pdo); ++ ++ if (curr >= 3000) ++ return TYPEC_CC_RP_3_0; ++ else if (curr >= 1500) ++ return TYPEC_CC_RP_1_5; ++ return TYPEC_CC_RP_DEF; ++ } ++ } ++ ++ return TYPEC_CC_RP_DEF; ++} ++ ++static void tcpm_ams_finish(struct tcpm_port *port) ++{ ++ tcpm_log(port, "AMS %s finished", tcpm_ams_str[port->ams]); ++ ++ if (port->pd_capable && port->pwr_role == TYPEC_SOURCE) { ++ if (port->negotiated_rev >= PD_REV30) ++ tcpm_set_cc(port, SINK_TX_OK); ++ else ++ tcpm_set_cc(port, SINK_TX_NG); ++ } else if (port->pwr_role == TYPEC_SOURCE) { ++ tcpm_set_cc(port, tcpm_rp_cc(port)); ++ } ++ ++ port->in_ams = false; ++ port->ams = NONE_AMS; ++} ++ + static int tcpm_pd_transmit(struct tcpm_port *port, + enum tcpm_transmit_type type, + const struct pd_message *msg) +@@ -685,7 +872,7 @@ static int tcpm_pd_transmit(struct tcpm_port *port, + tcpm_log(port, "PD TX, type: %#x", type); + + reinit_completion(&port->tx_complete); +- ret = port->tcpc->pd_transmit(port->tcpc, type, msg); ++ ret = port->tcpc->pd_transmit(port->tcpc, type, msg, port->negotiated_rev); + if (ret < 0) + return ret; + +@@ -699,13 +886,30 @@ static int tcpm_pd_transmit(struct tcpm_port *port, + switch (port->tx_status) { + case TCPC_TX_SUCCESS: + port->message_id = (port->message_id + 1) & PD_HEADER_ID_MASK; +- return 0; ++ /* ++ * USB PD rev 2.0, 8.3.2.2.1: ++ * USB PD rev 3.0, 8.3.2.1.3: ++ * "... Note that every AMS is Interruptible until the first ++ * Message in the sequence has been successfully sent (GoodCRC ++ * Message received)." ++ */ ++ if (port->ams != NONE_AMS) ++ port->in_ams = true; ++ break; + case TCPC_TX_DISCARDED: +- return -EAGAIN; ++ ret = -EAGAIN; ++ break; + case TCPC_TX_FAILED: + default: +- return -EIO; ++ ret = -EIO; ++ break; + } ++ ++ /* Some AMS don't expect responses. Finish them here. */ ++ if (port->ams == ATTENTION || port->ams == SOURCE_ALERT) ++ tcpm_ams_finish(port); ++ ++ return ret; + } + + void tcpm_pd_transmit_complete(struct tcpm_port *port, +@@ -770,6 +974,21 @@ static int tcpm_set_vconn(struct tcpm_port *port, bool enable) + return ret; + } + ++bool tcpm_is_debouncing(struct tcpm_port *port) ++{ ++ bool debounce; ++ ++ if (!port) ++ return false; ++ ++ mutex_lock(&port->lock); ++ debounce = port->debouncing; ++ mutex_unlock(&port->lock); ++ ++ return debounce; ++} ++EXPORT_SYMBOL_GPL(tcpm_is_debouncing); ++ + static u32 tcpm_get_current_limit(struct tcpm_port *port) + { + enum typec_cc_status cc; +@@ -811,39 +1030,6 @@ static int tcpm_set_current_limit(struct tcpm_port *port, u32 max_ma, u32 mv) + return ret; + } + +-/* +- * Determine RP value to set based on maximum current supported +- * by a port if configured as source. +- * Returns CC value to report to link partner. +- */ +-static enum typec_cc_status tcpm_rp_cc(struct tcpm_port *port) +-{ +- const u32 *src_pdo = port->src_pdo; +- int nr_pdo = port->nr_src_pdo; +- int i; +- +- /* +- * Search for first entry with matching voltage. +- * It should report the maximum supported current. +- */ +- for (i = 0; i < nr_pdo; i++) { +- const u32 pdo = src_pdo[i]; +- +- if (pdo_type(pdo) == PDO_TYPE_FIXED && +- pdo_fixed_voltage(pdo) == 5000) { +- unsigned int curr = pdo_max_current(pdo); +- +- if (curr >= 3000) +- return TYPEC_CC_RP_3_0; +- else if (curr >= 1500) +- return TYPEC_CC_RP_1_5; +- return TYPEC_CC_RP_DEF; +- } +- } +- +- return TYPEC_CC_RP_DEF; +-} +- + static int tcpm_set_attached_state(struct tcpm_port *port, bool attached) + { + return port->tcpc->set_roles(port->tcpc, attached, port->pwr_role, +@@ -918,13 +1104,47 @@ static int tcpm_set_pwr_role(struct tcpm_port *port, enum typec_role role) + return 0; + } + ++/* ++ * Transform the PDO to be compliant to PD rev2.0. ++ * Return 0 if the PDO type is not defined in PD rev2.0. ++ * Otherwise, return the converted PDO. ++ */ ++static u32 tcpm_forge_legacy_pdo(struct tcpm_port *port, u32 pdo, enum typec_role role) ++{ ++ switch (pdo_type(pdo)) { ++ case PDO_TYPE_FIXED: ++ if (role == TYPEC_SINK) ++ return pdo & ~PDO_FIXED_FRS_CURR_MASK; ++ else ++ return pdo & ~PDO_FIXED_UNCHUNK_EXT; ++ case PDO_TYPE_VAR: ++ case PDO_TYPE_BATT: ++ return pdo; ++ case PDO_TYPE_APDO: ++ default: ++ return 0; ++ } ++} ++ + static int tcpm_pd_send_source_caps(struct tcpm_port *port) + { + struct pd_message msg; +- int i; ++ u32 pdo; ++ unsigned int i, nr_pdo = 0; + + memset(&msg, 0, sizeof(msg)); +- if (!port->nr_src_pdo) { ++ ++ for (i = 0; i < port->nr_src_pdo; i++) { ++ if (port->negotiated_rev >= PD_REV30) { ++ msg.payload[nr_pdo++] = cpu_to_le32(port->src_pdo[i]); ++ } else { ++ pdo = tcpm_forge_legacy_pdo(port, port->src_pdo[i], TYPEC_SOURCE); ++ if (pdo) ++ msg.payload[nr_pdo++] = cpu_to_le32(pdo); ++ } ++ } ++ ++ if (!nr_pdo) { + /* No source capabilities defined, sink only */ + msg.header = PD_HEADER_LE(PD_CTRL_REJECT, + port->pwr_role, +@@ -937,10 +1157,8 @@ static int tcpm_pd_send_source_caps(struct tcpm_port *port) + port->data_role, + port->negotiated_rev, + port->message_id, +- port->nr_src_pdo); ++ nr_pdo); + } +- for (i = 0; i < port->nr_src_pdo; i++) +- msg.payload[i] = cpu_to_le32(port->src_pdo[i]); + + return tcpm_pd_transmit(port, TCPC_TX_SOP, &msg); + } +@@ -948,10 +1166,22 @@ static int tcpm_pd_send_source_caps(struct tcpm_port *port) + static int tcpm_pd_send_sink_caps(struct tcpm_port *port) + { + struct pd_message msg; +- int i; ++ u32 pdo; ++ unsigned int i, nr_pdo = 0; + + memset(&msg, 0, sizeof(msg)); +- if (!port->nr_snk_pdo) { ++ ++ for (i = 0; i < port->nr_snk_pdo; i++) { ++ if (port->negotiated_rev >= PD_REV30) { ++ msg.payload[nr_pdo++] = cpu_to_le32(port->snk_pdo[i]); ++ } else { ++ pdo = tcpm_forge_legacy_pdo(port, port->snk_pdo[i], TYPEC_SINK); ++ if (pdo) ++ msg.payload[nr_pdo++] = cpu_to_le32(pdo); ++ } ++ } ++ ++ if (!nr_pdo) { + /* No sink capabilities defined, source only */ + msg.header = PD_HEADER_LE(PD_CTRL_REJECT, + port->pwr_role, +@@ -964,10 +1194,8 @@ static int tcpm_pd_send_sink_caps(struct tcpm_port *port) + port->data_role, + port->negotiated_rev, + port->message_id, +- port->nr_snk_pdo); ++ nr_pdo); + } +- for (i = 0; i < port->nr_snk_pdo; i++) +- msg.payload[i] = cpu_to_le32(port->snk_pdo[i]); + + return tcpm_pd_transmit(port, TCPC_TX_SOP, &msg); + } +@@ -1003,20 +1231,31 @@ static void mod_enable_frs_delayed_work(struct tcpm_port *port, unsigned int del + } + } + ++static void mod_send_discover_delayed_work(struct tcpm_port *port, unsigned int delay_ms) ++{ ++ if (delay_ms) { ++ hrtimer_start(&port->send_discover_timer, ms_to_ktime(delay_ms), HRTIMER_MODE_REL); ++ } else { ++ hrtimer_cancel(&port->send_discover_timer); ++ kthread_queue_work(port->wq, &port->send_discover_work); ++ } ++} ++ + static void tcpm_set_state(struct tcpm_port *port, enum tcpm_state state, + unsigned int delay_ms) + { + if (delay_ms) { +- tcpm_log(port, "pending state change %s -> %s @ %u ms", +- tcpm_states[port->state], tcpm_states[state], +- delay_ms); ++ tcpm_log(port, "pending state change %s -> %s @ %u ms [%s %s]", ++ tcpm_states[port->state], tcpm_states[state], delay_ms, ++ pd_rev[port->negotiated_rev], tcpm_ams_str[port->ams]); + port->delayed_state = state; + mod_tcpm_delayed_work(port, delay_ms); + port->delayed_runtime = ktime_add(ktime_get(), ms_to_ktime(delay_ms)); + port->delay_ms = delay_ms; + } else { +- tcpm_log(port, "state change %s -> %s", +- tcpm_states[port->state], tcpm_states[state]); ++ tcpm_log(port, "state change %s -> %s [%s %s]", ++ tcpm_states[port->state], tcpm_states[state], ++ pd_rev[port->negotiated_rev], tcpm_ams_str[port->ams]); + port->delayed_state = INVALID_STATE; + port->prev_state = port->state; + port->state = state; +@@ -1038,10 +1277,11 @@ static void tcpm_set_state_cond(struct tcpm_port *port, enum tcpm_state state, + tcpm_set_state(port, state, delay_ms); + else + tcpm_log(port, +- "skipped %sstate change %s -> %s [%u ms], context state %s", ++ "skipped %sstate change %s -> %s [%u ms], context state %s [%s %s]", + delay_ms ? "delayed " : "", + tcpm_states[port->state], tcpm_states[state], +- delay_ms, tcpm_states[port->enter_state]); ++ delay_ms, tcpm_states[port->enter_state], ++ pd_rev[port->negotiated_rev], tcpm_ams_str[port->ams]); + } + + static void tcpm_queue_message(struct tcpm_port *port, +@@ -1051,6 +1291,149 @@ static void tcpm_queue_message(struct tcpm_port *port, + mod_tcpm_delayed_work(port, 0); + } + ++static bool tcpm_vdm_ams(struct tcpm_port *port) ++{ ++ switch (port->ams) { ++ case DISCOVER_IDENTITY: ++ case SOURCE_STARTUP_CABLE_PLUG_DISCOVER_IDENTITY: ++ case DISCOVER_SVIDS: ++ case DISCOVER_MODES: ++ case DFP_TO_UFP_ENTER_MODE: ++ case DFP_TO_UFP_EXIT_MODE: ++ case DFP_TO_CABLE_PLUG_ENTER_MODE: ++ case DFP_TO_CABLE_PLUG_EXIT_MODE: ++ case ATTENTION: ++ case UNSTRUCTURED_VDMS: ++ case STRUCTURED_VDMS: ++ break; ++ default: ++ return false; ++ } ++ ++ return true; ++} ++ ++static bool tcpm_ams_interruptible(struct tcpm_port *port) ++{ ++ switch (port->ams) { ++ /* Interruptible AMS */ ++ case NONE_AMS: ++ case SECURITY: ++ case FIRMWARE_UPDATE: ++ case DISCOVER_IDENTITY: ++ case SOURCE_STARTUP_CABLE_PLUG_DISCOVER_IDENTITY: ++ case DISCOVER_SVIDS: ++ case DISCOVER_MODES: ++ case DFP_TO_UFP_ENTER_MODE: ++ case DFP_TO_UFP_EXIT_MODE: ++ case DFP_TO_CABLE_PLUG_ENTER_MODE: ++ case DFP_TO_CABLE_PLUG_EXIT_MODE: ++ case UNSTRUCTURED_VDMS: ++ case STRUCTURED_VDMS: ++ case COUNTRY_INFO: ++ case COUNTRY_CODES: ++ break; ++ /* Non-Interruptible AMS */ ++ default: ++ if (port->in_ams) ++ return false; ++ break; ++ } ++ ++ return true; ++} ++ ++static int tcpm_ams_start(struct tcpm_port *port, enum tcpm_ams ams) ++{ ++ int ret = 0; ++ ++ tcpm_log(port, "AMS %s start", tcpm_ams_str[ams]); ++ ++ if (!tcpm_ams_interruptible(port) && ++ !(ams == HARD_RESET || ams == SOFT_RESET_AMS)) { ++ port->upcoming_state = INVALID_STATE; ++ tcpm_log(port, "AMS %s not interruptible, aborting", ++ tcpm_ams_str[port->ams]); ++ return -EAGAIN; ++ } ++ ++ if (port->pwr_role == TYPEC_SOURCE) { ++ enum typec_cc_status cc_req = port->cc_req; ++ ++ port->ams = ams; ++ ++ if (ams == HARD_RESET) { ++ tcpm_set_cc(port, tcpm_rp_cc(port)); ++ tcpm_pd_transmit(port, TCPC_TX_HARD_RESET, NULL); ++ tcpm_set_state(port, HARD_RESET_START, 0); ++ return ret; ++ } else if (ams == SOFT_RESET_AMS) { ++ if (!port->explicit_contract) ++ tcpm_set_cc(port, tcpm_rp_cc(port)); ++ tcpm_set_state(port, SOFT_RESET_SEND, 0); ++ return ret; ++ } else if (tcpm_vdm_ams(port)) { ++ /* tSinkTx is enforced in vdm_run_state_machine */ ++ if (port->negotiated_rev >= PD_REV30) ++ tcpm_set_cc(port, SINK_TX_NG); ++ return ret; ++ } ++ ++ if (port->negotiated_rev >= PD_REV30) ++ tcpm_set_cc(port, SINK_TX_NG); ++ ++ switch (port->state) { ++ case SRC_READY: ++ case SRC_STARTUP: ++ case SRC_SOFT_RESET_WAIT_SNK_TX: ++ case SOFT_RESET: ++ case SOFT_RESET_SEND: ++ if (port->negotiated_rev >= PD_REV30) ++ tcpm_set_state(port, AMS_START, ++ cc_req == SINK_TX_OK ? ++ PD_T_SINK_TX : 0); ++ else ++ tcpm_set_state(port, AMS_START, 0); ++ break; ++ default: ++ if (port->negotiated_rev >= PD_REV30) ++ tcpm_set_state(port, SRC_READY, ++ cc_req == SINK_TX_OK ? ++ PD_T_SINK_TX : 0); ++ else ++ tcpm_set_state(port, SRC_READY, 0); ++ break; ++ } ++ } else { ++ if (port->negotiated_rev >= PD_REV30 && ++ !tcpm_sink_tx_ok(port) && ++ ams != SOFT_RESET_AMS && ++ ams != HARD_RESET) { ++ port->upcoming_state = INVALID_STATE; ++ tcpm_log(port, "Sink TX No Go"); ++ return -EAGAIN; ++ } ++ ++ port->ams = ams; ++ ++ if (ams == HARD_RESET) { ++ tcpm_pd_transmit(port, TCPC_TX_HARD_RESET, NULL); ++ tcpm_set_state(port, HARD_RESET_START, 0); ++ return ret; ++ } else if (tcpm_vdm_ams(port)) { ++ return ret; ++ } ++ ++ if (port->state == SNK_READY || ++ port->state == SNK_SOFT_RESET) ++ tcpm_set_state(port, AMS_START, 0); ++ else ++ tcpm_set_state(port, SNK_READY, 0); ++ } ++ ++ return ret; ++} ++ + /* + * VDM/VDO handling functions + */ +@@ -1068,6 +1451,7 @@ static void tcpm_queue_vdm(struct tcpm_port *port, const u32 header, + /* Set ready, vdm state machine will actually send */ + port->vdm_retries = 0; + port->vdm_state = VDM_STATE_READY; ++ port->vdm_sm_running = true; + + mod_vdm_delayed_work(port, 0); + } +@@ -1183,8 +1567,10 @@ static int tcpm_pd_svdm(struct tcpm_port *port, struct typec_altmode *adev, + const u32 *p, int cnt, u32 *response, + enum adev_actions *adev_action) + { ++ struct typec_port *typec = port->typec_port; + struct typec_altmode *pdev; + struct pd_mode_data *modep; ++ int svdm_version; + int rlen = 0; + int cmd_type; + int cmd; +@@ -1201,25 +1587,54 @@ static int tcpm_pd_svdm(struct tcpm_port *port, struct typec_altmode *adev, + pdev = typec_match_altmode(port->partner_altmode, ALTMODE_DISCOVERY_MAX, + PD_VDO_VID(p[0]), PD_VDO_OPOS(p[0])); + ++ svdm_version = typec_get_negotiated_svdm_version(typec); ++ if (svdm_version < 0) ++ return 0; ++ + switch (cmd_type) { + case CMDT_INIT: + switch (cmd) { + case CMD_DISCOVER_IDENT: +- /* 6.4.4.3.1: Only respond as UFP (device) */ +- if (port->data_role == TYPEC_DEVICE && ++ if (PD_VDO_VID(p[0]) != USB_SID_PD) ++ break; ++ ++ if (PD_VDO_SVDM_VER(p[0]) < svdm_version) { ++ typec_partner_set_svdm_version(port->partner, ++ PD_VDO_SVDM_VER(p[0])); ++ svdm_version = PD_VDO_SVDM_VER(p[0]); ++ } ++ ++ port->ams = DISCOVER_IDENTITY; ++ /* ++ * PD2.0 Spec 6.10.3: respond with NAK as DFP (data host) ++ * PD3.1 Spec 6.4.4.2.5.1: respond with NAK if "invalid field" or ++ * "wrong configuation" or "Unrecognized" ++ */ ++ if ((port->data_role == TYPEC_DEVICE || svdm_version >= SVDM_VER_2_0) && + port->nr_snk_vdo) { +- for (i = 0; i < port->nr_snk_vdo; i++) +- response[i + 1] = port->snk_vdo[i]; +- rlen = port->nr_snk_vdo + 1; ++ if (svdm_version < SVDM_VER_2_0) { ++ for (i = 0; i < port->nr_snk_vdo_v1; i++) ++ response[i + 1] = port->snk_vdo_v1[i]; ++ rlen = port->nr_snk_vdo_v1 + 1; ++ ++ } else { ++ for (i = 0; i < port->nr_snk_vdo; i++) ++ response[i + 1] = port->snk_vdo[i]; ++ rlen = port->nr_snk_vdo + 1; ++ } + } + break; + case CMD_DISCOVER_SVID: ++ port->ams = DISCOVER_SVIDS; + break; + case CMD_DISCOVER_MODES: ++ port->ams = DISCOVER_MODES; + break; + case CMD_ENTER_MODE: ++ port->ams = DFP_TO_UFP_ENTER_MODE; + break; + case CMD_EXIT_MODE: ++ port->ams = DFP_TO_UFP_EXIT_MODE; + break; + case CMD_ATTENTION: + /* Attention command does not have response */ +@@ -1237,27 +1652,34 @@ static int tcpm_pd_svdm(struct tcpm_port *port, struct typec_altmode *adev, + response[0] = p[0] | VDO_CMDT(CMDT_RSP_BUSY); + rlen = 1; + } ++ response[0] = (response[0] & ~VDO_SVDM_VERS_MASK) | ++ (VDO_SVDM_VERS(typec_get_negotiated_svdm_version(typec))); + break; + case CMDT_RSP_ACK: + /* silently drop message if we are not connected */ + if (IS_ERR_OR_NULL(port->partner)) + break; + ++ tcpm_ams_finish(port); ++ + switch (cmd) { + case CMD_DISCOVER_IDENT: ++ if (PD_VDO_SVDM_VER(p[0]) < svdm_version) ++ typec_partner_set_svdm_version(port->partner, ++ PD_VDO_SVDM_VER(p[0])); + /* 6.4.4.3.1 */ + svdm_consume_identity(port, p, cnt); +- response[0] = VDO(USB_SID_PD, 1, CMD_DISCOVER_SVID); ++ response[0] = VDO(USB_SID_PD, 1, typec_get_negotiated_svdm_version(typec), ++ CMD_DISCOVER_SVID); + rlen = 1; + break; + case CMD_DISCOVER_SVID: + /* 6.4.4.3.2 */ + if (svdm_consume_svids(port, p, cnt)) { +- response[0] = VDO(USB_SID_PD, 1, +- CMD_DISCOVER_SVID); ++ response[0] = VDO(USB_SID_PD, 1, svdm_version, CMD_DISCOVER_SVID); + rlen = 1; + } else if (modep->nsvids && supports_modal(port)) { +- response[0] = VDO(modep->svids[0], 1, ++ response[0] = VDO(modep->svids[0], 1, svdm_version, + CMD_DISCOVER_MODES); + rlen = 1; + } +@@ -1268,9 +1690,9 @@ static int tcpm_pd_svdm(struct tcpm_port *port, struct typec_altmode *adev, + modep->svid_index++; + if (modep->svid_index < modep->nsvids) { + u16 svid = modep->svids[modep->svid_index]; +- response[0] = VDO(svid, 1, CMD_DISCOVER_MODES); ++ response[0] = VDO(svid, 1, svdm_version, CMD_DISCOVER_MODES); + rlen = 1; +- } else { ++ } else if (port->data_role == TYPEC_HOST) { + tcpm_register_partner_altmodes(port); + } + break; +@@ -1288,21 +1710,43 @@ static int tcpm_pd_svdm(struct tcpm_port *port, struct typec_altmode *adev, + return 0; + } + break; ++ case VDO_CMD_VENDOR(0) ... VDO_CMD_VENDOR(15): ++ break; + default: ++ /* Unrecognized SVDM */ ++ response[0] = p[0] | VDO_CMDT(CMDT_RSP_NAK); ++ rlen = 1; ++ response[0] = (response[0] & ~VDO_SVDM_VERS_MASK) | ++ (VDO_SVDM_VERS(svdm_version)); + break; + } + break; + case CMDT_RSP_NAK: ++ tcpm_ams_finish(port); + switch (cmd) { ++ case CMD_DISCOVER_IDENT: ++ case CMD_DISCOVER_SVID: ++ case CMD_DISCOVER_MODES: ++ case VDO_CMD_VENDOR(0) ... VDO_CMD_VENDOR(15): ++ break; + case CMD_ENTER_MODE: + /* Back to USB Operation */ + *adev_action = ADEV_NOTIFY_USB_AND_QUEUE_VDM; + return 0; + default: ++ /* Unrecognized SVDM */ ++ response[0] = p[0] | VDO_CMDT(CMDT_RSP_NAK); ++ rlen = 1; ++ response[0] = (response[0] & ~VDO_SVDM_VERS_MASK) | ++ (VDO_SVDM_VERS(svdm_version)); + break; + } + break; + default: ++ response[0] = p[0] | VDO_CMDT(CMDT_RSP_NAK); ++ rlen = 1; ++ response[0] = (response[0] & ~VDO_SVDM_VERS_MASK) | ++ (VDO_SVDM_VERS(svdm_version)); + break; + } + +@@ -1311,6 +1755,10 @@ static int tcpm_pd_svdm(struct tcpm_port *port, struct typec_altmode *adev, + return rlen; + } + ++static void tcpm_pd_handle_msg(struct tcpm_port *port, ++ enum pd_msg_request message, ++ enum tcpm_ams ams); ++ + static void tcpm_handle_vdm_request(struct tcpm_port *port, + const __le32 *payload, int cnt) + { +@@ -1338,8 +1786,26 @@ static void tcpm_handle_vdm_request(struct tcpm_port *port, + port->vdm_state = VDM_STATE_DONE; + } + +- if (PD_VDO_SVDM(p[0])) ++ if (PD_VDO_SVDM(p[0]) && (adev || tcpm_vdm_ams(port) || port->nr_snk_vdo)) { ++ /* ++ * Here a SVDM is received (INIT or RSP or unknown). Set the vdm_sm_running in ++ * advance because we are dropping the lock but may send VDMs soon. ++ * For the cases of INIT received: ++ * - If no response to send, it will be cleared later in this function. ++ * - If there are responses to send, it will be cleared in the state machine. ++ * For the cases of RSP received: ++ * - If no further INIT to send, it will be cleared later in this function. ++ * - Otherwise, it will be cleared in the state machine if timeout or it will go ++ * back here until no further INIT to send. ++ * For the cases of unknown type received: ++ * - We will send NAK and the flag will be cleared in the state machine. ++ */ ++ port->vdm_sm_running = true; + rlen = tcpm_pd_svdm(port, adev, p, cnt, response, &adev_action); ++ } else { ++ if (port->negotiated_rev >= PD_REV30) ++ tcpm_pd_handle_msg(port, PD_MSG_CTRL_NOT_SUPP, NONE_AMS); ++ } + + /* + * We are done with any state stored in the port struct now, except +@@ -1375,7 +1841,13 @@ static void tcpm_handle_vdm_request(struct tcpm_port *port, + break; + case ADEV_QUEUE_VDM_SEND_EXIT_MODE_ON_FAIL: + if (typec_altmode_vdm(adev, p[0], &p[1], cnt)) { +- response[0] = VDO(adev->svid, 1, CMD_EXIT_MODE); ++ int svdm_version = typec_get_negotiated_svdm_version( ++ port->typec_port); ++ if (svdm_version < 0) ++ break; ++ ++ response[0] = VDO(adev->svid, 1, svdm_version, ++ CMD_EXIT_MODE); + response[0] |= VDO_OPOS(adev->mode); + rlen = 1; + } +@@ -1397,19 +1869,26 @@ static void tcpm_handle_vdm_request(struct tcpm_port *port, + + if (rlen > 0) + tcpm_queue_vdm(port, response[0], &response[1], rlen - 1); ++ else ++ port->vdm_sm_running = false; + } + + static void tcpm_send_vdm(struct tcpm_port *port, u32 vid, int cmd, + const u32 *data, int count) + { ++ int svdm_version = typec_get_negotiated_svdm_version(port->typec_port); + u32 header; + ++ if (svdm_version < 0) ++ return; ++ + if (WARN_ON(count > VDO_MAX_SIZE - 1)) + count = VDO_MAX_SIZE - 1; + + /* set VDM header with VID & CMD */ + header = VDO(vid, ((vid & USB_SID_PD) == USB_SID_PD) ? +- 1 : (PD_VDO_CMD(cmd) <= CMD_ATTENTION), cmd); ++ 1 : (PD_VDO_CMD(cmd) <= CMD_ATTENTION), ++ svdm_version, cmd); + tcpm_queue_vdm(port, header, data, count); + } + +@@ -1442,7 +1921,8 @@ static unsigned int vdm_ready_timeout(u32 vdm_hdr) + static void vdm_run_state_machine(struct tcpm_port *port) + { + struct pd_message msg; +- int i, res; ++ int i, res = 0; ++ u32 vdo_hdr = port->vdo_data[0]; + + switch (port->vdm_state) { + case VDM_STATE_READY: +@@ -1450,43 +1930,74 @@ static void vdm_run_state_machine(struct tcpm_port *port) + if (!port->attached) { + port->vdm_state = VDM_STATE_ERR_BUSY; + break; +- } +- +- /* +- * if there's traffic or we're not in PDO ready state don't send +- * a VDM. +- */ +- if (port->state != SRC_READY && port->state != SNK_READY) +- break; +- +- /* Prepare and send VDM */ +- memset(&msg, 0, sizeof(msg)); +- msg.header = PD_HEADER_LE(PD_DATA_VENDOR_DEF, +- port->pwr_role, +- port->data_role, +- port->negotiated_rev, +- port->message_id, port->vdo_count); +- for (i = 0; i < port->vdo_count; i++) +- msg.payload[i] = cpu_to_le32(port->vdo_data[i]); +- res = tcpm_pd_transmit(port, TCPC_TX_SOP, &msg); +- if (res < 0) { +- port->vdm_state = VDM_STATE_ERR_SEND; +- } else { +- unsigned long timeout; ++ } + +- port->vdm_retries = 0; +- port->vdm_state = VDM_STATE_BUSY; +- timeout = vdm_ready_timeout(port->vdo_data[0]); +- mod_vdm_delayed_work(port, timeout); ++ /* ++ * if there's traffic or we're not in PDO ready state don't send ++ * a VDM. ++ */ ++ if (port->state != SRC_READY && port->state != SNK_READY) { ++ port->vdm_sm_running = false; ++ break; ++ } ++ ++ /* TODO: AMS operation for Unstructured VDM */ ++ if (PD_VDO_SVDM(vdo_hdr) && PD_VDO_CMDT(vdo_hdr) == CMDT_INIT) { ++ switch (PD_VDO_CMD(vdo_hdr)) { ++ case CMD_DISCOVER_IDENT: ++ res = tcpm_ams_start(port, DISCOVER_IDENTITY); ++ if (res == 0) ++ port->send_discover = false; ++ else if (res == -EAGAIN) ++ mod_send_discover_delayed_work(port, ++ SEND_DISCOVER_RETRY_MS); ++ break; ++ case CMD_DISCOVER_SVID: ++ res = tcpm_ams_start(port, DISCOVER_SVIDS); ++ break; ++ case CMD_DISCOVER_MODES: ++ res = tcpm_ams_start(port, DISCOVER_MODES); ++ break; ++ case CMD_ENTER_MODE: ++ res = tcpm_ams_start(port, DFP_TO_UFP_ENTER_MODE); ++ break; ++ case CMD_EXIT_MODE: ++ res = tcpm_ams_start(port, DFP_TO_UFP_EXIT_MODE); ++ break; ++ case CMD_ATTENTION: ++ res = tcpm_ams_start(port, ATTENTION); ++ break; ++ case VDO_CMD_VENDOR(0) ... VDO_CMD_VENDOR(15): ++ res = tcpm_ams_start(port, STRUCTURED_VDMS); ++ break; ++ default: ++ res = -EOPNOTSUPP; ++ break; ++ } ++ ++ if (res < 0) { ++ port->vdm_state = VDM_STATE_ERR_BUSY; ++ return; ++ } + } ++ ++ port->vdm_state = VDM_STATE_SEND_MESSAGE; ++ mod_vdm_delayed_work(port, (port->negotiated_rev >= PD_REV30 && ++ port->pwr_role == TYPEC_SOURCE && ++ PD_VDO_SVDM(vdo_hdr) && ++ PD_VDO_CMDT(vdo_hdr) == CMDT_INIT) ? ++ PD_T_SINK_TX : 0); + break; + case VDM_STATE_WAIT_RSP_BUSY: + port->vdo_data[0] = port->vdo_retry; + port->vdo_count = 1; + port->vdm_state = VDM_STATE_READY; ++ tcpm_ams_finish(port); + break; + case VDM_STATE_BUSY: + port->vdm_state = VDM_STATE_ERR_TMOUT; ++ if (port->ams != NONE_AMS) ++ tcpm_ams_finish(port); + break; + case VDM_STATE_ERR_SEND: + /* +@@ -1499,6 +2010,32 @@ static void vdm_run_state_machine(struct tcpm_port *port) + tcpm_log(port, "VDM Tx error, retry"); + port->vdm_retries++; + port->vdm_state = VDM_STATE_READY; ++ if (PD_VDO_SVDM(vdo_hdr) && PD_VDO_CMDT(vdo_hdr) == CMDT_INIT) ++ tcpm_ams_finish(port); ++ } else { ++ tcpm_ams_finish(port); ++ } ++ break; ++ case VDM_STATE_SEND_MESSAGE: ++ /* Prepare and send VDM */ ++ memset(&msg, 0, sizeof(msg)); ++ msg.header = PD_HEADER_LE(PD_DATA_VENDOR_DEF, ++ port->pwr_role, ++ port->data_role, ++ port->negotiated_rev, ++ port->message_id, port->vdo_count); ++ for (i = 0; i < port->vdo_count; i++) ++ msg.payload[i] = cpu_to_le32(port->vdo_data[i]); ++ res = tcpm_pd_transmit(port, TCPC_TX_SOP, &msg); ++ if (res < 0) { ++ port->vdm_state = VDM_STATE_ERR_SEND; ++ } else { ++ unsigned long timeout; ++ ++ port->vdm_retries = 0; ++ port->vdm_state = VDM_STATE_BUSY; ++ timeout = vdm_ready_timeout(vdo_hdr); ++ mod_vdm_delayed_work(port, timeout); + } + break; + default: +@@ -1521,7 +2058,11 @@ static void vdm_state_machine_work(struct kthread_work *work) + prev_state = port->vdm_state; + vdm_run_state_machine(port); + } while (port->vdm_state != prev_state && +- port->vdm_state != VDM_STATE_BUSY); ++ port->vdm_state != VDM_STATE_BUSY && ++ port->vdm_state != VDM_STATE_SEND_MESSAGE); ++ ++ if (port->vdm_state < VDM_STATE_READY) ++ port->vdm_sm_running = false; + + mutex_unlock(&port->lock); + } +@@ -1649,9 +2190,14 @@ static int tcpm_validate_caps(struct tcpm_port *port, const u32 *pdo, + static int tcpm_altmode_enter(struct typec_altmode *altmode, u32 *vdo) + { + struct tcpm_port *port = typec_altmode_get_drvdata(altmode); ++ int svdm_version; + u32 header; + +- header = VDO(altmode->svid, vdo ? 2 : 1, CMD_ENTER_MODE); ++ svdm_version = typec_get_negotiated_svdm_version(port->typec_port); ++ if (svdm_version < 0) ++ return svdm_version; ++ ++ header = VDO(altmode->svid, vdo ? 2 : 1, svdm_version, CMD_ENTER_MODE); + header |= VDO_OPOS(altmode->mode); + + tcpm_queue_vdm_unlocked(port, header, vdo, vdo ? 1 : 0); +@@ -1661,9 +2207,14 @@ static int tcpm_altmode_enter(struct typec_altmode *altmode, u32 *vdo) + static int tcpm_altmode_exit(struct typec_altmode *altmode) + { + struct tcpm_port *port = typec_altmode_get_drvdata(altmode); ++ int svdm_version; + u32 header; + +- header = VDO(altmode->svid, 1, CMD_EXIT_MODE); ++ svdm_version = typec_get_negotiated_svdm_version(port->typec_port); ++ if (svdm_version < 0) ++ return svdm_version; ++ ++ header = VDO(altmode->svid, 1, svdm_version, CMD_EXIT_MODE); + header |= VDO_OPOS(altmode->mode); + + tcpm_queue_vdm_unlocked(port, header, NULL, 0); +@@ -1708,20 +2259,108 @@ static void tcpm_handle_alert(struct tcpm_port *port, const __le32 *payload, + + if (!type) { + tcpm_log(port, "Alert message received with no type"); ++ tcpm_queue_message(port, PD_MSG_CTRL_NOT_SUPP); + return; + } + + /* Just handling non-battery alerts for now */ + if (!(type & USB_PD_ADO_TYPE_BATT_STATUS_CHANGE)) { +- switch (port->state) { +- case SRC_READY: +- case SNK_READY: ++ if (port->pwr_role == TYPEC_SOURCE) { ++ port->upcoming_state = GET_STATUS_SEND; ++ tcpm_ams_start(port, GETTING_SOURCE_SINK_STATUS); ++ } else { ++ /* ++ * Do not check SinkTxOk here in case the Source doesn't set its Rp to ++ * SinkTxOk in time. ++ */ ++ port->ams = GETTING_SOURCE_SINK_STATUS; + tcpm_set_state(port, GET_STATUS_SEND, 0); +- break; +- default: +- tcpm_queue_message(port, PD_MSG_CTRL_WAIT); +- break; + } ++ } else { ++ tcpm_queue_message(port, PD_MSG_CTRL_NOT_SUPP); ++ } ++} ++ ++static int tcpm_set_auto_vbus_discharge_threshold(struct tcpm_port *port, ++ enum typec_pwr_opmode mode, bool pps_active, ++ u32 requested_vbus_voltage) ++{ ++ int ret; ++ ++ if (!port->tcpc->set_auto_vbus_discharge_threshold) ++ return 0; ++ ++ ret = port->tcpc->set_auto_vbus_discharge_threshold(port->tcpc, mode, pps_active, ++ requested_vbus_voltage); ++ tcpm_log_force(port, ++ "set_auto_vbus_discharge_threshold mode:%d pps_active:%c vbus:%u ret:%d", ++ mode, pps_active ? 'y' : 'n', requested_vbus_voltage, ret); ++ ++ return ret; ++} ++ ++static void tcpm_pd_handle_state(struct tcpm_port *port, ++ enum tcpm_state state, ++ enum tcpm_ams ams, ++ unsigned int delay_ms) ++{ ++ switch (port->state) { ++ case SRC_READY: ++ case SNK_READY: ++ port->ams = ams; ++ tcpm_set_state(port, state, delay_ms); ++ break; ++ /* 8.3.3.4.1.1 and 6.8.1 power transitioning */ ++ case SNK_TRANSITION_SINK: ++ case SNK_TRANSITION_SINK_VBUS: ++ case SRC_TRANSITION_SUPPLY: ++ tcpm_set_state(port, HARD_RESET_SEND, 0); ++ break; ++ default: ++ if (!tcpm_ams_interruptible(port)) { ++ tcpm_set_state(port, port->pwr_role == TYPEC_SOURCE ? ++ SRC_SOFT_RESET_WAIT_SNK_TX : ++ SNK_SOFT_RESET, ++ 0); ++ } else { ++ /* process the Message 6.8.1 */ ++ port->upcoming_state = state; ++ port->next_ams = ams; ++ tcpm_set_state(port, ready_state(port), delay_ms); ++ } ++ break; ++ } ++} ++ ++static void tcpm_pd_handle_msg(struct tcpm_port *port, ++ enum pd_msg_request message, ++ enum tcpm_ams ams) ++{ ++ switch (port->state) { ++ case SRC_READY: ++ case SNK_READY: ++ port->ams = ams; ++ tcpm_queue_message(port, message); ++ break; ++ /* PD 3.0 Spec 8.3.3.4.1.1 and 6.8.1 */ ++ case SNK_TRANSITION_SINK: ++ case SNK_TRANSITION_SINK_VBUS: ++ case SRC_TRANSITION_SUPPLY: ++ tcpm_set_state(port, HARD_RESET_SEND, 0); ++ break; ++ default: ++ if (!tcpm_ams_interruptible(port)) { ++ tcpm_set_state(port, port->pwr_role == TYPEC_SOURCE ? ++ SRC_SOFT_RESET_WAIT_SNK_TX : ++ SNK_SOFT_RESET, ++ 0); ++ } else { ++ port->next_ams = ams; ++ tcpm_set_state(port, ready_state(port), 0); ++ /* 6.8.1 process the Message */ ++ tcpm_queue_message(port, message); ++ } ++ break; + } + } + +@@ -1732,15 +2371,18 @@ static void tcpm_pd_data_request(struct tcpm_port *port, + unsigned int cnt = pd_header_cnt_le(msg->header); + unsigned int rev = pd_header_rev_le(msg->header); + unsigned int i; +- enum frs_typec_current frs_current; ++ enum frs_typec_current partner_frs_current; + bool frs_enable; + int ret; + ++ if (tcpm_vdm_ams(port) && type != PD_DATA_VENDOR_DEF) { ++ port->vdm_state = VDM_STATE_ERR_BUSY; ++ tcpm_ams_finish(port); ++ mod_vdm_delayed_work(port, 0); ++ } ++ + switch (type) { + case PD_DATA_SOURCE_CAP: +- if (port->pwr_role != TYPEC_SINK) +- break; +- + for (i = 0; i < cnt; i++) + port->source_caps[i] = le32_to_cpu(msg->payload[i]); + +@@ -1756,12 +2398,26 @@ static void tcpm_pd_data_request(struct tcpm_port *port, + * to comply with 6.2.1.1.5 of the USB PD 3.0 spec. We don't + * support Rev 1.0 so just do nothing in that scenario. + */ +- if (rev == PD_REV10) ++ if (rev == PD_REV10) { ++ if (port->ams == GET_SOURCE_CAPABILITIES) ++ tcpm_ams_finish(port); + break; ++ } + + if (rev < PD_MAX_REV) + port->negotiated_rev = rev; + ++ if (port->pwr_role == TYPEC_SOURCE) { ++ if (port->ams == GET_SOURCE_CAPABILITIES) ++ tcpm_pd_handle_state(port, SRC_READY, NONE_AMS, 0); ++ /* Unexpected Source Capabilities */ ++ else ++ tcpm_pd_handle_msg(port, ++ port->negotiated_rev < PD_REV30 ? ++ PD_MSG_CTRL_REJECT : ++ PD_MSG_CTRL_NOT_SUPP, ++ NONE_AMS); ++ } else if (port->state == SNK_WAIT_CAPABILITIES) { + /* + * This message may be received even if VBUS is not + * present. This is quite unexpected; see USB PD +@@ -1775,42 +2431,68 @@ static void tcpm_pd_data_request(struct tcpm_port *port, + * but be prepared to keep waiting for VBUS after it was + * handled. + */ +- tcpm_set_state(port, SNK_NEGOTIATE_CAPABILITIES, 0); ++ port->ams = POWER_NEGOTIATION; ++ port->in_ams = true; ++ tcpm_set_state(port, SNK_NEGOTIATE_CAPABILITIES, 0); ++ } else { ++ if (port->ams == GET_SOURCE_CAPABILITIES) ++ tcpm_ams_finish(port); ++ tcpm_pd_handle_state(port, SNK_NEGOTIATE_CAPABILITIES, ++ POWER_NEGOTIATION, 0); ++ } + break; + case PD_DATA_REQUEST: +- if (port->pwr_role != TYPEC_SOURCE || +- cnt != 1) { +- tcpm_queue_message(port, PD_MSG_CTRL_REJECT); +- break; +- } +- + /* + * Adjust revision in subsequent message headers, as required, + * to comply with 6.2.1.1.5 of the USB PD 3.0 spec. We don't + * support Rev 1.0 so just reject in that scenario. + */ + if (rev == PD_REV10) { +- tcpm_queue_message(port, PD_MSG_CTRL_REJECT); ++ tcpm_pd_handle_msg(port, ++ port->negotiated_rev < PD_REV30 ? ++ PD_MSG_CTRL_REJECT : ++ PD_MSG_CTRL_NOT_SUPP, ++ NONE_AMS); + break; + } + + if (rev < PD_MAX_REV) + port->negotiated_rev = rev; + ++ if (port->pwr_role != TYPEC_SOURCE || cnt != 1) { ++ tcpm_pd_handle_msg(port, ++ port->negotiated_rev < PD_REV30 ? ++ PD_MSG_CTRL_REJECT : ++ PD_MSG_CTRL_NOT_SUPP, ++ NONE_AMS); ++ break; ++ } ++ + port->sink_request = le32_to_cpu(msg->payload[0]); +- tcpm_set_state(port, SRC_NEGOTIATE_CAPABILITIES, 0); ++ ++ if (port->vdm_sm_running && port->explicit_contract) { ++ tcpm_pd_handle_msg(port, PD_MSG_CTRL_WAIT, port->ams); ++ break; ++ } ++ ++ if (port->state == SRC_SEND_CAPABILITIES) ++ tcpm_set_state(port, SRC_NEGOTIATE_CAPABILITIES, 0); ++ else ++ tcpm_pd_handle_state(port, SRC_NEGOTIATE_CAPABILITIES, ++ POWER_NEGOTIATION, 0); + break; + case PD_DATA_SINK_CAP: + /* We don't do anything with this at the moment... */ + for (i = 0; i < cnt; i++) + port->sink_caps[i] = le32_to_cpu(msg->payload[i]); + +- frs_current = (port->sink_caps[0] & PDO_FIXED_FRS_CURR_MASK) >> ++ partner_frs_current = (port->sink_caps[0] & PDO_FIXED_FRS_CURR_MASK) >> + PDO_FIXED_FRS_CURR_SHIFT; +- frs_enable = frs_current && (frs_current <= port->frs_current); ++ frs_enable = partner_frs_current && (partner_frs_current <= ++ port->new_source_frs_current); + tcpm_log(port, + "Port partner FRS capable partner_frs_current:%u port_frs_current:%u enable:%c", +- frs_current, port->frs_current, frs_enable ? 'y' : 'n'); ++ partner_frs_current, port->new_source_frs_current, frs_enable ? 'y' : 'n'); + if (frs_enable) { + ret = port->tcpc->enable_frs(port->tcpc, true); + tcpm_log(port, "Enable FRS %s, ret:%d\n", ret ? "fail" : "success", ret); +@@ -1818,27 +2500,45 @@ static void tcpm_pd_data_request(struct tcpm_port *port, + + port->nr_sink_caps = cnt; + port->sink_cap_done = true; +- tcpm_set_state(port, SNK_READY, 0); ++ if (port->ams == GET_SINK_CAPABILITIES) ++ tcpm_set_state(port, ready_state(port), 0); ++ /* Unexpected Sink Capabilities */ ++ else ++ tcpm_pd_handle_msg(port, ++ port->negotiated_rev < PD_REV30 ? ++ PD_MSG_CTRL_REJECT : ++ PD_MSG_CTRL_NOT_SUPP, ++ NONE_AMS); + break; + case PD_DATA_VENDOR_DEF: + tcpm_handle_vdm_request(port, msg->payload, cnt); + break; + case PD_DATA_BIST: +- if (port->state == SRC_READY || port->state == SNK_READY) { +- port->bist_request = le32_to_cpu(msg->payload[0]); +- tcpm_set_state(port, BIST_RX, 0); +- } ++ port->bist_request = le32_to_cpu(msg->payload[0]); ++ tcpm_pd_handle_state(port, BIST_RX, BIST, 0); + break; + case PD_DATA_ALERT: +- tcpm_handle_alert(port, msg->payload, cnt); ++ if (port->state != SRC_READY && port->state != SNK_READY) ++ tcpm_pd_handle_state(port, port->pwr_role == TYPEC_SOURCE ? ++ SRC_SOFT_RESET_WAIT_SNK_TX : SNK_SOFT_RESET, ++ NONE_AMS, 0); ++ else ++ tcpm_handle_alert(port, msg->payload, cnt); + break; + case PD_DATA_BATT_STATUS: + case PD_DATA_GET_COUNTRY_INFO: + /* Currently unsupported */ +- tcpm_queue_message(port, PD_MSG_CTRL_NOT_SUPP); ++ tcpm_pd_handle_msg(port, port->negotiated_rev < PD_REV30 ? ++ PD_MSG_CTRL_REJECT : ++ PD_MSG_CTRL_NOT_SUPP, ++ NONE_AMS); + break; + default: +- tcpm_log(port, "Unhandled data message type %#x", type); ++ tcpm_pd_handle_msg(port, port->negotiated_rev < PD_REV30 ? ++ PD_MSG_CTRL_REJECT : ++ PD_MSG_CTRL_NOT_SUPP, ++ NONE_AMS); ++ tcpm_log(port, "Unrecognized data message type %#x", type); + break; + } + } +@@ -1858,31 +2558,25 @@ static void tcpm_pd_ctrl_request(struct tcpm_port *port, + enum pd_ctrl_msg_type type = pd_header_type_le(msg->header); + enum tcpm_state next_state; + ++ /* ++ * Stop VDM state machine if interrupted by other Messages while NOT_SUPP is allowed in ++ * VDM AMS if waiting for VDM responses and will be handled later. ++ */ ++ if (tcpm_vdm_ams(port) && type != PD_CTRL_NOT_SUPP && type != PD_CTRL_GOOD_CRC) { ++ port->vdm_state = VDM_STATE_ERR_BUSY; ++ tcpm_ams_finish(port); ++ mod_vdm_delayed_work(port, 0); ++ } ++ + switch (type) { + case PD_CTRL_GOOD_CRC: + case PD_CTRL_PING: + break; + case PD_CTRL_GET_SOURCE_CAP: +- switch (port->state) { +- case SRC_READY: +- case SNK_READY: +- tcpm_queue_message(port, PD_MSG_DATA_SOURCE_CAP); +- break; +- default: +- tcpm_queue_message(port, PD_MSG_CTRL_REJECT); +- break; +- } ++ tcpm_pd_handle_msg(port, PD_MSG_DATA_SOURCE_CAP, GET_SOURCE_CAPABILITIES); + break; + case PD_CTRL_GET_SINK_CAP: +- switch (port->state) { +- case SRC_READY: +- case SNK_READY: +- tcpm_queue_message(port, PD_MSG_DATA_SINK_CAP); +- break; +- default: +- tcpm_queue_message(port, PD_MSG_CTRL_REJECT); +- break; +- } ++ tcpm_pd_handle_msg(port, PD_MSG_DATA_SINK_CAP, GET_SINK_CAPABILITIES); + break; + case PD_CTRL_GOTO_MIN: + break; +@@ -1894,6 +2588,10 @@ static void tcpm_pd_ctrl_request(struct tcpm_port *port, + port->req_current_limit, + port->req_supply_voltage); + port->explicit_contract = true; ++ tcpm_set_auto_vbus_discharge_threshold(port, ++ TYPEC_PWR_MODE_PD, ++ port->pps_data.active, ++ port->supply_voltage); + tcpm_set_state(port, SNK_READY, 0); + } else { + /* +@@ -1917,6 +2615,11 @@ static void tcpm_pd_ctrl_request(struct tcpm_port *port, + tcpm_set_state(port, FR_SWAP_SNK_SRC_NEW_SINK_READY, 0); + break; + default: ++ tcpm_pd_handle_state(port, ++ port->pwr_role == TYPEC_SOURCE ? ++ SRC_SOFT_RESET_WAIT_SNK_TX : ++ SNK_SOFT_RESET, ++ NONE_AMS, 0); + break; + } + break; +@@ -1930,6 +2633,11 @@ static void tcpm_pd_ctrl_request(struct tcpm_port *port, + next_state = SNK_READY; + else + next_state = SNK_WAIT_CAPABILITIES; ++ ++ /* Threshold was relaxed before sending Request. Restore it back. */ ++ tcpm_set_auto_vbus_discharge_threshold(port, TYPEC_PWR_MODE_PD, ++ port->pps_data.active, ++ port->supply_voltage); + tcpm_set_state(port, next_state, 0); + break; + case SNK_NEGOTIATE_PPS_CAPABILITIES: +@@ -1938,6 +2646,12 @@ static void tcpm_pd_ctrl_request(struct tcpm_port *port, + port->pps_data.req_op_curr = port->current_limit; + port->pps_status = (type == PD_CTRL_WAIT ? + -EAGAIN : -EOPNOTSUPP); ++ ++ /* Threshold was relaxed before sending Request. Restore it back. */ ++ tcpm_set_auto_vbus_discharge_threshold(port, TYPEC_PWR_MODE_PD, ++ port->pps_data.active, ++ port->supply_voltage); ++ + tcpm_set_state(port, SNK_READY, 0); + break; + case DR_SWAP_SEND: +@@ -1962,7 +2676,22 @@ static void tcpm_pd_ctrl_request(struct tcpm_port *port, + port->sink_cap_done = true; + tcpm_set_state(port, ready_state(port), 0); + break; ++ case SRC_READY: ++ case SNK_READY: ++ if (port->vdm_state > VDM_STATE_READY) { ++ port->vdm_state = VDM_STATE_DONE; ++ if (tcpm_vdm_ams(port)) ++ tcpm_ams_finish(port); ++ mod_vdm_delayed_work(port, 0); ++ break; ++ } ++ fallthrough; + default: ++ tcpm_pd_handle_state(port, ++ port->pwr_role == TYPEC_SOURCE ? ++ SRC_SOFT_RESET_WAIT_SNK_TX : ++ SNK_SOFT_RESET, ++ NONE_AMS, 0); + break; + } + break; +@@ -1983,13 +2712,14 @@ static void tcpm_pd_ctrl_request(struct tcpm_port *port, + tcpm_set_state(port, SNK_TRANSITION_SINK, 0); + break; + case SOFT_RESET_SEND: +- port->message_id = 0; +- port->rx_msgid = -1; +- if (port->pwr_role == TYPEC_SOURCE) +- next_state = SRC_SEND_CAPABILITIES; +- else +- next_state = SNK_WAIT_CAPABILITIES; +- tcpm_set_state(port, next_state, 0); ++ if (port->ams == SOFT_RESET_AMS) ++ tcpm_ams_finish(port); ++ if (port->pwr_role == TYPEC_SOURCE) { ++ port->upcoming_state = SRC_SEND_CAPABILITIES; ++ tcpm_ams_start(port, POWER_NEGOTIATION); ++ } else { ++ tcpm_set_state(port, SNK_WAIT_CAPABILITIES, 0); ++ } + break; + case DR_SWAP_SEND: + tcpm_set_state(port, DR_SWAP_CHANGE_DR, 0); +@@ -2004,57 +2734,62 @@ static void tcpm_pd_ctrl_request(struct tcpm_port *port, + tcpm_set_state(port, FR_SWAP_SNK_SRC_TRANSITION_TO_OFF, 0); + break; + default: ++ tcpm_pd_handle_state(port, ++ port->pwr_role == TYPEC_SOURCE ? ++ SRC_SOFT_RESET_WAIT_SNK_TX : ++ SNK_SOFT_RESET, ++ NONE_AMS, 0); + break; + } + break; + case PD_CTRL_SOFT_RESET: ++ port->ams = SOFT_RESET_AMS; + tcpm_set_state(port, SOFT_RESET, 0); + break; + case PD_CTRL_DR_SWAP: +- if (port->typec_caps.data != TYPEC_PORT_DRD) { +- tcpm_queue_message(port, PD_MSG_CTRL_REJECT); +- break; +- } + /* + * XXX + * 6.3.9: If an alternate mode is active, a request to swap + * alternate modes shall trigger a port reset. + */ +- switch (port->state) { +- case SRC_READY: +- case SNK_READY: +- tcpm_set_state(port, DR_SWAP_ACCEPT, 0); +- break; +- default: +- tcpm_queue_message(port, PD_MSG_CTRL_WAIT); +- break; ++ if (port->typec_caps.data != TYPEC_PORT_DRD) { ++ tcpm_pd_handle_msg(port, ++ port->negotiated_rev < PD_REV30 ? ++ PD_MSG_CTRL_REJECT : ++ PD_MSG_CTRL_NOT_SUPP, ++ NONE_AMS); ++ } else { ++ if (port->send_discover) { ++ tcpm_queue_message(port, PD_MSG_CTRL_WAIT); ++ break; ++ } ++ ++ tcpm_pd_handle_state(port, DR_SWAP_ACCEPT, DATA_ROLE_SWAP, 0); + } + break; + case PD_CTRL_PR_SWAP: + if (port->port_type != TYPEC_PORT_DRP) { +- tcpm_queue_message(port, PD_MSG_CTRL_REJECT); +- break; +- } +- switch (port->state) { +- case SRC_READY: +- case SNK_READY: +- tcpm_set_state(port, PR_SWAP_ACCEPT, 0); +- break; +- default: +- tcpm_queue_message(port, PD_MSG_CTRL_WAIT); +- break; ++ tcpm_pd_handle_msg(port, ++ port->negotiated_rev < PD_REV30 ? ++ PD_MSG_CTRL_REJECT : ++ PD_MSG_CTRL_NOT_SUPP, ++ NONE_AMS); ++ } else { ++ if (port->send_discover) { ++ tcpm_queue_message(port, PD_MSG_CTRL_WAIT); ++ break; ++ } ++ ++ tcpm_pd_handle_state(port, PR_SWAP_ACCEPT, POWER_ROLE_SWAP, 0); + } + break; + case PD_CTRL_VCONN_SWAP: +- switch (port->state) { +- case SRC_READY: +- case SNK_READY: +- tcpm_set_state(port, VCONN_SWAP_ACCEPT, 0); +- break; +- default: ++ if (port->send_discover) { + tcpm_queue_message(port, PD_MSG_CTRL_WAIT); + break; + } ++ ++ tcpm_pd_handle_state(port, VCONN_SWAP_ACCEPT, VCONN_SWAP, 0); + break; + case PD_CTRL_GET_SOURCE_CAP_EXT: + case PD_CTRL_GET_STATUS: +@@ -2062,10 +2797,19 @@ static void tcpm_pd_ctrl_request(struct tcpm_port *port, + case PD_CTRL_GET_PPS_STATUS: + case PD_CTRL_GET_COUNTRY_CODES: + /* Currently not supported */ +- tcpm_queue_message(port, PD_MSG_CTRL_NOT_SUPP); ++ tcpm_pd_handle_msg(port, ++ port->negotiated_rev < PD_REV30 ? ++ PD_MSG_CTRL_REJECT : ++ PD_MSG_CTRL_NOT_SUPP, ++ NONE_AMS); + break; + default: +- tcpm_log(port, "Unhandled ctrl message type %#x", type); ++ tcpm_pd_handle_msg(port, ++ port->negotiated_rev < PD_REV30 ? ++ PD_MSG_CTRL_REJECT : ++ PD_MSG_CTRL_NOT_SUPP, ++ NONE_AMS); ++ tcpm_log(port, "Unrecognized ctrl message type %#x", type); + break; + } + } +@@ -2076,34 +2820,37 @@ static void tcpm_pd_ext_msg_request(struct tcpm_port *port, + enum pd_ext_msg_type type = pd_header_type_le(msg->header); + unsigned int data_size = pd_ext_header_data_size_le(msg->ext_msg.header); + +- if (!(msg->ext_msg.header & PD_EXT_HDR_CHUNKED)) { ++ /* stopping VDM state machine if interrupted by other Messages */ ++ if (tcpm_vdm_ams(port)) { ++ port->vdm_state = VDM_STATE_ERR_BUSY; ++ tcpm_ams_finish(port); ++ mod_vdm_delayed_work(port, 0); ++ } ++ ++ if (!(le16_to_cpu(msg->ext_msg.header) & PD_EXT_HDR_CHUNKED)) { ++ tcpm_pd_handle_msg(port, PD_MSG_CTRL_NOT_SUPP, NONE_AMS); + tcpm_log(port, "Unchunked extended messages unsupported"); + return; + } + + if (data_size > PD_EXT_MAX_CHUNK_DATA) { ++ tcpm_pd_handle_state(port, CHUNK_NOT_SUPP, NONE_AMS, PD_T_CHUNK_NOT_SUPP); + tcpm_log(port, "Chunk handling not yet supported"); + return; + } + + switch (type) { + case PD_EXT_STATUS: +- /* +- * If PPS related events raised then get PPS status to clear +- * (see USB PD 3.0 Spec, 6.5.2.4) +- */ +- if (msg->ext_msg.data[USB_PD_EXT_SDB_EVENT_FLAGS] & +- USB_PD_EXT_SDB_PPS_EVENTS) +- tcpm_set_state(port, GET_PPS_STATUS_SEND, 0); +- else +- tcpm_set_state(port, ready_state(port), 0); +- break; + case PD_EXT_PPS_STATUS: +- /* +- * For now the PPS status message is used to clear events +- * and nothing more. +- */ +- tcpm_set_state(port, ready_state(port), 0); ++ if (port->ams == GETTING_SOURCE_SINK_STATUS) { ++ tcpm_ams_finish(port); ++ tcpm_set_state(port, ready_state(port), 0); ++ } else { ++ /* unexpected Status or PPS_Status Message */ ++ tcpm_pd_handle_state(port, port->pwr_role == TYPEC_SOURCE ? ++ SRC_SOFT_RESET_WAIT_SNK_TX : SNK_SOFT_RESET, ++ NONE_AMS, 0); ++ } + break; + case PD_EXT_SOURCE_CAP_EXT: + case PD_EXT_GET_BATT_CAP: +@@ -2117,10 +2864,11 @@ static void tcpm_pd_ext_msg_request(struct tcpm_port *port, + case PD_EXT_FW_UPDATE_RESPONSE: + case PD_EXT_COUNTRY_INFO: + case PD_EXT_COUNTRY_CODES: +- tcpm_queue_message(port, PD_MSG_CTRL_NOT_SUPP); ++ tcpm_pd_handle_msg(port, PD_MSG_CTRL_NOT_SUPP, NONE_AMS); + break; + default: +- tcpm_log(port, "Unhandled extended message type %#x", type); ++ tcpm_pd_handle_msg(port, PD_MSG_CTRL_NOT_SUPP, NONE_AMS); ++ tcpm_log(port, "Unrecognized extended message type %#x", type); + break; + } + } +@@ -2165,7 +2913,7 @@ static void tcpm_pd_rx_handler(struct kthread_work *work) + "Data role mismatch, initiating error recovery"); + tcpm_set_state(port, ERROR_RECOVERY, 0); + } else { +- if (msg->header & PD_HEADER_EXT_HDR) ++ if (le16_to_cpu(msg->header) & PD_HEADER_EXT_HDR) + tcpm_pd_ext_msg_request(port, msg); + else if (cnt) + tcpm_pd_data_request(port, msg); +@@ -2216,6 +2964,7 @@ static int tcpm_pd_send_control(struct tcpm_port *port, + static bool tcpm_send_queued_message(struct tcpm_port *port) + { + enum pd_msg_request queued_message; ++ int ret; + + do { + queued_message = port->queued_message; +@@ -2232,10 +2981,27 @@ static bool tcpm_send_queued_message(struct tcpm_port *port) + tcpm_pd_send_control(port, PD_CTRL_NOT_SUPP); + break; + case PD_MSG_DATA_SINK_CAP: +- tcpm_pd_send_sink_caps(port); ++ ret = tcpm_pd_send_sink_caps(port); ++ if (ret < 0) { ++ tcpm_log(port, "Unable to send snk caps, ret=%d", ret); ++ tcpm_set_state(port, SNK_SOFT_RESET, 0); ++ } ++ tcpm_ams_finish(port); + break; + case PD_MSG_DATA_SOURCE_CAP: +- tcpm_pd_send_source_caps(port); ++ ret = tcpm_pd_send_source_caps(port); ++ if (ret < 0) { ++ tcpm_log(port, ++ "Unable to send src caps, ret=%d", ++ ret); ++ tcpm_set_state(port, SOFT_RESET_SEND, 0); ++ } else if (port->pwr_role == TYPEC_SOURCE) { ++ tcpm_ams_finish(port); ++ tcpm_set_state(port, HARD_RESET_SEND, ++ PD_T_SENDER_RESPONSE); ++ } else { ++ tcpm_ams_finish(port); ++ } + break; + default: + break; +@@ -2601,6 +3367,12 @@ static int tcpm_pd_send_request(struct tcpm_port *port) + if (ret < 0) + return ret; + ++ /* ++ * Relax the threshold as voltage will be adjusted after Accept Message plus tSrcTransition. ++ * It is safer to modify the threshold here. ++ */ ++ tcpm_set_auto_vbus_discharge_threshold(port, TYPEC_PWR_MODE_USB, false, 0); ++ + memset(&msg, 0, sizeof(msg)); + msg.header = PD_HEADER_LE(PD_DATA_REQUEST, + port->pwr_role, +@@ -2698,6 +3470,9 @@ static int tcpm_pd_send_pps_request(struct tcpm_port *port) + if (ret < 0) + return ret; + ++ /* Relax the threshold as voltage will be adjusted right after Accept Message. */ ++ tcpm_set_auto_vbus_discharge_threshold(port, TYPEC_PWR_MODE_USB, false, 0); ++ + memset(&msg, 0, sizeof(msg)); + msg.header = PD_HEADER_LE(PD_DATA_REQUEST, + port->pwr_role, +@@ -2757,13 +3532,6 @@ static bool tcpm_start_toggling(struct tcpm_port *port, enum typec_cc_status cc) + return ret == 0; + } + +-static void tcpm_set_cc(struct tcpm_port *port, enum typec_cc_status cc) +-{ +- tcpm_log(port, "cc:=%d", cc); +- port->cc_req = cc; +- port->tcpc->set_cc(port->tcpc, cc); +-} +- + static int tcpm_init_vbus(struct tcpm_port *port) + { + int ret; +@@ -2815,8 +3583,9 @@ static int tcpm_src_attach(struct tcpm_port *port) + if (ret < 0) + return ret; + +- ret = tcpm_set_roles(port, true, TYPEC_SOURCE, +- tcpm_data_role_for_source(port)); ++ tcpm_enable_auto_vbus_discharge(port, true); ++ ++ ret = tcpm_set_roles(port, true, TYPEC_SOURCE, tcpm_data_role_for_source(port)); + if (ret < 0) + return ret; + +@@ -2845,6 +3614,7 @@ static int tcpm_src_attach(struct tcpm_port *port) + port->partner = NULL; + + port->attached = true; ++ port->debouncing = false; + port->send_discover = true; + + return 0; +@@ -2881,13 +3651,26 @@ static void tcpm_unregister_altmodes(struct tcpm_port *port) + memset(modep, 0, sizeof(*modep)); + } + ++static void tcpm_set_partner_usb_comm_capable(struct tcpm_port *port, bool capable) ++{ ++ tcpm_log(port, "Setting usb_comm capable %s", capable ? "true" : "false"); ++ ++ if (port->tcpc->set_partner_usb_comm_capable) ++ port->tcpc->set_partner_usb_comm_capable(port->tcpc, capable); ++} ++ + static void tcpm_reset_port(struct tcpm_port *port) + { ++ tcpm_enable_auto_vbus_discharge(port, false); ++ port->in_ams = false; ++ port->ams = NONE_AMS; ++ port->vdm_sm_running = false; + tcpm_unregister_altmodes(port); + tcpm_typec_disconnect(port); + port->attached = false; + port->pd_capable = false; + port->pps_data.supported = false; ++ tcpm_set_partner_usb_comm_capable(port, false); + + /* + * First Rx ID should be 0; set this to a sentinel of -1 so that +@@ -2946,8 +3729,9 @@ static int tcpm_snk_attach(struct tcpm_port *port) + if (ret < 0) + return ret; + +- ret = tcpm_set_roles(port, true, TYPEC_SINK, +- tcpm_data_role_for_sink(port)); ++ tcpm_enable_auto_vbus_discharge(port, true); ++ ++ ret = tcpm_set_roles(port, true, TYPEC_SINK, tcpm_data_role_for_sink(port)); + if (ret < 0) + return ret; + +@@ -2956,6 +3740,7 @@ static int tcpm_snk_attach(struct tcpm_port *port) + port->partner = NULL; + + port->attached = true; ++ port->debouncing = false; + port->send_discover = true; + + return 0; +@@ -2983,6 +3768,7 @@ static int tcpm_acc_attach(struct tcpm_port *port) + tcpm_typec_connect(port); + + port->attached = true; ++ port->debouncing = false; + + return 0; + } +@@ -3019,14 +3805,15 @@ static inline enum tcpm_state unattached_state(struct tcpm_port *port) + return SNK_UNATTACHED; + } + +-static void tcpm_check_send_discover(struct tcpm_port *port) ++bool tcpm_is_toggling(struct tcpm_port *port) + { +- if (port->data_role == TYPEC_HOST && port->send_discover && +- port->pd_capable) { +- tcpm_send_vdm(port, USB_SID_PD, CMD_DISCOVER_IDENT, NULL, 0); +- port->send_discover = false; +- } ++ if (port->port_type == TYPEC_PORT_DRP) ++ return port->state == SRC_UNATTACHED || port->state == SNK_UNATTACHED || ++ port->state == TOGGLING; ++ ++ return false; + } ++EXPORT_SYMBOL_GPL(tcpm_is_toggling); + + static void tcpm_swap_complete(struct tcpm_port *port, int result) + { +@@ -3055,7 +3842,11 @@ static void run_state_machine(struct tcpm_port *port) + { + int ret; + enum typec_pwr_opmode opmode; +- unsigned int msecs; ++ unsigned int msecs, timer_val_msecs; ++ enum tcpm_state upcoming_state; ++ const char *state_name; ++ u32 current_limit; ++ bool adjust; + + port->enter_state = port->state; + switch (port->state) { +@@ -3066,6 +3857,15 @@ static void run_state_machine(struct tcpm_port *port) + if (!port->non_pd_role_swap) + tcpm_swap_complete(port, -ENOTCONN); + tcpm_src_detach(port); ++ if (port->debouncing) { ++ port->debouncing = false; ++ if (port->tcpc->check_contaminant && ++ port->tcpc->check_contaminant(port->tcpc)) { ++ /* Contaminant detection would handle toggling */ ++ tcpm_set_state(port, TOGGLING, 0); ++ break; ++ } ++ } + if (tcpm_start_toggling(port, tcpm_rp_cc(port))) { + tcpm_set_state(port, TOGGLING, 0); + break; +@@ -3089,6 +3889,7 @@ static void run_state_machine(struct tcpm_port *port) + break; + + case SNK_TRY: ++ port->debouncing = false; + port->try_snk_count++; + /* + * Requirements: +@@ -3111,15 +3912,13 @@ static void run_state_machine(struct tcpm_port *port) + break; + case SNK_TRY_WAIT_DEBOUNCE: + tcpm_set_state(port, SNK_TRY_WAIT_DEBOUNCE_CHECK_VBUS, +- PD_T_PD_DEBOUNCE); ++ PD_T_TRY_CC_DEBOUNCE); + break; + case SNK_TRY_WAIT_DEBOUNCE_CHECK_VBUS: +- if (port->vbus_present && tcpm_port_is_sink(port)) { ++ if (port->vbus_present && tcpm_port_is_sink(port)) + tcpm_set_state(port, SNK_ATTACHED, 0); +- } else { +- tcpm_set_state(port, SRC_TRYWAIT, 0); ++ else + port->max_wait = 0; +- } + break; + case SRC_TRYWAIT: + tcpm_set_cc(port, tcpm_rp_cc(port)); +@@ -3158,7 +3957,12 @@ static void run_state_machine(struct tcpm_port *port) + port->message_id = 0; + port->rx_msgid = -1; + port->explicit_contract = false; +- tcpm_set_state(port, SRC_SEND_CAPABILITIES, 0); ++ /* SNK -> SRC POWER/FAST_ROLE_SWAP finished */ ++ if (port->ams == POWER_ROLE_SWAP || ++ port->ams == FAST_ROLE_SWAP) ++ tcpm_ams_finish(port); ++ port->upcoming_state = SRC_SEND_CAPABILITIES; ++ tcpm_ams_start(port, POWER_NEGOTIATION); + break; + case SRC_SEND_CAPABILITIES: + port->caps_count++; +@@ -3219,6 +4023,8 @@ static void run_state_machine(struct tcpm_port *port) + } + } else { + tcpm_pd_send_control(port, PD_CTRL_ACCEPT); ++ tcpm_set_partner_usb_comm_capable(port, ++ !!(port->sink_request & RDO_USB_COMM)); + tcpm_set_state(port, SRC_TRANSITION_SUPPLY, + PD_T_SRC_TRANSITION); + } +@@ -3237,10 +4043,39 @@ static void run_state_machine(struct tcpm_port *port) + #endif + port->try_src_count = 0; + +- tcpm_swap_complete(port, 0); +- tcpm_typec_connect(port); ++ tcpm_swap_complete(port, 0); ++ tcpm_typec_connect(port); ++ ++ if (port->ams != NONE_AMS) ++ tcpm_ams_finish(port); ++ if (port->next_ams != NONE_AMS) { ++ port->ams = port->next_ams; ++ port->next_ams = NONE_AMS; ++ } ++ ++ /* ++ * If previous AMS is interrupted, switch to the upcoming ++ * state. ++ */ ++ if (port->upcoming_state != INVALID_STATE) { ++ upcoming_state = port->upcoming_state; ++ port->upcoming_state = INVALID_STATE; ++ tcpm_set_state(port, upcoming_state, 0); ++ break; ++ } ++ ++ /* ++ * 6.4.4.3.1 Discover Identity ++ * "The Discover Identity Command Shall only be sent to SOP when there is an ++ * Explicit Contract." ++ * For now, this driver only supports SOP for DISCOVER_IDENTITY, thus using ++ * port->explicit_contract to decide whether to send the command. ++ */ ++ if (port->explicit_contract) ++ mod_send_discover_delayed_work(port, 0); ++ else ++ port->send_discover = false; + +- tcpm_check_send_discover(port); + /* + * 6.3.5 + * Sending ping messages is not necessary if +@@ -3265,6 +4100,15 @@ static void run_state_machine(struct tcpm_port *port) + tcpm_swap_complete(port, -ENOTCONN); + tcpm_pps_complete(port, -ENOTCONN); + tcpm_snk_detach(port); ++ if (port->debouncing) { ++ port->debouncing = false; ++ if (port->tcpc->check_contaminant && ++ port->tcpc->check_contaminant(port->tcpc)) { ++ /* Contaminant detection would handle toggling */ ++ tcpm_set_state(port, TOGGLING, 0); ++ break; ++ } ++ } + if (tcpm_start_toggling(port, TYPEC_CC_RD)) { + tcpm_set_state(port, TOGGLING, 0); + break; +@@ -3285,17 +4129,20 @@ static void run_state_machine(struct tcpm_port *port) + PD_T_PD_DEBOUNCE); + break; + case SNK_DEBOUNCED: +- if (tcpm_port_is_disconnected(port)) ++ if (tcpm_port_is_disconnected(port)) { + tcpm_set_state(port, SNK_UNATTACHED, + PD_T_PD_DEBOUNCE); +- else if (port->vbus_present) ++ } else if (port->vbus_present) { + tcpm_set_state(port, + tcpm_try_src(port) ? SRC_TRY + : SNK_ATTACHED, + 0); +- else ++ port->debouncing = false; ++ } else { + /* Wait for VBUS, but not forever */ + tcpm_set_state(port, PORT_RESET, PD_T_PS_SOURCE_ON); ++ port->debouncing = false; ++ } + break; + + case SRC_TRY: +@@ -3357,6 +4204,12 @@ static void run_state_machine(struct tcpm_port *port) + port->message_id = 0; + port->rx_msgid = -1; + port->explicit_contract = false; ++ ++ if (port->ams == POWER_ROLE_SWAP || ++ port->ams == FAST_ROLE_SWAP) ++ /* SRC -> SNK POWER/FAST_ROLE_SWAP finished */ ++ tcpm_ams_finish(port); ++ + tcpm_set_state(port, SNK_DISCOVERY, 0); + break; + case SNK_DISCOVERY: +@@ -3414,9 +4267,15 @@ static void run_state_machine(struct tcpm_port *port) + break; + case SNK_NEGOTIATE_CAPABILITIES: + port->pd_capable = true; ++ tcpm_set_partner_usb_comm_capable(port, ++ !!(port->source_caps[0] & PDO_FIXED_USB_COMM)); + port->hard_reset_count = 0; + ret = tcpm_pd_send_request(port); + if (ret < 0) { ++ /* Restore back to the original state */ ++ tcpm_set_auto_vbus_discharge_threshold(port, TYPEC_PWR_MODE_PD, ++ port->pps_data.active, ++ port->supply_voltage); + /* Let the Source send capabilities again. */ + tcpm_set_state(port, SNK_WAIT_CAPABILITIES, 0); + } else { +@@ -3427,6 +4286,10 @@ static void run_state_machine(struct tcpm_port *port) + case SNK_NEGOTIATE_PPS_CAPABILITIES: + ret = tcpm_pd_send_pps_request(port); + if (ret < 0) { ++ /* Restore back to the original state */ ++ tcpm_set_auto_vbus_discharge_threshold(port, TYPEC_PWR_MODE_PD, ++ port->pps_data.active, ++ port->supply_voltage); + port->pps_status = ret; + /* + * If this was called due to updates to sink +@@ -3443,6 +4306,23 @@ static void run_state_machine(struct tcpm_port *port) + } + break; + case SNK_TRANSITION_SINK: ++ /* From the USB PD spec: ++ * "The Sink Shall transition to Sink Standby before a positive or ++ * negative voltage transition of VBUS. During Sink Standby ++ * the Sink Shall reduce its power draw to pSnkStdby." ++ * ++ * This is not applicable to PPS though as the port can continue ++ * to draw negotiated power without switching to standby. ++ */ ++ if (port->supply_voltage != port->req_supply_voltage && !port->pps_data.active && ++ port->current_limit * port->supply_voltage / 1000 > PD_P_SNK_STDBY_MW) { ++ u32 stdby_ma = PD_P_SNK_STDBY_MW * 1000 / port->supply_voltage; ++ ++ tcpm_log(port, "Setting standby current %u mV @ %u mA", ++ port->supply_voltage, stdby_ma); ++ tcpm_set_current_limit(port, stdby_ma, port->supply_voltage); ++ } ++ fallthrough; + case SNK_TRANSITION_SINK_VBUS: + tcpm_set_state(port, hard_reset_state(port), + PD_T_PS_TRANSITION); +@@ -3458,9 +4338,39 @@ static void run_state_machine(struct tcpm_port *port) + + tcpm_swap_complete(port, 0); + tcpm_typec_connect(port); +- tcpm_check_send_discover(port); + mod_enable_frs_delayed_work(port, 0); + tcpm_pps_complete(port, port->pps_status); ++ ++ if (port->ams != NONE_AMS) ++ tcpm_ams_finish(port); ++ if (port->next_ams != NONE_AMS) { ++ port->ams = port->next_ams; ++ port->next_ams = NONE_AMS; ++ } ++ ++ /* ++ * If previous AMS is interrupted, switch to the upcoming ++ * state. ++ */ ++ if (port->upcoming_state != INVALID_STATE) { ++ upcoming_state = port->upcoming_state; ++ port->upcoming_state = INVALID_STATE; ++ tcpm_set_state(port, upcoming_state, 0); ++ break; ++ } ++ ++ /* ++ * 6.4.4.3.1 Discover Identity ++ * "The Discover Identity Command Shall only be sent to SOP when there is an ++ * Explicit Contract." ++ * For now, this driver only supports SOP for DISCOVER_IDENTITY, thus using ++ * port->explicit_contract. ++ */ ++ if (port->explicit_contract) ++ mod_send_discover_delayed_work(port, 0); ++ else ++ port->send_discover = false; ++ + power_supply_changed(port->psy); + break; + +@@ -3481,8 +4391,14 @@ static void run_state_machine(struct tcpm_port *port) + + /* Hard_Reset states */ + case HARD_RESET_SEND: +- tcpm_pd_transmit(port, TCPC_TX_HARD_RESET, NULL); +- tcpm_set_state(port, HARD_RESET_START, 0); ++ if (port->ams != NONE_AMS) ++ tcpm_ams_finish(port); ++ /* ++ * State machine will be directed to HARD_RESET_START, ++ * thus set upcoming_state to INVALID_STATE. ++ */ ++ port->upcoming_state = INVALID_STATE; ++ tcpm_ams_start(port, HARD_RESET); + break; + case HARD_RESET_START: + port->sink_cap_done = false; +@@ -3526,11 +4442,15 @@ static void run_state_machine(struct tcpm_port *port) + case SRC_HARD_RESET_VBUS_ON: + tcpm_set_vconn(port, true); + tcpm_set_vbus(port, true); ++ if (port->ams == HARD_RESET) ++ tcpm_ams_finish(port); + port->tcpc->set_pd_rx(port->tcpc, true); + tcpm_set_attached_state(port, true); + tcpm_set_state(port, SRC_UNATTACHED, PD_T_PS_SOURCE_ON); + break; + case SNK_HARD_RESET_SINK_OFF: ++ /* Do not discharge/disconnect during hard reseet */ ++ tcpm_set_auto_vbus_discharge_threshold(port, TYPEC_PWR_MODE_USB, false, 0); + memset(&port->pps_data, 0, sizeof(port->pps_data)); + tcpm_set_vconn(port, false); + if (port->pd_capable) +@@ -3545,6 +4465,8 @@ static void run_state_machine(struct tcpm_port *port) + tcpm_set_state(port, SNK_HARD_RESET_SINK_ON, PD_T_SAFE_0V); + break; + case SNK_HARD_RESET_WAIT_VBUS: ++ if (port->ams == HARD_RESET) ++ tcpm_ams_finish(port); + /* Assume we're disconnected if VBUS doesn't come back. */ + tcpm_set_state(port, SNK_UNATTACHED, + PD_T_SRC_RECOVER_MAX + PD_T_SRC_TURN_ON); +@@ -3572,7 +4494,10 @@ static void run_state_machine(struct tcpm_port *port) + 5000); + tcpm_set_charge(port, true); + } ++ if (port->ams == HARD_RESET) ++ tcpm_ams_finish(port); + tcpm_set_attached_state(port, true); ++ tcpm_set_auto_vbus_discharge_threshold(port, TYPEC_PWR_MODE_USB, false, VSAFE5V); + tcpm_set_state(port, SNK_STARTUP, 0); + break; + +@@ -3581,10 +4506,20 @@ static void run_state_machine(struct tcpm_port *port) + port->message_id = 0; + port->rx_msgid = -1; + tcpm_pd_send_control(port, PD_CTRL_ACCEPT); +- if (port->pwr_role == TYPEC_SOURCE) +- tcpm_set_state(port, SRC_SEND_CAPABILITIES, 0); +- else ++ tcpm_ams_finish(port); ++ if (port->pwr_role == TYPEC_SOURCE) { ++ port->upcoming_state = SRC_SEND_CAPABILITIES; ++ tcpm_ams_start(port, POWER_NEGOTIATION); ++ } else { + tcpm_set_state(port, SNK_WAIT_CAPABILITIES, 0); ++ } ++ break; ++ case SRC_SOFT_RESET_WAIT_SNK_TX: ++ case SNK_SOFT_RESET: ++ if (port->ams != NONE_AMS) ++ tcpm_ams_finish(port); ++ port->upcoming_state = SOFT_RESET_SEND; ++ tcpm_ams_start(port, SOFT_RESET_AMS); + break; + case SOFT_RESET_SEND: + port->message_id = 0; +@@ -3599,15 +4534,21 @@ static void run_state_machine(struct tcpm_port *port) + /* DR_Swap states */ + case DR_SWAP_SEND: + tcpm_pd_send_control(port, PD_CTRL_DR_SWAP); ++ if (port->data_role == TYPEC_DEVICE || port->negotiated_rev > PD_REV20) ++ port->send_discover = true; + tcpm_set_state_cond(port, DR_SWAP_SEND_TIMEOUT, + PD_T_SENDER_RESPONSE); + break; + case DR_SWAP_ACCEPT: + tcpm_pd_send_control(port, PD_CTRL_ACCEPT); ++ if (port->data_role == TYPEC_DEVICE || port->negotiated_rev > PD_REV20) ++ port->send_discover = true; + tcpm_set_state_cond(port, DR_SWAP_CHANGE_DR, 0); + break; + case DR_SWAP_SEND_TIMEOUT: + tcpm_swap_complete(port, -ETIMEDOUT); ++ port->send_discover = false; ++ tcpm_ams_finish(port); + tcpm_set_state(port, ready_state(port), 0); + break; + case DR_SWAP_CHANGE_DR: +@@ -3618,8 +4559,8 @@ static void run_state_machine(struct tcpm_port *port) + } else { + tcpm_set_roles(port, true, port->pwr_role, + TYPEC_HOST); +- port->send_discover = true; + } ++ tcpm_ams_finish(port); + tcpm_set_state(port, ready_state(port), 0); + break; + +@@ -3667,6 +4608,7 @@ static void run_state_machine(struct tcpm_port *port) + tcpm_set_state(port, ready_state(port), 0); + break; + case PR_SWAP_START: ++ tcpm_apply_rc(port); + if (port->pwr_role == TYPEC_SOURCE) + tcpm_set_state(port, PR_SWAP_SRC_SNK_TRANSITION_OFF, + PD_T_SRC_TRANSITION); +@@ -3674,6 +4616,10 @@ static void run_state_machine(struct tcpm_port *port) + tcpm_set_state(port, PR_SWAP_SNK_SRC_SINK_OFF, 0); + break; + case PR_SWAP_SRC_SNK_TRANSITION_OFF: ++ /* ++ * Prevent vbus discharge circuit from turning on during PR_SWAP ++ * as this is not a disconnect. ++ */ + tcpm_set_vbus(port, false); + port->explicit_contract = false; + /* allow time for Vbus discharge, must be < tSrcSwapStdby */ +@@ -3699,9 +4645,12 @@ static void run_state_machine(struct tcpm_port *port) + tcpm_set_state(port, ERROR_RECOVERY, 0); + break; + } +- tcpm_set_state_cond(port, SNK_UNATTACHED, PD_T_PS_SOURCE_ON); ++ tcpm_set_state(port, ERROR_RECOVERY, PD_T_PS_SOURCE_ON_PRS); + break; + case PR_SWAP_SRC_SNK_SINK_ON: ++ tcpm_enable_auto_vbus_discharge(port, true); ++ /* Set the vbus disconnect threshold for implicit contract */ ++ tcpm_set_auto_vbus_discharge_threshold(port, TYPEC_PWR_MODE_USB, false, VSAFE5V); + tcpm_set_state(port, SNK_STARTUP, 0); + break; + case PR_SWAP_SNK_SRC_SINK_OFF: +@@ -3710,6 +4659,7 @@ static void run_state_machine(struct tcpm_port *port) + PD_T_PS_SOURCE_OFF); + break; + case PR_SWAP_SNK_SRC_SOURCE_ON: ++ tcpm_enable_auto_vbus_discharge(port, true); + tcpm_set_cc(port, tcpm_rp_cc(port)); + tcpm_set_vbus(port, true); + /* +@@ -3735,6 +4685,7 @@ static void run_state_machine(struct tcpm_port *port) + + case VCONN_SWAP_ACCEPT: + tcpm_pd_send_control(port, PD_CTRL_ACCEPT); ++ tcpm_ams_finish(port); + tcpm_set_state(port, VCONN_SWAP_START, 0); + break; + case VCONN_SWAP_SEND: +@@ -3839,6 +4790,25 @@ static void run_state_machine(struct tcpm_port *port) + tcpm_default_state(port), + port->vbus_present ? PD_T_PS_SOURCE_OFF : 0); + break; ++ ++ /* AMS intermediate state */ ++ case AMS_START: ++ if (port->upcoming_state == INVALID_STATE) { ++ tcpm_set_state(port, port->pwr_role == TYPEC_SOURCE ? ++ SRC_READY : SNK_READY, 0); ++ break; ++ } ++ ++ upcoming_state = port->upcoming_state; ++ port->upcoming_state = INVALID_STATE; ++ tcpm_set_state(port, upcoming_state, 0); ++ break; ++ ++ /* Chunk state */ ++ case CHUNK_NOT_SUPP: ++ tcpm_pd_send_control(port, PD_CTRL_NOT_SUPP); ++ tcpm_set_state(port, port->pwr_role == TYPEC_SOURCE ? SRC_READY : SNK_READY, 0); ++ break; + default: + WARN(1, "Unexpected port state %d\n", port->state); + break; +@@ -3928,9 +4898,9 @@ static void _tcpm_cc_change(struct tcpm_port *port, enum typec_cc_status cc1, + if (tcpm_port_is_disconnected(port) || + !tcpm_port_is_source(port)) { + if (port->port_type == TYPEC_PORT_SRC) +- tcpm_set_state(port, SRC_UNATTACHED, 0); ++ tcpm_set_state(port, SRC_UNATTACHED, tcpm_wait_for_discharge(port)); + else +- tcpm_set_state(port, SNK_UNATTACHED, 0); ++ tcpm_set_state(port, SNK_UNATTACHED, tcpm_wait_for_discharge(port)); + } + break; + case SNK_UNATTACHED: +@@ -3961,7 +4931,23 @@ static void _tcpm_cc_change(struct tcpm_port *port, enum typec_cc_status cc1, + tcpm_set_state(port, SNK_DEBOUNCED, 0); + break; + case SNK_READY: +- if (tcpm_port_is_disconnected(port)) ++ /* ++ * EXIT condition is based primarily on vbus disconnect and CC is secondary. ++ * "A port that has entered into USB PD communications with the Source and ++ * has seen the CC voltage exceed vRd-USB may monitor the CC pin to detect ++ * cable disconnect in addition to monitoring VBUS. ++ * ++ * A port that is monitoring the CC voltage for disconnect (but is not in ++ * the process of a USB PD PR_Swap or USB PD FR_Swap) shall transition to ++ * Unattached.SNK within tSinkDisconnect after the CC voltage remains below ++ * vRd-USB for tPDDebounce." ++ * ++ * When set_auto_vbus_discharge_threshold is enabled, CC pins go ++ * away before vbus decays to disconnect threshold. Allow ++ * disconnect to be driven by vbus disconnect when auto vbus ++ * discharge is enabled. ++ */ ++ if (!port->auto_vbus_discharge_enabled && tcpm_port_is_disconnected(port)) + tcpm_set_state(port, unattached_state(port), 0); + else if (!port->pd_capable && + (cc1 != old_cc1 || cc2 != old_cc2)) +@@ -4026,6 +5012,12 @@ static void _tcpm_cc_change(struct tcpm_port *port, enum typec_cc_status cc1, + if (!tcpm_port_is_sink(port)) + tcpm_set_state(port, SNK_TRYWAIT_DEBOUNCE, 0); + break; ++ case SNK_TRY_WAIT_DEBOUNCE_CHECK_VBUS: ++ if (!tcpm_port_is_sink(port)) ++ tcpm_set_state(port, SRC_TRYWAIT, PD_T_TRY_CC_DEBOUNCE); ++ else ++ tcpm_set_state(port, SNK_TRY_WAIT_DEBOUNCE_CHECK_VBUS, 0); ++ break; + case SNK_TRYWAIT: + /* Do nothing, waiting for tCCDebounce */ + break; +@@ -4054,9 +5046,13 @@ static void _tcpm_cc_change(struct tcpm_port *port, enum typec_cc_status cc1, + * Ignore CC changes here. + */ + break; +- + default: +- if (tcpm_port_is_disconnected(port)) ++ /* ++ * While acting as sink and auto vbus discharge is enabled, Allow disconnect ++ * to be driven by vbus disconnect. ++ */ ++ if (tcpm_port_is_disconnected(port) && !(port->pwr_role == TYPEC_SINK && ++ port->auto_vbus_discharge_enabled)) + tcpm_set_state(port, unattached_state(port), 0); + break; + } +@@ -4066,6 +5062,12 @@ static void _tcpm_pd_vbus_on(struct tcpm_port *port) + { + tcpm_log_force(port, "VBUS on"); + port->vbus_present = true; ++ /* ++ * When vbus_present is true i.e. Voltage at VBUS is greater than VSAFE5V implicitly ++ * states that vbus is not at VSAFE0V, hence clear the vbus_vsafe0v flag here. ++ */ ++ port->vbus_vsafe0v = false; ++ + switch (port->state) { + case SNK_TRANSITION_SINK_VBUS: + port->explicit_contract = true; +@@ -4112,11 +5114,24 @@ static void _tcpm_pd_vbus_on(struct tcpm_port *port) + case SNK_TRYWAIT_DEBOUNCE: + /* Do nothing, waiting for Rp */ + break; ++ case SNK_TRY_WAIT_DEBOUNCE_CHECK_VBUS: ++ if (port->vbus_present && tcpm_port_is_sink(port)) ++ tcpm_set_state(port, SNK_ATTACHED, 0); ++ break; + case SRC_TRY_WAIT: + case SRC_TRY_DEBOUNCE: + /* Do nothing, waiting for sink detection */ + break; ++ case FR_SWAP_SEND: ++ case FR_SWAP_SEND_TIMEOUT: ++ case FR_SWAP_SNK_SRC_TRANSITION_TO_OFF: ++ case FR_SWAP_SNK_SRC_SOURCE_VBUS_APPLIED: ++ if (port->tcpc->frs_sourcing_vbus) ++ port->tcpc->frs_sourcing_vbus(port->tcpc); ++ break; + case FR_SWAP_SNK_SRC_NEW_SINK_READY: ++ if (port->tcpc->frs_sourcing_vbus) ++ port->tcpc->frs_sourcing_vbus(port->tcpc); + tcpm_set_state(port, FR_SWAP_SNK_SRC_SOURCE_VBUS_APPLIED, 0); + break; + +@@ -4142,16 +5157,8 @@ static void _tcpm_pd_vbus_off(struct tcpm_port *port) + case SNK_HARD_RESET_SINK_OFF: + tcpm_set_state(port, SNK_HARD_RESET_WAIT_VBUS, 0); + break; +- case SRC_HARD_RESET_VBUS_OFF: +- /* +- * After establishing the vSafe0V voltage condition on VBUS, the Source Shall wait +- * tSrcRecover before re-applying VCONN and restoring VBUS to vSafe5V. +- */ +- tcpm_set_state(port, SRC_HARD_RESET_VBUS_ON, PD_T_SRC_RECOVER); +- break; + case HARD_RESET_SEND: + break; +- + case SNK_TRY: + /* Do nothing, waiting for timeout */ + break; +@@ -4168,6 +5175,7 @@ static void _tcpm_pd_vbus_off(struct tcpm_port *port) + case SNK_TRYWAIT_DEBOUNCE: + break; + case SNK_ATTACH_WAIT: ++ port->debouncing = false; + tcpm_set_state(port, SNK_UNATTACHED, 0); + break; + +@@ -4182,6 +5190,14 @@ static void _tcpm_pd_vbus_off(struct tcpm_port *port) + /* Do nothing, expected */ + break; + ++ case PR_SWAP_SNK_SRC_SOURCE_ON: ++ /* ++ * Do nothing when vbus off notification is received. ++ * TCPM can wait for PD_T_NEWSRC in PR_SWAP_SNK_SRC_SOURCE_ON ++ * for the vbus source to ramp up. ++ */ ++ break; ++ + case PORT_RESET_WAIT_OFF: + tcpm_set_state(port, tcpm_default_state(port), 0); + break; +@@ -4191,6 +5207,25 @@ static void _tcpm_pd_vbus_off(struct tcpm_port *port) + /* Do nothing, waiting for sink detection */ + break; + ++ case SRC_STARTUP: ++ case SRC_SEND_CAPABILITIES: ++ case SRC_SEND_CAPABILITIES_TIMEOUT: ++ case SRC_NEGOTIATE_CAPABILITIES: ++ case SRC_TRANSITION_SUPPLY: ++ case SRC_READY: ++ case SRC_WAIT_NEW_CAPABILITIES: ++ /* ++ * Force to unattached state to re-initiate connection. ++ * DRP port should move to Unattached.SNK instead of Unattached.SRC if ++ * sink removed. Although sink removal here is due to source's vbus collapse, ++ * treat it the same way for consistency. ++ */ ++ if (port->port_type == TYPEC_PORT_SRC) ++ tcpm_set_state(port, SRC_UNATTACHED, tcpm_wait_for_discharge(port)); ++ else ++ tcpm_set_state(port, SNK_UNATTACHED, tcpm_wait_for_discharge(port)); ++ break; ++ + case PORT_RESET: + /* + * State set back to default mode once the timer completes. +@@ -4207,8 +5242,51 @@ static void _tcpm_pd_vbus_off(struct tcpm_port *port) + break; + + default: +- if (port->pwr_role == TYPEC_SINK && +- port->attached) ++ if (port->pwr_role == TYPEC_SINK && port->attached) ++ tcpm_set_state(port, SNK_UNATTACHED, tcpm_wait_for_discharge(port)); ++ break; ++ } ++} ++ ++static void _tcpm_pd_vbus_vsafe0v(struct tcpm_port *port) ++{ ++ unsigned int timer_val_msecs; ++ ++ tcpm_log_force(port, "VBUS VSAFE0V"); ++ port->vbus_vsafe0v = true; ++ switch (port->state) { ++ case SRC_HARD_RESET_VBUS_OFF: ++ /* ++ * After establishing the vSafe0V voltage condition on VBUS, the Source Shall wait ++ * tSrcRecover before re-applying VCONN and restoring VBUS to vSafe5V. ++ */ ++ tcpm_set_state(port, SRC_HARD_RESET_VBUS_ON, PD_T_SRC_RECOVER); ++ break; ++ case SRC_ATTACH_WAIT: ++ if (tcpm_port_is_source(port)) ++ tcpm_set_state(port, tcpm_try_snk(port) ? SNK_TRY : SRC_ATTACHED, ++ PD_T_CC_DEBOUNCE); ++ break; ++ case SRC_STARTUP: ++ case SRC_SEND_CAPABILITIES: ++ case SRC_SEND_CAPABILITIES_TIMEOUT: ++ case SRC_NEGOTIATE_CAPABILITIES: ++ case SRC_TRANSITION_SUPPLY: ++ case SRC_READY: ++ case SRC_WAIT_NEW_CAPABILITIES: ++ if (port->auto_vbus_discharge_enabled) { ++ if (port->port_type == TYPEC_PORT_SRC) ++ tcpm_set_state(port, SRC_UNATTACHED, 0); ++ else ++ tcpm_set_state(port, SNK_UNATTACHED, 0); ++ } ++ break; ++ case PR_SWAP_SNK_SRC_SINK_OFF: ++ case PR_SWAP_SNK_SRC_SOURCE_ON: ++ /* Do nothing, vsafe0v is expected during transition */ ++ break; ++ default: ++ if (port->pwr_role == TYPEC_SINK && port->auto_vbus_discharge_enabled) + tcpm_set_state(port, SNK_UNATTACHED, 0); + break; + } +@@ -4220,6 +5298,10 @@ static void _tcpm_pd_hard_reset(struct tcpm_port *port) + if (port->bist_request == BDO_MODE_TESTDATA && port->tcpc->set_bist_data) + port->tcpc->set_bist_data(port->tcpc, false); + ++ if (port->ams != NONE_AMS) ++ port->ams = NONE_AMS; ++ if (port->hard_reset_count < PD_N_HARD_RESET_COUNT) ++ port->ams = HARD_RESET; + /* + * If we keep receiving hard reset requests, executing the hard reset + * must have failed. Revert to error recovery if that happens. +@@ -4249,10 +5331,19 @@ static void tcpm_pd_event_handler(struct kthread_work *work) + bool vbus; + + vbus = port->tcpc->get_vbus(port->tcpc); +- if (vbus) ++ if (vbus) { + _tcpm_pd_vbus_on(port); +- else ++ } else { + _tcpm_pd_vbus_off(port); ++ /* ++ * When TCPC does not support detecting vsafe0v voltage level, ++ * treat vbus absent as vsafe0v. Else invoke is_vbus_vsafe0v ++ * to see if vbus has discharge to VSAFE0V. ++ */ ++ if (!port->tcpc->is_vbus_vsafe0v || ++ port->tcpc->is_vbus_vsafe0v(port->tcpc)) ++ _tcpm_pd_vbus_vsafe0v(port); ++ } + } + if (events & TCPM_CC_EVENT) { + enum typec_cc_status cc1, cc2; +@@ -4261,10 +5352,16 @@ static void tcpm_pd_event_handler(struct kthread_work *work) + _tcpm_cc_change(port, cc1, cc2); + } + if (events & TCPM_FRS_EVENT) { +- if (port->state == SNK_READY) +- tcpm_set_state(port, FR_SWAP_SEND, 0); +- else ++ if (port->state == SNK_READY) { ++ int ret; ++ ++ port->upcoming_state = FR_SWAP_SEND; ++ ret = tcpm_ams_start(port, FAST_ROLE_SWAP); ++ if (ret == -EAGAIN) ++ port->upcoming_state = INVALID_STATE; ++ } else { + tcpm_log(port, "Discarding FRS_SIGNAL! Not in sink ready"); ++ } + } + if (events & TCPM_SOURCING_VBUS) { + tcpm_log(port, "sourcing vbus"); +@@ -4333,6 +5430,7 @@ EXPORT_SYMBOL_GPL(tcpm_sourcing_vbus); + static void tcpm_enable_frs_work(struct kthread_work *work) + { + struct tcpm_port *port = container_of(work, struct tcpm_port, enable_frs); ++ int ret; + + mutex_lock(&port->lock); + /* Not FRS capable */ +@@ -4344,18 +5442,49 @@ static void tcpm_enable_frs_work(struct kthread_work *work) + goto unlock; + + /* Send when the state machine is idle */ +- if (port->state != SNK_READY || port->vdm_state != VDM_STATE_DONE || port->send_discover) ++ if (port->state != SNK_READY || port->vdm_sm_running || port->send_discover) + goto resched; + +- tcpm_set_state(port, GET_SINK_CAP, 0); +- port->sink_cap_done = true; +- ++ port->upcoming_state = GET_SINK_CAP; ++ ret = tcpm_ams_start(port, GET_SINK_CAPABILITIES); ++ if (ret == -EAGAIN) { ++ port->upcoming_state = INVALID_STATE; ++ } else { ++ port->sink_cap_done = true; ++ goto unlock; ++ } + resched: + mod_enable_frs_delayed_work(port, GET_SINK_CAP_RETRY_MS); + unlock: + mutex_unlock(&port->lock); + } + ++static void tcpm_send_discover_work(struct kthread_work *work) ++{ ++ struct tcpm_port *port = container_of(work, struct tcpm_port, send_discover_work); ++ ++ mutex_lock(&port->lock); ++ /* No need to send DISCOVER_IDENTITY anymore */ ++ if (!port->send_discover) ++ goto unlock; ++ ++ if (port->data_role == TYPEC_DEVICE && port->negotiated_rev < PD_REV30) { ++ port->send_discover = false; ++ goto unlock; ++ } ++ ++ /* Retry if the port is not idle */ ++ if ((port->state != SRC_READY && port->state != SNK_READY) || port->vdm_sm_running) { ++ mod_send_discover_delayed_work(port, SEND_DISCOVER_RETRY_MS); ++ goto unlock; ++ } ++ ++ tcpm_send_vdm(port, USB_SID_PD, CMD_DISCOVER_IDENT, NULL, 0); ++ ++unlock: ++ mutex_unlock(&port->lock); ++} ++ + static int tcpm_dr_set(struct typec_port *p, enum typec_data_role data) + { + struct tcpm_port *port = typec_get_drvdata(p); +@@ -4399,7 +5528,12 @@ static int tcpm_dr_set(struct typec_port *p, enum typec_data_role data) + port->non_pd_role_swap = true; + tcpm_set_state(port, PORT_RESET, 0); + } else { +- tcpm_set_state(port, DR_SWAP_SEND, 0); ++ port->upcoming_state = DR_SWAP_SEND; ++ ret = tcpm_ams_start(port, DATA_ROLE_SWAP); ++ if (ret == -EAGAIN) { ++ port->upcoming_state = INVALID_STATE; ++ goto port_unlock; ++ } + } + + port->swap_status = 0; +@@ -4445,10 +5579,16 @@ static int tcpm_pr_set(struct typec_port *p, enum typec_role role) + goto port_unlock; + } + ++ port->upcoming_state = PR_SWAP_SEND; ++ ret = tcpm_ams_start(port, POWER_ROLE_SWAP); ++ if (ret == -EAGAIN) { ++ port->upcoming_state = INVALID_STATE; ++ goto port_unlock; ++ } ++ + port->swap_status = 0; + port->swap_pending = true; + reinit_completion(&port->swap_complete); +- tcpm_set_state(port, PR_SWAP_SEND, 0); + mutex_unlock(&port->lock); + + if (!wait_for_completion_timeout(&port->swap_complete, +@@ -4484,10 +5624,16 @@ static int tcpm_vconn_set(struct typec_port *p, enum typec_role role) + goto port_unlock; + } + ++ port->upcoming_state = VCONN_SWAP_SEND; ++ ret = tcpm_ams_start(port, VCONN_SWAP); ++ if (ret == -EAGAIN) { ++ port->upcoming_state = INVALID_STATE; ++ goto port_unlock; ++ } ++ + port->swap_status = 0; + port->swap_pending = true; + reinit_completion(&port->swap_complete); +- tcpm_set_state(port, VCONN_SWAP_SEND, 0); + mutex_unlock(&port->lock); + + if (!wait_for_completion_timeout(&port->swap_complete, +@@ -4552,6 +5698,13 @@ static int tcpm_pps_set_op_curr(struct tcpm_port *port, u16 req_op_curr) + goto port_unlock; + } + ++ port->upcoming_state = SNK_NEGOTIATE_PPS_CAPABILITIES; ++ ret = tcpm_ams_start(port, POWER_NEGOTIATION); ++ if (ret == -EAGAIN) { ++ port->upcoming_state = INVALID_STATE; ++ goto port_unlock; ++ } ++ + /* Round down operating current to align with PPS valid steps */ + req_op_curr = req_op_curr - (req_op_curr % RDO_PROG_CURR_MA_STEP); + +@@ -4559,7 +5712,6 @@ static int tcpm_pps_set_op_curr(struct tcpm_port *port, u16 req_op_curr) + port->pps_data.req_op_curr = req_op_curr; + port->pps_status = 0; + port->pps_pending = true; +- tcpm_set_state(port, SNK_NEGOTIATE_PPS_CAPABILITIES, 0); + mutex_unlock(&port->lock); + + if (!wait_for_completion_timeout(&port->pps_complete, +@@ -4608,6 +5760,13 @@ static int tcpm_pps_set_out_volt(struct tcpm_port *port, u16 req_out_volt) + goto port_unlock; + } + ++ port->upcoming_state = SNK_NEGOTIATE_PPS_CAPABILITIES; ++ ret = tcpm_ams_start(port, POWER_NEGOTIATION); ++ if (ret == -EAGAIN) { ++ port->upcoming_state = INVALID_STATE; ++ goto port_unlock; ++ } ++ + /* Round down output voltage to align with PPS valid steps */ + req_out_volt = req_out_volt - (req_out_volt % RDO_PROG_VOLT_MV_STEP); + +@@ -4615,7 +5774,6 @@ static int tcpm_pps_set_out_volt(struct tcpm_port *port, u16 req_out_volt) + port->pps_data.req_out_volt = req_out_volt; + port->pps_status = 0; + port->pps_pending = true; +- tcpm_set_state(port, SNK_NEGOTIATE_PPS_CAPABILITIES, 0); + mutex_unlock(&port->lock); + + if (!wait_for_completion_timeout(&port->pps_complete, +@@ -4655,6 +5813,16 @@ static int tcpm_pps_activate(struct tcpm_port *port, bool activate) + goto port_unlock; + } + ++ if (activate) ++ port->upcoming_state = SNK_NEGOTIATE_PPS_CAPABILITIES; ++ else ++ port->upcoming_state = SNK_NEGOTIATE_CAPABILITIES; ++ ret = tcpm_ams_start(port, POWER_NEGOTIATION); ++ if (ret == -EAGAIN) { ++ port->upcoming_state = INVALID_STATE; ++ goto port_unlock; ++ } ++ + reinit_completion(&port->pps_complete); + port->pps_status = 0; + port->pps_pending = true; +@@ -4663,9 +5831,6 @@ static int tcpm_pps_activate(struct tcpm_port *port, bool activate) + if (activate) { + port->pps_data.req_out_volt = port->supply_voltage; + port->pps_data.req_op_curr = port->current_limit; +- tcpm_set_state(port, SNK_NEGOTIATE_PPS_CAPABILITIES, 0); +- } else { +- tcpm_set_state(port, SNK_NEGOTIATE_CAPABILITIES, 0); + } + mutex_unlock(&port->lock); + +@@ -4702,6 +5867,24 @@ static void tcpm_init(struct tcpm_port *port) + if (port->vbus_present) + port->vbus_never_low = true; + ++ /* ++ * 1. When vbus_present is true, voltage on VBUS is already at VSAFE5V. ++ * So implicitly vbus_vsafe0v = false. ++ * ++ * 2. When vbus_present is false and TCPC does NOT support querying ++ * vsafe0v status, then, it's best to assume vbus is at VSAFE0V i.e. ++ * vbus_vsafe0v is true. ++ * ++ * 3. When vbus_present is false and TCPC does support querying vsafe0v, ++ * then, query tcpc for vsafe0v status. ++ */ ++ if (port->vbus_present) ++ port->vbus_vsafe0v = false; ++ else if (!port->tcpc->is_vbus_vsafe0v) ++ port->vbus_vsafe0v = true; ++ else ++ port->vbus_vsafe0v = port->tcpc->is_vbus_vsafe0v(port->tcpc); ++ + tcpm_set_state(port, tcpm_default_state(port), 0); + + if (port->tcpc->get_cc(port->tcpc, &cc1, &cc2) == 0) +@@ -4787,6 +5970,7 @@ static int tcpm_fw_get_caps(struct tcpm_port *port, + port->typec_caps.type = ret; + port->port_type = port->typec_caps.type; + ++ port->slow_charger_loop = fwnode_property_read_bool(fwnode, "slow-charger-loop"); + if (port->port_type == TYPEC_PORT_SNK) + goto sink; + +@@ -4834,14 +6018,99 @@ static int tcpm_fw_get_caps(struct tcpm_port *port, + + /* FRS can only be supported byb DRP ports */ + if (port->port_type == TYPEC_PORT_DRP) { +- ret = fwnode_property_read_u32(fwnode, "frs-typec-current", &frs_current); ++ ret = fwnode_property_read_u32(fwnode, "new-source-frs-typec-current", ++ &frs_current); + if (ret >= 0 && frs_current <= FRS_5V_3A) +- port->frs_current = frs_current; ++ port->new_source_frs_current = frs_current; ++ } ++ ++ /* sink-vdos is optional */ ++ ret = fwnode_property_count_u32(fwnode, "sink-vdos"); ++ if (ret < 0) ++ ret = 0; ++ ++ port->nr_snk_vdo = min(ret, VDO_MAX_OBJECTS); ++ if (port->nr_snk_vdo) { ++ ret = fwnode_property_read_u32_array(fwnode, "sink-vdos", ++ port->snk_vdo, ++ port->nr_snk_vdo); ++ if (ret < 0) ++ return ret; ++ } ++ ++ /* If sink-vdos is found, sink-vdos-v1 is expected for backward compatibility. */ ++ if (port->nr_snk_vdo) { ++ ret = fwnode_property_count_u32(fwnode, "sink-vdos-v1"); ++ if (ret < 0) ++ return ret; ++ else if (ret == 0) ++ return -ENODATA; ++ ++ port->nr_snk_vdo_v1 = min(ret, VDO_MAX_OBJECTS); ++ ret = fwnode_property_read_u32_array(fwnode, "sink-vdos-v1", ++ port->snk_vdo_v1, ++ port->nr_snk_vdo_v1); ++ if (ret < 0) ++ return ret; + } + + return 0; + } + ++static int tcpm_copy_pdos(u32 *dest_pdo, const u32 *src_pdo, unsigned int nr_pdo) ++{ ++ unsigned int i; ++ ++ if (nr_pdo > PDO_MAX_OBJECTS) ++ nr_pdo = PDO_MAX_OBJECTS; ++ ++ for (i = 0; i < nr_pdo; i++) ++ dest_pdo[i] = src_pdo[i]; ++ ++ return nr_pdo; ++} ++ ++int tcpm_update_sink_capabilities(struct tcpm_port *port, const u32 *pdo, unsigned int nr_pdo, ++ unsigned int operating_snk_mw) ++{ ++ int ret = 0; ++ ++ if (tcpm_validate_caps(port, pdo, nr_pdo)) ++ return -EINVAL; ++ ++ mutex_lock(&port->lock); ++ port->nr_snk_pdo = tcpm_copy_pdos(port->snk_pdo, pdo, nr_pdo); ++ port->operating_snk_mw = operating_snk_mw; ++ ++ switch (port->state) { ++ case SNK_NEGOTIATE_CAPABILITIES: ++ case SNK_NEGOTIATE_PPS_CAPABILITIES: ++ case SNK_READY: ++ case SNK_TRANSITION_SINK: ++ case SNK_TRANSITION_SINK_VBUS: ++ if (port->pps_data.active) ++ port->upcoming_state = SNK_NEGOTIATE_PPS_CAPABILITIES; ++ else if (port->pd_capable) ++ port->upcoming_state = SNK_NEGOTIATE_CAPABILITIES; ++ else ++ break; ++ ++ port->update_sink_caps = true; ++ ++ ret = tcpm_ams_start(port, POWER_NEGOTIATION); ++ if (ret == -EAGAIN) { ++ port->upcoming_state = INVALID_STATE; ++ break; ++ } ++ break; ++ default: ++ break; ++ } ++ mutex_unlock(&port->lock); ++ return ret; ++} ++EXPORT_SYMBOL_GPL(tcpm_update_sink_capabilities); ++ + /* Power Supply access to expose source power information */ + enum tcpm_psy_online_states { + TCPM_PSY_OFFLINE = 0, +@@ -4956,7 +6225,6 @@ static int tcpm_psy_get_prop(struct power_supply *psy, + ret = -EINVAL; + break; + } +- + return ret; + } + +@@ -5091,6 +6359,14 @@ static enum hrtimer_restart enable_frs_timer_handler(struct hrtimer *timer) + return HRTIMER_NORESTART; + } + ++static enum hrtimer_restart send_discover_timer_handler(struct hrtimer *timer) ++{ ++ struct tcpm_port *port = container_of(timer, struct tcpm_port, send_discover_timer); ++ ++ kthread_queue_work(port->wq, &port->send_discover_work); ++ return HRTIMER_NORESTART; ++} ++ + struct tcpm_port *tcpm_register_port(struct device *dev, struct tcpc_dev *tcpc) + { + struct tcpm_port *port; +@@ -5121,12 +6397,15 @@ struct tcpm_port *tcpm_register_port(struct device *dev, struct tcpc_dev *tcpc) + kthread_init_work(&port->vdm_state_machine, vdm_state_machine_work); + kthread_init_work(&port->event_work, tcpm_pd_event_handler); + kthread_init_work(&port->enable_frs, tcpm_enable_frs_work); ++ kthread_init_work(&port->send_discover_work, tcpm_send_discover_work); + hrtimer_init(&port->state_machine_timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL); + port->state_machine_timer.function = state_machine_timer_handler; + hrtimer_init(&port->vdm_state_machine_timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL); + port->vdm_state_machine_timer.function = vdm_state_machine_timer_handler; + hrtimer_init(&port->enable_frs_timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL); + port->enable_frs_timer.function = enable_frs_timer_handler; ++ hrtimer_init(&port->send_discover_timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL); ++ port->send_discover_timer.function = send_discover_timer_handler; + + spin_lock_init(&port->pd_event_lock); + +@@ -5144,6 +6423,7 @@ struct tcpm_port *tcpm_register_port(struct device *dev, struct tcpc_dev *tcpc) + port->typec_caps.fwnode = tcpc->fwnode; + port->typec_caps.revision = 0x0120; /* Type-C spec release 1.2 */ + port->typec_caps.pd_revision = 0x0300; /* USB-PD spec release 3.0 */ ++ port->typec_caps.svdm_version = SVDM_VER_2_0; + port->typec_caps.driver_data = port; + port->typec_caps.ops = &tcpm_ops; + port->typec_caps.orientation_aware = 1; +@@ -5168,6 +6448,10 @@ struct tcpm_port *tcpm_register_port(struct device *dev, struct tcpc_dev *tcpc) + goto out_role_sw_put; + } + ++ typec_port_register_altmodes(port->typec_port, ++ &tcpm_altmode_ops, port, ++ port->port_altmode, ALTMODE_DISCOVERY_MAX); ++ + mutex_lock(&port->lock); + tcpm_init(port); + mutex_unlock(&port->lock); +@@ -5188,6 +6472,7 @@ void tcpm_unregister_port(struct tcpm_port *port) + { + int i; + ++ hrtimer_cancel(&port->send_discover_timer); + hrtimer_cancel(&port->enable_frs_timer); + hrtimer_cancel(&port->vdm_state_machine_timer); + hrtimer_cancel(&port->state_machine_timer); +diff --git a/drivers/usb/typec/tcpm/wcove.c b/drivers/usb/typec/tcpm/wcove.c +old mode 100644 +new mode 100755 +index 7e9c279bf..5d1253396 +--- a/drivers/usb/typec/tcpm/wcove.c ++++ b/drivers/usb/typec/tcpm/wcove.c +@@ -356,7 +356,8 @@ static int wcove_set_pd_rx(struct tcpc_dev *tcpc, bool on) + + static int wcove_pd_transmit(struct tcpc_dev *tcpc, + enum tcpm_transmit_type type, +- const struct pd_message *msg) ++ const struct pd_message *msg, ++ unsigned int negotiated_rev) + { + struct wcove_typec *wcove = tcpc_to_wcove(tcpc); + unsigned int info = 0; +diff --git a/drivers/usb/typec/ucsi/Kconfig b/drivers/usb/typec/ucsi/Kconfig +old mode 100644 +new mode 100755 +index 2192d7c4f..5e9b37b3f +--- a/drivers/usb/typec/ucsi/Kconfig ++++ b/drivers/usb/typec/ucsi/Kconfig +@@ -3,6 +3,7 @@ + config TYPEC_UCSI + tristate "USB Type-C Connector System Software Interface driver" + depends on !CPU_BIG_ENDIAN ++ depends on USB_ROLE_SWITCH || !USB_ROLE_SWITCH + help + USB Type-C Connector System Software Interface (UCSI) is a + specification for an interface that allows the operating system to +diff --git a/drivers/usb/typec/ucsi/displayport.c b/drivers/usb/typec/ucsi/displayport.c +old mode 100644 +new mode 100755 +index 261131c9e..73cd5bf35 +--- a/drivers/usb/typec/ucsi/displayport.c ++++ b/drivers/usb/typec/ucsi/displayport.c +@@ -49,6 +49,7 @@ static int ucsi_displayport_enter(struct typec_altmode *alt, u32 *vdo) + { + struct ucsi_dp *dp = typec_altmode_get_drvdata(alt); + struct ucsi *ucsi = dp->con->ucsi; ++ int svdm_version; + u64 command; + u8 cur = 0; + int ret; +@@ -83,7 +84,13 @@ static int ucsi_displayport_enter(struct typec_altmode *alt, u32 *vdo) + * mode, and letting the alt mode driver continue. + */ + +- dp->header = VDO(USB_TYPEC_DP_SID, 1, CMD_ENTER_MODE); ++ svdm_version = typec_altmode_get_svdm_version(alt); ++ if (svdm_version < 0) { ++ ret = svdm_version; ++ goto err_unlock; ++ } ++ ++ dp->header = VDO(USB_TYPEC_DP_SID, 1, svdm_version, CMD_ENTER_MODE); + dp->header |= VDO_OPOS(USB_TYPEC_DP_MODE); + dp->header |= VDO_CMDT(CMDT_RSP_ACK); + +@@ -101,6 +108,7 @@ static int ucsi_displayport_enter(struct typec_altmode *alt, u32 *vdo) + static int ucsi_displayport_exit(struct typec_altmode *alt) + { + struct ucsi_dp *dp = typec_altmode_get_drvdata(alt); ++ int svdm_version; + u64 command; + int ret = 0; + +@@ -120,7 +128,13 @@ static int ucsi_displayport_exit(struct typec_altmode *alt) + if (ret < 0) + goto out_unlock; + +- dp->header = VDO(USB_TYPEC_DP_SID, 1, CMD_EXIT_MODE); ++ svdm_version = typec_altmode_get_svdm_version(alt); ++ if (svdm_version < 0) { ++ ret = svdm_version; ++ goto out_unlock; ++ } ++ ++ dp->header = VDO(USB_TYPEC_DP_SID, 1, svdm_version, CMD_EXIT_MODE); + dp->header |= VDO_OPOS(USB_TYPEC_DP_MODE); + dp->header |= VDO_CMDT(CMDT_RSP_ACK); + +@@ -186,6 +200,7 @@ static int ucsi_displayport_vdm(struct typec_altmode *alt, + struct ucsi_dp *dp = typec_altmode_get_drvdata(alt); + int cmd_type = PD_VDO_CMDT(header); + int cmd = PD_VDO_CMD(header); ++ int svdm_version; + + mutex_lock(&dp->con->lock); + +@@ -198,9 +213,20 @@ static int ucsi_displayport_vdm(struct typec_altmode *alt, + return -EOPNOTSUPP; + } + ++ svdm_version = typec_altmode_get_svdm_version(alt); ++ if (svdm_version < 0) { ++ mutex_unlock(&dp->con->lock); ++ return svdm_version; ++ } ++ + switch (cmd_type) { + case CMDT_INIT: +- dp->header = VDO(USB_TYPEC_DP_SID, 1, cmd); ++ if (PD_VDO_SVDM_VER(header) < svdm_version) { ++ typec_partner_set_svdm_version(dp->con->partner, PD_VDO_SVDM_VER(header)); ++ svdm_version = PD_VDO_SVDM_VER(header); ++ } ++ ++ dp->header = VDO(USB_TYPEC_DP_SID, 1, svdm_version, cmd); + dp->header |= VDO_OPOS(USB_TYPEC_DP_MODE); + + switch (cmd) { +diff --git a/drivers/usb/typec/ucsi/ucsi.c b/drivers/usb/typec/ucsi/ucsi.c +old mode 100644 +new mode 100755 +index 3bfa8005a..0c4a0f1ac +--- a/drivers/usb/typec/ucsi/ucsi.c ++++ b/drivers/usb/typec/ucsi/ucsi.c +@@ -611,6 +611,7 @@ static void ucsi_unregister_partner(struct ucsi_connector *con) + + static void ucsi_partner_change(struct ucsi_connector *con) + { ++ enum usb_role u_role = USB_ROLE_NONE; + int ret; + + if (!con->partner) +@@ -618,11 +619,14 @@ static void ucsi_partner_change(struct ucsi_connector *con) + + switch (UCSI_CONSTAT_PARTNER_TYPE(con->status.flags)) { + case UCSI_CONSTAT_PARTNER_TYPE_UFP: +- case UCSI_CONSTAT_PARTNER_TYPE_CABLE: + case UCSI_CONSTAT_PARTNER_TYPE_CABLE_AND_UFP: ++ u_role = USB_ROLE_HOST; ++ fallthrough; ++ case UCSI_CONSTAT_PARTNER_TYPE_CABLE: + typec_set_data_role(con->port, TYPEC_HOST); + break; + case UCSI_CONSTAT_PARTNER_TYPE_DFP: ++ u_role = USB_ROLE_DEVICE; + typec_set_data_role(con->port, TYPEC_DEVICE); + break; + default: +@@ -633,6 +637,15 @@ static void ucsi_partner_change(struct ucsi_connector *con) + if (!completion_done(&con->complete)) + complete(&con->complete); + ++ /* Only notify USB controller if partner supports USB data */ ++ if (!(UCSI_CONSTAT_PARTNER_FLAGS(con->status.flags) & UCSI_CONSTAT_PARTNER_FLAG_USB)) ++ u_role = USB_ROLE_NONE; ++ ++ ret = usb_role_switch_set_role(con->usb_role_sw, u_role); ++ if (ret) ++ dev_err(con->ucsi->dev, "con:%d: failed to set usb role:%d\n", ++ con->num, u_role); ++ + /* Can't rely on Partner Flags field. Always checking the alt modes. */ + ret = ucsi_register_altmodes(con, UCSI_RECIPIENT_SOP); + if (ret) +@@ -651,6 +664,7 @@ static void ucsi_handle_connector_change(struct work_struct *work) + struct ucsi_connector_status pre_ack_status; + struct ucsi_connector_status post_ack_status; + enum typec_role role; ++ enum usb_role u_role = USB_ROLE_NONE; + u16 inferred_changes; + u16 changed_flags; + u64 command; +@@ -776,11 +790,14 @@ static void ucsi_handle_connector_change(struct work_struct *work) + + switch (UCSI_CONSTAT_PARTNER_TYPE(con->status.flags)) { + case UCSI_CONSTAT_PARTNER_TYPE_UFP: +- case UCSI_CONSTAT_PARTNER_TYPE_CABLE: + case UCSI_CONSTAT_PARTNER_TYPE_CABLE_AND_UFP: ++ u_role = USB_ROLE_HOST; ++ fallthrough; ++ case UCSI_CONSTAT_PARTNER_TYPE_CABLE: + typec_set_data_role(con->port, TYPEC_HOST); + break; + case UCSI_CONSTAT_PARTNER_TYPE_DFP: ++ u_role = USB_ROLE_DEVICE; + typec_set_data_role(con->port, TYPEC_DEVICE); + break; + default: +@@ -793,6 +810,16 @@ static void ucsi_handle_connector_change(struct work_struct *work) + ucsi_unregister_partner(con); + + ucsi_port_psy_changed(con); ++ ++ /* Only notify USB controller if partner supports USB data */ ++ if (!(UCSI_CONSTAT_PARTNER_FLAGS(con->status.flags) & ++ UCSI_CONSTAT_PARTNER_FLAG_USB)) ++ u_role = USB_ROLE_NONE; ++ ++ ret = usb_role_switch_set_role(con->usb_role_sw, u_role); ++ if (ret) ++ dev_err(ucsi->dev, "con:%d: failed to set usb role:%d\n", ++ con->num, u_role); + } + + if (con->status.change & UCSI_CONSTAT_PARTNER_CHANGE) +@@ -1012,6 +1039,7 @@ static int ucsi_register_port(struct ucsi *ucsi, int index) + struct ucsi_connector *con = &ucsi->connector[index]; + struct typec_capability *cap = &con->typec_cap; + enum typec_accessory *accessory = cap->accessory; ++ enum usb_role u_role = USB_ROLE_NONE; + u64 command; + int ret; + +@@ -1048,6 +1076,7 @@ static int ucsi_register_port(struct ucsi *ucsi, int index) + + cap->revision = ucsi->cap.typec_version; + cap->pd_revision = ucsi->cap.pd_version; ++ cap->svdm_version = SVDM_VER_2_0; + cap->prefer_role = TYPEC_NO_PREFERRED_ROLE; + + if (con->cap.op_mode & UCSI_CONCAP_OPMODE_AUDIO_ACCESSORY) +@@ -1090,11 +1119,14 @@ static int ucsi_register_port(struct ucsi *ucsi, int index) + + switch (UCSI_CONSTAT_PARTNER_TYPE(con->status.flags)) { + case UCSI_CONSTAT_PARTNER_TYPE_UFP: +- case UCSI_CONSTAT_PARTNER_TYPE_CABLE: + case UCSI_CONSTAT_PARTNER_TYPE_CABLE_AND_UFP: ++ u_role = USB_ROLE_HOST; ++ fallthrough; ++ case UCSI_CONSTAT_PARTNER_TYPE_CABLE: + typec_set_data_role(con->port, TYPEC_HOST); + break; + case UCSI_CONSTAT_PARTNER_TYPE_DFP: ++ u_role = USB_ROLE_DEVICE; + typec_set_data_role(con->port, TYPEC_DEVICE); + break; + default: +@@ -1110,6 +1142,24 @@ static int ucsi_register_port(struct ucsi *ucsi, int index) + ucsi_port_psy_changed(con); + } + ++ con->usb_role_sw = fwnode_usb_role_switch_get(cap->fwnode); ++ if (IS_ERR(con->usb_role_sw)) { ++ dev_err(ucsi->dev, "con%d: failed to get usb role switch\n", ++ con->num); ++ con->usb_role_sw = NULL; ++ } ++ ++ /* Only notify USB controller if partner supports USB data */ ++ if (!(UCSI_CONSTAT_PARTNER_FLAGS(con->status.flags) & UCSI_CONSTAT_PARTNER_FLAG_USB)) ++ u_role = USB_ROLE_NONE; ++ ++ ret = usb_role_switch_set_role(con->usb_role_sw, u_role); ++ if (ret) { ++ dev_err(ucsi->dev, "con:%d: failed to set usb role:%d\n", ++ con->num, u_role); ++ ret = 0; ++ } ++ + if (con->partner) { + ret = ucsi_register_altmodes(con, UCSI_RECIPIENT_SOP); + if (ret) { +diff --git a/drivers/usb/typec/ucsi/ucsi.h b/drivers/usb/typec/ucsi/ucsi.h +old mode 100644 +new mode 100755 +index fce23ad16..b3450d87f +--- a/drivers/usb/typec/ucsi/ucsi.h ++++ b/drivers/usb/typec/ucsi/ucsi.h +@@ -9,6 +9,8 @@ + #include + #include + #include ++#include ++#include + + /* -------------------------------------------------------------------------- */ + +@@ -333,6 +335,8 @@ struct ucsi_connector { + u32 rdo; + u32 src_pdos[PDO_MAX_OBJECTS]; + int num_pdos; ++ ++ struct usb_role_switch *usb_role_sw; + }; + + int ucsi_send_command(struct ucsi *ucsi, u64 command, diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig -index 427a993c7f57..e4c52ca82e88 100644 +index 427a993c7..e4c52ca82 100644 --- a/drivers/video/Kconfig +++ b/drivers/video/Kconfig @@ -18,6 +18,7 @@ source "drivers/gpu/host1x/Kconfig" @@ -1587281,7 +1600572,7 @@ index 427a993c7f57..e4c52ca82e88 100644 tristate default n diff --git a/drivers/video/Makefile b/drivers/video/Makefile -index df7650adede9..b355e2fcb423 100644 +index df7650ade..b355e2fcb 100644 --- a/drivers/video/Makefile +++ b/drivers/video/Makefile @@ -6,6 +6,7 @@ obj-$(CONFIG_VT) += console/ @@ -1587293,7 +1600584,7 @@ index df7650adede9..b355e2fcb423 100644 obj-y += fbdev/ diff --git a/drivers/video/backlight/pwm_bl.c b/drivers/video/backlight/pwm_bl.c -index 1cf924f3aecc..cd3676b96fb0 100644 +index 1cf924f3a..cd3676b96 100644 --- a/drivers/video/backlight/pwm_bl.c +++ b/drivers/video/backlight/pwm_bl.c @@ -603,6 +603,8 @@ static int pwm_backlight_probe(struct platform_device *pdev) @@ -1587307,7 +1600598,7 @@ index 1cf924f3aecc..cd3676b96fb0 100644 diff --git a/drivers/video/rockchip/Kconfig b/drivers/video/rockchip/Kconfig new file mode 100755 -index 000000000000..790f1f4227c1 +index 000000000..790f1f422 --- /dev/null +++ b/drivers/video/rockchip/Kconfig @@ -0,0 +1,5 @@ @@ -1587318,7 +1600609,7 @@ index 000000000000..790f1f4227c1 +source "drivers/video/rockchip/mpp/Kconfig" diff --git a/drivers/video/rockchip/Makefile b/drivers/video/rockchip/Makefile new file mode 100755 -index 000000000000..e01d878568aa +index 000000000..e01d87856 --- /dev/null +++ b/drivers/video/rockchip/Makefile @@ -0,0 +1,5 @@ @@ -1587329,7 +1600620,7 @@ index 000000000000..e01d878568aa +obj-$(CONFIG_ROCKCHIP_MPP_SERVICE) += mpp/ diff --git a/drivers/video/rockchip/iep/Kconfig b/drivers/video/rockchip/iep/Kconfig new file mode 100755 -index 000000000000..cd8ba653f9ea +index 000000000..cd8ba653f --- /dev/null +++ b/drivers/video/rockchip/iep/Kconfig @@ -0,0 +1,10 @@ @@ -1587345,7 +1600636,7 @@ index 000000000000..cd8ba653f9ea +endmenu diff --git a/drivers/video/rockchip/iep/Makefile b/drivers/video/rockchip/iep/Makefile new file mode 100755 -index 000000000000..f4dba6e9379a +index 000000000..f4dba6e93 --- /dev/null +++ b/drivers/video/rockchip/iep/Makefile @@ -0,0 +1,4 @@ @@ -1587355,7 +1600646,7 @@ index 000000000000..f4dba6e9379a +obj-$(CONFIG_IEP) += iep.o diff --git a/drivers/video/rockchip/iep/hw_iep_config_addr.h b/drivers/video/rockchip/iep/hw_iep_config_addr.h new file mode 100755 -index 000000000000..1f4a0706233f +index 000000000..1f4a07062 --- /dev/null +++ b/drivers/video/rockchip/iep/hw_iep_config_addr.h @@ -0,0 +1,99 @@ @@ -1587460,7 +1600751,7 @@ index 000000000000..1f4a0706233f +#endif diff --git a/drivers/video/rockchip/iep/hw_iep_reg.c b/drivers/video/rockchip/iep/hw_iep_reg.c new file mode 100755 -index 000000000000..331a50865045 +index 000000000..331a50865 --- /dev/null +++ b/drivers/video/rockchip/iep/hw_iep_reg.c @@ -0,0 +1,1530 @@ @@ -1588996,7 +1602287,7 @@ index 000000000000..331a50865045 + diff --git a/drivers/video/rockchip/iep/hw_iep_reg.h b/drivers/video/rockchip/iep/hw_iep_reg.h new file mode 100755 -index 000000000000..03d9fe92ca23 +index 000000000..03d9fe92c --- /dev/null +++ b/drivers/video/rockchip/iep/hw_iep_reg.h @@ -0,0 +1,525 @@ @@ -1589527,7 +1602818,7 @@ index 000000000000..03d9fe92ca23 +#endif diff --git a/drivers/video/rockchip/iep/iep.h b/drivers/video/rockchip/iep/iep.h new file mode 100755 -index 000000000000..94e372e6a471 +index 000000000..94e372e6a --- /dev/null +++ b/drivers/video/rockchip/iep/iep.h @@ -0,0 +1,276 @@ @@ -1589809,7 +1603100,7 @@ index 000000000000..94e372e6a471 +#endif diff --git a/drivers/video/rockchip/iep/iep_drv.c b/drivers/video/rockchip/iep/iep_drv.c new file mode 100755 -index 000000000000..f0cfc7164e39 +index 000000000..f0cfc7164 --- /dev/null +++ b/drivers/video/rockchip/iep/iep_drv.c @@ -0,0 +1,1320 @@ @@ -1591135,7 +1604426,7 @@ index 000000000000..f0cfc7164e39 +#endif diff --git a/drivers/video/rockchip/iep/iep_drv.h b/drivers/video/rockchip/iep/iep_drv.h new file mode 100755 -index 000000000000..19160c6ffccd +index 000000000..19160c6ff --- /dev/null +++ b/drivers/video/rockchip/iep/iep_drv.h @@ -0,0 +1,159 @@ @@ -1591300,7 +1604591,7 @@ index 000000000000..19160c6ffccd + diff --git a/drivers/video/rockchip/iep/iep_iommu_drm.c b/drivers/video/rockchip/iep/iep_iommu_drm.c new file mode 100755 -index 000000000000..411f567a6e4e +index 000000000..411f567a6 --- /dev/null +++ b/drivers/video/rockchip/iep/iep_iommu_drm.c @@ -0,0 +1,465 @@ @@ -1591771,7 +1605062,7 @@ index 000000000000..411f567a6e4e +} diff --git a/drivers/video/rockchip/iep/iep_iommu_ops.c b/drivers/video/rockchip/iep/iep_iommu_ops.c new file mode 100755 -index 000000000000..e84772237b89 +index 000000000..e84772237 --- /dev/null +++ b/drivers/video/rockchip/iep/iep_iommu_ops.c @@ -0,0 +1,244 @@ @@ -1592021,7 +1605312,7 @@ index 000000000000..e84772237b89 +} diff --git a/drivers/video/rockchip/iep/iep_iommu_ops.h b/drivers/video/rockchip/iep/iep_iommu_ops.h new file mode 100755 -index 000000000000..9b71d53a51eb +index 000000000..9b71d53a5 --- /dev/null +++ b/drivers/video/rockchip/iep/iep_iommu_ops.h @@ -0,0 +1,121 @@ @@ -1592148,7 +1605439,7 @@ index 000000000000..9b71d53a51eb +#endif diff --git a/drivers/video/rockchip/mpp/Kconfig b/drivers/video/rockchip/mpp/Kconfig new file mode 100755 -index 000000000000..e5d6f57f716c +index 000000000..e5d6f57f7 --- /dev/null +++ b/drivers/video/rockchip/mpp/Kconfig @@ -0,0 +1,68 @@ @@ -1592222,7 +1605513,7 @@ index 000000000000..e5d6f57f716c +endif diff --git a/drivers/video/rockchip/mpp/Makefile b/drivers/video/rockchip/mpp/Makefile new file mode 100755 -index 000000000000..bd9e0a0d8952 +index 000000000..bd9e0a0d8 --- /dev/null +++ b/drivers/video/rockchip/mpp/Makefile @@ -0,0 +1,28 @@ @@ -1592256,7 +1605547,7 @@ index 000000000000..bd9e0a0d8952 +obj-$(CONFIG_ROCKCHIP_MPP_SERVICE) += rk_vcodec.o diff --git a/drivers/video/rockchip/mpp/hack/mpp_hack_px30.c b/drivers/video/rockchip/mpp/hack/mpp_hack_px30.c new file mode 100755 -index 000000000000..379049eaf8fc +index 000000000..379049eaf --- /dev/null +++ b/drivers/video/rockchip/mpp/hack/mpp_hack_px30.c @@ -0,0 +1,230 @@ @@ -1592492,7 +1605783,7 @@ index 000000000000..379049eaf8fc +} diff --git a/drivers/video/rockchip/mpp/hack/mpp_hack_px30.h b/drivers/video/rockchip/mpp/hack/mpp_hack_px30.h new file mode 100755 -index 000000000000..c8402e30d810 +index 000000000..c8402e30d --- /dev/null +++ b/drivers/video/rockchip/mpp/hack/mpp_hack_px30.h @@ -0,0 +1,27 @@ @@ -1592525,7 +1605816,7 @@ index 000000000000..c8402e30d810 +#endif diff --git a/drivers/video/rockchip/mpp/hack/mpp_rkvdec2_hack_rk3568.c b/drivers/video/rockchip/mpp/hack/mpp_rkvdec2_hack_rk3568.c new file mode 100755 -index 000000000000..c2bb2687fc3d +index 000000000..c2bb2687f --- /dev/null +++ b/drivers/video/rockchip/mpp/hack/mpp_rkvdec2_hack_rk3568.c @@ -0,0 +1,732 @@ @@ -1593263,7 +1606554,7 @@ index 000000000000..c2bb2687fc3d +} diff --git a/drivers/video/rockchip/mpp/hack/mpp_rkvdec2_link_hack_rk3568.c b/drivers/video/rockchip/mpp/hack/mpp_rkvdec2_link_hack_rk3568.c new file mode 100755 -index 000000000000..900b63a57673 +index 000000000..900b63a57 --- /dev/null +++ b/drivers/video/rockchip/mpp/hack/mpp_rkvdec2_link_hack_rk3568.c @@ -0,0 +1,213 @@ @@ -1593482,7 +1606773,7 @@ index 000000000000..900b63a57673 +} diff --git a/drivers/video/rockchip/mpp/mpp_common.c b/drivers/video/rockchip/mpp/mpp_common.c new file mode 100755 -index 000000000000..aa1ea5c4e514 +index 000000000..aa1ea5c4e --- /dev/null +++ b/drivers/video/rockchip/mpp/mpp_common.c @@ -0,0 +1,2173 @@ @@ -1595661,7 +1608952,7 @@ index 000000000000..aa1ea5c4e514 +#endif diff --git a/drivers/video/rockchip/mpp/mpp_common.h b/drivers/video/rockchip/mpp/mpp_common.h new file mode 100755 -index 000000000000..7961d6b23690 +index 000000000..7961d6b23 --- /dev/null +++ b/drivers/video/rockchip/mpp/mpp_common.h @@ -0,0 +1,784 @@ @@ -1596451,7 +1609742,7 @@ index 000000000000..7961d6b23690 +#endif diff --git a/drivers/video/rockchip/mpp/mpp_debug.h b/drivers/video/rockchip/mpp/mpp_debug.h new file mode 100755 -index 000000000000..5fe843a479ee +index 000000000..5fe843a47 --- /dev/null +++ b/drivers/video/rockchip/mpp/mpp_debug.h @@ -0,0 +1,127 @@ @@ -1596584,7 +1609875,7 @@ index 000000000000..5fe843a479ee +#endif diff --git a/drivers/video/rockchip/mpp/mpp_iep2.c b/drivers/video/rockchip/mpp/mpp_iep2.c new file mode 100755 -index 000000000000..16f729b69398 +index 000000000..16f729b69 --- /dev/null +++ b/drivers/video/rockchip/mpp/mpp_iep2.c @@ -0,0 +1,1019 @@ @@ -1597609,7 +1610900,7 @@ index 000000000000..16f729b69398 + diff --git a/drivers/video/rockchip/mpp/mpp_iommu.c b/drivers/video/rockchip/mpp/mpp_iommu.c new file mode 100755 -index 000000000000..a23be457e2b0 +index 000000000..a23be457e --- /dev/null +++ b/drivers/video/rockchip/mpp/mpp_iommu.c @@ -0,0 +1,493 @@ @@ -1598108,7 +1611399,7 @@ index 000000000000..a23be457e2b0 +} diff --git a/drivers/video/rockchip/mpp/mpp_iommu.h b/drivers/video/rockchip/mpp/mpp_iommu.h new file mode 100755 -index 000000000000..9ae1b6ba3567 +index 000000000..9ae1b6ba3 --- /dev/null +++ b/drivers/video/rockchip/mpp/mpp_iommu.h @@ -0,0 +1,140 @@ @@ -1598254,7 +1611545,7 @@ index 000000000000..9ae1b6ba3567 +#endif diff --git a/drivers/video/rockchip/mpp/mpp_jpgdec.c b/drivers/video/rockchip/mpp/mpp_jpgdec.c new file mode 100755 -index 000000000000..3e94ceef256b +index 000000000..3e94ceef2 --- /dev/null +++ b/drivers/video/rockchip/mpp/mpp_jpgdec.c @@ -0,0 +1,648 @@ @@ -1598908,7 +1612199,7 @@ index 000000000000..3e94ceef256b +EXPORT_SYMBOL(rockchip_jpgdec_driver); diff --git a/drivers/video/rockchip/mpp/mpp_rkvdec.c b/drivers/video/rockchip/mpp/mpp_rkvdec.c new file mode 100755 -index 000000000000..546fb82dc04f +index 000000000..546fb82dc --- /dev/null +++ b/drivers/video/rockchip/mpp/mpp_rkvdec.c @@ -0,0 +1,1949 @@ @@ -1600863,7 +1614154,7 @@ index 000000000000..546fb82dc04f +EXPORT_SYMBOL(rockchip_rkvdec_driver); diff --git a/drivers/video/rockchip/mpp/mpp_rkvdec2.c b/drivers/video/rockchip/mpp/mpp_rkvdec2.c new file mode 100755 -index 000000000000..3a02c707e33f +index 000000000..3a02c707e --- /dev/null +++ b/drivers/video/rockchip/mpp/mpp_rkvdec2.c @@ -0,0 +1,1277 @@ @@ -1602146,7 +1615437,7 @@ index 000000000000..3a02c707e33f +EXPORT_SYMBOL(rockchip_rkvdec2_driver); diff --git a/drivers/video/rockchip/mpp/mpp_rkvdec2.h b/drivers/video/rockchip/mpp/mpp_rkvdec2.h new file mode 100755 -index 000000000000..123eb571853b +index 000000000..123eb5718 --- /dev/null +++ b/drivers/video/rockchip/mpp/mpp_rkvdec2.h @@ -0,0 +1,220 @@ @@ -1602372,7 +1615663,7 @@ index 000000000000..123eb571853b +#endif diff --git a/drivers/video/rockchip/mpp/mpp_rkvdec2_link.c b/drivers/video/rockchip/mpp/mpp_rkvdec2_link.c new file mode 100755 -index 000000000000..2d03d1dff6c5 +index 000000000..2d03d1dff --- /dev/null +++ b/drivers/video/rockchip/mpp/mpp_rkvdec2_link.c @@ -0,0 +1,1956 @@ @@ -1604334,7 +1617625,7 @@ index 000000000000..2d03d1dff6c5 +} diff --git a/drivers/video/rockchip/mpp/mpp_rkvdec2_link.h b/drivers/video/rockchip/mpp/mpp_rkvdec2_link.h new file mode 100755 -index 000000000000..2b8a066fb4d0 +index 000000000..2b8a066fb --- /dev/null +++ b/drivers/video/rockchip/mpp/mpp_rkvdec2_link.h @@ -0,0 +1,169 @@ @@ -1604509,7 +1617800,7 @@ index 000000000000..2b8a066fb4d0 +#endif diff --git a/drivers/video/rockchip/mpp/mpp_rkvenc.c b/drivers/video/rockchip/mpp/mpp_rkvenc.c new file mode 100755 -index 000000000000..5f4925e11677 +index 000000000..5f4925e11 --- /dev/null +++ b/drivers/video/rockchip/mpp/mpp_rkvenc.c @@ -0,0 +1,1512 @@ @@ -1606027,7 +1619318,7 @@ index 000000000000..5f4925e11677 +}; diff --git a/drivers/video/rockchip/mpp/mpp_rkvenc2.c b/drivers/video/rockchip/mpp/mpp_rkvenc2.c new file mode 100755 -index 000000000000..dfffbbf4516b +index 000000000..dfffbbf45 --- /dev/null +++ b/drivers/video/rockchip/mpp/mpp_rkvenc2.c @@ -0,0 +1,1712 @@ @@ -1607745,7 +1621036,7 @@ index 000000000000..dfffbbf4516b +}; diff --git a/drivers/video/rockchip/mpp/mpp_service.c b/drivers/video/rockchip/mpp/mpp_service.c new file mode 100755 -index 000000000000..cfab5fe163b7 +index 000000000..cfab5fe16 --- /dev/null +++ b/drivers/video/rockchip/mpp/mpp_service.c @@ -0,0 +1,436 @@ @@ -1608187,7 +1621478,7 @@ index 000000000000..cfab5fe163b7 +MODULE_DESCRIPTION("Rockchip mpp service driver"); diff --git a/drivers/video/rockchip/mpp/mpp_vdpu1.c b/drivers/video/rockchip/mpp/mpp_vdpu1.c new file mode 100755 -index 000000000000..a14f10208ced +index 000000000..a14f10208 --- /dev/null +++ b/drivers/video/rockchip/mpp/mpp_vdpu1.c @@ -0,0 +1,876 @@ @@ -1609069,7 +1622360,7 @@ index 000000000000..a14f10208ced +EXPORT_SYMBOL(rockchip_vdpu1_driver); diff --git a/drivers/video/rockchip/mpp/mpp_vdpu2.c b/drivers/video/rockchip/mpp/mpp_vdpu2.c new file mode 100755 -index 000000000000..f6970331bb8e +index 000000000..f6970331b --- /dev/null +++ b/drivers/video/rockchip/mpp/mpp_vdpu2.c @@ -0,0 +1,770 @@ @@ -1609845,7 +1623136,7 @@ index 000000000000..f6970331bb8e +EXPORT_SYMBOL(rockchip_vdpu2_driver); diff --git a/drivers/video/rockchip/mpp/mpp_vepu1.c b/drivers/video/rockchip/mpp/mpp_vepu1.c new file mode 100755 -index 000000000000..aef0ad7b42cb +index 000000000..aef0ad7b4 --- /dev/null +++ b/drivers/video/rockchip/mpp/mpp_vepu1.c @@ -0,0 +1,797 @@ @@ -1610648,7 +1623939,7 @@ index 000000000000..aef0ad7b42cb +EXPORT_SYMBOL(rockchip_vepu1_driver); diff --git a/drivers/video/rockchip/mpp/mpp_vepu2.c b/drivers/video/rockchip/mpp/mpp_vepu2.c new file mode 100755 -index 000000000000..fbf028d27c98 +index 000000000..fbf028d27 --- /dev/null +++ b/drivers/video/rockchip/mpp/mpp_vepu2.c @@ -0,0 +1,1165 @@ @@ -1611819,7 +1625110,7 @@ index 000000000000..fbf028d27c98 +EXPORT_SYMBOL(rockchip_vepu2_driver); diff --git a/drivers/video/rockchip/mpp/rockchip_iep2_regs.h b/drivers/video/rockchip/mpp/rockchip_iep2_regs.h new file mode 100755 -index 000000000000..77d09a8f871f +index 000000000..77d09a8f8 --- /dev/null +++ b/drivers/video/rockchip/mpp/rockchip_iep2_regs.h @@ -0,0 +1,174 @@ @@ -1611999,7 +1625290,7 @@ index 000000000000..77d09a8f871f + diff --git a/drivers/video/rockchip/rga/Kconfig b/drivers/video/rockchip/rga/Kconfig new file mode 100755 -index 000000000000..6023b2eb23a7 +index 000000000..6023b2eb2 --- /dev/null +++ b/drivers/video/rockchip/rga/Kconfig @@ -0,0 +1,10 @@ @@ -1612015,7 +1625306,7 @@ index 000000000000..6023b2eb23a7 +endmenu diff --git a/drivers/video/rockchip/rga/Makefile b/drivers/video/rockchip/rga/Makefile new file mode 100755 -index 000000000000..58dd4c6a3e42 +index 000000000..58dd4c6a3 --- /dev/null +++ b/drivers/video/rockchip/rga/Makefile @@ -0,0 +1,4 @@ @@ -1612025,7 +1625316,7 @@ index 000000000000..58dd4c6a3e42 +obj-$(CONFIG_ROCKCHIP_RGA) += rga.o diff --git a/drivers/video/rockchip/rga/RGA_API.c b/drivers/video/rockchip/rga/RGA_API.c new file mode 100755 -index 000000000000..947a9b925f60 +index 000000000..947a9b925 --- /dev/null +++ b/drivers/video/rockchip/rga/RGA_API.c @@ -0,0 +1,201 @@ @@ -1612232,7 +1625523,7 @@ index 000000000000..947a9b925f60 + diff --git a/drivers/video/rockchip/rga/RGA_API.h b/drivers/video/rockchip/rga/RGA_API.h new file mode 100755 -index 000000000000..ade17d03e85c +index 000000000..ade17d03e --- /dev/null +++ b/drivers/video/rockchip/rga/RGA_API.h @@ -0,0 +1,40 @@ @@ -1612278,7 +1625569,7 @@ index 000000000000..ade17d03e85c +#endif diff --git a/drivers/video/rockchip/rga/rga.h b/drivers/video/rockchip/rga/rga.h new file mode 100755 -index 000000000000..e54a6efba39f +index 000000000..e54a6efba --- /dev/null +++ b/drivers/video/rockchip/rga/rga.h @@ -0,0 +1,508 @@ @@ -1612792,7 +1626083,7 @@ index 000000000000..e54a6efba39f +#endif /*_RK29_IPP_DRIVER_H_*/ diff --git a/drivers/video/rockchip/rga/rga_drv.c b/drivers/video/rockchip/rga/rga_drv.c new file mode 100755 -index 000000000000..a5d43f90f21b +index 000000000..a5d43f90f --- /dev/null +++ b/drivers/video/rockchip/rga/rga_drv.c @@ -0,0 +1,2550 @@ @@ -1615348,7 +1628639,7 @@ index 000000000000..a5d43f90f21b +MODULE_LICENSE("GPL"); diff --git a/drivers/video/rockchip/rga/rga_mmu_info.c b/drivers/video/rockchip/rga/rga_mmu_info.c new file mode 100755 -index 000000000000..8825183d92fc +index 000000000..8825183d9 --- /dev/null +++ b/drivers/video/rockchip/rga/rga_mmu_info.c @@ -0,0 +1,1315 @@ @@ -1616669,7 +1629960,7 @@ index 000000000000..8825183d92fc + diff --git a/drivers/video/rockchip/rga/rga_mmu_info.h b/drivers/video/rockchip/rga/rga_mmu_info.h new file mode 100755 -index 000000000000..3e70894c7ee7 +index 000000000..3e70894c7 --- /dev/null +++ b/drivers/video/rockchip/rga/rga_mmu_info.h @@ -0,0 +1,24 @@ @@ -1616699,7 +1629990,7 @@ index 000000000000..3e70894c7ee7 + diff --git a/drivers/video/rockchip/rga/rga_reg_info.c b/drivers/video/rockchip/rga/rga_reg_info.c new file mode 100755 -index 000000000000..94a6305b870b +index 000000000..94a6305b8 --- /dev/null +++ b/drivers/video/rockchip/rga/rga_reg_info.c @@ -0,0 +1,1587 @@ @@ -1618292,7 +1631583,7 @@ index 000000000000..94a6305b870b + diff --git a/drivers/video/rockchip/rga/rga_reg_info.h b/drivers/video/rockchip/rga/rga_reg_info.h new file mode 100755 -index 000000000000..565e8f72d7f0 +index 000000000..565e8f72d --- /dev/null +++ b/drivers/video/rockchip/rga/rga_reg_info.h @@ -0,0 +1,467 @@ @@ -1618765,7 +1632056,7 @@ index 000000000000..565e8f72d7f0 + diff --git a/drivers/video/rockchip/rga/rga_rop.h b/drivers/video/rockchip/rga/rga_rop.h new file mode 100755 -index 000000000000..ed9758711022 +index 000000000..ed9758711 --- /dev/null +++ b/drivers/video/rockchip/rga/rga_rop.h @@ -0,0 +1,56 @@ @@ -1618827,7 +1632118,7 @@ index 000000000000..ed9758711022 +#endif diff --git a/drivers/video/rockchip/rga/rga_type.h b/drivers/video/rockchip/rga/rga_type.h new file mode 100755 -index 000000000000..ce3610ab9b67 +index 000000000..ce3610ab9 --- /dev/null +++ b/drivers/video/rockchip/rga/rga_type.h @@ -0,0 +1,49 @@ @@ -1618882,7 +1632173,7 @@ index 000000000000..ce3610ab9b67 + diff --git a/drivers/video/rockchip/rga2/Kconfig b/drivers/video/rockchip/rga2/Kconfig new file mode 100755 -index 000000000000..49a0f62b99a0 +index 000000000..49a0f62b9 --- /dev/null +++ b/drivers/video/rockchip/rga2/Kconfig @@ -0,0 +1,30 @@ @@ -1618918,7 +1632209,7 @@ index 000000000000..49a0f62b99a0 +endif diff --git a/drivers/video/rockchip/rga2/Makefile b/drivers/video/rockchip/rga2/Makefile new file mode 100755 -index 000000000000..60181fffa4c8 +index 000000000..60181fffa --- /dev/null +++ b/drivers/video/rockchip/rga2/Makefile @@ -0,0 +1,5 @@ @@ -1618929,7 +1632220,7 @@ index 000000000000..60181fffa4c8 +obj-$(CONFIG_ROCKCHIP_RGA2) += rga2.o diff --git a/drivers/video/rockchip/rga2/RGA2_API.c b/drivers/video/rockchip/rga2/RGA2_API.c new file mode 100755 -index 000000000000..0be2c1ae64b6 +index 000000000..0be2c1ae6 --- /dev/null +++ b/drivers/video/rockchip/rga2/RGA2_API.c @@ -0,0 +1,23 @@ @@ -1618958,7 +1632249,7 @@ index 000000000000..0be2c1ae64b6 + diff --git a/drivers/video/rockchip/rga2/RGA2_API.h b/drivers/video/rockchip/rga2/RGA2_API.h new file mode 100755 -index 000000000000..1fa38ed6cffe +index 000000000..1fa38ed6c --- /dev/null +++ b/drivers/video/rockchip/rga2/RGA2_API.h @@ -0,0 +1,59 @@ @@ -1619023,7 +1632314,7 @@ index 000000000000..1fa38ed6cffe +#endif diff --git a/drivers/video/rockchip/rga2/rga2.h b/drivers/video/rockchip/rga2/rga2.h new file mode 100755 -index 000000000000..335970c44ed6 +index 000000000..335970c44 --- /dev/null +++ b/drivers/video/rockchip/rga2/rga2.h @@ -0,0 +1,792 @@ @@ -1619821,7 +1633112,7 @@ index 000000000000..335970c44ed6 +#endif /*_RK29_IPP_DRIVER_H_*/ diff --git a/drivers/video/rockchip/rga2/rga2_debugger.c b/drivers/video/rockchip/rga2/rga2_debugger.c new file mode 100755 -index 000000000000..589241322cf4 +index 000000000..589241322 --- /dev/null +++ b/drivers/video/rockchip/rga2/rga2_debugger.c @@ -0,0 +1,396 @@ @@ -1620223,7 +1633514,7 @@ index 000000000000..589241322cf4 +#endif /* #ifdef CONFIG_ROCKCHIP_RGA2_PROC_FS */ diff --git a/drivers/video/rockchip/rga2/rga2_debugger.h b/drivers/video/rockchip/rga2/rga2_debugger.h new file mode 100755 -index 000000000000..33b2f43e9f8a +index 000000000..33b2f43e9 --- /dev/null +++ b/drivers/video/rockchip/rga2/rga2_debugger.h @@ -0,0 +1,120 @@ @@ -1620349,7 +1633640,7 @@ index 000000000000..33b2f43e9f8a + diff --git a/drivers/video/rockchip/rga2/rga2_drv.c b/drivers/video/rockchip/rga2/rga2_drv.c new file mode 100755 -index 000000000000..9aeb89ac682a +index 000000000..9aeb89ac6 --- /dev/null +++ b/drivers/video/rockchip/rga2/rga2_drv.c @@ -0,0 +1,2264 @@ @@ -1622619,7 +1635910,7 @@ index 000000000000..9aeb89ac682a +MODULE_LICENSE("GPL"); diff --git a/drivers/video/rockchip/rga2/rga2_mmu_info.c b/drivers/video/rockchip/rga2/rga2_mmu_info.c new file mode 100755 -index 000000000000..2b05c9356c3a +index 000000000..2b05c9356 --- /dev/null +++ b/drivers/video/rockchip/rga2/rga2_mmu_info.c @@ -0,0 +1,1831 @@ @@ -1624456,7 +1637747,7 @@ index 000000000000..2b05c9356c3a + diff --git a/drivers/video/rockchip/rga2/rga2_mmu_info.h b/drivers/video/rockchip/rga2/rga2_mmu_info.h new file mode 100755 -index 000000000000..a823f2fe7c3a +index 000000000..a823f2fe7 --- /dev/null +++ b/drivers/video/rockchip/rga2/rga2_mmu_info.h @@ -0,0 +1,35 @@ @@ -1624497,7 +1637788,7 @@ index 000000000000..a823f2fe7c3a + diff --git a/drivers/video/rockchip/rga2/rga2_reg_info.c b/drivers/video/rockchip/rga2/rga2_reg_info.c new file mode 100755 -index 000000000000..a6c154989dd1 +index 000000000..a6c154989 --- /dev/null +++ b/drivers/video/rockchip/rga2/rga2_reg_info.c @@ -0,0 +1,1689 @@ @@ -1626192,7 +1639483,7 @@ index 000000000000..a6c154989dd1 +} diff --git a/drivers/video/rockchip/rga2/rga2_reg_info.h b/drivers/video/rockchip/rga2/rga2_reg_info.h new file mode 100755 -index 000000000000..7aaac7d3502b +index 000000000..7aaac7d35 --- /dev/null +++ b/drivers/video/rockchip/rga2/rga2_reg_info.h @@ -0,0 +1,331 @@ @@ -1626529,7 +1639820,7 @@ index 000000000000..7aaac7d3502b + diff --git a/drivers/video/rockchip/rga2/rga2_rop.h b/drivers/video/rockchip/rga2/rga2_rop.h new file mode 100755 -index 000000000000..dc2a343f4c5c +index 000000000..dc2a343f4 --- /dev/null +++ b/drivers/video/rockchip/rga2/rga2_rop.h @@ -0,0 +1,56 @@ @@ -1626591,7 +1639882,7 @@ index 000000000000..dc2a343f4c5c +#endif diff --git a/drivers/video/rockchip/rga2/rga2_type.h b/drivers/video/rockchip/rga2/rga2_type.h new file mode 100755 -index 000000000000..30f5df2f38e5 +index 000000000..30f5df2f3 --- /dev/null +++ b/drivers/video/rockchip/rga2/rga2_type.h @@ -0,0 +1,49 @@ @@ -1626645,7 +1639936,7 @@ index 000000000000..30f5df2f38e5 +#endif /* __RGA_TYPR_H__ */ + diff --git a/fs/ubifs/recovery.c b/fs/ubifs/recovery.c -index f0d51dd21c9e..c81fbe355adc 100644 +index f0d51dd21..c81fbe355 100644 --- a/fs/ubifs/recovery.c +++ b/fs/ubifs/recovery.c @@ -662,10 +662,43 @@ struct ubifs_scan_leb *ubifs_recover_leb(struct ubifs_info *c, int lnum, @@ -1626697,7 +1639988,7 @@ index f0d51dd21c9e..c81fbe355adc 100644 ret, lnum, offs); break; diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c -index 511c9363e1a9..2bfbcf28b1bd 100644 +index 511c9363e..2bfbcf28b 100644 --- a/fs/xfs/xfs_inode.c +++ b/fs/xfs/xfs_inode.c @@ -802,7 +802,6 @@ xfs_ialloc( @@ -1626734,7 +1640025,7 @@ index 511c9363e1a9..2bfbcf28b1bd 100644 /* diff --git a/include/drm/bridge/analogix_dp.h b/include/drm/bridge/analogix_dp.h -index b0dcc07334a1..26b4246cbe6b 100644 +index b0dcc0733..26b4246cb 100644 --- a/include/drm/bridge/analogix_dp.h +++ b/include/drm/bridge/analogix_dp.h @@ -8,6 +8,7 @@ @@ -1626812,7 +1640103,7 @@ index b0dcc07334a1..26b4246cbe6b 100644 + #endif /* _ANALOGIX_DP_H_ */ diff --git a/include/drm/bridge/dw_hdmi.h b/include/drm/bridge/dw_hdmi.h -index ea34ca146b82..51203f874e8e 100644 +index ea34ca146..51203f874 100644 --- a/include/drm/bridge/dw_hdmi.h +++ b/include/drm/bridge/dw_hdmi.h @@ -6,12 +6,15 @@ @@ -1626998,7 +1640289,7 @@ index ea34ca146b82..51203f874e8e 100644 #endif /* __IMX_HDMI_H__ */ diff --git a/include/drm/bridge/dw_mipi_dsi.h b/include/drm/bridge/dw_mipi_dsi.h -index bda8aa7c2280..f89b0476aafd 100644 +index bda8aa7c2..f89b0476a 100644 --- a/include/drm/bridge/dw_mipi_dsi.h +++ b/include/drm/bridge/dw_mipi_dsi.h @@ -66,5 +66,6 @@ void dw_mipi_dsi_remove(struct dw_mipi_dsi *dsi); @@ -1627009,7 +1640300,7 @@ index bda8aa7c2280..f89b0476aafd 100644 #endif /* __DW_MIPI_DSI__ */ diff --git a/include/drm/drm_auth.h b/include/drm/drm_auth.h -index f99d3417f304..6bf8b2b78991 100644 +index f99d3417f..6bf8b2b78 100644 --- a/include/drm/drm_auth.h +++ b/include/drm/drm_auth.h @@ -107,7 +107,6 @@ struct drm_master { @@ -1627021,7 +1640312,7 @@ index f99d3417f304..6bf8b2b78991 100644 bool drm_is_current_master(struct drm_file *fpriv); diff --git a/include/drm/drm_connector.h b/include/drm/drm_connector.h -index 928136556174..f8cd5d8e58ee 100644 +index 928136556..f8cd5d8e5 100644 --- a/include/drm/drm_connector.h +++ b/include/drm/drm_connector.h @@ -175,6 +175,48 @@ struct drm_scdc { @@ -1627100,7 +1640391,7 @@ index 928136556174..f8cd5d8e58ee 100644 const char *drm_get_connector_status_name(enum drm_connector_status status); const char *drm_get_subpixel_order_name(enum subpixel_order order); diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h -index 59b51a09cae6..3a3d9d887cad 100644 +index 59b51a09c..3a3d9d887 100644 --- a/include/drm/drm_crtc.h +++ b/include/drm/drm_crtc.h @@ -287,7 +287,16 @@ struct drm_crtc_state { @@ -1627122,7 +1640413,7 @@ index 59b51a09cae6..3a3d9d887cad 100644 * @target_vblank: * diff --git a/include/drm/drm_drv.h b/include/drm/drm_drv.h -index e57d0440f00f..e395d1fc186e 100644 +index e57d0440f..e395d1fc1 100644 --- a/include/drm/drm_drv.h +++ b/include/drm/drm_drv.h @@ -29,6 +29,7 @@ @@ -1627150,7 +1640441,7 @@ index e57d0440f00f..e395d1fc186e 100644 * @dumb_create: * diff --git a/include/drm/drm_edid.h b/include/drm/drm_edid.h -index e97daf6ffbb1..20ce8f88123b 100644 +index e97daf6ff..20ce8f881 100644 --- a/include/drm/drm_edid.h +++ b/include/drm/drm_edid.h @@ -229,6 +229,38 @@ struct detailed_timing { @@ -1627193,7 +1640484,7 @@ index e97daf6ffbb1..20ce8f88123b 100644 #define DRM_ELD_HEADER_BLOCK_SIZE 4 diff --git a/include/drm/drm_file.h b/include/drm/drm_file.h -index 42d04607d091..b81b3bfb08c8 100644 +index 42d04607d..b81b3bfb0 100644 --- a/include/drm/drm_file.h +++ b/include/drm/drm_file.h @@ -226,27 +226,15 @@ struct drm_file { @@ -1627238,7 +1640529,7 @@ index 42d04607d091..b81b3bfb08c8 100644 struct file *mock_drm_getfile(struct drm_minor *minor, unsigned int flags); diff --git a/include/drm/drm_mipi_dsi.h b/include/drm/drm_mipi_dsi.h -index 360e6377e84b..952f475a68d6 100644 +index 360e6377e..952f475a6 100644 --- a/include/drm/drm_mipi_dsi.h +++ b/include/drm/drm_mipi_dsi.h @@ -19,12 +19,18 @@ struct drm_dsc_picture_parameter_set; @@ -1627281,7 +1640572,7 @@ index 360e6377e84b..952f475a68d6 100644 enum mipi_dsi_pixel_format { MIPI_DSI_FMT_RGB888, diff --git a/include/drm/drm_mode_config.h b/include/drm/drm_mode_config.h -index a18f73eb3cf6..76d114569484 100644 +index a18f73eb3..76d114569 100644 --- a/include/drm/drm_mode_config.h +++ b/include/drm/drm_mode_config.h @@ -794,6 +794,19 @@ struct drm_mode_config { @@ -1627305,7 +1640596,7 @@ index a18f73eb3cf6..76d114569484 100644 * @suggested_x_property: Optional connector property with a hint for * the position of the output on the host's screen. diff --git a/include/drm/drm_mode_object.h b/include/drm/drm_mode_object.h -index c34a3e8030e1..6292fa663844 100644 +index c34a3e803..6292fa663 100644 --- a/include/drm/drm_mode_object.h +++ b/include/drm/drm_mode_object.h @@ -60,7 +60,7 @@ struct drm_mode_object { @@ -1627318,7 +1640609,7 @@ index c34a3e8030e1..6292fa663844 100644 * struct drm_object_properties - property tracking for &drm_mode_object */ diff --git a/include/drm/drm_prime.h b/include/drm/drm_prime.h -index 0f69f9fbf12c..a9d0c6b0854e 100644 +index 0f69f9fbf..a9d0c6b08 100644 --- a/include/drm/drm_prime.h +++ b/include/drm/drm_prime.h @@ -107,5 +107,6 @@ void drm_prime_gem_destroy(struct drm_gem_object *obj, struct sg_table *sg); @@ -1627330,7 +1640621,7 @@ index 0f69f9fbf12c..a9d0c6b0854e 100644 #endif /* __DRM_PRIME_H__ */ diff --git a/include/drm/drm_sync_helper.h b/include/drm/drm_sync_helper.h new file mode 100755 -index 000000000000..a5586c674fec +index 000000000..a5586c674 --- /dev/null +++ b/include/drm/drm_sync_helper.h @@ -0,0 +1,156 @@ @@ -1627491,7 +1640782,7 @@ index 000000000000..a5586c674fec + +#endif diff --git a/include/dt-bindings/clock/px30-cru.h b/include/dt-bindings/clock/px30-cru.h -index 5b1416fcde6f..33eac20e9ad4 100644 +index 5b1416fcd..33eac20e9 100644 --- a/include/dt-bindings/clock/px30-cru.h +++ b/include/dt-bindings/clock/px30-cru.h @@ -87,6 +87,8 @@ @@ -1627505,7 +1640796,7 @@ index 5b1416fcde6f..33eac20e9ad4 100644 #define DCLK_VOPB 150 diff --git a/include/dt-bindings/clock/rk1808-cru.h b/include/dt-bindings/clock/rk1808-cru.h new file mode 100755 -index 000000000000..994896d111f1 +index 000000000..994896d11 --- /dev/null +++ b/include/dt-bindings/clock/rk1808-cru.h @@ -0,0 +1,473 @@ @@ -1627983,7 +1641274,7 @@ index 000000000000..994896d111f1 + +#endif diff --git a/include/dt-bindings/clock/rk3036-cru.h b/include/dt-bindings/clock/rk3036-cru.h -index 35a5a01f9697..ec8c3e748463 100644 +index 35a5a01f9..ec8c3e748 100644 --- a/include/dt-bindings/clock/rk3036-cru.h +++ b/include/dt-bindings/clock/rk3036-cru.h @@ -43,6 +43,8 @@ @@ -1628012,7 +1641303,7 @@ index 35a5a01f9697..ec8c3e748463 100644 #define HCLK_SDIO 457 #define HCLK_EMMC 459 diff --git a/include/dt-bindings/clock/rk3128-cru.h b/include/dt-bindings/clock/rk3128-cru.h -index 6a47825dac5d..e5269025da79 100644 +index 6a47825da..e5269025d 100644 --- a/include/dt-bindings/clock/rk3128-cru.h +++ b/include/dt-bindings/clock/rk3128-cru.h @@ -118,6 +118,7 @@ @@ -1628024,7 +1641315,7 @@ index 6a47825dac5d..e5269025da79 100644 #define HCLK_GPS 441 #define HCLK_USBHOST 442 diff --git a/include/dt-bindings/clock/rk3188-cru-common.h b/include/dt-bindings/clock/rk3188-cru-common.h -index afad90680fce..a5de0f65fe06 100644 +index afad90680..a5de0f65f 100644 --- a/include/dt-bindings/clock/rk3188-cru-common.h +++ b/include/dt-bindings/clock/rk3188-cru-common.h @@ -67,6 +67,7 @@ @@ -1628049,7 +1641340,7 @@ index afad90680fce..a5de0f65fe06 100644 #define HCLK_HSIC 458 #define HCLK_HSADC 459 diff --git a/include/dt-bindings/clock/rk3288-cru.h b/include/dt-bindings/clock/rk3288-cru.h -index 33819acbfc56..7c94bc10baae 100644 +index 33819acbf..7c94bc10b 100644 --- a/include/dt-bindings/clock/rk3288-cru.h +++ b/include/dt-bindings/clock/rk3288-cru.h @@ -161,6 +161,10 @@ @@ -1628064,7 +1641355,7 @@ index 33819acbfc56..7c94bc10baae 100644 /* hclk gates */ #define HCLK_GPS 448 diff --git a/include/dt-bindings/clock/rk3368-cru.h b/include/dt-bindings/clock/rk3368-cru.h -index 0a06c5f514d7..7f2d1882ed31 100644 +index 0a06c5f51..7f2d1882e 100644 --- a/include/dt-bindings/clock/rk3368-cru.h +++ b/include/dt-bindings/clock/rk3368-cru.h @@ -101,6 +101,7 @@ @@ -1628076,7 +1641367,7 @@ index 0a06c5f514d7..7f2d1882ed31 100644 /* pclk gates */ #define PCLK_GPIO0 320 diff --git a/include/dt-bindings/clock/rk3399-cru.h b/include/dt-bindings/clock/rk3399-cru.h -index 44e0a319f077..a06e18ebc4dd 100644 +index 44e0a319f..a06e18ebc 100644 --- a/include/dt-bindings/clock/rk3399-cru.h +++ b/include/dt-bindings/clock/rk3399-cru.h @@ -7,6 +7,8 @@ @@ -1628137,7 +1641428,7 @@ index 44e0a319f077..a06e18ebc4dd 100644 #define SRST_PVTM_CORE_B 47 diff --git a/include/dt-bindings/clock/rk3568-cru.h b/include/dt-bindings/clock/rk3568-cru.h new file mode 100755 -index 000000000000..aecfdd4ce084 +index 000000000..aecfdd4ce --- /dev/null +++ b/include/dt-bindings/clock/rk3568-cru.h @@ -0,0 +1,932 @@ @@ -1629075,7 +1642366,7 @@ index 000000000000..aecfdd4ce084 +#endif diff --git a/include/dt-bindings/clock/rk618-cru.h b/include/dt-bindings/clock/rk618-cru.h new file mode 100755 -index 000000000000..72ae0aef1378 +index 000000000..72ae0aef1 --- /dev/null +++ b/include/dt-bindings/clock/rk618-cru.h @@ -0,0 +1,38 @@ @@ -1629119,7 +1642410,7 @@ index 000000000000..72ae0aef1378 +#endif diff --git a/include/dt-bindings/clock/rk628-cgu.h b/include/dt-bindings/clock/rk628-cgu.h new file mode 100755 -index 000000000000..d1690907d208 +index 000000000..d1690907d --- /dev/null +++ b/include/dt-bindings/clock/rk628-cgu.h @@ -0,0 +1,50 @@ @@ -1629175,7 +1642466,7 @@ index 000000000000..d1690907d208 +#endif diff --git a/include/dt-bindings/clock/rockchip,rk3036.h b/include/dt-bindings/clock/rockchip,rk3036.h new file mode 100755 -index 000000000000..019550c7d0c1 +index 000000000..019550c7d --- /dev/null +++ b/include/dt-bindings/clock/rockchip,rk3036.h @@ -0,0 +1,155 @@ @@ -1629336,7 +1642627,7 @@ index 000000000000..019550c7d0c1 +#endif /* _DT_BINDINGS_CLOCK_ROCKCHIP_RK3036_H */ diff --git a/include/dt-bindings/clock/rockchip,rk312x.h b/include/dt-bindings/clock/rockchip,rk312x.h new file mode 100755 -index 000000000000..0af5abca3470 +index 000000000..0af5abca3 --- /dev/null +++ b/include/dt-bindings/clock/rockchip,rk312x.h @@ -0,0 +1,167 @@ @@ -1629509,7 +1642800,7 @@ index 000000000000..0af5abca3470 +#endif /* _DT_BINDINGS_CLOCK_ROCKCHIP_RK3128_H */ diff --git a/include/dt-bindings/clock/rockchip,rk3188.h b/include/dt-bindings/clock/rockchip,rk3188.h new file mode 100755 -index 000000000000..b8c57e1cfed8 +index 000000000..b8c57e1cf --- /dev/null +++ b/include/dt-bindings/clock/rockchip,rk3188.h @@ -0,0 +1,13 @@ @@ -1629528,7 +1642819,7 @@ index 000000000000..b8c57e1cfed8 +#endif /* _DT_BINDINGS_CLOCK_ROCKCHIP_RK3188_H */ diff --git a/include/dt-bindings/clock/rockchip,rk3228.h b/include/dt-bindings/clock/rockchip,rk3228.h new file mode 100755 -index 000000000000..b86e44536722 +index 000000000..b86e44536 --- /dev/null +++ b/include/dt-bindings/clock/rockchip,rk3228.h @@ -0,0 +1,167 @@ @@ -1629701,7 +1642992,7 @@ index 000000000000..b86e44536722 +#endif /* _DT_BINDINGS_CLOCK_ROCKCHIP_RK3228_H */ diff --git a/include/dt-bindings/clock/rockchip,rk3288.h b/include/dt-bindings/clock/rockchip,rk3288.h new file mode 100755 -index 000000000000..1a2803c4f168 +index 000000000..1a2803c4f --- /dev/null +++ b/include/dt-bindings/clock/rockchip,rk3288.h @@ -0,0 +1,220 @@ @@ -1629927,7 +1643218,7 @@ index 000000000000..1a2803c4f168 +#endif /* _DT_BINDINGS_CLOCK_ROCKCHIP_RK3288_H */ diff --git a/include/dt-bindings/clock/rockchip,rk3368.h b/include/dt-bindings/clock/rockchip,rk3368.h new file mode 100755 -index 000000000000..76630794b4d9 +index 000000000..76630794b --- /dev/null +++ b/include/dt-bindings/clock/rockchip,rk3368.h @@ -0,0 +1,263 @@ @@ -1630196,7 +1643487,7 @@ index 000000000000..76630794b4d9 +#endif /* _DT_BINDINGS_CLOCK_ROCKCHIP_RK3368_H */ diff --git a/include/dt-bindings/clock/rockchip-ddr.h b/include/dt-bindings/clock/rockchip-ddr.h new file mode 100755 -index 000000000000..b065432e7793 +index 000000000..b065432e7 --- /dev/null +++ b/include/dt-bindings/clock/rockchip-ddr.h @@ -0,0 +1,63 @@ @@ -1630265,7 +1643556,7 @@ index 000000000000..b065432e7793 +#endif diff --git a/include/dt-bindings/clock/rockchip.h b/include/dt-bindings/clock/rockchip.h new file mode 100755 -index 000000000000..b438f7bd4083 +index 000000000..b438f7bd4 --- /dev/null +++ b/include/dt-bindings/clock/rockchip.h @@ -0,0 +1,101 @@ @@ -1630372,7 +1643663,7 @@ index 000000000000..b438f7bd4083 +#endif /* _DT_BINDINGS_CLOCK_ROCKCHIP_H */ diff --git a/include/dt-bindings/clock/rv1126-cru.h b/include/dt-bindings/clock/rv1126-cru.h new file mode 100755 -index 000000000000..474bcbc546af +index 000000000..474bcbc54 --- /dev/null +++ b/include/dt-bindings/clock/rv1126-cru.h @@ -0,0 +1,633 @@ @@ -1631011,7 +1644302,7 @@ index 000000000000..474bcbc546af +#endif diff --git a/include/dt-bindings/display/drm_mipi_dsi.h b/include/dt-bindings/display/drm_mipi_dsi.h new file mode 100755 -index 000000000000..bc24ce4ddd08 +index 000000000..bc24ce4dd --- /dev/null +++ b/include/dt-bindings/display/drm_mipi_dsi.h @@ -0,0 +1,53 @@ @@ -1631070,7 +1644361,7 @@ index 000000000000..bc24ce4ddd08 +#endif /* __DRM_MIPI_DSI__ */ diff --git a/include/dt-bindings/display/media-bus-format.h b/include/dt-bindings/display/media-bus-format.h new file mode 100755 -index 000000000000..b8e9a1bb3f95 +index 000000000..b8e9a1bb3 --- /dev/null +++ b/include/dt-bindings/display/media-bus-format.h @@ -0,0 +1,152 @@ @@ -1631228,7 +1644519,7 @@ index 000000000000..b8e9a1bb3f95 +#endif /* __LINUX_MEDIA_BUS_FORMAT_H */ diff --git a/include/dt-bindings/display/mipi_dsi.h b/include/dt-bindings/display/mipi_dsi.h new file mode 100755 -index 000000000000..38aeee0ed51d +index 000000000..38aeee0ed --- /dev/null +++ b/include/dt-bindings/display/mipi_dsi.h @@ -0,0 +1,106 @@ @@ -1631340,7 +1644631,7 @@ index 000000000000..38aeee0ed51d +#endif /* end of MIPI_DSI_H_ */ diff --git a/include/dt-bindings/display/rockchip_vop.h b/include/dt-bindings/display/rockchip_vop.h new file mode 100644 -index 000000000000..3e14128e7ab1 +index 000000000..3e14128e7 --- /dev/null +++ b/include/dt-bindings/display/rockchip_vop.h @@ -0,0 +1,21 @@ @@ -1631367,7 +1644658,7 @@ index 000000000000..3e14128e7ab1 +#endif diff --git a/include/dt-bindings/dram/rockchip,rk322x.h b/include/dt-bindings/dram/rockchip,rk322x.h new file mode 100755 -index 000000000000..1ab3317d700e +index 000000000..1ab3317d7 --- /dev/null +++ b/include/dt-bindings/dram/rockchip,rk322x.h @@ -0,0 +1,90 @@ @@ -1631463,7 +1644754,7 @@ index 000000000000..1ab3317d700e +#endif /* _DT_BINDINGS_DRAM_ROCKCHIP_RK322X_H */ diff --git a/include/dt-bindings/dram/rockchip,rk3368.h b/include/dt-bindings/dram/rockchip,rk3368.h new file mode 100755 -index 000000000000..993f1eed9816 +index 000000000..993f1eed9 --- /dev/null +++ b/include/dt-bindings/dram/rockchip,rk3368.h @@ -0,0 +1,80 @@ @@ -1631549,7 +1644840,7 @@ index 000000000000..993f1eed9816 +#endif /*_DT_BINDINGS_DRAM_ROCKCHIP_RK3368_H*/ diff --git a/include/dt-bindings/input/rk-input.h b/include/dt-bindings/input/rk-input.h new file mode 100755 -index 000000000000..00b412927890 +index 000000000..00b412927 --- /dev/null +++ b/include/dt-bindings/input/rk-input.h @@ -0,0 +1,814 @@ @@ -1632369,7 +1645660,7 @@ index 000000000000..00b412927890 +#define FF_STATUS_MAX 0x01 diff --git a/include/dt-bindings/memory/px30-dram.h b/include/dt-bindings/memory/px30-dram.h new file mode 100755 -index 000000000000..17d799d802d9 +index 000000000..17d799d80 --- /dev/null +++ b/include/dt-bindings/memory/px30-dram.h @@ -0,0 +1,132 @@ @@ -1632507,7 +1645798,7 @@ index 000000000000..17d799d802d9 +#endif /*_DT_BINDINGS_DRAM_ROCKCHIP_PX30_H*/ diff --git a/include/dt-bindings/memory/rk1808-dram.h b/include/dt-bindings/memory/rk1808-dram.h new file mode 100755 -index 000000000000..522bd75a4a55 +index 000000000..522bd75a4 --- /dev/null +++ b/include/dt-bindings/memory/rk1808-dram.h @@ -0,0 +1,180 @@ @@ -1632693,7 +1645984,7 @@ index 000000000000..522bd75a4a55 +#endif /*_DT_BINDINGS_DRAM_ROCKCHIP_RK1808_H*/ diff --git a/include/dt-bindings/memory/rk3128-dram.h b/include/dt-bindings/memory/rk3128-dram.h new file mode 100755 -index 000000000000..2598ac98e525 +index 000000000..2598ac98e --- /dev/null +++ b/include/dt-bindings/memory/rk3128-dram.h @@ -0,0 +1,95 @@ @@ -1632794,7 +1646085,7 @@ index 000000000000..2598ac98e525 +#endif /* _DT_BINDINGS_DRAM_ROCKCHIP_RK3128_H */ diff --git a/include/dt-bindings/memory/rk3288-dram.h b/include/dt-bindings/memory/rk3288-dram.h new file mode 100755 -index 000000000000..1c531dca755c +index 000000000..1c531dca7 --- /dev/null +++ b/include/dt-bindings/memory/rk3288-dram.h @@ -0,0 +1,127 @@ @@ -1632927,7 +1646218,7 @@ index 000000000000..1c531dca755c +#endif /*_DT_BINDINGS_DRAM_ROCKCHIP_RK3288_H*/ diff --git a/include/dt-bindings/memory/rk3328-dram.h b/include/dt-bindings/memory/rk3328-dram.h new file mode 100755 -index 000000000000..171f41c256d3 +index 000000000..171f41c25 --- /dev/null +++ b/include/dt-bindings/memory/rk3328-dram.h @@ -0,0 +1,159 @@ @@ -1633092,7 +1646383,7 @@ index 000000000000..171f41c256d3 +#endif /*_DT_BINDINGS_DRAM_ROCKCHIP_RK3328_H*/ diff --git a/include/dt-bindings/memory/rk3368-dram.h b/include/dt-bindings/memory/rk3368-dram.h new file mode 100755 -index 000000000000..c1f23d32d987 +index 000000000..c1f23d32d --- /dev/null +++ b/include/dt-bindings/memory/rk3368-dram.h @@ -0,0 +1,109 @@ @@ -1633207,7 +1646498,7 @@ index 000000000000..c1f23d32d987 +#endif /*_DT_BINDINGS_DRAM_ROCKCHIP_RK3368_H*/ diff --git a/include/dt-bindings/memory/rk3399-dram.h b/include/dt-bindings/memory/rk3399-dram.h new file mode 100755 -index 000000000000..44abb0aafb05 +index 000000000..44abb0aaf --- /dev/null +++ b/include/dt-bindings/memory/rk3399-dram.h @@ -0,0 +1,107 @@ @@ -1633320,7 +1646611,7 @@ index 000000000000..44abb0aafb05 +#endif /* _DT_BINDINGS_DRAM_ROCKCHIP_RK3399_H */ diff --git a/include/dt-bindings/memory/rk3568-dram.h b/include/dt-bindings/memory/rk3568-dram.h new file mode 100755 -index 000000000000..c05eae7fe32e +index 000000000..c05eae7fe --- /dev/null +++ b/include/dt-bindings/memory/rk3568-dram.h @@ -0,0 +1,111 @@ @@ -1633437,7 +1646728,7 @@ index 000000000000..c05eae7fe32e +#endif /* _DT_BINDINGS_DRAM_ROCKCHIP_RK3568_H */ diff --git a/include/dt-bindings/memory/rockchip-dram.h b/include/dt-bindings/memory/rockchip-dram.h new file mode 100755 -index 000000000000..17e5e34b05c5 +index 000000000..17e5e34b0 --- /dev/null +++ b/include/dt-bindings/memory/rockchip-dram.h @@ -0,0 +1,94 @@ @@ -1633537,7 +1646828,7 @@ index 000000000000..17e5e34b05c5 +#endif /* _DT_BINDINGS_DRAM_ROCKCHIP_H */ diff --git a/include/dt-bindings/memory/rv1126-dram.h b/include/dt-bindings/memory/rv1126-dram.h new file mode 100755 -index 000000000000..208227825044 +index 000000000..208227825 --- /dev/null +++ b/include/dt-bindings/memory/rv1126-dram.h @@ -0,0 +1,161 @@ @@ -1633704,7 +1646995,7 @@ index 000000000000..208227825044 +#endif /*_DT_BINDINGS_DRAM_ROCKCHIP_RV1126_H*/ diff --git a/include/dt-bindings/phy/phy-snps-pcie3.h b/include/dt-bindings/phy/phy-snps-pcie3.h new file mode 100755 -index 000000000000..5006947f2285 +index 000000000..5006947f2 --- /dev/null +++ b/include/dt-bindings/phy/phy-snps-pcie3.h @@ -0,0 +1,21 @@ @@ -1633731,7 +1647022,7 @@ index 000000000000..5006947f2285 +#endif /* _DT_BINDINGS_PHY_SNPS_PCIE3 */ diff --git a/include/dt-bindings/pinctrl/rockchip-rk3036.h b/include/dt-bindings/pinctrl/rockchip-rk3036.h new file mode 100755 -index 000000000000..553c33579065 +index 000000000..553c33579 --- /dev/null +++ b/include/dt-bindings/pinctrl/rockchip-rk3036.h @@ -0,0 +1,267 @@ @@ -1634004,7 +1647295,7 @@ index 000000000000..553c33579065 +#endif diff --git a/include/dt-bindings/pinctrl/rockchip-rk312x.h b/include/dt-bindings/pinctrl/rockchip-rk312x.h new file mode 100755 -index 000000000000..e0fa5976c18f +index 000000000..e0fa5976c --- /dev/null +++ b/include/dt-bindings/pinctrl/rockchip-rk312x.h @@ -0,0 +1,384 @@ @@ -1634394,7 +1647685,7 @@ index 000000000000..e0fa5976c18f +#endif diff --git a/include/dt-bindings/pinctrl/rockchip-rk3188.h b/include/dt-bindings/pinctrl/rockchip-rk3188.h new file mode 100755 -index 000000000000..58bba225d1de +index 000000000..58bba225d --- /dev/null +++ b/include/dt-bindings/pinctrl/rockchip-rk3188.h @@ -0,0 +1,457 @@ @@ -1634857,7 +1648148,7 @@ index 000000000000..58bba225d1de +#endif diff --git a/include/dt-bindings/pinctrl/rockchip-rk3288.h b/include/dt-bindings/pinctrl/rockchip-rk3288.h new file mode 100755 -index 000000000000..97aa66e2b329 +index 000000000..97aa66e2b --- /dev/null +++ b/include/dt-bindings/pinctrl/rockchip-rk3288.h @@ -0,0 +1,666 @@ @@ -1635529,7 +1648820,7 @@ index 000000000000..97aa66e2b329 +#endif diff --git a/include/dt-bindings/power/rk1808-power.h b/include/dt-bindings/power/rk1808-power.h new file mode 100755 -index 000000000000..32342c1e7ded +index 000000000..32342c1e7 --- /dev/null +++ b/include/dt-bindings/power/rk1808-power.h @@ -0,0 +1,20 @@ @@ -1635555,7 +1648846,7 @@ index 000000000000..32342c1e7ded +#endif diff --git a/include/dt-bindings/power/rk3568-power.h b/include/dt-bindings/power/rk3568-power.h new file mode 100755 -index 000000000000..6cc1af1a9d26 +index 000000000..6cc1af1a9 --- /dev/null +++ b/include/dt-bindings/power/rk3568-power.h @@ -0,0 +1,32 @@ @@ -1635593,7 +1648884,7 @@ index 000000000000..6cc1af1a9d26 +#endif diff --git a/include/dt-bindings/power/rk3588-power.h b/include/dt-bindings/power/rk3588-power.h new file mode 100755 -index 000000000000..69f7e9060250 +index 000000000..69f7e9060 --- /dev/null +++ b/include/dt-bindings/power/rk3588-power.h @@ -0,0 +1,69 @@ @@ -1635668,7 +1648959,7 @@ index 000000000000..69f7e9060250 +#endif diff --git a/include/dt-bindings/power/rv1126-power.h b/include/dt-bindings/power/rv1126-power.h new file mode 100755 -index 000000000000..3e210103646f +index 000000000..3e2101036 --- /dev/null +++ b/include/dt-bindings/power/rv1126-power.h @@ -0,0 +1,34 @@ @@ -1635708,7 +1648999,7 @@ index 000000000000..3e210103646f +#endif diff --git a/include/dt-bindings/reset/rk628-rgu.h b/include/dt-bindings/reset/rk628-rgu.h new file mode 100755 -index 000000000000..e0c714bef00c +index 000000000..e0c714bef --- /dev/null +++ b/include/dt-bindings/reset/rk628-rgu.h @@ -0,0 +1,43 @@ @@ -1635757,7 +1649048,7 @@ index 000000000000..e0c714bef00c +#endif diff --git a/include/dt-bindings/sensor-dev.h b/include/dt-bindings/sensor-dev.h new file mode 100755 -index 000000000000..e03f0027d325 +index 000000000..e03f0027d --- /dev/null +++ b/include/dt-bindings/sensor-dev.h @@ -0,0 +1,18 @@ @@ -1635780,7 +1649071,7 @@ index 000000000000..e03f0027d325 + +#endif diff --git a/include/dt-bindings/soc/rockchip,boot-mode.h b/include/dt-bindings/soc/rockchip,boot-mode.h -index 4b0914c0989d..1436e1d32619 100644 +index 4b0914c09..1436e1d32 100644 --- a/include/dt-bindings/soc/rockchip,boot-mode.h +++ b/include/dt-bindings/soc/rockchip,boot-mode.h @@ -10,7 +10,15 @@ @@ -1635802,7 +1649093,7 @@ index 4b0914c0989d..1436e1d32619 100644 #endif diff --git a/include/dt-bindings/soc/rockchip-system-status.h b/include/dt-bindings/soc/rockchip-system-status.h new file mode 100755 -index 000000000000..837a1a969c78 +index 000000000..837a1a969 --- /dev/null +++ b/include/dt-bindings/soc/rockchip-system-status.h @@ -0,0 +1,48 @@ @@ -1635856,7 +1649147,7 @@ index 000000000000..837a1a969c78 +#endif diff --git a/include/dt-bindings/suspend/rockchip-px30.h b/include/dt-bindings/suspend/rockchip-px30.h new file mode 100755 -index 000000000000..4362028f677c +index 000000000..4362028f6 --- /dev/null +++ b/include/dt-bindings/suspend/rockchip-px30.h @@ -0,0 +1,53 @@ @@ -1635915,7 +1649206,7 @@ index 000000000000..4362028f677c +#endif diff --git a/include/dt-bindings/suspend/rockchip-rk1808.h b/include/dt-bindings/suspend/rockchip-rk1808.h new file mode 100755 -index 000000000000..3d565faabf4d +index 000000000..3d565faab --- /dev/null +++ b/include/dt-bindings/suspend/rockchip-rk1808.h @@ -0,0 +1,46 @@ @@ -1635967,7 +1649258,7 @@ index 000000000000..3d565faabf4d +#endif diff --git a/include/dt-bindings/suspend/rockchip-rk322x.h b/include/dt-bindings/suspend/rockchip-rk322x.h new file mode 100755 -index 000000000000..882ae053fa22 +index 000000000..882ae053f --- /dev/null +++ b/include/dt-bindings/suspend/rockchip-rk322x.h @@ -0,0 +1,57 @@ @@ -1636030,7 +1649321,7 @@ index 000000000000..882ae053fa22 +#endif diff --git a/include/dt-bindings/suspend/rockchip-rk3288.h b/include/dt-bindings/suspend/rockchip-rk3288.h new file mode 100755 -index 000000000000..d07cced43877 +index 000000000..d07cced43 --- /dev/null +++ b/include/dt-bindings/suspend/rockchip-rk3288.h @@ -0,0 +1,59 @@ @@ -1636095,7 +1649386,7 @@ index 000000000000..d07cced43877 +#endif diff --git a/include/dt-bindings/suspend/rockchip-rk3308.h b/include/dt-bindings/suspend/rockchip-rk3308.h new file mode 100755 -index 000000000000..a3e015e2209a +index 000000000..a3e015e22 --- /dev/null +++ b/include/dt-bindings/suspend/rockchip-rk3308.h @@ -0,0 +1,104 @@ @@ -1636205,7 +1649496,7 @@ index 000000000000..a3e015e2209a +#endif diff --git a/include/dt-bindings/suspend/rockchip-rk3328.h b/include/dt-bindings/suspend/rockchip-rk3328.h new file mode 100755 -index 000000000000..972f8bb5e281 +index 000000000..972f8bb5e --- /dev/null +++ b/include/dt-bindings/suspend/rockchip-rk3328.h @@ -0,0 +1,19 @@ @@ -1636230,7 +1649521,7 @@ index 000000000000..972f8bb5e281 +#endif diff --git a/include/dt-bindings/suspend/rockchip-rk3368.h b/include/dt-bindings/suspend/rockchip-rk3368.h new file mode 100755 -index 000000000000..9873f8236a8b +index 000000000..9873f8236 --- /dev/null +++ b/include/dt-bindings/suspend/rockchip-rk3368.h @@ -0,0 +1,56 @@ @@ -1636292,7 +1649583,7 @@ index 000000000000..9873f8236a8b +#endif diff --git a/include/dt-bindings/suspend/rockchip-rk3399.h b/include/dt-bindings/suspend/rockchip-rk3399.h new file mode 100755 -index 000000000000..176c7cfcd989 +index 000000000..176c7cfcd --- /dev/null +++ b/include/dt-bindings/suspend/rockchip-rk3399.h @@ -0,0 +1,61 @@ @@ -1636359,7 +1649650,7 @@ index 000000000000..176c7cfcd989 +#endif diff --git a/include/dt-bindings/suspend/rockchip-rk3568.h b/include/dt-bindings/suspend/rockchip-rk3568.h new file mode 100755 -index 000000000000..91e89f64a067 +index 000000000..91e89f64a --- /dev/null +++ b/include/dt-bindings/suspend/rockchip-rk3568.h @@ -0,0 +1,57 @@ @@ -1636422,7 +1649713,7 @@ index 000000000000..91e89f64a067 +#endif diff --git a/include/dt-bindings/suspend/rockchip-rv1126.h b/include/dt-bindings/suspend/rockchip-rv1126.h new file mode 100755 -index 000000000000..7c28c2bd7619 +index 000000000..7c28c2bd7 --- /dev/null +++ b/include/dt-bindings/suspend/rockchip-rv1126.h @@ -0,0 +1,46 @@ @@ -1636474,7 +1649765,7 @@ index 000000000000..7c28c2bd7619 +#endif diff --git a/include/linux/android_kabi.h b/include/linux/android_kabi.h new file mode 100755 -index 000000000000..efa52953fe35 +index 000000000..efa52953f --- /dev/null +++ b/include/linux/android_kabi.h @@ -0,0 +1,113 @@ @@ -1636592,7 +1649883,7 @@ index 000000000000..efa52953fe35 + +#endif /* _ANDROID_KABI_H */ diff --git a/include/linux/bpf.h b/include/linux/bpf.h -index 88245386a4b6..89b07eaf4415 100644 +index 17502f263..dfa8d6fe3 100644 --- a/include/linux/bpf.h +++ b/include/linux/bpf.h @@ -173,7 +173,7 @@ struct bpf_map { @@ -1636604,7 +1649895,7 @@ index 88245386a4b6..89b07eaf4415 100644 }; static inline bool map_value_has_spin_lock(const struct bpf_map *map) -@@ -1273,7 +1273,6 @@ void bpf_map_charge_move(struct bpf_map_memory *dst, +@@ -1332,7 +1332,6 @@ void bpf_map_charge_move(struct bpf_map_memory *dst, void *bpf_map_area_alloc(u64 size, int numa_node); void *bpf_map_area_mmapable_alloc(u64 size, int numa_node); void bpf_map_area_free(void *base); @@ -1636613,7 +1649904,7 @@ index 88245386a4b6..89b07eaf4415 100644 int generic_map_lookup_batch(struct bpf_map *map, const union bpf_attr *attr, diff --git a/include/linux/clk-provider.h b/include/linux/clk-provider.h -index 03a5de5f99f4..d9897d0b10a2 100644 +index 03a5de5f9..d9897d0b1 100644 --- a/include/linux/clk-provider.h +++ b/include/linux/clk-provider.h @@ -599,6 +599,7 @@ struct clk_divider { @@ -1636669,7 +1649960,7 @@ index 03a5de5f99f4..d9897d0b10a2 100644 const struct clk_ops *rate_ops; diff --git a/include/linux/clk/rockchip.h b/include/linux/clk/rockchip.h new file mode 100755 -index 000000000000..07c563a42c60 +index 000000000..07c563a42 --- /dev/null +++ b/include/linux/clk/rockchip.h @@ -0,0 +1,18 @@ @@ -1636692,7 +1649983,7 @@ index 000000000000..07c563a42c60 + +#endif /* __LINUX_CLK_ROCKCHIP_H_ */ diff --git a/include/linux/cpuset.h b/include/linux/cpuset.h -index 04c20de66afc..047f449d3658 100644 +index 04c20de66..047f449d3 100644 --- a/include/linux/cpuset.h +++ b/include/linux/cpuset.h @@ -15,6 +15,7 @@ @@ -1636732,7 +1650023,7 @@ index 04c20de66afc..047f449d3658 100644 #endif /* _LINUX_CPUSET_H */ diff --git a/include/linux/dma-buf-cache.h b/include/linux/dma-buf-cache.h new file mode 100755 -index 000000000000..d97545560990 +index 000000000..d97545560 --- /dev/null +++ b/include/linux/dma-buf-cache.h @@ -0,0 +1,32 @@ @@ -1636769,7 +1650060,7 @@ index 000000000000..d97545560990 + +#endif /* _LINUX_DMA_BUF_CACHE_H */ diff --git a/include/linux/dma-buf.h b/include/linux/dma-buf.h -index 957b398d30e5..f1242b50f627 100644 +index 957b398d3..f1242b50f 100644 --- a/include/linux/dma-buf.h +++ b/include/linux/dma-buf.h @@ -209,6 +209,41 @@ struct dma_buf_ops { @@ -1636968,7 +1650259,7 @@ index 957b398d30e5..f1242b50f627 100644 + #endif /* __DMA_BUF_H__ */ diff --git a/include/linux/dma-fence.h b/include/linux/dma-fence.h -index 09e23adb351d..9f12efaaa93a 100644 +index 09e23adb3..9f12efaaa 100644 --- a/include/linux/dma-fence.h +++ b/include/linux/dma-fence.h @@ -372,6 +372,9 @@ static inline void __dma_fence_might_wait(void) {} @@ -1636982,7 +1650273,7 @@ index 09e23adb351d..9f12efaaa93a 100644 bool intr, signed long timeout); int dma_fence_add_callback(struct dma_fence *fence, diff --git a/include/linux/dma-heap.h b/include/linux/dma-heap.h -index 454e354d1ffb..e8f0e92c27dd 100644 +index 454e354d1..e8f0e92c2 100644 --- a/include/linux/dma-heap.h +++ b/include/linux/dma-heap.h @@ -16,15 +16,17 @@ struct dma_heap; @@ -1637081,7 +1650372,7 @@ index 454e354d1ffb..e8f0e92c27dd 100644 + unsigned int heap_flags); #endif /* _DMA_HEAPS_H */ diff --git a/include/linux/dma-iommu.h b/include/linux/dma-iommu.h -index 2112f21f73d8..f51561eda33b 100644 +index 2112f21f7..f51561eda 100644 --- a/include/linux/dma-iommu.h +++ b/include/linux/dma-iommu.h @@ -37,6 +37,11 @@ void iommu_dma_compose_msi_msg(struct msi_desc *desc, @@ -1637114,7 +1650405,7 @@ index 2112f21f73d8..f51561eda33b 100644 #endif /* CONFIG_IOMMU_DMA */ #endif /* __DMA_IOMMU_H */ diff --git a/include/linux/dma-map-ops.h b/include/linux/dma-map-ops.h -index a5f89fc4d6df..84c14dbcdb66 100644 +index a5f89fc4d..84c14dbcd 100644 --- a/include/linux/dma-map-ops.h +++ b/include/linux/dma-map-ops.h @@ -8,6 +8,7 @@ @@ -1637153,7 +1650444,7 @@ index a5f89fc4d6df..84c14dbcdb66 100644 #else static inline pgprot_t dma_pgprot(struct device *dev, pgprot_t prot, diff --git a/include/linux/dma-mapping.h b/include/linux/dma-mapping.h -index a7d70cdee25e..7270f12e2c78 100644 +index a7d70cdee..7270f12e2 100644 --- a/include/linux/dma-mapping.h +++ b/include/linux/dma-mapping.h @@ -61,6 +61,23 @@ @@ -1637181,7 +1650472,7 @@ index a7d70cdee25e..7270f12e2c78 100644 * A dma_addr_t can hold any valid DMA or bus address for the platform. It can * be given to a device to use as a DMA source or target. It is specific to a diff --git a/include/linux/dmaengine.h b/include/linux/dmaengine.h -index dd357a747780..493a047ed0a2 100644 +index dd357a747..493a047ed 100644 --- a/include/linux/dmaengine.h +++ b/include/linux/dmaengine.h @@ -418,6 +418,9 @@ enum dma_slave_buswidth { @@ -1637204,7 +1650495,7 @@ index dd357a747780..493a047ed0a2 100644 /** diff --git a/include/linux/energy_model.h b/include/linux/energy_model.h -index 5f04a2b35e80..9ca1ea02fa72 100644 +index 5f04a2b35..9ca1ea02f 100644 --- a/include/linux/energy_model.h +++ b/include/linux/energy_model.h @@ -29,6 +29,8 @@ struct em_perf_state { @@ -1637255,7 +1650546,7 @@ index 5f04a2b35e80..9ca1ea02fa72 100644 return -EINVAL; } diff --git a/include/linux/extcon.h b/include/linux/extcon.h -index 0c19010da77f..9c4ff7f7df29 100644 +index 0c19010da..9c4ff7f7d 100644 --- a/include/linux/extcon.h +++ b/include/linux/extcon.h @@ -37,6 +37,7 @@ @@ -1637267,7 +1650558,7 @@ index 0c19010da77f..9c4ff7f7df29 100644 /* * Charging external connector diff --git a/include/linux/freezer.h b/include/linux/freezer.h -index 27828145ca09..f753c307b8b3 100644 +index 27828145c..f753c307b 100644 --- a/include/linux/freezer.h +++ b/include/linux/freezer.h @@ -27,6 +27,11 @@ static inline bool frozen(struct task_struct *p) @@ -1637292,7 +1650583,7 @@ index 27828145ca09..f753c307b8b3 100644 diff --git a/include/linux/initramfs.h b/include/linux/initramfs.h new file mode 100755 -index 000000000000..26953171620f +index 000000000..269531716 --- /dev/null +++ b/include/linux/initramfs.h @@ -0,0 +1,40 @@ @@ -1637337,7 +1650628,7 @@ index 000000000000..26953171620f + +#endif /* _LINUX_INITRAMFS_H */ diff --git a/include/linux/iommu.h b/include/linux/iommu.h -index e90c267e7f3e..f94cfde78201 100644 +index e90c267e7..f94cfde78 100644 --- a/include/linux/iommu.h +++ b/include/linux/iommu.h @@ -31,6 +31,26 @@ @@ -1637427,7 +1650718,7 @@ index e90c267e7f3e..f94cfde78201 100644 /** diff --git a/include/linux/iova.h b/include/linux/iova.h -index a0637abffee8..58713bb72a48 100644 +index a0637abff..58713bb72 100644 --- a/include/linux/iova.h +++ b/include/linux/iova.h @@ -95,6 +95,7 @@ struct iova_domain { @@ -1637439,7 +1650730,7 @@ index a0637abffee8..58713bb72a48 100644 static inline unsigned long iova_size(struct iova *iova) diff --git a/include/linux/irqchip/arm-gic-v3.h b/include/linux/irqchip/arm-gic-v3.h -index f6d092fdb93d..ffb0a87055b1 100644 +index f6d092fdb..ffb0a8705 100644 --- a/include/linux/irqchip/arm-gic-v3.h +++ b/include/linux/irqchip/arm-gic-v3.h @@ -708,6 +708,8 @@ static inline bool gic_enable_sre(void) @@ -1637452,7 +1650743,7 @@ index f6d092fdb93d..ffb0a87055b1 100644 #endif diff --git a/include/linux/irqchip/arm-gic-v4.h b/include/linux/irqchip/arm-gic-v4.h -index 6976b8331b60..943c3411ca10 100644 +index 6976b8331..943c3411c 100644 --- a/include/linux/irqchip/arm-gic-v4.h +++ b/include/linux/irqchip/arm-gic-v4.h @@ -39,6 +39,8 @@ struct its_vpe { @@ -1637481,7 +1650772,7 @@ index 6976b8331b60..943c3411ca10 100644 int its_map_vlpi(int irq, struct its_vlpi_map *map); int its_get_vlpi(int irq, struct its_vlpi_map *map); diff --git a/include/linux/memblock.h b/include/linux/memblock.h -index 1a8d25f2e041..de15a4d153a4 100644 +index 1a8d25f2e..de15a4d15 100644 --- a/include/linux/memblock.h +++ b/include/linux/memblock.h @@ -25,6 +25,10 @@ extern unsigned long max_pfn; @@ -1637579,7 +1650870,7 @@ index 1a8d25f2e041..de15a4d153a4 100644 } diff --git a/include/linux/memory_group_manager.h b/include/linux/memory_group_manager.h new file mode 100755 -index 000000000000..b1ac253d9e15 +index 000000000..b1ac253d9 --- /dev/null +++ b/include/linux/memory_group_manager.h @@ -0,0 +1,198 @@ @@ -1637782,7 +1651073,7 @@ index 000000000000..b1ac253d9e15 + +#endif /* _MEMORY_GROUP_MANAGER_H_ */ diff --git a/include/linux/mfd/rk808.h b/include/linux/mfd/rk808.h -index e07f6e61cd38..7cdc5dfa4fce 100644 +index e07f6e61c..7cdc5dfa4 100644 --- a/include/linux/mfd/rk808.h +++ b/include/linux/mfd/rk808.h @@ -113,6 +113,235 @@ enum rk808_reg { @@ -1638334,7 +1651625,7 @@ index e07f6e61cd38..7cdc5dfa4fce 100644 }; #endif /* __LINUX_REGULATOR_RK808_H */ diff --git a/include/linux/mm.h b/include/linux/mm.h -index c9b37ce2db0b..ab9e25f88808 100644 +index c9b37ce2d..ab9e25f88 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -2898,6 +2898,8 @@ extern bool page_poisoning_enabled(void); @@ -1638347,7 +1651638,7 @@ index c9b37ce2db0b..ab9e25f88808 100644 int enable) { } #endif diff --git a/include/linux/mmc/host.h b/include/linux/mmc/host.h -index 40d7e98fc990..819f6119dff3 100644 +index 40d7e98fc..819f6119d 100644 --- a/include/linux/mmc/host.h +++ b/include/linux/mmc/host.h @@ -141,6 +141,7 @@ struct mmc_host_ops { @@ -1638369,7 +1651660,7 @@ index 40d7e98fc990..819f6119dff3 100644 { return (void *)host->private; diff --git a/include/linux/mmu_context.h b/include/linux/mmu_context.h -index 03dee12d2b61..bc4ac3c525e6 100644 +index 03dee12d2..bc4ac3c52 100644 --- a/include/linux/mmu_context.h +++ b/include/linux/mmu_context.h @@ -14,4 +14,12 @@ @@ -1638387,7 +1651678,7 @@ index 03dee12d2b61..bc4ac3c525e6 100644 #endif diff --git a/include/linux/phy/pcie.h b/include/linux/phy/pcie.h new file mode 100755 -index 000000000000..93c997f520fe +index 000000000..93c997f52 --- /dev/null +++ b/include/linux/phy/pcie.h @@ -0,0 +1,12 @@ @@ -1638405,7 +1651696,7 @@ index 000000000000..93c997f520fe +#endif diff --git a/include/linux/phy/phy-rockchip-typec.h b/include/linux/phy/phy-rockchip-typec.h new file mode 100755 -index 000000000000..1d6af83d3b89 +index 000000000..1d6af83d3 --- /dev/null +++ b/include/linux/phy/phy-rockchip-typec.h @@ -0,0 +1,34 @@ @@ -1638445,7 +1651736,7 @@ index 000000000000..1d6af83d3b89 +#endif diff --git a/include/linux/power/bq25700-charge.h b/include/linux/power/bq25700-charge.h new file mode 100755 -index 000000000000..5e7d3e40d2ea +index 000000000..5e7d3e40d --- /dev/null +++ b/include/linux/power/bq25700-charge.h @@ -0,0 +1,20 @@ @@ -1638471,7 +1651762,7 @@ index 000000000000..5e7d3e40d2ea +#endif /* __CHARGER_BQ25700_H_ */ diff --git a/include/linux/power/cw2015_battery.h b/include/linux/power/cw2015_battery.h new file mode 100755 -index 000000000000..8e6b1fc7e344 +index 000000000..8e6b1fc7e --- /dev/null +++ b/include/linux/power/cw2015_battery.h @@ -0,0 +1,119 @@ @@ -1638596,7 +1651887,7 @@ index 000000000000..8e6b1fc7e344 +#endif diff --git a/include/linux/power/rk_usbbc.h b/include/linux/power/rk_usbbc.h new file mode 100755 -index 000000000000..45f7128b3a69 +index 000000000..45f7128b3 --- /dev/null +++ b/include/linux/power/rk_usbbc.h @@ -0,0 +1,44 @@ @@ -1638645,7 +1651936,7 @@ index 000000000000..45f7128b3a69 + +#endif diff --git a/include/linux/power_supply.h b/include/linux/power_supply.h -index 81a55e974feb..aefa0b0bc4c4 100644 +index 81a55e974..aefa0b0bc 100644 --- a/include/linux/power_supply.h +++ b/include/linux/power_supply.h @@ -49,6 +49,12 @@ enum { @@ -1638702,7 +1651993,7 @@ index 81a55e974feb..aefa0b0bc4c4 100644 enum power_supply_property psp); extern void power_supply_external_power_changed(struct power_supply *psy); diff --git a/include/linux/pwm.h b/include/linux/pwm.h -index a13ff383fa1d..6b2a7fb80de8 100644 +index a13ff383f..6b2a7fb80 100644 --- a/include/linux/pwm.h +++ b/include/linux/pwm.h @@ -59,6 +59,9 @@ struct pwm_state { @@ -1638716,7 +1652007,7 @@ index a13ff383fa1d..6b2a7fb80de8 100644 }; diff --git a/include/linux/reboot.h b/include/linux/reboot.h -index 3734cd8f38a8..1c8d7856c559 100644 +index 3734cd8f3..1c8d7856c 100644 --- a/include/linux/reboot.h +++ b/include/linux/reboot.h @@ -49,6 +49,26 @@ extern int register_restart_handler(struct notifier_block *); @@ -1638747,7 +1652038,7 @@ index 3734cd8f38a8..1c8d7856c559 100644 * Architecture-specific implementations of sys_reboot commands. */ diff --git a/include/linux/regulator/driver.h b/include/linux/regulator/driver.h -index 11cade73726c..d7c77ee370f3 100644 +index 11cade737..d7c77ee37 100644 --- a/include/linux/regulator/driver.h +++ b/include/linux/regulator/driver.h @@ -223,6 +223,8 @@ enum regulator_type { @@ -1638768,7 +1652059,7 @@ index 11cade73726c..d7c77ee370f3 100644 int (*of_parse_cb)(struct device_node *, const struct regulator_desc *, diff --git a/include/linux/regulator/fan53555.h b/include/linux/regulator/fan53555.h -index ce8df21863f0..e8703b6fc13d 100644 +index ce8df2186..e8703b6fc 100644 --- a/include/linux/regulator/fan53555.h +++ b/include/linux/regulator/fan53555.h @@ -52,6 +52,8 @@ struct fan53555_platform_data { @@ -1638782,7 +1652073,7 @@ index ce8df21863f0..e8703b6fc13d 100644 #endif /* __FAN53555_H__ */ diff --git a/include/linux/rfkill-bt.h b/include/linux/rfkill-bt.h new file mode 100755 -index 000000000000..c4174b156580 +index 000000000..c4174b156 --- /dev/null +++ b/include/linux/rfkill-bt.h @@ -0,0 +1,73 @@ @@ -1638861,7 +1652152,7 @@ index 000000000000..c4174b156580 + diff --git a/include/linux/rfkill-wlan.h b/include/linux/rfkill-wlan.h new file mode 100755 -index 000000000000..431e71a7a844 +index 000000000..431e71a7a --- /dev/null +++ b/include/linux/rfkill-wlan.h @@ -0,0 +1,62 @@ @@ -1638929,7 +1652220,7 @@ index 000000000000..431e71a7a844 +#endif diff --git a/include/linux/rk_keys.h b/include/linux/rk_keys.h new file mode 100755 -index 000000000000..aee656daf2c8 +index 000000000..aee656daf --- /dev/null +++ b/include/linux/rk_keys.h @@ -0,0 +1,19 @@ @@ -1638954,7 +1652245,7 @@ index 000000000000..aee656daf2c8 +#endif diff --git a/include/linux/rockchip-iovmm.h b/include/linux/rockchip-iovmm.h new file mode 100755 -index 000000000000..3005c745e5b8 +index 000000000..3005c745e --- /dev/null +++ b/include/linux/rockchip-iovmm.h @@ -0,0 +1,91 @@ @@ -1639051,7 +1652342,7 @@ index 000000000000..3005c745e5b8 +#endif /*__ASM_PLAT_IOVMM_H*/ diff --git a/include/linux/rockchip/cpu.h b/include/linux/rockchip/cpu.h new file mode 100755 -index 000000000000..727a2d621745 +index 000000000..727a2d621 --- /dev/null +++ b/include/linux/rockchip/cpu.h @@ -0,0 +1,186 @@ @@ -1639243,7 +1652534,7 @@ index 000000000000..727a2d621745 +#endif diff --git a/include/linux/rockchip/grf.h b/include/linux/rockchip/grf.h new file mode 100755 -index 000000000000..fae51232297c +index 000000000..fae512322 --- /dev/null +++ b/include/linux/rockchip/grf.h @@ -0,0 +1,700 @@ @@ -1639949,7 +1653240,7 @@ index 000000000000..fae51232297c +#endif diff --git a/include/linux/rockchip/psci.h b/include/linux/rockchip/psci.h new file mode 100755 -index 000000000000..870da27edf65 +index 000000000..870da27ed --- /dev/null +++ b/include/linux/rockchip/psci.h @@ -0,0 +1,76 @@ @@ -1640031,7 +1653322,7 @@ index 000000000000..870da27edf65 +#endif /* __ROCKCHIP_PSCI_H */ diff --git a/include/linux/rockchip/rockchip_sip.h b/include/linux/rockchip/rockchip_sip.h new file mode 100755 -index 000000000000..d7155ebe3a67 +index 000000000..d7155ebe3 --- /dev/null +++ b/include/linux/rockchip/rockchip_sip.h @@ -0,0 +1,350 @@ @@ -1640387,7 +1653678,7 @@ index 000000000000..d7155ebe3a67 +#endif diff --git a/include/linux/rockchip_ion.h b/include/linux/rockchip_ion.h new file mode 100755 -index 000000000000..39c497774fb0 +index 000000000..39c497774 --- /dev/null +++ b/include/linux/rockchip_ion.h @@ -0,0 +1,41 @@ @@ -1640433,7 +1653724,7 @@ index 000000000000..39c497774fb0 + +#endif diff --git a/include/linux/sched.h b/include/linux/sched.h -index 393cdfdfa6d9..8f4dc05c1b71 100644 +index 393cdfdfa..8f4dc05c1 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -1342,7 +1342,7 @@ struct task_struct { @@ -1640446,7 +1653737,7 @@ index 393cdfdfa6d9..8f4dc05c1b71 100644 #endif diff --git a/include/linux/sched/signal.h b/include/linux/sched/signal.h -index 657640015b33..fd534cbfa3ac 100644 +index 657640015..fd534cbfa 100644 --- a/include/linux/sched/signal.h +++ b/include/linux/sched/signal.h @@ -12,6 +12,7 @@ @@ -1640458,7 +1653749,7 @@ index 657640015b33..fd534cbfa3ac 100644 /* * Types defining task->signal and task->sighand and APIs using them: diff --git a/include/linux/sched/xacct.h b/include/linux/sched/xacct.h -index c078f0a94cec..9544c9d9d534 100644 +index c078f0a94..9544c9d9d 100644 --- a/include/linux/sched/xacct.h +++ b/include/linux/sched/xacct.h @@ -28,6 +28,11 @@ static inline void inc_syscw(struct task_struct *tsk) @@ -1640486,7 +1653777,7 @@ index c078f0a94cec..9544c9d9d534 100644 #endif /* _LINUX_SCHED_XACCT_H */ diff --git a/include/linux/sensor-dev.h b/include/linux/sensor-dev.h new file mode 100755 -index 000000000000..6ae9c16e67a3 +index 000000000..6ae9c16e6 --- /dev/null +++ b/include/linux/sensor-dev.h @@ -0,0 +1,350 @@ @@ -1640842,7 +1654133,7 @@ index 000000000000..6ae9c16e67a3 + diff --git a/include/linux/soc/rockchip/pvtm.h b/include/linux/soc/rockchip/pvtm.h new file mode 100755 -index 000000000000..3d2495cfd6e5 +index 000000000..3d2495cfd --- /dev/null +++ b/include/linux/soc/rockchip/pvtm.h @@ -0,0 +1,17 @@ @@ -1640865,7 +1654156,7 @@ index 000000000000..3d2495cfd6e5 +#endif /* __SOC_ROCKCHIP_PVTM_H */ diff --git a/include/linux/soc/rockchip/rk_fiq_debugger.h b/include/linux/soc/rockchip/rk_fiq_debugger.h new file mode 100755 -index 000000000000..f5ec8d143b22 +index 000000000..f5ec8d143 --- /dev/null +++ b/include/linux/soc/rockchip/rk_fiq_debugger.h @@ -0,0 +1,22 @@ @@ -1640893,7 +1654184,7 @@ index 000000000000..f5ec8d143b22 +#endif diff --git a/include/linux/soc/rockchip/rk_vendor_storage.h b/include/linux/soc/rockchip/rk_vendor_storage.h new file mode 100755 -index 000000000000..33033a4cfe9f +index 000000000..33033a4cf --- /dev/null +++ b/include/linux/soc/rockchip/rk_vendor_storage.h @@ -0,0 +1,58 @@ @@ -1640957,7 +1654248,7 @@ index 000000000000..33033a4cfe9f +#endif diff --git a/include/linux/soc/rockchip/rockchip_decompress.h b/include/linux/soc/rockchip/rockchip_decompress.h new file mode 100755 -index 000000000000..dff419bd793b +index 000000000..dff419bd7 --- /dev/null +++ b/include/linux/soc/rockchip/rockchip_decompress.h @@ -0,0 +1,22 @@ @@ -1640985,7 +1654276,7 @@ index 000000000000..dff419bd793b +#endif diff --git a/include/linux/soc/rockchip/rockchip_thunderboot_crypto.h b/include/linux/soc/rockchip/rockchip_thunderboot_crypto.h new file mode 100755 -index 000000000000..2fe176649409 +index 000000000..2fe176649 --- /dev/null +++ b/include/linux/soc/rockchip/rockchip_thunderboot_crypto.h @@ -0,0 +1,9 @@ @@ -1640999,7 +1654290,7 @@ index 000000000000..2fe176649409 + +#endif diff --git a/include/linux/stmmac.h b/include/linux/stmmac.h -index b56e1dedcf2f..ba4246721dbf 100644 +index b56e1dedc..ba4246721 100644 --- a/include/linux/stmmac.h +++ b/include/linux/stmmac.h @@ -183,6 +183,7 @@ struct plat_stmmacenet_data { @@ -1641011,7 +1654302,7 @@ index b56e1dedcf2f..ba4246721dbf 100644 void *bsp_priv; struct clk *stmmac_clk; diff --git a/include/linux/thermal.h b/include/linux/thermal.h -index 176d9454e8f3..aa4b4114bb01 100644 +index 176d9454e..aa4b4114b 100644 --- a/include/linux/thermal.h +++ b/include/linux/thermal.h @@ -399,6 +399,7 @@ void thermal_cdev_update(struct thermal_cooling_device *); @@ -1641034,54 +1654325,13 @@ index 176d9454e8f3..aa4b4114bb01 100644 #endif /* __THERMAL_H__ */ diff --git a/include/linux/usb/audio-v2.h b/include/linux/usb/audio-v2.h -index ead8c9a47c6a..899c84e7c738 100644 ---- a/include/linux/usb/audio-v2.h -+++ b/include/linux/usb/audio-v2.h -@@ -168,6 +168,20 @@ struct uac2_effect_unit_descriptor { - __u8 bmaControls[]; /* variable length */ - } __attribute__((packed)); - -+#define UAC2_DT_FEATURE_UNIT_SIZE(ch) (6 + ((ch) + 1) * 4) -+ -+/* As above, but more useful for defining your own descriptors: */ -+#define DECLARE_UAC2_FEATURE_UNIT_DESCRIPTOR(ch) \ -+struct uac2_feature_unit_descriptor_##ch { \ -+ __u8 bLength; \ -+ __u8 bDescriptorType; \ -+ __u8 bDescriptorSubtype; \ -+ __u8 bUnitID; \ -+ __u8 bSourceID; \ -+ __le32 bmaControls[ch + 1]; \ -+ __u8 iFeature; \ -+} __attribute__((packed)) -+ - /* 4.9.2 Class-Specific AS Interface Descriptor */ - - struct uac2_as_header_descriptor { -@@ -331,6 +345,9 @@ struct uac2_interrupt_data_msg { - #define UAC2_FU_OVERFLOW 0x0f - #define UAC2_FU_LATENCY 0x10 - -+#define UAC2_CONTROL_BIT_RO(CS) (0x01 << (((CS) - 1) << 1)) -+#define UAC2_CONTROL_BIT_RW(CS) (0x03 << (((CS) - 1) << 1)) -+ - /* A.17.8.1 Parametric Equalizer Section Effect Unit Control Selectors */ - #define UAC2_PE_UNDEFINED 0x00 - #define UAC2_PE_ENABLE 0x01 +old mode 100644 +new mode 100755 diff --git a/include/linux/usb/audio.h b/include/linux/usb/audio.h -index 170acd500ea1..646cb0a8dcd6 100644 ---- a/include/linux/usb/audio.h -+++ b/include/linux/usb/audio.h -@@ -31,6 +31,7 @@ struct usb_audio_control { - int data[5]; - int (*set)(struct usb_audio_control *con, u8 cmd, int value); - int (*get)(struct usb_audio_control *con, u8 cmd); -+ void *context; - }; - - struct usb_audio_control_selector { +old mode 100644 +new mode 100755 diff --git a/include/linux/usb/ch9.h b/include/linux/usb/ch9.h -index 604c6c514a50..1cffa34740b0 100644 +index 604c6c514..1cffa3474 100644 --- a/include/linux/usb/ch9.h +++ b/include/linux/usb/ch9.h @@ -36,62 +36,24 @@ @@ -1641160,7 +1654410,7 @@ index 604c6c514a50..1cffa34740b0 100644 __u8 bRequest, __u16 wValue, __u16 wIndex, __u16 wLength); diff --git a/include/linux/usb/composite.h b/include/linux/usb/composite.h -index a2d229ab63ba..4d352204e819 100644 +index a2d229ab6..4d352204e 100644 --- a/include/linux/usb/composite.h +++ b/include/linux/usb/composite.h @@ -525,6 +525,8 @@ extern struct usb_string *usb_gstrings_attach(struct usb_composite_dev *cdev, @@ -1641182,7 +1654432,7 @@ index a2d229ab63ba..4d352204e819 100644 void (*free_func_inst)(struct usb_function_instance *inst); diff --git a/include/linux/usb/f_accessory.h b/include/linux/usb/f_accessory.h new file mode 100755 -index 000000000000..ebe3c4d59309 +index 000000000..ebe3c4d59 --- /dev/null +++ b/include/linux/usb/f_accessory.h @@ -0,0 +1,23 @@ @@ -1641210,18 +1654460,12 @@ index 000000000000..ebe3c4d59309 + +#endif /* __LINUX_USB_F_ACCESSORY_H */ diff --git a/include/linux/usb/gadget.h b/include/linux/usb/gadget.h -index e7351d64f11f..e0ba1f0c13e6 100644 +old mode 100644 +new mode 100755 +index e7351d64f..daf43d1af --- a/include/linux/usb/gadget.h +++ b/include/linux/usb/gadget.h -@@ -26,6 +26,7 @@ - #include - #include - #include -+#include - - #define UDC_TRACE_STR_MAX 512 - -@@ -217,6 +218,7 @@ struct usb_ep_caps { +@@ -217,6 +217,7 @@ struct usb_ep_caps { * enabled and remains valid until the endpoint is disabled. * @comp_desc: In case of SuperSpeed support, this is the endpoint companion * descriptor that is used to configure the endpoint @@ -1641229,7 +1654473,7 @@ index e7351d64f11f..e0ba1f0c13e6 100644 * * the bus controller driver lists all the general purpose endpoints in * gadget->ep_list. the control endpoint (gadget->ep0) is not in that list, -@@ -240,6 +242,9 @@ struct usb_ep { +@@ -240,6 +241,9 @@ struct usb_ep { u8 address; const struct usb_endpoint_descriptor *desc; const struct usb_ss_ep_comp_descriptor *comp_desc; @@ -1641239,16 +1654483,21 @@ index e7351d64f11f..e0ba1f0c13e6 100644 }; /*-------------------------------------------------------------------------*/ -@@ -323,6 +328,8 @@ struct usb_gadget_ops { +@@ -323,9 +327,13 @@ struct usb_gadget_ops { struct usb_gadget_driver *); int (*udc_stop)(struct usb_gadget *); void (*udc_set_speed)(struct usb_gadget *, enum usb_device_speed); + void (*udc_set_ssp_rate)(struct usb_gadget *gadget, + enum usb_ssp_rate rate); ++ void (*udc_async_callbacks)(struct usb_gadget *gadget, bool enable); struct usb_ep *(*match_ep)(struct usb_gadget *, struct usb_endpoint_descriptor *, struct usb_ss_ep_comp_descriptor *); -@@ -339,6 +346,10 @@ struct usb_gadget_ops { ++ int (*check_config)(struct usb_gadget *gadget); + }; + + /** +@@ -339,6 +347,10 @@ struct usb_gadget_ops { * @speed: Speed of current connection to USB host. * @max_speed: Maximal speed the UDC can handle. UDC must support this * and all slower speeds. @@ -1641259,7 +1654508,7 @@ index e7351d64f11f..e0ba1f0c13e6 100644 * @state: the state we are now (attached, suspended, configured, etc) * @name: Identifies the controller hardware type. Used in diagnostics * and sometimes configuration. -@@ -406,6 +417,11 @@ struct usb_gadget { +@@ -406,6 +418,11 @@ struct usb_gadget { struct list_head ep_list; /* of usb_ep */ enum usb_device_speed speed; enum usb_device_speed max_speed; @@ -1641271,20 +1654520,25 @@ index e7351d64f11f..e0ba1f0c13e6 100644 enum usb_device_state state; const char *name; struct device dev; -@@ -433,6 +449,11 @@ struct usb_gadget { - unsigned connected:1; - unsigned lpm_capable:1; - int irq; -+ -+ ANDROID_KABI_RESERVE(1); -+ ANDROID_KABI_RESERVE(2); -+ ANDROID_KABI_RESERVE(3); -+ ANDROID_KABI_RESERVE(4); - }; - #define work_to_gadget(w) (container_of((w), struct usb_gadget, work)) +@@ -596,6 +613,7 @@ int usb_gadget_connect(struct usb_gadget *gadget); + int usb_gadget_disconnect(struct usb_gadget *gadget); + int usb_gadget_deactivate(struct usb_gadget *gadget); + int usb_gadget_activate(struct usb_gadget *gadget); ++int usb_gadget_check_config(struct usb_gadget *gadget); + #else + static inline int usb_gadget_frame_number(struct usb_gadget *gadget) + { return 0; } +@@ -619,6 +637,8 @@ static inline int usb_gadget_deactivate(struct usb_gadget *gadget) + { return 0; } + static inline int usb_gadget_activate(struct usb_gadget *gadget) + { return 0; } ++static inline int usb_gadget_check_config(struct usb_gadget *gadget) ++{ return 0; } + #endif /* CONFIG_USB_GADGET */ + /*-------------------------------------------------------------------------*/ diff --git a/include/linux/usb/pd.h b/include/linux/usb/pd.h -index 433040ff840a..96b7ff66f074 100644 +index 433040ff8..96b7ff66f 100644 --- a/include/linux/usb/pd.h +++ b/include/linux/usb/pd.h @@ -225,6 +225,7 @@ enum pd_pdo_type { @@ -1641324,7 +1654578,7 @@ index 433040ff840a..96b7ff66f074 100644 + #endif /* __LINUX_USB_PD_H */ diff --git a/include/linux/usb/pd_ext_sdb.h b/include/linux/usb/pd_ext_sdb.h -index 0eb83ce19597..b517ebc8f0ff 100644 +index 0eb83ce19..b517ebc8f 100644 --- a/include/linux/usb/pd_ext_sdb.h +++ b/include/linux/usb/pd_ext_sdb.h @@ -24,8 +24,4 @@ enum usb_pd_ext_sdb_fields { @@ -1641337,7 +1654591,7 @@ index 0eb83ce19597..b517ebc8f0ff 100644 - #endif /* __LINUX_USB_PD_EXT_SDB_H */ diff --git a/include/linux/usb/pd_vdo.h b/include/linux/usb/pd_vdo.h -index 68bdc4e2f5a9..7f5e330a68a6 100644 +index 68bdc4e2f..7f5e330a6 100644 --- a/include/linux/usb/pd_vdo.h +++ b/include/linux/usb/pd_vdo.h @@ -21,22 +21,24 @@ @@ -1641780,7 +1655034,7 @@ index 68bdc4e2f5a9..7f5e330a68a6 100644 * SVDM Discover SVIDs request -> response * diff --git a/include/linux/usb/quirks.h b/include/linux/usb/quirks.h -index 5e4c497f54d6..6567f7445c2d 100644 +index 5e4c497f5..6567f7445 100644 --- a/include/linux/usb/quirks.h +++ b/include/linux/usb/quirks.h @@ -72,4 +72,7 @@ @@ -1641792,7 +1655046,7 @@ index 5e4c497f54d6..6567f7445c2d 100644 + #endif /* __LINUX_USB_QUIRKS_H */ diff --git a/include/linux/usb/tcpm.h b/include/linux/usb/tcpm.h -index 09762d26fa0c..cb69546f87af 100644 +index 09762d26f..cb69546f8 100644 --- a/include/linux/usb/tcpm.h +++ b/include/linux/usb/tcpm.h @@ -19,6 +19,10 @@ enum typec_cc_status { @@ -1641902,10 +1655156,20 @@ index 09762d26fa0c..cb69546f87af 100644 #endif /* __LINUX_USB_TCPM_H */ diff --git a/include/linux/usb/typec.h b/include/linux/usb/typec.h -index 6be558045942..91b4303ca305 100644 +old mode 100644 +new mode 100755 +index 6be558045..a5e685dd6 --- a/include/linux/usb/typec.h +++ b/include/linux/usb/typec.h -@@ -126,9 +126,12 @@ struct typec_altmode_desc { +@@ -17,6 +17,7 @@ struct typec_partner; + struct typec_cable; + struct typec_plug; + struct typec_port; ++struct typec_altmode_ops; + + struct fwnode_handle; + struct device; +@@ -126,15 +127,31 @@ struct typec_altmode_desc { enum typec_port_data roles; }; @@ -1641918,7 +1655182,26 @@ index 6be558045942..91b4303ca305 100644 struct typec_altmode *typec_plug_register_altmode(struct typec_plug *plug, const struct typec_altmode_desc *desc); -@@ -162,6 +165,7 @@ struct typec_plug_desc { + struct typec_altmode + *typec_port_register_altmode(struct typec_port *port, + const struct typec_altmode_desc *desc); ++ ++#ifdef CONFIG_NO_GKI ++void typec_port_register_altmodes(struct typec_port *port, ++ const struct typec_altmode_ops *ops, void *drvdata, ++ struct typec_altmode **altmodes, size_t n); ++#else ++static inline void typec_port_register_altmodes(struct typec_port *port, ++ const struct typec_altmode_ops *ops, void *drvdata, ++ struct typec_altmode **altmodes, size_t n) ++{ ++} ++#endif ++ + void typec_unregister_altmode(struct typec_altmode *altmode); + + struct typec_port *typec_altmode2port(struct typec_altmode *alt); +@@ -162,6 +179,7 @@ struct typec_plug_desc { * @type: The plug type from USB PD Cable VDO * @active: Is the cable active or passive * @identity: Result of Discover Identity command @@ -1641926,7 +1655209,7 @@ index 6be558045942..91b4303ca305 100644 * * Represents USB Type-C Cable attached to USB Type-C port. */ -@@ -169,6 +173,8 @@ struct typec_cable_desc { +@@ -169,6 +187,8 @@ struct typec_cable_desc { enum typec_plug_type type; unsigned int active:1; struct usb_pd_identity *identity; @@ -1641935,7 +1655218,7 @@ index 6be558045942..91b4303ca305 100644 }; /* -@@ -176,15 +182,22 @@ struct typec_cable_desc { +@@ -176,15 +196,22 @@ struct typec_cable_desc { * @usb_pd: USB Power Delivery support * @accessory: Audio, Debug or none. * @identity: Discover Identity command data @@ -1641958,7 +1655241,7 @@ index 6be558045942..91b4303ca305 100644 }; /** -@@ -204,12 +217,19 @@ struct typec_operations { +@@ -204,12 +231,19 @@ struct typec_operations { enum typec_port_type type); }; @@ -1641978,7 +1655261,7 @@ index 6be558045942..91b4303ca305 100644 * @prefer_role: Initial role preference (DRP ports). * @accessory: Supported Accessory Modes * @fwnode: Optional fwnode of the port -@@ -223,6 +243,7 @@ struct typec_capability { +@@ -223,6 +257,7 @@ struct typec_capability { enum typec_port_data data; u16 revision; /* 0120H = "1.2" */ u16 pd_revision; /* 0300H = "3.0" */ @@ -1641986,7 +1655269,7 @@ index 6be558045942..91b4303ca305 100644 int prefer_role; enum typec_accessory accessory[TYPEC_MAX_ACCESSORY]; unsigned int orientation_aware:1; -@@ -273,4 +294,8 @@ int typec_find_orientation(const char *name); +@@ -273,4 +308,8 @@ int typec_find_orientation(const char *name); int typec_find_port_power_role(const char *name); int typec_find_power_role(const char *name); int typec_find_port_data_role(const char *name); @@ -1641996,7 +1655279,7 @@ index 6be558045942..91b4303ca305 100644 +int typec_get_negotiated_svdm_version(struct typec_port *port); #endif /* __LINUX_USB_TYPEC_H */ diff --git a/include/linux/usb/typec_altmode.h b/include/linux/usb/typec_altmode.h -index 5e0a7b7647c3..65933cbe9129 100644 +index 5e0a7b764..65933cbe9 100644 --- a/include/linux/usb/typec_altmode.h +++ b/include/linux/usb/typec_altmode.h @@ -132,6 +132,16 @@ typec_altmode_get_orientation(struct typec_altmode *altmode) @@ -1642017,7 +1655300,7 @@ index 5e0a7b7647c3..65933cbe9129 100644 * struct typec_altmode_driver - USB Type-C alternate mode device driver * @id_table: Null terminated array of SVIDs diff --git a/include/linux/usb/typec_tbt.h b/include/linux/usb/typec_tbt.h -index 47c2d501ddce..63dd44b72e0c 100644 +index 47c2d501d..63dd44b72 100644 --- a/include/linux/usb/typec_tbt.h +++ b/include/linux/usb/typec_tbt.h @@ -39,12 +39,16 @@ struct typec_thunderbolt_data { @@ -1642039,7 +1655322,7 @@ index 47c2d501ddce..63dd44b72e0c 100644 /* TBT3 Device Enter Mode VDO bits */ #define TBT_ENTER_MODE_CABLE_SPEED(s) TBT_SET_CABLE_SPEED(s) diff --git a/include/linux/usb/usbnet.h b/include/linux/usb/usbnet.h -index 8110c29fab42..2e4f7721fc4e 100644 +index 8110c29fa..2e4f7721f 100644 --- a/include/linux/usb/usbnet.h +++ b/include/linux/usb/usbnet.h @@ -83,8 +83,6 @@ struct usbnet { @@ -1642053,7 +1655336,7 @@ index 8110c29fab42..2e4f7721fc4e 100644 static inline struct usb_driver *driver_of(struct usb_interface *intf) diff --git a/include/linux/wakelock.h b/include/linux/wakelock.h new file mode 100755 -index 000000000000..7b4825ba9521 +index 000000000..7b4825ba9 --- /dev/null +++ b/include/linux/wakelock.h @@ -0,0 +1,76 @@ @@ -1642135,7 +1655418,7 @@ index 000000000000..7b4825ba9521 +#endif diff --git a/include/linux/wakeup_reason.h b/include/linux/wakeup_reason.h new file mode 100755 -index 000000000000..54f5caaa5cde +index 000000000..54f5caaa5 --- /dev/null +++ b/include/linux/wakeup_reason.h @@ -0,0 +1,37 @@ @@ -1642177,7 +1655460,7 @@ index 000000000000..54f5caaa5cde + +#endif /* _LINUX_WAKEUP_REASON_H */ diff --git a/include/media/v4l2-async.h b/include/media/v4l2-async.h -index 92cd9f038fed..03b43b0f706e 100644 +index 92cd9f038..03b43b0f7 100644 --- a/include/media/v4l2-async.h +++ b/include/media/v4l2-async.h @@ -266,6 +266,21 @@ int v4l2_async_notifier_register(struct v4l2_device *v4l2_dev, @@ -1642204,7 +1655487,7 @@ index 92cd9f038fed..03b43b0f706e 100644 * asynchronous notifier diff --git a/include/soc/rockchip/android-version.h b/include/soc/rockchip/android-version.h new file mode 100755 -index 000000000000..e0d865bab335 +index 000000000..e0d865bab --- /dev/null +++ b/include/soc/rockchip/android-version.h @@ -0,0 +1,17 @@ @@ -1642227,7 +1655510,7 @@ index 000000000000..e0d865bab335 +#endif diff --git a/include/soc/rockchip/pm_domains.h b/include/soc/rockchip/pm_domains.h new file mode 100755 -index 000000000000..fa276ce9b0f6 +index 000000000..fa276ce9b --- /dev/null +++ b/include/soc/rockchip/pm_domains.h @@ -0,0 +1,53 @@ @@ -1642286,7 +1655569,7 @@ index 000000000000..fa276ce9b0f6 +#endif diff --git a/include/soc/rockchip/rk3368-mailbox.h b/include/soc/rockchip/rk3368-mailbox.h new file mode 100755 -index 000000000000..77208277f419 +index 000000000..77208277f --- /dev/null +++ b/include/soc/rockchip/rk3368-mailbox.h @@ -0,0 +1,22 @@ @@ -1642314,7 +1655597,7 @@ index 000000000000..77208277f419 +#endif /* __RK3368_MAILBOX_H__ */ diff --git a/include/soc/rockchip/rkfb_dmc.h b/include/soc/rockchip/rkfb_dmc.h new file mode 100755 -index 000000000000..5e82b3194dd3 +index 000000000..5e82b3194 --- /dev/null +++ b/include/soc/rockchip/rkfb_dmc.h @@ -0,0 +1,11 @@ @@ -1642331,7 +1655614,7 @@ index 000000000000..5e82b3194dd3 +#endif diff --git a/include/soc/rockchip/rockchip-system-status.h b/include/soc/rockchip/rockchip-system-status.h new file mode 100755 -index 000000000000..200b1ee89602 +index 000000000..200b1ee89 --- /dev/null +++ b/include/soc/rockchip/rockchip-system-status.h @@ -0,0 +1,53 @@ @@ -1642390,7 +1655673,7 @@ index 000000000000..200b1ee89602 +#endif diff --git a/include/soc/rockchip/rockchip_dmc.h b/include/soc/rockchip/rockchip_dmc.h new file mode 100755 -index 000000000000..ec90962f2d22 +index 000000000..ec90962f2 --- /dev/null +++ b/include/soc/rockchip/rockchip_dmc.h @@ -0,0 +1,121 @@ @@ -1642517,7 +1655800,7 @@ index 000000000000..ec90962f2d22 +#endif diff --git a/include/soc/rockchip/rockchip_iommu.h b/include/soc/rockchip/rockchip_iommu.h new file mode 100755 -index 000000000000..e837d9fec30c +index 000000000..e837d9fec --- /dev/null +++ b/include/soc/rockchip/rockchip_iommu.h @@ -0,0 +1,24 @@ @@ -1642547,7 +1655830,7 @@ index 000000000000..e837d9fec30c +#endif diff --git a/include/soc/rockchip/rockchip_ipa.h b/include/soc/rockchip/rockchip_ipa.h new file mode 100755 -index 000000000000..cb333f463c7b +index 000000000..cb333f463 --- /dev/null +++ b/include/soc/rockchip/rockchip_ipa.h @@ -0,0 +1,40 @@ @@ -1642593,7 +1655876,7 @@ index 000000000000..cb333f463c7b +#endif diff --git a/include/soc/rockchip/rockchip_opp_select.h b/include/soc/rockchip/rockchip_opp_select.h new file mode 100755 -index 000000000000..69f4b9707d66 +index 000000000..69f4b9707 --- /dev/null +++ b/include/soc/rockchip/rockchip_opp_select.h @@ -0,0 +1,152 @@ @@ -1642750,7 +1656033,7 @@ index 000000000000..69f4b9707d66 + +#endif diff --git a/include/soc/rockchip/rockchip_sip.h b/include/soc/rockchip/rockchip_sip.h -index c46a9ae2a2ab..4afba01c6628 100644 +index c46a9ae2a..4afba01c6 100644 --- a/include/soc/rockchip/rockchip_sip.h +++ b/include/soc/rockchip/rockchip_sip.h @@ -15,6 +15,12 @@ @@ -1642769,7 +1656052,7 @@ index c46a9ae2a2ab..4afba01c6628 100644 #endif diff --git a/include/soc/rockchip/rockchip_system_monitor.h b/include/soc/rockchip/rockchip_system_monitor.h new file mode 100755 -index 000000000000..be64377d3d0c +index 000000000..be64377d3 --- /dev/null +++ b/include/soc/rockchip/rockchip_system_monitor.h @@ -0,0 +1,205 @@ @@ -1642980,7 +1656263,7 @@ index 000000000000..be64377d3d0c +#endif diff --git a/include/soc/rockchip/scpi.h b/include/soc/rockchip/scpi.h new file mode 100755 -index 000000000000..ad1a4e51a4dd +index 000000000..ad1a4e51a --- /dev/null +++ b/include/soc/rockchip/scpi.h @@ -0,0 +1,147 @@ @@ -1643132,7 +1656415,7 @@ index 000000000000..ad1a4e51a4dd +#endif +#endif diff --git a/include/trace/events/cpuhp.h b/include/trace/events/cpuhp.h -index ad16f77310c6..f302ab6dbfb8 100644 +index ad16f7731..f302ab6db 100644 --- a/include/trace/events/cpuhp.h +++ b/include/trace/events/cpuhp.h @@ -89,6 +89,28 @@ TRACE_EVENT(cpuhp_exit, @@ -1643165,7 +1656448,7 @@ index ad16f77310c6..f302ab6dbfb8 100644 /* This part must be outside protection */ diff --git a/include/trace/events/sched.h b/include/trace/events/sched.h -index dd5fff2bb1b2..6c6a23b4b3c1 100644 +index dd5fff2bb..6c6a23b4b 100644 --- a/include/trace/events/sched.h +++ b/include/trace/events/sched.h @@ -203,6 +203,7 @@ TRACE_EVENT(sched_migrate_task, @@ -1643194,7 +1656477,7 @@ index dd5fff2bb1b2..6c6a23b4b3c1 100644 DECLARE_EVENT_CLASS(sched_process_template, diff --git a/include/trace/events/thermal_ipa_power.h b/include/trace/events/thermal_ipa_power.h new file mode 100755 -index 000000000000..a3a932c75d6a +index 000000000..a3a932c75 --- /dev/null +++ b/include/trace/events/thermal_ipa_power.h @@ -0,0 +1,47 @@ @@ -1643246,7 +1656529,7 @@ index 000000000000..a3a932c75d6a +/* This part must be outside protection */ +#include diff --git a/include/uapi/drm/drm_fourcc.h b/include/uapi/drm/drm_fourcc.h -index 5498d7a6556a..5b5db0381729 100644 +index 5498d7a65..5b5db0381 100644 --- a/include/uapi/drm/drm_fourcc.h +++ b/include/uapi/drm/drm_fourcc.h @@ -242,6 +242,8 @@ extern "C" { @@ -1643260,7 +1656543,7 @@ index 5498d7a6556a..5b5db0381729 100644 * 2 plane YCbCr MSB aligned diff --git a/include/uapi/drm/rockchip_drm.h b/include/uapi/drm/rockchip_drm.h new file mode 100755 -index 000000000000..246192fa2922 +index 000000000..246192fa2 --- /dev/null +++ b/include/uapi/drm/rockchip_drm.h @@ -0,0 +1,134 @@ @@ -1643400,7 +1656683,7 @@ index 000000000000..246192fa2922 +#endif /* _UAPI_ROCKCHIP_DRM_H */ diff --git a/include/uapi/linux/fec-config.h b/include/uapi/linux/fec-config.h new file mode 100755 -index 000000000000..2b3f97fb2a3e +index 000000000..2b3f97fb2 --- /dev/null +++ b/include/uapi/linux/fec-config.h @@ -0,0 +1,33 @@ @@ -1643438,7 +1656721,7 @@ index 000000000000..2b3f97fb2a3e + +#endif diff --git a/include/uapi/linux/media-bus-format.h b/include/uapi/linux/media-bus-format.h -index 84fa53ffb13f..096f891d4ca2 100644 +index 84fa53ffb..096f891d4 100644 --- a/include/uapi/linux/media-bus-format.h +++ b/include/uapi/linux/media-bus-format.h @@ -34,7 +34,7 @@ @@ -1643463,7 +1656746,7 @@ index 84fa53ffb13f..096f891d4ca2 100644 #define MEDIA_BUS_FMT_Y8_1X8 0x2001 diff --git a/include/uapi/linux/rk-camera-module.h b/include/uapi/linux/rk-camera-module.h new file mode 100755 -index 000000000000..6746ce7d9ff7 +index 000000000..6746ce7d9 --- /dev/null +++ b/include/uapi/linux/rk-camera-module.h @@ -0,0 +1,560 @@ @@ -1644029,7 +1657312,7 @@ index 000000000000..6746ce7d9ff7 +#endif /* _UAPI_RKMODULE_CAMERA_H */ diff --git a/include/uapi/linux/rk-led-flash.h b/include/uapi/linux/rk-led-flash.h new file mode 100755 -index 000000000000..916f6351f92a +index 000000000..916f6351f --- /dev/null +++ b/include/uapi/linux/rk-led-flash.h @@ -0,0 +1,9 @@ @@ -1644044,7 +1657327,7 @@ index 000000000000..916f6351f92a +#endif diff --git a/include/uapi/linux/rk-pcie-dma.h b/include/uapi/linux/rk-pcie-dma.h new file mode 100755 -index 000000000000..a35201d068b1 +index 000000000..a35201d06 --- /dev/null +++ b/include/uapi/linux/rk-pcie-dma.h @@ -0,0 +1,61 @@ @@ -1644111,7 +1657394,7 @@ index 000000000000..a35201d068b1 +#endif diff --git a/include/uapi/linux/rk-preisp.h b/include/uapi/linux/rk-preisp.h new file mode 100755 -index 000000000000..3695a3880476 +index 000000000..3695a3880 --- /dev/null +++ b/include/uapi/linux/rk-preisp.h @@ -0,0 +1,118 @@ @@ -1644235,7 +1657518,7 @@ index 000000000000..3695a3880476 +#endif /* _UAPI_RKPREISP_H */ diff --git a/include/uapi/linux/rk-video-format.h b/include/uapi/linux/rk-video-format.h new file mode 100755 -index 000000000000..7f60140d47cc +index 000000000..7f60140d4 --- /dev/null +++ b/include/uapi/linux/rk-video-format.h @@ -0,0 +1,35 @@ @@ -1644276,7 +1657559,7 @@ index 000000000000..7f60140d47cc +#endif /* _UAPI_RK_VIDEO_FORMAT_H */ diff --git a/include/uapi/linux/rk803.h b/include/uapi/linux/rk803.h new file mode 100755 -index 000000000000..448468da9e8d +index 000000000..448468da9 --- /dev/null +++ b/include/uapi/linux/rk803.h @@ -0,0 +1,16 @@ @@ -1644298,7 +1657581,7 @@ index 000000000000..448468da9e8d +#endif /* _UAPI_RK803_H */ diff --git a/include/uapi/linux/rk_vcm_head.h b/include/uapi/linux/rk_vcm_head.h new file mode 100755 -index 000000000000..242325d8a893 +index 000000000..242325d8a --- /dev/null +++ b/include/uapi/linux/rk_vcm_head.h @@ -0,0 +1,115 @@ @@ -1644419,7 +1657702,7 @@ index 000000000000..242325d8a893 + diff --git a/include/uapi/linux/rkcif-config.h b/include/uapi/linux/rkcif-config.h new file mode 100755 -index 000000000000..1d57aa3a6432 +index 000000000..1d57aa3a6 --- /dev/null +++ b/include/uapi/linux/rkcif-config.h @@ -0,0 +1,57 @@ @@ -1644482,7 +1657765,7 @@ index 000000000000..1d57aa3a6432 +#endif diff --git a/include/uapi/linux/rkisp1-config.h b/include/uapi/linux/rkisp1-config.h new file mode 100755 -index 000000000000..c26d4bb69261 +index 000000000..c26d4bb69 --- /dev/null +++ b/include/uapi/linux/rkisp1-config.h @@ -0,0 +1,872 @@ @@ -1645360,7 +1658643,7 @@ index 000000000000..c26d4bb69261 +#endif /* _UAPI_RKISP1_CONFIG_H */ diff --git a/include/uapi/linux/rkisp2-config.h b/include/uapi/linux/rkisp2-config.h new file mode 100755 -index 000000000000..9d41f9e8a097 +index 000000000..9d41f9e8a --- /dev/null +++ b/include/uapi/linux/rkisp2-config.h @@ -0,0 +1,1853 @@ @@ -1647219,7 +1660502,7 @@ index 000000000000..9d41f9e8a097 +#endif /* _UAPI_RKISP2_CONFIG_H */ diff --git a/include/uapi/linux/rkisp21-config.h b/include/uapi/linux/rkisp21-config.h new file mode 100755 -index 000000000000..203022b62361 +index 000000000..203022b62 --- /dev/null +++ b/include/uapi/linux/rkisp21-config.h @@ -0,0 +1,804 @@ @@ -1648029,7 +1661312,7 @@ index 000000000000..203022b62361 +#endif /* _UAPI_RKISP21_CONFIG_H */ diff --git a/include/uapi/linux/rkisp3-config.h b/include/uapi/linux/rkisp3-config.h new file mode 100755 -index 000000000000..25bbe1a9a146 +index 000000000..25bbe1a9a --- /dev/null +++ b/include/uapi/linux/rkisp3-config.h @@ -0,0 +1,1072 @@ @@ -1649107,7 +1662390,7 @@ index 000000000000..25bbe1a9a146 +#endif /* _UAPI_RKISP3_CONFIG_H */ diff --git a/include/uapi/linux/rkispp-config.h b/include/uapi/linux/rkispp-config.h new file mode 100755 -index 000000000000..b4a27f74f9c9 +index 000000000..b4a27f74f --- /dev/null +++ b/include/uapi/linux/rkispp-config.h @@ -0,0 +1,370 @@ @@ -1649482,7 +1662765,7 @@ index 000000000000..b4a27f74f9c9 + +#endif diff --git a/include/uapi/linux/serial_reg.h b/include/uapi/linux/serial_reg.h -index f51bc8f36813..7e3fe68af328 100644 +index f51bc8f36..7e3fe68af 100644 --- a/include/uapi/linux/serial_reg.h +++ b/include/uapi/linux/serial_reg.h @@ -30,6 +30,7 @@ @@ -1649494,7 +1662777,7 @@ index f51bc8f36813..7e3fe68af328 100644 #define UART_IIR 2 /* In: Interrupt ID Register */ #define UART_IIR_NO_INT 0x01 /* No interrupts pending */ diff --git a/include/uapi/linux/usb/ch9.h b/include/uapi/linux/usb/ch9.h -index 0f865ae4ba89..17ce56198c9a 100644 +index 0f865ae4b..17ce56198 100644 --- a/include/uapi/linux/usb/ch9.h +++ b/include/uapi/linux/usb/ch9.h @@ -968,9 +968,22 @@ struct usb_ssp_cap_descriptor { @@ -1649522,7 +1662805,7 @@ index 0f865ae4ba89..17ce56198c9a 100644 diff --git a/include/uapi/linux/usb/f_accessory.h b/include/uapi/linux/usb/f_accessory.h new file mode 100755 -index 000000000000..0baeb7d0d74c +index 000000000..0baeb7d0d --- /dev/null +++ b/include/uapi/linux/usb/f_accessory.h @@ -0,0 +1,146 @@ @@ -1649673,7 +1662956,7 @@ index 000000000000..0baeb7d0d74c + +#endif /* _UAPI_LINUX_USB_F_ACCESSORY_H */ diff --git a/include/uapi/linux/usb/g_uvc.h b/include/uapi/linux/usb/g_uvc.h -index 652f169a019e..428926e35973 100644 +index 652f169a0..428926e35 100644 --- a/include/uapi/linux/usb/g_uvc.h +++ b/include/uapi/linux/usb/g_uvc.h @@ -19,7 +19,9 @@ @@ -1649688,7 +1662971,7 @@ index 652f169a019e..428926e35973 100644 struct uvc_request_data { __s32 length; diff --git a/include/uapi/linux/usb/video.h b/include/uapi/linux/usb/video.h -index bfdae12cdacf..b82436fd9140 100644 +index bfdae12cd..b82436fd9 100644 --- a/include/uapi/linux/usb/video.h +++ b/include/uapi/linux/usb/video.h @@ -567,5 +567,63 @@ struct UVC_FRAME_MJPEG(n) { \ @@ -1649756,7 +1663039,7 @@ index bfdae12cdacf..b82436fd9140 100644 #endif /* __LINUX_USB_VIDEO_H */ diff --git a/include/uapi/linux/videodev2.h b/include/uapi/linux/videodev2.h -index 534eaa4d39bc..eb01fb549b5c 100644 +index 534eaa4d3..eb01fb549 100644 --- a/include/uapi/linux/videodev2.h +++ b/include/uapi/linux/videodev2.h @@ -689,6 +689,7 @@ struct v4l2_pix_format { @@ -1649768,7 +1663051,7 @@ index 534eaa4d39bc..eb01fb549b5c 100644 #define V4L2_PIX_FMT_H264_NO_SC v4l2_fourcc('A', 'V', 'C', '1') /* H264 without start codes */ #define V4L2_PIX_FMT_H264_MVC v4l2_fourcc('M', '2', '6', '4') /* H264 MVC */ diff --git a/init/Kconfig b/init/Kconfig -index ded631516e22..c4b76fd50832 100644 +index ded631516..c4b76fd50 100644 --- a/init/Kconfig +++ b/init/Kconfig @@ -1341,6 +1341,12 @@ if BLK_DEV_INITRD @@ -1649785,7 +1663068,7 @@ index ded631516e22..c4b76fd50832 100644 config BOOT_CONFIG diff --git a/init/initramfs.c b/init/initramfs.c -index 55b74d7e5260..f4c4e2404dfd 100644 +index 55b74d7e5..f4c4e2404 100644 --- a/init/initramfs.c +++ b/init/initramfs.c @@ -12,6 +12,7 @@ @@ -1649831,7 +1663114,7 @@ index 55b74d7e5260..f4c4e2404dfd 100644 rootfs_initcall(populate_rootfs); +#endif diff --git a/init/main.c b/init/main.c -index 63cdf49f7f82..d1118b3f2fe5 100644 +index 63cdf49f7..d1118b3f2 100644 --- a/init/main.c +++ b/init/main.c @@ -1518,6 +1518,10 @@ static noinline void __init kernel_init_freeable(void) @@ -1649857,7 +1663140,7 @@ index 63cdf49f7f82..d1118b3f2fe5 100644 /* diff --git a/ipc/msg.c b/ipc/msg.c -index 8ded6b8f10a2..6e6c8e0c9380 100644 +index 8ded6b8f1..6e6c8e0c9 100644 --- a/ipc/msg.c +++ b/ipc/msg.c @@ -147,7 +147,7 @@ static int newque(struct ipc_namespace *ns, struct ipc_params *params) @@ -1649870,7 +1663153,7 @@ index 8ded6b8f10a2..6e6c8e0c9380 100644 return -ENOMEM; diff --git a/ipc/sem.c b/ipc/sem.c -index d3b9b73cd9ca..7d9c06b0ad6e 100644 +index d3b9b73cd..7d9c06b0a 100644 --- a/ipc/sem.c +++ b/ipc/sem.c @@ -511,7 +511,7 @@ static struct sem_array *sem_alloc(size_t nsems) @@ -1649911,7 +1663194,7 @@ index d3b9b73cd9ca..7d9c06b0ad6e 100644 return -ENOMEM; } diff --git a/ipc/shm.c b/ipc/shm.c -index fce0b7b12939..e25c7c6106bc 100644 +index fce0b7b12..e25c7c610 100644 --- a/ipc/shm.c +++ b/ipc/shm.c @@ -619,7 +619,7 @@ static int newseg(struct ipc_namespace *ns, struct ipc_params *params) @@ -1649924,7 +1663207,7 @@ index fce0b7b12939..e25c7c6106bc 100644 return -ENOMEM; diff --git a/ipc/util.c b/ipc/util.c -index cc46cfa06e04..cfa0045e748d 100644 +index cc46cfa06..cfa0045e7 100644 --- a/ipc/util.c +++ b/ipc/util.c @@ -754,13 +754,21 @@ struct pid_namespace *ipc_seq_pid_ns(struct seq_file *s) @@ -1649954,7 +1663237,7 @@ index cc46cfa06e04..cfa0045e748d 100644 if (ipc != NULL) { rcu_read_lock(); diff --git a/kernel/bpf/syscall.c b/kernel/bpf/syscall.c -index bb9a9cb1f321..5b6da64da46d 100644 +index bb9a9cb1f..5b6da64da 100644 --- a/kernel/bpf/syscall.c +++ b/kernel/bpf/syscall.c @@ -127,21 +127,6 @@ static struct bpf_map *find_and_alloc_map(union bpf_attr *attr) @@ -1650117,7 +1663400,7 @@ index bb9a9cb1f321..5b6da64da46d 100644 return err; } diff --git a/kernel/bpf/verifier.c b/kernel/bpf/verifier.c -index 48ebed09d466..2e2a438db74f 100644 +index a06645c2f..c3b0869cd 100644 --- a/kernel/bpf/verifier.c +++ b/kernel/bpf/verifier.c @@ -3492,22 +3492,7 @@ static void coerce_reg_to_size(struct bpf_reg_state *reg, int size) @@ -1650145,7 +1663428,7 @@ index 48ebed09d466..2e2a438db74f 100644 static int bpf_map_direct_read(struct bpf_map *map, int off, int size, u64 *val) diff --git a/kernel/cgroup/cgroup-v1.c b/kernel/cgroup/cgroup-v1.c -index 9f5221653f80..ab7642001ee4 100644 +index 9f5221653..ab7642001 100644 --- a/kernel/cgroup/cgroup-v1.c +++ b/kernel/cgroup/cgroup-v1.c @@ -513,7 +513,8 @@ static ssize_t __cgroup1_procs_write(struct kernfs_open_file *of, @@ -1650159,7 +1663442,7 @@ index 9f5221653f80..ab7642001ee4 100644 put_cred(tcred); if (ret) diff --git a/kernel/cgroup/cpuset.c b/kernel/cgroup/cpuset.c -index 3173fe47380a..cb9a882d3d8e 100644 +index 3173fe473..cb9a882d3 100644 --- a/kernel/cgroup/cpuset.c +++ b/kernel/cgroup/cpuset.c @@ -334,6 +334,8 @@ static struct cpuset top_cpuset = { @@ -1650640,7 +1663923,7 @@ index 3173fe47380a..cb9a882d3d8e 100644 /* diff --git a/kernel/cgroup/legacy_freezer.c b/kernel/cgroup/legacy_freezer.c -index 08236798d173..081d026f13db 100644 +index 08236798d..081d026f1 100644 --- a/kernel/cgroup/legacy_freezer.c +++ b/kernel/cgroup/legacy_freezer.c @@ -479,3 +479,4 @@ struct cgroup_subsys freezer_cgrp_subsys = { @@ -1650649,7 +1663932,7 @@ index 08236798d173..081d026f13db 100644 }; +EXPORT_SYMBOL_GPL(freezer_cgrp_subsys); diff --git a/kernel/cpu.c b/kernel/cpu.c -index d33629370cf1..e799bf115e92 100644 +index d33629370..e799bf115 100644 --- a/kernel/cpu.c +++ b/kernel/cpu.c @@ -38,6 +38,8 @@ @@ -1650685,7 +1663968,7 @@ index d33629370cf1..e799bf115e92 100644 if (!cpu_present(cpu)) diff --git a/kernel/irq/generic-chip.c b/kernel/irq/generic-chip.c -index e2999a070a99..79cb6d063b80 100644 +index e2999a070..79cb6d063 100644 --- a/kernel/irq/generic-chip.c +++ b/kernel/irq/generic-chip.c @@ -200,6 +200,7 @@ int irq_gc_set_wake(struct irq_data *d, unsigned int on) @@ -1650697,7 +1663980,7 @@ index e2999a070a99..79cb6d063b80 100644 static u32 irq_readl_be(void __iomem *addr) { diff --git a/kernel/power/Makefile b/kernel/power/Makefile -index 5899260a8bef..97705757f9c6 100644 +index 5899260a8..97705757f 100644 --- a/kernel/power/Makefile +++ b/kernel/power/Makefile @@ -17,4 +17,5 @@ obj-$(CONFIG_PM_WAKELOCKS) += wakelock.o @@ -1650707,7 +1663990,7 @@ index 5899260a8bef..97705757f9c6 100644 +obj-$(CONFIG_SUSPEND) += wakeup_reason.o obj-$(CONFIG_ENERGY_MODEL) += energy_model.o diff --git a/kernel/power/energy_model.c b/kernel/power/energy_model.c -index be381eb6116a..5caf59d69331 100644 +index be381eb61..5caf59d69 100644 --- a/kernel/power/energy_model.c +++ b/kernel/power/energy_model.c @@ -52,6 +52,17 @@ static int em_debug_cpus_show(struct seq_file *s, void *unused) @@ -1650773,7 +1664056,7 @@ index be381eb6116a..5caf59d69331 100644 dev_info(dev, "EM: created perf domain\n"); diff --git a/kernel/power/hibernate.c b/kernel/power/hibernate.c -index 2fc7d509a34f..da0b41914177 100644 +index 2fc7d509a..da0b41914 100644 --- a/kernel/power/hibernate.c +++ b/kernel/power/hibernate.c @@ -326,7 +326,7 @@ static int create_image(int platform_mode) @@ -1650786,7 +1664069,7 @@ index 2fc7d509a34f..da0b41914177 100644 platform_leave(platform_mode); diff --git a/kernel/power/power.h b/kernel/power/power.h -index 24f12d534515..778bf431ec02 100644 +index 24f12d534..778bf431e 100644 --- a/kernel/power/power.h +++ b/kernel/power/power.h @@ -106,7 +106,7 @@ extern int create_basic_memory_bitmaps(void); @@ -1650799,7 +1664082,7 @@ index 24f12d534515..778bf431ec02 100644 /** * Auxiliary structure used for reading the snapshot image data and diff --git a/kernel/power/process.c b/kernel/power/process.c -index 45b054b7b5ec..cc062308092b 100644 +index 45b054b7b..cc0623080 100644 --- a/kernel/power/process.c +++ b/kernel/power/process.c @@ -85,18 +85,21 @@ static int try_to_freeze_tasks(bool user_only) @@ -1650830,7 +1664113,7 @@ index 45b054b7b5ec..cc062308092b 100644 for_each_process_thread(g, p) { if (p != current && !freezer_should_skip(p) diff --git a/kernel/power/snapshot.c b/kernel/power/snapshot.c -index 46b1804c1ddf..a3491b29c5cc 100644 +index 46b1804c1..a3491b29c 100644 --- a/kernel/power/snapshot.c +++ b/kernel/power/snapshot.c @@ -1144,7 +1144,15 @@ void free_basic_memory_bitmaps(void) @@ -1650866,7 +1664149,7 @@ index 46b1804c1ddf..a3491b29c5cc 100644 pfn = memory_bm_next_pfn(bm); } diff --git a/kernel/power/suspend.c b/kernel/power/suspend.c -index 32391acc806b..54595837730a 100644 +index 32391acc8..545958377 100644 --- a/kernel/power/suspend.c +++ b/kernel/power/suspend.c @@ -30,6 +30,7 @@ @@ -1650949,7 +1664232,7 @@ index 32391acc806b..54595837730a 100644 suspend_test_finish("suspend devices"); diff --git a/kernel/power/wakeup_reason.c b/kernel/power/wakeup_reason.c new file mode 100755 -index 000000000000..8fefaa3fdba2 +index 000000000..8fefaa3fd --- /dev/null +++ b/kernel/power/wakeup_reason.c @@ -0,0 +1,438 @@ @@ -1651392,7 +1664675,7 @@ index 000000000000..8fefaa3fdba2 + +late_initcall(wakeup_reason_init); diff --git a/kernel/reboot.c b/kernel/reboot.c -index af6f23d8bea1..bce629531d2a 100644 +index af6f23d8b..bce629531 100644 --- a/kernel/reboot.c +++ b/kernel/reboot.c @@ -215,6 +215,27 @@ void do_kernel_restart(char *cmd) @@ -1651424,7 +1664707,7 @@ index af6f23d8bea1..bce629531d2a 100644 { /* The boot cpu is always logical cpu 0 */ diff --git a/kernel/sched/core.c b/kernel/sched/core.c -index 46a0df7d1047..0393fbe727a1 100644 +index 46a0df7d1..0393fbe72 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -45,6 +45,13 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(sched_overutilized_tp); @@ -1651582,7 +1664865,7 @@ index 46a0df7d1047..0393fbe727a1 100644 /* * There's this thread running, bail when that's the only diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c -index dafc7d8d9c8f..914a191a4ebf 100644 +index dafc7d8d9..914a191a4 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -86,6 +86,7 @@ enum sched_tunable_scaling sysctl_sched_tunable_scaling = SCHED_TUNABLESCALING_L @@ -1651617,7 +1664900,7 @@ index dafc7d8d9c8f..914a191a4ebf 100644 /* Spare idle load balancing on CPUs that don't want to be disturbed: */ if (!housekeeping_cpu(cpu, HK_FLAG_SCHED)) diff --git a/kernel/sched/loadavg.c b/kernel/sched/loadavg.c -index d2a655643a02..b5837e27718e 100644 +index d2a655643..b5837e277 100644 --- a/kernel/sched/loadavg.c +++ b/kernel/sched/loadavg.c @@ -75,6 +75,7 @@ void get_avenrun(unsigned long *loads, unsigned long offset, int shift) @@ -1651629,7 +1664912,7 @@ index d2a655643a02..b5837e27718e 100644 long calc_load_fold_active(struct rq *this_rq, long adjust) { diff --git a/kernel/sched/pelt.c b/kernel/sched/pelt.c -index 2c613e1cff3a..e2890b677e43 100644 +index 2c613e1cf..e2890b677 100644 --- a/kernel/sched/pelt.c +++ b/kernel/sched/pelt.c @@ -28,6 +28,42 @@ @@ -1651685,7 +1664968,7 @@ index 2c613e1cff3a..e2890b677e43 100644 } diff --git a/kernel/sched/rt.c b/kernel/sched/rt.c -index d5c00fa02a9d..2f83378d7b56 100644 +index d5c00fa02..2f83378d7 100644 --- a/kernel/sched/rt.c +++ b/kernel/sched/rt.c @@ -1390,6 +1390,27 @@ static void dequeue_rt_entity(struct sched_rt_entity *rt_se, unsigned int flags) @@ -1651772,7 +1665055,7 @@ index d5c00fa02a9d..2f83378d7b56 100644 int target = find_lowest_rq(p); diff --git a/kernel/sched/sched-pelt.h b/kernel/sched/sched-pelt.h -index c529706bed11..92a6875bc2d3 100644 +index c529706be..92a6875bc 100644 --- a/kernel/sched/sched-pelt.h +++ b/kernel/sched/sched-pelt.h @@ -1,7 +1,7 @@ @@ -1651808,7 +1665091,7 @@ index c529706bed11..92a6875bc2d3 100644 +#define LOAD_AVG_PERIOD pelt_load_avg_period +#define LOAD_AVG_MAX pelt_load_avg_max diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h -index e4c65d96185e..41537206ca2f 100644 +index e4c65d961..41537206c 100644 --- a/kernel/sched/sched.h +++ b/kernel/sched/sched.h @@ -1879,6 +1879,8 @@ extern const u32 sched_prio_to_wmult[40]; @@ -1651821,7 +1665104,7 @@ index e4c65d96185e..41537206ca2f 100644 struct sched_class { diff --git a/kernel/sched/topology.c b/kernel/sched/topology.c -index 9191e5daaa3c..58d840c624d7 100644 +index 9191e5daa..58d840c62 100644 --- a/kernel/sched/topology.c +++ b/kernel/sched/topology.c @@ -5,6 +5,9 @@ @@ -1651835,7 +1665118,7 @@ index 9191e5daaa3c..58d840c624d7 100644 /* Protected by sched_domains_mutex: */ static cpumask_var_t sched_domains_tmpmask; diff --git a/kernel/sched/wait.c b/kernel/sched/wait.c -index 21005b980a6b..6cdf93634c29 100644 +index 21005b980..6cdf93634 100644 --- a/kernel/sched/wait.c +++ b/kernel/sched/wait.c @@ -389,7 +389,8 @@ void finish_wait(struct wait_queue_head *wq_head, struct wait_queue_entry *wq_en @@ -1651869,7 +1665152,7 @@ index 21005b980a6b..6cdf93634c29 100644 smp_mb(); /* C */ diff --git a/make-boot.sh b/make-boot.sh new file mode 100755 -index 000000000000..820ff9957c50 +index 000000000..820ff9957 --- /dev/null +++ b/make-boot.sh @@ -0,0 +1,32 @@ @@ -1651907,7 +1665190,7 @@ index 000000000000..820ff9957c50 +cp ${BOOT_LINUX}/boot_linux.img ${OUT_IMAGE} diff --git a/make-ohos.sh b/make-ohos.sh new file mode 100755 -index 000000000000..81b93d71e60f +index 000000000..81b93d71e --- /dev/null +++ b/make-ohos.sh @@ -0,0 +1,130 @@ @@ -1652042,7 +1665325,7 @@ index 000000000000..81b93d71e60f + help +fi diff --git a/mm/hugetlb.c b/mm/hugetlb.c -index 4ecf9a0622df..20277864c57b 100644 +index 4ecf9a062..20277864c 100644 --- a/mm/hugetlb.c +++ b/mm/hugetlb.c @@ -3932,7 +3932,6 @@ void __unmap_hugepage_range(struct mmu_gather *tlb, struct vm_area_struct *vma, @@ -1652090,7 +1665373,7 @@ index 4ecf9a0622df..20277864c57b 100644 void __unmap_hugepage_range_final(struct mmu_gather *tlb, diff --git a/mm/memblock.c b/mm/memblock.c -index c337df03b6a1..3b9d75e55f66 100644 +index c337df03b..3b9d75e55 100644 --- a/mm/memblock.c +++ b/mm/memblock.c @@ -97,6 +97,26 @@ struct pglist_data __refdata contig_page_data; @@ -1652166,7 +1665449,7 @@ index c337df03b6a1..3b9d75e55f66 100644 return end_pfn - start_pfn; diff --git a/mm/page_alloc.c b/mm/page_alloc.c -index 15d25006cfa0..5af32859790a 100644 +index 15d25006c..5af328597 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -1442,9 +1442,15 @@ static void free_one_page(struct zone *zone, @@ -1652244,7 +1665527,7 @@ index 15d25006cfa0..5af32859790a 100644 pgcnt++; } diff --git a/net/bluetooth/l2cap_sock.c b/net/bluetooth/l2cap_sock.c -index 160c016a5dfb..c99d65ef13b1 100644 +index 160c016a5..c99d65ef1 100644 --- a/net/bluetooth/l2cap_sock.c +++ b/net/bluetooth/l2cap_sock.c @@ -1508,9 +1508,6 @@ static void l2cap_sock_close_cb(struct l2cap_chan *chan) @@ -1652280,7 +1665563,7 @@ index 160c016a5dfb..c99d65ef13b1 100644 if (l2cap_pi(sk)->rx_busy_skb) { kfree_skb(l2cap_pi(sk)->rx_busy_skb); diff --git a/net/bluetooth/sco.c b/net/bluetooth/sco.c -index 918df8d0e8b6..7c24a9acbc45 100644 +index 918df8d0e..7c24a9acb 100644 --- a/net/bluetooth/sco.c +++ b/net/bluetooth/sco.c @@ -93,10 +93,10 @@ static void sco_sock_timeout(struct work_struct *work) @@ -1652409,7 +1665692,7 @@ index 918df8d0e8b6..7c24a9acbc45 100644 sco_conn_unlock(conn); } diff --git a/net/rfkill/Kconfig b/net/rfkill/Kconfig -index 83a7af8982bb..33ab1f7a3cc0 100644 +index 83a7af898..33ab1f7a3 100644 --- a/net/rfkill/Kconfig +++ b/net/rfkill/Kconfig @@ -32,3 +32,12 @@ config RFKILL_GPIO @@ -1652426,7 +1665709,7 @@ index 83a7af8982bb..33ab1f7a3cc0 100644 + help + Rockchip rfkill driver for rk29/rk3X diff --git a/net/rfkill/Makefile b/net/rfkill/Makefile -index dc47b6174ec5..beed5b506307 100644 +index dc47b6174..beed5b506 100644 --- a/net/rfkill/Makefile +++ b/net/rfkill/Makefile @@ -7,3 +7,5 @@ rfkill-y += core.o @@ -1652437,7 +1665720,7 @@ index dc47b6174ec5..beed5b506307 100644 +obj-$(CONFIG_RFKILL_RK) += rfkill-rk.o diff --git a/net/rfkill/rfkill-bt.c b/net/rfkill/rfkill-bt.c new file mode 100755 -index 000000000000..48a0be7b306e +index 000000000..48a0be7b3 --- /dev/null +++ b/net/rfkill/rfkill-bt.c @@ -0,0 +1,827 @@ @@ -1653270,7 +1666553,7 @@ index 000000000000..48a0be7b306e +MODULE_LICENSE("GPL"); diff --git a/net/rfkill/rfkill-wlan.c b/net/rfkill/rfkill-wlan.c new file mode 100755 -index 000000000000..6a581c847a68 +index 000000000..6a581c847 --- /dev/null +++ b/net/rfkill/rfkill-wlan.c @@ -0,0 +1,979 @@ @@ -1654254,7 +1667537,7 @@ index 000000000000..6a581c847a68 +MODULE_AUTHOR("gwl@rock-chips.com"); +MODULE_LICENSE("GPL"); diff --git a/scripts/Makefile b/scripts/Makefile -index 9adb6d247818..b7b7ad5475e6 100644 +index 9adb6d247..b7b7ad547 100644 --- a/scripts/Makefile +++ b/scripts/Makefile @@ -9,6 +9,7 @@ CRYPTO_CFLAGS = $(shell pkg-config --cflags libcrypto 2> /dev/null) @@ -1654266,7 +1667549,7 @@ index 9adb6d247818..b7b7ad5475e6 100644 hostprogs-always-$(CONFIG_ASN1) += asn1_compiler hostprogs-always-$(CONFIG_MODULE_SIG_FORMAT) += sign-file diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib -index 94133708889d..d018b4ad057d 100644 +index 941337088..d018b4ad0 100644 --- a/scripts/Makefile.lib +++ b/scripts/Makefile.lib @@ -316,8 +316,9 @@ $(obj)/%.dtb.S: $(obj)/%.dtb FORCE @@ -1654283,7 +1667566,7 @@ index 94133708889d..d018b4ad057d 100644 cat $(depfile).pre.tmp $(depfile).dtc.tmp > $(depfile) diff --git a/scripts/clang-wrapper.py b/scripts/clang-wrapper.py new file mode 100755 -index 000000000000..5486902f1f76 +index 000000000..5486902f1 --- /dev/null +++ b/scripts/clang-wrapper.py @@ -0,0 +1,102 @@ @@ -1654390,7 +1667673,7 @@ index 000000000000..5486902f1f76 + status = run_clang() + sys.exit(status) diff --git a/scripts/dtc/checks.c b/scripts/dtc/checks.c -index 17cb6890d45a..913fb08af475 100644 +index 17cb6890d..913fb08af 100644 --- a/scripts/dtc/checks.c +++ b/scripts/dtc/checks.c @@ -649,6 +649,24 @@ static void fixup_omit_unused_nodes(struct check *c, struct dt_info *dti, @@ -1654420,7 +1667703,7 @@ index 17cb6890d45a..913fb08af475 100644 diff --git a/scripts/mkimg b/scripts/mkimg new file mode 100755 -index 000000000000..63e3da6f402c +index 000000000..63e3da6f4 --- /dev/null +++ b/scripts/mkimg @@ -0,0 +1,235 @@ @@ -1654661,7 +1667944,7 @@ index 000000000000..63e3da6f402c +fi diff --git a/scripts/repack-bootimg b/scripts/repack-bootimg new file mode 100755 -index 000000000000..69065d28e0ea +index 000000000..69065d28e --- /dev/null +++ b/scripts/repack-bootimg @@ -0,0 +1,153 @@ @@ -1654820,7 +1668103,7 @@ index 000000000000..69065d28e0ea +--output $output diff --git a/scripts/resource_tool.c b/scripts/resource_tool.c new file mode 100755 -index 000000000000..8465c578b2d7 +index 000000000..8465c578b --- /dev/null +++ b/scripts/resource_tool.c @@ -0,0 +1,1575 @@ @@ -1656400,7 +1669683,7 @@ index 000000000000..8465c578b2d7 + +/************pack code end****************/ diff --git a/sound/drivers/aloop.c b/sound/drivers/aloop.c -index 2c5f7e905ab8..51821334fcee 100644 +index 2c5f7e905..51821334f 100644 --- a/sound/drivers/aloop.c +++ b/sound/drivers/aloop.c @@ -37,6 +37,7 @@ MODULE_SUPPORTED_DEVICE("{{ALSA,Loopback soundcard}}"); @@ -1656490,7 +1669773,7 @@ index 2c5f7e905ab8..51821334fcee 100644 } diff --git a/sound/soc/codecs/Kconfig b/sound/soc/codecs/Kconfig -index 34c6dd04b85a..fa128b8cdfc4 100644 +index 34c6dd04b..fa128b8cd 100644 --- a/sound/soc/codecs/Kconfig +++ b/sound/soc/codecs/Kconfig @@ -89,11 +89,16 @@ config SND_SOC_ALL_CODECS @@ -1656630,7 +1669913,7 @@ index 34c6dd04b85a..fa128b8cdfc4 100644 config SND_SOC_RT5659 diff --git a/sound/soc/codecs/Makefile b/sound/soc/codecs/Makefile -index 11ce98c25d6c..d94d074c18ad 100644 +index 11ce98c25..d94d074c1 100644 --- a/sound/soc/codecs/Makefile +++ b/sound/soc/codecs/Makefile @@ -84,12 +84,19 @@ snd-soc-da7219-objs := da7219.o da7219-aad.o @@ -1656702,7 +1669985,7 @@ index 11ce98c25d6c..d94d074c18ad 100644 obj-$(CONFIG_SND_SOC_RL6347A) += snd-soc-rl6347a.o obj-$(CONFIG_SND_SOC_RT1011) += snd-soc-rt1011.o diff --git a/sound/soc/codecs/bt-sco.c b/sound/soc/codecs/bt-sco.c -index 4d286844e3c8..2be7ba425ee4 100644 +index 4d286844e..2be7ba425 100644 --- a/sound/soc/codecs/bt-sco.c +++ b/sound/soc/codecs/bt-sco.c @@ -26,14 +26,14 @@ static struct snd_soc_dai_driver bt_sco_dai[] = { @@ -1656741,7 +1670024,7 @@ index 4d286844e3c8..2be7ba425ee4 100644 }, diff --git a/sound/soc/codecs/dummy-codec.c b/sound/soc/codecs/dummy-codec.c new file mode 100755 -index 000000000000..35756c753357 +index 000000000..35756c753 --- /dev/null +++ b/sound/soc/codecs/dummy-codec.c @@ -0,0 +1,115 @@ @@ -1656862,7 +1670145,7 @@ index 000000000000..35756c753357 +MODULE_LICENSE("GPL v2"); diff --git a/sound/soc/codecs/es7202.c b/sound/soc/codecs/es7202.c new file mode 100755 -index 000000000000..49035e8ca52d +index 000000000..49035e8ca --- /dev/null +++ b/sound/soc/codecs/es7202.c @@ -0,0 +1,1170 @@ @@ -1658038,7 +1671321,7 @@ index 000000000000..49035e8ca52d +MODULE_LICENSE("GPL v2"); diff --git a/sound/soc/codecs/es7202.h b/sound/soc/codecs/es7202.h new file mode 100755 -index 000000000000..fb8643c0a3b2 +index 000000000..fb8643c0a --- /dev/null +++ b/sound/soc/codecs/es7202.h @@ -0,0 +1,95 @@ @@ -1658139,7 +1671422,7 @@ index 000000000000..fb8643c0a3b2 +#endif diff --git a/sound/soc/codecs/es7210.c b/sound/soc/codecs/es7210.c new file mode 100755 -index 000000000000..dfb0e24e23c7 +index 000000000..dfb0e24e2 --- /dev/null +++ b/sound/soc/codecs/es7210.c @@ -0,0 +1,1754 @@ @@ -1659899,7 +1673182,7 @@ index 000000000000..dfb0e24e23c7 +MODULE_LICENSE("GPL v2"); diff --git a/sound/soc/codecs/es7210.h b/sound/soc/codecs/es7210.h new file mode 100755 -index 000000000000..234a365c398e +index 000000000..234a365c3 --- /dev/null +++ b/sound/soc/codecs/es7210.h @@ -0,0 +1,76 @@ @@ -1659981,7 +1673264,7 @@ index 000000000000..234a365c398e +#endif /* _ES7210_H_ */ diff --git a/sound/soc/codecs/es7243e.c b/sound/soc/codecs/es7243e.c new file mode 100755 -index 000000000000..e2bf03c526d8 +index 000000000..e2bf03c52 --- /dev/null +++ b/sound/soc/codecs/es7243e.c @@ -0,0 +1,2671 @@ @@ -1662658,7 +1675941,7 @@ index 000000000000..e2bf03c526d8 +MODULE_LICENSE("GPL v2"); diff --git a/sound/soc/codecs/es7243e_usr_cfg.h b/sound/soc/codecs/es7243e_usr_cfg.h new file mode 100755 -index 000000000000..1d9760ada940 +index 000000000..1d9760ada --- /dev/null +++ b/sound/soc/codecs/es7243e_usr_cfg.h @@ -0,0 +1,274 @@ @@ -1662938,7 +1676221,7 @@ index 000000000000..1d9760ada940 +#define VDDA_VOLTAGE VDDA_3V3 diff --git a/sound/soc/codecs/es8311.c b/sound/soc/codecs/es8311.c new file mode 100755 -index 000000000000..b13ece8be069 +index 000000000..b13ece8be --- /dev/null +++ b/sound/soc/codecs/es8311.c @@ -0,0 +1,756 @@ @@ -1663700,7 +1676983,7 @@ index 000000000000..b13ece8be069 +MODULE_LICENSE("GPL"); diff --git a/sound/soc/codecs/es8311.h b/sound/soc/codecs/es8311.h new file mode 100755 -index 000000000000..94d8472bd5de +index 000000000..94d8472bd --- /dev/null +++ b/sound/soc/codecs/es8311.h @@ -0,0 +1,69 @@ @@ -1663775,7 +1677058,7 @@ index 000000000000..94d8472bd5de +#endif diff --git a/sound/soc/codecs/es8323.c b/sound/soc/codecs/es8323.c new file mode 100755 -index 000000000000..636510849a6d +index 000000000..636510849 --- /dev/null +++ b/sound/soc/codecs/es8323.c @@ -0,0 +1,998 @@ @@ -1664779,7 +1678062,7 @@ index 000000000000..636510849a6d +MODULE_LICENSE("GPL"); diff --git a/sound/soc/codecs/es8323.h b/sound/soc/codecs/es8323.h new file mode 100755 -index 000000000000..355a6a7d3149 +index 000000000..355a6a7d3 --- /dev/null +++ b/sound/soc/codecs/es8323.h @@ -0,0 +1,151 @@ @@ -1664935,7 +1678218,7 @@ index 000000000000..355a6a7d3149 + +#endif diff --git a/sound/soc/codecs/es8328.c b/sound/soc/codecs/es8328.c -index 7e26231a596a..1d27a26e0907 100644 +index 7e26231a5..1d27a26e0 100644 --- a/sound/soc/codecs/es8328.c +++ b/sound/soc/codecs/es8328.c @@ -36,6 +36,16 @@ static const struct snd_pcm_hw_constraint_list constraints_12288 = { @@ -1664972,7 +1678255,7 @@ index 7e26231a596a..1d27a26e0907 100644 } diff --git a/sound/soc/codecs/es8396.c b/sound/soc/codecs/es8396.c new file mode 100755 -index 000000000000..4cd7916b026f +index 000000000..4cd7916b0 --- /dev/null +++ b/sound/soc/codecs/es8396.c @@ -0,0 +1,3207 @@ @@ -1668185,7 +1681468,7 @@ index 000000000000..4cd7916b026f +MODULE_LICENSE("GPL"); diff --git a/sound/soc/codecs/es8396.h b/sound/soc/codecs/es8396.h new file mode 100755 -index 000000000000..e6f2f390707d +index 000000000..e6f2f3907 --- /dev/null +++ b/sound/soc/codecs/es8396.h @@ -0,0 +1,354 @@ @@ -1668545,7 +1681828,7 @@ index 000000000000..e6f2f390707d +#endif diff --git a/sound/soc/codecs/rk1000_codec.c b/sound/soc/codecs/rk1000_codec.c new file mode 100755 -index 000000000000..9cabd0977813 +index 000000000..9cabd0977 --- /dev/null +++ b/sound/soc/codecs/rk1000_codec.c @@ -0,0 +1,580 @@ @@ -1669131,7 +1682414,7 @@ index 000000000000..9cabd0977813 +MODULE_LICENSE("GPL v2"); diff --git a/sound/soc/codecs/rk1000_codec.h b/sound/soc/codecs/rk1000_codec.h new file mode 100755 -index 000000000000..0c9169cd6fb7 +index 000000000..0c9169cd6 --- /dev/null +++ b/sound/soc/codecs/rk1000_codec.h @@ -0,0 +1,320 @@ @@ -1669457,7 +1682740,7 @@ index 000000000000..0c9169cd6fb7 +#endif diff --git a/sound/soc/codecs/rk312x_codec.c b/sound/soc/codecs/rk312x_codec.c new file mode 100755 -index 000000000000..0e3ac4008962 +index 000000000..0e3ac4008 --- /dev/null +++ b/sound/soc/codecs/rk312x_codec.c @@ -0,0 +1,2526 @@ @@ -1671989,7 +1685272,7 @@ index 000000000000..0e3ac4008962 +MODULE_LICENSE("GPL"); diff --git a/sound/soc/codecs/rk312x_codec.h b/sound/soc/codecs/rk312x_codec.h new file mode 100755 -index 000000000000..0924088681ba +index 000000000..092408868 --- /dev/null +++ b/sound/soc/codecs/rk312x_codec.h @@ -0,0 +1,566 @@ @@ -1672561,7 +1685844,7 @@ index 000000000000..0924088681ba +#endif /* __RK312x_CODEC_H__ */ diff --git a/sound/soc/codecs/rk3228_codec.c b/sound/soc/codecs/rk3228_codec.c new file mode 100755 -index 000000000000..d82eec871ac8 +index 000000000..d82eec871 --- /dev/null +++ b/sound/soc/codecs/rk3228_codec.c @@ -0,0 +1,543 @@ @@ -1673110,7 +1686393,7 @@ index 000000000000..d82eec871ac8 +MODULE_LICENSE("GPL v2"); diff --git a/sound/soc/codecs/rk3228_codec.h b/sound/soc/codecs/rk3228_codec.h new file mode 100755 -index 000000000000..7283d0ba86e8 +index 000000000..7283d0ba8 --- /dev/null +++ b/sound/soc/codecs/rk3228_codec.h @@ -0,0 +1,218 @@ @@ -1673334,7 +1686617,7 @@ index 000000000000..7283d0ba86e8 +#endif diff --git a/sound/soc/codecs/rk3308_codec.c b/sound/soc/codecs/rk3308_codec.c new file mode 100755 -index 000000000000..a6ce7f061d73 +index 000000000..a6ce7f061 --- /dev/null +++ b/sound/soc/codecs/rk3308_codec.c @@ -0,0 +1,5128 @@ @@ -1678468,7 +1691751,7 @@ index 000000000000..a6ce7f061d73 +MODULE_LICENSE("GPL v2"); diff --git a/sound/soc/codecs/rk3308_codec.h b/sound/soc/codecs/rk3308_codec.h new file mode 100755 -index 000000000000..93e089dae081 +index 000000000..93e089dae --- /dev/null +++ b/sound/soc/codecs/rk3308_codec.h @@ -0,0 +1,1069 @@ @@ -1679543,7 +1692826,7 @@ index 000000000000..93e089dae081 +#endif /* __RK3308_CODEC_H__ */ diff --git a/sound/soc/codecs/rk3308_codec_provider.h b/sound/soc/codecs/rk3308_codec_provider.h new file mode 100755 -index 000000000000..34c1ef86a507 +index 000000000..34c1ef86a --- /dev/null +++ b/sound/soc/codecs/rk3308_codec_provider.h @@ -0,0 +1,28 @@ @@ -1679577,7 +1692860,7 @@ index 000000000000..34c1ef86a507 +#endif /* __RK3308_CODEC_PROVIDER_H__ */ diff --git a/sound/soc/codecs/rk817_codec.c b/sound/soc/codecs/rk817_codec.c new file mode 100755 -index 000000000000..c063d48f3307 +index 000000000..c063d48f3 --- /dev/null +++ b/sound/soc/codecs/rk817_codec.c @@ -0,0 +1,1294 @@ @@ -1680877,7 +1694160,7 @@ index 000000000000..c063d48f3307 +MODULE_LICENSE("GPL v2"); diff --git a/sound/soc/codecs/rk817_codec.h b/sound/soc/codecs/rk817_codec.h new file mode 100755 -index 000000000000..a928c323928b +index 000000000..a928c3239 --- /dev/null +++ b/sound/soc/codecs/rk817_codec.h @@ -0,0 +1,215 @@ @@ -1681098,7 +1694381,7 @@ index 000000000000..a928c323928b +#endif /* __RK817_CODEC_H__ */ diff --git a/sound/soc/codecs/rk_codec_digital.c b/sound/soc/codecs/rk_codec_digital.c new file mode 100755 -index 000000000000..ec91b72fa6de +index 000000000..ec91b72fa --- /dev/null +++ b/sound/soc/codecs/rk_codec_digital.c @@ -0,0 +1,1109 @@ @@ -1682213,7 +1695496,7 @@ index 000000000000..ec91b72fa6de +MODULE_LICENSE("GPL v2"); diff --git a/sound/soc/codecs/rk_codec_digital.h b/sound/soc/codecs/rk_codec_digital.h new file mode 100755 -index 000000000000..4bb409b8d8bc +index 000000000..4bb409b8d --- /dev/null +++ b/sound/soc/codecs/rk_codec_digital.h @@ -0,0 +1,319 @@ @@ -1682537,7 +1695820,7 @@ index 000000000000..4bb409b8d8bc + +#endif diff --git a/sound/soc/codecs/rt5640.c b/sound/soc/codecs/rt5640.c -index a5674c227b3a..0db73e7a0511 100644 +index a5674c227..0db73e7a0 100644 --- a/sound/soc/codecs/rt5640.c +++ b/sound/soc/codecs/rt5640.c @@ -1335,7 +1335,9 @@ static const struct snd_soc_dapm_route rt5640_dapm_routes[] = { @@ -1682552,7 +1695835,7 @@ index a5674c227b3a..0db73e7a0511 100644 {"IN2P", NULL, "LDO2"}, {"IN3P", NULL, "LDO2"}, diff --git a/sound/soc/codecs/rt5651.c b/sound/soc/codecs/rt5651.c -index e59fdc81dbd4..2dd8d6d4f87d 100644 +index e59fdc81d..2dd8d6d4f 100644 --- a/sound/soc/codecs/rt5651.c +++ b/sound/soc/codecs/rt5651.c @@ -24,6 +24,9 @@ @@ -1682714,7 +1695997,7 @@ index e59fdc81dbd4..2dd8d6d4f87d 100644 &soc_component_dev_rt5651, rt5651_dai, ARRAY_SIZE(rt5651_dai)); diff --git a/sound/soc/codecs/rt5651.h b/sound/soc/codecs/rt5651.h -index 20c33a3ece37..05739b17813c 100644 +index 20c33a3ec..05739b178 100644 --- a/sound/soc/codecs/rt5651.h +++ b/sound/soc/codecs/rt5651.h @@ -2096,7 +2096,10 @@ struct rt5651_priv { @@ -1682729,7 +1696012,7 @@ index 20c33a3ece37..05739b17813c 100644 #endif /* __RT5651_H__ */ diff --git a/sound/soc/codecs/wm8974.c b/sound/soc/codecs/wm8974.c -index c86231dfcf4f..0827b7e65ac1 100644 +index c86231dfc..0827b7e65 100644 --- a/sound/soc/codecs/wm8974.c +++ b/sound/soc/codecs/wm8974.c @@ -7,6 +7,7 @@ @@ -1682806,7 +1696089,7 @@ index c86231dfcf4f..0827b7e65ac1 100644 &soc_component_dev_wm8974, &wm8974_dai, 1); diff --git a/sound/soc/rockchip/Kconfig b/sound/soc/rockchip/Kconfig -index d610b553ea3b..2925971bcd55 100644 +index d610b553e..2925971bc 100644 --- a/sound/soc/rockchip/Kconfig +++ b/sound/soc/rockchip/Kconfig @@ -16,6 +16,15 @@ config SND_SOC_ROCKCHIP_I2S @@ -1682877,7 +1696160,7 @@ index d610b553ea3b..2925971bcd55 100644 tristate "ASoC support multiple codecs for Rockchip RK3288 boards" depends on SND_SOC_ROCKCHIP && I2C && GPIOLIB && CLKDEV_LOOKUP diff --git a/sound/soc/rockchip/Makefile b/sound/soc/rockchip/Makefile -index 65e814d46006..ec17d97d0f27 100644 +index 65e814d46..ec17d97d0 100644 --- a/sound/soc/rockchip/Makefile +++ b/sound/soc/rockchip/Makefile @@ -1,20 +1,35 @@ @@ -1682920,7 +1696203,7 @@ index 65e814d46006..ec17d97d0f27 100644 obj-$(CONFIG_SND_SOC_RK3399_GRU_SOUND) += snd-soc-rk3399-gru-sound.o diff --git a/sound/soc/rockchip/rockchip_audio_pwm.c b/sound/soc/rockchip/rockchip_audio_pwm.c new file mode 100644 -index 000000000000..44ca66f1ed95 +index 000000000..44ca66f1e --- /dev/null +++ b/sound/soc/rockchip/rockchip_audio_pwm.c @@ -0,0 +1,372 @@ @@ -1683298,7 +1696581,7 @@ index 000000000000..44ca66f1ed95 +MODULE_LICENSE("GPL v2"); diff --git a/sound/soc/rockchip/rockchip_audio_pwm.h b/sound/soc/rockchip/rockchip_audio_pwm.h new file mode 100644 -index 000000000000..ad68660437c2 +index 000000000..ad6866043 --- /dev/null +++ b/sound/soc/rockchip/rockchip_audio_pwm.h @@ -0,0 +1,48 @@ @@ -1683352,7 +1696635,7 @@ index 000000000000..ad68660437c2 +#endif /* _ROCKCHIP_AUDIO_PWM_H */ diff --git a/sound/soc/rockchip/rockchip_cdndp.c b/sound/soc/rockchip/rockchip_cdndp.c new file mode 100644 -index 000000000000..aafeab5b41c7 +index 000000000..aafeab5b4 --- /dev/null +++ b/sound/soc/rockchip/rockchip_cdndp.c @@ -0,0 +1,166 @@ @@ -1683524,7 +1696807,7 @@ index 000000000000..aafeab5b41c7 +MODULE_DEVICE_TABLE(of, rockchip_sound_of_match); diff --git a/sound/soc/rockchip/rockchip_da7219.c b/sound/soc/rockchip/rockchip_da7219.c new file mode 100644 -index 000000000000..bf675defb884 +index 000000000..bf675defb --- /dev/null +++ b/sound/soc/rockchip/rockchip_da7219.c @@ -0,0 +1,235 @@ @@ -1683765,7 +1697048,7 @@ index 000000000000..bf675defb884 +MODULE_DEVICE_TABLE(of, rockchip_da7219_of_match); diff --git a/sound/soc/rockchip/rockchip_hdmi.c b/sound/soc/rockchip/rockchip_hdmi.c new file mode 100644 -index 000000000000..ed107d4d2399 +index 000000000..ed107d4d2 --- /dev/null +++ b/sound/soc/rockchip/rockchip_hdmi.c @@ -0,0 +1,279 @@ @@ -1684050,7 +1697333,7 @@ index 000000000000..ed107d4d2399 +MODULE_ALIAS("platform:" DRV_NAME); diff --git a/sound/soc/rockchip/rockchip_hdmi_analog.c b/sound/soc/rockchip/rockchip_hdmi_analog.c new file mode 100644 -index 000000000000..02a282e8f60a +index 000000000..02a282e8f --- /dev/null +++ b/sound/soc/rockchip/rockchip_hdmi_analog.c @@ -0,0 +1,222 @@ @@ -1684278,7 +1697561,7 @@ index 000000000000..02a282e8f60a +MODULE_ALIAS("platform:" DRV_NAME); diff --git a/sound/soc/rockchip/rockchip_hdmi_dp.c b/sound/soc/rockchip/rockchip_hdmi_dp.c new file mode 100644 -index 000000000000..4db9fb7b7dae +index 000000000..4db9fb7b7 --- /dev/null +++ b/sound/soc/rockchip/rockchip_hdmi_dp.c @@ -0,0 +1,193 @@ @@ -1684476,7 +1697759,7 @@ index 000000000000..4db9fb7b7dae +MODULE_LICENSE("GPL v2"); +MODULE_ALIAS("platform:" DRV_NAME); diff --git a/sound/soc/rockchip/rockchip_i2s.c b/sound/soc/rockchip/rockchip_i2s.c -index fa84ec695b52..b31431327c7c 100644 +index fa84ec695..b31431327 100644 --- a/sound/soc/rockchip/rockchip_i2s.c +++ b/sound/soc/rockchip/rockchip_i2s.c @@ -15,11 +15,11 @@ @@ -1684878,7 +1698161,7 @@ index fa84ec695b52..b31431327c7c 100644 } diff --git a/sound/soc/rockchip/rockchip_i2s.h b/sound/soc/rockchip/rockchip_i2s.h -index fcaae24e40af..251851bf4f2c 100644 +index fcaae24e4..251851bf4 100644 --- a/sound/soc/rockchip/rockchip_i2s.h +++ b/sound/soc/rockchip/rockchip_i2s.h @@ -88,15 +88,17 @@ @@ -1684905,7 +1698188,7 @@ index fcaae24e40af..251851bf4f2c 100644 #define I2S_CKR_MDIV_MASK (0xff << I2S_CKR_MDIV_SHIFT) diff --git a/sound/soc/rockchip/rockchip_i2s_tdm.c b/sound/soc/rockchip/rockchip_i2s_tdm.c new file mode 100644 -index 000000000000..81865dcdb3a4 +index 000000000..81865dcdb --- /dev/null +++ b/sound/soc/rockchip/rockchip_i2s_tdm.c @@ -0,0 +1,1952 @@ @@ -1686863,7 +1700146,7 @@ index 000000000000..81865dcdb3a4 +MODULE_DEVICE_TABLE(of, rockchip_i2s_tdm_match); diff --git a/sound/soc/rockchip/rockchip_i2s_tdm.h b/sound/soc/rockchip/rockchip_i2s_tdm.h new file mode 100644 -index 000000000000..fa41f81429f5 +index 000000000..fa41f8142 --- /dev/null +++ b/sound/soc/rockchip/rockchip_i2s_tdm.h @@ -0,0 +1,393 @@ @@ -1687262,7 +1700545,7 @@ index 000000000000..fa41f81429f5 +#endif /* _ROCKCHIP_I2S_TDM_H */ diff --git a/sound/soc/rockchip/rockchip_multi_dais.c b/sound/soc/rockchip/rockchip_multi_dais.c new file mode 100644 -index 000000000000..7a789c8c7e3a +index 000000000..7a789c8c7 --- /dev/null +++ b/sound/soc/rockchip/rockchip_multi_dais.c @@ -0,0 +1,541 @@ @@ -1687809,7 +1701092,7 @@ index 000000000000..7a789c8c7e3a +MODULE_DEVICE_TABLE(of, rockchip_mdais_match); diff --git a/sound/soc/rockchip/rockchip_multi_dais.h b/sound/soc/rockchip/rockchip_multi_dais.h new file mode 100644 -index 000000000000..5d9a076afb78 +index 000000000..5d9a076af --- /dev/null +++ b/sound/soc/rockchip/rockchip_multi_dais.h @@ -0,0 +1,33 @@ @@ -1687848,7 +1701131,7 @@ index 000000000000..5d9a076afb78 +#endif diff --git a/sound/soc/rockchip/rockchip_multi_dais_pcm.c b/sound/soc/rockchip/rockchip_multi_dais_pcm.c new file mode 100644 -index 000000000000..38f2220eeec1 +index 000000000..38f2220ee --- /dev/null +++ b/sound/soc/rockchip/rockchip_multi_dais_pcm.c @@ -0,0 +1,704 @@ @@ -1688558,7 +1701841,7 @@ index 000000000000..38f2220eeec1 +MODULE_LICENSE("GPL"); diff --git a/sound/soc/rockchip/rockchip_multicodecs.c b/sound/soc/rockchip/rockchip_multicodecs.c new file mode 100644 -index 000000000000..9486a2e5db2d +index 000000000..9486a2e5d --- /dev/null +++ b/sound/soc/rockchip/rockchip_multicodecs.c @@ -0,0 +1,809 @@ @@ -1689372,7 +1702655,7 @@ index 000000000000..9486a2e5db2d +MODULE_LICENSE("GPL v2"); +MODULE_ALIAS("platform:" DRV_NAME); diff --git a/sound/soc/rockchip/rockchip_pdm.c b/sound/soc/rockchip/rockchip_pdm.c -index 5adb293d0435..67f426f2e074 100644 +index 5adb293d0..67f426f2e 100644 --- a/sound/soc/rockchip/rockchip_pdm.c +++ b/sound/soc/rockchip/rockchip_pdm.c @@ -19,11 +19,15 @@ @@ -1689613,7 +1702896,7 @@ index 5adb293d0435..67f426f2e074 100644 if (ret) { dev_err(&pdev->dev, "could not register pcm: %d\n", ret); diff --git a/sound/soc/rockchip/rockchip_pdm.h b/sound/soc/rockchip/rockchip_pdm.h -index 8e5bbafef7bb..cab977272ee6 100644 +index 8e5bbafef..cab977272 100644 --- a/sound/soc/rockchip/rockchip_pdm.h +++ b/sound/soc/rockchip/rockchip_pdm.h @@ -41,6 +41,8 @@ @@ -1689645,7 +1702928,7 @@ index 8e5bbafef7bb..cab977272ee6 100644 #define PDM_HPF_LE BIT(3) diff --git a/sound/soc/rockchip/rockchip_rt5651.c b/sound/soc/rockchip/rockchip_rt5651.c new file mode 100644 -index 000000000000..4dc91c2a1e75 +index 000000000..4dc91c2a1 --- /dev/null +++ b/sound/soc/rockchip/rockchip_rt5651.c @@ -0,0 +1,245 @@ @@ -1689895,7 +1703178,7 @@ index 000000000000..4dc91c2a1e75 +MODULE_ALIAS("platform:" DRV_NAME); +MODULE_DEVICE_TABLE(of, rockchip_sound_of_match); diff --git a/sound/soc/rockchip/rockchip_spdif.c b/sound/soc/rockchip/rockchip_spdif.c -index 674810851fbc..f7173614446a 100644 +index 674810851..f71736144 100644 --- a/sound/soc/rockchip/rockchip_spdif.c +++ b/sound/soc/rockchip/rockchip_spdif.c @@ -41,7 +41,7 @@ struct rk_spdif_dev { @@ -1690028,7 +1703311,7 @@ index 674810851fbc..f7173614446a 100644 diff --git a/sound/soc/rockchip/rockchip_spdifrx.c b/sound/soc/rockchip/rockchip_spdifrx.c new file mode 100644 -index 000000000000..0e457232116d +index 000000000..0e4572321 --- /dev/null +++ b/sound/soc/rockchip/rockchip_spdifrx.c @@ -0,0 +1,415 @@ @@ -1690449,7 +1703732,7 @@ index 000000000000..0e457232116d +MODULE_LICENSE("GPL v2"); diff --git a/sound/soc/rockchip/rockchip_spdifrx.h b/sound/soc/rockchip/rockchip_spdifrx.h new file mode 100644 -index 000000000000..e75b2d5afd04 +index 000000000..e75b2d5af --- /dev/null +++ b/sound/soc/rockchip/rockchip_spdifrx.h @@ -0,0 +1,113 @@ @@ -1690568,7 +1703851,7 @@ index 000000000000..e75b2d5afd04 +#endif /* _ROCKCHIP_SPDIFRX_H */ diff --git a/sound/soc/rockchip/rockchip_vad.c b/sound/soc/rockchip/rockchip_vad.c new file mode 100644 -index 000000000000..d69278aa5317 +index 000000000..d69278aa5 --- /dev/null +++ b/sound/soc/rockchip/rockchip_vad.c @@ -0,0 +1,1316 @@ @@ -1691890,7 +1705173,7 @@ index 000000000000..d69278aa5317 +MODULE_DEVICE_TABLE(of, rockchip_vad_match); diff --git a/sound/soc/rockchip/rockchip_vad.h b/sound/soc/rockchip/rockchip_vad.h new file mode 100644 -index 000000000000..1121e71490e0 +index 000000000..1121e7149 --- /dev/null +++ b/sound/soc/rockchip/rockchip_vad.h @@ -0,0 +1,231 @@ @@ -1692127,7 +1705410,7 @@ index 000000000000..1121e71490e0 +#endif diff --git a/sound/soc/rockchip/vad_preprocess.h b/sound/soc/rockchip/vad_preprocess.h new file mode 100644 -index 000000000000..85e4d1022984 +index 000000000..85e4d1022 --- /dev/null +++ b/sound/soc/rockchip/vad_preprocess.h @@ -0,0 +1,29 @@ @@ -1692162,7 +1705445,7 @@ index 000000000000..85e4d1022984 +#endif diff --git a/sound/soc/rockchip/vad_preprocess_arm.S b/sound/soc/rockchip/vad_preprocess_arm.S new file mode 100644 -index 000000000000..a0d3eabf2ba0 +index 000000000..a0d3eabf2 --- /dev/null +++ b/sound/soc/rockchip/vad_preprocess_arm.S @@ -0,0 +1,348 @@ @@ -1692516,7 +1705799,7 @@ index 000000000000..a0d3eabf2ba0 + .section .note.GNU-stack,"",%progbits diff --git a/sound/soc/rockchip/vad_preprocess_arm64.S b/sound/soc/rockchip/vad_preprocess_arm64.S new file mode 100644 -index 000000000000..823757c1718f +index 000000000..823757c17 --- /dev/null +++ b/sound/soc/rockchip/vad_preprocess_arm64.S @@ -0,0 +1,273 @@ @@ -1692795,7 +1706078,7 @@ index 000000000000..823757c1718f + .section .note.GNU-stack,"",@progbits diff --git a/sound/soc/rockchip/vad_preprocess_thumb.S b/sound/soc/rockchip/vad_preprocess_thumb.S new file mode 100644 -index 000000000000..a105634e60d0 +index 000000000..a105634e6 --- /dev/null +++ b/sound/soc/rockchip/vad_preprocess_thumb.S @@ -0,0 +1,360 @@ @@ -1693160,7 +1706443,7 @@ index 000000000000..a105634e60d0 + .ident "GCC: (GNU) 4.9 20150123 (prerelease)" + .section .note.GNU-stack,"",%progbits diff --git a/sound/usb/quirks.c b/sound/usb/quirks.c -index a45b27a2ed4e..657c35354cc5 100644 +index a45b27a2e..657c35354 100644 --- a/sound/usb/quirks.c +++ b/sound/usb/quirks.c @@ -1523,6 +1523,9 @@ bool snd_usb_get_sample_rate_quirk(struct snd_usb_audio *chip) @@ -1693184,7 +1706467,7 @@ index a45b27a2ed4e..657c35354cc5 100644 /* Optoplay sets the sample rate attribute although * it seems not supporting it in fact. diff --git a/tools/usb/ffs-aio-example/multibuff/device_app/aio_multibuff.c b/tools/usb/ffs-aio-example/multibuff/device_app/aio_multibuff.c -index aaca1f44e788..8643beaf25a1 100644 +index aaca1f44e..8643beaf2 100644 --- a/tools/usb/ffs-aio-example/multibuff/device_app/aio_multibuff.c +++ b/tools/usb/ffs-aio-example/multibuff/device_app/aio_multibuff.c @@ -57,16 +57,30 @@ static const struct { @@ -1693279,7 +1706562,7 @@ index aaca1f44e788..8643beaf25a1 100644 #define STR_INTERFACE "AIO Test" diff --git a/tools/usb/ffs-aio-example/simple/device_app/aio_simple.c b/tools/usb/ffs-aio-example/simple/device_app/aio_simple.c -index 1f44a29818bf..51574379ff91 100644 +index 1f44a2981..51574379f 100644 --- a/tools/usb/ffs-aio-example/simple/device_app/aio_simple.c +++ b/tools/usb/ffs-aio-example/simple/device_app/aio_simple.c @@ -55,16 +55,30 @@ static const struct {