2017-04-17 06:02:25

by Hoegeun Kwon

[permalink] [raw]
Subject: [PATCH v2 0/3] Add support for the S6E3HF2 panel on TM2e board

Hi all,

First, thanks for Andrzej review.

The purpose of this patch is add support for s6e3hf2 AMOLED panel on
the TM2e board. The panel has 1600x2560 resolution in 5.65" physical
panel in the TM2e device.

The s6e3hf2 panel(5.65") is simliar to the previous s6e3ha2 panel(5.7"),
but resolution and some command message are different. So it can be
distinguished as a compatiblitiy string.

Best regards,
Hoegeun

Changes for V2:
- Add new compatible string to "samsung,s6e3ha2.txt binding with comments.
- Fix the panel name from s6e3ha2-e to s6e3hf2

Hoegeun Kwon (3):
dt-bindings: Add support for samsung s6e3hf2 panel
drm/panel: s6e3ha2: Add support for s6e3hf2 panel on TM2e board
arm64: dts: exynos: Add support for s6e3hf2 panel device on TM2e board

.../bindings/display/panel/samsung,s6e3ha2.txt | 5 +-
arch/arm64/boot/dts/exynos/exynos5433-tm2e.dts | 12 ++++
drivers/gpu/drm/panel/panel-samsung-s6e3ha2.c | 64 +++++++++++++++++++---
3 files changed, 73 insertions(+), 8 deletions(-)

--
1.9.1


2017-04-17 06:02:30

by Hoegeun Kwon

[permalink] [raw]
Subject: [PATCH v2 1/3] dt-bindings: Add support for samsung s6e3hf2 panel

The samsung s6e3hf2 panel is a 5.65" 1600x2560 AMOLED panel connected
using MIPI-DSI interfaces.

The s6e3hf2 is add to samsung,s6e3ha2.txt binding because it is a
panel similar to the s6e3ha2. So add the compatible string and
comments.

Signed-off-by: Hoegeun Kwon <[email protected]>
---
Documentation/devicetree/bindings/display/panel/samsung,s6e3ha2.txt | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/Documentation/devicetree/bindings/display/panel/samsung,s6e3ha2.txt b/Documentation/devicetree/bindings/display/panel/samsung,s6e3ha2.txt
index 18854f4..4acea25 100644
--- a/Documentation/devicetree/bindings/display/panel/samsung,s6e3ha2.txt
+++ b/Documentation/devicetree/bindings/display/panel/samsung,s6e3ha2.txt
@@ -1,7 +1,10 @@
Samsung S6E3HA2 5.7" 1440x2560 AMOLED panel
+Samsung S6E3HF2 5.65" 1600x2560 AMOLED panel

Required properties:
- - compatible: "samsung,s6e3ha2"
+ - compatible: should be one of:
+ "samsung,s6e3ha2",
+ "samsung,s6e3hf2".
- reg: the virtual channel number of a DSI peripheral
- vdd3-supply: I/O voltage supply
- vci-supply: voltage supply for analog circuits
--
1.9.1

2017-04-17 06:02:33

by Hoegeun Kwon

[permalink] [raw]
Subject: [PATCH v2 2/3] drm/panel: s6e3ha2: Add support for s6e3hf2 panel on TM2e board

This patch supports TM2e panel and the panel has 1600x2560 resolution
in 5.65" physical.

This identify panel type with compatibility string, also invoke
display mode that matches the type. So add the check code for s6e3ha2
compatibility and s6e3hf2 type and select the drm_display_mode of
default and edge type.

Signed-off-by: Hoegeun Kwon <[email protected]>
---
drivers/gpu/drm/panel/panel-samsung-s6e3ha2.c | 64 ++++++++++++++++++++++++---
1 file changed, 57 insertions(+), 7 deletions(-)

diff --git a/drivers/gpu/drm/panel/panel-samsung-s6e3ha2.c b/drivers/gpu/drm/panel/panel-samsung-s6e3ha2.c
index 4cc08d7..c7b418b 100644
--- a/drivers/gpu/drm/panel/panel-samsung-s6e3ha2.c
+++ b/drivers/gpu/drm/panel/panel-samsung-s6e3ha2.c
@@ -16,6 +16,7 @@
#include <drm/drm_panel.h>
#include <linux/backlight.h>
#include <linux/gpio/consumer.h>
+#include <linux/of_device.h>
#include <linux/regulator/consumer.h>

