drivers/gpu/drm/openchrome/via_display.c | 2 drivers/gpu/drm/openchrome/via_display.h | 2 drivers/gpu/drm/openchrome/via_drv.h | 2 drivers/gpu/drm/openchrome/via_fp.c | 216 +++---------------------------- 4 files changed, 30 insertions(+), 192 deletions(-)
New commits: commit 29915eb9e23df6ea30ac5133de148f9b442ac307 Author: Kevin Brace <kevinbr...@gmx.com> Date: Fri Nov 3 21:58:01 2017 -0700 drm/openchrome: Version bumped to 3.0.55 Signed-off-by: Kevin Brace <kevinbr...@gmx.com> diff --git a/drivers/gpu/drm/openchrome/via_drv.h b/drivers/gpu/drm/openchrome/via_drv.h index c426c885acd4..ff8928be7147 100644 --- a/drivers/gpu/drm/openchrome/via_drv.h +++ b/drivers/gpu/drm/openchrome/via_drv.h @@ -34,7 +34,7 @@ #define DRIVER_MAJOR 3 #define DRIVER_MINOR 0 -#define DRIVER_PATCHLEVEL 54 +#define DRIVER_PATCHLEVEL 55 #include <linux/module.h> commit 8ead00caf42e930329531a72fd7022b5306786b7 Author: Kevin Brace <kevinbr...@gmx.com> Date: Fri Nov 3 21:50:54 2017 -0700 drm/openchrome: Remove old FP power on / off code The new code works much better than this old code. Signed-off-by: Kevin Brace <kevinbr...@gmx.com> diff --git a/drivers/gpu/drm/openchrome/via_fp.c b/drivers/gpu/drm/openchrome/via_fp.c index ecf0c00fb9b6..ac1f415685cf 100644 --- a/drivers/gpu/drm/openchrome/via_fp.c +++ b/drivers/gpu/drm/openchrome/via_fp.c @@ -28,9 +28,6 @@ #include "via_drv.h" -/* Encoder flags for LVDS */ -#define LVDS_DUAL_CHANNEL 1 - #define TD0 200 #define TD1 25 #define TD2 0 @@ -77,168 +74,6 @@ via_centering_timing(const struct drm_display_mode *mode, } static void -via_enable_internal_lvds(struct drm_encoder *encoder) -{ - struct via_encoder *enc = container_of(encoder, struct via_encoder, base); - struct via_device *dev_priv = encoder->dev->dev_private; - struct drm_device *dev = encoder->dev; - - /* Turn on LCD panel */ - if ((enc->di_port & VIA_DI_PORT_DFPL) || (enc->di_port == VIA_DI_PORT_DVP1)) { - if ((dev->pdev->device == PCI_DEVICE_ID_VIA_VT1122) || - (dev->pdev->device == PCI_DEVICE_ID_VIA_CLE266)) { - /* Software control power sequence ON */ - svga_wcrt_mask(VGABASE, 0x91, 0x00, BIT(7)); - svga_wcrt_mask(VGABASE, 0x91, BIT(0), BIT(0)); - /* Delay td0 msec. */ - mdelay(200); - /* VDD ON */ - svga_wcrt_mask(VGABASE, 0x91, BIT(4), BIT(4)); - /* Delay td1 msec. */ - mdelay(25); - /* DATA ON */ - svga_wcrt_mask(VGABASE, 0x91, BIT(3), BIT(3)); - /* VEE ON (unused on vt3353) */ - svga_wcrt_mask(VGABASE, 0x91, BIT(2), BIT(2)); - /* Delay td3 msec. */ - mdelay(250); - /* Back-Light ON */ - svga_wcrt_mask(VGABASE, 0x91, BIT(1), BIT(1)); - } else { - /* Use first power sequence control: * - * Use hardware control power sequence. */ - svga_wcrt_mask(VGABASE, 0x91, 0x00, BIT(0)); - /* Turn on back light and panel path. */ - svga_wcrt_mask(VGABASE, 0x91, 0x00, BIT(7) | BIT(6)); - /* Turn on hardware power sequence. */ - svga_wcrt_mask(VGABASE, 0x6A, BIT(3), BIT(3)); - } - } - - if (enc->di_port & VIA_DI_PORT_DFPH) { - if ((dev->pdev->device == PCI_DEVICE_ID_VIA_VT1122) || - (dev->pdev->device == PCI_DEVICE_ID_VIA_CLE266)) { - /* Software control power sequence ON */ - svga_wcrt_mask(VGABASE, 0xD4, 0x00, BIT(1)); - svga_wcrt_mask(VGABASE, 0xD3, BIT(0), BIT(0)); - /* Delay td0 msec. */ - mdelay(200); - /* VDD ON */ - svga_wcrt_mask(VGABASE, 0xD3, BIT(4), BIT(4)); - /* Delay td1 msec. */ - mdelay(25); - /* DATA ON */ - svga_wcrt_mask(VGABASE, 0xD3, BIT(3), BIT(3)); - /* VEE ON (unused on vt3353) */ - svga_wcrt_mask(VGABASE, 0xD3, BIT(2), BIT(2)); - /* Delay td3 msec. */ - mdelay(250); - /* Back-Light ON */ - svga_wcrt_mask(VGABASE, 0xD3, BIT(1), BIT(1)); - } else { - /* Turn on panel path. */ - svga_wcrt_mask(VGABASE, 0x91, 0x00, BIT(5)); - /* Turn on back light. */ - svga_wcrt_mask(VGABASE, 0x91, 0x00, BIT(6)); - /* Use hardware control power sequence. */ - svga_wcrt_mask(VGABASE, 0xD3, 0x00, BIT(0)); - /* Turn on back light and panel path. */ - svga_wcrt_mask(VGABASE, 0xD3, 0x00, BIT(7) | BIT(6)); - /* Turn on hardware power sequence. */ - svga_wcrt_mask(VGABASE, 0xD4, BIT(1), BIT(1)); - } - } - - /* Power on LVDS channel. */ - if (enc->flags & LVDS_DUAL_CHANNEL) { - /* For high resolution LCD (internal), - * power on both LVDS0 and LVDS1 */ - svga_wcrt_mask(VGABASE, 0xD2, 0x00, BIT(7) | BIT(6)); - } else { - if (enc->di_port & VIA_DI_PORT_DFPL) - svga_wcrt_mask(VGABASE, 0xD2, 0x00, BIT(7)); - else if (enc->di_port & VIA_DI_PORT_DFPH) - svga_wcrt_mask(VGABASE, 0xD2, 0x00, BIT(6)); - } -} - -static void -via_disable_internal_lvds(struct drm_encoder *encoder) -{ - struct via_encoder *enc = container_of(encoder, struct via_encoder, base); - struct via_device *dev_priv = encoder->dev->dev_private; - struct drm_device *dev = encoder->dev; - - /* Turn off LCD panel */ - if ((enc->di_port & VIA_DI_PORT_DFPL) || (enc->di_port == VIA_DI_PORT_DVP1)) { - /* Set LCD software power sequence off */ - if ((dev->pdev->device == PCI_DEVICE_ID_VIA_VT1122) || - (dev->pdev->device == PCI_DEVICE_ID_VIA_CLE266)) { - /* Back-Light OFF */ - svga_wcrt_mask(VGABASE, 0x91, 0x00, BIT(1)); - /* Delay td3 msec. */ - mdelay(250); - /* VEE OFF (unused on vt3353) */ - svga_wcrt_mask(VGABASE, 0x91, 0x00, BIT(2)); - /* DATA OFF */ - svga_wcrt_mask(VGABASE, 0x91, 0x00, BIT(3)); - /* Delay td1 msec. */ - mdelay(25); - /* VDD OFF */ - svga_wcrt_mask(VGABASE, 0x91, 0x00, BIT(4)); - } else { - /* Use first power sequence control: * - * Turn off power sequence. */ - svga_wcrt_mask(VGABASE, 0x6A, 0x00, BIT(3)); - - /* Turn off back light and panel path. */ - svga_wcrt_mask(VGABASE, 0x91, 0xC0, BIT(7) | BIT(6)); - } - } - - if (enc->di_port & VIA_DI_PORT_DFPH) { - /* Set LCD software power sequence off */ - if ((dev->pdev->device == PCI_DEVICE_ID_VIA_VT1122) || - (dev->pdev->device == PCI_DEVICE_ID_VIA_CLE266)) { - /* Back-Light OFF */ - svga_wcrt_mask(VGABASE, 0xD3, 0x00, BIT(1)); - /* Delay td3 msec. */ - mdelay(250); - /* VEE OFF */ - svga_wcrt_mask(VGABASE, 0xD3, 0x00, BIT(2)); - /* DATA OFF */ - svga_wcrt_mask(VGABASE, 0xD3, 0x00, BIT(3)); - /* Delay td1 msec. */ - mdelay(25); - /* VDD OFF */ - svga_wcrt_mask(VGABASE, 0xD3, 0x00, BIT(4)); - } else { - /* Use second power sequence control: * - * Turn off power sequence. */ - svga_wcrt_mask(VGABASE, 0xD4, 0x00, BIT(1)); - /* Turn off back light and panel path. */ - svga_wcrt_mask(VGABASE, 0xD3, 0xC0, BIT(7) | BIT(6)); - /* Turn off back light. */ - svga_wcrt_mask(VGABASE, 0x91, BIT(6), BIT(6)); - /* Turn off panel path. */ - svga_wcrt_mask(VGABASE, 0x91, BIT(5), BIT(5)); - } - } - - /* Power off LVDS channel. */ - if (enc->flags & LVDS_DUAL_CHANNEL) { - /* For high resolution LCD (internal) we - * power off both LVDS0 and LVDS1 */ - svga_wcrt_mask(VGABASE, 0xD2, 0xC0, BIT(7) | BIT(6)); - } else { - if (enc->di_port & VIA_DI_PORT_DFPL) - svga_wcrt_mask(VGABASE, 0xD2, BIT(7), BIT(7)); - else if (enc->di_port & VIA_DI_PORT_DFPH) - svga_wcrt_mask(VGABASE, 0xD2, BIT(6), BIT(6)); - } -} - -static void via_fp_castle_rock_soft_power_seq(struct via_device *dev_priv, bool power_state) { @@ -1453,7 +1288,6 @@ void via_fp_probe(struct drm_device *dev) void via_fp_init(struct drm_device *dev) { struct via_device *dev_priv = dev->dev_private; - bool dual_channel = false; struct via_connector *con; struct via_encoder *enc; @@ -1506,9 +1340,6 @@ void via_fp_init(struct drm_device *dev) enc->di_port = VIA_DI_PORT_NONE; } - if (dual_channel) - enc->flags |= LVDS_DUAL_CHANNEL; - /* Put it all together */ drm_mode_connector_attach_encoder(&con->base, &enc->base); exit: commit f6731874fea9b23ec81fc1b28c3846901abd3bf7 Author: Kevin Brace <kevinbr...@gmx.com> Date: Fri Nov 3 21:49:30 2017 -0700 drm/openchrome: Replace via_lcd* labels with via_fp* Signed-off-by: Kevin Brace <kevinbr...@gmx.com> diff --git a/drivers/gpu/drm/openchrome/via_fp.c b/drivers/gpu/drm/openchrome/via_fp.c index f9f553013cd3..ecf0c00fb9b6 100644 --- a/drivers/gpu/drm/openchrome/via_fp.c +++ b/drivers/gpu/drm/openchrome/via_fp.c @@ -1014,7 +1014,7 @@ exit: return ret; } -struct drm_connector_funcs via_lcd_connector_funcs = { +struct drm_connector_funcs via_fp_connector_funcs = { .dpms = drm_helper_connector_dpms, .detect = via_fp_detect, .fill_modes = drm_helper_probe_single_connector_modes, @@ -1023,7 +1023,7 @@ struct drm_connector_funcs via_lcd_connector_funcs = { }; static int -via_lcd_get_modes(struct drm_connector *connector) +via_fp_get_modes(struct drm_connector *connector) { struct via_connector *con = container_of(connector, struct via_connector, base); struct drm_device *dev = connector->dev; @@ -1183,7 +1183,7 @@ via_lcd_get_modes(struct drm_connector *connector) } static int -via_lcd_mode_valid(struct drm_connector *connector, +via_fp_mode_valid(struct drm_connector *connector, struct drm_display_mode *mode) { struct drm_property *prop = connector->dev->mode_config.scaling_mode_property; @@ -1231,9 +1231,9 @@ via_lcd_mode_valid(struct drm_connector *connector, return MODE_OK; } -struct drm_connector_helper_funcs via_lcd_connector_helper_funcs = { - .get_modes = via_lcd_get_modes, - .mode_valid = via_lcd_mode_valid, +struct drm_connector_helper_funcs via_fp_connector_helper_funcs = { + .get_modes = via_fp_get_modes, + .mode_valid = via_fp_mode_valid, .best_encoder = via_best_encoder, }; @@ -1470,9 +1470,9 @@ void via_fp_init(struct drm_device *dev) con = &enc->cons[0]; INIT_LIST_HEAD(&con->props); - drm_connector_init(dev, &con->base, &via_lcd_connector_funcs, + drm_connector_init(dev, &con->base, &via_fp_connector_funcs, DRM_MODE_CONNECTOR_LVDS); - drm_connector_helper_add(&con->base, &via_lcd_connector_helper_funcs); + drm_connector_helper_add(&con->base, &via_fp_connector_helper_funcs); drm_connector_register(&con->base); if (dev_priv->int_fp1_presence) { commit 49817ccdbadb771dbbbad59b4099188f7448c315 Author: Kevin Brace <kevinbr...@gmx.com> Date: Fri Nov 3 21:48:42 2017 -0700 drm/openchrome: Replace via_lcd_detect with via_fp_detect Signed-off-by: Kevin Brace <kevinbr...@gmx.com> diff --git a/drivers/gpu/drm/openchrome/via_fp.c b/drivers/gpu/drm/openchrome/via_fp.c index ca2ba71d8372..f9f553013cd3 100644 --- a/drivers/gpu/drm/openchrome/via_fp.c +++ b/drivers/gpu/drm/openchrome/via_fp.c @@ -918,20 +918,27 @@ const struct drm_encoder_funcs via_lvds_enc_funcs = { .destroy = via_encoder_cleanup, }; -/* detect this connector connect status */ +/* Detect FP presence. */ static enum drm_connector_status -via_lcd_detect(struct drm_connector *connector, bool force) +via_fp_detect(struct drm_connector *connector, bool force) { struct via_connector *con = container_of(connector, struct via_connector, base); + struct via_device *dev_priv = connector->dev->dev_private; enum drm_connector_status ret = connector_status_disconnected; struct i2c_adapter *i2c_bus; struct edid *edid = NULL; + u8 mask; DRM_DEBUG_KMS("Entered %s.\n", __func__); drm_mode_connector_update_edid_property(connector, edid); + if (machine_is_olpc()) { + ret = connector_status_connected; + goto exit; + } + if (con->i2c_bus & VIA_I2C_BUS2) { i2c_bus = via_find_ddc_bus(0x31); } else if (con->i2c_bus & VIA_I2C_BUS3) { @@ -949,19 +956,19 @@ via_lcd_detect(struct drm_connector *connector, bool force) ret = connector_status_connected; } } else { - struct via_device *dev_priv = connector->dev->dev_private; - u8 mask = BIT(1); - - if (connector->dev->pdev->device == PCI_DEVICE_ID_VIA_CLE266) + if (connector->dev->pdev->device == + PCI_DEVICE_ID_VIA_CLE266) { mask = BIT(3); + } else { + mask = BIT(1); + } - if (vga_rcrt(VGABASE, 0x3B) & mask) - ret = connector_status_connected; - - if (machine_is_olpc()) + if (vga_rcrt(VGABASE, 0x3B) & mask) { ret = connector_status_connected; + } } +exit: DRM_DEBUG_KMS("Exiting %s.\n", __func__); return ret; } @@ -1009,7 +1016,7 @@ exit: struct drm_connector_funcs via_lcd_connector_funcs = { .dpms = drm_helper_connector_dpms, - .detect = via_lcd_detect, + .detect = via_fp_detect, .fill_modes = drm_helper_probe_single_connector_modes, .set_property = via_fp_set_property, .destroy = via_connector_destroy, commit fce635e8b9e04e5e0cf3542bae8320d3ab356b7f Author: Kevin Brace <kevinbr...@gmx.com> Date: Fri Nov 3 21:46:32 2017 -0700 drm/openchrome: Rename via_lvds_init to via_fp_init Signed-off-by: Kevin Brace <kevinbr...@gmx.com> diff --git a/drivers/gpu/drm/openchrome/via_display.c b/drivers/gpu/drm/openchrome/via_display.c index 95eb322ab641..6a0b76b3cf1e 100644 --- a/drivers/gpu/drm/openchrome/via_display.c +++ b/drivers/gpu/drm/openchrome/via_display.c @@ -506,7 +506,7 @@ via_modeset_init(struct drm_device *dev) via_analog_init(dev); - via_lvds_init(dev); + via_fp_init(dev); switch (dev->pdev->device) { case PCI_DEVICE_ID_VIA_VX900_VGA: diff --git a/drivers/gpu/drm/openchrome/via_display.h b/drivers/gpu/drm/openchrome/via_display.h index fde38d90416f..7281c22797d6 100644 --- a/drivers/gpu/drm/openchrome/via_display.h +++ b/drivers/gpu/drm/openchrome/via_display.h @@ -186,7 +186,7 @@ extern void via_fp_probe(struct drm_device *dev); extern void via_hdmi_init(struct drm_device *dev, u32 di_port); extern void via_analog_init(struct drm_device *dev); -extern void via_lvds_init(struct drm_device *dev); extern void via_tmds_init(struct drm_device *dev); +extern void via_fp_init(struct drm_device *dev); #endif diff --git a/drivers/gpu/drm/openchrome/via_fp.c b/drivers/gpu/drm/openchrome/via_fp.c index 3f4c11ba1315..ca2ba71d8372 100644 --- a/drivers/gpu/drm/openchrome/via_fp.c +++ b/drivers/gpu/drm/openchrome/via_fp.c @@ -1443,7 +1443,7 @@ void via_fp_probe(struct drm_device *dev) DRM_DEBUG_KMS("Exiting %s.\n", __func__); } -void via_lvds_init(struct drm_device *dev) +void via_fp_init(struct drm_device *dev) { struct via_device *dev_priv = dev->dev_private; bool dual_channel = false; _______________________________________________ Openchrome-devel mailing list Openchrome-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/openchrome-devel