return -EINVAL;
}
+static ssize_t display_store_debug(struct device *dev,
+ struct device_attribute *attr,
+ const char *buf, size_t count)
+{
+ int cmd;
+ struct rk_display_device *dsp = dev_get_drvdata(dev);
+
+ if(dsp->ops && dsp->ops->setdebug) {
+ sscanf(buf, "%d", &cmd);
+ dsp->ops->setdebug(dsp, cmd);
+ return count;
+ }
+ return -EINVAL;
+}
+
static struct device_attribute display_attrs[] = {
__ATTR(name, S_IRUGO, display_show_name, NULL),
__ATTR(type, S_IRUGO, display_show_type, NULL),
__ATTR(modes, S_IRUGO, display_show_modes, NULL),
__ATTR(mode, 0664, display_show_mode, display_store_mode),
__ATTR(scale, 0664, display_show_scale, display_store_scale),
+ __ATTR(debug, 0664, NULL, display_store_debug),
__ATTR_NULL
};
rk3036_hdmi_set_pwr_mode(hdmi_drv, LOWER_PWR);
}
+static int rk3036_hdmi_debug(struct hdmi *hdmi_drv,int cmd)
+{
+ switch(cmd) {
+ case 0:
+ printk("%s[%d]:cmd=%d\n",__func__,__LINE__,cmd);
+ break;
+ case 1:
+ printk("%s[%d]:cmd=%d\n",__func__,__LINE__,cmd);
+ break;
+ default:
+ printk("%s[%d]:cmd=%d\n",__func__,__LINE__,cmd);
+ break;
+ }
+ return 0;
+}
+
+static struct rk_hdmi_drv_ops hdmi_drv_ops = {
+ .hdmi_debug = rk3036_hdmi_debug,
+};
int rk3036_hdmi_initial(struct hdmi *hdmi_drv)
{
hdmi_drv->detect_hotplug = rk3036_hdmi_detect_hotplug;
hdmi_drv->read_edid = rk3036_hdmi_read_edid;
hdmi_drv->insert = rk3036_hdmi_insert;
+ hdmi_drv->ops = &hdmi_drv_ops;
rk3036_hdmi_reset_pclk();
rk3036_hdmi_reset(hdmi_drv);
u8 soc_type;
u32 reversed;
};
+struct hdmi;
+
+struct rk_hdmi_drv_ops {
+ int (*hdmi_debug) (struct hdmi *hdmi, int cmd);
+};
+
struct hdmi {
struct device *dev;
void (*cec_irq)(void);
void (*cec_set_device_pa)(int);
int (*cec_enumerate)(void);
+ struct rk_hdmi_drv_ops *ops;
};
#define hdmi_err(dev, format, arg...) \
else
return -1;
}
+static int hdmi_set_debug(struct rk_display_device *device, int cmd)
+{
+ struct hdmi *hdmi = device->priv_data;
+
+ if (!hdmi)
+ return -1;
+ if (hdmi->ops && hdmi->ops->hdmi_debug)
+ hdmi->ops->hdmi_debug(hdmi,cmd);
+
+ return 0;
+}
+
struct rk_display_ops hdmi_display_ops = {
.setenable = hdmi_set_enable,
.getmode = hdmi_get_mode,
.setscale = hdmi_set_scale,
.getscale = hdmi_get_scale,
+ .setdebug = hdmi_set_debug,
};
#if 1
int (*getmode)(struct rk_display_device *, struct fb_videomode *mode);
int (*setscale)(struct rk_display_device *, int, int);
int (*getscale)(struct rk_display_device *, int);
+ int (*setdebug)(struct rk_display_device *, int);
};
struct rk_display_device {