Skip to content

Duplicated identifiers generated #357

@axos88

Description

@axos88

The SVD file below generates two definitions of the struct PIO0_. This seems like a tricky edge case where the repetition is 0-3 + 6-32 with the same type, and exceptions for repetitions 4 and 5. The types for 0-3 and 6-32 are the same, so we should be able to reuse that?

Also I'm baffled by the generated code, why the first definition generates an array, and others an entry for each repetition? Specifically why the code generated by the first and fourth register definition differs, since the definition seems to be exactly the same except offsets and repetition numbers.

I think the correct behaviour would be to generate different entries for each element.

Click to expand!
    pub pio0__: [PIO0__; 4],   // Generated by the first register definition with repetition
    #[doc = "0x10 - I/O configuration for open-drain pin PIO0_4"]
    pub pio0_4: PIO0_4,    // Generated by the second register definition without repetition
    #[doc = "0x14 - I/O configuration for open-drain pin PIO0_5"]
    pub pio0_5: PIO0_5,    // Generated by the second register definition without repetition
    #[doc = "0x18 - I/O configuration for port PIO0"]
    pub pio0_6: PIO0_, // Generated by the fourth register definition with repetition
    #[doc = "0x1c - I/O configuration for port PIO0"]
    pub pio0_7: PIO0_,  // Generated by the fourth register definition with repetition
    #[doc = "0x20 - I/O configuration for port PIO0"]
    pub pio0_8: PIO0_,  // Generated by the fourth register definition with repetition
    #[doc = "0x24 - I/O configuration for port PIO0"]
    pub pio0_9: PIO0_,  // Generated by the fourth register definition with repetition

