Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1595438 > unrolled thread
| Started by | Dmitry Torokhov <dmitry.torokhov@gmail.com> |
|---|---|
| First post | 2017-03-08 19:50 +0100 |
| Last post | 2017-03-10 00:20 +0100 |
| Articles | 5 — 2 participants |
Back to article view | Back to linux.kernel
[PATCH 1/2] i2c: do not leave semaphore armed when copying properties fails Dmitry Torokhov <dmitry.torokhov@gmail.com> - 2017-03-08 19:50 +0100
[PATCH 2/2] i2c: allow attaching IRQ resources to i2c_board_info Dmitry Torokhov <dmitry.torokhov@gmail.com> - 2017-03-08 19:50 +0100
Re: [PATCH 1/2] i2c: do not leave semaphore armed when copying properties fails Wolfram Sang <wsa@the-dreams.de> - 2017-03-09 15:50 +0100
Re: [PATCH 1/2] i2c: do not leave semaphore armed when copying properties fails Dmitry Torokhov <dmitry.torokhov@gmail.com> - 2017-03-09 18:50 +0100
Re: [PATCH 1/2] i2c: do not leave semaphore armed when copying properties fails Wolfram Sang <wsa@the-dreams.de> - 2017-03-10 00:20 +0100
| From | Dmitry Torokhov <dmitry.torokhov@gmail.com> |
|---|---|
| Date | 2017-03-08 19:50 +0100 |
| Subject | [PATCH 1/2] i2c: do not leave semaphore armed when copying properties fails |
| Message-ID | <tiOOS-1ZF-1@gated-at.bofh.it> |
We should not leave i2c_register_board_info() early, without unlocking the
__i2c_board_lock.
Fixes: b0c1e95ab44f ("i2c: copy device properties when using ...")
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
---
drivers/i2c/i2c-boardinfo.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/drivers/i2c/i2c-boardinfo.c b/drivers/i2c/i2c-boardinfo.c
index 5b8f6c3a6950..0e285c68b2ff 100644
--- a/drivers/i2c/i2c-boardinfo.c
+++ b/drivers/i2c/i2c-boardinfo.c
@@ -84,8 +84,10 @@ int i2c_register_board_info(int busnum, struct i2c_board_info const *info, unsig
if (info->properties) {
devinfo->board_info.properties =
property_entries_dup(info->properties);
- if (IS_ERR(devinfo->board_info.properties))
- return PTR_ERR(devinfo->board_info.properties);
+ if (IS_ERR(devinfo->board_info.properties)) {
+ status = PTR_ERR(devinfo->board_info.properties);
+ break;
+ }
}
list_add_tail(&devinfo->list, &__i2c_board_list);
--
2.12.0.246.ga2ecc84866-goog
[toc] | [next] | [standalone]
| From | Dmitry Torokhov <dmitry.torokhov@gmail.com> |
|---|---|
| Date | 2017-03-08 19:50 +0100 |
| Subject | [PATCH 2/2] i2c: allow attaching IRQ resources to i2c_board_info |
| Message-ID | <tiOOS-1ZF-9@gated-at.bofh.it> |
| In reply to | #1595438 |
Simple integer for interrupt number is not expressive enough, as it does
not convey interrupt trigger type that should be used. Let's allow
attaching array of resources to the board info and have i2c core parse
first IRQ resource and set up interrupt trigger as needed.
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
---
drivers/i2c/i2c-boardinfo.c | 12 ++++++++++++
drivers/i2c/i2c-core.c | 30 ++++++++++++++++++++++++++++++
include/linux/i2c.h | 4 ++++
3 files changed, 46 insertions(+)
diff --git a/drivers/i2c/i2c-boardinfo.c b/drivers/i2c/i2c-boardinfo.c
index 0e285c68b2ff..31186ead5a40 100644
--- a/drivers/i2c/i2c-boardinfo.c
+++ b/drivers/i2c/i2c-boardinfo.c
@@ -90,6 +90,18 @@ int i2c_register_board_info(int busnum, struct i2c_board_info const *info, unsig
}
}
+ if (info->resources) {
+ devinfo->board_info.resources =
+ kmemdup(info->resources,
+ info->num_resources *
+ sizeof(*info->resources),
+ GFP_KERNEL);
+ if (!devinfo->board_info.resources) {
+ status = -ENOMEM;
+ break;
+ }
+ }
+
list_add_tail(&devinfo->list, &__i2c_board_list);
}
diff --git a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c
index 3897e78e5e9a..34a5115484dd 100644
--- a/drivers/i2c/i2c-core.c
+++ b/drivers/i2c/i2c-core.c
@@ -1277,6 +1277,32 @@ static void i2c_dev_set_name(struct i2c_adapter *adap,
i2c_encode_flags_to_addr(client));
}
+static int i2c_dev_irq_from_resources(const struct resource *resources,
+ unsigned int num_resources)
+{
+ struct irq_data *irqd;
+ int i;
+
+ for (i = 0; i < num_resources; i++) {
+ const struct resource *r = &resources[i];
+
+ if (resource_type(r) != IORESOURCE_IRQ)
+ continue;
+
+ if (r->flags & IORESOURCE_BITS) {
+ irqd = irq_get_irq_data(r->start);
+ if (!irqd)
+ break;
+
+ irqd_set_trigger_type(irqd, r->flags & IORESOURCE_BITS);
+ }
+
+ return r->start;
+ }
+
+ return 0;
+}
+
/**
* i2c_new_device - instantiate an i2c device
* @adap: the adapter managing the device
@@ -1312,7 +1338,11 @@ i2c_new_device(struct i2c_adapter *adap, struct i2c_board_info const *info)
client->flags = info->flags;
client->addr = info->addr;
+
client->irq = info->irq;
+ if (!client->irq)
+ client->irq = i2c_dev_irq_from_resources(info->resources,
+ info->num_resources);
strlcpy(client->name, info->type, sizeof(client->name));
diff --git a/include/linux/i2c.h b/include/linux/i2c.h
index ec8f866a5656..2cc3988d127b 100644
--- a/include/linux/i2c.h
+++ b/include/linux/i2c.h
@@ -312,6 +312,8 @@ static inline int i2c_slave_event(struct i2c_client *client,
* @of_node: pointer to OpenFirmware device node
* @fwnode: device node supplied by the platform firmware
* @properties: additional device properties for the device
+ * @resources: resources associated with the device
+ * @num_resources: number of resources in the @resources array
* @irq: stored in i2c_client.irq
*
* I2C doesn't actually support hardware probing, although controllers and
@@ -334,6 +336,8 @@ struct i2c_board_info {
struct device_node *of_node;
struct fwnode_handle *fwnode;
const struct property_entry *properties;
+ const struct resource *resources;
+ unsigned int num_resources;
int irq;
};
--
2.12.0.246.ga2ecc84866-goog
[toc] | [prev] | [next] | [standalone]
| From | Wolfram Sang <wsa@the-dreams.de> |
|---|---|
| Date | 2017-03-09 15:50 +0100 |
| Subject | Re: [PATCH 1/2] i2c: do not leave semaphore armed when copying properties fails |
| Message-ID | <tj7yb-6vj-37@gated-at.bofh.it> |
| In reply to | #1595438 |
[Multipart message — attachments visible in raw view] — view raw
On Wed, Mar 08, 2017 at 10:41:01AM -0800, Dmitry Torokhov wrote:
> We should not leave i2c_register_board_info() early, without unlocking the
> __i2c_board_lock.
>
> Fixes: b0c1e95ab44f ("i2c: copy device properties when using ...")
> Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
So, it seems that patches 1+2 are related. Because I'd like to have
patch 2 sitting in for-next for a whole cycle for sure, my plan is to
revert the faulty b0c1e95ab44f from for-current and apply the fixed
version (b0c1e95ab44f + this patch squashed) to for-next as well.
Is that okay with you?
[toc] | [prev] | [next] | [standalone]
| From | Dmitry Torokhov <dmitry.torokhov@gmail.com> |
|---|---|
| Date | 2017-03-09 18:50 +0100 |
| Subject | Re: [PATCH 1/2] i2c: do not leave semaphore armed when copying properties fails |
| Message-ID | <tjamm-8rP-25@gated-at.bofh.it> |
| In reply to | #1596122 |
Hi Wolfram,
> On Wed, Mar 08, 2017 at 10:41:01AM -0800, Dmitry Torokhov wrote:
> > We should not leave i2c_register_board_info() early, without unlocking the
> > __i2c_board_lock.
> >
> > Fixes: b0c1e95ab44f ("i2c: copy device properties when using ...")
> > Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
>
> So, it seems that patches 1+2 are related. Because I'd like to have
> patch 2 sitting in for-next for a whole cycle for sure, my plan is to
> revert the faulty b0c1e95ab44f from for-current and apply the fixed
> version (b0c1e95ab44f + this patch squashed) to for-next as well.
>
> Is that okay with you?
I am perfectly fine with reverting b0c1e95ab44f from for-current,
however I wonder if we could have an immutable branch off 4.11-rc2 (or
-rc1) containing fixed version of patch copying property + patch adding
resources + patch exporting i2c_client_type (I will CC you on that
shortly), which we could share between your tree and mine so I can get
in changes to a few drivers on my side (eeti_ts, atmel, etc).
If you are OK with this I can prepare said branch.
Thanks!
--
Dmitry
[toc] | [prev] | [next] | [standalone]
| From | Wolfram Sang <wsa@the-dreams.de> |
|---|---|
| Date | 2017-03-10 00:20 +0100 |
| Subject | Re: [PATCH 1/2] i2c: do not leave semaphore armed when copying properties fails |
| Message-ID | <tjfvH-3x7-3@gated-at.bofh.it> |
| In reply to | #1596254 |
[Multipart message — attachments visible in raw view] — view raw
> I am perfectly fine with reverting b0c1e95ab44f from for-current, > however I wonder if we could have an immutable branch off 4.11-rc2 (or Yes, sure. Please prepare a branch and once I reviewed all patches touching i2c core, we can (from my side at least) declare it immutable and I will pull it into i2c. I'll try to review the resources patch this weekend.
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web