Lines Matching refs:hub
139 int tegra_display_hub_prepare(struct tegra_display_hub *hub)
149 for (i = 0; i < hub->soc->num_wgrps; i++) {
150 struct tegra_windowgroup *wgrp = &hub->wgrps[i];
160 void tegra_display_hub_cleanup(struct tegra_display_hub *hub)
168 for (i = 0; i < hub->soc->num_wgrps; i++) {
169 struct tegra_windowgroup *wgrp = &hub->wgrps[i];
558 struct tegra_display_hub *hub = tegra->hub;
575 plane->wgrp = &hub->wgrps[wgrp];
627 tegra_display_hub_get_state(struct tegra_display_hub *hub,
632 priv = drm_atomic_get_private_obj_state(state, &hub->base);
648 if (!tegra->hub)
651 hub_state = tegra_display_hub_get_state(tegra->hub, state);
656 * The display hub display clock needs to be fed by the display clock
709 struct tegra_display_hub *hub = tegra->hub;
711 struct device *dev = hub->client.dev;
714 hub_state = to_tegra_display_hub_state(hub->base.state);
722 err = clk_set_parent(hub->clk_disp, hub_state->clk);
725 hub->clk_disp, hub_state->clk, err);
734 struct tegra_display_hub *hub = to_tegra_display_hub(client);
743 drm_atomic_private_obj_init(drm, &hub->base, &state->base,
746 tegra->hub = hub;
756 drm_atomic_private_obj_fini(&tegra->hub->base);
757 tegra->hub = NULL;
764 struct tegra_display_hub *hub = to_tegra_display_hub(client);
766 unsigned int i = hub->num_heads;
769 err = reset_control_assert(hub->rst);
774 clk_disable_unprepare(hub->clk_heads[i]);
776 clk_disable_unprepare(hub->clk_hub);
777 clk_disable_unprepare(hub->clk_dsc);
778 clk_disable_unprepare(hub->clk_disp);
787 struct tegra_display_hub *hub = to_tegra_display_hub(client);
798 err = clk_prepare_enable(hub->clk_disp);
802 err = clk_prepare_enable(hub->clk_dsc);
806 err = clk_prepare_enable(hub->clk_hub);
810 for (i = 0; i < hub->num_heads; i++) {
811 err = clk_prepare_enable(hub->clk_heads[i]);
816 err = reset_control_deassert(hub->rst);
824 clk_disable_unprepare(hub->clk_heads[i]);
826 clk_disable_unprepare(hub->clk_hub);
828 clk_disable_unprepare(hub->clk_dsc);
830 clk_disable_unprepare(hub->clk_disp);
846 struct tegra_display_hub *hub;
851 hub = devm_kzalloc(&pdev->dev, sizeof(*hub), GFP_KERNEL);
852 if (!hub)
855 hub->soc = of_device_get_match_data(&pdev->dev);
857 hub->clk_disp = devm_clk_get(&pdev->dev, "disp");
858 if (IS_ERR(hub->clk_disp)) {
859 err = PTR_ERR(hub->clk_disp);
863 if (hub->soc->supports_dsc) {
864 hub->clk_dsc = devm_clk_get(&pdev->dev, "dsc");
865 if (IS_ERR(hub->clk_dsc)) {
866 err = PTR_ERR(hub->clk_dsc);
871 hub->clk_hub = devm_clk_get(&pdev->dev, "hub");
872 if (IS_ERR(hub->clk_hub)) {
873 err = PTR_ERR(hub->clk_hub);
877 hub->rst = devm_reset_control_get(&pdev->dev, "misc");
878 if (IS_ERR(hub->rst)) {
879 err = PTR_ERR(hub->rst);
883 hub->wgrps = devm_kcalloc(&pdev->dev, hub->soc->num_wgrps,
884 sizeof(*hub->wgrps), GFP_KERNEL);
885 if (!hub->wgrps)
888 for (i = 0; i < hub->soc->num_wgrps; i++) {
889 struct tegra_windowgroup *wgrp = &hub->wgrps[i];
906 hub->num_heads = of_get_child_count(pdev->dev.of_node);
908 hub->clk_heads = devm_kcalloc(&pdev->dev, hub->num_heads, sizeof(clk),
910 if (!hub->clk_heads)
913 for (i = 0; i < hub->num_heads; i++) {
929 hub->clk_heads[i] = clk;
935 err = reset_control_assert(hub->rst);
939 platform_set_drvdata(pdev, hub);
942 INIT_LIST_HEAD(&hub->client.list);
943 hub->client.ops = &tegra_display_hub_ops;
944 hub->client.dev = &pdev->dev;
946 err = host1x_client_register(&hub->client);
958 host1x_client_unregister(&hub->client);
965 struct tegra_display_hub *hub = platform_get_drvdata(pdev);
969 err = host1x_client_unregister(&hub->client);
975 for (i = 0; i < hub->soc->num_wgrps; i++) {
976 struct tegra_windowgroup *wgrp = &hub->wgrps[i];
1011 .name = "tegra-display-hub",