From: rkir@google.com
To: gregkh@linuxfoundation.org
Cc: linux-kernel@vger.kernel.org, tkjos@google.com,
Roman Kiryanov <rkir@google.com>
Subject: [PATCH 06/15] platform: goldfish: pipe: Move memory allocation from probe to init
Date: Tue, 2 Oct 2018 15:18:54 -0700 [thread overview]
Message-ID: <20181002221903.19476-6-rkir@google.com> (raw)
In-Reply-To: <20181002221903.19476-1-rkir@google.com>
From: Roman Kiryanov <rkir@google.com>
There will be two separate init functions for v1 and v2
(different driver versions) and they will allocate different
state.
Signed-off-by: Roman Kiryanov <rkir@google.com>
---
drivers/platform/goldfish/goldfish_pipe.c | 42 +++++++++++++----------
1 file changed, 23 insertions(+), 19 deletions(-)
diff --git a/drivers/platform/goldfish/goldfish_pipe.c b/drivers/platform/goldfish/goldfish_pipe.c
index bc431f04c4cf..445c0c0c66c4 100644
--- a/drivers/platform/goldfish/goldfish_pipe.c
+++ b/drivers/platform/goldfish/goldfish_pipe.c
@@ -208,8 +208,6 @@ struct goldfish_pipe_dev {
struct device *pdev_dev;
/* Some device-specific data */
- int irq;
- int version;
unsigned char __iomem *base;
/* an irq tasklet to run goldfish_interrupt_task */
@@ -817,14 +815,23 @@ static void write_pa_addr(void *addr, void __iomem *portl, void __iomem *porth)
}
static int goldfish_pipe_device_init(struct platform_device *pdev,
- struct goldfish_pipe_dev *dev)
+ char __iomem *base,
+ int irq)
{
+ struct goldfish_pipe_dev *dev;
int err;
+ dev = devm_kzalloc(&pdev->dev, sizeof(*dev), GFP_KERNEL);
+ if (!dev)
+ return -ENOMEM;
+
+ dev->magic = &goldfish_pipe_device_deinit;
+ spin_lock_init(&dev->lock);
+
tasklet_init(&dev->irq_tasklet, &goldfish_interrupt_task,
(unsigned long)dev);
- err = devm_request_irq(&pdev->dev, dev->irq,
+ err = devm_request_irq(&pdev->dev, irq,
goldfish_pipe_interrupt,
IRQF_SHARED, "goldfish_pipe", dev);
if (err) {
@@ -839,6 +846,7 @@ static int goldfish_pipe_device_init(struct platform_device *pdev,
return err;
}
+ dev->base = base;
dev->pdev_dev = &pdev->dev;
dev->first_signalled_pipe = NULL;
dev->pipes_capacity = INITIAL_PIPES_CAPACITY;
@@ -892,22 +900,18 @@ static void goldfish_pipe_device_deinit(struct platform_device *pdev,
static int goldfish_pipe_probe(struct platform_device *pdev)
{
struct resource *r;
- struct goldfish_pipe_dev *dev;
-
- dev = devm_kzalloc(&pdev->dev, sizeof(*dev), GFP_KERNEL);
- if (!dev)
- return -ENOMEM;
-
- dev->magic = &goldfish_pipe_device_deinit;
- spin_lock_init(&dev->lock);
+ char __iomem *base;
+ int irq;
+ int version;
r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
if (!r || resource_size(r) < PAGE_SIZE) {
dev_err(&pdev->dev, "can't allocate i/o page\n");
return -EINVAL;
}
- dev->base = devm_ioremap(&pdev->dev, r->start, PAGE_SIZE);
- if (!dev->base) {
+
+ base = devm_ioremap(&pdev->dev, r->start, PAGE_SIZE);
+ if (!base) {
dev_err(&pdev->dev, "ioremap failed\n");
return -EINVAL;
}
@@ -916,7 +920,7 @@ static int goldfish_pipe_probe(struct platform_device *pdev)
if (!r)
return -EINVAL;
- dev->irq = r->start;
+ irq = r->start;
/*
* Exchange the versions with the host device
@@ -925,12 +929,12 @@ static int goldfish_pipe_probe(struct platform_device *pdev)
* reading device version back: this allows the host implementation to
* detect the old driver (if there was no version write before read).
*/
- writel(PIPE_DRIVER_VERSION, dev->base + PIPE_REG_VERSION);
- dev->version = readl(dev->base + PIPE_REG_VERSION);
- if (WARN_ON(dev->version < PIPE_CURRENT_DEVICE_VERSION))
+ writel(PIPE_DRIVER_VERSION, base + PIPE_REG_VERSION);
+ version = readl(base + PIPE_REG_VERSION);
+ if (WARN_ON(version < PIPE_CURRENT_DEVICE_VERSION))
return -EINVAL;
- return goldfish_pipe_device_init(pdev, dev);
+ return goldfish_pipe_device_init(pdev, base, irq);
}
static int goldfish_pipe_remove(struct platform_device *pdev)
--
2.19.0.605.g01d371f741-goog
next prev parent reply other threads:[~2018-10-02 22:20 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-10-02 22:18 [PATCH 01/15] platform: goldfish: pipe: Remove the goldfish_interrupt_tasklet global variable rkir
2018-10-02 22:18 ` [PATCH 02/15] platform: goldfish: pipe: Remove the goldfish_pipe_miscdev " rkir
2018-10-02 22:18 ` [PATCH 03/15] platform: goldfish: pipe: Remove the goldfish_pipe_dev " rkir
2018-10-02 22:18 ` [PATCH 04/15] platform: goldfish: pipe: Call misc_deregister if init fails rkir
2018-10-02 22:18 ` [PATCH 05/15] platform: goldfish: pipe: Remove redundant casting rkir
2018-10-02 22:18 ` rkir [this message]
2018-10-02 22:18 ` [PATCH 07/15] platform: goldfish: pipe: Return status from "deinit" since "remove" does not do much rkir
2018-10-02 22:18 ` [PATCH 08/15] platform: goldfish: pipe: Add a blank line to separate varibles and code rkir
2018-10-02 22:18 ` [PATCH 09/15] platform: goldfish: pipe: Move goldfish_pipe to goldfish_pipe_v2 rkir
2018-10-02 22:18 ` [PATCH 10/15] platform: goldfish: pipe: Remove the license boilerplate rkir
2018-10-02 22:18 ` [PATCH 11/15] platform: goldfish: pipe: Split the driver to v2 specific and the rest rkir
2018-10-02 22:19 ` [PATCH 12/15] platform: goldfish: pipe: Rename the init function (add "v2") rkir
2018-10-02 22:19 ` [PATCH 13/15] platform: goldfish: pipe: Add a dedicated constant for the device name rkir
2018-10-02 22:19 ` [PATCH 14/15] platform: goldfish: pipe: Rename PIPE_REG to PIPE_V2_REG rkir
2018-10-02 22:19 ` [PATCH 15/15] platform: goldfish: pipe: Add the goldfish_pipe_v1 driver rkir
2018-10-02 22:30 ` [PATCH 01/15] platform: goldfish: pipe: Remove the goldfish_interrupt_tasklet global variable Greg KH
2018-10-02 22:33 ` Roman Kiryanov
2018-10-02 22:42 ` Greg KH
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20181002221903.19476-6-rkir@google.com \
--to=rkir@google.com \
--cc=gregkh@linuxfoundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=tkjos@google.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.