Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e7065e20 authored by Jean Delvare's avatar Jean Delvare Committed by Wolfram Sang
Browse files

i2c: Rename last mux driver to standard pattern



Update the MAINTAINERS entry and all other references accordingly.

Based on an original patch by Wolfram Sang.

Signed-off-by: default avatarJean Delvare <khali@linux-fr.org>
Acked-by: default avatarPeter Korsgaard <peter.korsgaard@barco.com>

[wsa: fixed merge conflict due to rework in i2c_add_mux_adapter()]

Signed-off-by: default avatarWolfram Sang <w.sang@pengutronix.de>
parent 353f56b5
Loading
Loading
Loading
Loading
+6 −6
Original line number Original line Diff line number Diff line
Kernel driver gpio-i2cmux
Kernel driver i2c-gpio-mux


Author: Peter Korsgaard <peter.korsgaard@barco.com>
Author: Peter Korsgaard <peter.korsgaard@barco.com>


Description
Description
-----------
-----------


gpio-i2cmux is an i2c mux driver providing access to I2C bus segments
i2c-gpio-mux is an i2c mux driver providing access to I2C bus segments
from a master I2C bus and a hardware MUX controlled through GPIO pins.
from a master I2C bus and a hardware MUX controlled through GPIO pins.


E.G.:
E.G.:
@@ -26,16 +26,16 @@ according to the settings of the GPIO pins 1..N.
Usage
Usage
-----
-----


gpio-i2cmux uses the platform bus, so you need to provide a struct
i2c-gpio-mux uses the platform bus, so you need to provide a struct
platform_device with the platform_data pointing to a struct
platform_device with the platform_data pointing to a struct
gpio_i2cmux_platform_data with the I2C adapter number of the master
gpio_i2cmux_platform_data with the I2C adapter number of the master
bus, the number of bus segments to create and the GPIO pins used
bus, the number of bus segments to create and the GPIO pins used
to control it. See include/linux/gpio-i2cmux.h for details.
to control it. See include/linux/i2c-gpio-mux.h for details.


E.G. something like this for a MUX providing 4 bus segments
E.G. something like this for a MUX providing 4 bus segments
controlled through 3 GPIO pins:
controlled through 3 GPIO pins:


#include <linux/gpio-i2cmux.h>
#include <linux/i2c-gpio-mux.h>
#include <linux/platform_device.h>
#include <linux/platform_device.h>


