Files
u-boot/include
Sam Protsenko e760a245e2 mmc: dw_mmc: Add support for 64-bit IDMAC
Some DW MMC blocks (e.g. those on modern Exynos chips) support 64-bit
DMA addressing mode. 64-bit DW MMC variants differ from their 32-bit
counterparts:
  - the register layout is a bit different (because there are additional
    IDMAC registers present for storing upper part of 64-bit addresses)
  - DMA descriptor structure is bigger and different from 32-bit one

Introduce all necessary changes to enable support for 64-bit DMA capable
DW MMC blocks. Next changes were made:

  1. Check which DMA address mode is supported in current IP-core
     version. HCON register (bit 27) indicates whether it's 32-bit or
     64-bit addressing. Add boolean .dma_64bit_address field to struct
     dwmci_host and store the result there. dwmci_init_dma() function is
     introduced for doing so, which is called on driver's init.

  2. Add 64-bit DMA descriptor (struct dwmci_idmac64) and use it in
     dwmci_prepare_desc() in case if .dma_64bit_address field is true.
     A new dwmci_set_idma_desc64() function was added for populating that
     descriptor.

  3. Add registers for 64-bit DMA capable blocks. To make the access to
     IDMAC registers universal between 32-bit / 64-bit cases, a new
     struct dwmci_idmac_regs (and corresponding host->regs field) was
     introduced, which abstracts the hardware by being set to
     appropriate offset constants on init. All direct calls to IDMAC
     registers were correspondingly replaced by accessing host->regs.

  4. Allocate and use 64-bit DMA descriptors buffer in case when IDMAC
     is 64-bit capable. Extract all the code (except for the IDMAC
     descriptors buffer allocation) from dwmci_send_cmd() to
     dwmci_send_cmd_common(), so that it's possible to keep IDMAC
     buffer (either 32-bit or 64-bit) on stack during send_cmd routine.

The insights for this implementation were taken from Linux kernel DW MMC
driver.

Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org>
Signed-off-by: Minkyu Kang <mk7.kang@samsung.com>
2024-08-19 16:09:06 +09:00
..
2024-07-31 16:51:54 +02:00
2022-10-30 20:07:16 +01:00
2022-09-29 16:07:57 -04:00
2022-09-24 10:47:01 -04:00
2023-08-25 13:54:33 -04:00
2023-08-08 10:22:03 -04:00
2024-07-29 15:01:04 -06:00
2023-12-21 08:54:37 -05:00
2024-07-29 15:01:04 -06:00
2024-06-24 13:34:52 -06:00
2024-02-13 15:38:49 -05:00
2024-07-29 15:01:04 -06:00
2024-08-02 15:16:51 -03:00
2024-07-31 16:51:54 +02:00
2024-07-29 15:01:04 -06:00
2024-07-29 15:01:04 -06:00
2024-07-29 15:01:04 -06:00
2024-07-16 17:09:33 -06:00
2024-06-14 12:59:07 -06:00
2024-05-03 12:22:58 -06:00
2024-07-29 15:01:04 -06:00
2023-05-02 14:23:34 -04:00
2024-07-29 15:01:04 -06:00
2022-10-18 09:32:53 +08:00
2023-01-20 12:27:06 -05:00
2024-07-29 15:01:04 -06:00
2024-07-29 15:01:04 -06:00
2024-07-29 15:01:04 -06:00
2023-11-07 14:50:51 -05:00
2023-12-21 08:54:37 -05:00
2024-07-29 15:01:04 -06:00
2023-10-31 09:08:51 +01:00
2023-04-27 13:51:06 -04:00
2023-12-21 11:59:49 -05:00
2023-08-19 04:12:53 +02:00
2022-10-30 20:07:17 +01:00
2024-07-29 15:01:04 -06:00
2024-07-29 15:01:04 -06:00
2023-12-21 08:54:37 -05:00
2023-10-11 15:43:55 -04:00
2024-07-29 15:01:04 -06:00
2024-07-29 15:01:04 -06:00
2024-07-29 15:01:04 -06:00
2024-07-29 15:01:04 -06:00
2024-07-29 15:01:04 -06:00
2023-12-21 08:54:37 -05:00
2024-07-29 15:01:04 -06:00
2024-08-08 09:28:05 +02:00
2024-07-29 15:01:04 -06:00
2024-07-29 15:01:04 -06:00
2023-01-16 18:01:10 +08:00
2023-12-21 08:54:37 -05:00
2024-07-29 15:01:04 -06:00
2024-07-29 15:01:04 -06:00
2023-11-16 13:49:14 -05:00
2024-07-29 15:01:04 -06:00
2023-10-09 15:24:31 -04:00
2024-05-22 08:55:29 -06:00
2023-02-10 07:41:40 -05:00
2024-07-29 15:01:04 -06:00
2024-06-30 13:58:31 +02:00
2024-07-29 15:01:04 -06:00
2022-12-07 16:04:17 -05:00
2024-07-29 15:01:04 -06:00
2024-07-29 15:01:04 -06:00
2024-07-31 16:52:51 +02:00
2024-05-22 08:55:29 -06:00
2024-07-29 15:01:04 -06:00