#include <linux/component.h>
#include <linux/ioport.h>
#include <linux/media-bus-format.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/of_platform.h>
#include <linux/platform_device.h>
#include <linux/regmap.h>
#include <linux/reset.h>
#include <drm/drm_atomic_helper.h>
#include <drm/drm_bridge.h>
#include <drm/drm_connector.h>
#include <drm/drm_crtc.h>
#include <drm/drm_encoder.h>
#include <drm/drm_modes.h>
#include <drm/drm_of.h>
#include <drm/drm_panel.h>
#include <drm/drm_print.h>
#include <drm/drm_probe_helper.h>
#include <drm/drm_vblank.h>
#include <uapi/drm/drm_mode.h>
#include "sun4i_crtc.h"
#include "sun4i_drv.h"
#include "sun4i_lvds.h"
#include "sun4i_rgb.h"
#include "sun4i_tcon.h"
#include "sun6i_mipi_dsi.h"
#include "sun4i_tcon_dclk.h"
#include "sun8i_tcon_top.h"
#include "sunxi_engine.h"
static struct drm_connector *sun4i_tcon_get_connector(const struct drm_encoder *encoder)
{ … }
static int sun4i_tcon_get_pixel_depth(const struct drm_encoder *encoder)
{ … }
static void sun4i_tcon_channel_set_status(struct sun4i_tcon *tcon, int channel,
bool enabled)
{ … }
static void sun4i_tcon_setup_lvds_phy(struct sun4i_tcon *tcon,
const struct drm_encoder *encoder)
{ … }
static void sun6i_tcon_setup_lvds_phy(struct sun4i_tcon *tcon,
const struct drm_encoder *encoder)
{ … }
static void sun4i_tcon_lvds_set_status(struct sun4i_tcon *tcon,
const struct drm_encoder *encoder,
bool enabled)
{ … }
void sun4i_tcon_set_status(struct sun4i_tcon *tcon,
const struct drm_encoder *encoder,
bool enabled)
{ … }
void sun4i_tcon_enable_vblank(struct sun4i_tcon *tcon, bool enable)
{ … }
EXPORT_SYMBOL(…);
static struct sun4i_tcon *sun4i_get_tcon0(struct drm_device *drm)
{ … }
static void sun4i_tcon_set_mux(struct sun4i_tcon *tcon, int channel,
const struct drm_encoder *encoder)
{ … }
static int sun4i_tcon_get_clk_delay(const struct drm_display_mode *mode,
int channel)
{ … }
static void sun4i_tcon0_mode_set_dithering(struct sun4i_tcon *tcon,
const struct drm_connector *connector)
{ … }
static void sun4i_tcon0_mode_set_cpu(struct sun4i_tcon *tcon,
const struct drm_encoder *encoder,
const struct drm_display_mode *mode)
{ … }
static void sun4i_tcon0_mode_set_lvds(struct sun4i_tcon *tcon,
const struct drm_encoder *encoder,
const struct drm_display_mode *mode)
{ … }
static void sun4i_tcon0_mode_set_rgb(struct sun4i_tcon *tcon,
const struct drm_encoder *encoder,
const struct drm_display_mode *mode)
{ … }
static void sun4i_tcon1_mode_set(struct sun4i_tcon *tcon,
const struct drm_display_mode *mode)
{ … }
void sun4i_tcon_mode_set(struct sun4i_tcon *tcon,
const struct drm_encoder *encoder,
const struct drm_display_mode *mode)
{ … }
EXPORT_SYMBOL(…);
static void sun4i_tcon_finish_page_flip(struct drm_device *dev,
struct sun4i_crtc *scrtc)
{ … }
static irqreturn_t sun4i_tcon_handler(int irq, void *private)
{ … }
static int sun4i_tcon_init_clocks(struct device *dev,
struct sun4i_tcon *tcon)
{ … }
static int sun4i_tcon_init_irq(struct device *dev,
struct sun4i_tcon *tcon)
{ … }
static const struct regmap_config sun4i_tcon_regmap_config = …;
static int sun4i_tcon_init_regmap(struct device *dev,
struct sun4i_tcon *tcon)
{ … }
static struct sunxi_engine *
sun4i_tcon_find_engine_traverse(struct sun4i_drv *drv,
struct device_node *node,
u32 port_id)
{ … }
static int sun4i_tcon_of_get_id_from_port(struct device_node *port)
{ … }
static struct sunxi_engine *sun4i_tcon_get_engine_by_id(struct sun4i_drv *drv,
int id)
{ … }
static bool sun4i_tcon_connected_to_tcon_top(struct device_node *node)
{ … }
static int sun4i_tcon_get_index(struct sun4i_drv *drv)
{ … }
static struct sunxi_engine *sun4i_tcon_find_engine(struct sun4i_drv *drv,
struct device_node *node)
{ … }
static int sun4i_tcon_bind(struct device *dev, struct device *master,
void *data)
{ … }
static void sun4i_tcon_unbind(struct device *dev, struct device *master,
void *data)
{ … }
static const struct component_ops sun4i_tcon_ops = …;
static int sun4i_tcon_probe(struct platform_device *pdev)
{ … }
static void sun4i_tcon_remove(struct platform_device *pdev)
{ … }
static int sun4i_a10_tcon_set_mux(struct sun4i_tcon *tcon,
const struct drm_encoder *encoder)
{ … }
static int sun5i_a13_tcon_set_mux(struct sun4i_tcon *tcon,
const struct drm_encoder *encoder)
{ … }
static int sun6i_tcon_set_mux(struct sun4i_tcon *tcon,
const struct drm_encoder *encoder)
{ … }
static int sun8i_r40_tcon_tv_set_mux(struct sun4i_tcon *tcon,
const struct drm_encoder *encoder)
{ … }
static const struct sun4i_tcon_quirks sun4i_a10_quirks = …;
static const struct sun4i_tcon_quirks sun5i_a13_quirks = …;
static const struct sun4i_tcon_quirks sun6i_a31_quirks = …;
static const struct sun4i_tcon_quirks sun6i_a31s_quirks = …;
static const struct sun4i_tcon_quirks sun7i_a20_tcon0_quirks = …;
static const struct sun4i_tcon_quirks sun7i_a20_quirks = …;
static const struct sun4i_tcon_quirks sun8i_a33_quirks = …;
static const struct sun4i_tcon_quirks sun8i_a83t_lcd_quirks = …;
static const struct sun4i_tcon_quirks sun8i_a83t_tv_quirks = …;
static const struct sun4i_tcon_quirks sun8i_r40_tv_quirks = …;
static const struct sun4i_tcon_quirks sun8i_v3s_quirks = …;
static const struct sun4i_tcon_quirks sun9i_a80_tcon_lcd_quirks = …;
static const struct sun4i_tcon_quirks sun9i_a80_tcon_tv_quirks = …;
static const struct sun4i_tcon_quirks sun20i_d1_lcd_quirks = …;
const struct of_device_id sun4i_tcon_of_table[] = …;
MODULE_DEVICE_TABLE(of, sun4i_tcon_of_table);
EXPORT_SYMBOL(…);
static struct platform_driver sun4i_tcon_platform_driver = …;
module_platform_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;