static const unsigned myboard_gpiomux_gpios[] = {
static const unsigned myboard_gpiomux_gpios[] = {
@@ -57,7 +57,7 @@ static struct gpio_i2cmux_platform_data myboard_i2cmux_data = {
};
};


static struct platform_device myboard_i2cmux = {
static struct platform_device myboard_i2cmux = {
	.name		= "gpio-i2cmux",
	.name		= "i2c-gpio-mux",
	.id		= 0,
	.id		= 0,
	.dev		= {
	.dev		= {
		.platform_data	= &myboard_i2cmux_data,
		.platform_data	= &myboard_i2cmux_data,
+3 −3
Original line number Original line Diff line number Diff line
@@ -2937,9 +2937,9 @@ GENERIC GPIO I2C MULTIPLEXER DRIVER
M:	Peter Korsgaard <peter.korsgaard@barco.com>
M:	Peter Korsgaard <peter.korsgaard@barco.com>
L:	linux-i2c@vger.kernel.org
L:	linux-i2c@vger.kernel.org
S:	Supported
S:	Supported
F:	drivers/i2c/muxes/gpio-i2cmux.c
F:	drivers/i2c/muxes/i2c-mux-gpio.c
F:	include/linux/gpio-i2cmux.h
F:	include/linux/i2c-mux-gpio.h
F:	Documentation/i2c/muxes/gpio-i2cmux
F:	Documentation/i2c/muxes/i2c-mux-gpio


GENERIC HDLC (WAN) DRIVERS
GENERIC HDLC (WAN) DRIVERS
M:	Krzysztof Halasa <khc@pm.waw.pl>
M:	Krzysztof Halasa <khc@pm.waw.pl>
+1 −1
Original line number Original line Diff line number Diff line
@@ -15,7 +15,7 @@ config I2C_MUX_GPIO
	  through GPIO pins.
	  through GPIO pins.


	  This driver can also be built as a module.  If so, the module
	  This driver can also be built as a module.  If so, the module
	  will be called gpio-i2cmux.
	  will be called i2c-mux-gpio.


config I2C_MUX_PCA9541
config I2C_MUX_PCA9541
	tristate "NXP PCA9541 I2C Master Selector"
	tristate "NXP PCA9541 I2C Master Selector"
+1 −1
Original line number Original line Diff line number Diff line
#
#
# Makefile for multiplexer I2C chip drivers.
# Makefile for multiplexer I2C chip drivers.


obj-$(CONFIG_I2C_MUX_GPIO)	+= gpio-i2cmux.o
obj-$(CONFIG_I2C_MUX_GPIO)	+= i2c-mux-gpio.o
obj-$(CONFIG_I2C_MUX_PCA9541)	+= i2c-mux-pca9541.o
obj-$(CONFIG_I2C_MUX_PCA9541)	+= i2c-mux-pca9541.o
obj-$(CONFIG_I2C_MUX_PCA954x)	+= i2c-mux-pca954x.o
obj-$(CONFIG_I2C_MUX_PCA954x)	+= i2c-mux-pca954x.o


+21 −22
Original line number Original line Diff line number Diff line
@@ -10,7 +10,7 @@


#include <linux/i2c.h>
#include <linux/i2c.h>
#include <linux/i2c-mux.h>
#include <linux/i2c-mux.h>
#include <linux/gpio-i2cmux.h>
#include <linux/i2c-mux-gpio.h>
#include <linux/platform_device.h>
#include <linux/platform_device.h>
#include <linux/init.h>
#include <linux/init.h>
#include <linux/module.h>
#include <linux/module.h>
@@ -20,10 +20,10 @@
struct gpiomux {
struct gpiomux {
	struct i2c_adapter *parent;
	struct i2c_adapter *parent;
	struct i2c_adapter **adap; /* child busses */
	struct i2c_adapter **adap; /* child busses */
	struct gpio_i2cmux_platform_data data;
	struct i2c_mux_gpio_platform_data data;
};
};


static void gpiomux_set(const struct gpiomux *mux, unsigned val)
static void i2c_mux_gpio_set(const struct gpiomux *mux, unsigned val)
{
{
	int i;
	int i;


@@ -31,28 +31,28 @@ static void gpiomux_set(const struct gpiomux *mux, unsigned val)
		gpio_set_value(mux->data.gpios[i], val & (1 << i));
		gpio_set_value(mux->data.gpios[i], val & (1 << i));
}
}


static int gpiomux_select(struct i2c_adapter *adap, void *data, u32 chan)
static int i2c_mux_gpio_select(struct i2c_adapter *adap, void *data, u32 chan)
{
{
	struct gpiomux *mux = data;
	struct gpiomux *mux = data;


	gpiomux_set(mux, mux->data.values[chan]);
	i2c_mux_gpio_set(mux, mux->data.values[chan]);


	return 0;
	return 0;
}
}


static int gpiomux_deselect(struct i2c_adapter *adap, void *data, u32 chan)
static int i2c_mux_gpio_deselect(struct i2c_adapter *adap, void *data, u32 chan)
{
{
	struct gpiomux *mux = data;
	struct gpiomux *mux = data;


	gpiomux_set(mux, mux->data.idle);
	i2c_mux_gpio_set(mux, mux->data.idle);


	return 0;
	return 0;
}
}


static int __devinit gpiomux_probe(struct platform_device *pdev)
static int __devinit i2c_mux_gpio_probe(struct platform_device *pdev)
{
{
	struct gpiomux *mux;
	struct gpiomux *mux;
	struct gpio_i2cmux_platform_data *pdata;
	struct i2c_mux_gpio_platform_data *pdata;
	struct i2c_adapter *parent;
	struct i2c_adapter *parent;
	int (*deselect) (struct i2c_adapter *, void *, u32);
	int (*deselect) (struct i2c_adapter *, void *, u32);
	unsigned initial_state;
	unsigned initial_state;
@@ -86,16 +86,16 @@ static int __devinit gpiomux_probe(struct platform_device *pdev)
		goto alloc_failed2;
		goto alloc_failed2;
	}
	}


	if (pdata->idle != GPIO_I2CMUX_NO_IDLE) {
	if (pdata->idle != I2C_MUX_GPIO_NO_IDLE) {
		initial_state = pdata->idle;
		initial_state = pdata->idle;
		deselect = gpiomux_deselect;
		deselect = i2c_mux_gpio_deselect;
	} else {
	} else {
		initial_state = pdata->values[0];
		initial_state = pdata->values[0];
		deselect = NULL;
		deselect = NULL;
	}
	}


	for (i = 0; i < pdata->n_gpios; i++) {
	for (i = 0; i < pdata->n_gpios; i++) {
		ret = gpio_request(pdata->gpios[i], "gpio-i2cmux");
		ret = gpio_request(pdata->gpios[i], "i2c-mux-gpio");
		if (ret)
		if (ret)
			goto err_request_gpio;
			goto err_request_gpio;
		gpio_direction_output(pdata->gpios[i],
		gpio_direction_output(pdata->gpios[i],
@@ -105,9 +105,8 @@ static int __devinit gpiomux_probe(struct platform_device *pdev)
	for (i = 0; i < pdata->n_values; i++) {
	for (i = 0; i < pdata->n_values; i++) {
		u32 nr = pdata->base_nr ? (pdata->base_nr + i) : 0;
		u32 nr = pdata->base_nr ? (pdata->base_nr + i) : 0;


		mux->adap[i] = i2c_add_mux_adapter(parent, &pdev->dev, mux,
		mux->adap[i] = i2c_add_mux_adapter(parent, &pdev->dev, mux, nr, i,
						   nr, i,
						   i2c_mux_gpio_select, deselect);
						   gpiomux_select, deselect);
		if (!mux->adap[i]) {
		if (!mux->adap[i]) {
			ret = -ENODEV;
			ret = -ENODEV;
			dev_err(&pdev->dev, "Failed to add adapter %d\n", i);
			dev_err(&pdev->dev, "Failed to add adapter %d\n", i);
@@ -138,7 +137,7 @@ static int __devinit gpiomux_probe(struct platform_device *pdev)
	return ret;
	return ret;
}
}


static int __devexit gpiomux_remove(struct platform_device *pdev)
static int __devexit i2c_mux_gpio_remove(struct platform_device *pdev)
{
{
	struct gpiomux *mux = platform_get_drvdata(pdev);
	struct gpiomux *mux = platform_get_drvdata(pdev);
	int i;
	int i;
@@ -157,18 +156,18 @@ static int __devexit gpiomux_remove(struct platform_device *pdev)
	return 0;
	return 0;
}
}


static struct platform_driver gpiomux_driver = {
static struct platform_driver i2c_mux_gpio_driver = {
	.probe	= gpiomux_probe,
	.probe	= i2c_mux_gpio_probe,
	.remove	= __devexit_p(gpiomux_remove),
	.remove	= __devexit_p(i2c_mux_gpio_remove),
	.driver	= {
	.driver	= {
		.owner	= THIS_MODULE,
		.owner	= THIS_MODULE,
		.name	= "gpio-i2cmux",
		.name	= "i2c-mux-gpio",
	},
	},
};
};


module_platform_driver(gpiomux_driver);
module_platform_driver(i2c_mux_gpio_driver);


MODULE_DESCRIPTION("GPIO-based I2C multiplexer driver");
MODULE_DESCRIPTION("GPIO-based I2C multiplexer driver");
MODULE_AUTHOR("Peter Korsgaard <peter.korsgaard@barco.com>");
MODULE_AUTHOR("Peter Korsgaard <peter.korsgaard@barco.com>");
MODULE_LICENSE("GPL");
MODULE_LICENSE("GPL");
MODULE_ALIAS("platform:gpio-i2cmux");
MODULE_ALIAS("platform:i2c-mux-gpio");
Loading