Adding a new driver for the MIPI CSI CD-PHY module v 0.5 embedded in
some Mediatek soc, such as the MT8365
This driver was adapted from https://patchwork.kernel.org/project/linux-mediatek/cover/[email protected]/
v1 can be found here: https://lore.kernel.org/all/[email protected]/
v2 can be found here: https://lore.kernel.org/all/[email protected]/
Changelog
Changes in v3:
Binding file:
- rename compatible string
mediatek,phy-mipi-csi-0-5 -> mediatek,mt8365-csi-rx
- rename binding file to be as compatible string
- change property mediatek,is_cdphy -> mediatek,phy-type using an
enum value instead of boolean for scalability
- remove status property from example nodes
- rename example node name 'mipi_rx_csi0: mipi_rx_csi0@11c10000' ->
'csi0_rx: phy@11c10000'
- put reg address in lower case
include/dt-bindings/phy/phy.h:
- add PHY_TYPE_CDPHY definition
Driver:
- rename compatible string
- rename property mediatek,is_cdphy -> mediatek,phy-type
- rename CSIx* macro to CSIX* (x -> X)
- fix style issue on the driver data structure
- update MODULE_DESCRIPTION as suggested by Angelo
and update the kconfig module description to match it
- add dphy /cdphy eq tuning function to factor the code
and increase readability
- fix typo __PHY_MTK__MIPI_CSI__C_0_5_RX_REG_H_ -->
__PHY_MTK_MIPI_CSI_V_0_5_RX_REG_H_
- reword commit message to update my contributions
- added missing copyright
- added module name in Kconfig
Changes in v2:
- fix all comments on bindings
- move the binding chunk from driver to binding commit
- fix dt_binding_check error (reported by DT_CHECKER_FLAGS)
- use a more generic compatible string
- add a new dt properties to simplify the driver
"mediatek,is_cdphy"
- rename the driver and the corresponding file to include
version
- drop of_match_ptr()
- use devm_platform_ioremap_resource
- use phy-mtk-io.h api instead of regmap
- rework the driver to use dt nodes to declare PHY instead of an
array in the driver
- remove useless define for unused registers
- remove support for CSI0A/B because it cannot be tested, and it
simplifies the driver for a first review
- edit commit message and bindings to be more descriptive about the
hardware
Florian Sylvestre (1):
dt-bindings: phy: add mediatek MIPI CD-PHY module v0.5
Julien Stephan (1):
dt-bindings: phy: add PHY_TYPE_CDPHY definition
Phi-bang Nguyen (1):
phy: mtk-mipi-csi: add driver for CSI phy
.../bindings/phy/mediatek,mt8365-csi-rx.yaml | 68 +++++
MAINTAINERS | 7 +
drivers/phy/mediatek/Kconfig | 8 +
drivers/phy/mediatek/Makefile | 2 +
.../mediatek/phy-mtk-mipi-csi-0-5-rx-reg.h | 58 ++++
drivers/phy/mediatek/phy-mtk-mipi-csi-0-5.c | 272 ++++++++++++++++++
include/dt-bindings/phy/phy.h | 3 +-
7 files changed, 417 insertions(+), 1 deletion(-)
create mode 100644 Documentation/devicetree/bindings/phy/mediatek,mt8365-csi-rx.yaml
create mode 100644 drivers/phy/mediatek/phy-mtk-mipi-csi-0-5-rx-reg.h
create mode 100644 drivers/phy/mediatek/phy-mtk-mipi-csi-0-5.c
--
2.40.1
From: Florian Sylvestre <[email protected]>
This adds the bindings, for the MIPI CD-PHY module v0.5 embedded in
some Mediatek soc, such as the mt8365
Signed-off-by: Florian Sylvestre <[email protected]>
Signed-off-by: Julien Stephan <[email protected]>
---
.../bindings/phy/mediatek,mt8365-csi-rx.yaml | 67 +++++++++++++++++++
MAINTAINERS | 6 ++
2 files changed, 73 insertions(+)
create mode 100644 Documentation/devicetree/bindings/phy/mediatek,mt8365-csi-rx.yaml
diff --git a/Documentation/devicetree/bindings/phy/mediatek,mt8365-csi-rx.yaml b/Documentation/devicetree/bindings/phy/mediatek,mt8365-csi-rx.yaml
new file mode 100644
index 000000000000..a1bd96a98051
--- /dev/null
+++ b/Documentation/devicetree/bindings/phy/mediatek,mt8365-csi-rx.yaml
@@ -0,0 +1,67 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+# Copyright (c) 2023 MediaTek, BayLibre
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/phy/mediatek,mt8365-csi-rx.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Mediatek Sensor Interface MIPI CSI CD-PHY
+
+maintainers:
+ - Julien Stephan <[email protected]>
+ - Andy Hsieh <[email protected]>
+
+description:
+ The SENINF CD-PHY is a set of CD-PHY connected to the SENINF CSI-2
+ receivers. The number of PHYs depends on the SoC model.
+ Depending on the SoC model, each PHYs can be either CD-PHY or D-PHY only
+ capable.
+
+properties:
+ compatible:
+ enum:
+ - mediatek,mt8365-csi-rx
+
+ reg:
+ maxItems: 1
+
+ '#phy-cells':
+ const: 0
+
+ mediatek,phy-type:
+ description:
+ Specify the phy type. Supported phy are D-PHY only or CD-PHY capable phys.
+ See include/dt-bindings/phy/phy.h for constants.
+ enum: [10, 13]
+ $ref: /schemas/types.yaml#/definitions/uint32
+
+required:
+ - compatible
+ - reg
+ - mediatek,phy-type
+ - '#phy-cells'
+
+additionalProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/phy/phy.h>
+ soc {
+ #address-cells = <2>;
+ #size-cells = <2>;
+
+ csi0_rx: phy@11c10000 {
+ compatible = "mediatek,mt8365-csi-rx";
+ reg = <0 0x11c10000 0 0x2000>;
+ mediatek,phy-type = <PHY_TYPE_CDPHY>;
+ #phy-cells = <0>;
+ };
+
+ csi1_rx: phy@11c12000 {
+ compatible = "mediatek,mt8365-csi-rx";
+ reg = <0 0x11c12000 0 0x2000>;
+ mediatek,phy-type = <PHY_TYPE_DPHY>;
+ #phy-cells = <0>;
+ };
+ };
+...
diff --git a/MAINTAINERS b/MAINTAINERS
index b81e9fcc66cb..5da594fbb761 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -13184,6 +13184,12 @@ F: Documentation/devicetree/bindings/media/mediatek-vpu.txt
F: drivers/media/platform/mediatek/vcodec/
F: drivers/media/platform/mediatek/vpu/
+MEDIATEK MIPI-CSI CDPHY DRIVER
+M: Julien Stephan <[email protected]>
+M: Andy Hsieh <[email protected]>
+S: Supported
+F: Documentation/devicetree/bindings/phy/mediatek,mt8365-csi-rx.yaml
+
MEDIATEK MMC/SD/SDIO DRIVER
M: Chaotian Jing <[email protected]>
S: Maintained
--
2.40.1
Il 24/05/23 10:30, Julien Stephan ha scritto:
> From: Florian Sylvestre <[email protected]>
>
> This adds the bindings, for the MIPI CD-PHY module v0.5 embedded in
> some Mediatek soc, such as the mt8365
>
> Signed-off-by: Florian Sylvestre <[email protected]>
> Signed-off-by: Julien Stephan <[email protected]>
> ---
> .../bindings/phy/mediatek,mt8365-csi-rx.yaml | 67 +++++++++++++++++++
> MAINTAINERS | 6 ++
> 2 files changed, 73 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/phy/mediatek,mt8365-csi-rx.yaml
>
> diff --git a/Documentation/devicetree/bindings/phy/mediatek,mt8365-csi-rx.yaml b/Documentation/devicetree/bindings/phy/mediatek,mt8365-csi-rx.yaml
> new file mode 100644
> index 000000000000..a1bd96a98051
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/phy/mediatek,mt8365-csi-rx.yaml
> @@ -0,0 +1,67 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +# Copyright (c) 2023 MediaTek, BayLibre
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/phy/mediatek,mt8365-csi-rx.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Mediatek Sensor Interface MIPI CSI CD-PHY
> +
> +maintainers:
> + - Julien Stephan <[email protected]>
> + - Andy Hsieh <[email protected]>
> +
> +description:
> + The SENINF CD-PHY is a set of CD-PHY connected to the SENINF CSI-2
> + receivers. The number of PHYs depends on the SoC model.
> + Depending on the SoC model, each PHYs can be either CD-PHY or D-PHY only
> + capable.
> +
> +properties:
> + compatible:
> + enum:
> + - mediatek,mt8365-csi-rx
> +
> + reg:
> + maxItems: 1
> +
> + '#phy-cells':
> + const: 0
> +
> + mediatek,phy-type:
Instead of declaring a phy-type here like this, can't we instead declare that in
the phy cells, like we're doing with MTK TPHY and like other non-MediaTek PHYs are
already doing?
device {
...
phys = <&csi0_rx PHY_TYPE_CDPHY>;
...
}
Regards,
Angelo
On Wed, May 24, 2023 at 11:45:30AM +0200, AngeloGioacchino Del Regno wrote:
> Il 24/05/23 10:30, Julien Stephan ha scritto:
> > From: Florian Sylvestre <[email protected]>
> >
> > This adds the bindings, for the MIPI CD-PHY module v0.5 embedded in
> > some Mediatek soc, such as the mt8365
> >
> > Signed-off-by: Florian Sylvestre <[email protected]>
> > Signed-off-by: Julien Stephan <[email protected]>
> > ---
> > .../bindings/phy/mediatek,mt8365-csi-rx.yaml | 67 +++++++++++++++++++
> > MAINTAINERS | 6 ++
> > 2 files changed, 73 insertions(+)
> > create mode 100644 Documentation/devicetree/bindings/phy/mediatek,mt8365-csi-rx.yaml
> >
> > diff --git a/Documentation/devicetree/bindings/phy/mediatek,mt8365-csi-rx.yaml b/Documentation/devicetree/bindings/phy/mediatek,mt8365-csi-rx.yaml
> > new file mode 100644
> > index 000000000000..a1bd96a98051
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/phy/mediatek,mt8365-csi-rx.yaml
> > @@ -0,0 +1,67 @@
> > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> > +# Copyright (c) 2023 MediaTek, BayLibre
> > +%YAML 1.2
> > +---
> > +$id: http://devicetree.org/schemas/phy/mediatek,mt8365-csi-rx.yaml#
> > +$schema: http://devicetree.org/meta-schemas/core.yaml#
> > +
> > +title: Mediatek Sensor Interface MIPI CSI CD-PHY
> > +
> > +maintainers:
> > + - Julien Stephan <[email protected]>
> > + - Andy Hsieh <[email protected]>
> > +
> > +description:
> > + The SENINF CD-PHY is a set of CD-PHY connected to the SENINF CSI-2
> > + receivers. The number of PHYs depends on the SoC model.
> > + Depending on the SoC model, each PHYs can be either CD-PHY or D-PHY only
> > + capable.
> > +
> > +properties:
> > + compatible:
> > + enum:
> > + - mediatek,mt8365-csi-rx
> > +
> > + reg:
> > + maxItems: 1
> > +
> > + '#phy-cells':
> > + const: 0
> > +
> > + mediatek,phy-type:
>
> Instead of declaring a phy-type here like this, can't we instead declare that in
> the phy cells, like we're doing with MTK TPHY and like other non-MediaTek PHYs are
> already doing?
>
> device {
> ...
> phys = <&csi0_rx PHY_TYPE_CDPHY>;
> ...
> }
>
> Regards,
> Angelo
>
>
Hi Angelo,
This is a hardware property that is not dynamic, so IMHO it doesn't make sense
to use phy argument for that. Some driver already use a 'phy-type'
property (such as phy-cadence-torrent.yaml).
I was thinking of using phy argument on future upgrade when driver will
support D-PHY and C-PHY modes so the phy user will be able to choose the
mode.
Does it makes sense?
Best
Julien
On Wed, May 24, 2023 at 04:05:03PM +0200, Julien Stephan wrote:
> On Wed, May 24, 2023 at 11:45:30AM +0200, AngeloGioacchino Del Regno wrote:
> > Il 24/05/23 10:30, Julien Stephan ha scritto:
> > > From: Florian Sylvestre <[email protected]>
> > >
> > > This adds the bindings, for the MIPI CD-PHY module v0.5 embedded in
> > > some Mediatek soc, such as the mt8365
> > >
> > > Signed-off-by: Florian Sylvestre <[email protected]>
> > > Signed-off-by: Julien Stephan <[email protected]>
> > > ---
> > > .../bindings/phy/mediatek,mt8365-csi-rx.yaml | 67 +++++++++++++++++++
> > > MAINTAINERS | 6 ++
> > > 2 files changed, 73 insertions(+)
> > > create mode 100644 Documentation/devicetree/bindings/phy/mediatek,mt8365-csi-rx.yaml
> > >
> > > diff --git a/Documentation/devicetree/bindings/phy/mediatek,mt8365-csi-rx.yaml b/Documentation/devicetree/bindings/phy/mediatek,mt8365-csi-rx.yaml
> > > new file mode 100644
> > > index 000000000000..a1bd96a98051
> > > --- /dev/null
> > > +++ b/Documentation/devicetree/bindings/phy/mediatek,mt8365-csi-rx.yaml
> > > @@ -0,0 +1,67 @@
> > > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> > > +# Copyright (c) 2023 MediaTek, BayLibre
> > > +%YAML 1.2
> > > +---
> > > +$id: http://devicetree.org/schemas/phy/mediatek,mt8365-csi-rx.yaml#
> > > +$schema: http://devicetree.org/meta-schemas/core.yaml#
> > > +
> > > +title: Mediatek Sensor Interface MIPI CSI CD-PHY
> > > +
> > > +maintainers:
> > > + - Julien Stephan <[email protected]>
> > > + - Andy Hsieh <[email protected]>
> > > +
> > > +description:
> > > + The SENINF CD-PHY is a set of CD-PHY connected to the SENINF CSI-2
> > > + receivers. The number of PHYs depends on the SoC model.
> > > + Depending on the SoC model, each PHYs can be either CD-PHY or D-PHY only
> > > + capable.
> > > +
> > > +properties:
> > > + compatible:
> > > + enum:
> > > + - mediatek,mt8365-csi-rx
> > > +
> > > + reg:
> > > + maxItems: 1
> > > +
> > > + '#phy-cells':
> > > + const: 0
> > > +
> > > + mediatek,phy-type:
> >
> > Instead of declaring a phy-type here like this, can't we instead declare that in
> > the phy cells, like we're doing with MTK TPHY and like other non-MediaTek PHYs are
> > already doing?
> >
> > device {
> > ...
> > phys = <&csi0_rx PHY_TYPE_CDPHY>;
> > ...
> > }
> >
> > Regards,
> > Angelo
> >
> >
>
> Hi Angelo,
>
> This is a hardware property that is not dynamic, so IMHO it doesn't make sense
> to use phy argument for that.
Why? Interrupt numbers are fixed hardware properties which go in arg
cells.
> Some driver already use a 'phy-type'
> property (such as phy-cadence-torrent.yaml).
>
> I was thinking of using phy argument on future upgrade when driver will
> support D-PHY and C-PHY modes so the phy user will be able to choose the
> mode.
Once you design the binding, you don't get to change it.
Rob