roc_cc_rk3308.c 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. // SPDX-License-Identifier: GPL-2.0+
  2. /*
  3. * (C) Copyright 2019 Rockchip Electronics Co., Ltd
  4. */
  5. #include <common.h>
  6. #include <adc.h>
  7. #include <asm/io.h>
  8. #include <asm/arch/grf_rk3308.h>
  9. #include <asm/arch-rockchip/hardware.h>
  10. #include <linux/bitops.h>
  11. #if defined(CONFIG_DEBUG_UART)
  12. #define GRF_BASE 0xff000000
  13. enum {
  14. GPIO1C7_SHIFT = 8,
  15. GPIO1C7_MASK = GENMASK(11, 8),
  16. GPIO1C7_GPIO = 0,
  17. GPIO1C7_UART1_RTSN,
  18. GPIO1C7_UART2_TX_M0,
  19. GPIO1C7_SPI2_MOSI,
  20. GPIO1C7_JTAG_TMS,
  21. GPIO1C6_SHIFT = 4,
  22. GPIO1C6_MASK = GENMASK(7, 4),
  23. GPIO1C6_GPIO = 0,
  24. GPIO1C6_UART1_CTSN,
  25. GPIO1C6_UART2_RX_M0,
  26. GPIO1C6_SPI2_MISO,
  27. GPIO1C6_JTAG_TCLK,
  28. GPIO4D3_SHIFT = 6,
  29. GPIO4D3_MASK = GENMASK(7, 6),
  30. GPIO4D3_GPIO = 0,
  31. GPIO4D3_SDMMC_D3,
  32. GPIO4D3_UART2_TX_M1,
  33. GPIO4D2_SHIFT = 4,
  34. GPIO4D2_MASK = GENMASK(5, 4),
  35. GPIO4D2_GPIO = 0,
  36. GPIO4D2_SDMMC_D2,
  37. GPIO4D2_UART2_RX_M1,
  38. UART2_IO_SEL_SHIFT = 2,
  39. UART2_IO_SEL_MASK = GENMASK(3, 2),
  40. UART2_IO_SEL_M0 = 0,
  41. UART2_IO_SEL_M1,
  42. UART2_IO_SEL_USB,
  43. };
  44. void board_debug_uart_init(void)
  45. {
  46. static struct rk3308_grf * const grf = (void *)GRF_BASE;
  47. /* Enable early UART2 channel m0 on the rk3308 */
  48. rk_clrsetreg(&grf->soc_con5, UART2_IO_SEL_MASK,
  49. UART2_IO_SEL_M0 << UART2_IO_SEL_SHIFT);
  50. rk_clrsetreg(&grf->gpio1ch_iomux,
  51. GPIO1C6_MASK | GPIO1C7_MASK,
  52. GPIO1C6_UART2_RX_M0 << GPIO1C6_SHIFT |
  53. GPIO1C7_UART2_TX_M0 << GPIO1C7_SHIFT);
  54. }
  55. #endif
  56. #define KEY_DOWN_MIN_VAL 0
  57. #define KEY_DOWN_MAX_VAL 30
  58. int rockchip_dnl_key_pressed(void)
  59. {
  60. unsigned int val;
  61. if (adc_channel_single_shot("saradc", 1, &val)) {
  62. printf("%s read adc key val failed\n", __func__);
  63. return false;
  64. }
  65. if (val >= KEY_DOWN_MIN_VAL && val <= KEY_DOWN_MAX_VAL)
  66. return true;
  67. else
  68. return false;
  69. }