|
@@ -18,99 +18,14 @@ extern "C" {
|
|
|
|
|
|
|
|
extern const char *g_azplatform_name;
|
|
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
|
|
#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
|
|
// Debug logging functions
|
|
|
void azplatform_log(const char *s);
|
|
void azplatform_log(const char *s);
|
|
|
|
|
|
|
@@ -162,7 +77,7 @@ size_t azplatform_finish_stream();
|
|
|
// Write a single SCSI pin.
|
|
// Write a single SCSI pin.
|
|
|
// Example use: SCSI_OUT(ATN, 1) sets SCSI_ATN to low (active) state.
|
|
// Example use: SCSI_OUT(ATN, 1) sets SCSI_ATN to low (active) state.
|
|
|
#define SCSI_OUT(pin, 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.
|
|
// Read a single SCSI pin.
|
|
|
// Example use: SCSI_IN(ATN), returns 1 for active low state.
|
|
// 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
|
|
// Release all SCSI outputs
|
|
|
#define SCSI_RELEASE_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
|
|
// Read SCSI data bus
|
|
|
#define SCSI_IN_DATA(data) \
|
|
#define SCSI_IN_DATA(data) \
|