rk3288-mipi-dsi: add mipi screen driver.
[firefly-linux-kernel-4.4.55.git] / drivers / video / rockchip / screen / rk_screen.c
1
2 #include <linux/rk_fb.h>
3 #include <linux/device.h>
4 #include "lcd.h"
5 #include "../hdmi/rk_hdmi.h"
6
7 static struct rk_screen *rk_screen;
8 int  rk_fb_get_prmry_screen(struct rk_screen *screen)
9 {
10         memcpy(screen, rk_screen, sizeof(struct rk_screen));
11         return 0;
12 }
13
14 int rk_fb_set_prmry_screen(struct rk_screen *screen)
15 {
16         rk_screen->lcdc_id = screen->lcdc_id;
17         rk_screen->screen_id = screen->screen_id;
18         return 0;
19 }
20
21 static int rk_screen_probe(struct platform_device *pdev)
22 {
23         struct device_node *np = pdev->dev.of_node;
24         int ret;
25
26         if (!np) {
27                 dev_err(&pdev->dev, "Missing device tree node.\n");
28                 return -EINVAL;
29         }
30         rk_screen = devm_kzalloc(&pdev->dev, sizeof(struct rk_screen), GFP_KERNEL);
31         if (!rk_screen) {
32                 dev_err(&pdev->dev, "kmalloc for rk screen fail!");
33                 return  -ENOMEM;
34         }
35         ret = rk_fb_prase_timing_dt(np,rk_screen);
36         dev_info(&pdev->dev, "rockchip screen probe %s\n",
37                                 ret? "failed" : "success");
38         return ret;
39 }
40
41 static const struct of_device_id rk_screen_dt_ids[] = {
42         { .compatible = "rockchip,screen", },
43         {}
44 };
45
46 static struct platform_driver rk_screen_driver = {
47         .probe          = rk_screen_probe,
48         .driver         = {
49                 .name   = "rk-screen",
50                 .owner  = THIS_MODULE,
51                 .of_match_table = of_match_ptr(rk_screen_dt_ids),
52         },
53 };
54
55 static int __init rk_screen_init(void)
56 {
57         return platform_driver_register(&rk_screen_driver);
58 }
59
60 static void __exit rk_screen_exit(void)
61 {
62         platform_driver_unregister(&rk_screen_driver);
63 }
64
65 fs_initcall(rk_screen_init);
66 module_exit(rk_screen_exit);
67