linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v3 0/9] Add gamma lut support for mt8195
@ 2022-09-11 15:37 Jason-JH.Lin
  2022-09-11 15:37 ` [PATCH v3 1/9] dt-bindings: mediatek: modify item formatting for gamma Jason-JH.Lin
                   ` (8 more replies)
  0 siblings, 9 replies; 20+ messages in thread
From: Jason-JH.Lin @ 2022-09-11 15:37 UTC (permalink / raw)
  To: Chun-Kuang Hu, Rob Herring, Krzysztof Kozlowski,
	Matthias Brugger, AngeloGioacchino Del Regno
  Cc: CK Hu, Rex-BC Chen, Singo Chang, dri-devel, linux-mediatek,
	devicetree, linux-kernel, linux-arm-kernel,
	Project_Global_Chrome_Upstream_Group, Jason-JH.Lin

Since the gamma_set_common() function for previous SoC,
such as  mt8173 and mt8183, is designed for 9bit-to-10bit
conversion.
mt8195 is using 10bit-to-12bit conversion, which is
not compatible with the previous function.

Thus, need to update the function to fit the need of mt8195.
---
Change in v3:
1. separate 1 dt-binding patch to 2 patches, 1 is for modifying
   multiple items list to one and 1 is for moving mt8195 compatible.
2. redefine variables to reduce memory usage.
3. delete unused symbols.
4. separate 1 drm/mediatek patch to 6 patches.
5. rebase on tag 'next-20220909'
---
Jason-JH.Lin (5):
  drm/mediatek: Adjust mtk_drm_gamma_set_common parameters
  drm/mediatek: Add gamma support different lut_size for other SoC
  drm/mediatek: Add gamma support different lut_bits for other SoC
  drm/mediatek: Add gamma support different bank_size for other SoC
  drm/mediatek: Add clear RELAY_MODE bit to set gamma

zheng-yan.chen (4):
  dt-bindings: mediatek: modify item formatting for gamma
  dt-bindings: mediatek: Add gamma compatible for mt8195
  drm/mediatek: Add gamma lut support for mt8195
  arm64: dts: Modify gamma compatible for mt8195

 .../display/mediatek/mediatek,gamma.yaml      |   8 +-
 arch/arm64/boot/dts/mediatek/mt8195.dtsi      |   2 +-
 drivers/gpu/drm/mediatek/mtk_disp_aal.c       |   2 +-
 drivers/gpu/drm/mediatek/mtk_disp_drv.h       |   3 +-
 drivers/gpu/drm/mediatek/mtk_disp_gamma.c     | 115 ++++++++++++++----
 drivers/gpu/drm/mediatek/mtk_drm_crtc.c       |   4 +-
 drivers/gpu/drm/mediatek/mtk_drm_crtc.h       |   1 -
 drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.h   |   9 ++
 8 files changed, 109 insertions(+), 35 deletions(-)

-- 
2.18.0


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH v3 1/9] dt-bindings: mediatek: modify item formatting for gamma
  2022-09-11 15:37 [PATCH v3 0/9] Add gamma lut support for mt8195 Jason-JH.Lin
@ 2022-09-11 15:37 ` Jason-JH.Lin
  2022-09-11 15:37 ` [PATCH v3 2/9] dt-bindings: mediatek: Add gamma compatible for mt8195 Jason-JH.Lin
                   ` (7 subsequent siblings)
  8 siblings, 0 replies; 20+ messages in thread
From: Jason-JH.Lin @ 2022-09-11 15:37 UTC (permalink / raw)
  To: Chun-Kuang Hu, Rob Herring, Krzysztof Kozlowski,
	Matthias Brugger, AngeloGioacchino Del Regno
  Cc: CK Hu, Rex-BC Chen, Singo Chang, dri-devel, linux-mediatek,
	devicetree, linux-kernel, linux-arm-kernel,
	Project_Global_Chrome_Upstream_Group, zheng-yan.chen,
	Jason-JH . Lin

From: "zheng-yan.chen" <zheng-yan.chen@mediatek.com>

Since the items with only one const should be dedicated as enum,
merge all such items into one enum item.

Fixes: 4ed545e7d100 ("dt-bindings: display: mediatek: disp: split each block to individual yaml")
Signed-off-by: zheng-yan.chen <zheng-yan.chen@mediatek.com>
Signed-off-by: Jason-JH.Lin <jason-jh.lin@mediatek.com>
---
 .../bindings/display/mediatek/mediatek,gamma.yaml           | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/Documentation/devicetree/bindings/display/mediatek/mediatek,gamma.yaml b/Documentation/devicetree/bindings/display/mediatek/mediatek,gamma.yaml
index a89ea0ea7542..c3631a3e3f05 100644
--- a/Documentation/devicetree/bindings/display/mediatek/mediatek,gamma.yaml
+++ b/Documentation/devicetree/bindings/display/mediatek/mediatek,gamma.yaml
@@ -22,9 +22,9 @@ properties:
   compatible:
     oneOf:
       - items:
-          - const: mediatek,mt8173-disp-gamma
-      - items:
-          - const: mediatek,mt8183-disp-gamma
+          - enum:
+              - mediatek,mt8173-disp-gamma
+              - mediatek,mt8183-disp-gamma
       - items:
           - enum:
               - mediatek,mt8186-disp-gamma
-- 
2.18.0


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH v3 2/9] dt-bindings: mediatek: Add gamma compatible for mt8195
  2022-09-11 15:37 [PATCH v3 0/9] Add gamma lut support for mt8195 Jason-JH.Lin
  2022-09-11 15:37 ` [PATCH v3 1/9] dt-bindings: mediatek: modify item formatting for gamma Jason-JH.Lin
