From 03b8bd87df8eac9d39822e28e951c495b313b290 Mon Sep 17 00:00:00 2001 From: Yafen Date: Thu, 30 May 2024 03:51:11 +0800 Subject: [PATCH] RPi: update kernel version to openEuler 5.10.0-201.0.0 --- 0000-raspberrypi-kernel.patch | 715 +++++++++++++++++++++------------- raspberrypi-kernel.spec | 6 +- 2 files changed, 451 insertions(+), 270 deletions(-) diff --git a/0000-raspberrypi-kernel.patch b/0000-raspberrypi-kernel.patch index 4e7ce2a..1cab605 100644 --- a/0000-raspberrypi-kernel.patch +++ b/0000-raspberrypi-kernel.patch @@ -1,9 +1,10 @@ -From 6806812dc3b3bd831d9d919fd15486dac64f69fd Mon Sep 17 00:00:00 2001 -From: junyu mu -Date: Sun, 26 Nov 2023 18:17:06 +0800 -Subject: [PATCH] apply RPi patch of 5.10.0(openEuler 5.10.0-171.0.0) +From d177e16468aae54baec6af6b93eb7cdd80cc82a4 Mon Sep 17 00:00:00 2001 +From: Yafen +Date: Thu, 30 May 2024 00:36:36 +0800 +Subject: [PATCH] apply RPi patch of 5.10.0(openEuler 5.10.0-201.0.0) --- + .gitignore | 1 + .../admin-guide/media/bcm2835-isp.rst | 127 + .../clock/raspberrypi,firmware-clocks.yaml | 32 + .../bindings/display/brcm,bcm2711-hdmi.yaml | 20 +- @@ -47,6 +48,8 @@ Subject: [PATCH] apply RPi patch of 5.10.0(openEuler 5.10.0-171.0.0) .../userspace-api/media/v4l/yuv-formats.rst | 3 + MAINTAINERS | 48 + Makefile | 3 + + README.en.md | 73 + + README.md | 73 + arch/arm/boot/dts/Makefile | 31 +- arch/arm/boot/dts/bcm2708-rpi-b-plus.dts | 131 + arch/arm/boot/dts/bcm2708-rpi-b-rev1.dts | 134 + @@ -900,7 +903,7 @@ Subject: [PATCH] apply RPi patch of 5.10.0(openEuler 5.10.0-171.0.0) sound/soc/soc-core.c | 14 +- sound/usb/quirks-table.h | 9 + sound/usb/quirks.c | 6 + - 896 files changed, 175469 insertions(+), 4723 deletions(-) + 899 files changed, 175616 insertions(+), 4723 deletions(-) create mode 100644 Documentation/admin-guide/media/bcm2835-isp.rst create mode 100644 Documentation/devicetree/bindings/clock/raspberrypi,firmware-clocks.yaml create mode 100644 Documentation/devicetree/bindings/hwmon/rpi-poe-fan.txt @@ -923,6 +926,8 @@ Subject: [PATCH] apply RPi patch of 5.10.0(openEuler 5.10.0-171.0.0) create mode 100644 Documentation/userspace-api/media/v4l/pixfmt-nv12-col128.rst create mode 100644 Documentation/userspace-api/media/v4l/pixfmt-y12p.rst create mode 100644 Documentation/userspace-api/media/v4l/pixfmt-y14p.rst + create mode 100644 README.en.md + create mode 100644 README.md create mode 100644 arch/arm/boot/dts/bcm2708-rpi-b-plus.dts create mode 100644 arch/arm/boot/dts/bcm2708-rpi-b-rev1.dts create mode 100644 arch/arm/boot/dts/bcm2708-rpi-b.dts @@ -1421,6 +1426,18 @@ Subject: [PATCH] apply RPi patch of 5.10.0(openEuler 5.10.0-171.0.0) create mode 100644 sound/soc/codecs/tas5713.c create mode 100644 sound/soc/codecs/tas5713.h +diff --git a/.gitignore b/.gitignore +index 67d2f3503128..8b0b16eeca88 100644 +--- a/.gitignore ++++ b/.gitignore +@@ -18,6 +18,7 @@ + *.c.[012]*.* + *.dt.yaml + *.dtb ++*.dtbo + *.dtb.S + *.dwo + *.elf diff --git a/Documentation/admin-guide/media/bcm2835-isp.rst b/Documentation/admin-guide/media/bcm2835-isp.rst new file mode 100644 index 000000000000..e1c19f78435e @@ -4155,7 +4172,7 @@ index 4a05a105a9e6..ba3a5b599362 100644 pixfmt-nv16m pixfmt-nv24 diff --git a/MAINTAINERS b/MAINTAINERS -index a7815fd1072f..19b33766778f 100644 +index 83b9596bbe7c..683dbfea3a4d 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -3427,6 +3427,29 @@ N: bcm113* @@ -4203,7 +4220,7 @@ index a7815fd1072f..19b33766778f 100644 DRM DRIVER FOR GRAIN MEDIA GM12U320 PROJECTORS M: Hans de Goede S: Maintained -@@ -16454,6 +16485,23 @@ S: Maintained +@@ -16470,6 +16501,23 @@ S: Maintained T: git git://linuxtv.org/media_tree.git F: drivers/media/i2c/imx355.c @@ -4228,10 +4245,10 @@ index a7815fd1072f..19b33766778f 100644 M: Maxim Levitsky M: Alex Dubov diff --git a/Makefile b/Makefile -index 46ca8c6c05fc..f5fec38c4ef9 100644 +index e1e4ca4737a7..f041c9c54f63 100644 --- a/Makefile +++ b/Makefile -@@ -1394,6 +1394,9 @@ ifneq ($(dtstree),) +@@ -1400,6 +1400,9 @@ ifneq ($(dtstree),) %.dtb: include/config/kernel.release scripts_dtc $(Q)$(MAKE) $(build)=$(dtstree) $(dtstree)/$@ @@ -4241,6 +4258,164 @@ index 46ca8c6c05fc..f5fec38c4ef9 100644 PHONY += dtbs dtbs_install dtbs_check dtbs: include/config/kernel.release scripts_dtc $(Q)$(MAKE) $(build)=$(dtstree) +diff --git a/README.en.md b/README.en.md +new file mode 100644 +index 000000000000..7299a7e697a0 +--- /dev/null ++++ b/README.en.md +@@ -0,0 +1,73 @@ ++# raspberrypi-kernel ++ ++English | [简体中文](./README.md) ++ ++#### Description ++ ++The 5.10 kernel for running on Raspberry Pi. ++ ++This repository is based on [openEuler OLK-5.10](https://gitee.com/openeuler/kernel/tree/OLK-5.10/) version kernel, and is merged with the 5.10.y branch of [Raspberry Pi kernel](https://github.com/raspberrypi/linux/tree/rpi-5.10.y). ++ ++#### Architecture Requirements ++ ++Hardware: Raspberry Pi 3B/3B+/4B/400. ++ ++Architecture: AArch64. ++ ++#### Compiling ++ ++Compile kernel and kernel modules. ++ ++1. Prepare compile environment ++ ++ OS: openEuler or CentOS 7/8; ++ ++ Architecture: AArch64. ++ ++ You follow the documents of [raspberrypi](https://gitee.com/openeuler/raspberrypi/blob/master/README.en.md) to cross-compile this kernel. ++ ++2. Download source ++ ++ `git clone git@gitee.com:openeuler/raspberrypi-kernel.git -b OLK-5.10 && cd raspberrypi-kernel` ++ ++3. Load default settings ++ ++ `make bcm2711_defconfig` ++ ++ The corresponding defconfig file is in ./arch/arm64/configs. ++ ++4. Compile kernel ++ ++ `make ARCH=arm64 -j4` ++ ++5. Create directory for compiling kernel modules ++ ++ `mkdir ../output` ++ ++6. Compile kernel modules ++ ++ `make INSTALL_MOD_PATH=../output/ modules_install` ++ ++Now, the kernel compilation is complete. ++ ++#### Installation ++ ++Refer to [raspberrypi Repository](https://gitee.com/openeuler/raspberrypi) for details about how to use this compiled kernel to build openEuler image for Rasberry Pi. ++ ++#### Contributions ++ ++1. Fork the repository ++2. Create Feat_xxx branch ++3. Commit your code ++4. Create Pull Request ++ ++ ++#### Gitee Feature ++ ++1. You can use Readme\_XXX.md to support different languages, such as Readme\_en.md, Readme\_zh.md ++2. Gitee blog [blog.gitee.com](https://blog.gitee.com) ++3. Explore open source project [https://gitee.com/explore](https://gitee.com/explore) ++4. The most valuable open source project [GVP](https://gitee.com/gvp) ++5. The manual of Gitee [https://gitee.com/help](https://gitee.com/help) ++6. The most popular members [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/) ++ +diff --git a/README.md b/README.md +new file mode 100644 +index 000000000000..b0aba9f19ef6 +--- /dev/null ++++ b/README.md +@@ -0,0 +1,73 @@ ++# raspberrypi-kernel ++ ++[English](./README.en.md) | 简体中文 ++ ++#### 介绍 ++ ++适用于树莓派 的 5.10 版本的内核源码。 ++ ++本仓库基于 [openEuler OLK-5.10](https://gitee.com/openeuler/kernel/tree/OLK-5.10/) 版本的内核,合并了上游 [树莓派内核 5.10.y](https://github.com/raspberrypi/linux/tree/rpi-5.10.y) 的分支代码。 ++ ++#### 支持硬件 ++ ++树莓派 3B/3B+/4B/400 ++ ++架构:AArch64 ++ ++#### 编译 ++ ++编译内核和内核模块。 ++ ++1. 准备编译环境 ++ ++ 操作系统:openEuler 或 CentOS 7/8 ++ ++ 架构:AArch64 ++ ++ 交叉编译请参照:[交叉编译内核](https://gitee.com/openeuler/raspberrypi/blob/master/documents/交叉编译内核.md) ++ ++2. 下载源码 ++ ++ `git clone git@gitee.com:openeuler/raspberrypi-kernel.git -b OLK-5.10 && cd raspberrypi-kernel` ++ ++3. 载入默认设置 ++ ++ `make bcm2711_defconfig` ++ ++ 对应的 defconfig 文件在 ./arch/arm64/configs 下。 ++ ++4. 编译内核 ++ ++ `make ARCH=arm64 -j4` ++ ++5. 创建编译内核模块目录 ++ ++ `mkdir ../output` ++ ++6. 编译内核模块 ++ ++ `make INSTALL_MOD_PATH=../output/ modules_install` ++ ++至此,内核编译完成。 ++ ++#### 使用说明 ++ ++利用上面编译好的内核来构建镜像,具体文档参见 [raspberrypi 仓库](https://gitee.com/openeuler/raspberrypi)。 ++ ++#### 参与贡献 ++ ++1. Fork 本仓库 ++2. 新建 Feat_xxx 分支 ++3. 提交代码 ++4. 新建 Pull Request ++ ++ ++#### 码云特技 ++ ++1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md ++2. 码云官方博客 [blog.gitee.com](https://blog.gitee.com) ++3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解码云上的优秀开源项目 ++4. [GVP](https://gitee.com/gvp) 全称是码云最有价值开源项目,是码云综合评定出的优秀开源项目 ++5. 码云官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) ++6. 码云封面人物是一档用来展示码云会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/) ++ diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile index d93f01dddc3f..432c4d76bb35 100644 --- a/arch/arm/boot/dts/Makefile @@ -45906,10 +46081,10 @@ index 000000000000..419813140a52 +CONFIG_SCHED_TRACER=y +CONFIG_BLK_DEV_IO_TRACE=y diff --git a/arch/arm64/configs/defconfig b/arch/arm64/configs/defconfig -index d025bafcce43..fe49aafae978 100644 +index 2c4423df23db..7b027bb0577c 100644 --- a/arch/arm64/configs/defconfig +++ b/arch/arm64/configs/defconfig -@@ -1027,6 +1027,7 @@ CONFIG_ROCKCHIP_EFUSE=y +@@ -1030,6 +1030,7 @@ CONFIG_ROCKCHIP_EFUSE=y CONFIG_NVMEM_SUNXI_SID=y CONFIG_UNIPHIER_EFUSE=y CONFIG_MESON_EFUSE=m @@ -46041,7 +46216,7 @@ index 637e57a4868e..c217a8cf8310 100644 #define ARM_OPCODE_CONDTEST_FAIL 0 #define ARM_OPCODE_CONDTEST_PASS 1 diff --git a/arch/arm64/kernel/cpuinfo.c b/arch/arm64/kernel/cpuinfo.c -index 0cd3453a6f41..bd3a9d0c7093 100644 +index 9d8b2f75cc25..b5298196cfb3 100644 --- a/arch/arm64/kernel/cpuinfo.c +++ b/arch/arm64/kernel/cpuinfo.c @@ -17,6 +17,7 @@ @@ -46052,7 +46227,7 @@ index 0cd3453a6f41..bd3a9d0c7093 100644 #include #include #include -@@ -141,6 +142,10 @@ static int c_show(struct seq_file *m, void *v) +@@ -149,6 +150,10 @@ static int c_show(struct seq_file *m, void *v) { int i, j; bool aarch32 = personality(current->personality) == PER_LINUX32; @@ -46063,7 +46238,7 @@ index 0cd3453a6f41..bd3a9d0c7093 100644 for_each_online_cpu(i) { struct cpuinfo_arm64 *cpuinfo = &per_cpu(cpu_data, i); -@@ -201,6 +206,26 @@ static int c_show(struct seq_file *m, void *v) +@@ -209,6 +214,26 @@ static int c_show(struct seq_file *m, void *v) seq_printf(m, "CPU revision\t: %d\n\n", MIDR_REVISION(midr)); } @@ -46091,10 +46266,10 @@ index 0cd3453a6f41..bd3a9d0c7093 100644 } diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c -index 2695ece47eb0..6ecd12dfeb80 100644 +index a1a8b282b99b..802b12e53809 100644 --- a/drivers/bluetooth/btusb.c +++ b/drivers/bluetooth/btusb.c -@@ -455,6 +455,14 @@ static const struct usb_device_id blacklist_table[] = { +@@ -470,6 +470,14 @@ static const struct usb_device_id blacklist_table[] = { { USB_DEVICE(0x0bda, 0xb009), .driver_info = BTUSB_REALTEK }, { USB_DEVICE(0x2ff8, 0xb011), .driver_info = BTUSB_REALTEK }, @@ -47769,7 +47944,7 @@ index 1a7c43b43c6b..ee47667d0710 100644 return ret; } diff --git a/drivers/char/hw_random/iproc-rng200.c b/drivers/char/hw_random/iproc-rng200.c -index 01583faf9893..2a92ea658096 100644 +index 52c4aa66d837..423d11197921 100644 --- a/drivers/char/hw_random/iproc-rng200.c +++ b/drivers/char/hw_random/iproc-rng200.c @@ -29,6 +29,7 @@ @@ -47869,9 +48044,9 @@ index 01583faf9893..2a92ea658096 100644 static void iproc_rng200_cleanup(struct hwrng *rng) { struct iproc_rng200_dev *priv = to_rng_priv(rng); -@@ -195,11 +261,17 @@ static int iproc_rng200_probe(struct platform_device *pdev) - return PTR_ERR(priv->base); - } +@@ -197,11 +263,17 @@ static int iproc_rng200_probe(struct platform_device *pdev) + + dev_set_drvdata(dev, priv); - priv->rng.name = "iproc-rng200"; - priv->rng.read = iproc_rng200_read; @@ -47891,7 +48066,7 @@ index 01583faf9893..2a92ea658096 100644 ret = devm_hwrng_register(dev, &priv->rng); if (ret) { diff --git a/drivers/clk/Kconfig b/drivers/clk/Kconfig -index 4ae49eae4586..fbe74f5898bc 100644 +index df739665f206..37237d24377a 100644 --- a/drivers/clk/Kconfig +++ b/drivers/clk/Kconfig @@ -86,6 +86,12 @@ config COMMON_CLK_HI655X @@ -49019,7 +49194,7 @@ index 000000000000..9e2634465823 +MODULE_LICENSE("GPL v2"); +MODULE_ALIAS("platform:clk-hifiberry-dacpro"); diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c -index 3575afe16a57..5b40de004512 100644 +index 62572d59e7e3..958ec7e9af00 100644 --- a/drivers/clk/clk.c +++ b/drivers/clk/clk.c @@ -77,12 +77,14 @@ struct clk_core { @@ -49242,7 +49417,7 @@ index 3575afe16a57..5b40de004512 100644 /** * clk_get_parent - return the parent of a clk * @clk: the clk whose parent gets returned -@@ -3885,6 +4011,7 @@ __clk_register(struct device *dev, struct device_node *np, struct clk_hw *hw) +@@ -3888,6 +4014,7 @@ __clk_register(struct device *dev, struct device_node *np, struct clk_hw *hw) goto fail_parents; INIT_HLIST_HEAD(&core->clks); @@ -49251,10 +49426,10 @@ index 3575afe16a57..5b40de004512 100644 /* * Don't call clk_hw_create_clk() here because that would pin the diff --git a/drivers/dma/Kconfig b/drivers/dma/Kconfig -index 9cd7a7d86ca5..ea6ea555bb97 100644 +index 3361e2de1743..2ff34d205140 100644 --- a/drivers/dma/Kconfig +++ b/drivers/dma/Kconfig -@@ -696,6 +696,10 @@ config UNIPHIER_XDMAC +@@ -698,6 +698,10 @@ config UNIPHIER_XDMAC UniPhier platform. This DMA controller can transfer data from memory to memory, memory to peripheral and peripheral to memory. @@ -52357,7 +52532,7 @@ index 000000000000..89f5d6b353ab +MODULE_AUTHOR("Dave Stevenson "); +MODULE_DESCRIPTION("PWM GPIO driver"); diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c -index 3e01a3ac652d..f7f3c294c085 100644 +index d10f621085e2..f520399c38d2 100644 --- a/drivers/gpio/gpiolib.c +++ b/drivers/gpio/gpiolib.c @@ -51,6 +51,8 @@ @@ -52369,7 +52544,7 @@ index 3e01a3ac652d..f7f3c294c085 100644 /* Device and char device-related information */ static DEFINE_IDA(gpio_ida); static dev_t gpio_devt; -@@ -2462,8 +2464,8 @@ int gpiod_direction_output(struct gpio_desc *desc, int value) +@@ -2475,8 +2477,8 @@ int gpiod_direction_output(struct gpio_desc *desc, int value) value = !!value; /* GPIOs used for enabled IRQs shall not be set as output */ @@ -52380,7 +52555,7 @@ index 3e01a3ac652d..f7f3c294c085 100644 gpiod_err(desc, "%s: tried to set a GPIO tied to an IRQ as output\n", __func__); -@@ -3277,8 +3279,8 @@ int gpiochip_lock_as_irq(struct gpio_chip *gc, unsigned int offset) +@@ -3290,8 +3292,8 @@ int gpiochip_lock_as_irq(struct gpio_chip *gc, unsigned int offset) } /* To be valid for IRQ the line needs to be input or open drain */ @@ -52414,10 +52589,10 @@ index 495448f93d86..e58a5371852e 100644 obj-$(CONFIG_DRM_PHYTIUM) += phytium/ +obj-y += gud/ diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c -index 3ca1ee396e4c..84d6b621c028 100644 +index 3578e3b3536e..b59546d60005 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c -@@ -5027,7 +5027,6 @@ static void dm_disable_vblank(struct drm_crtc *crtc) +@@ -5029,7 +5029,6 @@ static void dm_disable_vblank(struct drm_crtc *crtc) static const struct drm_crtc_funcs amdgpu_dm_crtc_funcs = { .reset = dm_crtc_reset_state, .destroy = amdgpu_dm_crtc_destroy, @@ -52425,7 +52600,7 @@ index 3ca1ee396e4c..84d6b621c028 100644 .set_config = drm_atomic_helper_set_config, .page_flip = drm_atomic_helper_page_flip, .atomic_duplicate_state = dm_crtc_duplicate_state, -@@ -5511,25 +5510,6 @@ static int fill_hdr_info_packet(const struct drm_connector_state *state, +@@ -5513,25 +5512,6 @@ static int fill_hdr_info_packet(const struct drm_connector_state *state, return 0; } @@ -52451,7 +52626,7 @@ index 3ca1ee396e4c..84d6b621c028 100644 static int amdgpu_dm_connector_atomic_check(struct drm_connector *conn, struct drm_atomic_state *state) -@@ -5545,7 +5525,7 @@ amdgpu_dm_connector_atomic_check(struct drm_connector *conn, +@@ -5547,7 +5527,7 @@ amdgpu_dm_connector_atomic_check(struct drm_connector *conn, if (!crtc) return 0; @@ -52460,7 +52635,7 @@ index 3ca1ee396e4c..84d6b621c028 100644 struct dc_info_packet hdr_infopacket; ret = fill_hdr_info_packet(new_con_state, &hdr_infopacket); -@@ -5640,17 +5620,19 @@ static void dm_update_crtc_active_planes(struct drm_crtc *crtc, +@@ -5642,17 +5622,19 @@ static void dm_update_crtc_active_planes(struct drm_crtc *crtc, } static int dm_crtc_helper_atomic_check(struct drm_crtc *crtc, @@ -52484,7 +52659,7 @@ index 3ca1ee396e4c..84d6b621c028 100644 WARN_ON(1); return ret; } -@@ -5661,8 +5643,8 @@ static int dm_crtc_helper_atomic_check(struct drm_crtc *crtc, +@@ -5663,8 +5645,8 @@ static int dm_crtc_helper_atomic_check(struct drm_crtc *crtc, * planes are disabled, which is not supported by the hardware. And there is legacy * userspace which stops using the HW cursor altogether in response to the resulting EINVAL. */ @@ -52495,7 +52670,7 @@ index 3ca1ee396e4c..84d6b621c028 100644 return -EINVAL; /* In some use cases, like reset, no stream is attached */ -@@ -6564,9 +6546,7 @@ void amdgpu_dm_connector_init_helper(struct amdgpu_display_manager *dm, +@@ -6566,9 +6548,7 @@ void amdgpu_dm_connector_init_helper(struct amdgpu_display_manager *dm, if (connector_type == DRM_MODE_CONNECTOR_HDMIA || connector_type == DRM_MODE_CONNECTOR_DisplayPort || connector_type == DRM_MODE_CONNECTOR_eDP) { @@ -52506,7 +52681,7 @@ index 3ca1ee396e4c..84d6b621c028 100644 if (!aconnector->mst_port) drm_connector_attach_vrr_capable_property(&aconnector->base); -@@ -7818,7 +7798,7 @@ static void amdgpu_dm_atomic_commit_tail(struct drm_atomic_state *state) +@@ -7830,7 +7810,7 @@ static void amdgpu_dm_atomic_commit_tail(struct drm_atomic_state *state) dm_old_crtc_state->abm_level; hdr_changed = @@ -53010,7 +53185,7 @@ index 2c3c743df950..5524b2f9571a 100644 drm_connector_attach_encoder(connector, hdmi->bridge.encoder); diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c -index 7fc8e7000046..dce69bffb34c 100644 +index 0fde260b7edd..70065bb0c714 100644 --- a/drivers/gpu/drm/drm_atomic_helper.c +++ b/drivers/gpu/drm/drm_atomic_helper.c @@ -122,7 +122,8 @@ static int handle_conflicting_encoders(struct drm_atomic_state *state, @@ -53063,7 +53238,7 @@ index 7fc8e7000046..dce69bffb34c 100644 else if (funcs->disable) funcs->disable(crtc); else if (funcs->dpms) -@@ -1323,7 +1328,7 @@ static void drm_atomic_helper_commit_writebacks(struct drm_device *dev, +@@ -1332,7 +1337,7 @@ static void drm_atomic_helper_commit_writebacks(struct drm_device *dev, if (new_conn_state->writeback_job && new_conn_state->writeback_job->fb) { WARN_ON(connector->connector_type != DRM_MODE_CONNECTOR_WRITEBACK); @@ -53072,7 +53247,7 @@ index 7fc8e7000046..dce69bffb34c 100644 } } } -@@ -1368,7 +1373,7 @@ void drm_atomic_helper_commit_modeset_enables(struct drm_device *dev, +@@ -1377,7 +1382,7 @@ void drm_atomic_helper_commit_modeset_enables(struct drm_device *dev, DRM_DEBUG_ATOMIC("enabling [CRTC:%d:%s]\n", crtc->base.id, crtc->name); if (funcs->atomic_enable) @@ -53081,7 +53256,7 @@ index 7fc8e7000046..dce69bffb34c 100644 else if (funcs->commit) funcs->commit(crtc); } -@@ -2044,6 +2049,9 @@ crtc_or_fake_commit(struct drm_atomic_state *state, struct drm_crtc *crtc) +@@ -2053,6 +2058,9 @@ crtc_or_fake_commit(struct drm_atomic_state *state, struct drm_crtc *crtc) * should always call this function from their * &drm_mode_config_funcs.atomic_commit hook. * @@ -53091,7 +53266,7 @@ index 7fc8e7000046..dce69bffb34c 100644 * To be able to use this support drivers need to use a few more helper * functions. drm_atomic_helper_wait_for_dependencies() must be called before * actually committing the hardware state, and for nonblocking commits this call -@@ -2087,8 +2095,11 @@ int drm_atomic_helper_setup_commit(struct drm_atomic_state *state, +@@ -2096,8 +2104,11 @@ int drm_atomic_helper_setup_commit(struct drm_atomic_state *state, struct drm_plane *plane; struct drm_plane_state *old_plane_state, *new_plane_state; struct drm_crtc_commit *commit; @@ -53103,7 +53278,7 @@ index 7fc8e7000046..dce69bffb34c 100644 for_each_oldnew_crtc_in_state(state, crtc, old_crtc_state, new_crtc_state, i) { commit = kzalloc(sizeof(*commit), GFP_KERNEL); if (!commit) -@@ -2165,6 +2176,9 @@ int drm_atomic_helper_setup_commit(struct drm_atomic_state *state, +@@ -2174,6 +2185,9 @@ int drm_atomic_helper_setup_commit(struct drm_atomic_state *state, new_plane_state->commit = drm_crtc_commit_get(commit); } @@ -53113,7 +53288,7 @@ index 7fc8e7000046..dce69bffb34c 100644 return 0; } EXPORT_SYMBOL(drm_atomic_helper_setup_commit); -@@ -2517,7 +2531,7 @@ void drm_atomic_helper_commit_planes(struct drm_device *dev, +@@ -2526,7 +2540,7 @@ void drm_atomic_helper_commit_planes(struct drm_device *dev, if (active_only && !new_crtc_state->active) continue; @@ -53122,7 +53297,7 @@ index 7fc8e7000046..dce69bffb34c 100644 } for_each_oldnew_plane_in_state(old_state, plane, old_plane_state, new_plane_state, i) { -@@ -2575,7 +2589,7 @@ void drm_atomic_helper_commit_planes(struct drm_device *dev, +@@ -2584,7 +2598,7 @@ void drm_atomic_helper_commit_planes(struct drm_device *dev, if (active_only && !new_crtc_state->active) continue; @@ -53131,7 +53306,7 @@ index 7fc8e7000046..dce69bffb34c 100644 } } EXPORT_SYMBOL(drm_atomic_helper_commit_planes); -@@ -2613,7 +2627,7 @@ drm_atomic_helper_commit_planes_on_crtc(struct drm_crtc_state *old_crtc_state) +@@ -2622,7 +2636,7 @@ drm_atomic_helper_commit_planes_on_crtc(struct drm_crtc_state *old_crtc_state) crtc_funcs = crtc->helper_private; if (crtc_funcs && crtc_funcs->atomic_begin) @@ -53140,7 +53315,7 @@ index 7fc8e7000046..dce69bffb34c 100644 drm_for_each_plane_mask(plane, crtc->dev, plane_mask) { struct drm_plane_state *old_plane_state = -@@ -2639,7 +2653,7 @@ drm_atomic_helper_commit_planes_on_crtc(struct drm_crtc_state *old_crtc_state) +@@ -2648,7 +2662,7 @@ drm_atomic_helper_commit_planes_on_crtc(struct drm_crtc_state *old_crtc_state) } if (crtc_funcs && crtc_funcs->atomic_flush) @@ -53149,7 +53324,7 @@ index 7fc8e7000046..dce69bffb34c 100644 } EXPORT_SYMBOL(drm_atomic_helper_commit_planes_on_crtc); -@@ -3495,76 +3509,6 @@ int drm_atomic_helper_page_flip_target(struct drm_crtc *crtc, +@@ -3504,76 +3518,6 @@ int drm_atomic_helper_page_flip_target(struct drm_crtc *crtc, } EXPORT_SYMBOL(drm_atomic_helper_page_flip_target); @@ -53765,7 +53940,7 @@ index 74946690aba4..743e57c1b44f 100644 struct drm_simple_display_pipe *pipe; diff --git a/drivers/gpu/drm/exynos/exynos_drm_crtc.c b/drivers/gpu/drm/exynos/exynos_drm_crtc.c -index 1c03485676ef..4153f302de7c 100644 +index de9fadccf22e..d19e796c2061 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_crtc.c +++ b/drivers/gpu/drm/exynos/exynos_drm_crtc.c @@ -19,7 +19,7 @@ @@ -53786,7 +53961,7 @@ index 1c03485676ef..4153f302de7c 100644 { struct exynos_drm_crtc *exynos_crtc = to_exynos_crtc(crtc); -@@ -49,21 +49,23 @@ static void exynos_drm_crtc_atomic_disable(struct drm_crtc *crtc, +@@ -48,21 +48,23 @@ static void exynos_drm_crtc_atomic_disable(struct drm_crtc *crtc, } static int exynos_crtc_atomic_check(struct drm_crtc *crtc, @@ -53814,7 +53989,7 @@ index 1c03485676ef..4153f302de7c 100644 { struct exynos_drm_crtc *exynos_crtc = to_exynos_crtc(crtc); -@@ -72,7 +74,7 @@ static void exynos_crtc_atomic_begin(struct drm_crtc *crtc, +@@ -71,7 +73,7 @@ static void exynos_crtc_atomic_begin(struct drm_crtc *crtc, } static void exynos_crtc_atomic_flush(struct drm_crtc *crtc, @@ -56492,10 +56667,10 @@ index 5ec9770e401e..4b73ed6a0e98 100644 static const struct drm_plane_helper_funcs ingenic_drm_plane_helper_funcs = { diff --git a/drivers/gpu/drm/mediatek/mtk_drm_crtc.c b/drivers/gpu/drm/mediatek/mtk_drm_crtc.c -index e83b1c406b96..ec63151d37d6 100644 +index d08827803a32..d92e25f706bf 100644 --- a/drivers/gpu/drm/mediatek/mtk_drm_crtc.c +++ b/drivers/gpu/drm/mediatek/mtk_drm_crtc.c -@@ -517,7 +517,7 @@ void mtk_drm_crtc_async_update(struct drm_crtc *crtc, struct drm_plane *plane, +@@ -522,7 +522,7 @@ void mtk_drm_crtc_async_update(struct drm_crtc *crtc, struct drm_plane *plane, } static void mtk_drm_crtc_atomic_enable(struct drm_crtc *crtc, @@ -56504,7 +56679,7 @@ index e83b1c406b96..ec63151d37d6 100644 { struct mtk_drm_crtc *mtk_crtc = to_mtk_crtc(crtc); struct mtk_ddp_comp *comp = mtk_crtc->ddp_comp[0]; -@@ -542,7 +542,7 @@ static void mtk_drm_crtc_atomic_enable(struct drm_crtc *crtc, +@@ -547,7 +547,7 @@ static void mtk_drm_crtc_atomic_enable(struct drm_crtc *crtc, } static void mtk_drm_crtc_atomic_disable(struct drm_crtc *crtc, @@ -56513,7 +56688,7 @@ index e83b1c406b96..ec63151d37d6 100644 { struct mtk_drm_crtc *mtk_crtc = to_mtk_crtc(crtc); struct mtk_ddp_comp *comp = mtk_crtc->ddp_comp[0]; -@@ -575,24 +575,24 @@ static void mtk_drm_crtc_atomic_disable(struct drm_crtc *crtc, +@@ -580,29 +580,29 @@ static void mtk_drm_crtc_atomic_disable(struct drm_crtc *crtc, } static void mtk_drm_crtc_atomic_begin(struct drm_crtc *crtc, @@ -56523,6 +56698,7 @@ index e83b1c406b96..ec63151d37d6 100644 - struct mtk_crtc_state *state = to_mtk_crtc_state(crtc->state); + struct mtk_crtc_state *crtc_state = to_mtk_crtc_state(crtc->state); struct mtk_drm_crtc *mtk_crtc = to_mtk_crtc(crtc); + unsigned long flags; - if (mtk_crtc->event && state->base.event) + if (mtk_crtc->event && crtc_state->base.event) @@ -56533,9 +56709,13 @@ index e83b1c406b96..ec63151d37d6 100644 + if (crtc_state->base.event) { + crtc_state->base.event->pipe = drm_crtc_index(crtc); WARN_ON(drm_crtc_vblank_get(crtc) != 0); + + spin_lock_irqsave(&crtc->dev->event_lock, flags); - mtk_crtc->event = state->base.event; -- state->base.event = NULL; + mtk_crtc->event = crtc_state->base.event; + spin_unlock_irqrestore(&crtc->dev->event_lock, flags); + +- state->base.event = NULL; + crtc_state->base.event = NULL; } } @@ -56546,7 +56726,7 @@ index e83b1c406b96..ec63151d37d6 100644 { struct mtk_drm_crtc *mtk_crtc = to_mtk_crtc(crtc); int i; -@@ -614,7 +614,6 @@ static const struct drm_crtc_funcs mtk_crtc_funcs = { +@@ -624,7 +624,6 @@ static const struct drm_crtc_funcs mtk_crtc_funcs = { .reset = mtk_drm_crtc_reset, .atomic_duplicate_state = mtk_drm_crtc_duplicate_state, .atomic_destroy_state = mtk_drm_crtc_destroy_state, @@ -56613,7 +56793,7 @@ index 2854272dc2d9..d70616da8ce2 100644 struct meson_crtc *meson_crtc = to_meson_crtc(crtc); struct meson_drm *priv = meson_crtc->priv; diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c -index 5afb3c544653..ad92cf8166e9 100644 +index 4c64e2d4f650..356174a88c79 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c @@ -11,6 +11,7 @@ @@ -57487,7 +57667,7 @@ index 4b92c6341490..3f0c11fa60a5 100644 } diff --git a/drivers/gpu/drm/panel/panel-simple.c b/drivers/gpu/drm/panel/panel-simple.c -index 1a87cc445b5e..f25aad3fa08d 100644 +index ee01b61a6baf..d4b32feea1a6 100644 --- a/drivers/gpu/drm/panel/panel-simple.c +++ b/drivers/gpu/drm/panel/panel-simple.c @@ -112,8 +112,6 @@ struct panel_simple { @@ -57539,7 +57719,7 @@ index 1a87cc445b5e..f25aad3fa08d 100644 ddc = of_parse_phandle(dev->of_node, "ddc-i2c-bus", 0); if (ddc) { panel->ddc = of_find_i2c_adapter_by_node(ddc); -@@ -1940,6 +1932,32 @@ static const struct panel_desc friendlyarm_hd702e = { +@@ -1942,6 +1934,32 @@ static const struct panel_desc friendlyarm_hd702e = { }, }; @@ -57572,7 +57752,7 @@ index 1a87cc445b5e..f25aad3fa08d 100644 static const struct drm_display_mode giantplus_gpg482739qs5_mode = { .clock = 9000, .hdisplay = 480, -@@ -2094,6 +2112,38 @@ static const struct panel_desc innolux_at043tn24 = { +@@ -2097,6 +2115,38 @@ static const struct panel_desc innolux_at043tn24 = { .bus_flags = DRM_BUS_FLAG_DE_HIGH | DRM_BUS_FLAG_PIXDATA_DRIVE_POSEDGE, }; @@ -57611,7 +57791,7 @@ index 1a87cc445b5e..f25aad3fa08d 100644 static const struct drm_display_mode innolux_at070tn92_mode = { .clock = 33333, .hdisplay = 800, -@@ -3191,6 +3241,31 @@ static const struct panel_desc qd43003c0_40 = { +@@ -3196,6 +3246,31 @@ static const struct panel_desc qd43003c0_40 = { .bus_format = MEDIA_BUS_FMT_RGB888_1X24, }; @@ -57643,7 +57823,7 @@ index 1a87cc445b5e..f25aad3fa08d 100644 static const struct display_timing rocktech_rk070er9427_timing = { .pixelclock = { 26400000, 33300000, 46800000 }, .hactive = { 800, 800, 800 }, -@@ -4061,6 +4136,9 @@ static const struct of_device_id platform_of_match[] = { +@@ -4066,6 +4141,9 @@ static const struct of_device_id platform_of_match[] = { }, { .compatible = "friendlyarm,hd702e", .data = &friendlyarm_hd702e, @@ -57653,7 +57833,7 @@ index 1a87cc445b5e..f25aad3fa08d 100644 }, { .compatible = "giantplus,gpg482739qs5", .data = &giantplus_gpg482739qs5 -@@ -4079,6 +4157,9 @@ static const struct of_device_id platform_of_match[] = { +@@ -4084,6 +4162,9 @@ static const struct of_device_id platform_of_match[] = { }, { .compatible = "innolux,at043tn24", .data = &innolux_at043tn24, @@ -57663,7 +57843,7 @@ index 1a87cc445b5e..f25aad3fa08d 100644 }, { .compatible = "innolux,at070tn92", .data = &innolux_at070tn92, -@@ -4208,6 +4289,9 @@ static const struct of_device_id platform_of_match[] = { +@@ -4213,6 +4294,9 @@ static const struct of_device_id platform_of_match[] = { }, { .compatible = "qiaodian,qd43003c0-40", .data = &qd43003c0_40, @@ -57782,10 +57962,10 @@ index 065604c5837d..41a2f8d3e992 100644 /* ----------------------------------------------------------------------------- diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c -index af98bfcde518..64c7b17e3c90 100644 +index 682d78fab9a5..2434643f362e 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c -@@ -693,7 +693,7 @@ static void rockchip_drm_set_win_enabled(struct drm_crtc *crtc, bool enabled) +@@ -701,7 +701,7 @@ static void rockchip_drm_set_win_enabled(struct drm_crtc *crtc, bool enabled) } static void vop_crtc_atomic_disable(struct drm_crtc *crtc, @@ -57794,7 +57974,7 @@ index af98bfcde518..64c7b17e3c90 100644 { struct vop *vop = to_vop(crtc); -@@ -1247,8 +1247,10 @@ static void vop_crtc_gamma_set(struct vop *vop, struct drm_crtc *crtc, +@@ -1255,8 +1255,10 @@ static void vop_crtc_gamma_set(struct vop *vop, struct drm_crtc *crtc, } static void vop_crtc_atomic_begin(struct drm_crtc *crtc, @@ -57806,7 +57986,7 @@ index af98bfcde518..64c7b17e3c90 100644 struct vop *vop = to_vop(crtc); /* -@@ -1261,8 +1263,10 @@ static void vop_crtc_atomic_begin(struct drm_crtc *crtc, +@@ -1269,8 +1271,10 @@ static void vop_crtc_atomic_begin(struct drm_crtc *crtc, } static void vop_crtc_atomic_enable(struct drm_crtc *crtc, @@ -57818,7 +57998,7 @@ index af98bfcde518..64c7b17e3c90 100644 struct vop *vop = to_vop(crtc); const struct vop_data *vop_data = vop->data; struct rockchip_crtc_state *s = to_rockchip_crtc_state(crtc->state); -@@ -1414,8 +1418,10 @@ static void vop_wait_for_irq_handler(struct vop *vop) +@@ -1422,8 +1426,10 @@ static void vop_wait_for_irq_handler(struct vop *vop) } static int vop_crtc_atomic_check(struct drm_crtc *crtc, @@ -57830,7 +58010,7 @@ index af98bfcde518..64c7b17e3c90 100644 struct vop *vop = to_vop(crtc); struct drm_plane *plane; struct drm_plane_state *plane_state; -@@ -1459,8 +1465,10 @@ static int vop_crtc_atomic_check(struct drm_crtc *crtc, +@@ -1467,8 +1473,10 @@ static int vop_crtc_atomic_check(struct drm_crtc *crtc, } static void vop_crtc_atomic_flush(struct drm_crtc *crtc, @@ -57842,7 +58022,7 @@ index af98bfcde518..64c7b17e3c90 100644 struct drm_atomic_state *old_state = old_crtc_state->state; struct drm_plane_state *old_plane_state, *new_plane_state; struct vop *vop = to_vop(crtc); -@@ -1637,7 +1645,6 @@ static const struct drm_crtc_funcs vop_crtc_funcs = { +@@ -1649,7 +1657,6 @@ static const struct drm_crtc_funcs vop_crtc_funcs = { .disable_vblank = vop_crtc_disable_vblank, .set_crc_source = vop_crtc_set_crc_source, .verify_crc_source = vop_crtc_verify_crc_source, @@ -68068,7 +68248,7 @@ index 5259ff2825f9..904f62f3bfc1 100644 struct drm_pending_vblank_event *event = crtc->state->event; diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h -index 1d1306a6004e..15ceb2f2b888 100644 +index 6273ab615af8..66bbcb34e3a3 100644 --- a/drivers/hid/hid-ids.h +++ b/drivers/hid/hid-ids.h @@ -221,6 +221,9 @@ @@ -68081,7 +68261,7 @@ index 1d1306a6004e..15ceb2f2b888 100644 #define USB_VENDOR_ID_BELKIN 0x050d #define USB_DEVICE_ID_FLIP_KVM 0x3201 -@@ -1280,6 +1283,9 @@ +@@ -1286,6 +1289,9 @@ #define USB_VENDOR_ID_XAT 0x2505 #define USB_DEVICE_ID_XAT_CSR 0x0220 @@ -68092,10 +68272,10 @@ index 1d1306a6004e..15ceb2f2b888 100644 #define USB_DEVICE_ID_XIN_MO_DUAL_ARCADE 0x05e1 #define USB_DEVICE_ID_THT_2P_ARCADE 0x75e1 diff --git a/drivers/hid/hid-quirks.c b/drivers/hid/hid-quirks.c -index 9f1fcbea19eb..3a80a5ed724b 100644 +index 1b3a83fa7616..ba48be0785bc 100644 --- a/drivers/hid/hid-quirks.c +++ b/drivers/hid/hid-quirks.c -@@ -41,6 +41,7 @@ static const struct hid_device_id hid_quirks[] = { +@@ -42,6 +42,7 @@ static const struct hid_device_id hid_quirks[] = { { HID_USB_DEVICE(USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_CS682), HID_QUIRK_NOGET }, { HID_USB_DEVICE(USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_CS692), HID_QUIRK_NOGET }, { HID_USB_DEVICE(USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_UC100KM), HID_QUIRK_NOGET }, @@ -68103,7 +68283,7 @@ index 9f1fcbea19eb..3a80a5ed724b 100644 { HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_MULTI_TOUCH), HID_QUIRK_MULTI_INPUT }, { HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_PIXART_USB_OPTICAL_MOUSE), HID_QUIRK_ALWAYS_POLL }, { HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_PIXART_USB_OPTICAL_MOUSE2), HID_QUIRK_ALWAYS_POLL }, -@@ -197,6 +198,7 @@ static const struct hid_device_id hid_quirks[] = { +@@ -200,6 +201,7 @@ static const struct hid_device_id hid_quirks[] = { { HID_USB_DEVICE(USB_VENDOR_ID_WISEGROUP, USB_DEVICE_ID_QUAD_USB_JOYPAD), HID_QUIRK_NOGET | HID_QUIRK_MULTI_INPUT }, { HID_USB_DEVICE(USB_VENDOR_ID_XIN_MO, USB_DEVICE_ID_XIN_MO_DUAL_ARCADE), HID_QUIRK_MULTI_INPUT }, { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_GROUP_AUDIO), HID_QUIRK_NOGET }, @@ -68694,7 +68874,7 @@ index 000000000000..8483b6ce1db8 +MODULE_DESCRIPTION("Raspberry Pi PoE HAT fan driver"); +MODULE_LICENSE("GPL"); diff --git a/drivers/i2c/busses/Kconfig b/drivers/i2c/busses/Kconfig -index 5763a1e9360b..e5582930c720 100644 +index d3f48f6160ff..2d9ce47aa632 100644 --- a/drivers/i2c/busses/Kconfig +++ b/drivers/i2c/busses/Kconfig @@ -9,6 +9,25 @@ menu "I2C Hardware Bus support" @@ -70434,7 +70614,7 @@ index 39761d190545..9766d8b50778 100644 MODULE_AUTHOR("Lubomir Rintel "); MODULE_DESCRIPTION("BCM2835 mailbox IPC driver"); diff --git a/drivers/mailbox/mailbox.c b/drivers/mailbox/mailbox.c -index 4229b9b5da98..2358ec3431ad 100644 +index adf36c05fa43..7a73d4593f37 100644 --- a/drivers/mailbox/mailbox.c +++ b/drivers/mailbox/mailbox.c @@ -82,12 +82,9 @@ static void msg_submit(struct mbox_chan *chan) @@ -84732,10 +84912,10 @@ index 857ef4ace6e9..deae75ea3c44 100644 help Choose if you would like to have SPI interface support for Sony CXD2880. diff --git a/drivers/media/usb/dvb-usb-v2/rtl28xxu.c b/drivers/media/usb/dvb-usb-v2/rtl28xxu.c -index c278b9b0f102..05f2297cf583 100644 +index 70a2f0494216..d8be979ea985 100644 --- a/drivers/media/usb/dvb-usb-v2/rtl28xxu.c +++ b/drivers/media/usb/dvb-usb-v2/rtl28xxu.c -@@ -1953,6 +1953,10 @@ static const struct usb_device_id rtl28xxu_id_table[] = { +@@ -1973,6 +1973,10 @@ static const struct usb_device_id rtl28xxu_id_table[] = { &rtl28xxu_props, "Compro VideoMate U650F", NULL) }, { DVB_USB_DEVICE(USB_VID_KWORLD_2, 0xd394, &rtl28xxu_props, "MaxMedia HU394-T", NULL) }, @@ -84930,7 +85110,7 @@ index fbf0dcb313c8..bf3aa9252458 100644 EXPORT_SYMBOL_GPL(v4l2_subdev_link_validate_default); diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig -index 3f9f84f9f288..b515de80b6c1 100644 +index 15680c3c9279..947c2ab6fff3 100644 --- a/drivers/mfd/Kconfig +++ b/drivers/mfd/Kconfig @@ -11,6 +11,14 @@ config MFD_CORE @@ -84949,10 +85129,10 @@ index 3f9f84f9f288..b515de80b6c1 100644 tristate "AMD CS5535 and CS5536 southbridge core functions" select MFD_CORE diff --git a/drivers/mfd/Makefile b/drivers/mfd/Makefile -index ce8f1c0583d5..dfbfa7b7f064 100644 +index fb1df45a301e..b2eb091e9703 100644 --- a/drivers/mfd/Makefile +++ b/drivers/mfd/Makefile -@@ -264,6 +264,7 @@ obj-$(CONFIG_MFD_ROHM_BD71828) += rohm-bd71828.o +@@ -263,6 +263,7 @@ obj-$(CONFIG_MFD_ROHM_BD71828) += rohm-bd71828.o obj-$(CONFIG_MFD_ROHM_BD718XX) += rohm-bd718x7.o obj-$(CONFIG_MFD_STMFX) += stmfx.o obj-$(CONFIG_MFD_KHADAS_MCU) += khadas-mcu.o @@ -85154,7 +85334,7 @@ index 000000000000..6cfd63e5e8b8 +MODULE_LICENSE("GPL"); + diff --git a/drivers/misc/Kconfig b/drivers/misc/Kconfig -index 140716083ab8..43147f3c1fcc 100644 +index 890790145977..f938fe5fc971 100644 --- a/drivers/misc/Kconfig +++ b/drivers/misc/Kconfig @@ -9,6 +9,14 @@ config SENSORS_LIS3LV02D @@ -85173,7 +85353,7 @@ index 140716083ab8..43147f3c1fcc 100644 tristate "Analog Devices Digital Potentiometers" depends on (I2C || SPI) && SYSFS diff --git a/drivers/misc/Makefile b/drivers/misc/Makefile -index 3615763234a6..b8803cada725 100644 +index 64fb645bdc91..c52637c0d5c9 100644 --- a/drivers/misc/Makefile +++ b/drivers/misc/Makefile @@ -11,6 +11,7 @@ obj-$(CONFIG_AD525X_DPOT_SPI) += ad525x_dpot-spi.o @@ -86146,7 +86326,7 @@ index 000000000000..f1a7f6a3e966 +MODULE_DESCRIPTION("Device driver for BCM2835's secondary memory interface"); +MODULE_AUTHOR("Luke Wren "); diff --git a/drivers/mmc/core/block.c b/drivers/mmc/core/block.c -index 6622e3262187..e27fd8e711cc 100644 +index 41d98d7198be..3a4f4ef7c984 100644 --- a/drivers/mmc/core/block.c +++ b/drivers/mmc/core/block.c @@ -165,6 +165,13 @@ static DEFINE_MUTEX(open_lock); @@ -86163,7 +86343,7 @@ index 6622e3262187..e27fd8e711cc 100644 static inline int mmc_blk_part_switch(struct mmc_card *card, unsigned int part_type); static void mmc_blk_rw_rq_prep(struct mmc_queue_req *mqrq, -@@ -2901,6 +2908,7 @@ static int mmc_blk_probe(struct mmc_card *card) +@@ -2909,6 +2916,7 @@ static int mmc_blk_probe(struct mmc_card *card) { struct mmc_blk_data *md, *part_md; char cap_str[10]; @@ -86171,7 +86351,7 @@ index 6622e3262187..e27fd8e711cc 100644 /* * Check that the card supports the command class(es) we need. -@@ -2908,7 +2916,16 @@ static int mmc_blk_probe(struct mmc_card *card) +@@ -2916,7 +2924,16 @@ static int mmc_blk_probe(struct mmc_card *card) if (!(card->csd.cmdclass & CCC_BLOCK_READ)) return -ENODEV; @@ -86189,7 +86369,7 @@ index 6622e3262187..e27fd8e711cc 100644 card->complete_wq = alloc_workqueue("mmc_complete", WQ_MEM_RECLAIM | WQ_HIGHPRI, 0); -@@ -2923,9 +2940,14 @@ static int mmc_blk_probe(struct mmc_card *card) +@@ -2931,9 +2948,14 @@ static int mmc_blk_probe(struct mmc_card *card) string_get_size((u64)get_capacity(md->disk), 512, STRING_UNITS_2, cap_str, sizeof(cap_str)); @@ -86207,10 +86387,10 @@ index 6622e3262187..e27fd8e711cc 100644 if (mmc_blk_alloc_parts(card, md)) goto out; diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c -index 8f2465394253..f13832ad1003 100644 +index d5ca59bd1c99..2105d970bfc2 100644 --- a/drivers/mmc/core/core.c +++ b/drivers/mmc/core/core.c -@@ -1885,7 +1885,8 @@ EXPORT_SYMBOL(mmc_erase); +@@ -1890,7 +1890,8 @@ EXPORT_SYMBOL(mmc_erase); int mmc_can_erase(struct mmc_card *card) { @@ -86221,10 +86401,10 @@ index 8f2465394253..f13832ad1003 100644 return 0; } diff --git a/drivers/mmc/core/quirks.h b/drivers/mmc/core/quirks.h -index c8c0f50a2076..20380a8fdba2 100644 +index afe8d8c5fa8a..a5b4ac9f4c91 100644 --- a/drivers/mmc/core/quirks.h +++ b/drivers/mmc/core/quirks.h -@@ -105,6 +105,14 @@ static const struct mmc_fixup __maybe_unused mmc_blk_fixups[] = { +@@ -119,6 +119,14 @@ static const struct mmc_fixup __maybe_unused mmc_blk_fixups[] = { MMC_FIXUP(CID_NAME_ANY, CID_MANFID_SANDISK_SD, 0x5344, add_quirk_sd, MMC_QUIRK_BROKEN_SD_DISCARD), @@ -86240,7 +86420,7 @@ index c8c0f50a2076..20380a8fdba2 100644 }; diff --git a/drivers/mmc/host/Kconfig b/drivers/mmc/host/Kconfig -index 82e1fbd6b2ff..66b2a205910c 100644 +index a5b2bf0e40cc..60bbe3eeffe4 100644 --- a/drivers/mmc/host/Kconfig +++ b/drivers/mmc/host/Kconfig @@ -5,6 +5,45 @@ @@ -90111,7 +90291,7 @@ index b9eb2ec61a83..404870e6b759 100644 .reset = sdhci_reset, .set_uhs_signaling = sdhci_set_uhs_signaling, diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c -index 133f0d376480..3b6b396219db 100644 +index bad01cc6823f..236bc90c5329 100644 --- a/drivers/mmc/host/sdhci.c +++ b/drivers/mmc/host/sdhci.c @@ -41,7 +41,7 @@ @@ -90248,7 +90428,7 @@ index f6ca01da141d..45ea07829b8c 100644 /* misc. configuration */ #define MAX_NUM_OF_FS_RULES 16 diff --git a/drivers/net/ethernet/broadcom/genet/bcmmii.c b/drivers/net/ethernet/broadcom/genet/bcmmii.c -index 4b875838a646..59cc972b080a 100644 +index 2b0538f2af63..29f898bb5d02 100644 --- a/drivers/net/ethernet/broadcom/genet/bcmmii.c +++ b/drivers/net/ethernet/broadcom/genet/bcmmii.c @@ -286,6 +286,8 @@ int bcmgenet_mii_probe(struct net_device *dev) @@ -90261,7 +90441,7 @@ index 4b875838a646..59cc972b080a 100644 /* Initialize link state variables that bcmgenet_mii_setup() uses */ priv->old_link = -1; diff --git a/drivers/net/phy/broadcom.c b/drivers/net/phy/broadcom.c -index 0cde17bd743f..2122c7171320 100644 +index a664faa8f01f..5f138488904a 100644 --- a/drivers/net/phy/broadcom.c +++ b/drivers/net/phy/broadcom.c @@ -83,6 +83,11 @@ static int bcm54210e_config_init(struct phy_device *phydev) @@ -90328,7 +90508,7 @@ index 0cde17bd743f..2122c7171320 100644 bcm_phy_write_exp(phydev, BCM_EXP_MULTICOLOR, val); return 0; -@@ -783,12 +793,20 @@ static struct phy_driver broadcom_drivers[] = { +@@ -794,12 +804,20 @@ static struct phy_driver broadcom_drivers[] = { .config_intr = bcm_phy_config_intr, }, { .phy_id = PHY_ID_BCM54210E, @@ -90350,7 +90530,7 @@ index 0cde17bd743f..2122c7171320 100644 }, { .phy_id = PHY_ID_BCM5461, .phy_id_mask = 0xfffffff0, -@@ -945,7 +963,8 @@ module_phy_driver(broadcom_drivers); +@@ -958,7 +976,8 @@ module_phy_driver(broadcom_drivers); static struct mdio_device_id __maybe_unused broadcom_tbl[] = { { PHY_ID_BCM5411, 0xfffffff0 }, { PHY_ID_BCM5421, 0xfffffff0 }, @@ -90603,7 +90783,7 @@ index 667984efeb3b..607703748279 100644 buf = kmalloc(maxp, GFP_KERNEL); if (buf) { diff --git a/drivers/net/usb/r8152.c b/drivers/net/usb/r8152.c -index 84f44d00d4d9..b481ee3382fe 100644 +index 08a457b54445..7276c3afb8fb 100644 --- a/drivers/net/usb/r8152.c +++ b/drivers/net/usb/r8152.c @@ -26,9 +26,10 @@ @@ -91202,7 +91382,7 @@ index 84f44d00d4d9..b481ee3382fe 100644 if (test_bit(RTL8152_UNPLUG, &tp->flags)) return; -@@ -2614,7 +2774,7 @@ static netdev_tx_t rtl8152_start_xmit(struct sk_buff *skb, +@@ -2617,7 +2777,7 @@ static netdev_tx_t rtl8152_start_xmit(struct sk_buff *skb, static void r8152b_reset_packet_filter(struct r8152 *tp) { @@ -91211,7 +91391,7 @@ index 84f44d00d4d9..b481ee3382fe 100644 ocp_data = ocp_read_word(tp, MCU_TYPE_PLA, PLA_FMC); ocp_data &= ~FMC_FCR_MCU_EN; -@@ -2625,45 +2785,78 @@ static void r8152b_reset_packet_filter(struct r8152 *tp) +@@ -2628,45 +2788,78 @@ static void r8152b_reset_packet_filter(struct r8152 *tp) static void rtl8152_nic_reset(struct r8152 *tp) { @@ -91312,7 +91492,7 @@ index 84f44d00d4d9..b481ee3382fe 100644 } static void rxdy_gated_en(struct r8152 *tp, bool enable) -@@ -2761,6 +2954,29 @@ static int rtl_stop_rx(struct r8152 *tp) +@@ -2764,6 +2957,29 @@ static int rtl_stop_rx(struct r8152 *tp) return 0; } @@ -91342,7 +91522,7 @@ index 84f44d00d4d9..b481ee3382fe 100644 static inline void r8153b_rx_agg_chg_indicate(struct r8152 *tp) { ocp_write_byte(tp, MCU_TYPE_USB, USB_UPT_RXDMA_OWN, -@@ -2780,6 +2996,7 @@ static int rtl_enable(struct r8152 *tp) +@@ -2783,6 +2999,7 @@ static int rtl_enable(struct r8152 *tp) switch (tp->version) { case RTL_VER_08: case RTL_VER_09: @@ -91350,7 +91530,7 @@ index 84f44d00d4d9..b481ee3382fe 100644 r8153b_rx_agg_chg_indicate(tp); break; default: -@@ -2817,6 +3034,7 @@ static void r8153_set_rx_early_timeout(struct r8152 *tp) +@@ -2820,6 +3037,7 @@ static void r8153_set_rx_early_timeout(struct r8152 *tp) case RTL_VER_08: case RTL_VER_09: @@ -91358,7 +91538,7 @@ index 84f44d00d4d9..b481ee3382fe 100644 /* The RTL8153B uses USB_RX_EXTRA_AGGR_TMR for rx timeout * primarily. For USB_RX_EARLY_TIMEOUT, we fix it to 128ns. */ -@@ -2826,6 +3044,18 @@ static void r8153_set_rx_early_timeout(struct r8152 *tp) +@@ -2829,6 +3047,18 @@ static void r8153_set_rx_early_timeout(struct r8152 *tp) ocp_data); break; @@ -91377,7 +91557,7 @@ index 84f44d00d4d9..b481ee3382fe 100644 default: break; } -@@ -2845,8 +3075,19 @@ static void r8153_set_rx_early_size(struct r8152 *tp) +@@ -2848,8 +3078,19 @@ static void r8153_set_rx_early_size(struct r8152 *tp) break; case RTL_VER_08: case RTL_VER_09: @@ -91397,7 +91577,7 @@ index 84f44d00d4d9..b481ee3382fe 100644 break; default: WARN_ON_ONCE(1); -@@ -2856,6 +3097,8 @@ static void r8153_set_rx_early_size(struct r8152 *tp) +@@ -2859,6 +3100,8 @@ static void r8153_set_rx_early_size(struct r8152 *tp) static int rtl8153_enable(struct r8152 *tp) { @@ -91406,7 +91586,7 @@ index 84f44d00d4d9..b481ee3382fe 100644 if (test_bit(RTL8152_UNPLUG, &tp->flags)) return -ENODEV; -@@ -2864,15 +3107,20 @@ static int rtl8153_enable(struct r8152 *tp) +@@ -2867,15 +3110,20 @@ static int rtl8153_enable(struct r8152 *tp) r8153_set_rx_early_timeout(tp); r8153_set_rx_early_size(tp); @@ -91429,7 +91609,7 @@ index 84f44d00d4d9..b481ee3382fe 100644 } return rtl_enable(tp); -@@ -2937,12 +3185,40 @@ static void rtl_rx_vlan_en(struct r8152 *tp, bool enable) +@@ -2940,12 +3188,40 @@ static void rtl_rx_vlan_en(struct r8152 *tp, bool enable) { u32 ocp_data; @@ -91476,7 +91656,7 @@ index 84f44d00d4d9..b481ee3382fe 100644 } static int rtl8152_set_features(struct net_device *dev, -@@ -3035,6 +3311,40 @@ static void __rtl_set_wol(struct r8152 *tp, u32 wolopts) +@@ -3038,6 +3314,40 @@ static void __rtl_set_wol(struct r8152 *tp, u32 wolopts) device_set_wakeup_enable(&tp->udev->dev, false); } @@ -91517,7 +91697,7 @@ index 84f44d00d4d9..b481ee3382fe 100644 static void r8153_u1u2en(struct r8152 *tp, bool enable) { u8 u1u2[8]; -@@ -3094,6 +3404,9 @@ static void r8153b_ups_flags(struct r8152 *tp) +@@ -3097,6 +3407,9 @@ static void r8153b_ups_flags(struct r8152 *tp) if (tp->ups_info.eee_cmod_lv) ups_flags |= UPS_FLAGS_EEE_CMOD_LV_EN; @@ -91527,7 +91707,7 @@ index 84f44d00d4d9..b481ee3382fe 100644 if (tp->ups_info._10m_ckdiv) ups_flags |= UPS_FLAGS_EN_10M_CKDIV; -@@ -3144,10 +3457,104 @@ static void r8153b_ups_flags(struct r8152 *tp) +@@ -3147,10 +3460,104 @@ static void r8153b_ups_flags(struct r8152 *tp) ocp_write_dword(tp, MCU_TYPE_USB, USB_UPS_FLAGS, ups_flags); } @@ -91633,7 +91813,7 @@ index 84f44d00d4d9..b481ee3382fe 100644 if (enable) { sram_write(tp, 0x8045, 0); /* 10M abiq&ldvbias */ sram_write(tp, 0x804d, 0x1222); /* 100M short abiq&ldvbias */ -@@ -3158,11 +3565,7 @@ static void r8153b_green_en(struct r8152 *tp, bool enable) +@@ -3161,11 +3568,7 @@ static void r8153b_green_en(struct r8152 *tp, bool enable) sram_write(tp, 0x805d, 0x2444); /* 1000M short abiq&ldvbias */ } @@ -91646,7 +91826,7 @@ index 84f44d00d4d9..b481ee3382fe 100644 } static u16 r8153_phy_status(struct r8152 *tp, u16 desired) -@@ -3199,61 +3602,137 @@ static void r8153b_ups_en(struct r8152 *tp, bool enable) +@@ -3202,61 +3605,137 @@ static void r8153b_ups_en(struct r8152 *tp, bool enable) ocp_data |= UPS_EN | USP_PREWAKE | PHASE2_EN; ocp_write_byte(tp, MCU_TYPE_USB, USB_POWER_CUT, ocp_data); @@ -91824,7 +92004,7 @@ index 84f44d00d4d9..b481ee3382fe 100644 ocp_write_word(tp, MCU_TYPE_USB, USB_MISC_0, ocp_data); } -@@ -3365,7 +3844,39 @@ static void rtl8153b_runtime_enable(struct r8152 *tp, bool enable) +@@ -3368,7 +3847,39 @@ static void rtl8153b_runtime_enable(struct r8152 *tp, bool enable) r8153b_ups_en(tp, false); r8153_queue_wake(tp, false); rtl_runtime_suspend_enable(tp, false); @@ -91865,7 +92045,7 @@ index 84f44d00d4d9..b481ee3382fe 100644 r8153b_u1u2en(tp, true); } } -@@ -3390,14 +3901,19 @@ static void r8153_teredo_off(struct r8152 *tp) +@@ -3393,14 +3904,19 @@ static void r8153_teredo_off(struct r8152 *tp) case RTL_VER_08: case RTL_VER_09: @@ -91888,7 +92068,7 @@ index 84f44d00d4d9..b481ee3382fe 100644 } ocp_write_word(tp, MCU_TYPE_PLA, PLA_WDT6_CTRL, WDT6_SET_MODE); -@@ -3432,6 +3948,12 @@ static void rtl_clear_bp(struct r8152 *tp, u16 type) +@@ -3435,6 +3951,12 @@ static void rtl_clear_bp(struct r8152 *tp, u16 type) break; case RTL_VER_08: case RTL_VER_09: @@ -91901,7 +92081,7 @@ index 84f44d00d4d9..b481ee3382fe 100644 default: if (type == MCU_TYPE_USB) { ocp_write_word(tp, MCU_TYPE_USB, USB_BP2_EN, 0); -@@ -3464,65 +3986,238 @@ static void rtl_clear_bp(struct r8152 *tp, u16 type) +@@ -3467,65 +3989,238 @@ static void rtl_clear_bp(struct r8152 *tp, u16 type) ocp_write_word(tp, type, PLA_BP_BA, 0); } @@ -92165,7 +92345,7 @@ index 84f44d00d4d9..b481ee3382fe 100644 static bool rtl8152_is_fw_phy_nc_ok(struct r8152 *tp, struct fw_phy_nc *phy) { u32 length; -@@ -3624,6 +4319,11 @@ static bool rtl8152_is_fw_mac_ok(struct r8152 *tp, struct fw_mac *mac) +@@ -3627,6 +4322,11 @@ static bool rtl8152_is_fw_mac_ok(struct r8152 *tp, struct fw_mac *mac) case RTL_VER_06: case RTL_VER_08: case RTL_VER_09: @@ -92177,7 +92357,7 @@ index 84f44d00d4d9..b481ee3382fe 100644 fw_reg = 0xf800; bp_ba_addr = PLA_BP_BA; bp_en_addr = PLA_BP_EN; -@@ -3647,6 +4347,11 @@ static bool rtl8152_is_fw_mac_ok(struct r8152 *tp, struct fw_mac *mac) +@@ -3650,6 +4350,11 @@ static bool rtl8152_is_fw_mac_ok(struct r8152 *tp, struct fw_mac *mac) break; case RTL_VER_08: case RTL_VER_09: @@ -92189,7 +92369,7 @@ index 84f44d00d4d9..b481ee3382fe 100644 fw_reg = 0xe600; bp_ba_addr = USB_BP_BA; bp_en_addr = USB_BP2_EN; -@@ -3774,10 +4479,7 @@ static long rtl8152_check_firmware(struct r8152 *tp, struct rtl_fw *rtl_fw) +@@ -3777,10 +4482,7 @@ static long rtl8152_check_firmware(struct r8152 *tp, struct rtl_fw *rtl_fw) { const struct firmware *fw = rtl_fw->fw; struct fw_header *fw_hdr = (struct fw_header *)fw->data; @@ -92201,7 +92381,7 @@ index 84f44d00d4d9..b481ee3382fe 100644 long ret = -EFAULT; int i; -@@ -3806,50 +4508,56 @@ static long rtl8152_check_firmware(struct r8152 *tp, struct rtl_fw *rtl_fw) +@@ -3809,50 +4511,56 @@ static long rtl8152_check_firmware(struct r8152 *tp, struct rtl_fw *rtl_fw) goto fail; goto fw_end; case RTL_FW_PLA: @@ -92269,7 +92449,7 @@ index 84f44d00d4d9..b481ee3382fe 100644 dev_err(&tp->intf->dev, "Check PHY_STOP fail\n"); goto fail; -@@ -3860,53 +4568,336 @@ static long rtl8152_check_firmware(struct r8152 *tp, struct rtl_fw *rtl_fw) +@@ -3863,53 +4571,336 @@ static long rtl8152_check_firmware(struct r8152 *tp, struct rtl_fw *rtl_fw) "Invalid length for PHY_STOP\n"); goto fail; } @@ -92632,7 +92812,7 @@ index 84f44d00d4d9..b481ee3382fe 100644 u16 mode_reg, bp_index; u32 length, i, num; __le16 *data; -@@ -3958,6 +4949,12 @@ static void rtl8152_fw_mac_apply(struct r8152 *tp, struct fw_mac *mac) +@@ -3961,6 +4952,12 @@ static void rtl8152_fw_mac_apply(struct r8152 *tp, struct fw_mac *mac) return; } @@ -92645,7 +92825,7 @@ index 84f44d00d4d9..b481ee3382fe 100644 rtl_clear_bp(tp, type); /* Enable backup/restore of MACDBG. This is required after clearing PLA -@@ -3993,7 +4990,6 @@ static void rtl8152_fw_mac_apply(struct r8152 *tp, struct fw_mac *mac) +@@ -3996,7 +4993,6 @@ static void rtl8152_fw_mac_apply(struct r8152 *tp, struct fw_mac *mac) ocp_write_word(tp, type, bp_en_addr, __le16_to_cpu(mac->bp_en_value)); @@ -92653,7 +92833,7 @@ index 84f44d00d4d9..b481ee3382fe 100644 if (fw_ver_reg) ocp_write_byte(tp, MCU_TYPE_USB, fw_ver_reg, mac->fw_ver_data); -@@ -4001,14 +4997,14 @@ static void rtl8152_fw_mac_apply(struct r8152 *tp, struct fw_mac *mac) +@@ -4004,14 +5000,14 @@ static void rtl8152_fw_mac_apply(struct r8152 *tp, struct fw_mac *mac) dev_dbg(&tp->intf->dev, "successfully applied %s\n", mac->info); } @@ -92670,7 +92850,7 @@ index 84f44d00d4d9..b481ee3382fe 100644 if (IS_ERR_OR_NULL(rtl_fw->fw)) return; -@@ -4030,18 +5026,40 @@ static void rtl8152_apply_firmware(struct r8152 *tp) +@@ -4033,18 +5029,40 @@ static void rtl8152_apply_firmware(struct r8152 *tp) rtl8152_fw_mac_apply(tp, (struct fw_mac *)block); break; case RTL_FW_PHY_START: @@ -92714,7 +92894,7 @@ index 84f44d00d4d9..b481ee3382fe 100644 default: break; } -@@ -4188,6 +5206,22 @@ static void r8153_eee_en(struct r8152 *tp, bool enable) +@@ -4191,6 +5209,22 @@ static void r8153_eee_en(struct r8152 *tp, bool enable) tp->ups_info.eee = enable; } @@ -92737,7 +92917,7 @@ index 84f44d00d4d9..b481ee3382fe 100644 static void rtl_eee_enable(struct r8152 *tp, bool enable) { switch (tp->version) { -@@ -4209,6 +5243,7 @@ static void rtl_eee_enable(struct r8152 *tp, bool enable) +@@ -4212,6 +5246,7 @@ static void rtl_eee_enable(struct r8152 *tp, bool enable) case RTL_VER_06: case RTL_VER_08: case RTL_VER_09: @@ -92745,7 +92925,7 @@ index 84f44d00d4d9..b481ee3382fe 100644 if (enable) { r8153_eee_en(tp, true); ocp_reg_write(tp, OCP_EEE_ADV, tp->eee_adv); -@@ -4217,6 +5252,19 @@ static void rtl_eee_enable(struct r8152 *tp, bool enable) +@@ -4220,6 +5255,19 @@ static void rtl_eee_enable(struct r8152 *tp, bool enable) ocp_reg_write(tp, OCP_EEE_ADV, 0); } break; @@ -92765,7 +92945,7 @@ index 84f44d00d4d9..b481ee3382fe 100644 default: break; } -@@ -4242,7 +5290,7 @@ static void rtl8152_disable(struct r8152 *tp) +@@ -4245,7 +5293,7 @@ static void rtl8152_disable(struct r8152 *tp) static void r8152b_hw_phy_cfg(struct r8152 *tp) { @@ -92774,7 +92954,7 @@ index 84f44d00d4d9..b481ee3382fe 100644 rtl_eee_enable(tp, tp->eee_en); r8152_aldps_en(tp, true); r8152b_enable_fc(tp); -@@ -4263,6 +5311,20 @@ static void wait_oob_link_list_ready(struct r8152 *tp) +@@ -4266,6 +5314,20 @@ static void wait_oob_link_list_ready(struct r8152 *tp) } } @@ -92795,7 +92975,7 @@ index 84f44d00d4d9..b481ee3382fe 100644 static void r8152b_exit_oob(struct r8152 *tp) { u32 ocp_data; -@@ -4313,7 +5375,7 @@ static void r8152b_exit_oob(struct r8152 *tp) +@@ -4316,7 +5378,7 @@ static void r8152b_exit_oob(struct r8152 *tp) } /* TX share fifo free credit full threshold */ @@ -92804,7 +92984,7 @@ index 84f44d00d4d9..b481ee3382fe 100644 ocp_write_byte(tp, MCU_TYPE_USB, USB_TX_AGG, TX_AGG_MAX_THRESHOLD); ocp_write_dword(tp, MCU_TYPE_USB, USB_RX_BUF_TH, RX_THR_HIGH); -@@ -4490,6 +5552,36 @@ static int r8153b_post_firmware_1(struct r8152 *tp) +@@ -4493,6 +5555,36 @@ static int r8153b_post_firmware_1(struct r8152 *tp) return 0; } @@ -92841,7 +93021,7 @@ index 84f44d00d4d9..b481ee3382fe 100644 static void r8153_aldps_en(struct r8152 *tp, bool enable) { u16 data; -@@ -4524,7 +5616,7 @@ static void r8153_hw_phy_cfg(struct r8152 *tp) +@@ -4527,7 +5619,7 @@ static void r8153_hw_phy_cfg(struct r8152 *tp) /* disable EEE before updating the PHY parameters */ rtl_eee_enable(tp, false); @@ -92850,7 +93030,7 @@ index 84f44d00d4d9..b481ee3382fe 100644 if (tp->version == RTL_VER_03) { data = ocp_reg_read(tp, OCP_EEE_CFG); -@@ -4592,13 +5684,37 @@ static void r8153b_hw_phy_cfg(struct r8152 *tp) +@@ -4595,13 +5687,37 @@ static void r8153b_hw_phy_cfg(struct r8152 *tp) u32 ocp_data; u16 data; @@ -92889,7 +93069,7 @@ index 84f44d00d4d9..b481ee3382fe 100644 r8153b_green_en(tp, test_bit(GREEN_ETHERNET, &tp->flags)); -@@ -4639,7 +5755,7 @@ static void r8153b_hw_phy_cfg(struct r8152 *tp) +@@ -4642,7 +5758,7 @@ static void r8153b_hw_phy_cfg(struct r8152 *tp) ocp_write_word(tp, MCU_TYPE_PLA, PLA_PHY_PWR, ocp_data); /* Advnace EEE */ @@ -92898,7 +93078,7 @@ index 84f44d00d4d9..b481ee3382fe 100644 data = ocp_reg_read(tp, OCP_POWER_CFG); data |= EEE_CLKDIV_EN; ocp_reg_write(tp, OCP_POWER_CFG, data); -@@ -4656,7 +5772,7 @@ static void r8153b_hw_phy_cfg(struct r8152 *tp) +@@ -4659,7 +5775,7 @@ static void r8153b_hw_phy_cfg(struct r8152 *tp) ocp_reg_write(tp, OCP_SYSCLK_CFG, clk_div_expo(5)); tp->ups_info._250m_ckdiv = true; @@ -92907,7 +93087,7 @@ index 84f44d00d4d9..b481ee3382fe 100644 } if (tp->eee_en) -@@ -4668,6 +5784,19 @@ static void r8153b_hw_phy_cfg(struct r8152 *tp) +@@ -4671,6 +5787,19 @@ static void r8153b_hw_phy_cfg(struct r8152 *tp) set_bit(PHY_RESET, &tp->flags); } @@ -92927,7 +93107,7 @@ index 84f44d00d4d9..b481ee3382fe 100644 static void r8153_first_init(struct r8152 *tp) { u32 ocp_data; -@@ -4700,9 +5829,7 @@ static void r8153_first_init(struct r8152 *tp) +@@ -4703,9 +5832,7 @@ static void r8153_first_init(struct r8152 *tp) rtl_rx_vlan_en(tp, tp->netdev->features & NETIF_F_HW_VLAN_CTAG_RX); @@ -92938,7 +93118,7 @@ index 84f44d00d4d9..b481ee3382fe 100644 ocp_data = ocp_read_word(tp, MCU_TYPE_PLA, PLA_TCR0); ocp_data |= TCR0_AUTO_FIFO; -@@ -4737,8 +5864,7 @@ static void r8153_enter_oob(struct r8152 *tp) +@@ -4740,8 +5867,7 @@ static void r8153_enter_oob(struct r8152 *tp) wait_oob_link_list_ready(tp); @@ -92948,7 +93128,7 @@ index 84f44d00d4d9..b481ee3382fe 100644 switch (tp->version) { case RTL_VER_03: -@@ -4752,6 +5878,7 @@ static void r8153_enter_oob(struct r8152 *tp) +@@ -4755,6 +5881,7 @@ static void r8153_enter_oob(struct r8152 *tp) case RTL_VER_08: case RTL_VER_09: @@ -92956,7 +93136,7 @@ index 84f44d00d4d9..b481ee3382fe 100644 /* Clear teredo wake event. bit[15:8] is the teredo wakeup * type. Set it to zero. bits[7:0] are the W1C bits about * the events. Set them to all 1 to clear them. -@@ -4788,27 +5915,117 @@ static void rtl8153_disable(struct r8152 *tp) +@@ -4791,27 +5918,117 @@ static void rtl8153_disable(struct r8152 *tp) r8153_aldps_en(tp, true); } @@ -93092,7 +93272,7 @@ index 84f44d00d4d9..b481ee3382fe 100644 bmcr = BMCR_SPEED100; if (duplex == DUPLEX_FULL) { bmcr |= BMCR_FULLDPLX; -@@ -4836,58 +6053,73 @@ static int rtl8152_set_speed(struct r8152 *tp, u8 autoneg, u32 speed, u8 duplex, +@@ -4839,58 +6056,73 @@ static int rtl8152_set_speed(struct r8152 *tp, u8 autoneg, u32 speed, u8 duplex, tp->mii.force_media = 1; } else { @@ -93184,7 +93364,7 @@ index 84f44d00d4d9..b481ee3382fe 100644 } bmcr = BMCR_ANENABLE | BMCR_ANRESTART; -@@ -5018,7 +6250,7 @@ static void rtl8153b_up(struct r8152 *tp) +@@ -5021,7 +6253,7 @@ static void rtl8153b_up(struct r8152 *tp) r8153_aldps_en(tp, true); @@ -93193,7 +93373,7 @@ index 84f44d00d4d9..b481ee3382fe 100644 r8153b_u1u2en(tp, true); } -@@ -5043,239 +6275,486 @@ static void rtl8153b_down(struct r8152 *tp) +@@ -5046,239 +6278,486 @@ static void rtl8153b_down(struct r8152 *tp) r8153_aldps_en(tp, true); } @@ -93853,7 +94033,7 @@ index 84f44d00d4d9..b481ee3382fe 100644 rtl_drop_queued_tx(tp); rtl_stop_rx(tp); } else { -@@ -5283,95 +6762,775 @@ static int rtl8152_close(struct net_device *netdev) +@@ -5286,95 +6765,775 @@ static int rtl8152_close(struct net_device *netdev) tp->rtl_ops.down(tp); @@ -94677,7 +94857,7 @@ index 84f44d00d4d9..b481ee3382fe 100644 data = r8152_mdio_read(tp, MII_BMCR); if (data & BMCR_PDOWN) { -@@ -5379,119 +7538,450 @@ static void r8153_init(struct r8152 *tp) +@@ -5382,119 +7541,450 @@ static void r8153_init(struct r8152 *tp) r8152_mdio_write(tp, MII_BMCR, data); } @@ -95212,7 +95392,7 @@ index 84f44d00d4d9..b481ee3382fe 100644 { u32 ocp_data; u16 data; -@@ -5500,8 +7990,31 @@ static void r8153b_init(struct r8152 *tp) +@@ -5503,8 +7993,31 @@ static void r8153b_init(struct r8152 *tp) if (test_bit(RTL8152_UNPLUG, &tp->flags)) return; @@ -95244,7 +95424,7 @@ index 84f44d00d4d9..b481ee3382fe 100644 for (i = 0; i < 500; i++) { if (ocp_read_word(tp, MCU_TYPE_PLA, PLA_BOOT_CTRL) & AUTOLOAD_DONE) -@@ -5509,10 +8022,19 @@ static void r8153b_init(struct r8152 *tp) +@@ -5512,10 +8025,19 @@ static void r8153b_init(struct r8152 *tp) msleep(20); if (test_bit(RTL8152_UNPLUG, &tp->flags)) @@ -95265,7 +95445,7 @@ index 84f44d00d4d9..b481ee3382fe 100644 data = r8152_mdio_read(tp, MII_BMCR); if (data & BMCR_PDOWN) { -@@ -5531,39 +8053,50 @@ static void r8153b_init(struct r8152 *tp) +@@ -5534,39 +8056,50 @@ static void r8153b_init(struct r8152 *tp) ocp_write_word(tp, MCU_TYPE_USB, USB_U1U2_TIMER, 500); r8153b_power_cut_en(tp, false); @@ -95338,7 +95518,7 @@ index 84f44d00d4d9..b481ee3382fe 100644 set_bit(GREEN_ETHERNET, &tp->flags); -@@ -5577,6 +8110,39 @@ static void r8153b_init(struct r8152 *tp) +@@ -5580,6 +8113,39 @@ static void r8153b_init(struct r8152 *tp) tp->coalesce = 15000; /* 15 us */ } @@ -95378,7 +95558,7 @@ index 84f44d00d4d9..b481ee3382fe 100644 static int rtl8152_pre_reset(struct usb_interface *intf) { struct r8152 *tp = usb_get_intfdata(intf); -@@ -5727,6 +8293,9 @@ static int rtl8152_runtime_suspend(struct r8152 *tp) +@@ -5730,6 +8296,9 @@ static int rtl8152_runtime_suspend(struct r8152 *tp) struct net_device *netdev = tp->netdev; int ret = 0; @@ -95388,7 +95568,7 @@ index 84f44d00d4d9..b481ee3382fe 100644 set_bit(SELECTIVE_SUSPEND, &tp->flags); smp_mb__after_atomic(); -@@ -5937,6 +8506,22 @@ int rtl8152_get_link_ksettings(struct net_device *netdev, +@@ -5940,6 +8509,22 @@ int rtl8152_get_link_ksettings(struct net_device *netdev, mii_ethtool_get_link_ksettings(&tp->mii, cmd); @@ -95411,7 +95591,7 @@ index 84f44d00d4d9..b481ee3382fe 100644 mutex_unlock(&tp->control); usb_autopm_put_interface(tp->intf); -@@ -5980,6 +8565,10 @@ static int rtl8152_set_link_ksettings(struct net_device *dev, +@@ -5983,6 +8568,10 @@ static int rtl8152_set_link_ksettings(struct net_device *dev, cmd->link_modes.advertising)) advertising |= RTL_ADVERTISED_1000_FULL; @@ -95422,7 +95602,7 @@ index 84f44d00d4d9..b481ee3382fe 100644 mutex_lock(&tp->control); ret = rtl8152_set_speed(tp, cmd->base.autoneg, cmd->base.speed, -@@ -6126,6 +8715,11 @@ rtl_ethtool_get_eee(struct net_device *net, struct ethtool_eee *edata) +@@ -6129,6 +8718,11 @@ rtl_ethtool_get_eee(struct net_device *net, struct ethtool_eee *edata) struct r8152 *tp = netdev_priv(net); int ret; @@ -95434,7 +95614,7 @@ index 84f44d00d4d9..b481ee3382fe 100644 ret = usb_autopm_get_interface(tp->intf); if (ret < 0) goto out; -@@ -6148,6 +8742,11 @@ rtl_ethtool_set_eee(struct net_device *net, struct ethtool_eee *edata) +@@ -6151,6 +8745,11 @@ rtl_ethtool_set_eee(struct net_device *net, struct ethtool_eee *edata) struct r8152 *tp = netdev_priv(net); int ret; @@ -95446,16 +95626,16 @@ index 84f44d00d4d9..b481ee3382fe 100644 ret = usb_autopm_get_interface(tp->intf); if (ret < 0) goto out; -@@ -6436,12 +9035,21 @@ static int rtl8152_change_mtu(struct net_device *dev, int new_mtu) +@@ -6439,12 +9038,21 @@ static int rtl8152_change_mtu(struct net_device *dev, int new_mtu) dev->mtu = new_mtu; if (netif_running(dev)) { - u32 rms = new_mtu + VLAN_ETH_HLEN + ETH_FCS_LEN; +- +- ocp_write_word(tp, MCU_TYPE_PLA, PLA_RMS, rms); + if (tp->rtl_ops.change_mtu) + tp->rtl_ops.change_mtu(tp); -- ocp_write_word(tp, MCU_TYPE_PLA, PLA_RMS, rms); -- - if (netif_carrier_ok(dev)) - r8153_set_rx_early_size(tp); + if (netif_carrier_ok(dev)) { @@ -95473,7 +95653,7 @@ index 84f44d00d4d9..b481ee3382fe 100644 } mutex_unlock(&tp->control); -@@ -6530,6 +9138,7 @@ static int rtl_ops_init(struct r8152 *tp) +@@ -6533,6 +9141,7 @@ static int rtl_ops_init(struct r8152 *tp) ops->in_nway = rtl8153_in_nway; ops->hw_phy_cfg = r8153_hw_phy_cfg; ops->autosuspend_en = rtl8153_runtime_enable; @@ -95481,7 +95661,7 @@ index 84f44d00d4d9..b481ee3382fe 100644 if (tp->udev->speed < USB_SPEED_SUPER) tp->rx_buf_sz = 16 * 1024; else -@@ -6551,6 +9160,68 @@ static int rtl_ops_init(struct r8152 *tp) +@@ -6554,6 +9163,68 @@ static int rtl_ops_init(struct r8152 *tp) ops->in_nway = rtl8153_in_nway; ops->hw_phy_cfg = r8153b_hw_phy_cfg; ops->autosuspend_en = rtl8153b_runtime_enable; @@ -95550,7 +95730,7 @@ index 84f44d00d4d9..b481ee3382fe 100644 tp->rx_buf_sz = 32 * 1024; tp->eee_en = true; tp->eee_adv = MDIO_EEE_1000T | MDIO_EEE_100TX; -@@ -6558,7 +9229,7 @@ static int rtl_ops_init(struct r8152 *tp) +@@ -6561,7 +9232,7 @@ static int rtl_ops_init(struct r8152 *tp) default: ret = -ENODEV; @@ -95559,7 +95739,7 @@ index 84f44d00d4d9..b481ee3382fe 100644 break; } -@@ -6569,11 +9240,17 @@ static int rtl_ops_init(struct r8152 *tp) +@@ -6572,11 +9243,17 @@ static int rtl_ops_init(struct r8152 *tp) #define FIRMWARE_8153A_3 "rtl_nic/rtl8153a-3.fw" #define FIRMWARE_8153A_4 "rtl_nic/rtl8153a-4.fw" #define FIRMWARE_8153B_2 "rtl_nic/rtl8153b-2.fw" @@ -95577,7 +95757,7 @@ index 84f44d00d4d9..b481ee3382fe 100644 static int rtl_fw_init(struct r8152 *tp) { -@@ -6599,6 +9276,19 @@ static int rtl_fw_init(struct r8152 *tp) +@@ -6602,6 +9279,19 @@ static int rtl_fw_init(struct r8152 *tp) rtl_fw->pre_fw = r8153b_pre_firmware_1; rtl_fw->post_fw = r8153b_post_firmware_1; break; @@ -95597,7 +95777,7 @@ index 84f44d00d4d9..b481ee3382fe 100644 default: break; } -@@ -6606,7 +9296,7 @@ static int rtl_fw_init(struct r8152 *tp) +@@ -6609,7 +9299,7 @@ static int rtl_fw_init(struct r8152 *tp) return 0; } @@ -95606,7 +95786,7 @@ index 84f44d00d4d9..b481ee3382fe 100644 { struct usb_device *udev = interface_to_usbdev(intf); u32 ocp_data = 0; -@@ -6654,6 +9344,27 @@ static u8 rtl_get_version(struct usb_interface *intf) +@@ -6658,6 +9348,27 @@ static u8 rtl_get_version(struct usb_interface *intf) case 0x6010: version = RTL_VER_09; break; @@ -95634,7 +95814,7 @@ index 84f44d00d4d9..b481ee3382fe 100644 default: version = RTL_VER_UNKNOWN; dev_info(&intf->dev, "Unknown version 0x%04x\n", ocp_data); -@@ -6664,12 +9375,13 @@ static u8 rtl_get_version(struct usb_interface *intf) +@@ -6668,12 +9379,13 @@ static u8 rtl_get_version(struct usb_interface *intf) return version; } @@ -95649,7 +95829,7 @@ index 84f44d00d4d9..b481ee3382fe 100644 struct r8152 *tp; struct net_device *netdev; int ret; -@@ -6677,10 +9389,8 @@ static int rtl8152_probe(struct usb_interface *intf, +@@ -6681,10 +9393,8 @@ static int rtl8152_probe(struct usb_interface *intf, if (version == RTL_VER_UNKNOWN) return -ENODEV; @@ -95661,7 +95841,7 @@ index 84f44d00d4d9..b481ee3382fe 100644 if (intf->cur_altsetting->desc.bNumEndpoints < 3) return -ENODEV; -@@ -6721,7 +9431,7 @@ static int rtl8152_probe(struct usb_interface *intf, +@@ -6725,7 +9435,7 @@ static int rtl8152_probe(struct usb_interface *intf, mutex_init(&tp->control); INIT_DELAYED_WORK(&tp->schedule, rtl_work_func_t); INIT_DELAYED_WORK(&tp->hw_phy_work, rtl_hw_phy_work_func_t); @@ -95670,7 +95850,7 @@ index 84f44d00d4d9..b481ee3382fe 100644 tasklet_disable(&tp->tx_tl); netdev->netdev_ops = &rtl8152_netdev_ops; -@@ -6765,12 +9475,29 @@ static int rtl8152_probe(struct usb_interface *intf, +@@ -6769,12 +9479,29 @@ static int rtl8152_probe(struct usb_interface *intf, /* MTU range: 68 - 1500 or 9194 */ netdev->min_mtu = ETH_MIN_MTU; switch (tp->version) { @@ -95703,7 +95883,7 @@ index 84f44d00d4d9..b481ee3382fe 100644 break; } -@@ -6786,7 +9513,13 @@ static int rtl8152_probe(struct usb_interface *intf, +@@ -6790,7 +9517,13 @@ static int rtl8152_probe(struct usb_interface *intf, tp->advertising = RTL_ADVERTISED_10_HALF | RTL_ADVERTISED_10_FULL | RTL_ADVERTISED_100_HALF | RTL_ADVERTISED_100_FULL; if (tp->mii.supports_gmii) { @@ -95718,7 +95898,7 @@ index 84f44d00d4d9..b481ee3382fe 100644 tp->advertising |= RTL_ADVERTISED_1000_FULL; } tp->duplex = DUPLEX_FULL; -@@ -6810,11 +9543,15 @@ static int rtl8152_probe(struct usb_interface *intf, +@@ -6814,11 +9547,15 @@ static int rtl8152_probe(struct usb_interface *intf, set_ethernet_addr(tp); usb_set_intfdata(intf, tp); @@ -95736,7 +95916,7 @@ index 84f44d00d4d9..b481ee3382fe 100644 goto out1; } -@@ -6846,7 +9583,8 @@ static void rtl8152_disconnect(struct usb_interface *intf) +@@ -6854,7 +9591,8 @@ static void rtl8152_disconnect(struct usb_interface *intf) unregister_netdev(tp->netdev); tasklet_kill(&tp->tx_tl); cancel_delayed_work_sync(&tp->hw_phy_work); @@ -95746,7 +95926,7 @@ index 84f44d00d4d9..b481ee3382fe 100644 rtl8152_release_firmware(tp); free_netdev(tp->netdev); } -@@ -6866,13 +9604,28 @@ static void rtl8152_disconnect(struct usb_interface *intf) +@@ -6874,13 +9612,28 @@ static void rtl8152_disconnect(struct usb_interface *intf) .idProduct = (prod), \ .bInterfaceClass = USB_CLASS_COMM, \ .bInterfaceSubClass = USB_CDC_SUBCLASS_ETHERNET, \ @@ -95944,7 +96124,7 @@ index 000000000000..2c3fabd38b16 +MODULE_DESCRIPTION("Realtek USB ECM device"); +MODULE_LICENSE("GPL"); diff --git a/drivers/net/usb/smsc95xx.c b/drivers/net/usb/smsc95xx.c -index 975f52605867..23c0425b20b0 100644 +index 569be01700aa..d292fb578025 100644 --- a/drivers/net/usb/smsc95xx.c +++ b/drivers/net/usb/smsc95xx.c @@ -50,6 +50,7 @@ @@ -95974,7 +96154,7 @@ index 975f52605867..23c0425b20b0 100644 static int __must_check __smsc95xx_read_reg(struct usbnet *dev, u32 index, u32 *data, int in_pm) { -@@ -766,6 +779,53 @@ static int smsc95xx_ioctl(struct net_device *netdev, struct ifreq *rq, int cmd) +@@ -768,6 +781,53 @@ static int smsc95xx_ioctl(struct net_device *netdev, struct ifreq *rq, int cmd) return phy_mii_ioctl(netdev->phydev, rq, cmd); } @@ -96028,7 +96208,7 @@ index 975f52605867..23c0425b20b0 100644 static void smsc95xx_init_mac_address(struct usbnet *dev) { /* maybe the boot loader passed the MAC address in devicetree */ -@@ -788,6 +848,10 @@ static void smsc95xx_init_mac_address(struct usbnet *dev) +@@ -790,6 +850,10 @@ static void smsc95xx_init_mac_address(struct usbnet *dev) } } @@ -96039,7 +96219,7 @@ index 975f52605867..23c0425b20b0 100644 /* no useful static MAC address found. generate a random one */ eth_hw_addr_random(dev->net); netif_dbg(dev, ifup, dev->net, "MAC address set to eth_random_addr\n"); -@@ -914,13 +978,13 @@ static int smsc95xx_reset(struct usbnet *dev) +@@ -916,13 +980,13 @@ static int smsc95xx_reset(struct usbnet *dev) if (!turbo_mode) { burst_cap = 0; @@ -96058,7 +96238,7 @@ index 975f52605867..23c0425b20b0 100644 } netif_dbg(dev, ifup, dev->net, "rx_urb_size=%ld\n", -@@ -1859,7 +1923,8 @@ static int smsc95xx_rx_fixup(struct usbnet *dev, struct sk_buff *skb) +@@ -1861,7 +1925,8 @@ static int smsc95xx_rx_fixup(struct usbnet *dev, struct sk_buff *skb) if (dev->net->features & NETIF_F_RXCSUM) smsc95xx_rx_csum_offload(skb); skb_trim(skb, skb->len - 4); /* remove fcs */ @@ -96068,7 +96248,7 @@ index 975f52605867..23c0425b20b0 100644 return 1; } -@@ -1877,7 +1942,8 @@ static int smsc95xx_rx_fixup(struct usbnet *dev, struct sk_buff *skb) +@@ -1879,7 +1944,8 @@ static int smsc95xx_rx_fixup(struct usbnet *dev, struct sk_buff *skb) if (dev->net->features & NETIF_F_RXCSUM) smsc95xx_rx_csum_offload(ax_skb); skb_trim(ax_skb, ax_skb->len - 4); /* remove fcs */ @@ -96108,7 +96288,7 @@ index 3f5da3bb6aa5..ba3c58caac9f 100644 static inline diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c -index baf5f0afe802..15d8ac8c20c7 100644 +index fbb5e29530e3..3e23e411f73b 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c @@ -9,6 +9,7 @@ @@ -96119,7 +96299,7 @@ index baf5f0afe802..15d8ac8c20c7 100644 #include #include #include -@@ -2944,7 +2945,7 @@ brcmf_cfg80211_set_power_mgmt(struct wiphy *wiphy, struct net_device *ndev, +@@ -2943,7 +2944,7 @@ brcmf_cfg80211_set_power_mgmt(struct wiphy *wiphy, struct net_device *ndev, brcmf_dbg(INFO, "Do not enable power save for P2P clients\n"); pm = PM_OFF; } @@ -96128,7 +96308,7 @@ index baf5f0afe802..15d8ac8c20c7 100644 err = brcmf_fil_cmd_int_set(ifp, BRCMF_C_SET_PM, pm); if (err) { -@@ -2954,6 +2955,7 @@ brcmf_cfg80211_set_power_mgmt(struct wiphy *wiphy, struct net_device *ndev, +@@ -2953,6 +2954,7 @@ brcmf_cfg80211_set_power_mgmt(struct wiphy *wiphy, struct net_device *ndev, bphy_err(drvr, "error (%d)\n", err); } @@ -96136,7 +96316,7 @@ index baf5f0afe802..15d8ac8c20c7 100644 err = brcmf_fil_iovar_int_set(ifp, "pm2_sleep_ret", min_t(u32, timeout, BRCMF_PS_MAX_TIMEOUT_MS)); if (err) -@@ -7379,12 +7381,18 @@ static s32 brcmf_translate_country_code(struct brcmf_pub *drvr, char alpha2[2], +@@ -7378,12 +7380,18 @@ static s32 brcmf_translate_country_code(struct brcmf_pub *drvr, char alpha2[2], struct brcmfmac_pd_cc *country_codes; struct brcmfmac_pd_cc_entry *cc; s32 found_index; @@ -96157,7 +96337,7 @@ index baf5f0afe802..15d8ac8c20c7 100644 } if ((alpha2[0] == ccreq->country_abbrev[0]) && -@@ -7408,10 +7416,14 @@ static s32 brcmf_translate_country_code(struct brcmf_pub *drvr, char alpha2[2], +@@ -7407,10 +7415,14 @@ static s32 brcmf_translate_country_code(struct brcmf_pub *drvr, char alpha2[2], brcmf_dbg(TRACE, "No country code match found\n"); return -EINVAL; } @@ -96175,7 +96355,7 @@ index baf5f0afe802..15d8ac8c20c7 100644 ccreq->country_abbrev[0] = alpha2[0]; ccreq->country_abbrev[1] = alpha2[1]; ccreq->country_abbrev[2] = 0; -@@ -7426,31 +7438,45 @@ static void brcmf_cfg80211_reg_notifier(struct wiphy *wiphy, +@@ -7425,31 +7437,45 @@ static void brcmf_cfg80211_reg_notifier(struct wiphy *wiphy, struct brcmf_if *ifp = brcmf_get_ifp(cfg->pub, 0); struct brcmf_pub *drvr = cfg->pub; struct brcmf_fil_country_le ccreq; @@ -97057,7 +97237,7 @@ index 000000000000..ac04301dabe1 +} +late_initcall(of_cfs_init); diff --git a/drivers/of/overlay.c b/drivers/of/overlay.c -index 67b404f36e79..d2f1393c77a6 100644 +index 3ac874e2be08..e4d9a3530008 100644 --- a/drivers/of/overlay.c +++ b/drivers/of/overlay.c @@ -243,6 +243,8 @@ static struct property *dup_and_fixup_symbol_prop( @@ -97070,7 +97250,7 @@ index 67b404f36e79..d2f1393c77a6 100644 new_prop = kzalloc(sizeof(*new_prop), GFP_KERNEL); if (!new_prop) diff --git a/drivers/of/platform.c b/drivers/of/platform.c -index b557a0fcd4ba..281856ac1988 100644 +index 43748c6480c8..815c99d96d1a 100644 --- a/drivers/of/platform.c +++ b/drivers/of/platform.c @@ -511,6 +511,7 @@ static const struct of_device_id reserved_mem_matches[] = { @@ -97164,10 +97344,10 @@ index 9c3d2982248d..840f264f7a9b 100644 ret = clk_prepare_enable(pcie->clk); if (ret) { diff --git a/drivers/perf/Kconfig b/drivers/perf/Kconfig -index 25a577530da4..99b1c90b6d5c 100644 +index 67ad53cde11f..d24981afd9a2 100644 --- a/drivers/perf/Kconfig +++ b/drivers/perf/Kconfig -@@ -141,6 +141,14 @@ config ARM64_BRBE +@@ -140,6 +140,14 @@ config ARM64_BRBE relevant information such as cycle count, misprediction and branch type, branch privilege level etc. @@ -97177,13 +97357,13 @@ index 25a577530da4..99b1c90b6d5c 100644 + default n + help + Say y if you want to use Raspberry Pi AXI performance monitors, m if -+ you want to build it as a module. ++ you want to build it as a module. + source "drivers/perf/hisilicon/Kconfig" endmenu diff --git a/drivers/perf/Makefile b/drivers/perf/Makefile -index a89359aeac6d..a45ae865f0bc 100644 +index a89359aeac6d..e78a6b647bf4 100644 --- a/drivers/perf/Makefile +++ b/drivers/perf/Makefile @@ -14,3 +14,4 @@ obj-$(CONFIG_THUNDERX2_PMU) += thunderx2_pmu.o @@ -97191,7 +97371,6 @@ index a89359aeac6d..a45ae865f0bc 100644 obj-$(CONFIG_ARM_SPE_PMU) += arm_spe_pmu.o obj-$(CONFIG_ARM64_BRBE) += arm_brbe.o +obj-$(CONFIG_RPI_AXIPERF) += raspberrypi_axi_monitor.o -\ No newline at end of file diff --git a/drivers/perf/raspberrypi_axi_monitor.c b/drivers/perf/raspberrypi_axi_monitor.c new file mode 100644 index 000000000000..5ae2bdaa88b4 @@ -97836,10 +98015,10 @@ index 000000000000..5ae2bdaa88b4 +MODULE_LICENSE("GPL"); + diff --git a/drivers/pinctrl/bcm/pinctrl-bcm2835.c b/drivers/pinctrl/bcm/pinctrl-bcm2835.c -index c7ae9f900b53..4984901fa80c 100644 +index e3f49d0ed029..0fb3d5dbdb77 100644 --- a/drivers/pinctrl/bcm/pinctrl-bcm2835.c +++ b/drivers/pinctrl/bcm/pinctrl-bcm2835.c -@@ -376,7 +376,7 @@ static const struct gpio_chip bcm2835_gpio_chip = { +@@ -374,7 +374,7 @@ static const struct gpio_chip bcm2835_gpio_chip = { .get = bcm2835_gpio_get, .set = bcm2835_gpio_set, .set_config = gpiochip_generic_config, @@ -97848,7 +98027,7 @@ index c7ae9f900b53..4984901fa80c 100644 .ngpio = BCM2835_NUM_GPIOS, .can_sleep = false, .of_gpio_ranges_fallback = bcm2835_of_gpio_ranges_fallback, -@@ -393,7 +393,7 @@ static const struct gpio_chip bcm2711_gpio_chip = { +@@ -391,7 +391,7 @@ static const struct gpio_chip bcm2711_gpio_chip = { .get = bcm2835_gpio_get, .set = bcm2835_gpio_set, .set_config = gpiochip_generic_config, @@ -97857,7 +98036,7 @@ index c7ae9f900b53..4984901fa80c 100644 .ngpio = BCM2711_NUM_GPIOS, .can_sleep = false, .of_gpio_ranges_fallback = bcm2835_of_gpio_ranges_fallback, -@@ -1306,9 +1306,13 @@ static int bcm2835_pinctrl_probe(struct platform_device *pdev) +@@ -1304,9 +1304,13 @@ static int bcm2835_pinctrl_probe(struct platform_device *pdev) char *name; girq->parents[i] = irq_of_parse_and_map(np, i); @@ -97873,7 +98052,7 @@ index c7ae9f900b53..4984901fa80c 100644 /* Skip over the all banks interrupts */ pc->wake_irq[i] = irq_of_parse_and_map(np, i + BCM2835_NUM_IRQS + 1); -@@ -1334,7 +1338,7 @@ static int bcm2835_pinctrl_probe(struct platform_device *pdev) +@@ -1332,7 +1336,7 @@ static int bcm2835_pinctrl_probe(struct platform_device *pdev) girq->default_type = IRQ_TYPE_NONE; girq->handler = handle_level_irq; @@ -111244,7 +111423,7 @@ index 8782ebe0b39a..2a1d8d6541b2 100644 pagelistinfo->scatterlist_mapped = 0; diff --git a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c -index 3d378da119e7..a936102dbc34 100644 +index 178cf90fb3e5..c6a47eb0f8f6 100644 --- a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c +++ b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c @@ -109,6 +109,9 @@ static struct class *vchiq_class; @@ -111269,7 +111448,7 @@ index 3d378da119e7..a936102dbc34 100644 static const char *const ioctl_names[] = { "CONNECT", "SHUTDOWN", -@@ -2679,6 +2687,7 @@ void vchiq_platform_conn_state_changed(struct vchiq_state *state, +@@ -2681,6 +2689,7 @@ void vchiq_platform_conn_state_changed(struct vchiq_state *state, static const struct of_device_id vchiq_of_match[] = { { .compatible = "brcm,bcm2835-vchiq", .data = &bcm2835_drvdata }, { .compatible = "brcm,bcm2836-vchiq", .data = &bcm2836_drvdata }, @@ -111277,7 +111456,7 @@ index 3d378da119e7..a936102dbc34 100644 {}, }; MODULE_DEVICE_TABLE(of, vchiq_of_match); -@@ -2688,6 +2697,7 @@ vchiq_register_child(struct platform_device *pdev, const char *name) +@@ -2690,6 +2699,7 @@ vchiq_register_child(struct platform_device *pdev, const char *name) { struct platform_device_info pdevinfo; struct platform_device *child; @@ -111285,7 +111464,7 @@ index 3d378da119e7..a936102dbc34 100644 memset(&pdevinfo, 0, sizeof(pdevinfo)); -@@ -2696,12 +2706,32 @@ vchiq_register_child(struct platform_device *pdev, const char *name) +@@ -2698,12 +2708,32 @@ vchiq_register_child(struct platform_device *pdev, const char *name) pdevinfo.id = PLATFORM_DEVID_NONE; pdevinfo.dma_mask = DMA_BIT_MASK(32); @@ -111318,7 +111497,7 @@ index 3d378da119e7..a936102dbc34 100644 return child; } -@@ -2759,8 +2789,11 @@ static int vchiq_probe(struct platform_device *pdev) +@@ -2761,8 +2791,11 @@ static int vchiq_probe(struct platform_device *pdev) VCHIQ_VERSION, VCHIQ_VERSION_MIN, MAJOR(vchiq_devid), MINOR(vchiq_devid)); @@ -111330,7 +111509,7 @@ index 3d378da119e7..a936102dbc34 100644 return 0; -@@ -2773,8 +2806,11 @@ static int vchiq_probe(struct platform_device *pdev) +@@ -2775,8 +2808,11 @@ static int vchiq_probe(struct platform_device *pdev) static int vchiq_remove(struct platform_device *pdev) { @@ -115423,10 +115602,10 @@ index fd95860cd661..fc36e5963e30 100644 ret = serial8250_register_8250_port(&up); if (ret < 0) { diff --git a/drivers/tty/serial/amba-pl011.c b/drivers/tty/serial/amba-pl011.c -index c9876040ca44..048805aed90c 100644 +index 638255a0ea37..0a9f11fdff0b 100644 --- a/drivers/tty/serial/amba-pl011.c +++ b/drivers/tty/serial/amba-pl011.c -@@ -266,6 +266,7 @@ struct uart_amba_port { +@@ -268,6 +268,7 @@ struct uart_amba_port { unsigned int old_cr; /* state during shutdown */ unsigned int fixed_baud; /* vendor-set fixed baud rate */ char type[12]; @@ -115434,7 +115613,7 @@ index c9876040ca44..048805aed90c 100644 #ifdef CONFIG_DMA_ENGINE /* DMA stuff */ bool using_tx_dma; -@@ -812,6 +813,7 @@ __acquires(&uap->port.lock) +@@ -807,6 +808,7 @@ __acquires(&uap->port.lock) if (!uap->using_tx_dma) return; @@ -115442,7 +115621,7 @@ index c9876040ca44..048805aed90c 100644 dmaengine_terminate_async(uap->dmatx.chan); if (uap->dmatx.queued) { -@@ -938,6 +940,7 @@ static void pl011_dma_rx_chars(struct uart_amba_port *uap, +@@ -933,6 +935,7 @@ static void pl011_dma_rx_chars(struct uart_amba_port *uap, fifotaken = pl011_fifo_to_tty(uap); } @@ -115450,7 +115629,7 @@ index c9876040ca44..048805aed90c 100644 spin_unlock(&uap->port.lock); dev_vdbg(uap->port.dev, "Took %d chars from DMA buffer and %d chars from the FIFO\n", -@@ -1318,6 +1321,32 @@ static void pl011_start_tx(struct uart_port *port) +@@ -1314,6 +1317,32 @@ static void pl011_start_tx(struct uart_port *port) pl011_start_tx_pio(uap); } @@ -115483,7 +115662,7 @@ index c9876040ca44..048805aed90c 100644 static void pl011_stop_rx(struct uart_port *port) { struct uart_amba_port *uap = -@@ -1354,6 +1383,7 @@ __acquires(&uap->port.lock) +@@ -1350,6 +1379,7 @@ __acquires(&uap->port.lock) { pl011_fifo_to_tty(uap); @@ -115491,7 +115670,7 @@ index c9876040ca44..048805aed90c 100644 spin_unlock(&uap->port.lock); tty_flip_buffer_push(&uap->port.state->port); /* -@@ -1390,6 +1420,7 @@ static bool pl011_tx_char(struct uart_amba_port *uap, unsigned char c, +@@ -1386,6 +1416,7 @@ static bool pl011_tx_char(struct uart_amba_port *uap, unsigned char c, return false; /* unable to transmit character */ pl011_write(c, uap, REG_DR); @@ -115499,7 +115678,7 @@ index c9876040ca44..048805aed90c 100644 uap->port.icount.tx++; return true; -@@ -1420,6 +1451,10 @@ static bool pl011_tx_chars(struct uart_amba_port *uap, bool from_irq) +@@ -1416,6 +1447,10 @@ static bool pl011_tx_chars(struct uart_amba_port *uap, bool from_irq) if (likely(from_irq) && count-- == 0) break; @@ -115510,7 +115689,7 @@ index c9876040ca44..048805aed90c 100644 if (!pl011_tx_char(uap, xmit->buf[xmit->tail], from_irq)) break; -@@ -1547,6 +1582,7 @@ static irqreturn_t pl011_int(int irq, void *dev_id) +@@ -1543,6 +1578,7 @@ static irqreturn_t pl011_int(int irq, void *dev_id) int handled = 0; spin_lock_irqsave(&uap->port.lock, flags); @@ -115518,7 +115697,7 @@ index c9876040ca44..048805aed90c 100644 status = pl011_read(uap, REG_RIS) & uap->im; if (status) { do { -@@ -1566,7 +1602,7 @@ static irqreturn_t pl011_int(int irq, void *dev_id) +@@ -1562,7 +1598,7 @@ static irqreturn_t pl011_int(int irq, void *dev_id) UART011_CTSMIS|UART011_RIMIS)) pl011_modem_status(uap); if (status & UART011_TXIS) @@ -115527,7 +115706,7 @@ index c9876040ca44..048805aed90c 100644 if (pass_counter-- == 0) break; -@@ -1721,6 +1757,23 @@ static void pl011_put_poll_char(struct uart_port *port, +@@ -1717,6 +1753,23 @@ static void pl011_put_poll_char(struct uart_port *port, #endif /* CONFIG_CONSOLE_POLL */ @@ -115551,7 +115730,7 @@ index c9876040ca44..048805aed90c 100644 static int pl011_hwinit(struct uart_port *port) { struct uart_amba_port *uap = -@@ -1737,7 +1790,7 @@ static int pl011_hwinit(struct uart_port *port) +@@ -1733,7 +1786,7 @@ static int pl011_hwinit(struct uart_port *port) if (retval) return retval; @@ -115560,7 +115739,7 @@ index c9876040ca44..048805aed90c 100644 /* Clear pending error and receive interrupts */ pl011_write(UART011_OEIS | UART011_BEIS | UART011_PEIS | -@@ -2214,8 +2267,8 @@ static const struct uart_ops amba_pl011_pops = { +@@ -2210,8 +2263,8 @@ static const struct uart_ops amba_pl011_pops = { .stop_tx = pl011_stop_tx, .start_tx = pl011_start_tx, .stop_rx = pl011_stop_rx, @@ -115571,7 +115750,7 @@ index c9876040ca44..048805aed90c 100644 .enable_ms = pl011_enable_ms, .break_ctl = pl011_break_ctl, .startup = pl011_startup, -@@ -2392,7 +2445,7 @@ static int pl011_console_setup(struct console *co, char *options) +@@ -2388,7 +2441,7 @@ static int pl011_console_setup(struct console *co, char *options) plat->init(); } @@ -115580,7 +115759,7 @@ index c9876040ca44..048805aed90c 100644 if (uap->vendor->fixed_options) { baud = uap->fixed_baud; -@@ -2609,6 +2662,7 @@ static struct uart_driver amba_reg = { +@@ -2605,6 +2658,7 @@ static struct uart_driver amba_reg = { .cons = AMBA_CONSOLE, }; @@ -115588,7 +115767,7 @@ index c9876040ca44..048805aed90c 100644 static int pl011_probe_dt_alias(int index, struct device *dev) { struct device_node *np; -@@ -2640,6 +2694,7 @@ static int pl011_probe_dt_alias(int index, struct device *dev) +@@ -2636,6 +2690,7 @@ static int pl011_probe_dt_alias(int index, struct device *dev) return ret; } @@ -115596,7 +115775,7 @@ index c9876040ca44..048805aed90c 100644 /* unregisters the driver also if no more ports are left */ static void pl011_unregister_port(struct uart_amba_port *uap) -@@ -2678,7 +2733,12 @@ static int pl011_setup_port(struct device *dev, struct uart_amba_port *uap, +@@ -2674,7 +2729,12 @@ static int pl011_setup_port(struct device *dev, struct uart_amba_port *uap, if (IS_ERR(base)) return PTR_ERR(base); @@ -115609,7 +115788,7 @@ index c9876040ca44..048805aed90c 100644 uap->old_cr = 0; uap->port.dev = dev; -@@ -2740,6 +2800,11 @@ static int pl011_probe(struct amba_device *dev, const struct amba_id *id) +@@ -2736,6 +2796,11 @@ static int pl011_probe(struct amba_device *dev, const struct amba_id *id) if (IS_ERR(uap->clk)) return PTR_ERR(uap->clk); @@ -115622,10 +115801,10 @@ index c9876040ca44..048805aed90c 100644 uap->vendor = vendor; uap->fifosize = vendor->get_fifosize(dev); diff --git a/drivers/tty/serial/sc16is7xx.c b/drivers/tty/serial/sc16is7xx.c -index 7ece8d1a23cb..8afc10e8d7ee 100644 +index b1569a5cfeef..4d3cdce844a0 100644 --- a/drivers/tty/serial/sc16is7xx.c +++ b/drivers/tty/serial/sc16is7xx.c -@@ -523,8 +523,9 @@ static int sc16is7xx_set_baud(struct uart_port *port, int baud) +@@ -524,8 +524,9 @@ static int sc16is7xx_set_baud(struct uart_port *port, int baud) /* Enable enhanced features */ regcache_cache_bypass(s->regmap, true); @@ -115637,8 +115816,8 @@ index 7ece8d1a23cb..8afc10e8d7ee 100644 regcache_cache_bypass(s->regmap, false); /* Put LCR back to the normal mode */ -@@ -696,6 +697,8 @@ static bool sc16is7xx_port_irq(struct sc16is7xx_port *s, int portno) - rxlen = sc16is7xx_port_read(port, SC16IS7XX_RXLVL_REG); +@@ -709,6 +710,8 @@ static bool sc16is7xx_port_irq(struct sc16is7xx_port *s, int portno) + if (rxlen) sc16is7xx_handle_rx(port, rxlen, iir); + else @@ -115646,7 +115825,7 @@ index 7ece8d1a23cb..8afc10e8d7ee 100644 break; case SC16IS7XX_IIR_THRI_SRC: sc16is7xx_handle_tx(port); -@@ -840,7 +843,7 @@ static unsigned int sc16is7xx_get_mctrl(struct uart_port *port) +@@ -853,7 +856,7 @@ static unsigned int sc16is7xx_get_mctrl(struct uart_port *port) /* DCD and DSR are not wired and CTS/RTS is handled automatically * so just indicate DSR and CAR asserted */ @@ -115655,7 +115834,7 @@ index 7ece8d1a23cb..8afc10e8d7ee 100644 } static void sc16is7xx_set_mctrl(struct uart_port *port, unsigned int mctrl) -@@ -927,14 +930,19 @@ static void sc16is7xx_set_termios(struct uart_port *port, +@@ -940,14 +943,19 @@ static void sc16is7xx_set_termios(struct uart_port *port, regcache_cache_bypass(s->regmap, true); sc16is7xx_port_write(port, SC16IS7XX_XON1_REG, termios->c_cc[VSTART]); sc16is7xx_port_write(port, SC16IS7XX_XOFF1_REG, termios->c_cc[VSTOP]); @@ -115701,7 +115880,7 @@ index 26f9fb9f67ca..fe8c7a85e141 100644 return i; } diff --git a/drivers/usb/core/hcd.c b/drivers/usb/core/hcd.c -index 63bb04d262d8..88e6bed53d54 100644 +index 0a77717d6af2..3be1cc9d8045 100644 --- a/drivers/usb/core/hcd.c +++ b/drivers/usb/core/hcd.c @@ -1973,6 +1973,16 @@ int usb_hcd_alloc_bandwidth(struct usb_device *udev, @@ -115722,10 +115901,10 @@ index 63bb04d262d8..88e6bed53d54 100644 * endpoint state is gone from hardware. usb_hcd_flush_endpoint() must * have been called previously. Use for set_configuration, set_interface, diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c -index 580604596499..4349b2c44df3 100644 +index cfcd4f2ffffa..a10a41cdc114 100644 --- a/drivers/usb/core/hub.c +++ b/drivers/usb/core/hub.c -@@ -5564,7 +5564,7 @@ static void port_event(struct usb_hub *hub, int port1) +@@ -5662,7 +5662,7 @@ static void port_event(struct usb_hub *hub, int port1) port_dev->over_current_count++; port_over_current_notify(port_dev); @@ -175776,7 +175955,7 @@ index 000000000000..cdc9963176e5 +test_main(); +0; diff --git a/drivers/usb/host/xhci-mem.c b/drivers/usb/host/xhci-mem.c -index a610a7524fef..bffd7e4dca7a 100644 +index fe0827e4701b..0a741d17ea96 100644 --- a/drivers/usb/host/xhci-mem.c +++ b/drivers/usb/host/xhci-mem.c @@ -98,6 +98,7 @@ static void xhci_free_segments_for_ring(struct xhci_hcd *xhci, @@ -175926,7 +176105,7 @@ index a610a7524fef..bffd7e4dca7a 100644 entry->rsvd = 0; seg = seg->next; } -@@ -2546,9 +2561,11 @@ int xhci_mem_init(struct xhci_hcd *xhci, gfp_t flags) +@@ -2549,9 +2564,11 @@ int xhci_mem_init(struct xhci_hcd *xhci, gfp_t flags) * Event ring setup: Allocate a normal ring, but also setup * the event ring segment table (ERST). Section 4.9.3. */ @@ -175940,7 +176119,7 @@ index a610a7524fef..bffd7e4dca7a 100644 if (!xhci->event_ring) goto fail; if (xhci_check_trb_in_td_math(xhci) < 0) -@@ -2561,7 +2578,7 @@ int xhci_mem_init(struct xhci_hcd *xhci, gfp_t flags) +@@ -2564,7 +2581,7 @@ int xhci_mem_init(struct xhci_hcd *xhci, gfp_t flags) /* set ERST count with the number of entries in the segment table */ val = readl(&xhci->ir_set->erst_size); val &= ERST_SIZE_MASK; @@ -175950,7 +176129,7 @@ index a610a7524fef..bffd7e4dca7a 100644 "// Write ERST size = %i to ir_set 0 (some bits preserved)", val); diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c -index 67291945de62..6eac092eee89 100644 +index a556f040af5f..a43e207df9ed 100644 --- a/drivers/usb/host/xhci-pci.c +++ b/drivers/usb/host/xhci-pci.c @@ -303,6 +303,9 @@ static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci) @@ -175964,7 +176143,7 @@ index 67291945de62..6eac092eee89 100644 if (pdev->vendor == PCI_VENDOR_ID_ZHAOXIN && diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c -index d99ea8492749..e30a5b18a6c9 100644 +index 96641f6411ec..924ff26fd456 100644 --- a/drivers/usb/host/xhci-ring.c +++ b/drivers/usb/host/xhci-ring.c @@ -87,15 +87,16 @@ static bool trb_is_link(union xhci_trb *trb) @@ -176027,7 +176206,7 @@ index d99ea8492749..e30a5b18a6c9 100644 state->new_deq_seg = new_seg; state->new_deq_ptr = new_deq; -@@ -2981,7 +2999,7 @@ irqreturn_t xhci_irq(struct usb_hcd *hcd) +@@ -2978,7 +2996,7 @@ irqreturn_t xhci_irq(struct usb_hcd *hcd) * that clears the EHB. */ while (xhci_handle_event(xhci) > 0) { @@ -176036,7 +176215,7 @@ index d99ea8492749..e30a5b18a6c9 100644 continue; xhci_update_erst_dequeue(xhci, event_ring_deq); event_ring_deq = xhci->event_ring->dequeue; -@@ -3413,14 +3431,15 @@ int xhci_queue_bulk_tx(struct xhci_hcd *xhci, gfp_t mem_flags, +@@ -3410,14 +3428,15 @@ int xhci_queue_bulk_tx(struct xhci_hcd *xhci, gfp_t mem_flags, unsigned int num_trbs; unsigned int start_cycle, num_sgs = 0; unsigned int enqd_len, block_len, trb_buff_len, full_len; @@ -176054,7 +176233,7 @@ index d99ea8492749..e30a5b18a6c9 100644 full_len = urb->transfer_buffer_length; /* If we have scatter/gather list, we use it. */ if (urb->num_sgs) { -@@ -3457,6 +3476,17 @@ int xhci_queue_bulk_tx(struct xhci_hcd *xhci, gfp_t mem_flags, +@@ -3454,6 +3473,17 @@ int xhci_queue_bulk_tx(struct xhci_hcd *xhci, gfp_t mem_flags, start_cycle = ring->cycle_state; send_addr = addr; @@ -176072,7 +176251,7 @@ index d99ea8492749..e30a5b18a6c9 100644 /* Queue the TRBs, even if they are zero-length */ for (enqd_len = 0; first_trb || enqd_len < full_len; enqd_len += trb_buff_len) { -@@ -3469,6 +3499,11 @@ int xhci_queue_bulk_tx(struct xhci_hcd *xhci, gfp_t mem_flags, +@@ -3466,6 +3496,11 @@ int xhci_queue_bulk_tx(struct xhci_hcd *xhci, gfp_t mem_flags, if (enqd_len + trb_buff_len > full_len) trb_buff_len = full_len - enqd_len; @@ -176084,7 +176263,7 @@ index d99ea8492749..e30a5b18a6c9 100644 /* Don't change the cycle bit of the first TRB until later */ if (first_trb) { first_trb = false; -@@ -4275,9 +4310,9 @@ void xhci_queue_new_dequeue_state(struct xhci_hcd *xhci, +@@ -4272,9 +4307,9 @@ void xhci_queue_new_dequeue_state(struct xhci_hcd *xhci, } ep = &xhci->devs[slot_id]->eps[ep_index]; if ((ep->ep_state & SET_DEQ_PENDING)) { @@ -176234,7 +176413,7 @@ index b37ddbb88b74..dd004e1690cc 100644 .enable_device = xhci_enable_device, .update_hub_device = xhci_update_hub_device, diff --git a/drivers/usb/host/xhci.h b/drivers/usb/host/xhci.h -index 7e92740221e1..1a5205179b76 100644 +index 878cde819072..72cd89e499f6 100644 --- a/drivers/usb/host/xhci.h +++ b/drivers/usb/host/xhci.h @@ -1622,6 +1622,7 @@ struct xhci_ring { @@ -176256,7 +176435,7 @@ index 7e92740221e1..1a5205179b76 100644 /* Initial allocated size of the ERST, in number of entries */ #define ERST_SIZE 64 /* Initial number of event segment rings allocated */ -@@ -1898,6 +1899,9 @@ struct xhci_hcd { +@@ -1897,6 +1898,9 @@ struct xhci_hcd { #define XHCI_EP_CTX_BROKEN_DCS BIT_ULL(43) #define XHCI_SUSPEND_RESUME_CLKS BIT_ULL(44) #define XHCI_RESET_TO_DEFAULT BIT_ULL(45) @@ -176422,7 +176601,7 @@ index 000000000000..14a0d9b03739 +MODULE_DESCRIPTION("Raspberry Pi mailbox based Backlight Driver"); +MODULE_LICENSE("GPL"); diff --git a/drivers/video/fbdev/Kconfig b/drivers/video/fbdev/Kconfig -index 9cb29c86e594..db41ea016b39 100644 +index a017befb1c4e..66f31c35c365 100644 --- a/drivers/video/fbdev/Kconfig +++ b/drivers/video/fbdev/Kconfig @@ -219,6 +219,20 @@ config FB_TILEBLITTING @@ -181970,7 +182149,7 @@ index 000000000000..3c7079237496 + +#endif /* _VC_MEM_H */ diff --git a/include/linux/clk.h b/include/linux/clk.h -index 1814eabb7c20..b57c97e6dd7b 100644 +index 12c85ba606ec..cda227c6bc44 100644 --- a/include/linux/clk.h +++ b/include/linux/clk.h @@ -15,6 +15,7 @@ @@ -181981,7 +182160,7 @@ index 1814eabb7c20..b57c97e6dd7b 100644 struct device_node; struct of_phandle_args; -@@ -828,6 +829,9 @@ int clk_save_context(void); +@@ -836,6 +837,9 @@ int clk_save_context(void); */ void clk_restore_context(void); @@ -182344,10 +182523,10 @@ index 000000000000..6ca874d332a8 + +#endif /* _PLAT_BCM2708_DMA_H */ diff --git a/include/linux/usb.h b/include/linux/usb.h -index bc5923772703..e83b06b7b7bb 100644 +index 8bc1119afc31..c4fe47615a56 100644 --- a/include/linux/usb.h +++ b/include/linux/usb.h -@@ -1848,6 +1848,8 @@ extern int usb_clear_halt(struct usb_device *dev, int pipe); +@@ -1850,6 +1850,8 @@ extern int usb_clear_halt(struct usb_device *dev, int pipe); extern int usb_reset_configuration(struct usb_device *dev); extern int usb_set_interface(struct usb_device *dev, int ifnum, int alternate); extern void usb_reset_endpoint(struct usb_device *dev, unsigned int epaddr); @@ -182357,7 +182536,7 @@ index bc5923772703..e83b06b7b7bb 100644 /* this request isn't really synchronous, but it belongs with the others */ extern int usb_driver_set_configuration(struct usb_device *udev, int config); diff --git a/include/linux/usb/hcd.h b/include/linux/usb/hcd.h -index c0cf20b19e63..a1bf853660c3 100644 +index 528be670006f..cc5bee8ad16b 100644 --- a/include/linux/usb/hcd.h +++ b/include/linux/usb/hcd.h @@ -385,6 +385,11 @@ struct hc_driver { @@ -183185,7 +183364,7 @@ index a184c4939438..773e24a1427d 100644 /* Image processing controls */ diff --git a/include/uapi/linux/videodev2.h b/include/uapi/linux/videodev2.h -index b28817c59fdf..5a220bff12c7 100644 +index 55b8c4b82479..9a252bb63a2a 100644 --- a/include/uapi/linux/videodev2.h +++ b/include/uapi/linux/videodev2.h @@ -82,6 +82,11 @@ @@ -183230,10 +183409,10 @@ index b28817c59fdf..5a220bff12c7 100644 /* priv field value to indicates that subsequent fields are valid. */ #define V4L2_PIX_FMT_PRIV_MAGIC 0xfeedcafe diff --git a/kernel/cgroup/cgroup.c b/kernel/cgroup/cgroup.c -index 3d778636f2e8..10959a9e73b1 100644 +index 21a46f616756..30024d8177de 100644 --- a/kernel/cgroup/cgroup.c +++ b/kernel/cgroup/cgroup.c -@@ -5924,6 +5924,9 @@ int __init cgroup_init_early(void) +@@ -5991,6 +5991,9 @@ int __init cgroup_init_early(void) return 0; } @@ -183243,7 +183422,7 @@ index 3d778636f2e8..10959a9e73b1 100644 /** * cgroup_init - cgroup initialization * -@@ -5962,6 +5965,12 @@ int __init cgroup_init(void) +@@ -6029,6 +6032,12 @@ int __init cgroup_init(void) mutex_unlock(&cgroup_mutex); @@ -183256,7 +183435,7 @@ index 3d778636f2e8..10959a9e73b1 100644 for_each_subsys(ss, ssid) { if (ss->early_init) { struct cgroup_subsys_state *css = -@@ -6578,6 +6587,10 @@ static int __init cgroup_disable(char *str) +@@ -6648,6 +6657,10 @@ static int __init cgroup_disable(char *str) strcmp(token, ss->legacy_name)) continue; @@ -183267,7 +183446,7 @@ index 3d778636f2e8..10959a9e73b1 100644 static_branch_disable(cgroup_subsys_enabled_key[i]); pr_info("Disabling %s control group subsystem\n", ss->name); -@@ -6587,6 +6600,31 @@ static int __init cgroup_disable(char *str) +@@ -6657,6 +6670,31 @@ static int __init cgroup_disable(char *str) } __setup("cgroup_disable=", cgroup_disable); @@ -183317,10 +183496,10 @@ index 100253d4909c..fb32fdc53687 100644 for (;;) { tmp = *p; diff --git a/mm/page_alloc.c b/mm/page_alloc.c -index f21365c92a98..aa8753f4d1b9 100644 +index 1ba392f11e6b..933083742dc5 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c -@@ -9223,8 +9223,6 @@ int alloc_contig_range(unsigned long start, unsigned long end, +@@ -9230,8 +9230,6 @@ int alloc_contig_range(unsigned long start, unsigned long end, /* Make sure the range is really isolated. */ if (test_pages_isolated(outer_start, end, 0)) { @@ -183446,10 +183625,10 @@ index d8e8d0084a22..0be41c8e8fd3 100644 cpuhp_remove_state(CPUHP_MM_ZSWP_MEM_PREPARE); dstmem_fail: diff --git a/net/bluetooth/smp.c b/net/bluetooth/smp.c -index db3d7c80017d..f0a7cedc0e74 100644 +index d9a378d12be6..469a1dea94fe 100644 --- a/net/bluetooth/smp.c +++ b/net/bluetooth/smp.c -@@ -883,16 +883,9 @@ static int tk_request(struct l2cap_conn *conn, u8 remote_oob, u8 auth, +@@ -884,16 +884,9 @@ static int tk_request(struct l2cap_conn *conn, u8 remote_oob, u8 auth, hcon->io_capability == HCI_IO_NO_INPUT_OUTPUT) smp->method = JUST_WORKS; @@ -183468,7 +183647,7 @@ index db3d7c80017d..f0a7cedc0e74 100644 return 0; } -@@ -2201,7 +2194,7 @@ static u8 smp_cmd_pairing_random(struct l2cap_conn *conn, struct sk_buff *skb) +@@ -2215,7 +2208,7 @@ static u8 smp_cmd_pairing_random(struct l2cap_conn *conn, struct sk_buff *skb) if (err) return SMP_UNSPECIFIED; @@ -183477,7 +183656,7 @@ index db3d7c80017d..f0a7cedc0e74 100644 if (hcon->out) { sc_dhkey_check(smp); SMP_ALLOW_CMD(smp, SMP_CMD_DHKEY_CHECK); -@@ -2216,9 +2209,6 @@ static u8 smp_cmd_pairing_random(struct l2cap_conn *conn, struct sk_buff *skb) +@@ -2230,9 +2223,6 @@ static u8 smp_cmd_pairing_random(struct l2cap_conn *conn, struct sk_buff *skb) confirm_hint = 0; confirm: @@ -196165,7 +196344,7 @@ index 000000000000..835d0f9420e7 +MODULE_DESCRIPTION("ASoC Raspberry Pi Hat generic digi driver for WM8804 based cards"); +MODULE_LICENSE("GPL v2"); diff --git a/sound/soc/codecs/Kconfig b/sound/soc/codecs/Kconfig -index f1c9e563994b..a5a27d0c3043 100644 +index 04a7070c78e2..9862f21ac717 100644 --- a/sound/soc/codecs/Kconfig +++ b/sound/soc/codecs/Kconfig @@ -100,12 +100,14 @@ config SND_SOC_ALL_CODECS @@ -196248,7 +196427,7 @@ index f1c9e563994b..a5a27d0c3043 100644 config SND_SOC_RT5631 tristate "Realtek ALC5631/RT5631 CODEC" depends on I2C -@@ -1349,6 +1364,9 @@ config SND_SOC_TFA9879 +@@ -1350,6 +1365,9 @@ config SND_SOC_TFA9879 tristate "NXP Semiconductors TFA9879 amplifier" depends on I2C @@ -196258,7 +196437,7 @@ index f1c9e563994b..a5a27d0c3043 100644 config SND_SOC_TLV320AIC23 tristate -@@ -1787,4 +1805,8 @@ config SND_SOC_TPA6130A2 +@@ -1788,4 +1806,8 @@ config SND_SOC_TPA6130A2 tristate "Texas Instruments TPA6130A2 headphone amplifier" depends on I2C @@ -199230,7 +199409,7 @@ index e9da95ebccc8..c17bb2eeda10 100644 dev_warn(codec_dai->dev, "ASoC: Failed to set DAI format: %d\n", ret); diff --git a/sound/usb/quirks-table.h b/sound/usb/quirks-table.h -index ec74aead0844..af53f79634de 100644 +index 97fe2fadcafb..aa89182feb1b 100644 --- a/sound/usb/quirks-table.h +++ b/sound/usb/quirks-table.h @@ -46,6 +46,15 @@ @@ -199274,5 +199453,5 @@ index 752422147fb3..977c3b33d640 100644 } -- -2.27.0 +2.33.0 diff --git a/raspberrypi-kernel.spec b/raspberrypi-kernel.spec index 4c458ed..0046dc8 100644 --- a/raspberrypi-kernel.spec +++ b/raspberrypi-kernel.spec @@ -2,13 +2,13 @@ %global KernelVer %{version}-%{release}.raspi.%{_target_cpu} -%global hulkrelease 183.0.0 +%global hulkrelease 201.0.0 %global debug_package %{nil} Name: raspberrypi-kernel Version: 5.10.0 -Release: %{hulkrelease}.19 +Release: %{hulkrelease}.20 Summary: Linux Kernel License: GPLv2 URL: http://www.kernel.org/ @@ -262,6 +262,8 @@ fi /usr/src/kernels/%{KernelVer} %changelog +* Thu May 30 2024 Yafen Fang - 5.10.0-201.0.0.20 +- update kernel version to openEuler 5.10.0-201.0.0 * Wed Jan 10 2024 heppen - 5.10.0-183.0.0.19 - add subpackage raspberrypi-kernel-devel