struct inno_hdmi_i2c *i2c;
struct i2c_adapter *ddc;
- unsigned int tmds_rate;
+ unsigned long tmds_rate;
struct hdmi_data_info hdmi_data;
struct drm_display_mode previous_mode;
struct regulator *hdmi_1p8;
struct regulator *hdmi_0p9;
- struct pre_pll_config *pre_cfg;
- struct post_pll_config *post_cfg;
+ const struct pre_pll_config *pre_cfg;
+ const struct post_pll_config *post_cfg;
};
enum {
static void inno_hdmi_power_up(struct inno_hdmi *hdmi)
{
- int val;
+ u8 val;
val = readl_relaxed(hdmi->regs + (0x1b0) * 0x04);
val |= 0x4;
static int inno_hdmi_phy_clk_set_rate(struct inno_hdmi *hdmi,unsigned long rate)
{
+ unsigned long tmdsclock;
hdmi->post_cfg = post_pll_cfg_table;
- unsigned long tmdsclock = hdmi->tmds_rate;
- u32 v;
- int ret;
+ tmdsclock = hdmi->tmds_rate;
dev_info(hdmi->dev, "%s rate %lu tmdsclk %lu\n",__func__, rate, tmdsclock);
hdmi->pre_cfg = inno_hdmi_phy_get_pre_pll_cfg(hdmi, tmdsclock);
static int inno_hdmi_setup(struct inno_hdmi *hdmi,
struct drm_display_mode *mode)
{
+ u8 val;
+ int value;
hdmi->hdmi_data.vic = drm_match_cea_mode(mode);
dev_info(hdmi->dev, "%s %d,hdmi->hdmi_data.vic = %d\n",__func__, __LINE__,hdmi->hdmi_data.vic);
-
-
- int val;
-
val = readl_relaxed(hdmi->regs + (0x1b0) * 0x04);
val |= 0x4;
writel_relaxed(val, hdmi->regs + (0x1b0) * 0x04);
/* Set HDMI Mode */
hdmi_writeb(hdmi, 0x100,0x3);
//hdmi_writeb(hdmi, 0x8,0x00);
- int value;
/* Set detail external video timing polarity and interlace mode */
value = v_EXTERANL_VIDEO(0);
#else
static u64 dma_mask = DMA_40BIT_MASK;
#endif
- printk("vs_drm_bind dma_mask = %08x\n", dma_mask);
- printk("vs_drm_bind LINUX_VERSION_CODE = %08x\n", LINUX_VERSION_CODE);
- printk("vs_drm_bind KERNEL_VERSION(2, 6, 24) = %08x\n", KERNEL_VERSION(2, 6, 24));
/* Remove existing drivers that may own the framebuffer memory. */
ret = drm_aperture_remove_framebuffers(false, &vs_drm_driver);
void encoder_atomic_enable(struct drm_encoder *encoder,
struct drm_atomic_state *state)
{
- struct simple_encoder *simple = to_simple_encoder(encoder);
- printk("encoder_atomic_enable\n");
- #if 0
- struct dss_data *data = simple->dss_regdatas;
- int crtc_id;
-
- if (!simple->dss_regmap)
- return;
-
- crtc_id = drm_of_encoder_active_endpoint_id(
- simple->dev->of_node, encoder);
-
- regmap_update_bits(simple->dss_regmap, 0, data[crtc_id].mask,
- data[crtc_id].value);
-
- regmap_update_bits(simple->dss_regmap, DOM_VOUT_SYSCON_8, U0_LCD_DATA_MAPPING_DPI_DP_SEL_MASK, 0);
- regmap_update_bits(simple->dss_regmap, DOM_VOUT_SYSCON_4, U0_DISPLAY_PANEL_MUX_PANEL_SEL_MASK, 0);
- #endif
+ return;
}
int encoder_atomic_check(struct drm_encoder *encoder,
struct simple_encoder *simple = dev_get_drvdata(dev);
struct drm_encoder *encoder;
struct drm_bridge *bridge;
- struct drm_panel *tmp_panel;
+
int ret;
encoder = &simple->encoder;
/* output port is port1*/
#ifdef CONFIG_STARFIVE_DSI
+ struct drm_panel *tmp_panel;
+
ret = drm_of_find_panel_or_bridge(dev->of_node, 1, 0,&tmp_panel, &bridge);
if (ret){
printk("==no panel, %d\n",ret);
{
struct device *dev = &pdev->dev;
struct simple_encoder *simple;
- int ret;
simple = devm_kzalloc(dev, sizeof(*simple), GFP_KERNEL);
if (!simple)