Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752820AbdGFMV3 (ORCPT ); Thu, 6 Jul 2017 08:21:29 -0400 Received: from mail-db5eur01on0124.outbound.protection.outlook.com ([104.47.2.124]:58096 "EHLO EUR01-DB5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752686AbdGFMUU (ORCPT ); Thu, 6 Jul 2017 08:20:20 -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 , Ben Skeggs , David Airlie , dri-devel@lists.freedesktop.org, nouveau@lists.freedesktop.org, Daniel Vetter , Jani Nikula , Sean Paul , Boris Brezillon Subject: [PATCH v4 11/14] drm: nouveau: remove dead code and pointless local lut storage Date: Thu, 6 Jul 2017 14:20:45 +0200 Message-Id: <1499343648-29695-12-git-send-email-peda@axentia.se> X-Mailer: git-send-email 2.1.4 In-Reply-To: <1499343648-29695-1-git-send-email-peda@axentia.se> References: <1499343648-29695-1-git-send-email-peda@axentia.se> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [81.224.171.159] X-ClientProxiedBy: VI1PR0801CA0084.eurprd08.prod.outlook.com (2603:10a6:800:7d::28) To AM5PR0202MB2548.eurprd02.prod.outlook.com (2603:10a6:203:6d::9) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: fe24830b-ad07-4789-b74d-08d4c4695157 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(300000503095)(300135400095)(201703131423075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095);SRVR:AM5PR0202MB2548; X-Microsoft-Exchange-Diagnostics: 1;AM5PR0202MB2548;3:zwkmR4SVXWeLkQyS6VMUW1Vf0c+3Dhz01zYlQNSYfikSvXVMugoRe9NxkSqFwrgi+ocMYYaIYcNxEsQDf6OPYROypo1nI4gUe/F433ItYsgwcMQ8cTAsG8Q9tEHftj2iWnw0CarfhQdmLt8KeoCpHjOIWM2PL33FibSG6ZM08dZ/P71LLsgmhkt3Y3/7qprvPCQlqj0heyskj3zDUN1LW2/J1ZC/5C9nAxoiuUGuzaEDWiBRjF5caj5XRsgpiHtaDYSYyAzs8lbcC/VUptpPD2PrgzXLEBMvfbFgEEqZJL+Vv9U5sZ5cpsFiCZFoXYUhx/DDi+LZvdhHjo+ZtjMesMCPykXdEc4XU2+HF/NU6ZseAxfzO/uE5NCoW8olwiHfTTlEtWlCrnYMcK3Nl+IfESTfx6uVPEY7y8165U1iflMJNDhPt/bDFxQc20Z3dshPlry3rW+r+MAYO0snVrW/sS3mv7Zy4eLwD+EZr9IQmCQ8fuhuQYDJkeaAfU9EF0FvHxjITJC89df1mpmpzPatffZLshwZu+6ZESWWe8BqYn8LrvMGtaJcRJGW82Yz84/A6sNXw+83DXygbHUaUzBMsY8ozSYlk6fZYQ/Dgvox/rQHvP2ypSiXwCDVQmPf9lcaqWUQr1IdLJIwG8DYsJZgVcM5+k4W9os9l5gOOuhduj9YJ9ZFNVflXLOYja6gG/TLaEbmuK87RiVqbAtWfAEr5g== X-MS-TrafficTypeDiagnostic: AM5PR0202MB2548: X-Microsoft-Exchange-Diagnostics: 1;AM5PR0202MB2548;25:/X0fTuVkizZwA/wRis828vebMhYOnF82+OdliZHcuws1Ta+rM/HgcMUGanWYFiNabXWAqUAB5OyX8G+bWLfBmVLAlFPvVW7gEsoTLZh+Qyw7XEoxMA8STDQEU0Qkj7oM5CMIpObqhGfny3yK0fimKwCZFYq42TSxUCcmQcccaTACB7kuQcR8TT1hXlAOMtrLgHq1VJl8s7jFfrPXuL1T5aw5EjwfKH/q49uY/Up3SpUouZ+rysvi+87lD/ZrtSDS6asSzmrNbZRAp34pxc+NCEiIXaeTbJWC6CP51/Ospmm/6W9ZM1HKwya1/eCR0uKXTJ09Y4PEitr1MMS/D+9qygEfBtpeckGF7ZzDYTqCn9dc3c+mjKYA6A1a+MLI7uU3yldcMWBRBR87zn8RPa/TBzTTeINFEVsUpDsz8YQn0qcceqCyN1U1shNcRufK25U9UtQs56mbWb7FgyBUw5Ooj1bSS9WG5yIv0PfHzO/zGd1s8Us2uW18l9klx8GDmv7d5NWPucJVGTyQj9/9MrlCf/ecov+HJcpvZbIHXE100eVTEp1HeJt8oQjBNSjDJ4zIr1ev5u05ELgdIJmxnZckhreN46RQC0xuzpseziuvKprvjyoYvURRB2LdhhYNW3pKtDAoiY7Ry94fD95+mlePcsyXnIcvQtyEyTENz2tR+IsiKSWZfopJSn1tHuJN1cn3rKqAnupKw8kOG0eIFgFX5eDSXRMzwnL0niQa7yPMwXdkuYDiercWJoX7x5keXCHzmbb5GWacwyxRWyhnGFlxK6DStWw+eytHHCC0Nubej+yRc8H2kuhIAKptczD+UGQ1yeFXrBhzmNqS5rxY9eMloUlida4trPPbw0EmzbogACV8wEe/q8j2ZET4xZV4cGQLiZ5y+Qlf/+GR60IkZLFwNUyWIepHCpVsfhc+qdhwUCs= X-Microsoft-Exchange-Diagnostics: 1;AM5PR0202MB2548;31:4BxX+ztZvTOGKV62i31EwiCHfU56FwyDrinme+S8bLLgMZTI2/3PWi2w3jIWw4Ds6eLwctlX1l8Upo7+YPZRLMC7dSyq7DbU+0YRLJ5HLPtPtU3HWaTP5TuRwrP5kr7NUdYekJ9SB0WEv7fZk3VkIcy1Rx6ZGy87jkiWLkShrBNZqulOBp5zgq/bTnmvumSGBMJUfeqRGg4wCfEzvuwde1zN4CJdJe4OZYKUvZqCRUqYh/6Re7OWNzmEGKIqhozh4AKMoXWwpPk4x+dMkzk+jrxRVZm+dYaBHGD43I5h33LGobrWBO7wsyul6nw64XV0cnM9FnDM+iJ7wMkW99X0rAI1JFf2kngdOAi2BYJr2Ky+NxvjnYR9s+kS5SaniUo+sPQJEvlEx1+5ihx/ZhAKdD15ZdqdNKkh64+tqUqBKIuct9B1u0NPMW9dPRffA/2mjyW0LznCFBP5pQKExv6LOhijLmXCSTtFv4WfZgvKmkjpILunl6kvp1/YkoTu+ftvGGPBpEPYAjFIYOuxbnwAYlVgMpmdnNJaObWMpvFVjn6KNzYzawnymlCFFcf2pvpgp70ee3fxuMGcf5sO9WAobEMicDZs/8hypKIuNqg1x1wDoyiRJ5Hej0Z16dVPxFZOnz2Xj/Fia/i8gI6EtwlGikZZGU/XrzXgqz3e3Z+E5UU= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(236129657087228); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(8121501046)(5005006)(2017060910047)(93006095)(93001095)(3002001)(10201501046)(100000703101)(100105400095)(6041248)(20161123564025)(20161123560025)(20161123562025)(20161123558100)(2016111802025)(20161123555025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(6072148)(6043046)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:AM5PR0202MB2548;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:AM5PR0202MB2548; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;AM5PR0202MB2548;4:26bPMzNt9SCOxMx4zivYCVNNj0J8aLt7r+bfndE8?= =?us-ascii?Q?zUWmotlx2EDaq/V6Tobd1gwqvDZ7HttHHxBYZuzMvtSqOiFOk4iQDONO2Jdy?= =?us-ascii?Q?IIDkwx6tYDlFe9dMrEBaKfWmg/WWUobGuI4Ex+fGxZMGxgxbVTeyF8leCNAk?= =?us-ascii?Q?/GKP/28lWpqlxuEkPwrK4YLduP4jyw/qqD9anCtPu+qKnX+vLPnaWUGQx1oF?= =?us-ascii?Q?erUN1qYrHQQ5pnXyIQG5rfneT6q5tIyLaXrzTSELqzaItGY/+rBjaIEYcTi2?= =?us-ascii?Q?2L4ME7L2onQZXNM0iEJcQiQ2SwSMlL5wzsz7vwTg7/O0s5jDDgwXGyohMk86?= =?us-ascii?Q?+D+51Dj5DP/6wvy0Zof3WU2XwO6M2JhDu+zSkLlV9Oiz4Ifr8kUHEVJvh0Fz?= =?us-ascii?Q?xvngdevNifFDucNiQTRkNALIIY7PhHu1F5bh9qvMH3ROW60TOZAowrGp7UO6?= =?us-ascii?Q?oQfH7ZB2dR0qKGwch+savWBEXN/E71Exkacf9FexWYHbTmzmEKflQWmirH4A?= =?us-ascii?Q?xXxMFCqQyjkSb8gcz9LLaR3f4vaf4U1tTsjhSUlq5QGcB/mZeTd0gZdfrYEX?= =?us-ascii?Q?MJcme9eqcew9ADxw6KpPlt99upAHnzpzvh5CgKHCiVQZc6pC0BW81kiurH2K?= =?us-ascii?Q?EiVMzPEfV/EBFDsgdEQmyN6qjEFaOxv8ZCWU4lL70H41iuK094ezX6VrbbYE?= =?us-ascii?Q?QOPI1zATrGhogb0VMGlKpj7BqFEMjAZNsI2HkI5iw2mYEXhpT5S7FnyCAw92?= =?us-ascii?Q?OwPJhVyXkXvLu6EnpdxH3GADjQFOIF/5B03yhvCuHV+IVP6UxsnNMLq3L8Fz?= =?us-ascii?Q?Ga58WaVNXOAVFc6zsEAY6FVWw7hGMtYoKzIk2mzZeTb1bMmf37HNftKbiwAt?= =?us-ascii?Q?qnt0lmCcG3lNqCdWH1QMzeHe8NLaneiI0i2AZrNjHIHrGXohcKH1VhlDBoqo?= =?us-ascii?Q?PnciBWEuv4eojkGZtbkVePirHcuBPZovTKE7G/ySzBcX2RdEREHnsyeRooj1?= =?us-ascii?Q?/1A0ghyOUuvD+CLM8teazGaSBrqB59WMrdfahMSuUhJMQNEp5WylRWlV7EHY?= =?us-ascii?Q?TpQ3AybyLJyfE6aIrAvAYAX9aRFbueJerIJdT7Z7DjtHh9SHYNfIYCVgKMND?= =?us-ascii?Q?wUHsrjtDM8d1tH+UhQYuycS4oW4Flqhw6ulURqM1fR+F5L9yC0u0k/0MjkFx?= =?us-ascii?Q?ic3GKNXGwm01q3IMVCOI8A7ngLt1ZIKDxWgzT3CoHFRXVlA3uBBjBim66aLA?= =?us-ascii?Q?AzUQ0dELtOA2mMvLJJCFPKZDGmD6YsGJTGtAtRWX?= X-Forefront-PRVS: 03607C04F0 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6009001)(39840400002)(39410400002)(39400400002)(39450400003)(6512007)(66066001)(33646002)(5660300001)(2361001)(6916009)(2351001)(478600001)(2950100002)(6666003)(54906002)(5003940100001)(38730400002)(42186005)(50226002)(47776003)(110136004)(6486002)(305945005)(50466002)(189998001)(81166006)(3846002)(76176999)(8676002)(6116002)(575784001)(2906002)(48376002)(50986999)(36756003)(4326008)(7736002)(53936002)(86362001)(6506006)(74482002)(25786009)(42262002);DIR:OUT;SFP:1102;SCL:1;SRVR:AM5PR0202MB2548;H:orc.lan;FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;AM5PR0202MB2548;23:welMcV4g4W4hGu63YpabAsevKPORWgaNe6xmNw1?= =?us-ascii?Q?NQe05jUhvBUqTcbQzl7WWjw96yyc8HZMKfWMPlAKsUoqkSPRfUDi80ExnJ0u?= =?us-ascii?Q?4jz8Tar8z160NcWZgmqjU9jOZ1LPDYcCG6KH+MidbHh9shzGRIpaSBfbJ/c0?= =?us-ascii?Q?7RbWbFkQzYDNT7V9F23fiJ+obqdo6qWe9MPA6P6X3ojoCqodzAPYl6Kl/Egm?= =?us-ascii?Q?NS1rKFjWbqrihfSPrGLG94H1jnfKqxv/w6cWzQ8qUYtS6j3q7XszHiVigQWA?= =?us-ascii?Q?pkcwe7yx/v6KEEGzukQsjIUxm4Pva1NxPaR+sRvbcv245J2QnHtTAePwygJ8?= =?us-ascii?Q?PWqz7ZESkVqCu0GY9aACVz/DMXfyF55EskjP1bNv/sdYDVwwXp3spFPKaclt?= =?us-ascii?Q?544/pa7uXbJg4Y3dxJhGS9/hakCRDIFqVaegBPVJZrJjyQi2v0Dy27oZ8Rxw?= =?us-ascii?Q?AvPC5N07VxIwHmJ6Q+Ui1uoZ5+8286ZFRO6R6VFM9mYv0SStVxoVsaUhDBgp?= =?us-ascii?Q?wCMWUmMHSAVkdMKT7DGzC9pdXvh+xK5WDNluQWO+bm8aNO0hDiUfJtUiq/ms?= =?us-ascii?Q?fbilS0Om4TGYddz8eSCCk37sW68fT9JeudRjHSgQUbLCB7hHYFgfJ8je5Yh0?= =?us-ascii?Q?AKZo41D2CL6ArExTflZ67cHGfg7OKEQ7DvbPwg57ZiLveG9d59k30VUKPrKT?= =?us-ascii?Q?Hm2dy4ZRS6E2D6tUZ1neO/4a5x+nGmBSmap7gX6IDWf2U+8N5A2c/lH6E42M?= =?us-ascii?Q?q0EWbMzeePEbNRg6Sr6raUsrqL6FefgkniFBJlD6pobu/Cv5rwYR/CdHmgSa?= =?us-ascii?Q?qGB4stYrFxtmmnO8mOi7D1JXpa9UP3e1LtFaLtrv5SuQP4l2omQUjZdifqjQ?= =?us-ascii?Q?0s8CqPbFatNjiD1P1yRwys3a9WpTEnCnF64E8bKAbFhNUNS/kEZWXxdcf6uo?= =?us-ascii?Q?IkQZeVQ3T9dnXax5k6dW9wCiX2zNY5JcxYcFRjqmScHIk3mn4Wb80I0kVDcd?= =?us-ascii?Q?wJN5lTQ4eoO5XO6j+EZA5fu6Ywa2GYXklQmWB1Yb+SaSIufTBpn/FeO6Wxmq?= =?us-ascii?Q?Q8ZfNlsZF5yVcCgQoKle721C5n5DDP+rcyDj3lIkxoqWHaIzH6yRjZ94KYdl?= =?us-ascii?Q?rfqN7vRq6QOQ=3D?= X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;AM5PR0202MB2548;6:XA9NABgQ60/4wzZpz1XVg3DskgAs7RP2Bvy7xtw0?= =?us-ascii?Q?HWDLmHGA1wYQ0ciK8PfKIlLgidJKQoD1XxiwAhGDSM4W9CZZvL2HSWru+y4W?= =?us-ascii?Q?E/twxuOipUg+8Mt+ZAI+GrJg3xwjje5osprjsuwi7RGHEMZ87NPW1atI/lTH?= =?us-ascii?Q?DKi4tDqf69WYFDshgAW2mC6mDzUlSVIbCMHYen0JsePaoxNrQ7g+kzU7SEvg?= =?us-ascii?Q?HF1vIT+VnRrrixg90/80I2uiuvoRbFAtk62LzoS4vN0PN8JEoQGb9sm2um5a?= =?us-ascii?Q?VdfLjq8TQzYK8MzfTtQBlQdyVCIyFFDyErj/Scl/NR6AlIjAa+fqYJdLy9mD?= =?us-ascii?Q?+mMOnaq1vcdCZh8+PuEtGV/AoWEI7jbIYGgwNW6U/tAwkMgjidEjkvm9NiM4?= =?us-ascii?Q?aJosusvDgtMobA6YIU+stzTw0sll/CtzMtOY/qKAjWUDD/kTHcv7mdkkVmKe?= =?us-ascii?Q?e3qZEBWc+4rjs1U0naq5mmUlAhxsJytBBRv4ifT8R1GSuOr3FTCX/1chZ7VQ?= =?us-ascii?Q?7s4076aleAjnULZKjnRGHUnOCnallIpPN7tTe5GdedH7NvlXSQaCWG1axkgb?= =?us-ascii?Q?zu8ZhqxIpgTKGSVxU7wtoykhj16OlJMtf99e7OZph657Yq2UQFOsztq9o5B1?= =?us-ascii?Q?/UVY513C8kKjRCJI4Xxpj21vM4YZFvnKRKO17OR6YpTojvU4YycSiS9lruz0?= =?us-ascii?Q?JBATE3AD3smkO1/7lMAMYQto8WL/RG2QCe+ag5zPaoCqZH+GWjTLo/MvIZqQ?= =?us-ascii?Q?vWQSwBaTpEJhX7YhJw2QwNklYu1FkzZdSkL41mv00udCHj1wz9+T7Ju9HwzX?= =?us-ascii?Q?Vi83D7sraadoSLxIaFFr804GVHoUhWmnroCJ9xbPWzpPa0CkeAgnmrHr3wAM?= =?us-ascii?Q?2Qm8Evbl2El9gko9IzatD4h3LGRejJ6IapoNXyrzJL4NbBzK1ccneSRtd1Th?= =?us-ascii?Q?n+i+nHabyYXD8ErJEUPbCStio0WsO8ALtKXwUQfWNBzaaedSqntZWI6Gibfr?= =?us-ascii?Q?2rk=3D?= X-Microsoft-Exchange-Diagnostics: 1;AM5PR0202MB2548;5:DCj4m1Jg9PHgJxkCgjvw3yzyZt3cbIN4InCuMWVPc4YwCdB3xDowZhsvaYUENZw6zRFldy6oFGKNLJWKaREouSeY2gEbJEDbScS/1Ed7WvOPQJqVnuZw0ycQmQX0vvMF4T40wQhqs+85pCCUpO/HjTpBvZCciCgv0Xywtmsnh+epb03jrIo+EVQyzeVxgUwqj/tc8y9RYmEbf7TMWUp+fm4g7E2mCZNkqAUt/lSzYFsKnuwRZSz1T0SzzyTpT+G2FDoQBs9ML7G7y3NNWrY6OtXGGxvnzMdb7bHhnPczRkDY14wEkw3sOX2UGEOJ+0+vRvimV3jPpOj8aXOqK7Tnhzj+WANJJHsd01/6lTmgI93vhAaXCaQ4fVb1RTdJELxtJ3Q24AzvFCIuEQQf9JkfYYSXCB3pg4wQQht6+iPbKvJ8u5K3Git/zGCeKNzEINQmO7KFegKQoYwrxQ/BJIJNQlZflzdWGl1YVJDEvrSLWFOrbMVvRx5Ogakt8IpCNcjK;24:96iUrxNQ6LJPOihnZ5VpQyU8WqgwCuCVBERqpdCzA3lrHRkHg4/bfbgYBCzwe4AG9mq6r1VwtOPvPjt2geU3VWvUm4RZ/cefLdBiCpKYsIE= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;AM5PR0202MB2548;7:/mAqq1YR5mBw/7wKpcASgYu31rVopsFlw6CFX7TQKjs4qwJxmDEWcAQC5dptC+7/rns3IEkKT605TgvK4bY75lE9AZ0+44rQHeBBYVH0vKxFTtXqCgc9W9Q8CMjOAOKin9gXOrYZPZn5rUUK+Z/uDuNoP9m0HibjvH7JxsKKD2ZgtH2BCRZuiDRWcF1+h8KyY/G4yv1n9N2n2GrFINHuCkCa9LtmGqedFQNLmfdEAFLRH0ZJ9oFoSo7KWz2J0XxgzUtoph0qnr4f2AepIaXr8TQPZrD5jmMuUVDwVwfgsBy+N0WZVyaYzM3SSLGPKvV9RiduEBFFoanI9nexVMSkGl+zKaWGEET23QHMieeShx1ZhfWo/PnmrYhvYYZJCPRWDJ0Y0NmDTqr7hrHHed5XsPcnQA8tCSv5wC4k/AkSY3O+qvEe7F3kGaw0ZJLGqLG8/rKGJ5h7PwoQWLKWNrGzLryLGVy16TRWgUwS9Mwwcto73XoQd9WluBGrCWmqb4kpK6+4xFuL7Auh1FZfRiGaOWzKbnmLid20agiFauf9TsoZniMbuRjm3g9YWSecZQMG+BiIleZBtTvgPrJTkFRvZyN64wxBw6YAAgYLLKWe4xWHVuaiApEMisfKAli2g6tfchNiQpuCLCHDCAVgaUwOVZmCaBUG+D3WK5rIIBTR7VHfZ48Pvwkwz6PFsV2iMBcx6SGPGM3kTWJ28E7uZE+HipWCvH4kvzKwa/vIqpJA9ZZOD0lMbXyU59IqnLlCm1KaWs+35G4CLaMoYnizCd6rkUHu4QG1d8/NZ2ffAhDrNhA= X-OriginatorOrg: axentia.se X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Jul 2017 12:19:56.9364 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM5PR0202MB2548 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 6840 Lines: 218 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/nouveau/dispnv04/crtc.c | 26 ++++++++------------- drivers/gpu/drm/nouveau/nouveau_crtc.h | 3 --- drivers/gpu/drm/nouveau/nouveau_fbcon.c | 22 ------------------ drivers/gpu/drm/nouveau/nv50_display.c | 40 +++++++++++---------------------- 4 files changed, 22 insertions(+), 69 deletions(-) diff --git a/drivers/gpu/drm/nouveau/dispnv04/crtc.c b/drivers/gpu/drm/nouveau/dispnv04/crtc.c index 4b4b0b4..8f689f1 100644 --- a/drivers/gpu/drm/nouveau/dispnv04/crtc.c +++ b/drivers/gpu/drm/nouveau/dispnv04/crtc.c @@ -764,13 +764,18 @@ nv_crtc_gamma_load(struct drm_crtc *crtc) struct nouveau_crtc *nv_crtc = nouveau_crtc(crtc); struct drm_device *dev = nv_crtc->base.dev; struct rgb { uint8_t r, g, b; } __attribute__((packed)) *rgbs; + u16 *r, *g, *b; int i; rgbs = (struct rgb *)nv04_display(dev)->mode_reg.crtc_reg[nv_crtc->index].DAC; + r = crtc->gamma_store; + g = r + crtc->gamma_size; + b = g + crtc->gamma_size; + for (i = 0; i < 256; i++) { - rgbs[i].r = nv_crtc->lut.r[i] >> 8; - rgbs[i].g = nv_crtc->lut.g[i] >> 8; - rgbs[i].b = nv_crtc->lut.b[i] >> 8; + rgbs[i].r = *r++ >> 8; + rgbs[i].g = *g++ >> 8; + rgbs[i].b = *b++ >> 8; } nouveau_hw_load_state_palette(dev, nv_crtc->index, &nv04_display(dev)->mode_reg); @@ -792,13 +797,6 @@ nv_crtc_gamma_set(struct drm_crtc *crtc, u16 *r, u16 *g, u16 *b, struct drm_modeset_acquire_ctx *ctx) { struct nouveau_crtc *nv_crtc = nouveau_crtc(crtc); - int i; - - for (i = 0; i < size; i++) { - nv_crtc->lut.r[i] = r[i]; - nv_crtc->lut.g[i] = g[i]; - nv_crtc->lut.b[i] = b[i]; - } /* We need to know the depth before we upload, but it's possible to * get called before a framebuffer is bound. If this is the case, @@ -1095,7 +1093,6 @@ static const struct drm_crtc_helper_funcs nv04_crtc_helper_funcs = { .mode_set = nv_crtc_mode_set, .mode_set_base = nv04_crtc_mode_set_base, .mode_set_base_atomic = nv04_crtc_mode_set_base_atomic, - .load_lut = nv_crtc_gamma_load, .disable = nv_crtc_disable, }; @@ -1103,17 +1100,12 @@ int nv04_crtc_create(struct drm_device *dev, int crtc_num) { struct nouveau_crtc *nv_crtc; - int ret, i; + int ret; nv_crtc = kzalloc(sizeof(*nv_crtc), GFP_KERNEL); if (!nv_crtc) return -ENOMEM; - for (i = 0; i < 256; i++) { - nv_crtc->lut.r[i] = i << 8; - nv_crtc->lut.g[i] = i << 8; - nv_crtc->lut.b[i] = i << 8; - } nv_crtc->lut.depth = 0; nv_crtc->index = crtc_num; diff --git a/drivers/gpu/drm/nouveau/nouveau_crtc.h b/drivers/gpu/drm/nouveau/nouveau_crtc.h index 050fcf3..b7a18fb 100644 --- a/drivers/gpu/drm/nouveau/nouveau_crtc.h +++ b/drivers/gpu/drm/nouveau/nouveau_crtc.h @@ -61,9 +61,6 @@ struct nouveau_crtc { struct { struct nouveau_bo *nvbo; - uint16_t r[256]; - uint16_t g[256]; - uint16_t b[256]; int depth; } lut; diff --git a/drivers/gpu/drm/nouveau/nouveau_fbcon.c b/drivers/gpu/drm/nouveau/nouveau_fbcon.c index 2665a07..f770784 100644 --- a/drivers/gpu/drm/nouveau/nouveau_fbcon.c +++ b/drivers/gpu/drm/nouveau/nouveau_fbcon.c @@ -278,26 +278,6 @@ nouveau_fbcon_accel_init(struct drm_device *dev) info->fbops = &nouveau_fbcon_ops; } -static void nouveau_fbcon_gamma_set(struct drm_crtc *crtc, u16 red, u16 green, - u16 blue, int regno) -{ - struct nouveau_crtc *nv_crtc = nouveau_crtc(crtc); - - nv_crtc->lut.r[regno] = red; - nv_crtc->lut.g[regno] = green; - nv_crtc->lut.b[regno] = blue; -} - -static void nouveau_fbcon_gamma_get(struct drm_crtc *crtc, u16 *red, u16 *green, - u16 *blue, int regno) -{ - struct nouveau_crtc *nv_crtc = nouveau_crtc(crtc); - - *red = nv_crtc->lut.r[regno]; - *green = nv_crtc->lut.g[regno]; - *blue = nv_crtc->lut.b[regno]; -} - static void nouveau_fbcon_zfill(struct drm_device *dev, struct nouveau_fbdev *fbcon) { @@ -467,8 +447,6 @@ void nouveau_fbcon_gpu_lockup(struct fb_info *info) } static const struct drm_fb_helper_funcs nouveau_fbcon_helper_funcs = { - .gamma_set = nouveau_fbcon_gamma_set, - .gamma_get = nouveau_fbcon_gamma_get, .fb_probe = nouveau_fbcon_create, }; diff --git a/drivers/gpu/drm/nouveau/nv50_display.c b/drivers/gpu/drm/nouveau/nv50_display.c index 42a85c1..2ef03ed 100644 --- a/drivers/gpu/drm/nouveau/nv50_display.c +++ b/drivers/gpu/drm/nouveau/nv50_display.c @@ -2204,28 +2204,29 @@ nv50_head_lut_load(struct drm_crtc *crtc) struct nv50_disp *disp = nv50_disp(crtc->dev); struct nouveau_crtc *nv_crtc = nouveau_crtc(crtc); void __iomem *lut = nvbo_kmap_obj_iovirtual(nv_crtc->lut.nvbo); + u16 *r, *g, *b; int i; - for (i = 0; i < 256; i++) { - u16 r = nv_crtc->lut.r[i] >> 2; - u16 g = nv_crtc->lut.g[i] >> 2; - u16 b = nv_crtc->lut.b[i] >> 2; + r = crtc->gamma_store; + g = r + crtc->gamma_size; + b = g + crtc->gamma_size; + for (i = 0; i < 256; i++) { if (disp->disp->oclass < GF110_DISP) { - writew(r + 0x0000, lut + (i * 0x08) + 0); - writew(g + 0x0000, lut + (i * 0x08) + 2); - writew(b + 0x0000, lut + (i * 0x08) + 4); + writew((*r++ >> 2) + 0x0000, lut + (i * 0x08) + 0); + writew((*g++ >> 2) + 0x0000, lut + (i * 0x08) + 2); + writew((*b++ >> 2) + 0x0000, lut + (i * 0x08) + 4); } else { - writew(r + 0x6000, lut + (i * 0x20) + 0); - writew(g + 0x6000, lut + (i * 0x20) + 2); - writew(b + 0x6000, lut + (i * 0x20) + 4); + /* 0x6000 interferes with the 14-bit color??? */ + writew((*r++ >> 2) + 0x6000, lut + (i * 0x20) + 0); + writew((*g++ >> 2) + 0x6000, lut + (i * 0x20) + 2); + writew((*b++ >> 2) + 0x6000, lut + (i * 0x20) + 4); } } } static const struct drm_crtc_helper_funcs nv50_head_help = { - .load_lut = nv50_head_lut_load, .atomic_check = nv50_head_atomic_check, }; @@ -2234,15 +2235,6 @@ nv50_head_gamma_set(struct drm_crtc *crtc, u16 *r, u16 *g, u16 *b, uint32_t size, struct drm_modeset_acquire_ctx *ctx) { - struct nouveau_crtc *nv_crtc = nouveau_crtc(crtc); - u32 i; - - for (i = 0; i < size; i++) { - nv_crtc->lut.r[i] = r[i]; - nv_crtc->lut.g[i] = g[i]; - nv_crtc->lut.b[i] = b[i]; - } - nv50_head_lut_load(crtc); return 0; } @@ -2340,19 +2332,13 @@ nv50_head_create(struct drm_device *dev, int index) struct nv50_base *base; struct nv50_curs *curs; struct drm_crtc *crtc; - int ret, i; + int ret; head = kzalloc(sizeof(*head), GFP_KERNEL); if (!head) return -ENOMEM; head->base.index = index; - for (i = 0; i < 256; i++) { - head->base.lut.r[i] = i << 8; - head->base.lut.g[i] = i << 8; - head->base.lut.b[i] = i << 8; - } - ret = nv50_base_new(drm, head, &base); if (ret == 0) ret = nv50_curs_new(drm, head, &curs); -- 2.1.4