Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752293AbbHaFUd (ORCPT ); Mon, 31 Aug 2015 01:20:33 -0400 Received: from mail-bl2on0054.outbound.protection.outlook.com ([65.55.169.54]:5664 "EHLO na01-bl2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1750908AbbHaFUc (ORCPT ); Mon, 31 Aug 2015 01:20:32 -0400 Authentication-Results: spf=softfail (sender IP is 192.88.158.2) smtp.mailfrom=gmail.com; gmail.com; dkim=none (message not signed) header.d=none;gmail.com; dmarc=fail action=none header.from=gmail.com; From: Jianwei Wang To: CC: , , , Jianwei Wang Subject: [PATCH] drm/fsl-dcu: Cleanup vblank interrupt mask and status setting code Date: Mon, 31 Aug 2015 13:14:33 +0800 Message-ID: <1440998073-31851-1-git-send-email-jianwei.wang.chn@gmail.com> X-Mailer: git-send-email 2.1.0.27.g96db324 X-EOPAttributedMessage: 0 X-Matching-Connectors: 130854720299028441;(91ab9b29-cfa4-454e-5278-08d120cd25b8);() X-Microsoft-Exchange-Diagnostics: 1;BL2FFO11FD056;1:4AaHuzsRMyDy+ge2X6lsI74QkoHG+JQYQ8G5JlpviPDEeESQ7Ca668XijYZ3RtIkMpkIu3R25RhbN0ALFgwIXz1i0MgBNwi3yXMRQvPt31c5oaA2rqHK0Q5x87lc2xVxHxyUjg00vtS0lTK+ltQ3tPy5Qk42eVGLStt0qLDOzb8VAAZALg4mRcQyTiMs8Rj6ssMxcITLTZkLeL595qpqDKnojXrH+t4e508gUENHaBj67cmJEF21wdRRwz1A2vSRTXKBjXqcSA6vMNERDa0ImSgTBg8nquDe21ZDAfKLA891YGfMf+zc5iBCUW9SqCo/ffyBxc/7sXobelP8Jp/CBnSUjRS8c8EYjxAIavMcrSsR8k2rRZLhSRhTrDW/H/suAslKgZnvveJQtdCDZMp/66MHqgKkrl/lM/+4uo2XwME= X-Forefront-Antispam-Report: CIP:192.88.158.2;CTRY:US;IPV:NLI;EFV:NLI;SFV:NSPM;SFS:(10009020)(6009001)(2980300002)(3050300001)(189002)(199003)(55446002)(189998001)(50986999)(87572001)(47776003)(77096005)(68736005)(6260500002)(19580395003)(6806004)(19580405001)(83322999)(50466002)(36756003)(48376002)(81156007)(97736004)(76482005)(4001540100001)(82202001)(104016003)(33646002)(87936001)(50226001)(105596002)(2351001)(5003940100001)(106466001)(5007970100001)(86362001)(229853001)(62966003)(77156002)(110136002)(73972006)(81442002)(5001860100001)(5001960100002)(69596002)(61266001)(64706001)(5001830100001)(92566002)(73392002)(46102003);DIR:OUT;SFP:1101;SCL:1;SRVR:DM2PR03MB336;H:az84smr01.freescale.net;FPR:;SPF:SoftFail;PTR:InfoDomainNonexistent;MX:1;A:1;LANG:en; MIME-Version: 1.0 Content-Type: text/plain X-Microsoft-Exchange-Diagnostics: 1;DM2PR03MB336;2:re75dC/cgNE+HhsY/VfMro9rnS7RUwb4/xmqPGB7sbQT5tYONqEOe6qlOUp6R4mhFjL+sV7UZYUoU86iEZtGgqkWCbbhcULMM5dTaJJWrYUwOKXNhNQ+338tjIFtaZkMCP9qjmtGK20zSgCapHv4IRA428E6N+5TSNgrrnafu9M=;3:n1MsaxdzQrRwYZSgAEy/xsnO+mbypJIe4Ze8HqYsD8X0lTSgcszd5wJgnbn7nGTZYoszA+7WFNeGDwrDBNl+B1Ns49EXE8WiiKFaZTlTGdd8YoGVIzQ38QQihuK/wA6vHlbhO86XSoGcBX3/HAKy/FSxwe9nWxy0aJjKBQlf+7VGJIeYlNdKF/4LaFSUGgbqe5NXXnvDuaYbX2eT/eu+sg22cFTBbmGMdqIunbtwLpk=;25:dAtiyixiQSJxk9/bJvD4W9QRe3yg5bfsth+wnivOrFUIBXPh2K8xaWLRRXkWKE5nc9Fsu8FRjKTyGFi5TT09z+1K+IuaXgYkpaWrgLHssaFEWB2NsTn/GlqsiOLT2AfTofXi4wyESOVY6i1od6uOGEahIRLNArb2Uat5uKgtTR55UJWcdZg06xK3sy2GmaHztVeyZ6nRxjMG5CIT8WqQT1Xu52tnUwMuNHwiBy/sSJ75Y04ybH7YPzFqSp/UHGqTmhoVBw8aB3hOYTTrHQBKTA== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:DM2PR03MB336; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(5005006)(8121501046)(3002001);SRVR:DM2PR03MB336;BCL:0;PCL:0;RULEID:(400006);SRVR:DM2PR03MB336; X-Microsoft-Exchange-Diagnostics: 1;DM2PR03MB336;4:2H9aL/tcD1SPGsZIUQfCGz6Y6OLmzMC65yJvlya1kmlnmCW9EtgaswbBrcTT+jZSkcCciM+bKyL4dx/ANGL7UIlP/BmhcvKiCsThHik6Xmkmug+7Iom6rqlXzM02nifToMspUyVLvRuzGpcN8npTZJvkydfgAYC5r2bc03S9uyG31US5xmlEzWQ4gfHdetH1fvG8fs0nbNV44B5WfhV0KsfvHU2muVvdmz5Y1JxAM7vb/b2D9Aft5U7cQVvnKt65dYzdceAoa/9WmAph34EG9jGTWwYbCZEWNvLZgp3YHTNleBgBjwtOHAyYkVcAKxpChLzJIneQ6QQHkMv8FnET8Q== X-Forefront-PRVS: 0685122203 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;DM2PR03MB336;23:hA51QJutTWDSiKb/Cg5pUxOfOu813Nv+xeD+uT6jO6?= =?us-ascii?Q?8iovHld77KpN9y7I3+C01meuBSBhXmkQQIdfTFq1p0EEy+ozaNmkxFf78QvG?= =?us-ascii?Q?NV9bG9KO7qYDL1EW1LK7huTI2gg4D9aeCRu6w0XSVPIsRsnqBVIiDhVF6QJG?= =?us-ascii?Q?dP9WqCOT3VjJPTTBmOotjI3fB1Xt2qah7KUW2A6VmHpxcDEDD4voqWK03uXC?= =?us-ascii?Q?Vv6HpYWwpglkbZ3tdY2gJO/ifh3PoXVE+hi2P2SzSi1lM5DR/WwAGdWcOq5m?= =?us-ascii?Q?/7b7dVtl1bTbrAF7NdPpyaednSF58LtJioJ06Bpf8Qt55gy8j/nhAgI0/MgM?= =?us-ascii?Q?W49fGL8msXt3EDDigZKF0N3+IYw7kXufBk7ROiJM1wTkE9eveNiwePIZeW8z?= =?us-ascii?Q?d/xAG/ykcR0v+SK+P/xGSMtxEXQZ9BXD5K7pbPPodb37WbDQLxBtlRoKpaSL?= =?us-ascii?Q?1ffGcCCwLciympNAL19QZAu9CwjUD6z5aocZe6084oF3+FjDlTNWfWWJRjz+?= =?us-ascii?Q?07aQkV3r3twgFmyi9UoFVMWyvE1yzssDtQ80n1RhdcAwTjn14kRi1XVlwLIV?= =?us-ascii?Q?ehhv5u5lSx9l4kGxrIQDzB3kGrCpPxwFteRrxTM4nVORsdA7XDQ+AJ+olXNB?= =?us-ascii?Q?yrfELaI8qbgu89RN8p7O2LwtI1+I+JPeRwUaAMNupXck7CG20yiUG6H7fvvU?= =?us-ascii?Q?WOjCc0HkeVrXtmvtV/FdusNqtCTeHUNdqL2ZauKmkz8mXRZZz/aL2k0dbE05?= =?us-ascii?Q?RgyAqgO1ZL4LJdGVG8/JNY+vYj996Q4KbwwWGYF0pph060U/a/xUFjSojYpw?= =?us-ascii?Q?pZQW0tmGbJM1RNCgoPPq7B71uY/JB9C+xv55oFaKsCYodv6cYi+tsPiR1PK7?= =?us-ascii?Q?a3Oq7XJ89iOdj6DyFr4Xx5KNilQ0os7IIKGHoAeexMPDdCHChgJdP9oKVwup?= =?us-ascii?Q?gqvYq7sg0uij0pacBON89UPYV0XOJZMfnYxLCR6CDgrrnRQCUF4Bs+HTDZK3?= =?us-ascii?Q?7HzC2dH5gbusHhxZrQ50JzwIwHWOtyfDMUWChxBmS3lEs9lMG/4wuJqEyG60?= =?us-ascii?Q?lbTeGo2NFPmFQICwiD7oZNa3z1U6/cjAk3aDiN3r7IMR1lOsTxEx0nKrQwzB?= =?us-ascii?Q?iGNT4CmMBMjARZxnz4vOxZKoG7Oh2O0+L25B8VZl71jQAK/zGsSz4CJo5dvT?= =?us-ascii?Q?PGCGXfj77/yRzJHHn9Ht3gmgq90za0SO1NXw8nxTchkRno2Yqh/5ezYcTfjZ?= =?us-ascii?Q?YuEUSN7U/HapA1RYdmDLLVT97xgJWAbtUpQ8y4OfjIGRyki1YuVH3DtF1C6p?= =?us-ascii?Q?yRz1A6lKXh/OB36Gs5i8w=3D?= X-Microsoft-Exchange-Diagnostics: 1;DM2PR03MB336;5:JJmkelz2qDMLmsvDTscIbmuMzdqgQhLLieZ/XM6can4Z8rv2XOKss6HCUKKXWX594MNcwBJWrL0iWgKc75yzYkjI6VGlKMPK9ND3mFkuGr6qxtrAv9WgDqnq18h/RBaIA1IDBfNVrHBhnpmfDzVCvOxEN4jgoI3H8exPYxCIKa0=;24:UnqVpbmxQymNdv2vr77ip0D8ro9OGM9oKJ7e7quAEvj3hPnyTzCX5x57aAhzQQYlTsmKP3xNJwkkgcCyO9dLui5+7x2VKtdstNkF09eiKuU= SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Aug 2015 05:20:29.6688 (UTC) X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e;Ip=[192.88.158.2];Helo=[az84smr01.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM2PR03MB336 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3119 Lines: 80 Switch update interrupt mask bit with regmap_update_bits, and clear interrupt status by writing 1 to relevant bit before setting mask in fsl_dcu_drm_irq_init function. Signed-off-by: Jianwei Wang --- drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c | 26 +++++++------------------- 1 file changed, 7 insertions(+), 19 deletions(-) diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c index 9a8e2da..bf36971 100644 --- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c +++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c @@ -38,21 +38,17 @@ static const struct regmap_config fsl_dcu_regmap_config = { static int fsl_dcu_drm_irq_init(struct drm_device *dev) { struct fsl_dcu_drm_device *fsl_dev = dev->dev_private; - unsigned int value; int ret; ret = drm_irq_install(dev, fsl_dev->irq); if (ret < 0) dev_err(dev->dev, "failed to install IRQ handler\n"); - ret = regmap_write(fsl_dev->regmap, DCU_INT_STATUS, 0); + ret = regmap_write(fsl_dev->regmap, DCU_INT_STATUS, 0xffffffff); if (ret) dev_err(dev->dev, "set DCU_INT_STATUS failed\n"); - ret = regmap_read(fsl_dev->regmap, DCU_INT_MASK, &value); - if (ret) - dev_err(dev->dev, "read DCU_INT_MASK failed\n"); - value &= DCU_INT_MASK_VBLANK; - ret = regmap_write(fsl_dev->regmap, DCU_INT_MASK, value); + ret = regmap_update_bits(fsl_dev->regmap, DCU_INT_MASK, + DCU_INT_MASK_VBLANK, ~DCU_INT_MASK_VBLANK); if (ret) dev_err(dev->dev, "set DCU_INT_MASK failed\n"); ret = regmap_write(fsl_dev->regmap, DCU_UPDATE_MODE, @@ -143,14 +139,10 @@ static irqreturn_t fsl_dcu_drm_irq(int irq, void *arg) static int fsl_dcu_drm_enable_vblank(struct drm_device *dev, int crtc) { struct fsl_dcu_drm_device *fsl_dev = dev->dev_private; - unsigned int value; int ret; - ret = regmap_read(fsl_dev->regmap, DCU_INT_MASK, &value); - if (ret) - dev_err(dev->dev, "read DCU_INT_MASK failed\n"); - value &= ~DCU_INT_MASK_VBLANK; - ret = regmap_write(fsl_dev->regmap, DCU_INT_MASK, value); + ret = regmap_update_bits(fsl_dev->regmap, DCU_INT_MASK, + DCU_INT_MASK_VBLANK, ~DCU_INT_MASK_VBLANK); if (ret) dev_err(dev->dev, "set DCU_INT_MASK failed\n"); return 0; @@ -159,14 +151,10 @@ static int fsl_dcu_drm_enable_vblank(struct drm_device *dev, int crtc) static void fsl_dcu_drm_disable_vblank(struct drm_device *dev, int crtc) { struct fsl_dcu_drm_device *fsl_dev = dev->dev_private; - unsigned int value; int ret; - ret = regmap_read(fsl_dev->regmap, DCU_INT_MASK, &value); - if (ret) - dev_err(dev->dev, "read DCU_INT_MASK failed\n"); - value |= DCU_INT_MASK_VBLANK; - ret = regmap_write(fsl_dev->regmap, DCU_INT_MASK, value); + ret = regmap_update_bits(fsl_dev->regmap, DCU_INT_MASK, + DCU_INT_MASK_VBLANK, DCU_INT_MASK_VBLANK); if (ret) dev_err(dev->dev, "set DCU_INT_MASK failed\n"); } -- 2.1.0.27.g96db324 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/