Lines Matching refs:pd
182 struct dsa_chip_data *cd = ds->pd; in dsa_cpu_dsa_setup()
219 struct dsa_chip_data *pd = ds->pd; in dsa_switch_setup_one() local
230 name = pd->port_names[i]; in dsa_switch_setup_one()
328 ret = dsa_slave_create(ds, parent, i, pd->port_names[i]); in dsa_switch_setup_one()
331 index, i, pd->port_names[i], ret); in dsa_switch_setup_one()
379 struct dsa_chip_data *pd = dst->pd->chip + index; in dsa_switch_setup() local
388 drv = dsa_switch_probe(host_dev, pd->sw_addr, &name); in dsa_switch_setup()
407 ds->pd = pd; in dsa_switch_setup()
423 struct dsa_chip_data *cd = ds->pd; in dsa_switch_destroy()
518 for (i = 0; i < dst->pd->nr_chips; i++) { in dsa_link_poll_work()
592 static int dsa_of_setup_routing_table(struct dsa_platform_data *pd, in dsa_of_setup_routing_table() argument
616 if (link_sw_addr >= pd->nr_chips) in dsa_of_setup_routing_table()
621 cd->rtable = kmalloc_array(pd->nr_chips, sizeof(s8), in dsa_of_setup_routing_table()
627 memset(cd->rtable, -1, pd->nr_chips * sizeof(s8)); in dsa_of_setup_routing_table()
635 static int dsa_of_probe_links(struct dsa_platform_data *pd, in dsa_of_probe_links() argument
650 if (!strcmp(port_name, "dsa") && pd->nr_chips > 1) { in dsa_of_probe_links()
651 ret = dsa_of_setup_routing_table(pd, cd, chip_index, in dsa_of_probe_links()
660 static void dsa_of_free_platform_data(struct dsa_platform_data *pd) in dsa_of_free_platform_data() argument
665 for (i = 0; i < pd->nr_chips; i++) { in dsa_of_free_platform_data()
668 kfree(pd->chip[i].port_names[port_index]); in dsa_of_free_platform_data()
671 kfree(pd->chip[i].rtable); in dsa_of_free_platform_data()
674 if (pd->chip[i].host_dev) in dsa_of_free_platform_data()
675 put_device(pd->chip[i].host_dev); in dsa_of_free_platform_data()
677 kfree(pd->chip); in dsa_of_free_platform_data()
686 struct dsa_platform_data *pd; in dsa_of_probe() local
714 pd = kzalloc(sizeof(*pd), GFP_KERNEL); in dsa_of_probe()
715 if (!pd) { in dsa_of_probe()
720 dev->platform_data = pd; in dsa_of_probe()
721 pd->of_netdev = ethernet_dev; in dsa_of_probe()
722 pd->nr_chips = of_get_available_child_count(np); in dsa_of_probe()
723 if (pd->nr_chips > DSA_MAX_SWITCHES) in dsa_of_probe()
724 pd->nr_chips = DSA_MAX_SWITCHES; in dsa_of_probe()
726 pd->chip = kcalloc(pd->nr_chips, sizeof(struct dsa_chip_data), in dsa_of_probe()
728 if (!pd->chip) { in dsa_of_probe()
736 cd = &pd->chip[chip_index]; in dsa_of_probe()
792 ret = dsa_of_probe_links(pd, cd, chip_index, in dsa_of_probe()
807 dsa_of_free_platform_data(pd); in dsa_of_probe()
809 kfree(pd); in dsa_of_probe()
820 struct dsa_platform_data *pd = dev->platform_data; in dsa_of_remove() local
825 dsa_of_free_platform_data(pd); in dsa_of_remove()
826 put_device(&pd->of_netdev->dev); in dsa_of_remove()
827 kfree(pd); in dsa_of_remove()
841 struct device *parent, struct dsa_platform_data *pd) in dsa_setup_dst() argument
846 dst->pd = pd; in dsa_setup_dst()
851 for (i = 0; i < pd->nr_chips; i++) { in dsa_setup_dst()
854 ds = dsa_switch_setup(dst, i, parent, pd->chip[i].host_dev); in dsa_setup_dst()
896 struct dsa_platform_data *pd = pdev->dev.platform_data; in dsa_probe() local
909 pd = pdev->dev.platform_data; in dsa_probe()
912 if (pd == NULL || (pd->netdev == NULL && pd->of_netdev == NULL)) in dsa_probe()
915 if (pd->of_netdev) { in dsa_probe()
916 dev = pd->of_netdev; in dsa_probe()
919 dev = dev_to_net_device(pd->netdev); in dsa_probe()
941 ret = dsa_setup_dst(dst, dev, &pdev->dev, pd); in dsa_probe()
962 for (i = 0; i < dst->pd->nr_chips; i++) { in dsa_remove_dst()
1013 for (i = 0; i < dst->pd->nr_chips; i++) { in dsa_suspend()
1029 for (i = 0; i < dst->pd->nr_chips; i++) { in dsa_resume()