The JZ4755 has 4 DMA channels per DMA unit, two idential DMA units.
The JZ4755 has the similar DMA engine to JZ4725b, so I assume it has the
same bug as JZ4725b, see commit a40c94be2336.
Signed-off-by: Siarhei Volkau <lis8215@gmail.com>
---
drivers/dma/dma-jz4780.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/drivers/dma/dma-jz4780.c b/drivers/dma/dma-jz4780.c
index 2a483802d..9c1a6e9a9 100644
--- a/drivers/dma/dma-jz4780.c
+++ b/drivers/dma/dma-jz4780.c
@@ -1038,6 +1038,13 @@ static const struct jz4780_dma_soc_data jz4725b_dma_soc_data = {
JZ_SOC_DATA_BREAK_LINKS,
};
+static const struct jz4780_dma_soc_data jz4755_dma_soc_data = {
+ .nb_channels = 4,
+ .transfer_ord_max = 5,
+ .flags = JZ_SOC_DATA_PER_CHAN_PM | JZ_SOC_DATA_NO_DCKES_DCKEC |
+ JZ_SOC_DATA_BREAK_LINKS,
+};
+
static const struct jz4780_dma_soc_data jz4760_dma_soc_data = {
.nb_channels = 5,
.transfer_ord_max = 6,
@@ -1101,6 +1108,7 @@ static const struct jz4780_dma_soc_data x1830_dma_soc_data = {
static const struct of_device_id jz4780_dma_dt_match[] = {
{ .compatible = "ingenic,jz4740-dma", .data = &jz4740_dma_soc_data },
{ .compatible = "ingenic,jz4725b-dma", .data = &jz4725b_dma_soc_data },
+ { .compatible = "ingenic,jz4755-dma", .data = &jz4755_dma_soc_data },
{ .compatible = "ingenic,jz4760-dma", .data = &jz4760_dma_soc_data },
{ .compatible = "ingenic,jz4760-mdma", .data = &jz4760_mdma_soc_data },
{ .compatible = "ingenic,jz4760-bdma", .data = &jz4760_bdma_soc_data },
--
2.36.1
Hi Siarhei,
Le dim., oct. 16 2022 at 18:12:56 +0300, Siarhei Volkau
<lis8215@gmail.com> a écrit :
> The JZ4755 has 4 DMA channels per DMA unit, two idential DMA units.
>
> The JZ4755 has the similar DMA engine to JZ4725b, so I assume it has
> the
> same bug as JZ4725b, see commit a40c94be2336.
>
> Signed-off-by: Siarhei Volkau <lis8215@gmail.com>
Reviewed-by: Paul Cercueil <paul@crapouillou.net>
Cheers,
-Paul
> ---
> drivers/dma/dma-jz4780.c | 8 ++++++++
> 1 file changed, 8 insertions(+)
>
> diff --git a/drivers/dma/dma-jz4780.c b/drivers/dma/dma-jz4780.c
> index 2a483802d..9c1a6e9a9 100644
> --- a/drivers/dma/dma-jz4780.c
> +++ b/drivers/dma/dma-jz4780.c
> @@ -1038,6 +1038,13 @@ static const struct jz4780_dma_soc_data
> jz4725b_dma_soc_data = {
> JZ_SOC_DATA_BREAK_LINKS,
> };
>
> +static const struct jz4780_dma_soc_data jz4755_dma_soc_data = {
> + .nb_channels = 4,
> + .transfer_ord_max = 5,
> + .flags = JZ_SOC_DATA_PER_CHAN_PM | JZ_SOC_DATA_NO_DCKES_DCKEC |
> + JZ_SOC_DATA_BREAK_LINKS,
> +};
> +
> static const struct jz4780_dma_soc_data jz4760_dma_soc_data = {
> .nb_channels = 5,
> .transfer_ord_max = 6,
> @@ -1101,6 +1108,7 @@ static const struct jz4780_dma_soc_data
> x1830_dma_soc_data = {
> static const struct of_device_id jz4780_dma_dt_match[] = {
> { .compatible = "ingenic,jz4740-dma", .data = &jz4740_dma_soc_data
> },
> { .compatible = "ingenic,jz4725b-dma", .data =
> &jz4725b_dma_soc_data },
> + { .compatible = "ingenic,jz4755-dma", .data = &jz4755_dma_soc_data
> },
> { .compatible = "ingenic,jz4760-dma", .data = &jz4760_dma_soc_data
> },
> { .compatible = "ingenic,jz4760-mdma", .data =
> &jz4760_mdma_soc_data },
> { .compatible = "ingenic,jz4760-bdma", .data =
> &jz4760_bdma_soc_data },
> --
> 2.36.1
>
Hi Siarhei,
Le dim., oct. 16 2022 at 18:12:56 +0300, Siarhei Volkau
<lis8215@gmail.com> a écrit :
> The JZ4755 has 4 DMA channels per DMA unit, two idential DMA units.
>
> The JZ4755 has the similar DMA engine to JZ4725b, so I assume it has
> the
> same bug as JZ4725b, see commit a40c94be2336.
Can you verify that?
It should be pretty simple, if it has the bug you'll see I/O errors on
the SD card.
Cheers,
-Paul
> Signed-off-by: Siarhei Volkau <lis8215@gmail.com>
> ---
> drivers/dma/dma-jz4780.c | 8 ++++++++
> 1 file changed, 8 insertions(+)
>
> diff --git a/drivers/dma/dma-jz4780.c b/drivers/dma/dma-jz4780.c
> index 2a483802d..9c1a6e9a9 100644
> --- a/drivers/dma/dma-jz4780.c
> +++ b/drivers/dma/dma-jz4780.c
> @@ -1038,6 +1038,13 @@ static const struct jz4780_dma_soc_data
> jz4725b_dma_soc_data = {
> JZ_SOC_DATA_BREAK_LINKS,
> };
>
> +static const struct jz4780_dma_soc_data jz4755_dma_soc_data = {
> + .nb_channels = 4,
> + .transfer_ord_max = 5,
> + .flags = JZ_SOC_DATA_PER_CHAN_PM | JZ_SOC_DATA_NO_DCKES_DCKEC |
> + JZ_SOC_DATA_BREAK_LINKS,
> +};
> +
> static const struct jz4780_dma_soc_data jz4760_dma_soc_data = {
> .nb_channels = 5,
> .transfer_ord_max = 6,
> @@ -1101,6 +1108,7 @@ static const struct jz4780_dma_soc_data
> x1830_dma_soc_data = {
> static const struct of_device_id jz4780_dma_dt_match[] = {
> { .compatible = "ingenic,jz4740-dma", .data = &jz4740_dma_soc_data
> },
> { .compatible = "ingenic,jz4725b-dma", .data =
> &jz4725b_dma_soc_data },
> + { .compatible = "ingenic,jz4755-dma", .data = &jz4755_dma_soc_data
> },
> { .compatible = "ingenic,jz4760-dma", .data = &jz4760_dma_soc_data
> },
> { .compatible = "ingenic,jz4760-mdma", .data =
> &jz4760_mdma_soc_data },
> { .compatible = "ingenic,jz4760-bdma", .data =
> &jz4760_bdma_soc_data },
> --
> 2.36.1
>
пн, 17 окт. 2022 г. в 12:34, Paul Cercueil <paul@crapouillou.net>: > Can you verify that? > > It should be pretty simple, if it has the bug you'll see I/O errors on > the SD card. Well, the result is ambiguous: Without that 'broken' flag: mmc works poorly, but becomes more or less stable when MMC clock downs to 6MHz (90% boots without errors). On the 12MHz MMC clock the issue doesn't appear in 50-70% cases. On the 24MHz MMC clock the device never boots up. However with the flag: MMC works stable on 24MHz MMC clock (boot issue observed only once), but if I increase MMC clock speed even a bit the problem appears oftenly ( >70% of cases). So, that flag definitely helps a lot, but the nature of the problem might be different. BR, Siarhei
Hi, Le lun., oct. 17 2022 at 20:29:27 +0300, Siarhei Volkau <lis8215@gmail.com> a écrit : > пн, 17 окт. 2022 г. в 12:34, Paul Cercueil > <paul@crapouillou.net>: >> Can you verify that? >> >> It should be pretty simple, if it has the bug you'll see I/O errors >> on >> the SD card. > > Well, the result is ambiguous: > > Without that 'broken' flag: mmc works poorly, but becomes more or less > stable when MMC clock downs to 6MHz (90% boots without errors). > On the 12MHz MMC clock the issue doesn't appear in 50-70% cases. > On the 24MHz MMC clock the device never boots up. > > However with the flag: MMC works stable on 24MHz MMC clock > (boot issue observed only once), but if I increase MMC clock speed > even > a bit the problem appears oftenly ( >70% of cases). > > So, that flag definitely helps a lot, but the nature of the problem > might be > different. If the flag makes any difference then it's needed. The controller should support up to 50 MHz, make sure that your "mmc" clock is at 50 MHz otherwise changing the max-frequency DT property won't do much. Cheers, -Paul
© 2016 - 2026 Red Hat, Inc.