* arm64: dts: qcom: qrb2210-rb1: Add Qualcomm RB1 Vision kit
@ 2025-09-26 7:34 Loic Poulain
2025-09-26 7:34 ` [PATCH v2 1/3] media: i2c: ov9282: Fix reset-gpio logical state Loic Poulain
` (2 more replies)
0 siblings, 3 replies; 14+ messages in thread
From: Loic Poulain @ 2025-09-26 7:34 UTC (permalink / raw)
To: andersson, konradybcio, dave.stevenson, sakari.ailus
Cc: linux-arm-msm, devicetree, linux-media, mchehab, conor+dt, robh,
Loic Poulain
This series adds support for Qualcomm RB1 vision kit board/mezzanine.
- Add support for the missing camera PMIC PM8008, which is present on
the RB1 core kit.
- Fix the logical state handling of the reset pin in the PM8008 driver.
- Add the RB1 Vision Mezzanine device tree overlay to enable camera.
---
Changes in v2:
- Use correct reset gpio polarity (active-low)
- Remove unecessary pm8008 always-on props
- Address various nits
---
Loic Poulain (3):
media: i2c: ov9282: Fix reset-gpio logical state
arm64: dts: qcom: qrb2210-rb1: Add PM8008 node
arm64: dts: qcom: qrb2210-rb1: Add overlay for vision mezzanine
arch/arm64/boot/dts/qcom/Makefile | 5 ++
.../qcom/qrb2210-rb1-vision-mezzanine.dtso | 76 +++++++++++++++++++
arch/arm64/boot/dts/qcom/qrb2210-rb1.dts | 75 ++++++++++++++++++
drivers/media/i2c/ov9282.c | 8 +-
4 files changed, 160 insertions(+), 4 deletions(-)
create mode 100644 arch/arm64/boot/dts/qcom/qrb2210-rb1-vision-mezzanine.dtso
--
2.34.1
^ permalink raw reply [flat|nested] 14+ messages in thread
* [PATCH v2 1/3] media: i2c: ov9282: Fix reset-gpio logical state
2025-09-26 7:34 arm64: dts: qcom: qrb2210-rb1: Add Qualcomm RB1 Vision kit Loic Poulain
@ 2025-09-26 7:34 ` Loic Poulain
2025-09-27 10:29 ` Bryan O'Donoghue
` (2 more replies)
2025-09-26 7:34 ` [PATCH v2 2/3] arm64: dts: qcom: qrb2210-rb1: Add PM8008 node Loic Poulain
2025-09-26 7:34 ` [PATCH v2 3/3] arm64: dts: qcom: qrb2210-rb1: Add overlay for vision mezzanine Loic Poulain
2 siblings, 3 replies; 14+ messages in thread
From: Loic Poulain @ 2025-09-26 7:34 UTC (permalink / raw)
To: andersson, konradybcio, dave.stevenson, sakari.ailus
Cc: linux-arm-msm, devicetree, linux-media, mchehab, conor+dt, robh,
Loic Poulain
Ensure reset state is low in the power-on state and high in the
power-off state (assert reset). Note that the polarity is abstracted
by the GPIO subsystem, so the logic level reflects the intended reset
behavior.
This breaks backward compatibility for any downstream dts using the
wrong polarity.
Signed-off-by: Loic Poulain <loic.poulain@oss.qualcomm.com>
---
drivers/media/i2c/ov9282.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/media/i2c/ov9282.c b/drivers/media/i2c/ov9282.c
index c882a021cf18..fb6fcba503c8 100644
--- a/drivers/media/i2c/ov9282.c
+++ b/drivers/media/i2c/ov9282.c
@@ -1127,7 +1127,7 @@ static int ov9282_parse_hw_config(struct ov9282 *ov9282)
/* Request optional reset pin */
ov9282->reset_gpio = devm_gpiod_get_optional(ov9282->dev, "reset",
- GPIOD_OUT_LOW);
+ GPIOD_OUT_HIGH);
if (IS_ERR(ov9282->reset_gpio)) {
dev_err(ov9282->dev, "failed to get reset gpio %ld",
PTR_ERR(ov9282->reset_gpio));
@@ -1238,7 +1238,7 @@ static int ov9282_power_on(struct device *dev)
usleep_range(400, 600);
- gpiod_set_value_cansleep(ov9282->reset_gpio, 1);
+ gpiod_set_value_cansleep(ov9282->reset_gpio, 0);
ret = clk_prepare_enable(ov9282->inclk);
if (ret) {
@@ -1261,7 +1261,7 @@ static int ov9282_power_on(struct device *dev)
error_clk:
clk_disable_unprepare(ov9282->inclk);
error_reset:
- gpiod_set_value_cansleep(ov9282->reset_gpio, 0);
+ gpiod_set_value_cansleep(ov9282->reset_gpio, 1);
regulator_bulk_disable(OV9282_NUM_SUPPLIES, ov9282->supplies);
@@ -1279,7 +1279,7 @@ static int ov9282_power_off(struct device *dev)
struct v4l2_subdev *sd = dev_get_drvdata(dev);
struct ov9282 *ov9282 = to_ov9282(sd);
- gpiod_set_value_cansleep(ov9282->reset_gpio, 0);
+ gpiod_set_value_cansleep(ov9282->reset_gpio, 1);
clk_disable_unprepare(ov9282->inclk);
--
2.34.1
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH v2 2/3] arm64: dts: qcom: qrb2210-rb1: Add PM8008 node
2025-09-26 7:34 arm64: dts: qcom: qrb2210-rb1: Add Qualcomm RB1 Vision kit Loic Poulain
2025-09-26 7:34 ` [PATCH v2 1/3] media: i2c: ov9282: Fix reset-gpio logical state Loic Poulain
@ 2025-09-26 7:34 ` Loic Poulain
2025-09-26 11:10 ` Konrad Dybcio
2025-09-26 7:34 ` [PATCH v2 3/3] arm64: dts: qcom: qrb2210-rb1: Add overlay for vision mezzanine Loic Poulain
2 siblings, 1 reply; 14+ messages in thread
From: Loic Poulain @ 2025-09-26 7:34 UTC (permalink / raw)
To: andersson, konradybcio, dave.stevenson, sakari.ailus
Cc: linux-arm-msm, devicetree, linux-media, mchehab, conor+dt, robh,
Loic Poulain, Dmitry Baryshkov
The PM8008 device is a dedicated camera PMIC integrating all the necessary
camera power management features.
Signed-off-by: Loic Poulain <loic.poulain@oss.qualcomm.com>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
---
arch/arm64/boot/dts/qcom/qrb2210-rb1.dts | 75 ++++++++++++++++++++++++
1 file changed, 75 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/qrb2210-rb1.dts b/arch/arm64/boot/dts/qcom/qrb2210-rb1.dts
index 67ba508e92ba..453e81412c5c 100644
--- a/arch/arm64/boot/dts/qcom/qrb2210-rb1.dts
+++ b/arch/arm64/boot/dts/qcom/qrb2210-rb1.dts
@@ -220,6 +220,81 @@ zap-shader {
};
};
+&i2c1 {
+ clock-frequency = <400000>;
+
+ status = "okay";
+
+ pm8008: pmic@8 {
+ compatible = "qcom,pm8008";
+ reg = <0x8>;
+
+ interrupts-extended = <&tlmm 25 IRQ_TYPE_EDGE_RISING>;
+ reset-gpios = <&tlmm 26 GPIO_ACTIVE_LOW>;
+
+ vdd-l1-l2-supply = <&pm4125_s3>;
+ vdd-l3-l4-supply = <&vph_pwr>;
+ vdd-l5-supply = <&vph_pwr>;
+ vdd-l6-supply = <&vph_pwr>;
+ vdd-l7-supply = <&vph_pwr>;
+
+ gpio-controller;
+ #gpio-cells = <2>;
+ gpio-ranges = <&pm8008 0 0 2>;
+
+ interrupt-controller;
+ #interrupt-cells = <2>;
+
+ #thermal-sensor-cells = <0>;
+
+ status = "disabled";
+
+ regulators {
+ vreg_l1p: ldo1 {
+ regulator-name = "vreg_l1p";
+ regulator-min-microvolt = <528000>;
+ regulator-max-microvolt = <1200000>;
+ };
+
+ vreg_l2p: ldo2 {
+ regulator-name = "vreg_l2p";
+ regulator-min-microvolt = <528000>;
+ regulator-max-microvolt = <1200000>;
+ };
+
+ vreg_l3p: ldo3 {
+ regulator-name = "vreg_l3p";
+ regulator-min-microvolt = <1500000>;
+ regulator-max-microvolt = <3400000>;
+ };
+
+ vreg_l4p: ldo4 {
+ regulator-name = "vreg_l4p";
+ regulator-min-microvolt = <1500000>;
+ regulator-max-microvolt = <3404000>;
+ };
+
+ vreg_l5p: ldo5 {
+ regulator-name = "vreg_l5p";
+ regulator-min-microvolt = <1500000>;
+ regulator-max-microvolt = <3400000>;
+ };
+
+ vreg_l6p: ldo6 {
+ regulator-name = "vreg_l6p";
+ regulator-min-microvolt = <1500000>;
+ regulator-max-microvolt = <3400000>;
+ };
+
+ vreg_l7p: ldo7 {
+ regulator-name = "vreg_l7p";
+ regulator-min-microvolt = <1500000>;
+ regulator-max-microvolt = <3400000>;
+ };
+ };
+ };
+};
+
&i2c2_gpio {
clock-frequency = <400000>;
status = "okay";
--
2.34.1
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH v2 3/3] arm64: dts: qcom: qrb2210-rb1: Add overlay for vision mezzanine
2025-09-26 7:34 arm64: dts: qcom: qrb2210-rb1: Add Qualcomm RB1 Vision kit Loic Poulain
2025-09-26 7:34 ` [PATCH v2 1/3] media: i2c: ov9282: Fix reset-gpio logical state Loic Poulain
2025-09-26 7:34 ` [PATCH v2 2/3] arm64: dts: qcom: qrb2210-rb1: Add PM8008 node Loic Poulain
@ 2025-09-26 7:34 ` Loic Poulain
2025-09-26 11:11 ` Konrad Dybcio
` (2 more replies)
2 siblings, 3 replies; 14+ messages in thread
From: Loic Poulain @ 2025-09-26 7:34 UTC (permalink / raw)
To: andersson, konradybcio, dave.stevenson, sakari.ailus
Cc: linux-arm-msm, devicetree, linux-media, mchehab, conor+dt, robh,
Loic Poulain
This initial version includes support for OV9282 camera sensor.
Signed-off-by: Loic Poulain <loic.poulain@oss.qualcomm.com>
---
arch/arm64/boot/dts/qcom/Makefile | 5 ++
.../qcom/qrb2210-rb1-vision-mezzanine.dtso | 76 +++++++++++++++++++
2 files changed, 81 insertions(+)
create mode 100644 arch/arm64/boot/dts/qcom/qrb2210-rb1-vision-mezzanine.dtso
diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile
index d7f22476d510..bee021efc249 100644
--- a/arch/arm64/boot/dts/qcom/Makefile
+++ b/arch/arm64/boot/dts/qcom/Makefile
@@ -138,6 +138,11 @@ dtb-$(CONFIG_ARCH_QCOM) += qcs9100-ride.dtb
dtb-$(CONFIG_ARCH_QCOM) += qcs9100-ride-r3.dtb
dtb-$(CONFIG_ARCH_QCOM) += qdu1000-idp.dtb
dtb-$(CONFIG_ARCH_QCOM) += qrb2210-rb1.dtb
+
+qrb2210-rb1-vision-mezzanine-dtbs := qrb2210-rb1.dtb qrb2210-rb1-vision-mezzanine.dtbo
+
+dtb-$(CONFIG_ARCH_QCOM) += qrb2210-rb1-vision-mezzanine.dtb
+
dtb-$(CONFIG_ARCH_QCOM) += qrb4210-rb2.dtb
dtb-$(CONFIG_ARCH_QCOM) += qrb5165-rb5.dtb
diff --git a/arch/arm64/boot/dts/qcom/qrb2210-rb1-vision-mezzanine.dtso b/arch/arm64/boot/dts/qcom/qrb2210-rb1-vision-mezzanine.dtso
new file mode 100644
index 000000000000..3b6261131b75
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/qrb2210-rb1-vision-mezzanine.dtso
@@ -0,0 +1,76 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
+ */
+
+/dts-v1/;
+/plugin/;
+
+#include <dt-bindings/clock/qcom,gcc-qcm2290.h>
+#include <dt-bindings/gpio/gpio.h>
+
+&tlmm {
+ cam0a_default: cam0a-default-state {
+ pins = "gpio28";
+ function = "cam_mclk";
+ drive-strength = <16>;
+ bias-disable;
+ };
+};
+
+&pm8008 {
+ status = "okay";
+};
+
+&camss {
+ status = "okay";
+
+ vdd-csiphy-1p2-supply = <&pm4125_l5>;
+ vdd-csiphy-1p8-supply = <&pm4125_l13>;
+
+ ports {
+ port@0 {
+ csiphy0_ep: endpoint {
+ data-lanes = <0 1>;
+ remote-endpoint = <&ov9282_ep>;
+ };
+ };
+ };
+};
+
+&cci {
+ status = "okay";
+};
+
+&cci_i2c1 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ /* Vision Mezzanine DIP3-1 must be ON (Selects camera CAM0A&B) */
+ camera@60 {
+ compatible = "ovti,ov9282";
+ reg = <0x60>;
+
+ /* Note: Reset is active-low but ov9282 driver logic is inverted... */
+ reset-gpios = <&tlmm 18 GPIO_ACTIVE_LOW>;
+
+ pinctrl-0 = <&cam0a_default>;
+ pinctrl-names = "default";
+
+ clocks = <&gcc GCC_CAMSS_MCLK3_CLK>;
+ assigned-clocks = <&gcc GCC_CAMSS_MCLK3_CLK>;
+ assigned-clock-rates = <24000000>;
+
+ avdd-supply = <&vreg_l3p>;
+ dvdd-supply = <&vreg_l1p>;
+ dovdd-supply = <&vreg_l7p>;
+
+ port {
+ ov9282_ep: endpoint {
+ link-frequencies = /bits/ 64 <400000000>;
+ data-lanes = <1 2>;
+ remote-endpoint = <&csiphy0_ep>;
+ };
+ };
+ };
+};
--
2.34.1
^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: [PATCH v2 2/3] arm64: dts: qcom: qrb2210-rb1: Add PM8008 node
2025-09-26 7:34 ` [PATCH v2 2/3] arm64: dts: qcom: qrb2210-rb1: Add PM8008 node Loic Poulain
@ 2025-09-26 11:10 ` Konrad Dybcio
0 siblings, 0 replies; 14+ messages in thread
From: Konrad Dybcio @ 2025-09-26 11:10 UTC (permalink / raw)
To: Loic Poulain, andersson, konradybcio, dave.stevenson,
sakari.ailus
Cc: linux-arm-msm, devicetree, linux-media, mchehab, conor+dt, robh,
Dmitry Baryshkov
On 9/26/25 9:34 AM, Loic Poulain wrote:
> The PM8008 device is a dedicated camera PMIC integrating all the necessary
> camera power management features.
>
> Signed-off-by: Loic Poulain <loic.poulain@oss.qualcomm.com>
> Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
> ---
Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Konrad
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v2 3/3] arm64: dts: qcom: qrb2210-rb1: Add overlay for vision mezzanine
2025-09-26 7:34 ` [PATCH v2 3/3] arm64: dts: qcom: qrb2210-rb1: Add overlay for vision mezzanine Loic Poulain
@ 2025-09-26 11:11 ` Konrad Dybcio
2025-09-27 10:37 ` Bryan O'Donoghue
2025-09-29 9:03 ` Vladimir Zapolskiy
2 siblings, 0 replies; 14+ messages in thread
From: Konrad Dybcio @ 2025-09-26 11:11 UTC (permalink / raw)
To: Loic Poulain, andersson, konradybcio, dave.stevenson,
sakari.ailus
Cc: linux-arm-msm, devicetree, linux-media, mchehab, conor+dt, robh
On 9/26/25 9:34 AM, Loic Poulain wrote:
> This initial version includes support for OV9282 camera sensor.
>
> Signed-off-by: Loic Poulain <loic.poulain@oss.qualcomm.com>
> ---
[...]
> +&cci_i2c1 {
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + /* Vision Mezzanine DIP3-1 must be ON (Selects camera CAM0A&B) */
> + camera@60 {
> + compatible = "ovti,ov9282";
> + reg = <0x60>;
> +
> + /* Note: Reset is active-low but ov9282 driver logic is inverted... */
The comment no longer applies
with it gone:
Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Konrad
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v2 1/3] media: i2c: ov9282: Fix reset-gpio logical state
2025-09-26 7:34 ` [PATCH v2 1/3] media: i2c: ov9282: Fix reset-gpio logical state Loic Poulain
@ 2025-09-27 10:29 ` Bryan O'Donoghue
2025-09-29 8:46 ` Vladimir Zapolskiy
2025-09-29 15:18 ` Dave Stevenson
2 siblings, 0 replies; 14+ messages in thread
From: Bryan O'Donoghue @ 2025-09-27 10:29 UTC (permalink / raw)
To: Loic Poulain, andersson, konradybcio, dave.stevenson,
sakari.ailus
Cc: linux-arm-msm, devicetree, linux-media, mchehab, conor+dt, robh
On 26/09/2025 08:34, Loic Poulain wrote:
> Ensure reset state is low in the power-on state and high in the
> power-off state (assert reset). Note that the polarity is abstracted
> by the GPIO subsystem, so the logic level reflects the intended reset
> behavior.
>
> This breaks backward compatibility for any downstream dts using the
> wrong polarity.
>
> Signed-off-by: Loic Poulain <loic.poulain@oss.qualcomm.com>
> ---
> drivers/media/i2c/ov9282.c | 8 ++++----
> 1 file changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/media/i2c/ov9282.c b/drivers/media/i2c/ov9282.c
> index c882a021cf18..fb6fcba503c8 100644
> --- a/drivers/media/i2c/ov9282.c
> +++ b/drivers/media/i2c/ov9282.c
> @@ -1127,7 +1127,7 @@ static int ov9282_parse_hw_config(struct ov9282 *ov9282)
>
> /* Request optional reset pin */
> ov9282->reset_gpio = devm_gpiod_get_optional(ov9282->dev, "reset",
> - GPIOD_OUT_LOW);
> + GPIOD_OUT_HIGH);
> if (IS_ERR(ov9282->reset_gpio)) {
> dev_err(ov9282->dev, "failed to get reset gpio %ld",
> PTR_ERR(ov9282->reset_gpio));
> @@ -1238,7 +1238,7 @@ static int ov9282_power_on(struct device *dev)
>
> usleep_range(400, 600);
>
> - gpiod_set_value_cansleep(ov9282->reset_gpio, 1);
> + gpiod_set_value_cansleep(ov9282->reset_gpio, 0);
>
> ret = clk_prepare_enable(ov9282->inclk);
> if (ret) {
> @@ -1261,7 +1261,7 @@ static int ov9282_power_on(struct device *dev)
> error_clk:
> clk_disable_unprepare(ov9282->inclk);
> error_reset:
> - gpiod_set_value_cansleep(ov9282->reset_gpio, 0);
> + gpiod_set_value_cansleep(ov9282->reset_gpio, 1);
>
> regulator_bulk_disable(OV9282_NUM_SUPPLIES, ov9282->supplies);
>
> @@ -1279,7 +1279,7 @@ static int ov9282_power_off(struct device *dev)
> struct v4l2_subdev *sd = dev_get_drvdata(dev);
> struct ov9282 *ov9282 = to_ov9282(sd);
>
> - gpiod_set_value_cansleep(ov9282->reset_gpio, 0);
> + gpiod_set_value_cansleep(ov9282->reset_gpio, 1);
>
> clk_disable_unprepare(ov9282->inclk);
>
> --
> 2.34.1
>
>
Needs a Fixes: tag
---
bod
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v2 3/3] arm64: dts: qcom: qrb2210-rb1: Add overlay for vision mezzanine
2025-09-26 7:34 ` [PATCH v2 3/3] arm64: dts: qcom: qrb2210-rb1: Add overlay for vision mezzanine Loic Poulain
2025-09-26 11:11 ` Konrad Dybcio
@ 2025-09-27 10:37 ` Bryan O'Donoghue
2025-09-29 7:52 ` Loic Poulain
2025-09-29 9:03 ` Vladimir Zapolskiy
2 siblings, 1 reply; 14+ messages in thread
From: Bryan O'Donoghue @ 2025-09-27 10:37 UTC (permalink / raw)
To: Loic Poulain, andersson, konradybcio, dave.stevenson,
sakari.ailus
Cc: linux-arm-msm, devicetree, linux-media, mchehab, conor+dt, robh
On 26/09/2025 08:34, Loic Poulain wrote:
> This initial version includes support for OV9282 camera sensor.
>
> Signed-off-by: Loic Poulain <loic.poulain@oss.qualcomm.com>
> ---
> arch/arm64/boot/dts/qcom/Makefile | 5 ++
> .../qcom/qrb2210-rb1-vision-mezzanine.dtso | 76 +++++++++++++++++++
> 2 files changed, 81 insertions(+)
> create mode 100644 arch/arm64/boot/dts/qcom/qrb2210-rb1-vision-mezzanine.dtso
>
> diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile
> index d7f22476d510..bee021efc249 100644
> --- a/arch/arm64/boot/dts/qcom/Makefile
> +++ b/arch/arm64/boot/dts/qcom/Makefile
> @@ -138,6 +138,11 @@ dtb-$(CONFIG_ARCH_QCOM) += qcs9100-ride.dtb
> dtb-$(CONFIG_ARCH_QCOM) += qcs9100-ride-r3.dtb
> dtb-$(CONFIG_ARCH_QCOM) += qdu1000-idp.dtb
> dtb-$(CONFIG_ARCH_QCOM) += qrb2210-rb1.dtb
> +
> +qrb2210-rb1-vision-mezzanine-dtbs := qrb2210-rb1.dtb qrb2210-rb1-vision-mezzanine.dtbo
> +
> +dtb-$(CONFIG_ARCH_QCOM) += qrb2210-rb1-vision-mezzanine.dtb
> +
> dtb-$(CONFIG_ARCH_QCOM) += qrb4210-rb2.dtb
> dtb-$(CONFIG_ARCH_QCOM) += qrb5165-rb5.dtb
>
> diff --git a/arch/arm64/boot/dts/qcom/qrb2210-rb1-vision-mezzanine.dtso b/arch/arm64/boot/dts/qcom/qrb2210-rb1-vision-mezzanine.dtso
> new file mode 100644
> index 000000000000..3b6261131b75
> --- /dev/null
> +++ b/arch/arm64/boot/dts/qcom/qrb2210-rb1-vision-mezzanine.dtso
> @@ -0,0 +1,76 @@
> +// SPDX-License-Identifier: BSD-3-Clause
> +/*
> + * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
> + */
> +
> +/dts-v1/;
> +/plugin/;
> +
> +#include <dt-bindings/clock/qcom,gcc-qcm2290.h>
> +#include <dt-bindings/gpio/gpio.h>
> +
> +&tlmm {
> + cam0a_default: cam0a-default-state {
> + pins = "gpio28";
> + function = "cam_mclk";
> + drive-strength = <16>;
> + bias-disable;
> + };
> +};
> +
> +&pm8008 {
> + status = "okay";
> +};
> +
> +&camss {
> + status = "okay";
> +
> + vdd-csiphy-1p2-supply = <&pm4125_l5>;
> + vdd-csiphy-1p8-supply = <&pm4125_l13>;
> +
> + ports {
> + port@0 {
> + csiphy0_ep: endpoint {
> + data-lanes = <0 1>;
> + remote-endpoint = <&ov9282_ep>;
> + };
> + };
> + };
> +};
> +
> +&cci {
> + status = "okay";
> +};
> +
> +&cci_i2c1 {
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + /* Vision Mezzanine DIP3-1 must be ON (Selects camera CAM0A&B) */
> + camera@60 {
> + compatible = "ovti,ov9282";
> + reg = <0x60>;
> +
> + /* Note: Reset is active-low but ov9282 driver logic is inverted... */
> + reset-gpios = <&tlmm 18 GPIO_ACTIVE_LOW>;
This comment is confusing me a bit.
Shouldn't it be that the driver polarity gets fixed and the DTS just
declares the correct thing ?
> +
> + pinctrl-0 = <&cam0a_default>;
> + pinctrl-names = "default";
> +
> + clocks = <&gcc GCC_CAMSS_MCLK3_CLK>;
> + assigned-clocks = <&gcc GCC_CAMSS_MCLK3_CLK>;
> + assigned-clock-rates = <24000000>;
> +
> + avdd-supply = <&vreg_l3p>;
> + dvdd-supply = <&vreg_l1p>;
> + dovdd-supply = <&vreg_l7p>;
> +
> + port {
> + ov9282_ep: endpoint {
> + link-frequencies = /bits/ 64 <400000000>;
> + data-lanes = <1 2>;
> + remote-endpoint = <&csiphy0_ep>;
> + };
> + };
> + };
> +};
> --
> 2.34.1
>
>
---
bod
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v2 3/3] arm64: dts: qcom: qrb2210-rb1: Add overlay for vision mezzanine
2025-09-27 10:37 ` Bryan O'Donoghue
@ 2025-09-29 7:52 ` Loic Poulain
0 siblings, 0 replies; 14+ messages in thread
From: Loic Poulain @ 2025-09-29 7:52 UTC (permalink / raw)
To: Bryan O'Donoghue
Cc: andersson, konradybcio, dave.stevenson, sakari.ailus,
linux-arm-msm, devicetree, linux-media, mchehab, conor+dt, robh
Hi Bryan,
On Sat, Sep 27, 2025 at 12:37 PM Bryan O'Donoghue <bod@kernel.org> wrote:
>
> On 26/09/2025 08:34, Loic Poulain wrote:
> > This initial version includes support for OV9282 camera sensor.
> >
> > Signed-off-by: Loic Poulain <loic.poulain@oss.qualcomm.com>
> > ---
> > arch/arm64/boot/dts/qcom/Makefile | 5 ++
> > .../qcom/qrb2210-rb1-vision-mezzanine.dtso | 76 +++++++++++++++++++
> > 2 files changed, 81 insertions(+)
> > create mode 100644 arch/arm64/boot/dts/qcom/qrb2210-rb1-vision-mezzanine.dtso
> >
> > diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile
> > index d7f22476d510..bee021efc249 100644
> > --- a/arch/arm64/boot/dts/qcom/Makefile
> > +++ b/arch/arm64/boot/dts/qcom/Makefile
> > @@ -138,6 +138,11 @@ dtb-$(CONFIG_ARCH_QCOM) += qcs9100-ride.dtb
> > dtb-$(CONFIG_ARCH_QCOM) += qcs9100-ride-r3.dtb
> > dtb-$(CONFIG_ARCH_QCOM) += qdu1000-idp.dtb
> > dtb-$(CONFIG_ARCH_QCOM) += qrb2210-rb1.dtb
> > +
> > +qrb2210-rb1-vision-mezzanine-dtbs := qrb2210-rb1.dtb qrb2210-rb1-vision-mezzanine.dtbo
> > +
> > +dtb-$(CONFIG_ARCH_QCOM) += qrb2210-rb1-vision-mezzanine.dtb
> > +
> > dtb-$(CONFIG_ARCH_QCOM) += qrb4210-rb2.dtb
> > dtb-$(CONFIG_ARCH_QCOM) += qrb5165-rb5.dtb
> >
> > diff --git a/arch/arm64/boot/dts/qcom/qrb2210-rb1-vision-mezzanine.dtso b/arch/arm64/boot/dts/qcom/qrb2210-rb1-vision-mezzanine.dtso
> > new file mode 100644
> > index 000000000000..3b6261131b75
> > --- /dev/null
> > +++ b/arch/arm64/boot/dts/qcom/qrb2210-rb1-vision-mezzanine.dtso
> > @@ -0,0 +1,76 @@
> > +// SPDX-License-Identifier: BSD-3-Clause
> > +/*
> > + * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
> > + */
> > +
> > +/dts-v1/;
> > +/plugin/;
> > +
> > +#include <dt-bindings/clock/qcom,gcc-qcm2290.h>
> > +#include <dt-bindings/gpio/gpio.h>
> > +
> > +&tlmm {
> > + cam0a_default: cam0a-default-state {
> > + pins = "gpio28";
> > + function = "cam_mclk";
> > + drive-strength = <16>;
> > + bias-disable;
> > + };
> > +};
> > +
> > +&pm8008 {
> > + status = "okay";
> > +};
> > +
> > +&camss {
> > + status = "okay";
> > +
> > + vdd-csiphy-1p2-supply = <&pm4125_l5>;
> > + vdd-csiphy-1p8-supply = <&pm4125_l13>;
> > +
> > + ports {
> > + port@0 {
> > + csiphy0_ep: endpoint {
> > + data-lanes = <0 1>;
> > + remote-endpoint = <&ov9282_ep>;
> > + };
> > + };
> > + };
> > +};
> > +
> > +&cci {
> > + status = "okay";
> > +};
> > +
> > +&cci_i2c1 {
> > + #address-cells = <1>;
> > + #size-cells = <0>;
> > +
> > + /* Vision Mezzanine DIP3-1 must be ON (Selects camera CAM0A&B) */
> > + camera@60 {
> > + compatible = "ovti,ov9282";
> > + reg = <0x60>;
> > +
> > + /* Note: Reset is active-low but ov9282 driver logic is inverted... */
> > + reset-gpios = <&tlmm 18 GPIO_ACTIVE_LOW>;
>
> This comment is confusing me a bit.
>
> Shouldn't it be that the driver polarity gets fixed and the DTS just
> declares the correct thing ?
Yes, as Konrad pointed out, this comment is no longer relevant in V2.
I overlooked removing it when applying his suggested fix to the driver.
>
> > +
> > + pinctrl-0 = <&cam0a_default>;
> > + pinctrl-names = "default";
> > +
> > + clocks = <&gcc GCC_CAMSS_MCLK3_CLK>;
> > + assigned-clocks = <&gcc GCC_CAMSS_MCLK3_CLK>;
> > + assigned-clock-rates = <24000000>;
> > +
> > + avdd-supply = <&vreg_l3p>;
> > + dvdd-supply = <&vreg_l1p>;
> > + dovdd-supply = <&vreg_l7p>;
> > +
> > + port {
> > + ov9282_ep: endpoint {
> > + link-frequencies = /bits/ 64 <400000000>;
> > + data-lanes = <1 2>;
> > + remote-endpoint = <&csiphy0_ep>;
> > + };
> > + };
> > + };
> > +};
> > --
> > 2.34.1
> >
> >
>
> ---
> bod
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v2 1/3] media: i2c: ov9282: Fix reset-gpio logical state
2025-09-26 7:34 ` [PATCH v2 1/3] media: i2c: ov9282: Fix reset-gpio logical state Loic Poulain
2025-09-27 10:29 ` Bryan O'Donoghue
@ 2025-09-29 8:46 ` Vladimir Zapolskiy
2025-09-29 8:53 ` Loic Poulain
2025-09-29 15:18 ` Dave Stevenson
2 siblings, 1 reply; 14+ messages in thread
From: Vladimir Zapolskiy @ 2025-09-29 8:46 UTC (permalink / raw)
To: Loic Poulain, andersson, konradybcio, dave.stevenson,
sakari.ailus
Cc: linux-arm-msm, devicetree, linux-media, mchehab, conor+dt, robh
On 9/26/25 10:34, Loic Poulain wrote:
> Ensure reset state is low in the power-on state and high in the
> power-off state (assert reset). Note that the polarity is abstracted
> by the GPIO subsystem, so the logic level reflects the intended reset
> behavior.
>
> This breaks backward compatibility for any downstream dts using the
> wrong polarity.
>
> Signed-off-by: Loic Poulain <loic.poulain@oss.qualcomm.com>
Reviewed-by: Vladimir Zapolskiy <vladimir.zapolskiy@linaro.org>
I kindly ask you to specify the intended behaviour in the documentation
Documentation/devicetree/bindings/media/i2c/ovti,ov9282.yaml
--
Best wishes,
Vladimir
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v2 1/3] media: i2c: ov9282: Fix reset-gpio logical state
2025-09-29 8:46 ` Vladimir Zapolskiy
@ 2025-09-29 8:53 ` Loic Poulain
0 siblings, 0 replies; 14+ messages in thread
From: Loic Poulain @ 2025-09-29 8:53 UTC (permalink / raw)
To: Vladimir Zapolskiy
Cc: andersson, konradybcio, dave.stevenson, sakari.ailus,
linux-arm-msm, devicetree, linux-media, mchehab, conor+dt, robh
On Mon, Sep 29, 2025 at 10:46 AM Vladimir Zapolskiy
<vladimir.zapolskiy@linaro.org> wrote:
>
> On 9/26/25 10:34, Loic Poulain wrote:
> > Ensure reset state is low in the power-on state and high in the
> > power-off state (assert reset). Note that the polarity is abstracted
> > by the GPIO subsystem, so the logic level reflects the intended reset
> > behavior.
> >
> > This breaks backward compatibility for any downstream dts using the
> > wrong polarity.
> >
> > Signed-off-by: Loic Poulain <loic.poulain@oss.qualcomm.com>
>
> Reviewed-by: Vladimir Zapolskiy <vladimir.zapolskiy@linaro.org>
>
> I kindly ask you to specify the intended behaviour in the documentation
> Documentation/devicetree/bindings/media/i2c/ovti,ov9282.yaml
Sure, I will add this in V3.
Thanks,
Loic
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v2 3/3] arm64: dts: qcom: qrb2210-rb1: Add overlay for vision mezzanine
2025-09-26 7:34 ` [PATCH v2 3/3] arm64: dts: qcom: qrb2210-rb1: Add overlay for vision mezzanine Loic Poulain
2025-09-26 11:11 ` Konrad Dybcio
2025-09-27 10:37 ` Bryan O'Donoghue
@ 2025-09-29 9:03 ` Vladimir Zapolskiy
2 siblings, 0 replies; 14+ messages in thread
From: Vladimir Zapolskiy @ 2025-09-29 9:03 UTC (permalink / raw)
To: Loic Poulain, andersson, konradybcio, dave.stevenson,
sakari.ailus
Cc: linux-arm-msm, devicetree, linux-media, mchehab, conor+dt, robh
On 9/26/25 10:34, Loic Poulain wrote:
> This initial version includes support for OV9282 camera sensor.
>
> Signed-off-by: Loic Poulain <loic.poulain@oss.qualcomm.com>
> ---
> arch/arm64/boot/dts/qcom/Makefile | 5 ++
> .../qcom/qrb2210-rb1-vision-mezzanine.dtso | 76 +++++++++++++++++++
> 2 files changed, 81 insertions(+)
> create mode 100644 arch/arm64/boot/dts/qcom/qrb2210-rb1-vision-mezzanine.dtso
>
> diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile
> index d7f22476d510..bee021efc249 100644
> --- a/arch/arm64/boot/dts/qcom/Makefile
> +++ b/arch/arm64/boot/dts/qcom/Makefile
> @@ -138,6 +138,11 @@ dtb-$(CONFIG_ARCH_QCOM) += qcs9100-ride.dtb
> dtb-$(CONFIG_ARCH_QCOM) += qcs9100-ride-r3.dtb
> dtb-$(CONFIG_ARCH_QCOM) += qdu1000-idp.dtb
> dtb-$(CONFIG_ARCH_QCOM) += qrb2210-rb1.dtb
> +
> +qrb2210-rb1-vision-mezzanine-dtbs := qrb2210-rb1.dtb qrb2210-rb1-vision-mezzanine.dtbo
> +
> +dtb-$(CONFIG_ARCH_QCOM) += qrb2210-rb1-vision-mezzanine.dtb
> +
> dtb-$(CONFIG_ARCH_QCOM) += qrb4210-rb2.dtb
> dtb-$(CONFIG_ARCH_QCOM) += qrb5165-rb5.dtb
>
> diff --git a/arch/arm64/boot/dts/qcom/qrb2210-rb1-vision-mezzanine.dtso b/arch/arm64/boot/dts/qcom/qrb2210-rb1-vision-mezzanine.dtso
> new file mode 100644
> index 000000000000..3b6261131b75
> --- /dev/null
> +++ b/arch/arm64/boot/dts/qcom/qrb2210-rb1-vision-mezzanine.dtso
> @@ -0,0 +1,76 @@
> +// SPDX-License-Identifier: BSD-3-Clause
> +/*
> + * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
Year is missing, please set it.
> + */
> +
> +/dts-v1/;
> +/plugin/;
> +
> +#include <dt-bindings/clock/qcom,gcc-qcm2290.h>
> +#include <dt-bindings/gpio/gpio.h>
> +
> +&tlmm {
> + cam0a_default: cam0a-default-state {
> + pins = "gpio28";
> + function = "cam_mclk";
> + drive-strength = <16>;
> + bias-disable;
> + };
> +};
This is a generic non-changeable MCLK3 pin configuration, which is
specific to the SoC. Like in a number of other cases please consider
to define this and other MCLKx pin configurations in the SoC .dtsi file.
> +
> +&pm8008 {
> + status = "okay";
> +};
> +
> +&camss {
> + status = "okay";
> +
> + vdd-csiphy-1p2-supply = <&pm4125_l5>;
> + vdd-csiphy-1p8-supply = <&pm4125_l13>;
> +
> + ports {
> + port@0 {
> + csiphy0_ep: endpoint {
> + data-lanes = <0 1>;
> + remote-endpoint = <&ov9282_ep>;
> + };
> + };
> + };
> +};
> +
> +&cci {
> + status = "okay";
> +};
> +
> +&cci_i2c1 {
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + /* Vision Mezzanine DIP3-1 must be ON (Selects camera CAM0A&B) */
> + camera@60 {
> + compatible = "ovti,ov9282";
> + reg = <0x60>;
> +
> + /* Note: Reset is active-low but ov9282 driver logic is inverted... */
> + reset-gpios = <&tlmm 18 GPIO_ACTIVE_LOW>;
> +
> + pinctrl-0 = <&cam0a_default>;
> + pinctrl-names = "default";
> +
> + clocks = <&gcc GCC_CAMSS_MCLK3_CLK>;
> + assigned-clocks = <&gcc GCC_CAMSS_MCLK3_CLK>;
> + assigned-clock-rates = <24000000>;
> +
It makes little sense to split properties with blank lines.
> + avdd-supply = <&vreg_l3p>;
> + dvdd-supply = <&vreg_l1p>;
> + dovdd-supply = <&vreg_l7p>;
> +
> + port {
> + ov9282_ep: endpoint {
> + link-frequencies = /bits/ 64 <400000000>;
> + data-lanes = <1 2>;
> + remote-endpoint = <&csiphy0_ep>;
It's quite strange to see CSI0 and MCLK3 in the same boat, but the
schematics says so.
> + };
> + };
> + };
> +};
Reviewed-by: Vladimir Zapolskiy <vladimir.zapolskiy@linaro.org>
--
Best wishes,
Vladimir
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v2 1/3] media: i2c: ov9282: Fix reset-gpio logical state
2025-09-26 7:34 ` [PATCH v2 1/3] media: i2c: ov9282: Fix reset-gpio logical state Loic Poulain
2025-09-27 10:29 ` Bryan O'Donoghue
2025-09-29 8:46 ` Vladimir Zapolskiy
@ 2025-09-29 15:18 ` Dave Stevenson
2025-10-02 15:59 ` Loic Poulain
2 siblings, 1 reply; 14+ messages in thread
From: Dave Stevenson @ 2025-09-29 15:18 UTC (permalink / raw)
To: Loic Poulain
Cc: andersson, konradybcio, sakari.ailus, linux-arm-msm, devicetree,
linux-media, mchehab, conor+dt, robh
Hi
On Fri, 26 Sept 2025 at 08:34, Loic Poulain
<loic.poulain@oss.qualcomm.com> wrote:
>
> Ensure reset state is low in the power-on state and high in the
> power-off state (assert reset). Note that the polarity is abstracted
> by the GPIO subsystem, so the logic level reflects the intended reset
> behavior.
>
> This breaks backward compatibility for any downstream dts using the
> wrong polarity.
Ouch. That'll be a nasty surprise to some if this lands, and
particularly with a Fixes: tag so it gets backported to stable
kernels.
There are a number of sensor drivers that have been in the tree for
multiple years that do indeed have the reset logic inverted as it
wasn't something being routinely picked up in code review. ov9282,
imx219, imx334, and imx274 for a start. Krzysztof sent [1] recently to
flag that they are wrong and shouldn't be copied, but changing the
behaviour feels unfriendly.
I'll defer to Sakari as to whether this change is acceptable.
Checking all my use cases, they use regulators instead of reset-gpio,
so it doesn't actually have an impact.
Dave
[1] https://lore.kernel.org/linux-media/20250818150025.247209-2-krzysztof.kozlowski@linaro.org/
> Signed-off-by: Loic Poulain <loic.poulain@oss.qualcomm.com>
> ---
> drivers/media/i2c/ov9282.c | 8 ++++----
> 1 file changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/media/i2c/ov9282.c b/drivers/media/i2c/ov9282.c
> index c882a021cf18..fb6fcba503c8 100644
> --- a/drivers/media/i2c/ov9282.c
> +++ b/drivers/media/i2c/ov9282.c
> @@ -1127,7 +1127,7 @@ static int ov9282_parse_hw_config(struct ov9282 *ov9282)
>
> /* Request optional reset pin */
> ov9282->reset_gpio = devm_gpiod_get_optional(ov9282->dev, "reset",
> - GPIOD_OUT_LOW);
> + GPIOD_OUT_HIGH);
> if (IS_ERR(ov9282->reset_gpio)) {
> dev_err(ov9282->dev, "failed to get reset gpio %ld",
> PTR_ERR(ov9282->reset_gpio));
> @@ -1238,7 +1238,7 @@ static int ov9282_power_on(struct device *dev)
>
> usleep_range(400, 600);
>
> - gpiod_set_value_cansleep(ov9282->reset_gpio, 1);
> + gpiod_set_value_cansleep(ov9282->reset_gpio, 0);
>
> ret = clk_prepare_enable(ov9282->inclk);
> if (ret) {
> @@ -1261,7 +1261,7 @@ static int ov9282_power_on(struct device *dev)
> error_clk:
> clk_disable_unprepare(ov9282->inclk);
> error_reset:
> - gpiod_set_value_cansleep(ov9282->reset_gpio, 0);
> + gpiod_set_value_cansleep(ov9282->reset_gpio, 1);
>
> regulator_bulk_disable(OV9282_NUM_SUPPLIES, ov9282->supplies);
>
> @@ -1279,7 +1279,7 @@ static int ov9282_power_off(struct device *dev)
> struct v4l2_subdev *sd = dev_get_drvdata(dev);
> struct ov9282 *ov9282 = to_ov9282(sd);
>
> - gpiod_set_value_cansleep(ov9282->reset_gpio, 0);
> + gpiod_set_value_cansleep(ov9282->reset_gpio, 1);
>
> clk_disable_unprepare(ov9282->inclk);
>
> --
> 2.34.1
>
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v2 1/3] media: i2c: ov9282: Fix reset-gpio logical state
2025-09-29 15:18 ` Dave Stevenson
@ 2025-10-02 15:59 ` Loic Poulain
0 siblings, 0 replies; 14+ messages in thread
From: Loic Poulain @ 2025-10-02 15:59 UTC (permalink / raw)
To: Dave Stevenson
Cc: andersson, konradybcio, sakari.ailus, linux-arm-msm, devicetree,
linux-media, mchehab, conor+dt, robh
Hi Dave,
On Mon, Sep 29, 2025 at 5:18 PM Dave Stevenson
<dave.stevenson@raspberrypi.com> wrote:
>
> Hi
>
> On Fri, 26 Sept 2025 at 08:34, Loic Poulain
> <loic.poulain@oss.qualcomm.com> wrote:
> >
> > Ensure reset state is low in the power-on state and high in the
> > power-off state (assert reset). Note that the polarity is abstracted
> > by the GPIO subsystem, so the logic level reflects the intended reset
> > behavior.
> >
> > This breaks backward compatibility for any downstream dts using the
> > wrong polarity.
>
> Ouch. That'll be a nasty surprise to some if this lands, and
> particularly with a Fixes: tag so it gets backported to stable
> kernels.
>
> There are a number of sensor drivers that have been in the tree for
> multiple years that do indeed have the reset logic inverted as it
> wasn't something being routinely picked up in code review. ov9282,
> imx219, imx334, and imx274 for a start. Krzysztof sent [1] recently to
> flag that they are wrong and shouldn't be copied, but changing the
> behaviour feels unfriendly.
>
> I'll defer to Sakari as to whether this change is acceptable.
>
> Checking all my use cases, they use regulators instead of reset-gpio,
> so it doesn't actually have an impact.
>
> Dave
>
> [1] https://lore.kernel.org/linux-media/20250818150025.247209-2-krzysztof.kozlowski@linaro.org/
Should I just clone what has been done here (pointed by Konrad) to
keep DTS correctness while ensuring backward compatibility:
https://lore.kernel.org/r/20230102114152.297305-4-krzysztof.kozlowski@linaro.org
Regards,
Loic
^ permalink raw reply [flat|nested] 14+ messages in thread
end of thread, other threads:[~2025-10-02 16:00 UTC | newest]
Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-09-26 7:34 arm64: dts: qcom: qrb2210-rb1: Add Qualcomm RB1 Vision kit Loic Poulain
2025-09-26 7:34 ` [PATCH v2 1/3] media: i2c: ov9282: Fix reset-gpio logical state Loic Poulain
2025-09-27 10:29 ` Bryan O'Donoghue
2025-09-29 8:46 ` Vladimir Zapolskiy
2025-09-29 8:53 ` Loic Poulain
2025-09-29 15:18 ` Dave Stevenson
2025-10-02 15:59 ` Loic Poulain
2025-09-26 7:34 ` [PATCH v2 2/3] arm64: dts: qcom: qrb2210-rb1: Add PM8008 node Loic Poulain
2025-09-26 11:10 ` Konrad Dybcio
2025-09-26 7:34 ` [PATCH v2 3/3] arm64: dts: qcom: qrb2210-rb1: Add overlay for vision mezzanine Loic Poulain
2025-09-26 11:11 ` Konrad Dybcio
2025-09-27 10:37 ` Bryan O'Donoghue
2025-09-29 7:52 ` Loic Poulain
2025-09-29 9:03 ` Vladimir Zapolskiy
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).