@ 2022-09-11 15:37 ` Jason-JH.Lin
  2022-09-11 15:37 ` [PATCH v3 3/9] drm/mediatek: Adjust mtk_drm_gamma_set_common parameters Jason-JH.Lin
                   ` (6 subsequent siblings)
  8 siblings, 0 replies; 20+ messages in thread
From: Jason-JH.Lin @ 2022-09-11 15:37 UTC (permalink / raw)
  To: Chun-Kuang Hu, Rob Herring, Krzysztof Kozlowski,
	Matthias Brugger, AngeloGioacchino Del Regno
  Cc: CK Hu, Rex-BC Chen, Singo Chang, dri-devel, linux-mediatek,
	devicetree, linux-kernel, linux-arm-kernel,
	Project_Global_Chrome_Upstream_Group, zheng-yan.chen,
	Jason-JH . Lin

From: "zheng-yan.chen" <zheng-yan.chen@mediatek.com>

mt8195 uses 10bit-to-12bit gamma-LUT, which is not compatible with
current 9bit-to-10bit gamma-LUT.

This patch thus add constant compatible for mt8195, which means that
mt8195 should only use specified mt8195 gamma driver data.

Also, delete related compatible from enum, to ensure that
mt8195 will not accidentally get others' gamma driver data and thus
cause fatal error.

Signed-off-by: zheng-yan.chen <zheng-yan.chen@mediatek.com>
Signed-off-by: Jason-JH.Lin <jason-jh.lin@mediatek.com>
Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
---
 .../devicetree/bindings/display/mediatek/mediatek,gamma.yaml    | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Documentation/devicetree/bindings/display/mediatek/mediatek,gamma.yaml b/Documentation/devicetree/bindings/display/mediatek/mediatek,gamma.yaml
index c3631a3e3f05..bc20160d6b68 100644
--- a/Documentation/devicetree/bindings/display/mediatek/mediatek,gamma.yaml
+++ b/Documentation/devicetree/bindings/display/mediatek/mediatek,gamma.yaml
@@ -25,11 +25,11 @@ properties:
           - enum:
               - mediatek,mt8173-disp-gamma
               - mediatek,mt8183-disp-gamma
+              - mediatek,mt8195-disp-gamma
       - items:
           - enum:
               - mediatek,mt8186-disp-gamma
               - mediatek,mt8192-disp-gamma
-              - mediatek,mt8195-disp-gamma
           - const: mediatek,mt8183-disp-gamma
 
   reg:
-- 
2.18.0


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH v3 3/9] drm/mediatek: Adjust mtk_drm_gamma_set_common parameters
  2022-09-11 15:37 [PATCH v3 0/9] Add gamma lut support for mt8195 Jason-JH.Lin
  2022-09-11 15:37 ` [PATCH v3 1/9] dt-bindings: mediatek: modify item formatting for gamma Jason-JH.Lin
  2022-09-11 15:37 ` [PATCH v3 2/9] dt-bindings: mediatek: Add gamma compatible for mt8195 Jason-JH.Lin
@ 2022-09-11 15:37 ` Jason-JH.Lin
  2022-09-12 10:12   ` AngeloGioacchino Del Regno
  2022-09-11 15:37 ` [PATCH v3 4/9] drm/mediatek: Add gamma support different lut_size for other SoC Jason-JH.Lin
                   ` (5 subsequent siblings)
  8 siblings, 1 reply; 20+ messages in thread
From: Jason-JH.Lin @ 2022-09-11 15:37 UTC (permalink / raw)
  To: Chun-Kuang Hu, Rob Herring, Krzysztof Kozlowski,
	Matthias Brugger, AngeloGioacchino Del Regno
  Cc: CK Hu, Rex-BC Chen, Singo Chang, dri-devel, linux-mediatek,
	devicetree, linux-kernel, linux-arm-kernel,
	Project_Global_Chrome_Upstream_Group, Jason-JH.Lin

Adjust the parameters in mtk_drm_gamma_set_common()
  - add (struct device *dev) to get lut_diff from gamma's driver data
  - remove (bool lut_diff) and use false as default value in the function

Fixes: 051524cbe62d ("FROMGIT: drm/mediatek: Add lut diff flag for new gamma hardware support")
Signed-off-by: Jason-JH.Lin <jason-jh.lin@mediatek.com>
---
 drivers/gpu/drm/mediatek/mtk_disp_aal.c   |  2 +-
 drivers/gpu/drm/mediatek/mtk_disp_drv.h   |  2 +-
 drivers/gpu/drm/mediatek/mtk_disp_gamma.c | 13 +++++++------
 3 files changed, 9 insertions(+), 8 deletions(-)

diff --git a/drivers/gpu/drm/mediatek/mtk_disp_aal.c b/drivers/gpu/drm/mediatek/mtk_disp_aal.c
index 0f9d7efb61d7..6517e0a5a7d8 100644
--- a/drivers/gpu/drm/mediatek/mtk_disp_aal.c
+++ b/drivers/gpu/drm/mediatek/mtk_disp_aal.c
@@ -66,7 +66,7 @@ void mtk_aal_gamma_set(struct device *dev, struct drm_crtc_state *state)
 	struct mtk_disp_aal *aal = dev_get_drvdata(dev);
 
 	if (aal->data && aal->data->has_gamma)
-		mtk_gamma_set_common(aal->regs, state, false);
+		mtk_gamma_set_common(NULL, aal->regs, state);
 }
 
 void mtk_aal_start(struct device *dev)
diff --git a/drivers/gpu/drm/mediatek/mtk_disp_drv.h b/drivers/gpu/drm/mediatek/mtk_disp_drv.h
index 33e61a136bbc..a83e5fbc8724 100644
--- a/drivers/gpu/drm/mediatek/mtk_disp_drv.h
+++ b/drivers/gpu/drm/mediatek/mtk_disp_drv.h
@@ -52,7 +52,7 @@ void mtk_gamma_config(struct device *dev, unsigned int w,
 		      unsigned int h, unsigned int vrefresh,
 		      unsigned int bpc, struct cmdq_pkt *cmdq_pkt);
 void mtk_gamma_set(struct device *dev, struct drm_crtc_state *state);
-void mtk_gamma_set_common(void __iomem *regs, struct drm_crtc_state *state, bool lut_diff);
+void mtk_gamma_set_common(struct device *dev, void __iomem *regs, struct drm_crtc_state *state);
 void mtk_gamma_start(struct device *dev);
 void mtk_gamma_stop(struct device *dev);
 
diff --git a/drivers/gpu/drm/mediatek/mtk_disp_gamma.c b/drivers/gpu/drm/mediatek/mtk_disp_gamma.c
index bbd558a036ec..f54a6a618348 100644
--- a/drivers/gpu/drm/mediatek/mtk_disp_gamma.c
+++ b/drivers/gpu/drm/mediatek/mtk_disp_gamma.c
@@ -54,14 +54,19 @@ void mtk_gamma_clk_disable(struct device *dev)
 	clk_disable_unprepare(gamma->clk);
 }
 
-void mtk_gamma_set_common(void __iomem *regs, struct drm_crtc_state *state, bool lut_diff)
+void mtk_gamma_set_common(struct device *dev, void __iomem *regs, struct drm_crtc_state *state)
 {
+	struct mtk_disp_gamma *gamma = dev_get_drvdata(dev);
+	bool lut_diff = false;
 	unsigned int i, reg;
 	struct drm_color_lut *lut;
 	void __iomem *lut_base;
 	u32 word;
 	u32 diff[3] = {0};
 
+	if (gamma && gamma->data)
+		lut_diff = gamma->data->lut_diff;
+
 	if (state->gamma_lut) {
 		reg = readl(regs + DISP_GAMMA_CFG);
 		reg = reg | GAMMA_LUT_EN;
@@ -91,12 +96,8 @@ void mtk_gamma_set_common(void __iomem *regs, struct drm_crtc_state *state, bool
 void mtk_gamma_set(struct device *dev, struct drm_crtc_state *state)
 {
 	struct mtk_disp_gamma *gamma = dev_get_drvdata(dev);
-	bool lut_diff = false;
-
-	if (gamma->data)
-		lut_diff = gamma->data->lut_diff;
 
-	mtk_gamma_set_common(gamma->regs, state, lut_diff);
+	mtk_gamma_set_common(dev, gamma->regs, state);
 }
 
 void mtk_gamma_config(struct device *dev, unsigned int w,
-- 
2.18.0


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH v3 4/9] drm/mediatek: Add gamma support different lut_size for other SoC
  2022-09-11 15:37 [PATCH v3 0/9] Add gamma lut support for mt8195 Jason-JH.Lin
                   ` (2 preceding siblings ...)
  2022-09-11 15:37 ` [PATCH v3 3/9] drm/mediatek: Adjust mtk_drm_gamma_set_common parameters Jason-JH.Lin
@ 2022-09-11 15:37 ` Jason-JH.Lin
  2022-09-11 21:10   ` kernel test robot
  2022-09-12 10:24   ` AngeloGioacchino Del Regno
  2022-09-11 15:37 ` [PATCH v3 5/9] drm/mediatek: Add gamma support different lut_bits " Jason-JH.Lin
                   ` (4 subsequent siblings)
  8 siblings, 2 replies; 20+ messages in thread
From: Jason-JH.Lin @ 2022-09-11 15:37 UTC (permalink / raw)
  To: Chun-Kuang Hu, Rob Herring, Krzysztof Kozlowski,
	Matthias Brugger, AngeloGioacchino Del Regno
  Cc: CK Hu, Rex-BC Chen, Singo Chang, dri-devel, linux-mediatek,
	devicetree, linux-kernel, linux-arm-kernel,
	Project_Global_Chrome_Upstream_Group, Jason-JH.Lin

1. Add mtk_drm_gamma_get_lut_size() and remove MTK_LUT_SIZE macro.
2. Add lut_size to gamma driver data for different SoC.

Signed-off-by: Jason-JH.Lin <jason-jh.lin@mediatek.com>
---
 drivers/gpu/drm/mediatek/mtk_disp_drv.h     |  1 +
 drivers/gpu/drm/mediatek/mtk_disp_gamma.c   | 22 +++++++++++++++++++--
 drivers/gpu/drm/mediatek/mtk_drm_crtc.c     |  4 ++--
 drivers/gpu/drm/mediatek/mtk_drm_crtc.h     |  1 -
 drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.h |  9 +++++++++
 5 files changed, 32 insertions(+), 5 deletions(-)

diff --git a/drivers/gpu/drm/mediatek/mtk_disp_drv.h b/drivers/gpu/drm/mediatek/mtk_disp_drv.h
index a83e5fbc8724..6a05bb56e693 100644
--- a/drivers/gpu/drm/mediatek/mtk_disp_drv.h
+++ b/drivers/gpu/drm/mediatek/mtk_disp_drv.h
@@ -51,6 +51,7 @@ void mtk_gamma_clk_disable(struct device *dev);
 void mtk_gamma_config(struct device *dev, unsigned int w,
 		      unsigned int h, unsigned int vrefresh,
 		      unsigned int bpc, struct cmdq_pkt *cmdq_pkt);
+unsigned int mtk_gamma_get_lut_size(struct device *dev);
 void mtk_gamma_set(struct device *dev, struct drm_crtc_state *state);
 void mtk_gamma_set_common(struct device *dev, void __iomem *regs, struct drm_crtc_state *state);
 void mtk_gamma_start(struct device *dev);
diff --git a/drivers/gpu/drm/mediatek/mtk_disp_gamma.c b/drivers/gpu/drm/mediatek/mtk_disp_gamma.c
index f54a6a618348..e69d0b205b9a 100644
--- a/drivers/gpu/drm/mediatek/mtk_disp_gamma.c
+++ b/drivers/gpu/drm/mediatek/mtk_disp_gamma.c
@@ -24,10 +24,12 @@
 #define DISP_GAMMA_LUT				0x0700
 
 #define LUT_10BIT_MASK				0x03ff
