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; }
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; }
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); }
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; }