* [PATCH v9 1/7] dt-bindings: media: qcom,sdm670-camss: Remove clock-lanes requirement
2026-02-17 0:27 [PATCH v9 0/7] media: i2c: IMX355 for the Pixel 3a Richard Acayan
@ 2026-02-17 0:27 ` Richard Acayan
2026-02-17 7:38 ` Krzysztof Kozlowski
2026-02-17 0:27 ` [PATCH v9 2/7] dt-bindings: media: i2c: Add Sony IMX355 Richard Acayan
` (5 subsequent siblings)
6 siblings, 1 reply; 16+ messages in thread
From: Richard Acayan @ 2026-02-17 0:27 UTC (permalink / raw)
To: Mauro Carvalho Chehab, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Robert Foss, Todor Tomov, Bryan O'Donoghue,
Vladimir Zapolskiy, Bjorn Andersson, Konrad Dybcio, Tianshu Qiu,
Sakari Ailus, linux-media, devicetree, linux-arm-msm
Cc: Robert Mader, David Heidelberg, phone-devel, Richard Acayan
The clock-lanes property has no effect on the hardware configuration, as
of commit 336136e197e2 ("media: dt-bindings: media: camss: Remove
clock-lane property"). Since boards with new camss support can omit the
property, remove it from the required lists.
Signed-off-by: Richard Acayan <mailingradian@gmail.com>
---
Documentation/devicetree/bindings/media/qcom,sdm670-camss.yaml | 3 ---
1 file changed, 3 deletions(-)
diff --git a/Documentation/devicetree/bindings/media/qcom,sdm670-camss.yaml b/Documentation/devicetree/bindings/media/qcom,sdm670-camss.yaml
index 35c40fe22376..38b308f441ec 100644
--- a/Documentation/devicetree/bindings/media/qcom,sdm670-camss.yaml
+++ b/Documentation/devicetree/bindings/media/qcom,sdm670-camss.yaml
@@ -124,7 +124,6 @@ properties:
maxItems: 4
required:
- - clock-lanes
- data-lanes
port@1:
@@ -147,7 +146,6 @@ properties:
maxItems: 4
required:
- - clock-lanes
- data-lanes
port@2:
@@ -170,7 +168,6 @@ properties:
maxItems: 4
required:
- - clock-lanes
- data-lanes
required:
--
2.53.0
^ permalink raw reply related [flat|nested] 16+ messages in thread* Re: [PATCH v9 1/7] dt-bindings: media: qcom,sdm670-camss: Remove clock-lanes requirement
2026-02-17 0:27 ` [PATCH v9 1/7] dt-bindings: media: qcom,sdm670-camss: Remove clock-lanes requirement Richard Acayan
@ 2026-02-17 7:38 ` Krzysztof Kozlowski
0 siblings, 0 replies; 16+ messages in thread
From: Krzysztof Kozlowski @ 2026-02-17 7:38 UTC (permalink / raw)
To: Richard Acayan
Cc: Mauro Carvalho Chehab, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Robert Foss, Todor Tomov, Bryan O'Donoghue,
Vladimir Zapolskiy, Bjorn Andersson, Konrad Dybcio, Tianshu Qiu,
Sakari Ailus, linux-media, devicetree, linux-arm-msm,
Robert Mader, David Heidelberg, phone-devel
On Mon, Feb 16, 2026 at 07:27:32PM -0500, Richard Acayan wrote:
> The clock-lanes property has no effect on the hardware configuration, as
> of commit 336136e197e2 ("media: dt-bindings: media: camss: Remove
> clock-lane property"). Since boards with new camss support can omit the
> property, remove it from the required lists.
>
> Signed-off-by: Richard Acayan <mailingradian@gmail.com>
> ---
> Documentation/devicetree/bindings/media/qcom,sdm670-camss.yaml | 3 ---
> 1 file changed, 3 deletions(-)
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH v9 2/7] dt-bindings: media: i2c: Add Sony IMX355
2026-02-17 0:27 [PATCH v9 0/7] media: i2c: IMX355 for the Pixel 3a Richard Acayan
2026-02-17 0:27 ` [PATCH v9 1/7] dt-bindings: media: qcom,sdm670-camss: Remove clock-lanes requirement Richard Acayan
@ 2026-02-17 0:27 ` Richard Acayan
2026-02-17 0:27 ` [PATCH v9 3/7] media: i2c: imx355: Support devicetree and power management Richard Acayan
` (4 subsequent siblings)
6 siblings, 0 replies; 16+ messages in thread
From: Richard Acayan @ 2026-02-17 0:27 UTC (permalink / raw)
To: Mauro Carvalho Chehab, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Robert Foss, Todor Tomov, Bryan O'Donoghue,
Vladimir Zapolskiy, Bjorn Andersson, Konrad Dybcio, Tianshu Qiu,
Sakari Ailus, linux-media, devicetree, linux-arm-msm
Cc: Robert Mader, David Heidelberg, phone-devel, Richard Acayan
The IMX355 camera sensor is a camera sensor that can be found as the
front camera in some smartphones, such as the Pixel 3, Pixel 3 XL, Pixel
3a, and Pixel 3a XL. It already has a driver, but needs support for
device tree. Document the IMX355 to support defining it in device tree.
Reviewed-by: Vladimir Zapolskiy <vladimir.zapolskiy@linaro.org>
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
Signed-off-by: Richard Acayan <mailingradian@gmail.com>
---
.../bindings/media/i2c/sony,imx355.yaml | 111 ++++++++++++++++++
1 file changed, 111 insertions(+)
create mode 100644 Documentation/devicetree/bindings/media/i2c/sony,imx355.yaml
diff --git a/Documentation/devicetree/bindings/media/i2c/sony,imx355.yaml b/Documentation/devicetree/bindings/media/i2c/sony,imx355.yaml
new file mode 100644
index 000000000000..6050d7e7dcfe
--- /dev/null
+++ b/Documentation/devicetree/bindings/media/i2c/sony,imx355.yaml
@@ -0,0 +1,111 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/media/i2c/sony,imx355.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Sony IMX355 Sensor
+
+maintainers:
+ - Richard Acayan <mailingradian@gmail.com>
+
+description:
+ The IMX355 sensor is a 3280x2464 image sensor, commonly found as the front
+ camera in smartphones.
+
+allOf:
+ - $ref: /schemas/media/video-interface-devices.yaml#
+
+properties:
+ compatible:
+ const: sony,imx355
+
+ reg:
+ maxItems: 1
+
+ clocks:
+ maxItems: 1
+
+ avdd-supply:
+ description: Analog power supply.
+
+ dvdd-supply:
+ description: Digital power supply.
+
+ dovdd-supply:
+ description: Interface power supply.
+
+ reset-gpios:
+ description: Reset GPIO (active low).
+ maxItems: 1
+
+ port:
+ $ref: /schemas/graph.yaml#/$defs/port-base
+ additionalProperties: false
+
+ properties:
+ endpoint:
+ $ref: /schemas/media/video-interfaces.yaml
+ unevaluatedProperties: false
+
+ properties:
+ data-lanes:
+ minItems: 4
+ maxItems: 4
+
+ required:
+ - link-frequencies
+
+ required:
+ - endpoint
+
+required:
+ - compatible
+ - reg
+ - clocks
+ - avdd-supply
+ - dvdd-supply
+ - dovdd-supply
+ - port
+
+unevaluatedProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/clock/qcom,camcc-sdm845.h>
+ #include <dt-bindings/gpio/gpio.h>
+
+ i2c {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ camera@1a {
+ compatible = "sony,imx355";
+ reg = <0x1a>;
+
+ clocks = <&camcc CAM_CC_MCLK2_CLK>;
+
+ assigned-clocks = <&camcc CAM_CC_MCLK2_CLK>;
+ assigned-clock-rates = <24000000>;
+
+ reset-gpios = <&tlmm 9 GPIO_ACTIVE_LOW>;
+
+ avdd-supply = <&cam_front_ldo>;
+ dvdd-supply = <&cam_front_ldo>;
+ dovdd-supply = <&cam_vio_ldo>;
+
+ pinctrl-names = "default";
+ pinctrl-0 = <&cam_front_default>;
+
+ rotation = <270>;
+ orientation = <0>;
+
+ port {
+ cam_front_endpoint: endpoint {
+ data-lanes = <1 2 3 4>;
+ link-frequencies = /bits/ 64 <360000000>;
+ remote-endpoint = <&camss_endpoint1>;
+ };
+ };
+ };
+ };
--
2.53.0
^ permalink raw reply related [flat|nested] 16+ messages in thread* [PATCH v9 3/7] media: i2c: imx355: Support devicetree and power management
2026-02-17 0:27 [PATCH v9 0/7] media: i2c: IMX355 for the Pixel 3a Richard Acayan
2026-02-17 0:27 ` [PATCH v9 1/7] dt-bindings: media: qcom,sdm670-camss: Remove clock-lanes requirement Richard Acayan
2026-02-17 0:27 ` [PATCH v9 2/7] dt-bindings: media: i2c: Add Sony IMX355 Richard Acayan
@ 2026-02-17 0:27 ` Richard Acayan
2026-02-17 0:27 ` [PATCH v9 4/7] media: i2c: imx355: Restrict data lanes to 4 Richard Acayan
` (3 subsequent siblings)
6 siblings, 0 replies; 16+ messages in thread
From: Richard Acayan @ 2026-02-17 0:27 UTC (permalink / raw)
To: Mauro Carvalho Chehab, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Robert Foss, Todor Tomov, Bryan O'Donoghue,
Vladimir Zapolskiy, Bjorn Andersson, Konrad Dybcio, Tianshu Qiu,
Sakari Ailus, linux-media, devicetree, linux-arm-msm
Cc: Robert Mader, David Heidelberg, phone-devel, Richard Acayan
A device tree compatible makes it possible for this driver to be used on
Open Firmware devices. Initialization of power-managed resources such as
the reset GPIO and voltage regulators can be specified in the device
tree and handled by the driver. Add support for this so the Pixel 3a can
use the driver.
Reviewed-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Reviewed-by: Vladimir Zapolskiy <vladimir.zapolskiy@linaro.org>
Signed-off-by: Richard Acayan <mailingradian@gmail.com>
---
drivers/media/i2c/imx355.c | 111 ++++++++++++++++++++++++++++++++++---
1 file changed, 103 insertions(+), 8 deletions(-)
diff --git a/drivers/media/i2c/imx355.c b/drivers/media/i2c/imx355.c
index 776107efe386..9ca87488c933 100644
--- a/drivers/media/i2c/imx355.c
+++ b/drivers/media/i2c/imx355.c
@@ -3,9 +3,13 @@
#include <linux/acpi.h>
#include <linux/clk.h>
+#include <linux/delay.h>
+#include <linux/gpio/consumer.h>
#include <linux/i2c.h>
#include <linux/module.h>
+#include <linux/of.h>
#include <linux/pm_runtime.h>
+#include <linux/regulator/consumer.h>
#include <linux/unaligned.h>
#include <media/v4l2-ctrls.h>
@@ -125,6 +129,15 @@ struct imx355 {
* Protect access to sensor v4l2 controls.
*/
struct mutex mutex;
+
+ struct gpio_desc *reset_gpio;
+ struct regulator_bulk_data *supplies;
+};
+
+static const struct regulator_bulk_data imx355_supplies[] = {
+ { .supply = "avdd" },
+ { .supply = "dvdd" },
+ { .supply = "dovdd" },
};
static const struct imx355_reg imx355_global_regs[] = {
@@ -1515,6 +1528,52 @@ static const struct v4l2_subdev_internal_ops imx355_internal_ops = {
.open = imx355_open,
};
+static int imx355_power_off(struct device *dev)
+{
+ struct i2c_client *client = container_of(dev, struct i2c_client, dev);
+ struct v4l2_subdev *sd = i2c_get_clientdata(client);
+ struct imx355 *imx355 = to_imx355(sd);
+
+ gpiod_set_value_cansleep(imx355->reset_gpio, 1);
+
+ regulator_bulk_disable(ARRAY_SIZE(imx355_supplies), imx355->supplies);
+ clk_disable_unprepare(imx355->clk);
+
+ return 0;
+}
+
+static int imx355_power_on(struct device *dev)
+{
+ struct i2c_client *client = container_of(dev, struct i2c_client, dev);
+ struct v4l2_subdev *sd = i2c_get_clientdata(client);
+ struct imx355 *imx355 = to_imx355(sd);
+ int ret;
+
+ ret = clk_prepare_enable(imx355->clk);
+ if (ret)
+ return dev_err_probe(dev, ret, "failed to enable clocks");
+
+ ret = regulator_bulk_enable(ARRAY_SIZE(imx355_supplies),
+ imx355->supplies);
+ if (ret) {
+ dev_err_probe(dev, ret, "failed to enable regulators");
+ goto error_disable_clocks;
+ }
+
+ usleep_range(1000, 2000);
+ gpiod_set_value_cansleep(imx355->reset_gpio, 0);
+ usleep_range(10000, 11000);
+
+ return 0;
+
+error_disable_clocks:
+ clk_disable_unprepare(imx355->clk);
+ return ret;
+}
+
+static DEFINE_RUNTIME_DEV_PM_OPS(imx355_pm_ops, imx355_power_off,
+ imx355_power_on, NULL);
+
/* Initialize control handlers */
static int imx355_init_controls(struct imx355 *imx355)
{
@@ -1689,16 +1748,26 @@ static int imx355_probe(struct i2c_client *client)
"external clock %lu is not supported\n",
freq);
- /* Initialize subdev */
- v4l2_i2c_subdev_init(&imx355->sd, client, &imx355_subdev_ops);
-
- /* Check module identity */
- ret = imx355_identify_module(imx355);
+ ret = devm_regulator_bulk_get_const(imx355->dev,
+ ARRAY_SIZE(imx355_supplies),
+ imx355_supplies,
+ &imx355->supplies);
if (ret) {
- dev_err(imx355->dev, "failed to find sensor: %d", ret);
+ dev_err_probe(imx355->dev, ret, "could not get regulators");
goto error_probe;
}
+ imx355->reset_gpio = devm_gpiod_get_optional(imx355->dev, "reset",
+ GPIOD_OUT_HIGH);
+ if (IS_ERR(imx355->reset_gpio)) {
+ ret = dev_err_probe(imx355->dev, PTR_ERR(imx355->reset_gpio),
+ "failed to get gpios");
+ goto error_probe;
+ }
+
+ /* Initialize subdev */
+ v4l2_i2c_subdev_init(&imx355->sd, client, &imx355_subdev_ops);
+
imx355->hwcfg = imx355_get_hwcfg(imx355->dev);
if (!imx355->hwcfg) {
dev_err(imx355->dev, "failed to get hwcfg");
@@ -1706,13 +1775,24 @@ static int imx355_probe(struct i2c_client *client)
goto error_probe;
}
+ ret = imx355_power_on(imx355->dev);
+ if (ret)
+ goto error_probe;
+
+ /* Check module identity */
+ ret = imx355_identify_module(imx355);
+ if (ret) {
+ dev_err(imx355->dev, "failed to find sensor: %d", ret);
+ goto error_power_off;
+ }
+
/* Set default mode to max resolution */
imx355->cur_mode = &supported_modes[0];
ret = imx355_init_controls(imx355);
if (ret) {
dev_err(imx355->dev, "failed to init controls: %d", ret);
- goto error_probe;
+ goto error_power_off;
}
/* Initialize subdev */
@@ -1752,6 +1832,9 @@ static int imx355_probe(struct i2c_client *client)
error_handler_free:
v4l2_ctrl_handler_free(imx355->sd.ctrl_handler);
+error_power_off:
+ imx355_power_off(imx355->dev);
+
error_probe:
mutex_destroy(&imx355->mutex);
@@ -1768,7 +1851,11 @@ static void imx355_remove(struct i2c_client *client)
v4l2_ctrl_handler_free(sd->ctrl_handler);
pm_runtime_disable(imx355->dev);
- pm_runtime_set_suspended(imx355->dev);
+
+ if (!pm_runtime_status_suspended(imx355->dev)) {
+ imx355_power_off(imx355->dev);
+ pm_runtime_set_suspended(imx355->dev);
+ }
mutex_destroy(&imx355->mutex);
}
@@ -1779,10 +1866,18 @@ static const struct acpi_device_id imx355_acpi_ids[] __maybe_unused = {
};
MODULE_DEVICE_TABLE(acpi, imx355_acpi_ids);
+static const struct of_device_id imx355_match_table[] = {
+ { .compatible = "sony,imx355", },
+ { /* sentinel */ }
+};
+MODULE_DEVICE_TABLE(of, imx355_match_table);
+
static struct i2c_driver imx355_i2c_driver = {
.driver = {
.name = "imx355",
.acpi_match_table = ACPI_PTR(imx355_acpi_ids),
+ .of_match_table = imx355_match_table,
+ .pm = &imx355_pm_ops,
},
.probe = imx355_probe,
.remove = imx355_remove,
--
2.53.0
^ permalink raw reply related [flat|nested] 16+ messages in thread* [PATCH v9 4/7] media: i2c: imx355: Restrict data lanes to 4
2026-02-17 0:27 [PATCH v9 0/7] media: i2c: IMX355 for the Pixel 3a Richard Acayan
` (2 preceding siblings ...)
2026-02-17 0:27 ` [PATCH v9 3/7] media: i2c: imx355: Support devicetree and power management Richard Acayan
@ 2026-02-17 0:27 ` Richard Acayan
2026-03-10 8:07 ` Sakari Ailus
2026-02-17 0:27 ` [PATCH v9 5/7] arm64: dts: qcom: sdm670: label the camss ports instead of endpoints Richard Acayan
` (2 subsequent siblings)
6 siblings, 1 reply; 16+ messages in thread
From: Richard Acayan @ 2026-02-17 0:27 UTC (permalink / raw)
To: Mauro Carvalho Chehab, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Robert Foss, Todor Tomov, Bryan O'Donoghue,
Vladimir Zapolskiy, Bjorn Andersson, Konrad Dybcio, Tianshu Qiu,
Sakari Ailus, linux-media, devicetree, linux-arm-msm
Cc: Robert Mader, David Heidelberg, phone-devel, Richard Acayan
The IMX355 sensor driver currently supports having 4 data lanes. There
can't be more or less, so check if the firmware specifies 4 lanes.
Existing ACPI hardware descriptions may not have the data lanes defined
so this check also accepts a placeholder of 0 lanes.
Suggested-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Link: https://lore.kernel.org/r/aW3uFcT1zmiF4GUP@kekkonen.localdomain
Signed-off-by: Richard Acayan <mailingradian@gmail.com>
---
drivers/media/i2c/imx355.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/drivers/media/i2c/imx355.c b/drivers/media/i2c/imx355.c
index 9ca87488c933..0d6aabea7d59 100644
--- a/drivers/media/i2c/imx355.c
+++ b/drivers/media/i2c/imx355.c
@@ -66,6 +66,9 @@
#define IMX355_EXT_CLK 19200000
#define IMX355_LINK_FREQ_INDEX 0
+/* number of data lanes */
+#define IMX355_DATA_LANES 4
+
struct imx355_reg {
u16 address;
u8 val;
@@ -1705,6 +1708,10 @@ static struct imx355_hwcfg *imx355_get_hwcfg(struct device *dev)
if (!cfg)
goto out_err;
+ if (bus_cfg.bus.mipi_csi2.num_data_lanes != 0
+ && bus_cfg.bus.mipi_csi2.num_data_lanes != IMX355_DATA_LANES)
+ goto out_err;
+
ret = v4l2_link_freq_to_bitmap(dev, bus_cfg.link_frequencies,
bus_cfg.nr_of_link_frequencies,
link_freq_menu_items,
--
2.53.0
^ permalink raw reply related [flat|nested] 16+ messages in thread* Re: [PATCH v9 4/7] media: i2c: imx355: Restrict data lanes to 4
2026-02-17 0:27 ` [PATCH v9 4/7] media: i2c: imx355: Restrict data lanes to 4 Richard Acayan
@ 2026-03-10 8:07 ` Sakari Ailus
0 siblings, 0 replies; 16+ messages in thread
From: Sakari Ailus @ 2026-03-10 8:07 UTC (permalink / raw)
To: Richard Acayan
Cc: Mauro Carvalho Chehab, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Robert Foss, Todor Tomov, Bryan O'Donoghue,
Vladimir Zapolskiy, Bjorn Andersson, Konrad Dybcio, Tianshu Qiu,
linux-media, devicetree, linux-arm-msm, Robert Mader,
David Heidelberg, phone-devel
Hi Richard,
On Mon, Feb 16, 2026 at 07:27:35PM -0500, Richard Acayan wrote:
> The IMX355 sensor driver currently supports having 4 data lanes. There
> can't be more or less, so check if the firmware specifies 4 lanes.
>
> Existing ACPI hardware descriptions may not have the data lanes defined
> so this check also accepts a placeholder of 0 lanes.
>
> Suggested-by: Sakari Ailus <sakari.ailus@linux.intel.com>
> Link: https://lore.kernel.org/r/aW3uFcT1zmiF4GUP@kekkonen.localdomain
> Signed-off-by: Richard Acayan <mailingradian@gmail.com>
> ---
> drivers/media/i2c/imx355.c | 7 +++++++
> 1 file changed, 7 insertions(+)
>
> diff --git a/drivers/media/i2c/imx355.c b/drivers/media/i2c/imx355.c
> index 9ca87488c933..0d6aabea7d59 100644
> --- a/drivers/media/i2c/imx355.c
> +++ b/drivers/media/i2c/imx355.c
> @@ -66,6 +66,9 @@
> #define IMX355_EXT_CLK 19200000
> #define IMX355_LINK_FREQ_INDEX 0
>
> +/* number of data lanes */
> +#define IMX355_DATA_LANES 4
> +
> struct imx355_reg {
> u16 address;
> u8 val;
> @@ -1705,6 +1708,10 @@ static struct imx355_hwcfg *imx355_get_hwcfg(struct device *dev)
> if (!cfg)
> goto out_err;
>
> + if (bus_cfg.bus.mipi_csi2.num_data_lanes != 0
The number of lanes should be available from system firmware, so no need
for this check.
> + && bus_cfg.bus.mipi_csi2.num_data_lanes != IMX355_DATA_LANES)
Indentation.
> + goto out_err;
> +
> ret = v4l2_link_freq_to_bitmap(dev, bus_cfg.link_frequencies,
> bus_cfg.nr_of_link_frequencies,
> link_freq_menu_items,
--
Regards,
Sakari Ailus
^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH v9 5/7] arm64: dts: qcom: sdm670: label the camss ports instead of endpoints
2026-02-17 0:27 [PATCH v9 0/7] media: i2c: IMX355 for the Pixel 3a Richard Acayan
` (3 preceding siblings ...)
2026-02-17 0:27 ` [PATCH v9 4/7] media: i2c: imx355: Restrict data lanes to 4 Richard Acayan
@ 2026-02-17 0:27 ` Richard Acayan
2026-02-17 0:27 ` [PATCH v9 6/7] arm64: dts: qcom: sdm670: add camera mclk pins Richard Acayan
2026-02-17 0:27 ` [PATCH v9 7/7] arm64: dts: qcom: sdm670-google-sargo: add imx355 front camera Richard Acayan
6 siblings, 0 replies; 16+ messages in thread
From: Richard Acayan @ 2026-02-17 0:27 UTC (permalink / raw)
To: Mauro Carvalho Chehab, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Robert Foss, Todor Tomov, Bryan O'Donoghue,
Vladimir Zapolskiy, Bjorn Andersson, Konrad Dybcio, Tianshu Qiu,
Sakari Ailus, linux-media, devicetree, linux-arm-msm
Cc: Robert Mader, David Heidelberg, phone-devel, Richard Acayan
Endpoints cannot be pre-defined since commit dcf6fb89e6f7 ("media: qcom:
camss: remove a check for unavailable CAMSS endpoint") was applied,
probing all endpoint nodes and requiring them to have a remote. There is
no sensible remote in the SoC devicetree because camera sensors are
board-specific.
The ports are meant to be extended by a board devicetree in order to
define fully configured endpoints and connect the ports to camera
sensors. For nodes that are only meaningful if extended, labels are
usually assigned. Label these ports so they can be extended directly.
Reviewed-by: Vladimir Zapolskiy <vladimir.zapolskiy@linaro.org>
Reviewed-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Signed-off-by: Richard Acayan <mailingradian@gmail.com>
---
arch/arm64/boot/dts/qcom/sdm670.dtsi | 18 +++---------------
1 file changed, 3 insertions(+), 15 deletions(-)
diff --git a/arch/arm64/boot/dts/qcom/sdm670.dtsi b/arch/arm64/boot/dts/qcom/sdm670.dtsi
index b8a8dcbdfbe3..3eb4eaf7b8d7 100644
--- a/arch/arm64/boot/dts/qcom/sdm670.dtsi
+++ b/arch/arm64/boot/dts/qcom/sdm670.dtsi
@@ -1776,28 +1776,16 @@ ports {
#address-cells = <1>;
#size-cells = <0>;
- port@0 {
+ camss_port0: port@0 {
reg = <0>;
-
- camss_endpoint0: endpoint {
- status = "disabled";
- };
};
- port@1 {
+ camss_port1: port@1 {
reg = <1>;
-
- camss_endpoint1: endpoint {
- status = "disabled";
- };
};
- port@2 {
+ camss_port2: port@2 {
reg = <2>;
-
- camss_endpoint2: endpoint {
- status = "disabled";
- };
};
};
};
--
2.53.0
^ permalink raw reply related [flat|nested] 16+ messages in thread* [PATCH v9 6/7] arm64: dts: qcom: sdm670: add camera mclk pins
2026-02-17 0:27 [PATCH v9 0/7] media: i2c: IMX355 for the Pixel 3a Richard Acayan
` (4 preceding siblings ...)
2026-02-17 0:27 ` [PATCH v9 5/7] arm64: dts: qcom: sdm670: label the camss ports instead of endpoints Richard Acayan
@ 2026-02-17 0:27 ` Richard Acayan
2026-02-17 0:27 ` [PATCH v9 7/7] arm64: dts: qcom: sdm670-google-sargo: add imx355 front camera Richard Acayan
6 siblings, 0 replies; 16+ messages in thread
From: Richard Acayan @ 2026-02-17 0:27 UTC (permalink / raw)
To: Mauro Carvalho Chehab, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Robert Foss, Todor Tomov, Bryan O'Donoghue,
Vladimir Zapolskiy, Bjorn Andersson, Konrad Dybcio, Tianshu Qiu,
Sakari Ailus, linux-media, devicetree, linux-arm-msm
Cc: Robert Mader, David Heidelberg, phone-devel, Richard Acayan
The camera subsystem is added for the SoC common devicetree, but the
mclk pins should also be common across the SoC. Add the mclk pins for
the cameras.
Suggested-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Link: https://lore.kernel.org/r/5135823c-f2e4-4873-9e3a-9d190cac0113@oss.qualcomm.com
Reviewed-by: Vladimir Zapolskiy <vladimir.zapolskiy@linaro.org>
Reviewed-by: Bryan O'Donoghue <bod@kernel.org>
Reviewed-by: David Heidelberg <david@ixit.cz>
Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Signed-off-by: Richard Acayan <mailingradian@gmail.com>
---
arch/arm64/boot/dts/qcom/sdm670.dtsi | 28 ++++++++++++++++++++++++++++
1 file changed, 28 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/sdm670.dtsi b/arch/arm64/boot/dts/qcom/sdm670.dtsi
index 3eb4eaf7b8d7..f21e60a6a2ef 100644
--- a/arch/arm64/boot/dts/qcom/sdm670.dtsi
+++ b/arch/arm64/boot/dts/qcom/sdm670.dtsi
@@ -1196,6 +1196,34 @@ tlmm: pinctrl@3400000 {
gpio-ranges = <&tlmm 0 0 151>;
wakeup-parent = <&pdc>;
+ cam_mclk0_default: cam-mclk0-default-state {
+ pins = "gpio13";
+ function = "cam_mclk";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ cam_mclk1_default: cam-mclk1-default-state {
+ pins = "gpio14";
+ function = "cam_mclk";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ cam_mclk2_default: cam-mclk2-default-state {
+ pins = "gpio15";
+ function = "cam_mclk";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ cam_mclk3_default: cam-mclk3-default-state {
+ pins = "gpio16";
+ function = "cam_mclk";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
cci0_default: cci0-default-state {
pins = "gpio17", "gpio18";
function = "cci_i2c";
--
2.53.0
^ permalink raw reply related [flat|nested] 16+ messages in thread* [PATCH v9 7/7] arm64: dts: qcom: sdm670-google-sargo: add imx355 front camera
2026-02-17 0:27 [PATCH v9 0/7] media: i2c: IMX355 for the Pixel 3a Richard Acayan
` (5 preceding siblings ...)
2026-02-17 0:27 ` [PATCH v9 6/7] arm64: dts: qcom: sdm670: add camera mclk pins Richard Acayan
@ 2026-02-17 0:27 ` Richard Acayan
2026-03-11 2:25 ` Richard Acayan
` (2 more replies)
6 siblings, 3 replies; 16+ messages in thread
From: Richard Acayan @ 2026-02-17 0:27 UTC (permalink / raw)
To: Mauro Carvalho Chehab, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Robert Foss, Todor Tomov, Bryan O'Donoghue,
Vladimir Zapolskiy, Bjorn Andersson, Konrad Dybcio, Tianshu Qiu,
Sakari Ailus, linux-media, devicetree, linux-arm-msm
Cc: Robert Mader, David Heidelberg, phone-devel, Richard Acayan
The Sony IMX355 is the front camera on the Pixel 3a, mounted in portrait
mode. It is connected to CSIPHY1 and CCI I2C1, and uses MCLK2. Add
support for it.
Co-developed-by: Robert Mader <robert.mader@collabora.com>
Signed-off-by: Robert Mader <robert.mader@collabora.com>
Signed-off-by: Richard Acayan <mailingradian@gmail.com>
Reviewed-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Reviewed-by: Vladimir Zapolskiy <vladimir.zapolskiy@linaro.org>
Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
---
.../boot/dts/qcom/sdm670-google-sargo.dts | 95 +++++++++++++++++++
1 file changed, 95 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/sdm670-google-sargo.dts b/arch/arm64/boot/dts/qcom/sdm670-google-sargo.dts
index ed55646ca419..e925cba0381f 100644
--- a/arch/arm64/boot/dts/qcom/sdm670-google-sargo.dts
+++ b/arch/arm64/boot/dts/qcom/sdm670-google-sargo.dts
@@ -172,6 +172,34 @@ vreg_s2b_1p05: vreg-s2b-regulator {
regulator-min-microvolt = <1050000>;
regulator-max-microvolt = <1050000>;
};
+
+ cam_front_ldo: cam-front-ldo-regulator {
+ compatible = "regulator-fixed";
+ regulator-name = "cam_front_ldo";
+ regulator-min-microvolt = <1352000>;
+ regulator-max-microvolt = <1352000>;
+ regulator-enable-ramp-delay = <135>;
+
+ gpios = <&pm660l_gpios 4 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+
+ pinctrl-0 = <&cam_front_ldo_pin>;
+ pinctrl-names = "default";
+ };
+
+ cam_vio_ldo: cam-vio-ldo-regulator {
+ compatible = "regulator-fixed";
+ regulator-name = "cam_vio_ldo";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-enable-ramp-delay = <233>;
+
+ gpios = <&pm660_gpios 13 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+
+ pinctrl-0 = <&cam_vio_pin>;
+ pinctrl-names = "default";
+ };
};
&apps_rsc {
@@ -392,6 +420,59 @@ vreg_bob: bob {
};
};
+&camss {
+ vdda-phy-supply = <&vreg_l1a_1p225>;
+ vdda-pll-supply = <&vreg_s6a_0p87>;
+
+ status = "okay";
+};
+
+&camss_port1 {
+ camss_endpoint1: endpoint {
+ data-lanes = <0 1 2 3>;
+ remote-endpoint = <&cam_front_endpoint>;
+ };
+};
+
+&cci {
+ pinctrl-0 = <&cci1_default>;
+ pinctrl-1 = <&cci1_sleep>;
+ pinctrl-names = "default", "sleep";
+
+ status = "okay";
+};
+
+&cci_i2c1 {
+ camera@1a {
+ compatible = "sony,imx355";
+ reg = <0x1a>;
+
+ clocks = <&camcc CAM_CC_MCLK2_CLK>;
+
+ assigned-clocks = <&camcc CAM_CC_MCLK2_CLK>;
+ assigned-clock-rates = <19200000>;
+
+ reset-gpios = <&tlmm 9 GPIO_ACTIVE_LOW>;
+
+ avdd-supply = <&cam_front_ldo>;
+ dvdd-supply = <&cam_front_ldo>;
+ dovdd-supply = <&cam_vio_ldo>;
+
+ pinctrl-0 = <&cam_mclk2_default>;
+ pinctrl-names = "default";
+
+ rotation = <270>;
+ orientation = <0>;
+
+ port {
+ cam_front_endpoint: endpoint {
+ link-frequencies = /bits/ 64 <360000000>;
+ remote-endpoint = <&camss_endpoint1>;
+ };
+ };
+ };
+};
+
&gcc {
protected-clocks = <GCC_QSPI_CORE_CLK>,
<GCC_QSPI_CORE_CLK_SRC>,
@@ -490,6 +571,14 @@ &pm660_charger {
status = "okay";
};
+&pm660_gpios {
+ cam_vio_pin: cam-vio-state {
+ pins = "gpio13";
+ function = "normal";
+ power-source = <0>;
+ };
+};
+
&pm660_rradc {
status = "okay";
};
@@ -508,6 +597,12 @@ led-0 {
};
&pm660l_gpios {
+ cam_front_ldo_pin: cam-front-state {
+ pins = "gpio4";
+ function = "normal";
+ power-source = <0>;
+ };
+
vol_up_pin: vol-up-state {
pins = "gpio7";
function = "normal";
--
2.53.0
^ permalink raw reply related [flat|nested] 16+ messages in thread* Re: [PATCH v9 7/7] arm64: dts: qcom: sdm670-google-sargo: add imx355 front camera
2026-02-17 0:27 ` [PATCH v9 7/7] arm64: dts: qcom: sdm670-google-sargo: add imx355 front camera Richard Acayan
@ 2026-03-11 2:25 ` Richard Acayan
2026-03-11 19:59 ` David Heidelberg
2026-03-13 18:26 ` David Heidelberg
2 siblings, 0 replies; 16+ messages in thread
From: Richard Acayan @ 2026-03-11 2:25 UTC (permalink / raw)
To: Mauro Carvalho Chehab, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Robert Foss, Todor Tomov, Bryan O'Donoghue,
Vladimir Zapolskiy, Bjorn Andersson, Konrad Dybcio, Tianshu Qiu,
Sakari Ailus, linux-media, devicetree, linux-arm-msm
Cc: Robert Mader, David Heidelberg, phone-devel
On Mon, Feb 16, 2026 at 07:27:38PM -0500, Richard Acayan wrote:
> The Sony IMX355 is the front camera on the Pixel 3a, mounted in portrait
> mode. It is connected to CSIPHY1 and CCI I2C1, and uses MCLK2. Add
> support for it.
>
> Co-developed-by: Robert Mader <robert.mader@collabora.com>
> Signed-off-by: Robert Mader <robert.mader@collabora.com>
> Signed-off-by: Richard Acayan <mailingradian@gmail.com>
> Reviewed-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
> Reviewed-by: Vladimir Zapolskiy <vladimir.zapolskiy@linaro.org>
> Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
> ---
> .../boot/dts/qcom/sdm670-google-sargo.dts | 95 +++++++++++++++++++
> 1 file changed, 95 insertions(+)
>
(snip)
> +
> +&cci_i2c1 {
> + camera@1a {
> + compatible = "sony,imx355";
> + reg = <0x1a>;
> +
> + clocks = <&camcc CAM_CC_MCLK2_CLK>;
> +
> + assigned-clocks = <&camcc CAM_CC_MCLK2_CLK>;
> + assigned-clock-rates = <19200000>;
> +
> + reset-gpios = <&tlmm 9 GPIO_ACTIVE_LOW>;
> +
> + avdd-supply = <&cam_front_ldo>;
> + dvdd-supply = <&cam_front_ldo>;
> + dovdd-supply = <&cam_vio_ldo>;
> +
> + pinctrl-0 = <&cam_mclk2_default>;
> + pinctrl-names = "default";
> +
> + rotation = <270>;
> + orientation = <0>;
> +
> + port {
> + cam_front_endpoint: endpoint {
> + link-frequencies = /bits/ 64 <360000000>;
> + remote-endpoint = <&camss_endpoint1>;
> + };
This also needs data-lanes.
^ permalink raw reply [flat|nested] 16+ messages in thread* Re: [PATCH v9 7/7] arm64: dts: qcom: sdm670-google-sargo: add imx355 front camera
2026-02-17 0:27 ` [PATCH v9 7/7] arm64: dts: qcom: sdm670-google-sargo: add imx355 front camera Richard Acayan
2026-03-11 2:25 ` Richard Acayan
@ 2026-03-11 19:59 ` David Heidelberg
2026-03-13 18:26 ` David Heidelberg
2 siblings, 0 replies; 16+ messages in thread
From: David Heidelberg @ 2026-03-11 19:59 UTC (permalink / raw)
To: Richard Acayan, Mauro Carvalho Chehab, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Robert Foss, Todor Tomov,
Bryan O'Donoghue, Vladimir Zapolskiy, Bjorn Andersson,
Konrad Dybcio, Tianshu Qiu, Sakari Ailus, linux-media, devicetree,
linux-arm-msm
Cc: Robert Mader, phone-devel
On 17/02/2026 01:27, Richard Acayan wrote:
> The Sony IMX355 is the front camera on the Pixel 3a, mounted in portrait
> mode. It is connected to CSIPHY1 and CCI I2C1, and uses MCLK2. Add
> support for it.
>
> Co-developed-by: Robert Mader <robert.mader@collabora.com>
> Signed-off-by: Robert Mader <robert.mader@collabora.com>
> Signed-off-by: Richard Acayan <mailingradian@gmail.com>
> Reviewed-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
> Reviewed-by: Vladimir Zapolskiy <vladimir.zapolskiy@linaro.org>
> Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
> ---
> .../boot/dts/qcom/sdm670-google-sargo.dts | 95 +++++++++++++++++++
> 1 file changed, 95 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/qcom/sdm670-google-sargo.dts b/arch/arm64/boot/dts/qcom/sdm670-google-sargo.dts
> index ed55646ca419..e925cba0381f 100644
> --- a/arch/arm64/boot/dts/qcom/sdm670-google-sargo.dts
> +++ b/arch/arm64/boot/dts/qcom/sdm670-google-sargo.dts
> @@ -172,6 +172,34 @@ vreg_s2b_1p05: vreg-s2b-regulator {
> regulator-min-microvolt = <1050000>;
> regulator-max-microvolt = <1050000>;
> };
> +
> + cam_front_ldo: cam-front-ldo-regulator {
> + compatible = "regulator-fixed";
> + regulator-name = "cam_front_ldo";
> + regulator-min-microvolt = <1352000>;
> + regulator-max-microvolt = <1352000>;
> + regulator-enable-ramp-delay = <135>;
> +
> + gpios = <&pm660l_gpios 4 GPIO_ACTIVE_HIGH>;
> + enable-active-high;
> +
> + pinctrl-0 = <&cam_front_ldo_pin>;
> + pinctrl-names = "default";
> + };
> +
[...]
> +
> +&cci_i2c1 {
> + camera@1a {
> + compatible = "sony,imx355";
> + reg = <0x1a>;
> +
> + clocks = <&camcc CAM_CC_MCLK2_CLK>;
> +
> + assigned-clocks = <&camcc CAM_CC_MCLK2_CLK>;
> + assigned-clock-rates = <19200000>;
> +
> + reset-gpios = <&tlmm 9 GPIO_ACTIVE_LOW>;
> +
> + avdd-supply = <&cam_front_ldo>;
> + dvdd-supply = <&cam_front_ldo>;
It's unlikely that one supply is used both for digital and analog supply?
I see downstream does it, but I don't think it's correct.
> + dovdd-supply = <&cam_vio_ldo>;
> +
> + pinctrl-0 = <&cam_mclk2_default>;
> + pinctrl-names = "default";
> +
> + rotation = <270>;
> + orientation = <0>;
> +
> + port {
> + cam_front_endpoint: endpoint {
> + link-frequencies = /bits/ 64 <360000000>;
> + remote-endpoint = <&camss_endpoint1>;
> + };
> + };
> + };
> +};
> +
> &gcc {
> protected-clocks = <GCC_QSPI_CORE_CLK>,
> <GCC_QSPI_CORE_CLK_SRC>,
> @@ -490,6 +571,14 @@ &pm660_charger {
> status = "okay";
> };
>
> +&pm660_gpios {
> + cam_vio_pin: cam-vio-state {
> + pins = "gpio13";
> + function = "normal";
> + power-source = <0>;
> + };
> +};
> +
> &pm660_rradc {
> status = "okay";
> };
> @@ -508,6 +597,12 @@ led-0 {
> };
>
> &pm660l_gpios {
> + cam_front_ldo_pin: cam-front-state {
> + pins = "gpio4";
> + function = "normal";
> + power-source = <0>;
> + };
> +
> vol_up_pin: vol-up-state {
> pins = "gpio7";
> function = "normal";
--
David Heidelberg
^ permalink raw reply [flat|nested] 16+ messages in thread* Re: [PATCH v9 7/7] arm64: dts: qcom: sdm670-google-sargo: add imx355 front camera
2026-02-17 0:27 ` [PATCH v9 7/7] arm64: dts: qcom: sdm670-google-sargo: add imx355 front camera Richard Acayan
2026-03-11 2:25 ` Richard Acayan
2026-03-11 19:59 ` David Heidelberg
@ 2026-03-13 18:26 ` David Heidelberg
2026-03-24 2:05 ` Richard Acayan
2 siblings, 1 reply; 16+ messages in thread
From: David Heidelberg @ 2026-03-13 18:26 UTC (permalink / raw)
To: Richard Acayan, Mauro Carvalho Chehab, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Robert Foss, Todor Tomov,
Bryan O'Donoghue, Vladimir Zapolskiy, Bjorn Andersson,
Konrad Dybcio, Tianshu Qiu, Sakari Ailus, Robert Mader
Cc: phone-devel, linux-arm-msm, devicetree, linux-media
On 17/02/2026 01:27, Richard Acayan wrote:
[...]
> +&cci_i2c1 {
> + camera@1a {
> + compatible = "sony,imx355";
> + reg = <0x1a>;
> +
> + clocks = <&camcc CAM_CC_MCLK2_CLK>;
> +
> + assigned-clocks = <&camcc CAM_CC_MCLK2_CLK>;
> + assigned-clock-rates = <19200000>;
Extract from #sdm670-mainline:erebion.eu discussion:
The imx355 can operate on 24 MHz (on both Pixel 3 and 3a), but Linux kernel
driver can operate only with 19.2 MHz.
I assume it would be worth it mention at least by comment here.
David
> +
> + reset-gpios = <&tlmm 9 GPIO_ACTIVE_LOW>;
> +
> + avdd-supply = <&cam_front_ldo>;
> + dvdd-supply = <&cam_front_ldo>;
> + dovdd-supply = <&cam_vio_ldo>;
> +
> + pinctrl-0 = <&cam_mclk2_default>;
> + pinctrl-names = "default";
> +
> + rotation = <270>;
> + orientation = <0>;
> +
> + port {
> + cam_front_endpoint: endpoint {
> + link-frequencies = /bits/ 64 <360000000>;
> + remote-endpoint = <&camss_endpoint1>;
> + };
> + };
> + };
> +};
> +
> &gcc {
> protected-clocks = <GCC_QSPI_CORE_CLK>,
> <GCC_QSPI_CORE_CLK_SRC>,
> @@ -490,6 +571,14 @@ &pm660_charger {
> status = "okay";
> };
>
> +&pm660_gpios {
> + cam_vio_pin: cam-vio-state {
> + pins = "gpio13";
> + function = "normal";
> + power-source = <0>;
> + };
> +};
> +
> &pm660_rradc {
> status = "okay";
> };
> @@ -508,6 +597,12 @@ led-0 {
> };
>
> &pm660l_gpios {
> + cam_front_ldo_pin: cam-front-state {
> + pins = "gpio4";
> + function = "normal";
> + power-source = <0>;
> + };
> +
> vol_up_pin: vol-up-state {
> pins = "gpio7";
> function = "normal";
--
David Heidelberg
^ permalink raw reply [flat|nested] 16+ messages in thread* Re: [PATCH v9 7/7] arm64: dts: qcom: sdm670-google-sargo: add imx355 front camera
2026-03-13 18:26 ` David Heidelberg
@ 2026-03-24 2:05 ` Richard Acayan
2026-03-24 9:35 ` David Heidelberg
0 siblings, 1 reply; 16+ messages in thread
From: Richard Acayan @ 2026-03-24 2:05 UTC (permalink / raw)
To: David Heidelberg
Cc: Mauro Carvalho Chehab, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Robert Foss, Todor Tomov, Bryan O'Donoghue,
Vladimir Zapolskiy, Bjorn Andersson, Konrad Dybcio, Tianshu Qiu,
Sakari Ailus, Robert Mader, phone-devel, linux-arm-msm,
devicetree, linux-media
On Fri, Mar 13, 2026 at 07:26:47PM +0100, David Heidelberg wrote:
> On 17/02/2026 01:27, Richard Acayan wrote:
> [...]
>
> > +&cci_i2c1 {
> > + camera@1a {
> > + compatible = "sony,imx355";
> > + reg = <0x1a>;
> > +
> > + clocks = <&camcc CAM_CC_MCLK2_CLK>;
> > +
> > + assigned-clocks = <&camcc CAM_CC_MCLK2_CLK>;
> > + assigned-clock-rates = <19200000>;
>
> Extract from #sdm670-mainline:erebion.eu discussion:
> The imx355 can operate on 24 MHz (on both Pixel 3 and 3a), but Linux kernel
> driver can operate only with 19.2 MHz.
>
> I assume it would be worth it mention at least by comment here.
This might set the series back because the devicetree isn't meant to be
written for specific software, but it's included in v11 because you
already asked twice.
The frequency could also be stated as having "better software support"
in general without mentioning Linux as the reason.
^ permalink raw reply [flat|nested] 16+ messages in thread* Re: [PATCH v9 7/7] arm64: dts: qcom: sdm670-google-sargo: add imx355 front camera
2026-03-24 2:05 ` Richard Acayan
@ 2026-03-24 9:35 ` David Heidelberg
2026-03-24 10:57 ` Sakari Ailus
0 siblings, 1 reply; 16+ messages in thread
From: David Heidelberg @ 2026-03-24 9:35 UTC (permalink / raw)
To: Richard Acayan
Cc: Mauro Carvalho Chehab, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Robert Foss, Todor Tomov, Bryan O'Donoghue,
Vladimir Zapolskiy, Bjorn Andersson, Konrad Dybcio, Tianshu Qiu,
Sakari Ailus, Robert Mader, phone-devel, linux-arm-msm,
devicetree, linux-media
On 24/03/2026 03:05, Richard Acayan wrote:
> On Fri, Mar 13, 2026 at 07:26:47PM +0100, David Heidelberg wrote:
>> On 17/02/2026 01:27, Richard Acayan wrote:
>> [...]
>>
>>> +&cci_i2c1 {
>>> + camera@1a {
>>> + compatible = "sony,imx355";
>>> + reg = <0x1a>;
>>> +
>>> + clocks = <&camcc CAM_CC_MCLK2_CLK>;
>>> +
>>> + assigned-clocks = <&camcc CAM_CC_MCLK2_CLK>;
>>> + assigned-clock-rates = <19200000>;
>>
>> Extract from #sdm670-mainline:erebion.eu discussion:
>> The imx355 can operate on 24 MHz (on both Pixel 3 and 3a), but Linux kernel
>> driver can operate only with 19.2 MHz.
>>
>> I assume it would be worth it mention at least by comment here.
>
> This might set the series back because the devicetree isn't meant to be
> written for specific software, but it's included in v11 because you
> already asked twice.
>
I would say node with lower clock frequency is still much better than nothing or
placeholder saying "i2c camera here". Instead we'll have small placeholder that
value can be bumped to 24 MHz. Important is this can be easily improved when at
least one consumer of the device-tree gains support.
We have very scarce support of cameras on mobile phones in mainline, thus
leaving a comment that HW can do 24 MHz is reasonable compromise IMHO.
I personally got confused why Android sets higher clock, thus it may happen to
other people looking at Pixel 3a as an example for their imx363 bring-up.
David
> The frequency could also be stated as having "better software support"
> in general without mentioning Linux as the reason.
--
David Heidelberg
^ permalink raw reply [flat|nested] 16+ messages in thread* Re: [PATCH v9 7/7] arm64: dts: qcom: sdm670-google-sargo: add imx355 front camera
2026-03-24 9:35 ` David Heidelberg
@ 2026-03-24 10:57 ` Sakari Ailus
0 siblings, 0 replies; 16+ messages in thread
From: Sakari Ailus @ 2026-03-24 10:57 UTC (permalink / raw)
To: David Heidelberg
Cc: Richard Acayan, Mauro Carvalho Chehab, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Robert Foss, Todor Tomov,
Bryan O'Donoghue, Vladimir Zapolskiy, Bjorn Andersson,
Konrad Dybcio, Tianshu Qiu, Robert Mader, phone-devel,
linux-arm-msm, devicetree, linux-media
Hi David, Richard,
On Tue, Mar 24, 2026 at 10:35:24AM +0100, David Heidelberg wrote:
>
>
> On 24/03/2026 03:05, Richard Acayan wrote:
> > On Fri, Mar 13, 2026 at 07:26:47PM +0100, David Heidelberg wrote:
> > > On 17/02/2026 01:27, Richard Acayan wrote:
> > > [...]
> > >
> > > > +&cci_i2c1 {
> > > > + camera@1a {
> > > > + compatible = "sony,imx355";
> > > > + reg = <0x1a>;
> > > > +
> > > > + clocks = <&camcc CAM_CC_MCLK2_CLK>;
> > > > +
> > > > + assigned-clocks = <&camcc CAM_CC_MCLK2_CLK>;
> > > > + assigned-clock-rates = <19200000>;
> > >
> > > Extract from #sdm670-mainline:erebion.eu discussion:
> > > The imx355 can operate on 24 MHz (on both Pixel 3 and 3a), but Linux kernel
> > > driver can operate only with 19.2 MHz.
> > >
> > > I assume it would be worth it mention at least by comment here.
> >
> > This might set the series back because the devicetree isn't meant to be
> > written for specific software, but it's included in v11 because you
> > already asked twice.
> >
>
> I would say node with lower clock frequency is still much better than
> nothing or placeholder saying "i2c camera here". Instead we'll have small
> placeholder that value can be bumped to 24 MHz. Important is this can be
> easily improved when at least one consumer of the device-tree gains support.
>
> We have very scarce support of cameras on mobile phones in mainline, thus
> leaving a comment that HW can do 24 MHz is reasonable compromise IMHO.
The bindings could document the supported frequency range.
In DTS it may make sense to set the frequency the vendor uses as it may
affect the link frequencies (albeit I guess they're the same in this
case?).
>
> I personally got confused why Android sets higher clock, thus it may happen
> to other people looking at Pixel 3a as an example for their imx363 bring-up.
>
> David
>
> > The frequency could also be stated as having "better software support"
> > in general without mentioning Linux as the reason.
>
--
Regards,
Sakari Ailus
^ permalink raw reply [flat|nested] 16+ messages in thread