soc: fixes for 6.13, part 3
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 -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEEo6/YBQwIrVS28WGKmmx57+YAGNkFAmgwdrYACgkQmmx57+YA GNk3fg/9GhYsDBwVm6+yKu+fhUQHh9NatjAxM3JMJK3N3iHoCTTRii/Xigg5oHTU Q6aWhMlHVBDxOs0QXBt1275Otw5P6KE44HfPAJY/QorJJNi2CLLBfL5RUQwykOdC gk9sF3Mw7nn2nqsQ6oterBEm8a4wSw02W0sdp3Jbic/HOSRUrCmc682bBTpuNBq4 ysHu8YF4lJ8QkVtfcKXr4WtJM9STo/D/eWFfzG7l3tBwaXYDaZMPg4ceK6W/Rkd+ U7sztOO5oReMrgMj4KrOf6b0j57AmIQSI5gtwLhvLDxkdIHLrMBDA0Hnh4uRLpSG Y1k43tv7V6SPNxIO8PLkUmpGyxMz53qSF+AP7sGfQ/j1aghCj9UCRvy0DRArcSh/ 5nyR4kF9MKkVF21VMR6arOTIJhHmn9LhimN4AJGWz1NF66fa2z85wAOgji3LhykK 65uJUJhzFtzohcFqCt58y78WTj5vLZ4qo4DjbfhDZ60jFfTTaCm1fFjoEL5VpJCv GP9AEJqu1FNxQqr/zQeTHMDdUixR0qYEXQqNTUxK9uZuXIXQCPo+Gj2vH6kx5wTU 9HbG02Xf5aGw07BsvTEYTHBcNx1QgS7sSS9W4MdpOzqhxyqvFyL+UgZ4fKxCQ+TB Aa1vcgssQInD+F1/q6CoRzBNmqVOmTOFeiNNJ4wBVqPIEDOWY3A= =bZbJ -----END PGP SIGNATURE----- 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
This commit is contained in:
commit
3d0ebc36b0
7 changed files with 75 additions and 55 deletions
|
@ -152,28 +152,12 @@
|
||||||
vcc-pg-supply = <®_aldo1>;
|
vcc-pg-supply = <®_aldo1>;
|
||||||
};
|
};
|
||||||
|
|
||||||
&r_ir {
|
&r_i2c {
|
||||||
linux,rc-map-name = "rc-beelink-gs1";
|
|
||||||
status = "okay";
|
|
||||||
};
|
|
||||||
|
|
||||||
&r_pio {
|
|
||||||
/*
|
|
||||||
* FIXME: We can't add that supply for now since it would
|
|
||||||
* create a circular dependency between pinctrl, the regulator
|
|
||||||
* and the RSB Bus.
|
|
||||||
*
|
|
||||||
* vcc-pl-supply = <®_aldo1>;
|
|
||||||
*/
|
|
||||||
vcc-pm-supply = <®_aldo1>;
|
|
||||||
};
|
|
||||||
|
|
||||||
&r_rsb {
|
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
|
||||||
axp805: pmic@745 {
|
axp805: pmic@36 {
|
||||||
compatible = "x-powers,axp805", "x-powers,axp806";
|
compatible = "x-powers,axp805", "x-powers,axp806";
|
||||||
reg = <0x745>;
|
reg = <0x36>;
|
||||||
interrupt-parent = <&r_intc>;
|
interrupt-parent = <&r_intc>;
|
||||||
interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_LOW>;
|
interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_LOW>;
|
||||||
interrupt-controller;
|
interrupt-controller;
|
||||||
|
@ -291,6 +275,22 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&r_ir {
|
||||||
|
linux,rc-map-name = "rc-beelink-gs1";
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&r_pio {
|
||||||
|
/*
|
||||||
|
* PL0 and PL1 are used for PMIC I2C
|
||||||
|
* don't enable the pl-supply else
|
||||||
|
* it will fail at boot
|
||||||
|
*
|
||||||
|
* vcc-pl-supply = <®_aldo1>;
|
||||||
|
*/
|
||||||
|
vcc-pm-supply = <®_aldo1>;
|
||||||
|
};
|
||||||
|
|
||||||
&spdif {
|
&spdif {
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&spdif_tx_pin>;
|
pinctrl-0 = <&spdif_tx_pin>;
|
||||||
|
|
|
@ -176,16 +176,12 @@
|
||||||
vcc-pg-supply = <®_vcc_wifi_io>;
|
vcc-pg-supply = <®_vcc_wifi_io>;
|
||||||
};
|
};
|
||||||
|
|
||||||
&r_ir {
|
&r_i2c {
|
||||||
status = "okay";
|
|
||||||
};
|
|
||||||
|
|
||||||
&r_rsb {
|
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
|
||||||
axp805: pmic@745 {
|
axp805: pmic@36 {
|
||||||
compatible = "x-powers,axp805", "x-powers,axp806";
|
compatible = "x-powers,axp805", "x-powers,axp806";
|
||||||
reg = <0x745>;
|
reg = <0x36>;
|
||||||
interrupt-parent = <&r_intc>;
|
interrupt-parent = <&r_intc>;
|
||||||
interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_LOW>;
|
interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_LOW>;
|
||||||
interrupt-controller;
|
interrupt-controller;
|
||||||
|
@ -296,6 +292,10 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&r_ir {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
&rtc {
|
&rtc {
|
||||||
clocks = <&ext_osc32k>;
|
clocks = <&ext_osc32k>;
|
||||||
};
|
};
|
||||||
|
|
|
@ -113,20 +113,12 @@
|
||||||
vcc-pg-supply = <®_aldo1>;
|
vcc-pg-supply = <®_aldo1>;
|
||||||
};
|
};
|
||||||
|
|
||||||
&r_ir {
|
&r_i2c {
|
||||||
status = "okay";
|
|
||||||
};
|
|
||||||
|
|
||||||
&r_pio {
|
|
||||||
vcc-pm-supply = <®_bldo3>;
|
|
||||||
};
|
|
||||||
|
|
||||||
&r_rsb {
|
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
|
||||||
axp805: pmic@745 {
|
axp805: pmic@36 {
|
||||||
compatible = "x-powers,axp805", "x-powers,axp806";
|
compatible = "x-powers,axp805", "x-powers,axp806";
|
||||||
reg = <0x745>;
|
reg = <0x36>;
|
||||||
interrupt-parent = <&r_intc>;
|
interrupt-parent = <&r_intc>;
|
||||||
interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_LOW>;
|
interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_LOW>;
|
||||||
interrupt-controller;
|
interrupt-controller;
|
||||||
|
@ -241,6 +233,14 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&r_ir {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&r_pio {
|
||||||
|
vcc-pm-supply = <®_bldo3>;
|
||||||
|
};
|
||||||
|
|
||||||
&rtc {
|
&rtc {
|
||||||
clocks = <&ext_osc32k>;
|
clocks = <&ext_osc32k>;
|
||||||
};
|
};
|
||||||
|
|
|
@ -26,6 +26,8 @@
|
||||||
|
|
||||||
leds {
|
leds {
|
||||||
compatible = "gpio-leds";
|
compatible = "gpio-leds";
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&spi_quad_pins>;
|
||||||
|
|
||||||
led-power1 {
|
led-power1 {
|
||||||
label = "udpu:green:power";
|
label = "udpu:green:power";
|
||||||
|
@ -82,8 +84,6 @@
|
||||||
|
|
||||||
&spi0 {
|
&spi0 {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
pinctrl-names = "default";
|
|
||||||
pinctrl-0 = <&spi_quad_pins>;
|
|
||||||
|
|
||||||
flash@0 {
|
flash@0 {
|
||||||
compatible = "jedec,spi-nor";
|
compatible = "jedec,spi-nor";
|
||||||
|
@ -108,6 +108,10 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&spi_quad_pins {
|
||||||
|
function = "gpio";
|
||||||
|
};
|
||||||
|
|
||||||
&pinctrl_nb {
|
&pinctrl_nb {
|
||||||
i2c2_recovery_pins: i2c2-recovery-pins {
|
i2c2_recovery_pins: i2c2-recovery-pins {
|
||||||
groups = "i2c2";
|
groups = "i2c2";
|
||||||
|
|
|
@ -1729,12 +1729,12 @@ CONFIG_NLS_CODEPAGE_437=y
|
||||||
CONFIG_NLS_ISO8859_1=y
|
CONFIG_NLS_ISO8859_1=y
|
||||||
CONFIG_SECURITY=y
|
CONFIG_SECURITY=y
|
||||||
CONFIG_CRYPTO_USER=y
|
CONFIG_CRYPTO_USER=y
|
||||||
|
CONFIG_CRYPTO_CHACHA20=m
|
||||||
CONFIG_CRYPTO_TEST=m
|
CONFIG_CRYPTO_TEST=m
|
||||||
CONFIG_CRYPTO_ECHAINIV=y
|
CONFIG_CRYPTO_ECHAINIV=y
|
||||||
CONFIG_CRYPTO_MICHAEL_MIC=m
|
CONFIG_CRYPTO_MICHAEL_MIC=m
|
||||||
CONFIG_CRYPTO_ANSI_CPRNG=y
|
CONFIG_CRYPTO_ANSI_CPRNG=y
|
||||||
CONFIG_CRYPTO_USER_API_RNG=m
|
CONFIG_CRYPTO_USER_API_RNG=m
|
||||||
CONFIG_CRYPTO_CHACHA20_NEON=m
|
|
||||||
CONFIG_CRYPTO_GHASH_ARM64_CE=y
|
CONFIG_CRYPTO_GHASH_ARM64_CE=y
|
||||||
CONFIG_CRYPTO_SHA1_ARM64_CE=y
|
CONFIG_CRYPTO_SHA1_ARM64_CE=y
|
||||||
CONFIG_CRYPTO_SHA2_ARM64_CE=y
|
CONFIG_CRYPTO_SHA2_ARM64_CE=y
|
||||||
|
|
|
@ -184,6 +184,29 @@ struct acpm_match_data {
|
||||||
#define client_to_acpm_chan(c) container_of(c, struct acpm_chan, cl)
|
#define client_to_acpm_chan(c) container_of(c, struct acpm_chan, cl)
|
||||||
#define handle_to_acpm_info(h) container_of(h, struct acpm_info, handle)
|
#define handle_to_acpm_info(h) container_of(h, struct acpm_info, handle)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* acpm_get_saved_rx() - get the response if it was already saved.
|
||||||
|
* @achan: ACPM channel info.
|
||||||
|
* @xfer: reference to the transfer to get response for.
|
||||||
|
* @tx_seqnum: xfer TX sequence number.
|
||||||
|
*/
|
||||||
|
static void acpm_get_saved_rx(struct acpm_chan *achan,
|
||||||
|
const struct acpm_xfer *xfer, u32 tx_seqnum)
|
||||||
|
{
|
||||||
|
const struct acpm_rx_data *rx_data = &achan->rx_data[tx_seqnum - 1];
|
||||||
|
u32 rx_seqnum;
|
||||||
|
|
||||||
|
if (!rx_data->response)
|
||||||
|
return;
|
||||||
|
|
||||||
|
rx_seqnum = FIELD_GET(ACPM_PROTOCOL_SEQNUM, rx_data->cmd[0]);
|
||||||
|
|
||||||
|
if (rx_seqnum == tx_seqnum) {
|
||||||
|
memcpy(xfer->rxd, rx_data->cmd, xfer->rxlen);
|
||||||
|
clear_bit(rx_seqnum - 1, achan->bitmap_seqnum);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* acpm_get_rx() - get response from RX queue.
|
* acpm_get_rx() - get response from RX queue.
|
||||||
* @achan: ACPM channel info.
|
* @achan: ACPM channel info.
|
||||||
|
@ -204,15 +227,16 @@ static int acpm_get_rx(struct acpm_chan *achan, const struct acpm_xfer *xfer)
|
||||||
rx_front = readl(achan->rx.front);
|
rx_front = readl(achan->rx.front);
|
||||||
i = readl(achan->rx.rear);
|
i = readl(achan->rx.rear);
|
||||||
|
|
||||||
/* Bail out if RX is empty. */
|
tx_seqnum = FIELD_GET(ACPM_PROTOCOL_SEQNUM, xfer->txd[0]);
|
||||||
if (i == rx_front)
|
|
||||||
|
if (i == rx_front) {
|
||||||
|
acpm_get_saved_rx(achan, xfer, tx_seqnum);
|
||||||
return 0;
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
base = achan->rx.base;
|
base = achan->rx.base;
|
||||||
mlen = achan->mlen;
|
mlen = achan->mlen;
|
||||||
|
|
||||||
tx_seqnum = FIELD_GET(ACPM_PROTOCOL_SEQNUM, xfer->txd[0]);
|
|
||||||
|
|
||||||
/* Drain RX queue. */
|
/* Drain RX queue. */
|
||||||
do {
|
do {
|
||||||
/* Read RX seqnum. */
|
/* Read RX seqnum. */
|
||||||
|
@ -259,16 +283,8 @@ static int acpm_get_rx(struct acpm_chan *achan, const struct acpm_xfer *xfer)
|
||||||
* If the response was not in this iteration of the queue, check if the
|
* If the response was not in this iteration of the queue, check if the
|
||||||
* RX data was previously saved.
|
* RX data was previously saved.
|
||||||
*/
|
*/
|
||||||
rx_data = &achan->rx_data[tx_seqnum - 1];
|
if (!rx_set)
|
||||||
if (!rx_set && rx_data->response) {
|
acpm_get_saved_rx(achan, xfer, tx_seqnum);
|
||||||
rx_seqnum = FIELD_GET(ACPM_PROTOCOL_SEQNUM,
|
|
||||||
rx_data->cmd[0]);
|
|
||||||
|
|
||||||
if (rx_seqnum == tx_seqnum) {
|
|
||||||
memcpy(xfer->rxd, rx_data->cmd, xfer->rxlen);
|
|
||||||
clear_bit(rx_seqnum - 1, achan->bitmap_seqnum);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -233,7 +233,7 @@ static void exynos_usi_unconfigure(void *data)
|
||||||
/* Make sure that we've stopped providing the clock to USI IP */
|
/* Make sure that we've stopped providing the clock to USI IP */
|
||||||
val = readl(usi->regs + USI_OPTION);
|
val = readl(usi->regs + USI_OPTION);
|
||||||
val &= ~USI_OPTION_CLKREQ_ON;
|
val &= ~USI_OPTION_CLKREQ_ON;
|
||||||
val |= ~USI_OPTION_CLKSTOP_ON;
|
val |= USI_OPTION_CLKSTOP_ON;
|
||||||
writel(val, usi->regs + USI_OPTION);
|
writel(val, usi->regs + USI_OPTION);
|
||||||
|
|
||||||
/* Set USI block state to reset */
|
/* Set USI block state to reset */
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue