libahci_platform: Fail when PHY required but PHY support disabled
ahci_platform_get_resources handles resource management for platform AHCI drivers, including getting a possible PHY from the device tree. Since not all drivers need a PHY, it ignores -ENODEV and -ENOSYS from devm_get_phy. However, when the PHY subsystem is mistakenly disabled, -ENOSYS can be returned even when a PHY is needed. This patch modifies the -ENOSYS case to check if a "phys" device tree node exists. If it exists, then clearly the PHY subsystem is mistakenly disabled and the driver cannot work, ahci_platform_get_resources will fail and propagate the error. Signed-off-by: Mikko Perttunen <mperttunen@nvidia.com> Acked-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com> Signed-off-by: Tejun Heo <tj@kernel.org>
This commit is contained in:
Родитель
ebe06187bf
Коммит
acbd573354
|
@ -250,8 +250,13 @@ struct ahci_host_priv *ahci_platform_get_resources(struct platform_device *pdev)
|
|||
if (IS_ERR(hpriv->phy)) {
|
||||
rc = PTR_ERR(hpriv->phy);
|
||||
switch (rc) {
|
||||
case -ENODEV:
|
||||
case -ENOSYS:
|
||||
/* No PHY support. Check if PHY is required. */
|
||||
if (of_find_property(dev->of_node, "phys", NULL)) {
|
||||
dev_err(dev, "couldn't get sata-phy: ENOSYS\n");
|
||||
goto err_out;
|
||||
}
|
||||
case -ENODEV:
|
||||
/* continue normally */
|
||||
hpriv->phy = NULL;
|
||||
break;
|
||||
|
|
Загрузка…
Ссылка в новой задаче