#define S6E3HA2_MIN_BRIGHTNESS 0
@@ -218,6 +219,16 @@
0x1d, 0x1e, 0x1f, 0x20, 0x21
};

+enum s6e3ha2_type {
+ HA2_TYPE,
+ HF2_TYPE,
+};
+
+struct s6e3ha2_panel_desc {
+ const struct drm_display_mode *mode;
+ enum s6e3ha2_type type;
+};
+
struct s6e3ha2 {
struct device *dev;
struct drm_panel panel;
@@ -226,6 +237,8 @@ struct s6e3ha2 {
struct regulator_bulk_data supplies[2];
struct gpio_desc *reset_gpio;
struct gpio_desc *enable_gpio;
+
+ const struct s6e3ha2_panel_desc *desc;
};

static int s6e3ha2_dcs_write(struct s6e3ha2 *ctx, const void *data, size_t len)
@@ -283,11 +296,19 @@ static int s6e3ha2_single_dsi_set(struct s6e3ha2 *ctx)
static int s6e3ha2_freq_calibration(struct s6e3ha2 *ctx)
{
s6e3ha2_dcs_write_seq_static(ctx, 0xfd, 0x1c);
+ if (ctx->desc->type == HF2_TYPE)
+ s6e3ha2_dcs_write_seq_static(ctx, 0xf2, 0x67, 0x40, 0xc5);
s6e3ha2_dcs_write_seq_static(ctx, 0xfe, 0x20, 0x39);
s6e3ha2_dcs_write_seq_static(ctx, 0xfe, 0xa0);
s6e3ha2_dcs_write_seq_static(ctx, 0xfe, 0x20);
- s6e3ha2_dcs_write_seq_static(ctx, 0xce, 0x03, 0x3b, 0x12, 0x62, 0x40,
- 0x80, 0xc0, 0x28, 0x28, 0x28, 0x28, 0x39, 0xc5);
+
+ if (ctx->desc->type == HA2_TYPE)
+ s6e3ha2_dcs_write_seq_static(ctx, 0xce, 0x03, 0x3b, 0x12, 0x62,
+ 0x40, 0x80, 0xc0, 0x28, 0x28, 0x28, 0x28, 0x39, 0xc5);
+ else
+ s6e3ha2_dcs_write_seq_static(ctx, 0xce, 0x03, 0x3b, 0x14, 0x6d,
+ 0x40, 0x80, 0xc0, 0x28, 0x28, 0x28, 0x28, 0x39, 0xc5);
+
return 0;
}

@@ -583,7 +604,7 @@ static int s6e3ha2_enable(struct drm_panel *panel)
return 0;
}

-static const struct drm_display_mode default_mode = {
+static const struct drm_display_mode s6e3ha2_mode = {
.clock = 222372,
.hdisplay = 1440,
.hsync_start = 1440 + 1,
@@ -597,16 +618,41 @@ static int s6e3ha2_enable(struct drm_panel *panel)
.flags = 0,
};

+static const struct s6e3ha2_panel_desc samsung_s6e3ha2 = {
+ .mode = &s6e3ha2_mode,
+ .type = HA2_TYPE,
+};
+
+static const struct drm_display_mode s6e3hf2_mode = {
+ .clock = 247856,
+ .hdisplay = 1600,
+ .hsync_start = 1600 + 1,
+ .hsync_end = 1600 + 1 + 1,
+ .htotal = 1600 + 1 + 1 + 1,
+ .vdisplay = 2560,
+ .vsync_start = 2560 + 1,
+ .vsync_end = 2560 + 1 + 1,
+ .vtotal = 2560 + 1 + 1 + 15,
+ .vrefresh = 60,
+ .flags = 0,
+};
+
+static const struct s6e3ha2_panel_desc samsung_s6e3hf2 = {
+ .mode = &s6e3hf2_mode,
+ .type = HF2_TYPE,
+};
+
static int s6e3ha2_get_modes(struct drm_panel *panel)
{
struct drm_connector *connector = panel->connector;
+ struct s6e3ha2 *ctx = container_of(panel, struct s6e3ha2, panel);
struct drm_display_mode *mode;

- mode = drm_mode_duplicate(panel->drm, &default_mode);
+ mode = drm_mode_duplicate(panel->drm, ctx->desc->mode);
if (!mode) {
DRM_ERROR("failed to add mode %ux%ux@%u\n",
- default_mode.hdisplay, default_mode.vdisplay,
- default_mode.vrefresh);
+ ctx->desc->mode->hdisplay, ctx->desc->mode->vdisplay,
+ ctx->desc->mode->vrefresh);
return -ENOMEM;
}

@@ -642,6 +688,7 @@ static int s6e3ha2_probe(struct mipi_dsi_device *dsi)
mipi_dsi_set_drvdata(dsi, ctx);

ctx->dev = dev;
+ ctx->desc = of_device_get_match_data(dev);

dsi->lanes = 4;
dsi->format = MIPI_DSI_FMT_RGB888;
@@ -717,7 +764,10 @@ static int s6e3ha2_remove(struct mipi_dsi_device *dsi)
}

