static int __devinit adv739x_probe(struct i2c_client *client, const struct i2c_device_id *id) { struct fsl_mxc_lcd_platform_data *plat = client->dev.platform_data; struct adv739x_data *adv739x; int ret; if (!i2c_check_functionality(client->adapter, I2C_FUNC_SMBUS_BYTE | I2C_FUNC_SMBUS_BYTE_DATA)) { pr_err("%s: need smbus\n", __func__); return -ENODEV; } adv739x = kzalloc(sizeof(struct adv739x_data), GFP_KERNEL); if (!adv739x) { pr_err("%s: no mem\n", __func__); return -ENOMEM; } adv739x->client = client; adv739x->ifmt = plat->default_ifmt; adv739x->disp_adv739x = mxc_dispdrv_register(&adv739x_drv); mxc_dispdrv_setdata(adv739x->disp_adv739x, adv739x); i2c_set_clientdata(client, adv739x); ret = device_create_file(&client->dev, &dev_attr_adv739x_reg); if (ret < 0) pr_warn("failed to add adv739x sysfs files\n"); return 0; }
/*! * This function is called by the driver framework to initialize the LDB * device. * * @param dev The device structure for the LDB passed in by the * driver framework. * * @return Returns 0 on success or negative error code on error */ static int ldb_probe(struct platform_device *pdev) { int ret = 0; struct ldb_data *ldb; ldb = kzalloc(sizeof(struct ldb_data), GFP_KERNEL); if (!ldb) { ret = -ENOMEM; goto alloc_failed; } ldb->pdev = pdev; ldb->disp_ldb = mxc_dispdrv_register(&ldb_drv); mxc_dispdrv_setdata(ldb->disp_ldb, ldb); dev_set_drvdata(&pdev->dev, ldb); alloc_failed: return ret; }
static int mxc_lcdif_probe(struct platform_device *pdev) { int ret = 0; struct mxc_lcdif_data *lcdif; lcdif = kzalloc(sizeof(struct mxc_lcdif_data), GFP_KERNEL); if (!lcdif) { ret = -ENOMEM; goto alloc_failed; } lcdif->pdev = pdev; lcdif->disp_lcdif = mxc_dispdrv_register(&lcdif_drv); mxc_dispdrv_setdata(lcdif->disp_lcdif, lcdif); dev_set_drvdata(&pdev->dev, lcdif); alloc_failed: return ret; }