Commit 23fe440c authored by Peter Rosin's avatar Peter Rosin Committed by Wolfram Sang
Browse files

i2c: mux: drop old unused i2c-mux api



All i2c mux users are using an explicit i2c mux core, drop support
for implicit i2c mux cores.

Signed-off-by: default avatarPeter Rosin <peda@axentia.se>
Signed-off-by: default avatarWolfram Sang <wsa@the-dreams.de>
parent b6e3b717
Loading
Loading
Loading
Loading
+0 −63
Original line number Diff line number Diff line
@@ -28,12 +28,6 @@
#include <linux/slab.h>

/* multiplexer per channel data */
struct i2c_mux_priv_old {
	void *mux_priv;
	int (*select)(struct i2c_adapter *, void *mux_priv, u32 chan_id);
	int (*deselect)(struct i2c_adapter *, void *mux_priv, u32 chan_id);
};

struct i2c_mux_priv {
	struct i2c_adapter adap;
	struct i2c_algorithm algo;
@@ -104,53 +98,6 @@ static unsigned int i2c_mux_parent_classes(struct i2c_adapter *parent)
	return class;
}

static int i2c_mux_select(struct i2c_mux_core *muxc, u32 chan)
{
	struct i2c_mux_priv_old *priv = i2c_mux_priv(muxc);

	return priv->select(muxc->parent, priv->mux_priv, chan);
}

static int i2c_mux_deselect(struct i2c_mux_core *muxc, u32 chan)
{
	struct i2c_mux_priv_old *priv = i2c_mux_priv(muxc);

	return priv->deselect(muxc->parent, priv->mux_priv, chan);
}

struct i2c_adapter *i2c_add_mux_adapter(struct i2c_adapter *parent,
				struct device *mux_dev,
				void *mux_priv, u32 force_nr, u32 chan_id,
				unsigned int class,
				int (*select) (struct i2c_adapter *,
					       void *, u32),
				int (*deselect) (struct i2c_adapter *,
						 void *, u32))
{
	struct i2c_mux_core *muxc;
	struct i2c_mux_priv_old *priv;
	int ret;

	muxc = i2c_mux_alloc(parent, mux_dev, 1, sizeof(*priv), 0,
			     i2c_mux_select, i2c_mux_deselect);
	if (!muxc)
		return NULL;

	priv = i2c_mux_priv(muxc);
	priv->select = select;
	priv->deselect = deselect;
	priv->mux_priv = mux_priv;

	ret = i2c_mux_add_adapter(muxc, force_nr, chan_id, class);
	if (ret) {
		devm_kfree(mux_dev, muxc);
		return NULL;
	}

	return muxc->adapter[0];
}
EXPORT_SYMBOL_GPL(i2c_add_mux_adapter);

struct i2c_mux_core *i2c_mux_alloc(struct i2c_adapter *parent,
				   struct device *dev, int max_adapters,
				   int sizeof_priv, u32 flags,
@@ -305,16 +252,6 @@ void i2c_mux_del_adapters(struct i2c_mux_core *muxc)
}
EXPORT_SYMBOL_GPL(i2c_mux_del_adapters);

void i2c_del_mux_adapter(struct i2c_adapter *adap)
{
	struct i2c_mux_priv *priv = adap->algo_data;
	struct i2c_mux_core *muxc = priv->muxc;

	i2c_mux_del_adapters(muxc);
	devm_kfree(muxc->dev, muxc);
}
EXPORT_SYMBOL_GPL(i2c_del_mux_adapter);

MODULE_AUTHOR("Rodolfo Giometti <giometti@linux.it>");
MODULE_DESCRIPTION("I2C driver for multiplexed I2C busses");
MODULE_LICENSE("GPL v2");
+0 −15
Original line number Diff line number Diff line
@@ -52,20 +52,6 @@ static inline void *i2c_mux_priv(struct i2c_mux_core *muxc)
	return muxc->priv;
}

/*
 * Called to create a i2c bus on a multiplexed bus segment.
 * The mux_dev and chan_id parameters are passed to the select
 * and deselect callback functions to perform hardware-specific
 * mux control.
 */
struct i2c_adapter *i2c_add_mux_adapter(struct i2c_adapter *parent,
				struct device *mux_dev,
				void *mux_priv, u32 force_nr, u32 chan_id,
				unsigned int class,
				int (*select) (struct i2c_adapter *,
					       void *mux_dev, u32 chan_id),
				int (*deselect) (struct i2c_adapter *,
						 void *mux_dev, u32 chan_id));
/*
 * Called to create an i2c bus on a multiplexed bus segment.
 * The chan_id parameter is passed to the select and deselect
@@ -75,7 +61,6 @@ int i2c_mux_add_adapter(struct i2c_mux_core *muxc,
			u32 force_nr, u32 chan_id,
			unsigned int class);

void i2c_del_mux_adapter(struct i2c_adapter *adap);
void i2c_mux_del_adapters(struct i2c_mux_core *muxc);

#endif /* __KERNEL__ */