Lines Matching refs:parent
659 struct sas_rphy *rphy = dev_to_rphy(phy->dev.parent); in sas_smp_get_phy_events()
738 static void sas_ex_get_linkrate(struct domain_device *parent, in sas_ex_get_linkrate() argument
742 struct expander_device *parent_ex = &parent->ex_dev; in sas_ex_get_linkrate()
760 child->min_linkrate = min(parent->min_linkrate, in sas_ex_get_linkrate()
762 child->max_linkrate = max(parent->max_linkrate, in sas_ex_get_linkrate()
769 child->pathways = min(child->pathways, parent->pathways); in sas_ex_get_linkrate()
773 struct domain_device *parent, int phy_id) in sas_ex_discover_end_dev() argument
775 struct expander_device *parent_ex = &parent->ex_dev; in sas_ex_discover_end_dev()
788 kref_get(&parent->kref); in sas_ex_discover_end_dev()
789 child->parent = parent; in sas_ex_discover_end_dev()
790 child->port = parent->port; in sas_ex_discover_end_dev()
795 phy->port = sas_port_alloc(&parent->rphy->dev, phy_id); in sas_ex_discover_end_dev()
803 sas_ex_get_linkrate(parent, child, phy); in sas_ex_discover_end_dev()
823 list_add_tail(&child->disco_list_node, &parent->port->disco_list); in sas_ex_discover_end_dev()
830 SAS_ADDR(parent->sas_addr), phy_id, res); in sas_ex_discover_end_dev()
848 list_add_tail(&child->disco_list_node, &parent->port->disco_list); in sas_ex_discover_end_dev()
855 SAS_ADDR(parent->sas_addr), phy_id, res); in sas_ex_discover_end_dev()
860 phy->attached_tproto, SAS_ADDR(parent->sas_addr), in sas_ex_discover_end_dev()
871 spin_lock_irq(&parent->port->dev_list_lock); in sas_ex_discover_end_dev()
873 spin_unlock_irq(&parent->port->dev_list_lock); in sas_ex_discover_end_dev()
883 static bool sas_ex_join_wide_port(struct domain_device *parent, int phy_id) in sas_ex_join_wide_port() argument
885 struct ex_phy *phy = &parent->ex_dev.ex_phy[phy_id]; in sas_ex_join_wide_port()
888 for (i = 0; i < parent->ex_dev.num_phys; i++) { in sas_ex_join_wide_port()
889 struct ex_phy *ephy = &parent->ex_dev.ex_phy[i]; in sas_ex_join_wide_port()
907 struct domain_device *parent, int phy_id) in sas_ex_discover_expander() argument
909 struct sas_expander_device *parent_ex = rphy_to_expander_device(parent->rphy); in sas_ex_discover_expander()
910 struct ex_phy *phy = &parent->ex_dev.ex_phy[phy_id]; in sas_ex_discover_expander()
920 SAS_ADDR(parent->sas_addr), phy_id, in sas_ex_discover_expander()
929 phy->port = sas_port_alloc(&parent->rphy->dev, phy_id); in sas_ex_discover_expander()
947 port = parent->port; in sas_ex_discover_expander()
952 kref_get(&parent->kref); in sas_ex_discover_expander()
953 child->parent = parent; in sas_ex_discover_expander()
959 sas_ex_get_linkrate(parent, child, phy); in sas_ex_discover_expander()
961 parent->port->disc.max_level = max(parent->port->disc.max_level, in sas_ex_discover_expander()
967 spin_lock_irq(&parent->port->dev_list_lock); in sas_ex_discover_expander()
968 list_add_tail(&child->dev_list_node, &parent->port->dev_list); in sas_ex_discover_expander()
969 spin_unlock_irq(&parent->port->dev_list_lock); in sas_ex_discover_expander()
974 spin_lock_irq(&parent->port->dev_list_lock); in sas_ex_discover_expander()
976 spin_unlock_irq(&parent->port->dev_list_lock); in sas_ex_discover_expander()
980 list_add_tail(&child->siblings, &parent->ex_dev.children); in sas_ex_discover_expander()
1000 if (!dev->parent && (SAS_ADDR(ex_phy->attached_sas_addr) == in sas_ex_discover_dev()
1005 if (dev->parent && (SAS_ADDR(ex_phy->attached_sas_addr) == in sas_ex_discover_dev()
1006 SAS_ADDR(dev->parent->sas_addr))) { in sas_ex_discover_dev()
1251 struct domain_device *parent = child->parent; in sas_print_parent_topology_bug() local
1256 ex_type[parent->dev_type], in sas_print_parent_topology_bug()
1257 SAS_ADDR(parent->sas_addr), in sas_print_parent_topology_bug()
1264 sas_route_char(parent, parent_phy), in sas_print_parent_topology_bug()
1273 struct domain_device *parent = child->parent; in sas_check_eeds() local
1275 if (SAS_ADDR(parent->port->disc.fanout_sas_addr) != 0) { in sas_check_eeds()
1279 SAS_ADDR(parent->sas_addr), in sas_check_eeds()
1283 SAS_ADDR(parent->port->disc.fanout_sas_addr)); in sas_check_eeds()
1284 } else if (SAS_ADDR(parent->port->disc.eeds_a) == 0) { in sas_check_eeds()
1285 memcpy(parent->port->disc.eeds_a, parent->sas_addr, in sas_check_eeds()
1287 memcpy(parent->port->disc.eeds_b, child->sas_addr, in sas_check_eeds()
1289 } else if (((SAS_ADDR(parent->port->disc.eeds_a) == in sas_check_eeds()
1290 SAS_ADDR(parent->sas_addr)) || in sas_check_eeds()
1291 (SAS_ADDR(parent->port->disc.eeds_a) == in sas_check_eeds()
1294 ((SAS_ADDR(parent->port->disc.eeds_b) == in sas_check_eeds()
1295 SAS_ADDR(parent->sas_addr)) || in sas_check_eeds()
1296 (SAS_ADDR(parent->port->disc.eeds_b) == in sas_check_eeds()
1303 SAS_ADDR(parent->sas_addr), in sas_check_eeds()
1321 if (!child->parent) in sas_check_parent_topology()
1324 if (child->parent->dev_type != SAS_EDGE_EXPANDER_DEVICE && in sas_check_parent_topology()
1325 child->parent->dev_type != SAS_FANOUT_EXPANDER_DEVICE) in sas_check_parent_topology()
1328 parent_ex = &child->parent->ex_dev; in sas_check_parent_topology()
1343 switch (child->parent->dev_type) { in sas_check_parent_topology()
1523 static int sas_configure_parent(struct domain_device *parent, in sas_configure_parent() argument
1527 struct expander_device *ex_parent = &parent->ex_dev; in sas_configure_parent()
1531 if (parent->parent) { in sas_configure_parent()
1532 res = sas_configure_parent(parent->parent, parent, sas_addr, in sas_configure_parent()
1540 SAS_ADDR(parent->sas_addr)); in sas_configure_parent()
1550 res = sas_configure_phy(parent, i, sas_addr, include); in sas_configure_parent()
1566 if (dev->parent) in sas_configure_routing()
1567 return sas_configure_parent(dev->parent, dev, sas_addr, 1); in sas_configure_routing()
1573 if (dev->parent) in sas_disable_routing()
1574 return sas_configure_parent(dev->parent, dev, sas_addr, 0); in sas_disable_routing()
1878 static void sas_unregister_devs_sas_addr(struct domain_device *parent, in sas_unregister_devs_sas_addr() argument
1881 struct expander_device *ex_dev = &parent->ex_dev; in sas_unregister_devs_sas_addr()
1892 sas_unregister_ex_tree(parent->port, child); in sas_unregister_devs_sas_addr()
1894 sas_unregister_dev(parent->port, child); in sas_unregister_devs_sas_addr()
1899 sas_disable_routing(parent, phy->attached_sas_addr); in sas_unregister_devs_sas_addr()