2020-02-25 12:11:45

by Jitao Shi

[permalink] [raw]
Subject: [PATCH v2 0/4] Config mipi tx drive current and impedance

Changes since v1:
- fix coding style.
- change mtk_mipi_tx_config_calibration_data() to void

Jitao Shi (4):
dt-binds: display: mediatek: add property to control mipi tx drive
current
dt-binds: display: mediatek: get mipitx calibration data from nvmem
drm/mediatek: add the mipitx driving control
drm/mediatek: config mipitx impedance with calibration data

.../display/mediatek/mediatek,dsi.txt | 9 +++
drivers/gpu/drm/mediatek/mtk_mipi_tx.c | 6 ++
drivers/gpu/drm/mediatek/mtk_mipi_tx.h | 1 +
drivers/gpu/drm/mediatek/mtk_mt8183_mipi_tx.c | 64 +++++++++++++++++++
4 files changed, 80 insertions(+)

--
2.21.0


2020-02-25 12:12:32

by Jitao Shi

[permalink] [raw]
Subject: [PATCH v2 3/4] drm/mediatek: add the mipitx driving control

Add a property in device tree to control the driving by different
board.

Signed-off-by: Jitao Shi <[email protected]>
---
drivers/gpu/drm/mediatek/mtk_mipi_tx.c | 6 ++++++
drivers/gpu/drm/mediatek/mtk_mipi_tx.h | 1 +
drivers/gpu/drm/mediatek/mtk_mt8183_mipi_tx.c | 7 +++++++
3 files changed, 14 insertions(+)

diff --git a/drivers/gpu/drm/mediatek/mtk_mipi_tx.c b/drivers/gpu/drm/mediatek/mtk_mipi_tx.c
index e4d34484ecc8..ec8406c86bfb 100644
--- a/drivers/gpu/drm/mediatek/mtk_mipi_tx.c
+++ b/drivers/gpu/drm/mediatek/mtk_mipi_tx.c
@@ -125,6 +125,12 @@ static int mtk_mipi_tx_probe(struct platform_device *pdev)
return ret;
}

+ ret = of_property_read_u32(dev->of_node, "mipitx-current-drive",
+ &mipi_tx->mipitx_drive);
+ /* If can't get the "mipi_tx->mipitx_drive", set it default 0x8 */
+ if (ret < 0)
+ mipi_tx->mipitx_drive = 0x8;
+
ref_clk_name = __clk_get_name(ref_clk);

