aboutsummaryrefslogtreecommitdiffstats
path: root/boards/base/Marlin
diff options
context:
space:
mode:
authorJoel Bodenmann <joel@unormal.org>2013-11-10 22:40:20 +0100
committerJoel Bodenmann <joel@unormal.org>2013-11-10 22:40:20 +0100
commit83482a3b8a557b12c22e6bc17d8eac1a2c3ca1c1 (patch)
tree214b91eea15ee8a17c3143ac3ae9756c3449dbed /boards/base/Marlin
parent16c021e5b35a83b2fab523a83517da189c6780e1 (diff)
downloaduGFX-83482a3b8a557b12c22e6bc17d8eac1a2c3ca1c1.tar.gz
uGFX-83482a3b8a557b12c22e6bc17d8eac1a2c3ca1c1.tar.bz2
uGFX-83482a3b8a557b12c22e6bc17d8eac1a2c3ca1c1.zip
added forgotten files
Diffstat (limited to 'boards/base/Marlin')
-rw-r--r--boards/base/Marlin/board_RA8875.h113
-rw-r--r--boards/base/Marlin/ginput_lld_mouse_board.h111
2 files changed, 224 insertions, 0 deletions
diff --git a/boards/base/Marlin/board_RA8875.h b/boards/base/Marlin/board_RA8875.h
new file mode 100644
index 00000000..b1d55a92
--- /dev/null
+++ b/boards/base/Marlin/board_RA8875.h
@@ -0,0 +1,113 @@
+/*
+ * This file is subject to the terms of the GFX License. If a copy of
+ * the license was not distributed with this file, you can obtain one at:
+ *
+ * http://ugfx.org/license.html
+ */
+
+/**
+ * @file drivers/gdisp/RA8875/board_RA8875_marlin.h
+ * @brief GDISP Graphic Driver subsystem board interface for the RA8875 display.
+ */
+
+#ifndef _BOARD_RA8875_H
+#define _BOARD_RA8875_H
+
+// For a multiple display configuration we would put all this in a structure and then
+// set g->board to that structure.
+#define GDISP_RAM (*((volatile uint16_t *) 0x68000000)) /* RS = 0 */
+#define GDISP_REG (*((volatile uint16_t *) 0x68020000)) /* RS = 1 */
+#define FSMC_BANK 4
+
+
+static inline void init_board(GDisplay *g) {
+ // As we are not using multiple displays we set g->board to NULL as we don't use it.
+ g->board = 0;
+
+ switch(g->controllerdisplay) {
+ // setup for display 0
+ case 0: {
+
+ // enable the FSMC peripheral
+ rccEnableAHB3(RCC_AHB3ENR_FSMCEN, 0);
+
+ // setup the pin modes for FSMC
+ IOBus busD = {GPIOD, (1 << 0) | (1 << 1) | (1 << 4) | (1 << 5) | (1 << 8) |
+ (1 << 9) | (1 << 10) | (1 << 11) | (1 << 14) | (1 << 15), 0};
+
+ IOBus busE = {GPIOE, (1 << 7) | (1 << 8) | (1 << 9) | (1 << 10) | (1 << 11) | (1 << 12) |
+ (1 << 13) | (1 << 14) | (1 << 15), 0};
+
+ IOBus busG = {GPIOG, (1 << 10), 0};
+
+ palSetBusMode(&busD, PAL_MODE_ALTERNATE(12));
+ palSetBusMode(&busE, PAL_MODE_ALTERNATE(12));
+ palSetBusMode(&busG, PAL_MODE_ALTERNATE(12));
+
+ // FSMC timing
+ FSMC_Bank1->BTCR[FSMC_BANK+1] = (FSMC_BTR1_ADDSET_1 | FSMC_BTR1_ADDSET_3) \
+ | (FSMC_BTR1_DATAST_1 | FSMC_BTR1_DATAST_3) \
+ | (FSMC_BTR1_BUSTURN_1 | FSMC_BTR1_BUSTURN_3) ;
+
+ // Bank1 NOR/SRAM control register configuration
+ // This is actually not needed as already set by default after reset
+ FSMC_Bank1->BTCR[FSMC_BANK] = FSMC_BCR1_MWID_0 | FSMC_BCR1_WREN | FSMC_BCR1_MBKEN;
+
+ break;
+ }
+
+ // marlin does not have any secondary display so far
+ default:
+ break;
+ }
+}
+
+static inline void post_init_board(GDisplay *g) {
+ (void) g;
+
+ // FSMC delay reduced as the controller now runs at full speed
+ FSMC_Bank1->BTCR[2+1] = FSMC_BTR1_ADDSET_0 | FSMC_BTR1_DATAST_2 | FSMC_BTR1_BUSTURN_0 ;
+ FSMC_Bank1->BTCR[2] = FSMC_BCR1_MWID_0 | FSMC_BCR1_WREN | FSMC_BCR1_MBKEN;
+}
+
+static inline void setpin_reset(GDisplay *g, bool_t state) {
+ (void) g;
+ (void) state;
+}
+
+static inline void acquire_bus(GDisplay *g) {
+ (void) g;
+}
+
+static inline void release_bus(GDisplay *g) {
+ (void) g;
+}
+
+static inline void write_index(GDisplay *g, uint16_t index) {
+ (void) g;
+
+ GDISP_REG = index;
+}
+
+static inline void write_data(GDisplay *g, uint16_t data) {
+ (void) g;
+
+ GDISP_RAM = data;
+}
+
+static inline void setreadmode(GDisplay *g) {
+ (void) g;
+}
+
+static inline void setwritemode(GDisplay *g) {
+ (void) g;
+}
+
+static inline uint16_t read_data(GDisplay *g) {
+ (void) g;
+
+ return GDISP_RAM;
+}
+
+#endif /* _BOARD_RA8875_H */
+
diff --git a/boards/base/Marlin/ginput_lld_mouse_board.h b/boards/base/Marlin/ginput_lld_mouse_board.h
new file mode 100644
index 00000000..e3e18c24
--- /dev/null
+++ b/boards/base/Marlin/ginput_lld_mouse_board.h
@@ -0,0 +1,111 @@
+/*
+ * This file is subject to the terms of the GFX License. If a copy of
+ * the license was not distributed with this file, you can obtain one at:
+ *
+ * http://ugfx.org/license.html
+ */
+
+/**
+ * @file drivers/ginput/touch/FT5x06/ginput_lld_mouse_board_marlin.h
+ * @brief GINPUT Touch low level driver source for the FT5x06.
+ *
+ * @defgroup Mouse Mouse
+ * @ingroup GINPUT
+ * @{
+ */
+
+#ifndef _GINPUT_LLD_MOUSE_BOARD_H
+#define _GINPUT_LLD_MOUSE_BOARD_H
+
+/* I2C interface #2 - Touchscreen controller */
+static const I2CConfig i2ccfg2 = {
+ OPMODE_I2C,
+ 400000,
+ FAST_DUTY_CYCLE_2,
+};
+
+/**
+ * @brief Initialise the board for the touch.
+ *
+ * @notapi
+ */
+static void init_board(void) {
+
+}
+
+
+/**
+ * @brief Write a value into a certain register
+ *
+ * @param[in] reg The register address
+ * @param[in] n The amount of bytes (one or two)
+ * @param[in] val The value
+ *
+ * @notapi
+ */
+static void write_reg(uint8_t reg, uint8_t n, uint16_t val) {
+ uint8_t txbuf[3];
+
+ i2cAcquireBus(&I2CD2);
+
+ txbuf[0] = reg;
+
+ if (n == 1) {
+ txbuf[1] = val;
+ i2cMasterTransmitTimeout(&I2CD2, FT5x06_ADDR, txbuf, 2, NULL, 0, MS2ST(FT5x06_TIMEOUT));
+ } else if (n == 2) {
+ txbuf[1] = ((val & 0xFF00) >> 8);
+ txbuf[2] = (val & 0x00FF);
+ i2cMasterTransmitTimeout(&I2CD2, FT5x06_ADDR, txbuf, 3, NULL, 0, MS2ST(FT5x06_TIMEOUT));
+ }
+
+ i2cReleaseBus(&I2CD2);
+}
+
+/**
+ * @brief Read the value of a certain register
+ *
+ * @param[in] reg The register address
+ * @param[in] n The amount of bytes (one or two)
+ *
+ * @return Data read from device (one byte or two depending on n param)
+ *
+ * @notapi
+ */
+static uint16_t read_reg(uint8_t reg, uint8_t n) {
+ uint8_t txbuf[1], rxbuf[2];
+ uint16_t ret;
+
+ rxbuf[0] = 0;
+ rxbuf[1] = 0;
+
+ i2cAcquireBus(&I2CD2);
+
+ txbuf[0] = reg;
+ i2cMasterTransmitTimeout(&I2CD2, FT5x06_ADDR, txbuf, 1, rxbuf, n, MS2ST(FT5x06_TIMEOUT));
+
+ if (n == 1) {
+ ret = rxbuf[0];
+ } else if (n == 2) {
+ ret = ((rxbuf[0] << 8) | (rxbuf[1] & 0xFF));
+ }
+
+ i2cReleaseBus(&I2CD2);
+
+ return ret;
+}
+
+static void read_reg_n(uint8_t reg, uint8_t n, uint8_t *rxbuf) {
+ uint8_t txbuf[1];
+
+ i2cAcquireBus(&I2CD2);
+
+ txbuf[0] = reg;
+ i2cMasterTransmitTimeout(&I2CD2, FT5x06_ADDR, txbuf, 1, rxbuf, n, MS2ST(FT5x06_TIMEOUT));
+
+ i2cReleaseBus(&I2CD2);
+}
+
+#endif /* _GINPUT_LLD_MOUSE_BOARD_H */
+/** @} */
+