Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 374251
b: refs/heads/master
c: 8b4aec9
h: refs/heads/master
i:
  374249: bbe56a6
  374247: 1b1583d
v: v3
  • Loading branch information
Robert Tivy authored and Ohad Ben-Cohen committed Apr 7, 2013
1 parent 6ed5e78 commit 50fd58d
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 5 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: e5bc0294ca03a684f322a1a37538ebc3c121d86a
refs/heads/master: 8b4aec9ac7b59754df9c594569af9ae8f456ee07
28 changes: 24 additions & 4 deletions trunk/drivers/remoteproc/remoteproc_core.c
Original file line number Diff line number Diff line change
Expand Up @@ -1236,11 +1236,11 @@ static struct device_type rproc_type = {
* @dev: the underlying device
* @name: name of this remote processor
* @ops: platform-specific handlers (mainly start/stop)
* @firmware: name of firmware file to load
* @firmware: name of firmware file to load, can be NULL
* @len: length of private data needed by the rproc driver (in bytes)
*
* Allocates a new remote processor handle, but does not register
* it yet.
* it yet. if @firmware is NULL, a default name is used.
*
* This function should be used by rproc implementations during initialization
* of the remote processor.
Expand All @@ -1259,19 +1259,39 @@ struct rproc *rproc_alloc(struct device *dev, const char *name,
const char *firmware, int len)
{
struct rproc *rproc;
char *p, *template = "rproc-%s-fw";
int name_len = 0;

if (!dev || !name || !ops)
return NULL;

rproc = kzalloc(sizeof(struct rproc) + len, GFP_KERNEL);
if (!firmware)
/*
* Make room for default firmware name (minus %s plus '\0').
* If the caller didn't pass in a firmware name then
* construct a default name. We're already glomming 'len'
* bytes onto the end of the struct rproc allocation, so do
* a few more for the default firmware name (but only if
* the caller doesn't pass one).
*/
name_len = strlen(name) + strlen(template) - 2 + 1;

rproc = kzalloc(sizeof(struct rproc) + len + name_len, GFP_KERNEL);
if (!rproc) {
dev_err(dev, "%s: kzalloc failed\n", __func__);
return NULL;
}

if (!firmware) {
p = (char *)rproc + sizeof(struct rproc) + len;
snprintf(p, name_len, template, name);
} else {
p = (char *)firmware;
}

rproc->firmware = p;
rproc->name = name;
rproc->ops = ops;
rproc->firmware = firmware;
rproc->priv = &rproc[1];

device_initialize(&rproc->dev);
Expand Down

0 comments on commit 50fd58d

Please sign in to comment.