#include <asm/mvme147hw.h>
  #include <asm/config.h>
  
 +#include "mvme147.h"
  
  static void mvme147_get_model(char *model);
 -extern void mvme147_sched_init(void);
 +static void __init mvme147_sched_init(void);
- extern int mvme147_hwclk (int, struct rtc_time *);
  extern void mvme147_reset (void);
  
  
        return ticks;
  }
  
- static int bcd2int (unsigned char b)
- {
-       return ((b>>4)*10 + (b&15));
- }
- 
- int mvme147_hwclk(int op, struct rtc_time *t)
- {
-       if (!op) {
-               m147_rtc->ctrl = RTC_READ;
-               t->tm_year = bcd2int (m147_rtc->bcd_year);
-               t->tm_mon  = bcd2int(m147_rtc->bcd_mth) - 1;
-               t->tm_mday = bcd2int (m147_rtc->bcd_dom);
-               t->tm_hour = bcd2int (m147_rtc->bcd_hr);
-               t->tm_min  = bcd2int (m147_rtc->bcd_min);
-               t->tm_sec  = bcd2int (m147_rtc->bcd_sec);
-               m147_rtc->ctrl = 0;
-               if (t->tm_year < 70)
-                       t->tm_year += 100;
-       } else {
-               /* FIXME Setting the time is not yet supported */
-               return -EOPNOTSUPP;
-       }
-       return 0;
- }
- 
 +static void scc_delay(void)
 +{
 +      __asm__ __volatile__ ("nop; nop;");
 +}
 +
 +static void scc_write(char ch)
 +{
 +      do {
 +              scc_delay();
 +      } while (!(in_8(M147_SCC_A_ADDR) & BIT(2)));
 +      scc_delay();
 +      out_8(M147_SCC_A_ADDR, 8);
 +      scc_delay();
 +      out_8(M147_SCC_A_ADDR, ch);
 +}
 +
 +void mvme147_scc_write(struct console *co, const char *str, unsigned int count)
 +{
 +      unsigned long flags;
 +
 +      local_irq_save(flags);
 +      while (count--) {
 +              if (*str == '\n')
 +                      scc_write('\r');
 +              scc_write(*str++);
 +      }
 +      local_irq_restore(flags);
 +}