[PATCH 5/6] drivers: ata: ahci: update max id if it is more than available ports

Stefan Roese sr at denx.de
Fri Mar 26 07:47:32 CET 2021


On 26.03.21 01:07, Tim Harvey wrote:
> From: Suneel Garapati <sgarapati at marvell.com>
> 
> After check for maximum between max id and available ports, also check
> if available port count is less than max id and update.
> 
> In the case of the CN8030 OcteonTX SoC max_id needs to be reduced to
> the number of ports found otherwise the following occurs on a scan:
> 
> GW6404-B> scsi scan
> scanning bus for devices...
> Target spinup took 0 ms.
> AHCI 0001.0300 32 slots 1 ports 6 Gbps 0x1 impl SATA mode
> flags: 64bit ncq ilck stag pm led clo only pmp fbss pio slum part ccc
> apst
>    Device 0: (0:0) Vendor: ATA Prod.: SanDisk SD8SFAT0 Rev: Z233
>              Type: Hard Disk
>              Capacity: 61057.3 MB = 59.6 GB (125045424 x 512)
> "Synchronous Abort" handler, esr 0x96000006
> elr: 000000000052f824 lr : 000000000052fa10 (reloc)
> elr: 000000007fee9824 lr : 000000007fee9a10
> x0 : 0000000000000001 x1 : 0000000000000001
> x2 : 000000007bea3528 x3 : 000000007bea3580
> x4 : 0000000000000200 x5 : 0000000000000000
> x6 : 0000000000000002 x7 : 000000007bea3540
> x8 : 00000000fffffff8 x9 : 0000000000000008
> x10: 00000000000186a0 x11: 000000000000000d
> x12: 0000000000000006 x13: 000000000001869f
> x14: 0000000000000007 x15: 00000000ffffffff
> x16: 000000007ff439a5 x17: 000000007ff5730c
> x18: 000000007bea9de0 x19: 000000007ff7a580
> x20: 000000007bec79f8 x21: 0000000000000000
> x22: 000000007bea3580 x23: 0000000000000000
> x24: 0000000000000000 x25: 000000007bec7a00
> x26: 00000000ffffffc0 x27: 000000007bec79d0
> x28: 000000007beb51c0 x29: 000000007bea3480
> 
> Code: 91246800 940130c2 12800000 1400004f (b9402ae0)
> Resetting CPU ...
> 
> Signed-off-by: Suneel Garapati <sgarapati at marvell.com>

Reviewed-by: Stefan Roese <sr at denx.de>

Thanks,
Stefan

> ---
>   drivers/ata/ahci.c | 3 +++
>   1 file changed, 3 insertions(+)
> 
> diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c
> index 2ef21ec508..98b288254b 100644
> --- a/drivers/ata/ahci.c
> +++ b/drivers/ata/ahci.c
> @@ -1190,6 +1190,9 @@ int ahci_probe_scsi(struct udevice *ahci_dev, ulong base)
>   	 */
>   	uc_plat->max_id = max_t(unsigned long, uc_priv->n_ports,
>   				uc_plat->max_id);
> +	/* If port count is less than max_id, update max_id */
> +	if (uc_priv->n_ports < uc_plat->max_id)
> +		uc_plat->max_id = uc_priv->n_ports;
>   
>   	return 0;
>   }
> 


Viele Grüße,
Stefan

-- 
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-51 Fax: (+49)-8142-66989-80 Email: sr at denx.de


More information about the U-Boot mailing list