+#define LUT_SIZE_DEFAULT			512 /* for setting gamma lut from AAL */
 
 struct mtk_disp_gamma_data {
 	bool has_dither;
 	bool lut_diff;
+	u16 lut_size;
 };
 
 /*
@@ -54,18 +56,32 @@ void mtk_gamma_clk_disable(struct device *dev)
 	clk_disable_unprepare(gamma->clk);
 }
 
+unsigned int mtk_gamma_get_size(struct device *dev)
+{
+	struct mtk_disp_gamma *gamma = dev_get_drvdata(dev);
+	unsigned int lut_size = LUT_SIZE_DEFAULT;
+
+	if (gamma && gamma->data)
+		lut_size = gamma->data->lut_size;
+
+	return lut_size;
+}
+
 void mtk_gamma_set_common(struct device *dev, void __iomem *regs, struct drm_crtc_state *state)
 {
 	struct mtk_disp_gamma *gamma = dev_get_drvdata(dev);
 	bool lut_diff = false;
+	u16 lut_size = LUT_SIZE_DEFAULT;
 	unsigned int i, reg;
 	struct drm_color_lut *lut;
 	void __iomem *lut_base;
 	u32 word;
 	u32 diff[3] = {0};
 
-	if (gamma && gamma->data)
+	if (gamma && gamma->data) {
 		lut_diff = gamma->data->lut_diff;
+		lut_size = gamma->data->lut_size;
+	}
 
 	if (state->gamma_lut) {
 		reg = readl(regs + DISP_GAMMA_CFG);
@@ -73,7 +89,7 @@ void mtk_gamma_set_common(struct device *dev, void __iomem *regs, struct drm_crt
 		writel(reg, regs + DISP_GAMMA_CFG);
 		lut_base = regs + DISP_GAMMA_LUT;
 		lut = (struct drm_color_lut *)state->gamma_lut->data;
-		for (i = 0; i < MTK_LUT_SIZE; i++) {
+		for (i = 0; i < lut_size; i++) {
 
 			if (!lut_diff || (i % 2 == 0)) {
 				word = (((lut[i].red >> 6) & LUT_10BIT_MASK) << 20) +
@@ -192,10 +208,12 @@ static int mtk_disp_gamma_remove(struct platform_device *pdev)
 
 static const struct mtk_disp_gamma_data mt8173_gamma_driver_data = {
 	.has_dither = true,
+	.lut_size = 512,
 };
 
 static const struct mtk_disp_gamma_data mt8183_gamma_driver_data = {
 	.lut_diff = true,
+	.lut_size = 512,
 };
 
 static const struct of_device_id mtk_disp_gamma_driver_dt_match[] = {
diff --git a/drivers/gpu/drm/mediatek/mtk_drm_crtc.c b/drivers/gpu/drm/mediatek/mtk_drm_crtc.c
index 112615817dcb..fc845490fbb4 100644
--- a/drivers/gpu/drm/mediatek/mtk_drm_crtc.c
+++ b/drivers/gpu/drm/mediatek/mtk_drm_crtc.c
@@ -929,8 +929,8 @@ int mtk_drm_crtc_create(struct drm_device *drm_dev,
 		mtk_crtc->ddp_comp[i] = comp;
 
 		if (comp->funcs) {
-			if (comp->funcs->gamma_set)
-				gamma_lut_size = MTK_LUT_SIZE;
+			if (comp->funcs->gamma_set && comp->funcs->gamma_get_lut_size)
+				gamma_lut_size = mtk_ddp_gamma_get_lut_size(comp);
 
 			if (comp->funcs->ctm_set)
 				has_ctm = true;
diff --git a/drivers/gpu/drm/mediatek/mtk_drm_crtc.h b/drivers/gpu/drm/mediatek/mtk_drm_crtc.h
index cb9a36c48d4f..1799853ef89a 100644
--- a/drivers/gpu/drm/mediatek/mtk_drm_crtc.h
+++ b/drivers/gpu/drm/mediatek/mtk_drm_crtc.h
@@ -10,7 +10,6 @@
 #include "mtk_drm_ddp_comp.h"
 #include "mtk_drm_plane.h"
 
-#define MTK_LUT_SIZE	512
 #define MTK_MAX_BPC	10
 #define MTK_MIN_BPC	3
 
diff --git a/drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.h b/drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.h
index 2d0052c23dcb..ab589ea11ba7 100644
--- a/drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.h
+++ b/drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.h
@@ -65,6 +65,7 @@ struct mtk_ddp_comp_funcs {
 	void (*layer_config)(struct device *dev, unsigned int idx,
 			     struct mtk_plane_state *state,
 			     struct cmdq_pkt *cmdq_pkt);
+	unsigned int (*gamma_get_lut_size)(struct device *dev);
 	void (*gamma_set)(struct device *dev,
 			  struct drm_crtc_state *state);
 	void (*bgclr_in_on)(struct device *dev);
@@ -177,6 +178,14 @@ static inline void mtk_ddp_comp_layer_config(struct mtk_ddp_comp *comp,
 		comp->funcs->layer_config(comp->dev, idx, state, cmdq_pkt);
 }
 
+static inline unsigned int mtk_ddp_gamma_get_lut_size(struct mtk_ddp_comp *comp)
+{
+	if (comp->funcs && comp->funcs->gamma_get_lut_size)
+		return comp->funcs->gamma_get_lut_size(comp->dev);
+
+	return 0;
+}
+
 static inline void mtk_ddp_gamma_set(struct mtk_ddp_comp *comp,
 				     struct drm_crtc_state *state)
 {
-- 
2.18.0


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH v3 5/9] drm/mediatek: Add gamma support different lut_bits for other SoC
  2022-09-11 15:37 [PATCH v3 0/9] Add gamma lut support for mt8195 Jason-JH.Lin
                   ` (3 preceding siblings ...)
  2022-09-11 15:37 ` [PATCH v3 4/9] drm/mediatek: Add gamma support different lut_size for other SoC Jason-JH.Lin
@ 2022-09-11 15:37 ` Jason-JH.Lin
  2022-09-12 10:25   ` AngeloGioacchino Del Regno
  2022-09-11 15:37 ` [PATCH v3 6/9] drm/mediatek: Add gamma support different bank_size " Jason-JH.Lin
                   ` (3 subsequent siblings)
  8 siblings, 1 reply; 20+ messages in thread
From: Jason-JH.Lin @ 2022-09-11 15:37 UTC (permalink / raw)
  To: Chun-Kuang Hu, Rob Herring, Krzysztof Kozlowski,
	Matthias Brugger, AngeloGioacchino Del Regno
  Cc: CK Hu, Rex-BC Chen, Singo Chang, dri-devel, linux-mediatek,
	devicetree, linux-kernel, linux-arm-kernel,
	Project_Global_Chrome_Upstream_Group, Jason-JH.Lin

Add lut_bits in gamma driver data for each SoC and adjust the usage
of lut_bits in mtk_drm_gamma_set_common().

Signed-off-by: Jason-JH.Lin <jason-jh.lin@mediatek.com>
---
 drivers/gpu/drm/mediatek/mtk_disp_gamma.c | 36 ++++++++++++++++-------
 1 file changed, 25 insertions(+), 11 deletions(-)

diff --git a/drivers/gpu/drm/mediatek/mtk_disp_gamma.c b/drivers/gpu/drm/mediatek/mtk_disp_gamma.c
index e69d0b205b9a..155fb5d94d79 100644
--- a/drivers/gpu/drm/mediatek/mtk_disp_gamma.c
+++ b/drivers/gpu/drm/mediatek/mtk_disp_gamma.c
@@ -25,11 +25,14 @@
 
 #define LUT_10BIT_MASK				0x03ff
 #define LUT_SIZE_DEFAULT			512 /* for setting gamma lut from AAL */
