[POWERPC] Store the base address in dcr_host_t
In its current form, dcr_map() doesn't remember the base address you passed it, which means you need to store it somewhere else. Rather than adding the base to another struct it seems simpler to store it in the dcr_host_t. Signed-off-by: Michael Ellerman <michael@ellerman.id.au> Acked-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> Signed-off-by: Paul Mackerras <paulus@samba.org>
This commit is contained in:
Родитель
ca786f83a9
Коммит
0b94a1eeee
|
@ -104,7 +104,7 @@ u64 of_translate_dcr_address(struct device_node *dev,
|
||||||
dcr_host_t dcr_map(struct device_node *dev, unsigned int dcr_n,
|
dcr_host_t dcr_map(struct device_node *dev, unsigned int dcr_n,
|
||||||
unsigned int dcr_c)
|
unsigned int dcr_c)
|
||||||
{
|
{
|
||||||
dcr_host_t ret = { .token = NULL, .stride = 0 };
|
dcr_host_t ret = { .token = NULL, .stride = 0, .base = dcr_n };
|
||||||
u64 addr;
|
u64 addr;
|
||||||
|
|
||||||
pr_debug("dcr_map(%s, 0x%x, 0x%x)\n",
|
pr_debug("dcr_map(%s, 0x%x, 0x%x)\n",
|
||||||
|
|
|
@ -23,7 +23,11 @@
|
||||||
|
|
||||||
#include <asm/io.h>
|
#include <asm/io.h>
|
||||||
|
|
||||||
typedef struct { void __iomem *token; unsigned int stride; } dcr_host_t;
|
typedef struct {
|
||||||
|
void __iomem *token;
|
||||||
|
unsigned int stride;
|
||||||
|
unsigned int base;
|
||||||
|
} dcr_host_t;
|
||||||
|
|
||||||
#define DCR_MAP_OK(host) ((host).token != NULL)
|
#define DCR_MAP_OK(host) ((host).token != NULL)
|
||||||
|
|
||||||
|
|
|
@ -22,11 +22,13 @@
|
||||||
#ifdef __KERNEL__
|
#ifdef __KERNEL__
|
||||||
#ifndef __ASSEMBLY__
|
#ifndef __ASSEMBLY__
|
||||||
|
|
||||||
typedef struct {} dcr_host_t;
|
typedef struct {
|
||||||
|
unsigned int base;
|
||||||
|
} dcr_host_t;
|
||||||
|
|
||||||
#define DCR_MAP_OK(host) (1)
|
#define DCR_MAP_OK(host) (1)
|
||||||
|
|
||||||
#define dcr_map(dev, dcr_n, dcr_c) ((dcr_host_t){})
|
#define dcr_map(dev, dcr_n, dcr_c) ((dcr_host_t){ .base = (dcr_n) })
|
||||||
#define dcr_unmap(host, dcr_n, dcr_c) do {} while (0)
|
#define dcr_unmap(host, dcr_n, dcr_c) do {} while (0)
|
||||||
#define dcr_read(host, dcr_n) mfdcr(dcr_n)
|
#define dcr_read(host, dcr_n) mfdcr(dcr_n)
|
||||||
#define dcr_write(host, dcr_n, value) mtdcr(dcr_n, value)
|
#define dcr_write(host, dcr_n, value) mtdcr(dcr_n, value)
|
||||||
|
|
Загрузка…
Ссылка в новой задаче