From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752136AbdFTTZQ (ORCPT ); Tue, 20 Jun 2017 15:25:16 -0400 Received: from mail-he1eur01on0098.outbound.protection.outlook.com ([104.47.0.98]:10175 "EHLO EUR01-HE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751175AbdFTTZI (ORCPT ); Tue, 20 Jun 2017 15:25:08 -0400 Authentication-Results: vger.kernel.org; dkim=none (message not signed) header.d=none;vger.kernel.org; dmarc=none action=none header.from=axentia.se; From: Peter Rosin To: linux-kernel@vger.kernel.org Cc: Peter Rosin , Alex Deucher , =?UTF-8?q?Christian=20K=C3=B6nig?= , David Airlie , Dave Airlie , Gerd Hoffmann , Daniel Vetter , Jani Nikula , Sean Paul , Patrik Jakobsson , Ben Skeggs , Yannick Fertre , Philippe Cornu , Benjamin Gaignard , Vincent Abriou , amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, virtualization@lists.linux-foundation.org, intel-gfx@lists.freedesktop.org, nouveau@lists.freedesktop.org, Boris Brezillon Subject: [PATCH 02/11] drm: amd: remove dead code and pointless local lut storage Date: Tue, 20 Jun 2017 21:25:26 +0200 Message-Id: <1497986735-14418-3-git-send-email-peda@axentia.se> X-Mailer: git-send-email 2.1.4 In-Reply-To: <1497986735-14418-1-git-send-email-peda@axentia.se> References: <1497986735-14418-1-git-send-email-peda@axentia.se> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [81.224.171.159] X-ClientProxiedBy: DB6PR07CA0081.eurprd07.prod.outlook.com (2603:10a6:6:2b::19) To HE1PR0202MB2556.eurprd02.prod.outlook.com (2603:10a6:3:90::9) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 68b3f8ed-7306-4372-08cb-08d4b8120d72 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(201703131423075);SRVR:HE1PR0202MB2556; X-Microsoft-Exchange-Diagnostics: 1;HE1PR0202MB2556;3:OVa/QtqOl13KxcdaVAVMSwWAoLYk9/nfYy1fVs4Ip85ZqCYL30iEt+55ePm1f12D7iCnZywmgYZ3/yImSmseXXTqHKL9ATkQuuDFXbo/ZXazr4rYmHcB1MuZ8uSaK99Rl6v+RrJqJa9135pEYg6EXBO70aaOkw4zlq9GDr1btyWr6VUSZjar41o/lKjgVREE0shVKG0CoW1C6f2nsSBGEG/9wS3JRVq/1I29H6mbzfnO45tlQ9wXjxbQf7u5tWhqhB5odLiR6p/fAM8sSH5NMSoYGjdnGCvFH4dwffodxaMool7if8Rh34DMnerlSwE9;25:Gbk26fQaq/hP7zeRart/8hX5unip7oJgsF6CaBSLOVnw5neBg0nKJQebowSe6cPcG3ZgEXrS6LfaApDikWbhsC3wHyVgiOvGrsAphkLUXuC4qfNcEKQkurehl6e/2dQpcD23IkghxjxkSrYwXfTE1JrOYzq+wL0Nnq/m5ANKuAlHiZdJIevoYTG1fX3rU78kowPSwDaeIRRvkpljaBoEQKNaUGxbXEz7qJEPXP3J5uumjinLCIAzB0qDUw81fWYN8tEx0ks6Ez4x3CEJNzbUXOVXuNtznCctSQ4hBbFi+tmfIJLvRmYs6p6R1XoQITw0L6kg3dkCzOvrRuj/JN/puUtpzwDFfWQVrdCyIBpoBhq2vPm70hsco9SABuAmAvjckIaC/9V+87udbLcSWO18Qb9yNs2DhL+D0j5lXrDf7virA16/Em+qvvyNE6UTpfed/nkWlWrkJ0zKqg7m43qR6KCapMk/kmvlP7Wdjrk23lA= X-MS-TrafficTypeDiagnostic: HE1PR0202MB2556: X-Microsoft-Exchange-Diagnostics: 1;HE1PR0202MB2556;31:jnsZj1zSx8MAXCQAlF8PG0jxKKnSvpMMpMMrbrnkexdPTs9MGF7Jko1sffZR2eGkS5fBaFLl89/5ncFFMTW7yX3A8uvFa6qUw/kT7s4o9bQRCFMZ2Dx1noFcoHm14HO6zciFtD/Bi7UVr4LWjsOmnNqusyqqvJ8K+D+C3uVmKVrZRRIHk/8bkyFazJ6wjVOc2wwaZVIKNlk549gJrqOx/6QbjsR/eMgh4PH0zAovtTU= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(5005006)(8121501046)(3002001)(10201501046)(100000703101)(100105400095)(93006095)(93001095)(6041248)(20161123555025)(20161123564025)(20161123560025)(20161123562025)(2016111802025)(201703131423075)(201703061421075)(20161123558100)(6043046)(6072148)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:HE1PR0202MB2556;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:HE1PR0202MB2556; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;HE1PR0202MB2556;4:4kEUxIC61JazzQ0OvUWhKM7rXc7RMmEMT+Rq+/q8?= =?us-ascii?Q?h4De0ZN2puXBqid/nVHy4i+Ls22aJdgGHTKKcriz2woAgH8K60nSZvnpxdK1?= =?us-ascii?Q?N8HbxRlK+8SvVfP4+5/8D+yHl7X5/Do8aLC3z00AdmaP2ky1aLpk/OhlaBEE?= =?us-ascii?Q?pj6+mYmaK8RNHaHjDC6usgn4t9Bki/KuKOYx6fi7uz5PwNLXnuoyUR6sssOI?= =?us-ascii?Q?jahu0n+j1F255V4OWEMt3N67WBgPh4EnPZtSU/H3/AH9BUvJyKFNC8E3vSf0?= =?us-ascii?Q?W0mfecZLB9VK6ihTlqZ9eL8/5KNeFzEsar++UXj3CRkTI94wc9yNxcWWG3WT?= =?us-ascii?Q?xNzfRW4KffUJwTk2BSkxkWF+9DJyV025rRgixKk0e1ghhoqJLEcQZoAlMuJu?= =?us-ascii?Q?a/VZeqXFjsxfIMdrWagGtSc7eGt5M2oZgExW8K1Ssb2TrV1328A0bn5EcmOl?= =?us-ascii?Q?/bMH/mDIp2ppsqEzouCoRkyj6Vj9dnz69CL1gTqGnG1ryYvWWGNslpIOv6Ku?= =?us-ascii?Q?q5Gjm+uMF4WXSxuKDCH9dd2uIwo9Sf6aCppp6RZb2ig+pGLaGfrheOExFy9y?= =?us-ascii?Q?gmaqfHLROgsuRhgClLUybkZUwWzy7ql78IbLSFWIu84Jb+mT2NpitdkTZBwD?= =?us-ascii?Q?v+RbX7dbdUThpUqIdn48/YMzkcMBLu9CJ6MBNeQTJMqWm4jakiekCvGqQSm+?= =?us-ascii?Q?kn9BfyRAfU5b6XzHKTukGKDc0bDj8xRnhSgAcSaAymaWktQum78dvNxZ+O9I?= =?us-ascii?Q?4ZIl5WNq4WH7Z+6rOqN5poziKBeQWk53ERuCEuL/8e5l9mFfc+QxtfLqqzsT?= =?us-ascii?Q?UCvwOhv382KzngUIQhHIneyDiTb0oU4noj5riu+yX8vgb4l1xLVb7qYaa728?= =?us-ascii?Q?7kPhVhIwH1VZ/FbR8rhk9YVkIqwlXOG5dQXk4CsysJf1ZUZ2z1fpBc31ODy0?= =?us-ascii?Q?Uo9TrV6GIefLPj+t4mWzpXuvtvfQALtXwyFQNqo3aa2Se97wEDKNfaqPHlfG?= =?us-ascii?Q?ZKu5/jymTxLOV8arHtTU2fZ6PlaV/2w4hseEDJtJ7r9KaUuPh0E2HYCb7CfK?= =?us-ascii?Q?ZDi9WU6qPEk8yS9IatVefiBXZHS1a0r+en63Yp4OROMF2UO7VUB89nQSf0sH?= =?us-ascii?Q?Rqx7eAvdZ9c=3D?= X-Forefront-PRVS: 03449D5DD1 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6009001)(39400400002)(39450400003)(6506006)(8666007)(53936002)(2906002)(8676002)(7736002)(38730400002)(110136004)(6916009)(2950100002)(6666003)(5003940100001)(74482002)(305945005)(81166006)(50226002)(42186005)(76176999)(6116002)(50466002)(50986999)(4326008)(7416002)(25786009)(3846002)(2351001)(2361001)(48376002)(575784001)(86362001)(54906002)(189998001)(6512007)(5660300001)(6486002)(33646002)(66066001)(36756003)(47776003)(42262002);DIR:OUT;SFP:1102;SCL:1;SRVR:HE1PR0202MB2556;H:orc.lan;FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;HE1PR0202MB2556;23:vBBrB0vpWmC2sZAirM41bMZQV9TyJlv28FTFtMY?= =?us-ascii?Q?iqTQ4sypQVrkv2UQJPIQcgFoU28JMJa5EG5W1SsYHFpTKkPF7ZDJ6vZPRstL?= =?us-ascii?Q?N9xiwUnQaWxmWrMIRaUxlnQFtcURbU1o5OGl4np3HoTsWX8dwkt5BpZu6755?= =?us-ascii?Q?KoLap7YOZgQF6si90zHlqgh/6OJTJWeSV2t3Z3JbFfV/9vzfc2cqdcGsRyjK?= =?us-ascii?Q?FXneynx7hrr2MsDKurbUFupqcKgGVQSH/mkSs91vaFlyJzYEhFeONYbMQ8ff?= =?us-ascii?Q?cs99FRAnt8VniiBeciEKOfb0PTKHamjqVocYWIbDnXAELaVSJoG2RQYsFR7p?= =?us-ascii?Q?++M6lJ1YvSdacIoPrbbUrBVc1S1uOij9eKQbZHQzI4ji0/AWmgRFFFVTXu6n?= =?us-ascii?Q?b4MpHJ5s7hBmsz6ASRUd5OOLW0zWIoOQSSxs/tvRgNilB5GJUWLsgQAeP4wJ?= =?us-ascii?Q?ROrDhb1opGEWZsJh9NUa2CJ9TTY2U7ybAMVgMh3VTl6XpbHJOR/TzwkZ/XWi?= =?us-ascii?Q?XLHnH2azUIjJF1gGNSNqKflgwW41KgEKlzNGZfCZkd/twcP1JHJ+gFqCyfuO?= =?us-ascii?Q?nBwep9MYQgP7uKIrdI+Dj288VtVzdhNkFV7oVC4rMXLBjseS/bzsJofNRzt+?= =?us-ascii?Q?KJC/xthF2SxstGKg4J6K8F48ElrgOxFZ1BFwHqSUEQnzPUBFb/6U6A0j7vLX?= =?us-ascii?Q?o+kHskeMWwh37qTbXHpmh5JkNsd+cf9B7q13tTrqOwmcC8iijvNX3OaUGM7S?= =?us-ascii?Q?lIk9ZXnSpMH2S0lWklQQcQ0yOhRE4sSvdZAAM19uxuHvbCGaYKc28vV5VZ++?= =?us-ascii?Q?eLsOdHwPjRoPyUuzSSYIi2cLYHIfmXa1gCy75Y90wjNgnuFhA83LyrPT5ZLN?= =?us-ascii?Q?RXNOcbtxZTkkc5Q4TeQRuFPmV/77A6l2MT6pXti4XHcHAGnlBmBpfJnGsV1z?= =?us-ascii?Q?8+tSDxATKMf/VtueMf67p7wcAL0Ht60dMT0OU9zusRyQfEm3Sh7n9TflfvzI?= =?us-ascii?Q?vFebKm5r5XxTvtFUGzd47pdGRK+V11uZCZ5pbyzJWDw2JpgxgbR1O20ENQyx?= =?us-ascii?Q?ZHFl9TRNXbru/4B+vWDdfrUgnpHKO?= X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;HE1PR0202MB2556;6:bC/uDSFsrXrhc/34OPVbiZXVvrkPpTbSVgprowO+?= =?us-ascii?Q?hk0pBMz+gbgnssNf3WToayeou+MJfmrX6hzjF9hgkvUI0MWiqobSQJgHMEOt?= =?us-ascii?Q?djR52cfJI0t2kmRHceK4mzQ5IHtDe/Kfpgmd+qisIAT7bER6ahCTM8595SFK?= =?us-ascii?Q?fSMDIu6SOHfUGYvDWB1Tzk/ADbGV8OhYYVJYs6tuBYt7tJpmGFoq0DnRJGGE?= =?us-ascii?Q?e1mwP05KWLXR45n8XcTy92To1aOBOMVxGBwCKpdUl+zR1/DAcb1vIB9wVkCq?= =?us-ascii?Q?x2mH+LiU4SzoDIsdVGucQ/hWvxtZaj5j+4qi9JzgM6y0cdecZNHo/hetcR52?= =?us-ascii?Q?lFdYsXgkwsorPpH/jKVbj4s7QlrSAGzO9ttxjyl2LWB/EhrvNdf2lrpBdxz6?= =?us-ascii?Q?yLL0KbB0BlrhNH6Lk/NW6cH1aXJGwk4qTS3ewBXUrgh+DM258uQj5F1i5MtO?= =?us-ascii?Q?GYRl57pgRLbEbnwZICKD2/45zXi+ZbrQxta9W2shxhPFXGdRiWSi3oylnBUk?= =?us-ascii?Q?e2+kIzICh1roTPHM9aW1+WlzCStkTsho+6/TuAqGL/wHxKKKTjqu4WLSI5FV?= =?us-ascii?Q?Ie4TXxn5PFoBpsadiwyFx6b1dPZ6p4oPoJ9NuepmWJycl0ROe3KZM8k5g7GQ?= =?us-ascii?Q?C1a985Ef8grt7FwPQQFgqc+aEBnyPd+EpTeun0w6fCRoirWROTCVEaupJ739?= =?us-ascii?Q?iFRo757BA8ZMMe1YYGV1bCYxPk0EwnmeAiNiDLIO9hWG20ZEA6vp9EwD8dYz?= =?us-ascii?Q?qGuZB5Vww+bLF+9iDX338ijR9b/hsayxFgWogignFoS8nD8idSfpqUN934lg?= =?us-ascii?Q?QRc7mxmHngO1dqHBCrnFocrod4foX2jx9PJ7AtLCfT1/4I6a0O0h4c2PrvkR?= =?us-ascii?Q?n6QGRq7LSzWq2uEEkh5hcDTQwBDQAHOwDiBFxvg4FWbBons62UvDzKuhC7Tb?= =?us-ascii?Q?rClKzLSMRj1yvf+5Ov2mCFvjpZ1BRD7dkWmvdrkQdWd5g+HoCk2qoTGe31B9?= =?us-ascii?Q?0eQ=3D?= X-Microsoft-Exchange-Diagnostics: 1;HE1PR0202MB2556;5:WXoqTeFo6ekvl4OqZEvrtVz0w1dWtMjdsQ2sJYR82w286oduGCN89D56HOzvy5afkA5jxAK9HeEF3cpCgM2SM52fWQn2Xg9a666J8XZ8OT5oIpylLjfOknWgUWjCluljffIishIfFu01hX2APNg4EeyS56yPT4GDwwCfKEpieztg7eFwWbSdnaKNZQCwcqQkbiNYlM43jYenk1MNuSo/bu5HkYJF3DV5wKxLujdQLPi2152Y/59dx885fiiHLw2bMz0GFciLpTO10wrjDG2kERnmFTAP7eeTOgQH6ZC5J43XsPql1jFtZSQU1D8x1OyoaMkwe7G+tIVeYIUG8+JdGvFpVFa5Fyjgt9Q82xTsxjlizQdcGFDecihzo8p9ghm4/pCo0kMNtuPI+ypQBQ+FGOd0xj9R8p0HJ13VhHVg+HgLAmlVsEeJayxCTShvVXH+BKXwO53CCiSJI3DXq8oxJaGEaxBlmAHqJgyqFIGB4bxsAlUE+/5cZorEVdPGzMCK;24:bTcZRGwllIbKzCqvBeP/3B5rhq4CjxSSPy3NPLqXg0eE6swljPAHMs3D95qcigUmLXbUoOYRzqgXKaueaSt2b35Ygn5RdONRkVvEzJWhtDs= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;HE1PR0202MB2556;7:z06XQNf9EPy8yVk7K+VQodCMJPcMdg6Ad6QEUcqcMer7Is60mNWY0HWM5EAd4FP7MJepLQl07Jrm9GJZAkZ0VI4Tk7Arl28UKsX0Y2RrwTxuiGdB1W0APqfyqAvdp5JmzB9vI80q7EaQ92LFgc9L3ScAspr4XpoBolliQR8tbYLOpvoJon0co2/cpQh/9P0W0efyWDnOxAOGdI9oxXYHZzwBSqoHtXWGHN3JPf5OX9k5nfjCcKV0bUzBSGbrmZ9wTImVmLXfp6h8zvrYcwXJkSvPBKhrw52/qoyTOJH5AF03stmJPhG/Y+a8QikDT0JFrqtemET7K8s/6sIM0ptSLXevTnN8gdWmy9/nEQbokEJrfkdHPMcChuUC9yoCXx/EQu/7io8dODgc6FE0vWDtNqzohqndd6kI8vr0JDKtQeMDbqgxJbltxrmkwfHxLkuv7r7Q8f+P/Dvu6HrFmo0cY8Zs734Olck7NV+mR9lLjI+8QIq841SEcnlNm+gFKMs9AiTkC7BHFHxPfHmT9sIU8lZdJZWEs6V34/hqsXqQpNo1RF3yDCimqY14rdjJuv+p5f++nCJzE/KE0cBo95WQx6IAQy2Tt2gYlOVzVlyP0kalINzHN67a3CtY6rwMlGvh8UrUNZogpEwjBxTsX+/D35GzVii8ZmxTZuxRtPDLgpaF4rssG6SIOoVdKQQ0C5aFs3PKmfgQWq3HO88aChYUWKAbG2FRS0dUURxECSZ+MGLZqsCJXfTYsnubfT2FnIUzQ03MYzxNrnHaaxX0pidLFEo+G4mTVphZ1rr6Rce7mPA= X-OriginatorOrg: axentia.se X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Jun 2017 19:25:00.8393 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0202MB2556 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The redundant fb helpers .load_lut, .gamma_set and .gamma_get are no longer used. Remove the dead code and hook up the crtc .gamma_set to use the crtc gamma_store directly instead of duplicating that info locally. Signed-off-by: Peter Rosin --- drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c | 24 ------------------------ drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h | 1 - drivers/gpu/drm/amd/amdgpu/dce_v10_0.c | 27 +++++++-------------------- drivers/gpu/drm/amd/amdgpu/dce_v11_0.c | 27 +++++++-------------------- drivers/gpu/drm/amd/amdgpu/dce_v6_0.c | 27 +++++++-------------------- drivers/gpu/drm/amd/amdgpu/dce_v8_0.c | 27 +++++++-------------------- drivers/gpu/drm/amd/amdgpu/dce_virtual.c | 23 ----------------------- 7 files changed, 28 insertions(+), 128 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c index c0d8c6f..7dc3780 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c @@ -312,31 +312,7 @@ static int amdgpu_fbdev_destroy(struct drm_device *dev, struct amdgpu_fbdev *rfb return 0; } -/** Sets the color ramps on behalf of fbcon */ -static void amdgpu_crtc_fb_gamma_set(struct drm_crtc *crtc, u16 red, u16 green, - u16 blue, int regno) -{ - struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc); - - amdgpu_crtc->lut_r[regno] = red >> 6; - amdgpu_crtc->lut_g[regno] = green >> 6; - amdgpu_crtc->lut_b[regno] = blue >> 6; -} - -/** Gets the color ramps on behalf of fbcon */ -static void amdgpu_crtc_fb_gamma_get(struct drm_crtc *crtc, u16 *red, u16 *green, - u16 *blue, int regno) -{ - struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc); - - *red = amdgpu_crtc->lut_r[regno] << 6; - *green = amdgpu_crtc->lut_g[regno] << 6; - *blue = amdgpu_crtc->lut_b[regno] << 6; -} - static const struct drm_fb_helper_funcs amdgpu_fb_helper_funcs = { - .gamma_set = amdgpu_crtc_fb_gamma_set, - .gamma_get = amdgpu_crtc_fb_gamma_get, .fb_probe = amdgpufb_create, }; diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h index 43a9d3a..39f7eda 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h @@ -369,7 +369,6 @@ struct amdgpu_atom_ss { struct amdgpu_crtc { struct drm_crtc base; int crtc_id; - u16 lut_r[256], lut_g[256], lut_b[256]; bool enabled; bool can_tile; uint32_t crtc_offset; diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c index 3c62c45..8e8c028 100644 --- a/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c +++ b/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c @@ -2264,6 +2264,7 @@ static void dce_v10_0_crtc_load_lut(struct drm_crtc *crtc) struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc); struct drm_device *dev = crtc->dev; struct amdgpu_device *adev = dev->dev_private; + u16 *r, *g, *b; int i; u32 tmp; @@ -2301,11 +2302,14 @@ static void dce_v10_0_crtc_load_lut(struct drm_crtc *crtc) WREG32(mmDC_LUT_WRITE_EN_MASK + amdgpu_crtc->crtc_offset, 0x00000007); WREG32(mmDC_LUT_RW_INDEX + amdgpu_crtc->crtc_offset, 0); + r = crtc->gamma_store; + g = r + crtc->gamma_size; + b = g + crtc->gamma_size; for (i = 0; i < 256; i++) { WREG32(mmDC_LUT_30_COLOR + amdgpu_crtc->crtc_offset, - (amdgpu_crtc->lut_r[i] << 20) | - (amdgpu_crtc->lut_g[i] << 10) | - (amdgpu_crtc->lut_b[i] << 0)); + ((*r++ & 0xffc0) << 14) | + ((*g++ & 0xffc0) << 4) | + (*b++ >> 6)); } tmp = RREG32(mmDEGAMMA_CONTROL + amdgpu_crtc->crtc_offset); @@ -2621,15 +2625,6 @@ static int dce_v10_0_crtc_gamma_set(struct drm_crtc *crtc, u16 *red, u16 *green, u16 *blue, uint32_t size, struct drm_modeset_acquire_ctx *ctx) { - struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc); - int i; - - /* userspace palettes are always correct as is */ - for (i = 0; i < size; i++) { - amdgpu_crtc->lut_r[i] = red[i] >> 6; - amdgpu_crtc->lut_g[i] = green[i] >> 6; - amdgpu_crtc->lut_b[i] = blue[i] >> 6; - } dce_v10_0_crtc_load_lut(crtc); return 0; @@ -2841,14 +2836,12 @@ static const struct drm_crtc_helper_funcs dce_v10_0_crtc_helper_funcs = { .mode_set_base_atomic = dce_v10_0_crtc_set_base_atomic, .prepare = dce_v10_0_crtc_prepare, .commit = dce_v10_0_crtc_commit, - .load_lut = dce_v10_0_crtc_load_lut, .disable = dce_v10_0_crtc_disable, }; static int dce_v10_0_crtc_init(struct amdgpu_device *adev, int index) { struct amdgpu_crtc *amdgpu_crtc; - int i; amdgpu_crtc = kzalloc(sizeof(struct amdgpu_crtc) + (AMDGPUFB_CONN_LIMIT * sizeof(struct drm_connector *)), GFP_KERNEL); @@ -2866,12 +2859,6 @@ static int dce_v10_0_crtc_init(struct amdgpu_device *adev, int index) adev->ddev->mode_config.cursor_width = amdgpu_crtc->max_cursor_width; adev->ddev->mode_config.cursor_height = amdgpu_crtc->max_cursor_height; - for (i = 0; i < 256; i++) { - amdgpu_crtc->lut_r[i] = i << 2; - amdgpu_crtc->lut_g[i] = i << 2; - amdgpu_crtc->lut_b[i] = i << 2; - } - switch (amdgpu_crtc->crtc_id) { case 0: default: diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c index c8ed0fa..2280376 100644 --- a/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c +++ b/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c @@ -2248,6 +2248,7 @@ static void dce_v11_0_crtc_load_lut(struct drm_crtc *crtc) struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc); struct drm_device *dev = crtc->dev; struct amdgpu_device *adev = dev->dev_private; + u16 *r, *g, *b; int i; u32 tmp; @@ -2279,11 +2280,14 @@ static void dce_v11_0_crtc_load_lut(struct drm_crtc *crtc) WREG32(mmDC_LUT_WRITE_EN_MASK + amdgpu_crtc->crtc_offset, 0x00000007); WREG32(mmDC_LUT_RW_INDEX + amdgpu_crtc->crtc_offset, 0); + r = crtc->gamma_store; + g = r + crtc->gamma_size; + b = g + crtc->gamma_size; for (i = 0; i < 256; i++) { WREG32(mmDC_LUT_30_COLOR + amdgpu_crtc->crtc_offset, - (amdgpu_crtc->lut_r[i] << 20) | - (amdgpu_crtc->lut_g[i] << 10) | - (amdgpu_crtc->lut_b[i] << 0)); + ((*r++ & 0xffc0) << 14) | + ((*g++ & 0xffc0) << 4) | + (*b++ >> 6)); } tmp = RREG32(mmDEGAMMA_CONTROL + amdgpu_crtc->crtc_offset); @@ -2641,15 +2645,6 @@ static int dce_v11_0_crtc_gamma_set(struct drm_crtc *crtc, u16 *red, u16 *green, u16 *blue, uint32_t size, struct drm_modeset_acquire_ctx *ctx) { - struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc); - int i; - - /* userspace palettes are always correct as is */ - for (i = 0; i < size; i++) { - amdgpu_crtc->lut_r[i] = red[i] >> 6; - amdgpu_crtc->lut_g[i] = green[i] >> 6; - amdgpu_crtc->lut_b[i] = blue[i] >> 6; - } dce_v11_0_crtc_load_lut(crtc); return 0; @@ -2889,14 +2884,12 @@ static const struct drm_crtc_helper_funcs dce_v11_0_crtc_helper_funcs = { .mode_set_base_atomic = dce_v11_0_crtc_set_base_atomic, .prepare = dce_v11_0_crtc_prepare, .commit = dce_v11_0_crtc_commit, - .load_lut = dce_v11_0_crtc_load_lut, .disable = dce_v11_0_crtc_disable, }; static int dce_v11_0_crtc_init(struct amdgpu_device *adev, int index) { struct amdgpu_crtc *amdgpu_crtc; - int i; amdgpu_crtc = kzalloc(sizeof(struct amdgpu_crtc) + (AMDGPUFB_CONN_LIMIT * sizeof(struct drm_connector *)), GFP_KERNEL); @@ -2914,12 +2907,6 @@ static int dce_v11_0_crtc_init(struct amdgpu_device *adev, int index) adev->ddev->mode_config.cursor_width = amdgpu_crtc->max_cursor_width; adev->ddev->mode_config.cursor_height = amdgpu_crtc->max_cursor_height; - for (i = 0; i < 256; i++) { - amdgpu_crtc->lut_r[i] = i << 2; - amdgpu_crtc->lut_g[i] = i << 2; - amdgpu_crtc->lut_b[i] = i << 2; - } - switch (amdgpu_crtc->crtc_id) { case 0: default: diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c index 3f3a254..6d957f0 100644 --- a/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c +++ b/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c @@ -1679,6 +1679,7 @@ static void dce_v6_0_crtc_load_lut(struct drm_crtc *crtc) struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc); struct drm_device *dev = crtc->dev; struct amdgpu_device *adev = dev->dev_private; + u16 *r, *g, *b; int i; DRM_DEBUG_KMS("%d\n", amdgpu_crtc->crtc_id); @@ -1708,11 +1709,14 @@ static void dce_v6_0_crtc_load_lut(struct drm_crtc *crtc) WREG32(mmDC_LUT_WRITE_EN_MASK + amdgpu_crtc->crtc_offset, 0x00000007); WREG32(mmDC_LUT_RW_INDEX + amdgpu_crtc->crtc_offset, 0); + r = crtc->gamma_store; + g = r + crtc->gamma_size; + b = g + crtc->gamma_size; for (i = 0; i < 256; i++) { WREG32(mmDC_LUT_30_COLOR + amdgpu_crtc->crtc_offset, - (amdgpu_crtc->lut_r[i] << 20) | - (amdgpu_crtc->lut_g[i] << 10) | - (amdgpu_crtc->lut_b[i] << 0)); + ((*r++ & 0xffc0) << 14) | + ((*g++ & 0xffc0) << 4) | + (*b++ >> 6)); } WREG32(mmDEGAMMA_CONTROL + amdgpu_crtc->crtc_offset, @@ -1993,15 +1997,6 @@ static int dce_v6_0_crtc_gamma_set(struct drm_crtc *crtc, u16 *red, u16 *green, u16 *blue, uint32_t size, struct drm_modeset_acquire_ctx *ctx) { - struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc); - int i; - - /* userspace palettes are always correct as is */ - for (i = 0; i < size; i++) { - amdgpu_crtc->lut_r[i] = red[i] >> 6; - amdgpu_crtc->lut_g[i] = green[i] >> 6; - amdgpu_crtc->lut_b[i] = blue[i] >> 6; - } dce_v6_0_crtc_load_lut(crtc); return 0; @@ -2209,14 +2204,12 @@ static const struct drm_crtc_helper_funcs dce_v6_0_crtc_helper_funcs = { .mode_set_base_atomic = dce_v6_0_crtc_set_base_atomic, .prepare = dce_v6_0_crtc_prepare, .commit = dce_v6_0_crtc_commit, - .load_lut = dce_v6_0_crtc_load_lut, .disable = dce_v6_0_crtc_disable, }; static int dce_v6_0_crtc_init(struct amdgpu_device *adev, int index) { struct amdgpu_crtc *amdgpu_crtc; - int i; amdgpu_crtc = kzalloc(sizeof(struct amdgpu_crtc) + (AMDGPUFB_CONN_LIMIT * sizeof(struct drm_connector *)), GFP_KERNEL); @@ -2234,12 +2227,6 @@ static int dce_v6_0_crtc_init(struct amdgpu_device *adev, int index) adev->ddev->mode_config.cursor_width = amdgpu_crtc->max_cursor_width; adev->ddev->mode_config.cursor_height = amdgpu_crtc->max_cursor_height; - for (i = 0; i < 256; i++) { - amdgpu_crtc->lut_r[i] = i << 2; - amdgpu_crtc->lut_g[i] = i << 2; - amdgpu_crtc->lut_b[i] = i << 2; - } - amdgpu_crtc->crtc_offset = crtc_offsets[amdgpu_crtc->crtc_id]; amdgpu_crtc->pll_id = ATOM_PPLL_INVALID; diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c index 3e90c19..a946bf7 100644 --- a/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c +++ b/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c @@ -2121,6 +2121,7 @@ static void dce_v8_0_crtc_load_lut(struct drm_crtc *crtc) struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc); struct drm_device *dev = crtc->dev; struct amdgpu_device *adev = dev->dev_private; + u16 *r, *g, *b; int i; DRM_DEBUG_KMS("%d\n", amdgpu_crtc->crtc_id); @@ -2150,11 +2151,14 @@ static void dce_v8_0_crtc_load_lut(struct drm_crtc *crtc) WREG32(mmDC_LUT_WRITE_EN_MASK + amdgpu_crtc->crtc_offset, 0x00000007); WREG32(mmDC_LUT_RW_INDEX + amdgpu_crtc->crtc_offset, 0); + r = crtc->gamma_store; + g = r + crtc->gamma_size; + b = g + crtc->gamma_size; for (i = 0; i < 256; i++) { WREG32(mmDC_LUT_30_COLOR + amdgpu_crtc->crtc_offset, - (amdgpu_crtc->lut_r[i] << 20) | - (amdgpu_crtc->lut_g[i] << 10) | - (amdgpu_crtc->lut_b[i] << 0)); + ((*r++ & 0xffc0) << 14) | + ((*g++ & 0xffc0) << 4) | + (*b++ >> 6)); } WREG32(mmDEGAMMA_CONTROL + amdgpu_crtc->crtc_offset, @@ -2472,15 +2476,6 @@ static int dce_v8_0_crtc_gamma_set(struct drm_crtc *crtc, u16 *red, u16 *green, u16 *blue, uint32_t size, struct drm_modeset_acquire_ctx *ctx) { - struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc); - int i; - - /* userspace palettes are always correct as is */ - for (i = 0; i < size; i++) { - amdgpu_crtc->lut_r[i] = red[i] >> 6; - amdgpu_crtc->lut_g[i] = green[i] >> 6; - amdgpu_crtc->lut_b[i] = blue[i] >> 6; - } dce_v8_0_crtc_load_lut(crtc); return 0; @@ -2699,14 +2694,12 @@ static const struct drm_crtc_helper_funcs dce_v8_0_crtc_helper_funcs = { .mode_set_base_atomic = dce_v8_0_crtc_set_base_atomic, .prepare = dce_v8_0_crtc_prepare, .commit = dce_v8_0_crtc_commit, - .load_lut = dce_v8_0_crtc_load_lut, .disable = dce_v8_0_crtc_disable, }; static int dce_v8_0_crtc_init(struct amdgpu_device *adev, int index) { struct amdgpu_crtc *amdgpu_crtc; - int i; amdgpu_crtc = kzalloc(sizeof(struct amdgpu_crtc) + (AMDGPUFB_CONN_LIMIT * sizeof(struct drm_connector *)), GFP_KERNEL); @@ -2724,12 +2717,6 @@ static int dce_v8_0_crtc_init(struct amdgpu_device *adev, int index) adev->ddev->mode_config.cursor_width = amdgpu_crtc->max_cursor_width; adev->ddev->mode_config.cursor_height = amdgpu_crtc->max_cursor_height; - for (i = 0; i < 256; i++) { - amdgpu_crtc->lut_r[i] = i << 2; - amdgpu_crtc->lut_g[i] = i << 2; - amdgpu_crtc->lut_b[i] = i << 2; - } - amdgpu_crtc->crtc_offset = crtc_offsets[amdgpu_crtc->crtc_id]; amdgpu_crtc->pll_id = ATOM_PPLL_INVALID; diff --git a/drivers/gpu/drm/amd/amdgpu/dce_virtual.c b/drivers/gpu/drm/amd/amdgpu/dce_virtual.c index 90bb083..ecf34bc 100644 --- a/drivers/gpu/drm/amd/amdgpu/dce_virtual.c +++ b/drivers/gpu/drm/amd/amdgpu/dce_virtual.c @@ -168,16 +168,6 @@ static int dce_virtual_crtc_gamma_set(struct drm_crtc *crtc, u16 *red, u16 *green, u16 *blue, uint32_t size, struct drm_modeset_acquire_ctx *ctx) { - struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc); - int i; - - /* userspace palettes are always correct as is */ - for (i = 0; i < size; i++) { - amdgpu_crtc->lut_r[i] = red[i] >> 6; - amdgpu_crtc->lut_g[i] = green[i] >> 6; - amdgpu_crtc->lut_b[i] = blue[i] >> 6; - } - return 0; } @@ -289,11 +279,6 @@ static int dce_virtual_crtc_set_base(struct drm_crtc *crtc, int x, int y, return 0; } -static void dce_virtual_crtc_load_lut(struct drm_crtc *crtc) -{ - return; -} - static int dce_virtual_crtc_set_base_atomic(struct drm_crtc *crtc, struct drm_framebuffer *fb, int x, int y, enum mode_set_atomic state) @@ -309,14 +294,12 @@ static const struct drm_crtc_helper_funcs dce_virtual_crtc_helper_funcs = { .mode_set_base_atomic = dce_virtual_crtc_set_base_atomic, .prepare = dce_virtual_crtc_prepare, .commit = dce_virtual_crtc_commit, - .load_lut = dce_virtual_crtc_load_lut, .disable = dce_virtual_crtc_disable, }; static int dce_virtual_crtc_init(struct amdgpu_device *adev, int index) { struct amdgpu_crtc *amdgpu_crtc; - int i; amdgpu_crtc = kzalloc(sizeof(struct amdgpu_crtc) + (AMDGPUFB_CONN_LIMIT * sizeof(struct drm_connector *)), GFP_KERNEL); @@ -329,12 +312,6 @@ static int dce_virtual_crtc_init(struct amdgpu_device *adev, int index) amdgpu_crtc->crtc_id = index; adev->mode_info.crtcs[index] = amdgpu_crtc; - for (i = 0; i < 256; i++) { - amdgpu_crtc->lut_r[i] = i << 2; - amdgpu_crtc->lut_g[i] = i << 2; - amdgpu_crtc->lut_b[i] = i << 2; - } - amdgpu_crtc->pll_id = ATOM_PPLL_INVALID; amdgpu_crtc->encoder = NULL; amdgpu_crtc->connector = NULL; -- 2.1.4