* [PATCH] drm/exynos: fimc: Add support for S5PV210 variant
@ 2020-05-09 17:46 Jonathan Bakker
0 siblings, 0 replies; only message in thread
From: Jonathan Bakker @ 2020-05-09 17:46 UTC (permalink / raw)
To: nki.dae, jy0922.shim, sw0312.kim, kyungmin.park, airlied, daniel,
kgene, krzk, dri-devel, linux-arm-kernel, linux-samsung-soc,
linux-kernel
Cc: Jonathan Bakker
S5PV210 can be trivially supported by this driver. Only one of
its FIMC devices (#2) supports the same scaling values as Exynos4, and
it is marked by mainscaler-ext in the DTS (as it is for all of the
Exynos4 devices). It's limits are the same as that of id's 0-2 of
Exynos4 so we don't even need to change the device id check.
It has been tested with a modified libdrm's test from
https://github.com/tobiasjakobi/libdrm/tree/ippv2
Signed-off-by: Jonathan Bakker <xc-racer2@live.ca>
---
drivers/gpu/drm/exynos/exynos_drm_fimc.c | 13 ++++++++++++-
1 file changed, 12 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/exynos/exynos_drm_fimc.c b/drivers/gpu/drm/exynos/exynos_drm_fimc.c
index 29ab8be8604c..63e1b8ccb8e9 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_fimc.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_fimc.c
@@ -89,6 +89,7 @@ struct fimc_scaler {
* @regs: memory mapped io registers.
* @lock: locking of operations.
* @clocks: fimc clocks.
+ * @num_clocks: number of fimc clocks
* @sc: scaler infomations.
* @pol: porarity of writeback.
* @id: fimc id.
@@ -107,6 +108,7 @@ struct fimc_context {
void __iomem *regs;
spinlock_t lock;
struct clk *clocks[FIMC_CLKS_MAX];
+ int num_clocks;
struct fimc_scaler sc;
int id;
int irq;
@@ -1183,7 +1185,7 @@ static int fimc_setup_clocks(struct fimc_context *ctx)
for (i = 0; i < FIMC_CLKS_MAX; i++)
ctx->clocks[i] = ERR_PTR(-EINVAL);
- for (i = 0; i < FIMC_CLKS_MAX; i++) {
+ for (i = 0; i < ctx->num_clocks; i++) {
if (i == FIMC_CLK_WB_A || i == FIMC_CLK_WB_B)
dev = fimc_dev->parent;
else
@@ -1210,6 +1212,9 @@ int exynos_drm_check_fimc_device(struct device *dev)
{
int id = of_alias_get_id(dev->of_node, "fimc");
+ if (!of_property_read_bool(dev->of_node, "samsung,mainscaler-ext"))
+ return -ENODEV;
+
if (id >= 0 && (BIT(id) & fimc_mask))
return 0;
return -ENODEV;
@@ -1277,6 +1282,11 @@ static int fimc_probe(struct platform_device *pdev)
ctx->dev = dev;
ctx->id = of_alias_get_id(dev->of_node, "fimc");
+ if (of_device_is_compatible(dev->of_node, "samsung,s5pv210-fimc"))
+ ctx->num_clocks = 2;
+ else
+ ctx->num_clocks = FIMC_CLKS_MAX;
+
/* construct formats/limits array */
num_formats = ARRAY_SIZE(fimc_formats) + ARRAY_SIZE(fimc_tiled_formats);
formats = devm_kcalloc(dev, num_formats, sizeof(*formats),
@@ -1409,6 +1419,7 @@ static const struct dev_pm_ops fimc_pm_ops = {
static const struct of_device_id fimc_of_match[] = {
{ .compatible = "samsung,exynos4210-fimc" },
{ .compatible = "samsung,exynos4212-fimc" },
+ { .compatible = "samsung,s5pv210-fimc" },
{ },
};
MODULE_DEVICE_TABLE(of, fimc_of_match);
--
2.20.1
_______________________________________________
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] only message in thread
only message in thread, other threads:[~2020-05-09 17:46 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-05-09 17:46 [PATCH] drm/exynos: fimc: Add support for S5PV210 variant Jonathan Bakker
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).