#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "console.h"
#include "cpu.h"
#include "devices.h"
#include "machine.h"
#include "memory.h"
#include "misc.h"
#include "thirdparty/sccreg.h"
Go to the source code of this file.
Classes | |
struct | scc_data |
Macros | |
#define | SCC_TICK_SHIFT 14 |
#define | N_SCC_PORTS 2 |
#define | N_SCC_REGS 16 |
#define | MAX_QUEUE_LEN 1024 |
Functions | |
void | dev_scc_add_to_rx_queue (void *e, int ch, int portnr) |
DEVICE_TICK (scc) | |
int | dev_scc_dma_func (struct cpu *cpu, void *extra, uint64_t addr, size_t dma_len, int tx) |
DEVICE_ACCESS (scc) | |
void * | dev_scc_init (struct machine *machine, struct memory *mem, uint64_t baseaddr, char *irq_path, int use_fb, int scc_nr, int addrmul) |
#define MAX_QUEUE_LEN 1024 |
Definition at line 72 of file dev_scc.cc.
Referenced by dev_scc_add_to_rx_queue().
#define N_SCC_PORTS 2 |
Definition at line 70 of file dev_scc.cc.
Referenced by dev_scc_add_to_rx_queue(), and DEVICE_TICK().
#define N_SCC_REGS 16 |
Definition at line 71 of file dev_scc.cc.
Referenced by dev_scc_dma_func(), DEVICE_ACCESS(), and DEVICE_TICK().
#define SCC_TICK_SHIFT 14 |
Definition at line 68 of file dev_scc.cc.
Referenced by dev_scc_init().
void dev_scc_add_to_rx_queue | ( | void * | e, |
int | ch, | ||
int | portnr | ||
) |
Definition at line 105 of file dev_scc.cc.
References scc_data::cur_rx_queue_pos_read, scc_data::cur_rx_queue_pos_write, fatal(), MAX_QUEUE_LEN, N_SCC_PORTS, scc_data::rx_queue_char, and scc_data::scc_nr.
Referenced by dev_scc_dma_func(), dev_scc_init(), and DEVICE_TICK().
int dev_scc_dma_func | ( | struct cpu * | cpu, |
void * | extra, | ||
uint64_t | addr, | ||
size_t | dma_len, | ||
int | tx | ||
) |
Definition at line 244 of file dev_scc.cc.
References dev_scc_add_to_rx_queue(), scc_data::lk201, lk201_tx_data(), cpu::mem, MEM_READ, cpu::memory_rw, N_SCC_REGS, NO_EXCEPTIONS, PHYSICAL, SCC_CHANNEL_A, scc_data::scc_nr, scc_data::scc_register_w, SCC_WR14, and SCC_WR14_LOCAL_LOOPB.
void* dev_scc_init | ( | struct machine * | machine, |
struct memory * | mem, | ||
uint64_t | baseaddr, | ||
char * | irq_path, | ||
int | use_fb, | ||
int | scc_nr, | ||
int | addrmul | ||
) |
Definition at line 461 of file dev_scc.cc.
References scc_data::addrmul, CHECK_ALLOCATION, scc_data::console_handle, console_start_slave(), dev_scc_access(), dev_scc_add_to_rx_queue(), DEV_SCC_LENGTH, DM_DEFAULT, INTERRUPT_CONNECT, scc_data::irq, scc_data::lk201, lk201_init(), machine_add_tickfunction(), memory_device_register(), scc_data::scc_nr, scc_data::scc_register_r, SCC_RR0, SCC_RR0_TX_UNDERRUN, SCC_TICK_SHIFT, and scc_data::use_fb.
Referenced by MACHINE_SETUP().
DEVICE_ACCESS | ( | scc | ) |
Definition at line 299 of file dev_scc.cc.
References data, fatal(), INTERRUPT_DEASSERT, scc_data::irq, MEM_READ, MEM_WRITE, memory_readmax64(), N_SCC_REGS, scc_data::register_select_in_progress, scc_data::register_selected, SCC_CHANNEL_B, scc_data::scc_register_r, scc_data::scc_register_w, SCC_RR12, SCC_RR13, SCC_RR3, SCC_WR12, and SCC_WR13.
DEVICE_TICK | ( | scc | ) |
Definition at line 151 of file dev_scc.cc.
References console_charavail(), scc_data::console_handle, console_readchar(), dev_scc_add_to_rx_queue(), scc_data::lk201, lk201_tick(), cpu::machine, N_SCC_PORTS, N_SCC_REGS, scc_data::scc_nr, scc_data::scc_register_r, SCC_RR0, SCC_RR0_RX_AVAIL, SCC_RR0_TX_EMPTY, SCC_RR1, and scc_data::use_fb.