ret = of_property_read_string(dev->of_node, "clock-output-names",
diff --git a/drivers/gpu/drm/mediatek/mtk_mipi_tx.h b/drivers/gpu/drm/mediatek/mtk_mipi_tx.h
index 413f35d86219..eea44327fe9f 100644
--- a/drivers/gpu/drm/mediatek/mtk_mipi_tx.h
+++ b/drivers/gpu/drm/mediatek/mtk_mipi_tx.h
@@ -27,6 +27,7 @@ struct mtk_mipi_tx {
struct device *dev;
void __iomem *regs;
u32 data_rate;
+ u32 mipitx_drive;
const struct mtk_mipitx_data *driver_data;
struct clk_hw pll_hw;
struct clk *pll;
diff --git a/drivers/gpu/drm/mediatek/mtk_mt8183_mipi_tx.c b/drivers/gpu/drm/mediatek/mtk_mt8183_mipi_tx.c
index 91f08a351fd0..124fdf95f1e5 100644
--- a/drivers/gpu/drm/mediatek/mtk_mt8183_mipi_tx.c
+++ b/drivers/gpu/drm/mediatek/mtk_mt8183_mipi_tx.c
@@ -17,6 +17,9 @@
#define RG_DSI_BG_CORE_EN BIT(7)
#define RG_DSI_PAD_TIEL_SEL BIT(8)

+#define MIPITX_VOLTAGE_SEL 0x0010
+#define RG_DSI_HSTX_LDO_REF_SEL (0xf << 6)
+
#define MIPITX_PLL_PWR 0x0028
#define MIPITX_PLL_CON0 0x002c
#define MIPITX_PLL_CON1 0x0030
@@ -123,6 +126,10 @@ static void mtk_mipi_tx_power_on_signal(struct phy *phy)
mtk_mipi_tx_clear_bits(mipi_tx, MIPITX_D3_SW_CTL_EN, DSI_SW_CTL_EN);
mtk_mipi_tx_clear_bits(mipi_tx, MIPITX_CK_SW_CTL_EN, DSI_SW_CTL_EN);

+ mtk_mipi_tx_update_bits(mipi_tx, MIPITX_VOLTAGE_SEL,
+ RG_DSI_HSTX_LDO_REF_SEL,
+ mipi_tx->mipitx_drive << 6);
+
mtk_mipi_tx_set_bits(mipi_tx, MIPITX_CK_CKMODE_EN, DSI_CK_CKMODE_EN);
}

--
2.21.0

2020-02-25 12:12:37

by Jitao Shi

[permalink] [raw]
Subject: [PATCH v2 1/4] dt-binds: display: mediatek: add property to control mipi tx drive current

Add a property to control mipi tx drive current:
"mipitx-current-drive"

Signed-off-by: Jitao Shi <[email protected]>
---
.../devicetree/bindings/display/mediatek/mediatek,dsi.txt | 4 ++++
1 file changed, 4 insertions(+)

diff --git a/Documentation/devicetree/bindings/display/mediatek/mediatek,dsi.txt b/Documentation/devicetree/bindings/display/mediatek/mediatek,dsi.txt
index a19a6cc375ed..780201ddcd5c 100644
--- a/Documentation/devicetree/bindings/display/mediatek/mediatek,dsi.txt
+++ b/Documentation/devicetree/bindings/display/mediatek/mediatek,dsi.txt
@@ -33,6 +33,9 @@ Required properties:
- #clock-cells: must be <0>;
- #phy-cells: must be <0>.

+Optional properties:
+- mipitx-current-drive: adjust driving current, should be 1 ~ 0xF
+
Example:

mipi_tx0: mipi-dphy@10215000 {
@@ -42,6 +45,7 @@ mipi_tx0: mipi-dphy@10215000 {
clock-output-names = "mipi_tx0_pll";
#clock-cells = <0>;
#phy-cells = <0>;
+ mipitx-current-drive = <0x8>;
};

dsi0: dsi@1401b000 {
--
2.21.0

2020-02-25 12:13:12

by Jitao Shi

[permalink] [raw]
Subject: [PATCH v2 2/4] dt-binds: display: mediatek: get mipitx calibration data from nvmem

Add properties to get get mipitx calibration data.

Signed-off-by: Jitao Shi <[email protected]>
---
.../devicetree/bindings/display/mediatek/mediatek,dsi.txt | 5 +++++
1 file changed, 5 insertions(+)

diff --git a/Documentation/devicetree/bindings/display/mediatek/mediatek,dsi.txt b/Documentation/devicetree/bindings/display/mediatek/mediatek,dsi.txt
index 780201ddcd5c..7f12eb729791 100644
--- a/Documentation/devicetree/bindings/display/mediatek/mediatek,dsi.txt
+++ b/Documentation/devicetree/bindings/display/mediatek/mediatek,dsi.txt
@@ -34,6 +34,9 @@ Required properties:
- #phy-cells: must be <0>.

Optional properties:
+- nvmem-cells: A phandle to the calibration data provided by a nvmem device. If
+ unspecified default values shall be used.
+- nvmem-cell-names: Should be "calibration-data"
- mipitx-current-drive: adjust driving current, should be 1 ~ 0xF

Example:
@@ -45,6 +48,8 @@ mipi_tx0: mipi-dphy@10215000 {
clock-output-names = "mipi_tx0_pll";
#clock-cells = <0>;
#phy-cells = <0>;
+ nvmem-cells= <&mipi_tx_calibration>;
+ nvmem-cell-names = "calibration-data";
mipitx-current-drive = <0x8>;
};

--
2.21.0

2020-02-25 19:34:15

by Matthias Brugger

[permalink] [raw]
Subject: Re: [PATCH v2 3/4] drm/mediatek: add the mipitx driving control



On 25/02/2020 12:47, Jitao Shi wrote:
> Add a property in device tree to control the driving by different
> board.
>
> Signed-off-by: Jitao Shi <[email protected]>

Reviewed-by: Matthias Brugger <[email protected]>

> ---
> drivers/gpu/drm/mediatek/mtk_mipi_tx.c | 6 ++++++
> drivers/gpu/drm/mediatek/mtk_mipi_tx.h | 1 +
> drivers/gpu/drm/mediatek/mtk_mt8183_mipi_tx.c | 7 +++++++
> 3 files changed, 14 insertions(+)
>
> diff --git a/drivers/gpu/drm/mediatek/mtk_mipi_tx.c b/drivers/gpu/drm/mediatek/mtk_mipi_tx.c
> index e4d34484ecc8..ec8406c86bfb 100644
> --- a/drivers/gpu/drm/mediatek/mtk_mipi_tx.c
> +++ b/drivers/gpu/drm/mediatek/mtk_mipi_tx.c
> @@ -125,6 +125,12 @@ static int mtk_mipi_tx_probe(struct platform_device *pdev)
> return ret;
> }
>
> + ret = of_property_read_u32(dev->of_node, "mipitx-current-drive",
> + &mipi_tx->mipitx_drive);
> + /* If can't get the "mipi_tx->mipitx_drive", set it default 0x8 */
> + if (ret < 0)
> + mipi_tx->mipitx_drive = 0x8;
> +
> ref_clk_name = __clk_get_name(ref_clk);
>
> ret = of_property_read_string(dev->of_node, "clock-output-names",
> diff --git a/drivers/gpu/drm/mediatek/mtk_mipi_tx.h b/drivers/gpu/drm/mediatek/mtk_mipi_tx.h
> index 413f35d86219..eea44327fe9f 100644
> --- a/drivers/gpu/drm/mediatek/mtk_mipi_tx.h
> +++ b/drivers/gpu/drm/mediatek/mtk_mipi_tx.h
> @@ -27,6 +27,7 @@ struct mtk_mipi_tx {
> struct device *dev;
> void __iomem *regs;
> u32 data_rate;
> + u32 mipitx_drive;
> const struct mtk_mipitx_data *driver_data;
> struct clk_hw pll_hw;
> struct clk *pll;
> diff --git a/drivers/gpu/drm/mediatek/mtk_mt8183_mipi_tx.c b/drivers/gpu/drm/mediatek/mtk_mt8183_mipi_tx.c
> index 91f08a351fd0..124fdf95f1e5 100644
> --- a/drivers/gpu/drm/mediatek/mtk_mt8183_mipi_tx.c
> +++ b/drivers/gpu/drm/mediatek/mtk_mt8183_mipi_tx.c
> @@ -17,6 +17,9 @@
> #define RG_DSI_BG_CORE_EN BIT(7)
> #define RG_DSI_PAD_TIEL_SEL BIT(8)
>
> +#define MIPITX_VOLTAGE_SEL 0x0010
> +#define RG_DSI_HSTX_LDO_REF_SEL (0xf << 6)
> +
> #define MIPITX_PLL_PWR 0x0028
> #define MIPITX_PLL_CON0 0x002c
> #define MIPITX_PLL_CON1 0x0030
> @@ -123,6 +126,10 @@ static void mtk_mipi_tx_power_on_signal(struct phy *phy)
> mtk_mipi_tx_clear_bits(mipi_tx, MIPITX_D3_SW_CTL_EN, DSI_SW_CTL_EN);
> mtk_mipi_tx_clear_bits(mipi_tx, MIPITX_CK_SW_CTL_EN, DSI_SW_CTL_EN);
>
> + mtk_mipi_tx_update_bits(mipi_tx, MIPITX_VOLTAGE_SEL,
> + RG_DSI_HSTX_LDO_REF_SEL,
> + mipi_tx->mipitx_drive << 6);
> +
> mtk_mipi_tx_set_bits(mipi_tx, MIPITX_CK_CKMODE_EN, DSI_CK_CKMODE_EN);
> }
>
>

2020-03-02 22:14:53

by Rob Herring (Arm)

[permalink] [raw]
Subject: Re: [PATCH v2 1/4] dt-binds: display: mediatek: add property to control mipi tx drive current

On Tue, Feb 25, 2020 at 07:47:27PM +0800, Jitao Shi wrote:
> Add a property to control mipi tx drive current:
> "mipitx-current-drive"

'dt-bindings: display: ...' for the subject prefix.

>
> Signed-off-by: Jitao Shi <[email protected]>
> ---
> .../devicetree/bindings/display/mediatek/mediatek,dsi.txt | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/Documentation/devicetree/bindings/display/mediatek/mediatek,dsi.txt b/Documentation/devicetree/bindings/display/mediatek/mediatek,dsi.txt
> index a19a6cc375ed..780201ddcd5c 100644
> --- a/Documentation/devicetree/bindings/display/mediatek/mediatek,dsi.txt
> +++ b/Documentation/devicetree/bindings/display/mediatek/mediatek,dsi.txt
> @@ -33,6 +33,9 @@ Required properties:
> - #clock-cells: must be <0>;
> - #phy-cells: must be <0>.
>
> +Optional properties:
> +- mipitx-current-drive: adjust driving current, should be 1 ~ 0xF

Perhaps should be a common property and use the existing
'drive-strength-microamp'.

> +
> Example:
>
> mipi_tx0: mipi-dphy@10215000 {
> @@ -42,6 +45,7 @@ mipi_tx0: mipi-dphy@10215000 {
> clock-output-names = "mipi_tx0_pll";
> #clock-cells = <0>;
> #phy-cells = <0>;
> + mipitx-current-drive = <0x8>;
> };
>
> dsi0: dsi@1401b000 {
> --
> 2.21.0