Re: [PATCH 2/2] spmi: spmi-pmic-arb: add support for PMIC arbiter v8.5
From: Dmitry Baryshkov
Date: Wed Apr 01 2026 - 07:28:44 EST
On Wed, Apr 01, 2026 at 02:41:24AM -0700, Fenglin Wu wrote:
> PMIC arbiter v8.5 is an extension of PMIC arbiter v8 that updated
> the definition of the channel status register bit fields. Add support
> to handle this difference.
>
> Signed-off-by: Fenglin Wu <fenglin.wu@xxxxxxxxxxxxxxxx>
> ---
> drivers/spmi/spmi-pmic-arb.c | 69 ++++++++++++++++++++++++++++++++++++++------
> 1 file changed, 60 insertions(+), 9 deletions(-)
>
> diff --git a/drivers/spmi/spmi-pmic-arb.c b/drivers/spmi/spmi-pmic-arb.c
> index 69f8d456324a..deeaa39bb647 100644
> --- a/drivers/spmi/spmi-pmic-arb.c
> +++ b/drivers/spmi/spmi-pmic-arb.c
> @@ -28,6 +28,7 @@
> #define PMIC_ARB_VERSION_V5_MIN 0x50000000
> #define PMIC_ARB_VERSION_V7_MIN 0x70000000
> #define PMIC_ARB_VERSION_V8_MIN 0x80000000
> +#define PMIC_ARB_VERSION_V8P5_MIN 0x80050000
> #define PMIC_ARB_INT_EN 0x0004
>
> #define PMIC_ARB_FEATURES 0x0004
> @@ -63,11 +64,34 @@
> #define SPMI_OWNERSHIP_PERIPH2OWNER(X) ((X) & 0x7)
>
> /* Channel Status fields */
> -enum pmic_arb_chnl_status {
> - PMIC_ARB_STATUS_DONE = BIT(0),
> - PMIC_ARB_STATUS_FAILURE = BIT(1),
> - PMIC_ARB_STATUS_DENIED = BIT(2),
> - PMIC_ARB_STATUS_DROPPED = BIT(3),
> +struct pmic_arb_chnl_status_mask {
> + u8 done;
> + u8 failure;
> + u8 crc;
> + u8 parity;
> + u8 nack;
> + u8 denied;
> + u8 dropped;
> +};
> +
> +static const struct pmic_arb_chnl_status_mask chnl_status_mask = {
> + .done = BIT(0),
> + .failure = BIT(1),
> + .crc = 0,
> + .parity = 0,
> + .nack = 0,
> + .denied = BIT(2),
> + .dropped = BIT(3),
> +};
> +
> +static const struct pmic_arb_chnl_status_mask chnl_status_mask_v8p5 = {
> + .done = BIT(0),
> + .failure = BIT(1),
> + .crc = BIT(2),
> + .parity = BIT(3),
> + .nack = BIT(4),
> + .denied = BIT(5),
> + .dropped = BIT(6),
Would it be better to extract generation-specific callback to decode the
error rather than defining the list of masks?
> };
>
> /* Command register fields */
--
With best wishes
Dmitry