16a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul/* 26a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul * Copyright (C) 2015 The Android Open Source Project 36a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul * 46a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul * Licensed under the Apache License, Version 2.0 (the "License"); 56a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul * you may not use this file except in compliance with the License. 66a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul * You may obtain a copy of the License at 76a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul * 86a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul * http://www.apache.org/licenses/LICENSE-2.0 96a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul * 106a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul * Unless required by applicable law or agreed to in writing, software 116a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul * distributed under the License is distributed on an "AS IS" BASIS, 126a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 136a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul * See the License for the specific language governing permissions and 146a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul * limitations under the License. 156a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul */ 166a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul 176a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul#ifndef ANDROID_DRM_CONNECTOR_H_ 186a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul#define ANDROID_DRM_CONNECTOR_H_ 196a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul 206a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul#include "drmencoder.h" 216a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul#include "drmmode.h" 226a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul#include "drmproperty.h" 236a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul 246a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul#include <stdint.h> 256a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul#include <vector> 266a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul#include <xf86drmMode.h> 276a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul 286a55e9fb8e16c63c2e42bde31814f963205f722dSean Paulnamespace android { 296a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul 306a55e9fb8e16c63c2e42bde31814f963205f722dSean Paulclass DrmResources; 316a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul 326a55e9fb8e16c63c2e42bde31814f963205f722dSean Paulclass DrmConnector { 336a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul public: 346a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul DrmConnector(DrmResources *drm, drmModeConnectorPtr c, 356a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul DrmEncoder *current_encoder, 366a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul std::vector<DrmEncoder *> &possible_encoders); 37ff30b52303cdbeb9cbfb054e2a12da1135ea49c9Zach Reizner DrmConnector(const DrmProperty &) = delete; 38ff30b52303cdbeb9cbfb054e2a12da1135ea49c9Zach Reizner DrmConnector &operator=(const DrmProperty &) = delete; 396a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul 406a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul int Init(); 416a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul 426a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul uint32_t id() const; 436a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul 446a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul int display() const; 456a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul void set_display(int display); 466a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul 476a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul bool built_in() const; 486a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul 496a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul int UpdateModes(); 506a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul 51ff30b52303cdbeb9cbfb054e2a12da1135ea49c9Zach Reizner const std::vector<DrmMode> &modes() const { 52ff30b52303cdbeb9cbfb054e2a12da1135ea49c9Zach Reizner return modes_; 53ff30b52303cdbeb9cbfb054e2a12da1135ea49c9Zach Reizner } 546a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul const DrmMode &active_mode() const; 55877be974a2d4fc518700be8ffe803a50cb716eadSean Paul void set_active_mode(const DrmMode &mode); 566a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul 576a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul const DrmProperty &dpms_property() const; 58877be974a2d4fc518700be8ffe803a50cb716eadSean Paul const DrmProperty &crtc_id_property() const; 596a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul 60ff30b52303cdbeb9cbfb054e2a12da1135ea49c9Zach Reizner const std::vector<DrmEncoder *> &possible_encoders() const { 61ff30b52303cdbeb9cbfb054e2a12da1135ea49c9Zach Reizner return possible_encoders_; 62ff30b52303cdbeb9cbfb054e2a12da1135ea49c9Zach Reizner } 636a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul DrmEncoder *encoder() const; 646a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul void set_encoder(DrmEncoder *encoder); 656a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul 66092164970256626a4c66164405633a006721e327Sean Paul drmModeConnection state() const; 67092164970256626a4c66164405633a006721e327Sean Paul 686a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul uint32_t mm_width() const; 696a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul uint32_t mm_height() const; 706a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul 716a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul private: 726a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul DrmResources *drm_; 736a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul 746a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul uint32_t id_; 756a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul DrmEncoder *encoder_; 766a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul int display_; 776a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul 786a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul uint32_t type_; 796a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul drmModeConnection state_; 806a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul 816a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul uint32_t mm_width_; 826a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul uint32_t mm_height_; 836a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul 846a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul DrmMode active_mode_; 856a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul std::vector<DrmMode> modes_; 866a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul 876a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul DrmProperty dpms_property_; 88877be974a2d4fc518700be8ffe803a50cb716eadSean Paul DrmProperty crtc_id_property_; 896a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul 906a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul std::vector<DrmEncoder *> possible_encoders_; 916a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul}; 926a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul} 936a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul 946a55e9fb8e16c63c2e42bde31814f963205f722dSean Paul#endif // ANDROID_DRM_PLANE_H_ 95