aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/soc/amlogic/meson-canvas.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2019-07-19 20:13:56 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2019-07-19 20:13:56 -0400
commit8362fd64f07eaef7155c94fca8dee91c4f99a666 (patch)
tree2d16af7d7b8cbb5765727493f796d453580fc107 /drivers/soc/amlogic/meson-canvas.c
parent24e44913aa746098349370a0f279733c0cadcba7 (diff)
parent8c0993621c3e5fa52e5425ef2a0f67a0cde07092 (diff)
Merge tag 'armsoc-drivers' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc
Pull ARM SoC-related driver updates from Olof Johansson: "Various driver updates for platforms and a couple of the small driver subsystems we merge through our tree: - A driver for SCU (system control) on NXP i.MX8QXP - Qualcomm Always-on Subsystem messaging driver (AOSS QMP) - Qualcomm PM support for MSM8998 - Support for a newer version of DRAM PHY driver for Broadcom (DPFE) - Reset controller support for Bitmain BM1880 - TI SCI (System Control Interface) support for CPU control on AM654 processors - More TI sysc refactoring and rework" * tag 'armsoc-drivers' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc: (84 commits) reset: remove redundant null check on pointer dev soc: rockchip: work around clang warning dt-bindings: reset: imx7: Fix the spelling of 'indices' soc: imx: Add i.MX8MN SoC driver support soc: aspeed: lpc-ctrl: Fix probe error handling soc: qcom: geni: Add support for ACPI firmware: ti_sci: Fix gcc unused-but-set-variable warning firmware: ti_sci: Use the correct style for SPDX License Identifier soc: imx8: Use existing of_root directly soc: imx8: Fix potential kernel dump in error path firmware/psci: psci_checker: Park kthreads before stopping them memory: move jedec_ddr.h from include/memory to drivers/memory/ memory: move jedec_ddr_data.c from lib/ to drivers/memory/ MAINTAINERS: Remove myself as qcom maintainer soc: aspeed: lpc-ctrl: make parameter optional soc: qcom: apr: Don't use reg for domain id soc: qcom: fix QCOM_AOSS_QMP dependency and build errors memory: tegra: Fix -Wunused-const-variable firmware: tegra: Early resume BPMP soc/tegra: Select pinctrl for Tegra194 ...
Diffstat (limited to 'drivers/soc/amlogic/meson-canvas.c')
-rw-r--r--drivers/soc/amlogic/meson-canvas.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/drivers/soc/amlogic/meson-canvas.c b/drivers/soc/amlogic/meson-canvas.c
index be95a37c3fec..c655f5f92b12 100644
--- a/drivers/soc/amlogic/meson-canvas.c
+++ b/drivers/soc/amlogic/meson-canvas.c
@@ -35,6 +35,7 @@ struct meson_canvas {
35 void __iomem *reg_base; 35 void __iomem *reg_base;
36 spinlock_t lock; /* canvas device lock */ 36 spinlock_t lock; /* canvas device lock */
37 u8 used[NUM_CANVAS]; 37 u8 used[NUM_CANVAS];
38 bool supports_endianness;
38}; 39};
39 40
40static void canvas_write(struct meson_canvas *canvas, u32 reg, u32 val) 41static void canvas_write(struct meson_canvas *canvas, u32 reg, u32 val)
@@ -86,6 +87,12 @@ int meson_canvas_config(struct meson_canvas *canvas, u8 canvas_index,
86{ 87{
87 unsigned long flags; 88 unsigned long flags;
88 89
90 if (endian && !canvas->supports_endianness) {
91 dev_err(canvas->dev,
92 "Endianness is not supported on this SoC\n");
93 return -EINVAL;
94 }
95
89 spin_lock_irqsave(&canvas->lock, flags); 96 spin_lock_irqsave(&canvas->lock, flags);
90 if (!canvas->used[canvas_index]) { 97 if (!canvas->used[canvas_index]) {
91 dev_err(canvas->dev, 98 dev_err(canvas->dev,
@@ -172,6 +179,8 @@ static int meson_canvas_probe(struct platform_device *pdev)
172 if (IS_ERR(canvas->reg_base)) 179 if (IS_ERR(canvas->reg_base))
173 return PTR_ERR(canvas->reg_base); 180 return PTR_ERR(canvas->reg_base);
174 181
182 canvas->supports_endianness = of_device_get_match_data(dev);
183
175 canvas->dev = dev; 184 canvas->dev = dev;
176 spin_lock_init(&canvas->lock); 185 spin_lock_init(&canvas->lock);
177 dev_set_drvdata(dev, canvas); 186 dev_set_drvdata(dev, canvas);
@@ -180,7 +189,10 @@ static int meson_canvas_probe(struct platform_device *pdev)
180} 189}
181 190
182static const struct of_device_id canvas_dt_match[] = { 191static const struct of_device_id canvas_dt_match[] = {
183 { .compatible = "amlogic,canvas" }, 192 { .compatible = "amlogic,meson8-canvas", .data = (void *)false, },
193 { .compatible = "amlogic,meson8b-canvas", .data = (void *)false, },
194 { .compatible = "amlogic,meson8m2-canvas", .data = (void *)false, },
195 { .compatible = "amlogic,canvas", .data = (void *)true, },
184 {} 196 {}
185}; 197};
186MODULE_DEVICE_TABLE(of, canvas_dt_match); 198MODULE_DEVICE_TABLE(of, canvas_dt_match);