Skip to content

Commit 3d0ebc3

Browse files
committed
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
2 parents 79cd892 + 070d04f commit 3d0ebc3

File tree

7 files changed

+75
-55
lines changed

7 files changed

+75
-55
lines changed

arch/arm64/boot/dts/allwinner/sun50i-h6-beelink-gs1.dts

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -152,28 +152,12 @@
152152
vcc-pg-supply = <&reg_aldo1>;
153153
};
154154

155-
&r_ir {
156-
linux,rc-map-name = "rc-beelink-gs1";
157-
status = "okay";
158-
};
159-
160-
&r_pio {
161-
/*
162-
* FIXME: We can't add that supply for now since it would
163-
* create a circular dependency between pinctrl, the regulator
164-
* and the RSB Bus.
165-
*
166-
* vcc-pl-supply = <&reg_aldo1>;
167-
*/
168-
vcc-pm-supply = <&reg_aldo1>;
169-
};
170-
171-
&r_rsb {
155+
&r_i2c {
172156
status = "okay";
173157

174-
axp805: pmic@745 {
158+
axp805: pmic@36 {
175159
compatible = "x-powers,axp805", "x-powers,axp806";
176-
reg = <0x745>;
160+
reg = <0x36>;
177161
interrupt-parent = <&r_intc>;
178162
interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_LOW>;
179163
interrupt-controller;
@@ -291,6 +275,22 @@
291275
};
292276
};
293277

278+
&r_ir {
279+
linux,rc-map-name = "rc-beelink-gs1";
280+
status = "okay";
281+
};
282+
283+
&r_pio {
284+
/*
285+
* PL0 and PL1 are used for PMIC I2C
286+
* don't enable the pl-supply else
287+
* it will fail at boot
288+
*
289+
* vcc-pl-supply = <&reg_aldo1>;
290+
*/
291+
vcc-pm-supply = <&reg_aldo1>;
292+
};
293+
294294
&spdif {
295295
pinctrl-names = "default";
296296
pinctrl-0 = <&spdif_tx_pin>;

arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-3.dts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -176,16 +176,12 @@
176176
vcc-pg-supply = <&reg_vcc_wifi_io>;
177177
};
178178

179-
&r_ir {
180-
status = "okay";
181-
};
182-
183-
&r_rsb {
179+
&r_i2c {
184180
status = "okay";
185181

186-
axp805: pmic@745 {
182+
axp805: pmic@36 {
187183
compatible = "x-powers,axp805", "x-powers,axp806";
188-
reg = <0x745>;
184+
reg = <0x36>;
189185
interrupt-parent = <&r_intc>;
190186
interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_LOW>;
191187
interrupt-controller;
@@ -296,6 +292,10 @@
296292
};
297293
};
298294

295+
&r_ir {
296+
status = "okay";
297+
};
298+
299299
&rtc {
300300
clocks = <&ext_osc32k>;
301301
};

arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi.dtsi

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -113,20 +113,12 @@
113113
vcc-pg-supply = <&reg_aldo1>;
114114
};
115115

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 {
125117
status = "okay";
126118

127-
axp805: pmic@745 {
119+
axp805: pmic@36 {
128120
compatible = "x-powers,axp805", "x-powers,axp806";
129-
reg = <0x745>;
121+
reg = <0x36>;
130122
interrupt-parent = <&r_intc>;
131123
interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_LOW>;
132124
interrupt-controller;
@@ -241,6 +233,14 @@
241233
};
242234
};
243235

236+
&r_ir {
237+
status = "okay";
238+
};
239+
240+
&r_pio {
241+
vcc-pm-supply = <&reg_bldo3>;
242+
};
243+
244244
&rtc {
245245
clocks = <&ext_osc32k>;
246246
};

arch/arm64/boot/dts/marvell/armada-3720-uDPU.dtsi

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@
2626

2727
leds {
2828
compatible = "gpio-leds";
29+
pinctrl-names = "default";
30+
pinctrl-0 = <&spi_quad_pins>;
2931

3032
led-power1 {
3133
label = "udpu:green:power";
@@ -82,8 +84,6 @@
8284

8385
&spi0 {
8486
status = "okay";
85-
pinctrl-names = "default";
86-
pinctrl-0 = <&spi_quad_pins>;
8787

8888
flash@0 {
8989
compatible = "jedec,spi-nor";
@@ -108,6 +108,10 @@
108108
};
109109
};
110110

111+
&spi_quad_pins {
112+
function = "gpio";
113+
};
114+
111115
&pinctrl_nb {
112116
i2c2_recovery_pins: i2c2-recovery-pins {
113117
groups = "i2c2";

arch/arm64/configs/defconfig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1729,12 +1729,12 @@ CONFIG_NLS_CODEPAGE_437=y
17291729
CONFIG_NLS_ISO8859_1=y
17301730
CONFIG_SECURITY=y
17311731
CONFIG_CRYPTO_USER=y
1732+
CONFIG_CRYPTO_CHACHA20=m
17321733
CONFIG_CRYPTO_TEST=m
17331734
CONFIG_CRYPTO_ECHAINIV=y
17341735
CONFIG_CRYPTO_MICHAEL_MIC=m
17351736
CONFIG_CRYPTO_ANSI_CPRNG=y
17361737
CONFIG_CRYPTO_USER_API_RNG=m
1737-
CONFIG_CRYPTO_CHACHA20_NEON=m
17381738
CONFIG_CRYPTO_GHASH_ARM64_CE=y
17391739
CONFIG_CRYPTO_SHA1_ARM64_CE=y
17401740
CONFIG_CRYPTO_SHA2_ARM64_CE=y

drivers/firmware/samsung/exynos-acpm.c

Lines changed: 30 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,29 @@ struct acpm_match_data {
184184
#define client_to_acpm_chan(c) container_of(c, struct acpm_chan, cl)
185185
#define handle_to_acpm_info(h) container_of(h, struct acpm_info, handle)
186186

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+
187210
/**
188211
* acpm_get_rx() - get response from RX queue.
189212
* @achan: ACPM channel info.
@@ -204,15 +227,16 @@ static int acpm_get_rx(struct acpm_chan *achan, const struct acpm_xfer *xfer)
204227
rx_front = readl(achan->rx.front);
205228
i = readl(achan->rx.rear);
206229

207-
/* Bail out if RX is empty. */
208-
if (i == rx_front)
230+
tx_seqnum = FIELD_GET(ACPM_PROTOCOL_SEQNUM, xfer->txd[0]);
231+
232+
if (i == rx_front) {
233+
acpm_get_saved_rx(achan, xfer, tx_seqnum);
209234
return 0;
235+
}
210236

211237
base = achan->rx.base;
212238
mlen = achan->mlen;
213239

214-
tx_seqnum = FIELD_GET(ACPM_PROTOCOL_SEQNUM, xfer->txd[0]);
215-
216240
/* Drain RX queue. */
217241
do {
218242
/* Read RX seqnum. */
@@ -259,16 +283,8 @@ static int acpm_get_rx(struct acpm_chan *achan, const struct acpm_xfer *xfer)
259283
* If the response was not in this iteration of the queue, check if the
260284
* RX data was previously saved.
261285
*/
262-
rx_data = &achan->rx_data[tx_seqnum - 1];
263-
if (!rx_set && rx_data->response) {
264-
rx_seqnum = FIELD_GET(ACPM_PROTOCOL_SEQNUM,
265-
rx_data->cmd[0]);
266-
267-
if (rx_seqnum == tx_seqnum) {
268-
memcpy(xfer->rxd, rx_data->cmd, xfer->rxlen);
269-
clear_bit(rx_seqnum - 1, achan->bitmap_seqnum);
270-
}
271-
}
286+
if (!rx_set)
287+
acpm_get_saved_rx(achan, xfer, tx_seqnum);
272288

273289
return 0;
274290
}

drivers/soc/samsung/exynos-usi.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -233,7 +233,7 @@ static void exynos_usi_unconfigure(void *data)
233233
/* Make sure that we've stopped providing the clock to USI IP */
234234
val = readl(usi->regs + USI_OPTION);
235235
val &= ~USI_OPTION_CLKREQ_ON;
236-
val |= ~USI_OPTION_CLKSTOP_ON;
236+
val |= USI_OPTION_CLKSTOP_ON;
237237
writel(val, usi->regs + USI_OPTION);
238238

239239
/* Set USI block state to reset */

0 commit comments

Comments
 (0)