Rahix / avr-device

Register access crate for AVR microcontrollers
Apache License 2.0
168 stars 67 forks source link

attiny2313{,a}: Add missing pin fields #148

Closed Rahix closed 5 months ago

Rahix commented 5 months ago

Usually, atdf2svd generates fields for each pin in the DDR,PORT,PIN registers based on additional information in the ATDF file. However, it seems for the ATtiny2313{,A} chips, this information is missing. Patch in the missing fields manually.

This was found via https://github.com/Rahix/avr-hal/pull/500.

Rahix commented 5 months ago

SVD diff:

diff --color -Nur svd-orig/attiny2313a.svd.patched svd/attiny2313a.svd.patched
--- svd-orig/attiny2313a.svd.patched    2024-01-28 17:56:40.222364358 +0100
+++ svd/attiny2313a.svd.patched 2024-01-28 18:07:27.551781547 +0100
@@ -1125,7 +1125,10 @@
               <maximum>255</maximum>
             </range>
           </writeConstraint>
-        </register>
+        <fields><field><name>PA0</name><description>Pin A0</description><bitRange>[0:0]</bitRange><access>read-write</access></field>
+            <field><name>PA1</name><description>Pin A1</description><bitRange>[1:1]</bitRange><access>read-write</access></field>
+            <field><name>PA2</name><description>Pin A2</description><bitRange>[2:2]</bitRange><access>read-write</access></field>
+            </fields></register>
         <register>
           <name>PINA</name>
           <description>Port A Input Pins</description>
@@ -1138,7 +1141,10 @@
               <maximum>255</maximum>
             </range>
           </writeConstraint>
-        </register>
+        <fields><field><name>PA0</name><description>Pin A0</description><bitRange>[0:0]</bitRange><access>read-write</access></field>
+            <field><name>PA1</name><description>Pin A1</description><bitRange>[1:1]</bitRange><access>read-write</access></field>
+            <field><name>PA2</name><description>Pin A2</description><bitRange>[2:2]</bitRange><access>read-write</access></field>
+            </fields></register>
         <register>
           <name>PORTA</name>
           <description>Port A Data Register</description>
@@ -1151,7 +1157,10 @@
               <maximum>255</maximum>
             </range>
           </writeConstraint>
-        </register>
+        <fields><field><name>PA0</name><description>Pin A0</description><bitRange>[0:0]</bitRange><access>read-write</access></field>
+            <field><name>PA1</name><description>Pin A1</description><bitRange>[1:1]</bitRange><access>read-write</access></field>
+            <field><name>PA2</name><description>Pin A2</description><bitRange>[2:2]</bitRange><access>read-write</access></field>
+            </fields></register>
       </registers>
     </peripheral>
     <peripheral>
@@ -1176,7 +1185,15 @@
               <maximum>255</maximum>
             </range>
           </writeConstraint>
-        </register>
+        <fields><field><name>PB0</name><description>Pin B0</description><bitRange>[0:0]</bitRange><access>read-write</access></field>
+            <field><name>PB1</name><description>Pin B1</description><bitRange>[1:1]</bitRange><access>read-write</access></field>
+            <field><name>PB2</name><description>Pin B2</description><bitRange>[2:2]</bitRange><access>read-write</access></field>
+            <field><name>PB3</name><description>Pin B3</description><bitRange>[3:3]</bitRange><access>read-write</access></field>
+            <field><name>PB4</name><description>Pin B4</description><bitRange>[4:4]</bitRange><access>read-write</access></field>
+            <field><name>PB5</name><description>Pin B5</description><bitRange>[5:5]</bitRange><access>read-write</access></field>
+            <field><name>PB6</name><description>Pin B6</description><bitRange>[6:6]</bitRange><access>read-write</access></field>
+            <field><name>PB7</name><description>Pin B7</description><bitRange>[7:7]</bitRange><access>read-write</access></field>
+            </fields></register>
         <register>
           <name>PINB</name>
           <description>Port B Input Pins</description>
@@ -1189,7 +1206,15 @@
               <maximum>255</maximum>
             </range>
           </writeConstraint>
-        </register>
+        <fields><field><name>PB0</name><description>Pin B0</description><bitRange>[0:0]</bitRange><access>read-write</access></field>
+            <field><name>PB1</name><description>Pin B1</description><bitRange>[1:1]</bitRange><access>read-write</access></field>
+            <field><name>PB2</name><description>Pin B2</description><bitRange>[2:2]</bitRange><access>read-write</access></field>
+            <field><name>PB3</name><description>Pin B3</description><bitRange>[3:3]</bitRange><access>read-write</access></field>
+            <field><name>PB4</name><description>Pin B4</description><bitRange>[4:4]</bitRange><access>read-write</access></field>
+            <field><name>PB5</name><description>Pin B5</description><bitRange>[5:5]</bitRange><access>read-write</access></field>
+            <field><name>PB6</name><description>Pin B6</description><bitRange>[6:6]</bitRange><access>read-write</access></field>
+            <field><name>PB7</name><description>Pin B7</description><bitRange>[7:7]</bitRange><access>read-write</access></field>
+            </fields></register>
         <register>
           <name>PORTB</name>
           <description>Port B Data Register</description>
