int clk_disable_test_case1(void)
{
    struct clk *sio_clk = clk_get(NULL,"sio_clk");
   struct clk *apb_pclk = clk_get(NULL,"sleep_clk");
	int ret = 0;
    clk_disable(sio_clk);
    if (reg_message[sio_clk->clkid].enable_flag){
                ret = sio_clk->ops->isenable(sio_clk);
    }
    if(ret){
            clk_printf("can't disable sio_clk\n");
            return CLK_TEST_ERROR;
    }
	ret =  clk_enable(apb_pclk);
	clk_disable(apb_pclk);
	ret |= clk_round_rate(apb_pclk,100);
	ret |= clk_set_rate(apb_pclk,100);
	ret |= clk_set_parent(apb_pclk,sio_clk);
	ret |= clk_status(apb_pclk);
	if(ret)
		return CLK_TEST_OK;
	if(!ret)
		return CLK_TEST_ERROR;
    return CLK_TEST_OK;
}
void debug_clk_status(unsigned int num)
{
        const char *clk_name = NULL;
        struct clk *clk = NULL;
        int ret = 0;
        clk_name = hi6930_clk_lookup[num].con_id;
        clk = clk_get(NULL, clk_name);
        ret = clk_status(clk);
        clk_printf("clk:%s status = %d\n", clk_name, ret);
        return;
}
int clk_enable_test_case0(void)
{
    struct clk *sio_clk = clk_get(NULL,"sio_clk");
	struct clk *apb_pclk = clk_get(NULL,"sleep_clk");
	struct clk *mmc2_clk = clk_get(NULL,"mmc2_clk");
	unsigned int ret = 0;
	ret =  (unsigned int)clk_enable(apb_pclk);
	clk_disable(apb_pclk);
	ret |= clk_round_rate(apb_pclk,100);
	ret |= clk_set_rate(apb_pclk,100);
	ret |= clk_set_parent(apb_pclk, sio_clk);
	ret |= clk_status(apb_pclk);
        ret =  (unsigned int)clk_enable(mmc2_clk);
	clk_disable(mmc2_clk);
	ret |= clk_round_rate(mmc2_clk,100);
	ret |= clk_set_rate(mmc2_clk,100);
	ret |= clk_status(mmc2_clk);	
	if(ret)
		return CLK_TEST_OK;
    return CLK_TEST_OK;
}
Exemple #4
0
bool_t clk_status(const char * name)
{
	struct clk_t * clk = search_clk(name);

	if(!clk)
		return FALSE;

	if(!clk->get_parent(clk))
		return clk->get_enable(clk);

	if(clk->get_enable(clk))
		return clk_status(clk->get_parent(clk));

	return FALSE;
}
/*clk enable */
static int bsp_i2c_clk_enable(struct balong_i2c_ctrl *i2c_master)
{
	int ret = 0;

	/*1 is enable, 0 is disable , -1 is fail*/
	ret = clk_status(i2c_master->clk);
	if(-1 == ret){
		return I2C_ERROR;
	}
	else if(1 == ret){
		return I2C_OK;
	}

	ret = clk_enable(i2c_master->clk);
	return ret;
}
/*lint --e{737}*/
int clk_get_test_case0(void)
{
    struct clk *sio_clk = clk_get(NULL,"sio_clk");
	struct clk *sio_yclk = clk_get(NULL,"sio_yclk");
	unsigned int ret = 0;
    if(IS_ERR(sio_yclk)){
	    ret = (unsigned int)clk_enable(sio_yclk);
	     clk_disable(sio_yclk);
	     ret |= clk_get_rate(sio_yclk);
	     ret |= clk_set_rate(sio_yclk,100);
	     ret |= clk_round_rate(sio_yclk,100);
	     sio_clk = clk_get_parent(sio_yclk);
	     ret |= clk_set_parent(sio_yclk,sio_clk);
	     ret |= clk_status(sio_yclk);
	     if(ret == 0)
            		return CLK_TEST_OK;
    }
    return CLK_TEST_OK;
}
int clk_enable_test_case1(void)
{
    struct clk *sio_clk = clk_get(NULL,"sio_clk");
	
    struct clk *apb_pclk = clk_get(NULL,"apb_pclk");
    int ret = 0;
    ret =  clk_enable(sio_clk);
    if(ret){
            clk_printf("can't enable sio_clk\n");
            return CLK_TEST_ERROR;
    }
	ret =  clk_enable(apb_pclk);
	clk_disable(apb_pclk);
	ret |= clk_round_rate(apb_pclk,100);
	ret |= clk_set_rate(apb_pclk,100);
	ret |= clk_set_parent(apb_pclk,sio_clk);
	ret |= clk_status(apb_pclk);

	debug_clock();
	debug_clk_enable(30);
	debug_clk_disable(30);
	debug_clk_set_rate(30,100);
	debug_clk_get_rate(30);
	debug_clk_set_parent(30,31);
	debug_clk_status(30);
	
	debug_clk_enable(14);
	debug_clk_disable(14);
	debug_clk_set_rate(14,100);
	debug_clk_get_rate(14);
	debug_clk_set_parent(14,15);
	debug_clk_status(14);
	if(ret)
		return CLK_TEST_OK;
    return CLK_TEST_OK;
}
Exemple #8
0
static ssize_t clk_read_enable(struct kobj_t * kobj, void * buf, size_t size)
{
	struct clk_t * clk = (struct clk_t *)kobj->priv;
	return sprintf(buf, "%d", clk_status(clk->name) ? 1 : 0);
}
Exemple #9
0
static ssize_t clk_read_summary(struct kobj_t * kobj, void * buf, size_t size)
{
	struct clk_t * clk = (struct clk_t *)kobj->priv;
	const char * name = clk->name;
	char * p = buf;
	int len = 0;
	u64_t rate;

	len += sprintf((char *)(p + len), "%-16s %16s %8s\r\n", "name", "rate", "enable");
	while(name)
	{
		rate = clk_get_rate(name);
		len += sprintf((char *)(p + len), "%-16s %6Ld.%06LdMHZ %8d\r\n", name, rate / (u64_t)(1000 * 1000), rate % (u64_t)(1000 * 1000), clk_status(name) ? 1 : 0);
		name = clk_get_parent(name);
	}
	return len;
}