From b3da0e4c93c27cc964705456e7143429566ce921 Mon Sep 17 00:00:00 2001 From: Astro Date: Sat, 25 May 2019 02:34:25 +0200 Subject: [PATCH] slcr: define all mio_pin regs, typed io_type --- src/slcr.rs | 159 ++++++++++++++++++++++++++++++++++------------------ 1 file changed, 106 insertions(+), 53 deletions(-) diff --git a/src/slcr.rs b/src/slcr.rs index abebd28..fe135f1 100644 --- a/src/slcr.rs +++ b/src/slcr.rs @@ -108,60 +108,60 @@ pub struct RegisterBlock { pub ddr_urgent_sel: RW, pub ddr_dfi_status: RW, reserved13: [u32; 55], - pub mio_pin_00: RW, - pub mio_pin_01: RW, - pub mio_pin_02: RW, - pub mio_pin_03: RW, - pub mio_pin_04: RW, - pub mio_pin_05: RW, - pub mio_pin_06: RW, - pub mio_pin_07: RW, - pub mio_pin_08: RW, - pub mio_pin_09: RW, - pub mio_pin_10: RW, - pub mio_pin_11: RW, - pub mio_pin_12: RW, - pub mio_pin_13: RW, - pub mio_pin_14: RW, - pub mio_pin_15: RW, - pub mio_pin_16: RW, - pub mio_pin_17: RW, - pub mio_pin_18: RW, - pub mio_pin_19: RW, - pub mio_pin_20: RW, - pub mio_pin_21: RW, - pub mio_pin_22: RW, - pub mio_pin_23: RW, - pub mio_pin_24: RW, - pub mio_pin_25: RW, - pub mio_pin_26: RW, - pub mio_pin_27: RW, - pub mio_pin_28: RW, - pub mio_pin_29: RW, - pub mio_pin_30: RW, - pub mio_pin_31: RW, - pub mio_pin_32: RW, - pub mio_pin_33: RW, - pub mio_pin_34: RW, - pub mio_pin_35: RW, - pub mio_pin_36: RW, - pub mio_pin_37: RW, - pub mio_pin_38: RW, - pub mio_pin_39: RW, - pub mio_pin_40: RW, - pub mio_pin_41: RW, - pub mio_pin_42: RW, - pub mio_pin_43: RW, - pub mio_pin_44: RW, - pub mio_pin_45: RW, - pub mio_pin_46: RW, - pub mio_pin_47: RW, + pub mio_pin_00: MioPin00, + pub mio_pin_01: MioPin01, + pub mio_pin_02: MioPin02, + pub mio_pin_03: MioPin03, + pub mio_pin_04: MioPin04, + pub mio_pin_05: MioPin05, + pub mio_pin_06: MioPin06, + pub mio_pin_07: MioPin07, + pub mio_pin_08: MioPin08, + pub mio_pin_09: MioPin09, + pub mio_pin_10: MioPin10, + pub mio_pin_11: MioPin11, + pub mio_pin_12: MioPin12, + pub mio_pin_13: MioPin13, + pub mio_pin_14: MioPin14, + pub mio_pin_15: MioPin15, + pub mio_pin_16: MioPin16, + pub mio_pin_17: MioPin17, + pub mio_pin_18: MioPin18, + pub mio_pin_19: MioPin19, + pub mio_pin_20: MioPin20, + pub mio_pin_21: MioPin21, + pub mio_pin_22: MioPin22, + pub mio_pin_23: MioPin23, + pub mio_pin_24: MioPin24, + pub mio_pin_25: MioPin25, + pub mio_pin_26: MioPin26, + pub mio_pin_27: MioPin27, + pub mio_pin_28: MioPin28, + pub mio_pin_29: MioPin29, + pub mio_pin_30: MioPin30, + pub mio_pin_31: MioPin31, + pub mio_pin_32: MioPin32, + pub mio_pin_33: MioPin33, + pub mio_pin_34: MioPin34, + pub mio_pin_35: MioPin35, + pub mio_pin_36: MioPin36, + pub mio_pin_37: MioPin37, + pub mio_pin_38: MioPin38, + pub mio_pin_39: MioPin39, + pub mio_pin_40: MioPin40, + pub mio_pin_41: MioPin41, + pub mio_pin_42: MioPin42, + pub mio_pin_43: MioPin43, + pub mio_pin_44: MioPin44, + pub mio_pin_45: MioPin45, + pub mio_pin_46: MioPin46, + pub mio_pin_47: MioPin47, pub mio_pin_48: MioPin48, pub mio_pin_49: MioPin49, - pub mio_pin_50: RW, - pub mio_pin_51: RW, - pub mio_pin_52: RW, - pub mio_pin_53: RW, + pub mio_pin_50: MioPin50, + pub mio_pin_51: MioPin51, + pub mio_pin_52: MioPin52, + pub mio_pin_53: MioPin53, reserved14: [u32; 11], pub mio_loopback: RW, reserved15: [u32; 1], @@ -306,6 +306,7 @@ impl UartRstCtrl { } /// Used for MioPin*.io_type +#[repr(u8)] pub enum IoBufferType { Lvcmos18 = 0b001, Lvcmos25 = 0b010, @@ -318,7 +319,7 @@ macro_rules! mio_pin_register { register!($mod_name, $struct_name, RW, u32); register_bit!($mod_name, disable_rcvr, 13); register_bit!($mod_name, pullup, 12); - register_bits!($mod_name, io_type, u8, 9, 11); + register_bits_typed!($mod_name, io_type, u8, IoBufferType, 9, 11); register_bit!($mod_name, speed, 8); register_bits!($mod_name, l3_sel, u8, 5, 7); register_bits!($mod_name, l2_sel, u8, 3, 4); @@ -328,5 +329,57 @@ macro_rules! mio_pin_register { ); } +mio_pin_register!(mio_pin_00, MioPin00); +mio_pin_register!(mio_pin_01, MioPin01); +mio_pin_register!(mio_pin_02, MioPin02); +mio_pin_register!(mio_pin_03, MioPin03); +mio_pin_register!(mio_pin_04, MioPin04); +mio_pin_register!(mio_pin_05, MioPin05); +mio_pin_register!(mio_pin_06, MioPin06); +mio_pin_register!(mio_pin_07, MioPin07); +mio_pin_register!(mio_pin_08, MioPin08); +mio_pin_register!(mio_pin_09, MioPin09); +mio_pin_register!(mio_pin_10, MioPin10); +mio_pin_register!(mio_pin_11, MioPin11); +mio_pin_register!(mio_pin_12, MioPin12); +mio_pin_register!(mio_pin_13, MioPin13); +mio_pin_register!(mio_pin_14, MioPin14); +mio_pin_register!(mio_pin_15, MioPin15); +mio_pin_register!(mio_pin_16, MioPin16); +mio_pin_register!(mio_pin_17, MioPin17); +mio_pin_register!(mio_pin_18, MioPin18); +mio_pin_register!(mio_pin_19, MioPin19); +mio_pin_register!(mio_pin_20, MioPin20); +mio_pin_register!(mio_pin_21, MioPin21); +mio_pin_register!(mio_pin_22, MioPin22); +mio_pin_register!(mio_pin_23, MioPin23); +mio_pin_register!(mio_pin_24, MioPin24); +mio_pin_register!(mio_pin_25, MioPin25); +mio_pin_register!(mio_pin_26, MioPin26); +mio_pin_register!(mio_pin_27, MioPin27); +mio_pin_register!(mio_pin_28, MioPin28); +mio_pin_register!(mio_pin_29, MioPin29); +mio_pin_register!(mio_pin_30, MioPin30); +mio_pin_register!(mio_pin_31, MioPin31); +mio_pin_register!(mio_pin_32, MioPin32); +mio_pin_register!(mio_pin_33, MioPin33); +mio_pin_register!(mio_pin_34, MioPin34); +mio_pin_register!(mio_pin_35, MioPin35); +mio_pin_register!(mio_pin_36, MioPin36); +mio_pin_register!(mio_pin_37, MioPin37); +mio_pin_register!(mio_pin_38, MioPin38); +mio_pin_register!(mio_pin_39, MioPin39); +mio_pin_register!(mio_pin_40, MioPin40); +mio_pin_register!(mio_pin_41, MioPin41); +mio_pin_register!(mio_pin_42, MioPin42); +mio_pin_register!(mio_pin_43, MioPin43); +mio_pin_register!(mio_pin_44, MioPin44); +mio_pin_register!(mio_pin_45, MioPin45); +mio_pin_register!(mio_pin_46, MioPin46); +mio_pin_register!(mio_pin_47, MioPin47); mio_pin_register!(mio_pin_48, MioPin48); mio_pin_register!(mio_pin_49, MioPin49); +mio_pin_register!(mio_pin_50, MioPin50); +mio_pin_register!(mio_pin_51, MioPin51); +mio_pin_register!(mio_pin_52, MioPin52); +mio_pin_register!(mio_pin_53, MioPin53);