162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0+ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * Copyright (c) 2016 Allwinnertech Co., Ltd. 462306a36Sopenharmony_ci * Copyright (C) 2017-2018 Bootlin 562306a36Sopenharmony_ci * 662306a36Sopenharmony_ci * Maxime Ripard <maxime.ripard@bootlin.com> 762306a36Sopenharmony_ci */ 862306a36Sopenharmony_ci 962306a36Sopenharmony_ci#ifndef _SUN6I_MIPI_DSI_H_ 1062306a36Sopenharmony_ci#define _SUN6I_MIPI_DSI_H_ 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_ci#include <drm/drm_connector.h> 1362306a36Sopenharmony_ci#include <drm/drm_encoder.h> 1462306a36Sopenharmony_ci#include <drm/drm_mipi_dsi.h> 1562306a36Sopenharmony_ci 1662306a36Sopenharmony_ci#define SUN6I_DSI_TCON_DIV 4 1762306a36Sopenharmony_ci 1862306a36Sopenharmony_cistruct sun6i_dsi_variant { 1962306a36Sopenharmony_ci bool has_mod_clk; 2062306a36Sopenharmony_ci bool set_mod_clk; 2162306a36Sopenharmony_ci}; 2262306a36Sopenharmony_ci 2362306a36Sopenharmony_cistruct sun6i_dsi { 2462306a36Sopenharmony_ci struct drm_connector connector; 2562306a36Sopenharmony_ci struct drm_encoder encoder; 2662306a36Sopenharmony_ci struct mipi_dsi_host host; 2762306a36Sopenharmony_ci 2862306a36Sopenharmony_ci struct clk *bus_clk; 2962306a36Sopenharmony_ci struct clk *mod_clk; 3062306a36Sopenharmony_ci struct regmap *regs; 3162306a36Sopenharmony_ci struct regulator *regulator; 3262306a36Sopenharmony_ci struct reset_control *reset; 3362306a36Sopenharmony_ci struct phy *dphy; 3462306a36Sopenharmony_ci 3562306a36Sopenharmony_ci struct device *dev; 3662306a36Sopenharmony_ci struct mipi_dsi_device *device; 3762306a36Sopenharmony_ci struct drm_device *drm; 3862306a36Sopenharmony_ci struct drm_panel *panel; 3962306a36Sopenharmony_ci 4062306a36Sopenharmony_ci const struct sun6i_dsi_variant *variant; 4162306a36Sopenharmony_ci}; 4262306a36Sopenharmony_ci 4362306a36Sopenharmony_cistatic inline struct sun6i_dsi *host_to_sun6i_dsi(struct mipi_dsi_host *host) 4462306a36Sopenharmony_ci{ 4562306a36Sopenharmony_ci return container_of(host, struct sun6i_dsi, host); 4662306a36Sopenharmony_ci}; 4762306a36Sopenharmony_ci 4862306a36Sopenharmony_cistatic inline struct sun6i_dsi *connector_to_sun6i_dsi(struct drm_connector *connector) 4962306a36Sopenharmony_ci{ 5062306a36Sopenharmony_ci return container_of(connector, struct sun6i_dsi, connector); 5162306a36Sopenharmony_ci}; 5262306a36Sopenharmony_ci 5362306a36Sopenharmony_cistatic inline struct sun6i_dsi *encoder_to_sun6i_dsi(const struct drm_encoder *encoder) 5462306a36Sopenharmony_ci{ 5562306a36Sopenharmony_ci return container_of(encoder, struct sun6i_dsi, encoder); 5662306a36Sopenharmony_ci}; 5762306a36Sopenharmony_ci 5862306a36Sopenharmony_ci#endif /* _SUN6I_MIPI_DSI_H_ */ 59