Message ID | 20221016151256.3021729-3-lis8215@gmail.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | Add Ingenic JZ4755 DMA support | expand |
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
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 >
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 },
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(+)