Loading drivers/base/regmap/Kconfig +5 −1 Original line number Diff line number Diff line Loading @@ -4,7 +4,7 @@ # subsystems should select the appropriate symbols. config REGMAP default y if (REGMAP_I2C || REGMAP_SPI || REGMAP_SPMI || REGMAP_W1 || REGMAP_AC97 || REGMAP_MMIO || REGMAP_IRQ || REGMAP_SOUNDWIRE || REGMAP_SCCB || REGMAP_I3C) default y if (REGMAP_I2C || REGMAP_SPI || REGMAP_SPMI || REGMAP_W1 || REGMAP_AC97 || REGMAP_MMIO || REGMAP_IRQ || REGMAP_SOUNDWIRE || REGMAP_SCCB || REGMAP_I3C || REGMAP_SPI_AVMM) select IRQ_DOMAIN if REGMAP_IRQ bool Loading Loading @@ -53,3 +53,7 @@ config REGMAP_SCCB config REGMAP_I3C tristate depends on I3C config REGMAP_SPI_AVMM tristate depends on SPI drivers/base/regmap/Makefile +1 −0 Original line number Diff line number Diff line Loading @@ -17,3 +17,4 @@ obj-$(CONFIG_REGMAP_W1) += regmap-w1.o obj-$(CONFIG_REGMAP_SOUNDWIRE) += regmap-sdw.o obj-$(CONFIG_REGMAP_SCCB) += regmap-sccb.o obj-$(CONFIG_REGMAP_I3C) += regmap-i3c.o obj-$(CONFIG_REGMAP_SPI_AVMM) += regmap-spi-avmm.o drivers/base/regmap/internal.h +3 −0 Original line number Diff line number Diff line Loading @@ -161,6 +161,9 @@ struct regmap { void *selector_work_buf; /* Scratch buffer used for selector */ struct hwspinlock *hwlock; /* if set, the regmap core can sleep */ bool can_sleep; }; struct regcache_ops { Loading drivers/base/regmap/regmap-debugfs.c +1 −1 Original line number Diff line number Diff line Loading @@ -183,7 +183,7 @@ static inline void regmap_calc_tot_len(struct regmap *map, { /* Calculate the length of a fixed format */ if (!map->debugfs_tot_len) { map->debugfs_reg_len = regmap_calc_reg_len(map->max_register), map->debugfs_reg_len = regmap_calc_reg_len(map->max_register); map->debugfs_val_len = 2 * map->format.val_bytes; map->debugfs_tot_len = map->debugfs_reg_len + map->debugfs_val_len + 3; /* : \n */ Loading drivers/base/regmap/regmap-irq.c +32 −1 Original line number Diff line number Diff line Loading @@ -168,6 +168,14 @@ static void regmap_irq_sync_unlock(struct irq_data *data) ret = regmap_write(map, reg, ~d->mask_buf[i]); else ret = regmap_write(map, reg, d->mask_buf[i]); if (d->chip->clear_ack) { if (d->chip->ack_invert && !ret) ret = regmap_write(map, reg, d->mask_buf[i]); else if (!ret) ret = regmap_write(map, reg, ~d->mask_buf[i]); } if (ret != 0) dev_err(d->map->dev, "Failed to ack 0x%x: %d\n", reg, ret); Loading Loading @@ -493,7 +501,20 @@ static irqreturn_t regmap_irq_thread(int irq, void *d) if (data->status_buf[i] && (chip->ack_base || chip->use_ack)) { reg = chip->ack_base + (i * map->reg_stride * data->irq_reg_stride); ret = regmap_write(map, reg, data->status_buf[i]); if (chip->ack_invert) ret = regmap_write(map, reg, ~data->status_buf[i]); else ret = regmap_write(map, reg, data->status_buf[i]); if (chip->clear_ack) { if (chip->ack_invert && !ret) ret = regmap_write(map, reg, data->status_buf[i]); else if (!ret) ret = regmap_write(map, reg, ~data->status_buf[i]); } if (ret != 0) dev_err(map->dev, "Failed to ack 0x%x: %d\n", reg, ret); Loading Loading @@ -722,6 +743,16 @@ int regmap_add_irq_chip_fwnode(struct fwnode_handle *fwnode, else ret = regmap_write(map, reg, d->status_buf[i] & d->mask_buf[i]); if (chip->clear_ack) { if (chip->ack_invert && !ret) ret = regmap_write(map, reg, (d->status_buf[i] & d->mask_buf[i])); else if (!ret) ret = regmap_write(map, reg, ~(d->status_buf[i] & d->mask_buf[i])); } if (ret != 0) { dev_err(map->dev, "Failed to ack 0x%x: %d\n", reg, ret); Loading Loading
drivers/base/regmap/Kconfig +5 −1 Original line number Diff line number Diff line Loading @@ -4,7 +4,7 @@ # subsystems should select the appropriate symbols. config REGMAP default y if (REGMAP_I2C || REGMAP_SPI || REGMAP_SPMI || REGMAP_W1 || REGMAP_AC97 || REGMAP_MMIO || REGMAP_IRQ || REGMAP_SOUNDWIRE || REGMAP_SCCB || REGMAP_I3C) default y if (REGMAP_I2C || REGMAP_SPI || REGMAP_SPMI || REGMAP_W1 || REGMAP_AC97 || REGMAP_MMIO || REGMAP_IRQ || REGMAP_SOUNDWIRE || REGMAP_SCCB || REGMAP_I3C || REGMAP_SPI_AVMM) select IRQ_DOMAIN if REGMAP_IRQ bool Loading Loading @@ -53,3 +53,7 @@ config REGMAP_SCCB config REGMAP_I3C tristate depends on I3C config REGMAP_SPI_AVMM tristate depends on SPI
drivers/base/regmap/Makefile +1 −0 Original line number Diff line number Diff line Loading @@ -17,3 +17,4 @@ obj-$(CONFIG_REGMAP_W1) += regmap-w1.o obj-$(CONFIG_REGMAP_SOUNDWIRE) += regmap-sdw.o obj-$(CONFIG_REGMAP_SCCB) += regmap-sccb.o obj-$(CONFIG_REGMAP_I3C) += regmap-i3c.o obj-$(CONFIG_REGMAP_SPI_AVMM) += regmap-spi-avmm.o
drivers/base/regmap/internal.h +3 −0 Original line number Diff line number Diff line Loading @@ -161,6 +161,9 @@ struct regmap { void *selector_work_buf; /* Scratch buffer used for selector */ struct hwspinlock *hwlock; /* if set, the regmap core can sleep */ bool can_sleep; }; struct regcache_ops { Loading
drivers/base/regmap/regmap-debugfs.c +1 −1 Original line number Diff line number Diff line Loading @@ -183,7 +183,7 @@ static inline void regmap_calc_tot_len(struct regmap *map, { /* Calculate the length of a fixed format */ if (!map->debugfs_tot_len) { map->debugfs_reg_len = regmap_calc_reg_len(map->max_register), map->debugfs_reg_len = regmap_calc_reg_len(map->max_register); map->debugfs_val_len = 2 * map->format.val_bytes; map->debugfs_tot_len = map->debugfs_reg_len + map->debugfs_val_len + 3; /* : \n */ Loading
drivers/base/regmap/regmap-irq.c +32 −1 Original line number Diff line number Diff line Loading @@ -168,6 +168,14 @@ static void regmap_irq_sync_unlock(struct irq_data *data) ret = regmap_write(map, reg, ~d->mask_buf[i]); else ret = regmap_write(map, reg, d->mask_buf[i]); if (d->chip->clear_ack) { if (d->chip->ack_invert && !ret) ret = regmap_write(map, reg, d->mask_buf[i]); else if (!ret) ret = regmap_write(map, reg, ~d->mask_buf[i]); } if (ret != 0) dev_err(d->map->dev, "Failed to ack 0x%x: %d\n", reg, ret); Loading Loading @@ -493,7 +501,20 @@ static irqreturn_t regmap_irq_thread(int irq, void *d) if (data->status_buf[i] && (chip->ack_base || chip->use_ack)) { reg = chip->ack_base + (i * map->reg_stride * data->irq_reg_stride); ret = regmap_write(map, reg, data->status_buf[i]); if (chip->ack_invert) ret = regmap_write(map, reg, ~data->status_buf[i]); else ret = regmap_write(map, reg, data->status_buf[i]); if (chip->clear_ack) { if (chip->ack_invert && !ret) ret = regmap_write(map, reg, data->status_buf[i]); else if (!ret) ret = regmap_write(map, reg, ~data->status_buf[i]); } if (ret != 0) dev_err(map->dev, "Failed to ack 0x%x: %d\n", reg, ret); Loading Loading @@ -722,6 +743,16 @@ int regmap_add_irq_chip_fwnode(struct fwnode_handle *fwnode, else ret = regmap_write(map, reg, d->status_buf[i] & d->mask_buf[i]); if (chip->clear_ack) { if (chip->ack_invert && !ret) ret = regmap_write(map, reg, (d->status_buf[i] & d->mask_buf[i])); else if (!ret) ret = regmap_write(map, reg, ~(d->status_buf[i] & d->mask_buf[i])); } if (ret != 0) { dev_err(map->dev, "Failed to ack 0x%x: %d\n", reg, ret); Loading