* [PATCH 0/7] Support exposing bits of any byte as NVMEM cells @ 2025-05-10 7:44 Sven Peter via B4 Relay 2025-05-10 7:44 ` [PATCH 1/7] nvmem: core: allow bit offset > 8 Sven Peter via B4 Relay ` (8 more replies) 0 siblings, 9 replies; 12+ messages in thread From: Sven Peter via B4 Relay @ 2025-05-10 7:44 UTC (permalink / raw) To: Srinivas Kandagatla, Janne Grunau, Alyssa Rosenzweig, Neal Gompa, Rob Herring, Krzysztof Kozlowski, Conor Dooley Cc: linux-kernel, asahi, linux-arm-kernel, devicetree, Sven Peter, R Hi, I'm preparing USB3 support for Apple Silicon Macs for upstreaming right now and this series is the first dependency. The Type-C PHY requires configuration values encoded in fuses for which we already have a driver. Unfortunately, the fuses on these machines are only accessibly as 32bit words but the Type-C PHY configuration values are individual bits which are sometimes spread across multiple fuses. Right now this is not supported by the nvmem core which only allows a subset of bits within the first byte to be exposed as a nvmem cell. This small series adds support for exposing arbitrary bits as nvmem cells. The second part of the series then adds the nvmem cells required for the Type-C PHY to our device trees. While it's technically independent I've included those changes in this series for context. Best, Sven Signed-off-by: Sven Peter <sven@svenpeter.dev> --- Janne Grunau (2): Revert "nvmem: core: Print error on wrong bits DT property" arm64: dts: apple: t8112: Add eFuses node R (1): arm64: dts: apple: t600x: Add eFuses node Sven Peter (4): nvmem: core: allow bit offset > 8 nvmem: core: round up to word_size dt-bindings: nvmem: apple: Add T8112 compatible arm64: dts: apple: t8103: Add eFuses node .../devicetree/bindings/nvmem/apple,efuses.yaml | 1 + arch/arm64/boot/dts/apple/t600x-dieX.dtsi | 187 +++++++++++++++++++++ arch/arm64/boot/dts/apple/t8103.dtsi | 102 +++++++++++ arch/arm64/boot/dts/apple/t8112.dtsi | 97 +++++++++++ drivers/nvmem/core.c | 24 +-- 5 files changed, 401 insertions(+), 10 deletions(-) --- base-commit: 0af2f6be1b4281385b618cb86ad946eded089ac8 change-id: 20250508-nvmem-dt-de1a1842e883 Best regards, -- Sven Peter <sven@svenpeter.dev> ^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH 1/7] nvmem: core: allow bit offset > 8 2025-05-10 7:44 [PATCH 0/7] Support exposing bits of any byte as NVMEM cells Sven Peter via B4 Relay @ 2025-05-10 7:44 ` Sven Peter via B4 Relay 2025-05-10 7:44 ` [PATCH 2/7] nvmem: core: round up to word_size Sven Peter via B4 Relay ` (7 subsequent siblings) 8 siblings, 0 replies; 12+ messages in thread From: Sven Peter via B4 Relay @ 2025-05-10 7:44 UTC (permalink / raw) To: Srinivas Kandagatla, Janne Grunau, Alyssa Rosenzweig, Neal Gompa, Rob Herring, Krzysztof Kozlowski, Conor Dooley Cc: linux-kernel, asahi, linux-arm-kernel, devicetree, Sven Peter From: Sven Peter <sven@svenpeter.dev> Some nvmem controllers like Apple's eFuses or Nintendo's OTP have a cell size that's larger than one byte. Consumers may however still need access to a subset of bits that start after the first byte. Signed-off-by: Sven Peter <sven@svenpeter.dev> --- drivers/nvmem/core.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/drivers/nvmem/core.c b/drivers/nvmem/core.c index fff85bbf0ecd0f638e21f127370105d9f79c00d2..1bd39b12c21a86b9b135be95251a52a10543c2ea 100644 --- a/drivers/nvmem/core.c +++ b/drivers/nvmem/core.c @@ -1630,15 +1630,24 @@ EXPORT_SYMBOL_GPL(nvmem_cell_put); static void nvmem_shift_read_buffer_in_place(struct nvmem_cell_entry *cell, void *buf) { u8 *p, *b; - int i, extra, bit_offset = cell->bit_offset; + int i, padding, extra, bit_offset = cell->bit_offset; + int bytes = cell->bytes; p = b = buf; if (bit_offset) { + /* Remove any full bytes at the beginning that contain no bits of interest */ + padding = bit_offset / BITS_PER_BYTE; + if (padding) { + memmove(buf, buf + padding, bytes - padding); + bit_offset -= BITS_PER_BYTE * padding; + bytes -= padding; + } + /* First shift */ *b++ >>= bit_offset; /* setup rest of the bytes if any */ - for (i = 1; i < cell->bytes; i++) { + for (i = 1; i < bytes; i++) { /* Get bits from next byte and shift them towards msb */ *p |= *b << (BITS_PER_BYTE - bit_offset); @@ -1651,7 +1660,7 @@ static void nvmem_shift_read_buffer_in_place(struct nvmem_cell_entry *cell, void } /* result fits in less bytes */ - extra = cell->bytes - DIV_ROUND_UP(cell->nbits, BITS_PER_BYTE); + extra = bytes - DIV_ROUND_UP(cell->nbits, BITS_PER_BYTE); while (--extra >= 0) *p-- = 0; -- 2.34.1 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH 2/7] nvmem: core: round up to word_size 2025-05-10 7:44 [PATCH 0/7] Support exposing bits of any byte as NVMEM cells Sven Peter via B4 Relay 2025-05-10 7:44 ` [PATCH 1/7] nvmem: core: allow bit offset > 8 Sven Peter via B4 Relay @ 2025-05-10 7:44 ` Sven Peter via B4 Relay 2025-05-10 7:44 ` [PATCH 3/7] Revert "nvmem: core: Print error on wrong bits DT property" Sven Peter via B4 Relay ` (6 subsequent siblings) 8 siblings, 0 replies; 12+ messages in thread From: Sven Peter via B4 Relay @ 2025-05-10 7:44 UTC (permalink / raw) To: Srinivas Kandagatla, Janne Grunau, Alyssa Rosenzweig, Neal Gompa, Rob Herring, Krzysztof Kozlowski, Conor Dooley Cc: linux-kernel, asahi, linux-arm-kernel, devicetree, Sven Peter From: Sven Peter <sven@svenpeter.dev> Some nvmem controllers like Apple's eFuses or Nintendo's OTP have a cell word size that's larger than one byte and cannot read anything smaller. Round up cell->bytes correctly when accessing a subset of bits. Signed-off-by: Sven Peter <sven@svenpeter.dev> --- drivers/nvmem/core.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/nvmem/core.c b/drivers/nvmem/core.c index 1bd39b12c21a86b9b135be95251a52a10543c2ea..02081c93fa467e5448bd78a4920072d437365fb9 100644 --- a/drivers/nvmem/core.c +++ b/drivers/nvmem/core.c @@ -595,8 +595,8 @@ static int nvmem_cell_info_to_nvmem_cell_entry_nodup(struct nvmem_device *nvmem, cell->np = info->np; if (cell->nbits) - cell->bytes = DIV_ROUND_UP(cell->nbits + cell->bit_offset, - BITS_PER_BYTE); + cell->bytes = round_up(DIV_ROUND_UP(cell->nbits + cell->bit_offset, + BITS_PER_BYTE), nvmem->word_size); if (!IS_ALIGNED(cell->offset, nvmem->stride)) { dev_err(&nvmem->dev, -- 2.34.1 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH 3/7] Revert "nvmem: core: Print error on wrong bits DT property" 2025-05-10 7:44 [PATCH 0/7] Support exposing bits of any byte as NVMEM cells Sven Peter via B4 Relay 2025-05-10 7:44 ` [PATCH 1/7] nvmem: core: allow bit offset > 8 Sven Peter via B4 Relay 2025-05-10 7:44 ` [PATCH 2/7] nvmem: core: round up to word_size Sven Peter via B4 Relay @ 2025-05-10 7:44 ` Sven Peter via B4 Relay 2025-05-10 7:44 ` [PATCH 4/7] dt-bindings: nvmem: apple: Add T8112 compatible Sven Peter via B4 Relay ` (5 subsequent siblings) 8 siblings, 0 replies; 12+ messages in thread From: Sven Peter via B4 Relay @ 2025-05-10 7:44 UTC (permalink / raw) To: Srinivas Kandagatla, Janne Grunau, Alyssa Rosenzweig, Neal Gompa, Rob Herring, Krzysztof Kozlowski, Conor Dooley Cc: linux-kernel, asahi, linux-arm-kernel, devicetree, Sven Peter From: Janne Grunau <j@jannau.net> This reverts commit def3173d4f17b37cecbd74d7c269a080b0b01598. Now that the core supports accessing bits even beyond the first byte this additional error check is no longer required. Signed-off-by: Janne Grunau <j@jannau.net> Signed-off-by: Sven Peter <sven@svenpeter.dev> --- drivers/nvmem/core.c | 5 ----- 1 file changed, 5 deletions(-) diff --git a/drivers/nvmem/core.c b/drivers/nvmem/core.c index 02081c93fa467e5448bd78a4920072d437365fb9..ef1f59b34d262a533fb601d87fec123061cfff81 100644 --- a/drivers/nvmem/core.c +++ b/drivers/nvmem/core.c @@ -837,11 +837,6 @@ static int nvmem_add_cells_from_dt(struct nvmem_device *nvmem, struct device_nod if (addr && len == (2 * sizeof(u32))) { info.bit_offset = be32_to_cpup(addr++); info.nbits = be32_to_cpup(addr); - if (info.bit_offset >= BITS_PER_BYTE || info.nbits < 1) { - dev_err(dev, "nvmem: invalid bits on %pOF\n", child); - of_node_put(child); - return -EINVAL; - } } info.np = of_node_get(child); -- 2.34.1 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH 4/7] dt-bindings: nvmem: apple: Add T8112 compatible 2025-05-10 7:44 [PATCH 0/7] Support exposing bits of any byte as NVMEM cells Sven Peter via B4 Relay ` (2 preceding siblings ...) 2025-05-10 7:44 ` [PATCH 3/7] Revert "nvmem: core: Print error on wrong bits DT property" Sven Peter via B4 Relay @ 2025-05-10 7:44 ` Sven Peter via B4 Relay 2025-05-14 20:34 ` Rob Herring 2025-05-10 7:44 ` [PATCH 5/7] arm64: dts: apple: t8103: Add eFuses node Sven Peter via B4 Relay ` (4 subsequent siblings) 8 siblings, 1 reply; 12+ messages in thread From: Sven Peter via B4 Relay @ 2025-05-10 7:44 UTC (permalink / raw) To: Srinivas Kandagatla, Janne Grunau, Alyssa Rosenzweig, Neal Gompa, Rob Herring, Krzysztof Kozlowski, Conor Dooley Cc: linux-kernel, asahi, linux-arm-kernel, devicetree, Sven Peter From: Sven Peter <sven@svenpeter.dev> The eFuse controller found in Apple's M2 is compatible to the one found in M1 SoCs Signed-off-by: Sven Peter <sven@svenpeter.dev> --- Documentation/devicetree/bindings/nvmem/apple,efuses.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/Documentation/devicetree/bindings/nvmem/apple,efuses.yaml b/Documentation/devicetree/bindings/nvmem/apple,efuses.yaml index d3abdafdbca06245cdba000ce2ca757b5ce77d3f..2e8b014e9854a1a25d662bab75fee773c62369cd 100644 --- a/Documentation/devicetree/bindings/nvmem/apple,efuses.yaml +++ b/Documentation/devicetree/bindings/nvmem/apple,efuses.yaml @@ -24,6 +24,7 @@ properties: - enum: - apple,t8103-efuses - apple,t6000-efuses + - apple,t8112-efuses - const: apple,efuses reg: -- 2.34.1 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH 4/7] dt-bindings: nvmem: apple: Add T8112 compatible 2025-05-10 7:44 ` [PATCH 4/7] dt-bindings: nvmem: apple: Add T8112 compatible Sven Peter via B4 Relay @ 2025-05-14 20:34 ` Rob Herring 0 siblings, 0 replies; 12+ messages in thread From: Rob Herring @ 2025-05-14 20:34 UTC (permalink / raw) To: Sven Peter Cc: Srinivas Kandagatla, Janne Grunau, Alyssa Rosenzweig, Neal Gompa, Krzysztof Kozlowski, Conor Dooley, linux-kernel, asahi, linux-arm-kernel, devicetree On Sat, May 10, 2025 at 07:44:44AM +0000, Sven Peter wrote: > The eFuse controller found in Apple's M2 is compatible to the one found > in M1 SoCs > > Signed-off-by: Sven Peter <sven@svenpeter.dev> > --- > Documentation/devicetree/bindings/nvmem/apple,efuses.yaml | 1 + > 1 file changed, 1 insertion(+) Acked-by: Rob Herring (Arm) <robh@kernel.org> ^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH 5/7] arm64: dts: apple: t8103: Add eFuses node 2025-05-10 7:44 [PATCH 0/7] Support exposing bits of any byte as NVMEM cells Sven Peter via B4 Relay ` (3 preceding siblings ...) 2025-05-10 7:44 ` [PATCH 4/7] dt-bindings: nvmem: apple: Add T8112 compatible Sven Peter via B4 Relay @ 2025-05-10 7:44 ` Sven Peter via B4 Relay 2025-05-10 7:44 ` [PATCH 6/7] arm64: dts: apple: t600x: " Sven Peter via B4 Relay ` (3 subsequent siblings) 8 siblings, 0 replies; 12+ messages in thread From: Sven Peter via B4 Relay @ 2025-05-10 7:44 UTC (permalink / raw) To: Srinivas Kandagatla, Janne Grunau, Alyssa Rosenzweig, Neal Gompa, Rob Herring, Krzysztof Kozlowski, Conor Dooley Cc: linux-kernel, asahi, linux-arm-kernel, devicetree, Sven Peter From: Sven Peter <sven@svenpeter.dev> Add the eFuse controller and the nvmem cells required for both Type-C PHYs. Signed-off-by: Sven Peter <sven@svenpeter.dev> --- arch/arm64/boot/dts/apple/t8103.dtsi | 102 +++++++++++++++++++++++++++++++++++ 1 file changed, 102 insertions(+) diff --git a/arch/arm64/boot/dts/apple/t8103.dtsi b/arch/arm64/boot/dts/apple/t8103.dtsi index 97b6a067394e311ed19392a34237c74936dbb7d7..e7ca9204a9a2fedc70111fdd8ed3f7e8e4f8d266 100644 --- a/arch/arm64/boot/dts/apple/t8103.dtsi +++ b/arch/arm64/boot/dts/apple/t8103.dtsi @@ -854,6 +854,108 @@ nvme@27bcc0000 { resets = <&ps_ans2>; }; + efuse@23d2bc000 { + compatible = "apple,t8103-efuses", "apple,efuses"; + reg = <0x2 0x3d2bc000 0x0 0x1000>; + #address-cells = <1>; + #size-cells = <1>; + + atcphy0_auspll_rodco_bias_adjust: efuse@430,26 { + reg = <0x430 4>; + bits = <26 3>; + }; + + atcphy0_auspll_rodco_encap: efuse@430,29 { + reg = <0x430 4>; + bits = <29 2>; + }; + + atcphy0_auspll_dtc_vreg_adjust: efuse@430,31 { + reg = <0x430 8>; + bits = <31 3>; + }; + + atcphy0_auspll_fracn_dll_start_capcode: efuse@434,2 { + reg = <0x434 4>; + bits = <2 2>; + }; + + atcphy0_aus_cmn_shm_vreg_trim: efuse@434,4 { + reg = <0x434 4>; + bits = <4 5>; + }; + + atcphy0_cio3pll_dco_coarsebin0: efuse@434,9 { + reg = <0x434 4>; + bits = <9 6>; + }; + + atcphy0_cio3pll_dco_coarsebin1: efuse@434,15 { + reg = <0x434 4>; + bits = <15 6>; + }; + + atcphy0_cio3pll_dll_start_capcode: efuse@434,21 { + reg = <0x434 4>; + bits = <21 2>; + }; + + atcphy0_cio3pll_dtc_vreg_adjust: efuse@434,23 { + reg = <0x434 0x4>; + bits = <23 3>; + }; + + atcphy1_auspll_rodco_bias_adjust: efuse@438,4 { + reg = <0x438 4>; + bits = <4 3>; + }; + + atcphy1_auspll_rodco_encap: efuse@438,7 { + reg = <0x438 4>; + bits = <7 2>; + }; + + atcphy1_auspll_dtc_vreg_adjust: efuse@438,9 { + reg = <0x438 4>; + bits = <9 3>; + }; + + atcphy1_auspll_fracn_dll_start_capcode: efuse@438,12 { + reg = <0x438 4>; + bits = <12 2>; + }; + + atcphy1_aus_cmn_shm_vreg_trim: efuse@438,14 { + reg = <0x438 4>; + bits = <14 5>; + }; + + atcphy1_cio3pll_dco_coarsebin0: efuse@438,19 { + reg = <0x438 4>; + bits = <19 6>; + }; + + atcphy1_cio3pll_dco_coarsebin1: efuse@438,25 { + reg = <0x438 4>; + bits = <25 6>; + }; + + atcphy1_cio3pll_dll_start_capcode: efuse@438,31 { + reg = <0x438 4>; + bits = <31 1>; + }; + + atcphy1_cio3pll_dll_start_capcode_workaround: efuse@43c,0 { + reg = <0x43c 0x4>; + bits = <0 1>; + }; + + atcphy1_cio3pll_dtc_vreg_adjust: efuse@43c,1 { + reg = <0x43c 0x4>; + bits = <1 3>; + }; + }; + pcie0_dart_0: iommu@681008000 { compatible = "apple,t8103-dart"; reg = <0x6 0x81008000 0x0 0x4000>; -- 2.34.1 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH 6/7] arm64: dts: apple: t600x: Add eFuses node 2025-05-10 7:44 [PATCH 0/7] Support exposing bits of any byte as NVMEM cells Sven Peter via B4 Relay ` (4 preceding siblings ...) 2025-05-10 7:44 ` [PATCH 5/7] arm64: dts: apple: t8103: Add eFuses node Sven Peter via B4 Relay @ 2025-05-10 7:44 ` Sven Peter via B4 Relay 2025-05-10 7:44 ` [PATCH 7/7] arm64: dts: apple: t8112: " Sven Peter via B4 Relay ` (2 subsequent siblings) 8 siblings, 0 replies; 12+ messages in thread From: Sven Peter via B4 Relay @ 2025-05-10 7:44 UTC (permalink / raw) To: Srinivas Kandagatla, Janne Grunau, Alyssa Rosenzweig, Neal Gompa, Rob Herring, Krzysztof Kozlowski, Conor Dooley Cc: linux-kernel, asahi, linux-arm-kernel, devicetree, Sven Peter, R From: R <rqou@berkeley.edu> Add the eFuse controller and the nvmem cells required for all Type-C PHYs Signed-off-by: R <rqou@berkeley.edu> Signed-off-by: Sven Peter <sven@svenpeter.dev> --- arch/arm64/boot/dts/apple/t600x-dieX.dtsi | 187 ++++++++++++++++++++++++++++++ 1 file changed, 187 insertions(+) diff --git a/arch/arm64/boot/dts/apple/t600x-dieX.dtsi b/arch/arm64/boot/dts/apple/t600x-dieX.dtsi index a32ff0c9d7b0c2ec720e9d4cf8e769da6431fbba..22deae50864c88cc7ede73946778c5157e836c9e 100644 --- a/arch/arm64/boot/dts/apple/t600x-dieX.dtsi +++ b/arch/arm64/boot/dts/apple/t600x-dieX.dtsi @@ -74,6 +74,193 @@ DIE_NODE(pmgr_mini): power-management@292280000 { reg = <0x2 0x92280000 0 0x4000>; }; + DIE_NODE(efuse): efuse@2922bc000 { + compatible = "apple,t6000-efuses", "apple,efuses"; + reg = <0x2 0x922bc000 0x0 0x2000>; + #address-cells = <1>; + #size-cells = <1>; + + DIE_NODE(atcphy0_auspll_rodco_bias_adjust): efuse@a10,22 { + reg = <0xa10 4>; + bits = <22 3>; + }; + + DIE_NODE(atcphy0_auspll_rodco_encap): efuse@a10,25 { + reg = <0xa10 4>; + bits = <25 2>; + }; + + DIE_NODE(atcphy0_auspll_dtc_vreg_adjust): efuse@a10,27 { + reg = <0xa10 4>; + bits = <27 3>; + }; + + DIE_NODE(atcphy0_auspll_fracn_dll_start_capcode): efuse@a10,30 { + reg = <0xa10 4>; + bits = <30 2>; + }; + + DIE_NODE(atcphy0_aus_cmn_shm_vreg_trim): efuse@a14,0 { + reg = <0xa14 4>; + bits = <0 5>; + }; + + DIE_NODE(atcphy0_cio3pll_dco_coarsebin0): efuse@a14,5 { + reg = <0xa14 4>; + bits = <5 6>; + }; + + DIE_NODE(atcphy0_cio3pll_dco_coarsebin1): efuse@a14,11 { + reg = <0xa14 4>; + bits = <11 6>; + }; + + DIE_NODE(atcphy0_cio3pll_dll_start_capcode): efuse@a14,17 { + reg = <0xa14 4>; + bits = <17 2>; + }; + + DIE_NODE(atcphy0_cio3pll_dtc_vreg_adjust): efuse@a14,19 { + reg = <0xa14 4>; + bits = <19 3>; + }; + + DIE_NODE(atcphy1_auspll_rodco_bias_adjust): efuse@a18,0 { + reg = <0xa18 4>; + bits = <0 3>; + }; + + DIE_NODE(atcphy1_auspll_rodco_encap): efuse@a18,3 { + reg = <0xa18 4>; + bits = <3 2>; + }; + + DIE_NODE(atcphy1_auspll_dtc_vreg_adjust): efuse@a18,5 { + reg = <0xa18 4>; + bits = <5 3>; + }; + + DIE_NODE(atcphy1_auspll_fracn_dll_start_capcode): efuse@a18,8 { + reg = <0xa18 4>; + bits = <8 2>; + }; + + DIE_NODE(atcphy1_aus_cmn_shm_vreg_trim): efuse@a18,10 { + reg = <0xa18 4>; + bits = <10 5>; + }; + + DIE_NODE(atcphy1_cio3pll_dco_coarsebin0): efuse@a18,15 { + reg = <0xa18 4>; + bits = <15 6>; + }; + + DIE_NODE(atcphy1_cio3pll_dco_coarsebin1): efuse@a18,21 { + reg = <0xa18 4>; + bits = <21 6>; + }; + + DIE_NODE(atcphy1_cio3pll_dll_start_capcode): efuse@a18,27 { + reg = <0xa18 4>; + bits = <27 2>; + }; + + DIE_NODE(atcphy1_cio3pll_dtc_vreg_adjust): efuse@a18,29 { + reg = <0xa18 4>; + bits = <29 3>; + }; + + DIE_NODE(atcphy2_auspll_rodco_bias_adjust): efuse@a1c,10 { + reg = <0xa1c 4>; + bits = <10 3>; + }; + + DIE_NODE(atcphy2_auspll_rodco_encap): efuse@a1c,13 { + reg = <0xa1c 4>; + bits = <13 2>; + }; + + DIE_NODE(atcphy2_auspll_dtc_vreg_adjust): efuse@a1c,15 { + reg = <0xa1c 4>; + bits = <15 3>; + }; + + DIE_NODE(atcphy2_auspll_fracn_dll_start_capcode): efuse@a1c,18 { + reg = <0xa1c 4>; + bits = <18 2>; + }; + + DIE_NODE(atcphy2_aus_cmn_shm_vreg_trim): efuse@a1c,20 { + reg = <0xa1c 4>; + bits = <20 5>; + }; + + DIE_NODE(atcphy2_cio3pll_dco_coarsebin0): efuse@a1c,25 { + reg = <0xa1c 4>; + bits = <25 6>; + }; + + DIE_NODE(atcphy2_cio3pll_dco_coarsebin1): efuse@a1c,31 { + reg = <0xa1c 8>; + bits = <31 6>; + }; + + DIE_NODE(atcphy2_cio3pll_dll_start_capcode): efuse@a20,5 { + reg = <0xa20 4>; + bits = <5 2>; + }; + + DIE_NODE(atcphy2_cio3pll_dtc_vreg_adjust): efuse@a20,7 { + reg = <0xa20 4>; + bits = <7 3>; + }; + + DIE_NODE(atcphy3_auspll_rodco_bias_adjust): efuse@a20,20 { + reg = <0xa20 4>; + bits = <20 3>; + }; + + DIE_NODE(atcphy3_auspll_rodco_encap): efuse@a20,23 { + reg = <0xa20 4>; + bits = <23 2>; + }; + + DIE_NODE(atcphy3_auspll_dtc_vreg_adjust): efuse@a20,25 { + reg = <0xa20 4>; + bits = <25 3>; + }; + + DIE_NODE(atcphy3_auspll_fracn_dll_start_capcode): efuse@a20,28 { + reg = <0xa20 4>; + bits = <28 2>; + }; + + DIE_NODE(atcphy3_aus_cmn_shm_vreg_trim): efuse@a20,30 { + reg = <0xa20 8>; + bits = <30 5>; + }; + + DIE_NODE(atcphy3_cio3pll_dco_coarsebin0): efuse@a24,3 { + reg = <0xa24 4>; + bits = <3 6>; + }; + + DIE_NODE(atcphy3_cio3pll_dco_coarsebin1): efuse@a24,9 { + reg = <0xa24 4>; + bits = <9 6>; + }; + + DIE_NODE(atcphy3_cio3pll_dll_start_capcode): efuse@a24,15 { + reg = <0xa24 4>; + bits = <15 2>; + }; + + DIE_NODE(atcphy3_cio3pll_dtc_vreg_adjust): efuse@a24,17 { + reg = <0xa24 4>; + bits = <17 3>; + }; + }; + DIE_NODE(pinctrl_aop): pinctrl@293820000 { compatible = "apple,t6000-pinctrl", "apple,pinctrl"; reg = <0x2 0x93820000 0x0 0x4000>; -- 2.34.1 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH 7/7] arm64: dts: apple: t8112: Add eFuses node 2025-05-10 7:44 [PATCH 0/7] Support exposing bits of any byte as NVMEM cells Sven Peter via B4 Relay ` (5 preceding siblings ...) 2025-05-10 7:44 ` [PATCH 6/7] arm64: dts: apple: t600x: " Sven Peter via B4 Relay @ 2025-05-10 7:44 ` Sven Peter via B4 Relay 2025-05-12 12:49 ` [PATCH 0/7] Support exposing bits of any byte as NVMEM cells Rob Herring (Arm) 2025-05-14 20:32 ` Rob Herring 8 siblings, 0 replies; 12+ messages in thread From: Sven Peter via B4 Relay @ 2025-05-10 7:44 UTC (permalink / raw) To: Srinivas Kandagatla, Janne Grunau, Alyssa Rosenzweig, Neal Gompa, Rob Herring, Krzysztof Kozlowski, Conor Dooley Cc: linux-kernel, asahi, linux-arm-kernel, devicetree, Sven Peter From: Janne Grunau <j@jannau.net> Add the eFuse controller and the nvmem cells required for both Type-C PHYs Signed-off-by: Janne Grunau <j@jannau.net> Signed-off-by: Sven Peter <sven@svenpeter.dev> --- arch/arm64/boot/dts/apple/t8112.dtsi | 97 ++++++++++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) diff --git a/arch/arm64/boot/dts/apple/t8112.dtsi b/arch/arm64/boot/dts/apple/t8112.dtsi index d9b966d68e4fae2dfb21d6fb7a97ebba81643ae8..4dec6415ef73e922dd574997569ad0e6acbc9658 100644 --- a/arch/arm64/boot/dts/apple/t8112.dtsi +++ b/arch/arm64/boot/dts/apple/t8112.dtsi @@ -782,6 +782,103 @@ wdt: watchdog@23d2b0000 { interrupts = <AIC_IRQ 379 IRQ_TYPE_LEVEL_HIGH>; }; + efuse@23d2c8000 { + compatible = "apple,t8112-efuses", "apple,efuses"; + reg = <0x2 0x3d2c8000 0x0 0x1000>; + #address-cells = <1>; + #size-cells = <1>; + + atcphy0_auspll_rodco_bias_adjust: efuse@480,20 { + reg = <0x480 4>; + bits = <20 3>; + }; + + atcphy0_auspll_rodco_encap: efuse@480,23 { + reg = <0x480 4>; + bits = <23 2>; + }; + + atcphy0_auspll_dtc_vreg_adjust: efuse@480,25 { + reg = <0x480 4>; + bits = <25 3>; + }; + + atcphy0_auspll_fracn_dll_start_capcode: efuse@480,28 { + reg = <0x480 4>; + bits = <28 2>; + }; + + atcphy0_aus_cmn_shm_vreg_trim: efuse@480,30 { + reg = <0x480 8>; + bits = <30 5>; + }; + + atcphy0_cio3pll_dco_coarsebin0: efuse@484,3 { + reg = <0x484 4>; + bits = <3 6>; + }; + + atcphy0_cio3pll_dco_coarsebin1: efuse@484,9 { + reg = <0x484 4>; + bits = <9 6>; + }; + + atcphy0_cio3pll_dll_start_capcode: efuse@484,15 { + reg = <0x484 4>; + bits = <15 2>; + }; + + atcphy0_cio3pll_dtc_vreg_adjust: efuse@484,17 { + reg = <0x484 0x4>; + bits = <17 3>; + }; + + atcphy1_auspll_rodco_bias_adjust: efuse@484,30 { + reg = <0x484 8>; + bits = <30 3>; + }; + + atcphy1_auspll_rodco_encap: efuse@488,1 { + reg = <0x488 8>; + bits = <1 2>; + }; + + atcphy1_auspll_dtc_vreg_adjust: efuse@488,3 { + reg = <0x488 4>; + bits = <3 3>; + }; + + atcphy1_auspll_fracn_dll_start_capcode: efuse@488,6 { + reg = <0x488 4>; + bits = <6 2>; + }; + + atcphy1_aus_cmn_shm_vreg_trim: efuse@488,8 { + reg = <0x488 4>; + bits = <8 5>; + }; + + atcphy1_cio3pll_dco_coarsebin0: efuse@488,13 { + reg = <0x488 4>; + bits = <13 6>; + }; + + atcphy1_cio3pll_dco_coarsebin1: efuse@488,19 { + reg = <0x488 4>; + bits = <19 6>; + }; + + atcphy1_cio3pll_dll_start_capcode: efuse@488,25 { + reg = <0x488 4>; + bits = <25 2>; + }; + + atcphy1_cio3pll_dtc_vreg_adjust: efuse@488,27 { + reg = <0x488 0x4>; + bits = <27 3>; + }; + }; + pinctrl_smc: pinctrl@23e820000 { compatible = "apple,t8112-pinctrl", "apple,pinctrl"; reg = <0x2 0x3e820000 0x0 0x4000>; -- 2.34.1 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH 0/7] Support exposing bits of any byte as NVMEM cells 2025-05-10 7:44 [PATCH 0/7] Support exposing bits of any byte as NVMEM cells Sven Peter via B4 Relay ` (6 preceding siblings ...) 2025-05-10 7:44 ` [PATCH 7/7] arm64: dts: apple: t8112: " Sven Peter via B4 Relay @ 2025-05-12 12:49 ` Rob Herring (Arm) 2025-05-14 20:32 ` Rob Herring 8 siblings, 0 replies; 12+ messages in thread From: Rob Herring (Arm) @ 2025-05-12 12:49 UTC (permalink / raw) To: Sven Peter Cc: Janne Grunau, asahi, devicetree, Conor Dooley, linux-arm-kernel, Alyssa Rosenzweig, Neal Gompa, Krzysztof Kozlowski, R, Srinivas Kandagatla, linux-kernel On Sat, 10 May 2025 07:44:40 +0000, Sven Peter wrote: > Hi, > > I'm preparing USB3 support for Apple Silicon Macs for upstreaming right > now and this series is the first dependency. The Type-C PHY requires > configuration values encoded in fuses for which we already have a > driver. > Unfortunately, the fuses on these machines are only accessibly as 32bit > words but the Type-C PHY configuration values are individual bits which > are sometimes spread across multiple fuses. > Right now this is not supported by the nvmem core which only allows a > subset of bits within the first byte to be exposed as a nvmem cell. This > small series adds support for exposing arbitrary bits as nvmem cells. > > The second part of the series then adds the nvmem cells required for the > Type-C PHY to our device trees. While it's technically independent I've > included those changes in this series for context. > > Best, > > Sven > > Signed-off-by: Sven Peter <sven@svenpeter.dev> > --- > Janne Grunau (2): > Revert "nvmem: core: Print error on wrong bits DT property" > arm64: dts: apple: t8112: Add eFuses node > > R (1): > arm64: dts: apple: t600x: Add eFuses node > > Sven Peter (4): > nvmem: core: allow bit offset > 8 > nvmem: core: round up to word_size > dt-bindings: nvmem: apple: Add T8112 compatible > arm64: dts: apple: t8103: Add eFuses node > > .../devicetree/bindings/nvmem/apple,efuses.yaml | 1 + > arch/arm64/boot/dts/apple/t600x-dieX.dtsi | 187 +++++++++++++++++++++ > arch/arm64/boot/dts/apple/t8103.dtsi | 102 +++++++++++ > arch/arm64/boot/dts/apple/t8112.dtsi | 97 +++++++++++ > drivers/nvmem/core.c | 24 +-- > 5 files changed, 401 insertions(+), 10 deletions(-) > --- > base-commit: 0af2f6be1b4281385b618cb86ad946eded089ac8 > change-id: 20250508-nvmem-dt-de1a1842e883 > > Best regards, > -- > Sven Peter <sven@svenpeter.dev> > > > My bot found new DTB warnings on the .dts files added or changed in this series. Some warnings may be from an existing SoC .dtsi. Or perhaps the warnings are fixed by another series. Ultimately, it is up to the platform maintainer whether these warnings are acceptable or not. No need to reply unless the platform maintainer has comments. If you already ran DT checks and didn't see these error(s), then make sure dt-schema is up to date: pip3 install dtschema --upgrade This patch series was applied (using b4) to base: Base: using specified base-commit 0af2f6be1b4281385b618cb86ad946eded089ac8 If this is not the correct base, please add 'base-commit' tag (or use b4 which does this automatically) New warnings running 'make CHECK_DTBS=y for arch/arm64/boot/dts/apple/' for 20250510-nvmem-dt-v1-0-eccfa6e33f6a@svenpeter.dev: arch/arm64/boot/dts/apple/t8103-j313.dtb: efuse@23d2bc000 (apple,t8103-efuses): Unevaluated properties are not allowed ('efuse@430,26', 'efuse@430,29', 'efuse@430,31', 'efuse@434,15', 'efuse@434,21', 'efuse@434,23', 'efuse@434,9', 'efuse@438,12', 'efuse@438,14', 'efuse@438,19', 'efuse@438,25', 'efuse@438,31', 'efuse@438,9' were unexpected) from schema $id: http://devicetree.org/schemas/nvmem/apple,efuses.yaml# arch/arm64/boot/dts/apple/t8112-j493.dtb: efuse@23d2c8000 (apple,t8112-efuses): Unevaluated properties are not allowed ('efuse@480,20', 'efuse@480,23', 'efuse@480,25', 'efuse@480,28', 'efuse@480,30', 'efuse@484,15', 'efuse@484,17', 'efuse@484,30', 'efuse@484,9', 'efuse@488,13', 'efuse@488,19', 'efuse@488,25', 'efuse@488,27', 'efuse@488,8' were unexpected) from schema $id: http://devicetree.org/schemas/nvmem/apple,efuses.yaml# arch/arm64/boot/dts/apple/t8112-j413.dtb: efuse@23d2c8000 (apple,t8112-efuses): Unevaluated properties are not allowed ('efuse@480,20', 'efuse@480,23', 'efuse@480,25', 'efuse@480,28', 'efuse@480,30', 'efuse@484,15', 'efuse@484,17', 'efuse@484,30', 'efuse@484,9', 'efuse@488,13', 'efuse@488,19', 'efuse@488,25', 'efuse@488,27', 'efuse@488,8' were unexpected) from schema $id: http://devicetree.org/schemas/nvmem/apple,efuses.yaml# arch/arm64/boot/dts/apple/t6000-j314s.dtb: efuse@2922bc000 (apple,t6000-efuses): Unevaluated properties are not allowed ('efuse@a10,22', 'efuse@a10,25', 'efuse@a10,27', 'efuse@a10,30', 'efuse@a14,11', 'efuse@a14,17', 'efuse@a14,19', 'efuse@a18,10', 'efuse@a18,15', 'efuse@a18,21', 'efuse@a18,27', 'efuse@a18,29', 'efuse@a18,8', 'efuse@a1c,10', 'efuse@a1c,13', 'efuse@a1c,15', 'efuse@a1c,18', 'efuse@a1c,20', 'efuse@a1c,25', 'efuse@a1c,31', 'efuse@a20,20', 'efuse@a20,23', 'efuse@a20,25', 'efuse@a20,28', 'efuse@a20,30', 'efuse@a24,15', 'efuse@a24,17', 'efuse@a24,9' were unexpected) from schema $id: http://devicetree.org/schemas/nvmem/apple,efuses.yaml# arch/arm64/boot/dts/apple/t6002-j375d.dtb: efuse@2922bc000 (apple,t6000-efuses): Unevaluated properties are not allowed ('efuse@a10,22', 'efuse@a10,25', 'efuse@a10,27', 'efuse@a10,30', 'efuse@a14,11', 'efuse@a14,17', 'efuse@a14,19', 'efuse@a18,10', 'efuse@a18,15', 'efuse@a18,21', 'efuse@a18,27', 'efuse@a18,29', 'efuse@a18,8', 'efuse@a1c,10', 'efuse@a1c,13', 'efuse@a1c,15', 'efuse@a1c,18', 'efuse@a1c,20', 'efuse@a1c,25', 'efuse@a1c,31', 'efuse@a20,20', 'efuse@a20,23', 'efuse@a20,25', 'efuse@a20,28', 'efuse@a20,30', 'efuse@a24,15', 'efuse@a24,17', 'efuse@a24,9' were unexpected) from schema $id: http://devicetree.org/schemas/nvmem/apple,efuses.yaml# arch/arm64/boot/dts/apple/t8103-j293.dtb: efuse@23d2bc000 (apple,t8103-efuses): Unevaluated properties are not allowed ('efuse@430,26', 'efuse@430,29', 'efuse@430,31', 'efuse@434,15', 'efuse@434,21', 'efuse@434,23', 'efuse@434,9', 'efuse@438,12', 'efuse@438,14', 'efuse@438,19', 'efuse@438,25', 'efuse@438,31', 'efuse@438,9' were unexpected) from schema $id: http://devicetree.org/schemas/nvmem/apple,efuses.yaml# arch/arm64/boot/dts/apple/t6002-j375d.dtb: efuse@2922bc000 (apple,t6000-efuses): Unevaluated properties are not allowed ('efuse@a10,22', 'efuse@a10,25', 'efuse@a10,27', 'efuse@a10,30', 'efuse@a14,11', 'efuse@a14,17', 'efuse@a14,19', 'efuse@a18,10', 'efuse@a18,15', 'efuse@a18,21', 'efuse@a18,27', 'efuse@a18,29', 'efuse@a18,8', 'efuse@a1c,10', 'efuse@a1c,13', 'efuse@a1c,15', 'efuse@a1c,18', 'efuse@a1c,20', 'efuse@a1c,25', 'efuse@a1c,31', 'efuse@a20,20', 'efuse@a20,23', 'efuse@a20,25', 'efuse@a20,28', 'efuse@a20,30', 'efuse@a24,15', 'efuse@a24,17', 'efuse@a24,9' were unexpected) from schema $id: http://devicetree.org/schemas/nvmem/apple,efuses.yaml# arch/arm64/boot/dts/apple/t8103-j457.dtb: efuse@23d2bc000 (apple,t8103-efuses): Unevaluated properties are not allowed ('efuse@430,26', 'efuse@430,29', 'efuse@430,31', 'efuse@434,15', 'efuse@434,21', 'efuse@434,23', 'efuse@434,9', 'efuse@438,12', 'efuse@438,14', 'efuse@438,19', 'efuse@438,25', 'efuse@438,31', 'efuse@438,9' were unexpected) from schema $id: http://devicetree.org/schemas/nvmem/apple,efuses.yaml# arch/arm64/boot/dts/apple/t8103-j456.dtb: efuse@23d2bc000 (apple,t8103-efuses): Unevaluated properties are not allowed ('efuse@430,26', 'efuse@430,29', 'efuse@430,31', 'efuse@434,15', 'efuse@434,21', 'efuse@434,23', 'efuse@434,9', 'efuse@438,12', 'efuse@438,14', 'efuse@438,19', 'efuse@438,25', 'efuse@438,31', 'efuse@438,9' were unexpected) from schema $id: http://devicetree.org/schemas/nvmem/apple,efuses.yaml# arch/arm64/boot/dts/apple/t8112-j473.dtb: efuse@23d2c8000 (apple,t8112-efuses): Unevaluated properties are not allowed ('efuse@480,20', 'efuse@480,23', 'efuse@480,25', 'efuse@480,28', 'efuse@480,30', 'efuse@484,15', 'efuse@484,17', 'efuse@484,30', 'efuse@484,9', 'efuse@488,13', 'efuse@488,19', 'efuse@488,25', 'efuse@488,27', 'efuse@488,8' were unexpected) from schema $id: http://devicetree.org/schemas/nvmem/apple,efuses.yaml# arch/arm64/boot/dts/apple/t6001-j314c.dtb: efuse@2922bc000 (apple,t6000-efuses): Unevaluated properties are not allowed ('efuse@a10,22', 'efuse@a10,25', 'efuse@a10,27', 'efuse@a10,30', 'efuse@a14,11', 'efuse@a14,17', 'efuse@a14,19', 'efuse@a18,10', 'efuse@a18,15', 'efuse@a18,21', 'efuse@a18,27', 'efuse@a18,29', 'efuse@a18,8', 'efuse@a1c,10', 'efuse@a1c,13', 'efuse@a1c,15', 'efuse@a1c,18', 'efuse@a1c,20', 'efuse@a1c,25', 'efuse@a1c,31', 'efuse@a20,20', 'efuse@a20,23', 'efuse@a20,25', 'efuse@a20,28', 'efuse@a20,30', 'efuse@a24,15', 'efuse@a24,17', 'efuse@a24,9' were unexpected) from schema $id: http://devicetree.org/schemas/nvmem/apple,efuses.yaml# arch/arm64/boot/dts/apple/t6001-j375c.dtb: efuse@2922bc000 (apple,t6000-efuses): Unevaluated properties are not allowed ('efuse@a10,22', 'efuse@a10,25', 'efuse@a10,27', 'efuse@a10,30', 'efuse@a14,11', 'efuse@a14,17', 'efuse@a14,19', 'efuse@a18,10', 'efuse@a18,15', 'efuse@a18,21', 'efuse@a18,27', 'efuse@a18,29', 'efuse@a18,8', 'efuse@a1c,10', 'efuse@a1c,13', 'efuse@a1c,15', 'efuse@a1c,18', 'efuse@a1c,20', 'efuse@a1c,25', 'efuse@a1c,31', 'efuse@a20,20', 'efuse@a20,23', 'efuse@a20,25', 'efuse@a20,28', 'efuse@a20,30', 'efuse@a24,15', 'efuse@a24,17', 'efuse@a24,9' were unexpected) from schema $id: http://devicetree.org/schemas/nvmem/apple,efuses.yaml# arch/arm64/boot/dts/apple/t6001-j316c.dtb: efuse@2922bc000 (apple,t6000-efuses): Unevaluated properties are not allowed ('efuse@a10,22', 'efuse@a10,25', 'efuse@a10,27', 'efuse@a10,30', 'efuse@a14,11', 'efuse@a14,17', 'efuse@a14,19', 'efuse@a18,10', 'efuse@a18,15', 'efuse@a18,21', 'efuse@a18,27', 'efuse@a18,29', 'efuse@a18,8', 'efuse@a1c,10', 'efuse@a1c,13', 'efuse@a1c,15', 'efuse@a1c,18', 'efuse@a1c,20', 'efuse@a1c,25', 'efuse@a1c,31', 'efuse@a20,20', 'efuse@a20,23', 'efuse@a20,25', 'efuse@a20,28', 'efuse@a20,30', 'efuse@a24,15', 'efuse@a24,17', 'efuse@a24,9' were unexpected) from schema $id: http://devicetree.org/schemas/nvmem/apple,efuses.yaml# arch/arm64/boot/dts/apple/t8103-j274.dtb: efuse@23d2bc000 (apple,t8103-efuses): Unevaluated properties are not allowed ('efuse@430,26', 'efuse@430,29', 'efuse@430,31', 'efuse@434,15', 'efuse@434,21', 'efuse@434,23', 'efuse@434,9', 'efuse@438,12', 'efuse@438,14', 'efuse@438,19', 'efuse@438,25', 'efuse@438,31', 'efuse@438,9' were unexpected) from schema $id: http://devicetree.org/schemas/nvmem/apple,efuses.yaml# arch/arm64/boot/dts/apple/t6000-j316s.dtb: efuse@2922bc000 (apple,t6000-efuses): Unevaluated properties are not allowed ('efuse@a10,22', 'efuse@a10,25', 'efuse@a10,27', 'efuse@a10,30', 'efuse@a14,11', 'efuse@a14,17', 'efuse@a14,19', 'efuse@a18,10', 'efuse@a18,15', 'efuse@a18,21', 'efuse@a18,27', 'efuse@a18,29', 'efuse@a18,8', 'efuse@a1c,10', 'efuse@a1c,13', 'efuse@a1c,15', 'efuse@a1c,18', 'efuse@a1c,20', 'efuse@a1c,25', 'efuse@a1c,31', 'efuse@a20,20', 'efuse@a20,23', 'efuse@a20,25', 'efuse@a20,28', 'efuse@a20,30', 'efuse@a24,15', 'efuse@a24,17', 'efuse@a24,9' were unexpected) from schema $id: http://devicetree.org/schemas/nvmem/apple,efuses.yaml# ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 0/7] Support exposing bits of any byte as NVMEM cells 2025-05-10 7:44 [PATCH 0/7] Support exposing bits of any byte as NVMEM cells Sven Peter via B4 Relay ` (7 preceding siblings ...) 2025-05-12 12:49 ` [PATCH 0/7] Support exposing bits of any byte as NVMEM cells Rob Herring (Arm) @ 2025-05-14 20:32 ` Rob Herring 2025-05-14 20:38 ` Sven Peter 8 siblings, 1 reply; 12+ messages in thread From: Rob Herring @ 2025-05-14 20:32 UTC (permalink / raw) To: Sven Peter Cc: Srinivas Kandagatla, Janne Grunau, Alyssa Rosenzweig, Neal Gompa, Krzysztof Kozlowski, Conor Dooley, linux-kernel, asahi, linux-arm-kernel, devicetree, R On Sat, May 10, 2025 at 07:44:40AM +0000, Sven Peter wrote: > Hi, > > I'm preparing USB3 support for Apple Silicon Macs for upstreaming right > now and this series is the first dependency. The Type-C PHY requires > configuration values encoded in fuses for which we already have a > driver. > Unfortunately, the fuses on these machines are only accessibly as 32bit > words but the Type-C PHY configuration values are individual bits which > are sometimes spread across multiple fuses. > Right now this is not supported by the nvmem core which only allows a > subset of bits within the first byte to be exposed as a nvmem cell. This > small series adds support for exposing arbitrary bits as nvmem cells. > > The second part of the series then adds the nvmem cells required for the > Type-C PHY to our device trees. While it's technically independent I've > included those changes in this series for context. The idea in the DT is normal addressing is byte-wise, so the only thing needed to specify bit level addressing is a 1-7 bit offset. If you have access size restrictions, then that should be handled by your driver. The nvmem layout shouldn't change because of that. You could perhaps define the access size with 'reg-io-width' property, but really compatible should imply it. Rob ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 0/7] Support exposing bits of any byte as NVMEM cells 2025-05-14 20:32 ` Rob Herring @ 2025-05-14 20:38 ` Sven Peter 0 siblings, 0 replies; 12+ messages in thread From: Sven Peter @ 2025-05-14 20:38 UTC (permalink / raw) To: Rob Herring Cc: Srinivas Kandagatla, Janne Grunau, Alyssa Rosenzweig, Neal Gompa, Krzysztof Kozlowski, Conor Dooley, linux-kernel, asahi, linux-arm-kernel, devicetree, R Hi, On Wed, May 14, 2025, at 22:32, Rob Herring wrote: > On Sat, May 10, 2025 at 07:44:40AM +0000, Sven Peter wrote: >> Hi, >> >> I'm preparing USB3 support for Apple Silicon Macs for upstreaming right >> now and this series is the first dependency. The Type-C PHY requires >> configuration values encoded in fuses for which we already have a >> driver. >> Unfortunately, the fuses on these machines are only accessibly as 32bit >> words but the Type-C PHY configuration values are individual bits which >> are sometimes spread across multiple fuses. >> Right now this is not supported by the nvmem core which only allows a >> subset of bits within the first byte to be exposed as a nvmem cell. This >> small series adds support for exposing arbitrary bits as nvmem cells. >> >> The second part of the series then adds the nvmem cells required for the >> Type-C PHY to our device trees. While it's technically independent I've >> included those changes in this series for context. > > The idea in the DT is normal addressing is byte-wise, so the only thing > needed to specify bit level addressing is a 1-7 bit offset. > > If you have access size restrictions, then that should be handled by > your driver. The nvmem layout shouldn't change because of that. You > could perhaps define the access size with 'reg-io-width' property, but > really compatible should imply it. fair enough, I'll just handle the unaligned reads in the driver itself then and adjust the offsets in the device tree. Sven ^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2025-05-14 20:41 UTC | newest] Thread overview: 12+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2025-05-10 7:44 [PATCH 0/7] Support exposing bits of any byte as NVMEM cells Sven Peter via B4 Relay 2025-05-10 7:44 ` [PATCH 1/7] nvmem: core: allow bit offset > 8 Sven Peter via B4 Relay 2025-05-10 7:44 ` [PATCH 2/7] nvmem: core: round up to word_size Sven Peter via B4 Relay 2025-05-10 7:44 ` [PATCH 3/7] Revert "nvmem: core: Print error on wrong bits DT property" Sven Peter via B4 Relay 2025-05-10 7:44 ` [PATCH 4/7] dt-bindings: nvmem: apple: Add T8112 compatible Sven Peter via B4 Relay 2025-05-14 20:34 ` Rob Herring 2025-05-10 7:44 ` [PATCH 5/7] arm64: dts: apple: t8103: Add eFuses node Sven Peter via B4 Relay 2025-05-10 7:44 ` [PATCH 6/7] arm64: dts: apple: t600x: " Sven Peter via B4 Relay 2025-05-10 7:44 ` [PATCH 7/7] arm64: dts: apple: t8112: " Sven Peter via B4 Relay 2025-05-12 12:49 ` [PATCH 0/7] Support exposing bits of any byte as NVMEM cells Rob Herring (Arm) 2025-05-14 20:32 ` Rob Herring 2025-05-14 20:38 ` Sven Peter
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).