summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWengang Wu <wgw@motorola.com>2014-10-01 14:53:27 -0500
committerWengang Wu <wgw@motorola.com>2014-10-01 14:53:27 -0500
commit36cbe6d968668e7227349aecff2a969dea8f56f1 (patch)
treecde207ae25bb311aabb2ccf68ee381bef37bb573
parentd389342e6faafb97c8a2ce317e340fbd1908706a (diff)
downloadolio-linux-3.10-36cbe6d968668e7227349aecff2a969dea8f56f1.tar.xz
olio-linux-3.10-36cbe6d968668e7227349aecff2a969dea8f56f1.zip
IKXCLOCK-4006 Display: support panel dimensions
Change-Id: Id1e594cdceeef43bf820de24a103c49ca6dd4a17
-rw-r--r--[-rwxr-xr-x]arch/arm/boot/dts/omap3-minnow.dtsi2
-rw-r--r--drivers/video/omap2/displays/panel-minnow.c20
2 files changed, 22 insertions, 0 deletions
diff --git a/arch/arm/boot/dts/omap3-minnow.dtsi b/arch/arm/boot/dts/omap3-minnow.dtsi
index 76ebb19a666..fbd0571890d 100755..100644
--- a/arch/arm/boot/dts/omap3-minnow.dtsi
+++ b/arch/arm/boot/dts/omap3-minnow.dtsi
@@ -95,6 +95,8 @@
//pixel_format = <1>;
//hs_clk = <90000000 150000000>; /* min max*/
//lp_clk = <7000000 9000000>; /* min max*/
+ /* panel dimensions (width and height) in um */
+ panel_size_um = <39744 36020>;
pinctrl-names = "viopulldown", "viooutput";
pinctrl-0 = <&display_vddio_pulldown>;
pinctrl-1 = <&display_vddio_output>;
diff --git a/drivers/video/omap2/displays/panel-minnow.c b/drivers/video/omap2/displays/panel-minnow.c
index 7f7efce3898..254a5e1e008 100644
--- a/drivers/video/omap2/displays/panel-minnow.c
+++ b/drivers/video/omap2/displays/panel-minnow.c
@@ -302,6 +302,8 @@ struct minnow_panel_data {
int id_panel;
int x_offset;
int y_offset;
+ int xres_um;
+ int yres_um;
int reset_ms;
int release_ms;
@@ -1420,6 +1422,14 @@ static void minnow_panel_get_resolution(struct omap_dss_device *dssdev,
*yres = dssdev->panel.timings.y_res;
}
+static void minnow_panel_get_dimensions(struct omap_dss_device *dssdev,
+ u32 *xres, u32 *yres)
+{
+ struct minnow_panel_data *mpd = dev_get_drvdata(&dssdev->dev);
+ *xres = mpd->xres_um;
+ *yres = mpd->yres_um;
+}
+
static ssize_t minnow_panel_errors_show(struct device *dev,
struct device_attribute *attr, char *buf)
{
@@ -2456,6 +2466,15 @@ static int minnow_panel_dt_init(struct minnow_panel_data *mpd)
mpd->dsi_config.lp_clk_max);
}
+ mpd->xres_um = 0;
+ mpd->yres_um = 0;
+ if (!of_property_read_u32_array(dt_node, "panel_size_um", range, 2)) {
+ mpd->xres_um = range[0];
+ mpd->yres_um = range[1];
+ DTINFO("physical panel width = %d um, height = %d um\n",
+ mpd->xres_um, mpd->yres_um);
+ }
+
return 0;
}
@@ -3773,6 +3792,7 @@ static struct omap_dss_driver minnow_panel_driver = {
.sync = minnow_panel_sync,
.get_resolution = minnow_panel_get_resolution,
+ .get_dimensions = minnow_panel_get_dimensions,
.get_recommended_bpp = omapdss_default_get_recommended_bpp,
.enable_te = minnow_panel_enable_te,