Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

fbdev: omap/lcd: Make callbacks optional

Most OMAP FB LCD drivers don't have anything to do in their panel
callbacks. This leads to a large set of empty boilerplate functions in the
panel drivers. Make those callbacks optional by checking if they are set
before calling them. This allows those boilerplate functions to be removed.

Cc: Tomi Valkeinen <tomi.valkeinen@ti.com>
Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>

authored by

Lars-Peter Clausen and committed by
Bartlomiej Zolnierkiewicz
561eb9d0 b2c1e8a7

+20 -183
-6
drivers/video/fbdev/omap/lcd_ams_delta.c
··· 136 136 gpio_set_value(AMS_DELTA_GPIO_PIN_LCD_NDISP, 0); 137 137 } 138 138 139 - static unsigned long ams_delta_panel_get_caps(struct lcd_panel *panel) 140 - { 141 - return 0; 142 - } 143 - 144 139 static struct lcd_panel ams_delta_panel = { 145 140 .name = "ams-delta", 146 141 .config = 0, ··· 158 163 .cleanup = ams_delta_panel_cleanup, 159 164 .enable = ams_delta_panel_enable, 160 165 .disable = ams_delta_panel_disable, 161 - .get_caps = ams_delta_panel_get_caps, 162 166 }; 163 167 164 168
-17
drivers/video/fbdev/omap/lcd_h3.c
··· 28 28 29 29 #define MODULE_NAME "omapfb-lcd_h3" 30 30 31 - static int h3_panel_init(struct lcd_panel *panel, struct omapfb_device *fbdev) 32 - { 33 - return 0; 34 - } 35 - 36 - static void h3_panel_cleanup(struct lcd_panel *panel) 37 - { 38 - } 39 - 40 31 static int h3_panel_enable(struct lcd_panel *panel) 41 32 { 42 33 int r = 0; ··· 54 63 pr_err(MODULE_NAME ": Unable to turn off LCD panel\n"); 55 64 } 56 65 57 - static unsigned long h3_panel_get_caps(struct lcd_panel *panel) 58 - { 59 - return 0; 60 - } 61 - 62 66 static struct lcd_panel h3_panel = { 63 67 .name = "h3", 64 68 .config = OMAP_LCDC_PANEL_TFT, ··· 71 85 .vbp = 0, 72 86 .pcd = 0, 73 87 74 - .init = h3_panel_init, 75 - .cleanup = h3_panel_cleanup, 76 88 .enable = h3_panel_enable, 77 89 .disable = h3_panel_disable, 78 - .get_caps = h3_panel_get_caps, 79 90 }; 80 91 81 92 static int h3_panel_probe(struct platform_device *pdev)
-30
drivers/video/fbdev/omap/lcd_htcherald.c
··· 31 31 32 32 #include "omapfb.h" 33 33 34 - static int htcherald_panel_init(struct lcd_panel *panel, 35 - struct omapfb_device *fbdev) 36 - { 37 - return 0; 38 - } 39 - 40 - static void htcherald_panel_cleanup(struct lcd_panel *panel) 41 - { 42 - } 43 - 44 - static int htcherald_panel_enable(struct lcd_panel *panel) 45 - { 46 - return 0; 47 - } 48 - 49 - static void htcherald_panel_disable(struct lcd_panel *panel) 50 - { 51 - } 52 - 53 - static unsigned long htcherald_panel_get_caps(struct lcd_panel *panel) 54 - { 55 - return 0; 56 - } 57 - 58 34 /* Found on WIZ200 (miknix) and some HERA110 models (darkstar62) */ 59 35 static struct lcd_panel htcherald_panel_1 = { 60 36 .name = "lcd_herald", ··· 50 74 .vsw = 3, 51 75 .vfp = 2, 52 76 .vbp = 2, 53 - 54 - .init = htcherald_panel_init, 55 - .cleanup = htcherald_panel_cleanup, 56 - .enable = htcherald_panel_enable, 57 - .disable = htcherald_panel_disable, 58 - .get_caps = htcherald_panel_get_caps, 59 77 }; 60 78 61 79 static int htcherald_panel_probe(struct platform_device *pdev)
-18
drivers/video/fbdev/omap/lcd_inn1510.c
··· 27 27 28 28 #include "omapfb.h" 29 29 30 - static int innovator1510_panel_init(struct lcd_panel *panel, 31 - struct omapfb_device *fbdev) 32 - { 33 - return 0; 34 - } 35 - 36 - static void innovator1510_panel_cleanup(struct lcd_panel *panel) 37 - { 38 - } 39 - 40 30 static int innovator1510_panel_enable(struct lcd_panel *panel) 41 31 { 42 32 __raw_writeb(0x7, OMAP1510_FPGA_LCD_PANEL_CONTROL); ··· 36 46 static void innovator1510_panel_disable(struct lcd_panel *panel) 37 47 { 38 48 __raw_writeb(0x0, OMAP1510_FPGA_LCD_PANEL_CONTROL); 39 - } 40 - 41 - static unsigned long innovator1510_panel_get_caps(struct lcd_panel *panel) 42 - { 43 - return 0; 44 49 } 45 50 46 51 static struct lcd_panel innovator1510_panel = { ··· 55 70 .vbp = 0, 56 71 .pcd = 12, 57 72 58 - .init = innovator1510_panel_init, 59 - .cleanup = innovator1510_panel_cleanup, 60 73 .enable = innovator1510_panel_enable, 61 74 .disable = innovator1510_panel_disable, 62 - .get_caps = innovator1510_panel_get_caps, 63 75 }; 64 76 65 77 static int innovator1510_panel_probe(struct platform_device *pdev)
-6
drivers/video/fbdev/omap/lcd_inn1610.c
··· 69 69 gpio_set_value(15, 0); 70 70 } 71 71 72 - static unsigned long innovator1610_panel_get_caps(struct lcd_panel *panel) 73 - { 74 - return 0; 75 - } 76 - 77 72 static struct lcd_panel innovator1610_panel = { 78 73 .name = "inn1610", 79 74 .config = OMAP_LCDC_PANEL_TFT, ··· 90 95 .cleanup = innovator1610_panel_cleanup, 91 96 .enable = innovator1610_panel_enable, 92 97 .disable = innovator1610_panel_disable, 93 - .get_caps = innovator1610_panel_get_caps, 94 98 }; 95 99 96 100 static int innovator1610_panel_probe(struct platform_device *pdev)
-18
drivers/video/fbdev/omap/lcd_osk.c
··· 29 29 30 30 #include "omapfb.h" 31 31 32 - static int osk_panel_init(struct lcd_panel *panel, struct omapfb_device *fbdev) 33 - { 34 - /* gpio2 was allocated in board init */ 35 - return 0; 36 - } 37 - 38 - static void osk_panel_cleanup(struct lcd_panel *panel) 39 - { 40 - } 41 - 42 32 static int osk_panel_enable(struct lcd_panel *panel) 43 33 { 44 34 /* configure PWL pin */ ··· 58 68 gpio_set_value(2, 0); 59 69 } 60 70 61 - static unsigned long osk_panel_get_caps(struct lcd_panel *panel) 62 - { 63 - return 0; 64 - } 65 - 66 71 static struct lcd_panel osk_panel = { 67 72 .name = "osk", 68 73 .config = OMAP_LCDC_PANEL_TFT, ··· 75 90 .vbp = 0, 76 91 .pcd = 12, 77 92 78 - .init = osk_panel_init, 79 - .cleanup = osk_panel_cleanup, 80 93 .enable = osk_panel_enable, 81 94 .disable = osk_panel_disable, 82 - .get_caps = osk_panel_get_caps, 83 95 }; 84 96 85 97 static int osk_panel_probe(struct platform_device *pdev)
-30
drivers/video/fbdev/omap/lcd_palmte.c
··· 25 25 26 26 #include "omapfb.h" 27 27 28 - static int palmte_panel_init(struct lcd_panel *panel, 29 - struct omapfb_device *fbdev) 30 - { 31 - return 0; 32 - } 33 - 34 - static void palmte_panel_cleanup(struct lcd_panel *panel) 35 - { 36 - } 37 - 38 - static int palmte_panel_enable(struct lcd_panel *panel) 39 - { 40 - return 0; 41 - } 42 - 43 - static void palmte_panel_disable(struct lcd_panel *panel) 44 - { 45 - } 46 - 47 - static unsigned long palmte_panel_get_caps(struct lcd_panel *panel) 48 - { 49 - return 0; 50 - } 51 - 52 28 static struct lcd_panel palmte_panel = { 53 29 .name = "palmte", 54 30 .config = OMAP_LCDC_PANEL_TFT | OMAP_LCDC_INV_VSYNC | ··· 43 67 .vfp = 8, 44 68 .vbp = 7, 45 69 .pcd = 0, 46 - 47 - .init = palmte_panel_init, 48 - .cleanup = palmte_panel_cleanup, 49 - .enable = palmte_panel_enable, 50 - .disable = palmte_panel_disable, 51 - .get_caps = palmte_panel_get_caps, 52 70 }; 53 71 54 72 static int palmte_panel_probe(struct platform_device *pdev)
-23
drivers/video/fbdev/omap/lcd_palmtt.c
··· 32 32 33 33 #include "omapfb.h" 34 34 35 - static int palmtt_panel_init(struct lcd_panel *panel, 36 - struct omapfb_device *fbdev) 37 - { 38 - return 0; 39 - } 40 - 41 - static void palmtt_panel_cleanup(struct lcd_panel *panel) 42 - { 43 - } 44 - 45 - static int palmtt_panel_enable(struct lcd_panel *panel) 46 - { 47 - return 0; 48 - } 49 - 50 - static void palmtt_panel_disable(struct lcd_panel *panel) 51 - { 52 - } 53 - 54 35 static unsigned long palmtt_panel_get_caps(struct lcd_panel *panel) 55 36 { 56 37 return OMAPFB_CAPS_SET_BACKLIGHT; ··· 55 74 .vbp = 7, 56 75 .pcd = 0, 57 76 58 - .init = palmtt_panel_init, 59 - .cleanup = palmtt_panel_cleanup, 60 - .enable = palmtt_panel_enable, 61 - .disable = palmtt_panel_disable, 62 77 .get_caps = palmtt_panel_get_caps, 63 78 }; 64 79
-24
drivers/video/fbdev/omap/lcd_palmz71.c
··· 26 26 27 27 #include "omapfb.h" 28 28 29 - static int palmz71_panel_init(struct lcd_panel *panel, 30 - struct omapfb_device *fbdev) 31 - { 32 - return 0; 33 - } 34 - 35 - static void palmz71_panel_cleanup(struct lcd_panel *panel) 36 - { 37 - 38 - } 39 - 40 - static int palmz71_panel_enable(struct lcd_panel *panel) 41 - { 42 - return 0; 43 - } 44 - 45 - static void palmz71_panel_disable(struct lcd_panel *panel) 46 - { 47 - } 48 - 49 29 static unsigned long palmz71_panel_get_caps(struct lcd_panel *panel) 50 30 { 51 31 return OMAPFB_CAPS_SET_BACKLIGHT; ··· 49 69 .vbp = 7, 50 70 .pcd = 0, 51 71 52 - .init = palmz71_panel_init, 53 - .cleanup = palmz71_panel_cleanup, 54 - .enable = palmz71_panel_enable, 55 - .disable = palmz71_panel_disable, 56 72 .get_caps = palmz71_panel_get_caps, 57 73 }; 58 74
+20 -11
drivers/video/fbdev/omap/omapfb_main.c
··· 337 337 if (fbdev->state == OMAPFB_SUSPENDED) { 338 338 if (fbdev->ctrl->resume) 339 339 fbdev->ctrl->resume(); 340 - fbdev->panel->enable(fbdev->panel); 340 + if (fbdev->panel->enable) 341 + fbdev->panel->enable(fbdev->panel); 341 342 fbdev->state = OMAPFB_ACTIVE; 342 343 if (fbdev->ctrl->get_update_mode() == 343 344 OMAPFB_MANUAL_UPDATE) ··· 347 346 break; 348 347 case FB_BLANK_POWERDOWN: 349 348 if (fbdev->state == OMAPFB_ACTIVE) { 350 - fbdev->panel->disable(fbdev->panel); 349 + if (fbdev->panel->disable) 350 + fbdev->panel->disable(fbdev->panel); 351 351 if (fbdev->ctrl->suspend) 352 352 fbdev->ctrl->suspend(); 353 353 fbdev->state = OMAPFB_SUSPENDED; ··· 1032 1030 { 1033 1031 memset(caps, 0, sizeof(*caps)); 1034 1032 fbdev->ctrl->get_caps(plane, caps); 1035 - caps->ctrl |= fbdev->panel->get_caps(fbdev->panel); 1033 + if (fbdev->panel->get_caps) 1034 + caps->ctrl |= fbdev->panel->get_caps(fbdev->panel); 1036 1035 } 1037 1036 1038 1037 /* For lcd testing */ ··· 1552 1549 case 7: 1553 1550 omapfb_unregister_sysfs(fbdev); 1554 1551 case 6: 1555 - fbdev->panel->disable(fbdev->panel); 1552 + if (fbdev->panel->disable) 1553 + fbdev->panel->disable(fbdev->panel); 1556 1554 case 5: 1557 1555 omapfb_set_update_mode(fbdev, OMAPFB_UPDATE_DISABLED); 1558 1556 case 4: ··· 1561 1557 case 3: 1562 1558 ctrl_cleanup(fbdev); 1563 1559 case 2: 1564 - fbdev->panel->cleanup(fbdev->panel); 1560 + if (fbdev->panel->cleanup) 1561 + fbdev->panel->cleanup(fbdev->panel); 1565 1562 case 1: 1566 1563 dev_set_drvdata(fbdev->dev, NULL); 1567 1564 kfree(fbdev); ··· 1685 1680 goto cleanup; 1686 1681 } 1687 1682 1688 - r = fbdev->panel->init(fbdev->panel, fbdev); 1689 - if (r) 1690 - goto cleanup; 1683 + if (fbdev->panel->init) { 1684 + r = fbdev->panel->init(fbdev->panel, fbdev); 1685 + if (r) 1686 + goto cleanup; 1687 + } 1691 1688 1692 1689 pr_info("omapfb: configured for panel %s\n", fbdev->panel->name); 1693 1690 ··· 1732 1725 OMAPFB_MANUAL_UPDATE : OMAPFB_AUTO_UPDATE); 1733 1726 init_state++; 1734 1727 1735 - r = fbdev->panel->enable(fbdev->panel); 1736 - if (r) 1737 - goto cleanup; 1728 + if (fbdev->panel->enable) { 1729 + r = fbdev->panel->enable(fbdev->panel); 1730 + if (r) 1731 + goto cleanup; 1732 + } 1738 1733 init_state++; 1739 1734 1740 1735 r = omapfb_register_sysfs(fbdev);