[U-Boot] [PATCH 1/2] mmc: tmio: Pass full address to tmio_sd_addr_is_dmaable()

Marek Vasut marek.vasut at gmail.com
Tue Oct 9 14:55:06 UTC 2018


On 10/09/2018 02:24 PM, Masahiro Yamada wrote:
> Hi Marek,

Hi,

> On Tue, Oct 9, 2018 at 8:26 PM Marek Vasut <marek.vasut at gmail.com> wrote:
>>
>> Pass the entire source data pointer to tmio_sd_addr_is_dmaable()
> 
> 
> This statement sounds like
> the current code is passing the pointer address only partially.
> Is it right?

With this change it is.

>> so we don't have to apply casts throughout the code.
> 
> I do not understand this either
> since I see a cast in your code too.

There is a cast, but it's isolated to this function.

> In the previous code, the caller casts src->address
> when it passes it to tmio_sd_addr_is_dmaable().
> 
> In the new code, 'src' is casted
> in tmio_sd_addr_is_dmaable().
> 
> To me, you just moved the location of casting.
> What is the difference (i.e. benefit)?

I moved the cast from the code into the function, which I think is cleaner.

> If you want to change this code, I am fine.
> But, I'd like to know the reason.
> 
> At least, I am so confused with your commit description.
> 
> 
> 
> 
> 
> 
>> Signed-off-by: Marek Vasut <marek.vasut+renesas at gmail.com>
>> Cc: Masahiro Yamada <yamada.masahiro at socionext.com>
>> ---
>>  drivers/mmc/tmio-common.c | 6 ++++--
>>  1 file changed, 4 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/mmc/tmio-common.c b/drivers/mmc/tmio-common.c
>> index b311b80be8..6b21941991 100644
>> --- a/drivers/mmc/tmio-common.c
>> +++ b/drivers/mmc/tmio-common.c
>> @@ -372,8 +372,10 @@ static int tmio_sd_dma_xfer(struct udevice *dev, struct mmc_data *data)
>>  }
>>
>>  /* check if the address is DMA'able */
>> -static bool tmio_sd_addr_is_dmaable(unsigned long addr)
>> +static bool tmio_sd_addr_is_dmaable(const char *src)
>>  {
>> +       uintptr_t addr = (uintptr_t)src;
>> +
>>         if (!IS_ALIGNED(addr, TMIO_SD_DMA_MINALIGN))
>>                 return false;
>>
>> @@ -486,7 +488,7 @@ int tmio_sd_send_cmd(struct udevice *dev, struct mmc_cmd *cmd,
>>         if (data) {
>>                 /* use DMA if the HW supports it and the buffer is aligned */
>>                 if (priv->caps & TMIO_SD_CAP_DMA_INTERNAL &&
>> -                   tmio_sd_addr_is_dmaable((long)data->src))
>> +                   tmio_sd_addr_is_dmaable(data->src))
>>                         ret = tmio_sd_dma_xfer(dev, data);
>>                 else
>>                         ret = tmio_sd_pio_xfer(dev, data);
>> --
>> 2.18.0
>>
>> _______________________________________________
>> U-Boot mailing list
>> U-Boot at lists.denx.de
>> https://lists.denx.de/listinfo/u-boot
> 
> 
> 


-- 
Best regards,
Marek Vasut


More information about the U-Boot mailing list