[PATCH] sata: sata_mv: Remove always true test
Stefan Roese
stefan.roese at mailbox.org
Fri Aug 8 13:58:18 CEST 2025
On 07.08.25 17:09, Andrew Goodbody wrote:
> On 22/07/2025 17:42, Andrew Goodbody wrote:
>> Smatch reported an issue with a test that was always true in that an
>> unsigned variable will always be >= to zero. This led to a closer look
>> at the code which showed that some static functions returned values that
>> were always discarded so make those functions return void. Also make
>> the passing of block counts in those functions always use lbaint_t.
>>
>> Signed-off-by: Andrew Goodbody <andrew.goodbody at linaro.org>
Reviewed-by: Stefan Roese <stefan.roese at mailbox.org>
Thanks,
Stefan
>> ---
>> drivers/ata/sata_mv.c | 43 ++++++++++++++++---------------------------
>> 1 file changed, 16 insertions(+), 27 deletions(-)
>>
>> diff --git a/drivers/ata/sata_mv.c b/drivers/ata/sata_mv.c
>> index ac78760a33e..82dc5304dde 100644
>> --- a/drivers/ata/sata_mv.c
>> +++ b/drivers/ata/sata_mv.c
>> @@ -363,7 +363,7 @@ static int mv_start_edma_engine(struct udevice
>> *dev, int port)
>> return 0;
>> }
>> -static int mv_reset_channel(struct udevice *dev, int port)
>> +static void mv_reset_channel(struct udevice *dev, int port)
>> {
>> struct mv_priv *priv = dev_get_plat(dev);
>> @@ -374,8 +374,6 @@ static int mv_reset_channel(struct udevice *dev,
>> int port)
>> udelay(25); /* allow reset propagation */
>> out_le32(priv->regbase + EDMA_CMD, 0);
>> mdelay(10);
>> -
>> - return 0;
>> }
>> static void mv_reset_port(struct udevice *dev, int port)
>> @@ -578,9 +576,9 @@ static void process_responses(struct udevice *dev,
>> int port)
>> }
>> }
>> -static int mv_ata_exec_ata_cmd(struct udevice *dev, int port,
>> - struct sata_fis_h2d *cfis,
>> - u8 *buffer, u32 len, u32 iswrite)
>> +static void mv_ata_exec_ata_cmd(struct udevice *dev, int port,
>> + struct sata_fis_h2d *cfis,
>> + u8 *buffer, labint_t len, u32 iswrite)
>> {
>> struct mv_priv *priv = dev_get_plat(dev);
>> struct crqb *req;
>> @@ -589,7 +587,7 @@ static int mv_ata_exec_ata_cmd(struct udevice
>> *dev, int port,
>> if (len >= 64 * 1024) {
>> printf("We only support <64K transfers for now\n");
>> - return -1;
>> + return;
>> }
>> /* Initialize request */
>> @@ -653,7 +651,7 @@ static int mv_ata_exec_ata_cmd(struct udevice
>> *dev, int port,
>> /* Wait for completion */
>> if (wait_dma_completion(dev, port, slot, 10000)) {
>> printf("ATA operation timed out\n");
>> - return -1;
>> + return;
>> }
>> process_responses(dev, port);
>> @@ -664,16 +662,13 @@ static int mv_ata_exec_ata_cmd(struct udevice
>> *dev, int port,
>> invalidate_dcache_range(start,
>> start + ALIGN(len, ARCH_DMA_MINALIGN));
>> }
>> -
>> - return len;
>> }
>> -static u32 mv_sata_rw_cmd_ext(struct udevice *dev, int port, lbaint_t
>> start,
>> - u32 blkcnt,
>> - u8 *buffer, int is_write)
>> +static void mv_sata_rw_cmd_ext(struct udevice *dev, int port,
>> lbaint_t start,
>> + labint_t blkcnt,
>> + u8 *buffer, int is_write)
>> {
>> struct sata_fis_h2d cfis;
>> - u32 res;
>> u64 block;
>> block = (u64)start;
>> @@ -693,18 +688,15 @@ static u32 mv_sata_rw_cmd_ext(struct udevice
>> *dev, int port, lbaint_t start,
>> cfis.sector_count_exp = (blkcnt >> 8) & 0xff;
>> cfis.sector_count = blkcnt & 0xff;
>> - res = mv_ata_exec_ata_cmd(dev, port, &cfis, buffer,
>> - ATA_SECT_SIZE * blkcnt, is_write);
>> -
>> - return res >= 0 ? blkcnt : res;
>> + mv_ata_exec_ata_cmd(dev, port, &cfis, buffer,
>> + ATA_SECT_SIZE * blkcnt, is_write);
>> }
>> -static u32 mv_sata_rw_cmd(struct udevice *dev, int port, lbaint_t start,
>> - u32 blkcnt, u8 *buffer, int is_write)
>> +static void mv_sata_rw_cmd(struct udevice *dev, int port, lbaint_t
>> start,
>> + lbaint_t blkcnt, u8 *buffer, int is_write)
>> {
>> struct sata_fis_h2d cfis;
>> lbaint_t block;
>> - u32 res;
>> block = start;
>> @@ -720,19 +712,16 @@ static u32 mv_sata_rw_cmd(struct udevice *dev,
>> int port, lbaint_t start,
>> cfis.lba_low = block & 0xff;
>> cfis.sector_count = (u8)(blkcnt & 0xff);
>> - res = mv_ata_exec_ata_cmd(dev, port, &cfis, buffer,
>> - ATA_SECT_SIZE * blkcnt, is_write);
>> -
>> - return res >= 0 ? blkcnt : res;
>> + mv_ata_exec_ata_cmd(dev, port, &cfis, buffer,
>> + ATA_SECT_SIZE * blkcnt, is_write);
>> }
>> static u32 ata_low_level_rw(struct udevice *dev, int port, lbaint_t
>> blknr,
>> lbaint_t blkcnt, void *buffer, int is_write)
>> {
>> struct blk_desc *desc = dev_get_uclass_plat(dev);
>> - lbaint_t start, blks;
>> + lbaint_t start, blks, max_blks;
>> u8 *addr;
>> - int max_blks;
>> debug("%s: " LBAFU " " LBAFU "\n", __func__, blknr, blkcnt);
>>
>> ---
>> base-commit: bd0ade7d090a334b3986936d63a34001d99722ad
>> change-id: 20250722-sata_mv-40e704eb9b2b
>>
>> Best regards,
>
> Are there any comments for thsi patch please?
>
> Thanks,
> Andrew
>
More information about the U-Boot
mailing list