mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-12-16 16:23:14 +00:00
4a9e89a3e3
Allwinner seems to typically stick to a common MMIO memory map for several SoCs, but from time to time does some breaking changes, which also introduce new generations of some peripherals. The last time this happened with the H6, which apart from re-organising the base addresses also changed the clock controller significantly. We added a CONFIG_SUN50I_GEN_H6 symbol back then to mark SoCs sharing those traits. Now the Allwinner D1 changes the memory map again, and also extends the pincontroller, among other peripherals. To mark this generation of SoCs, add a CONFIG_SUNXI_GEN_NCAT2 symbol, this name is reportedly used in the Allwinner BSP code, and prevents us from inventing our own name. Add this new symbol to some guards that were already checking for the H6 generation, since many features are shared between the two (like the renovated clock controller). This paves the way to introduce a first user of this generation. Signed-off-by: Andre Przywara <andre.przywara@arm.com> Tested-by: Samuel Holland <samuel@sholland.org>
87 lines
1.7 KiB
C
87 lines
1.7 KiB
C
/* SPDX-License-Identifier: GPL-2.0+ */
|
|
/*
|
|
* (C) Copyright 2007-2011
|
|
* Allwinner Technology Co., Ltd. <www.allwinnertech.com>
|
|
* Tom Cubie <tangliang@allwinnertech.com>
|
|
*
|
|
* Configuration settings for the Allwinner A10-evb board.
|
|
*/
|
|
|
|
#ifndef _SUNXI_TIMER_H_
|
|
#define _SUNXI_TIMER_H_
|
|
|
|
#ifndef __ASSEMBLY__
|
|
|
|
#include <linux/types.h>
|
|
#include <asm/arch/watchdog.h>
|
|
|
|
/* General purpose timer */
|
|
struct sunxi_timer {
|
|
u32 ctl;
|
|
u32 inter;
|
|
u32 val;
|
|
u8 res[4];
|
|
};
|
|
|
|
/* Audio video sync*/
|
|
struct sunxi_avs {
|
|
u32 ctl; /* 0x80 */
|
|
u32 cnt0; /* 0x84 */
|
|
u32 cnt1; /* 0x88 */
|
|
u32 div; /* 0x8c */
|
|
};
|
|
|
|
/* 64 bit counter */
|
|
struct sunxi_64cnt {
|
|
u32 ctl; /* 0xa0 */
|
|
u32 lo; /* 0xa4 */
|
|
u32 hi; /* 0xa8 */
|
|
};
|
|
|
|
/* Rtc */
|
|
struct sunxi_rtc {
|
|
u32 ctl; /* 0x100 */
|
|
u32 yymmdd; /* 0x104 */
|
|
u32 hhmmss; /* 0x108 */
|
|
};
|
|
|
|
/* Alarm */
|
|
struct sunxi_alarm {
|
|
u32 ddhhmmss; /* 0x10c */
|
|
u32 hhmmss; /* 0x110 */
|
|
u32 en; /* 0x114 */
|
|
u32 irqen; /* 0x118 */
|
|
u32 irqsta; /* 0x11c */
|
|
};
|
|
|
|
/* Timer general purpose register */
|
|
struct sunxi_tgp {
|
|
u32 tgpd;
|
|
};
|
|
|
|
struct sunxi_timer_reg {
|
|
u32 tirqen; /* 0x00 */
|
|
u32 tirqsta; /* 0x04 */
|
|
u8 res1[8];
|
|
struct sunxi_timer timer[6]; /* We have 6 timers */
|
|
u8 res2[16];
|
|
struct sunxi_avs avs;
|
|
#if defined(CONFIG_SUNXI_GEN_SUN4I) || defined(CONFIG_MACH_SUN8I_R40)
|
|
struct sunxi_wdog wdog; /* 0x90 */
|
|
/* XXX the following is not accurate for sun5i/sun7i */
|
|
struct sunxi_64cnt cnt64; /* 0xa0 */
|
|
u8 res4[0x58];
|
|
struct sunxi_rtc rtc;
|
|
struct sunxi_alarm alarm;
|
|
struct sunxi_tgp tgp[4];
|
|
u8 res5[8];
|
|
u32 cpu_cfg;
|
|
#elif defined(CONFIG_SUNXI_GEN_SUN6I) || defined(CONFIG_SUN50I_GEN_H6) || defined(CONFIG_SUNXI_GEN_NCAT2)
|
|
u8 res3[16];
|
|
struct sunxi_wdog wdog[5]; /* We have 5 watchdogs */
|
|
#endif
|
|
};
|
|
|
|
#endif /* __ASSEMBLY__ */
|
|
|
|
#endif
|