blob: cd4a8e96b2bc5bb19ac8d53fa5eb26abbf89f6e9 [file] [log] [blame]
Bo Lv72d0e902023-01-02 14:27:34 +00001// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2/*
3 * Copyright (c) 2019 Amlogic, Inc. All rights reserved.
4 */
5
6#include <common.h>
7#include <command.h>
Bo Lvaa7bc4c2024-03-01 13:43:54 +08008#include <asm/amlogic/arch/io.h>
9#include <asm/amlogic/arch/clock.h>
Bo Lv72d0e902023-01-02 14:27:34 +000010#include <amlogic/aml_cec.h>
Bo Lvaa7bc4c2024-03-01 13:43:54 +080011#include <asm/amlogic/arch/secure_apb.h>
Bo Lv72d0e902023-01-02 14:27:34 +000012
13static void cec_init(int logic_addr, unsigned char fun_cfg)
14{
15#ifndef CONFIG_MESON_T5W
16 unsigned int tmp;
17
18 writel(fun_cfg, SYSCTRL_STATUS_REG0);
19 tmp = readl(SYSCTRL_STATUS_REG1);
20 tmp &= (~0xf0000);
21 tmp |= ((logic_addr & 0xf) << 16);
22 writel(tmp, SYSCTRL_STATUS_REG1);
23 printf("cec func:%#x, parm:%#x\n", readl(SYSCTRL_STATUS_REG0),
24 readl(SYSCTRL_STATUS_REG1));
25#else
26 printf("%s :%d,%#x\n", __func__, logic_addr, fun_cfg);
27 /*cec_hw_init(logic_addr, fun_cfg);*/
28 writel(fun_cfg, P_AO_DEBUG_REG0);
29 writel(logic_addr, AO_DEBUG_REG1);
30 printf("cec func:%#x, parm:%#x\n", readl(P_AO_DEBUG_REG0),
31 readl(AO_DEBUG_REG1));
32#endif
33}
34
35static int do_cec(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
36{
37 int logic_addr = 0;
38 int fun_cfg = 0x2f;
39
40 if (argc >= 2)
41 logic_addr = simple_strtoul(argv[1], NULL, 10);
42 if (argc >= 3)
43 fun_cfg = simple_strtoul(argv[2], NULL, 16);
44
45 printf("logic_addr=0x%x, fun_cfg=0x%x\n",
46 logic_addr, fun_cfg);
47
48 cec_init(logic_addr, (unsigned char)fun_cfg);
49
50 return 0;
51}
52
53U_BOOT_CMD(cec, CONFIG_SYS_MAXARGS, 0, do_cec,
54 "Amlogic cec",
55 " - hdmi cec function\n"
56 " - param: logic addr;fun_cfg\n"
57 "\n"
58);
59