@@ -1202,7 +1227,15 @@
               <maximum>255</maximum>
             </range>
           </writeConstraint>
-        </register>
+        <fields><field><name>PB0</name><description>Pin B0</description><bitRange>[0:0]</bitRange><access>read-write</access></field>
+            <field><name>PB1</name><description>Pin B1</description><bitRange>[1:1]</bitRange><access>read-write</access></field>
+            <field><name>PB2</name><description>Pin B2</description><bitRange>[2:2]</bitRange><access>read-write</access></field>
+            <field><name>PB3</name><description>Pin B3</description><bitRange>[3:3]</bitRange><access>read-write</access></field>
+            <field><name>PB4</name><description>Pin B4</description><bitRange>[4:4]</bitRange><access>read-write</access></field>
+            <field><name>PB5</name><description>Pin B5</description><bitRange>[5:5]</bitRange><access>read-write</access></field>
+            <field><name>PB6</name><description>Pin B6</description><bitRange>[6:6]</bitRange><access>read-write</access></field>
+            <field><name>PB7</name><description>Pin B7</description><bitRange>[7:7]</bitRange><access>read-write</access></field>
+            </fields></register>
       </registers>
     </peripheral>
     <peripheral>
@@ -1227,7 +1260,14 @@
               <maximum>255</maximum>
             </range>
           </writeConstraint>
-        </register>
+        <fields><field><name>PD0</name><description>Pin D0</description><bitRange>[0:0]</bitRange><access>read-write</access></field>
+            <field><name>PD1</name><description>Pin D1</description><bitRange>[1:1]</bitRange><access>read-write</access></field>
+            <field><name>PD2</name><description>Pin D2</description><bitRange>[2:2]</bitRange><access>read-write</access></field>
+            <field><name>PD3</name><description>Pin D3</description><bitRange>[3:3]</bitRange><access>read-write</access></field>
+            <field><name>PD4</name><description>Pin D4</description><bitRange>[4:4]</bitRange><access>read-write</access></field>
+            <field><name>PD5</name><description>Pin D5</description><bitRange>[5:5]</bitRange><access>read-write</access></field>
+            <field><name>PD6</name><description>Pin D6</description><bitRange>[6:6]</bitRange><access>read-write</access></field>
+            </fields></register>
         <register>
           <name>PIND</name>
           <description>Input Pins, Port D</description>
@@ -1240,7 +1280,14 @@
               <maximum>255</maximum>
             </range>
           </writeConstraint>
-        </register>
+        <fields><field><name>PD0</name><description>Pin D0</description><bitRange>[0:0]</bitRange><access>read-write</access></field>
+            <field><name>PD1</name><description>Pin D1</description><bitRange>[1:1]</bitRange><access>read-write</access></field>
+            <field><name>PD2</name><description>Pin D2</description><bitRange>[2:2]</bitRange><access>read-write</access></field>
+            <field><name>PD3</name><description>Pin D3</description><bitRange>[3:3]</bitRange><access>read-write</access></field>
+            <field><name>PD4</name><description>Pin D4</description><bitRange>[4:4]</bitRange><access>read-write</access></field>
+            <field><name>PD5</name><description>Pin D5</description><bitRange>[5:5]</bitRange><access>read-write</access></field>
+            <field><name>PD6</name><description>Pin D6</description><bitRange>[6:6]</bitRange><access>read-write</access></field>
+            </fields></register>
         <register>
           <name>PORTD</name>
           <description>Data Register, Port D</description>
@@ -1253,7 +1300,14 @@
               <maximum>255</maximum>
             </range>
           </writeConstraint>
-        </register>
+        <fields><field><name>PD0</name><description>Pin D0</description><bitRange>[0:0]</bitRange><access>read-write</access></field>
+            <field><name>PD1</name><description>Pin D1</description><bitRange>[1:1]</bitRange><access>read-write</access></field>
+            <field><name>PD2</name><description>Pin D2</description><bitRange>[2:2]</bitRange><access>read-write</access></field>
+            <field><name>PD3</name><description>Pin D3</description><bitRange>[3:3]</bitRange><access>read-write</access></field>
+            <field><name>PD4</name><description>Pin D4</description><bitRange>[4:4]</bitRange><access>read-write</access></field>
+            <field><name>PD5</name><description>Pin D5</description><bitRange>[5:5]</bitRange><access>read-write</access></field>
+            <field><name>PD6</name><description>Pin D6</description><bitRange>[6:6]</bitRange><access>read-write</access></field>
+            </fields></register>
       </registers>
     </peripheral>
     <peripheral>
