Add and configure the necessary nodes to enable the front camera
(Samsung S5KJN1), connected to CSIPHY 3.
Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Signed-off-by: Luca Weiss <luca.weiss@fairphone.com>
---
arch/arm64/boot/dts/qcom/kodiak.dtsi | 7 ++++
arch/arm64/boot/dts/qcom/qcm6490-fairphone-fp5.dts | 47 +++++++++++++++++++++-
2 files changed, 53 insertions(+), 1 deletion(-)
diff --git a/arch/arm64/boot/dts/qcom/kodiak.dtsi b/arch/arm64/boot/dts/qcom/kodiak.dtsi
index 343da1b18095..6cbf6ba5fbc0 100644
--- a/arch/arm64/boot/dts/qcom/kodiak.dtsi
+++ b/arch/arm64/boot/dts/qcom/kodiak.dtsi
@@ -5774,6 +5774,13 @@ tlmm: pinctrl@f100000 {
gpio-ranges = <&tlmm 0 0 175>;
wakeup-parent = <&pdc>;
+ cam_mclk3_default: cam-mclk3-default-state {
+ pins = "gpio67";
+ function = "cam_mclk";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
cci0_default: cci0-default-state {
pins = "gpio69", "gpio70";
function = "cci_i2c";
diff --git a/arch/arm64/boot/dts/qcom/qcm6490-fairphone-fp5.dts b/arch/arm64/boot/dts/qcom/qcm6490-fairphone-fp5.dts
index c9c24c36ba7e..aaba40478891 100644
--- a/arch/arm64/boot/dts/qcom/qcm6490-fairphone-fp5.dts
+++ b/arch/arm64/boot/dts/qcom/qcm6490-fairphone-fp5.dts
@@ -12,6 +12,7 @@
#include <dt-bindings/iio/qcom,spmi-adc7-pm7325.h>
#include <dt-bindings/iio/qcom,spmi-adc7-pmk8350.h>
#include <dt-bindings/leds/common.h>
+#include <dt-bindings/media/video-interfaces.h>
#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
#include <dt-bindings/regulator/qcom,rpmh-regulator.h>
#include <dt-bindings/sound/qcom,q6asm.h>
@@ -626,6 +627,24 @@ vreg_bob: bob {
};
};
+&camss {
+ vdda-phy-supply = <&vreg_l10c>;
+ vdda-pll-supply = <&vreg_l6b>;
+
+ status = "okay";
+
+ ports {
+ port@3 {
+ csiphy3_ep: endpoint {
+ clock-lanes = <7>;
+ data-lanes = <0 1 2 3>;
+ bus-type = <MEDIA_BUS_TYPE_CSI2_DPHY>;
+ remote-endpoint = <&camera_s5kjn1_ep>;
+ };
+ };
+ };
+};
+
&cci0 {
status = "okay";
};
@@ -666,7 +685,33 @@ &cci1 {
};
&cci1_i2c1 {
- /* S5KJN1SQ03 @ 10 */
+ camera@10 {
+ compatible = "samsung,s5kjn1";
+ reg = <0x10>;
+
+ vddio-supply = <&vreg_l6p>;
+ vddd-supply = <&vreg_l2p>;
+ vdda-supply = <&vreg_l3p>;
+
+ clocks = <&camcc CAM_CC_MCLK3_CLK>;
+ assigned-clocks = <&camcc CAM_CC_MCLK3_CLK>;
+ assigned-clock-rates = <24000000>;
+
+ reset-gpios = <&tlmm 78 GPIO_ACTIVE_LOW>;
+ pinctrl-0 = <&cam_mclk3_default>;
+ pinctrl-names = "default";
+
+ orientation = <0>; /* Front facing */
+ rotation = <270>;
+
+ port {
+ camera_s5kjn1_ep: endpoint {
+ data-lanes = <1 2 3 4>;
+ link-frequencies = /bits/ 64 <700000000>;
+ remote-endpoint = <&csiphy3_ep>;
+ };
+ };
+ };
eeprom@51 {
compatible = "giantec,gt24p128f", "atmel,24c128";
--
2.53.0
Hi Luca!
On 3/19/26 10:12, Luca Weiss wrote:
> Add and configure the necessary nodes to enable the front camera
> (Samsung S5KJN1), connected to CSIPHY 3.
>
> Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
> Signed-off-by: Luca Weiss <luca.weiss@fairphone.com>
> ---
> arch/arm64/boot/dts/qcom/kodiak.dtsi | 7 ++++
> arch/arm64/boot/dts/qcom/qcm6490-fairphone-fp5.dts | 47 +++++++++++++++++++++-
> 2 files changed, 53 insertions(+), 1 deletion(-)
>
> diff --git a/arch/arm64/boot/dts/qcom/kodiak.dtsi b/arch/arm64/boot/dts/qcom/kodiak.dtsi
> index 343da1b18095..6cbf6ba5fbc0 100644
> --- a/arch/arm64/boot/dts/qcom/kodiak.dtsi
> +++ b/arch/arm64/boot/dts/qcom/kodiak.dtsi
> @@ -5774,6 +5774,13 @@ tlmm: pinctrl@f100000 {
> gpio-ranges = <&tlmm 0 0 175>;
> wakeup-parent = <&pdc>;
>
> + cam_mclk3_default: cam-mclk3-default-state {
> + pins = "gpio67";
> + function = "cam_mclk";
> + drive-strength = <2>;
> + bias-disable;
> + };
> +
> cci0_default: cci0-default-state {
> pins = "gpio69", "gpio70";
> function = "cci_i2c";
> diff --git a/arch/arm64/boot/dts/qcom/qcm6490-fairphone-fp5.dts b/arch/arm64/boot/dts/qcom/qcm6490-fairphone-fp5.dts
> index c9c24c36ba7e..aaba40478891 100644
> --- a/arch/arm64/boot/dts/qcom/qcm6490-fairphone-fp5.dts
> +++ b/arch/arm64/boot/dts/qcom/qcm6490-fairphone-fp5.dts
> @@ -12,6 +12,7 @@
> #include <dt-bindings/iio/qcom,spmi-adc7-pm7325.h>
> #include <dt-bindings/iio/qcom,spmi-adc7-pmk8350.h>
> #include <dt-bindings/leds/common.h>
> +#include <dt-bindings/media/video-interfaces.h>
> #include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
> #include <dt-bindings/regulator/qcom,rpmh-regulator.h>
> #include <dt-bindings/sound/qcom,q6asm.h>
> @@ -626,6 +627,24 @@ vreg_bob: bob {
> };
> };
>
> +&camss {
> + vdda-phy-supply = <&vreg_l10c>;
> + vdda-pll-supply = <&vreg_l6b>;
> +
> + status = "okay";
> +
> + ports {
> + port@3 {
> + csiphy3_ep: endpoint {
> + clock-lanes = <7>;
Please remove this notorious and kind of senseless under the CAMSS context
'clock-lanes' property, unfortunately it gets copied over a lot...
> + data-lanes = <0 1 2 3>;
> + bus-type = <MEDIA_BUS_TYPE_CSI2_DPHY>;
> + remote-endpoint = <&camera_s5kjn1_ep>;
> + };
> + };
> + };
> +};
> +
> &cci0 {
> status = "okay";
> };
> @@ -666,7 +685,33 @@ &cci1 {
> };
>
> &cci1_i2c1 {
> - /* S5KJN1SQ03 @ 10 */
> + camera@10 {
> + compatible = "samsung,s5kjn1";
> + reg = <0x10>;
> +
> + vddio-supply = <&vreg_l6p>;
> + vddd-supply = <&vreg_l2p>;
> + vdda-supply = <&vreg_l3p>;
The list of supplies could be beautified by applying the alphanumerical sorting.
> +
> + clocks = <&camcc CAM_CC_MCLK3_CLK>;
> + assigned-clocks = <&camcc CAM_CC_MCLK3_CLK>;
> + assigned-clock-rates = <24000000>;
> +
> + reset-gpios = <&tlmm 78 GPIO_ACTIVE_LOW>;
> + pinctrl-0 = <&cam_mclk3_default>;
> + pinctrl-names = "default";
> +
> + orientation = <0>; /* Front facing */
> + rotation = <270>;
> +
> + port {
> + camera_s5kjn1_ep: endpoint {
> + data-lanes = <1 2 3 4>;
> + link-frequencies = /bits/ 64 <700000000>;
> + remote-endpoint = <&csiphy3_ep>;
> + };
> + };
> + };
>
> eeprom@51 {
> compatible = "giantec,gt24p128f", "atmel,24c128";
>
Nice to see that the sensor driver works for you!
Reviewed-by: Vladimir Zapolskiy <vladimir.zapolskiy@linaro.org>
--
Best wishes,
Vladimir
© 2016 - 2026 Red Hat, Inc.