static void pc_clk_disable(struct clk *clk) { int id = to_pcom_clk(clk)->id; /* Ignore clocks that are always on */ if (id == P_EBI1_CLK || id == P_EBI1_FIXED_CLK) return; msm_proc_comm(PCOM_CLKCTL_RPC_DISABLE, &id, NULL); }
static int pc_clk_set_ext_config(struct clk *clk, unsigned long config) { int id = to_pcom_clk(clk)->id; unsigned c = config; int rc = msm_proc_comm(PCOM_CLKCTL_RPC_SET_EXT_CONFIG, &id, &c); if (rc < 0) return rc; else return (int)id < 0 ? -EINVAL : 0; }
static int pc_clk_set_max_rate(struct clk *clk, unsigned long rate) { int id = to_pcom_clk(clk)->id; unsigned r = rate; int rc = msm_proc_comm(PCOM_CLKCTL_RPC_MAX_RATE, &id, &r); if (rc < 0) return rc; else return (int)id < 0 ? -EINVAL : 0; }
static int pc_clk_set_rate(struct clk *clk, unsigned rate) { /* The rate _might_ be rounded off to the nearest KHz value by the * remote function. So a return value of 0 doesn't necessarily mean * that the exact rate was set successfully. */ int id = to_pcom_clk(clk)->id; int rc = msm_proc_comm(PCOM_CLKCTL_RPC_SET_RATE, &id, &rate); if (rc < 0) return rc; else return (int)id < 0 ? -EINVAL : 0; }
static int _pc_clk_set_min_rate(struct clk *clk, unsigned long rate) { int rc; int id = to_pcom_clk(clk)->id; bool ignore_error = (cpu_is_msm7x27() && id == P_EBI1_CLK && rate >= INT_MAX); unsigned r = rate; rc = msm_proc_comm(PCOM_CLKCTL_RPC_MIN_RATE, &id, &r); if (rc < 0) return rc; else if (ignore_error) return 0; else return (int)id < 0 ? -EINVAL : 0; }
/* * glue for the proc_comm interface */ static int pc_clk_enable(struct clk *clk) { int rc; int id = to_pcom_clk(clk)->id; /* Ignore clocks that are always on */ if (id == P_EBI1_CLK || id == P_EBI1_FIXED_CLK) return 0; rc = msm_proc_comm(PCOM_CLKCTL_RPC_ENABLE, &id, NULL); if (rc < 0) return rc; else return (int)id < 0 ? -EINVAL : 0; }
/* * glue for the proc_comm interface */ static int pc_clk_enable(struct clk *clk) { int rc; int id = to_pcom_clk(clk)->id; /* Ignore clocks that are always on */ if (id == P_EBI1_CLK || id == P_EBI1_FIXED_CLK) return 0; /* FIXME: disable clock id 86 initialy. * this clock block CP sleep. * this problem looks like Qualcomm issue. * Use follow code temporary until solve that. */ if (id == 86) return 0; rc = msm_proc_comm(PCOM_CLKCTL_RPC_ENABLE, &id, NULL); if (rc < 0) return rc; else return (int)id < 0 ? -EINVAL : 0; }
static int pc_reset(struct clk *clk, enum clk_reset_action action) { int id = to_pcom_clk(clk)->id; return pc_clk_reset(id, action); }