All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/2] i2c: move adapter locking ops to struct, constify
@ 2016-07-29  8:17 ` Peter Rosin
  0 siblings, 0 replies; 11+ messages in thread
From: Peter Rosin @ 2016-07-29  8:17 UTC (permalink / raw)
  To: linux-kernel; +Cc: Peter Rosin, Wolfram Sang, linux-i2c

This allows the locking ops to be moved to .rodata, which is generally
desireable. It also feels good to change all ops with one assignment.

Cheers,
Peter

Peter Rosin (2):
  i2c: add i2c_trylock_bus wrapper, use it
  i2c: move locking operations to their own struct

 drivers/i2c/i2c-core.c | 15 +++++++++------
 drivers/i2c/i2c-mux.c  | 29 ++++++++++++++++++-----------
 include/linux/i2c.h    | 37 +++++++++++++++++++++++++++++++------
 3 files changed, 58 insertions(+), 23 deletions(-)

-- 
2.1.4

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [PATCH 0/2] i2c: move adapter locking ops to struct, constify
@ 2016-07-29  8:17 ` Peter Rosin
  0 siblings, 0 replies; 11+ messages in thread
From: Peter Rosin @ 2016-07-29  8:17 UTC (permalink / raw)
  To: linux-kernel; +Cc: Peter Rosin, Wolfram Sang, linux-i2c

This allows the locking ops to be moved to .rodata, which is generally
desireable. It also feels good to change all ops with one assignment.

Cheers,
Peter

Peter Rosin (2):
  i2c: add i2c_trylock_bus wrapper, use it
  i2c: move locking operations to their own struct

 drivers/i2c/i2c-core.c | 15 +++++++++------
 drivers/i2c/i2c-mux.c  | 29 ++++++++++++++++++-----------
 include/linux/i2c.h    | 37 +++++++++++++++++++++++++++++++------
 3 files changed, 58 insertions(+), 23 deletions(-)

-- 
2.1.4

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [PATCH 1/2] i2c: add i2c_trylock_bus wrapper, use it
  2016-07-29  8:17 ` Peter Rosin
@ 2016-07-29  8:17   ` Peter Rosin
  -1 siblings, 0 replies; 11+ messages in thread
From: Peter Rosin @ 2016-07-29  8:17 UTC (permalink / raw)
  To: linux-kernel; +Cc: Peter Rosin, Wolfram Sang, linux-i2c

This unifies usage with i2c_lock_bus and i2c_unlock_bus, and paves the
way for the next patch which looks a bit saner with this preparatory
work taken care of beforehand.

Signed-off-by: Peter Rosin <peda@axentia.se>
---
 drivers/i2c/i2c-core.c |  2 +-
 drivers/i2c/i2c-mux.c  |  4 ++--
 include/linux/i2c.h    | 14 ++++++++++++++
 3 files changed, 17 insertions(+), 3 deletions(-)