static const struct of_device_id s6e3ha2_of_match[] = {
- { .compatible = "samsung,s6e3ha2" },
+ { .compatible = "samsung,s6e3ha2",
+ .data = &samsung_s6e3ha2 },
+ { .compatible = "samsung,s6e3hf2",
+ .data = &samsung_s6e3hf2 },
{ }
};
MODULE_DEVICE_TABLE(of, s6e3ha2_of_match);
--
1.9.1

2017-04-17 06:07:16

by Hoegeun Kwon

[permalink] [raw]
Subject: [PATCH v2 3/3] arm64: dts: exynos: Add support for s6e3hf2 panel device on TM2e board

This patch add the panel device tree node for s6e3hf2 display
controller to TM2e dts.

Signed-off-by: Hoegeun Kwon <[email protected]>
---
arch/arm64/boot/dts/exynos/exynos5433-tm2e.dts | 12 ++++++++++++
1 file changed, 12 insertions(+)

diff --git a/arch/arm64/boot/dts/exynos/exynos5433-tm2e.dts b/arch/arm64/boot/dts/exynos/exynos5433-tm2e.dts
index 694717a..98ad094 100644
--- a/arch/arm64/boot/dts/exynos/exynos5433-tm2e.dts
+++ b/arch/arm64/boot/dts/exynos/exynos5433-tm2e.dts
@@ -52,6 +52,18 @@
assigned-clock-rates = <278000000>, <400000000>;
};

