Message ID | 1578452469-6831-1-git-send-email-weijie.gao@mediatek.com |
---|---|
State | New |
Headers | show |
Series | [01/16] configs: mtmips: add missing board selection for gardena-smart-gateway-mt7688 | expand |
Am 08.01.20 um 04:01 schrieb Weijie Gao: > Some systems boot up at a very low CPU frequency and set up a higher CPU > frequency in lowlevel initialization. > > Currently get_tbclk() uses a fixed value (CONFIG_SYS_MIPS_TIMER_FREQ) > for MIPS architercture, and CONFIG_SYS_MIPS_TIMER_FREQ is usually related > to the higher CPU frequency. If udelay() is used before setting up CPU > frequency, it will be very inaccurate. > > This patch adds an option to allow a mach to define its own get_tbclk(). > > Signed-off-by: Weijie Gao <weijie.gao at mediatek.com> > --- > arch/mips/Kconfig | 8 ++++++++ > arch/mips/cpu/time.c | 2 ++ > 2 files changed, 10 insertions(+) > > diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig > index 4688717593..52afbf79c5 100644 > --- a/arch/mips/Kconfig > +++ b/arch/mips/Kconfig > @@ -502,6 +502,14 @@ config MIPS_BOOT_CONFIG_WORD1 > help > Value which is inserted as boot config word 1. > > +config MIPS_OVERRIDE_GET_TBCLK > + bool > + default n > + help > + Select this if you want to override the default get_tbclk() for your > + system. This usually means the timer frequency of your system may > + change in different boot stage. > + > endif > > endmenu > diff --git a/arch/mips/cpu/time.c b/arch/mips/cpu/time.c > index af324f77ce..61d1cd9ec0 100644 > --- a/arch/mips/cpu/time.c > +++ b/arch/mips/cpu/time.c > @@ -12,7 +12,9 @@ unsigned long notrace timer_read_counter(void) > return read_c0_count(); > } > > +#ifndef CONFIG_MIPS_OVERRIDE_GET_TBCLK > ulong notrace get_tbclk(void) > { > return CONFIG_SYS_MIPS_TIMER_FREQ; > } > +#endif > you can drop this patch. I already applied [1] because there was another request to make this function weak. [1] https://patchwork.ozlabs.org/patch/1215073/
On Wed, 2020-01-08 at 15:32 +0100, Daniel Schwierzeck wrote: > > Am 08.01.20 um 04:01 schrieb Weijie Gao: > > Some systems boot up at a very low CPU frequency and set up a higher CPU > > frequency in lowlevel initialization. > > > > Currently get_tbclk() uses a fixed value (CONFIG_SYS_MIPS_TIMER_FREQ) > > for MIPS architercture, and CONFIG_SYS_MIPS_TIMER_FREQ is usually related > > to the higher CPU frequency. If udelay() is used before setting up CPU > > frequency, it will be very inaccurate. > > > > This patch adds an option to allow a mach to define its own get_tbclk(). > > > > Signed-off-by: Weijie Gao <weijie.gao at mediatek.com> > > --- > > arch/mips/Kconfig | 8 ++++++++ > > arch/mips/cpu/time.c | 2 ++ > > 2 files changed, 10 insertions(+) > > > > diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig > > index 4688717593..52afbf79c5 100644 > > --- a/arch/mips/Kconfig > > +++ b/arch/mips/Kconfig > > @@ -502,6 +502,14 @@ config MIPS_BOOT_CONFIG_WORD1 > > help > > Value which is inserted as boot config word 1. > > > > +config MIPS_OVERRIDE_GET_TBCLK > > + bool > > + default n > > + help > > + Select this if you want to override the default get_tbclk() for your > > + system. This usually means the timer frequency of your system may > > + change in different boot stage. > > + > > endif > > > > endmenu > > diff --git a/arch/mips/cpu/time.c b/arch/mips/cpu/time.c > > index af324f77ce..61d1cd9ec0 100644 > > --- a/arch/mips/cpu/time.c > > +++ b/arch/mips/cpu/time.c > > @@ -12,7 +12,9 @@ unsigned long notrace timer_read_counter(void) > > return read_c0_count(); > > } > > > > +#ifndef CONFIG_MIPS_OVERRIDE_GET_TBCLK > > ulong notrace get_tbclk(void) > > { > > return CONFIG_SYS_MIPS_TIMER_FREQ; > > } > > +#endif > > > > you can drop this patch. I already applied [1] because there was another > request to make this function weak. > > [1] https://patchwork.ozlabs.org/patch/1215073/ > OK
diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig index 4688717593..52afbf79c5 100644 --- a/arch/mips/Kconfig +++ b/arch/mips/Kconfig @@ -502,6 +502,14 @@ config MIPS_BOOT_CONFIG_WORD1 help Value which is inserted as boot config word 1. +config MIPS_OVERRIDE_GET_TBCLK + bool + default n + help + Select this if you want to override the default get_tbclk() for your + system. This usually means the timer frequency of your system may + change in different boot stage. + endif endmenu diff --git a/arch/mips/cpu/time.c b/arch/mips/cpu/time.c index af324f77ce..61d1cd9ec0 100644 --- a/arch/mips/cpu/time.c +++ b/arch/mips/cpu/time.c @@ -12,7 +12,9 @@ unsigned long notrace timer_read_counter(void) return read_c0_count(); } +#ifndef CONFIG_MIPS_OVERRIDE_GET_TBCLK ulong notrace get_tbclk(void) { return CONFIG_SYS_MIPS_TIMER_FREQ; } +#endif
Some systems boot up at a very low CPU frequency and set up a higher CPU frequency in lowlevel initialization. Currently get_tbclk() uses a fixed value (CONFIG_SYS_MIPS_TIMER_FREQ) for MIPS architercture, and CONFIG_SYS_MIPS_TIMER_FREQ is usually related to the higher CPU frequency. If udelay() is used before setting up CPU frequency, it will be very inaccurate. This patch adds an option to allow a mach to define its own get_tbclk(). Signed-off-by: Weijie Gao <weijie.gao at mediatek.com> --- arch/mips/Kconfig | 8 ++++++++ arch/mips/cpu/time.c | 2 ++ 2 files changed, 10 insertions(+)