static int ipu_drm_probe(struct platform_device *pdev) { struct ipu_client_platformdata *pdata = pdev->dev.platform_data; struct ipu_crtc *ipu_crtc; int ret; if (!pdata) return -EINVAL; pdev->dev.coherent_dma_mask = DMA_BIT_MASK(32); ipu_crtc = devm_kzalloc(&pdev->dev, sizeof(*ipu_crtc), GFP_KERNEL); if (!ipu_crtc) return -ENOMEM; ipu_crtc->dev = &pdev->dev; ret = ipu_crtc_init(ipu_crtc, pdata); if (ret) return ret; platform_set_drvdata(pdev, ipu_crtc); return 0; }
static int ipu_drm_bind(struct device *dev, struct device *master, void *data) { struct ipu_client_platformdata *pdata = dev->platform_data; struct drm_device *drm = data; struct ipu_crtc *ipu_crtc; int ret; ipu_crtc = devm_kzalloc(dev, sizeof(*ipu_crtc), GFP_KERNEL); if (!ipu_crtc) return -ENOMEM; ipu_crtc->dev = dev; ret = ipu_crtc_init(ipu_crtc, pdata, drm); if (ret) return ret; dev_set_drvdata(dev, ipu_crtc); return 0; }