DRTIO port - satman firmware #136
|
@ -1,55 +0,0 @@
|
||||||
INCLUDE generated/output_format.ld
|
|
||||||
INCLUDE generated/regions.ld
|
|
||||||
ENTRY(_reset_handler)
|
|
||||||
|
|
||||||
SECTIONS
|
|
||||||
{
|
|
||||||
.vectors :
|
|
||||||
{
|
|
||||||
*(.vectors)
|
|
||||||
} > main_ram
|
|
||||||
|
|
||||||
.text :
|
|
||||||
{
|
|
||||||
*(.text .text.*)
|
|
||||||
} > main_ram
|
|
||||||
|
|
||||||
/* https://sourceware.org/bugzilla/show_bug.cgi?id=20475 */
|
|
||||||
.got :
|
|
||||||
{
|
|
||||||
PROVIDE(_GLOBAL_OFFSET_TABLE_ = .);
|
|
||||||
*(.got)
|
|
||||||
} > main_ram
|
|
||||||
|
|
||||||
.got.plt :
|
|
||||||
{
|
|
||||||
*(.got.plt)
|
|
||||||
} > main_ram
|
|
||||||
|
|
||||||
.rodata :
|
|
||||||
{
|
|
||||||
_frodata = .;
|
|
||||||
*(.rodata .rodata.*)
|
|
||||||
_erodata = .;
|
|
||||||
} > main_ram
|
|
||||||
|
|
||||||
.data :
|
|
||||||
{
|
|
||||||
*(.data .data.*)
|
|
||||||
} > main_ram
|
|
||||||
|
|
||||||
.bss ALIGN(4) :
|
|
||||||
{
|
|
||||||
_fbss = .;
|
|
||||||
*(.bss .bss.*)
|
|
||||||
. = ALIGN(4);
|
|
||||||
_ebss = .;
|
|
||||||
} > main_ram
|
|
||||||
|
|
||||||
.stack :
|
|
||||||
{
|
|
||||||
_estack = .;
|
|
||||||
. += 0x10000;
|
|
||||||
_fstack = . - 4;
|
|
||||||
} > main_ram
|
|
||||||
}
|
|
|
@ -1,37 +0,0 @@
|
||||||
pub const INIT: u8 = 0x00;
|
|
||||||
pub const PRINT_STATUS: u8 = 0x01;
|
|
||||||
pub const PRBS: u8 = 0x02;
|
|
||||||
pub const STPL: u8 = 0x03;
|
|
||||||
|
|
||||||
pub const SYSREF_DELAY_DAC: u8 = 0x10;
|
|
||||||
pub const SYSREF_SLIP: u8 = 0x11;
|
|
||||||
pub const SYNC: u8 = 0x12;
|
|
||||||
|
|
||||||
pub const DDMTD_SYSREF_RAW: u8 = 0x20;
|
|
||||||
pub const DDMTD_SYSREF: u8 = 0x21;
|
|
||||||
|
|
||||||
|
|
||||||
fn average_2phases(a: i32, b: i32, modulo: i32) -> i32 {
|
|
||||||
let diff = ((a - b + modulo/2 + modulo) % modulo) - modulo/2;
|
|
||||||
return (modulo + b + diff/2) % modulo;
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn average_phases(phases: &[i32], modulo: i32) -> i32 {
|
|
||||||
if phases.len() == 1 {
|
|
||||||
panic!("input array length must be a power of 2");
|
|
||||||
} else if phases.len() == 2 {
|
|
||||||
average_2phases(phases[0], phases[1], modulo)
|
|
||||||
} else {
|
|
||||||
let cut = phases.len()/2;
|
|
||||||
average_2phases(
|
|
||||||
average_phases(&phases[..cut], modulo),
|
|
||||||
average_phases(&phases[cut..], modulo),
|
|
||||||
modulo)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pub const RAW_DDMTD_N_SHIFT: i32 = 6;
|
|
||||||
pub const RAW_DDMTD_N: i32 = 1 << RAW_DDMTD_N_SHIFT;
|
|
||||||
pub const DDMTD_DITHER_BITS: i32 = 1;
|
|
||||||
pub const DDMTD_N_SHIFT: i32 = RAW_DDMTD_N_SHIFT + DDMTD_DITHER_BITS;
|
|
||||||
pub const DDMTD_N: i32 = 1 << DDMTD_N_SHIFT;
|
|
Loading…
Reference in New Issue