Skip to content

Commit

Permalink
i2c: Rename last mux driver to standard pattern
Browse files Browse the repository at this point in the history
Update the MAINTAINERS entry and all other references accordingly.

Based on an original patch by Wolfram Sang.

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

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

Signed-off-by: Wolfram Sang <w.sang@pengutronix.de>
  • Loading branch information
Jean Delvare authored and Wolfram Sang committed May 12, 2012
1 parent 353f56b commit e7065e2
Show file tree
Hide file tree
Showing 6 changed files with 39 additions and 40 deletions.
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
Kernel driver gpio-i2cmux
Kernel driver i2c-gpio-mux

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

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.

E.G.:
Expand All @@ -26,16 +26,16 @@ according to the settings of the GPIO pins 1..N.
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
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
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
controlled through 3 GPIO pins:

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

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

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

GENERIC HDLC (WAN) DRIVERS
M: Krzysztof Halasa <khc@pm.waw.pl>
Expand Down
2 changes: 1 addition & 1 deletion drivers/i2c/muxes/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ config I2C_MUX_GPIO
through GPIO pins.

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
tristate "NXP PCA9541 I2C Master Selector"
Expand Down
2 changes: 1 addition & 1 deletion drivers/i2c/muxes/Makefile
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#
# 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_PCA954x) += i2c-mux-pca954x.o

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@

#include <linux/i2c.h>
#include <linux/i2c-mux.h>
#include <linux/gpio-i2cmux.h>
#include <linux/i2c-mux-gpio.h>
#include <linux/platform_device.h>
#include <linux/init.h>
#include <linux/module.h>
Expand All @@ -20,39 +20,39 @@
struct gpiomux {
struct i2c_adapter *parent;
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;

for (i = 0; i < mux->data.n_gpios; 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;

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

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;

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

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 gpio_i2cmux_platform_data *pdata;
struct i2c_mux_gpio_platform_data *pdata;
struct i2c_adapter *parent;
int (*deselect) (struct i2c_adapter *, void *, u32);
unsigned initial_state;
Expand Down Expand Up @@ -86,16 +86,16 @@ static int __devinit gpiomux_probe(struct platform_device *pdev)
goto alloc_failed2;
}

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

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)
goto err_request_gpio;
gpio_direction_output(pdata->gpios[i],
Expand All @@ -105,9 +105,8 @@ static int __devinit gpiomux_probe(struct platform_device *pdev)
for (i = 0; i < pdata->n_values; i++) {
u32 nr = pdata->base_nr ? (pdata->base_nr + i) : 0;

mux->adap[i] = i2c_add_mux_adapter(parent, &pdev->dev, mux,
nr, i,
gpiomux_select, deselect);
mux->adap[i] = i2c_add_mux_adapter(parent, &pdev->dev, mux, nr, i,
i2c_mux_gpio_select, deselect);
if (!mux->adap[i]) {
ret = -ENODEV;
dev_err(&pdev->dev, "Failed to add adapter %d\n", i);
Expand Down Expand Up @@ -138,7 +137,7 @@ static int __devinit gpiomux_probe(struct platform_device *pdev)
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);
int i;
Expand All @@ -157,18 +156,18 @@ static int __devexit gpiomux_remove(struct platform_device *pdev)
return 0;
}

static struct platform_driver gpiomux_driver = {
.probe = gpiomux_probe,
.remove = __devexit_p(gpiomux_remove),
static struct platform_driver i2c_mux_gpio_driver = {
.probe = i2c_mux_gpio_probe,
.remove = __devexit_p(i2c_mux_gpio_remove),
.driver = {
.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_AUTHOR("Peter Korsgaard <peter.korsgaard@barco.com>");
MODULE_LICENSE("GPL");
MODULE_ALIAS("platform:gpio-i2cmux");
MODULE_ALIAS("platform:i2c-mux-gpio");
14 changes: 7 additions & 7 deletions include/linux/gpio-i2cmux.h → include/linux/i2c-mux-gpio.h
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* gpio-i2cmux interface to platform code
* i2c-mux-gpio interface to platform code
*
* Peter Korsgaard <peter.korsgaard@barco.com>
*
Expand All @@ -8,14 +8,14 @@
* published by the Free Software Foundation.
*/

#ifndef _LINUX_GPIO_I2CMUX_H
#define _LINUX_GPIO_I2CMUX_H
#ifndef _LINUX_I2C_MUX_GPIO_H
#define _LINUX_I2C_MUX_GPIO_H

/* MUX has no specific idle mode */
#define GPIO_I2CMUX_NO_IDLE ((unsigned)-1)
#define I2C_MUX_GPIO_NO_IDLE ((unsigned)-1)

/**
* struct gpio_i2cmux_platform_data - Platform-dependent data for gpio-i2cmux
* struct i2c_mux_gpio_platform_data - Platform-dependent data for i2c-mux-gpio
* @parent: Parent I2C bus adapter number
* @base_nr: Base I2C bus number to number adapters from or zero for dynamic
* @values: Array of bitmasks of GPIO settings (low/high) for each
Expand All @@ -25,7 +25,7 @@
* @n_gpios: Number of GPIOs used to control MUX
* @idle: Bitmask to write to MUX when idle or GPIO_I2CMUX_NO_IDLE if not used
*/
struct gpio_i2cmux_platform_data {
struct i2c_mux_gpio_platform_data {
int parent;
int base_nr;
const unsigned *values;
Expand All @@ -35,4 +35,4 @@ struct gpio_i2cmux_platform_data {
unsigned idle;
};

#endif /* _LINUX_GPIO_I2CMUX_H */
#endif /* _LINUX_I2C_MUX_GPIO_H */

0 comments on commit e7065e2

Please sign in to comment.