CPUID: 32440001
FCLK: 405 MHz
HCLK: 101.250 MHz
PCLK: 50.625 MHz
#define CONFIG_DISPLAY_CPUINFO
/* * (C) Copyright 2010 * David Mueller <d.mueller@elsoft.ch> * * SPDX-License-Identifier: GPL-2.0+ */ #include <common.h> //#include <gpio.h> #include <s3c2440.h> #include <asm/io.h> //#include <asm/arch/s3c24x0_cpu.h> /* I/O PORT (see manual chapter 9) */ struct s3c24x0_gpio_lee { #ifdef CONFIG_S3C2400 u32 pacon; u32 padat; u32 pbcon; u32 pbdat; u32 pbup; u32 pccon; u32 pcdat; u32 pcup; u32 pdcon; u32 pddat; u32 pdup; u32 pecon; u32 pedat; u32 peup; u32 pfcon; u32 pfdat; u32 pfup; u32 pgcon; u32 pgdat; u32 pgup; u32 opencr; u32 misccr; u32 extint; #endif #ifdef CONFIG_S3C2410 u32 gpacon; u32 gpadat; u32 res1[2]; u32 gpbcon; u32 gpbdat; u32 gpbup; u32 res2; u32 gpccon; u32 gpcdat; u32 gpcup; u32 res3; u32 gpdcon; u32 gpddat; u32 gpdup; u32 res4; u32 gpecon; u32 gpedat; u32 gpeup; u32 res5; u32 gpfcon; u32 gpfdat; u32 gpfup; u32 res6; u32 gpgcon; u32 gpgdat; u32 gpgup; u32 res7; u32 gphcon; u32 gphdat; u32 gphup; u32 res8; u32 misccr; u32 dclkcon; u32 extint0; u32 extint1; u32 extint2; u32 eintflt0; u32 eintflt1; u32 eintflt2; u32 eintflt3; u32 eintmask; u32 eintpend; u32 gstatus0; u32 gstatus1; u32 gstatus2; u32 gstatus3; u32 gstatus4; #endif #if defined(CONFIG_S3C2440) u32 gpacon; u32 gpadat; u32 res1[2]; u32 gpbcon; u32 gpbdat; u32 gpbup; u32 res2; u32 gpccon; u32 gpcdat; u32 gpcup; u32 res3; u32 gpdcon; u32 gpddat; u32 gpdup; u32 res4; u32 gpecon; u32 gpedat; u32 gpeup; u32 res5; u32 gpfcon; u32 gpfdat; u32 gpfup; u32 res6; u32 gpgcon; u32 gpgdat; u32 gpgup; u32 res7; u32 gphcon; u32 gphdat; u32 gphup; u32 res8; u32 misccr; u32 dclkcon; u32 extint0; u32 extint1; u32 extint2; u32 eintflt0; u32 eintflt1; u32 eintflt2; u32 eintflt3; u32 eintmask; u32 eintpend; u32 gstatus0; u32 gstatus1; u32 gstatus2; u32 gstatus3; u32 gstatus4; u32 res9; u32 dsc0; u32 dsc1; u32 mslcon; u32 gpjcon; u32 gpjdat; u32 gpjup; u32 res10; #endif }; typedef ulong (*getfreq)(void); static const getfreq freq_f[] = { get_FCLK, get_HCLK, get_PCLK, }; static const char freq_c[] = { 'F', 'H', 'P' }; #define ROUND(a,b) (((a) + (b) - 1) & ~((b) - 1)) #define DIV_ROUND(n,d) (((n) + ((d)/2)) / (d)) #define DIV_ROUND_UP(n,d) (((n) + (d) - 1) / (d)) #define roundup(x, y) ((((x) + ((y) - 1)) / (y)) * (y)) char *strmhzLee (char *buf, unsigned long hz) { long l, n; long m; n = DIV_ROUND(hz, 1000) / 1000L; l = sprintf (buf, "%ld", n); hz -= n * 1000000L; m = DIV_ROUND(hz, 1000L); if (m != 0) sprintf (buf + l, ".%03ld", m); return (buf); } int print_cpuinfo(void) { int i; char buf[32]; /* the S3C2400 seems to be lacking a CHIP ID register */ #ifndef CONFIG_S3C2400 ulong cpuid; //struct s3c24x0_gpio * const gpio = s3c24x0_get_base_gpio(); struct s3c24x0_gpio_lee * const gpio = S3C24X0_GetBase_GPIO(); cpuid = readl(&gpio->gstatus1); printf("CPUID: %8lX\n", cpuid); #endif for (i = 0; i < ARRAY_SIZE(freq_f); i++) printf("%cCLK: %8s MHz\n", freq_c[i], strmhzLee(buf, freq_f[i]())); //printf("%cCLK: MHz\n", freq_c[i]); return 0; }