text: // See LICENSE for license details.
  
  #ifndef _SIFIVE_HIFIVE1_H
  #define _SIFIVE_HIFIVE1_H
  
  #include <stdint.h>
  
  /****************************************************************************
   * GPIO Connections
   *****************************************************************************/
  
  // These are the GPIO bit offsets for the RGB LED on HiFive1 Board.
  // These are also mapped to RGB LEDs on the Freedom E300 Arty
  // FPGA
  // Dev Kit.
  
  #define RED_LED_OFFSET   1
  #define GREEN_LED_OFFSET 2
  #define BLUE_LED_OFFSET  3
  #define CK_IO_8_OFFSET  0
  #define LED_0_R_OFFSET  1
  #define LED_0_G_OFFSET  2
  #define LED_0_B_OFFSET  3
  #define CK_IO_12_OFFSET  4
  
  // These are the GPIO bit offsets for the differen digital pins
  // on the headers for both the HiFive1 Board and the Freedom E300 Arty FPGA Dev Kit.
  #define PIN_0_OFFSET 16
  #define PIN_1_OFFSET 17
  #define PIN_2_OFFSET 18
  #define PIN_3_OFFSET 19
  #define PIN_4_OFFSET 20
  #define PIN_5_OFFSET 21
  #define PIN_6_OFFSET 22
  #define PIN_7_OFFSET 23
  #define PIN_8_OFFSET 0
  #define PIN_9_OFFSET 1
  #define PIN_10_OFFSET 2
  #define PIN_11_OFFSET 3
  #define PIN_12_OFFSET 4
  #define PIN_13_OFFSET 5
  //#define PIN_14_OFFSET 8 //This pin is not connected on either board.
  #define PIN_15_OFFSET 9
  #define PIN_16_OFFSET 10
  #define PIN_17_OFFSET 11
  #define PIN_18_OFFSET 12
  #define PIN_19_OFFSET 13
  
  // These are *PIN* numbers, not
  // GPIO Offset Numbers.
  #define PIN_SPI1_SCK    (13u)
  #define PIN_SPI1_MISO   (12u)
  #define PIN_SPI1_MOSI   (11u)
  #define PIN_SPI1_SS0    (10u)
  #define PIN_SPI1_SS1    (14u) 
  #define PIN_SPI1_SS2    (15u)
  #define PIN_SPI1_SS3    (16u)
  
  #define SS_PIN_TO_CS_ID(x) \
    ((x==PIN_SPI1_SS0 ? 0 :		 \
      (x==PIN_SPI1_SS1 ? 1 :		 \
       (x==PIN_SPI1_SS2 ? 2 :		 \
        (x==PIN_SPI1_SS3 ? 3 :		 \
         -1))))) 
  
  
  // These buttons are present only on the Freedom E300 Arty Dev Kit.
  #ifdef HAS_BOARD_BUTTONS
  #define BUTTON_0_OFFSET 15
  #define BUTTON_1_OFFSET 30
  #define BUTTON_2_OFFSET 31
  
  #define INT_DEVICE_BUTTON_0 (INT_GPIO_BASE + BUTTON_0_OFFSET)
  #define INT_DEVICE_BUTTON_1 (INT_GPIO_BASE + BUTTON_1_OFFSET)
  #define INT_DEVICE_BUTTON_2 (INT_GPIO_BASE + BUTTON_2_OFFSET)
  
  #endif
  
  #define HAS_HFXOSC 1
  #define HAS_LFROSC_BYPASS 1
  
  #define RTC_FREQ 32768
  
  void write_hex(int fd, unsigned long int hex);
  
  #endif /* _SIFIVE_HIFIVE1_H */
  