Skip to content
Snippets Groups Projects
  1. Oct 18, 2008
  2. Jun 05, 2008
    • Shinya Kuribayashi's avatar
      [MIPS] lib_mips/time.c: Fix CP0 count register usage and timer routines · a55d4817
      Shinya Kuribayashi authored
      
      MIPS port has two problems in timer routines. One is now we assume CFG_HZ
      equals to CP0 counter frequency, but this is wrong. CFG_HZ has to be 1000
      in the U-Boot system.
      
      The other is we don't have a proper time management counter like timestamp
      other ARCHs have. We need the 32-bit millisecond clock counter.
      
      This patch introduces timestamp and CYCLES_PER_JIFFY. timestamp is a
      32-bit non-overflowing CFG_HZ counter, and CYCLES_PER_JIFFY is the number
      of calculated CP0 counter cycles in a CFG_HZ.
      
      STRATEGY:
      
      * Fix improper CFG_HZ value to have 1000
      
      * Use CFG_MIPS_TIMER_FREQ for timer counter frequency, instead.
      
      * timer_init: initialize timestamp and set up the first timer expiration.
        Note that we don't need to initialize CP0 count/compare registers here
        as they have been already zeroed out on the system reset. Leave them as
        they are.
      
      * get_timer: calculate how many timestamps have been passed, then return
        base-relative timestamp. Make sure we can easily count missed timestamps
        regardless of CP0 count/compare value.
      
      * get_ticks: return the current timestamp, that is get_timer(0).
      
      Most parts are from good old Linux v2.6.16 kernel.
      
      v2:
      - Remove FIXME comments as they turned out to be trivial.
      - Use CP0 compare register as a global variable for expirelo.
      - Kill a global variable 'cycles_per_jiffy'. Use #define CYCLES_PER_JIFFY
        instead.
      
      Signed-off-by: default avatarShinya Kuribayashi <skuribay@ruby.dti.ne.jp>
      a55d4817
    • Shinya Kuribayashi's avatar
      [MIPS] lib_mips/time.c: Fix udelay · 199e4f65
      Shinya Kuribayashi authored
      
      What we have to do is just to wait for given micro-seconds. No need to
      take into account current time, get_timer and CFG_HZ.
      
      Signed-off-by: default avatarShinya Kuribayashi <skuribay@ruby.dti.ne.jp>
      199e4f65
    • Shinya Kuribayashi's avatar
      [MIPS] lib_mips/time.c: Replace CP0 access functions with existing macros · c7e38e41
      Shinya Kuribayashi authored
      
      We already have many pre-defined CP0 access macros in <asm/mipsregs.h>.
      This patch replaces mips_{compare,count}_set and mips_count_get with
      existing macros.
      
      Signed-off-by: default avatarShinya Kuribayashi <skuribay@ruby.dti.ne.jp>
      c7e38e41
  3. Aug 17, 2003
  4. Jun 27, 2003
  5. Mar 27, 2003
Loading