static int mapphone_panel_probe(struct omap_dss_device *dssdev) { int pixel_size = 24; struct mapphone_data *data; struct omap_panel_device panel_dev; DBG("probe\n"); if (mapphone_panel_dt_panel_probe(&pixel_size)) printk(KERN_INFO "panel: using non-dt configuration\n"); panel_print_dt(); dssdev->ctrl.pixel_size = pixel_size; dssdev->panel.config = OMAP_DSS_LCD_TFT; dssdev->panel.timings = mapphone_panel_timings; data = kmalloc(sizeof(struct mapphone_data), GFP_KERNEL); if (!data) return -ENOMEM; memset(data, 0, sizeof(data)); strncpy(panel_dev.name, dssdev->name, OMAP_PANEL_MAX_NAME_SIZE); panel_dev.fod_disable = mapphone_panel_disable_local; panel_dev.dssdev = dssdev; data->panel_handle = omap_panel_register(&panel_dev); if (data->panel_handle == NULL) { printk(KERN_ERR "Panel Register Failed\n"); kfree(data); data = NULL; return -ENODEV; } INIT_WORK(&data->work, mapphone_panel_display_on); init_waitqueue_head(&data->wait); #ifdef CONFIG_FB_OMAP2_MTD_LOGO atomic_set(&data->state, PANEL_OFF); #else atomic_set(&data->state, PANEL_ON); #endif data->dssdev = dssdev; dssdev->data = data; return 0; }
static int mapphone_panel_probe(struct omap_dss_device *dssdev) { int error; int pixel_size = 24; struct mapphone_data *data; struct omap_panel_device panel_dev; DBG("probe\n"); data = kmalloc(sizeof(struct mapphone_data), GFP_KERNEL); if (!data) return -ENOMEM; memset(data, 0, sizeof(data)); data->te_scan_line = 0x300; /* default value for WVGA display */ data->dssdev = dssdev; dssdev->data = data; if (mapphone_panel_dt_panel_probe(dssdev, &pixel_size)) printk(KERN_INFO "panel: using non-dt configuration\n"); panel_print_dt(dssdev); dssdev->ctrl.pixel_size = pixel_size; dssdev->panel.config = OMAP_DSS_LCD_TFT; dssdev->panel.timings = mapphone_panel_timings; strncpy(panel_dev.name, dssdev->name, OMAP_PANEL_MAX_NAME_SIZE); panel_dev.fod_disable = mapphone_panel_disable_local; panel_dev.dssdev = dssdev; data->panel_handle = omap_panel_register(&panel_dev); if (data->panel_handle == NULL) { printk(KERN_ERR "Panel Register Failed\n"); goto freedata; } error = device_create_file(&panel_dev.dssdev->dev, &dev_attr_supplier_id); if (error < 0) { pr_err("%s: device supplier_id create failed: %d\n", __func__, error); goto unregister; } error = device_create_file(&panel_dev.dssdev->dev, &dev_attr_supplier_name); if (error < 0) { pr_err("%s: device supplier_name create failed: %d\n", __func__, error); goto removeattr; } atomic_set(&data->state, PANEL_OFF); return 0; removeattr: device_remove_file(&panel_dev.dssdev->dev, &dev_attr_supplier_id); unregister: omap_panel_unregister(data->panel_handle); freedata: kfree(data); data = NULL; return -ENODEV; }