+&dsi {
+ panel@0 {
+ compatible = "samsung,s6e3hf2";
+ reg = <0>;
+ vdd3-supply = <&ldo27_reg>;
+ vci-supply = <&ldo28_reg>;
+ reset-gpios = <&gpg0 0 GPIO_ACTIVE_LOW>;
+ enable-gpios = <&gpf1 5 GPIO_ACTIVE_HIGH>;
+ te-gpios = <&gpf1 3 GPIO_ACTIVE_HIGH>;
+ };
+};
+
&ldo31_reg {
regulator-name = "TSP_VDD_1.8V_AP";
regulator-min-microvolt = <1800000>;
--
1.9.1

2017-04-18 05:53:24

by Andrzej Hajda

[permalink] [raw]
Subject: Re: [PATCH v2 1/3] dt-bindings: Add support for samsung s6e3hf2 panel

On 17.04.2017 08:02, Hoegeun Kwon wrote:
> The samsung s6e3hf2 panel is a 5.65" 1600x2560 AMOLED panel connected
> using MIPI-DSI interfaces.
>
> The s6e3hf2 is add to samsung,s6e3ha2.txt binding because it is a
> panel similar to the s6e3ha2. So add the compatible string and
> comments.
>
> Signed-off-by: Hoegeun Kwon <[email protected]>
Reviewed-by: Andrzej Hajda <[email protected]>

--
Regards
Andrzej

2017-04-18 05:55:40

by Andrzej Hajda

[permalink] [raw]
Subject: Re: [PATCH v2 2/3] drm/panel: s6e3ha2: Add support for s6e3hf2 panel on TM2e board

On 17.04.2017 08:02, Hoegeun Kwon wrote:
> This patch supports TM2e panel and the panel has 1600x2560 resolution
> in 5.65" physical.
>
> This identify panel type with compatibility string, also invoke
> display mode that matches the type. So add the check code for s6e3ha2
> compatibility and s6e3hf2 type and select the drm_display_mode of
> default and edge type.
>
> Signed-off-by: Hoegeun Kwon <[email protected]>
Reviewed-by: Andrzej Hajda <[email protected]>

--
Regards
Andrzej

2017-04-18 06:00:24

by Andrzej Hajda

[permalink] [raw]
Subject: Re: [PATCH v2 3/3] arm64: dts: exynos: Add support for s6e3hf2 panel device on TM2e board

On 17.04.2017 08:02, Hoegeun Kwon wrote:
> This patch add the panel device tree node for s6e3hf2 display
> controller to TM2e dts.
>
> Signed-off-by: Hoegeun Kwon <[email protected]>

Maybe it would be good to remove te-gpios property - tm2/tm2e uses
hardware trigger, so it is not necessary and generates useless interrupts.

Beside this:
Reviewed-by: Andrzej Hajda <[email protected]>
--
Regards
Andrzej
> ---
> arch/arm64/boot/dts/exynos/exynos5433-tm2e.dts | 12 ++++++++++++
> 1 file changed, 12 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/exynos/exynos5433-tm2e.dts b/arch/arm64/boot/dts/exynos/exynos5433-tm2e.dts
> index 694717a..98ad094 100644
> --- a/arch/arm64/boot/dts/exynos/exynos5433-tm2e.dts
> +++ b/arch/arm64/boot/dts/exynos/exynos5433-tm2e.dts
> @@ -52,6 +52,18 @@
> assigned-clock-rates = <278000000>, <400000000>;
> };
>
> +&dsi {
> + panel@0 {
> + compatible = "samsung,s6e3hf2";
> + reg = <0>;
> + vdd3-supply = <&ldo27_reg>;
> + vci-supply = <&ldo28_reg>;
> + reset-gpios = <&gpg0 0 GPIO_ACTIVE_LOW>;
> + enable-gpios = <&gpf1 5 GPIO_ACTIVE_HIGH>;
> + te-gpios = <&gpf1 3 GPIO_ACTIVE_HIGH>;
> + };
> +};
> +
> &ldo31_reg {
> regulator-name = "TSP_VDD_1.8V_AP";
> regulator-min-microvolt = <1800000>;


2017-04-18 07:45:41

by Hoegeun Kwon

[permalink] [raw]
Subject: Re: [PATCH v2 3/3] arm64: dts: exynos: Add support for s6e3hf2 panel device on TM2e board

On 04/18/2017 03:00 PM, Andrzej Hajda wrote:
> On 17.04.2017 08:02, Hoegeun Kwon wrote:
>> This patch add the panel device tree node for s6e3hf2 display
>> controller to TM2e dts.
>>
>> Signed-off-by: Hoegeun Kwon <[email protected]>
> Maybe it would be good to remove te-gpios property - tm2/tm2e uses
> hardware trigger, so it is not necessary and generates useless interrupts.

Thanks for your review.

I agree, but I thinks remove the te-gpio property after your patch [1]
has been merged.


[1] https://patchwork.kernel.org/patch/9625383/

Best regards,
Hoegeun

>
> Beside this:
> Reviewed-by: Andrzej Hajda <[email protected]>
> --
> Regards
> Andrzej
>> ---
>> arch/arm64/boot/dts/exynos/exynos5433-tm2e.dts | 12 ++++++++++++
>> 1 file changed, 12 insertions(+)
>>
>> diff --git a/arch/arm64/boot/dts/exynos/exynos5433-tm2e.dts b/arch/arm64/boot/dts/exynos/exynos5433-tm2e.dts
>> index 694717a..98ad094 100644
>> --- a/arch/arm64/boot/dts/exynos/exynos5433-tm2e.dts
>> +++ b/arch/arm64/boot/dts/exynos/exynos5433-tm2e.dts
>> @@ -52,6 +52,18 @@
>> assigned-clock-rates = <278000000>, <400000000>;
>> };
>>
>> +&dsi {
>> + panel@0 {
>> + compatible = "samsung,s6e3hf2";
>> + reg = <0>;
>> + vdd3-supply = <&ldo27_reg>;
>> + vci-supply = <&ldo28_reg>;
>> + reset-gpios = <&gpg0 0 GPIO_ACTIVE_LOW>;
>> + enable-gpios = <&gpf1 5 GPIO_ACTIVE_HIGH>;
>> + te-gpios = <&gpf1 3 GPIO_ACTIVE_HIGH>;
>> + };
>> +};
>> +
>> &ldo31_reg {
>> regulator-name = "TSP_VDD_1.8V_AP";
>> regulator-min-microvolt = <1800000>;
>
>
>

2017-04-18 07:57:33

by Andrzej Hajda

[permalink] [raw]
Subject: Re: [PATCH v2 3/3] arm64: dts: exynos: Add support for s6e3hf2 panel device on TM2e board

On 18.04.2017 09:44, Hoegeun Kwon wrote:
> On 04/18/2017 03:00 PM, Andrzej Hajda wrote:
>> On 17.04.2017 08:02, Hoegeun Kwon wrote:
>>> This patch add the panel device tree node for s6e3hf2 display
>>> controller to TM2e dts.
>>>
>>> Signed-off-by: Hoegeun Kwon <[email protected]>
>> Maybe it would be good to remove te-gpios property - tm2/tm2e uses
>> hardware trigger, so it is not necessary and generates useless interrupts.
> Thanks for your review.
>
> I agree, but I thinks remove the te-gpio property after your patch [1]
> has been merged.

Patch [1] has been merged about month ago :)

