From patchwork Thu Jun 30 03:44:43 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Arve_Hj=C3=B8nnev=C3=A5g?= X-Patchwork-Id: 931562 X-Patchwork-Delegate: tomi.valkeinen@nokia.com Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by demeter1.kernel.org (8.14.4/8.14.4) with ESMTP id p5U3jHNd012665 for ; Thu, 30 Jun 2011 03:45:18 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752435Ab1F3DpI (ORCPT ); Wed, 29 Jun 2011 23:45:08 -0400 Received: from mail-iy0-f174.google.com ([209.85.210.174]:61081 "EHLO mail-iy0-f174.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751304Ab1F3DpH (ORCPT ); Wed, 29 Jun 2011 23:45:07 -0400 Received: by iyb12 with SMTP id 12so1578173iyb.19 for ; Wed, 29 Jun 2011 20:45:07 -0700 (PDT) Received: by 10.42.177.8 with SMTP id bg8mr1476118icb.144.1309405505758; Wed, 29 Jun 2011 20:45:05 -0700 (PDT) Received: from localhost.localdomain (arve.mtv.corp.google.com [172.18.103.168]) by mx.google.com with ESMTPS id ly7sm1711016icb.12.2011.06.29.20.45.04 (version=TLSv1/SSLv3 cipher=OTHER); Wed, 29 Jun 2011 20:45:04 -0700 (PDT) From: =?UTF-8?q?Arve=20Hj=C3=B8nnev=C3=A5g?= To: Tomi Valkeinen Cc: linux-omap@vger.kernel.org, Dima Zavin , =?UTF-8?q?Arve=20Hj=C3=B8nnev=C3=A5g?= Subject: [PATCH] OMAP: DSS2: DSI: Support non-dcs long read Date: Wed, 29 Jun 2011 20:44:43 -0700 Message-Id: <1309405483-6876-1-git-send-email-arve@android.com> X-Mailer: git-send-email 1.7.3.1 MIME-Version: 1.0 Sender: linux-omap-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-omap@vger.kernel.org X-Greylist: IP, sender and recipient auto-whitelisted, not delayed by milter-greylist-4.2.6 (demeter1.kernel.org [140.211.167.41]); Thu, 30 Jun 2011 03:45:18 +0000 (UTC) Change-Id: I18168c887e1384c07dc033a1ffc57abdacb26073 Signed-off-by: Arve Hjønnevåg --- drivers/video/omap2/dss/dsi.c | 7 ++++++- 1 files changed, 6 insertions(+), 1 deletions(-) diff --git a/drivers/video/omap2/dss/dsi.c b/drivers/video/omap2/dss/dsi.c index c16b933..6975645 100644 --- a/drivers/video/omap2/dss/dsi.c +++ b/drivers/video/omap2/dss/dsi.c @@ -206,6 +206,7 @@ struct dsi_reg { u16 idx; }; #define DSI_DT_DCS_LONG_WRITE 0x39 #define DSI_DT_RX_ACK_WITH_ERR 0x02 +#define DSI_DT_RX_LONG_READ 0x1a #define DSI_DT_RX_DCS_LONG_READ 0x1c #define DSI_DT_RX_SHORT_READ_1 0x21 #define DSI_DT_RX_SHORT_READ_2 0x22 @@ -2943,6 +2944,10 @@ static u16 dsi_vc_flush_receive_data(struct platform_device *dsidev, } else if (dt == DSI_DT_RX_SHORT_READ_2) { DSSERR("\tDCS short response, 2 byte: %#x\n", FLD_GET(val, 23, 8)); + } else if (dt == DSI_DT_RX_LONG_READ) { + DSSERR("\tlong response, len %d\n", + FLD_GET(val, 23, 8)); + dsi_vc_flush_long_data(dsidev, channel); } else if (dt == DSI_DT_RX_DCS_LONG_READ) { DSSERR("\tDCS long response, len %d\n", FLD_GET(val, 23, 8)); @@ -3287,7 +3292,7 @@ int dsi_vc_dcs_read(struct omap_dss_device *dssdev, int channel, u8 dcs_cmd, buf[1] = (data >> 8) & 0xff; return 2; - } else if (dt == DSI_DT_RX_DCS_LONG_READ) { + } else if (dt == DSI_DT_RX_DCS_LONG_READ || dt == DSI_DT_RX_LONG_READ) { int w; int len = FLD_GET(val, 23, 8); if (dsi->debug_read)