blob: 21c1f110935430c3b833ab98ff0e76dcb69bc28c [file] [log] [blame]
/* SPDX-License-Identifier: GPL-2.0-only */
/* Copyright (c) 2018, 2020, The Linux Foundation. All rights reserved. */
#include "mdss_panel.h"
#include "mdss_dsi_clk.h"
#include "mdss_dsi.h"
#define NONE_PANEL "none"
#define DSIPHY_CMN_CTRL_0 0x001c
#define DSIPHY_CMN_CTRL_1 0x0020
#define DSIPHY_CMN_LDO_CNTRL 0x004c
#define DSIPHY_CMN_GLBL_TEST_CTRL 0x0018
#define DSIPHY_PLL_CLKBUFLR_EN 0x041c
struct mdss_rgb_data {
int ndx;
bool res_init;
struct platform_device *pdev;
struct spi_device *spi;
unsigned char *ctrl_base;
struct dss_io_data ctrl_io;
struct dss_io_data phy_io;
int reg_size;
u32 *dbg_bus;
int dbg_bus_size;
u32 hw_config; /* RGB setup configuration i.e. single*/
u32 pll_src_config; /* PLL source selection for RGB clocks */
u32 hw_rev; /* DSI h/w revision */
struct mdss_panel_data panel_data;
bool refresh_clk_rate;
struct clk *pixel_clk_rgb;
struct clk *byte_clk_rgb;
u32 pclk_rate;
u32 byte_clk_rate;
/* DSI core regulators */
struct dss_module_power panel_power_data;
struct dss_module_power power_data[DSI_MAX_PM];
/* DSI bus clocks */
struct clk *mdp_core_clk;
struct clk *mnoc_clk;
struct clk *ahb_clk;
struct clk *axi_clk;
struct clk *mmss_misc_ahb_clk;
struct clk *ext_pixel0_clk;
struct clk *ext_byte0_clk;
//struct clk *ext_pixel1_clk;
struct clk *byte_clk_rcg;
struct clk *pixel_clk_rcg;
struct clk *byte0_parent;
struct clk *pixel0_parent;
void *clk_mngr;
void *clk_handle;
void *mdp_clk_handle;
/* Data bus(AXI) scale settings */
struct msm_bus_scale_pdata *bus_scale_table;
u32 bus_handle;
u32 bus_refcount;
int bklt_ctrl; /* backlight ctrl */
int pwm_enabled;
struct pwm_device *pwm_bl;
struct dsi_pinctrl_res pin_res;
u8 ctrl_state;
bool core_power;
/* GPIOs */
int rst_gpio;
int (*on)(struct mdss_panel_data *pdata);
int (*off)(struct mdss_panel_data *pdata);
};
enum mdss_rgb_hw_config {
SINGLE_RGB,
};
int mdss_rgb_panel_init(struct device_node *node,
struct mdss_rgb_data *rgb_data);
int mdss_rgb_clk_refresh(struct mdss_rgb_data *rgb_data);
int mdss_rgb_clk_div_config(struct mdss_rgb_data *rgb_data,
struct mdss_panel_info *panel_info, int frame_rate);
int rgb_panel_device_register(struct platform_device *ctrl_pdev,
struct device_node *pan_node, struct mdss_rgb_data *rgb_data);
int mdss_rgb_write_command(struct mdss_rgb_data *rgb_data, u8 cmd);
int mdss_rgb_write_data(struct mdss_rgb_data *rgb_data, u8 data);
int mdss_rgb_read_command(struct mdss_rgb_data *rgb_data,
u8 cmd, u8 *data, u8 data_len);