-
-
Notifications
You must be signed in to change notification settings - Fork 2.4k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
66 changed files
with
9,988 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
100 changes: 100 additions & 0 deletions
100
...kernel/archive/meson-6.13/0006-ARM-dts-amlogic-meson8b-switch-to-the-new-PWM-contro.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,100 @@ | ||
From 66e028c9df703d27af0b532b72278a558af19ddb Mon Sep 17 00:00:00 2001 | ||
From: Martin Blumenstingl <[email protected]> | ||
Date: Wed, 25 Dec 2024 12:16:38 +0100 | ||
Subject: [PATCH 006/126] ARM: dts: amlogic: meson8b: switch to the new PWM | ||
controller binding | ||
|
||
Use the new PWM controller binding which now relies on passing all | ||
clock inputs available on the SoC (instead of passing the "wanted" | ||
clock input for a given board). | ||
|
||
Signed-off-by: Martin Blumenstingl <[email protected]> | ||
--- | ||
arch/arm/boot/dts/amlogic/meson8b-ec100.dts | 2 -- | ||
arch/arm/boot/dts/amlogic/meson8b-mxq.dts | 2 -- | ||
arch/arm/boot/dts/amlogic/meson8b-odroidc1.dts | 2 -- | ||
arch/arm/boot/dts/amlogic/meson8b.dtsi | 18 +++++++++++++++--- | ||
4 files changed, 15 insertions(+), 9 deletions(-) | ||
|
||
diff --git a/arch/arm/boot/dts/amlogic/meson8b-ec100.dts b/arch/arm/boot/dts/amlogic/meson8b-ec100.dts | ||
index 18ea6592b..236999548 100644 | ||
--- a/arch/arm/boot/dts/amlogic/meson8b-ec100.dts | ||
+++ b/arch/arm/boot/dts/amlogic/meson8b-ec100.dts | ||
@@ -443,8 +443,6 @@ &pwm_cd { | ||
status = "okay"; | ||
pinctrl-0 = <&pwm_c1_pins>, <&pwm_d_pins>; | ||
pinctrl-names = "default"; | ||
- clocks = <&xtal>, <&xtal>; | ||
- clock-names = "clkin0", "clkin1"; | ||
}; | ||
|
||
&rtc { | ||
diff --git a/arch/arm/boot/dts/amlogic/meson8b-mxq.dts b/arch/arm/boot/dts/amlogic/meson8b-mxq.dts | ||
index fb28cb330..0bca0b33e 100644 | ||
--- a/arch/arm/boot/dts/amlogic/meson8b-mxq.dts | ||
+++ b/arch/arm/boot/dts/amlogic/meson8b-mxq.dts | ||
@@ -162,8 +162,6 @@ &pwm_cd { | ||
status = "okay"; | ||
pinctrl-0 = <&pwm_c1_pins>, <&pwm_d_pins>; | ||
pinctrl-names = "default"; | ||
- clocks = <&xtal>, <&xtal>; | ||
- clock-names = "clkin0", "clkin1"; | ||
}; | ||
|
||
&uart_AO { | ||
diff --git a/arch/arm/boot/dts/amlogic/meson8b-odroidc1.dts b/arch/arm/boot/dts/amlogic/meson8b-odroidc1.dts | ||
index 2aa012f38..1cd209320 100644 | ||
--- a/arch/arm/boot/dts/amlogic/meson8b-odroidc1.dts | ||
+++ b/arch/arm/boot/dts/amlogic/meson8b-odroidc1.dts | ||
@@ -347,8 +347,6 @@ &pwm_cd { | ||
status = "okay"; | ||
pinctrl-0 = <&pwm_c1_pins>, <&pwm_d_pins>; | ||
pinctrl-names = "default"; | ||
- clocks = <&xtal>, <&xtal>; | ||
- clock-names = "clkin0", "clkin1"; | ||
}; | ||
|
||
&rtc { | ||
diff --git a/arch/arm/boot/dts/amlogic/meson8b.dtsi b/arch/arm/boot/dts/amlogic/meson8b.dtsi | ||
index 9e02a97f8..0876611ce 100644 | ||
--- a/arch/arm/boot/dts/amlogic/meson8b.dtsi | ||
+++ b/arch/arm/boot/dts/amlogic/meson8b.dtsi | ||
@@ -403,8 +403,12 @@ analog_top: analog-top@81a8 { | ||
}; | ||
|
||
pwm_ef: pwm@86c0 { | ||
- compatible = "amlogic,meson8b-pwm"; | ||
+ compatible = "amlogic,meson8b-pwm-v2", "amlogic,meson8-pwm-v2"; | ||
reg = <0x86c0 0x10>; | ||
+ clocks = <&xtal>, | ||
+ <>, /* unknown/untested, the datasheet calls it "Video PLL" */ | ||
+ <&clkc CLKID_FCLK_DIV4>, | ||
+ <&clkc CLKID_FCLK_DIV3>; | ||
#pwm-cells = <3>; | ||
status = "disabled"; | ||
}; | ||
@@ -674,11 +678,19 @@ timer@600 { | ||
}; | ||
|
||
&pwm_ab { | ||
- compatible = "amlogic,meson8b-pwm"; | ||
+ compatible = "amlogic,meson8b-pwm-v2", "amlogic,meson8-pwm-v2"; | ||
+ clocks = <&xtal>, | ||
+ <>, /* unknown/untested, the datasheet calls it "Video PLL" */ | ||
+ <&clkc CLKID_FCLK_DIV4>, | ||
+ <&clkc CLKID_FCLK_DIV3>; | ||
}; | ||
|
||
&pwm_cd { | ||
- compatible = "amlogic,meson8b-pwm"; | ||
+ compatible = "amlogic,meson8b-pwm-v2", "amlogic,meson8-pwm-v2"; | ||
+ clocks = <&xtal>, | ||
+ <>, /* unknown/untested, the datasheet calls it "Video PLL" */ | ||
+ <&clkc CLKID_FCLK_DIV4>, | ||
+ <&clkc CLKID_FCLK_DIV3>; | ||
}; | ||
|
||
&rtc { | ||
-- | ||
2.48.1 | ||
|
86 changes: 86 additions & 0 deletions
86
...kernel/archive/meson-6.13/0016-drm-connector-add-mutex-to-protect-ELD-from-concurre.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,86 @@ | ||
From 250f94fef62c8315df28aa7220c32f8e88e35c02 Mon Sep 17 00:00:00 2001 | ||
From: Dmitry Baryshkov <[email protected]> | ||
Date: Fri, 6 Dec 2024 11:43:04 +0200 | ||
Subject: [PATCH 016/126] drm/connector: add mutex to protect ELD from | ||
concurrent access | ||
|
||
The connector->eld is accessed by the .get_eld() callback. This access | ||
can collide with the drm_edid_to_eld() updating the data at the same | ||
time. Add drm_connector.eld_mutex to protect the data from concurrenct | ||
access. Individual drivers are not updated (to reduce possible issues | ||
while applying the patch), maintainers are to find a best suitable way | ||
to lock that mutex while accessing the ELD data. | ||
|
||
Reviewed-by: Maxime Ripard <[email protected]> | ||
Link: https://patchwork.freedesktop.org/patch/msgid/[email protected] | ||
Signed-off-by: Dmitry Baryshkov <[email protected]> | ||
--- | ||
drivers/gpu/drm/drm_connector.c | 1 + | ||
drivers/gpu/drm/drm_edid.c | 6 ++++++ | ||
include/drm/drm_connector.h | 5 ++++- | ||
3 files changed, 11 insertions(+), 1 deletion(-) | ||
|
||
diff --git a/drivers/gpu/drm/drm_connector.c b/drivers/gpu/drm/drm_connector.c | ||
index fc35f47e2..bbdaaf702 100644 | ||
--- a/drivers/gpu/drm/drm_connector.c | ||
+++ b/drivers/gpu/drm/drm_connector.c | ||
@@ -277,6 +277,7 @@ static int __drm_connector_init(struct drm_device *dev, | ||
INIT_LIST_HEAD(&connector->probed_modes); | ||
INIT_LIST_HEAD(&connector->modes); | ||
mutex_init(&connector->mutex); | ||
+ mutex_init(&connector->eld_mutex); | ||
mutex_init(&connector->edid_override_mutex); | ||
mutex_init(&connector->hdmi.infoframes.lock); | ||
connector->edid_blob_ptr = NULL; | ||
diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c | ||
index 855beafb7..13bc4c290 100644 | ||
--- a/drivers/gpu/drm/drm_edid.c | ||
+++ b/drivers/gpu/drm/drm_edid.c | ||
@@ -5605,7 +5605,9 @@ EXPORT_SYMBOL(drm_edid_get_monitor_name); | ||
|
||
static void clear_eld(struct drm_connector *connector) | ||
{ | ||
+ mutex_lock(&connector->eld_mutex); | ||
memset(connector->eld, 0, sizeof(connector->eld)); | ||
+ mutex_unlock(&connector->eld_mutex); | ||
|
||
connector->latency_present[0] = false; | ||
connector->latency_present[1] = false; | ||
@@ -5657,6 +5659,8 @@ static void drm_edid_to_eld(struct drm_connector *connector, | ||
if (!drm_edid) | ||
return; | ||
|
||
+ mutex_lock(&connector->eld_mutex); | ||
+ | ||
mnl = get_monitor_name(drm_edid, &eld[DRM_ELD_MONITOR_NAME_STRING]); | ||
drm_dbg_kms(connector->dev, "[CONNECTOR:%d:%s] ELD monitor %s\n", | ||
connector->base.id, connector->name, | ||
@@ -5717,6 +5721,8 @@ static void drm_edid_to_eld(struct drm_connector *connector, | ||
drm_dbg_kms(connector->dev, "[CONNECTOR:%d:%s] ELD size %d, SAD count %d\n", | ||
connector->base.id, connector->name, | ||
drm_eld_size(eld), total_sad_count); | ||
+ | ||
+ mutex_unlock(&connector->eld_mutex); | ||
} | ||
|
||
static int _drm_edid_to_sad(const struct drm_edid *drm_edid, | ||
diff --git a/include/drm/drm_connector.h b/include/drm/drm_connector.h | ||
index e3fa43291..1e2b25e20 100644 | ||
--- a/include/drm/drm_connector.h | ||
+++ b/include/drm/drm_connector.h | ||
@@ -2001,8 +2001,11 @@ struct drm_connector { | ||
struct drm_encoder *encoder; | ||
|
||
#define MAX_ELD_BYTES 128 | ||
- /** @eld: EDID-like data, if present */ | ||
+ /** @eld: EDID-like data, if present, protected by @eld_mutex */ | ||
uint8_t eld[MAX_ELD_BYTES]; | ||
+ /** @eld_mutex: protection for concurrenct access to @eld */ | ||
+ struct mutex eld_mutex; | ||
+ | ||
/** @latency_present: AV delay info from ELD, if found */ | ||
bool latency_present[2]; | ||
/** | ||
-- | ||
2.48.1 | ||
|
Oops, something went wrong.