2021-08-21 08:54:34 +00:00
|
|
|
From 7782ca4dcb10a244ae476126220890a0843c439e Mon Sep 17 00:00:00 2001
|
|
|
|
From: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
|
|
|
Date: Wed, 6 Jan 2021 17:28:57 +0000
|
|
|
|
Subject: [PATCH] dt: Add a camera regulator node to all downstream Pi
|
|
|
|
platforms
|
|
|
|
|
|
|
|
The current firmware fixup of camera sensor overlays is not
|
|
|
|
particularly nice, and it stops you being able to load them
|
|
|
|
dynamically.
|
|
|
|
It's also incompatible with creating a simple DT that can be
|
|
|
|
loaded for both CAM1 and CAM0 on a CM as they would both
|
|
|
|
try to claim the one GPIO.
|
|
|
|
|
|
|
|
Almost all sensors have a hook of some form for a regulator, so
|
|
|
|
it's relatively straightforward to convert them all to use a
|
|
|
|
fixed regulator with GPIO control.
|
|
|
|
|
|
|
|
Add a fixed regulator node for each platform with the GPIO
|
|
|
|
correctly configured for the camera shutdown line. (The LED line
|
|
|
|
is ignored).
|
|
|
|
|
|
|
|
Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
|
|
|
---
|
|
|
|
arch/arm/boot/dts/bcm2708-rpi-b-plus.dts | 5 +++++
|
|
|
|
arch/arm/boot/dts/bcm2708-rpi-b-rev1.dts | 5 +++++
|
|
|
|
arch/arm/boot/dts/bcm2708-rpi-b.dts | 5 +++++
|
|
|
|
arch/arm/boot/dts/bcm2708-rpi-cm.dts | 15 +++++++++++++++
|
|
|
|
arch/arm/boot/dts/bcm2708-rpi-zero-w.dts | 5 +++++
|
|
|
|
arch/arm/boot/dts/bcm2708-rpi-zero.dts | 5 +++++
|
|
|
|
arch/arm/boot/dts/bcm2709-rpi-2-b.dts | 5 +++++
|
|
|
|
arch/arm/boot/dts/bcm2710-rpi-2-b.dts | 5 +++++
|
|
|
|
arch/arm/boot/dts/bcm2710-rpi-3-b-plus.dts | 5 +++++
|
|
|
|
arch/arm/boot/dts/bcm2710-rpi-3-b.dts | 5 +++++
|
|
|
|
arch/arm/boot/dts/bcm2710-rpi-cm3.dts | 15 +++++++++++++++
|
|
|
|
arch/arm/boot/dts/bcm2711-rpi-4-b.dts | 5 +++++
|
|
|
|
arch/arm/boot/dts/bcm2711-rpi-cm4.dts | 8 ++++++++
|
|
|
|
arch/arm/boot/dts/bcm283x-rpi-cam1-regulator.dtsi | 10 ++++++++++
|
|
|
|
14 files changed, 98 insertions(+)
|
|
|
|
create mode 100644 arch/arm/boot/dts/bcm283x-rpi-cam1-regulator.dtsi
|
|
|
|
|
|
|
|
--- a/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts
|
|
|
|
+++ b/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts
|
|
|
|
@@ -5,6 +5,7 @@
|
|
|
|
#include "bcm283x-rpi-smsc9514.dtsi"
|
|
|
|
#include "bcm283x-rpi-csi1-2lane.dtsi"
|
|
|
|
#include "bcm283x-rpi-i2c0mux_0_28.dtsi"
|
|
|
|
+#include "bcm283x-rpi-cam1-regulator.dtsi"
|
|
|
|
|
|
|
|
/ {
|
|
|
|
compatible = "raspberrypi,model-b-plus", "brcm,bcm2835";
|
|
|
|
@@ -111,6 +112,10 @@
|
|
|
|
pinctrl-0 = <&audio_pins>;
|
|
|
|
};
|
|
|
|
|
|
|
|
+&cam1_reg {
|
|
|
|
+ gpio = <&gpio 41 GPIO_ACTIVE_HIGH>;
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
/ {
|
|
|
|
__overrides__ {
|
|
|
|
act_led_gpio = <&act_led>,"gpios:4";
|
|
|
|
--- a/arch/arm/boot/dts/bcm2708-rpi-b-rev1.dts
|
|
|
|
+++ b/arch/arm/boot/dts/bcm2708-rpi-b-rev1.dts
|
|
|
|
@@ -4,6 +4,7 @@
|
|
|
|
#include "bcm2708-rpi.dtsi"
|
|
|
|
#include "bcm283x-rpi-smsc9512.dtsi"
|
|
|
|
#include "bcm283x-rpi-csi1-2lane.dtsi"
|
|
|
|
+#include "bcm283x-rpi-cam1-regulator.dtsi"
|
|
|
|
|
|
|
|
/ {
|
|
|
|
compatible = "raspberrypi,model-b", "brcm,bcm2835";
|
|
|
|
@@ -118,6 +119,10 @@ i2c_csi_dsi: &i2c1 {
|
|
|
|
pinctrl-0 = <&audio_pins>;
|
|
|
|
};
|
|
|
|
|
|
|
|
+&cam1_reg {
|
|
|
|
+ gpio = <&gpio 27 GPIO_ACTIVE_HIGH>;
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
/ {
|
|
|
|
__overrides__ {
|
|
|
|
act_led_gpio = <&act_led>,"gpios:4";
|
|
|
|
--- a/arch/arm/boot/dts/bcm2708-rpi-b.dts
|
|
|
|
+++ b/arch/arm/boot/dts/bcm2708-rpi-b.dts
|
|
|
|
@@ -5,6 +5,7 @@
|
|
|
|
#include "bcm283x-rpi-smsc9512.dtsi"
|
|
|
|
#include "bcm283x-rpi-csi1-2lane.dtsi"
|
|
|
|
#include "bcm283x-rpi-i2c0mux_0_28.dtsi"
|
|
|
|
+#include "bcm283x-rpi-cam1-regulator.dtsi"
|
|
|
|
|
|
|
|
/ {
|
|
|
|
compatible = "raspberrypi,model-b", "brcm,bcm2835";
|
|
|
|
@@ -105,6 +106,10 @@
|
|
|
|
pinctrl-0 = <&audio_pins>;
|
|
|
|
};
|
|
|
|
|
|
|
|
+&cam1_reg {
|
|
|
|
+ gpio = <&gpio 21 GPIO_ACTIVE_HIGH>;
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
/ {
|
|
|
|
__overrides__ {
|
|
|
|
act_led_gpio = <&act_led>,"gpios:4";
|
|
|
|
--- a/arch/arm/boot/dts/bcm2708-rpi-cm.dts
|
|
|
|
+++ b/arch/arm/boot/dts/bcm2708-rpi-cm.dts
|
|
|
|
@@ -8,6 +8,21 @@
|
|
|
|
/ {
|
|
|
|
compatible = "raspberrypi,compute-module", "brcm,bcm2835";
|
|
|
|
model = "Raspberry Pi Compute Module";
|
|
|
|
+
|
|
|
|
+ cam1_reg: cam1_reg {
|
|
|
|
+ compatible = "regulator-fixed";
|
|
|
|
+ regulator-name = "cam1-regulator";
|
|
|
|
+ gpio = <&gpio 2 GPIO_ACTIVE_HIGH>;
|
|
|
|
+ enable-active-high;
|
|
|
|
+ status = "disabled";
|
|
|
|
+ };
|
|
|
|
+ cam0_reg: cam0_reg {
|
|
|
|
+ compatible = "regulator-fixed";
|
|
|
|
+ regulator-name = "cam0-regulator";
|
|
|
|
+ gpio = <&gpio 30 GPIO_ACTIVE_HIGH>;
|
|
|
|
+ enable-active-high;
|
|
|
|
+ status = "disabled";
|
|
|
|
+ };
|
|
|
|
};
|
|
|
|
|
|
|
|
&uart0 {
|
|
|
|
--- a/arch/arm/boot/dts/bcm2708-rpi-zero-w.dts
|
|
|
|
+++ b/arch/arm/boot/dts/bcm2708-rpi-zero-w.dts
|
|
|
|
@@ -5,6 +5,7 @@
|
|
|
|
#include "bcm283x-rpi-csi1-2lane.dtsi"
|
|
|
|
#include "bcm283x-rpi-i2c0mux_0_28.dtsi"
|
|
|
|
#include "bcm2708-rpi-bt.dtsi"
|
|
|
|
+#include "bcm283x-rpi-cam1-regulator.dtsi"
|
|
|
|
|
|
|
|
/ {
|
|
|
|
compatible = "raspberrypi,model-zero-w", "brcm,bcm2835";
|
|
|
|
@@ -155,6 +156,10 @@
|
|
|
|
brcm,disable-headphones = <1>;
|
|
|
|
};
|
|
|
|
|
|
|
|
+&cam1_reg {
|
|
|
|
+ gpio = <&gpio 44 GPIO_ACTIVE_HIGH>;
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
/ {
|
|
|
|
__overrides__ {
|
|
|
|
act_led_gpio = <&act_led>,"gpios:4";
|
|
|
|
--- a/arch/arm/boot/dts/bcm2708-rpi-zero.dts
|
|
|
|
+++ b/arch/arm/boot/dts/bcm2708-rpi-zero.dts
|
|
|
|
@@ -4,6 +4,7 @@
|
|
|
|
#include "bcm2708-rpi.dtsi"
|
|
|
|
#include "bcm283x-rpi-csi1-2lane.dtsi"
|
|
|
|
#include "bcm283x-rpi-i2c0mux_0_28.dtsi"
|
|
|
|
+#include "bcm283x-rpi-cam1-regulator.dtsi"
|
|
|
|
|
|
|
|
/ {
|
|
|
|
compatible = "raspberrypi,model-zero", "brcm,bcm2835";
|
|
|
|
@@ -109,6 +110,10 @@
|
|
|
|
brcm,disable-headphones = <1>;
|
|
|
|
};
|
|
|
|
|
|
|
|
+&cam1_reg {
|
|
|
|
+ gpio = <&gpio 41 GPIO_ACTIVE_HIGH>;
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
/ {
|
|
|
|
__overrides__ {
|
|
|
|
act_led_gpio = <&act_led>,"gpios:4";
|
|
|
|
--- a/arch/arm/boot/dts/bcm2709-rpi-2-b.dts
|
|
|
|
+++ b/arch/arm/boot/dts/bcm2709-rpi-2-b.dts
|
|
|
|
@@ -5,6 +5,7 @@
|
|
|
|
#include "bcm283x-rpi-smsc9514.dtsi"
|
|
|
|
#include "bcm283x-rpi-csi1-2lane.dtsi"
|
|
|
|
#include "bcm283x-rpi-i2c0mux_0_28.dtsi"
|
|
|
|
+#include "bcm283x-rpi-cam1-regulator.dtsi"
|
|
|
|
|
|
|
|
/ {
|
|
|
|
compatible = "raspberrypi,2-model-b", "brcm,bcm2836";
|
|
|
|
@@ -111,6 +112,10 @@
|
|
|
|
pinctrl-0 = <&audio_pins>;
|
|
|
|
};
|
|
|
|
|
|
|
|
+&cam1_reg {
|
|
|
|
+ gpio = <&gpio 41 GPIO_ACTIVE_HIGH>;
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
/ {
|
|
|
|
__overrides__ {
|
|
|
|
act_led_gpio = <&act_led>,"gpios:4";
|
|
|
|
--- a/arch/arm/boot/dts/bcm2710-rpi-2-b.dts
|
|
|
|
+++ b/arch/arm/boot/dts/bcm2710-rpi-2-b.dts
|
|
|
|
@@ -5,6 +5,7 @@
|
|
|
|
#include "bcm283x-rpi-smsc9514.dtsi"
|
|
|
|
#include "bcm283x-rpi-csi1-2lane.dtsi"
|
|
|
|
#include "bcm283x-rpi-i2c0mux_0_28.dtsi"
|
|
|
|
+#include "bcm283x-rpi-cam1-regulator.dtsi"
|
|
|
|
|
|
|
|
/ {
|
|
|
|
compatible = "raspberrypi,2-model-b-rev2", "brcm,bcm2837";
|
|
|
|
@@ -111,6 +112,10 @@
|
|
|
|
pinctrl-0 = <&audio_pins>;
|
|
|
|
};
|
|
|
|
|
|
|
|
+&cam1_reg {
|
|
|
|
+ gpio = <&gpio 41 GPIO_ACTIVE_HIGH>;
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
/ {
|
|
|
|
__overrides__ {
|
|
|
|
act_led_gpio = <&act_led>,"gpios:4";
|
|
|
|
--- a/arch/arm/boot/dts/bcm2710-rpi-3-b-plus.dts
|
|
|
|
+++ b/arch/arm/boot/dts/bcm2710-rpi-3-b-plus.dts
|
|
|
|
@@ -6,6 +6,7 @@
|
|
|
|
#include "bcm283x-rpi-csi1-2lane.dtsi"
|
|
|
|
#include "bcm283x-rpi-i2c0mux_0_44.dtsi"
|
|
|
|
#include "bcm271x-rpi-bt.dtsi"
|
|
|
|
+#include "bcm283x-rpi-cam1-regulator.dtsi"
|
|
|
|
|
|
|
|
/ {
|
|
|
|
compatible = "raspberrypi,3-model-b-plus", "brcm,bcm2837";
|
|
|
|
@@ -176,6 +177,10 @@
|
|
|
|
microchip,downshift-after = <2>;
|
|
|
|
};
|
|
|
|
|
|
|
|
+&cam1_reg {
|
|
|
|
+ gpio = <&expgpio 5 GPIO_ACTIVE_HIGH>;
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
/ {
|
|
|
|
__overrides__ {
|
|
|
|
act_led_gpio = <&act_led>,"gpios:4";
|
|
|
|
--- a/arch/arm/boot/dts/bcm2710-rpi-3-b.dts
|
|
|
|
+++ b/arch/arm/boot/dts/bcm2710-rpi-3-b.dts
|
|
|
|
@@ -6,6 +6,7 @@
|
|
|
|
#include "bcm283x-rpi-csi1-2lane.dtsi"
|
|
|
|
#include "bcm283x-rpi-i2c0mux_0_44.dtsi"
|
|
|
|
#include "bcm271x-rpi-bt.dtsi"
|
|
|
|
+#include "bcm283x-rpi-cam1-regulator.dtsi"
|
|
|
|
|
|
|
|
/ {
|
|
|
|
compatible = "raspberrypi,3-model-b", "brcm,bcm2837";
|
|
|
|
@@ -185,6 +186,10 @@
|
|
|
|
pinctrl-0 = <&audio_pins>;
|
|
|
|
};
|
|
|
|
|
|
|
|
+&cam1_reg {
|
|
|
|
+ gpio = <&expgpio 5 GPIO_ACTIVE_HIGH>;
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
/ {
|
|
|
|
__overrides__ {
|
|
|
|
act_led_gpio = <&act_led>,"gpios:4";
|
|
|
|
--- a/arch/arm/boot/dts/bcm2710-rpi-cm3.dts
|
|
|
|
+++ b/arch/arm/boot/dts/bcm2710-rpi-cm3.dts
|
|
|
|
@@ -8,6 +8,21 @@
|
|
|
|
/ {
|
|
|
|
compatible = "raspberrypi,3-compute-module", "brcm,bcm2837";
|
|
|
|
model = "Raspberry Pi Compute Module 3";
|
|
|
|
+
|
|
|
|
+ cam1_reg: cam1_reg {
|
|
|
|
+ compatible = "regulator-fixed";
|
|
|
|
+ regulator-name = "cam1-regulator";
|
|
|
|
+ gpio = <&gpio 2 GPIO_ACTIVE_HIGH>;
|
|
|
|
+ enable-active-high;
|
|
|
|
+ status = "disabled";
|
|
|
|
+ };
|
|
|
|
+ cam0_reg: cam0_reg {
|
|
|
|
+ compatible = "regulator-fixed";
|
|
|
|
+ regulator-name = "cam0-regulator";
|
|
|
|
+ gpio = <&gpio 30 GPIO_ACTIVE_HIGH>;
|
|
|
|
+ enable-active-high;
|
|
|
|
+ status = "disabled";
|
|
|
|
+ };
|
|
|
|
};
|
|
|
|
|
|
|
|
&uart0 {
|
|
|
|
--- a/arch/arm/boot/dts/bcm2711-rpi-4-b.dts
|
|
|
|
+++ b/arch/arm/boot/dts/bcm2711-rpi-4-b.dts
|
2021-10-20 12:07:59 +00:00
|
|
|
@@ -320,6 +320,7 @@
|
2021-08-21 08:54:34 +00:00
|
|
|
#include "bcm2711-rpi.dtsi"
|
|
|
|
#include "bcm283x-rpi-csi1-2lane.dtsi"
|
|
|
|
#include "bcm283x-rpi-i2c0mux_0_44.dtsi"
|
|
|
|
+#include "bcm283x-rpi-cam1-regulator.dtsi"
|
|
|
|
|
|
|
|
/ {
|
|
|
|
chosen {
|
2021-10-20 12:07:59 +00:00
|
|
|
@@ -586,6 +587,10 @@
|
2021-08-21 08:54:34 +00:00
|
|
|
pinctrl-0 = <&audio_pins>;
|
|
|
|
};
|
|
|
|
|
|
|
|
+&cam1_reg {
|
|
|
|
+ gpio = <&expgpio 5 GPIO_ACTIVE_HIGH>;
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
/ {
|
|
|
|
__overrides__ {
|
|
|
|
act_led_gpio = <&act_led>,"gpios:4";
|
|
|
|
--- a/arch/arm/boot/dts/bcm2711-rpi-cm4.dts
|
|
|
|
+++ b/arch/arm/boot/dts/bcm2711-rpi-cm4.dts
|
|
|
|
@@ -327,6 +327,14 @@
|
|
|
|
};
|
|
|
|
|
|
|
|
/delete-node/ wifi-pwrseq;
|
|
|
|
+
|
|
|
|
+ cam0_reg: cam1_reg: cam1_reg {
|
|
|
|
+ compatible = "regulator-fixed";
|
|
|
|
+ regulator-name = "cam1-reg";
|
|
|
|
+ gpio = <&expgpio 5 GPIO_ACTIVE_HIGH>;
|
|
|
|
+ enable-active-high;
|
|
|
|
+ status = "disabled";
|
|
|
|
+ };
|
|
|
|
};
|
|
|
|
|
|
|
|
&mmcnr {
|
|
|
|
--- /dev/null
|
|
|
|
+++ b/arch/arm/boot/dts/bcm283x-rpi-cam1-regulator.dtsi
|
|
|
|
@@ -0,0 +1,10 @@
|
|
|
|
+// SPDX-License-Identifier: GPL-2.0
|
|
|
|
+
|
|
|
|
+/ {
|
|
|
|
+ cam1_reg: cam1_reg {
|
|
|
|
+ compatible = "regulator-fixed";
|
|
|
|
+ regulator-name = "cam1-reg";
|
|
|
|
+ enable-active-high;
|
|
|
|
+ status = "disabled";
|
|
|
|
+ };
|
|
|
|
+};
|