diff options
author | Daniel Hillenbrand <daniel.hillenbrand@codeworkx.de> | 2012-06-19 15:50:36 +0200 |
---|---|---|
committer | Daniel Hillenbrand <daniel.hillenbrand@codeworkx.de> | 2012-06-19 15:50:36 +0200 |
commit | 13863ab96c999e899683483a7cf7d0b8fe0b8323 (patch) | |
tree | 7427411b78441807b0c9cfbdeb5a4b4635bfbca0 | |
parent | 463bb2629d030b2dcc596c8a37576c28ec620a9e (diff) | |
download | kernel_samsung_espresso10-13863ab96c999e899683483a7cf7d0b8fe0b8323.tar.gz kernel_samsung_espresso10-13863ab96c999e899683483a7cf7d0b8fe0b8323.tar.bz2 kernel_samsung_espresso10-13863ab96c999e899683483a7cf7d0b8fe0b8323.zip |
rpmsg: fixes to work with tuna pvr
-rw-r--r-- | drivers/rpmsg/rpmsg_omx.c | 37 | ||||
-rw-r--r-- | drivers/rpmsg/rpmsg_resmgr.c | 41 |
2 files changed, 18 insertions, 60 deletions
diff --git a/drivers/rpmsg/rpmsg_omx.c b/drivers/rpmsg/rpmsg_omx.c index 488df0f7e27..87df8e397af 100644 --- a/drivers/rpmsg/rpmsg_omx.c +++ b/drivers/rpmsg/rpmsg_omx.c @@ -38,7 +38,6 @@ #include <mach/tiler.h> -#include "../gpu/pvr/omap4/sysconfig.h" #ifdef CONFIG_ION_OMAP #include <linux/ion.h> #include <linux/omap_ion.h> @@ -247,7 +246,7 @@ static void rpmsg_omx_cb(struct rpmsg_channel *rpdev, void *data, int len, break; } rsp = (struct omx_conn_rsp *) hdr->data; - dev_info(&rpdev->dev, "conn rsp: status %d addr %d\n", + dev_dbg(&rpdev->dev, "conn rsp: status %d addr %d\n", rsp->status, rsp->addr); omx->dst = rsp->addr; if (rsp->status) @@ -394,36 +393,6 @@ long rpmsg_omx_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) break; } #endif - case OMX_IOCSGXLATENCY: - { - bool val; - static uint sgx_latency_default; - static bool is_sgx_latency_reset = true; - if (get_user(val, (char __user *) arg)) { - dev_err(omxserv->dev, - "%s: %d: get_user fail: %d\n", __func__, - _IOC_NR(cmd), ret); - return -EFAULT; - } - - if (is_sgx_latency_reset) - sgx_latency_default = get_sgx_apm_latency(); - - if (!val) { - /* Set APM latency default value */ - set_sgx_apm_latency(sgx_latency_default); - is_sgx_latency_reset = true; - } - - if ((val > 0) && is_sgx_latency_reset) { - /* Set APM latency value for MM use case */ - set_sgx_apm_latency(SGX_ACTIVE_POWER_LATENCY_MS); - is_sgx_latency_reset = false; - } - break; - - } - default: dev_warn(omxserv->dev, "unhandled ioctl cmd: %d\n", cmd); break; @@ -475,7 +444,7 @@ static int rpmsg_omx_open(struct inode *inode, struct file *filp) list_add(&omx->next, &omxserv->list); mutex_unlock(&omxserv->lock); - dev_info(omxserv->dev, "local addr assigned: 0x%x\n", omx->ept->addr); + dev_dbg(omxserv->dev, "local addr assigned: 0x%x\n", omx->ept->addr); return 0; } @@ -504,7 +473,7 @@ static int rpmsg_omx_release(struct inode *inode, struct file *filp) disc_req->addr = omx->dst; use = sizeof(*hdr) + hdr->len; - dev_info(omxserv->dev, "Disconnecting from OMX service at %d\n", + dev_dbg(omxserv->dev, "Disconnecting from OMX service at %d\n", omx->dst); /* send the msg to the remote OMX connection service */ diff --git a/drivers/rpmsg/rpmsg_resmgr.c b/drivers/rpmsg/rpmsg_resmgr.c index 5598cac2ca5..a13094dc3b2 100644 --- a/drivers/rpmsg/rpmsg_resmgr.c +++ b/drivers/rpmsg/rpmsg_resmgr.c @@ -77,8 +77,7 @@ static const char const *rnames[] = { [RPRM_I2C] = "I2C", }; -static const char *rname(u32 type) -{ +static const char *rname(u32 type) { if (type >= RPRM_MAX) return "(invalid)"; return rnames[type]; @@ -106,7 +105,6 @@ struct rprm { struct rprm_auxclk_depot { struct clk *aux_clk; struct clk *src; - struct clk *src_parent; }; struct rprm_regulator_depot { @@ -173,6 +171,7 @@ static int rprm_auxclk_request(struct rprm_elem *e, struct rprm_auxclk *obj) char clk_name[NAME_SIZE]; char src_clk_name[NAME_SIZE]; struct rprm_auxclk_depot *acd; + struct clk *src_parent; if ((obj->id < AUX_CLK_MIN) || (obj->id > AUX_CLK_MAX)) { pr_err("Invalid aux_clk %d\n", obj->id); @@ -203,15 +202,15 @@ static int rprm_auxclk_request(struct rprm_elem *e, struct rprm_auxclk *obj) goto error_aux; } - acd->src_parent = clk_get(NULL, clk_src_name[obj->parent_src_clk]); - if (!acd->src_parent) { + src_parent = clk_get(NULL, clk_src_name[obj->parent_src_clk]); + if (!src_parent) { pr_err("%s: unable to get parent clock %s\n", __func__, clk_src_name[obj->parent_src_clk]); ret = -EIO; goto error_aux_src; } - ret = clk_set_rate(acd->src_parent, (obj->parent_src_clk_rate * MHZ)); + ret = clk_set_rate(src_parent, (obj->parent_src_clk_rate * MHZ)); if (ret) { pr_err("%s: rate not supported by %s\n", __func__, clk_src_name[obj->parent_src_clk]); @@ -219,7 +218,7 @@ static int rprm_auxclk_request(struct rprm_elem *e, struct rprm_auxclk *obj) goto error_aux_src_parent; } - ret = clk_set_parent(acd->src, acd->src_parent); + ret = clk_set_parent(acd->src, src_parent); if (ret) { pr_err("%s: unable to set clk %s as parent of aux_clk %s\n", __func__, @@ -228,10 +227,9 @@ static int rprm_auxclk_request(struct rprm_elem *e, struct rprm_auxclk *obj) goto error_aux_src_parent; } - ret = clk_enable(acd->src_parent); + ret = clk_enable(acd->src); if (ret) { - pr_err("%s: error enabling %s\n", __func__, - acd->src_parent->name); + pr_err("%s: error enabling %s\n", __func__, src_clk_name); goto error_aux_src_parent; } @@ -246,6 +244,7 @@ static int rprm_auxclk_request(struct rprm_elem *e, struct rprm_auxclk *obj) pr_err("%s: error enabling %s\n", __func__, clk_name); goto error_aux_enable; } + clk_put(src_parent); e->handle = acd; @@ -253,7 +252,7 @@ static int rprm_auxclk_request(struct rprm_elem *e, struct rprm_auxclk *obj) error_aux_enable: clk_disable(acd->src); error_aux_src_parent: - clk_put(acd->src_parent); + clk_put(src_parent); error_aux_src: clk_put(acd->src); error_aux: @@ -266,19 +265,10 @@ error: static void rprm_auxclk_release(struct rprm_auxclk_depot *obj) { - clk_disable(obj->aux_clk); - clk_put(obj->aux_clk); - clk_put(obj->src); - - /* the above auxclk disable will disable and it's parent - * clk auxclk_src_ck. The auxclk_src_ck clock source is sysclk, - * dpll_core or dpll_per. The source clock of auxclk_src_ck is need to - * be disabled latter than auxclk. The delay is hardware specific and - * we will add enough time to cover a worst case. - */ - usleep_range(200, 250); - clk_disable(obj->src_parent); - clk_put(obj->src_parent); + clk_disable((struct clk *)obj->aux_clk); + clk_put((struct clk *)obj->aux_clk); + clk_disable((struct clk *)obj->src); + clk_put((struct clk *)obj->src); kfree(obj); } @@ -303,8 +293,7 @@ int rprm_regulator_request(struct rprm_elem *e, struct rprm_regulator *obj) reg_name = regulator_name[obj->id - 1]; rd->reg_p = regulator_get_exclusive(NULL, reg_name); if (IS_ERR_OR_NULL(rd->reg_p)) { - pr_err("%s: error providing regulator %s\n", - __func__, reg_name); + pr_err("%s: error providing regulator %s\n", __func__, reg_name); ret = -EINVAL; goto error; } |