diff --git a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c
index af11b658984d..2c9135ffdf10 100644
--- a/drivers/i2c/i2c-core.c
+++ b/drivers/i2c/i2c-core.c
@@ -2311,7 +2311,7 @@ int i2c_transfer(struct i2c_adapter *adap, struct i2c_msg *msgs, int num)
 #endif
 
 		if (in_atomic() || irqs_disabled()) {
-			ret = adap->trylock_bus(adap, I2C_LOCK_SEGMENT);
+			ret = i2c_trylock_bus(adap, I2C_LOCK_SEGMENT);
 			if (!ret)
 				/* I2C activity is ongoing. */
 				return -EAGAIN;
diff --git a/drivers/i2c/i2c-mux.c b/drivers/i2c/i2c-mux.c
index 8eee98634cda..764f195795e4 100644
--- a/drivers/i2c/i2c-mux.c
+++ b/drivers/i2c/i2c-mux.c
@@ -159,7 +159,7 @@ static int i2c_mux_trylock_bus(struct i2c_adapter *adapter, unsigned int flags)
 		return 0;	/* mux_lock not locked, failure */
 	if (!(flags & I2C_LOCK_ROOT_ADAPTER))
 		return 1;	/* we only want mux_lock, success */
-	if (parent->trylock_bus(parent, flags))
+	if (i2c_trylock_bus(parent, flags))
 		return 1;	/* parent locked too, success */
 	rt_mutex_unlock(&parent->mux_lock);
 	return 0;		/* parent not locked, failure */
@@ -193,7 +193,7 @@ static int i2c_parent_trylock_bus(struct i2c_adapter *adapter,
 
 	if (!rt_mutex_trylock(&parent->mux_lock))
 		return 0;	/* mux_lock not locked, failure */
-	if (parent->trylock_bus(parent, flags))
+	if (i2c_trylock_bus(parent, flags))
 		return 1;	/* parent locked too, success */
 	rt_mutex_unlock(&parent->mux_lock);
 	return 0;		/* parent not locked, failure */
diff --git a/include/linux/i2c.h b/include/linux/i2c.h
index 96a25ae14494..e1a8d72ebccb 100644
--- a/include/linux/i2c.h
+++ b/include/linux/i2c.h
@@ -588,6 +588,20 @@ i2c_lock_bus(struct i2c_adapter *adapter, unsigned int flags)
 }
 
 /**
+ * i2c_trylock_bus - Try to get exclusive access to an I2C bus segment
+ * @adapter: Target I2C bus segment
+ * @flags: I2C_LOCK_ROOT_ADAPTER tries to locks the root i2c adapter,
+ *	I2C_LOCK_SEGMENT tries to lock only this branch in the adapter tree
+ *
+ * Return: true if the I2C bus segment is locked, false otherwise
+ */
+static inline int
+i2c_trylock_bus(struct i2c_adapter *adapter, unsigned int flags)
+{
+	return adapter->trylock_bus(adapter, flags);
+}
+
+/**
  * i2c_unlock_bus - Release exclusive access to an I2C bus segment
  * @adapter: Target I2C bus segment
  * @flags: I2C_LOCK_ROOT_ADAPTER unlocks the root i2c adapter, I2C_LOCK_SEGMENT
-- 
2.1.4

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH 1/2] i2c: add i2c_trylock_bus wrapper, use it
@ 2016-07-29  8:17   ` Peter Rosin
  0 siblings, 0 replies; 11+ messages in thread
From: Peter Rosin @ 2016-07-29  8:17 UTC (permalink / raw)
  To: linux-kernel; +Cc: Peter Rosin, Wolfram Sang, linux-i2c

This unifies usage with i2c_lock_bus and i2c_unlock_bus, and paves the
way for the next patch which looks a bit saner with this preparatory
work taken care of beforehand.

Signed-off-by: Peter Rosin <peda@axentia.se>
---
 drivers/i2c/i2c-core.c |  2 +-
 drivers/i2c/i2c-mux.c  |  4 ++--
 include/linux/i2c.h    | 14 ++++++++++++++
 3 files changed, 17 insertions(+), 3 deletions(-)

diff --git a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c
index af11b658984d..2c9135ffdf10 100644
--- a/drivers/i2c/i2c-core.c
+++ b/drivers/i2c/i2c-core.c
@@ -2311,7 +2311,7 @@ int i2c_transfer(struct i2c_adapter *adap, struct i2c_msg *msgs, int num)
 #endif
 
 		if (in_atomic() || irqs_disabled()) {
-			ret = adap->trylock_bus(adap, I2C_LOCK_SEGMENT);
+			ret = i2c_trylock_bus(adap, I2C_LOCK_SEGMENT);
 			if (!ret)
 				/* I2C activity is ongoing. */
 				return -EAGAIN;
diff --git a/drivers/i2c/i2c-mux.c b/drivers/i2c/i2c-mux.c
index 8eee98634cda..764f195795e4 100644
--- a/drivers/i2c/i2c-mux.c
+++ b/drivers/i2c/i2c-mux.c
@@ -159,7 +159,7 @@ static int i2c_mux_trylock_bus(struct i2c_adapter *adapter, unsigned int flags)
 		return 0;	/* mux_lock not locked, failure */
 	if (!(flags & I2C_LOCK_ROOT_ADAPTER))
 		return 1;	/* we only want mux_lock, success */
-	if (parent->trylock_bus(parent, flags))
+	if (i2c_trylock_bus(parent, flags))
 		return 1;	/* parent locked too, success */
 	rt_mutex_unlock(&parent->mux_lock);
 	return 0;		/* parent not locked, failure */
@@ -193,7 +193,7 @@ static int i2c_parent_trylock_bus(struct i2c_adapter *adapter,
 
 	if (!rt_mutex_trylock(&parent->mux_lock))
 		return 0;	/* mux_lock not locked, failure */
-	if (parent->trylock_bus(parent, flags))
+	if (i2c_trylock_bus(parent, flags))
 		return 1;	/* parent locked too, success */
 	rt_mutex_unlock(&parent->mux_lock);
 	return 0;		/* parent not locked, failure */
diff --git a/include/linux/i2c.h b/include/linux/i2c.h
index 96a25ae14494..e1a8d72ebccb 100644
--- a/include/linux/i2c.h
+++ b/include/linux/i2c.h
@@ -588,6 +588,20 @@ i2c_lock_bus(struct i2c_adapter *adapter, unsigned int flags)
 }
 
 /**
+ * i2c_trylock_bus - Try to get exclusive access to an I2C bus segment
+ * @adapter: Target I2C bus segment
+ * @flags: I2C_LOCK_ROOT_ADAPTER tries to locks the root i2c adapter,
+ *	I2C_LOCK_SEGMENT tries to lock only this branch in the adapter tree
+ *
+ * Return: true if the I2C bus segment is locked, false otherwise
+ */
+static inline int
+i2c_trylock_bus(struct i2c_adapter *adapter, unsigned int flags)
+{
+	return adapter->trylock_bus(adapter, flags);
+}
+
+/**
  * i2c_unlock_bus - Release exclusive access to an I2C bus segment
  * @adapter: Target I2C bus segment
  * @flags: I2C_LOCK_ROOT_ADAPTER unlocks the root i2c adapter, I2C_LOCK_SEGMENT
-- 
2.1.4

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH 2/2] i2c: move locking operations to their own struct
  2016-07-29  8:17 ` Peter Rosin
@ 2016-07-29  8:17   ` Peter Rosin
  -1 siblings, 0 replies; 11+ messages in thread
From: Peter Rosin @ 2016-07-29  8:17 UTC (permalink / raw)
  To: linux-kernel; +Cc: Peter Rosin, Wolfram Sang, linux-i2c

This makes it trivial to constify them, so do that.

Signed-off-by: Peter Rosin <peda@axentia.se>
---
 drivers/i2c/i2c-core.c | 13 ++++++++-----
 drivers/i2c/i2c-mux.c  | 25 ++++++++++++++++---------
 include/linux/i2c.h    | 25 ++++++++++++++++++-------
 3 files changed, 42 insertions(+), 21 deletions(-)

diff --git a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c
index 2c9135ffdf10..ce252ba13247 100644
--- a/drivers/i2c/i2c-core.c
+++ b/drivers/i2c/i2c-core.c
@@ -1511,6 +1511,12 @@ static int __process_new_adapter(struct device_driver *d, void *data)
 	return i2c_do_add_adapter(to_i2c_driver(d), data);
 }
 
+static const struct i2c_lock_operations i2c_adapter_lock_ops = {
+	.lock_bus =    i2c_adapter_lock_bus,
+	.trylock_bus = i2c_adapter_trylock_bus,
+	.unlock_bus =  i2c_adapter_unlock_bus,
+};
+
 static int i2c_register_adapter(struct i2c_adapter *adap)
 {
 	int res = 0;
@@ -1533,11 +1539,8 @@ static int i2c_register_adapter(struct i2c_adapter *adap)
 		return -EINVAL;
 	}
 
-	if (!adap->lock_bus) {
-		adap->lock_bus = i2c_adapter_lock_bus;
-		adap->trylock_bus = i2c_adapter_trylock_bus;
-		adap->unlock_bus = i2c_adapter_unlock_bus;
-	}
+	if (!adap->lock_ops)
+		adap->lock_ops = &i2c_adapter_lock_ops;
 
 	rt_mutex_init(&adap->bus_lock);
 	rt_mutex_init(&adap->mux_lock);
diff --git a/drivers/i2c/i2c-mux.c b/drivers/i2c/i2c-mux.c
index 764f195795e4..14741ff31041 100644
--- a/drivers/i2c/i2c-mux.c
+++ b/drivers/i2c/i2c-mux.c
@@ -263,6 +263,18 @@ struct i2c_mux_core *i2c_mux_alloc(struct i2c_adapter *parent,
 }
 EXPORT_SYMBOL_GPL(i2c_mux_alloc);
 
+static const struct i2c_lock_operations i2c_mux_lock_ops = {
+	.lock_bus =    i2c_mux_lock_bus,
+	.trylock_bus = i2c_mux_trylock_bus,
+	.unlock_bus =  i2c_mux_unlock_bus,
+};
+
+static const struct i2c_lock_operations i2c_parent_lock_ops = {
+	.lock_bus =    i2c_parent_lock_bus,
+	.trylock_bus = i2c_parent_trylock_bus,
+	.unlock_bus =  i2c_parent_unlock_bus,
+};
+
 int i2c_mux_add_adapter(struct i2c_mux_core *muxc,
 			u32 force_nr, u32 chan_id,
 			unsigned int class)
@@ -312,15 +324,10 @@ int i2c_mux_add_adapter(struct i2c_mux_core *muxc,
 	priv->adap.retries = parent->retries;
 	priv->adap.timeout = parent->timeout;
 	priv->adap.quirks = parent->quirks;
-	if (muxc->mux_locked) {
-		priv->adap.lock_bus = i2c_mux_lock_bus;
-		priv->adap.trylock_bus = i2c_mux_trylock_bus;
-		priv->adap.unlock_bus = i2c_mux_unlock_bus;
-	} else {
-		priv->adap.lock_bus = i2c_parent_lock_bus;
-		priv->adap.trylock_bus = i2c_parent_trylock_bus;
-		priv->adap.unlock_bus = i2c_parent_unlock_bus;
-	}
+	if (muxc->mux_locked)
+		priv->adap.lock_ops = &i2c_mux_lock_ops;
+	else
+		priv->adap.lock_ops = &i2c_parent_lock_ops;
 
 	/* Sanity check on class */
 	if (i2c_mux_parent_classes(parent) & class)
diff --git a/include/linux/i2c.h b/include/linux/i2c.h
index e1a8d72ebccb..765bea57eeb3 100644
--- a/include/linux/i2c.h
+++ b/include/linux/i2c.h
@@ -414,6 +414,20 @@ struct i2c_algorithm {
 };
 
 /**
+ * struct i2c_lock_operations - represent I2C locking operations
+ * @lock_bus: Get exclusive access to an I2C bus segment
+ * @trylock_bus: Try to get exclusive access to an I2C bus segment
+ * @unlock_bus: Release exclusive access to an I2C bus segment
+ *
+ * The main operations are wrapped by i2c_lock_bus and i2c_unlock_bus.
+ */
+struct i2c_lock_operations {
+	void (*lock_bus)(struct i2c_adapter *, unsigned int flags);
+	int (*trylock_bus)(struct i2c_adapter *, unsigned int flags);
+	void (*unlock_bus)(struct i2c_adapter *, unsigned int flags);
+};
+
+/**
  * struct i2c_timings - I2C timing information
  * @bus_freq_hz: the bus frequency in Hz
  * @scl_rise_ns: time SCL signal takes to rise in ns; t(r) in the I2C specification
@@ -523,6 +537,7 @@ struct i2c_adapter {
 	void *algo_data;
 
 	/* data fields that are valid for all devices	*/
+	const struct i2c_lock_operations *lock_ops;
 	struct rt_mutex bus_lock;
 	struct rt_mutex mux_lock;
 
@@ -539,10 +554,6 @@ struct i2c_adapter {
 
 	struct i2c_bus_recovery_info *bus_recovery_info;
 	const struct i2c_adapter_quirks *quirks;
-
-	void (*lock_bus)(struct i2c_adapter *, unsigned int flags);
-	int (*trylock_bus)(struct i2c_adapter *, unsigned int flags);
-	void (*unlock_bus)(struct i2c_adapter *, unsigned int flags);
 };
 #define to_i2c_adapter(d) container_of(d, struct i2c_adapter, dev)
 
@@ -584,7 +595,7 @@ int i2c_for_each_dev(void *data, int (*fn)(struct device *, void *));
 static inline void
 i2c_lock_bus(struct i2c_adapter *adapter, unsigned int flags)
 {
-	adapter->lock_bus(adapter, flags);
+	adapter->lock_ops->lock_bus(adapter, flags);
 }
 
 /**
@@ -598,7 +609,7 @@ i2c_lock_bus(struct i2c_adapter *adapter, unsigned int flags)
 static inline int
 i2c_trylock_bus(struct i2c_adapter *adapter, unsigned int flags)
 {
-	return adapter->trylock_bus(adapter, flags);
+	return adapter->lock_ops->trylock_bus(adapter, flags);
 }
 
 /**
@@ -610,7 +621,7 @@ i2c_trylock_bus(struct i2c_adapter *adapter, unsigned int flags)
 static inline void
 i2c_unlock_bus(struct i2c_adapter *adapter, unsigned int flags)
 {
-	adapter->unlock_bus(adapter, flags);
+	adapter->lock_ops->unlock_bus(adapter, flags);
 }
 
 static inline void
-- 
2.1.4

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH 2/2] i2c: move locking operations to their own struct
@ 2016-07-29  8:17   ` Peter Rosin
  0 siblings, 0 replies; 11+ messages in thread
From: Peter Rosin @ 2016-07-29  8:17 UTC (permalink / raw)
  To: linux-kernel; +Cc: Peter Rosin, Wolfram Sang, linux-i2c

This makes it trivial to constify them, so do that.

Signed-off-by: Peter Rosin <peda@axentia.se>
---
 drivers/i2c/i2c-core.c | 13 ++++++++-----
 drivers/i2c/i2c-mux.c  | 25 ++++++++++++++++---------
 include/linux/i2c.h    | 25 ++++++++++++++++++-------
 3 files changed, 42 insertions(+), 21 deletions(-)

diff --git a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c
index 2c9135ffdf10..ce252ba13247 100644
--- a/drivers/i2c/i2c-core.c
+++ b/drivers/i2c/i2c-core.c
@@ -1511,6 +1511,12 @@ static int __process_new_adapter(struct device_driver *d, void *data)
 	return i2c_do_add_adapter(to_i2c_driver(d), data);
 }
 
+static const struct i2c_lock_operations i2c_adapter_lock_ops = {
+	.lock_bus =    i2c_adapter_lock_bus,
+	.trylock_bus = i2c_adapter_trylock_bus,
+	.unlock_bus =  i2c_adapter_unlock_bus,
+};
+
 static int i2c_register_adapter(struct i2c_adapter *adap)
 {
 	int res = 0;
@@ -1533,11 +1539,8 @@ static int i2c_register_adapter(struct i2c_adapter *adap)
 		return -EINVAL;
 	}
 
-	if (!adap->lock_bus) {
-		adap->lock_bus = i2c_adapter_lock_bus;
-		adap->trylock_bus = i2c_adapter_trylock_bus;
-		adap->unlock_bus = i2c_adapter_unlock_bus;
-	}
+	if (!adap->lock_ops)
+		adap->lock_ops = &i2c_adapter_lock_ops;
 
 	rt_mutex_init(&adap->bus_lock);
 	rt_mutex_init(&adap->mux_lock);
diff --git a/drivers/i2c/i2c-mux.c b/drivers/i2c/i2c-mux.c
index 764f195795e4..14741ff31041 100644
--- a/drivers/i2c/i2c-mux.c
+++ b/drivers/i2c/i2c-mux.c
@@ -263,6 +263,18 @@ struct i2c_mux_core *i2c_mux_alloc(struct i2c_adapter *parent,
 }
 EXPORT_SYMBOL_GPL(i2c_mux_alloc);
 
+static const struct i2c_lock_operations i2c_mux_lock_ops = {
+	.lock_bus =    i2c_mux_lock_bus,
+	.trylock_bus = i2c_mux_trylock_bus,
+	.unlock_bus =  i2c_mux_unlock_bus,
+};
+
+static const struct i2c_lock_operations i2c_parent_lock_ops = {
+	.lock_bus =    i2c_parent_lock_bus,
+	.trylock_bus = i2c_parent_trylock_bus,
+	.unlock_bus =  i2c_parent_unlock_bus,
+};
+
 int i2c_mux_add_adapter(struct i2c_mux_core *muxc,
 			u32 force_nr, u32 chan_id,
 			unsigned int class)
@@ -312,15 +324,10 @@ int i2c_mux_add_adapter(struct i2c_mux_core *muxc,
 	priv->adap.retries = parent->retries;
 	priv->adap.timeout = parent->timeout;
 	priv->adap.quirks = parent->quirks;
-	if (muxc->mux_locked) {
-		priv->adap.lock_bus = i2c_mux_lock_bus;
-		priv->adap.trylock_bus = i2c_mux_trylock_bus;
-		priv->adap.unlock_bus = i2c_mux_unlock_bus;
-	} else {
-		priv->adap.lock_bus = i2c_parent_lock_bus;
-		priv->adap.trylock_bus = i2c_parent_trylock_bus;
-		priv->adap.unlock_bus = i2c_parent_unlock_bus;
-	}
+	if (muxc->mux_locked)
+		priv->adap.lock_ops = &i2c_mux_lock_ops;
+	else
+		priv->adap.lock_ops = &i2c_parent_lock_ops;
 
 	/* Sanity check on class */
 	if (i2c_mux_parent_classes(parent) & class)
diff --git a/include/linux/i2c.h b/include/linux/i2c.h
index e1a8d72ebccb..765bea57eeb3 100644
--- a/include/linux/i2c.h
+++ b/include/linux/i2c.h
@@ -414,6 +414,20 @@ struct i2c_algorithm {
 };
 
 /**
+ * struct i2c_lock_operations - represent I2C locking operations
+ * @lock_bus: Get exclusive access to an I2C bus segment
+ * @trylock_bus: Try to get exclusive access to an I2C bus segment
+ * @unlock_bus: Release exclusive access to an I2C bus segment
+ *
+ * The main operations are wrapped by i2c_lock_bus and i2c_unlock_bus.
+ */
+struct i2c_lock_operations {
+	void (*lock_bus)(struct i2c_adapter *, unsigned int flags);
+	int (*trylock_bus)(struct i2c_adapter *, unsigned int flags);
+	void (*unlock_bus)(struct i2c_adapter *, unsigned int flags);
+};
+
+/**
  * struct i2c_timings - I2C timing information
  * @bus_freq_hz: the bus frequency in Hz
  * @scl_rise_ns: time SCL signal takes to rise in ns; t(r) in the I2C specification
@@ -523,6 +537,7 @@ struct i2c_adapter {
 	void *algo_data;
 
 	/* data fields that are valid for all devices	*/
+	const struct i2c_lock_operations *lock_ops;
 	struct rt_mutex bus_lock;
 	struct rt_mutex mux_lock;
 
@@ -539,10 +554,6 @@ struct i2c_adapter {
 
 	struct i2c_bus_recovery_info *bus_recovery_info;
 	const struct i2c_adapter_quirks *quirks;
-
-	void (*lock_bus)(struct i2c_adapter *, unsigned int flags);
-	int (*trylock_bus)(struct i2c_adapter *, unsigned int flags);
-	void (*unlock_bus)(struct i2c_adapter *, unsigned int flags);
 };
 #define to_i2c_adapter(d) container_of(d, struct i2c_adapter, dev)
 
@@ -584,7 +595,7 @@ int i2c_for_each_dev(void *data, int (*fn)(struct device *, void *));
 static inline void
 i2c_lock_bus(struct i2c_adapter *adapter, unsigned int flags)
 {
-	adapter->lock_bus(adapter, flags);
+	adapter->lock_ops->lock_bus(adapter, flags);
 }
 
 /**
@@ -598,7 +609,7 @@ i2c_lock_bus(struct i2c_adapter *adapter, unsigned int flags)
 static inline int
 i2c_trylock_bus(struct i2c_adapter *adapter, unsigned int flags)
 {
-	return adapter->trylock_bus(adapter, flags);
+	return adapter->lock_ops->trylock_bus(adapter, flags);
 }
 
 /**
@@ -610,7 +621,7 @@ i2c_trylock_bus(struct i2c_adapter *adapter, unsigned int flags)
 static inline void
 i2c_unlock_bus(struct i2c_adapter *adapter, unsigned int flags)
 {
-	adapter->unlock_bus(adapter, flags);
+	adapter->lock_ops->unlock_bus(adapter, flags);
 }
 
 static inline void
-- 
2.1.4

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* Re: [PATCH 2/2] i2c: move locking operations to their own struct
  2016-07-29  8:17   ` Peter Rosin
  (?)
@ 2016-08-23 21:16   ` Wolfram Sang
  2016-08-24  7:47       ` Peter Rosin
  -1 siblings, 1 reply; 11+ messages in thread
From: Wolfram Sang @ 2016-08-23 21:16 UTC (permalink / raw)
  To: Peter Rosin; +Cc: linux-kernel, linux-i2c

[-- Attachment #1: Type: text/plain, Size: 220 bytes --]

On Fri, Jul 29, 2016 at 10:17:57AM +0200, Peter Rosin wrote:
> This makes it trivial to constify them, so do that.
> 
> Signed-off-by: Peter Rosin <peda@axentia.se>

Looks good. Could you rebase to i2c/for-next?


[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 2/2] i2c: move locking operations to their own struct
  2016-08-23 21:16   ` Wolfram Sang
@ 2016-08-24  7:47       ` Peter Rosin
  0 siblings, 0 replies; 11+ messages in thread
From: Peter Rosin @ 2016-08-24  7:47 UTC (permalink / raw)
  To: Wolfram Sang; +Cc: linux-kernel, linux-i2c

On 2016-08-23 23:16, Wolfram Sang wrote:
> On Fri, Jul 29, 2016 at 10:17:57AM +0200, Peter Rosin wrote:
>> This makes it trivial to constify them, so do that.
>>
>> Signed-off-by: Peter Rosin <peda@axentia.se>
> 
> Looks good. Could you rebase to i2c/for-next?

Right, no problem!

Cheers,
Peter

The following changes since commit 00f0ea70d2b82b7d7afeb1bdedc9169eb8ea6675:

  eeprom: at24: check if the chip is functional in probe() (2016-08-22 08:19:58 +0200)

are available in the git repository at:

  https://github.com/peda-r/i2c-mux.git i2c-lock-op

for you to fetch changes up to 4b42b8c2e3233671e49deee71458edb6737a38bf:

  i2c: move locking operations to their own struct (2016-08-24 06:38:58 +0200)

----------------------------------------------------------------
Peter Rosin (2):
      i2c: add i2c_trylock_bus wrapper, use it
      i2c: move locking operations to their own struct

 drivers/i2c/i2c-core.c | 15 +++++++++------
 drivers/i2c/i2c-mux.c  | 29 ++++++++++++++++++-----------
 include/linux/i2c.h    | 37 +++++++++++++++++++++++++++++++------
 3 files changed, 58 insertions(+), 23 deletions(-)

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 2/2] i2c: move locking operations to their own struct
@ 2016-08-24  7:47       ` Peter Rosin
  0 siblings, 0 replies; 11+ messages in thread
From: Peter Rosin @ 2016-08-24  7:47 UTC (permalink / raw)
  To: Wolfram Sang; +Cc: linux-kernel, linux-i2c

On 2016-08-23 23:16, Wolfram Sang wrote:
> On Fri, Jul 29, 2016 at 10:17:57AM +0200, Peter Rosin wrote:
>> This makes it trivial to constify them, so do that.
>>
>> Signed-off-by: Peter Rosin <peda@axentia.se>
> 
> Looks good. Could you rebase to i2c/for-next?

Right, no problem!

Cheers,
Peter

The following changes since commit 00f0ea70d2b82b7d7afeb1bdedc9169eb8ea6675:

  eeprom: at24: check if the chip is functional in probe() (2016-08-22 08:19:58 +0200)

are available in the git repository at:

  https://github.com/peda-r/i2c-mux.git i2c-lock-op

for you to fetch changes up to 4b42b8c2e3233671e49deee71458edb6737a38bf:

  i2c: move locking operations to their own struct (2016-08-24 06:38:58 +0200)

----------------------------------------------------------------
Peter Rosin (2):
      i2c: add i2c_trylock_bus wrapper, use it
      i2c: move locking operations to their own struct

 drivers/i2c/i2c-core.c | 15 +++++++++------
 drivers/i2c/i2c-mux.c  | 29 ++++++++++++++++++-----------
 include/linux/i2c.h    | 37 +++++++++++++++++++++++++++++++------
 3 files changed, 58 insertions(+), 23 deletions(-)

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 1/2] i2c: add i2c_trylock_bus wrapper, use it
  2016-07-29  8:17   ` Peter Rosin
  (?)
@ 2016-08-25 16:04   ` Wolfram Sang
  -1 siblings, 0 replies; 11+ messages in thread
From: Wolfram Sang @ 2016-08-25 16:04 UTC (permalink / raw)
  To: Peter Rosin; +Cc: linux-kernel, linux-i2c

[-- Attachment #1: Type: text/plain, Size: 328 bytes --]

On Fri, Jul 29, 2016 at 10:17:56AM +0200, Peter Rosin wrote:
> This unifies usage with i2c_lock_bus and i2c_unlock_bus, and paves the
> way for the next patch which looks a bit saner with this preparatory
> work taken care of beforehand.
> 
> Signed-off-by: Peter Rosin <peda@axentia.se>

Applied to for-next, thanks!


[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 2/2] i2c: move locking operations to their own struct
  2016-07-29  8:17   ` Peter Rosin
  (?)
  (?)
@ 2016-08-25 16:05   ` Wolfram Sang
  -1 siblings, 0 replies; 11+ messages in thread
From: Wolfram Sang @ 2016-08-25 16:05 UTC (permalink / raw)
  To: Peter Rosin; +Cc: linux-kernel, linux-i2c

[-- Attachment #1: Type: text/plain, Size: 203 bytes --]

On Fri, Jul 29, 2016 at 10:17:57AM +0200, Peter Rosin wrote:
> This makes it trivial to constify them, so do that.
> 
> Signed-off-by: Peter Rosin <peda@axentia.se>

Applied to for-next, thanks!


[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2016-08-25 16:34 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-07-29  8:17 [PATCH 0/2] i2c: move adapter locking ops to struct, constify Peter Rosin
2016-07-29  8:17 ` Peter Rosin
2016-07-29  8:17 ` [PATCH 1/2] i2c: add i2c_trylock_bus wrapper, use it Peter Rosin
2016-07-29  8:17   ` Peter Rosin
2016-08-25 16:04   ` Wolfram Sang
2016-07-29  8:17 ` [PATCH 2/2] i2c: move locking operations to their own struct Peter Rosin
2016-07-29  8:17   ` Peter Rosin
2016-08-23 21:16   ` Wolfram Sang
2016-08-24  7:47     ` Peter Rosin
2016-08-24  7:47       ` Peter Rosin
2016-08-25 16:05   ` Wolfram Sang

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.