| 
					
				 | 
			
			
				@@ -18,99 +18,14 @@ extern "C" { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 extern const char *g_azplatform_name; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-// GPIO definitions 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-// SCSI output port. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-// This is written using BSRR mechanism, so all output pins must be on same GPIO port. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-// The output pins are open-drain in hardware, using separate buffer chips for driving. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#define SCSI_OUT_PORT GPIOD 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#define SCSI_OUT_DB7  GPIO_PIN_0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#define SCSI_OUT_DB6  GPIO_PIN_1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#define SCSI_OUT_DB5  GPIO_PIN_2 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#define SCSI_OUT_DB4  GPIO_PIN_3 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#define SCSI_OUT_DB3  GPIO_PIN_4 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#define SCSI_OUT_DB2  GPIO_PIN_5 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#define SCSI_OUT_DB1  GPIO_PIN_6 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#define SCSI_OUT_DB0  GPIO_PIN_7 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#define SCSI_OUT_IO   GPIO_PIN_8 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#define SCSI_OUT_REQ  GPIO_PIN_9 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#define SCSI_OUT_CD   GPIO_PIN_10 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#define SCSI_OUT_SEL  GPIO_PIN_11 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#define SCSI_OUT_MSG  GPIO_PIN_12 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#define SCSI_OUT_RST  GPIO_PIN_13 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#define SCSI_OUT_BSY  GPIO_PIN_14 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#define SCSI_OUT_DBP  GPIO_PIN_15 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#define SCSI_OUT_DATA_MASK (0x00FF | SCSI_OUT_DBP) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#define SCSI_OUT_MASK 0xFFFF 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-// SCSI input port 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#define SCSI_IN_PORT  GPIOE 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#define SCSI_IN_DB7   GPIO_PIN_15 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#define SCSI_IN_DB6   GPIO_PIN_14 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#define SCSI_IN_DB5   GPIO_PIN_13 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#define SCSI_IN_DB4   GPIO_PIN_12 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#define SCSI_IN_DB3   GPIO_PIN_11 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#define SCSI_IN_DB2   GPIO_PIN_10 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#define SCSI_IN_DB1   GPIO_PIN_9 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#define SCSI_IN_DB0   GPIO_PIN_8 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#define SCSI_IN_DBP   GPIO_PIN_7 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#define SCSI_IN_MASK  (SCSI_IN_DB7|SCSI_IN_DB6|SCSI_IN_DB5|SCSI_IN_DB4|SCSI_IN_DB3|SCSI_IN_DB2|SCSI_IN_DB1|SCSI_IN_DB0|SCSI_IN_DBP) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#define SCSI_IN_SHIFT 8 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-// The SCSI_ATN pin was PB0 in prototype 2022a, but was moved to PC6 for 5V-tolerance 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#ifdef AZULSCSI_2022A_REVISION 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#define SCSI_ATN_PORT GPIOB 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#define SCSI_ATN_PIN  GPIO_PIN_0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#define SCSI_ATN_PORT GPIOC 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#define SCSI_ATN_PIN  GPIO_PIN_6 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#if defined(AZULSCSI_V1_0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#   define PLATFORM_NAME "AzulSCSI v1.0" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#   include "AzulSCSI_v1_0_gpio.h" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#elif defined(AZULSCSI_V1_1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#   define PLATFORM_NAME "AzulSCSI v1.1" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#   include "AzulSCSI_v1_1_gpio.h" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-// Various SCSI status signals 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#define SCSI_BSY_PORT GPIOB 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#define SCSI_BSY_PIN  GPIO_PIN_10 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#define SCSI_SEL_PORT GPIOB 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#define SCSI_SEL_PIN  GPIO_PIN_11 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#define SCSI_ACK_PORT GPIOB 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#define SCSI_ACK_PIN  GPIO_PIN_12 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-// RST pin uses EXTI interrupt 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#define SCSI_RST_PORT GPIOB 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#define SCSI_RST_PIN  GPIO_PIN_13 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#define SCSI_RST_EXTI EXTI_13 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#define SCSI_RST_EXTI_SOURCE_PORT GPIO_PORT_SOURCE_GPIOB 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#define SCSI_RST_EXTI_SOURCE_PIN GPIO_PIN_SOURCE_13 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#define SCSI_RST_IRQ  EXTI10_15_IRQHandler 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#define SCSI_RST_IRQn EXTI10_15_IRQn 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-// Terminator enable/disable config, active low 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#define SCSI_TERM_EN_PORT GPIOC 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#define SCSI_TERM_EN_PIN  GPIO_PIN_8 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-// SD card pins 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#define SD_PORT      GPIOA 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#define SD_CS_PIN    GPIO_PIN_4 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#define SD_CLK_PIN   GPIO_PIN_5 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#define SD_MISO_PIN  GPIO_PIN_6 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#define SD_MOSI_PIN  GPIO_PIN_7 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#define SD_SPI       SPI0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#define SD_SPI_RX_DMA_CHANNEL DMA_CH1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#define SD_SPI_TX_DMA_CHANNEL DMA_CH2 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-// DIP switches 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#define DIP_PORT     GPIOB 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#define DIPSW1_PIN   GPIO_PIN_4 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#define DIPSW2_PIN   GPIO_PIN_5 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#define DIPSW3_PIN   GPIO_PIN_6 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-// Status LED pins 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#define LED_PORT     GPIOC 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#define LED_I_PIN    GPIO_PIN_4 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#define LED_E_PIN    GPIO_PIN_5 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#define LED_PINS     (LED_I_PIN | LED_E_PIN) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#define LED_ON()     gpio_bit_reset(LED_PORT, LED_PINS) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#define LED_OFF()    gpio_bit_set(LED_PORT, LED_PINS) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // Debug logging functions 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 void azplatform_log(const char *s); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -162,7 +77,7 @@ size_t azplatform_finish_stream(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // Write a single SCSI pin. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // Example use: SCSI_OUT(ATN, 1) sets SCSI_ATN to low (active) state. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #define SCSI_OUT(pin, state) \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    GPIO_BOP(SCSI_OUT_PORT) = (SCSI_OUT_ ## pin) << (state ? 16 : 0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    GPIO_BOP(SCSI_OUT_ ## pin ## _PORT) = (SCSI_OUT_ ## pin ## _PIN) << (state ? 16 : 0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // Read a single SCSI pin. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // Example use: SCSI_IN(ATN), returns 1 for active low state. 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -180,7 +95,13 @@ extern const uint32_t g_scsi_out_byte_to_bop[256]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // Release all SCSI outputs 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #define SCSI_RELEASE_OUTPUTS() \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    GPIO_BOP(SCSI_OUT_PORT) = SCSI_OUT_MASK 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    GPIO_BOP(SCSI_OUT_PORT) = SCSI_OUT_DATA_MASK | SCSI_OUT_REQ, \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    GPIO_BOP(SCSI_OUT_IO_PORT)  = SCSI_OUT_IO_PIN, \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    GPIO_BOP(SCSI_OUT_CD_PORT)  = SCSI_OUT_CD_PIN, \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    GPIO_BOP(SCSI_OUT_SEL_PORT) = SCSI_OUT_SEL_PIN, \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    GPIO_BOP(SCSI_OUT_MSG_PORT) = SCSI_OUT_MSG_PIN, \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    GPIO_BOP(SCSI_OUT_RST_PORT) = SCSI_OUT_RST_PIN, \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    GPIO_BOP(SCSI_OUT_BSY_PORT) = SCSI_OUT_BSY_PIN 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // Read SCSI data bus 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #define SCSI_IN_DATA(data) \ 
			 |