Regards
Andrzej

>
>
> [1] https://patchwork.kernel.org/patch/9625383/
>
> Best regards,
> Hoegeun
>
>> Beside this:
>> Reviewed-by: Andrzej Hajda <[email protected]>
>> --
>> Regards
>> Andrzej
>>> ---
>>> arch/arm64/boot/dts/exynos/exynos5433-tm2e.dts | 12 ++++++++++++
>>> 1 file changed, 12 insertions(+)
>>>
>>> diff --git a/arch/arm64/boot/dts/exynos/exynos5433-tm2e.dts b/arch/arm64/boot/dts/exynos/exynos5433-tm2e.dts
>>> index 694717a..98ad094 100644
>>> --- a/arch/arm64/boot/dts/exynos/exynos5433-tm2e.dts
>>> +++ b/arch/arm64/boot/dts/exynos/exynos5433-tm2e.dts
>>> @@ -52,6 +52,18 @@
>>> assigned-clock-rates = <278000000>, <400000000>;
>>> };
>>>
>>> +&dsi {
>>> + panel@0 {
>>> + compatible = "samsung,s6e3hf2";
>>> + reg = <0>;
>>> + vdd3-supply = <&ldo27_reg>;
>>> + vci-supply = <&ldo28_reg>;
>>> + reset-gpios = <&gpg0 0 GPIO_ACTIVE_LOW>;
>>> + enable-gpios = <&gpf1 5 GPIO_ACTIVE_HIGH>;
>>> + te-gpios = <&gpf1 3 GPIO_ACTIVE_HIGH>;
>>> + };
>>> +};
>>> +
>>> &ldo31_reg {
>>> regulator-name = "TSP_VDD_1.8V_AP";
>>> regulator-min-microvolt = <1800000>;
>>
>>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
>
>

Subject: Re: [PATCH v2 2/3] drm/panel: s6e3ha2: Add support for s6e3hf2 panel on TM2e board



2017년 04월 18일 14:55에 Andrzej Hajda 이(가) 쓴 글:
> On 17.04.2017 08:02, Hoegeun Kwon wrote:
>> This patch supports TM2e panel and the panel has 1600x2560 resolution
>> in 5.65" physical.
>>
>> This identify panel type with compatibility string, also invoke
>> display mode that matches the type. So add the check code for s6e3ha2
>> compatibility and s6e3hf2 type and select the drm_display_mode of
>> default and edge type.
>>
>> Signed-off-by: Hoegeun Kwon <[email protected]>
> Reviewed-by: Andrzej Hajda <[email protected]>

Reviewed-by: Inki Dae <[email protected]>

Thanks,
Inki Dae

>
> --
> Regards
> Andrzej
> --
> To unsubscribe from this list: send the line "unsubscribe devicetree" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
>
>

2017-04-18 08:29:10

by Hoegeun Kwon

[permalink] [raw]
Subject: Re: [PATCH v2 3/3] arm64: dts: exynos: Add support for s6e3hf2 panel device on TM2e board

On 04/18/2017 04:56 PM, Andrzej Hajda wrote:
> On 18.04.2017 09:44, Hoegeun Kwon wrote:
>> On 04/18/2017 03:00 PM, Andrzej Hajda wrote:
>>> On 17.04.2017 08:02, Hoegeun Kwon wrote:
>>>> This patch add the panel device tree node for s6e3hf2 display
>>>> controller to TM2e dts.
>>>>
>>>> Signed-off-by: Hoegeun Kwon <[email protected]>
>>> Maybe it would be good to remove te-gpios property - tm2/tm2e uses
>>> hardware trigger, so it is not necessary and generates useless interrupts.
>> Thanks for your review.
>>
>> I agree, but I thinks remove the te-gpio property after your patch [1]
>> has been merged.
> Patch [1] has been merged about month ago :)

Ah..., My mistake.... :)

I will send ver3 patchset without te-gpio property.

Best regards,
Hoegeun