aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Hillenbrand <daniel.hillenbrand@codeworkx.de>2012-06-19 15:50:36 +0200
committerDaniel Hillenbrand <daniel.hillenbrand@codeworkx.de>2012-06-19 15:50:36 +0200
commit13863ab96c999e899683483a7cf7d0b8fe0b8323 (patch)
tree7427411b78441807b0c9cfbdeb5a4b4635bfbca0
parent463bb2629d030b2dcc596c8a37576c28ec620a9e (diff)
downloadkernel_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.c37
-rw-r--r--drivers/rpmsg/rpmsg_resmgr.c41
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;
}