1616#include "../../../third_party/sonata-system/sw/legacy/common/spi.h"
1717#include "../../../third_party/sonata-system/sw/legacy/common/timer.h"
1818
19- // Define our own GPIO_OUT as the version from `sonata-system` uses void
20- // pointer arithmetic, which clang-tidy forbids.
21- #define GPIO_OUT_ETH GPIO_FROM_BASE_ADDR((GPIO_BASE + GPIO_OUT_REG))
22-
2319enum
2420{
2521 // Ethernet IRQs
26- EthIntrIrq = 47 ,
27- // Ethernet GPIO Output Pins
28- EthCsPin = 13 ,
29- EthRstPin = 14 ,
22+ EthIntrIrq = 2 ,
23+ // Ethernet chip-select
24+ EthSpiCs = 0 ,
25+ EthSpiRst = 1 ,
3026};
3127
3228static struct Netif * ethNetif ;
@@ -47,11 +43,11 @@ static uint16_t ksz8851_reg_read(spi_t *spi, uint8_t reg)
4743 bytes [0 ] = (0b00 << 6 ) | (be << 2 ) | (reg >> 6 );
4844 bytes [1 ] = (reg << 2 ) & 0b11110000 ;
4945
50- set_output_bit ( GPIO_OUT_ETH , EthCsPin , 0 );
46+ spi_set_cs ( spi , EthSpiCs , 0 );
5147 spi_tx (spi , bytes , 2 );
5248 uint16_t val ;
5349 spi_rx (spi , (uint8_t * )& val , 2 );
54- set_output_bit ( GPIO_OUT_ETH , EthCsPin , 1 );
50+ spi_set_cs ( spi , EthSpiCs , 1 );
5551 return val ;
5652}
5753
@@ -62,11 +58,11 @@ static void ksz8851_reg_write(spi_t *spi, uint8_t reg, uint16_t val)
6258 bytes [0 ] = (0b01 << 6 ) | (be << 2 ) | (reg >> 6 );
6359 bytes [1 ] = (reg << 2 ) & 0b11110000 ;
6460
65- set_output_bit ( GPIO_OUT_ETH , EthCsPin , 0 );
61+ spi_set_cs ( spi , EthSpiCs , 0 );
6662 spi_tx (spi , bytes , 2 );
6763 spi_tx (spi , (uint8_t * )& val , 2 );
6864 spi_wait_idle (spi );
69- set_output_bit ( GPIO_OUT_ETH , EthCsPin , 1 );
65+ spi_set_cs ( spi , EthSpiCs , 1 );
7066}
7167
7268static void ksz8851_reg_set (spi_t * spi , uint8_t reg , uint16_t mask )
@@ -150,7 +146,7 @@ bool ksz8851_output(struct Netif *netif, struct Fbuf *buf)
150146
151147 // Start transmission.
152148 uint8_t cmd = 0b11 << 6 ;
153- set_output_bit ( GPIO_OUT_ETH , EthCsPin , 0 );
149+ spi_set_cs ( spi , EthSpiCs , 0 );
154150 spi_tx (spi , & cmd , 1 );
155151
156152 uint32_t header = 0x8000 | (buf -> len << 16 );
@@ -171,7 +167,7 @@ bool ksz8851_output(struct Netif *netif, struct Fbuf *buf)
171167 }
172168
173169 spi_wait_idle (spi );
174- set_output_bit ( GPIO_OUT_ETH , EthCsPin , 1 );
170+ spi_set_cs ( spi , EthSpiCs , 1 );
175171
176172 // Stop QMU DMA transfer operation
177173 ksz8851_reg_clear (spi , ETH_RXQCR , StartDmaAccess );
@@ -210,9 +206,9 @@ bool ksz8851_init(struct Netif *netif, uint8_t hwaddr[6])
210206 return false;
211207
212208 // Reset chip
213- set_output_bit ( GPIO_OUT_ETH , EthRstPin , 0 );
209+ spi_set_cs ( spi , EthSpiRst , 0 );
214210 timer_delay (150 );
215- set_output_bit ( GPIO_OUT_ETH , EthRstPin , 0x1 );
211+ spi_set_cs ( spi , EthSpiRst , 1 );
216212
217213 uint16_t cider = ksz8851_reg_read (spi , ETH_CIDER );
218214#ifdef KSZ8851_DEBUG_PRINT
0 commit comments