static int it660xin_probe(struct platform_device *pdev) { int ret = 0; it660xin_t *it660_devp = kmalloc(sizeof(it660xin_t),GFP_KERNEL); printk("[it660..] it660xin probe start.\n"); if(!it660_devp){ printk("[it660..] %s kmalloc error.\n",__func__); return -ENOMEM; } memset(it660_devp,0,sizeof(it660xin_t)); /*init the it660xin frontend and register*/ if(tvin_frontend_init(&it660_devp->frontend,&it660xin_dec_ops,&it660xin_sm_ops,0)) { printk("[it660..] %s init it660 frontend error.\n",__func__); ret = -1; } if(tvin_reg_frontend(&it660_devp->frontend)){ printk("[it660..] %s register it660 frontend error.\n",__func__); ret = -1; } platform_set_drvdata(pdev,it660_devp); printk("[it660..] it660xin probe end.\n"); return ret; }
static int amvdec_csi_probe(struct platform_device *pdev) { int ret; struct amcsi_dev_s *devp; ret = 0; //malloc dev devp = kmalloc(sizeof(struct amcsi_dev_s),GFP_KERNEL); if(!devp){ pr_err("%s: failed to allocate memory\n", __func__); goto fail_kmalloc_dev; } memset(devp,0,sizeof(struct amcsi_dev_s)); //create cdev and register with sysfs ret = csi_add_cdev(&devp->cdev, &amcsi_fops, 0); if (ret) { pr_err("%s: failed to add cdev\n", __func__); goto fail_add_cdev; } devp->dev = csi_create_device(&pdev->dev, 0); if (IS_ERR(devp->dev)) { pr_err("%s: failed to create device\n", __func__); ret = PTR_ERR(devp->dev); goto fail_create_device; } ret = device_create_file(devp->dev,&dev_attr_hw_info); /*register frontend */ sprintf(devp->frontend.name, "%s", DEV_NAME); tvin_frontend_init(&devp->frontend, &amcsi_decoder_ops_s, &amcsi_machine_ops, pdev->id); tvin_reg_frontend(&devp->frontend); /*set pinmux for ITU601 A and ITU601 B*/ /* set drvdata */ dev_set_drvdata(devp->dev, devp); platform_set_drvdata(pdev, devp); printk("amvdec_csi probe ok.\n"); return ret; fail_create_device: cdev_del(&devp->cdev); fail_add_cdev: kfree(devp); fail_kmalloc_dev: return ret; }
int sii5293_register_tvin_frontend(struct tvin_frontend_s *frontend) { int ret = 0; ret = tvin_frontend_init(frontend, &sii5293_tvin_dec_ops, &sii5293_tvin_sm_ops, 0); if( ret != 0 ) { printk("[%s] init tvin frontend failed = %d\n", __FUNCTION__, ret); return -1; } ret = tvin_reg_frontend(frontend); if( ret != 0 ) { printk("[%s] register tv in frontend failed = %d\n", __FUNCTION__, ret); return -2; } return 0; }