Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

mfd: intel-m10-bmc: Create m10bmc_sys_update_bits()

Wrap regmap_update_bits() with m10bmc_sys_update_bits() in order to be
able to add additional checks into it.

Co-developed-by: Russ Weight <russell.h.weight@intel.com>
Signed-off-by: Russ Weight <russell.h.weight@intel.com>
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Reviewed-by: Xu Yilun <yilun.xu@intel.com>
Signed-off-by: Lee Jones <lee@kernel.org>
Link: https://lore.kernel.org/r/20230417092653.16487-3-ilpo.jarvinen@linux.intel.com

authored by

Ilpo Järvinen and committed by
Lee Jones
c452e3bd b3ecc7f3

+27 -16
+14 -16
drivers/fpga/intel-m10-bmc-sec-update.c
··· 376 376 u32 doorbell_reg, progress, status; 377 377 int ret, err; 378 378 379 - ret = regmap_update_bits(sec->m10bmc->regmap, 380 - csr_map->base + csr_map->doorbell, 381 - DRBL_RSU_REQUEST | DRBL_HOST_STATUS, 382 - DRBL_RSU_REQUEST | 383 - FIELD_PREP(DRBL_HOST_STATUS, 384 - HOST_STATUS_IDLE)); 379 + ret = m10bmc_sys_update_bits(sec->m10bmc, csr_map->doorbell, 380 + DRBL_RSU_REQUEST | DRBL_HOST_STATUS, 381 + DRBL_RSU_REQUEST | 382 + FIELD_PREP(DRBL_HOST_STATUS, 383 + HOST_STATUS_IDLE)); 385 384 if (ret) 386 385 return FW_UPLOAD_ERR_RW_ERROR; 387 386 ··· 449 450 u32 doorbell_reg, status; 450 451 int ret; 451 452 452 - ret = regmap_update_bits(sec->m10bmc->regmap, 453 - csr_map->base + csr_map->doorbell, 454 - DRBL_HOST_STATUS, 455 - FIELD_PREP(DRBL_HOST_STATUS, 456 - HOST_STATUS_WRITE_DONE)); 453 + ret = m10bmc_sys_update_bits(sec->m10bmc, csr_map->doorbell, 454 + DRBL_HOST_STATUS, 455 + FIELD_PREP(DRBL_HOST_STATUS, 456 + HOST_STATUS_WRITE_DONE)); 457 457 if (ret) 458 458 return FW_UPLOAD_ERR_RW_ERROR; 459 459 ··· 515 517 if (rsu_prog(doorbell) != RSU_PROG_READY) 516 518 return FW_UPLOAD_ERR_BUSY; 517 519 518 - ret = regmap_update_bits(sec->m10bmc->regmap, 519 - csr_map->base + csr_map->doorbell, 520 - DRBL_HOST_STATUS, 521 - FIELD_PREP(DRBL_HOST_STATUS, 522 - HOST_STATUS_ABORT_RSU)); 520 + ret = m10bmc_sys_update_bits(sec->m10bmc, csr_map->doorbell, 521 + DRBL_HOST_STATUS, 522 + FIELD_PREP(DRBL_HOST_STATUS, 523 + HOST_STATUS_ABORT_RSU)); 523 524 if (ret) 524 525 return FW_UPLOAD_ERR_RW_ERROR; 525 526 ··· 761 764 MODULE_AUTHOR("Intel Corporation"); 762 765 MODULE_DESCRIPTION("Intel MAX10 BMC Secure Update"); 763 766 MODULE_LICENSE("GPL"); 767 + MODULE_IMPORT_NS(INTEL_M10_BMC_CORE);
+9
drivers/mfd/intel-m10-bmc-core.c
··· 12 12 #include <linux/mfd/intel-m10-bmc.h> 13 13 #include <linux/module.h> 14 14 15 + int m10bmc_sys_update_bits(struct intel_m10bmc *m10bmc, unsigned int offset, 16 + unsigned int msk, unsigned int val) 17 + { 18 + const struct m10bmc_csr_map *csr_map = m10bmc->info->csr_map; 19 + 20 + return regmap_update_bits(m10bmc->regmap, csr_map->base + offset, msk, val); 21 + } 22 + EXPORT_SYMBOL_NS_GPL(m10bmc_sys_update_bits, INTEL_M10_BMC_CORE); 23 + 15 24 static ssize_t bmc_version_show(struct device *dev, 16 25 struct device_attribute *attr, char *buf) 17 26 {
+4
include/linux/mfd/intel-m10-bmc.h
··· 251 251 * 252 252 * m10bmc_raw_read - read m10bmc register per addr 253 253 * m10bmc_sys_read - read m10bmc system register per offset 254 + * m10bmc_sys_update_bits - update m10bmc system register per offset 254 255 */ 255 256 static inline int 256 257 m10bmc_raw_read(struct intel_m10bmc *m10bmc, unsigned int addr, ··· 282 281 283 282 return m10bmc_raw_read(m10bmc, csr_map->base + offset, val); 284 283 } 284 + 285 + int m10bmc_sys_update_bits(struct intel_m10bmc *m10bmc, unsigned int offset, 286 + unsigned int msk, unsigned int val); 285 287 286 288 /* 287 289 * MAX10 BMC Core support