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

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'soc-fixes-6.15-3' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc

Pull SoC fixes from Arnd Bergmann:
"A few last minute fixes:

- two driver fixes for samsung/google platforms, both addressing
mistakes in changes from the 6.15 merge window

- a revert for an allwinner devicetree change that caused problems

- a fix for an older regression with the LEDs on Marvell Armada 3720

- a defconfig change to enable chacha20 again after a crypto
subsystem change in 6.15 inadventently turned it off"

* tag 'soc-fixes-6.15-3' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc:
arm64: defconfig: Ensure CRYPTO_CHACHA20_NEON is selected
arm64: dts: marvell: uDPU: define pinctrl state for alarm LEDs
Revert "arm64: dts: allwinner: h6: Use RSB for AXP805 PMIC connection"
soc: samsung: usi: prevent wrong bits inversion during unconfiguring
firmware: exynos-acpm: check saved RX before bailing out on empty RX queue

+75 -55
+7 -7
arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-3.dts
··· 176 176 vcc-pg-supply = <&reg_vcc_wifi_io>; 177 177 }; 178 178 179 - &r_ir { 180 - status = "okay"; 181 - }; 182 - 183 - &r_rsb { 179 + &r_i2c { 184 180 status = "okay"; 185 181 186 - axp805: pmic@745 { 182 + axp805: pmic@36 { 187 183 compatible = "x-powers,axp805", "x-powers,axp806"; 188 - reg = <0x745>; 184 + reg = <0x36>; 189 185 interrupt-parent = <&r_intc>; 190 186 interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_LOW>; 191 187 interrupt-controller; ··· 290 294 }; 291 295 }; 292 296 }; 297 + }; 298 + 299 + &r_ir { 300 + status = "okay"; 293 301 }; 294 302 295 303 &rtc {
+11 -11
arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi.dtsi
··· 113 113 vcc-pg-supply = <&reg_aldo1>; 114 114 }; 115 115 116 - &r_ir { 117 - status = "okay"; 118 - }; 119 - 120 - &r_pio { 121 - vcc-pm-supply = <&reg_bldo3>; 122 - }; 123 - 124 - &r_rsb { 116 + &r_i2c { 125 117 status = "okay"; 126 118 127 - axp805: pmic@745 { 119 + axp805: pmic@36 { 128 120 compatible = "x-powers,axp805", "x-powers,axp806"; 129 - reg = <0x745>; 121 + reg = <0x36>; 130 122 interrupt-parent = <&r_intc>; 131 123 interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_LOW>; 132 124 interrupt-controller; ··· 231 239 }; 232 240 }; 233 241 }; 242 + }; 243 + 244 + &r_ir { 245 + status = "okay"; 246 + }; 247 + 248 + &r_pio { 249 + vcc-pm-supply = <&reg_bldo3>; 234 250 }; 235 251 236 252 &rtc {
+6 -2
arch/arm64/boot/dts/marvell/armada-3720-uDPU.dtsi
··· 26 26 27 27 leds { 28 28 compatible = "gpio-leds"; 29 + pinctrl-names = "default"; 30 + pinctrl-0 = <&spi_quad_pins>; 29 31 30 32 led-power1 { 31 33 label = "udpu:green:power"; ··· 84 82 85 83 &spi0 { 86 84 status = "okay"; 87 - pinctrl-names = "default"; 88 - pinctrl-0 = <&spi_quad_pins>; 89 85 90 86 flash@0 { 91 87 compatible = "jedec,spi-nor"; ··· 106 106 }; 107 107 }; 108 108 }; 109 + }; 110 + 111 + &spi_quad_pins { 112 + function = "gpio"; 109 113 }; 110 114 111 115 &pinctrl_nb {
+1 -1
arch/arm64/configs/defconfig
··· 1729 1729 CONFIG_NLS_ISO8859_1=y 1730 1730 CONFIG_SECURITY=y 1731 1731 CONFIG_CRYPTO_USER=y 1732 + CONFIG_CRYPTO_CHACHA20=m 1732 1733 CONFIG_CRYPTO_TEST=m 1733 1734 CONFIG_CRYPTO_ECHAINIV=y 1734 1735 CONFIG_CRYPTO_MICHAEL_MIC=m 1735 1736 CONFIG_CRYPTO_ANSI_CPRNG=y 1736 1737 CONFIG_CRYPTO_USER_API_RNG=m 1737 - CONFIG_CRYPTO_CHACHA20_NEON=m 1738 1738 CONFIG_CRYPTO_GHASH_ARM64_CE=y 1739 1739 CONFIG_CRYPTO_SHA1_ARM64_CE=y 1740 1740 CONFIG_CRYPTO_SHA2_ARM64_CE=y
+30 -14
drivers/firmware/samsung/exynos-acpm.c
··· 185 185 #define handle_to_acpm_info(h) container_of(h, struct acpm_info, handle) 186 186 187 187 /** 188 + * acpm_get_saved_rx() - get the response if it was already saved. 189 + * @achan: ACPM channel info. 190 + * @xfer: reference to the transfer to get response for. 191 + * @tx_seqnum: xfer TX sequence number. 192 + */ 193 + static void acpm_get_saved_rx(struct acpm_chan *achan, 194 + const struct acpm_xfer *xfer, u32 tx_seqnum) 195 + { 196 + const struct acpm_rx_data *rx_data = &achan->rx_data[tx_seqnum - 1]; 197 + u32 rx_seqnum; 198 + 199 + if (!rx_data->response) 200 + return; 201 + 202 + rx_seqnum = FIELD_GET(ACPM_PROTOCOL_SEQNUM, rx_data->cmd[0]); 203 + 204 + if (rx_seqnum == tx_seqnum) { 205 + memcpy(xfer->rxd, rx_data->cmd, xfer->rxlen); 206 + clear_bit(rx_seqnum - 1, achan->bitmap_seqnum); 207 + } 208 + } 209 + 210 + /** 188 211 * acpm_get_rx() - get response from RX queue. 189 212 * @achan: ACPM channel info. 190 213 * @xfer: reference to the transfer to get response for. ··· 227 204 rx_front = readl(achan->rx.front); 228 205 i = readl(achan->rx.rear); 229 206 230 - /* Bail out if RX is empty. */ 231 - if (i == rx_front) 207 + tx_seqnum = FIELD_GET(ACPM_PROTOCOL_SEQNUM, xfer->txd[0]); 208 + 209 + if (i == rx_front) { 210 + acpm_get_saved_rx(achan, xfer, tx_seqnum); 232 211 return 0; 212 + } 233 213 234 214 base = achan->rx.base; 235 215 mlen = achan->mlen; 236 - 237 - tx_seqnum = FIELD_GET(ACPM_PROTOCOL_SEQNUM, xfer->txd[0]); 238 216 239 217 /* Drain RX queue. */ 240 218 do { ··· 283 259 * If the response was not in this iteration of the queue, check if the 284 260 * RX data was previously saved. 285 261 */ 286 - rx_data = &achan->rx_data[tx_seqnum - 1]; 287 - if (!rx_set && rx_data->response) { 288 - rx_seqnum = FIELD_GET(ACPM_PROTOCOL_SEQNUM, 289 - rx_data->cmd[0]); 290 - 291 - if (rx_seqnum == tx_seqnum) { 292 - memcpy(xfer->rxd, rx_data->cmd, xfer->rxlen); 293 - clear_bit(rx_seqnum - 1, achan->bitmap_seqnum); 294 - } 295 - } 262 + if (!rx_set) 263 + acpm_get_saved_rx(achan, xfer, tx_seqnum); 296 264 297 265 return 0; 298 266 }
+1 -1
drivers/soc/samsung/exynos-usi.c
··· 233 233 /* Make sure that we've stopped providing the clock to USI IP */ 234 234 val = readl(usi->regs + USI_OPTION); 235 235 val &= ~USI_OPTION_CLKREQ_ON; 236 - val |= ~USI_OPTION_CLKSTOP_ON; 236 + val |= USI_OPTION_CLKSTOP_ON; 237 237 writel(val, usi->regs + USI_OPTION); 238 238 239 239 /* Set USI block state to reset */