2006-09-21 21:27:15 +08:00
|
|
|
/*
|
|
|
|
* Platform information definitions.
|
|
|
|
*
|
|
|
|
* 2006 (c) MontaVista Software, Inc.
|
|
|
|
* Vitaly Bordug <vbordug@ru.mvista.com>
|
|
|
|
*
|
|
|
|
* This file is licensed under the terms of the GNU General Public License
|
|
|
|
* version 2. This program is licensed "as is" without any warranty of any
|
|
|
|
* kind, whether express or implied.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef FS_PD_H
|
|
|
|
#define FS_PD_H
|
|
|
|
#include <sysdev/fsl_soc.h>
|
|
|
|
#include <asm/time.h>
|
|
|
|
|
2007-01-25 03:41:24 +08:00
|
|
|
#ifdef CONFIG_CPM2
|
|
|
|
#include <asm/cpm2.h>
|
2006-09-21 21:27:15 +08:00
|
|
|
|
2007-01-31 07:09:00 +08:00
|
|
|
#if defined(CONFIG_8260)
|
|
|
|
#include <asm/mpc8260.h>
|
|
|
|
#elif defined(CONFIG_85xx)
|
|
|
|
#include <asm/mpc85xx.h>
|
|
|
|
#endif
|
|
|
|
|
POWERPC: Get rid of remapping the whole immr
The stuff below cleans up the code attempting to remap the whole cpm2_immr
early, as well as places happily assuming that fact. This is more like the 2.4
legacy stuff, and is at least confusing and unclear now.
To keep the world comfortable, a new mechanism is introduced: before accessing
specific immr register/register set, one needs to map it, using cpm2_map(<reg>),
for instance, access to CPM command register will look like
volatile cpm_cpm2_t *cp = cpm2_map(im_cpm);
keeping the code clear, yet without "already defined somewhere" cpm2_immr.
So far, unmapping code is not implemented, but it's not a big deal to add it,
if the whole idea makes sense.
Signed-off-by: Vitaly Bordug <vbordug@ru.mvista.com>
2006-09-22 02:37:58 +08:00
|
|
|
#define cpm2_map(member) \
|
|
|
|
({ \
|
|
|
|
u32 offset = offsetof(cpm2_map_t, member); \
|
|
|
|
void *addr = ioremap (CPM_MAP_ADDR + offset, \
|
|
|
|
sizeof( ((cpm2_map_t*)0)->member)); \
|
|
|
|
addr; \
|
|
|
|
})
|
|
|
|
|
|
|
|
#define cpm2_map_size(member, size) \
|
|
|
|
({ \
|
|
|
|
u32 offset = offsetof(cpm2_map_t, member); \
|
|
|
|
void *addr = ioremap (CPM_MAP_ADDR + offset, size); \
|
|
|
|
addr; \
|
|
|
|
})
|
|
|
|
|
|
|
|
#define cpm2_unmap(addr) iounmap(addr)
|
2007-01-25 03:41:24 +08:00
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifdef CONFIG_8xx
|
|
|
|
#include <asm/8xx_immap.h>
|
|
|
|
#include <asm/mpc8xx.h>
|
|
|
|
|
2007-09-15 03:22:36 +08:00
|
|
|
extern immap_t __iomem *mpc8xx_immr;
|
2007-01-25 03:41:24 +08:00
|
|
|
|
2007-09-15 03:22:36 +08:00
|
|
|
#define immr_map(member) (&mpc8xx_immr->member)
|
|
|
|
#define immr_map_size(member, size) (&mpc8xx_immr->member)
|
|
|
|
#define immr_unmap(addr) do {} while (0)
|
2007-01-25 03:41:24 +08:00
|
|
|
#endif
|
|
|
|
|
|
|
|
static inline int uart_baudrate(void)
|
|
|
|
{
|
|
|
|
return get_baudrate();
|
|
|
|
}
|
|
|
|
|
|
|
|
static inline int uart_clock(void)
|
|
|
|
{
|
|
|
|
return ppc_proc_freq;
|
|
|
|
}
|
POWERPC: Get rid of remapping the whole immr
The stuff below cleans up the code attempting to remap the whole cpm2_immr
early, as well as places happily assuming that fact. This is more like the 2.4
legacy stuff, and is at least confusing and unclear now.
To keep the world comfortable, a new mechanism is introduced: before accessing
specific immr register/register set, one needs to map it, using cpm2_map(<reg>),
for instance, access to CPM command register will look like
volatile cpm_cpm2_t *cp = cpm2_map(im_cpm);
keeping the code clear, yet without "already defined somewhere" cpm2_immr.
So far, unmapping code is not implemented, but it's not a big deal to add it,
if the whole idea makes sense.
Signed-off-by: Vitaly Bordug <vbordug@ru.mvista.com>
2006-09-22 02:37:58 +08:00
|
|
|
|
2006-09-21 21:27:15 +08:00
|
|
|
#endif
|