diff options
Diffstat (limited to 'drivers/net/ethernet/hisilicon/hns/hns_dsaf_misc.c')
| -rw-r--r-- | drivers/net/ethernet/hisilicon/hns/hns_dsaf_misc.c | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_misc.c b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_misc.c index a2c22d084ce9..e13aa064a8e9 100644 --- a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_misc.c +++ b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_misc.c | |||
| @@ -461,6 +461,32 @@ int hns_mac_get_sfp_prsnt(struct hns_mac_cb *mac_cb, int *sfp_prsnt) | |||
| 461 | return 0; | 461 | return 0; |
| 462 | } | 462 | } |
| 463 | 463 | ||
| 464 | int hns_mac_get_sfp_prsnt_acpi(struct hns_mac_cb *mac_cb, int *sfp_prsnt) | ||
| 465 | { | ||
| 466 | union acpi_object *obj; | ||
| 467 | union acpi_object obj_args, argv4; | ||
| 468 | |||
| 469 | obj_args.integer.type = ACPI_TYPE_INTEGER; | ||
| 470 | obj_args.integer.value = mac_cb->mac_id; | ||
| 471 | |||
| 472 | argv4.type = ACPI_TYPE_PACKAGE, | ||
| 473 | argv4.package.count = 1, | ||
| 474 | argv4.package.elements = &obj_args, | ||
| 475 | |||
| 476 | obj = acpi_evaluate_dsm(ACPI_HANDLE(mac_cb->dev), | ||
| 477 | hns_dsaf_acpi_dsm_uuid, 0, | ||
| 478 | HNS_OP_GET_SFP_STAT_FUNC, &argv4); | ||
| 479 | |||
| 480 | if (!obj || obj->type != ACPI_TYPE_INTEGER) | ||
| 481 | return -ENODEV; | ||
| 482 | |||
| 483 | *sfp_prsnt = obj->integer.value; | ||
| 484 | |||
| 485 | ACPI_FREE(obj); | ||
| 486 | |||
| 487 | return 0; | ||
| 488 | } | ||
| 489 | |||
| 464 | /** | 490 | /** |
| 465 | * hns_mac_config_sds_loopback - set loop back for serdes | 491 | * hns_mac_config_sds_loopback - set loop back for serdes |
| 466 | * @mac_cb: mac control block | 492 | * @mac_cb: mac control block |
| @@ -592,7 +618,7 @@ struct dsaf_misc_op *hns_misc_op_get(struct dsaf_device *dsaf_dev) | |||
| 592 | misc_op->hns_dsaf_roce_srst = hns_dsaf_roce_srst_acpi; | 618 | misc_op->hns_dsaf_roce_srst = hns_dsaf_roce_srst_acpi; |
| 593 | 619 | ||
| 594 | misc_op->get_phy_if = hns_mac_get_phy_if_acpi; | 620 | misc_op->get_phy_if = hns_mac_get_phy_if_acpi; |
| 595 | misc_op->get_sfp_prsnt = hns_mac_get_sfp_prsnt; | 621 | misc_op->get_sfp_prsnt = hns_mac_get_sfp_prsnt_acpi; |
| 596 | 622 | ||
| 597 | misc_op->cfg_serdes_loopback = hns_mac_config_sds_loopback_acpi; | 623 | misc_op->cfg_serdes_loopback = hns_mac_config_sds_loopback_acpi; |
| 598 | } else { | 624 | } else { |
