forked from ~ljy/RK356X_SDK_RELEASE

hc
2023-12-09 95099d4622f8cb224d94e314c7a8e0df60b13f87
kernel/drivers/video/fbdev/arcfb.c
....@@ -419,6 +419,8 @@
419419 schedule();
420420 finish_wait(&arcfb_waitq, &wait);
421421 }
422
+ fallthrough;
423
+
422424 case FBIO_GETCONTROL2:
423425 {
424426 unsigned char ctl2;
....@@ -489,7 +491,7 @@
489491 return err;
490492 }
491493
492
-static struct fb_ops arcfb_ops = {
494
+static const struct fb_ops arcfb_ops = {
493495 .owner = THIS_MODULE,
494496 .fb_open = arcfb_open,
495497 .fb_read = fb_sys_read,
....@@ -542,10 +544,6 @@
542544 par->cslut[1] = 0x06;
543545 info->flags = FBINFO_FLAG_DEFAULT;
544546 spin_lock_init(&par->lock);
545
- retval = register_framebuffer(info);
546
- if (retval < 0)
547
- goto err1;
548
- platform_set_drvdata(dev, info);
549547 if (irq) {
550548 par->irq = irq;
551549 if (request_irq(par->irq, &arcfb_interrupt, IRQF_SHARED,
....@@ -556,6 +554,10 @@
556554 goto err1;
557555 }
558556 }
557
+ retval = register_framebuffer(info);
558
+ if (retval < 0)
559
+ goto err1;
560
+ platform_set_drvdata(dev, info);
559561 fb_info(info, "Arc frame buffer device, using %dK of video memory\n",
560562 videomemorysize >> 10);
561563
....@@ -591,6 +593,8 @@
591593
592594 if (info) {
593595 unregister_framebuffer(info);
596
+ if (irq)
597
+ free_irq(((struct arcfb_par *)(info->par))->irq, info);
594598 vfree((void __force *)info->screen_base);
595599 framebuffer_release(info);
596600 }