From: Greg Kroah-Hartman Date: Sat, 26 Aug 2023 20:02:33 +0000 (+0200) Subject: drop regmap-i2c-add-16-bit-width-registers-support.patch X-Git-Tag: v6.1.49~54 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=08a05dd465f9a3f5d5e006599d3b6d425104b54e;p=thirdparty%2Fkernel%2Fstable-queue.git drop regmap-i2c-add-16-bit-width-registers-support.patch --- diff --git a/queue-4.19/regmap-account-for-register-length-in-smbus-i-o-limi.patch b/queue-4.19/regmap-account-for-register-length-in-smbus-i-o-limi.patch index a382b778ef3..b2ae4ada489 100644 --- a/queue-4.19/regmap-account-for-register-length-in-smbus-i-o-limi.patch +++ b/queue-4.19/regmap-account-for-register-length-in-smbus-i-o-limi.patch @@ -25,14 +25,12 @@ Link: https://lore.kernel.org/r/20230712-regmap-max-transfer-v1-2-80e2aed22e83@k Signed-off-by: Mark Brown Signed-off-by: Sasha Levin --- - drivers/base/regmap/regmap-i2c.c | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) + drivers/base/regmap/regmap-i2c.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) -diff --git a/drivers/base/regmap/regmap-i2c.c b/drivers/base/regmap/regmap-i2c.c -index 052170ca0255e..b707913233c9b 100644 --- a/drivers/base/regmap/regmap-i2c.c +++ b/drivers/base/regmap/regmap-i2c.c -@@ -246,8 +246,8 @@ static int regmap_i2c_smbus_i2c_read(void *context, const void *reg, +@@ -246,8 +246,8 @@ static int regmap_i2c_smbus_i2c_read(voi static struct regmap_bus regmap_i2c_smbus_i2c_block = { .write = regmap_i2c_smbus_i2c_write, .read = regmap_i2c_smbus_i2c_read, @@ -42,18 +40,4 @@ index 052170ca0255e..b707913233c9b 100644 + .max_raw_write = I2C_SMBUS_BLOCK_MAX - 1, }; - static int regmap_i2c_smbus_i2c_write_reg16(void *context, const void *data, -@@ -303,8 +303,8 @@ static int regmap_i2c_smbus_i2c_read_reg16(void *context, const void *reg, - static const struct regmap_bus regmap_i2c_smbus_i2c_block_reg16 = { - .write = regmap_i2c_smbus_i2c_write_reg16, - .read = regmap_i2c_smbus_i2c_read_reg16, -- .max_raw_read = I2C_SMBUS_BLOCK_MAX, -- .max_raw_write = I2C_SMBUS_BLOCK_MAX, -+ .max_raw_read = I2C_SMBUS_BLOCK_MAX - 2, -+ .max_raw_write = I2C_SMBUS_BLOCK_MAX - 2, - }; - static const struct regmap_bus *regmap_get_i2c_bus(struct i2c_client *i2c, --- -2.40.1 - diff --git a/queue-4.19/regmap-i2c-add-16-bit-width-registers-support.patch b/queue-4.19/regmap-i2c-add-16-bit-width-registers-support.patch deleted file mode 100644 index 4edf4accd01..00000000000 --- a/queue-4.19/regmap-i2c-add-16-bit-width-registers-support.patch +++ /dev/null @@ -1,118 +0,0 @@ -From ee5d7277ae0fd7cda3208f95b7cfa51484e5a930 Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Fri, 24 Apr 2020 20:33:58 +0800 -Subject: regmap-i2c: add 16-bit width registers support - -From: AceLan Kao - -[ Upstream commit 82f25bd73c0bee4d29df47007a4f7290695b7db7 ] - -This allows to access data with 16-bit width of registers -via i2c SMBus block functions. - -The multi-command sequence of the reading function is not safe -and may read the wrong data from other address if other commands -are sent in-between the SMBus commands in the read function. - -Read performance: - 32768 bytes (33 kB, 32 KiB) copied, 11.4869 s, 2.9 kB/s -Write performance(with 1-byte page): - 32768 bytes (33 kB, 32 KiB) copied, 129.591 s, 0.3 kB/s - -The implementation is inspired by below commit -https://patchwork.ozlabs.org/patch/545292/ - -v2: add more descriptions about the issue that maybe introduced - by this commit - -Signed-off-by: AceLan Kao -Link: https://lore.kernel.org/r/20200424123358.144850-1-acelan.kao@canonical.com -Signed-off-by: Mark Brown -Stable-dep-of: 0c9d2eb5e947 ("regmap: Account for register length in SMBus I/O limits") -Signed-off-by: Sasha Levin ---- - drivers/base/regmap/regmap-i2c.c | 61 ++++++++++++++++++++++++++++++++ - 1 file changed, 61 insertions(+) - -diff --git a/drivers/base/regmap/regmap-i2c.c b/drivers/base/regmap/regmap-i2c.c -index 056acde5e7d34..052170ca0255e 100644 ---- a/drivers/base/regmap/regmap-i2c.c -+++ b/drivers/base/regmap/regmap-i2c.c -@@ -250,6 +250,63 @@ static struct regmap_bus regmap_i2c_smbus_i2c_block = { - .max_raw_write = I2C_SMBUS_BLOCK_MAX, - }; - -+static int regmap_i2c_smbus_i2c_write_reg16(void *context, const void *data, -+ size_t count) -+{ -+ struct device *dev = context; -+ struct i2c_client *i2c = to_i2c_client(dev); -+ -+ if (count < 2) -+ return -EINVAL; -+ -+ count--; -+ return i2c_smbus_write_i2c_block_data(i2c, ((u8 *)data)[0], count, -+ (u8 *)data + 1); -+} -+ -+static int regmap_i2c_smbus_i2c_read_reg16(void *context, const void *reg, -+ size_t reg_size, void *val, -+ size_t val_size) -+{ -+ struct device *dev = context; -+ struct i2c_client *i2c = to_i2c_client(dev); -+ int ret, count, len = val_size; -+ -+ if (reg_size != 2) -+ return -EINVAL; -+ -+ ret = i2c_smbus_write_byte_data(i2c, ((u16 *)reg)[0] & 0xff, -+ ((u16 *)reg)[0] >> 8); -+ if (ret < 0) -+ return ret; -+ -+ count = 0; -+ do { -+ /* Current Address Read */ -+ ret = i2c_smbus_read_byte(i2c); -+ if (ret < 0) -+ break; -+ -+ *((u8 *)val++) = ret; -+ count++; -+ len--; -+ } while (len > 0); -+ -+ if (count == val_size) -+ return 0; -+ else if (ret < 0) -+ return ret; -+ else -+ return -EIO; -+} -+ -+static const struct regmap_bus regmap_i2c_smbus_i2c_block_reg16 = { -+ .write = regmap_i2c_smbus_i2c_write_reg16, -+ .read = regmap_i2c_smbus_i2c_read_reg16, -+ .max_raw_read = I2C_SMBUS_BLOCK_MAX, -+ .max_raw_write = I2C_SMBUS_BLOCK_MAX, -+}; -+ - static const struct regmap_bus *regmap_get_i2c_bus(struct i2c_client *i2c, - const struct regmap_config *config) - { -@@ -259,6 +316,10 @@ static const struct regmap_bus *regmap_get_i2c_bus(struct i2c_client *i2c, - i2c_check_functionality(i2c->adapter, - I2C_FUNC_SMBUS_I2C_BLOCK)) - return ®map_i2c_smbus_i2c_block; -+ else if (config->val_bits == 8 && config->reg_bits == 16 && -+ i2c_check_functionality(i2c->adapter, -+ I2C_FUNC_SMBUS_I2C_BLOCK)) -+ return ®map_i2c_smbus_i2c_block_reg16; - else if (config->val_bits == 16 && config->reg_bits == 8 && - i2c_check_functionality(i2c->adapter, - I2C_FUNC_SMBUS_WORD_DATA)) --- -2.40.1 - diff --git a/queue-4.19/series b/queue-4.19/series index bf315a9ee0a..f15c465e45f 100644 --- a/queue-4.19/series +++ b/queue-4.19/series @@ -105,7 +105,6 @@ dm-integrity-increase-recalc_sectors-to-improve-reca.patch dm-integrity-reduce-vmalloc-space-footprint-on-32-bi.patch exfat-add-bitmap-operations.patch exfat-use-kvmalloc_array-kvfree-instead-of-kmalloc_a.patch -regmap-i2c-add-16-bit-width-registers-support.patch regmap-account-for-register-length-in-smbus-i-o-limi.patch drm-amd-display-do-not-wait-for-mpc-idle-if-tg-is-di.patch drm-amd-display-check-tg-is-non-null-before-checking.patch diff --git a/queue-5.4/regmap-account-for-register-length-in-smbus-i-o-limi.patch b/queue-5.4/regmap-account-for-register-length-in-smbus-i-o-limi.patch index a9b8c3489bc..11e3d7841c4 100644 --- a/queue-5.4/regmap-account-for-register-length-in-smbus-i-o-limi.patch +++ b/queue-5.4/regmap-account-for-register-length-in-smbus-i-o-limi.patch @@ -25,14 +25,12 @@ Link: https://lore.kernel.org/r/20230712-regmap-max-transfer-v1-2-80e2aed22e83@k Signed-off-by: Mark Brown Signed-off-by: Sasha Levin --- - drivers/base/regmap/regmap-i2c.c | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) + drivers/base/regmap/regmap-i2c.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) -diff --git a/drivers/base/regmap/regmap-i2c.c b/drivers/base/regmap/regmap-i2c.c -index 7f924797be58e..90990c22be41d 100644 --- a/drivers/base/regmap/regmap-i2c.c +++ b/drivers/base/regmap/regmap-i2c.c -@@ -242,8 +242,8 @@ static int regmap_i2c_smbus_i2c_read(void *context, const void *reg, +@@ -242,8 +242,8 @@ static int regmap_i2c_smbus_i2c_read(voi static struct regmap_bus regmap_i2c_smbus_i2c_block = { .write = regmap_i2c_smbus_i2c_write, .read = regmap_i2c_smbus_i2c_read, @@ -42,18 +40,4 @@ index 7f924797be58e..90990c22be41d 100644 + .max_raw_write = I2C_SMBUS_BLOCK_MAX - 1, }; - static int regmap_i2c_smbus_i2c_write_reg16(void *context, const void *data, -@@ -299,8 +299,8 @@ static int regmap_i2c_smbus_i2c_read_reg16(void *context, const void *reg, - static const struct regmap_bus regmap_i2c_smbus_i2c_block_reg16 = { - .write = regmap_i2c_smbus_i2c_write_reg16, - .read = regmap_i2c_smbus_i2c_read_reg16, -- .max_raw_read = I2C_SMBUS_BLOCK_MAX, -- .max_raw_write = I2C_SMBUS_BLOCK_MAX, -+ .max_raw_read = I2C_SMBUS_BLOCK_MAX - 2, -+ .max_raw_write = I2C_SMBUS_BLOCK_MAX - 2, - }; - static const struct regmap_bus *regmap_get_i2c_bus(struct i2c_client *i2c, --- -2.40.1 - diff --git a/queue-5.4/regmap-i2c-add-16-bit-width-registers-support.patch b/queue-5.4/regmap-i2c-add-16-bit-width-registers-support.patch deleted file mode 100644 index 3f2371690a2..00000000000 --- a/queue-5.4/regmap-i2c-add-16-bit-width-registers-support.patch +++ /dev/null @@ -1,118 +0,0 @@ -From d7cfb93169b14870e3aade2ed9fe4242e4cc2640 Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Fri, 24 Apr 2020 20:33:58 +0800 -Subject: regmap-i2c: add 16-bit width registers support - -From: AceLan Kao - -[ Upstream commit 82f25bd73c0bee4d29df47007a4f7290695b7db7 ] - -This allows to access data with 16-bit width of registers -via i2c SMBus block functions. - -The multi-command sequence of the reading function is not safe -and may read the wrong data from other address if other commands -are sent in-between the SMBus commands in the read function. - -Read performance: - 32768 bytes (33 kB, 32 KiB) copied, 11.4869 s, 2.9 kB/s -Write performance(with 1-byte page): - 32768 bytes (33 kB, 32 KiB) copied, 129.591 s, 0.3 kB/s - -The implementation is inspired by below commit -https://patchwork.ozlabs.org/patch/545292/ - -v2: add more descriptions about the issue that maybe introduced - by this commit - -Signed-off-by: AceLan Kao -Link: https://lore.kernel.org/r/20200424123358.144850-1-acelan.kao@canonical.com -Signed-off-by: Mark Brown -Stable-dep-of: 0c9d2eb5e947 ("regmap: Account for register length in SMBus I/O limits") -Signed-off-by: Sasha Levin ---- - drivers/base/regmap/regmap-i2c.c | 61 ++++++++++++++++++++++++++++++++ - 1 file changed, 61 insertions(+) - -diff --git a/drivers/base/regmap/regmap-i2c.c b/drivers/base/regmap/regmap-i2c.c -index ac9b31c57967d..7f924797be58e 100644 ---- a/drivers/base/regmap/regmap-i2c.c -+++ b/drivers/base/regmap/regmap-i2c.c -@@ -246,6 +246,63 @@ static struct regmap_bus regmap_i2c_smbus_i2c_block = { - .max_raw_write = I2C_SMBUS_BLOCK_MAX, - }; - -+static int regmap_i2c_smbus_i2c_write_reg16(void *context, const void *data, -+ size_t count) -+{ -+ struct device *dev = context; -+ struct i2c_client *i2c = to_i2c_client(dev); -+ -+ if (count < 2) -+ return -EINVAL; -+ -+ count--; -+ return i2c_smbus_write_i2c_block_data(i2c, ((u8 *)data)[0], count, -+ (u8 *)data + 1); -+} -+ -+static int regmap_i2c_smbus_i2c_read_reg16(void *context, const void *reg, -+ size_t reg_size, void *val, -+ size_t val_size) -+{ -+ struct device *dev = context; -+ struct i2c_client *i2c = to_i2c_client(dev); -+ int ret, count, len = val_size; -+ -+ if (reg_size != 2) -+ return -EINVAL; -+ -+ ret = i2c_smbus_write_byte_data(i2c, ((u16 *)reg)[0] & 0xff, -+ ((u16 *)reg)[0] >> 8); -+ if (ret < 0) -+ return ret; -+ -+ count = 0; -+ do { -+ /* Current Address Read */ -+ ret = i2c_smbus_read_byte(i2c); -+ if (ret < 0) -+ break; -+ -+ *((u8 *)val++) = ret; -+ count++; -+ len--; -+ } while (len > 0); -+ -+ if (count == val_size) -+ return 0; -+ else if (ret < 0) -+ return ret; -+ else -+ return -EIO; -+} -+ -+static const struct regmap_bus regmap_i2c_smbus_i2c_block_reg16 = { -+ .write = regmap_i2c_smbus_i2c_write_reg16, -+ .read = regmap_i2c_smbus_i2c_read_reg16, -+ .max_raw_read = I2C_SMBUS_BLOCK_MAX, -+ .max_raw_write = I2C_SMBUS_BLOCK_MAX, -+}; -+ - static const struct regmap_bus *regmap_get_i2c_bus(struct i2c_client *i2c, - const struct regmap_config *config) - { -@@ -255,6 +312,10 @@ static const struct regmap_bus *regmap_get_i2c_bus(struct i2c_client *i2c, - i2c_check_functionality(i2c->adapter, - I2C_FUNC_SMBUS_I2C_BLOCK)) - return ®map_i2c_smbus_i2c_block; -+ else if (config->val_bits == 8 && config->reg_bits == 16 && -+ i2c_check_functionality(i2c->adapter, -+ I2C_FUNC_SMBUS_I2C_BLOCK)) -+ return ®map_i2c_smbus_i2c_block_reg16; - else if (config->val_bits == 16 && config->reg_bits == 8 && - i2c_check_functionality(i2c->adapter, - I2C_FUNC_SMBUS_WORD_DATA)) --- -2.40.1 - diff --git a/queue-5.4/series b/queue-5.4/series index ca6516c2da9..292e25df19d 100644 --- a/queue-5.4/series +++ b/queue-5.4/series @@ -111,7 +111,6 @@ dm-integrity-reduce-vmalloc-space-footprint-on-32-bi.patch alsa-pcm-set-per-card-upper-limit-of-pcm-buffer-allo.patch alsa-pcm-use-sg-buffer-only-when-direct-dma-is-avail.patch alsa-pcm-fix-potential-data-race-at-pcm-memory-alloc.patch -regmap-i2c-add-16-bit-width-registers-support.patch regmap-account-for-register-length-in-smbus-i-o-limi.patch asoc-fsl_sai-refine-enable-disable-te-re-sequence-in.patch asoc-fsl_sai-add-new-added-registers-and-new-bit-def.patch