]>
Commit | Line | Data |
---|---|---|
83d290c5 | 1 | // SPDX-License-Identifier: GPL-2.0+ |
989ce049 DR |
2 | /* |
3 | * Copyright 2013 Broadcom Corporation. | |
989ce049 DR |
4 | */ |
5 | ||
d678a59d | 6 | #include <common.h> |
989ce049 | 7 | #include <asm/io.h> |
1221ce45 | 8 | #include <linux/errno.h> |
989ce049 DR |
9 | #include <asm/arch/sysmap.h> |
10 | #include <asm/kona-common/clk.h> | |
11 | #include "clk-core.h" | |
12 | ||
13 | /* Enable appropriate clocks for a BSC/I2C port */ | |
14 | int clk_bsc_enable(void *base) | |
15 | { | |
16 | int ret; | |
17 | char *bscstr, *apbstr; | |
18 | ||
19 | switch ((u32) base) { | |
20 | case PMU_BSC_BASE_ADDR: | |
21 | /* PMU clock is always enabled */ | |
22 | return 0; | |
23 | case BSC1_BASE_ADDR: | |
24 | bscstr = "bsc1_clk"; | |
25 | apbstr = "bsc1_apb_clk"; | |
26 | break; | |
27 | case BSC2_BASE_ADDR: | |
28 | bscstr = "bsc2_clk"; | |
29 | apbstr = "bsc2_apb_clk"; | |
30 | break; | |
31 | case BSC3_BASE_ADDR: | |
32 | bscstr = "bsc3_clk"; | |
33 | apbstr = "bsc3_apb_clk"; | |
34 | break; | |
35 | default: | |
36 | printf("%s: base 0x%p not found\n", __func__, base); | |
37 | return -EINVAL; | |
38 | } | |
39 | ||
40 | /* Note that the bus clock must be enabled first */ | |
41 | ||
42 | ret = clk_get_and_enable(apbstr); | |
43 | if (ret) | |
44 | return ret; | |
45 | ||
46 | ret = clk_get_and_enable(bscstr); | |
47 | if (ret) | |
48 | return ret; | |
49 | ||
50 | return 0; | |
51 | } |