diff --color -Nur svd-orig/attiny2313.svd.patched svd/attiny2313.svd.patched
--- svd-orig/attiny2313.svd.patched 2024-01-28 17:56:40.222364358 +0100
+++ svd/attiny2313.svd.patched  2024-01-28 18:06:41.857839285 +0100
@@ -1003,7 +1003,10 @@
               <maximum>255</maximum>
             </range>
           </writeConstraint>
-        </register>
+        <fields><field><name>PA0</name><description>Pin A0</description><bitRange>[0:0]</bitRange><access>read-write</access></field>
+            <field><name>PA1</name><description>Pin A1</description><bitRange>[1:1]</bitRange><access>read-write</access></field>
+            <field><name>PA2</name><description>Pin A2</description><bitRange>[2:2]</bitRange><access>read-write</access></field>
+            </fields></register>
         <register>
           <name>PINA</name>
           <description>Port A Input Pins</description>
@@ -1016,7 +1019,10 @@
               <maximum>255</maximum>
             </range>
           </writeConstraint>
-        </register>
+        <fields><field><name>PA0</name><description>Pin A0</description><bitRange>[0:0]</bitRange><access>read-write</access></field>
+            <field><name>PA1</name><description>Pin A1</description><bitRange>[1:1]</bitRange><access>read-write</access></field>
+            <field><name>PA2</name><description>Pin A2</description><bitRange>[2:2]</bitRange><access>read-write</access></field>
+            </fields></register>
         <register>
           <name>PORTA</name>
           <description>Port A Data Register</description>
@@ -1029,7 +1035,10 @@
               <maximum>255</maximum>
             </range>
           </writeConstraint>
-        </register>
+        <fields><field><name>PA0</name><description>Pin A0</description><bitRange>[0:0]</bitRange><access>read-write</access></field>
+            <field><name>PA1</name><description>Pin A1</description><bitRange>[1:1]</bitRange><access>read-write</access></field>
+            <field><name>PA2</name><description>Pin A2</description><bitRange>[2:2]</bitRange><access>read-write</access></field>
+            </fields></register>
       </registers>
     </peripheral>
     <peripheral>
@@ -1054,7 +1063,15 @@
               <maximum>255</maximum>
             </range>
           </writeConstraint>
-        </register>
+        <fields><field><name>PB0</name><description>Pin B0</description><bitRange>[0:0]</bitRange><access>read-write</access></field>
+            <field><name>PB1</name><description>Pin B1</description><bitRange>[1:1]</bitRange><access>read-write</access></field>
+            <field><name>PB2</name><description>Pin B2</description><bitRange>[2:2]</bitRange><access>read-write</access></field>
+            <field><name>PB3</name><description>Pin B3</description><bitRange>[3:3]</bitRange><access>read-write</access></field>
+            <field><name>PB4</name><description>Pin B4</description><bitRange>[4:4]</bitRange><access>read-write</access></field>
+            <field><name>PB5</name><description>Pin B5</description><bitRange>[5:5]</bitRange><access>read-write</access></field>
+            <field><name>PB6</name><description>Pin B6</description><bitRange>[6:6]</bitRange><access>read-write</access></field>
+            <field><name>PB7</name><description>Pin B7</description><bitRange>[7:7]</bitRange><access>read-write</access></field>
+            </fields></register>
         <register>
           <name>PINB</name>
           <description>Port B Input Pins</description>
@@ -1067,7 +1084,15 @@
               <maximum>255</maximum>
             </range>
           </writeConstraint>
-        </register>
+        <fields><field><name>PB0</name><description>Pin B0</description><bitRange>[0:0]</bitRange><access>read-write</access></field>
+            <field><name>PB1</name><description>Pin B1</description><bitRange>[1:1]</bitRange><access>read-write</access></field>
+            <field><name>PB2</name><description>Pin B2</description><bitRange>[2:2]</bitRange><access>read-write</access></field>
+            <field><name>PB3</name><description>Pin B3</description><bitRange>[3:3]</bitRange><access>read-write</access></field>
+            <field><name>PB4</name><description>Pin B4</description><bitRange>[4:4]</bitRange><access>read-write</access></field>
+            <field><name>PB5</name><description>Pin B5</description><bitRange>[5:5]</bitRange><access>read-write</access></field>
+            <field><name>PB6</name><description>Pin B6</description><bitRange>[6:6]</bitRange><access>read-write</access></field>
+            <field><name>PB7</name><description>Pin B7</description><bitRange>[7:7]</bitRange><access>read-write</access></field>
+            </fields></register>
         <register>
           <name>PORTB</name>
           <description>Port B Data Register</description>
