linux/drivers/video/msm/mddi_client_dummy.c
<<
>>
Prefs
   1/* drivers/video/msm_fb/mddi_client_dummy.c
   2 *
   3 * Support for "dummy" mddi client devices which require no
   4 * special initialization code.
   5 *
   6 * Copyright (C) 2007 Google Incorporated
   7 *
   8 * This software is licensed under the terms of the GNU General Public
   9 * License version 2, as published by the Free Software Foundation, and
  10 * may be copied, distributed, and modified under those terms.
  11 *
  12 * This program is distributed in the hope that it will be useful,
  13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
  14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  15 * GNU General Public License for more details.
  16 */
  17
  18#include <linux/slab.h>
  19#include <linux/module.h>
  20#include <linux/kernel.h>
  21#include <linux/platform_device.h>
  22
  23#include <linux/platform_data/video-msm_fb.h>
  24
  25struct panel_info {
  26        struct platform_device pdev;
  27        struct msm_panel_data panel_data;
  28};
  29
  30static int mddi_dummy_suspend(struct msm_panel_data *panel_data)
  31{
  32        return 0;
  33}
  34
  35static int mddi_dummy_resume(struct msm_panel_data *panel_data)
  36{
  37        return 0;
  38}
  39
  40static int mddi_dummy_blank(struct msm_panel_data *panel_data)
  41{
  42        return 0;
  43}
  44
  45static int mddi_dummy_unblank(struct msm_panel_data *panel_data)
  46{
  47        return 0;
  48}
  49
  50static int mddi_dummy_probe(struct platform_device *pdev)
  51{
  52        struct msm_mddi_client_data *client_data = pdev->dev.platform_data;
  53        struct panel_info *panel =
  54                kzalloc(sizeof(struct panel_info), GFP_KERNEL);
  55        int ret;
  56        if (!panel)
  57                return -ENOMEM;
  58        platform_set_drvdata(pdev, panel);
  59        panel->panel_data.suspend = mddi_dummy_suspend;
  60        panel->panel_data.resume = mddi_dummy_resume;
  61        panel->panel_data.blank = mddi_dummy_blank;
  62        panel->panel_data.unblank = mddi_dummy_unblank;
  63        panel->panel_data.caps = MSMFB_CAP_PARTIAL_UPDATES;
  64        panel->pdev.name = "msm_panel";
  65        panel->pdev.id = pdev->id;
  66        platform_device_add_resources(&panel->pdev,
  67                                      client_data->fb_resource, 1);
  68        panel->panel_data.fb_data = client_data->private_client_data;
  69        panel->pdev.dev.platform_data = &panel->panel_data;
  70        ret = platform_device_register(&panel->pdev);
  71        if (ret) {
  72                kfree(panel);
  73                return ret;
  74        }
  75        return 0;
  76}
  77
  78static int mddi_dummy_remove(struct platform_device *pdev)
  79{
  80        struct panel_info *panel = platform_get_drvdata(pdev);
  81        kfree(panel);
  82        return 0;
  83}
  84
  85static struct platform_driver mddi_client_dummy = {
  86        .probe = mddi_dummy_probe,
  87        .remove = mddi_dummy_remove,
  88        .driver = { .name = "mddi_c_dummy" },
  89};
  90
  91static int __init mddi_client_dummy_init(void)
  92{
  93        platform_driver_register(&mddi_client_dummy);
  94        return 0;
  95}
  96
  97module_init(mddi_client_dummy_init);
  98
  99