hc
2024-01-03 2f7c68cb55ecb7331f2381deb497c27155f32faf
kernel/drivers/gpu/drm/msm/disp/dpu1/dpu_core_irq.c
....@@ -1,13 +1,5 @@
1
+// SPDX-License-Identifier: GPL-2.0-only
12 /* Copyright (c) 2015-2018, The Linux Foundation. All rights reserved.
2
- *
3
- * This program is free software; you can redistribute it and/or modify
4
- * it under the terms of the GNU General Public License version 2 and
5
- * only version 2 as published by the Free Software Foundation.
6
- *
7
- * This program is distributed in the hope that it will be useful,
8
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
9
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10
- * GNU General Public License for more details.
113 */
124
135 #define pr_fmt(fmt) "[drm:%s:%d] " fmt, __func__, __LINE__
....@@ -63,8 +55,7 @@
6355 int dpu_core_irq_idx_lookup(struct dpu_kms *dpu_kms,
6456 enum dpu_intr_type intr_type, u32 instance_idx)
6557 {
66
- if (!dpu_kms || !dpu_kms->hw_intr ||
67
- !dpu_kms->hw_intr->ops.irq_idx_lookup)
58
+ if (!dpu_kms->hw_intr || !dpu_kms->hw_intr->ops.irq_idx_lookup)
6859 return -EINVAL;
6960
7061 return dpu_kms->hw_intr->ops.irq_idx_lookup(intr_type,
....@@ -81,7 +72,7 @@
8172 unsigned long irq_flags;
8273 int ret = 0, enable_count;
8374
84
- if (!dpu_kms || !dpu_kms->hw_intr ||
75
+ if (!dpu_kms->hw_intr ||
8576 !dpu_kms->irq_obj.enable_counts ||
8677 !dpu_kms->irq_obj.irq_counts) {
8778 DPU_ERROR("invalid params\n");
....@@ -122,7 +113,7 @@
122113 {
123114 int i, ret = 0, counts;
124115
125
- if (!dpu_kms || !irq_idxs || !irq_count) {
116
+ if (!irq_idxs || !irq_count) {
126117 DPU_ERROR("invalid params\n");
127118 return -EINVAL;
128119 }
....@@ -146,7 +137,7 @@
146137 {
147138 int ret = 0, enable_count;
148139
149
- if (!dpu_kms || !dpu_kms->hw_intr || !dpu_kms->irq_obj.enable_counts) {
140
+ if (!dpu_kms->hw_intr || !dpu_kms->irq_obj.enable_counts) {
150141 DPU_ERROR("invalid params\n");
151142 return -EINVAL;
152143 }
....@@ -177,7 +168,7 @@
177168 {
178169 int i, ret = 0, counts;
179170
180
- if (!dpu_kms || !irq_idxs || !irq_count) {
171
+ if (!irq_idxs || !irq_count) {
181172 DPU_ERROR("invalid params\n");
182173 return -EINVAL;
183174 }
....@@ -194,7 +185,7 @@
194185
195186 u32 dpu_core_irq_read(struct dpu_kms *dpu_kms, int irq_idx, bool clear)
196187 {
197
- if (!dpu_kms || !dpu_kms->hw_intr ||
188
+ if (!dpu_kms->hw_intr ||
198189 !dpu_kms->hw_intr->ops.get_interrupt_status)
199190 return 0;
200191
....@@ -213,7 +204,7 @@
213204 {
214205 unsigned long irq_flags;
215206
216
- if (!dpu_kms || !dpu_kms->irq_obj.irq_cb_tbl) {
207
+ if (!dpu_kms->irq_obj.irq_cb_tbl) {
217208 DPU_ERROR("invalid params\n");
218209 return -EINVAL;
219210 }
....@@ -248,7 +239,7 @@
248239 {
249240 unsigned long irq_flags;
250241
251
- if (!dpu_kms || !dpu_kms->irq_obj.irq_cb_tbl) {
242
+ if (!dpu_kms->irq_obj.irq_cb_tbl) {
252243 DPU_ERROR("invalid params\n");
253244 return -EINVAL;
254245 }
....@@ -282,8 +273,7 @@
282273
283274 static void dpu_clear_all_irqs(struct dpu_kms *dpu_kms)
284275 {
285
- if (!dpu_kms || !dpu_kms->hw_intr ||
286
- !dpu_kms->hw_intr->ops.clear_all_irqs)
276
+ if (!dpu_kms->hw_intr || !dpu_kms->hw_intr->ops.clear_all_irqs)
287277 return;
288278
289279 dpu_kms->hw_intr->ops.clear_all_irqs(dpu_kms->hw_intr);
....@@ -291,27 +281,13 @@
291281
292282 static void dpu_disable_all_irqs(struct dpu_kms *dpu_kms)
293283 {
294
- if (!dpu_kms || !dpu_kms->hw_intr ||
295
- !dpu_kms->hw_intr->ops.disable_all_irqs)
284
+ if (!dpu_kms->hw_intr || !dpu_kms->hw_intr->ops.disable_all_irqs)
296285 return;
297286
298287 dpu_kms->hw_intr->ops.disable_all_irqs(dpu_kms->hw_intr);
299288 }
300289
301290 #ifdef CONFIG_DEBUG_FS
302
-#define DEFINE_DPU_DEBUGFS_SEQ_FOPS(__prefix) \
303
-static int __prefix ## _open(struct inode *inode, struct file *file) \
304
-{ \
305
- return single_open(file, __prefix ## _show, inode->i_private); \
306
-} \
307
-static const struct file_operations __prefix ## _fops = { \
308
- .owner = THIS_MODULE, \
309
- .open = __prefix ## _open, \
310
- .release = single_release, \
311
- .read = seq_read, \
312
- .llseek = seq_lseek, \
313
-}
314
-
315291 static int dpu_debugfs_core_irq_show(struct seq_file *s, void *v)
316292 {
317293 struct dpu_irq *irq_obj = s->private;
....@@ -319,10 +295,8 @@
319295 unsigned long irq_flags;
320296 int i, irq_count, enable_count, cb_count;
321297
322
- if (!irq_obj || !irq_obj->enable_counts || !irq_obj->irq_cb_tbl) {
323
- DPU_ERROR("invalid parameters\n");
298
+ if (WARN_ON(!irq_obj->enable_counts || !irq_obj->irq_cb_tbl))
324299 return 0;
325
- }
326300
327301 for (i = 0; i < irq_obj->total_irqs; i++) {
328302 spin_lock_irqsave(&irq_obj->cb_lock, irq_flags);
....@@ -341,52 +315,19 @@
341315 return 0;
342316 }
343317
344
-DEFINE_DPU_DEBUGFS_SEQ_FOPS(dpu_debugfs_core_irq);
318
+DEFINE_SHOW_ATTRIBUTE(dpu_debugfs_core_irq);
345319
346
-int dpu_debugfs_core_irq_init(struct dpu_kms *dpu_kms,
320
+void dpu_debugfs_core_irq_init(struct dpu_kms *dpu_kms,
347321 struct dentry *parent)
348322 {
349
- dpu_kms->irq_obj.debugfs_file = debugfs_create_file("core_irq", 0600,
350
- parent, &dpu_kms->irq_obj,
351
- &dpu_debugfs_core_irq_fops);
352
-
353
- return 0;
354
-}
355
-
356
-void dpu_debugfs_core_irq_destroy(struct dpu_kms *dpu_kms)
357
-{
358
- debugfs_remove(dpu_kms->irq_obj.debugfs_file);
359
- dpu_kms->irq_obj.debugfs_file = NULL;
360
-}
361
-
362
-#else
363
-int dpu_debugfs_core_irq_init(struct dpu_kms *dpu_kms,
364
- struct dentry *parent)
365
-{
366
- return 0;
367
-}
368
-
369
-void dpu_debugfs_core_irq_destroy(struct dpu_kms *dpu_kms)
370
-{
323
+ debugfs_create_file("core_irq", 0600, parent, &dpu_kms->irq_obj,
324
+ &dpu_debugfs_core_irq_fops);
371325 }
372326 #endif
373327
374328 void dpu_core_irq_preinstall(struct dpu_kms *dpu_kms)
375329 {
376
- struct msm_drm_private *priv;
377330 int i;
378
-
379
- if (!dpu_kms) {
380
- DPU_ERROR("invalid dpu_kms\n");
381
- return;
382
- } else if (!dpu_kms->dev) {
383
- DPU_ERROR("invalid drm device\n");
384
- return;
385
- } else if (!dpu_kms->dev->dev_private) {
386
- DPU_ERROR("invalid device private\n");
387
- return;
388
- }
389
- priv = dpu_kms->dev->dev_private;
390331
391332 pm_runtime_get_sync(&dpu_kms->pdev->dev);
392333 dpu_clear_all_irqs(dpu_kms);
....@@ -410,27 +351,9 @@
410351 }
411352 }
412353
413
-int dpu_core_irq_postinstall(struct dpu_kms *dpu_kms)
414
-{
415
- return 0;
416
-}
417
-
418354 void dpu_core_irq_uninstall(struct dpu_kms *dpu_kms)
419355 {
420
- struct msm_drm_private *priv;
421356 int i;
422
-
423
- if (!dpu_kms) {
424
- DPU_ERROR("invalid dpu_kms\n");
425
- return;
426
- } else if (!dpu_kms->dev) {
427
- DPU_ERROR("invalid drm device\n");
428
- return;
429
- } else if (!dpu_kms->dev->dev_private) {
430
- DPU_ERROR("invalid device private\n");
431
- return;
432
- }
433
- priv = dpu_kms->dev->dev_private;
434357
435358 pm_runtime_get_sync(&dpu_kms->pdev->dev);
436359 for (i = 0; i < dpu_kms->irq_obj.total_irqs; i++)