Lines Matching refs:hlink
102 struct hdac_ext_link *hlink = &h2link->hext_link;
105 hlink->lcaps = readl(ml_addr + AZX_REG_ML_LCAP);
107 h2link->alt = FIELD_GET(AZX_ML_HDA_LCAP_ALT, hlink->lcaps);
117 hlink->lsdiid = readw(ml_addr + AZX_REG_ML_LSDIID);
120 link_idx, hlink->lsdiid);
125 h2link->intc = FIELD_GET(AZX_ML_HDA_LCAP_INTC, hlink->lcaps);
126 h2link->ofls = FIELD_GET(AZX_ML_HDA_LCAP_OFLS, hlink->lcaps);
127 h2link->lss = FIELD_GET(AZX_ML_HDA_LCAP_LSS, hlink->lcaps);
130 h2link->slcount = FIELD_GET(AZX_ML_HDA_LCAP_SLCOUNT, hlink->lcaps) + 1;
381 struct hdac_ext_link *hlink;
389 hlink = &h2link->hext_link;
391 hlink->index = index;
392 hlink->bus = bus;
393 hlink->ml_addr = bus->mlcap + AZX_ML_BASE + (AZX_ML_INTERVAL * index);
395 ret = hdaml_lnk_enum(bus->dev, h2link, bus->remap_addr, hlink->ml_addr, index);
403 list_add_tail(&hlink->list, &bus->hlink_list);
410 hlink->ref_count = 1;
441 struct hdac_ext_link *hlink, *_h;
447 list_for_each_entry_safe(hlink, _h, &bus->hlink_list, list) {
448 list_del(&hlink->list);
449 h2link = hdac_ext_link_to_ext2(hlink);
460 struct hdac_ext_link *hlink;
462 list_for_each_entry(hlink, &bus->hlink_list, list) {
463 struct hdac_ext2_link *h2link = hdac_ext_link_to_ext2(hlink);
487 struct hdac_ext_link *hlink;
496 hlink = &h2link->hext_link;
500 hdaml_link_enable_interrupt(hlink->ml_addr + AZX_REG_ML_LCTL, enable);
509 struct hdac_ext_link *hlink;
518 hlink = &h2link->hext_link;
520 return hdaml_link_check_interrupt(hlink->ml_addr + AZX_REG_ML_LCTL);
527 struct hdac_ext_link *hlink;
536 hlink = &h2link->hext_link;
538 hdaml_link_set_syncprd(hlink->ml_addr + AZX_REG_ML_LSYNC, syncprd);
553 struct hdac_ext_link *hlink;
562 hlink = &h2link->hext_link;
564 return hdaml_link_wait_syncpu(hlink->ml_addr + AZX_REG_ML_LSYNC);
577 struct hdac_ext_link *hlink;
586 hlink = &h2link->hext_link;
588 hdaml_link_sync_arm(hlink->ml_addr + AZX_REG_ML_LSYNC, sublink);
601 struct hdac_ext_link *hlink;
610 hlink = &h2link->hext_link;
612 hdaml_link_sync_go(hlink->ml_addr + AZX_REG_ML_LSYNC);
627 struct hdac_ext_link *hlink;
637 hlink = &h2link->hext_link;
642 return hdaml_link_check_cmdsync(hlink->ml_addr + AZX_REG_ML_LSYNC,
657 struct hdac_ext_link *hlink;
667 hlink = &h2link->hext_link;
673 if (++hlink->ref_count > 1)
680 ret = hdaml_link_init(hlink->ml_addr + AZX_REG_ML_LCTL, sublink);
705 struct hdac_ext_link *hlink;
715 hlink = &h2link->hext_link;
721 if (--hlink->ref_count > 0)
727 ret = hdaml_link_shutdown(hlink->ml_addr + AZX_REG_ML_LCTL, sublink);
763 struct hdac_ext_link *hlink;
769 hlink = &h2link->hext_link;
771 *lsdiid = hdaml_link_get_lsdiid(hlink->ml_addr + AZX_REG_ML_LSDIID_OFFSET(sublink));
779 struct hdac_ext_link *hlink;
785 hlink = &h2link->hext_link;
789 hdaml_link_set_lsdiid(hlink->ml_addr + AZX_REG_ML_LSDIID_OFFSET(sublink), dev_num);
842 struct hdac_ext_link *hlink;
844 list_for_each_entry(hlink, &bus->hlink_list, list) {
845 struct hdac_ext2_link *h2link = hdac_ext_link_to_ext2(hlink);
848 snd_hdac_ext_bus_link_put(bus, hlink);
855 struct hdac_ext_link *hlink;
858 list_for_each_entry(hlink, &bus->hlink_list, list)
859 writel(0, hlink->ml_addr + AZX_REG_ML_LOSIDV);
865 struct hdac_ext_link *hlink;
869 list_for_each_entry(hlink, &bus->hlink_list, list) {
870 struct hdac_ext2_link *h2link = hdac_ext_link_to_ext2(hlink);
872 if (!h2link->alt && hlink->ref_count) {
873 ret = snd_hdac_ext_bus_link_power_up(hlink);
884 struct hdac_ext_link *hlink;
887 list_for_each_entry(hlink, &bus->hlink_list, list) {
888 struct hdac_ext2_link *h2link = hdac_ext_link_to_ext2(hlink);
891 ret = snd_hdac_ext_bus_link_power_down(hlink);
951 struct hdac_ext_link *hlink;
960 hlink = &h2link->hext_link;
964 hdaml_lctl_offload_enable(hlink->ml_addr + AZX_REG_ML_LCTL, enable);