* [PATCH 0/2] spmi: pmic-arb: Add spmi-pmic-arb support for Hawi SoC
@ 2026-04-01 9:41 Fenglin Wu
2026-04-01 9:41 ` [PATCH 1/2] dt-bindings: spmi: glymur-spmi-pmic-arb: Add compatible for Hawi Fenglin Wu
2026-04-01 9:41 ` [PATCH 2/2] spmi: spmi-pmic-arb: add support for PMIC arbiter v8.5 Fenglin Wu
0 siblings, 2 replies; 11+ messages in thread
From: Fenglin Wu @ 2026-04-01 9:41 UTC (permalink / raw)
To: Stephen Boyd, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Konrad Dybcio
Cc: Subbaraman Narayanamurthy, David Collins, linux-arm-msm,
linux-kernel, devicetree, kernel, Fenglin Wu
Add compatible for Hawi SoC and add pmic-arb v8.5 support.
Signed-off-by: Fenglin Wu <fenglin.wu@oss.qualcomm.com>
---
Fenglin Wu (2):
dt-bindings: spmi: glymur-spmi-pmic-arb: Add compatible for Hawi
spmi: spmi-pmic-arb: add support for PMIC arbiter v8.5
.../bindings/spmi/qcom,glymur-spmi-pmic-arb.yaml | 1 +
drivers/spmi/spmi-pmic-arb.c | 69 +++++++++++++++++++---
2 files changed, 61 insertions(+), 9 deletions(-)
---
base-commit: 840b0dd6b8c169e963f74265f508c54f1fe3c968
change-id: 20260323-hawi-spmi-a29ef97409a4
Best regards,
--
Fenglin Wu <fenglin.wu@oss.qualcomm.com>
^ permalink raw reply [flat|nested] 11+ messages in thread* [PATCH 1/2] dt-bindings: spmi: glymur-spmi-pmic-arb: Add compatible for Hawi 2026-04-01 9:41 [PATCH 0/2] spmi: pmic-arb: Add spmi-pmic-arb support for Hawi SoC Fenglin Wu @ 2026-04-01 9:41 ` Fenglin Wu 2026-04-01 10:05 ` Konrad Dybcio ` (2 more replies) 2026-04-01 9:41 ` [PATCH 2/2] spmi: spmi-pmic-arb: add support for PMIC arbiter v8.5 Fenglin Wu 1 sibling, 3 replies; 11+ messages in thread From: Fenglin Wu @ 2026-04-01 9:41 UTC (permalink / raw) To: Stephen Boyd, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Konrad Dybcio Cc: Subbaraman Narayanamurthy, David Collins, linux-arm-msm, linux-kernel, devicetree, kernel, Fenglin Wu Add a string for hawi-spmi-pmic-arb which is a compat of glymur-spmi-pmic-arb. Signed-off-by: Fenglin Wu <fenglin.wu@oss.qualcomm.com> --- Documentation/devicetree/bindings/spmi/qcom,glymur-spmi-pmic-arb.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/Documentation/devicetree/bindings/spmi/qcom,glymur-spmi-pmic-arb.yaml b/Documentation/devicetree/bindings/spmi/qcom,glymur-spmi-pmic-arb.yaml index 3b5005b96c6d..1593a1183a36 100644 --- a/Documentation/devicetree/bindings/spmi/qcom,glymur-spmi-pmic-arb.yaml +++ b/Documentation/devicetree/bindings/spmi/qcom,glymur-spmi-pmic-arb.yaml @@ -25,6 +25,7 @@ properties: oneOf: - items: - enum: + - qcom,hawi-spmi-pmic-arb - qcom,kaanapali-spmi-pmic-arb - const: qcom,glymur-spmi-pmic-arb - enum: -- 2.43.0 ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 1/2] dt-bindings: spmi: glymur-spmi-pmic-arb: Add compatible for Hawi 2026-04-01 9:41 ` [PATCH 1/2] dt-bindings: spmi: glymur-spmi-pmic-arb: Add compatible for Hawi Fenglin Wu @ 2026-04-01 10:05 ` Konrad Dybcio 2026-04-02 8:37 ` Krzysztof Kozlowski 2026-04-02 8:37 ` Krzysztof Kozlowski 2 siblings, 0 replies; 11+ messages in thread From: Konrad Dybcio @ 2026-04-01 10:05 UTC (permalink / raw) To: Fenglin Wu, Stephen Boyd, Rob Herring, Krzysztof Kozlowski, Conor Dooley Cc: Subbaraman Narayanamurthy, David Collins, linux-arm-msm, linux-kernel, devicetree, kernel On 4/1/26 11:41 AM, Fenglin Wu wrote: > Add a string for hawi-spmi-pmic-arb which is a compat of > glymur-spmi-pmic-arb. > > Signed-off-by: Fenglin Wu <fenglin.wu@oss.qualcomm.com> > --- Considering the driver change wrt the failure bits, I'm on the verge of calling these two compatible.. I suppose one can argue either way since the end result is mostly identical Konrad ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 1/2] dt-bindings: spmi: glymur-spmi-pmic-arb: Add compatible for Hawi 2026-04-01 9:41 ` [PATCH 1/2] dt-bindings: spmi: glymur-spmi-pmic-arb: Add compatible for Hawi Fenglin Wu 2026-04-01 10:05 ` Konrad Dybcio @ 2026-04-02 8:37 ` Krzysztof Kozlowski 2026-04-02 8:37 ` Krzysztof Kozlowski 2 siblings, 0 replies; 11+ messages in thread From: Krzysztof Kozlowski @ 2026-04-02 8:37 UTC (permalink / raw) To: Fenglin Wu Cc: Stephen Boyd, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Konrad Dybcio, Subbaraman Narayanamurthy, David Collins, linux-arm-msm, linux-kernel, devicetree, kernel On Wed, Apr 01, 2026 at 02:41:23AM -0700, Fenglin Wu wrote: > Add a string for hawi-spmi-pmic-arb which is a compat of There is no such term as being a compat of something/someone. > glymur-spmi-pmic-arb. SPMI PMIC Arbiter in Glymur? Best regards, Krzysztof ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 1/2] dt-bindings: spmi: glymur-spmi-pmic-arb: Add compatible for Hawi 2026-04-01 9:41 ` [PATCH 1/2] dt-bindings: spmi: glymur-spmi-pmic-arb: Add compatible for Hawi Fenglin Wu 2026-04-01 10:05 ` Konrad Dybcio 2026-04-02 8:37 ` Krzysztof Kozlowski @ 2026-04-02 8:37 ` Krzysztof Kozlowski 2 siblings, 0 replies; 11+ messages in thread From: Krzysztof Kozlowski @ 2026-04-02 8:37 UTC (permalink / raw) To: Fenglin Wu Cc: Stephen Boyd, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Konrad Dybcio, Subbaraman Narayanamurthy, David Collins, linux-arm-msm, linux-kernel, devicetree, kernel On Wed, Apr 01, 2026 at 02:41:23AM -0700, Fenglin Wu wrote: > Add a string for hawi-spmi-pmic-arb which is a compat of > glymur-spmi-pmic-arb. > > Signed-off-by: Fenglin Wu <fenglin.wu@oss.qualcomm.com> > --- Another patch without any qcom reference. I already complained yesterday internally, but I did not Cc you. Please use subject prefixes matching the subsystem. You can get them for example with 'git log --oneline -- DIRECTORY_OR_FILE' on the directory your patch is touching. For bindings, the preferred subjects are explained here: https://www.kernel.org/doc/html/latest/devicetree/bindings/submitting-patches.html#i-for-patch-submitters Best regards, Krzysztof ^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 2/2] spmi: spmi-pmic-arb: add support for PMIC arbiter v8.5 2026-04-01 9:41 [PATCH 0/2] spmi: pmic-arb: Add spmi-pmic-arb support for Hawi SoC Fenglin Wu 2026-04-01 9:41 ` [PATCH 1/2] dt-bindings: spmi: glymur-spmi-pmic-arb: Add compatible for Hawi Fenglin Wu @ 2026-04-01 9:41 ` Fenglin Wu 2026-04-01 10:03 ` Konrad Dybcio 2026-04-01 11:22 ` Dmitry Baryshkov 1 sibling, 2 replies; 11+ messages in thread From: Fenglin Wu @ 2026-04-01 9:41 UTC (permalink / raw) To: Stephen Boyd, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Konrad Dybcio Cc: Subbaraman Narayanamurthy, David Collins, linux-arm-msm, linux-kernel, devicetree, kernel, Fenglin Wu 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@oss.qualcomm.com> --- 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), }; /* Command register fields */ @@ -201,6 +225,7 @@ struct spmi_pmic_arb_bus { * @max_periphs: Number of elements in apid_data[] * @buses: per arbiter buses instances * @buses_available: number of buses registered + * @chnl_status_mask: Bit masks of channel status fields */ struct spmi_pmic_arb { void __iomem *rd_base; @@ -214,6 +239,7 @@ struct spmi_pmic_arb { int max_periphs; struct spmi_pmic_arb_bus *buses[PMIC_ARB_MAX_BUSES]; int buses_available; + const struct pmic_arb_chnl_status_mask *chnl_status_mask; }; /** @@ -312,6 +338,7 @@ static int pmic_arb_wait_for_done(struct spmi_controller *ctrl, { struct spmi_pmic_arb_bus *bus = spmi_controller_get_drvdata(ctrl); struct spmi_pmic_arb *pmic_arb = bus->pmic_arb; + const struct pmic_arb_chnl_status_mask *mask; u32 status = 0; u32 timeout = PMIC_ARB_TIMEOUT_US; u32 offset; @@ -323,30 +350,49 @@ static int pmic_arb_wait_for_done(struct spmi_controller *ctrl, offset = rc; offset += PMIC_ARB_STATUS; + mask = pmic_arb->chnl_status_mask; while (timeout--) { status = readl_relaxed(base + offset); - if (status & PMIC_ARB_STATUS_DONE) { - if (status & PMIC_ARB_STATUS_DENIED) { + if (status & mask->done) { + if (status & mask->denied) { dev_err(&ctrl->dev, "%s: %#x %#x: transaction denied (%#x)\n", __func__, sid, addr, status); return -EPERM; } - if (status & PMIC_ARB_STATUS_FAILURE) { + if (status & mask->failure) { dev_err(&ctrl->dev, "%s: %#x %#x: transaction failed (%#x) reg: 0x%x\n", __func__, sid, addr, status, offset); WARN_ON(1); return -EIO; } - if (status & PMIC_ARB_STATUS_DROPPED) { + if (status & mask->dropped) { dev_err(&ctrl->dev, "%s: %#x %#x: transaction dropped (%#x)\n", __func__, sid, addr, status); return -EIO; } + if (status & mask->crc) { + dev_err(&ctrl->dev, "%s: %#x %#x: CRC error (%#x)\n", + __func__, sid, addr, status); + return -EIO; + } + + if (status & mask->parity) { + dev_err(&ctrl->dev, "%s: %#x %#x: parity error (%#x)\n", + __func__, sid, addr, status); + return -EIO; + } + + if (status & mask->nack) { + dev_err(&ctrl->dev, "%s: %#x %#x: NACK error (%#x)\n", + __func__, sid, addr, status); + return -EIO; + } + return 0; } udelay(1); @@ -2033,6 +2079,11 @@ static int spmi_pmic_arb_probe(struct platform_device *pdev) else pmic_arb->ver_ops = &pmic_arb_v8; + if (hw_ver < PMIC_ARB_VERSION_V8P5_MIN) + pmic_arb->chnl_status_mask = &chnl_status_mask; + else + pmic_arb->chnl_status_mask = &chnl_status_mask_v8p5; + err = pmic_arb->ver_ops->get_core_resources(pdev, core); if (err) return err; -- 2.43.0 ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 2/2] spmi: spmi-pmic-arb: add support for PMIC arbiter v8.5 2026-04-01 9:41 ` [PATCH 2/2] spmi: spmi-pmic-arb: add support for PMIC arbiter v8.5 Fenglin Wu @ 2026-04-01 10:03 ` Konrad Dybcio 2026-04-01 11:22 ` Dmitry Baryshkov 1 sibling, 0 replies; 11+ messages in thread From: Konrad Dybcio @ 2026-04-01 10:03 UTC (permalink / raw) To: Fenglin Wu, Stephen Boyd, Rob Herring, Krzysztof Kozlowski, Conor Dooley Cc: Subbaraman Narayanamurthy, David Collins, linux-arm-msm, linux-kernel, devicetree, kernel On 4/1/26 11:41 AM, 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@oss.qualcomm.com> > --- Please carry the internal review tags.. Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> Konrad ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 2/2] spmi: spmi-pmic-arb: add support for PMIC arbiter v8.5 2026-04-01 9:41 ` [PATCH 2/2] spmi: spmi-pmic-arb: add support for PMIC arbiter v8.5 Fenglin Wu 2026-04-01 10:03 ` Konrad Dybcio @ 2026-04-01 11:22 ` Dmitry Baryshkov 2026-04-02 4:18 ` Fenglin Wu 1 sibling, 1 reply; 11+ messages in thread From: Dmitry Baryshkov @ 2026-04-01 11:22 UTC (permalink / raw) To: Fenglin Wu Cc: Stephen Boyd, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Konrad Dybcio, Subbaraman Narayanamurthy, David Collins, linux-arm-msm, linux-kernel, devicetree, kernel 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@oss.qualcomm.com> > --- > 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 ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 2/2] spmi: spmi-pmic-arb: add support for PMIC arbiter v8.5 2026-04-01 11:22 ` Dmitry Baryshkov @ 2026-04-02 4:18 ` Fenglin Wu 2026-04-17 5:24 ` Fenglin Wu 0 siblings, 1 reply; 11+ messages in thread From: Fenglin Wu @ 2026-04-02 4:18 UTC (permalink / raw) To: Dmitry Baryshkov Cc: Stephen Boyd, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Konrad Dybcio, Subbaraman Narayanamurthy, David Collins, linux-arm-msm, linux-kernel, devicetree, kernel On 4/1/2026 7:22 PM, Dmitry Baryshkov wrote: > 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@oss.qualcomm.com> >> --- >> 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? Are you proposing to add a callback in pmic_arb_ver_ops, like '*check_chnl_status', and create separate implementations for PMIC arbiter versions before and after v8.5? This approach would add more extensive code changes with some code duplication, especially for handling common error bits shared across all versions—even if they only print error messages and return an error code. Is that a concern? Fenglin ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 2/2] spmi: spmi-pmic-arb: add support for PMIC arbiter v8.5 2026-04-02 4:18 ` Fenglin Wu @ 2026-04-17 5:24 ` Fenglin Wu 2026-04-17 23:29 ` Dmitry Baryshkov 0 siblings, 1 reply; 11+ messages in thread From: Fenglin Wu @ 2026-04-17 5:24 UTC (permalink / raw) To: Dmitry Baryshkov Cc: Stephen Boyd, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Konrad Dybcio, Subbaraman Narayanamurthy, David Collins, linux-arm-msm, linux-kernel, devicetree, kernel On 4/2/2026 12:18 PM, Fenglin Wu wrote: > > On 4/1/2026 7:22 PM, Dmitry Baryshkov wrote: >> 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@oss.qualcomm.com> >>> --- >>> 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? > > Are you proposing to add a callback in pmic_arb_ver_ops, like > '*check_chnl_status', and create separate implementations for PMIC > arbiter versions before and after v8.5? > > This approach would add more extensive code changes with some code > duplication, especially for handling common error bits shared across > all versions—even if they only print error messages and return an > error code. Is that a concern? > > Fenglin Hi Dmitry, Please let me know if this your preferred way and if you are fine with the concern that I mentioned. I can come up with this approach and post a new patch. Thanks Fenglin ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 2/2] spmi: spmi-pmic-arb: add support for PMIC arbiter v8.5 2026-04-17 5:24 ` Fenglin Wu @ 2026-04-17 23:29 ` Dmitry Baryshkov 0 siblings, 0 replies; 11+ messages in thread From: Dmitry Baryshkov @ 2026-04-17 23:29 UTC (permalink / raw) To: Fenglin Wu Cc: Stephen Boyd, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Konrad Dybcio, Subbaraman Narayanamurthy, David Collins, linux-arm-msm, linux-kernel, devicetree, kernel On Fri, Apr 17, 2026 at 01:24:07PM +0800, Fenglin Wu wrote: > > On 4/2/2026 12:18 PM, Fenglin Wu wrote: > > > > On 4/1/2026 7:22 PM, Dmitry Baryshkov wrote: > > > 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@oss.qualcomm.com> > > > > --- > > > > 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? > > > > Are you proposing to add a callback in pmic_arb_ver_ops, like > > '*check_chnl_status', and create separate implementations for PMIC > > arbiter versions before and after v8.5? > > > > This approach would add more extensive code changes with some code > > duplication, especially for handling common error bits shared across all > > versions—even if they only print error messages and return an error > > code. Is that a concern? > > > > Fenglin > > Hi Dmitry, > > Please let me know if this your preferred way and if you are fine with the > concern that I mentioned. > > I can come up with this approach and post a new patch. Sorry. Yes, a somewhat duplicate code would be better than having a bitfields where the individual fields will differ from platform to platform. -- With best wishes Dmitry ^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2026-04-17 23:29 UTC | newest] Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2026-04-01 9:41 [PATCH 0/2] spmi: pmic-arb: Add spmi-pmic-arb support for Hawi SoC Fenglin Wu 2026-04-01 9:41 ` [PATCH 1/2] dt-bindings: spmi: glymur-spmi-pmic-arb: Add compatible for Hawi Fenglin Wu 2026-04-01 10:05 ` Konrad Dybcio 2026-04-02 8:37 ` Krzysztof Kozlowski 2026-04-02 8:37 ` Krzysztof Kozlowski 2026-04-01 9:41 ` [PATCH 2/2] spmi: spmi-pmic-arb: add support for PMIC arbiter v8.5 Fenglin Wu 2026-04-01 10:03 ` Konrad Dybcio 2026-04-01 11:22 ` Dmitry Baryshkov 2026-04-02 4:18 ` Fenglin Wu 2026-04-17 5:24 ` Fenglin Wu 2026-04-17 23:29 ` Dmitry Baryshkov
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®