aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/mux/mmio.c
diff options
context:
space:
mode:
authorPankaj Bansal <pankaj.bansal@nxp.com>2019-06-12 08:53:00 +0000
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2019-06-21 15:59:53 +0200
commit8ecfaca7926f4bb9fb584df070f50acd407e52ce (patch)
treeaea943a500e522415e96a3dc4814d0c0462e6adc /drivers/mux/mmio.c
parentdt-bindings: add register based devices' mux controller DT bindings (diff)
downloadlinux-dev-8ecfaca7926f4bb9fb584df070f50acd407e52ce.tar.xz
linux-dev-8ecfaca7926f4bb9fb584df070f50acd407e52ce.zip
mux: mmio: add generic regmap bitfield-based multiplexer
Generic register bitfield-based multiplexer that controls the multiplexer producer defined under a parent node. The driver corresponding to parent node provides register read/write capabilities. Signed-off-by: Pankaj Bansal <pankaj.bansal@nxp.com> Signed-off-by: Peter Rosin <peda@axentia.se> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/mux/mmio.c')
-rw-r--r--drivers/mux/mmio.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/mux/mmio.c b/drivers/mux/mmio.c
index 935ac44aa209..44a7a0e885b8 100644
--- a/drivers/mux/mmio.c
+++ b/drivers/mux/mmio.c
@@ -28,6 +28,7 @@ static const struct mux_control_ops mux_mmio_ops = {
static const struct of_device_id mux_mmio_dt_ids[] = {
{ .compatible = "mmio-mux", },
+ { .compatible = "reg-mux", },
{ /* sentinel */ }
};
MODULE_DEVICE_TABLE(of, mux_mmio_dt_ids);
@@ -43,7 +44,10 @@ static int mux_mmio_probe(struct platform_device *pdev)
int ret;
int i;
- regmap = syscon_node_to_regmap(np->parent);
+ if (of_device_is_compatible(np, "mmio-mux"))
+ regmap = syscon_node_to_regmap(np->parent);
+ else
+ regmap = dev_get_regmap(dev->parent, NULL) ?: ERR_PTR(-ENODEV);
if (IS_ERR(regmap)) {
ret = PTR_ERR(regmap);
dev_err(dev, "failed to get regmap: %d\n", ret);