+#define LUT_BITS_DEFAULT			10
+#define LUT_INPUT_BITS				16 /* input lut bit from application */
 
 struct mtk_disp_gamma_data {
 	bool has_dither;
 	bool lut_diff;
 	u16 lut_size;
+	u8 lut_bits;
 };
 
 /*
@@ -72,17 +75,23 @@ void mtk_gamma_set_common(struct device *dev, void __iomem *regs, struct drm_crt
 	struct mtk_disp_gamma *gamma = dev_get_drvdata(dev);
 	bool lut_diff = false;
 	u16 lut_size = LUT_SIZE_DEFAULT;
+	u8 lut_bits = LUT_BITS_DEFAULT;
+	u8 shift_bits;
 	unsigned int i, reg;
 	struct drm_color_lut *lut;
 	void __iomem *lut_base;
-	u32 word;
+	u32 word, mask;
 	u32 diff[3] = {0};
 
 	if (gamma && gamma->data) {
 		lut_diff = gamma->data->lut_diff;
 		lut_size = gamma->data->lut_size;
+		lut_bits = gamma->data->lut_bits;
 	}
 
+	shift_bits = LUT_INPUT_BITS - lut_bits;
+	mask = GENMASK(lut_bits - 1, 0);
+
 	if (state->gamma_lut) {
 		reg = readl(regs + DISP_GAMMA_CFG);
 		reg = reg | GAMMA_LUT_EN;
@@ -92,17 +101,20 @@ void mtk_gamma_set_common(struct device *dev, void __iomem *regs, struct drm_crt
 		for (i = 0; i < lut_size; i++) {
 
 			if (!lut_diff || (i % 2 == 0)) {
-				word = (((lut[i].red >> 6) & LUT_10BIT_MASK) << 20) +
-					(((lut[i].green >> 6) & LUT_10BIT_MASK) << 10) +
-					((lut[i].blue >> 6) & LUT_10BIT_MASK);
+				word = (((lut[i].red >> shift_bits) & mask) << 20) +
+					(((lut[i].green >> shift_bits) & mask) << 10) +
+					((lut[i].blue >> shift_bits) & mask);
 			} else {
-				diff[0] = (lut[i].red >> 6) - (lut[i - 1].red >> 6);
-				diff[1] = (lut[i].green >> 6) - (lut[i - 1].green >> 6);
-				diff[2] = (lut[i].blue >> 6) - (lut[i - 1].blue >> 6);
-
-				word = ((diff[0] & LUT_10BIT_MASK) << 20) +
-					((diff[1] & LUT_10BIT_MASK) << 10) +
-					(diff[2] & LUT_10BIT_MASK);
+				diff[0] = (lut[i].red >> shift_bits) -
+					  (lut[i - 1].red >> shift_bits);
+				diff[1] = (lut[i].green >> shift_bits) -
+					  (lut[i - 1].green >> shift_bits);
+				diff[2] = (lut[i].blue >> shift_bits) -
+					  (lut[i - 1].blue >> shift_bits);
+
+				word = ((diff[0] & mask) << 20) +
+					((diff[1] & mask) << 10) +
+					(diff[2] & mask);
 			}
 			writel(word, (lut_base + i * 4));
 		}
@@ -209,11 +221,13 @@ static int mtk_disp_gamma_remove(struct platform_device *pdev)
 static const struct mtk_disp_gamma_data mt8173_gamma_driver_data = {
 	.has_dither = true,
 	.lut_size = 512,
+	.lut_bits = 10,
 };
 
 static const struct mtk_disp_gamma_data mt8183_gamma_driver_data = {
 	.lut_diff = true,
 	.lut_size = 512,
+	.lut_bits = 10,
 };
 
 static const struct of_device_id mtk_disp_gamma_driver_dt_match[] = {
-- 
2.18.0


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH v3 6/9] drm/mediatek: Add gamma support different bank_size for other SoC
  2022-09-11 15:37 [PATCH v3 0/9] Add gamma lut support for mt8195 Jason-JH.Lin
                   ` (4 preceding siblings ...)
  2022-09-11 15:37 ` [PATCH v3 5/9] drm/mediatek: Add gamma support different lut_bits " Jason-JH.Lin
@ 2022-09-11 15:37 ` Jason-JH.Lin
  2022-09-11 15:37 ` [PATCH v3 7/9] drm/mediatek: Add gamma lut support for mt8195 Jason-JH.Lin
                   ` (2 subsequent siblings)
  8 siblings, 0 replies; 20+ messages in thread
From: Jason-JH.Lin @ 2022-09-11 15:37 UTC (permalink / raw)
  To: Chun-Kuang Hu, Rob Herring, Krzysztof Kozlowski,
	Matthias Brugger, AngeloGioacchino Del Regno
  Cc: CK Hu, Rex-BC Chen, Singo Chang, dri-devel, linux-mediatek,
	devicetree, linux-kernel, linux-arm-kernel,
	Project_Global_Chrome_Upstream_Group, Jason-JH.Lin

Add multiple bank support for mt8195.
If bank size is 0 which means no bank support.

Signed-off-by: Jason-JH.Lin <jason-jh.lin@mediatek.com>
---
 drivers/gpu/drm/mediatek/mtk_disp_gamma.c | 45 +++++++++++++----------
 1 file changed, 26 insertions(+), 19 deletions(-)

diff --git a/drivers/gpu/drm/mediatek/mtk_disp_gamma.c b/drivers/gpu/drm/mediatek/mtk_disp_gamma.c
index 155fb5d94d79..9983318e8e3e 100644
--- a/drivers/gpu/drm/mediatek/mtk_disp_gamma.c
+++ b/drivers/gpu/drm/mediatek/mtk_disp_gamma.c
@@ -21,6 +21,7 @@
 #define GAMMA_LUT_EN					BIT(1)
 #define GAMMA_DITHERING					BIT(2)
 #define DISP_GAMMA_SIZE				0x0030
+#define DISP_GAMMA_BANK				0x0100
 #define DISP_GAMMA_LUT				0x0700
 
 #define LUT_10BIT_MASK				0x03ff
@@ -33,6 +34,7 @@ struct mtk_disp_gamma_data {
 	bool lut_diff;
 	u16 lut_size;
 	u8 lut_bits;
+	u16 bank_size;
 };
 
 /*
@@ -75,9 +77,10 @@ void mtk_gamma_set_common(struct device *dev, void __iomem *regs, struct drm_crt
 	struct mtk_disp_gamma *gamma = dev_get_drvdata(dev);
 	bool lut_diff = false;
 	u16 lut_size = LUT_SIZE_DEFAULT;
+	u16 bank_size = lut_size;
 	u8 lut_bits = LUT_BITS_DEFAULT;
 	u8 shift_bits;
-	unsigned int i, reg;
+	unsigned int i, j, reg, bank_num;
 	struct drm_color_lut *lut;
 	void __iomem *lut_base;
 	u32 word, mask;
@@ -87,8 +90,10 @@ void mtk_gamma_set_common(struct device *dev, void __iomem *regs, struct drm_crt
 		lut_diff = gamma->data->lut_diff;
 		lut_size = gamma->data->lut_size;
 		lut_bits = gamma->data->lut_bits;
+		bank_size = gamma->data->bank_size;
 	}
 
+	bank_num = lut_size / bank_size;
 	shift_bits = LUT_INPUT_BITS - lut_bits;
 	mask = GENMASK(lut_bits - 1, 0);
 
@@ -98,25 +103,27 @@ void mtk_gamma_set_common(struct device *dev, void __iomem *regs, struct drm_crt
 		writel(reg, regs + DISP_GAMMA_CFG);
 		lut_base = regs + DISP_GAMMA_LUT;
 		lut = (struct drm_color_lut *)state->gamma_lut->data;
-		for (i = 0; i < lut_size; i++) {
-
-			if (!lut_diff || (i % 2 == 0)) {
-				word = (((lut[i].red >> shift_bits) & mask) << 20) +
-					(((lut[i].green >> shift_bits) & mask) << 10) +
-					((lut[i].blue >> shift_bits) & mask);
-			} else {
-				diff[0] = (lut[i].red >> shift_bits) -
-					  (lut[i - 1].red >> shift_bits);
-				diff[1] = (lut[i].green >> shift_bits) -
-					  (lut[i - 1].green >> shift_bits);
-				diff[2] = (lut[i].blue >> shift_bits) -
-					  (lut[i - 1].blue >> shift_bits);
-
-				word = ((diff[0] & mask) << 20) +
-					((diff[1] & mask) << 10) +
-					(diff[2] & mask);
+		for (j = 0; j < bank_num; j++) {
+			writel(j, regs + DISP_GAMMA_BANK);
+			for (i = 0; i < bank_size; i++) {
+				if (!lut_diff || (i % 2 == 0)) {
+					word = (((lut[i].red >> shift_bits) & mask) << 20) +
+						(((lut[i].green >> shift_bits) & mask) << 10) +
+						((lut[i].blue >> shift_bits) & mask);
+				} else {
+					diff[0] = (lut[i].red >> shift_bits) -
+						  (lut[i - 1].red >> shift_bits);
+					diff[1] = (lut[i].green >> shift_bits) -
+						  (lut[i - 1].green >> shift_bits);
+					diff[2] = (lut[i].blue >> shift_bits) -
+						  (lut[i - 1].blue >> shift_bits);
+
+					word = ((diff[0] & mask) << 20) +
+						((diff[1] & mask) << 10) +
+						(diff[2] & mask);
+				}
+				writel(word, (lut_base + i * 4));
 			}
-			writel(word, (lut_base + i * 4));
 		}
 	}
 }
-- 
2.18.0


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH v3 7/9] drm/mediatek: Add gamma lut support for mt8195
  2022-09-11 15:37 [PATCH v3 0/9] Add gamma lut support for mt8195 Jason-JH.Lin
                   ` (5 preceding siblings ...)
  2022-09-11 15:37 ` [PATCH v3 6/9] drm/mediatek: Add gamma support different bank_size " Jason-JH.Lin
@ 2022-09-11 15:37 ` Jason-JH.Lin
  2022-09-11 15:37 ` [PATCH v3 8/9] drm/mediatek: Add clear RELAY_MODE bit to set gamma Jason-JH.Lin
  2022-09-11 15:37 ` [PATCH v3 9/9] arm64: dts: Modify gamma compatible for mt8195 Jason-JH.Lin
  8 siblings, 0 replies; 20+ messages in thread
From: Jason-JH.Lin @ 2022-09-11 15:37 UTC (permalink / raw)
  To: Chun-Kuang Hu, Rob Herring, Krzysztof Kozlowski,
	Matthias Brugger, AngeloGioacchino Del Regno
  Cc: CK Hu, Rex-BC Chen, Singo Chang, dri-devel, linux-mediatek,
	devicetree, linux-kernel, linux-arm-kernel,
	Project_Global_Chrome_Upstream_Group, zheng-yan.chen,
	Jason-JH . Lin

From: "zheng-yan.chen" <zheng-yan.chen@mediatek.com>

Since the previous gamma_set_common() function is designed for
9bit-to-10bit conversion, which is not feasible for the
10bit-to-12bit conversion in mt8195.

1. Update the function to fit the need of mt8195.
2. Add gamma driver data for mt8195.

Signed-off-by: zheng-yan.chen <zheng-yan.chen@mediatek.com>
Signed-off-by: Jason-JH.Lin <jason-jh.lin@mediatek.com>
---
 drivers/gpu/drm/mediatek/mtk_disp_gamma.c | 57 ++++++++++++++++-------
 1 file changed, 40 insertions(+), 17 deletions(-)

diff --git a/drivers/gpu/drm/mediatek/mtk_disp_gamma.c b/drivers/gpu/drm/mediatek/mtk_disp_gamma.c
index 9983318e8e3e..4e67f1503b9a 100644
--- a/drivers/gpu/drm/mediatek/mtk_disp_gamma.c
+++ b/drivers/gpu/drm/mediatek/mtk_disp_gamma.c
@@ -23,6 +23,7 @@
 #define DISP_GAMMA_SIZE				0x0030
 #define DISP_GAMMA_BANK				0x0100
 #define DISP_GAMMA_LUT				0x0700
+#define DISP_GAMMA_LUT1				0x0b00
 
 #define LUT_10BIT_MASK				0x03ff
 #define LUT_SIZE_DEFAULT			512 /* for setting gamma lut from AAL */
