# Copyright 2022 The Pigweed Authors
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may not
# use this file except in compliance with the License. You may obtain a copy of
# the License at
#
#     https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations under
# the License.

# These values are merged into the rp2040 toolchain and are used to set the
# app_common backend and various application settings. More information on
# common values can be found in $dir_pigweed_experimental/applications/app_common_impl/BUILD.gn.

import("//build_overrides/pigweed.gni")

board_config_ili9341 = {
  app_common_BACKEND =
      "$dir_pigweed_experimental/applications/app_common_impl:pico_ili9341"
  pw_app_common_DISPLAY_WIDTH = "320"
  pw_app_common_DISPLAY_HEIGHT = "240"
  pw_app_common_BACKLIGHT_GPIO = "-1"
  pw_app_common_DISPLAY_TE_GPIO = "-1"
  pw_app_common_DISPLAY_CS_GPIO = "9"
  pw_app_common_DISPLAY_DC_GPIO = "10"
  pw_app_common_DISPLAY_RESET_GPIO = "11"
  pw_app_common_SPI_MISO_GPIO = "-1"
  pw_app_common_SPI_MOSI_GPIO = "19"
  pw_app_common_SPI_CLOCK_GPIO = "18"
  pw_display_driver_ili9341_MADCTL = "0xA8"  # BGR + rotate 90 (MY|MV).
}

board_config_st7735 = {
  app_common_BACKEND =
      "$dir_pigweed_experimental/applications/app_common_impl:pico_st7735"
  pw_app_common_DISPLAY_WIDTH = "160"
  pw_app_common_DISPLAY_HEIGHT = "128"
  pw_app_common_BACKLIGHT_GPIO = "7"
  pw_app_common_DISPLAY_TE_GPIO = "-1"
  pw_app_common_DISPLAY_CS_GPIO = "26"
  pw_app_common_DISPLAY_DC_GPIO = "20"
  pw_app_common_DISPLAY_RESET_GPIO = "21"
  pw_app_common_SPI_MISO_GPIO = "-1"
  pw_app_common_SPI_MOSI_GPIO = "19"
  pw_app_common_SPI_CLOCK_GPIO = "18"
}

board_config_st7789 = {
  app_common_BACKEND =
      "$dir_pigweed_experimental/applications/app_common_impl:pico_st7789"
  pw_app_common_DISPLAY_WIDTH = "320"
  pw_app_common_DISPLAY_HEIGHT = "240"
  pw_app_common_BACKLIGHT_GPIO = "20"
  pw_app_common_DISPLAY_TE_GPIO = "21"
  pw_app_common_DISPLAY_CS_GPIO = "17"
  pw_app_common_DISPLAY_DC_GPIO = "16"
  pw_app_common_DISPLAY_RESET_GPIO = "-1"
  pw_app_common_SPI_MISO_GPIO = "-1"
  pw_app_common_SPI_MOSI_GPIO = "19"
  pw_app_common_SPI_CLOCK_GPIO = "18"
}

board_config_kudzu = {
  app_common_BACKEND =
      "$dir_pigweed_experimental/applications/app_common_impl:pico_st7789_pio"
  pw_app_common_DISPLAY_WIDTH = "320"
  pw_app_common_DISPLAY_HEIGHT = "240"

  # Kudzu pin assignments.
  pw_app_common_BACKLIGHT_GPIO = "15"
  pw_app_common_DISPLAY_TE_GPIO = "21"
  pw_app_common_DISPLAY_CS_GPIO = "17"
  pw_app_common_DISPLAY_DC_GPIO = "20"
  pw_app_common_SPI_MOSI_GPIO = "19"
  pw_app_common_SPI_CLOCK_GPIO = "18"

  # Data from the display is unused.
  pw_app_common_SPI_MISO_GPIO = "-1"

  # Display reset pin is on the Kudzu GPIO expander
  pw_app_common_DISPLAY_RESET_GPIO = "-1"

  # Pico display pack 2 pin assignments.
  # pw_app_common_BACKLIGHT_GPIO = "20"
  # pw_app_common_DISPLAY_TE_GPIO = "21"
  # pw_app_common_DISPLAY_CS_GPIO = "17"
  # pw_app_common_DISPLAY_DC_GPIO = "16"
  # pw_app_common_SPI_MOSI_GPIO = "19"
  # pw_app_common_SPI_CLOCK_GPIO = "18"
}
