vgaboard.h
1/*
2 * Copyright (c) 2020 Raspberry Pi (Trading) Ltd.
3 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 */
6
7// -----------------------------------------------------
8// NOTE: THIS HEADER IS ALSO INCLUDED BY ASSEMBLER SO
9// SHOULD ONLY CONSIST OF PREPROCESSOR DIRECTIVES
10// -----------------------------------------------------
11
12#ifndef _BOARDS_VGABOARD_H
13#define _BOARDS_VGABOARD_H
14
15// For board detection
16#define RASPBERRYPI_VGABOARD
17
18// Audio pins. I2S BCK, LRCK are on the same pins as PWM L/R.
19// - When outputting I2S, PWM sees BCK and LRCK, which should sound silent as
20// they are constant duty cycle, and above the filter cutoff
21// - When outputting PWM, I2S DIN should be low, so I2S should remain silent.
22#define VGABOARD_I2S_DIN_PIN 26
23#define VGABOARD_I2S_BCK_PIN 27
24#define VGABOARD_I2S_LRCK_PIN 28
25
26#define VGABOARD_PWM_L_PIN 28
27#define VGABOARD_PWM_R_PIN 27
28
29#define VGABOARD_VGA_COLOR_PIN_BASE 0
30#define VGABOARD_VGA_SYNC_PIN_BASE 16
31
32// Note DAT1/2 are shared with UART TX/RX (pull jumpers off header to access
33// UART pins and disconnect SD DAT1/2)
34#define VGABOARD_SD_CLK_PIN 5
35#define VGABOARD_SD_CMD_PIN 18
36#define VGABOARD_SD_DAT0_PIN 19
37
38// Note buttons are shared with VGA colour LSBs -- if using VGA, you can float
39// the pin on VSYNC assertion and sample on VSYNC deassertion
40#define VGABOARD_BUTTON_A_PIN 0
41#define VGABOARD_BUTTON_B_PIN 6
42#define VGABOARD_BUTTON_C_PIN 11
43
44#ifndef PICO_DEFAULT_UART
45#define PICO_DEFAULT_UART 1
46#endif
47
48#ifndef PICO_DEFAULT_UART_TX_PIN
49#define PICO_DEFAULT_UART_TX_PIN 20
50#endif
51
52#ifndef PICO_DEFAULT_UART_RX_PIN
53#define PICO_DEFAULT_UART_RX_PIN 21
54#endif
55
56#define PICO_SCANVIDEO_COLOR_PIN_BASE VGABOARD_VGA_COLOR_PIN_BASE
57#define PICO_SCANVIDEO_SYNC_PIN_BASE VGABOARD_VGA_SYNC_PIN_BASE
58
59#define PICO_SD_CLK_PIN VGABOARD_SD_CLK_PIN
60#define PICO_SD_CMD_PIN VGABOARD_SD_CMD_PIN
61#define PICO_SD_DAT0_PIN VGABOARD_SD_DAT0_PIN
62
63// 1 or 4
64#ifndef PICO_SD_DAT_PIN_COUNT
65#define PICO_SD_DAT_PIN_COUNT 4
66#endif
67
68// 1 or -1
69#define PICO_SD_DAT_PIN_INCREMENT 1
70
71#define PICO_AUDIO_I2S_DATA_PIN VGABOARD_I2S_DIN_PIN
72#define PICO_AUDIO_I2S_CLOCK_PIN_BASE VGABOARD_I2S_BCK_PIN
73
74#define PICO_AUDIO_PWM_L_PIN VGABOARD_PWM_L_PIN
75#define PICO_AUDIO_PWM_R_PIN VGABOARD_PWM_R_PIN
76
77#define PICO_VGA_BOARD
78
79// vgaboard has a Pico on it, so default anything we haven't set above
80#include "boards/pico.h"
81
82#endif