@@ -82,9 +83,8 @@ void mtk_gamma_set_common(struct device *dev, void __iomem *regs, struct drm_crt
 	u8 shift_bits;
 	unsigned int i, j, reg, bank_num;
 	struct drm_color_lut *lut;
-	void __iomem *lut_base;
-	u32 word, mask;
-	u32 diff[3] = {0};
+	void __iomem *lut_base, *lut1_base;
+	u32 word, word1, mask;
 
 	if (gamma && gamma->data) {
 		lut_diff = gamma->data->lut_diff;
@@ -102,27 +102,41 @@ void mtk_gamma_set_common(struct device *dev, void __iomem *regs, struct drm_crt
 		reg = reg | GAMMA_LUT_EN;
 		writel(reg, regs + DISP_GAMMA_CFG);
 		lut_base = regs + DISP_GAMMA_LUT;
+		lut1_base = regs + DISP_GAMMA_LUT1;
 		lut = (struct drm_color_lut *)state->gamma_lut->data;
 		for (j = 0; j < bank_num; j++) {
 			writel(j, regs + DISP_GAMMA_BANK);
 			for (i = 0; i < bank_size; i++) {
-				if (!lut_diff || (i % 2 == 0)) {
-					word = (((lut[i].red >> shift_bits) & mask) << 20) +
-						(((lut[i].green >> shift_bits) & mask) << 10) +
-						((lut[i].blue >> shift_bits) & mask);
+				struct drm_color_lut input;
+
+				input.red = (lut[i].red >> shift_bits) & mask;
+				input.green = (lut[i].green >> shift_bits) & mask;
+				input.blue = (lut[i].blue >> shift_bits) & mask;
+				if (!lut_diff || i % 2 == 0) {
+					word = (lut_bits == 12) ?
+					       (input.red + (input.green << 12)) :
+					       ((input.red << 20) + (input.green << 10) +
+						input.blue);
+					word1 = input.blue;
 				} else {
-					diff[0] = (lut[i].red >> shift_bits) -
-						  (lut[i - 1].red >> shift_bits);
-					diff[1] = (lut[i].green >> shift_bits) -
-						  (lut[i - 1].green >> shift_bits);
-					diff[2] = (lut[i].blue >> shift_bits) -
-						  (lut[i - 1].blue >> shift_bits);
-
-					word = ((diff[0] & mask) << 20) +
-						((diff[1] & mask) << 10) +
-						(diff[2] & mask);
+					struct drm_color_lut diff;
+
+					diff.red = input.red  -
+						   ((lut[i - 1].red >> shift_bits) & mask);
+					diff.green = input.green -
+						     ((lut[i - 1].green >> shift_bits & mask));
+					diff.blue = input.blue -
+						    ((lut[i - 1].blue >> shift_bits) & mask);
+
+					word = (lut_bits == 12) ?
+					       (input.red + (input.green << 12)) :
+					       (diff.red << 20) + (diff.green << 10) + diff.blue;
+					word1 = input.blue;
 				}
+
 				writel(word, (lut_base + i * 4));
+				if (lut_bits == 12)
+					writel(word1, (lut1_base + i * 4));
 			}
 		}
 	}
@@ -237,11 +251,20 @@ static const struct mtk_disp_gamma_data mt8183_gamma_driver_data = {
 	.lut_bits = 10,
 };
 
+static const struct mtk_disp_gamma_data mt8195_gamma_driver_data = {
+	.lut_diff = true,
+	.lut_size = 512,
+	.lut_bits = 10,
+	.bank_size = 256,
+};
+
 static const struct of_device_id mtk_disp_gamma_driver_dt_match[] = {
 	{ .compatible = "mediatek,mt8173-disp-gamma",
 	  .data = &mt8173_gamma_driver_data},
 	{ .compatible = "mediatek,mt8183-disp-gamma",
 	  .data = &mt8183_gamma_driver_data},
+	{ .compatible = "mediatek,mt8195-disp-gamma",
+	  .data = &mt8195_gamma_driver_data},
 	{},
 };
 MODULE_DEVICE_TABLE(of, mtk_disp_gamma_driver_dt_match);
-- 
2.18.0


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH v3 8/9] drm/mediatek: Add clear RELAY_MODE bit to set gamma
  2022-09-11 15:37 [PATCH v3 0/9] Add gamma lut support for mt8195 Jason-JH.Lin
                   ` (6 preceding siblings ...)
  2022-09-11 15:37 ` [PATCH v3 7/9] drm/mediatek: Add gamma lut support for mt8195 Jason-JH.Lin
@ 2022-09-11 15:37 ` Jason-JH.Lin
  2022-09-12 10:26   ` AngeloGioacchino Del Regno
  2022-09-11 15:37 ` [PATCH v3 9/9] arm64: dts: Modify gamma compatible for mt8195 Jason-JH.Lin
  8 siblings, 1 reply; 20+ messages in thread
From: Jason-JH.Lin @ 2022-09-11 15:37 UTC (permalink / raw)
  To: Chun-Kuang Hu, Rob Herring, Krzysztof Kozlowski,
	Matthias Brugger, AngeloGioacchino Del Regno
  Cc: CK Hu, Rex-BC Chen, Singo Chang, dri-devel, linux-mediatek,
	devicetree, linux-kernel, linux-arm-kernel,
	Project_Global_Chrome_Upstream_Group, Jason-JH.Lin

Since the bootlaoder may set the RELAY_MODE to gamma be for the kerenl,
we have to clear the RELAY_MODE bit to make sure that the gamma is
enabled correctly.

Fixes: b10023b03082 ("FROMGIT: drm/mediatek: Separate gamma module")
Signed-off-by: Jason-JH.Lin <jason-jh.lin@mediatek.com>
---
 drivers/gpu/drm/mediatek/mtk_disp_gamma.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/gpu/drm/mediatek/mtk_disp_gamma.c b/drivers/gpu/drm/mediatek/mtk_disp_gamma.c
index 4e67f1503b9a..77cc344b9c02 100644
--- a/drivers/gpu/drm/mediatek/mtk_disp_gamma.c
+++ b/drivers/gpu/drm/mediatek/mtk_disp_gamma.c
@@ -18,6 +18,7 @@
 #define DISP_GAMMA_EN				0x0000
 #define GAMMA_EN					BIT(0)
 #define DISP_GAMMA_CFG				0x0020
+#define RELAY_MODE					BIT(0)
 #define GAMMA_LUT_EN					BIT(1)
 #define GAMMA_DITHERING					BIT(2)
 #define DISP_GAMMA_SIZE				0x0030
@@ -99,6 +100,7 @@ void mtk_gamma_set_common(struct device *dev, void __iomem *regs, struct drm_crt
 
 	if (state->gamma_lut) {
 		reg = readl(regs + DISP_GAMMA_CFG);
+		reg = reg & ~RELAY_MODE;
 		reg = reg | GAMMA_LUT_EN;
 		writel(reg, regs + DISP_GAMMA_CFG);
 		lut_base = regs + DISP_GAMMA_LUT;
-- 
2.18.0


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH v3 9/9] arm64: dts: Modify gamma compatible for mt8195
  2022-09-11 15:37 [PATCH v3 0/9] Add gamma lut support for mt8195 Jason-JH.Lin
                   ` (7 preceding siblings ...)
  2022-09-11 15:37 ` [PATCH v3 8/9] drm/mediatek: Add clear RELAY_MODE bit to set gamma Jason-JH.Lin
@ 2022-09-11 15:37 ` Jason-JH.Lin
  8 siblings, 0 replies; 20+ messages in thread
From: Jason-JH.Lin @ 2022-09-11 15:37 UTC (permalink / raw)
  To: Chun-Kuang Hu, Rob Herring, Krzysztof Kozlowski,
	Matthias Brugger, AngeloGioacchino Del Regno
  Cc: CK Hu, Rex-BC Chen, Singo Chang, dri-devel, linux-mediatek,
	devicetree, linux-kernel, linux-arm-kernel,
	Project_Global_Chrome_Upstream_Group, zheng-yan.chen,
	Jason-JH . Lin

From: "zheng-yan.chen" <zheng-yan.chen@mediatek.com>

Modify gamma compatible for mt8195.

This modification is because of that
mt8183 gamma driver data is not compatible with mt8195 gamma.

Thus, need to delete mt8183 gamma compatible from mt8195 gamma.

Signed-off-by: zheng-yan.chen <zheng-yan.chen@mediatek.com>
Signed-off-by: Jason-JH.Lin <jason-jh.lin@mediatek.com>
Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
---
 arch/arm64/boot/dts/mediatek/mt8195.dtsi | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/arm64/boot/dts/mediatek/mt8195.dtsi b/arch/arm64/boot/dts/mediatek/mt8195.dtsi
index 905d1a90b406..6b01ebc0db8f 100644
--- a/arch/arm64/boot/dts/mediatek/mt8195.dtsi
+++ b/arch/arm64/boot/dts/mediatek/mt8195.dtsi
@@ -2032,7 +2032,7 @@
 		};
 
 		gamma0: gamma@1c006000 {
-			compatible = "mediatek,mt8195-disp-gamma", "mediatek,mt8183-disp-gamma";
+			compatible = "mediatek,mt8195-disp-gamma";
 			reg = <0 0x1c006000 0 0x1000>;
 			interrupts = <GIC_SPI 642 IRQ_TYPE_LEVEL_HIGH 0>;
 			power-domains = <&spm MT8195_POWER_DOMAIN_VDOSYS0>;
-- 
2.18.0


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 20+ messages in thread

* Re: [PATCH v3 4/9] drm/mediatek: Add gamma support different lut_size for other SoC
  2022-09-11 15:37 ` [PATCH v3 4/9] drm/mediatek: Add gamma support different lut_size for other SoC Jason-JH.Lin
@ 2022-09-11 21:10   ` kernel test robot
  2022-09-12 10:24   ` AngeloGioacchino Del Regno
  1 sibling, 0 replies; 20+ messages in thread
From: kernel test robot @ 2022-09-11 21:10 UTC (permalink / raw)
  To: Jason-JH.Lin, Chun-Kuang Hu, Rob Herring, Krzysztof Kozlowski,
	Matthias Brugger, AngeloGioacchino Del Regno
  Cc: kbuild-all, devicetree, Jason-JH.Lin, Singo Chang, linux-kernel,
	dri-devel, Project_Global_Chrome_Upstream_Group, Rex-BC Chen,
	linux-mediatek, linux-arm-kernel

Hi Jason-JH.Lin",

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on next-20220909]
[also build test WARNING on v6.0-rc4]
[cannot apply to drm-misc/drm-misc-next robh/for-next drm/drm-next linus/master v6.0-rc4 v6.0-rc3 v6.0-rc2]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Jason-JH-Lin/Add-gamma-lut-support-for-mt8195/20220911-233949
base:    9a82ccda91ed2b40619cb3c10d446ae1f97bab6e
config: arm-allyesconfig (https://download.01.org/0day-ci/archive/20220912/202209120412.a3tFZuO9-lkp@intel.com/config)
compiler: arm-linux-gnueabi-gcc (GCC) 12.1.0
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://github.com/intel-lab-lkp/linux/commit/1d5b909c49fd62f1e6055fd3d077b9c5fae53e00
        git remote add linux-review https://github.com/intel-lab-lkp/linux
        git fetch --no-tags linux-review Jason-JH-Lin/Add-gamma-lut-support-for-mt8195/20220911-233949
        git checkout 1d5b909c49fd62f1e6055fd3d077b9c5fae53e00
        # save the config file
        mkdir build_dir && cp config build_dir/.config
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=arm SHELL=/bin/bash

If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <lkp@intel.com>

All warnings (new ones prefixed by >>):

>> drivers/gpu/drm/mediatek/mtk_disp_gamma.c:59:14: warning: no previous prototype for 'mtk_gamma_get_size' [-Wmissing-prototypes]
      59 | unsigned int mtk_gamma_get_size(struct device *dev)
         |              ^~~~~~~~~~~~~~~~~~


vim +/mtk_gamma_get_size +59 drivers/gpu/drm/mediatek/mtk_disp_gamma.c

    58	
  > 59	unsigned int mtk_gamma_get_size(struct device *dev)
    60	{
    61		struct mtk_disp_gamma *gamma = dev_get_drvdata(dev);
    62		unsigned int lut_size = LUT_SIZE_DEFAULT;
    63	
    64		if (gamma && gamma->data)
    65			lut_size = gamma->data->lut_size;
    66	
    67		return lut_size;
    68	}
    69	

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH v3 3/9] drm/mediatek: Adjust mtk_drm_gamma_set_common parameters
  2022-09-11 15:37 ` [PATCH v3 3/9] drm/mediatek: Adjust mtk_drm_gamma_set_common parameters Jason-JH.Lin
@ 2022-09-12 10:12   ` AngeloGioacchino Del Regno
  2022-09-14  1:29     ` Jason-JH Lin
  0 siblings, 1 reply; 20+ messages in thread
From: AngeloGioacchino Del Regno @ 2022-09-12 10:12 UTC (permalink / raw)
  To: Jason-JH.Lin, Chun-Kuang Hu, Rob Herring, Krzysztof Kozlowski,
	Matthias Brugger
  Cc: CK Hu, Rex-BC Chen, Singo Chang, dri-devel, linux-mediatek,
	devicetree, linux-kernel, linux-arm-kernel,
	Project_Global_Chrome_Upstream_Group

Il 11/09/22 17:37, Jason-JH.Lin ha scritto:
> Adjust the parameters in mtk_drm_gamma_set_common()
>    - add (struct device *dev) to get lut_diff from gamma's driver data
>    - remove (bool lut_diff) and use false as default value in the function
> 
> Fixes: 051524cbe62d ("FROMGIT: drm/mediatek: Add lut diff flag for new gamma hardware support")

This Fixes tag contains a commit from a downstream kernel, which is useless
fo upstream. Please fix it.

Regards,
Angelo

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH v3 4/9] drm/mediatek: Add gamma support different lut_size for other SoC
  2022-09-11 15:37 ` [PATCH v3 4/9] drm/mediatek: Add gamma support different lut_size for other SoC Jason-JH.Lin
  2022-09-11 21:10   ` kernel test robot
@ 2022-09-12 10:24   ` AngeloGioacchino Del Regno
  2022-09-14  1:33     ` Jason-JH Lin
  2022-09-14  1:35     ` Jason-JH Lin
  1 sibling, 2 replies; 20+ messages in thread
From: AngeloGioacchino Del Regno @ 2022-09-12 10:24 UTC (permalink / raw)
  To: Jason-JH.Lin, Chun-Kuang Hu, Rob Herring, Krzysztof Kozlowski,
	Matthias Brugger
  Cc: CK Hu, Rex-BC Chen, Singo Chang, dri-devel, linux-mediatek,
	devicetree, linux-kernel, linux-arm-kernel,
	Project_Global_Chrome_Upstream_Group

Il 11/09/22 17:37, Jason-JH.Lin ha scritto:
> 1. Add mtk_drm_gamma_get_lut_size() and remove MTK_LUT_SIZE macro.
> 2. Add lut_size to gamma driver data for different SoC.
> 
> Signed-off-by: Jason-JH.Lin <jason-jh.lin@mediatek.com>
> ---
>   drivers/gpu/drm/mediatek/mtk_disp_drv.h     |  1 +
>   drivers/gpu/drm/mediatek/mtk_disp_gamma.c   | 22 +++++++++++++++++++--
>   drivers/gpu/drm/mediatek/mtk_drm_crtc.c     |  4 ++--
>   drivers/gpu/drm/mediatek/mtk_drm_crtc.h     |  1 -
>   drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.h |  9 +++++++++
>   5 files changed, 32 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/gpu/drm/mediatek/mtk_disp_drv.h b/drivers/gpu/drm/mediatek/mtk_disp_drv.h
> index a83e5fbc8724..6a05bb56e693 100644
> --- a/drivers/gpu/drm/mediatek/mtk_disp_drv.h
> +++ b/drivers/gpu/drm/mediatek/mtk_disp_drv.h
> @@ -51,6 +51,7 @@ void mtk_gamma_clk_disable(struct device *dev);
>   void mtk_gamma_config(struct device *dev, unsigned int w,
>   		      unsigned int h, unsigned int vrefresh,
>   		      unsigned int bpc, struct cmdq_pkt *cmdq_pkt);
> +unsigned int mtk_gamma_get_lut_size(struct device *dev);
>   void mtk_gamma_set(struct device *dev, struct drm_crtc_state *state);
>   void mtk_gamma_set_common(struct device *dev, void __iomem *regs, struct drm_crtc_state *state);
>   void mtk_gamma_start(struct device *dev);
> diff --git a/drivers/gpu/drm/mediatek/mtk_disp_gamma.c b/drivers/gpu/drm/mediatek/mtk_disp_gamma.c
> index f54a6a618348..e69d0b205b9a 100644
> --- a/drivers/gpu/drm/mediatek/mtk_disp_gamma.c
> +++ b/drivers/gpu/drm/mediatek/mtk_disp_gamma.c
> @@ -24,10 +24,12 @@
>   #define DISP_GAMMA_LUT				0x0700
>   
>   #define LUT_10BIT_MASK				0x03ff
> +#define LUT_SIZE_DEFAULT			512 /* for setting gamma lut from AAL */
>   
>   struct mtk_disp_gamma_data {
>   	bool has_dither;
>   	bool lut_diff;
> +	u16 lut_size;
>   };
>   
>   /*
> @@ -54,18 +56,32 @@ void mtk_gamma_clk_disable(struct device *dev)
>   	clk_disable_unprepare(gamma->clk);
>   }
>   
> +unsigned int mtk_gamma_get_size(struct device *dev)
> +{
> +	struct mtk_disp_gamma *gamma = dev_get_drvdata(dev);
> +	unsigned int lut_size = LUT_SIZE_DEFAULT;
> +
> +	if (gamma && gamma->data)
> +		lut_size = gamma->data->lut_size;
> +
> +	return lut_size;
> +}
> +
>   void mtk_gamma_set_common(struct device *dev, void __iomem *regs, struct drm_crtc_state *state)
>   {
>   	struct mtk_disp_gamma *gamma = dev_get_drvdata(dev);
>   	bool lut_diff = false;
> +	u16 lut_size = LUT_SIZE_DEFAULT;

This makes us get a double assignment in case gamma->data is populated.

>   	unsigned int i, reg;
>   	struct drm_color_lut *lut;
>   	void __iomem *lut_base;
>   	u32 word;
>   	u32 diff[3] = {0};
>   
> -	if (gamma && gamma->data)
> +	if (gamma && gamma->data) {
>   		lut_diff = gamma->data->lut_diff;
> +		lut_size = gamma->data->lut_size;
> +	}

...you can avoid it like that:

} else {
	lut_size = LUT_SIZE_DEFAULT;
}


Regards,
Angelo



_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH v3 5/9] drm/mediatek: Add gamma support different lut_bits for other SoC
  2022-09-11 15:37 ` [PATCH v3 5/9] drm/mediatek: Add gamma support different lut_bits " Jason-JH.Lin
@ 2022-09-12 10:25   ` AngeloGioacchino Del Regno
  2022-09-14  1:36     ` Jason-JH Lin
  0 siblings, 1 reply; 20+ messages in thread
From: AngeloGioacchino Del Regno @ 2022-09-12 10:25 UTC (permalink / raw)
  To: Jason-JH.Lin, Chun-Kuang Hu, Rob Herring, Krzysztof Kozlowski,
	Matthias Brugger
  Cc: CK Hu, Rex-BC Chen, Singo Chang, dri-devel, linux-mediatek,
	devicetree, linux-kernel, linux-arm-kernel,
	Project_Global_Chrome_Upstream_Group

Il 11/09/22 17:37, Jason-JH.Lin ha scritto:
> Add lut_bits in gamma driver data for each SoC and adjust the usage
> of lut_bits in mtk_drm_gamma_set_common().
> 
> Signed-off-by: Jason-JH.Lin <jason-jh.lin@mediatek.com>
> ---
>   drivers/gpu/drm/mediatek/mtk_disp_gamma.c | 36 ++++++++++++++++-------
>   1 file changed, 25 insertions(+), 11 deletions(-)
> 
> diff --git a/drivers/gpu/drm/mediatek/mtk_disp_gamma.c b/drivers/gpu/drm/mediatek/mtk_disp_gamma.c
> index e69d0b205b9a..155fb5d94d79 100644
> --- a/drivers/gpu/drm/mediatek/mtk_disp_gamma.c
> +++ b/drivers/gpu/drm/mediatek/mtk_disp_gamma.c
> @@ -25,11 +25,14 @@
>   
>   #define LUT_10BIT_MASK				0x03ff
>   #define LUT_SIZE_DEFAULT			512 /* for setting gamma lut from AAL */
> +#define LUT_BITS_DEFAULT			10
> +#define LUT_INPUT_BITS				16 /* input lut bit from application */
>   
>   struct mtk_disp_gamma_data {
>   	bool has_dither;
>   	bool lut_diff;
>   	u16 lut_size;
> +	u8 lut_bits;
>   };
>   
>   /*
> @@ -72,17 +75,23 @@ void mtk_gamma_set_common(struct device *dev, void __iomem *regs, struct drm_crt
>   	struct mtk_disp_gamma *gamma = dev_get_drvdata(dev);
>   	bool lut_diff = false;
>   	u16 lut_size = LUT_SIZE_DEFAULT;
> +	u8 lut_bits = LUT_BITS_DEFAULT;

Please fix this double assignment like shown in the comment for patch [4/9].

Thanks,
Angelo


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH v3 8/9] drm/mediatek: Add clear RELAY_MODE bit to set gamma
  2022-09-11 15:37 ` [PATCH v3 8/9] drm/mediatek: Add clear RELAY_MODE bit to set gamma Jason-JH.Lin
@ 2022-09-12 10:26   ` AngeloGioacchino Del Regno
  2022-09-14  1:37     ` Jason-JH Lin
  0 siblings, 1 reply; 20+ messages in thread
From: AngeloGioacchino Del Regno @ 2022-09-12 10:26 UTC (permalink / raw)
  To: Jason-JH.Lin, Chun-Kuang Hu, Rob Herring, Krzysztof Kozlowski,
	Matthias Brugger
  Cc: CK Hu, Rex-BC Chen, Singo Chang, dri-devel, linux-mediatek,
	devicetree, linux-kernel, linux-arm-kernel,
	Project_Global_Chrome_Upstream_Group

Il 11/09/22 17:37, Jason-JH.Lin ha scritto:
> Since the bootlaoder may set the RELAY_MODE to gamma be for the kerenl,
> we have to clear the RELAY_MODE bit to make sure that the gamma is
> enabled correctly.
> 
> Fixes: b10023b03082 ("FROMGIT: drm/mediatek: Separate gamma module")

This Fixes tag is invalid. Please fix.

Regards,
Angelo


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH v3 3/9] drm/mediatek: Adjust mtk_drm_gamma_set_common parameters
  2022-09-12 10:12   ` AngeloGioacchino Del Regno
@ 2022-09-14  1:29     ` Jason-JH Lin
  0 siblings, 0 replies; 20+ messages in thread
From: Jason-JH Lin @ 2022-09-14  1:29 UTC (permalink / raw)
  To: AngeloGioacchino Del Regno, Chun-Kuang Hu, Rob Herring,
	Krzysztof Kozlowski, Matthias Brugger
  Cc: CK Hu, Rex-BC Chen, Singo Chang, dri-devel, linux-mediatek,
	devicetree, linux-kernel, linux-arm-kernel,
	Project_Global_Chrome_Upstream_Group

Hi Angelo,

Thanks for the reviews.

On Mon, 2022-09-12 at 12:12 +0200, AngeloGioacchino Del Regno wrote:
> Il 11/09/22 17:37, Jason-JH.Lin ha scritto:
> > Adjust the parameters in mtk_drm_gamma_set_common()
> >    - add (struct device *dev) to get lut_diff from gamma's driver
> > data
> >    - remove (bool lut_diff) and use false as default value in the
> > function
> > 
> > Fixes: 051524cbe62d ("FROMGIT: drm/mediatek: Add lut diff flag for
> > new gamma hardware support")
> 
> This Fixes tag contains a commit from a downstream kernel, which is
> useless
> fo upstream. Please fix it.
> 
> Regards,
> Angelo

OK, I'll fix this.

Regards,
Jason-JH.Lin

-- 
Jason-JH Lin <jason-jh.lin@mediatek.com>


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH v3 4/9] drm/mediatek: Add gamma support different lut_size for other SoC
  2022-09-12 10:24   ` AngeloGioacchino Del Regno
@ 2022-09-14  1:33     ` Jason-JH Lin
  2022-09-14  1:35     ` Jason-JH Lin
  1 sibling, 0 replies; 20+ messages in thread
From: Jason-JH Lin @ 2022-09-14  1:33 UTC (permalink / raw)
  To: AngeloGioacchino Del Regno, Chun-Kuang Hu, Rob Herring,
	Krzysztof Kozlowski, Matthias Brugger
  Cc: CK Hu, Rex-BC Chen, Singo Chang, dri-devel, linux-mediatek,
	devicetree, linux-kernel, linux-arm-kernel,
	Project_Global_Chrome_Upstream_Group

On Mon, 2022-09-12 at 12:24 +0200, AngeloGioacchino Del Regno wrote:
> Il 11/09/22 17:37, Jason-JH.Lin ha scritto:
> > 1. Add mtk_drm_gamma_get_lut_size() and remove MTK_LUT_SIZE macro.
> > 2. Add lut_size to gamma driver data for different SoC.
> > 
> > Signed-off-by: Jason-JH.Lin <jason-jh.lin@mediatek.com>
> > ---
> >   drivers/gpu/drm/mediatek/mtk_disp_drv.h     |  1 +
> >   drivers/gpu/drm/mediatek/mtk_disp_gamma.c   | 22
> > +++++++++++++++++++--
> >   drivers/gpu/drm/mediatek/mtk_drm_crtc.c     |  4 ++--
> >   drivers/gpu/drm/mediatek/mtk_drm_crtc.h     |  1 -
> >   drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.h |  9 +++++++++
> >   5 files changed, 32 insertions(+), 5 deletions(-)
> > 
> > diff --git a/drivers/gpu/drm/mediatek/mtk_disp_drv.h
> > b/drivers/gpu/drm/mediatek/mtk_disp_drv.h
> > index a83e5fbc8724..6a05bb56e693 100644
> > --- a/drivers/gpu/drm/mediatek/mtk_disp_drv.h
> > +++ b/drivers/gpu/drm/mediatek/mtk_disp_drv.h
> > @@ -51,6 +51,7 @@ void mtk_gamma_clk_disable(struct device *dev);
> >   void mtk_gamma_config(struct device *dev, unsigned int w,
> >   		      unsigned int h, unsigned int vrefresh,
> >   		      unsigned int bpc, struct cmdq_pkt *cmdq_pkt);
> > +unsigned int mtk_gamma_get_lut_size(struct device *dev);
> >   void mtk_gamma_set(struct device *dev, struct drm_crtc_state
> > *state);
> >   void mtk_gamma_set_common(struct device *dev, void __iomem *regs,
> > struct drm_crtc_state *state);
> >   void mtk_gamma_start(struct device *dev);
> > diff --git a/drivers/gpu/drm/mediatek/mtk_disp_gamma.c
> > b/drivers/gpu/drm/mediatek/mtk_disp_gamma.c
> > index f54a6a618348..e69d0b205b9a 100644
> > --- a/drivers/gpu/drm/mediatek/mtk_disp_gamma.c
> > +++ b/drivers/gpu/drm/mediatek/mtk_disp_gamma.c
> > @@ -24,10 +24,12 @@
> >   #define DISP_GAMMA_LUT				0x0700
> >   
> >   #define LUT_10BIT_MASK				0x03ff
> > +#define LUT_SIZE_DEFAULT			512 /* for setting
> > gamma lut from AAL */
> >   
> >   struct mtk_disp_gamma_data {
> >   	bool has_dither;
> >   	bool lut_diff;
> > +	u16 lut_size;
> >   };
> >   
> >   /*
> > @@ -54,18 +56,32 @@ void mtk_gamma_clk_disable(struct device *dev)
> >   	clk_disable_unprepare(gamma->clk);
> >   }
> >   
> > +unsigned int mtk_gamma_get_size(struct device *dev)
> > +{
> > +	struct mtk_disp_gamma *gamma = dev_get_drvdata(dev);
> > +	unsigned int lut_size = LUT_SIZE_DEFAULT;
> > +
> > +	if (gamma && gamma->data)
> > +		lut_size = gamma->data->lut_size;
> > +
> > +	return lut_size;
> > +}
> > +
> >   void mtk_gamma_set_common(struct device *dev, void __iomem *regs,
> > struct drm_crtc_state *state)
> >   {
> >   	struct mtk_disp_gamma *gamma = dev_get_drvdata(dev);
> >   	bool lut_diff = false;
> > +	u16 lut_size = LUT_SIZE_DEFAULT;
> 
> This makes us get a double assignment in case gamma->data is
> populated.
> 
> >   	unsigned int i, reg;
> >   	struct drm_color_lut *lut;
> >   	void __iomem *lut_base;
> >   	u32 word;
> >   	u32 diff[3] = {0};
> >   
> > -	if (gamma && gamma->data)
> > +	if (gamma && gamma->data) {
> >   		lut_diff = gamma->data->lut_diff;
> > +		lut_size = gamma->data->lut_size;
> > +	}
> 
> ...you can avoid it like that:
> 
> } else {
> 	lut_size = LUT_SIZE_DEFAULT;
> }
> 
> 
> Regards,
> Angelo
> 
> 
-- 
Jason-JH Lin <jason-jh.lin@mediatek.com>


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH v3 4/9] drm/mediatek: Add gamma support different lut_size for other SoC
  2022-09-12 10:24   ` AngeloGioacchino Del Regno
  2022-09-14  1:33     ` Jason-JH Lin
@ 2022-09-14  1:35     ` Jason-JH Lin
  1 sibling, 0 replies; 20+ messages in thread
From: Jason-JH Lin @ 2022-09-14  1:35 UTC (permalink / raw)
  To: AngeloGioacchino Del Regno, Chun-Kuang Hu, Rob Herring,
	Krzysztof Kozlowski, Matthias Brugger
  Cc: CK Hu, Rex-BC Chen, Singo Chang, dri-devel, linux-mediatek,
	devicetree, linux-kernel, linux-arm-kernel,
	Project_Global_Chrome_Upstream_Group

Hi Angelo,

Thanks for the reviews.

On Mon, 2022-09-12 at 12:24 +0200, AngeloGioacchino Del Regno wrote:
> Il 11/09/22 17:37, Jason-JH.Lin ha scritto:
> > 1. Add mtk_drm_gamma_get_lut_size() and remove MTK_LUT_SIZE macro.
> > 2. Add lut_size to gamma driver data for different SoC.
> > 
> > Signed-off-by: Jason-JH.Lin <jason-jh.lin@mediatek.com>
> > ---
> >   drivers/gpu/drm/mediatek/mtk_disp_drv.h     |  1 +
> >   drivers/gpu/drm/mediatek/mtk_disp_gamma.c   | 22
> > +++++++++++++++++++--
> >   drivers/gpu/drm/mediatek/mtk_drm_crtc.c     |  4 ++--
> >   drivers/gpu/drm/mediatek/mtk_drm_crtc.h     |  1 -
> >   drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.h |  9 +++++++++
> >   5 files changed, 32 insertions(+), 5 deletions(-)
> > 
> > diff --git a/drivers/gpu/drm/mediatek/mtk_disp_drv.h
> > b/drivers/gpu/drm/mediatek/mtk_disp_drv.h
> > index a83e5fbc8724..6a05bb56e693 100644
> > --- a/drivers/gpu/drm/mediatek/mtk_disp_drv.h
> > +++ b/drivers/gpu/drm/mediatek/mtk_disp_drv.h
> > @@ -51,6 +51,7 @@ void mtk_gamma_clk_disable(struct device *dev);
> >   void mtk_gamma_config(struct device *dev, unsigned int w,
> >   		      unsigned int h, unsigned int vrefresh,
> >   		      unsigned int bpc, struct cmdq_pkt *cmdq_pkt);
> > +unsigned int mtk_gamma_get_lut_size(struct device *dev);
> >   void mtk_gamma_set(struct device *dev, struct drm_crtc_state
> > *state);
> >   void mtk_gamma_set_common(struct device *dev, void __iomem *regs,
> > struct drm_crtc_state *state);
> >   void mtk_gamma_start(struct device *dev);
> > diff --git a/drivers/gpu/drm/mediatek/mtk_disp_gamma.c
> > b/drivers/gpu/drm/mediatek/mtk_disp_gamma.c
> > index f54a6a618348..e69d0b205b9a 100644
> > --- a/drivers/gpu/drm/mediatek/mtk_disp_gamma.c
> > +++ b/drivers/gpu/drm/mediatek/mtk_disp_gamma.c
> > @@ -24,10 +24,12 @@
> >   #define DISP_GAMMA_LUT				0x0700
> >   
> >   #define LUT_10BIT_MASK				0x03ff
> > +#define LUT_SIZE_DEFAULT			512 /* for setting
> > gamma lut from AAL */
> >   
> >   struct mtk_disp_gamma_data {
> >   	bool has_dither;
> >   	bool lut_diff;
> > +	u16 lut_size;
> >   };
> >   
> >   /*
> > @@ -54,18 +56,32 @@ void mtk_gamma_clk_disable(struct device *dev)
> >   	clk_disable_unprepare(gamma->clk);
> >   }
> >   
> > +unsigned int mtk_gamma_get_size(struct device *dev)
> > +{
> > +	struct mtk_disp_gamma *gamma = dev_get_drvdata(dev);
> > +	unsigned int lut_size = LUT_SIZE_DEFAULT;
> > +
> > +	if (gamma && gamma->data)
> > +		lut_size = gamma->data->lut_size;
> > +
> > +	return lut_size;
> > +}
> > +
> >   void mtk_gamma_set_common(struct device *dev, void __iomem *regs,
> > struct drm_crtc_state *state)
> >   {
> >   	struct mtk_disp_gamma *gamma = dev_get_drvdata(dev);
> >   	bool lut_diff = false;
> > +	u16 lut_size = LUT_SIZE_DEFAULT;
> 
> This makes us get a double assignment in case gamma->data is
> populated.
> 
> >   	unsigned int i, reg;
> >   	struct drm_color_lut *lut;
> >   	void __iomem *lut_base;
> >   	u32 word;
> >   	u32 diff[3] = {0};
> >   
> > -	if (gamma && gamma->data)
> > +	if (gamma && gamma->data) {
> >   		lut_diff = gamma->data->lut_diff;
> > +		lut_size = gamma->data->lut_size;
> > +	}
> 
> ...you can avoid it like that:
> 
> } else {
> 	lut_size = LUT_SIZE_DEFAULT;
> }
> 
> 
> Regards,
> Angelo
> 
OK, I'll fix it, but I'll move the gamma priv data handling to the
mtk_gamma_set.

Regards,
Jason-JH.Lin

> 
-- 
Jason-JH Lin <jason-jh.lin@mediatek.com>


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH v3 5/9] drm/mediatek: Add gamma support different lut_bits for other SoC
  2022-09-12 10:25   ` AngeloGioacchino Del Regno
@ 2022-09-14  1:36     ` Jason-JH Lin
  0 siblings, 0 replies; 20+ messages in thread
From: Jason-JH Lin @ 2022-09-14  1:36 UTC (permalink / raw)
  To: AngeloGioacchino Del Regno, Chun-Kuang Hu, Rob Herring,
	Krzysztof Kozlowski, Matthias Brugger
  Cc: CK Hu, Rex-BC Chen, Singo Chang, dri-devel, linux-mediatek,
	devicetree, linux-kernel, linux-arm-kernel,
	Project_Global_Chrome_Upstream_Group

Hi Angelo,

Thanks for the reviews.

On Mon, 2022-09-12 at 12:25 +0200, AngeloGioacchino Del Regno wrote:
> Il 11/09/22 17:37, Jason-JH.Lin ha scritto:
> > Add lut_bits in gamma driver data for each SoC and adjust the usage
> > of lut_bits in mtk_drm_gamma_set_common().
> > 
> > Signed-off-by: Jason-JH.Lin <jason-jh.lin@mediatek.com>
> > ---
> >   drivers/gpu/drm/mediatek/mtk_disp_gamma.c | 36 ++++++++++++++++
> > -------
> >   1 file changed, 25 insertions(+), 11 deletions(-)
> > 
> > diff --git a/drivers/gpu/drm/mediatek/mtk_disp_gamma.c
> > b/drivers/gpu/drm/mediatek/mtk_disp_gamma.c
> > index e69d0b205b9a..155fb5d94d79 100644
> > --- a/drivers/gpu/drm/mediatek/mtk_disp_gamma.c
> > +++ b/drivers/gpu/drm/mediatek/mtk_disp_gamma.c
> > @@ -25,11 +25,14 @@
> >   
> >   #define LUT_10BIT_MASK				0x03ff
> >   #define LUT_SIZE_DEFAULT			512 /* for setting
> > gamma lut from AAL */
> > +#define LUT_BITS_DEFAULT			10
> > +#define LUT_INPUT_BITS				16 /* input lut
> > bit from application */
> >   
> >   struct mtk_disp_gamma_data {
> >   	bool has_dither;
> >   	bool lut_diff;
> >   	u16 lut_size;
> > +	u8 lut_bits;
> >   };
> >   
> >   /*
> > @@ -72,17 +75,23 @@ void mtk_gamma_set_common(struct device *dev,
> > void __iomem *regs, struct drm_crt
> >   	struct mtk_disp_gamma *gamma = dev_get_drvdata(dev);
> >   	bool lut_diff = false;
> >   	u16 lut_size = LUT_SIZE_DEFAULT;
> > +	u8 lut_bits = LUT_BITS_DEFAULT;
> 
> Please fix this double assignment like shown in the comment for patch
> [4/9].
> 
> Thanks,
> Angelo
> 
OK, I'll fix this.
Regards,
Jason-JH.Lin

-- 
Jason-JH Lin <jason-jh.lin@mediatek.com>


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH v3 8/9] drm/mediatek: Add clear RELAY_MODE bit to set gamma
  2022-09-12 10:26   ` AngeloGioacchino Del Regno
@ 2022-09-14  1:37     ` Jason-JH Lin
  0 siblings, 0 replies; 20+ messages in thread
From: Jason-JH Lin @ 2022-09-14  1:37 UTC (permalink / raw)
  To: AngeloGioacchino Del Regno, Chun-Kuang Hu, Rob Herring,
	Krzysztof Kozlowski, Matthias Brugger
  Cc: CK Hu, Rex-BC Chen, Singo Chang, dri-devel, linux-mediatek,
	devicetree, linux-kernel, linux-arm-kernel,
	Project_Global_Chrome_Upstream_Group

Hi Angelo

Thanks for the reviews.

On Mon, 2022-09-12 at 12:26 +0200, AngeloGioacchino Del Regno wrote:
> Il 11/09/22 17:37, Jason-JH.Lin ha scritto:
> > Since the bootlaoder may set the RELAY_MODE to gamma be for the
> > kerenl,
> > we have to clear the RELAY_MODE bit to make sure that the gamma is
> > enabled correctly.
> > 
> > Fixes: b10023b03082 ("FROMGIT: drm/mediatek: Separate gamma
> > module")
> 
> This Fixes tag is invalid. Please fix.
> 
> Regards,
> Angelo
> 
OK, I,ll fix it.

Regards,
Jason-JH.Lin
-- 
Jason-JH Lin <jason-jh.lin@mediatek.com>


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 20+ messages in thread

end of thread, other threads:[~2022-09-14  2:39 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-09-11 15:37 [PATCH v3 0/9] Add gamma lut support for mt8195 Jason-JH.Lin
2022-09-11 15:37 ` [PATCH v3 1/9] dt-bindings: mediatek: modify item formatting for gamma Jason-JH.Lin
2022-09-11 15:37 ` [PATCH v3 2/9] dt-bindings: mediatek: Add gamma compatible for mt8195 Jason-JH.Lin
2022-09-11 15:37 ` [PATCH v3 3/9] drm/mediatek: Adjust mtk_drm_gamma_set_common parameters Jason-JH.Lin
2022-09-12 10:12   ` AngeloGioacchino Del Regno
2022-09-14  1:29     ` Jason-JH Lin
2022-09-11 15:37 ` [PATCH v3 4/9] drm/mediatek: Add gamma support different lut_size for other SoC Jason-JH.Lin
2022-09-11 21:10   ` kernel test robot
2022-09-12 10:24   ` AngeloGioacchino Del Regno
2022-09-14  1:33     ` Jason-JH Lin
2022-09-14  1:35     ` Jason-JH Lin
2022-09-11 15:37 ` [PATCH v3 5/9] drm/mediatek: Add gamma support different lut_bits " Jason-JH.Lin
2022-09-12 10:25   ` AngeloGioacchino Del Regno
2022-09-14  1:36     ` Jason-JH Lin
2022-09-11 15:37 ` [PATCH v3 6/9] drm/mediatek: Add gamma support different bank_size " Jason-JH.Lin
2022-09-11 15:37 ` [PATCH v3 7/9] drm/mediatek: Add gamma lut support for mt8195 Jason-JH.Lin
2022-09-11 15:37 ` [PATCH v3 8/9] drm/mediatek: Add clear RELAY_MODE bit to set gamma Jason-JH.Lin
2022-09-12 10:26   ` AngeloGioacchino Del Regno
2022-09-14  1:37     ` Jason-JH Lin
2022-09-11 15:37 ` [PATCH v3 9/9] arm64: dts: Modify gamma compatible for mt8195 Jason-JH.Lin

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).