|
@@ -776,6 +776,14 @@ static struct miscdevice goldfish_pipe_miscdev = {
|
|
|
.fops = &goldfish_pipe_fops,
|
|
|
};
|
|
|
|
|
|
+static void write_pa_addr(void *addr, void __iomem *portl, void __iomem *porth)
|
|
|
+{
|
|
|
+ const unsigned long paddr = __pa(addr);
|
|
|
+
|
|
|
+ writel(upper_32_bits(paddr), porth);
|
|
|
+ writel(lower_32_bits(paddr), portl);
|
|
|
+}
|
|
|
+
|
|
|
static int goldfish_pipe_device_init(struct platform_device *pdev)
|
|
|
{
|
|
|
struct goldfish_pipe_dev *dev = &goldfish_pipe_dev;
|
|
@@ -816,22 +824,17 @@ static int goldfish_pipe_device_init(struct platform_device *pdev)
|
|
|
}
|
|
|
|
|
|
/* Send the buffer addresses to the host */
|
|
|
- {
|
|
|
- u64 paddr = __pa(&dev->buffers->signalled_pipe_buffers);
|
|
|
-
|
|
|
- writel((u32)(unsigned long)(paddr >> 32),
|
|
|
- dev->base + PIPE_REG_SIGNAL_BUFFER_HIGH);
|
|
|
- writel((u32)(unsigned long)paddr,
|
|
|
- dev->base + PIPE_REG_SIGNAL_BUFFER);
|
|
|
- writel((u32)MAX_SIGNALLED_PIPES,
|
|
|
- dev->base + PIPE_REG_SIGNAL_BUFFER_COUNT);
|
|
|
-
|
|
|
- paddr = __pa(&dev->buffers->open_command_params);
|
|
|
- writel((u32)(unsigned long)(paddr >> 32),
|
|
|
- dev->base + PIPE_REG_OPEN_BUFFER_HIGH);
|
|
|
- writel((u32)(unsigned long)paddr,
|
|
|
- dev->base + PIPE_REG_OPEN_BUFFER);
|
|
|
- }
|
|
|
+ write_pa_addr(&dev->buffers->signalled_pipe_buffers,
|
|
|
+ dev->base + PIPE_REG_SIGNAL_BUFFER,
|
|
|
+ dev->base + PIPE_REG_SIGNAL_BUFFER_HIGH);
|
|
|
+
|
|
|
+ writel((u32)MAX_SIGNALLED_PIPES,
|
|
|
+ dev->base + PIPE_REG_SIGNAL_BUFFER_COUNT);
|
|
|
+
|
|
|
+ write_pa_addr(&dev->buffers->open_command_params,
|
|
|
+ dev->base + PIPE_REG_OPEN_BUFFER,
|
|
|
+ dev->base + PIPE_REG_OPEN_BUFFER_HIGH);
|
|
|
+
|
|
|
return 0;
|
|
|
}
|
|
|
|