* [RFC PATCH 0/5] regmap: Add Parity bit Calculation to regmaps
@ 2021-12-17 22:40 linuxkernel
2021-12-17 22:41 ` [RFC PATCH 1/5] " linuxkernel
` (4 more replies)
0 siblings, 5 replies; 7+ messages in thread
From: linuxkernel @ 2021-12-17 22:40 UTC (permalink / raw)
To: linux-kernel; +Cc: broonie
From: Christopher Tyerman <c.tyerman@firebladeautomationsystems.co.uk>
this patch set adds parity bit calculation to regmaps
this allow support for devices that require parity bits in their
communications.
e.g. the texas instruments TPS92518-Q1 which requires a parity bit in the
7th bit of a 16 bit spi frame
or the TPS92518-Q1 which requires a parity bit in the 1st bit of a 16 bit
spi frame
parity aimed to work devices where parity in reg block
e.g. TPS65311-Q1 and TPS92518-Q1
TPS65311-Q1 frame format [PWRRRRRRDDDDDDDD]
TPS92518-Q1 frame format [WRRRRRPDDDDDDDDD]
P - parity bit, W - Read/Write bit, R - register, D -register data
TPS65311-Q1 parity mask 0x8000 (1000000000000000)
TPS92518-Q1 parity mask 0x0200 (0000001000000000)
calculates parity bit based up parity function defined by
regmap_config->parity_calc
regmap_config->parity_calc defaults to regmap_parity_calc_even()
adds alternate parity function regmap_parity_calc_odd()
calculates parity bit for writes if regmap_config->parity_write_mask is > 0
calculates parity bit for reads if regmap_config->parity_read_mask is > 0
parity is not calculated when bus implements reg_update_bits()
Altered the regmap_format_X_X_write functions to account for padding bits
allowing masks to write to either end of register address for formatted
writes
Altered formatted_write to apply write and parity masks
Added parsers for 9 bit data format which are written by formatted write
Christopher Tyerman (5):
Add Parity bit Calculation to regmaps
Altered regmap_X_X_write functions to account for padding bits
Added setting of writemap to formatted write
Add Parity Calculation to formatted write
Add parser for X_9 formats
drivers/base/regmap/internal.h | 6 +
drivers/base/regmap/regmap.c | 250 +++++++++++++++++++++++++++++++--
include/linux/regmap.h | 32 +++++
3 files changed, 280 insertions(+), 8 deletions(-)
base-commit: 02d6fdecb9c38de19065f6bed8d5214556fd061d
--
2.25.1
^ permalink raw reply [flat|nested] 7+ messages in thread
* [RFC PATCH 1/5] regmap: Add Parity bit Calculation to regmaps
2021-12-17 22:40 [RFC PATCH 0/5] regmap: Add Parity bit Calculation to regmaps linuxkernel
@ 2021-12-17 22:41 ` linuxkernel
2021-12-20 14:05 ` Mark Brown
2021-12-17 22:41 ` [RFC PATCH 2/5] regmap: Altered regmap_X_X_write functions to account for padding bits linuxkernel
` (3 subsequent siblings)
4 siblings, 1 reply; 7+ messages in thread
From: linuxkernel @ 2021-12-17 22:41 UTC (permalink / raw)
To: linux-kernel; +Cc: broonie
From: Christopher Tyerman <c.tyerman@firebladeautomationsystems.co.uk>
regmap.h
Added parity_read_mask to regmap_config
Added parity_write_mask to regmap_config
Added (*parity_calc)() to regmap_config
Added regmap_parity_calc_even() Added regmap_parity_calc_odd()
internal.h
Added parity_read_mask to regmap
Added parity_write_mask to regmap
Added (*parity_calc) to regmap
regmap.c
Altered _regmap_raw_write_impl() to calculate parity
Altered _regmap_raw_read() to calculate parity
Added regmap_set_work_buf_parity_mask()
Added regmap_parity_calc_even()
Added regmap_parity_calc_odd()
Added parity_even()
Added parity16_even(u16 v)
Added parity32_even(u32 v)
Added parity64_even(u64 v)
Signed-off-by: Christopher Tyerman <c.tyerman@firebladeautomationsystems.co.uk>
---
drivers/base/regmap/internal.h | 6 ++
drivers/base/regmap/regmap.c | 168 ++++++++++++++++++++++++++++++++-
include/linux/regmap.h | 32 +++++++
3 files changed, 204 insertions(+), 2 deletions(-)
diff --git a/drivers/base/regmap/internal.h b/drivers/base/regmap/internal.h
index b1905916f7af..78df50694cf4 100644
--- a/drivers/base/regmap/internal.h
+++ b/drivers/base/regmap/internal.h
@@ -168,6 +168,12 @@ struct regmap {
/* if set, the regmap core can sleep */
bool can_sleep;
+
+ unsigned long parity_write_mask;
+ unsigned long parity_read_mask;
+
+ bool (*parity_calc)(unsigned long rwmask, unsigned int reg,
+ const void *val, size_t val_len);
};
struct regcache_ops {
diff --git a/drivers/base/regmap/regmap.c b/drivers/base/regmap/regmap.c
index 2d74f9f82aa9..05c104659381 100644
--- a/drivers/base/regmap/regmap.c
+++ b/drivers/base/regmap/regmap.c
@@ -57,6 +57,13 @@ static int _regmap_bus_reg_write(void *context, unsigned int reg,
static int _regmap_bus_raw_write(void *context, unsigned int reg,
unsigned int val);
+static bool parity_even(uint v);
+
+static bool parity8_even(u8 v);
+static bool parity16_even(u16 v);
+static bool parity32_even(u32 v);
+static bool parity64_even(u64 v);
+
bool regmap_reg_in_ranges(unsigned int reg,
const struct regmap_range *ranges,
unsigned int nranges)
@@ -892,6 +899,14 @@ struct regmap *__regmap_init(struct device *dev,
map->reg_update_bits = bus->reg_update_bits;
}
+ map->parity_write_mask = config->parity_write_mask;
+ map->parity_read_mask = config->parity_read_mask;
+
+ if (config->parity_calc)
+ map->parity_calc = config->parity_calc;
+ else
+ map->parity_calc = regmap_parity_calc_even;
+
reg_endian = regmap_get_reg_endian(bus, config);
val_endian = regmap_get_val_endian(dev, bus, config);
@@ -1655,6 +1670,31 @@ static void regmap_set_work_buf_flag_mask(struct regmap *map, int max_bytes,
buf[i] |= (mask >> (8 * i)) & 0xff;
}
+static void regmap_set_work_buf_parity_mask(struct regmap *map, int max_bytes,
+ unsigned long mask, unsigned long rwmask,
+ unsigned int reg, const void *val, size_t val_len)
+{
+
+ bool paritybit;
+ u8 *buf;
+ int i;
+
+ if (!mask || !map->work_buf)
+ return;
+
+ paritybit = map->parity_calc(rwmask, reg, val, val_len);
+
+
+ if (paritybit) {
+ buf = map->work_buf;
+
+ for (i = 0; i < max_bytes; i++)
+ buf[i] |= (mask >> (8 * i)) & 0xff;
+ }
+}
+
+
+
static int _regmap_raw_write_impl(struct regmap *map, unsigned int reg,
const void *val, size_t val_len, bool noinc)
{
@@ -1736,7 +1776,12 @@ static int _regmap_raw_write_impl(struct regmap *map, unsigned int reg,
map->format.format_reg(map->work_buf, reg, map->reg_shift);
regmap_set_work_buf_flag_mask(map, map->format.reg_bytes,
- map->write_flag_mask);
+ map->write_flag_mask);
+
+
+ regmap_set_work_buf_parity_mask(map, map->format.reg_bytes,
+ map->parity_write_mask, map->write_flag_mask, reg, val, val_len);
+
/*
* Essentially all I/O mechanisms will be faster with a single
@@ -1748,6 +1793,9 @@ static int _regmap_raw_write_impl(struct regmap *map, unsigned int reg,
val = work_val;
}
+
+
+
if (map->async && map->bus->async_write) {
struct regmap_async *async;
@@ -2674,7 +2722,12 @@ static int _regmap_raw_read(struct regmap *map, unsigned int reg, void *val,
map->format.format_reg(map->work_buf, reg, map->reg_shift);
regmap_set_work_buf_flag_mask(map, map->format.reg_bytes,
- map->read_flag_mask);
+ map->read_flag_mask);
+
+ regmap_set_work_buf_parity_mask(map, map->format.reg_bytes,
+ map->parity_read_mask, map->read_flag_mask, reg,
+ val, val_len);
+
trace_regmap_hw_read_start(map, reg, val_len / map->format.val_bytes);
ret = map->bus->read(map->bus_context, map->work_buf,
@@ -3340,3 +3393,114 @@ static int __init regmap_initcall(void)
return 0;
}
postcore_initcall(regmap_initcall);
+
+
+/**
+ * regmap_parity_calc_even() - calculates Value of parity bit for even parity
+ *
+ * @rwmask: value of the read/write mask
+ * @reg: value of register
+ * @val: pointer to value of data
+ * @val_len: size of val
+ *
+ * Calculate the value of the parity bit for even parity
+ */
+bool regmap_parity_calc_even(unsigned long rwmask, unsigned int reg,
+ const void *val, size_t val_len)
+{
+ bool paritybuf = 0;
+ uint count = 0;
+
+ while (count < val_len) {
+ if (val_len - count >= 8) {
+ paritybuf ^= parity64_even(*(u64 *)val+count);
+ count += 8;
+ } else if (val_len - count >= 4) {
+ paritybuf ^= parity32_even(*(u32 *)val+count);
+ count += 4;
+ } else if (val_len - count >= 2) {
+ paritybuf ^= parity16_even(*(u16 *)val+count);
+ count += 2;
+ } else if (val_len - count >= 1) {
+ paritybuf ^= parity8_even(*(u8 *)val+count);
+ count += 1;
+ }
+ }
+
+ return (parity_even(rwmask) ^ parity_even(reg) ^ paritybuf);
+}
+EXPORT_SYMBOL_GPL(regmap_parity_calc_even);
+
+/**
+ * regmap_parity_calc_odd() - calculates Value of parity bit for odd parity
+ *
+ * @rwmask: value of the read/write mask
+ * @reg: value of register
+ * @val: pointer to value of data
+ * @val_len: size of val
+ *
+ * Calculate the value of the parity bit for odd parity
+ */
+
+bool regmap_parity_calc_odd(unsigned long rwmask, unsigned int reg,
+ const void *val, size_t val_len)
+{
+ return !(regmap_parity_calc_even(rwmask, reg, val, val_len));
+
+
+}
+EXPORT_SYMBOL_GPL(regmap_parity_calc_odd);
+
+static bool parity_even(uint v)
+{
+ switch (sizeof(v)) {
+ case 1:
+ return parity8_even((u8)v);
+ case 2:
+ return parity16_even((u16)v);
+ case 4:
+ return parity32_even((u32)v);
+ case 8:
+ default:
+ return parity64_even((u64)v);
+
+ }
+}
+static bool parity8_even(u8 v)
+{
+ v ^= v >> 4;
+ v ^= v >> 2;
+ v ^= v >> 1;
+ return v & 1;
+}
+
+
+static bool parity16_even(u16 v)
+{
+ v ^= v >> 8;
+ v ^= v >> 4;
+ v ^= v >> 2;
+ v ^= v >> 1;
+ return v & 1;
+}
+
+static bool parity32_even(u32 v)
+{
+ v ^= v >> 16;
+ v ^= v >> 8;
+ v ^= v >> 4;
+ v ^= v >> 2;
+ v ^= v >> 1;
+ return v & 1;
+}
+
+static bool parity64_even(u64 v)
+{
+ v ^= v >> 32;
+ v ^= v >> 16;
+ v ^= v >> 8;
+ v ^= v >> 4;
+ v ^= v >> 2;
+ v ^= v >> 1;
+ return v & 1;
+}
diff --git a/include/linux/regmap.h b/include/linux/regmap.h
index 22652e5fbc38..511fc9228e1d 100644
--- a/include/linux/regmap.h
+++ b/include/linux/regmap.h
@@ -354,6 +354,10 @@ typedef void (*regmap_unlock)(void *);
* @hwlock_mode: The hardware spinlock mode, should be HWLOCK_IRQSTATE,
* HWLOCK_IRQ or 0.
* @can_sleep: Optional, specifies whether regmap operations can sleep.
+ *
+ * @parity_read_mask: bit mask of location of parity bit for reads
+ * @parity_write_mask: bit mask of location of parity bit for writes
+ * @parity_calc: Optional callback to calculate parity, defaults to even parity
*/
struct regmap_config {
const char *name;
@@ -416,6 +420,12 @@ struct regmap_config {
unsigned int hwlock_mode;
bool can_sleep;
+
+ unsigned long parity_read_mask;
+ unsigned long parity_write_mask;
+ bool (*parity_calc)(unsigned long rwmask, unsigned int reg,
+ const void *val, size_t val_len);
+
};
/**
@@ -1237,6 +1247,11 @@ static inline int regmap_clear_bits(struct regmap *map,
int regmap_test_bits(struct regmap *map, unsigned int reg, unsigned int bits);
+bool regmap_parity_calc_even(unsigned long rwmask, unsigned int reg,
+ const void *val, size_t val_len);
+bool regmap_parity_calc_odd(unsigned long rwmask, unsigned int reg,
+ const void *val, size_t val_len);
+
/**
* struct reg_field - Description of an register field
*
@@ -1866,6 +1881,23 @@ static inline struct device *regmap_get_device(struct regmap *map)
return NULL;
}
+static inline bool regmap_parity_calc_even(unsigned long rwmask, unsigned int reg,
+ const void *val, size_t val_len)
+{
+ WARN_ONCE(1, "regmap API is disabled");
+ return NULL;
+}
+
+static inline bool regmap_parity_calc_odd(unsigned long rwmask, unsigned int reg,
+ const void *val, size_t val_len)
+{
+ WARN_ONCE(1, "regmap API is disabled");
+ return NULL;
+}
+
+
#endif
+
+
#endif
--
2.25.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [RFC PATCH 2/5] regmap: Altered regmap_X_X_write functions to account for padding bits
2021-12-17 22:40 [RFC PATCH 0/5] regmap: Add Parity bit Calculation to regmaps linuxkernel
2021-12-17 22:41 ` [RFC PATCH 1/5] " linuxkernel
@ 2021-12-17 22:41 ` linuxkernel
2021-12-17 22:41 ` [RFC PATCH 3/5] regmap: Added setting of writemap to formatted write linuxkernel
` (2 subsequent siblings)
4 siblings, 0 replies; 7+ messages in thread
From: linuxkernel @ 2021-12-17 22:41 UTC (permalink / raw)
To: linux-kernel; +Cc: broonie
From: Christopher Tyerman <c.tyerman@firebladeautomationsystems.co.uk>
modified: drivers/base/regmap/regmap.c
Signed-off-by: Christopher Tyerman <c.tyerman@firebladeautomationsystems.co.uk>
---
drivers/base/regmap/regmap.c | 22 ++++++++++++++++------
1 file changed, 16 insertions(+), 6 deletions(-)
diff --git a/drivers/base/regmap/regmap.c b/drivers/base/regmap/regmap.c
index 05c104659381..07d6d804c4b9 100644
--- a/drivers/base/regmap/regmap.c
+++ b/drivers/base/regmap/regmap.c
@@ -232,42 +232,52 @@ static void regmap_format_2_6_write(struct regmap *map,
unsigned int reg, unsigned int val)
{
u8 *out = map->work_buf;
+ u8 shift = map->reg_shift;
- *out = (reg << 6) | val;
+ *out = (reg << (6 + shift) | val);
}
static void regmap_format_4_12_write(struct regmap *map,
unsigned int reg, unsigned int val)
{
+ u8 shift = map->reg_shift;
__be16 *out = map->work_buf;
- *out = cpu_to_be16((reg << 12) | val);
+
+ *out = cpu_to_be16((reg << (12 + shift)) | val);
}
static void regmap_format_7_9_write(struct regmap *map,
unsigned int reg, unsigned int val)
{
+ u8 shift = map->reg_shift;
__be16 *out = map->work_buf;
- *out = cpu_to_be16((reg << 9) | val);
+
+ *out = cpu_to_be16((reg << (9 + shift)) | val);
}
static void regmap_format_7_17_write(struct regmap *map,
unsigned int reg, unsigned int val)
{
+ u8 shift = map->reg_shift;
u8 *out = map->work_buf;
out[2] = val;
out[1] = val >> 8;
- out[0] = (val >> 16) | (reg << 1);
+ out[0] = (val >> 16) | (reg << (1 + shift));
}
static void regmap_format_10_14_write(struct regmap *map,
unsigned int reg, unsigned int val)
{
+ u8 shift = map->reg_shift;
u8 *out = map->work_buf;
out[2] = val;
- out[1] = (val >> 8) | (reg << 6);
- out[0] = reg >> 2;
+ out[1] = (val >> 8) | (reg << (6 + shift));
+ if (shift <= 2)
+ out[0] = reg >> (2 - shift);
+ else
+ out[0] = reg << shift;
}
static void regmap_format_8(void *buf, unsigned int val, unsigned int shift)
--
2.25.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [RFC PATCH 3/5] regmap: Added setting of writemap to formatted write
2021-12-17 22:40 [RFC PATCH 0/5] regmap: Add Parity bit Calculation to regmaps linuxkernel
2021-12-17 22:41 ` [RFC PATCH 1/5] " linuxkernel
2021-12-17 22:41 ` [RFC PATCH 2/5] regmap: Altered regmap_X_X_write functions to account for padding bits linuxkernel
@ 2021-12-17 22:41 ` linuxkernel
2021-12-17 22:41 ` [RFC PATCH 4/5] regmap: Add Parity Calculation " linuxkernel
2021-12-17 22:41 ` [RFC PATCH 5/5] regmap: Add parser for X_9 formats linuxkernel
4 siblings, 0 replies; 7+ messages in thread
From: linuxkernel @ 2021-12-17 22:41 UTC (permalink / raw)
To: linux-kernel; +Cc: broonie
From: Christopher Tyerman <c.tyerman@firebladeautomationsystems.co.uk>
Added regmap_set_work_buf_flag_mask to _regmap_bus_formatted_write
to ensure correct write bit value set when writemask defined
modified: drivers/base/regmap/regmap.c
Signed-off-by: Christopher Tyerman <c.tyerman@firebladeautomationsystems.co.uk>
---
drivers/base/regmap/regmap.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/drivers/base/regmap/regmap.c b/drivers/base/regmap/regmap.c
index 07d6d804c4b9..ec91eff52465 100644
--- a/drivers/base/regmap/regmap.c
+++ b/drivers/base/regmap/regmap.c
@@ -1964,6 +1964,9 @@ static int _regmap_bus_formatted_write(void *context, unsigned int reg,
map->format.format_write(map, reg, val);
+ regmap_set_work_buf_flag_mask(map, map->format.reg_bytes,
+ map->write_flag_mask);
+
trace_regmap_hw_write_start(map, reg, 1);
ret = map->bus->write(map->bus_context, map->work_buf,
--
2.25.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [RFC PATCH 4/5] regmap: Add Parity Calculation to formatted write
2021-12-17 22:40 [RFC PATCH 0/5] regmap: Add Parity bit Calculation to regmaps linuxkernel
` (2 preceding siblings ...)
2021-12-17 22:41 ` [RFC PATCH 3/5] regmap: Added setting of writemap to formatted write linuxkernel
@ 2021-12-17 22:41 ` linuxkernel
2021-12-17 22:41 ` [RFC PATCH 5/5] regmap: Add parser for X_9 formats linuxkernel
4 siblings, 0 replies; 7+ messages in thread
From: linuxkernel @ 2021-12-17 22:41 UTC (permalink / raw)
To: linux-kernel; +Cc: broonie
From: Christopher Tyerman <c.tyerman@firebladeautomationsystems.co.uk>
Altered formated write to set parity bit according to parity_write_mask
modified: drivers/base/regmap/regmap.c
Signed-off-by: Christopher Tyerman <c.tyerman@firebladeautomationsystems.co.uk>
---
drivers/base/regmap/regmap.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drivers/base/regmap/regmap.c b/drivers/base/regmap/regmap.c
index ec91eff52465..ea1664fa4c60 100644
--- a/drivers/base/regmap/regmap.c
+++ b/drivers/base/regmap/regmap.c
@@ -1967,6 +1967,10 @@ static int _regmap_bus_formatted_write(void *context, unsigned int reg,
regmap_set_work_buf_flag_mask(map, map->format.reg_bytes,
map->write_flag_mask);
+ regmap_set_work_buf_parity_mask(map, map->format.reg_bytes,
+ map->parity_write_mask, map->write_flag_mask, reg,
+ &val, sizeof(val));
+
trace_regmap_hw_write_start(map, reg, 1);
ret = map->bus->write(map->bus_context, map->work_buf,
--
2.25.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [RFC PATCH 5/5] regmap: Add parser for X_9 formats
2021-12-17 22:40 [RFC PATCH 0/5] regmap: Add Parity bit Calculation to regmaps linuxkernel
` (3 preceding siblings ...)
2021-12-17 22:41 ` [RFC PATCH 4/5] regmap: Add Parity Calculation " linuxkernel
@ 2021-12-17 22:41 ` linuxkernel
4 siblings, 0 replies; 7+ messages in thread
From: linuxkernel @ 2021-12-17 22:41 UTC (permalink / raw)
To: linux-kernel; +Cc: broonie
From: Christopher Tyerman <c.tyerman@firebladeautomationsystems.co.uk>
added 9 bit Parser functions
these operate in same way as 16 bit parsers but mask out higher bits
regmap_parse_9_be()
regmap_parse_9_be_inplace()
regmap_parse_9_le()
regmap_parse_9_le_inplace()
regmap_parse_9_native()
modified: drivers/base/regmap/regmap.c
Signed-off-by: Christopher Tyerman <c.tyerman@firebladeautomationsystems.co.uk>
---
drivers/base/regmap/regmap.c | 53 ++++++++++++++++++++++++++++++++++++
1 file changed, 53 insertions(+)
diff --git a/drivers/base/regmap/regmap.c b/drivers/base/regmap/regmap.c
index ea1664fa4c60..3f105e4266b4 100644
--- a/drivers/base/regmap/regmap.c
+++ b/drivers/base/regmap/regmap.c
@@ -365,6 +365,39 @@ static unsigned int regmap_parse_8(const void *buf)
return b[0];
}
+static unsigned int regmap_parse_9_be(const void *buf)
+{
+ return get_unaligned_be16(buf) & 0x1FF;
+}
+
+static unsigned int regmap_parse_9_le(const void *buf)
+{
+
+ return get_unaligned_le16(buf) & 0x1FF;
+}
+
+static void regmap_parse_9_be_inplace(void *buf)
+{
+ u16 v = get_unaligned_be16(buf) & 0x1FF;
+
+ memcpy(buf, &v, sizeof(v));
+}
+
+static void regmap_parse_9_le_inplace(void *buf)
+{
+ u16 v = get_unaligned_le16(buf) & 0x1FF;
+
+ memcpy(buf, &v, sizeof(v));
+}
+
+static unsigned int regmap_parse_9_native(const void *buf)
+{
+ u16 v;
+
+ memcpy(&v, buf, sizeof(v));
+ return v & 0x1FF;
+}
+
static unsigned int regmap_parse_16_be(const void *buf)
{
return get_unaligned_be16(buf);
@@ -1047,6 +1080,26 @@ struct regmap *__regmap_init(struct device *dev,
map->format.parse_val = regmap_parse_8;
map->format.parse_inplace = regmap_parse_inplace_noop;
break;
+ case 9:
+ switch (val_endian) {
+ case REGMAP_ENDIAN_BIG:
+ //map->format.format_val = regmap_format_9_be;
+ map->format.parse_val = regmap_parse_9_be;
+ map->format.parse_inplace = regmap_parse_9_be_inplace;
+ break;
+ case REGMAP_ENDIAN_LITTLE:
+ //map->format.format_val = regmap_format_9_le;
+ map->format.parse_val = regmap_parse_9_le;
+ map->format.parse_inplace = regmap_parse_9_le_inplace;
+ break;
+ case REGMAP_ENDIAN_NATIVE:
+ //map->format.format_val = regmap_format_9_native;
+ map->format.parse_val = regmap_parse_9_native;
+ break;
+ default:
+ goto err_hwlock;
+ }
+ break;
case 16:
switch (val_endian) {
case REGMAP_ENDIAN_BIG:
--
2.25.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [RFC PATCH 1/5] regmap: Add Parity bit Calculation to regmaps
2021-12-17 22:41 ` [RFC PATCH 1/5] " linuxkernel
@ 2021-12-20 14:05 ` Mark Brown
0 siblings, 0 replies; 7+ messages in thread
From: Mark Brown @ 2021-12-20 14:05 UTC (permalink / raw)
To: linuxkernel; +Cc: linux-kernel
[-- Attachment #1: Type: text/plain, Size: 1240 bytes --]
On Fri, Dec 17, 2021 at 10:41:00PM +0000, linuxkernel@fbautosys.co.uk wrote:
> From: Christopher Tyerman <c.tyerman@firebladeautomationsystems.co.uk>
>
> regmap.h
>
> Added parity_read_mask to regmap_config
> Added parity_write_mask to regmap_config
> Added (*parity_calc)() to regmap_config
>
> Added regmap_parity_calc_even() Added regmap_parity_calc_odd()
>
> internal.h
>
> Added parity_read_mask to regmap
> Added parity_write_mask to regmap
> Added (*parity_calc) to regmap
>
> regmap.c
> Altered _regmap_raw_write_impl() to calculate parity
> Altered _regmap_raw_read() to calculate parity
> Added regmap_set_work_buf_parity_mask()
> Added regmap_parity_calc_even()
> Added regmap_parity_calc_odd()
> Added parity_even()
> Added parity16_even(u16 v)
> Added parity32_even(u32 v)
> Added parity64_even(u64 v)
This isn't a good changelog, the changelog needs to describe what is
being changed in the code and why in a way that provides information to
the human reader. Instead this is essentially a list of code level
changes in the diff. There's some advice on changelogs in
submitting-patches.rst. Without a clear changelog it's hard to review
things as it's not clear what the goals are.
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2021-12-20 14:05 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-12-17 22:40 [RFC PATCH 0/5] regmap: Add Parity bit Calculation to regmaps linuxkernel
2021-12-17 22:41 ` [RFC PATCH 1/5] " linuxkernel
2021-12-20 14:05 ` Mark Brown
2021-12-17 22:41 ` [RFC PATCH 2/5] regmap: Altered regmap_X_X_write functions to account for padding bits linuxkernel
2021-12-17 22:41 ` [RFC PATCH 3/5] regmap: Added setting of writemap to formatted write linuxkernel
2021-12-17 22:41 ` [RFC PATCH 4/5] regmap: Add Parity Calculation " linuxkernel
2021-12-17 22:41 ` [RFC PATCH 5/5] regmap: Add parser for X_9 formats linuxkernel
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.