Lines Matching refs:hub

156 int tegra_display_hub_prepare(struct tegra_display_hub *hub)
166 for (i = 0; i < hub->soc->num_wgrps; i++) {
167 struct tegra_windowgroup *wgrp = &hub->wgrps[i];
177 void tegra_display_hub_cleanup(struct tegra_display_hub *hub)
185 for (i = 0; i < hub->soc->num_wgrps; i++) {
186 struct tegra_windowgroup *wgrp = &hub->wgrps[i];
763 struct tegra_display_hub *hub = tegra->hub;
779 plane->wgrp = &hub->wgrps[wgrp];
834 tegra_display_hub_get_state(struct tegra_display_hub *hub,
839 priv = drm_atomic_get_private_obj_state(state, &hub->base);
855 if (!tegra->hub)
858 hub_state = tegra_display_hub_get_state(tegra->hub, state);
863 * The display hub display clock needs to be fed by the display clock
916 struct tegra_display_hub *hub = tegra->hub;
918 struct device *dev = hub->client.dev;
921 hub_state = to_tegra_display_hub_state(hub->base.state);
929 err = clk_set_parent(hub->clk_disp, hub_state->clk);
932 hub->clk_disp, hub_state->clk, err);
941 struct tegra_display_hub *hub = to_tegra_display_hub(client);
950 drm_atomic_private_obj_init(drm, &hub->base, &state->base,
953 tegra->hub = hub;
963 drm_atomic_private_obj_fini(&tegra->hub->base);
964 tegra->hub = NULL;
971 struct tegra_display_hub *hub = to_tegra_display_hub(client);
973 unsigned int i = hub->num_heads;
976 err = reset_control_assert(hub->rst);
981 clk_disable_unprepare(hub->clk_heads[i]);
983 clk_disable_unprepare(hub->clk_hub);
984 clk_disable_unprepare(hub->clk_dsc);
985 clk_disable_unprepare(hub->clk_disp);
994 struct tegra_display_hub *hub = to_tegra_display_hub(client);
1005 err = clk_prepare_enable(hub->clk_disp);
1009 err = clk_prepare_enable(hub->clk_dsc);
1013 err = clk_prepare_enable(hub->clk_hub);
1017 for (i = 0; i < hub->num_heads; i++) {
1018 err = clk_prepare_enable(hub->clk_heads[i]);
1023 err = reset_control_deassert(hub->rst);
1031 clk_disable_unprepare(hub->clk_heads[i]);
1033 clk_disable_unprepare(hub->clk_hub);
1035 clk_disable_unprepare(hub->clk_dsc);
1037 clk_disable_unprepare(hub->clk_disp);
1054 struct tegra_display_hub *hub;
1065 hub = devm_kzalloc(&pdev->dev, sizeof(*hub), GFP_KERNEL);
1066 if (!hub)
1069 hub->soc = of_device_get_match_data(&pdev->dev);
1071 hub->clk_disp = devm_clk_get(&pdev->dev, "disp");
1072 if (IS_ERR(hub->clk_disp)) {
1073 err = PTR_ERR(hub->clk_disp);
1077 if (hub->soc->supports_dsc) {
1078 hub->clk_dsc = devm_clk_get(&pdev->dev, "dsc");
1079 if (IS_ERR(hub->clk_dsc)) {
1080 err = PTR_ERR(hub->clk_dsc);
1085 hub->clk_hub = devm_clk_get(&pdev->dev, "hub");
1086 if (IS_ERR(hub->clk_hub)) {
1087 err = PTR_ERR(hub->clk_hub);
1091 hub->rst = devm_reset_control_get(&pdev->dev, "misc");
1092 if (IS_ERR(hub->rst)) {
1093 err = PTR_ERR(hub->rst);
1097 hub->wgrps = devm_kcalloc(&pdev->dev, hub->soc->num_wgrps,
1098 sizeof(*hub->wgrps), GFP_KERNEL);
1099 if (!hub->wgrps)
1102 for (i = 0; i < hub->soc->num_wgrps; i++) {
1103 struct tegra_windowgroup *wgrp = &hub->wgrps[i];
1120 hub->num_heads = of_get_child_count(pdev->dev.of_node);
1122 hub->clk_heads = devm_kcalloc(&pdev->dev, hub->num_heads, sizeof(clk),
1124 if (!hub->clk_heads)
1127 for (i = 0; i < hub->num_heads; i++) {
1143 hub->clk_heads[i] = clk;
1149 err = reset_control_assert(hub->rst);
1153 platform_set_drvdata(pdev, hub);
1156 INIT_LIST_HEAD(&hub->client.list);
1157 hub->client.ops = &tegra_display_hub_ops;
1158 hub->client.dev = &pdev->dev;
1160 err = host1x_client_register(&hub->client);
1172 host1x_client_unregister(&hub->client);
1179 struct tegra_display_hub *hub = platform_get_drvdata(pdev);
1182 host1x_client_unregister(&hub->client);
1184 for (i = 0; i < hub->soc->num_wgrps; i++) {
1185 struct tegra_windowgroup *wgrp = &hub->wgrps[i];
1218 .name = "tegra-display-hub",