Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cc0170b2 authored by Aneesh V's avatar Aneesh V Committed by Tony Lindgren
Browse files

OMAP4: ID: add omap_has_feature for max freq supported



Macros for identifying the max frequency supported by various
OMAP4 variants - Expanding along the lines of OMAP3's feature
handling.

[nm@ti.com: minor fixes for checks that should only for 443x|446x]
Signed-off-by: default avatarNishanth Menon <nm@ti.com>
Signed-off-by: default avatarAneesh V <aneesh@ti.com>
Signed-off-by: default avatarRajendra Nayak <rnayak@ti.com>
Reviewed-by: default avatarKevin Hilman <khilman@ti.com>
Reviewed-by: default avatarPaul Walmsley <paul@pwsan.com>
Signed-off-by: default avatarTony Lindgren <tony@atomide.com>
parent fa54dccd
Loading
Loading
Loading
Loading
+33 −7
Original line number Diff line number Diff line
@@ -31,7 +31,7 @@
static struct omap_chip_id omap_chip;
static unsigned int omap_revision;

u32 omap3_features;
u32 omap_features;

unsigned int omap_rev(void)
{
@@ -183,14 +183,14 @@ static void __init omap24xx_check_revision(void)
#define OMAP3_CHECK_FEATURE(status,feat)				\
	if (((status & OMAP3_ ##feat## _MASK) 				\
		>> OMAP3_ ##feat## _SHIFT) != FEAT_ ##feat## _NONE) { 	\
		omap3_features |= OMAP3_HAS_ ##feat;			\
		omap_features |= OMAP3_HAS_ ##feat;			\
	}

static void __init omap3_check_features(void)
{
	u32 status;

	omap3_features = 0;
	omap_features = 0;

	status = omap_ctrl_readl(OMAP3_CONTROL_OMAP_STATUS);

@@ -200,11 +200,11 @@ static void __init omap3_check_features(void)
	OMAP3_CHECK_FEATURE(status, NEON);
	OMAP3_CHECK_FEATURE(status, ISP);
	if (cpu_is_omap3630())
		omap3_features |= OMAP3_HAS_192MHZ_CLK;
		omap_features |= OMAP3_HAS_192MHZ_CLK;
	if (!cpu_is_omap3505() && !cpu_is_omap3517())
		omap3_features |= OMAP3_HAS_IO_WAKEUP;
		omap_features |= OMAP3_HAS_IO_WAKEUP;

	omap3_features |= OMAP3_HAS_SDRC;
	omap_features |= OMAP3_HAS_SDRC;

	/*
	 * TODO: Get additional info (where applicable)
@@ -212,9 +212,34 @@ static void __init omap3_check_features(void)
	 */
}

static void __init omap4_check_features(void)
{
	u32 si_type;

	if (cpu_is_omap443x())
		omap_features |= OMAP4_HAS_MPU_1GHZ;


	if (cpu_is_omap446x()) {
		si_type =
			read_tap_reg(OMAP4_CTRL_MODULE_CORE_STD_FUSE_PROD_ID_1);
		switch ((si_type & (3 << 16)) >> 16) {
		case 2:
			/* High performance device */
			omap_features |= OMAP4_HAS_MPU_1_5GHZ;
			break;
		case 1:
		default:
			/* Standard device */
			omap_features |= OMAP4_HAS_MPU_1_2GHZ;
			break;
		}
	}
}

static void __init ti816x_check_features(void)
{
	omap3_features = OMAP3_HAS_NEON;
	omap_features = OMAP3_HAS_NEON;
}

static void __init omap3_check_revision(void)
@@ -527,6 +552,7 @@ void __init omap2_check_revision(void)
		return;
	} else if (cpu_is_omap44xx()) {
		omap4_check_revision();
		omap4_check_features();
		return;
	} else {
		pr_err("OMAP revision unknown, please fix!\n");
+21 −2
Original line number Diff line number Diff line
@@ -478,7 +478,7 @@ void omap2_check_revision(void);
/*
 * Runtime detection of OMAP3 features
 */
extern u32 omap3_features;
extern u32 omap_features;

#define OMAP3_HAS_L2CACHE		BIT(0)
#define OMAP3_HAS_IVA			BIT(1)
@@ -488,11 +488,15 @@ extern u32 omap3_features;
#define OMAP3_HAS_192MHZ_CLK		BIT(5)
#define OMAP3_HAS_IO_WAKEUP		BIT(6)
#define OMAP3_HAS_SDRC			BIT(7)
#define OMAP4_HAS_MPU_1GHZ		BIT(8)
#define OMAP4_HAS_MPU_1_2GHZ		BIT(9)
#define OMAP4_HAS_MPU_1_5GHZ		BIT(10)


#define OMAP3_HAS_FEATURE(feat,flag)			\
static inline unsigned int omap3_has_ ##feat(void)	\
{							\
	return (omap3_features & OMAP3_HAS_ ##flag);	\
	return omap_features & OMAP3_HAS_ ##flag;	\
}							\

OMAP3_HAS_FEATURE(l2cache, L2CACHE)
@@ -504,4 +508,19 @@ OMAP3_HAS_FEATURE(192mhz_clk, 192MHZ_CLK)
OMAP3_HAS_FEATURE(io_wakeup, IO_WAKEUP)
OMAP3_HAS_FEATURE(sdrc, SDRC)

/*
 * Runtime detection of OMAP4 features
 */
extern u32 omap_features;

#define OMAP4_HAS_FEATURE(feat, flag)			\
static inline unsigned int omap4_has_ ##feat(void)	\
{							\
	return omap_features & OMAP4_HAS_ ##flag;	\
}							\

OMAP4_HAS_FEATURE(mpu_1ghz, MPU_1GHZ)
OMAP4_HAS_FEATURE(mpu_1_2ghz, MPU_1_2GHZ)
OMAP4_HAS_FEATURE(mpu_1_5ghz, MPU_1_5GHZ)

#endif