Commit 8ecfaca7 authored by Pankaj Bansal's avatar Pankaj Bansal Committed by Greg Kroah-Hartman
Browse files

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: default avatarPankaj Bansal <pankaj.bansal@nxp.com>
Signed-off-by: default avatarPeter Rosin <peda@axentia.se>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent ae1c6b9a
Loading
Loading
Loading
Loading
+6 −6
Original line number Diff line number Diff line
@@ -46,14 +46,14 @@ config MUX_GPIO
	  be called mux-gpio.

config MUX_MMIO
	tristate "MMIO register bitfield-controlled Multiplexer"
	depends on (OF && MFD_SYSCON) || COMPILE_TEST
	tristate "MMIO/Regmap register bitfield-controlled Multiplexer"
	depends on OF || COMPILE_TEST
	help
	  MMIO register bitfield-controlled Multiplexer controller.
	  MMIO/Regmap register bitfield-controlled Multiplexer controller.

	  The driver builds multiplexer controllers for bitfields in a syscon
	  register. For N bit wide bitfields, there will be 2^N possible
	  multiplexer states.
	  The driver builds multiplexer controllers for bitfields in either
	  a syscon register or a driver regmap register. For N bit wide
	  bitfields, there will be 2^N possible multiplexer states.

	  To compile the driver as a module, choose M here: the module will
	  be called mux-mmio.
+5 −1
Original line number Diff line number Diff line
@@ -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;

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