OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [tags/] [nog_patch_67/] [or1ksim/] [peripheral/] [16450.c] - Diff between revs 1358 and 1359

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 1358 Rev 1359
Line 76... Line 76...
 
 
  return char_clks * bauds_per_char;
  return char_clks * bauds_per_char;
}
}
 
 
/* Set a specific UART register with value. */
/* Set a specific UART register with value. */
void uart_write_byte(oraddr_t addr, uint32_t value)
void uart_write_byte(oraddr_t addr, uint32_t value, void *dat)
{
{
  int chipsel;
  int chipsel;
 
 
  debug(4, "uart_write_byte(%"PRIxADDR",%02"PRIx32")\n", addr, value);
  debug(4, "uart_write_byte(%"PRIxADDR",%02"PRIx32")\n", addr, value);
 
 
Line 151... Line 151...
      debug(1, "write out of range (addr %x)\n", addr);
      debug(1, "write out of range (addr %x)\n", addr);
  }
  }
}
}
 
 
/* Read a specific UART register. */
/* Read a specific UART register. */
uint32_t uart_read_byte(oraddr_t addr)
uint32_t uart_read_byte(oraddr_t addr, void *dat)
{
{
  uint8_t value = 0;
  uint8_t value = 0;
  int chipsel;
  int chipsel;
 
 
  debug(4, "uart_read_byte(%"PRIxADDR")", addr);
  debug(4, "uart_read_byte(%"PRIxADDR")", addr);
Line 588... Line 588...
      if ((config.uarts[i].vapi_id & VAPI_DEVICE_ID) != i) {
      if ((config.uarts[i].vapi_id & VAPI_DEVICE_ID) != i) {
        fprintf (stderr, "ERROR: Wrong vapi_id (0x%lx) for uart %i, last byte is required to be %02x; ignoring.\n", config.uarts[i].vapi_id, i, i);
        fprintf (stderr, "ERROR: Wrong vapi_id (0x%lx) for uart %i, last byte is required to be %02x; ignoring.\n", config.uarts[i].vapi_id, i, i);
        config.uarts[i].vapi_id = 0;
        config.uarts[i].vapi_id = 0;
      } else {
      } else {
        vapi_install_handler (config.uarts[i].vapi_id, uart_vapi_read);
        vapi_install_handler (config.uarts[i].vapi_id, uart_vapi_read);
        register_memoryarea(config.uarts[i].baseaddr, UART_ADDR_SPACE, 1, 0, uart_read_byte, uart_write_byte);
        register_memoryarea(config.uarts[i].baseaddr, UART_ADDR_SPACE, 1, 0, uart_read_byte, uart_write_byte, NULL);
      }
      }
    } else if (config.uarts[i].channel[0]) { /* MM: Try to create stream.  */
    } else if (config.uarts[i].channel[0]) { /* MM: Try to create stream.  */
      if(channels[i])
      if(channels[i])
        channel_close(channels[i]);
        channel_close(channels[i]);
      else
      else
Line 601... Line 601...
        debug (0, "WARNING: UART%d has problems with channel \"%s\".\n", i, config.uarts[i].channel);
        debug (0, "WARNING: UART%d has problems with channel \"%s\".\n", i, config.uarts[i].channel);
        continue;
        continue;
      }
      }
      if (config.sim.verbose)
      if (config.sim.verbose)
        PRINTF("UART%d at 0x%.8lx uses ", i, config.uarts[i].baseaddr);
        PRINTF("UART%d at 0x%.8lx uses ", i, config.uarts[i].baseaddr);
      register_memoryarea(config.uarts[i].baseaddr, UART_ADDR_SPACE, 1, 0, uart_read_byte, uart_write_byte);
      register_memoryarea(config.uarts[i].baseaddr, UART_ADDR_SPACE, 1, 0, uart_read_byte, uart_write_byte, NULL);
    } else {
    } else {
        debug (0, "WARNING: UART%d has no vapi nor channel specified\n", i);
        debug (0, "WARNING: UART%d has no vapi nor channel specified\n", i);
        continue;
        continue;
    }
    }
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.