blob: 55ddcb682fc73aa01197fe0e4f8e9ff820bb06c6 [file] [log] [blame]
/**
* ambhw/chip.h
*
* History:
* 2007/11/29 - [Charles Chiou] created file
*
* Copyright (C) 2004-2007, Ambarella, Inc.
*/
#ifndef __AMBHW__CHIP_H__
#define __AMBHW__CHIP_H__
#if defined(__PRKERNEL_AMB__)
#include <config.h>
#endif
#define A1 1000
#define A2 2000
#define A2S 2100
#define A2M 2200
#define A2Q 2300
#define A2K 2400
#define A3 3000
#define A5 5000
#define A530 5030
#define A550 5050
#define A570 5070
#define A580 5080
#define A5S 5100
#define A5L 5500
#define A6 6000
#define A7 7000
#define A7M 7100
#define I1 7200
#define A7L 7500
#define CHIP_ID(x) ((x / 1000))
#define CHIP_MAJOR(x) ((x / 100) % 10)
#define CHIP_MINOR(x) ((x / 10) % 10)
#if defined(__KERNEL__)
#if defined(CONFIG_PLAT_AMBARELLA_A1)
#define CHIP_REV A1
#elif defined(CONFIG_PLAT_AMBARELLA_A2)
#define CHIP_REV A2
#elif defined(CONFIG_PLAT_AMBARELLA_A2S)
#define CHIP_REV A2S
#elif defined(CONFIG_PLAT_AMBARELLA_A2M)
#define CHIP_REV A2M
#elif defined(CONFIG_PLAT_AMBARELLA_A2Q)
#define CHIP_REV A2Q
#elif defined(CONFIG_PLAT_AMBARELLA_A3)
#define CHIP_REV A3
#elif defined(CONFIG_PLAT_AMBARELLA_A5)
#define CHIP_REV A5
#elif defined(CONFIG_PLAT_AMBARELLA_A5S)
#define CHIP_REV A5S
#elif defined(CONFIG_PLAT_AMBARELLA_A5L)
#define CHIP_REV A5L
#elif defined(CONFIG_PLAT_AMBARELLA_A6)
#define CHIP_REV A6
#elif defined(CONFIG_PLAT_AMBARELLA_A7)
#define CHIP_REV A7
#elif defined(CONFIG_PLAT_AMBARELLA_A7L)
#define CHIP_REV A7L
#elif defined(CONFIG_PLAT_AMBARELLA_A7M)
#define CHIP_REV A7M
#elif defined(CONFIG_PLAT_AMBARELLA_I1)
#define CHIP_REV I1
#else
#error "Undefined CHIP_REV"
#endif
#else
#if defined(CUSTOM_CHIP_REV)
#define CHIP_REV CUSTOM_CHIP_REV
#else /* CUSTOM_CHIP_REV */
#if defined(CONFIG_ARCH_AMBARELLA_A1) || \
defined(CONFIG_ARCH_A1) || \
defined(CONFIG_ARCH_MMP2_A1)
#define CHIP_REV A1
#elif defined(CONFIG_ARCH_AMBARELLA_A2) || \
defined(CONFIG_ARCH_A2) || \
defined(CONFIG_ARCH_MMP2_A2)
#define CHIP_REV A2
#elif defined(CONFIG_ARCH_AMBARELLA_A2S) || \
defined(CONFIG_ARCH_A2S)
#define CHIP_REV A2S
#elif defined(CONFIG_ARCH_AMBARELLA_A2M) || \
defined(CONFIG_ARCH_A2M)
#define CHIP_REV A2M
#elif defined(CONFIG_ARCH_AMBARELLA_A2Q) || \
defined(CONFIG_ARCH_A2Q)
#define CHIP_REV A2Q
#elif defined(CONFIG_ARCH_AMBARELLA_A3) || \
defined(CONFIG_ARCH_A3) || \
defined(CONFIG_ARCH_MMP2_A3)
#define CHIP_REV A3
#elif defined(CONFIG_ARCH_AMBARELLA_A5) || \
defined(CONFIG_ARCH_A5) || \
defined(CONFIG_ARCH_MMP2_A5)
#define CHIP_REV A5
#elif defined(CONFIG_ARCH_AMBARELLA_A5S) || \
defined(CONFIG_ARCH_A5S) || \
defined(CONFIG_ARCH_MMP2_A5S)
#define CHIP_REV A5S
#elif defined(CONFIG_ARCH_AMBARELLA_A5L) || \
defined(CONFIG_ARCH_A5L) || \
defined(CONFIG_ARCH_MMP2_A5L)
#define CHIP_REV A5L
#elif defined(CONFIG_ARCH_AMBARELLA_A6) || \
defined(CONFIG_ARCH_A6) || \
defined(CONFIG_ARCH_MMP2_A6)
#define CHIP_REV A6
#elif defined(CONFIG_ARCH_AMBARELLA_A7) || \
defined(CONFIG_ARCH_A7) || \
defined(CONFIG_ARCH_MMP2_A7)
#define CHIP_REV A7
#elif defined(CONFIG_ARCH_AMBARELLA_A7L) || \
defined(CONFIG_ARCH_A7L) || \
defined(CONFIG_ARCH_MMP2_A7L)
#define CHIP_REV A7L
#elif defined(CONFIG_ARCH_AMBARELLA_A7M) || \
defined(CONFIG_ARCH_A7M) || \
defined(CONFIG_ARCH_MMP2_A7M)
#define CHIP_REV A7M
#elif defined(CONFIG_ARCH_AMBARELLA_I1) || \
defined(CONFIG_ARCH_I1) || \
defined(CONFIG_ARCH_MMP2_I1)
#define CHIP_REV I1
#else
#error "Undefined CHIP_REV"
#endif
#endif /* CUSTOM_CHIP_REV */
#endif /* __KERNEL__ */
#if (CHIP_REV == A5S) || (CHIP_REV == A5L) || (CHIP_REV == A7) || \
(CHIP_REV == A7L)
#define BROKEN_UNALIGNED_ACCESS_SUPPORT 1
#endif
/* Audio ucode. */
#if (CHIP_REV == A3) || (CHIP_REV == A5) || (CHIP_REV == A6)
#define HAS_AORC_UCODE 1
#else
#define HAS_AORC_UCODE 0
#endif
#endif