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

Commit 24ce2705 authored by Janusz Krzysztofik's avatar Janusz Krzysztofik Committed by Tony Lindgren
Browse files

ARM: OMAP1: Move dpll1 rates selection from config to runtime



For still better multi-OMAP1 support, expand omap1_rate_table with flags
for different SoC types and match them while selecting clock rates. The
idea is stolen from current omap24xx clock rate selection algorithm.

Since clkdev platform flag definitions are reused here, those had to be
expanded with one extra entry for OMAP1710 subtype, as this is the only
SoC for which we allow selection of the highest, 216 MHz rate.

Once done, remove no longer needed clock rate configure time options.

Tested on Amstrad Delta.

Signed-off-by: default avatarJanusz Krzysztofik <jkrzyszt@tis.icnet.pl>
[tony@atomide.com: updated comments]
Signed-off-by: default avatarTony Lindgren <tony@atomide.com>
parent ee62e93a
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -48,7 +48,6 @@ CONFIG_MACH_SX1=y
CONFIG_MACH_NOKIA770=y
CONFIG_MACH_AMS_DELTA=y
CONFIG_MACH_OMAP_GENERIC=y
CONFIG_OMAP_ARM_182MHZ=y
# CONFIG_ARM_THUMB is not set
CONFIG_PCCARD=y
CONFIG_OMAP_CF=y
+0 −64
Original line number Diff line number Diff line
@@ -168,70 +168,6 @@ config MACH_OMAP_GENERIC
          custom OMAP boards. Say Y here if you have a custom
          board.

comment "OMAP CPU Speed"
	depends on ARCH_OMAP1

config OMAP_ARM_216MHZ
	bool "OMAP ARM 216 MHz CPU (1710 only)"
        depends on ARCH_OMAP1 && ARCH_OMAP16XX
        help
          Enable 216 MHz clock for OMAP1710 CPU. If unsure, say N.

config OMAP_ARM_195MHZ
	bool "OMAP ARM 195 MHz CPU"
	depends on ARCH_OMAP1 && (ARCH_OMAP730 || ARCH_OMAP850)
	help
          Enable 195MHz clock for OMAP CPU. If unsure, say N.

config OMAP_ARM_192MHZ
	bool "OMAP ARM 192 MHz CPU"
	depends on ARCH_OMAP1 && ARCH_OMAP16XX
	help
          Enable 192MHz clock for OMAP CPU. If unsure, say N.

config OMAP_ARM_182MHZ
	bool "OMAP ARM 182 MHz CPU"
	depends on ARCH_OMAP1 && (ARCH_OMAP730 || ARCH_OMAP850)
	help
          Enable 182MHz clock for OMAP CPU. If unsure, say N.

config OMAP_ARM_168MHZ
	bool "OMAP ARM 168 MHz CPU"
	depends on ARCH_OMAP1 && (ARCH_OMAP15XX || ARCH_OMAP16XX || ARCH_OMAP730 || ARCH_OMAP850)
	help
          Enable 168MHz clock for OMAP CPU. If unsure, say N.

config OMAP_ARM_150MHZ
	bool "OMAP ARM 150 MHz CPU"
	depends on ARCH_OMAP1 && ARCH_OMAP15XX
	help
	  Enable 150MHz clock for OMAP CPU. If unsure, say N.

config OMAP_ARM_120MHZ
	bool "OMAP ARM 120 MHz CPU"
	depends on ARCH_OMAP1 && (ARCH_OMAP15XX || ARCH_OMAP16XX || ARCH_OMAP730 || ARCH_OMAP850)
	help
          Enable 120MHz clock for OMAP CPU. If unsure, say N.

config OMAP_ARM_96MHZ
	bool "OMAP ARM 96 MHz CPU"
	depends on ARCH_OMAP1 && (ARCH_OMAP15XX || ARCH_OMAP16XX || ARCH_OMAP730 || ARCH_OMAP850)
	help
          Enable 96MHz clock for OMAP CPU. If unsure, say N.

config OMAP_ARM_60MHZ
	bool "OMAP ARM 60 MHz CPU"
	depends on ARCH_OMAP1 && (ARCH_OMAP15XX || ARCH_OMAP16XX || ARCH_OMAP730 || ARCH_OMAP850)
        default y
	help
          Enable 60MHz clock for OMAP CPU. If unsure, say Y.

config OMAP_ARM_30MHZ
	bool "OMAP ARM 30 MHz CPU"
	depends on ARCH_OMAP1 && (ARCH_OMAP15XX || ARCH_OMAP16XX || ARCH_OMAP730 || ARCH_OMAP850)
	help
          Enable 30MHz clock for OMAP CPU. If unsure, say N.

endmenu

endif
+6 −0
Original line number Diff line number Diff line
@@ -197,6 +197,9 @@ int omap1_select_table_rate(struct clk *clk, unsigned long rate)
	ref_rate = ck_ref_p->rate;

	for (ptr = omap1_rate_table; ptr->rate; ptr++) {
		if (!(ptr->flags & cpu_mask))
			continue;

		if (ptr->xtal != ref_rate)
			continue;

@@ -290,6 +293,9 @@ long omap1_round_to_table_rate(struct clk *clk, unsigned long rate)
	highest_rate = -EINVAL;

	for (ptr = omap1_rate_table; ptr->rate; ptr++) {
		if (!(ptr->flags & cpu_mask))
			continue;

		if (ptr->xtal != ref_rate)
			continue;

+3 −0
Original line number Diff line number Diff line
@@ -111,4 +111,7 @@ extern const struct clkops clkops_dummy;
extern const struct clkops clkops_uart_16xx;
extern const struct clkops clkops_generic;

/* used for passing SoC type to omap1_{select,round_to}_table_rate() */
extern u32 cpu_mask;

#endif
+5 −1
Original line number Diff line number Diff line
@@ -778,12 +778,14 @@ static void __init omap1_show_rates(void)
		arm_ck.rate / 1000000, (arm_ck.rate / 100000) % 10);
}

u32 cpu_mask;

int __init omap1_clk_init(void)
{
	struct omap_clk *c;
	const struct omap_clock_config *info;
	int crystal_type = 0; /* Default 12 MHz */
	u32 reg, cpu_mask;
	u32 reg;

#ifdef CONFIG_DEBUG_LL
	/*
@@ -808,6 +810,8 @@ int __init omap1_clk_init(void)
		clk_preinit(c->lk.clk);

	cpu_mask = 0;
	if (cpu_is_omap1710())
		cpu_mask |= CK_1710;
	if (cpu_is_omap16xx())
		cpu_mask |= CK_16XX;
	if (cpu_is_omap1510())
Loading