Skip to content

Commit

Permalink
bcm27xx: update to latest RPi patches
Browse files Browse the repository at this point in the history
The patches were generated from the RPi repo with the following command:
git format-patch v6.6.36..rpi-6.6.y

Signed-off-by: Álvaro Fernández Rojas <[email protected]>
  • Loading branch information
Noltari committed Jul 5, 2024
1 parent 680944c commit e74ead2
Show file tree
Hide file tree
Showing 10 changed files with 495 additions and 20 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ Signed-off-by: Phil Elwell <[email protected]>

--- a/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c
+++ b/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c
@@ -466,8 +466,6 @@ static void axi_chan_block_xfer_start(st
@@ -389,8 +389,6 @@ static void axi_chan_block_xfer_start(st
return;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ Signed-off-by: Dom Cobley <[email protected]>

--- a/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c
+++ b/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c
@@ -917,6 +917,9 @@ dw_axi_dma_chan_prep_slave_sg(struct dma
@@ -834,6 +834,9 @@ dw_axi_dma_chan_prep_slave_sg(struct dma
mem = sg_dma_address(sg);
len = sg_dma_len(sg);
num_segments = DIV_ROUND_UP(sg_dma_len(sg), axi_block_len);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
From 5c0f94088e0694220a2f0d8ad6e8216b50a80f2e Mon Sep 17 00:00:00 2001
From: Jonathan Bell <[email protected]>
Date: Thu, 13 Jun 2024 15:01:02 +0100
Subject: [PATCH 1133/1145] drivers: mmc: sdhci-brcmstb: improve bcm2712 card
removal handling

If the controller is being reset, then the CQE needs to be reset as well.

For removable cards, CQHCI_SSC1 must specify a polling mode (CBC=0)
otherwise it's possible that the controller stops emitting periodic
CMD13s on card removal, without raising an error status interrupt.

Signed-off-by: Jonathan Bell <[email protected]>
---
drivers/mmc/host/sdhci-brcmstb.c | 19 ++++++++++++++++---
1 file changed, 16 insertions(+), 3 deletions(-)

--- a/drivers/mmc/host/sdhci-brcmstb.c
+++ b/drivers/mmc/host/sdhci-brcmstb.c
@@ -365,8 +365,21 @@ static void sdhci_brcmstb_cqe_enable(str

sdhci_cqe_enable(mmc);

- /* Reset CMD13 polling timer back to eMMC specification default */
- cqhci_writel(cq_host, 0x00011000, CQHCI_SSC1);
+ /*
+ * The controller resets this register to a very short default interval
+ * whenever CQHCI is disabled.
+ *
+ * For removable cards CBC needs to be clear or card removal can hang
+ * the CQE. In polling mode, a CIT of 0x4000 "cycles" seems to produce the best
+ * throughput.
+ *
+ * For nonremovable cards, the specification default of CBC=1 CIT=0x1000
+ * suffices.
+ */
+ if (mmc->caps & MMC_CAP_NONREMOVABLE)
+ cqhci_writel(cq_host, 0x00011000, CQHCI_SSC1);
+ else
+ cqhci_writel(cq_host, 0x00004000, CQHCI_SSC1);
}

static const struct cqhci_host_ops sdhci_brcmstb_cqhci_ops = {
@@ -386,7 +399,7 @@ static struct sdhci_ops sdhci_brcmstb_op
.set_clock = sdhci_bcm2712_set_clock,
.set_power = sdhci_brcmstb_set_power,
.set_bus_width = sdhci_set_bus_width,
- .reset = sdhci_reset,
+ .reset = brcmstb_reset,
.set_uhs_signaling = sdhci_set_uhs_signaling,
.init_sd_express = bcm2712_init_sd_express,
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,193 @@
From a1d3defcca200077e1e382fe049ca613d16efd2b Mon Sep 17 00:00:00 2001
From: Cavon Lee <[email protected]>
Date: Tue, 18 Jun 2024 14:01:23 +0800
Subject: [PATCH 1136/1145] feat: Add support for SunFounder PiPower 3 overlay
fix: Fix wrong Pironman 5 ir default pin number fix: Change space indentation
to tab

Signed-off-by: Cavon Lee <[email protected]>
---
arch/arm/boot/dts/overlays/Makefile | 1 +
arch/arm/boot/dts/overlays/README | 8 +-
.../overlays/sunfounder-pipower3-overlay.dts | 44 ++++++++++
.../overlays/sunfounder-pironman5-overlay.dts | 88 ++++++++++---------
4 files changed, 98 insertions(+), 43 deletions(-)
create mode 100644 arch/arm/boot/dts/overlays/sunfounder-pipower3-overlay.dts

--- a/arch/arm/boot/dts/overlays/Makefile
+++ b/arch/arm/boot/dts/overlays/Makefile
@@ -275,6 +275,7 @@ dtbo-$(CONFIG_ARCH_BCM2835) += \
ssd1306-spi.dtbo \
ssd1331-spi.dtbo \
ssd1351-spi.dtbo \
+ sunfounder-pipower3.dtbo \
sunfounder-pironman5.dtbo \
superaudioboard.dtbo \
sx150x.dtbo \
--- a/arch/arm/boot/dts/overlays/README
+++ b/arch/arm/boot/dts/overlays/README
@@ -4695,11 +4695,17 @@ Params: speed SPI bus
reset_pin GPIO pin for RESET (default 25)


+Name: sunfounder-pipower3
+Info: Overlay for SunFounder PiPower 3
+Load: dtoverlay=sunfounder-pipower3,<param>=<val>
+Params: poweroff_pin Change poweroff pin (default 26)
+
+
Name: sunfounder-pironman5
Info: Overlay for SunFounder Pironman 5
Load: dtoverlay=sunfounder-pironman5,<param>=<val>
Params: ir Enable IR or not (on or off, default on)
- ir_pins Change IR receiver pin (default 12)
+ ir_pins Change IR receiver pin (default 13)


Name: superaudioboard
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/sunfounder-pipower3-overlay.dts
@@ -0,0 +1,44 @@
+/dts-v1/;
+/plugin/;
+
+/ {
+ compatible = "brcm,bcm2835";
+
+ fragment@0 {
+ target-path = "/chosen";
+ __overlay__ {
+ power: power {
+ hat_current_supply = <5000>;
+ };
+ };
+ };
+ fragment@1 {
+ target = <&i2c1>;
+ __overlay__ {
+ status = "okay";
+ };
+ };
+ fragment@2 {
+ target-path = "/";
+ __overlay__ {
+ power_ctrl: power_ctrl {
+ compatible = "gpio-poweroff";
+ gpios = <&gpio 26 0>;
+ force;
+ };
+ };
+ };
+ fragment@3 {
+ target = <&gpio>;
+ __overlay__ {
+ power_ctrl_pins: power_ctrl_pins {
+ brcm,pins = <26>;
+ brcm,function = <1>; // out
+ };
+ };
+ };
+ __overrides__ {
+ poweroff_pin = <&power_ctrl>,"gpios:4",
+ <&power_ctrl_pins>,"brcm,pins:0";
+ };
+};
--- a/arch/arm/boot/dts/overlays/sunfounder-pironman5-overlay.dts
+++ b/arch/arm/boot/dts/overlays/sunfounder-pironman5-overlay.dts
@@ -2,50 +2,54 @@
/plugin/;

/ {
- compatible = "brcm,bcm2835";
+ compatible = "brcm,bcm2835";

- fragment@0 {
- target = <&i2c1>;
- __overlay__ {
- status = "okay";
- };
- };
- fragment@1 {
- target = <&spi0>;
- __overlay__ {
- status = "okay";
- };
- };
- fragment@2 {
- target-path = "/";
- __overlay__ {
- gpio_ir: ir-receiver@c {
- compatible = "gpio-ir-receiver";
- pinctrl-names = "default";
- pinctrl-0 = <&gpio_ir_pins>;
+ fragment@0 {
+ target = <&i2c1>;
+ __overlay__ {
+ status = "okay";
+ };
+ };
+ fragment@1 {
+ target = <&spi0>;
+ __overlay__ {
+ status = "okay";
+ };
+ };
+ fragment@2 {
+ target-path = "/";
+ __overlay__ {
+ gpio_ir: ir-receiver@d {
+ compatible = "gpio-ir-receiver";
+ pinctrl-names = "default";
+ pinctrl-0 = <&gpio_ir_pins>;

- // pin number, high or low
- gpios = <&gpio 12 1>;
+ // pin number, high or low
+ gpios = <&gpio 13 1>;

- // parameter for keymap name
- linux,rc-map-name = "rc-rc6-mce";
+ // parameter for keymap name
+ linux,rc-map-name = "rc-rc6-mce";

- status = "okay";
- };
- };
- };
- fragment@3 {
- target = <&gpio>;
- __overlay__ {
- gpio_ir_pins: gpio_ir_pins@c {
- brcm,pins = <12>;
- brcm,function = <0>;
- brcm,pull = <2>;
- };
- };
- };
- __overrides__ {
- ir = <&gpio_ir>,"status";
- ir_pins = <&gpio_ir>,"gpios:4", <&gpio_ir>,"reg:0", <&gpio_ir_pins>,"brcm,pins:0", <&gpio_ir_pins>,"reg:0";
- };
+ status = "okay";
+ };
+ };
+ };
+ fragment@3 {
+ target = <&gpio>;
+ __overlay__ {
+ gpio_ir_pins: gpio_ir_pins@d {
+ brcm,pins = <13>;
+ brcm,function = <0>;
+ brcm,pull = <2>;
+ };
+ };
+ };
+ __overrides__ {
+ ir = <&gpio_ir>,"status";
+ ir_pins =
+ <&gpio_ir>,"gpios:4",
+ <&gpio_ir>,"reg:0",
+ <&gpio_ir_pins>,"brcm,pins:0",
+ <&gpio_ir_pins>,"reg:0";
+ };
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
From cd92a9591833ea06d1f12391f6b027fcecf436a9 Mon Sep 17 00:00:00 2001
From: Ratchanan Srirattanamet <[email protected]>
Date: Tue, 18 Jun 2024 15:44:13 +0700
Subject: [PATCH 1137/1145] pwm: gpio-pwm: follow pwm_apply_might_sleep()
rename

Fixes: 03286093be68("drivers/gpio: Add a driver that wraps the PWM API as a GPIO controller")
Signed-off-by: Ratchanan Srirattanamet <[email protected]>
---
drivers/gpio/gpio-pwm.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

--- a/drivers/gpio/gpio-pwm.c
+++ b/drivers/gpio/gpio-pwm.c
@@ -34,7 +34,7 @@ static void pwm_gpio_set(struct gpio_chi

pwm_get_state(pwm_gpio->pwm[off], &state);
state.duty_cycle = val ? state.period : 0;
- pwm_apply_state(pwm_gpio->pwm[off], &state);
+ pwm_apply_might_sleep(pwm_gpio->pwm[off], &state);
}

static int pwm_gpio_parse_dt(struct pwm_gpio *pwm_gpio,
@@ -79,7 +79,7 @@ static int pwm_gpio_parse_dt(struct pwm_
pwm_init_state(pwm_gpio->pwm[i], &state);

state.duty_cycle = 0;
- pwm_apply_state(pwm_gpio->pwm[i], &state);
+ pwm_apply_might_sleep(pwm_gpio->pwm[i], &state);
}

pwm_gpio->gc.ngpio = num_gpios;
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
From da87f91ad8450ccc5274cd7b6ba8d823b396c96f Mon Sep 17 00:00:00 2001
From: Dave Stevenson <[email protected]>
Date: Tue, 18 Jun 2024 15:33:30 +0100
Subject: [PATCH 1138/1145] drm/bridge: panel: Ensure backlight is reachable

Ensure that the various options of modules vs builtin results
in being able to call into the backlight code.

https://github.com/raspberrypi/linux/issues/6198

Fixes: 573f8fd0abf1 ("drm/bridge: panel: Name an associated backlight device")
Signed-off-by: Dave Stevenson <[email protected]>
---
drivers/gpu/drm/bridge/panel.c | 2 ++
1 file changed, 2 insertions(+)

--- a/drivers/gpu/drm/bridge/panel.c
+++ b/drivers/gpu/drm/bridge/panel.c
@@ -87,8 +87,10 @@ static int panel_bridge_attach(struct dr
drm_connector_attach_encoder(&panel_bridge->connector,
bridge->encoder);

+#if IS_REACHABLE(CONFIG_BACKLIGHT_CLASS_DEVICE)
backlight_set_display_name(panel_bridge->panel->backlight,
panel_bridge->connector.name);
+#endif

if (bridge->dev->registered) {
if (connector->funcs->reset)
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
From 7af85d54e39733bb9a236b95ea5ed1ab8277d560 Mon Sep 17 00:00:00 2001
From: Dom Cobley <[email protected]>
Date: Tue, 11 Jun 2024 16:12:47 +0100
Subject: [PATCH 1141/1145] fs/ntfs3: Fix memory corruption when page_size
changes

The rework in fs/ntfs3: Reduce stack usage
changes log->page_size but doesn't change the associated
log->page_mask and log->page_bits.

That results in the bytes value in read_log_page
getting a negative value, which is bad when it is
passed to memcpy.

The kernel panic can be observed when connecting an
ntfs formatted drive that has previously been connected
to a Windows machine to a Raspberry Pi 5, which by defauilt
uses a 16K kernel pagesize.

Fixes: 865e7a7700d9 ("fs/ntfs3: Reduce stack usage")
Signed-off-by: Dom Cobley <[email protected]>
---
fs/ntfs3/fslog.c | 2 ++
1 file changed, 2 insertions(+)

--- a/fs/ntfs3/fslog.c
+++ b/fs/ntfs3/fslog.c
@@ -3907,6 +3907,8 @@ check_restart_area:
log->l_size = log->orig_file_size;
log->page_size = norm_file_page(t32, &log->l_size,
t32 == DefaultLogPageSize);
+ log->page_mask = log->page_size - 1;
+ log->page_bits = blksize_bits(log->page_size);
}

if (log->page_size != t32 ||
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
From d2813c02131b9ddf938277f4123da7ccbd113ea7 Mon Sep 17 00:00:00 2001
From: Phil Elwell <[email protected]>
Date: Mon, 24 Jun 2024 22:35:42 +0100
Subject: [PATCH 1142/1145] fixup! drivers: mmc: sdhci-brcmstb: bcm2712
supports HS400es and clock gating

Declaring auto-clockgate support for a host that can interface with
SDIO cards is a bug.

See: https://github.com/raspberrypi/linux/issues/6237

Signed-off-by: Phil Elwell <[email protected]>
---
drivers/mmc/host/sdhci-brcmstb.c | 1 -
1 file changed, 1 deletion(-)

--- a/drivers/mmc/host/sdhci-brcmstb.c
+++ b/drivers/mmc/host/sdhci-brcmstb.c
@@ -429,7 +429,6 @@ static const struct brcmstb_match_priv m
};

static const struct brcmstb_match_priv match_priv_2712 = {
- .flags = BRCMSTB_MATCH_FLAGS_HAS_CLOCK_GATE,
.hs400es = sdhci_brcmstb_hs400es,
.cfginit = sdhci_brcmstb_cfginit_2712,
.ops = &sdhci_brcmstb_ops_2712,
Loading

0 comments on commit e74ead2

Please sign in to comment.