示例#1
0
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;
}
示例#2
0
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;

}
示例#3
0
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;
}