From 9ef583c26a314da66ffc30a7394c7a101f04e485 Mon Sep 17 00:00:00 2001 From: Stefan Hansson Date: Sun, 14 Jan 2024 12:28:56 +0100 Subject: [PATCH] linux-postmarketos-stericsson: upgrade to 6.7.0 (MR 4443) [ci:skip-build]: already built successfully in CI --- .../0001-fix-busydetect-ux500.patch | 1146 ----------------- ...-pwm-ab8500-Get-HW-ID-from-reg-value.patch | 58 - .../linux-postmarketos-stericsson/APKBUILD | 12 +- .../config-postmarketos-stericsson.armv7 | 300 +++-- 4 files changed, 221 insertions(+), 1295 deletions(-) delete mode 100644 device/testing/linux-postmarketos-stericsson/0001-fix-busydetect-ux500.patch delete mode 100644 device/testing/linux-postmarketos-stericsson/0002-pwm-ab8500-Get-HW-ID-from-reg-value.patch diff --git a/device/testing/linux-postmarketos-stericsson/0001-fix-busydetect-ux500.patch b/device/testing/linux-postmarketos-stericsson/0001-fix-busydetect-ux500.patch deleted file mode 100644 index a7fb4e77d..000000000 --- a/device/testing/linux-postmarketos-stericsson/0001-fix-busydetect-ux500.patch +++ /dev/null @@ -1,1146 +0,0 @@ -From git@z Thu Jan 1 00:00:00 1970 -Subject: [PATCH v2 1/12] mmc: mmci: Clear busy_status when starting command -From: Linus Walleij -Date: Sun, 09 Apr 2023 00:00:22 +0200 -Message-Id: <20230405-pl180-busydetect-fix-v2-1-eeb10323b546@linaro.org> -MIME-Version: 1.0 -Content-Type: text/plain; charset="utf-8" -Content-Transfer-Encoding: 7bit - -If we are starting a command which can generate a busy -response, then clear the variable host->busy_status -if the variant is using a ->busy_complete callback. - -We are lucky that the member is zero by default and -hopefully always gets cleared in the ->busy_complete -callback even on errors, but it's just fragile so -make sure it is always initialized to zero. - -Signed-off-by: Linus Walleij ---- -ChangeLog v1->v2: -- Unconditionally clear host->busy_status if we get a - busy response. ---- - drivers/mmc/host/mmci.c | 22 +++++++++++++--------- - 1 file changed, 13 insertions(+), 9 deletions(-) - -diff --git a/drivers/mmc/host/mmci.c b/drivers/mmc/host/mmci.c -index b9e5dfe74e5c..9b48df842425 100644 ---- a/drivers/mmc/host/mmci.c -+++ b/drivers/mmc/host/mmci.c -@@ -1238,17 +1238,21 @@ mmci_start_command(struct mmci_host *host, struct mmc_command *cmd, u32 c) - c |= host->variant->cmdreg_srsp; - } - -- if (host->variant->busy_timeout && cmd->flags & MMC_RSP_BUSY) { -- if (!cmd->busy_timeout) -- cmd->busy_timeout = 10 * MSEC_PER_SEC; -+ if (cmd->flags & MMC_RSP_BUSY) { -+ host->busy_status = 0; - -- if (cmd->busy_timeout > host->mmc->max_busy_timeout) -- clks = (unsigned long long)host->mmc->max_busy_timeout * host->cclk; -- else -- clks = (unsigned long long)cmd->busy_timeout * host->cclk; -+ if (host->variant->busy_timeout) { -+ if (!cmd->busy_timeout) -+ cmd->busy_timeout = 10 * MSEC_PER_SEC; - -- do_div(clks, MSEC_PER_SEC); -- writel_relaxed(clks, host->base + MMCIDATATIMER); -+ if (cmd->busy_timeout > host->mmc->max_busy_timeout) -+ clks = (unsigned long long)host->mmc->max_busy_timeout * host->cclk; -+ else -+ clks = (unsigned long long)cmd->busy_timeout * host->cclk; -+ -+ do_div(clks, MSEC_PER_SEC); -+ writel_relaxed(clks, host->base + MMCIDATATIMER); -+ } - } - - if (host->ops->pre_sig_volt_switch && cmd->opcode == SD_SWITCH_VOLTAGE) --- -2.39.2 - -From git@z Thu Jan 1 00:00:00 1970 -Subject: [PATCH v2 2/12] mmc: mmci: Unwind big if() clause -From: Linus Walleij -Date: Sun, 09 Apr 2023 00:00:23 +0200 -Message-Id: <20230405-pl180-busydetect-fix-v2-2-eeb10323b546@linaro.org> -MIME-Version: 1.0 -Content-Type: text/plain; charset="utf-8" -Content-Transfer-Encoding: 7bit - -This does two things: firsr replace the hard-to-read long -if-expression: - - if (!host->busy_status && !(status & err_msk) && - (readl(base + MMCISTATUS) & host->variant->busy_detect_flag)) { - -With the more readable: - - if (!host->busy_status && !(status & err_msk)) { - status = readl(base + MMCISTATUS); - if (status & host->variant->busy_detect_flag) { - -Second notice that the re-read MMCISTATUS register is now -stored into the status variable, using logic OR because what -if something else changed too? - -While we are at it, explain what the function is doing. - -Signed-off-by: Linus Walleij ---- -ChangeLog v1->v2: -- Only assign the cached status in host->busy_status if - we have busy detect signalling going on. ---- - drivers/mmc/host/mmci.c | 23 ++++++++++++++++------- - 1 file changed, 16 insertions(+), 7 deletions(-) - -diff --git a/drivers/mmc/host/mmci.c b/drivers/mmc/host/mmci.c -index 9b48df842425..8496df2020d9 100644 ---- a/drivers/mmc/host/mmci.c -+++ b/drivers/mmc/host/mmci.c -@@ -654,6 +654,13 @@ static u32 ux500v2_get_dctrl_cfg(struct mmci_host *host) - return MCI_DPSM_ENABLE | (host->data->blksz << 16); - } - -+/* -+ * ux500_busy_complete() - this will wait until the busy status -+ * goes off, saving any status that occur in the meantime into -+ * host->busy_status until we know the card is not busy any more. -+ * The function returns true when the busy detection is ended -+ * and we should continue processing the command. -+ */ - static bool ux500_busy_complete(struct mmci_host *host, u32 status, u32 err_msk) - { - void __iomem *base = host->base; -@@ -671,14 +678,16 @@ static bool ux500_busy_complete(struct mmci_host *host, u32 status, u32 err_msk) - * while, to allow it to be set, but tests indicates that it - * isn't needed. - */ -- if (!host->busy_status && !(status & err_msk) && -- (readl(base + MMCISTATUS) & host->variant->busy_detect_flag)) { -- writel(readl(base + MMCIMASK0) | -- host->variant->busy_detect_mask, -- base + MMCIMASK0); -+ if (!host->busy_status && !(status & err_msk)) { -+ status = readl(base + MMCISTATUS); -+ if (status & host->variant->busy_detect_flag) { -+ writel(readl(base + MMCIMASK0) | -+ host->variant->busy_detect_mask, -+ base + MMCIMASK0); - -- host->busy_status = status & (MCI_CMDSENT | MCI_CMDRESPEND); -- return false; -+ host->busy_status = status & (MCI_CMDSENT | MCI_CMDRESPEND); -+ return false; -+ } - } - - /* --- -2.39.2 - -From git@z Thu Jan 1 00:00:00 1970 -Subject: [PATCH v2 3/12] mmc: mmci: Stash status while waiting for busy -From: Linus Walleij -Date: Sun, 09 Apr 2023 00:00:24 +0200 -Message-Id: <20230405-pl180-busydetect-fix-v2-3-eeb10323b546@linaro.org> -MIME-Version: 1.0 -Content-Type: text/plain; charset="utf-8" -Content-Transfer-Encoding: 7bit - -Some interesting flags can arrive while we are waiting for -the first busy detect IRQ so OR then onto the stashed -flags so they are not missed. - -Signed-off-by: Linus Walleij ---- -ChangeLog v1->v2: -- No changes ---- - drivers/mmc/host/mmci.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/drivers/mmc/host/mmci.c b/drivers/mmc/host/mmci.c -index 8496df2020d9..e742dedaca1a 100644 ---- a/drivers/mmc/host/mmci.c -+++ b/drivers/mmc/host/mmci.c -@@ -703,6 +703,7 @@ static bool ux500_busy_complete(struct mmci_host *host, u32 status, u32 err_msk) - */ - if (host->busy_status && - (status & host->variant->busy_detect_flag)) { -+ host->busy_status |= status & (MCI_CMDSENT | MCI_CMDRESPEND); - writel(host->variant->busy_detect_mask, base + MMCICLEAR); - return false; - } --- -2.39.2 - -From git@z Thu Jan 1 00:00:00 1970 -Subject: [PATCH v2 4/12] mmc: mmci: Break out error check in busy detect -From: Linus Walleij -Date: Sun, 09 Apr 2023 00:00:25 +0200 -Message-Id: <20230405-pl180-busydetect-fix-v2-4-eeb10323b546@linaro.org> -MIME-Version: 1.0 -Content-Type: text/plain; charset="utf-8" -Content-Transfer-Encoding: 7bit - -The busy detect callback for Ux500 checks for an error -in the status in the first if() clause. The only practical -reason is that if an error occurs, the if()-clause is not -executed, and the code falls through to the last -if()-clause if (host->busy_status) which will clear and -disable the irq. Make this explicit instead: it is easier -to read. - -Signed-off-by: Linus Walleij ---- -ChangeLog v1->v2: -- No changes ---- - drivers/mmc/host/mmci.c | 11 ++++++++++- - 1 file changed, 10 insertions(+), 1 deletion(-) - -diff --git a/drivers/mmc/host/mmci.c b/drivers/mmc/host/mmci.c -index e742dedaca1a..7d42625f2356 100644 ---- a/drivers/mmc/host/mmci.c -+++ b/drivers/mmc/host/mmci.c -@@ -665,6 +665,15 @@ static bool ux500_busy_complete(struct mmci_host *host, u32 status, u32 err_msk) - { - void __iomem *base = host->base; - -+ if (status & err_msk) { -+ /* Stop any ongoing busy detection if an error occurs */ -+ writel(host->variant->busy_detect_mask, base + MMCICLEAR); -+ writel(readl(base + MMCIMASK0) & -+ ~host->variant->busy_detect_mask, base + MMCIMASK0); -+ host->busy_status = 0; -+ return true; -+ } -+ - /* - * Before unmasking for the busy end IRQ, confirm that the - * command was sent successfully. To keep track of having a -@@ -678,7 +687,7 @@ static bool ux500_busy_complete(struct mmci_host *host, u32 status, u32 err_msk) - * while, to allow it to be set, but tests indicates that it - * isn't needed. - */ -- if (!host->busy_status && !(status & err_msk)) { -+ if (!host->busy_status) { - status = readl(base + MMCISTATUS); - if (status & host->variant->busy_detect_flag) { - writel(readl(base + MMCIMASK0) | --- -2.39.2 - -From git@z Thu Jan 1 00:00:00 1970 -Subject: [PATCH v2 5/12] mmc: mmci: Make busy complete state machine - explicit -From: Linus Walleij -Date: Sun, 09 Apr 2023 00:00:26 +0200 -Message-Id: <20230405-pl180-busydetect-fix-v2-5-eeb10323b546@linaro.org> -MIME-Version: 1.0 -Content-Type: text/plain; charset="utf-8" -Content-Transfer-Encoding: 7bit - -This refactors the ->busy_complete() callback currently -only used by Ux500 to handle busy detection on hardware -where one and the same IRQ is fired whether we get a -start or an end signal on busy detect. - -The code is currently using the cached status from the -command IRQ in ->busy_status as a state to select what to -do next: if this state is non-zero we are waiting for -IRQs and if it is zero we treat the state as the starting -point for a busy detect wait cycle. - -Make this explicit by creating a state machine where the -->busy_complete callback moves between four states: -MMCI_BUSY_NOT_STARTED, MMCI_BUSY_WAITING_FOR_IRQS, -MMCI_BUSY_START_IRQ and MMCI_BUSY_END_IRQ. - -The code currently assumes this order: we enable the busy -detect IRQ, get a busy start IRQ, then a busy end IRQ, and -then we clear and mask this IRQ and proceed. - -We insert dev_err() prints for unexpected states. - -Augment the STM32 driver with similar states for -completeness. - -This works as before on most cards, however on a -problematic card that is not working with busy detect, and -which I have been debugging, this happens: - -[127220.662719] mmci-pl18x 80005000.mmc: lost busy status - when waiting for busy end IRQ - -This probably means that the busy detect start IRQ has -already occurred when we start executing the -->busy_complete() callbacks, and the busy detect end IRQ -is counted as the start IRQ, and this is what is causing -the card to not be detected properly. - -Signed-off-by: Linus Walleij ---- -ChangeLog v1->v2: -- No changes ---- - drivers/mmc/host/mmci.c | 55 +++++++++++++++++++++++++++++++------ - drivers/mmc/host/mmci.h | 16 +++++++++++ - drivers/mmc/host/mmci_stm32_sdmmc.c | 6 +++- - 3 files changed, 68 insertions(+), 9 deletions(-) - -diff --git a/drivers/mmc/host/mmci.c b/drivers/mmc/host/mmci.c -index 7d42625f2356..887b83e392a4 100644 ---- a/drivers/mmc/host/mmci.c -+++ b/drivers/mmc/host/mmci.c -@@ -670,6 +670,7 @@ static bool ux500_busy_complete(struct mmci_host *host, u32 status, u32 err_msk) - writel(host->variant->busy_detect_mask, base + MMCICLEAR); - writel(readl(base + MMCIMASK0) & - ~host->variant->busy_detect_mask, base + MMCIMASK0); -+ host->busy_state = MMCI_BUSY_DONE; - host->busy_status = 0; - return true; - } -@@ -687,7 +688,7 @@ static bool ux500_busy_complete(struct mmci_host *host, u32 status, u32 err_msk) - * while, to allow it to be set, but tests indicates that it - * isn't needed. - */ -- if (!host->busy_status) { -+ if (host->busy_state == MMCI_BUSY_IDLE) { - status = readl(base + MMCISTATUS); - if (status & host->variant->busy_detect_flag) { - writel(readl(base + MMCIMASK0) | -@@ -695,6 +696,7 @@ static bool ux500_busy_complete(struct mmci_host *host, u32 status, u32 err_msk) - base + MMCIMASK0); - - host->busy_status = status & (MCI_CMDSENT | MCI_CMDRESPEND); -+ host->busy_state = MMCI_BUSY_WAITING_FOR_IRQS; - return false; - } - } -@@ -710,11 +712,40 @@ static bool ux500_busy_complete(struct mmci_host *host, u32 status, u32 err_msk) - * both the start and the end interrupts needs to be cleared, - * one after the other. So, clear the busy start IRQ here. - */ -- if (host->busy_status && -- (status & host->variant->busy_detect_flag)) { -- host->busy_status |= status & (MCI_CMDSENT | MCI_CMDRESPEND); -- writel(host->variant->busy_detect_mask, base + MMCICLEAR); -- return false; -+ if (host->busy_state == MMCI_BUSY_WAITING_FOR_IRQS) { -+ if (status & host->variant->busy_detect_flag) { -+ host->busy_status |= status & (MCI_CMDSENT | MCI_CMDRESPEND); -+ writel(host->variant->busy_detect_mask, base + MMCICLEAR); -+ host->busy_state = MMCI_BUSY_START_IRQ; -+ return false; -+ } else { -+ dev_dbg(mmc_dev(host->mmc), -+ "lost busy status when waiting for busy start IRQ\n"); -+ writel(host->variant->busy_detect_mask, base + MMCICLEAR); -+ writel(readl(base + MMCIMASK0) & -+ ~host->variant->busy_detect_mask, base + MMCIMASK0); -+ host->busy_state = MMCI_BUSY_DONE; -+ host->busy_status = 0; -+ return true; -+ } -+ } -+ -+ if (host->busy_state == MMCI_BUSY_START_IRQ) { -+ if (status & host->variant->busy_detect_flag) { -+ host->busy_status |= status & (MCI_CMDSENT | MCI_CMDRESPEND); -+ writel(host->variant->busy_detect_mask, base + MMCICLEAR); -+ host->busy_state = MMCI_BUSY_END_IRQ; -+ return false; -+ } else { -+ dev_dbg(mmc_dev(host->mmc), -+ "lost busy status when waiting for busy end IRQ\n"); -+ writel(host->variant->busy_detect_mask, base + MMCICLEAR); -+ writel(readl(base + MMCIMASK0) & -+ ~host->variant->busy_detect_mask, base + MMCIMASK0); -+ host->busy_state = MMCI_BUSY_DONE; -+ host->busy_status = 0; -+ return true; -+ } - } - - /* -@@ -723,11 +754,18 @@ static bool ux500_busy_complete(struct mmci_host *host, u32 status, u32 err_msk) - * the busy end IRQ. Clear and mask the IRQ, then continue to - * process the command. - */ -- if (host->busy_status) { -- writel(host->variant->busy_detect_mask, base + MMCICLEAR); -+ if (host->busy_state == MMCI_BUSY_END_IRQ) { -+ if (status & host->variant->busy_detect_flag) { -+ /* We should just get two IRQs for busy detect */ -+ dev_err(mmc_dev(host->mmc), "spurious busy detect IRQ\n"); -+ return false; -+ } - -+ writel(host->variant->busy_detect_mask, base + MMCICLEAR); - writel(readl(base + MMCIMASK0) & - ~host->variant->busy_detect_mask, base + MMCIMASK0); -+ -+ host->busy_state = MMCI_BUSY_DONE; - host->busy_status = 0; - } - -@@ -1258,6 +1296,7 @@ mmci_start_command(struct mmci_host *host, struct mmc_command *cmd, u32 c) - } - - if (cmd->flags & MMC_RSP_BUSY) { -+ host->busy_state = MMCI_BUSY_IDLE; - host->busy_status = 0; - - if (host->variant->busy_timeout) { -diff --git a/drivers/mmc/host/mmci.h b/drivers/mmc/host/mmci.h -index e1a9b96a3396..82f3850325c8 100644 ---- a/drivers/mmc/host/mmci.h -+++ b/drivers/mmc/host/mmci.h -@@ -261,6 +261,21 @@ struct clk; - struct dma_chan; - struct mmci_host; - -+/** -+ * enum mmci_busy_state - enumerate the busy detect wait states -+ * -+ * This is used for the state machine waiting for different busy detect -+ * interrupts on hardware that fire a single IRQ for start and end of -+ * the busy detect phase on DAT0. -+ */ -+enum mmci_busy_state { -+ MMCI_BUSY_IDLE, -+ MMCI_BUSY_WAITING_FOR_IRQS, -+ MMCI_BUSY_START_IRQ, -+ MMCI_BUSY_END_IRQ, -+ MMCI_BUSY_DONE, -+}; -+ - /** - * struct variant_data - MMCI variant-specific quirks - * @clkreg: default value for MCICLOCK register -@@ -409,6 +424,7 @@ struct mmci_host { - u32 clk_reg; - u32 clk_reg_add; - u32 datactrl_reg; -+ enum mmci_busy_state busy_state; - u32 busy_status; - u32 mask1_reg; - u8 vqmmc_enabled:1; -diff --git a/drivers/mmc/host/mmci_stm32_sdmmc.c b/drivers/mmc/host/mmci_stm32_sdmmc.c -index 60bca78a72b1..24831a1092b2 100644 ---- a/drivers/mmc/host/mmci_stm32_sdmmc.c -+++ b/drivers/mmc/host/mmci_stm32_sdmmc.c -@@ -393,8 +393,10 @@ static bool sdmmc_busy_complete(struct mmci_host *host, u32 status, u32 err_msk) - busy_d0 = sdmmc_status & MCI_STM32_BUSYD0; - - /* complete if there is an error or busy_d0end */ -- if ((status & err_msk) || busy_d0end) -+ if ((status & err_msk) || busy_d0end) { -+ host->busy_state = MMCI_BUSY_DONE; - goto complete; -+ } - - /* - * On response the busy signaling is reflected in the BUSYD0 flag. -@@ -408,6 +410,7 @@ static bool sdmmc_busy_complete(struct mmci_host *host, u32 status, u32 err_msk) - host->busy_status = status & - (MCI_CMDSENT | MCI_CMDRESPEND); - } -+ host->busy_state = MMCI_BUSY_END_IRQ; - return false; - } - -@@ -416,6 +419,7 @@ static bool sdmmc_busy_complete(struct mmci_host *host, u32 status, u32 err_msk) - writel_relaxed(mask & ~host->variant->busy_detect_mask, - base + MMCIMASK0); - host->busy_status = 0; -+ host->busy_state = MMCI_BUSY_DONE; - } - - writel_relaxed(host->variant->busy_detect_mask, base + MMCICLEAR); --- -2.39.2 - -From git@z Thu Jan 1 00:00:00 1970 -Subject: [PATCH v2 6/12] mmc: mmci: Retry the busy start condition -From: Linus Walleij -Date: Sun, 09 Apr 2023 00:00:27 +0200 -Message-Id: <20230405-pl180-busydetect-fix-v2-6-eeb10323b546@linaro.org> -MIME-Version: 1.0 -Content-Type: text/plain; charset="utf-8" -Content-Transfer-Encoding: 7bit - -This makes the ux500 ->busy_complete() callback re-read -the status register 10 times while waiting for the busy -signal to assert in the status register. - -If this does not happen, we bail out regarding the -command completed already, i.e. before we managed to -start to check the busy status. - -There is a comment in the code about this, let's just -implement it to be certain that we can catch this glitch -if it happens. - -Signed-off-by: Linus Walleij ---- -ChangeLog v1->v2: -- Move over the initial saving of host->busy_status from - an unrelated patch to this one: it is clear what we are - doing: we don't want to miss any transient - (MCI_CMDSENT | MCI_CMDRESPEND) in the status register. ---- - drivers/mmc/host/mmci.c | 40 ++++++++++++++++++++++++++++------------ - 1 file changed, 28 insertions(+), 12 deletions(-) - -diff --git a/drivers/mmc/host/mmci.c b/drivers/mmc/host/mmci.c -index 887b83e392a4..590703075bbc 100644 ---- a/drivers/mmc/host/mmci.c -+++ b/drivers/mmc/host/mmci.c -@@ -664,6 +664,7 @@ static u32 ux500v2_get_dctrl_cfg(struct mmci_host *host) - static bool ux500_busy_complete(struct mmci_host *host, u32 status, u32 err_msk) - { - void __iomem *base = host->base; -+ int retries = 10; - - if (status & err_msk) { - /* Stop any ongoing busy detection if an error occurs */ -@@ -684,21 +685,36 @@ static bool ux500_busy_complete(struct mmci_host *host, u32 status, u32 err_msk) - * Note that, the card may need a couple of clock cycles before - * it starts signaling busy on DAT0, hence re-read the - * MMCISTATUS register here, to allow the busy bit to be set. -- * Potentially we may even need to poll the register for a -- * while, to allow it to be set, but tests indicates that it -- * isn't needed. - */ - if (host->busy_state == MMCI_BUSY_IDLE) { -- status = readl(base + MMCISTATUS); -- if (status & host->variant->busy_detect_flag) { -- writel(readl(base + MMCIMASK0) | -- host->variant->busy_detect_mask, -- base + MMCIMASK0); -- -- host->busy_status = status & (MCI_CMDSENT | MCI_CMDRESPEND); -- host->busy_state = MMCI_BUSY_WAITING_FOR_IRQS; -- return false; -+ /* -+ * Save the first status register read to be sure to catch -+ * all bits that may be lost will retrying. If the command -+ * is still busy this will result in assigning 0 to -+ * host->busy_status, which is what it should be in IDLE. -+ */ -+ host->busy_status = status & (MCI_CMDSENT | MCI_CMDRESPEND); -+ while (retries) { -+ status = readl(base + MMCISTATUS); -+ if (status & host->variant->busy_detect_flag) { -+ writel(readl(base + MMCIMASK0) | -+ host->variant->busy_detect_mask, -+ base + MMCIMASK0); -+ -+ /* Keep accumulating status bits */ -+ host->busy_status |= status & (MCI_CMDSENT | MCI_CMDRESPEND); -+ host->busy_state = MMCI_BUSY_WAITING_FOR_IRQS; -+ return false; -+ } -+ retries--; - } -+ dev_dbg(mmc_dev(host->mmc), "no busy signalling in time\n"); -+ writel(host->variant->busy_detect_mask, base + MMCICLEAR); -+ writel(readl(base + MMCIMASK0) & -+ ~host->variant->busy_detect_mask, base + MMCIMASK0); -+ host->busy_state = MMCI_BUSY_DONE; -+ host->busy_status = 0; -+ return true; - } - - /* --- -2.39.2 - -From git@z Thu Jan 1 00:00:00 1970 -Subject: [PATCH v2 7/12] mmc: mmci: Use state machine state as exit - condition -From: Linus Walleij -Date: Sun, 09 Apr 2023 00:00:28 +0200 -Message-Id: <20230405-pl180-busydetect-fix-v2-7-eeb10323b546@linaro.org> -MIME-Version: 1.0 -Content-Type: text/plain; charset="utf-8" -Content-Transfer-Encoding: 7bit - -Return true if and only if we reached the state -MMCI_BUSY_DONE in the ux500 ->busy_complete() callback. - -Signed-off-by: Linus Walleij ---- -ChangeLog v1->v2: -- No changes ---- - drivers/mmc/host/mmci.c | 23 +++++++++++++---------- - 1 file changed, 13 insertions(+), 10 deletions(-) - -diff --git a/drivers/mmc/host/mmci.c b/drivers/mmc/host/mmci.c -index 590703075bbc..2689c6bb62d6 100644 ---- a/drivers/mmc/host/mmci.c -+++ b/drivers/mmc/host/mmci.c -@@ -673,7 +673,7 @@ static bool ux500_busy_complete(struct mmci_host *host, u32 status, u32 err_msk) - ~host->variant->busy_detect_mask, base + MMCIMASK0); - host->busy_state = MMCI_BUSY_DONE; - host->busy_status = 0; -- return true; -+ goto out_ret_state; - } - - /* -@@ -704,7 +704,7 @@ static bool ux500_busy_complete(struct mmci_host *host, u32 status, u32 err_msk) - /* Keep accumulating status bits */ - host->busy_status |= status & (MCI_CMDSENT | MCI_CMDRESPEND); - host->busy_state = MMCI_BUSY_WAITING_FOR_IRQS; -- return false; -+ goto out_ret_state; - } - retries--; - } -@@ -713,8 +713,7 @@ static bool ux500_busy_complete(struct mmci_host *host, u32 status, u32 err_msk) - writel(readl(base + MMCIMASK0) & - ~host->variant->busy_detect_mask, base + MMCIMASK0); - host->busy_state = MMCI_BUSY_DONE; -- host->busy_status = 0; -- return true; -+ goto out_ret_state; - } - - /* -@@ -733,7 +732,7 @@ static bool ux500_busy_complete(struct mmci_host *host, u32 status, u32 err_msk) - host->busy_status |= status & (MCI_CMDSENT | MCI_CMDRESPEND); - writel(host->variant->busy_detect_mask, base + MMCICLEAR); - host->busy_state = MMCI_BUSY_START_IRQ; -- return false; -+ goto out_ret_state; - } else { - dev_dbg(mmc_dev(host->mmc), - "lost busy status when waiting for busy start IRQ\n"); -@@ -742,7 +741,7 @@ static bool ux500_busy_complete(struct mmci_host *host, u32 status, u32 err_msk) - ~host->variant->busy_detect_mask, base + MMCIMASK0); - host->busy_state = MMCI_BUSY_DONE; - host->busy_status = 0; -- return true; -+ goto out_ret_state; - } - } - -@@ -751,7 +750,7 @@ static bool ux500_busy_complete(struct mmci_host *host, u32 status, u32 err_msk) - host->busy_status |= status & (MCI_CMDSENT | MCI_CMDRESPEND); - writel(host->variant->busy_detect_mask, base + MMCICLEAR); - host->busy_state = MMCI_BUSY_END_IRQ; -- return false; -+ goto out_ret_state; - } else { - dev_dbg(mmc_dev(host->mmc), - "lost busy status when waiting for busy end IRQ\n"); -@@ -760,7 +759,7 @@ static bool ux500_busy_complete(struct mmci_host *host, u32 status, u32 err_msk) - ~host->variant->busy_detect_mask, base + MMCIMASK0); - host->busy_state = MMCI_BUSY_DONE; - host->busy_status = 0; -- return true; -+ goto out_ret_state; - } - } - -@@ -774,7 +773,7 @@ static bool ux500_busy_complete(struct mmci_host *host, u32 status, u32 err_msk) - if (status & host->variant->busy_detect_flag) { - /* We should just get two IRQs for busy detect */ - dev_err(mmc_dev(host->mmc), "spurious busy detect IRQ\n"); -- return false; -+ goto out_ret_state; - } - - writel(host->variant->busy_detect_mask, base + MMCICLEAR); -@@ -783,9 +782,13 @@ static bool ux500_busy_complete(struct mmci_host *host, u32 status, u32 err_msk) - - host->busy_state = MMCI_BUSY_DONE; - host->busy_status = 0; -+ } else { -+ dev_dbg(mmc_dev(host->mmc), "fell through on state %d\n", -+ host->busy_state); - } - -- return true; -+out_ret_state: -+ return (host->busy_state == MMCI_BUSY_DONE); - } - - /* --- -2.39.2 - -From git@z Thu Jan 1 00:00:00 1970 -Subject: [PATCH v2 8/12] mmc: mmci: Use a switch statement machine -From: Linus Walleij -Date: Sun, 09 Apr 2023 00:00:29 +0200 -Message-Id: <20230405-pl180-busydetect-fix-v2-8-eeb10323b546@linaro.org> -MIME-Version: 1.0 -Content-Type: text/plain; charset="utf-8" -Content-Transfer-Encoding: 7bit - -As is custom, use a big switch statement to transition -between the edges of the state machine inside -the ux500 ->busy_complete callback. - -Signed-off-by: Linus Walleij ---- -ChangeLog v1->v2: -- No changes ---- - drivers/mmc/host/mmci.c | 34 ++++++++++++++++++++-------------- - 1 file changed, 20 insertions(+), 14 deletions(-) - -diff --git a/drivers/mmc/host/mmci.c b/drivers/mmc/host/mmci.c -index 2689c6bb62d6..76d885d7e49f 100644 ---- a/drivers/mmc/host/mmci.c -+++ b/drivers/mmc/host/mmci.c -@@ -676,6 +676,12 @@ static bool ux500_busy_complete(struct mmci_host *host, u32 status, u32 err_msk) - goto out_ret_state; - } - -+ /* -+ * The state transitions are encoded in a state machine crossing -+ * the edges in this switch statement. -+ */ -+ switch (host->busy_state) { -+ - /* - * Before unmasking for the busy end IRQ, confirm that the - * command was sent successfully. To keep track of having a -@@ -686,7 +692,7 @@ static bool ux500_busy_complete(struct mmci_host *host, u32 status, u32 err_msk) - * it starts signaling busy on DAT0, hence re-read the - * MMCISTATUS register here, to allow the busy bit to be set. - */ -- if (host->busy_state == MMCI_BUSY_IDLE) { -+ case MMCI_BUSY_IDLE: - /* - * Save the first status register read to be sure to catch - * all bits that may be lost will retrying. If the command -@@ -713,8 +719,7 @@ static bool ux500_busy_complete(struct mmci_host *host, u32 status, u32 err_msk) - writel(readl(base + MMCIMASK0) & - ~host->variant->busy_detect_mask, base + MMCIMASK0); - host->busy_state = MMCI_BUSY_DONE; -- goto out_ret_state; -- } -+ break; - - /* - * If there is a command in-progress that has been successfully -@@ -727,12 +732,11 @@ static bool ux500_busy_complete(struct mmci_host *host, u32 status, u32 err_msk) - * both the start and the end interrupts needs to be cleared, - * one after the other. So, clear the busy start IRQ here. - */ -- if (host->busy_state == MMCI_BUSY_WAITING_FOR_IRQS) { -+ case MMCI_BUSY_WAITING_FOR_IRQS: - if (status & host->variant->busy_detect_flag) { - host->busy_status |= status & (MCI_CMDSENT | MCI_CMDRESPEND); - writel(host->variant->busy_detect_mask, base + MMCICLEAR); - host->busy_state = MMCI_BUSY_START_IRQ; -- goto out_ret_state; - } else { - dev_dbg(mmc_dev(host->mmc), - "lost busy status when waiting for busy start IRQ\n"); -@@ -741,16 +745,14 @@ static bool ux500_busy_complete(struct mmci_host *host, u32 status, u32 err_msk) - ~host->variant->busy_detect_mask, base + MMCIMASK0); - host->busy_state = MMCI_BUSY_DONE; - host->busy_status = 0; -- goto out_ret_state; - } -- } -+ break; - -- if (host->busy_state == MMCI_BUSY_START_IRQ) { -+ case MMCI_BUSY_START_IRQ: - if (status & host->variant->busy_detect_flag) { - host->busy_status |= status & (MCI_CMDSENT | MCI_CMDRESPEND); - writel(host->variant->busy_detect_mask, base + MMCICLEAR); - host->busy_state = MMCI_BUSY_END_IRQ; -- goto out_ret_state; - } else { - dev_dbg(mmc_dev(host->mmc), - "lost busy status when waiting for busy end IRQ\n"); -@@ -759,9 +761,8 @@ static bool ux500_busy_complete(struct mmci_host *host, u32 status, u32 err_msk) - ~host->variant->busy_detect_mask, base + MMCIMASK0); - host->busy_state = MMCI_BUSY_DONE; - host->busy_status = 0; -- goto out_ret_state; - } -- } -+ break; - - /* - * If there is a command in-progress that has been successfully -@@ -769,11 +770,10 @@ static bool ux500_busy_complete(struct mmci_host *host, u32 status, u32 err_msk) - * the busy end IRQ. Clear and mask the IRQ, then continue to - * process the command. - */ -- if (host->busy_state == MMCI_BUSY_END_IRQ) { -+ case MMCI_BUSY_END_IRQ: - if (status & host->variant->busy_detect_flag) { - /* We should just get two IRQs for busy detect */ - dev_err(mmc_dev(host->mmc), "spurious busy detect IRQ\n"); -- goto out_ret_state; - } - - writel(host->variant->busy_detect_mask, base + MMCICLEAR); -@@ -782,9 +782,15 @@ static bool ux500_busy_complete(struct mmci_host *host, u32 status, u32 err_msk) - - host->busy_state = MMCI_BUSY_DONE; - host->busy_status = 0; -- } else { -+ break; -+ -+ case MMCI_BUSY_DONE: -+ break; -+ -+ default: - dev_dbg(mmc_dev(host->mmc), "fell through on state %d\n", - host->busy_state); -+ break; - } - - out_ret_state: --- -2.39.2 - -From git@z Thu Jan 1 00:00:00 1970 -Subject: [PATCH v2 9/12] mmc: mmci: Break out a helper function -From: Linus Walleij -Date: Sun, 09 Apr 2023 00:00:30 +0200 -Message-Id: <20230405-pl180-busydetect-fix-v2-9-eeb10323b546@linaro.org> -MIME-Version: 1.0 -Content-Type: text/plain; charset="utf-8" -Content-Transfer-Encoding: 7bit - -These four lines clearing, masking and resetting the state -of the busy detect state machine is repeated five times in -the code so break this out to a small helper so things are -easier to read. - -Signed-off-by: Linus Walleij ---- -ChangeLog v1->v2: -- No changes ---- - drivers/mmc/host/mmci.c | 42 ++++++++++++++++-------------------------- - 1 file changed, 16 insertions(+), 26 deletions(-) - -diff --git a/drivers/mmc/host/mmci.c b/drivers/mmc/host/mmci.c -index 76d885d7e49f..9a7f441ec9d6 100644 ---- a/drivers/mmc/host/mmci.c -+++ b/drivers/mmc/host/mmci.c -@@ -654,6 +654,17 @@ static u32 ux500v2_get_dctrl_cfg(struct mmci_host *host) - return MCI_DPSM_ENABLE | (host->data->blksz << 16); - } - -+static void ux500_busy_clear_mask_done(struct mmci_host *host) -+{ -+ void __iomem *base = host->base; -+ -+ writel(host->variant->busy_detect_mask, base + MMCICLEAR); -+ writel(readl(base + MMCIMASK0) & -+ ~host->variant->busy_detect_mask, base + MMCIMASK0); -+ host->busy_state = MMCI_BUSY_DONE; -+ host->busy_status = 0; -+} -+ - /* - * ux500_busy_complete() - this will wait until the busy status - * goes off, saving any status that occur in the meantime into -@@ -668,11 +679,7 @@ static bool ux500_busy_complete(struct mmci_host *host, u32 status, u32 err_msk) - - if (status & err_msk) { - /* Stop any ongoing busy detection if an error occurs */ -- writel(host->variant->busy_detect_mask, base + MMCICLEAR); -- writel(readl(base + MMCIMASK0) & -- ~host->variant->busy_detect_mask, base + MMCIMASK0); -- host->busy_state = MMCI_BUSY_DONE; -- host->busy_status = 0; -+ ux500_busy_clear_mask_done(host); - goto out_ret_state; - } - -@@ -715,10 +722,7 @@ static bool ux500_busy_complete(struct mmci_host *host, u32 status, u32 err_msk) - retries--; - } - dev_dbg(mmc_dev(host->mmc), "no busy signalling in time\n"); -- writel(host->variant->busy_detect_mask, base + MMCICLEAR); -- writel(readl(base + MMCIMASK0) & -- ~host->variant->busy_detect_mask, base + MMCIMASK0); -- host->busy_state = MMCI_BUSY_DONE; -+ ux500_busy_clear_mask_done(host); - break; - - /* -@@ -740,11 +744,7 @@ static bool ux500_busy_complete(struct mmci_host *host, u32 status, u32 err_msk) - } else { - dev_dbg(mmc_dev(host->mmc), - "lost busy status when waiting for busy start IRQ\n"); -- writel(host->variant->busy_detect_mask, base + MMCICLEAR); -- writel(readl(base + MMCIMASK0) & -- ~host->variant->busy_detect_mask, base + MMCIMASK0); -- host->busy_state = MMCI_BUSY_DONE; -- host->busy_status = 0; -+ ux500_busy_clear_mask_done(host); - } - break; - -@@ -756,11 +756,7 @@ static bool ux500_busy_complete(struct mmci_host *host, u32 status, u32 err_msk) - } else { - dev_dbg(mmc_dev(host->mmc), - "lost busy status when waiting for busy end IRQ\n"); -- writel(host->variant->busy_detect_mask, base + MMCICLEAR); -- writel(readl(base + MMCIMASK0) & -- ~host->variant->busy_detect_mask, base + MMCIMASK0); -- host->busy_state = MMCI_BUSY_DONE; -- host->busy_status = 0; -+ ux500_busy_clear_mask_done(host); - } - break; - -@@ -775,13 +771,7 @@ static bool ux500_busy_complete(struct mmci_host *host, u32 status, u32 err_msk) - /* We should just get two IRQs for busy detect */ - dev_err(mmc_dev(host->mmc), "spurious busy detect IRQ\n"); - } -- -- writel(host->variant->busy_detect_mask, base + MMCICLEAR); -- writel(readl(base + MMCIMASK0) & -- ~host->variant->busy_detect_mask, base + MMCIMASK0); -- -- host->busy_state = MMCI_BUSY_DONE; -- host->busy_status = 0; -+ ux500_busy_clear_mask_done(host); - break; - - case MMCI_BUSY_DONE: --- -2.39.2 - -From git@z Thu Jan 1 00:00:00 1970 -Subject: [PATCH v2 10/12] mmc: mmci: mmci_card_busy() from state machine -From: Linus Walleij -Date: Sun, 09 Apr 2023 00:00:31 +0200 -Message-Id: <20230405-pl180-busydetect-fix-v2-10-eeb10323b546@linaro.org> -MIME-Version: 1.0 -Content-Type: text/plain; charset="utf-8" -Content-Transfer-Encoding: 7bit - -If we have a .busy_complete() callback, then check if -the state machine triggered from the busy detect interrupts -is busy: then we are certainly busy. - -Signed-off-by: Linus Walleij ---- -ChangeLog v1->v2: -- Do this in a safer way that falls back to reading busy - status from the hardware if the state machine is NOT - busy. ---- - drivers/mmc/host/mmci.c | 6 ++++++ - 1 file changed, 6 insertions(+) - -diff --git a/drivers/mmc/host/mmci.c b/drivers/mmc/host/mmci.c -index 9a7f441ec9d6..180a7b719347 100644 ---- a/drivers/mmc/host/mmci.c -+++ b/drivers/mmc/host/mmci.c -@@ -339,6 +339,12 @@ static int mmci_card_busy(struct mmc_host *mmc) - unsigned long flags; - int busy = 0; - -+ /* If we are waiting for IRQs we are certainly busy */ -+ if (host->ops->busy_complete && -+ host->busy_state != MMCI_BUSY_IDLE && -+ host->busy_state != MMCI_BUSY_DONE) -+ return 1; -+ - spin_lock_irqsave(&host->lock, flags); - if (readl(host->base + MMCISTATUS) & host->variant->busy_detect_flag) - busy = 1; --- -2.39.2 - -From git@z Thu Jan 1 00:00:00 1970 -Subject: [PATCH v2 11/12] mmc: mmci: Drop end IRQ from Ux500 busydetect -From: Linus Walleij -Date: Sun, 09 Apr 2023 00:00:32 +0200 -Message-Id: <20230405-pl180-busydetect-fix-v2-11-eeb10323b546@linaro.org> -MIME-Version: 1.0 -Content-Type: text/plain; charset="utf-8" -Content-Transfer-Encoding: 7bit - -The Ux500 has these state transition edges: - -IDLE -> WAITING_FOR_IRQS -> START_IRQ -> DONE - -The first IRQ move us from WAITING_FOR_IRQS to START_IRQ -and the second IRQ moves us from START_IRQ to DONE. - -This didn't come out until after all refactoring. - -For STM32 we keep the END_IRQ state around, because that -is indeed what we are waiting for in that case. - -Signed-off-by: Linus Walleij ---- -ChangeLog v1->v2: -- No changes ---- - drivers/mmc/host/mmci.c | 16 +--------------- - 1 file changed, 1 insertion(+), 15 deletions(-) - -diff --git a/drivers/mmc/host/mmci.c b/drivers/mmc/host/mmci.c -index 180a7b719347..17233702e7fb 100644 ---- a/drivers/mmc/host/mmci.c -+++ b/drivers/mmc/host/mmci.c -@@ -758,7 +758,7 @@ static bool ux500_busy_complete(struct mmci_host *host, u32 status, u32 err_msk) - if (status & host->variant->busy_detect_flag) { - host->busy_status |= status & (MCI_CMDSENT | MCI_CMDRESPEND); - writel(host->variant->busy_detect_mask, base + MMCICLEAR); -- host->busy_state = MMCI_BUSY_END_IRQ; -+ ux500_busy_clear_mask_done(host); - } else { - dev_dbg(mmc_dev(host->mmc), - "lost busy status when waiting for busy end IRQ\n"); -@@ -766,20 +766,6 @@ static bool ux500_busy_complete(struct mmci_host *host, u32 status, u32 err_msk) - } - break; - -- /* -- * If there is a command in-progress that has been successfully -- * sent and the busy bit isn't set, it means we have received -- * the busy end IRQ. Clear and mask the IRQ, then continue to -- * process the command. -- */ -- case MMCI_BUSY_END_IRQ: -- if (status & host->variant->busy_detect_flag) { -- /* We should just get two IRQs for busy detect */ -- dev_err(mmc_dev(host->mmc), "spurious busy detect IRQ\n"); -- } -- ux500_busy_clear_mask_done(host); -- break; -- - case MMCI_BUSY_DONE: - break; - --- -2.39.2 - -From git@z Thu Jan 1 00:00:00 1970 -Subject: [PATCH v2 12/12] mmc: mmci: Add busydetect timeout -From: Linus Walleij -Date: Sun, 09 Apr 2023 00:00:33 +0200 -Message-Id: <20230405-pl180-busydetect-fix-v2-12-eeb10323b546@linaro.org> -MIME-Version: 1.0 -Content-Type: text/plain; charset="utf-8" -Content-Transfer-Encoding: 7bit - -Add a timeout for busydetect IRQs using a delayed work. -It might happen (and does happen) on Ux500 that the first -busy detect IRQ appears and not the second one. This will -make the host hang indefinitely waiting for the second -IRQ to appear. - -Fire a delayed work after 10ms and re-engage the command -IRQ so the transaction finishes: we are certainly done -at this point, or we will catch an error in the status -register. - -This makes the eMMC work again on Skomer. - -Signed-off-by: Linus Walleij ---- -ChangeLog v1->v2: -- No changes ---- - drivers/mmc/host/mmci.c | 23 +++++++++++++++++++++++ - drivers/mmc/host/mmci.h | 1 + - 2 files changed, 24 insertions(+) - -diff --git a/drivers/mmc/host/mmci.c b/drivers/mmc/host/mmci.c -index 17233702e7fb..1af129fba0ed 100644 ---- a/drivers/mmc/host/mmci.c -+++ b/drivers/mmc/host/mmci.c -@@ -37,6 +37,7 @@ - #include - #include - #include -+#include - - #include - #include -@@ -747,6 +748,8 @@ static bool ux500_busy_complete(struct mmci_host *host, u32 status, u32 err_msk) - host->busy_status |= status & (MCI_CMDSENT | MCI_CMDRESPEND); - writel(host->variant->busy_detect_mask, base + MMCICLEAR); - host->busy_state = MMCI_BUSY_START_IRQ; -+ schedule_delayed_work(&host->busy_timeout_work, -+ msecs_to_jiffies(10)); - } else { - dev_dbg(mmc_dev(host->mmc), - "lost busy status when waiting for busy start IRQ\n"); -@@ -758,6 +761,7 @@ static bool ux500_busy_complete(struct mmci_host *host, u32 status, u32 err_msk) - if (status & host->variant->busy_detect_flag) { - host->busy_status |= status & (MCI_CMDSENT | MCI_CMDRESPEND); - writel(host->variant->busy_detect_mask, base + MMCICLEAR); -+ cancel_delayed_work_sync(&host->busy_timeout_work); - ux500_busy_clear_mask_done(host); - } else { - dev_dbg(mmc_dev(host->mmc), -@@ -1498,6 +1502,22 @@ mmci_cmd_irq(struct mmci_host *host, struct mmc_command *cmd, - } - } - -+/* -+ * This busy timeout worker is used to "kick" the command IRQ if a -+ * busy detect IRQ fails to appear in reasonable time. Only used on -+ * variants with busy detection IRQ delivery. -+ */ -+static void busy_timeout_work(struct work_struct *work) -+{ -+ struct mmci_host *host = -+ container_of(work, struct mmci_host, busy_timeout_work.work); -+ u32 status; -+ -+ dev_dbg(mmc_dev(host->mmc), "timeout waiting for busy IRQ\n"); -+ status = readl(host->base + MMCISTATUS); -+ mmci_cmd_irq(host, host->cmd, status); -+} -+ - static int mmci_get_rx_fifocnt(struct mmci_host *host, u32 status, int remain) - { - return remain - (readl(host->base + MMCIFIFOCNT) << 2); -@@ -2311,6 +2331,9 @@ static int mmci_probe(struct amba_device *dev, - goto clk_disable; - } - -+ if (host->variant->busy_detect && host->ops->busy_complete) -+ INIT_DELAYED_WORK(&host->busy_timeout_work, busy_timeout_work); -+ - writel(MCI_IRQENABLE | variant->start_err, host->base + MMCIMASK0); - - amba_set_drvdata(dev, mmc); -diff --git a/drivers/mmc/host/mmci.h b/drivers/mmc/host/mmci.h -index 82f3850325c8..68ce7ea4d3b2 100644 ---- a/drivers/mmc/host/mmci.h -+++ b/drivers/mmc/host/mmci.h -@@ -453,6 +453,7 @@ struct mmci_host { - void *dma_priv; - - s32 next_cookie; -+ struct delayed_work busy_timeout_work; - }; - - #define dma_inprogress(host) ((host)->dma_in_progress) --- -2.39.2 - diff --git a/device/testing/linux-postmarketos-stericsson/0002-pwm-ab8500-Get-HW-ID-from-reg-value.patch b/device/testing/linux-postmarketos-stericsson/0002-pwm-ab8500-Get-HW-ID-from-reg-value.patch deleted file mode 100644 index 98f93c31d..000000000 --- a/device/testing/linux-postmarketos-stericsson/0002-pwm-ab8500-Get-HW-ID-from-reg-value.patch +++ /dev/null @@ -1,58 +0,0 @@ -From 6a5a212f9907a5da764878a7b0059da33371e36f Mon Sep 17 00:00:00 2001 -From: Linus Walleij -Date: Sat, 15 Jan 2022 01:54:57 +0100 -Subject: [PATCH 2/2] pwm: ab8500: Get HW ID from reg value - -Instead of relying on the platform device ID which is just -assigned by the order of appearance of nodes in the device tree -if we're lucky, rely on the reg value which is stable and -predictable. - -Signed-off-by: Linus Walleij ---- - drivers/pwm/pwm-ab8500.c | 13 ++++++++++--- - 1 file changed, 10 insertions(+), 3 deletions(-) - -diff --git a/drivers/pwm/pwm-ab8500.c b/drivers/pwm/pwm-ab8500.c -index ad37bc46f272..338e046e89ea 100644 ---- a/drivers/pwm/pwm-ab8500.c -+++ b/drivers/pwm/pwm-ab8500.c -@@ -11,6 +11,7 @@ - #include - #include - #include -+#include - - /* - * PWM Out generators -@@ -93,10 +94,16 @@ static const struct pwm_ops ab8500_pwm_ops = { - static int ab8500_pwm_probe(struct platform_device *pdev) - { - struct ab8500_pwm_chip *ab8500; -+ u32 hwid; - int err; - -- if (pdev->id < 1 || pdev->id > 31) -- return dev_err_probe(&pdev->dev, EINVAL, "Invalid device id %d\n", pdev->id); -+ err = device_property_read_u32(&pdev->dev, "reg", &hwid); -+ if (err) { -+ dev_err_probe(&pdev->dev, err, "missing reg property\n"); -+ return err; -+ } -+ if (hwid < 1 || hwid > 31) -+ return dev_err_probe(&pdev->dev, EINVAL, "Invalid device id %d\n", hwid); - - /* - * Nothing to be done in probe, this is required to get the -@@ -109,7 +116,7 @@ static int ab8500_pwm_probe(struct platform_device *pdev) - ab8500->chip.dev = &pdev->dev; - ab8500->chip.ops = &ab8500_pwm_ops; - ab8500->chip.npwm = 1; -- ab8500->hwid = pdev->id - 1; -+ ab8500->hwid = hwid; - - err = devm_pwmchip_add(&pdev->dev, &ab8500->chip); - if (err < 0) --- -2.38.1 - diff --git a/device/testing/linux-postmarketos-stericsson/APKBUILD b/device/testing/linux-postmarketos-stericsson/APKBUILD index 87ae07024..485869926 100644 --- a/device/testing/linux-postmarketos-stericsson/APKBUILD +++ b/device/testing/linux-postmarketos-stericsson/APKBUILD @@ -4,8 +4,8 @@ _flavor="postmarketos-stericsson" _config="config-$_flavor.armv7" pkgname=linux-$_flavor -pkgver=6.3.5 -pkgrel=1 +pkgver=6.7.0 +pkgrel=0 pkgdesc="Mainline kernel for ST-Ericsson NovaThor devices" arch="armv7" _carch="arm" @@ -37,8 +37,6 @@ esac source=" https://cdn.kernel.org/pub/linux/kernel/v${_kernver%%.*}.x/linux-$_kernver.tar.xz config-$_flavor.armv7 - 0001-fix-busydetect-ux500.patch - 0002-pwm-ab8500-Get-HW-ID-from-reg-value.patch " builddir="$srcdir/linux-${_kernver//_/-}" @@ -67,8 +65,6 @@ package() { } sha512sums=" -91a98c56191645c4ba32f657da59b6be92021b37a698eaf79e1ed3a79b959626386e7b69c8cb0c9eab0645c287a3e53393b1710158eca67b2f66a8d3eaec13de linux-6.3.5.tar.xz -9760c63cbe1319363df137c641d24bfd9c054f5bcee26977fa996baa912511ee119950bcce87e583412ade626bba6dd6cc2139cedb4670f2bf6eda79e294e057 config-postmarketos-stericsson.armv7 -10df6cacbed7b76d23a879aea4b9913b22551a6e4f9cd49814f491af4b8121dccbae4b3f1400584917f071355bdcd298f900b712ce31905c4ec561247dbb14e0 0001-fix-busydetect-ux500.patch -3abf1a2b28077a2784c33f468facf44c2312f8bb54422463cffcb92a0eaa1f8954f1fa5f8f5acac0262495c08692a2161325c1ca68f7d23aecb36c1f9138d7ef 0002-pwm-ab8500-Get-HW-ID-from-reg-value.patch +de06de556191614bd9daf077ae239360352a402bab407748e67f1e5108c92fd933e451707840ab22fe0f9976db3d1e1b60ca9d41cf894f015ca09b3f652b74ad linux-6.7.tar.xz +2f71e984835fe838031d07ea084a6179674c09ba1a9688c84d4eff0d1c19686475cd92bb2519e033f557f781aea056efcddbe2bb2d6092eb3cf39d577c96ea89 config-postmarketos-stericsson.armv7 " diff --git a/device/testing/linux-postmarketos-stericsson/config-postmarketos-stericsson.armv7 b/device/testing/linux-postmarketos-stericsson/config-postmarketos-stericsson.armv7 index 6827833c5..332877dff 100644 --- a/device/testing/linux-postmarketos-stericsson/config-postmarketos-stericsson.armv7 +++ b/device/testing/linux-postmarketos-stericsson/config-postmarketos-stericsson.armv7 @@ -1,15 +1,15 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/arm 6.3.5 Kernel Configuration +# Linux/arm 6.7.0 Kernel Configuration # -CONFIG_CC_VERSION_TEXT="armv7-alpine-linux-musleabihf-gcc (Alpine 13.1.1_git20230527) 13.1.1 20230527" +CONFIG_CC_VERSION_TEXT="armv7-alpine-linux-musleabihf-gcc (Alpine 13.2.1_git20231014) 13.2.1 20231014" CONFIG_CC_IS_GCC=y -CONFIG_GCC_VERSION=130101 +CONFIG_GCC_VERSION=130201 CONFIG_CLANG_VERSION=0 CONFIG_AS_IS_GNU=y -CONFIG_AS_VERSION=24000 +CONFIG_AS_VERSION=24100 CONFIG_LD_IS_BFD=y -CONFIG_LD_VERSION=24000 +CONFIG_LD_VERSION=24100 CONFIG_LLD_VERSION=0 CONFIG_CC_HAS_ASM_GOTO_OUTPUT=y CONFIG_CC_HAS_ASM_GOTO_TIED_OUTPUT=y @@ -124,7 +124,6 @@ CONFIG_CPU_ISOLATION=y # CONFIG_TREE_RCU=y # CONFIG_RCU_EXPERT is not set -CONFIG_SRCU=y CONFIG_TREE_SRCU=y CONFIG_NEED_SRCU_NMI_SAFE=y CONFIG_TASKS_RCU_GENERIC=y @@ -137,7 +136,6 @@ CONFIG_RCU_NEED_SEGCBLIST=y # CONFIG_IKHEADERS is not set CONFIG_LOG_BUF_SHIFT=17 CONFIG_LOG_CPU_MAX_BUF_SHIFT=12 -CONFIG_PRINTK_SAFE_LOG_BUF_SHIFT=13 # CONFIG_PRINTK_INDEX is not set CONFIG_GENERIC_SCHED_CLOCK=y @@ -182,7 +180,6 @@ CONFIG_PID_NS=y CONFIG_NET_NS=y CONFIG_CHECKPOINT_RESTORE=y # CONFIG_SCHED_AUTOGROUP is not set -# CONFIG_SYSFS_DEPRECATED is not set # CONFIG_RELAY is not set CONFIG_BLK_DEV_INITRD=y CONFIG_INITRAMFS_SOURCE="" @@ -229,7 +226,7 @@ CONFIG_KALLSYMS_BASE_RELATIVE=y CONFIG_ARCH_HAS_MEMBARRIER_SYNC_CORE=y CONFIG_KCMP=y CONFIG_RSEQ=y -# CONFIG_EMBEDDED is not set +CONFIG_CACHESTAT_SYSCALL=y CONFIG_HAVE_PERF_EVENTS=y CONFIG_PERF_USE_VMALLOC=y @@ -242,6 +239,13 @@ CONFIG_PERF_EVENTS=y CONFIG_SYSTEM_DATA_VERIFICATION=y # CONFIG_PROFILING is not set + +# +# Kexec and crash features +# +# CONFIG_KEXEC is not set +# CONFIG_CRASH_DUMP is not set +# end of Kexec and crash features # end of General setup CONFIG_ARM=y @@ -469,6 +473,7 @@ CONFIG_STACKPROTECTOR_PER_TASK=y # Boot options # CONFIG_USE_OF=y +CONFIG_ARCH_WANT_FLAT_DTB_INSTALL=y CONFIG_ATAGS=y # CONFIG_DEPRECATED_PARAM_STRUCT is not set CONFIG_ZBOOT_ROM_TEXT=0x0 @@ -481,8 +486,8 @@ CONFIG_CMDLINE="root=/dev/ram0 console=ttyAMA2,115200n8" CONFIG_CMDLINE_FROM_BOOTLOADER=y # CONFIG_CMDLINE_EXTEND is not set # CONFIG_CMDLINE_FORCE is not set -# CONFIG_KEXEC is not set -# CONFIG_CRASH_DUMP is not set +CONFIG_ARCH_SUPPORTS_KEXEC=y +CONFIG_ARCH_SUPPORTS_CRASH_DUMP=y CONFIG_AUTO_ZRELADDR=y # CONFIG_EFI is not set # end of Boot options @@ -578,6 +583,8 @@ CONFIG_AS_VFP_VMRS_FPINST=y # # General architecture-dependent options # +CONFIG_HOTPLUG_CORE_SYNC=y +CONFIG_HOTPLUG_CORE_SYNC_DEAD=y # CONFIG_KPROBES is not set # CONFIG_JUMP_LABEL is not set CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y @@ -595,6 +602,7 @@ CONFIG_GENERIC_IDLE_POLL_SETUP=y CONFIG_ARCH_HAS_FORTIFY_SOURCE=y CONFIG_ARCH_HAS_KEEPINITRD=y CONFIG_ARCH_HAS_SET_MEMORY=y +CONFIG_ARCH_HAS_CPU_FINALIZE_INIT=y CONFIG_HAVE_ARCH_THREAD_STRUCT_WHITELIST=y CONFIG_ARCH_32BIT_OFF_T=y CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y @@ -603,6 +611,7 @@ CONFIG_HAVE_HW_BREAKPOINT=y CONFIG_HAVE_PERF_REGS=y CONFIG_HAVE_PERF_USER_STACK_DUMP=y CONFIG_HAVE_ARCH_JUMP_LABEL=y +CONFIG_MMU_LAZY_TLB_REFCOUNT=y CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG=y CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y CONFIG_HAVE_ARCH_SECCOMP=y @@ -661,6 +670,7 @@ CONFIG_FUNCTION_ALIGNMENT=0 CONFIG_RT_MUTEXES=y CONFIG_BASE_SMALL=0 CONFIG_MODULES=y +# CONFIG_MODULE_DEBUG is not set # CONFIG_MODULE_FORCE_LOAD is not set CONFIG_MODULE_UNLOAD=y # CONFIG_MODULE_FORCE_UNLOAD is not set @@ -768,13 +778,14 @@ CONFIG_ZSMALLOC_CHAIN_SIZE=8 # # SLAB allocator options # -# CONFIG_SLAB is not set +# CONFIG_SLAB_DEPRECATED is not set CONFIG_SLUB=y CONFIG_SLAB_MERGE_DEFAULT=y # CONFIG_SLAB_FREELIST_RANDOM is not set # CONFIG_SLAB_FREELIST_HARDENED is not set # CONFIG_SLUB_STATS is not set CONFIG_SLUB_CPU_PARTIAL=y +# CONFIG_RANDOM_KMALLOC_CACHES is not set # end of SLAB allocator options # CONFIG_SHUFFLE_PAGE_ALLOCATOR is not set @@ -791,6 +802,7 @@ CONFIG_COMPACT_UNEVICTABLE_DEFAULT=1 # CONFIG_PAGE_REPORTING is not set CONFIG_MIGRATION=y CONFIG_CONTIG_ALLOC=y +CONFIG_PCP_BATCH_SCALE_MAX=5 CONFIG_BOUNCE=y # CONFIG_KSM is not set CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 @@ -806,13 +818,16 @@ CONFIG_ARCH_HAS_CURRENT_STACK_POINTER=y CONFIG_VM_EVENT_COUNTERS=y # CONFIG_PERCPU_STATS is not set # CONFIG_GUP_TEST is not set +# CONFIG_DMAPOOL_TEST is not set CONFIG_KMAP_LOCAL=y CONFIG_KMAP_LOCAL_NON_LINEAR_PTE_ARRAY=y +CONFIG_MEMFD_CREATE=y # CONFIG_ANON_VMA_NAME is not set # CONFIG_USERFAULTFD is not set CONFIG_LRU_GEN=y CONFIG_LRU_GEN_ENABLED=y # CONFIG_LRU_GEN_STATS is not set +CONFIG_LOCK_MM_AND_FIND_VMA=y # # Data Access Monitoring @@ -824,6 +839,7 @@ CONFIG_LRU_GEN_ENABLED=y CONFIG_NET=y CONFIG_NET_INGRESS=y CONFIG_NET_EGRESS=y +CONFIG_NET_XGRESS=y CONFIG_SKB_EXTENSIONS=y # @@ -839,6 +855,7 @@ CONFIG_AF_UNIX_OOB=y # CONFIG_XFRM_USER is not set # CONFIG_NET_KEY is not set # CONFIG_XDP_SOCKETS is not set +CONFIG_NET_HANDSHAKE=y CONFIG_INET=y # CONFIG_IP_MULTICAST is not set # CONFIG_IP_ADVANCED_ROUTER is not set @@ -901,6 +918,7 @@ CONFIG_NETFILTER_INGRESS=y CONFIG_NETFILTER_EGRESS=y CONFIG_NETFILTER_NETLINK=m CONFIG_NETFILTER_FAMILY_BRIDGE=y +CONFIG_NETFILTER_BPF_LINK=y # CONFIG_NETFILTER_NETLINK_HOOK is not set # CONFIG_NETFILTER_NETLINK_ACCT is not set # CONFIG_NETFILTER_NETLINK_QUEUE is not set @@ -1244,6 +1262,7 @@ CONFIG_NET_L3_MASTER_DEV=y # CONFIG_QRTR is not set # CONFIG_NET_NCSI is not set CONFIG_PCPU_DEV_REFCNT=y +CONFIG_MAX_SKB_FRAGS=17 CONFIG_RPS=y CONFIG_RFS_ACCEL=y CONFIG_SOCK_RX_QUEUE_MAPPING=y @@ -1302,6 +1321,7 @@ CONFIG_BT_HCIUART_BCM=y # CONFIG_BT_MRVL is not set # CONFIG_BT_MTKSDIO is not set # CONFIG_BT_MTKUART is not set +# CONFIG_BT_NXPUART is not set # end of Bluetooth device drivers # CONFIG_AF_RXRPC is not set @@ -1415,18 +1435,23 @@ CONFIG_REGMAP_MMIO=y CONFIG_DMA_SHARED_BUFFER=y # CONFIG_DMA_FENCE_TRACE is not set CONFIG_GENERIC_ARCH_TOPOLOGY=y +# CONFIG_FW_DEVLINK_SYNC_STATE_TIMEOUT is not set # end of Generic Driver Options # # Bus devices # -# CONFIG_BRCMSTB_GISB_ARB is not set # CONFIG_MOXTET is not set # CONFIG_VEXPRESS_CONFIG is not set # CONFIG_MHI_BUS is not set # CONFIG_MHI_BUS_EP is not set # end of Bus devices +# +# Cache Drivers +# +# end of Cache Drivers + # CONFIG_CONNECTOR is not set # @@ -1442,6 +1467,12 @@ CONFIG_GENERIC_ARCH_TOPOLOGY=y # CONFIG_FW_CFG_SYSFS is not set # CONFIG_TRUSTED_FOUNDATIONS is not set # CONFIG_GOOGLE_FIRMWARE is not set + +# +# Qualcomm firmware drivers +# +# end of Qualcomm firmware drivers + CONFIG_HAVE_ARM_SMCCC=y # @@ -1515,7 +1546,8 @@ CONFIG_BLK_DEV_RAM_SIZE=65536 # CONFIG_HMC6352 is not set # CONFIG_DS1682 is not set # CONFIG_LATTICE_ECP3_CONFIG is not set -# CONFIG_SRAM is not set +CONFIG_SRAM=y +CONFIG_SRAM_EXEC=y # CONFIG_XILINX_SDFEC is not set # CONFIG_OPEN_DICE is not set # CONFIG_VCPU_STALL_DETECTOR is not set @@ -1526,7 +1558,6 @@ CONFIG_BLK_DEV_RAM_SIZE=65536 # # CONFIG_EEPROM_AT24 is not set # CONFIG_EEPROM_AT25 is not set -# CONFIG_EEPROM_LEGACY is not set # CONFIG_EEPROM_MAX6875 is not set # CONFIG_EEPROM_93CX6 is not set # CONFIG_EEPROM_93XX46 is not set @@ -1558,6 +1589,7 @@ CONFIG_SCSI_MOD=y # CONFIG_ATA is not set CONFIG_MD=y # CONFIG_BLK_DEV_MD is not set +CONFIG_MD_BITMAP_FILE=y # CONFIG_BCACHE is not set CONFIG_BLK_DEV_DM_BUILTIN=y CONFIG_BLK_DEV_DM=y @@ -1611,6 +1643,7 @@ CONFIG_TUN=m # CONFIG_TUN_VNET_CROSS_LE is not set CONFIG_VETH=m # CONFIG_NLMON is not set +# CONFIG_NETKIT is not set # CONFIG_CAIF_DRIVERS is not set CONFIG_ETHERNET=y CONFIG_NET_VENDOR_ALACRITECH=y @@ -1649,7 +1682,6 @@ CONFIG_NET_VENDOR_HISILICON=y CONFIG_NET_VENDOR_HUAWEI=y CONFIG_NET_VENDOR_I825XX=y CONFIG_NET_VENDOR_INTEL=y -CONFIG_NET_VENDOR_WANGXUN=y CONFIG_NET_VENDOR_ADI=y CONFIG_NET_VENDOR_LITEX=y # CONFIG_LITEX_LITEETH is not set @@ -1698,6 +1730,7 @@ CONFIG_NET_VENDOR_SYNOPSYS=y # CONFIG_NET_VENDOR_VERTEXCOM is not set CONFIG_NET_VENDOR_VIA=y # CONFIG_VIA_VELOCITY is not set +CONFIG_NET_VENDOR_WANGXUN=y CONFIG_NET_VENDOR_WIZNET=y # CONFIG_WIZNET_W5100 is not set # CONFIG_WIZNET_W5300 is not set @@ -1708,6 +1741,7 @@ CONFIG_NET_VENDOR_XILINX=y CONFIG_PHYLIB=y CONFIG_SWPHY=y # CONFIG_LED_TRIGGER_PHY is not set +CONFIG_PHYLIB_LEDS=y CONFIG_FIXED_PHY=y # @@ -1732,15 +1766,18 @@ CONFIG_FIXED_PHY=y # CONFIG_LSI_ET1011C_PHY is not set # CONFIG_MARVELL_PHY is not set # CONFIG_MARVELL_10G_PHY is not set +# CONFIG_MARVELL_88Q2XXX_PHY is not set # CONFIG_MARVELL_88X2222_PHY is not set # CONFIG_MAXLINEAR_GPHY is not set # CONFIG_MEDIATEK_GE_PHY is not set # CONFIG_MICREL_PHY is not set +# CONFIG_MICROCHIP_T1S_PHY is not set # CONFIG_MICROCHIP_PHY is not set # CONFIG_MICROCHIP_T1_PHY is not set # CONFIG_MICROSEMI_PHY is not set # CONFIG_MOTORCOMM_PHY is not set # CONFIG_NATIONAL_PHY is not set +# CONFIG_NXP_CBTX_PHY is not set # CONFIG_NXP_C45_TJA11XX_PHY is not set # CONFIG_NXP_TJA11XX_PHY is not set # CONFIG_NCN26000_PHY is not set @@ -1964,10 +2001,10 @@ CONFIG_TOUCHSCREEN_MMS114=y # CONFIG_TOUCHSCREEN_MELFAS_MIP4 is not set # CONFIG_TOUCHSCREEN_MSG2638 is not set # CONFIG_TOUCHSCREEN_MTOUCH is not set +# CONFIG_TOUCHSCREEN_NOVATEK_NVT_TS is not set # CONFIG_TOUCHSCREEN_IMAGIS is not set # CONFIG_TOUCHSCREEN_IMX6UL_TSC is not set # CONFIG_TOUCHSCREEN_INEXIO is not set -# CONFIG_TOUCHSCREEN_MK712 is not set # CONFIG_TOUCHSCREEN_PENMOUNT is not set # CONFIG_TOUCHSCREEN_EDT_FT5X06 is not set # CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set @@ -1994,6 +2031,7 @@ CONFIG_TOUCHSCREEN_MMS114=y # CONFIG_TOUCHSCREEN_COLIBRI_VF50 is not set # CONFIG_TOUCHSCREEN_ROHM_BU21023 is not set # CONFIG_TOUCHSCREEN_IQS5XX is not set +# CONFIG_TOUCHSCREEN_IQS7211 is not set CONFIG_TOUCHSCREEN_ZINITIX=y # CONFIG_TOUCHSCREEN_HIMAX_HX83112B is not set CONFIG_INPUT_MISC=y @@ -2108,6 +2146,7 @@ CONFIG_HW_RANDOM=y # CONFIG_HW_RANDOM_CCTRNG is not set # CONFIG_HW_RANDOM_XIPHERA is not set CONFIG_DEVMEM=y +CONFIG_DEVPORT=y # CONFIG_TCG_TPM is not set # CONFIG_XILLYBUS is not set # end of Character devices @@ -2191,14 +2230,12 @@ CONFIG_SPI_BITBANG=y # CONFIG_SPI_CADENCE is not set # CONFIG_SPI_CADENCE_QUADSPI is not set # CONFIG_SPI_DESIGNWARE is not set -# CONFIG_SPI_NXP_FLEXSPI is not set CONFIG_SPI_GPIO=y # CONFIG_SPI_FSL_SPI is not set # CONFIG_SPI_MICROCHIP_CORE is not set # CONFIG_SPI_MICROCHIP_CORE_QSPI is not set # CONFIG_SPI_OC_TINY is not set CONFIG_SPI_PL022=y -# CONFIG_SPI_ROCKCHIP is not set # CONFIG_SPI_SC18IS602 is not set # CONFIG_SPI_SIFIVE is not set # CONFIG_SPI_MXIC is not set @@ -2257,7 +2294,6 @@ CONFIG_PINCTRL_DB8500=y # # end of Renesas pinctrl drivers -CONFIG_ARCH_HAVE_CUSTOM_GPIO_H=y CONFIG_GPIOLIB=y CONFIG_GPIOLIB_FASTPATH_LIMIT=512 CONFIG_OF_GPIO=y @@ -2292,6 +2328,8 @@ CONFIG_GPIO_CDEV_V1=y # I2C GPIO expanders # # CONFIG_GPIO_ADNP is not set +# CONFIG_GPIO_FXL6408 is not set +# CONFIG_GPIO_DS4520 is not set # CONFIG_GPIO_GW_PLD is not set # CONFIG_GPIO_MAX7300 is not set # CONFIG_GPIO_MAX732X is not set @@ -2377,6 +2415,7 @@ CONFIG_AB8500_BM=y # CONFIG_CHARGER_UCS1002 is not set # CONFIG_CHARGER_BD99954 is not set CONFIG_BATTERY_UG3105=m +# CONFIG_FUEL_GAUGE_MM8013 is not set CONFIG_HWMON=y # CONFIG_HWMON_DEBUG_CHIP is not set @@ -2418,6 +2457,7 @@ CONFIG_HWMON=y # CONFIG_SENSORS_G762 is not set # CONFIG_SENSORS_GPIO_FAN is not set # CONFIG_SENSORS_HIH6130 is not set +# CONFIG_SENSORS_HS3001 is not set CONFIG_SENSORS_IIO_HWMON=y # CONFIG_SENSORS_IT87 is not set # CONFIG_SENSORS_JC42 is not set @@ -2427,6 +2467,7 @@ CONFIG_SENSORS_IIO_HWMON=y # CONFIG_SENSORS_LTC2947_I2C is not set # CONFIG_SENSORS_LTC2947_SPI is not set # CONFIG_SENSORS_LTC2990 is not set +# CONFIG_SENSORS_LTC2991 is not set # CONFIG_SENSORS_LTC2992 is not set # CONFIG_SENSORS_LTC4151 is not set # CONFIG_SENSORS_LTC4215 is not set @@ -2443,6 +2484,7 @@ CONFIG_SENSORS_IIO_HWMON=y # CONFIG_SENSORS_MAX31722 is not set # CONFIG_SENSORS_MAX31730 is not set # CONFIG_SENSORS_MAX31760 is not set +# CONFIG_MAX31827 is not set # CONFIG_SENSORS_MAX6620 is not set # CONFIG_SENSORS_MAX6621 is not set # CONFIG_SENSORS_MAX6639 is not set @@ -2501,7 +2543,6 @@ CONFIG_SENSORS_NTC_THERMISTOR=y # CONFIG_SENSORS_SCH5627 is not set # CONFIG_SENSORS_SCH5636 is not set # CONFIG_SENSORS_STTS751 is not set -# CONFIG_SENSORS_SMM665 is not set # CONFIG_SENSORS_ADC128D818 is not set # CONFIG_SENSORS_ADS7828 is not set # CONFIG_SENSORS_ADS7871 is not set @@ -2599,7 +2640,9 @@ CONFIG_MFD_CORE=y # CONFIG_MFD_BCM590XX is not set # CONFIG_MFD_BD9571MWV is not set # CONFIG_MFD_AXP20X_I2C is not set +# CONFIG_MFD_CS42L43_I2C is not set # CONFIG_MFD_MADERA is not set +# CONFIG_MFD_MAX5970 is not set # CONFIG_PMIC_DA903X is not set # CONFIG_MFD_DA9052_SPI is not set # CONFIG_MFD_DA9052_I2C is not set @@ -2618,6 +2661,7 @@ CONFIG_MFD_CORE=y # CONFIG_MFD_88PM805 is not set # CONFIG_MFD_88PM860X is not set # CONFIG_MFD_MAX14577 is not set +# CONFIG_MFD_MAX77541 is not set # CONFIG_MFD_MAX77620 is not set # CONFIG_MFD_MAX77650 is not set # CONFIG_MFD_MAX77686 is not set @@ -2644,7 +2688,8 @@ CONFIG_MFD_CORE=y # CONFIG_MFD_RT5033 is not set # CONFIG_MFD_RT5120 is not set # CONFIG_MFD_RC5T583 is not set -# CONFIG_MFD_RK808 is not set +# CONFIG_MFD_RK8XX_I2C is not set +# CONFIG_MFD_RK8XX_SPI is not set # CONFIG_MFD_RN5T618 is not set # CONFIG_MFD_SEC_CORE is not set # CONFIG_MFD_SI476X_CORE is not set @@ -2682,6 +2727,8 @@ CONFIG_MFD_SYSCON=y # CONFIG_MFD_TPS65910 is not set # CONFIG_MFD_TPS65912_I2C is not set # CONFIG_MFD_TPS65912_SPI is not set +# CONFIG_MFD_TPS6594_I2C is not set +# CONFIG_MFD_TPS6594_SPI is not set # CONFIG_TWL4030_CORE is not set # CONFIG_TWL6040_CORE is not set # CONFIG_MFD_WL1273_CORE is not set @@ -2718,6 +2765,7 @@ CONFIG_REGULATOR_FIXED_VOLTAGE=y # CONFIG_REGULATOR_ACT8865 is not set # CONFIG_REGULATOR_AD5398 is not set CONFIG_REGULATOR_AB8500=y +# CONFIG_REGULATOR_AW37503 is not set # CONFIG_REGULATOR_DA9121 is not set # CONFIG_REGULATOR_DA9210 is not set # CONFIG_REGULATOR_DA9211 is not set @@ -2735,6 +2783,8 @@ CONFIG_REGULATOR_GPIO=y # CONFIG_REGULATOR_LTC3589 is not set # CONFIG_REGULATOR_LTC3676 is not set # CONFIG_REGULATOR_MAX1586 is not set +# CONFIG_REGULATOR_MAX77503 is not set +# CONFIG_REGULATOR_MAX77857 is not set # CONFIG_REGULATOR_MAX8649 is not set # CONFIG_REGULATOR_MAX8660 is not set # CONFIG_REGULATOR_MAX8893 is not set @@ -2755,9 +2805,12 @@ CONFIG_REGULATOR_MAX20086=m # CONFIG_REGULATOR_PV88060 is not set # CONFIG_REGULATOR_PV88080 is not set # CONFIG_REGULATOR_PV88090 is not set +# CONFIG_REGULATOR_RAA215300 is not set # CONFIG_REGULATOR_RASPBERRYPI_TOUCHSCREEN_ATTINY is not set # CONFIG_REGULATOR_RT4801 is not set +# CONFIG_REGULATOR_RT4803 is not set # CONFIG_REGULATOR_RT5190A is not set +# CONFIG_REGULATOR_RT5739 is not set # CONFIG_REGULATOR_RT5759 is not set # CONFIG_REGULATOR_RT6160 is not set # CONFIG_REGULATOR_RT6190 is not set @@ -2765,6 +2818,7 @@ CONFIG_REGULATOR_MAX20086=m # CONFIG_REGULATOR_RTQ2134 is not set # CONFIG_REGULATOR_RTMV20 is not set # CONFIG_REGULATOR_RTQ6752 is not set +# CONFIG_REGULATOR_RTQ2208 is not set # CONFIG_REGULATOR_SLG51000 is not set # CONFIG_REGULATOR_SY8106A is not set # CONFIG_REGULATOR_SY8824X is not set @@ -2772,6 +2826,7 @@ CONFIG_REGULATOR_MAX20086=m # CONFIG_REGULATOR_TPS51632 is not set # CONFIG_REGULATOR_TPS62360 is not set # CONFIG_REGULATOR_TPS6286X is not set +# CONFIG_REGULATOR_TPS6287X is not set # CONFIG_REGULATOR_TPS65023 is not set # CONFIG_REGULATOR_TPS6507X is not set # CONFIG_REGULATOR_TPS65132 is not set @@ -2812,6 +2867,7 @@ CONFIG_VIDEO_V4L2_SUBDEV_API=y # CONFIG_VIDEO_ADV_DEBUG is not set # CONFIG_VIDEO_FIXED_MINOR_RANGES is not set CONFIG_V4L2_FLASH_LED_CLASS=y +CONFIG_V4L2_FWNODE=y CONFIG_V4L2_ASYNC=y # end of Video4Linux options @@ -2838,10 +2894,7 @@ CONFIG_MEDIA_HIDE_ANCILLARY_SUBDRV=y # # Media ancillary drivers # - -# -# Camera sensor devices -# +CONFIG_VIDEO_CAMERA_SENSOR=y # CONFIG_VIDEO_AR0521 is not set # CONFIG_VIDEO_HI556 is not set # CONFIG_VIDEO_HI846 is not set @@ -2860,16 +2913,15 @@ CONFIG_MEDIA_HIDE_ANCILLARY_SUBDRV=y # CONFIG_VIDEO_IMX412 is not set # CONFIG_VIDEO_IMX415 is not set # CONFIG_VIDEO_MT9M001 is not set -# CONFIG_VIDEO_MT9M032 is not set # CONFIG_VIDEO_MT9M111 is not set +# CONFIG_VIDEO_MT9M114 is not set # CONFIG_VIDEO_MT9P031 is not set -# CONFIG_VIDEO_MT9T001 is not set # CONFIG_VIDEO_MT9T112 is not set # CONFIG_VIDEO_MT9V011 is not set # CONFIG_VIDEO_MT9V032 is not set # CONFIG_VIDEO_MT9V111 is not set -# CONFIG_VIDEO_NOON010PC30 is not set # CONFIG_VIDEO_OG01A1B is not set +# CONFIG_VIDEO_OV01A10 is not set # CONFIG_VIDEO_OV02A10 is not set # CONFIG_VIDEO_OV08D10 is not set # CONFIG_VIDEO_OV08X40 is not set @@ -2906,14 +2958,9 @@ CONFIG_MEDIA_HIDE_ANCILLARY_SUBDRV=y # CONFIG_VIDEO_S5C73M3 is not set # CONFIG_VIDEO_S5K5BAF is not set # CONFIG_VIDEO_S5K6A3 is not set -# CONFIG_VIDEO_S5K6AA is not set -# CONFIG_VIDEO_SR030PC30 is not set # CONFIG_VIDEO_ST_VGXY61 is not set -# CONFIG_VIDEO_VS6624 is not set # CONFIG_VIDEO_CCS is not set # CONFIG_VIDEO_ET8EK8 is not set -# CONFIG_VIDEO_M5MOLS is not set -# end of Camera sensor devices # # Lens drivers @@ -2921,6 +2968,7 @@ CONFIG_MEDIA_HIDE_ANCILLARY_SUBDRV=y # CONFIG_VIDEO_AD5820 is not set # CONFIG_VIDEO_AK7375 is not set # CONFIG_VIDEO_DW9714 is not set +# CONFIG_VIDEO_DW9719 is not set # CONFIG_VIDEO_DW9768 is not set # CONFIG_VIDEO_DW9807_VCM is not set # end of Lens drivers @@ -2941,6 +2989,14 @@ CONFIG_MEDIA_HIDE_ANCILLARY_SUBDRV=y # Video and audio decoders # +# +# Video serializers and deserializers +# +# CONFIG_VIDEO_DS90UB913 is not set +# CONFIG_VIDEO_DS90UB953 is not set +# CONFIG_VIDEO_DS90UB960 is not set +# end of Video serializers and deserializers + # # SPI I2C drivers auto-selected by 'Autoselect ancillary drivers' # @@ -2955,8 +3011,9 @@ CONFIG_MEDIA_HIDE_ANCILLARY_SUBDRV=y # # Graphics support # +CONFIG_VIDEO_CMDLINE=y CONFIG_VIDEO_NOMODESET=y -# CONFIG_IMX_IPUV3_CORE is not set +# CONFIG_AUXDISPLAY is not set CONFIG_DRM=y CONFIG_DRM_MIPI_DBI=y CONFIG_DRM_MIPI_DSI=y @@ -2988,13 +3045,10 @@ CONFIG_DRM_SCHED=y # CONFIG_DRM_VGEM is not set # CONFIG_DRM_VKMS is not set -# CONFIG_DRM_EXYNOS is not set # CONFIG_DRM_ARMADA is not set -# CONFIG_DRM_OMAP is not set # CONFIG_DRM_TILCDC is not set # CONFIG_DRM_VIRTIO_GPU is not set # CONFIG_DRM_FSL_DCU is not set -# CONFIG_DRM_STM is not set CONFIG_DRM_PANEL=y # @@ -3019,10 +3073,12 @@ CONFIG_DRM_PANEL=y # CONFIG_DRM_PANEL_ILITEK_IL9322 is not set # CONFIG_DRM_PANEL_ILITEK_ILI9341 is not set # CONFIG_DRM_PANEL_ILITEK_ILI9881C is not set +# CONFIG_DRM_PANEL_ILITEK_ILI9882T is not set # CONFIG_DRM_PANEL_INNOLUX_EJ030NA is not set # CONFIG_DRM_PANEL_INNOLUX_P079ZCA is not set # CONFIG_DRM_PANEL_JADARD_JD9365DA_H3 is not set # CONFIG_DRM_PANEL_JDI_LT070ME05000 is not set +# CONFIG_DRM_PANEL_JDI_LPM102A188A is not set # CONFIG_DRM_PANEL_JDI_R63452 is not set # CONFIG_DRM_PANEL_KHADAS_TS050 is not set # CONFIG_DRM_PANEL_KINGDISPLAY_KD097D04 is not set @@ -3031,12 +3087,14 @@ CONFIG_DRM_PANEL=y # CONFIG_DRM_PANEL_SAMSUNG_LD9040 is not set # CONFIG_DRM_PANEL_LG_LB035Q02 is not set # CONFIG_DRM_PANEL_LG_LG4573 is not set +# CONFIG_DRM_PANEL_MAGNACHIP_D53E6EA8966 is not set # CONFIG_DRM_PANEL_NEC_NL8048HL11 is not set # CONFIG_DRM_PANEL_NEWVISION_NV3051D is not set # CONFIG_DRM_PANEL_NEWVISION_NV3052C is not set CONFIG_DRM_PANEL_NOVATEK_NT35510=y CONFIG_DRM_PANEL_NOVATEK_NT35560=y # CONFIG_DRM_PANEL_NOVATEK_NT35950 is not set +# CONFIG_DRM_PANEL_NOVATEK_NT36523 is not set # CONFIG_DRM_PANEL_NOVATEK_NT36672A is not set # CONFIG_DRM_PANEL_NOVATEK_NT39016 is not set # CONFIG_DRM_PANEL_MANTIX_MLAF057WE51 is not set @@ -3048,11 +3106,13 @@ CONFIG_DRM_PANEL_NOVATEK_NT35560=y # CONFIG_DRM_PANEL_RASPBERRYPI_TOUCHSCREEN is not set # CONFIG_DRM_PANEL_RAYDIUM_RM67191 is not set # CONFIG_DRM_PANEL_RAYDIUM_RM68200 is not set +# CONFIG_DRM_PANEL_RAYDIUM_RM692E5 is not set # CONFIG_DRM_PANEL_RONBO_RB070D30 is not set # CONFIG_DRM_PANEL_SAMSUNG_ATNA33XC20 is not set CONFIG_DRM_PANEL_SAMSUNG_DB7430=y CONFIG_DRM_PANEL_SAMSUNG_S6D16D0=y CONFIG_DRM_PANEL_SAMSUNG_S6D27A1=y +# CONFIG_DRM_PANEL_SAMSUNG_S6D7AA0 is not set # CONFIG_DRM_PANEL_SAMSUNG_S6E3HA2 is not set # CONFIG_DRM_PANEL_SAMSUNG_S6E63J0X03 is not set CONFIG_DRM_PANEL_SAMSUNG_S6E63M0=y @@ -3070,7 +3130,9 @@ CONFIG_DRM_PANEL_SAMSUNG_S6E63M0_DSI=y # CONFIG_DRM_PANEL_SITRONIX_ST7703 is not set # CONFIG_DRM_PANEL_SITRONIX_ST7789V is not set # CONFIG_DRM_PANEL_SONY_ACX565AKM is not set +# CONFIG_DRM_PANEL_SONY_TD4353_JDI is not set # CONFIG_DRM_PANEL_SONY_TULIP_TRULY_NT35521 is not set +# CONFIG_DRM_PANEL_STARTEK_KD070FHFID015 is not set # CONFIG_DRM_PANEL_TDO_TL070WSH30 is not set # CONFIG_DRM_PANEL_TPO_TD028TTEC1 is not set # CONFIG_DRM_PANEL_TPO_TD043MTEA1 is not set @@ -3078,6 +3140,7 @@ CONFIG_DRM_PANEL_SAMSUNG_S6E63M0_DSI=y # CONFIG_DRM_PANEL_TRULY_NT35597_WQXGA is not set # CONFIG_DRM_PANEL_VISIONOX_RM69299 is not set # CONFIG_DRM_PANEL_VISIONOX_VTDR6130 is not set +# CONFIG_DRM_PANEL_VISIONOX_R66451 is not set CONFIG_DRM_PANEL_WIDECHIPS_WS2401=y # CONFIG_DRM_PANEL_XINPENG_XPP055C272 is not set # end of Display Panels @@ -3103,6 +3166,7 @@ CONFIG_DRM_PANEL_BRIDGE=y # CONFIG_DRM_NXP_PTN3460 is not set # CONFIG_DRM_PARADE_PS8622 is not set # CONFIG_DRM_PARADE_PS8640 is not set +# CONFIG_DRM_SAMSUNG_DSIM is not set # CONFIG_DRM_SIL_SII8620 is not set # CONFIG_DRM_SII902X is not set # CONFIG_DRM_SII9234 is not set @@ -3126,7 +3190,6 @@ CONFIG_DRM_PANEL_BRIDGE=y # CONFIG_DRM_CDNS_MHDP8546 is not set # end of Display Interface Bridges -# CONFIG_DRM_STI is not set # CONFIG_DRM_ETNAVIV is not set # CONFIG_DRM_LOGICVC is not set # CONFIG_DRM_ARCPGU is not set @@ -3154,25 +3217,7 @@ CONFIG_DRM_PANEL_ORIENTATION_QUIRKS=y # # Frame buffer Devices # -CONFIG_FB_CMDLINE=y -CONFIG_FB_NOTIFY=y CONFIG_FB=y -# CONFIG_FIRMWARE_EDID is not set -CONFIG_FB_CFB_FILLRECT=y -CONFIG_FB_CFB_COPYAREA=y -CONFIG_FB_CFB_IMAGEBLIT=y -CONFIG_FB_SYS_FILLRECT=y -CONFIG_FB_SYS_COPYAREA=y -CONFIG_FB_SYS_IMAGEBLIT=y -# CONFIG_FB_FOREIGN_ENDIAN is not set -CONFIG_FB_SYS_FOPS=y -CONFIG_FB_DEFERRED_IO=y -# CONFIG_FB_MODE_HELPERS is not set -# CONFIG_FB_TILEBLITTING is not set - -# -# Frame buffer hardware drivers -# # CONFIG_FB_ARMCLCD is not set # CONFIG_FB_OPENCORES is not set # CONFIG_FB_S1D13XXX is not set @@ -3181,6 +3226,22 @@ CONFIG_FB_DEFERRED_IO=y # CONFIG_FB_METRONOME is not set # CONFIG_FB_SIMPLE is not set # CONFIG_FB_SSD1307 is not set +CONFIG_FB_CORE=y +CONFIG_FB_NOTIFY=y +# CONFIG_FIRMWARE_EDID is not set +CONFIG_FB_DEVICE=y +CONFIG_FB_SYS_FILLRECT=y +CONFIG_FB_SYS_COPYAREA=y +CONFIG_FB_SYS_IMAGEBLIT=y +# CONFIG_FB_FOREIGN_ENDIAN is not set +CONFIG_FB_SYS_FOPS=y +CONFIG_FB_DEFERRED_IO=y +CONFIG_FB_DMAMEM_HELPERS=y +CONFIG_FB_IOMEM_FOPS=y +CONFIG_FB_SYSMEM_HELPERS=y +CONFIG_FB_SYSMEM_HELPERS_DEFERRED=y +# CONFIG_FB_MODE_HELPERS is not set +# CONFIG_FB_TILEBLITTING is not set # end of Frame buffer Devices # @@ -3208,6 +3269,8 @@ CONFIG_HDMI=y # Console display driver support # CONFIG_DUMMY_CONSOLE=y +CONFIG_DUMMY_CONSOLE_COLUMNS=80 +CONFIG_DUMMY_CONSOLE_ROWS=30 CONFIG_FRAMEBUFFER_CONSOLE=y # CONFIG_FRAMEBUFFER_CONSOLE_LEGACY_ACCELERATION is not set CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y @@ -3244,6 +3307,7 @@ CONFIG_SND_CTL_FAST_LOOKUP=y CONFIG_SND_DRIVERS=y # CONFIG_SND_DUMMY is not set # CONFIG_SND_ALOOP is not set +# CONFIG_SND_PCMTEST is not set # CONFIG_SND_MTPAV is not set # CONFIG_SND_SERIAL_U16550 is not set # CONFIG_SND_SERIAL_GENERIC is not set @@ -3285,6 +3349,7 @@ CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=y # CONFIG_SND_SOC_IMX_AUDMUX is not set # end of SoC Audio for Freescale CPUs +# CONFIG_SND_SOC_CHV3_I2S is not set # CONFIG_SND_I2S_HI6210_I2S is not set # CONFIG_SND_SOC_IMG is not set # CONFIG_SND_SOC_MTK_BTCVSD is not set @@ -3328,10 +3393,15 @@ CONFIG_SND_SOC_AB8500_CODEC=y # CONFIG_SND_SOC_AK5386 is not set # CONFIG_SND_SOC_AK5558 is not set # CONFIG_SND_SOC_ALC5623 is not set +# CONFIG_SND_SOC_AUDIO_IIO_AUX is not set # CONFIG_SND_SOC_AW8738 is not set # CONFIG_SND_SOC_AW88395 is not set +# CONFIG_SND_SOC_AW88261 is not set +# CONFIG_SND_SOC_AW87390 is not set +# CONFIG_SND_SOC_AW88399 is not set # CONFIG_SND_SOC_BD28623 is not set # CONFIG_SND_SOC_BT_SCO is not set +# CONFIG_SND_SOC_CHV3_CODEC is not set # CONFIG_SND_SOC_CS35L32 is not set # CONFIG_SND_SOC_CS35L33 is not set # CONFIG_SND_SOC_CS35L34 is not set @@ -3341,6 +3411,8 @@ CONFIG_SND_SOC_AB8500_CODEC=y # CONFIG_SND_SOC_CS35L41_I2C is not set # CONFIG_SND_SOC_CS35L45_SPI is not set # CONFIG_SND_SOC_CS35L45_I2C is not set +# CONFIG_SND_SOC_CS35L56_I2C is not set +# CONFIG_SND_SOC_CS35L56_SPI is not set # CONFIG_SND_SOC_CS42L42 is not set # CONFIG_SND_SOC_CS42L51_I2C is not set # CONFIG_SND_SOC_CS42L52 is not set @@ -3372,12 +3444,14 @@ CONFIG_SND_SOC_AB8500_CODEC=y # CONFIG_SND_SOC_IDT821034 is not set # CONFIG_SND_SOC_INNO_RK3036 is not set # CONFIG_SND_SOC_MAX98088 is not set +# CONFIG_SND_SOC_MAX98090 is not set # CONFIG_SND_SOC_MAX98357A is not set # CONFIG_SND_SOC_MAX98504 is not set # CONFIG_SND_SOC_MAX9867 is not set # CONFIG_SND_SOC_MAX98927 is not set # CONFIG_SND_SOC_MAX98520 is not set # CONFIG_SND_SOC_MAX98373_I2C is not set +# CONFIG_SND_SOC_MAX98388 is not set # CONFIG_SND_SOC_MAX98390 is not set # CONFIG_SND_SOC_MAX98396 is not set # CONFIG_SND_SOC_MAX9860 is not set @@ -3402,6 +3476,7 @@ CONFIG_SND_SOC_AB8500_CODEC=y # CONFIG_SND_SOC_RT5640 is not set # CONFIG_SND_SOC_RT5659 is not set # CONFIG_SND_SOC_RT9120 is not set +# CONFIG_SND_SOC_RTQ9128 is not set # CONFIG_SND_SOC_SGTL5000 is not set # CONFIG_SND_SOC_SIMPLE_AMPLIFIER is not set # CONFIG_SND_SOC_SIMPLE_MUX is not set @@ -3412,6 +3487,7 @@ CONFIG_SND_SOC_AB8500_CODEC=y # CONFIG_SND_SOC_SSM2518 is not set # CONFIG_SND_SOC_SSM2602_SPI is not set # CONFIG_SND_SOC_SSM2602_I2C is not set +# CONFIG_SND_SOC_SSM3515 is not set # CONFIG_SND_SOC_SSM4567 is not set # CONFIG_SND_SOC_STA32X is not set # CONFIG_SND_SOC_STA350 is not set @@ -3421,6 +3497,7 @@ CONFIG_SND_SOC_AB8500_CODEC=y # CONFIG_SND_SOC_TAS2764 is not set # CONFIG_SND_SOC_TAS2770 is not set # CONFIG_SND_SOC_TAS2780 is not set +# CONFIG_SND_SOC_TAS2781_I2C is not set # CONFIG_SND_SOC_TAS5086 is not set # CONFIG_SND_SOC_TAS571X is not set # CONFIG_SND_SOC_TAS5720 is not set @@ -3518,6 +3595,7 @@ CONFIG_HID_EZKEY=y # CONFIG_HID_GEMBIRD is not set # CONFIG_HID_GFRM is not set # CONFIG_HID_GLORIOUS is not set +# CONFIG_HID_GOOGLE_STADIA_FF is not set # CONFIG_HID_VIVALDI is not set # CONFIG_HID_KEYTOUCH is not set # CONFIG_HID_KYE is not set @@ -3555,7 +3633,6 @@ CONFIG_HID_MONTEREY=y # CONFIG_HID_SEMITEK is not set # CONFIG_HID_SPEEDLINK is not set # CONFIG_HID_STEAM is not set -# CONFIG_HID_STEELSERIES is not set # CONFIG_HID_SUNPLUS is not set # CONFIG_HID_RMI is not set # CONFIG_HID_GREENASIA is not set @@ -3673,6 +3750,7 @@ CONFIG_USB_CONFIGFS_RNDIS=y # CONFIG_USB_CONFIGFS_F_UAC1_LEGACY is not set # CONFIG_USB_CONFIGFS_F_UAC2 is not set # CONFIG_USB_CONFIGFS_F_MIDI is not set +# CONFIG_USB_CONFIGFS_F_MIDI2 is not set # CONFIG_USB_CONFIGFS_F_HID is not set # CONFIG_USB_CONFIGFS_F_UVC is not set # CONFIG_USB_CONFIGFS_F_PRINTER is not set @@ -3736,6 +3814,7 @@ CONFIG_LEDS_CLASS_FLASH=y # LED drivers # # CONFIG_LEDS_AN30259A is not set +# CONFIG_LEDS_AW200XX is not set # CONFIG_LEDS_AW2013 is not set # CONFIG_LEDS_BCM6328 is not set # CONFIG_LEDS_BCM6358 is not set @@ -3758,8 +3837,10 @@ CONFIG_LEDS_LP5521=y # CONFIG_LEDS_LP8860 is not set # CONFIG_LEDS_PCA955X is not set # CONFIG_LEDS_PCA963X is not set +# CONFIG_LEDS_PCA995X is not set # CONFIG_LEDS_DAC124S085 is not set CONFIG_LEDS_REGULATOR=y +# CONFIG_LEDS_BD2606MVV is not set # CONFIG_LEDS_BD2802 is not set # CONFIG_LEDS_LT3593 is not set # CONFIG_LEDS_TCA6507 is not set @@ -3776,7 +3857,7 @@ CONFIG_LEDS_REGULATOR=y # CONFIG_LEDS_MLXREG is not set # CONFIG_LEDS_USER is not set # CONFIG_LEDS_SPI_BYTE is not set -# CONFIG_LEDS_TI_LMU_COMMON is not set +# CONFIG_LEDS_LM3697 is not set # # Flash and Torch LED drivers @@ -3919,7 +4000,6 @@ CONFIG_RTC_I2C_AND_SPI=y # CONFIG_RTC_DRV_M48T35 is not set # CONFIG_RTC_DRV_M48T59 is not set # CONFIG_RTC_DRV_MSM6242 is not set -# CONFIG_RTC_DRV_BQ4802 is not set # CONFIG_RTC_DRV_RP5C01 is not set CONFIG_RTC_DRV_AB8500=y # CONFIG_RTC_DRV_ZYNQMP is not set @@ -3954,6 +4034,7 @@ CONFIG_DMA_OF=y # CONFIG_NBPFAXI_DMA is not set # CONFIG_PL330_DMA is not set CONFIG_STE_DMA40=y +# CONFIG_XILINX_DMA is not set # CONFIG_XILINX_XDMA is not set # CONFIG_XILINX_ZYNQMP_DPDMA is not set # CONFIG_QCOM_HIDMA_MGMT is not set @@ -3980,7 +4061,6 @@ CONFIG_SYNC_FILE=y # CONFIG_DMABUF_SYSFS_STATS is not set # end of DMABUF options -# CONFIG_AUXDISPLAY is not set # CONFIG_UIO is not set # CONFIG_VFIO is not set # CONFIG_VIRT_DRIVERS is not set @@ -4037,18 +4117,6 @@ CONFIG_STAGING=y # # CONFIG_AD5933 is not set # end of Network Analyzer, Impedance Converters - -# -# Active energy metering IC -# -# CONFIG_ADE7854 is not set -# end of Active energy metering IC - -# -# Resolver to digital converters -# -# CONFIG_AD2S1210 is not set -# end of Resolver to digital converters # end of IIO staging drivers # CONFIG_STAGING_MEDIA is not set @@ -4084,6 +4152,8 @@ CONFIG_COMMON_CLK=y # CONFIG_COMMON_CLK_CS2000_CP is not set # CONFIG_COMMON_CLK_AXI_CLKGEN is not set # CONFIG_COMMON_CLK_RS9_PCIE is not set +# CONFIG_COMMON_CLK_SI521XX is not set +# CONFIG_COMMON_CLK_VC3 is not set # CONFIG_COMMON_CLK_VC5 is not set # CONFIG_COMMON_CLK_VC7 is not set # CONFIG_COMMON_CLK_FIXED_MMIO is not set @@ -4143,7 +4213,6 @@ CONFIG_IOMMU_SUPPORT=y # # Broadcom SoC drivers # -# CONFIG_SOC_BRCMSTB is not set # end of Broadcom SoC drivers # @@ -4185,6 +4254,33 @@ CONFIG_UX500_SOC_ID=y # end of Xilinx SoC drivers # end of SOC (System On Chip) specific Drivers +# +# PM Domains +# + +# +# Amlogic PM Domains +# +# end of Amlogic PM Domains + +# +# Broadcom PM Domains +# +# end of Broadcom PM Domains + +# +# i.MX PM Domains +# +# end of i.MX PM Domains + +# +# Qualcomm PM Domains +# +# end of Qualcomm PM Domains + +CONFIG_UX500_PM_DOMAIN=y +# end of PM Domains + CONFIG_PM_DEVFREQ=y # @@ -4312,6 +4408,7 @@ CONFIG_AB8500_GPADC=y # CONFIG_HI8435 is not set # CONFIG_HX711 is not set # CONFIG_INA2XX_ADC is not set +# CONFIG_LTC2309 is not set # CONFIG_LTC2471 is not set # CONFIG_LTC2485 is not set # CONFIG_LTC2496 is not set @@ -4326,6 +4423,7 @@ CONFIG_AB8500_GPADC=y # CONFIG_MAX9611 is not set # CONFIG_MCP320X is not set # CONFIG_MCP3422 is not set +# CONFIG_MCP3564 is not set # CONFIG_MCP3911 is not set # CONFIG_NAU7802 is not set # CONFIG_RICHTEK_RTQ6056 is not set @@ -4340,6 +4438,7 @@ CONFIG_AB8500_GPADC=y # CONFIG_TI_ADC161S626 is not set # CONFIG_TI_ADS1015 is not set # CONFIG_TI_ADS7924 is not set +# CONFIG_TI_ADS1100 is not set # CONFIG_TI_ADS7950 is not set # CONFIG_TI_ADS8344 is not set # CONFIG_TI_ADS8688 is not set @@ -4404,6 +4503,8 @@ CONFIG_IIO_RESCALE=y # # end of Hid Sensor IIO Common +CONFIG_IIO_INV_SENSORS_TIMESTAMP=y + # # IIO SCMI Sensors # @@ -4455,6 +4556,7 @@ CONFIG_IIO_ST_SENSORS_CORE=y # CONFIG_MAX5522 is not set # CONFIG_MAX5821 is not set # CONFIG_MCP4725 is not set +# CONFIG_MCP4728 is not set # CONFIG_MCP4922 is not set # CONFIG_TI_DAC082S085 is not set # CONFIG_TI_DAC5571 is not set @@ -4587,6 +4689,8 @@ CONFIG_GP2AP002=y # CONFIG_SENSORS_ISL29028 is not set # CONFIG_ISL29125 is not set # CONFIG_JSA1212 is not set +# CONFIG_ROHM_BU27008 is not set +# CONFIG_ROHM_BU27034 is not set # CONFIG_RPR0521 is not set # CONFIG_LTR501 is not set # CONFIG_LTRF216A is not set @@ -4595,6 +4699,7 @@ CONFIG_GP2AP002=y # CONFIG_MAX44009 is not set # CONFIG_NOA1305 is not set # CONFIG_OPT3001 is not set +# CONFIG_OPT4001 is not set # CONFIG_PA12203001 is not set # CONFIG_SI1133 is not set # CONFIG_SI1145 is not set @@ -4676,6 +4781,7 @@ CONFIG_IIO_HRTIMER_TRIGGER=y # CONFIG_MCP4531 is not set # CONFIG_MCP41010 is not set # CONFIG_TPL0102 is not set +# CONFIG_X9250 is not set # end of Digital potentiometers # @@ -4688,6 +4794,7 @@ CONFIG_IIO_HRTIMER_TRIGGER=y # Pressure sensors # # CONFIG_ABP060MG is not set +# CONFIG_ROHM_BM1390 is not set # CONFIG_BMP280 is not set # CONFIG_DLHL60D is not set # CONFIG_DPS310 is not set @@ -4696,6 +4803,7 @@ CONFIG_IIO_HRTIMER_TRIGGER=y # CONFIG_MPL115_I2C is not set # CONFIG_MPL115_SPI is not set # CONFIG_MPL3115 is not set +# CONFIG_MPRLS0025PA is not set # CONFIG_MS5611 is not set # CONFIG_MS5637 is not set CONFIG_IIO_ST_PRESS=y @@ -4715,6 +4823,7 @@ CONFIG_IIO_ST_PRESS_SPI=y # # Proximity and distance sensors # +# CONFIG_IRSD200 is not set # CONFIG_ISL29501 is not set # CONFIG_LIDAR_LITE_V2 is not set # CONFIG_MB1232 is not set @@ -4735,6 +4844,7 @@ CONFIG_IIO_ST_PRESS_SPI=y # # CONFIG_AD2S90 is not set # CONFIG_AD2S1200 is not set +# CONFIG_AD2S1210 is not set # end of Resolver to digital converters # @@ -4805,6 +4915,7 @@ CONFIG_RESET_CONTROLLER=y # CONFIG_ARM_CCI_PMU is not set # CONFIG_ARM_CCN is not set CONFIG_ARM_PMU=y +# CONFIG_ARM_PMUV3 is not set # end of Performance monitor support # CONFIG_RAS is not set @@ -4821,6 +4932,14 @@ CONFIG_ANDROID_BINDER_DEVICES="binder,hwbinder,vndbinder" # CONFIG_DAX is not set CONFIG_NVMEM=y CONFIG_NVMEM_SYSFS=y + +# +# Layout Types +# +# CONFIG_NVMEM_LAYOUT_SL28_VPD is not set +# CONFIG_NVMEM_LAYOUT_ONIE_TLV is not set +# end of Layout Types + # CONFIG_NVMEM_RMEM is not set # @@ -4849,6 +4968,7 @@ CONFIG_PM_OPP=y CONFIG_DCACHE_WORD_ACCESS=y # CONFIG_VALIDATE_FS_PARSER is not set CONFIG_FS_IOMAP=y +CONFIG_BUFFER_HEAD=y CONFIG_LEGACY_DIRECT_IO=y CONFIG_EXT2_FS=y CONFIG_EXT2_FS_XATTR=y @@ -4872,6 +4992,7 @@ CONFIG_FS_MBCACHE=y # CONFIG_BTRFS_FS is not set # CONFIG_NILFS2_FS is not set # CONFIG_F2FS_FS is not set +# CONFIG_BCACHEFS_FS is not set CONFIG_FS_POSIX_ACL=y CONFIG_EXPORTFS=y # CONFIG_EXPORTFS_BLOCK_OPS is not set @@ -4883,7 +5004,6 @@ CONFIG_DNOTIFY=y CONFIG_INOTIFY_USER=y # CONFIG_FANOTIFY is not set # CONFIG_QUOTA is not set -# CONFIG_AUTOFS4_FS is not set # CONFIG_AUTOFS_FS is not set CONFIG_FUSE_FS=m # CONFIG_CUSE is not set @@ -4893,6 +5013,7 @@ CONFIG_OVERLAY_FS=m CONFIG_OVERLAY_FS_REDIRECT_ALWAYS_FOLLOW=y # CONFIG_OVERLAY_FS_INDEX is not set # CONFIG_OVERLAY_FS_METACOPY is not set +# CONFIG_OVERLAY_FS_DEBUG is not set # # Caches @@ -4935,7 +5056,7 @@ CONFIG_SYSFS=y CONFIG_TMPFS=y CONFIG_TMPFS_POSIX_ACL=y CONFIG_TMPFS_XATTR=y -CONFIG_MEMFD_CREATE=y +# CONFIG_TMPFS_QUOTA is not set CONFIG_CONFIGFS_FS=y # end of Pseudo filesystems @@ -5069,7 +5190,6 @@ CONFIG_KEY_DH_OPERATIONS=y # CONFIG_SECURITY_DMESG_RESTRICT is not set # CONFIG_SECURITY is not set # CONFIG_SECURITYFS is not set -CONFIG_HAVE_HARDENED_USERCOPY_ALLOCATOR=y # CONFIG_HARDENED_USERCOPY is not set # CONFIG_FORTIFY_SOURCE is not set # CONFIG_STATIC_USERMODEHELPER is not set @@ -5095,6 +5215,13 @@ CONFIG_CC_HAS_ZERO_CALL_USED_REGS=y # CONFIG_ZERO_CALL_USED_REGS is not set # end of Memory initialization +# +# Hardening of kernel data structures +# +# CONFIG_LIST_HARDENED is not set +# CONFIG_BUG_ON_DATA_CORRUPTION is not set +# end of Hardening of kernel data structures + CONFIG_RANDSTRUCT_NONE=y # CONFIG_RANDSTRUCT_FULL is not set # CONFIG_RANDSTRUCT_PERFORMANCE is not set @@ -5110,6 +5237,7 @@ CONFIG_CRYPTO_ALGAPI=y CONFIG_CRYPTO_ALGAPI2=y CONFIG_CRYPTO_AEAD=y CONFIG_CRYPTO_AEAD2=y +CONFIG_CRYPTO_SIG2=y CONFIG_CRYPTO_SKCIPHER=y CONFIG_CRYPTO_SKCIPHER2=y CONFIG_CRYPTO_HASH=y @@ -5216,7 +5344,7 @@ CONFIG_CRYPTO_MD5=m CONFIG_CRYPTO_SHA1=y CONFIG_CRYPTO_SHA256=y CONFIG_CRYPTO_SHA512=y -# CONFIG_CRYPTO_SHA3 is not set +CONFIG_CRYPTO_SHA3=y # CONFIG_CRYPTO_SM3_GENERIC is not set # CONFIG_CRYPTO_STREEBOG is not set # CONFIG_CRYPTO_VMAC is not set @@ -5254,6 +5382,9 @@ CONFIG_CRYPTO_DRBG_HMAC=y # CONFIG_CRYPTO_DRBG_CTR is not set CONFIG_CRYPTO_DRBG=y CONFIG_CRYPTO_JITTERENTROPY=y +CONFIG_CRYPTO_JITTERENTROPY_MEMORY_BLOCKS=64 +CONFIG_CRYPTO_JITTERENTROPY_MEMORY_BLOCKSIZE=32 +CONFIG_CRYPTO_JITTERENTROPY_OSR=1 CONFIG_CRYPTO_KDF800108_CTR=y # end of Random number generation @@ -5377,7 +5508,6 @@ CONFIG_ZSTD_DECOMPRESS=y CONFIG_XZ_DEC=y CONFIG_XZ_DEC_X86=y CONFIG_XZ_DEC_POWERPC=y -CONFIG_XZ_DEC_IA64=y CONFIG_XZ_DEC_ARM=y CONFIG_XZ_DEC_ARMTHUMB=y CONFIG_XZ_DEC_SPARC=y @@ -5395,6 +5525,7 @@ CONFIG_GENERIC_ALLOCATOR=y CONFIG_XARRAY_MULTI=y CONFIG_ASSOCIATIVE_ARRAY=y CONFIG_HAS_IOMEM=y +CONFIG_HAS_IOPORT=y CONFIG_HAS_IOPORT_MAP=y CONFIG_HAS_DMA=y CONFIG_DMA_OPS=y @@ -5405,8 +5536,8 @@ CONFIG_ARCH_HAS_TEARDOWN_DMA_OPS=y CONFIG_ARCH_HAS_SYNC_DMA_FOR_DEVICE=y CONFIG_ARCH_HAS_SYNC_DMA_FOR_CPU=y CONFIG_DMA_NONCOHERENT_MMAP=y +CONFIG_ARCH_HAS_DMA_ALLOC=y CONFIG_DMA_CMA=y -# CONFIG_DMA_PERNUMA_CMA is not set # # Default contiguous memory area size: @@ -5437,6 +5568,7 @@ CONFIG_FONT_8x16=y CONFIG_ARCH_STACKWALK=y CONFIG_STACKDEPOT=y CONFIG_SBITMAP=y +# CONFIG_LWQ_TEST is not set # end of Library routines CONFIG_GENERIC_LIB_DEVMEM_IS_ALLOWED=y @@ -5557,8 +5689,11 @@ CONFIG_HAVE_ARCH_KFENCE=y CONFIG_PANIC_ON_OOPS_VALUE=0 CONFIG_PANIC_TIMEOUT=0 # CONFIG_SOFTLOCKUP_DETECTOR is not set +CONFIG_HAVE_HARDLOCKUP_DETECTOR_BUDDY=y +# CONFIG_HARDLOCKUP_DETECTOR is not set # CONFIG_DETECT_HUNG_TASK is not set # CONFIG_WQ_WATCHDOG is not set +# CONFIG_WQ_CPU_INTENSIVE_REPORT is not set # CONFIG_TEST_LOCKUP is not set # end of Debug Oops, Lockups and Hangs @@ -5602,12 +5737,9 @@ CONFIG_STACKTRACE=y # CONFIG_DEBUG_PLIST is not set # CONFIG_DEBUG_SG is not set # CONFIG_DEBUG_NOTIFIERS is not set -# CONFIG_BUG_ON_DATA_CORRUPTION is not set # CONFIG_DEBUG_MAPLE_TREE is not set # end of Debug kernel data structures -# CONFIG_DEBUG_CREDENTIALS is not set - # # RCU Debugging # @@ -5661,6 +5793,7 @@ CONFIG_CORESIGHT_SOURCE_ETM3X=y # CONFIG_CORESIGHT_CTI is not set # CONFIG_CORESIGHT_TPDM is not set # CONFIG_CORESIGHT_TPDA is not set +# CONFIG_CORESIGHT_DUMMY is not set # end of arm Debugging # @@ -5711,6 +5844,7 @@ CONFIG_RUNTIME_TESTING_MENU=y # CONFIG_TEST_MEMCAT_P is not set # CONFIG_TEST_MEMINIT is not set # CONFIG_TEST_FREE_PAGES is not set +# CONFIG_TEST_OBJPOOL is not set CONFIG_ARCH_USE_MEMTEST=y # CONFIG_MEMTEST is not set # end of Kernel Testing and Coverage