<peripheral>
	<name>IOCON</name>
	<description>I/O control (IOCON) </description>
	<groupName>IOCON</groupName>
	<baseAddress>0x40044000</baseAddress>
	<addressBlock>
	<offset>0x0</offset>
	<size>0xFFF</size>
	<usage>registers</usage>
	</addressBlock>
	<registers>
		<register>
			<dim>4</dim>
			<dimIncrement>0x4</dimIncrement>
			<dimIndex>0-3</dimIndex>
			<name>PIO0_%s</name>
			<description>I/O configuration for  port PIO0</description>
			<addressOffset>0x000</addressOffset>
			<access>read-write</access>
			<resetValue>0x00000090</resetValue>
			<resetMask>0xFFFFFFFF</resetMask>
			<fields>
				<field>
					<name>FUNC</name>
					<description>Selects pin function.</description>
					<bitRange>[2:0]</bitRange>

				</field>
				<field>
					<name>MODE</name>
					<description>Selects function mode (on-chip pull-up/pull-down resistor control).</description>
					<bitRange>[4:3]</bitRange>
					<enumeratedValues>
					<name>ENUM</name>
						<enumeratedValue>
							<name>INACTIVE_NO_PULL_DO</name>
							<description>Inactive (no pull-down/pull-up resistor enabled).</description>
							<value>0x0</value>
						</enumeratedValue>
						<enumeratedValue>
							<name>PULL_DOWN_RESISTOR_E</name>
							<description>Pull-down resistor enabled.</description>
							<value>0x1</value>
						</enumeratedValue>
						<enumeratedValue>
							<name>PULL_UP_RESISTOR_ENA</name>
							<description>Pull-up resistor enabled.</description>
							<value>0x2</value>
						</enumeratedValue>
						<enumeratedValue>
							<name>REPEATER_MODE</name>
							<description>Repeater mode.</description>
							<value>0x3</value>
						</enumeratedValue>
					</enumeratedValues>
				</field>
				<field>
					<name>HYS</name>
					<description>Hysteresis.</description>
					<bitRange>[5:5]</bitRange>
					<enumeratedValues>
					<name>ENUM</name>
						<enumeratedValue>
							<name>DISABLE</name>
							<description>Disable.</description>
							<value>0</value>
						</enumeratedValue>
						<enumeratedValue>
							<name>ENABLE</name>
							<description>Enable.</description>
							<value>1</value>
						</enumeratedValue>
					</enumeratedValues>
				</field>
				<field>
					<name>INV</name>
					<description>Invert input</description>
					<bitRange>[6:6]</bitRange>
					<enumeratedValues>
					<name>ENUM</name>
						<enumeratedValue>
							<name>INPUT_NOT_INVERTED</name>
							<description>Input not inverted (HIGH on pin reads as 1; LOW on pin reads as 0).</description>
							<value>0</value>
						</enumeratedValue>
						<enumeratedValue>
							<name>INPUT_INVERTED_HIGH</name>
							<description>Input inverted (HIGH on pin reads as 0, LOW on pin reads as 1).</description>
							<value>1</value>
						</enumeratedValue>
					</enumeratedValues>
				</field>
				<field>
					<name>RESERVED</name>
					<description>Reserved.</description>
					<bitRange>[9:7]</bitRange>

				</field>
				<field>
					<name>OD</name>
					<description>Open-drain mode.</description>
					<bitRange>[10:10]</bitRange>
					<enumeratedValues>
					<name>ENUM</name>
						<enumeratedValue>
							<name>DISABLE</name>
							<description>Disable.</description>
							<value>0</value>
						</enumeratedValue>
						<enumeratedValue>
							<name>ENABLE</name>
							<description>Enable. Open-drain mode enabled.  This is not a true open-drain mode.</description>
							<value>1</value>
						</enumeratedValue>
					</enumeratedValues>
				</field>
				<field>
					<name>S_MODE</name>
					<description>Digital filter sample mode.</description>
					<bitRange>[12:11]</bitRange>
					<enumeratedValues>
					<name>ENUM</name>
						<enumeratedValue>
							<name>BYPASS_INPUT_FILTER</name>
							<description>Bypass input filter.</description>
							<value>0x0</value>
						</enumeratedValue>
						<enumeratedValue>
							<name>1_CLOCK_CYCLE</name>
							<description>1 clock cycle. Input pulses shorter than one filter clock are rejected.</description>
							<value>0x1</value>
						</enumeratedValue>
						<enumeratedValue>
							<name>2_CLOCK_CYCLES</name>
							<description>2 clock cycles. Input pulses shorter than two filter clocks are rejected.</description>
							<value>0x2</value>
						</enumeratedValue>
						<enumeratedValue>
							<name>3_CLOCK_CYCLES</name>
							<description>3 clock cycles. Input pulses shorter than three filter clocks are rejected.</description>
							<value>0x3</value>
						</enumeratedValue>
					</enumeratedValues>
				</field>
				<field>
					<name>CLKDIV</name>
					<description>Select peripheral clock divider for input filter sampling clock IOCONCLKDIV. Value 0x7 is reserved.</description>
					<bitRange>[15:13]</bitRange>
					<enumeratedValues>
					<name>ENUM</name>
						<enumeratedValue>
							<name>IOCONCLKDIV0</name>
							<description>IOCONCLKDIV0. Use IOCON clock divider 0.</description>
							<value>0x0</value>
						</enumeratedValue>
						<enumeratedValue>
							<name>IOCONCLKDIV1</name>
							<description>IOCONCLKDIV1. Use IOCON clock divider 1.</description>
							<value>0x1</value>
						</enumeratedValue>
						<enumeratedValue>
							<name>IOCONCLKDIV2</name>
							<description>IOCONCLKDIV2 Use IOCON clock divider 2.</description>
							<value>0x2</value>
						</enumeratedValue>
						<enumeratedValue>
							<name>IOCONCLKDIV3</name>
							<description>IOCONCLKDIV3. Use IOCON clock divider 3.</description>
							<value>0x3</value>
						</enumeratedValue>
						<enumeratedValue>
							<name>IOCONCLKDIV4</name>
							<description>IOCONCLKDIV4. Use IOCON clock divider 4.</description>
							<value>0x4</value>
						</enumeratedValue>
						<enumeratedValue>
							<name>IOCONCLKDIV5</name>
							<description>IOCONCLKDIV5. Use IOCON clock divider 5.</description>
							<value>0x5</value>
						</enumeratedValue>
						<enumeratedValue>
							<name>IOCONCLKDIV6</name>
							<description>IOCONCLKDIV6. Use IOCON clock divider 6.</description>
							<value>0x6</value>
						</enumeratedValue>
					</enumeratedValues>
				</field>
				<field>
					<name>RESERVED</name>
					<description>Reserved.</description>
					<bitRange>[31:16]</bitRange>

				</field>
			</fields>
		</register>
		<register>
			<name>PIO0_4</name>
			<description>I/O configuration for open-drain pin PIO0_4</description>
			<addressOffset>0x010</addressOffset>
			<access>read-write</access>
			<resetValue>0x00000080</resetValue>
			<resetMask>0xFFFFFFFF</resetMask>
			<fields>
				<field>
					<name>FUNC</name>
					<description>Selects pin function. </description>
					<bitRange>[2:0]</bitRange>

				</field>
				<field>
					<name>RESERVED</name>
					<description>Reserved.</description>
					<bitRange>[7:3]</bitRange>

				</field>
				<field>
					<name>I2CMODE</name>
					<description>Selects I2C mode (see  Section 7.3.8).  Select Standard mode (I2CMODE = 00, default) or Standard I/O functionality (I2CMODE = 01) if the pin function is GPIO (FUNC = 000).</description>
					<bitRange>[9:8]</bitRange>
					<enumeratedValues>
						<name>ENUM</name>
						<enumeratedValue>
							<name>STANDARD_MODE_FAST</name>
							<description>Standard mode/ Fast-mode I2C.</description>
							<value>0x0</value>
						</enumeratedValue>
						<enumeratedValue>
							<name>STANDARD_IO_FUNCTIO</name>
							<description>Standard I/O functionality</description>
							<value>0x1</value>
						</enumeratedValue>
						<enumeratedValue>
							<name>FAST_MODE_PLUS_I2C</name>
							<description>Fast-mode Plus I2C</description>
							<value>0x2</value>
						</enumeratedValue>
						<enumeratedValue>
							<name>RESERVED</name>
							<description>Reserved.</description>
							<value>0x3</value>
						</enumeratedValue>
					</enumeratedValues>
				</field>
				<field>
					<name>RESERVED</name>
					<description>Reserved.</description>
					<bitRange>[31:10]</bitRange>

				</field>
			</fields>
		</register>
		<register>
			<name>PIO0_5</name>
			<description>I/O configuration for open-drain pin PIO0_5</description>
			<addressOffset>0x014</addressOffset>
			<access>read-write</access>
			<resetValue>0x00000080</resetValue>
			<resetMask>0xFFFFFFFF</resetMask>
			<fields>
				<field>
					<name>FUNC</name>
					<description>Selects pin function. </description>
					<bitRange>[2:0]</bitRange>

				</field>
				<field>
					<name>RESERVED</name>
					<description>Reserved.</description>
					<bitRange>[7:3]</bitRange>

				</field>
				<field>
					<name>I2CMODE</name>
					<description>Selects I2C mode (see  Section 7.3.8).  Select Standard mode (I2CMODE = 00, default) or Standard I/O functionality (I2CMODE = 01) if the pin function is GPIO (FUNC = 000).</description>
					<bitRange>[9:8]</bitRange>
					<enumeratedValues>
						<name>ENUM</name>
						<enumeratedValue>
							<name>STANDARD_MODE_FAST</name>
							<description>Standard mode/ Fast-mode I2C.</description>
							<value>0x0</value>
						</enumeratedValue>
						<enumeratedValue>
							<name>STANDARD_IO_FUNCTIO</name>
							<description>Standard I/O functionality</description>
							<value>0x1</value>
						</enumeratedValue>
						<enumeratedValue>
							<name>FAST_MODE_PLUS_I2C</name>
							<description>Fast-mode Plus I2C</description>
							<value>0x2</value>
						</enumeratedValue>
						<enumeratedValue>
							<name>RESERVED</name>
							<description>Reserved.</description>
							<value>0x3</value>
						</enumeratedValue>
					</enumeratedValues>
				</field>
				<field>
					<name>RESERVED</name>
					<description>Reserved.</description>
					<bitRange>[31:10]</bitRange>

				</field>
			</fields>
		</register>
		<register>
			<dim>18</dim>
			<dimIncrement>0x4</dimIncrement>
			<dimIndex>6-23</dimIndex>
			<name>PIO0_%s</name>
			<description>I/O configuration for  port PIO0</description>
			<addressOffset>0x018</addressOffset>
			<access>read-write</access>
			<resetValue>0x00000090</resetValue>
			<resetMask>0xFFFFFFFF</resetMask>
			<fields>
				<field>
					<name>FUNC</name>
					<description>Selects pin function.</description>
					<bitRange>[2:0]</bitRange>

				</field>
				<field>
					<name>MODE</name>
					<description>Selects function mode (on-chip pull-up/pull-down resistor control).</description>
					<bitRange>[4:3]</bitRange>
					<enumeratedValues>
						<name>ENUM</name>
						<enumeratedValue>
							<name>INACTIVE_NO_PULL_DO</name>
							<description>Inactive (no pull-down/pull-up resistor enabled).</description>
							<value>0x0</value>
						</enumeratedValue>
						<enumeratedValue>
							<name>PULL_DOWN_RESISTOR_E</name>
							<description>Pull-down resistor enabled.</description>
							<value>0x1</value>
						</enumeratedValue>
						<enumeratedValue>
							<name>PULL_UP_RESISTOR_ENA</name>
							<description>Pull-up resistor enabled.</description>
							<value>0x2</value>
						</enumeratedValue>
						<enumeratedValue>
							<name>REPEATER_MODE</name>
							<description>Repeater mode.</description>
							<value>0x3</value>
						</enumeratedValue>
					</enumeratedValues>
				</field>
				<field>
					<name>HYS</name>
					<description>Hysteresis.</description>
					<bitRange>[5:5]</bitRange>
					<enumeratedValues>
						<name>ENUM</name>
						<enumeratedValue>
							<name>DISABLE</name>
							<description>Disable.</description>
							<value>0</value>
						</enumeratedValue>
						<enumeratedValue>
							<name>ENABLE</name>
							<description>Enable.</description>
							<value>1</value>
						</enumeratedValue>
					</enumeratedValues>
				</field>
				<field>
					<name>INV</name>
					<description>Invert input</description>
					<bitRange>[6:6]</bitRange>
					<enumeratedValues>
						<name>ENUM</name>
						<enumeratedValue>
							<name>INPUT_NOT_INVERTED</name>
							<description>Input not inverted (HIGH on pin reads as 1; LOW on pin reads as 0).</description>
							<value>0</value>
						</enumeratedValue>
						<enumeratedValue>
							<name>INPUT_INVERTED_HIGH</name>
							<description>Input inverted (HIGH on pin reads as 0, LOW on pin reads as 1).</description>
							<value>1</value>
						</enumeratedValue>
					</enumeratedValues>
				</field>
				<field>
					<name>RESERVED</name>
					<description>Reserved.</description>
					<bitRange>[9:7]</bitRange>

				</field>
				<field>
					<name>OD</name>
					<description>Open-drain mode.</description>
					<bitRange>[10:10]</bitRange>
					<enumeratedValues>
						<name>ENUM</name>
						<enumeratedValue>
							<name>DISABLE</name>
							<description>Disable.</description>
							<value>0</value>
						</enumeratedValue>
						<enumeratedValue>
							<name>ENABLE</name>
							<description>Enable. Open-drain mode enabled.  This is not a true open-drain mode.</description>
							<value>1</value>
						</enumeratedValue>
					</enumeratedValues>
				</field>
				<field>
					<name>S_MODE</name>
					<description>Digital filter sample mode.</description>
					<bitRange>[12:11]</bitRange>
					<enumeratedValues>
						<name>ENUM</name>
						<enumeratedValue>
							<name>BYPASS_INPUT_FILTER</name>
							<description>Bypass input filter.</description>
							<value>0x0</value>
						</enumeratedValue>
						<enumeratedValue>
							<name>1_CLOCK_CYCLE</name>
							<description>1 clock cycle. Input pulses shorter than one filter clock are rejected.</description>
							<value>0x1</value>
						</enumeratedValue>
						<enumeratedValue>
							<name>2_CLOCK_CYCLES</name>
							<description>2 clock cycles. Input pulses shorter than two filter clocks are rejected.</description>
							<value>0x2</value>
						</enumeratedValue>
						<enumeratedValue>
							<name>3_CLOCK_CYCLES</name>
							<description>3 clock cycles. Input pulses shorter than three filter clocks are rejected.</description>
							<value>0x3</value>
						</enumeratedValue>
					</enumeratedValues>
				</field>
				<field>
					<name>CLKDIV</name>
					<description>Select peripheral clock divider for input filter sampling clock IOCONCLKDIV. Value 0x7 is reserved.</description>
					<bitRange>[15:13]</bitRange>
					<enumeratedValues>
						<name>ENUM</name>
						<enumeratedValue>
							<name>IOCONCLKDIV0</name>
							<description>IOCONCLKDIV0. Use IOCON clock divider 0.</description>
							<value>0x0</value>
						</enumeratedValue>
						<enumeratedValue>
							<name>IOCONCLKDIV1</name>
							<description>IOCONCLKDIV1. Use IOCON clock divider 1.</description>
							<value>0x1</value>
						</enumeratedValue>
						<enumeratedValue>
							<name>IOCONCLKDIV2</name>
							<description>IOCONCLKDIV2 Use IOCON clock divider 2.</description>
							<value>0x2</value>
						</enumeratedValue>
						<enumeratedValue>
							<name>IOCONCLKDIV3</name>
							<description>IOCONCLKDIV3. Use IOCON clock divider 3.</description>
							<value>0x3</value>
						</enumeratedValue>
						<enumeratedValue>
							<name>IOCONCLKDIV4</name>
							<description>IOCONCLKDIV4. Use IOCON clock divider 4.</description>
							<value>0x4</value>
						</enumeratedValue>
						<enumeratedValue>
							<name>IOCONCLKDIV5</name>
							<description>IOCONCLKDIV5. Use IOCON clock divider 5.</description>
							<value>0x5</value>
						</enumeratedValue>
						<enumeratedValue>
							<name>IOCONCLKDIV6</name>
							<description>IOCONCLKDIV6. Use IOCON clock divider 6.</description>
							<value>0x6</value>
						</enumeratedValue>
					</enumeratedValues>
				</field>
				<field>
					<name>RESERVED</name>
					<description>Reserved.</description>
					<bitRange>[31:16]</bitRange>

				</field>
			</fields>
		</register>
		<register>
			<dim>32</dim>
			<dimIncrement>0x4</dimIncrement>
			<dimIndex>0-31</dimIndex>
			<name>PIO1_%s</name>
			<description>I/O configuration for port PIO1</description>
			<addressOffset>0x060</addressOffset>
			<access>read-write</access>
			<resetValue>0x00000090</resetValue>
			<resetMask>0xFFFFFFFF</resetMask>
			<fields>
				<field>
					<name>FUNC</name>
					<description>Selects pin function.</description>
					<bitRange>[2:0]</bitRange>

				</field>
				<field>
					<name>MODE</name>
					<description>Selects function mode (on-chip pull-up/pull-down resistor control).</description>
					<bitRange>[4:3]</bitRange>
					<enumeratedValues>
					<name>ENUM</name>
						<enumeratedValue>
							<name>INACTIVE_NO_PULL_DO</name>
							<description>Inactive (no pull-down/pull-up resistor enabled).</description>
							<value>0x0</value>
						</enumeratedValue>
						<enumeratedValue>
							<name>PULL_DOWN_RESISTOR_E</name>
							<description>Pull-down resistor enabled.</description>
							<value>0x1</value>
						</enumeratedValue>
						<enumeratedValue>
							<name>PULL_UP_RESISTOR_ENA</name>
							<description>Pull-up resistor enabled.</description>
							<value>0x2</value>
						</enumeratedValue>
						<enumeratedValue>
							<name>REPEATER_MODE</name>
							<description>Repeater mode.</description>
							<value>0x3</value>
						</enumeratedValue>
					</enumeratedValues>
				</field>
				<field>
					<name>HYS</name>
					<description>Hysteresis.</description>
					<bitRange>[5:5]</bitRange>
					<enumeratedValues>
					<name>ENUM</name>
						<enumeratedValue>
							<name>DISABLE</name>
							<description>Disable.</description>
							<value>0</value>
						</enumeratedValue>
						<enumeratedValue>
							<name>ENABLE</name>
							<description>Enable.</description>
							<value>1</value>
						</enumeratedValue>
					</enumeratedValues>
				</field>
				<field>
					<name>INV</name>
					<description>Invert input</description>
					<bitRange>[6:6]</bitRange>
					<enumeratedValues>
					<name>ENUM</name>
						<enumeratedValue>
							<name>INPUT_NOT_INVERTED</name>
							<description>Input not inverted (HIGH on pin reads as 1; LOW on pin reads as 0).</description>
							<value>0</value>
						</enumeratedValue>
						<enumeratedValue>
							<name>INPUT_INVERTED_HIGH</name>
							<description>Input inverted (HIGH on pin reads as 0, LOW on pin reads as 1).</description>
							<value>1</value>
						</enumeratedValue>
					</enumeratedValues>
				</field>
				<field>
					<name>RESERVED</name>
					<description>Reserved.</description>
					<bitRange>[9:7]</bitRange>

				</field>
				<field>
					<name>OD</name>
					<description>Open-drain mode.</description>
					<bitRange>[10:10]</bitRange>
					<enumeratedValues>
					<name>ENUM</name>
						<enumeratedValue>
							<name>DISABLE</name>
							<description>Disable.</description>
							<value>0</value>
						</enumeratedValue>
						<enumeratedValue>
							<name>ENABLED</name>
							<description>Enabled. Open-drain mode enabled.  This is not a true open-drain mode.</description>
							<value>1</value>
						</enumeratedValue>
					</enumeratedValues>
				</field>
				<field>
					<name>S_MODE</name>
					<description>Digital filter sample mode.</description>
					<bitRange>[12:11]</bitRange>
					<enumeratedValues>
					<name>ENUM</name>
						<enumeratedValue>
							<name>BYPASS_INPUT_FILTER</name>
							<description>Bypass input filter.</description>
							<value>0x0</value>
						</enumeratedValue>
						<enumeratedValue>
							<name>1_CLOCK_CYCLE</name>
							<description>1 clock cycle. Input pulses shorter than one filter clock are rejected.</description>
							<value>0x1</value>
						</enumeratedValue>
						<enumeratedValue>
							<name>2_CLOCK_CYCLES</name>
							<description>2 clock cycles. Input pulses shorter than two filter clocks are rejected.</description>
							<value>0x2</value>
						</enumeratedValue>
						<enumeratedValue>
							<name>3_CLOCK_CYCLES</name>
							<description>3 clock cycles. Input pulses shorter than three filter clocks are rejected.</description>
							<value>0x3</value>
						</enumeratedValue>
					</enumeratedValues>
				</field>
				<field>
					<name>CLKDIV</name>
					<description>Select peripheral clock divider for input filter sampling clock IOCONCLKDIV. Value 0x7 is reserved.</description>
					<bitRange>[15:13]</bitRange>
					<enumeratedValues>
					<name>ENUM</name>
						<enumeratedValue>
							<name>IOCONCLKDIV0</name>
							<description>IOCONCLKDIV0. Use IOCON clock divider 0.</description>
							<value>0x0</value>
						</enumeratedValue>
						<enumeratedValue>
							<name>IOCONCLKDIV1</name>
							<description>IOCONCLKDIV1. Use IOCON clock divider 1.</description>
							<value>0x1</value>
						</enumeratedValue>
						<enumeratedValue>
							<name>IOCONCLKDIV2</name>
							<description>IOCONCLKDIV2 Use IOCON clock divider 2.</description>
							<value>0x2</value>
						</enumeratedValue>
						<enumeratedValue>
							<name>IOCONCLKDIV3</name>
							<description>IOCONCLKDIV3. Use IOCON clock divider 3.</description>
							<value>0x3</value>
						</enumeratedValue>
						<enumeratedValue>
							<name>IOCONCLKDIV4</name>
							<description>IOCONCLKDIV4. Use IOCON clock divider 4.</description>
							<value>0x4</value>
						</enumeratedValue>
						<enumeratedValue>
							<name>IOCONCLKDIV5</name>
							<description>IOCONCLKDIV5. Use IOCON clock divider 5.</description>
							<value>0x5</value>
						</enumeratedValue>
						<enumeratedValue>
							<name>IOCONCLKDIV6</name>
							<description>IOCONCLKDIV6. Use IOCON clock divider 6.</description>
							<value>0x6</value>
						</enumeratedValue>
					</enumeratedValues>
				</field>
				<field>
					<name>RESERVED</name>
					<description>Reserved.</description>
					<bitRange>[31:16]</bitRange>

				</field>
			</fields>
		</register>
		<register>
			<dim>2</dim>
			<dimIncrement>0x4</dimIncrement>
			<dimIndex>0-1</dimIndex>
			<name>PIO2_%s</name>
			<description>I/O configuration for port PIO2</description>
			<addressOffset>0x0F0</addressOffset>
			<access>read-write</access>
			<resetValue>0x00000090</resetValue>
			<resetMask>0xFFFFFFFF</resetMask>
			<fields>
				<field>
					<name>FUNC</name>
					<description>Selects pin function.</description>
					<bitRange>[2:0]</bitRange>

				</field>
				<field>
					<name>MODE</name>
					<description>Selects function mode (on-chip pull-up/pull-down resistor control).</description>
					<bitRange>[4:3]</bitRange>
					<enumeratedValues>
					<name>ENUM</name>
						<enumeratedValue>
							<name>INACTIVE_NO_PULL_DO</name>
							<description>Inactive (no pull-down/pull-up resistor enabled).</description>
							<value>0x0</value>
						</enumeratedValue>
						<enumeratedValue>
							<name>PULL_DOWN_RESISTOR_E</name>
							<description>Pull-down resistor enabled.</description>
							<value>0x1</value>
						</enumeratedValue>
						<enumeratedValue>
							<name>PULL_UP_RESISTOR_ENA</name>
							<description>Pull-up resistor enabled.</description>
							<value>0x2</value>
						</enumeratedValue>
						<enumeratedValue>
							<name>REPEATER_MODE</name>
							<description>Repeater mode.</description>
							<value>0x3</value>
						</enumeratedValue>
					</enumeratedValues>
				</field>
				<field>
					<name>HYS</name>
					<description>Hysteresis.</description>
					<bitRange>[5:5]</bitRange>
					<enumeratedValues>
					<name>ENUM</name>
						<enumeratedValue>
							<name>DISABLE</name>
							<description>Disable.</description>
							<value>0</value>
						</enumeratedValue>
						<enumeratedValue>
							<name>ENABLE</name>
							<description>Enable.</description>
							<value>1</value>
						</enumeratedValue>
					</enumeratedValues>
				</field>
				<field>
					<name>INV</name>
					<description>Invert input</description>
					<bitRange>[6:6]</bitRange>
					<enumeratedValues>
					<name>ENUM</name>
						<enumeratedValue>
							<name>INPUT_NOT_INVERTED</name>
							<description>Input not inverted (HIGH on pin reads as 1; LOW on pin reads as 0).</description>
							<value>0</value>
						</enumeratedValue>
						<enumeratedValue>
							<name>INPUT_INVERTED_HIGH</name>
							<description>Input inverted (HIGH on pin reads as 0, LOW on pin reads as 1).</description>
							<value>1</value>
						</enumeratedValue>
					</enumeratedValues>
				</field>
				<field>
					<name>RESERVED</name>
					<description>Reserved.</description>
					<bitRange>[9:7]</bitRange>

				</field>
				<field>
					<name>OD</name>
					<description>Open-drain mode.</description>
					<bitRange>[10:10]</bitRange>
					<enumeratedValues>
					<name>ENUM</name>
						<enumeratedValue>
							<name>DISABLE</name>
							<description>Disable.</description>
							<value>0</value>
						</enumeratedValue>
						<enumeratedValue>
							<name>ENABLED</name>
							<description>Enabled. Open-drain mode enabled.  This is not a true open-drain mode.</description>
							<value>1</value>
						</enumeratedValue>
					</enumeratedValues>
				</field>
				<field>
					<name>S_MODE</name>
					<description>Digital filter sample mode.</description>
					<bitRange>[12:11]</bitRange>
					<enumeratedValues>
					<name>ENUM</name>
						<enumeratedValue>
							<name>BYPASS_INPUT_FILTER</name>
							<description>Bypass input filter.</description>
							<value>0x0</value>
						</enumeratedValue>
						<enumeratedValue>
							<name>1_CLOCK_CYCLE</name>
							<description>1 clock cycle. Input pulses shorter than one filter clock are rejected.</description>
							<value>0x1</value>
						</enumeratedValue>
						<enumeratedValue>
							<name>2_CLOCK_CYCLES</name>
							<description>2 clock cycles. Input pulses shorter than two filter clocks are rejected.</description>
							<value>0x2</value>
						</enumeratedValue>
						<enumeratedValue>
							<name>3_CLOCK_CYCLES</name>
							<description>3 clock cycles. Input pulses shorter than three filter clocks are rejected.</description>
							<value>0x3</value>
						</enumeratedValue>
					</enumeratedValues>
				</field>
				<field>
					<name>CLKDIV</name>
					<description>Select peripheral clock divider for input filter sampling clock IOCONCLKDIV. Value 0x7 is reserved.</description>
					<bitRange>[15:13]</bitRange>
					<enumeratedValues>
					<name>ENUM</name>
						<enumeratedValue>
							<name>IOCONCLKDIV0</name>
							<description>IOCONCLKDIV0. Use IOCON clock divider 0.</description>
							<value>0x0</value>
						</enumeratedValue>
						<enumeratedValue>
							<name>IOCONCLKDIV1</name>
							<description>IOCONCLKDIV1. Use IOCON clock divider 1.</description>
							<value>0x1</value>
						</enumeratedValue>
						<enumeratedValue>
							<name>IOCONCLKDIV2</name>
							<description>IOCONCLKDIV2 Use IOCON clock divider 2.</description>
							<value>0x2</value>
						</enumeratedValue>
						<enumeratedValue>
							<name>IOCONCLKDIV3</name>
							<description>IOCONCLKDIV3. Use IOCON clock divider 3.</description>
							<value>0x3</value>
						</enumeratedValue>
						<enumeratedValue>
							<name>IOCONCLKDIV4</name>
							<description>IOCONCLKDIV4. Use IOCON clock divider 4.</description>
							<value>0x4</value>
						</enumeratedValue>
						<enumeratedValue>
							<name>IOCONCLKDIV5</name>
							<description>IOCONCLKDIV5. Use IOCON clock divider 5.</description>
							<value>0x5</value>
						</enumeratedValue>
						<enumeratedValue>
							<name>IOCONCLKDIV6</name>
							<description>IOCONCLKDIV6. Use IOCON clock divider 6.</description>
							<value>0x6</value>
						</enumeratedValue>
					</enumeratedValues>
				</field>
				<field>
					<name>RESERVED</name>
					<description>Reserved.</description>
					<bitRange>[31:16]</bitRange>

				</field>
			</fields>
		</register>
		<register>
			<dim>22</dim>
			<dimIncrement>0x4</dimIncrement>
			<dimIndex>2-23</dimIndex>
			<name>PIO2_%s</name>
			<description>I/O configuration for port PIO2</description>
			<addressOffset>0x0FC</addressOffset>
			<access>read-write</access>
			<resetValue>0x00000090</resetValue>
			<resetMask>0xFFFFFFFF</resetMask>
			<fields>
				<field>
					<name>FUNC</name>
					<description>Selects pin function.</description>
					<bitRange>[2:0]</bitRange>

				</field>
				<field>
					<name>MODE</name>
					<description>Selects function mode (on-chip pull-up/pull-down resistor control).</description>
					<bitRange>[4:3]</bitRange>
					<enumeratedValues>
						<name>ENUM</name>
						<enumeratedValue>
							<name>INACTIVE_NO_PULL_DO</name>
							<description>Inactive (no pull-down/pull-up resistor enabled).</description>
							<value>0x0</value>
						</enumeratedValue>
						<enumeratedValue>
							<name>PULL_DOWN_RESISTOR_E</name>
							<description>Pull-down resistor enabled.</description>
							<value>0x1</value>
						</enumeratedValue>
						<enumeratedValue>
							<name>PULL_UP_RESISTOR_ENA</name>
							<description>Pull-up resistor enabled.</description>
							<value>0x2</value>
						</enumeratedValue>
						<enumeratedValue>
							<name>REPEATER_MODE</name>
							<description>Repeater mode.</description>
							<value>0x3</value>
						</enumeratedValue>
					</enumeratedValues>
				</field>
				<field>
					<name>HYS</name>
					<description>Hysteresis.</description>
					<bitRange>[5:5]</bitRange>
					<enumeratedValues>
						<name>ENUM</name>
						<enumeratedValue>
							<name>DISABLE</name>
							<description>Disable.</description>
							<value>0</value>
						</enumeratedValue>
						<enumeratedValue>
							<name>ENABLE</name>
							<description>Enable.</description>
							<value>1</value>
						</enumeratedValue>
					</enumeratedValues>
				</field>
				<field>
					<name>INV</name>
					<description>Invert input</description>
					<bitRange>[6:6]</bitRange>
					<enumeratedValues>
						<name>ENUM</name>
						<enumeratedValue>
							<name>INPUT_NOT_INVERTED</name>
							<description>Input not inverted (HIGH on pin reads as 1; LOW on pin reads as 0).</description>
							<value>0</value>
						</enumeratedValue>
						<enumeratedValue>
							<name>INPUT_INVERTED_HIGH</name>
							<description>Input inverted (HIGH on pin reads as 0, LOW on pin reads as 1).</description>
							<value>1</value>
						</enumeratedValue>
					</enumeratedValues>
				</field>
				<field>
					<name>RESERVED</name>
					<description>Reserved.</description>
					<bitRange>[9:7]</bitRange>

				</field>
				<field>
					<name>OD</name>
					<description>Open-drain mode.</description>
					<bitRange>[10:10]</bitRange>
					<enumeratedValues>
						<name>ENUM</name>
						<enumeratedValue>
							<name>DISABLE</name>
							<description>Disable.</description>
							<value>0</value>
						</enumeratedValue>
						<enumeratedValue>
							<name>ENABLED</name>
							<description>Enabled. Open-drain mode enabled.  This is not a true open-drain mode.</description>
							<value>1</value>
						</enumeratedValue>
					</enumeratedValues>
				</field>
				<field>
					<name>S_MODE</name>
					<description>Digital filter sample mode.</description>
					<bitRange>[12:11]</bitRange>
					<enumeratedValues>
						<name>ENUM</name>
						<enumeratedValue>
							<name>BYPASS_INPUT_FILTER</name>
							<description>Bypass input filter.</description>
							<value>0x0</value>
						</enumeratedValue>
						<enumeratedValue>
							<name>1_CLOCK_CYCLE</name>
							<description>1 clock cycle. Input pulses shorter than one filter clock are rejected.</description>
							<value>0x1</value>
						</enumeratedValue>
						<enumeratedValue>
							<name>2_CLOCK_CYCLES</name>
							<description>2 clock cycles. Input pulses shorter than two filter clocks are rejected.</description>
							<value>0x2</value>
						</enumeratedValue>
						<enumeratedValue>
							<name>3_CLOCK_CYCLES</name>
							<description>3 clock cycles. Input pulses shorter than three filter clocks are rejected.</description>
							<value>0x3</value>
						</enumeratedValue>
					</enumeratedValues>
				</field>
				<field>
					<name>CLKDIV</name>
					<description>Select peripheral clock divider for input filter sampling clock IOCONCLKDIV. Value 0x7 is reserved.</description>
					<bitRange>[15:13]</bitRange>
					<enumeratedValues>
						<name>ENUM</name>
						<enumeratedValue>
							<name>IOCONCLKDIV0</name>
							<description>IOCONCLKDIV0. Use IOCON clock divider 0.</description>
							<value>0x0</value>
						</enumeratedValue>
						<enumeratedValue>
							<name>IOCONCLKDIV1</name>
							<description>IOCONCLKDIV1. Use IOCON clock divider 1.</description>
							<value>0x1</value>
						</enumeratedValue>
						<enumeratedValue>
							<name>IOCONCLKDIV2</name>
							<description>IOCONCLKDIV2 Use IOCON clock divider 2.</description>
							<value>0x2</value>
						</enumeratedValue>
						<enumeratedValue>
							<name>IOCONCLKDIV3</name>
							<description>IOCONCLKDIV3. Use IOCON clock divider 3.</description>
							<value>0x3</value>
						</enumeratedValue>
						<enumeratedValue>
							<name>IOCONCLKDIV4</name>
							<description>IOCONCLKDIV4. Use IOCON clock divider 4.</description>
							<value>0x4</value>
						</enumeratedValue>
						<enumeratedValue>
							<name>IOCONCLKDIV5</name>
							<description>IOCONCLKDIV5. Use IOCON clock divider 5.</description>
							<value>0x5</value>
						</enumeratedValue>
						<enumeratedValue>
							<name>IOCONCLKDIV6</name>
							<description>IOCONCLKDIV6. Use IOCON clock divider 6.</description>
							<value>0x6</value>
						</enumeratedValue>
					</enumeratedValues>
				</field>
				<field>
					<name>RESERVED</name>
					<description>Reserved.</description>
					<bitRange>[31:16]</bitRange>

				</field>
			</fields>
		</register>
	</registers>

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions