All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot-Users] Fixed CD in serial.c, AT91RM9200
@ 2004-07-13  7:13 Kögler Peter
  2004-08-02 23:26 ` Wolfgang Denk
  0 siblings, 1 reply; 4+ messages in thread
From: Kögler Peter @ 2004-07-13  7:13 UTC (permalink / raw)
  To: u-boot

Hello all,
is there a reason why the clock divisor in the baudrate generator register
(us->US_BRGR) is set to a fixed value in serial_setbrg(void):

us->US_BRGR = CFG_AT91C_BRGR_DIVISOR


I changed the implementation of serial_setbrg(void) and i can now opperate
at higher baudrates. (change baudrate with loadb).

Here is my version:

void serial_setbrg (void)
{
  DECLARE_GLOBAL_DATA_PTR;
  int baudrate, baudRateGenDiv,i;
  unsigned long baudrate_table[] = CFG_BAUDRATE_TABLE;
  int n_baudrates = (sizeof(baudrate_table) / sizeof(baudrate_table[0]));

  baudrate = gd->baudrate;
  
  //check if value is supported
  for (i=0; i<n_baudrates; ++i) 
  {
    if (baudrate == baudrate_table[i])
    {
      baudRateGenDiv = AT91C_MASTER_CLOCK / baudrate / 16;
      //printf ("## Switched baudrate to %dbps.\n", baudrate);
      break;
    }
  }
  
  if (baudRateGenDiv==0)
  {
    //using default value
    baudRateGenDiv = CFG_AT91C_BRGR_DIVISOR;
    printf ("## Baudrate %dbps not supported using default baudrate
%dbps.\n", baudrate, CONFIG_BAUDRATE);
  }
  
  us->US_BRGR = baudRateGenDiv;
}

If you agree with my changes i can provide a patch.

wbr

Peter

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2004-08-03 13:29 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-07-13  7:13 [U-Boot-Users] Fixed CD in serial.c, AT91RM9200 Kögler Peter
2004-08-02 23:26 ` Wolfgang Denk
2004-08-03 11:34   ` Steven Scholz
2004-08-03 13:29     ` Wolfgang Denk

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.