Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1237309 > unrolled thread
| Started by | jon@ringle.org |
|---|---|
| First post | 2015-10-01 13:50 +0200 |
| Last post | 2015-10-06 17:10 +0200 |
| Articles | 12 — 4 participants |
Back to article view | Back to linux.kernel
[PATCH net-next v2 1/2] regmap: Allow installing custom reg_update_bits function jon@ringle.org - 2015-10-01 13:50 +0200
Re: [PATCH net-next v2 2/2] net: Microchip encx24j600 driver David Miller <davem@davemloft.net> - 2015-10-05 12:40 +0200
Re: [PATCH net-next v2 2/2] net: Microchip encx24j600 driver David Miller <davem@davemloft.net> - 2015-10-05 12:50 +0200
Re: [PATCH net-next v2 2/2] net: Microchip encx24j600 driver David Miller <davem@davemloft.net> - 2015-10-05 12:50 +0200
Re: [PATCH net-next v2 1/2] regmap: Allow installing custom reg_update_bits function David Miller <davem@davemloft.net> - 2015-10-05 12:40 +0200
Re: [PATCH net-next v2 1/2] regmap: Allow installing custom reg_update_bits function Jon Ringle <jon@ringle.org> - 2015-10-05 14:00 +0200
Re: [PATCH net-next v2 1/2] regmap: Allow installing custom reg_update_bits function David Miller <davem@davemloft.net> - 2015-10-05 15:10 +0200
Re: [PATCH net-next v2 1/2] regmap: Allow installing custom reg_update_bits function Mark Brown <broonie@kernel.org> - 2015-10-05 16:30 +0200
Re: [PATCH net-next v2 1/2] regmap: Allow installing custom reg_update_bits function David Miller <davem@davemloft.net> - 2015-10-06 08:10 +0200
Re: [PATCH net-next v2 1/2] regmap: Allow installing custom reg_update_bits function Mark Brown <broonie@kernel.org> - 2015-10-06 12:00 +0200
Re: [PATCH net-next v2 1/2] regmap: Allow installing custom reg_update_bits function David Miller <davem@davemloft.net> - 2015-10-06 15:10 +0200
Re: [PATCH net-next v2 1/2] regmap: Allow installing custom reg_update_bits function Mark Brown <broonie@kernel.org> - 2015-10-06 17:10 +0200
| From | jon@ringle.org |
|---|---|
| Date | 2015-10-01 13:50 +0200 |
| Subject | [PATCH net-next v2 1/2] regmap: Allow installing custom reg_update_bits function |
| Message-ID | <qeKx4-2WG-11@gated-at.bofh.it> |
From: Jon Ringle <jringle@gridpoint.com>
This commit allows installing a custom reg_update_bits function for cases where
the hardware provides a mechanism to set or clear register bits without a
read/modify/write cycle. Such is the case with the Microchip ENCX24J600.
Signed-off-by: Jon Ringle <jringle@gridpoint.com>
---
drivers/base/regmap/internal.h | 3 +++
drivers/base/regmap/regmap.c | 25 +++++++++++++++++++++++++
include/linux/regmap.h | 4 ++++
3 files changed, 32 insertions(+)
diff --git a/drivers/base/regmap/internal.h b/drivers/base/regmap/internal.h
index cc55788..4036d7a 100644
--- a/drivers/base/regmap/internal.h
+++ b/drivers/base/regmap/internal.h
@@ -98,6 +98,9 @@ struct regmap {
int (*reg_read)(void *context, unsigned int reg, unsigned int *val);
int (*reg_write)(void *context, unsigned int reg, unsigned int val);
+ int (*reg_update_bits)(void *context, unsigned int reg,
+ unsigned int mask, unsigned int val,
+ bool *change, bool force_write);
bool defer_caching;
diff --git a/drivers/base/regmap/regmap.c b/drivers/base/regmap/regmap.c
index afaf562..70387c9 100644
--- a/drivers/base/regmap/regmap.c
+++ b/drivers/base/regmap/regmap.c
@@ -619,6 +619,7 @@ struct regmap *__regmap_init(struct device *dev,
goto skip_format_initialization;
} else {
map->reg_read = _regmap_bus_read;
+ map->reg_update_bits = bus->reg_update_bits;
}
reg_endian = regmap_get_reg_endian(bus, config);
@@ -2509,6 +2510,30 @@ static int _regmap_update_bits(struct regmap *map, unsigned int reg,
int ret;
unsigned int tmp, orig;
+ if (map->reg_update_bits) {
+ ret = map->reg_update_bits(map->bus_context, reg, mask, val,
+ change, force_write);
+ if (ret != 0)
+ return ret;
+
+ /* Fix up the cache by read/modify/write */
+ if (!map->cache_bypass && !map->defer_caching) {
+ ret = regcache_read(map, reg, &orig);
+ if (ret != 0)
+ return ret;
+
+ tmp = orig & ~mask;
+ tmp |= val & mask;
+
+ ret = regcache_write(map, reg, tmp);
+ if (ret != 0)
+ return ret;
+ if (map->cache_only)
+ map->cache_dirty = true;
+ }
+ return ret;
+ }
+
ret = _regmap_read(map, reg, &orig);
if (ret != 0)
return ret;
diff --git a/include/linux/regmap.h b/include/linux/regmap.h
index 8fc0bfd..4d3a3b1 100644
--- a/include/linux/regmap.h
+++ b/include/linux/regmap.h
@@ -296,6 +296,9 @@ typedef int (*regmap_hw_reg_read)(void *context, unsigned int reg,
unsigned int *val);
typedef int (*regmap_hw_reg_write)(void *context, unsigned int reg,
unsigned int val);
+typedef int (*regmap_hw_reg_update_bits)(void *context, unsigned int reg,
+ unsigned int mask, unsigned int val,
+ bool *change, bool force_write);
typedef struct regmap_async *(*regmap_hw_async_alloc)(void);
typedef void (*regmap_hw_free_context)(void *context);
@@ -335,6 +338,7 @@ struct regmap_bus {
regmap_hw_gather_write gather_write;
regmap_hw_async_write async_write;
regmap_hw_reg_write reg_write;
+ regmap_hw_reg_update_bits reg_update_bits;
regmap_hw_read read;
regmap_hw_reg_read reg_read;
regmap_hw_free_context free_context;
--
2.4.1
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [next] | [standalone]
| From | David Miller <davem@davemloft.net> |
|---|---|
| Date | 2015-10-05 12:40 +0200 |
| Subject | Re: [PATCH net-next v2 2/2] net: Microchip encx24j600 driver |
| Message-ID | <qgblv-4JR-13@gated-at.bofh.it> |
| In reply to | #1237309 |
From: jon@ringle.org Date: Thu, 1 Oct 2015 07:43:21 -0400 > From: Jon Ringle <jringle@gridpoint.com> > > This ethernet driver supports the Micorchip enc424j600/626j600 Ethernet > controller over a SPI bus interface. This driver makes use of the regmap API to > optimize access to registers by caching registers where possible. > > Datasheet: > http://ww1.microchip.com/downloads/en/DeviceDoc/39935b.pdf > > Signed-off-by: Jon Ringle <jringle@gridpoint.com> Applied. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | David Miller <davem@davemloft.net> |
|---|---|
| Date | 2015-10-05 12:50 +0200 |
| Subject | Re: [PATCH net-next v2 2/2] net: Microchip encx24j600 driver |
| Message-ID | <qgbvb-4Vf-1@gated-at.bofh.it> |
| In reply to | #1239430 |
RnJvbTogRGF2aWQgTWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQubmV0Pg0KRGF0ZTogTW9uLCAwNSBP Y3QgMjAxNSAwMzo1NDo1NSAtMDcwMCAoUERUKQ0KDQo+IEZyb206IGpvbkByaW5nbGUub3JnDQo+ IERhdGU6IFRodSwgIDEgT2N0IDIwMTUgMDc6NDM6MjEgLTA0MDANCj4gDQo+PiBGcm9tOiBKb24g UmluZ2xlIDxqcmluZ2xlQGdyaWRwb2ludC5jb20+DQo+PiANCj4+IFRoaXMgZXRoZXJuZXQgZHJp dmVyIHN1cHBvcnRzIHRoZSBNaWNvcmNoaXAgZW5jNDI0ajYwMC82MjZqNjAwIEV0aGVybmV0DQo+ PiBjb250cm9sbGVyIG92ZXIgYSBTUEkgYnVzIGludGVyZmFjZS4gVGhpcyBkcml2ZXIgbWFrZXMg dXNlIG9mIHRoZSByZWdtYXAgQVBJIHRvDQo+PiBvcHRpbWl6ZSBhY2Nlc3MgdG8gcmVnaXN0ZXJz IGJ5IGNhY2hpbmcgcmVnaXN0ZXJzIHdoZXJlIHBvc3NpYmxlLg0KPj4gDQo+PiBEYXRhc2hlZXQ6 DQo+PiBodHRwOi8vd3cxLm1pY3JvY2hpcC5jb20vZG93bmxvYWRzL2VuL0RldmljZURvYy8zOTkz NWIucGRmDQo+PiANCj4+IFNpZ25lZC1vZmYtYnk6IEpvbiBSaW5nbGUgPGpyaW5nbGVAZ3JpZHBv aW50LmNvbT4NCj4gDQo+IEFwcGxpZWQuDQoNCkFjdHVhbGx5LCBJIGhhZCB0byByZXZlcnQgYm90 aCBwYXRjaGVzLiAgUGxlYXNlIGxvb2sgYXQgdGhlIGNvbXBpbGVyDQp3YXJuaW5ncyB5b3VyIGNv ZGUgZ2VuZXJhdGVzOg0KDQpkcml2ZXJzL21mZC93bTUxMTAtdGFibGVzLmM6IEluIGZ1bmN0aW9u IKF3bTUxMTBfcGF0Y2iiOg0KZHJpdmVycy9tZmQvd201MTEwLXRhYmxlcy5jOjI4MToxMTogd2Fy bmluZzogcGFzc2luZyBhcmd1bWVudCAyIG9mIKFyZWdtYXBfcmVnaXN0ZXJfcGF0Y2iiIGZyb20g aW5jb21wYXRpYmxlIHBvaW50ZXIgdHlwZSBbZW5hYmxlZCBieSBkZWZhdWx0XQ0KSW4gZmlsZSBp bmNsdWRlZCBmcm9tIGluY2x1ZGUvbGludXgvbWZkL2FyaXpvbmEvY29yZS5oOjE3OjAsDQogICAg ICAgICAgICAgICAgIGZyb20gZHJpdmVycy9tZmQvd201MTEwLXRhYmxlcy5jOjE1Og0KaW5jbHVk ZS9saW51eC9yZWdtYXAuaDo3Mjc6NTogbm90ZTogZXhwZWN0ZWQgoWNvbnN0IHN0cnVjdCByZWdf c2VxdWVuY2UgKqIgYnV0IGFyZ3VtZW50IGlzIG9mIHR5cGUgoWNvbnN0IHN0cnVjdCByZWdfZGVm YXVsdCAqog0KZHJpdmVycy9tZmQvd204OTk4LXRhYmxlcy5jOiBJbiBmdW5jdGlvbiChd204OTk4 X3BhdGNoojoNCmRyaXZlcnMvbWZkL3dtODk5OC10YWJsZXMuYzo1MDoxMDogd2FybmluZzogcGFz c2luZyBhcmd1bWVudCAyIG9mIKFyZWdtYXBfcmVnaXN0ZXJfcGF0Y2iiIGZyb20gaW5jb21wYXRp YmxlIHBvaW50ZXIgdHlwZSBbZW5hYmxlZCBieSBkZWZhdWx0XQ0KSW4gZmlsZSBpbmNsdWRlZCBm cm9tIGluY2x1ZGUvbGludXgvbWZkL2FyaXpvbmEvY29yZS5oOjE3OjAsDQogICAgICAgICAgICAg ICAgIGZyb20gZHJpdmVycy9tZmQvd204OTk4LXRhYmxlcy5jOjE1Og0KaW5jbHVkZS9saW51eC9y ZWdtYXAuaDo3Mjc6NTogbm90ZTogZXhwZWN0ZWQgoWNvbnN0IHN0cnVjdCByZWdfc2VxdWVuY2Ug KqIgYnV0IGFyZ3VtZW50IGlzIG9mIHR5cGUgoWNvbnN0IHN0cnVjdCByZWdfZGVmYXVsdCAqog0K -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | David Miller <davem@davemloft.net> |
|---|---|
| Date | 2015-10-05 12:50 +0200 |
| Subject | Re: [PATCH net-next v2 2/2] net: Microchip encx24j600 driver |
| Message-ID | <qgbvb-4Vf-11@gated-at.bofh.it> |
| In reply to | #1239438 |
From: David Miller <davem@davemloft.net> Date: Mon, 05 Oct 2015 04:00:42 -0700 (PDT) > From: David Miller <davem@davemloft.net> > Date: Mon, 05 Oct 2015 03:54:55 -0700 (PDT) > >> From: jon@ringle.org >> Date: Thu, 1 Oct 2015 07:43:21 -0400 >> >>> From: Jon Ringle <jringle@gridpoint.com> >>> >>> This ethernet driver supports the Micorchip enc424j600/626j600 Ethernet >>> controller over a SPI bus interface. This driver makes use of the regmap API to >>> optimize access to registers by caching registers where possible. >>> >>> Datasheet: >>> http://ww1.microchip.com/downloads/en/DeviceDoc/39935b.pdf >>> >>> Signed-off-by: Jon Ringle <jringle@gridpoint.com> >> >> Applied. > > Actually, I had to revert both patches. Please look at the compiler > warnings your code generates: Ignore me, that stuff isn't generated by your code, sorry. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | David Miller <davem@davemloft.net> |
|---|---|
| Date | 2015-10-05 12:40 +0200 |
| Subject | Re: [PATCH net-next v2 1/2] regmap: Allow installing custom reg_update_bits function |
| Message-ID | <qgblv-4JR-15@gated-at.bofh.it> |
| In reply to | #1237309 |
From: jon@ringle.org Date: Thu, 1 Oct 2015 07:43:20 -0400 > From: Jon Ringle <jringle@gridpoint.com> > > This commit allows installing a custom reg_update_bits function for cases where > the hardware provides a mechanism to set or clear register bits without a > read/modify/write cycle. Such is the case with the Microchip ENCX24J600. > > Signed-off-by: Jon Ringle <jringle@gridpoint.com> Applied. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Jon Ringle <jon@ringle.org> |
|---|---|
| Date | 2015-10-05 14:00 +0200 |
| Subject | Re: [PATCH net-next v2 1/2] regmap: Allow installing custom reg_update_bits function |
| Message-ID | <qgcAW-6rH-9@gated-at.bofh.it> |
| In reply to | #1239432 |
On Mon, 5 Oct 2015, David Miller wrote: > From: jon@ringle.org > Date: Thu, 1 Oct 2015 07:43:20 -0400 > > > From: Jon Ringle <jringle@gridpoint.com> > > > > This commit allows installing a custom reg_update_bits function for cases where > > the hardware provides a mechanism to set or clear register bits without a > > read/modify/write cycle. Such is the case with the Microchip ENCX24J600. > > > > Signed-off-by: Jon Ringle <jringle@gridpoint.com> > > Applied. Thanks David. However, I've sent a v3 patch, and also expecting feedback from Mark Brown on the regmap portion of it. -Jon -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | David Miller <davem@davemloft.net> |
|---|---|
| Date | 2015-10-05 15:10 +0200 |
| Subject | Re: [PATCH net-next v2 1/2] regmap: Allow installing custom reg_update_bits function |
| Message-ID | <qgdGG-8dn-25@gated-at.bofh.it> |
| In reply to | #1239490 |
From: Jon Ringle <jon@ringle.org> Date: Mon, 5 Oct 2015 07:57:00 -0400 (EDT) > > > On Mon, 5 Oct 2015, David Miller wrote: > >> From: jon@ringle.org >> Date: Thu, 1 Oct 2015 07:43:20 -0400 >> >> > From: Jon Ringle <jringle@gridpoint.com> >> > >> > This commit allows installing a custom reg_update_bits function for cases where >> > the hardware provides a mechanism to set or clear register bits without a >> > read/modify/write cycle. Such is the case with the Microchip ENCX24J600. >> > >> > Signed-off-by: Jon Ringle <jringle@gridpoint.com> >> >> Applied. > > Thanks David. However, I've sent a v3 patch, and also expecting feedback > from Mark Brown on the regmap portion of it. Please send me relative changes from v2 to v3, thanks. Sorry about that. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Mark Brown <broonie@kernel.org> |
|---|---|
| Date | 2015-10-05 16:30 +0200 |
| Subject | Re: [PATCH net-next v2 1/2] regmap: Allow installing custom reg_update_bits function |
| Message-ID | <qgeW6-1th-19@gated-at.bofh.it> |
| In reply to | #1239534 |
[Multipart message — attachments visible in raw view] — view raw
On Mon, Oct 05, 2015 at 06:16:09AM -0700, David Miller wrote: > >> Applied. > > Thanks David. However, I've sent a v3 patch, and also expecting feedback > > from Mark Brown on the regmap portion of it. > Please send me relative changes from v2 to v3, thanks. > Sorry about that. Ugh, this is a mess :( Can you please drop this patch instead?
[toc] | [prev] | [next] | [standalone]
| From | David Miller <davem@davemloft.net> |
|---|---|
| Date | 2015-10-06 08:10 +0200 |
| Subject | Re: [PATCH net-next v2 1/2] regmap: Allow installing custom reg_update_bits function |
| Message-ID | <qgtBM-5XN-5@gated-at.bofh.it> |
| In reply to | #1239597 |
From: Mark Brown <broonie@kernel.org> Date: Mon, 5 Oct 2015 15:25:31 +0100 > On Mon, Oct 05, 2015 at 06:16:09AM -0700, David Miller wrote: > >> >> Applied. > >> > Thanks David. However, I've sent a v3 patch, and also expecting feedback >> > from Mark Brown on the regmap portion of it. > >> Please send me relative changes from v2 to v3, thanks. > >> Sorry about that. > > Ugh, this is a mess :( Can you please drop this patch instead? I can't just "drop" changes. Once a commit hits my tree it is part of the permanent record. The easiest thing to do is to send a relative fix, and that's why I have asked for exactly that. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Mark Brown <broonie@kernel.org> |
|---|---|
| Date | 2015-10-06 12:00 +0200 |
| Subject | Re: [PATCH net-next v2 1/2] regmap: Allow installing custom reg_update_bits function |
| Message-ID | <qgxcm-2zE-11@gated-at.bofh.it> |
| In reply to | #1240160 |
[Multipart message — attachments visible in raw view] — view raw
On Mon, Oct 05, 2015 at 11:21:48PM -0700, David Miller wrote: > > Ugh, this is a mess :( Can you please drop this patch instead? > I can't just "drop" changes. Once a commit hits my tree it is part > of the permanent record. I was expecting a revert if you want to keep the branch fast forward only. > The easiest thing to do is to send a relative fix, and that's why > I have asked for exactly that. This isn't very good for reviewing the API change, and of course I'd also expect this change to be in the regmap tree so we can work on regmap without collisions, I obviously can't just merge in net-next. I was thinking about making some further changes on top of this and it *is* fiddling about in the core. Jon, please send me a patch against the regmap tree for review while we work out how to sort out this mess.
[toc] | [prev] | [next] | [standalone]
| From | David Miller <davem@davemloft.net> |
|---|---|
| Date | 2015-10-06 15:10 +0200 |
| Subject | Re: [PATCH net-next v2 1/2] regmap: Allow installing custom reg_update_bits function |
| Message-ID | <qgAad-72b-15@gated-at.bofh.it> |
| In reply to | #1240331 |
From: Mark Brown <broonie@kernel.org> Date: Tue, 6 Oct 2015 10:57:15 +0100 > I obviously can't just merge in net-next. People do this all the time, when needed. My history never changes, and the networking tree is one of the first trees pulled into linux-next, so this is always safe. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Mark Brown <broonie@kernel.org> |
|---|---|
| Date | 2015-10-06 17:10 +0200 |
| Subject | Re: [PATCH net-next v2 1/2] regmap: Allow installing custom reg_update_bits function |
| Message-ID | <qgC2m-1gz-33@gated-at.bofh.it> |
| In reply to | #1240424 |
[Multipart message — attachments visible in raw view] — view raw
On Tue, Oct 06, 2015 at 06:22:08AM -0700, David Miller wrote: > Date: Tue, 6 Oct 2015 10:57:15 +0100 > > I obviously can't just merge in net-next. > People do this all the time, when needed. My history never changes, > and the networking tree is one of the first trees pulled into > linux-next, so this is always safe. Which would then make working with my tree annoying (I get net stuff showing up in my diffs and logs) and gets in the way for sending pull requests before Linus starts merging stuff which I tend to do.
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web