123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- # -*- perl -*-
- #
- # I/O device configuration
- #
- # Common constants
- our %consts = (
- '_PC_RESET' => 0x10,
- '_PC_IRQ' => 0x20,
- 'SRAM_ADDR' => 0,
- 'SRAM_BITS' => 15,
- 'SDRAM_ADDR' => 0x40000000,
- 'SDRAM_BITS' => 25,
- 'SYS_MAGIC_MAX80' => unpack('V', 'MAX8'),
- 'TIMER_SHIFT' => 5, # 32 Hz
- 'TTY_CHANNELS' => 2,
- 'USER_CONTEXT_CSR' => 0x7f0,
- 'MEINFO_CSR' => 0x7f1
- );
- # I/O address definitions
- our $xdev_addr_bits = 2;
- our $xdev_addr_shift = 28;
- our $iodev_addr_bits = 4;
- our $iodev_addr_shift = 7;
- # Special IRQs (CPU or non-device)
- our @sysirqs = ('timer', 'ebreak', 'buserr');
- # Define -irq to a string of 'e' (edge) or 'l' (level)
- # for a corresponding number of IRQs.
- our @iodevs = (
- { -name => 'sys' },
- { -name => 'abc', -irq => 'l' },
- { -name => 'abcmemmap', -xdev => 1 },
- { -name => 'sysclock', -irq => 'e' },
- { -name => 'tty', -irq => 'l' x $consts{'TTY_CHANNELS'} },
- { -name => 'usbdesc', -xdev => 1 },
- { -name => 'romcopy', -irq => 'l' },
- { -name => 'sdcard', -irq => 'l' },
- { -name => 'i2c', -irq => 'l' },
- { -name => 'esp', -irq => 'l' },
- { -name => 'random', -irq => 'l' },
- { -name => 'dirty', -xdev => 1 },
- { -name => 'vjtag', -irq => 'e' }
- );
|