static int platform_lcd_resume(struct device *dev) { struct platform_lcd *plcd = dev_get_drvdata(dev); plcd->suspended = 0; platform_lcd_set_power(plcd->lcd, plcd->power); return 0; }
static int platform_lcd_suspend(struct platform_device *pdev, pm_message_t st) { struct platform_lcd *plcd = platform_get_drvdata(pdev); plcd->suspended = 1; platform_lcd_set_power(plcd->lcd, plcd->power); return 0; }
static int platform_lcd_probe(struct platform_device *pdev) { struct plat_lcd_data *pdata; struct platform_lcd *plcd; struct device *dev = &pdev->dev; int err; pdata = dev_get_platdata(&pdev->dev); if (!pdata) { dev_err(dev, "no platform data supplied\n"); return -EINVAL; } if (pdata->probe) { err = pdata->probe(pdata); if (err) return err; } plcd = devm_kzalloc(&pdev->dev, sizeof(struct platform_lcd), GFP_KERNEL); if (!plcd) return -ENOMEM; plcd->us = dev; plcd->pdata = pdata; plcd->lcd = devm_lcd_device_register(&pdev->dev, dev_name(dev), dev, plcd, &platform_lcd_ops); if (IS_ERR(plcd->lcd)) { dev_err(dev, "cannot register lcd device\n"); return PTR_ERR(plcd->lcd); } platform_set_drvdata(pdev, plcd); platform_lcd_set_power(plcd->lcd, FB_BLANK_NORMAL); return 0; }
static int __devinit platform_lcd_probe(struct platform_device *pdev) { struct plat_lcd_data *pdata; struct platform_lcd *plcd; struct device *dev = &pdev->dev; int err; pdata = pdev->dev.platform_data; if (!pdata) { dev_err(dev, "no platform data supplied\n"); return -EINVAL; } plcd = kzalloc(sizeof(struct platform_lcd), GFP_KERNEL); if (!plcd) { dev_err(dev, "no memory for state\n"); return -ENOMEM; } plcd->us = dev; plcd->pdata = pdata; plcd->lcd = lcd_device_register(dev_name(dev), dev, plcd, &platform_lcd_ops); if (IS_ERR(plcd->lcd)) { dev_err(dev, "cannot register lcd device\n"); err = PTR_ERR(plcd->lcd); goto err_mem; } platform_set_drvdata(pdev, plcd); platform_lcd_set_power(plcd->lcd, FB_BLANK_NORMAL); return 0; err_mem: kfree(plcd); return err; }