Esempio n. 1
0
static __s32 camera_request_clk(__u32 csi_index,
                                        struct clk **csi_module_clk, 
                                        struct clk **csi_clk_src, 
                                        __hdle *csi_pin_hd)
{
#ifdef VFE_CLK
    char *csi[2] = {VFE_MASTER_CLK0, VFE_MASTER_CLK1};
    __s32 ret = 0;

    //*csi_pin_hd = gpio_request_ex(csi_para[csi_index], NULL);
    
    ret = camera_req_mclk_pin(csi_index);
    if(ret != 0) {
        camera_err("request Mclock fail !!\n");
        return ret;
    }

    *csi_module_clk = clk_get(NULL, csi[csi_index]);
    if(*csi_module_clk == NULL) {
    	camera_err("get %s module clk error!\n", csi[csi_index]);
    	return -ECLKSRC;
    }

    *csi_clk_src = clk_get(NULL, HOSC_CLK);
    if (*csi_clk_src == NULL) {
        camera_err("get %s hosc source clk error!\n", csi[csi_index]);	
    	return -ECLKSRC;
    }

    ret = clk_set_parent(*csi_module_clk, *csi_clk_src);
    if (ret == -1) {
        camera_err(" csi set parent failed \n");
        return -ECLKSRC;
    }

    clk_put(*csi_clk_src);

    ret = clk_set_rate(*csi_module_clk, CSI_MCLK);
    if (ret == -1) {
    	camera_err("set %s module clock error\n", csi[csi_index]);
    	return -ECLKSRC;
    }

	ret = clk_prepare_enable(*csi_module_clk);
    if (ret == -1) {
        camera_err("enable module clock error\n");
        return -ECLKSRC;
    }

    return 0;
    
#else
		return 0;
#endif
}
static __s32 camera_request_clk(__u32 csi_index,
                                        struct clk **csi_module_clk, 
                                        struct clk **csi_clk_src, 
                                        __hdle *csi_pin_hd)
{
        char *csi[2] = {CLK_MOD_CSI0, CLK_MOD_CSI1};
        __s32 ret = 0;
    
        //*csi_pin_hd = gpio_request_ex(csi_para[csi_index], NULL);
        ret = camera_req_mclk_pin(csi_index);
        if(ret != 0) {
                camera_err("request Mclock fail !!\n");
                return ret;
        }
    
        *csi_module_clk = clk_get(NULL, csi[csi_index]);
        if(*csi_module_clk == NULL) {
        	camera_err("get %s module clk error!\n", csi[csi_index]);
        	return -ECLKSRC;
        }
    
        *csi_clk_src = clk_get(NULL, CLK_SYS_HOSC);//"hosc"
        if (*csi_clk_src == NULL) {
                camera_err("get %s hosc source clk error!\n", csi[csi_index]);	
        	return -ECLKSRC;
        }
    
        ret = clk_set_parent(*csi_module_clk, *csi_clk_src);
        if (ret == -1) {
                camera_err(" csi set parent failed \n");
                return -ECLKSRC;
        }

        clk_put(*csi_clk_src);

        ret = clk_set_rate(*csi_module_clk, CSI_MCLK);
        if (ret == -1) {
        	camera_err("set %s module clock error\n", csi[csi_index]);
        	return -ECLKSRC;
        }

        ret = clk_enable(*csi_module_clk);
        if (ret == -1) {
                camera_err("enable module clock error\n");

                return -ECLKSRC;
        }

        return 0;
}