// Raspberry Pi 5 I/O resource definitions // Copyright (C)2024, Philip Munts dba Munts Technologies. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. using IO.Objects.SimpleIO.Device; namespace IO.Objects.SimpleIO.Platforms { /// /// This class defines identifiers for the devices provided by the /// Raspberry Pi 5 hardware platform. /// public static class RaspberryPi5 { /// Analog input designator (0, 0). /// Raspberry Pi boards don't have a built-in ADC (Analog to /// Digital Converter) subsystem, so this is just a placeholder /// for the first IIO (Industrial I/O) ADC device. public static readonly Designator AIN0 = new Designator(0, 0); /// Analog input designator (0, 1). /// Raspberry Pi boards don't have a built-in ADC (Analog to /// Digital Converter) subsystem, so this is just a placeholder /// for the first IIO (Industrial I/O) ADC device. public static readonly Designator AIN1 = new Designator(0, 1); /// Analog input designator (0, 2). /// Raspberry Pi boards don't have a built-in ADC (Analog to /// Digital Converter) subsystem, so this is just a placeholder /// for the first IIO (Industrial I/O) ADC device. public static readonly Designator AIN2 = new Designator(0, 2); /// Analog input designator (0, 3). /// Raspberry Pi boards don't have a built-in ADC (Analog to /// Digital Converter) subsystem, so this is just a placeholder /// for the first IIO (Industrial I/O) ADC device. public static readonly Designator AIN3 = new Designator(0, 3); /// Analog input designator (0, 4). /// Raspberry Pi boards don't have a built-in ADC (Analog to /// Digital Converter) subsystem, so this is just a placeholder /// for the first IIO (Industrial I/O) ADC device. public static readonly Designator AIN4 = new Designator(0, 4); /// Analog input designator (0, 5). /// Raspberry Pi boards don't have a built-in ADC (Analog to /// Digital Converter) subsystem, so this is just a placeholder /// for the first IIO (Industrial I/O) ADC device. public static readonly Designator AIN5 = new Designator(0, 5); /// Analog input designator (0, 6). /// Raspberry Pi boards don't have a built-in ADC (Analog to /// Digital Converter) subsystem, so this is just a placeholder /// for the first IIO (Industrial I/O) ADC device. public static readonly Designator AIN6 = new Designator(0, 6); /// Analog input designator (0, 7). /// Raspberry Pi boards don't have a built-in ADC (Analog to /// Digital Converter) subsystem, so this is just a placeholder /// for the first IIO (Industrial I/O) ADC device. public static readonly Designator AIN7 = new Designator(0, 7); /// GPIO pin designator (0, 0). Conflicts with /// I2C0 SDA. public static readonly Designator GPIO0 = new Designator(0, 0); /// GPIO pin designator (0, 1). Conflicts with /// I2C0 SDA. public static readonly Designator GPIO1 = new Designator(0, 1); /// GPIO pin designator (0, 2). Conflicts with /// I2C1 SDA. public static readonly Designator GPIO2 = new Designator(0, 2); /// GPIO pin designator (0, 3). Conflicts with /// I2C1 SCL. public static readonly Designator GPIO3 = new Designator(0, 3); /// GPIO pin designator (0, 4). public static readonly Designator GPIO4 = new Designator(0, 4); /// GPIO pin designator (0, 5). public static readonly Designator GPIO5 = new Designator(0, 5); /// GPIO pin designator (0, 6). public static readonly Designator GPIO6 = new Designator(0, 6); /// GPIO pin designator (0, 7). Conflicts with /// SPI0 SS1. public static readonly Designator GPIO7 = new Designator(0, 7); /// GPIO pin designator (0, 8). Conflicts with /// SPI0 SS0. public static readonly Designator GPIO8 = new Designator(0, 8); /// GPIO pin designator (0, 9). Conflicts with /// SPI0 MISO. public static readonly Designator GPIO9 = new Designator(0, 9); /// GPIO pin designator (0, 10). Conflicts with /// SPI0 MOSI. public static readonly Designator GPIO10 = new Designator(0, 10); /// GPIO pin designator (0, 11). Conflicts with /// SPI0 SCLK. public static readonly Designator GPIO11 = new Designator(0, 11); /// GPIO pin designator (0, 12). public static readonly Designator GPIO12 = new Designator(0, 12); /// GPIO pin designator (0, 13). public static readonly Designator GPIO13 = new Designator(0, 13); /// GPIO pin designator (0, 14). Conflicts with /// UART0 TXD. public static readonly Designator GPIO14 = new Designator(0, 14); /// GPIO pin designator (0, 15). Conflicts with /// UART0 RXD. public static readonly Designator GPIO15 = new Designator(0, 15); /// GPIO pin designator (0, 16). Conflicts with /// SPI1 SS2. public static readonly Designator GPIO16 = new Designator(0, 16); /// GPIO pin designator (0, 17). Conflicts with /// SPI1 SS1. public static readonly Designator GPIO17 = new Designator(0, 17); /// GPIO pin designator (0, 18). Conflicts with /// PWM0 or SPI1 SS0. public static readonly Designator GPIO18 = new Designator(0, 18); /// GPIO pin designator (0, 19). Conflicts with /// PWM1 or SPI1 MISO. public static readonly Designator GPIO19 = new Designator(0, 19); /// GPIO pin designator (0, 20). Conflicts with /// SPI1 MOSI. public static readonly Designator GPIO20 = new Designator(0, 20); /// GPIO pin designator (0, 21). Conflicts with /// SPI1 SCLK. public static readonly Designator GPIO21 = new Designator(0, 21); /// GPIO pin designator (0, 22). public static readonly Designator GPIO22 = new Designator(0, 22); /// GPIO pin designator (0, 23). public static readonly Designator GPIO23 = new Designator(0, 23); /// GPIO pin designator (0, 24). public static readonly Designator GPIO24 = new Designator(0, 24); /// GPIO pin designator (0, 25). public static readonly Designator GPIO25 = new Designator(0, 25); /// GPIO pin designator (0, 26). public static readonly Designator GPIO26 = new Designator(0, 26); /// GPIO pin designator (0, 27). public static readonly Designator GPIO27 = new Designator(0, 27); /// I2C bus designator (0, 0). Conflicts with GPIO0 /// and GPIO1 or GPIO8 and GPIO9. /// Requires the i2c0.dtbo device tree overlay). /// public static readonly Designator I2C0 = new Designator(0, 0); /// I2C bus designator (0, 1). Conflicts with GPIO2 /// and GPIO3. public static readonly Designator I2C1 = new Designator(0, 1); /// I2C bus designator (0, 2). Conflicts with GPIO4 /// and GPIO5 or GPIO12 and GPIO13. /// Requires the i2c2.dtbo device tree overlay). /// public static readonly Designator I2C2 = new Designator(0, 2); /// I2C bus designator (0, 3). Conflicts with GPIO6 /// and GPIO7 or GPIO14 and GPIO15. /// Requires the i2c3.dtbo device tree overlay). /// public static readonly Designator I2C3 = new Designator(0, 3); /// PWM output designator (2, 0). Conflicts with /// GPIO12. Requires the pwmchip.dtbo /// device tree overlay. public static readonly Designator PWM0 = new Designator(2, 0); /// PWM output designator (2, 1). Conflicts with /// GPIO13. Requires the pwmchip.dtbo /// device tree overlay. public static readonly Designator PWM1 = new Designator(2, 1); /// PWM output designator (2, 2). Conflicts with /// GPIO14 or GPIO18. Requires the pwmchip.dtbo /// device tree overlay. public static readonly Designator PWM2 = new Designator(2, 2); /// PWM output designator (2, 3). Conflicts with /// GPIO15 or GPIO19. Requires the pwmchip.dtbo /// device tree overlay. public static readonly Designator PWM3 = new Designator(2, 3); /// SPI slave designator (0, 0). Conflicts with /// GPIO8. public static readonly Designator SPI0_0 = new Designator(0, 0); /// SPI slave designator (0, 1). Conflicts with /// GPIO7. public static readonly Designator SPI0_1 = new Designator(0, 1); /// SPI slave designator (1, 0). Conflicts with /// GPIO18 or PWM0. Requires one of the /// spi1-1cs.dtbo, spi1-2cs.dtbo or spi1-3cs.dtbo /// device tree overlays. public static readonly Designator SPI1_0 = new Designator(1, 0); /// SPI slave designator (1, 1). Conflicts with /// GPIO17. Requires one of the spi1-1cs.dtbo, /// spi1-2cs.dtbo or spi1-3cs.dtbo device tree /// overlays. public static readonly Designator SPI1_1 = new Designator(1, 1); /// SPI slave designator (1, 2). Conflicts with /// GPIO16. Requires one of the spi1-1cs.dtbo, /// spi1-2cs.dtbo or spi1-3cs.dtbo device tree /// overlays. public static readonly Designator SPI1_2 = new Designator(1, 2); } }