31
31
#define FRC_CDR_ISO_EN BIT(19)
32
32
#define CDR_ISO_EN BIT(20)
33
33
34
+ #define UFSPHY_CLKS_CNT 2
35
+
34
36
struct ufs_mtk_phy {
35
37
struct device * dev ;
36
38
void __iomem * mmio ;
37
- struct clk * mp_clk ;
38
- struct clk * unipro_clk ;
39
+ struct clk_bulk_data clks [UFSPHY_CLKS_CNT ];
39
40
};
40
41
41
42
static inline u32 mphy_readl (struct ufs_mtk_phy * phy , u32 reg )
@@ -74,20 +75,11 @@ static struct ufs_mtk_phy *get_ufs_mtk_phy(struct phy *generic_phy)
74
75
static int ufs_mtk_phy_clk_init (struct ufs_mtk_phy * phy )
75
76
{
76
77
struct device * dev = phy -> dev ;
78
+ struct clk_bulk_data * clks = phy -> clks ;
77
79
78
- phy -> unipro_clk = devm_clk_get (dev , "unipro" );
79
- if (IS_ERR (phy -> unipro_clk )) {
80
- dev_err (dev , "failed to get clock: unipro" );
81
- return PTR_ERR (phy -> unipro_clk );
82
- }
83
-
84
- phy -> mp_clk = devm_clk_get (dev , "mp" );
85
- if (IS_ERR (phy -> mp_clk )) {
86
- dev_err (dev , "failed to get clock: mp" );
87
- return PTR_ERR (phy -> mp_clk );
88
- }
89
-
90
- return 0 ;
80
+ clks [0 ].id = "unipro" ;
81
+ clks [1 ].id = "mp" ;
82
+ return devm_clk_bulk_get (dev , UFSPHY_CLKS_CNT , clks );
91
83
}
92
84
93
85
static void ufs_mtk_phy_set_active (struct ufs_mtk_phy * phy )
@@ -150,26 +142,13 @@ static int ufs_mtk_phy_power_on(struct phy *generic_phy)
150
142
struct ufs_mtk_phy * phy = get_ufs_mtk_phy (generic_phy );
151
143
int ret ;
152
144
153
- ret = clk_prepare_enable (phy -> unipro_clk );
154
- if (ret ) {
155
- dev_err (phy -> dev , "unipro_clk enable failed %d\n" , ret );
156
- goto out ;
157
- }
158
-
159
- ret = clk_prepare_enable (phy -> mp_clk );
160
- if (ret ) {
161
- dev_err (phy -> dev , "mp_clk enable failed %d\n" , ret );
162
- goto out_unprepare_unipro_clk ;
163
- }
145
+ ret = clk_bulk_prepare_enable (UFSPHY_CLKS_CNT , phy -> clks );
146
+ if (ret )
147
+ return ret ;
164
148
165
149
ufs_mtk_phy_set_active (phy );
166
150
167
151
return 0 ;
168
-
169
- out_unprepare_unipro_clk :
170
- clk_disable_unprepare (phy -> unipro_clk );
171
- out :
172
- return ret ;
173
152
}
174
153
175
154
static int ufs_mtk_phy_power_off (struct phy * generic_phy )
@@ -178,8 +157,7 @@ static int ufs_mtk_phy_power_off(struct phy *generic_phy)
178
157
179
158
ufs_mtk_phy_set_deep_hibern (phy );
180
159
181
- clk_disable_unprepare (phy -> unipro_clk );
182
- clk_disable_unprepare (phy -> mp_clk );
160
+ clk_bulk_disable_unprepare (UFSPHY_CLKS_CNT , phy -> clks );
183
161
184
162
return 0 ;
185
163
}
0 commit comments