@@ -1080,7 +1105,15 @@
               <maximum>255</maximum>
             </range>
           </writeConstraint>
-        </register>
+        <fields><field><name>PB0</name><description>Pin B0</description><bitRange>[0:0]</bitRange><access>read-write</access></field>
+            <field><name>PB1</name><description>Pin B1</description><bitRange>[1:1]</bitRange><access>read-write</access></field>
+            <field><name>PB2</name><description>Pin B2</description><bitRange>[2:2]</bitRange><access>read-write</access></field>
+            <field><name>PB3</name><description>Pin B3</description><bitRange>[3:3]</bitRange><access>read-write</access></field>
+            <field><name>PB4</name><description>Pin B4</description><bitRange>[4:4]</bitRange><access>read-write</access></field>
+            <field><name>PB5</name><description>Pin B5</description><bitRange>[5:5]</bitRange><access>read-write</access></field>
+            <field><name>PB6</name><description>Pin B6</description><bitRange>[6:6]</bitRange><access>read-write</access></field>
+            <field><name>PB7</name><description>Pin B7</description><bitRange>[7:7]</bitRange><access>read-write</access></field>
+            </fields></register>
       </registers>
     </peripheral>
     <peripheral>
@@ -1105,7 +1138,14 @@
               <maximum>255</maximum>
             </range>
           </writeConstraint>
-        </register>
+        <fields><field><name>PD0</name><description>Pin D0</description><bitRange>[0:0]</bitRange><access>read-write</access></field>
+            <field><name>PD1</name><description>Pin D1</description><bitRange>[1:1]</bitRange><access>read-write</access></field>
+            <field><name>PD2</name><description>Pin D2</description><bitRange>[2:2]</bitRange><access>read-write</access></field>
+            <field><name>PD3</name><description>Pin D3</description><bitRange>[3:3]</bitRange><access>read-write</access></field>
+            <field><name>PD4</name><description>Pin D4</description><bitRange>[4:4]</bitRange><access>read-write</access></field>
+            <field><name>PD5</name><description>Pin D5</description><bitRange>[5:5]</bitRange><access>read-write</access></field>
+            <field><name>PD6</name><description>Pin D6</description><bitRange>[6:6]</bitRange><access>read-write</access></field>
+            </fields></register>
         <register>
           <name>PIND</name>
           <description>Input Pins, Port D</description>
@@ -1118,7 +1158,14 @@
               <maximum>255</maximum>
             </range>
           </writeConstraint>
-        </register>
+        <fields><field><name>PD0</name><description>Pin D0</description><bitRange>[0:0]</bitRange><access>read-write</access></field>
+            <field><name>PD1</name><description>Pin D1</description><bitRange>[1:1]</bitRange><access>read-write</access></field>
+            <field><name>PD2</name><description>Pin D2</description><bitRange>[2:2]</bitRange><access>read-write</access></field>
+            <field><name>PD3</name><description>Pin D3</description><bitRange>[3:3]</bitRange><access>read-write</access></field>
+            <field><name>PD4</name><description>Pin D4</description><bitRange>[4:4]</bitRange><access>read-write</access></field>
+            <field><name>PD5</name><description>Pin D5</description><bitRange>[5:5]</bitRange><access>read-write</access></field>
+            <field><name>PD6</name><description>Pin D6</description><bitRange>[6:6]</bitRange><access>read-write</access></field>
+            </fields></register>
         <register>
           <name>PORTD</name>
           <description>Data Register, Port D</description>
@@ -1131,7 +1178,14 @@
               <maximum>255</maximum>
             </range>
           </writeConstraint>
-        </register>
+        <fields><field><name>PD0</name><description>Pin D0</description><bitRange>[0:0]</bitRange><access>read-write</access></field>
+            <field><name>PD1</name><description>Pin D1</description><bitRange>[1:1]</bitRange><access>read-write</access></field>
+            <field><name>PD2</name><description>Pin D2</description><bitRange>[2:2]</bitRange><access>read-write</access></field>
+            <field><name>PD3</name><description>Pin D3</description><bitRange>[3:3]</bitRange><access>read-write</access></field>
+            <field><name>PD4</name><description>Pin D4</description><bitRange>[4:4]</bitRange><access>read-write</access></field>
+            <field><name>PD5</name><description>Pin D5</description><bitRange>[5:5]</bitRange><access>read-write</access></field>
+            <field><name>PD6</name><description>Pin D6</description><bitRange>[6:6]</bitRange><access>read-write</access></field>
+            </fields></register>
       </registers>
     </peripheral>
     <peripheral>