diff options
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/soc/amlogic/meson-canvas.c | 18 | ||||
| -rw-r--r-- | drivers/soc/amlogic/meson-clk-measure.c | 196 |
2 files changed, 212 insertions, 2 deletions
diff --git a/drivers/soc/amlogic/meson-canvas.c b/drivers/soc/amlogic/meson-canvas.c index fce33ca76bb6..be95a37c3fec 100644 --- a/drivers/soc/amlogic/meson-canvas.c +++ b/drivers/soc/amlogic/meson-canvas.c | |||
| @@ -51,16 +51,30 @@ struct meson_canvas *meson_canvas_get(struct device *dev) | |||
| 51 | { | 51 | { |
| 52 | struct device_node *canvas_node; | 52 | struct device_node *canvas_node; |
| 53 | struct platform_device *canvas_pdev; | 53 | struct platform_device *canvas_pdev; |
| 54 | struct meson_canvas *canvas; | ||
| 54 | 55 | ||
| 55 | canvas_node = of_parse_phandle(dev->of_node, "amlogic,canvas", 0); | 56 | canvas_node = of_parse_phandle(dev->of_node, "amlogic,canvas", 0); |
| 56 | if (!canvas_node) | 57 | if (!canvas_node) |
| 57 | return ERR_PTR(-ENODEV); | 58 | return ERR_PTR(-ENODEV); |
| 58 | 59 | ||
| 59 | canvas_pdev = of_find_device_by_node(canvas_node); | 60 | canvas_pdev = of_find_device_by_node(canvas_node); |
| 60 | if (!canvas_pdev) | 61 | if (!canvas_pdev) { |
| 62 | of_node_put(canvas_node); | ||
| 61 | return ERR_PTR(-EPROBE_DEFER); | 63 | return ERR_PTR(-EPROBE_DEFER); |
| 64 | } | ||
| 65 | |||
| 66 | of_node_put(canvas_node); | ||
| 67 | |||
| 68 | /* | ||
| 69 | * If priv is NULL, it's probably because the canvas hasn't | ||
| 70 | * properly initialized. Bail out with -EINVAL because, in the | ||
| 71 | * current state, this driver probe cannot return -EPROBE_DEFER | ||
| 72 | */ | ||
| 73 | canvas = dev_get_drvdata(&canvas_pdev->dev); | ||
| 74 | if (!canvas) | ||
| 75 | return ERR_PTR(-EINVAL); | ||
| 62 | 76 | ||
| 63 | return dev_get_drvdata(&canvas_pdev->dev); | 77 | return canvas; |
| 64 | } | 78 | } |
| 65 | EXPORT_SYMBOL_GPL(meson_canvas_get); | 79 | EXPORT_SYMBOL_GPL(meson_canvas_get); |
| 66 | 80 | ||
diff --git a/drivers/soc/amlogic/meson-clk-measure.c b/drivers/soc/amlogic/meson-clk-measure.c index daea191a66fa..19d4cbc93a17 100644 --- a/drivers/soc/amlogic/meson-clk-measure.c +++ b/drivers/soc/amlogic/meson-clk-measure.c | |||
| @@ -165,6 +165,194 @@ static struct meson_msr_id clk_msr_gx[CLK_MSR_MAX] = { | |||
| 165 | CLK_MSR_ID(82, "ge2d"), | 165 | CLK_MSR_ID(82, "ge2d"), |
| 166 | }; | 166 | }; |
| 167 | 167 | ||
| 168 | static struct meson_msr_id clk_msr_axg[CLK_MSR_MAX] = { | ||
| 169 | CLK_MSR_ID(0, "ring_osc_out_ee_0"), | ||
| 170 | CLK_MSR_ID(1, "ring_osc_out_ee_1"), | ||
| 171 | CLK_MSR_ID(2, "ring_osc_out_ee_2"), | ||
| 172 | CLK_MSR_ID(3, "a53_ring_osc"), | ||
| 173 | CLK_MSR_ID(4, "gp0_pll"), | ||
| 174 | CLK_MSR_ID(5, "gp1_pll"), | ||
| 175 | CLK_MSR_ID(7, "clk81"), | ||
| 176 | CLK_MSR_ID(9, "encl"), | ||
| 177 | CLK_MSR_ID(17, "sys_pll_div16"), | ||
| 178 | CLK_MSR_ID(18, "sys_cpu_div16"), | ||
| 179 | CLK_MSR_ID(20, "rtc_osc_out"), | ||
| 180 | CLK_MSR_ID(23, "mmc_clk"), | ||
| 181 | CLK_MSR_ID(28, "sar_adc"), | ||
| 182 | CLK_MSR_ID(31, "mpll_test_out"), | ||
| 183 | CLK_MSR_ID(40, "mod_eth_tx_clk"), | ||
| 184 | CLK_MSR_ID(41, "mod_eth_rx_clk_rmii"), | ||
| 185 | CLK_MSR_ID(42, "mp0_out"), | ||
| 186 | CLK_MSR_ID(43, "fclk_div5"), | ||
| 187 | CLK_MSR_ID(44, "pwm_b"), | ||
| 188 | CLK_MSR_ID(45, "pwm_a"), | ||
| 189 | CLK_MSR_ID(46, "vpu"), | ||
| 190 | CLK_MSR_ID(47, "ddr_dpll_pt"), | ||
| 191 | CLK_MSR_ID(48, "mp1_out"), | ||
| 192 | CLK_MSR_ID(49, "mp2_out"), | ||
| 193 | CLK_MSR_ID(50, "mp3_out"), | ||
| 194 | CLK_MSR_ID(51, "sd_emmm_c"), | ||
| 195 | CLK_MSR_ID(52, "sd_emmc_b"), | ||
| 196 | CLK_MSR_ID(61, "gpio_msr"), | ||
| 197 | CLK_MSR_ID(66, "audio_slv_lrclk_c"), | ||
| 198 | CLK_MSR_ID(67, "audio_slv_lrclk_b"), | ||
| 199 | CLK_MSR_ID(68, "audio_slv_lrclk_a"), | ||
| 200 | CLK_MSR_ID(69, "audio_slv_sclk_c"), | ||
| 201 | CLK_MSR_ID(70, "audio_slv_sclk_b"), | ||
| 202 | CLK_MSR_ID(71, "audio_slv_sclk_a"), | ||
| 203 | CLK_MSR_ID(72, "pwm_d"), | ||
| 204 | CLK_MSR_ID(73, "pwm_c"), | ||
| 205 | CLK_MSR_ID(74, "wifi_beacon"), | ||
| 206 | CLK_MSR_ID(75, "tdmin_lb_lrcl"), | ||
| 207 | CLK_MSR_ID(76, "tdmin_lb_sclk"), | ||
| 208 | CLK_MSR_ID(77, "rng_ring_osc_0"), | ||
| 209 | CLK_MSR_ID(78, "rng_ring_osc_1"), | ||
| 210 | CLK_MSR_ID(79, "rng_ring_osc_2"), | ||
| 211 | CLK_MSR_ID(80, "rng_ring_osc_3"), | ||
| 212 | CLK_MSR_ID(81, "vapb"), | ||
| 213 | CLK_MSR_ID(82, "ge2d"), | ||
| 214 | CLK_MSR_ID(84, "audio_resample"), | ||
| 215 | CLK_MSR_ID(85, "audio_pdm_sys"), | ||
| 216 | CLK_MSR_ID(86, "audio_spdifout"), | ||
| 217 | CLK_MSR_ID(87, "audio_spdifin"), | ||
| 218 | CLK_MSR_ID(88, "audio_lrclk_f"), | ||
| 219 | CLK_MSR_ID(89, "audio_lrclk_e"), | ||
| 220 | CLK_MSR_ID(90, "audio_lrclk_d"), | ||
| 221 | CLK_MSR_ID(91, "audio_lrclk_c"), | ||
| 222 | CLK_MSR_ID(92, "audio_lrclk_b"), | ||
| 223 | CLK_MSR_ID(93, "audio_lrclk_a"), | ||
| 224 | CLK_MSR_ID(94, "audio_sclk_f"), | ||
| 225 | CLK_MSR_ID(95, "audio_sclk_e"), | ||
| 226 | CLK_MSR_ID(96, "audio_sclk_d"), | ||
| 227 | CLK_MSR_ID(97, "audio_sclk_c"), | ||
| 228 | CLK_MSR_ID(98, "audio_sclk_b"), | ||
| 229 | CLK_MSR_ID(99, "audio_sclk_a"), | ||
| 230 | CLK_MSR_ID(100, "audio_mclk_f"), | ||
| 231 | CLK_MSR_ID(101, "audio_mclk_e"), | ||
| 232 | CLK_MSR_ID(102, "audio_mclk_d"), | ||
| 233 | CLK_MSR_ID(103, "audio_mclk_c"), | ||
| 234 | CLK_MSR_ID(104, "audio_mclk_b"), | ||
| 235 | CLK_MSR_ID(105, "audio_mclk_a"), | ||
| 236 | CLK_MSR_ID(106, "pcie_refclk_n"), | ||
| 237 | CLK_MSR_ID(107, "pcie_refclk_p"), | ||
| 238 | CLK_MSR_ID(108, "audio_locker_out"), | ||
| 239 | CLK_MSR_ID(109, "audio_locker_in"), | ||
| 240 | }; | ||
| 241 | |||
| 242 | static struct meson_msr_id clk_msr_g12a[CLK_MSR_MAX] = { | ||
| 243 | CLK_MSR_ID(0, "ring_osc_out_ee_0"), | ||
| 244 | CLK_MSR_ID(1, "ring_osc_out_ee_1"), | ||
| 245 | CLK_MSR_ID(2, "ring_osc_out_ee_2"), | ||
| 246 | CLK_MSR_ID(3, "sys_cpu_ring_osc"), | ||
| 247 | CLK_MSR_ID(4, "gp0_pll"), | ||
| 248 | CLK_MSR_ID(6, "enci"), | ||
| 249 | CLK_MSR_ID(7, "clk81"), | ||
| 250 | CLK_MSR_ID(8, "encp"), | ||
| 251 | CLK_MSR_ID(9, "encl"), | ||
| 252 | CLK_MSR_ID(10, "vdac"), | ||
| 253 | CLK_MSR_ID(11, "eth_tx"), | ||
| 254 | CLK_MSR_ID(12, "hifi_pll"), | ||
| 255 | CLK_MSR_ID(13, "mod_tcon"), | ||
| 256 | CLK_MSR_ID(14, "fec_0"), | ||
| 257 | CLK_MSR_ID(15, "fec_1"), | ||
| 258 | CLK_MSR_ID(16, "fec_2"), | ||
| 259 | CLK_MSR_ID(17, "sys_pll_div16"), | ||
| 260 | CLK_MSR_ID(18, "sys_cpu_div16"), | ||
| 261 | CLK_MSR_ID(19, "lcd_an_ph2"), | ||
| 262 | CLK_MSR_ID(20, "rtc_osc_out"), | ||
| 263 | CLK_MSR_ID(21, "lcd_an_ph3"), | ||
| 264 | CLK_MSR_ID(22, "eth_phy_ref"), | ||
| 265 | CLK_MSR_ID(23, "mpll_50m"), | ||
| 266 | CLK_MSR_ID(24, "eth_125m"), | ||
| 267 | CLK_MSR_ID(25, "eth_rmii"), | ||
| 268 | CLK_MSR_ID(26, "sc_int"), | ||
| 269 | CLK_MSR_ID(27, "in_mac"), | ||
| 270 | CLK_MSR_ID(28, "sar_adc"), | ||
| 271 | CLK_MSR_ID(29, "pcie_inp"), | ||
| 272 | CLK_MSR_ID(30, "pcie_inn"), | ||
| 273 | CLK_MSR_ID(31, "mpll_test_out"), | ||
| 274 | CLK_MSR_ID(32, "vdec"), | ||
| 275 | CLK_MSR_ID(33, "sys_cpu_ring_osc_1"), | ||
| 276 | CLK_MSR_ID(34, "eth_mpll_50m"), | ||
| 277 | CLK_MSR_ID(35, "mali"), | ||
| 278 | CLK_MSR_ID(36, "hdmi_tx_pixel"), | ||
| 279 | CLK_MSR_ID(37, "cdac"), | ||
| 280 | CLK_MSR_ID(38, "vdin_meas"), | ||
| 281 | CLK_MSR_ID(39, "bt656"), | ||
| 282 | CLK_MSR_ID(41, "eth_rx_or_rmii"), | ||
| 283 | CLK_MSR_ID(42, "mp0_out"), | ||
| 284 | CLK_MSR_ID(43, "fclk_div5"), | ||
| 285 | CLK_MSR_ID(44, "pwm_b"), | ||
| 286 | CLK_MSR_ID(45, "pwm_a"), | ||
| 287 | CLK_MSR_ID(46, "vpu"), | ||
| 288 | CLK_MSR_ID(47, "ddr_dpll_pt"), | ||
| 289 | CLK_MSR_ID(48, "mp1_out"), | ||
| 290 | CLK_MSR_ID(49, "mp2_out"), | ||
| 291 | CLK_MSR_ID(50, "mp3_out"), | ||
| 292 | CLK_MSR_ID(51, "sd_emmc_c"), | ||
| 293 | CLK_MSR_ID(52, "sd_emmc_b"), | ||
| 294 | CLK_MSR_ID(53, "sd_emmc_a"), | ||
| 295 | CLK_MSR_ID(54, "vpu_clkc"), | ||
| 296 | CLK_MSR_ID(55, "vid_pll_div_out"), | ||
| 297 | CLK_MSR_ID(56, "wave420l_a"), | ||
| 298 | CLK_MSR_ID(57, "wave420l_c"), | ||
| 299 | CLK_MSR_ID(58, "wave420l_b"), | ||
| 300 | CLK_MSR_ID(59, "hcodec"), | ||
| 301 | CLK_MSR_ID(61, "gpio_msr"), | ||
| 302 | CLK_MSR_ID(62, "hevcb"), | ||
| 303 | CLK_MSR_ID(63, "dsi_meas"), | ||
| 304 | CLK_MSR_ID(64, "spicc_1"), | ||
| 305 | CLK_MSR_ID(65, "spicc_0"), | ||
| 306 | CLK_MSR_ID(66, "vid_lock"), | ||
| 307 | CLK_MSR_ID(67, "dsi_phy"), | ||
| 308 | CLK_MSR_ID(68, "hdcp22_esm"), | ||
| 309 | CLK_MSR_ID(69, "hdcp22_skp"), | ||
| 310 | CLK_MSR_ID(70, "pwm_f"), | ||
| 311 | CLK_MSR_ID(71, "pwm_e"), | ||
| 312 | CLK_MSR_ID(72, "pwm_d"), | ||
| 313 | CLK_MSR_ID(73, "pwm_c"), | ||
| 314 | CLK_MSR_ID(75, "hevcf"), | ||
| 315 | CLK_MSR_ID(77, "rng_ring_osc_0"), | ||
| 316 | CLK_MSR_ID(78, "rng_ring_osc_1"), | ||
| 317 | CLK_MSR_ID(79, "rng_ring_osc_2"), | ||
| 318 | CLK_MSR_ID(80, "rng_ring_osc_3"), | ||
| 319 | CLK_MSR_ID(81, "vapb"), | ||
| 320 | CLK_MSR_ID(82, "ge2d"), | ||
| 321 | CLK_MSR_ID(83, "co_rx"), | ||
| 322 | CLK_MSR_ID(84, "co_tx"), | ||
| 323 | CLK_MSR_ID(89, "hdmi_todig"), | ||
| 324 | CLK_MSR_ID(90, "hdmitx_sys"), | ||
| 325 | CLK_MSR_ID(94, "eth_phy_rx"), | ||
| 326 | CLK_MSR_ID(95, "eth_phy_pll"), | ||
| 327 | CLK_MSR_ID(96, "vpu_b"), | ||
| 328 | CLK_MSR_ID(97, "cpu_b_tmp"), | ||
| 329 | CLK_MSR_ID(98, "ts"), | ||
| 330 | CLK_MSR_ID(99, "ring_osc_out_ee_3"), | ||
| 331 | CLK_MSR_ID(100, "ring_osc_out_ee_4"), | ||
| 332 | CLK_MSR_ID(101, "ring_osc_out_ee_5"), | ||
| 333 | CLK_MSR_ID(102, "ring_osc_out_ee_6"), | ||
| 334 | CLK_MSR_ID(103, "ring_osc_out_ee_7"), | ||
| 335 | CLK_MSR_ID(104, "ring_osc_out_ee_8"), | ||
| 336 | CLK_MSR_ID(105, "ring_osc_out_ee_9"), | ||
| 337 | CLK_MSR_ID(106, "ephy_test"), | ||
| 338 | CLK_MSR_ID(107, "au_dac_g128x"), | ||
| 339 | CLK_MSR_ID(108, "audio_locker_out"), | ||
| 340 | CLK_MSR_ID(109, "audio_locker_in"), | ||
| 341 | CLK_MSR_ID(110, "audio_tdmout_c_sclk"), | ||
| 342 | CLK_MSR_ID(111, "audio_tdmout_b_sclk"), | ||
| 343 | CLK_MSR_ID(112, "audio_tdmout_a_sclk"), | ||
| 344 | CLK_MSR_ID(113, "audio_tdmin_lb_sclk"), | ||
| 345 | CLK_MSR_ID(114, "audio_tdmin_c_sclk"), | ||
| 346 | CLK_MSR_ID(115, "audio_tdmin_b_sclk"), | ||
| 347 | CLK_MSR_ID(116, "audio_tdmin_a_sclk"), | ||
| 348 | CLK_MSR_ID(117, "audio_resample"), | ||
| 349 | CLK_MSR_ID(118, "audio_pdm_sys"), | ||
| 350 | CLK_MSR_ID(119, "audio_spdifout_b"), | ||
| 351 | CLK_MSR_ID(120, "audio_spdifout"), | ||
| 352 | CLK_MSR_ID(121, "audio_spdifin"), | ||
| 353 | CLK_MSR_ID(122, "audio_pdm_dclk"), | ||
| 354 | }; | ||
| 355 | |||
| 168 | static int meson_measure_id(struct meson_msr_id *clk_msr_id, | 356 | static int meson_measure_id(struct meson_msr_id *clk_msr_id, |
| 169 | unsigned int duration) | 357 | unsigned int duration) |
| 170 | { | 358 | { |
| @@ -337,6 +525,14 @@ static const struct of_device_id meson_msr_match_table[] = { | |||
| 337 | .compatible = "amlogic,meson8b-clk-measure", | 525 | .compatible = "amlogic,meson8b-clk-measure", |
| 338 | .data = (void *)clk_msr_m8, | 526 | .data = (void *)clk_msr_m8, |
| 339 | }, | 527 | }, |
| 528 | { | ||
| 529 | .compatible = "amlogic,meson-axg-clk-measure", | ||
| 530 | .data = (void *)clk_msr_axg, | ||
| 531 | }, | ||
| 532 | { | ||
| 533 | .compatible = "amlogic,meson-g12a-clk-measure", | ||
| 534 | .data = (void *)clk_msr_g12a, | ||
| 535 | }, | ||
| 340 | { /* sentinel */ } | 536 | { /* sentinel */ } |
| 341 | }; | 537 | }; |
| 342 | 538 | ||
