Lines Matching refs:mcd

409 		const struct mtk_clk_divider *mcd = &mcds[i];
411 if (!IS_ERR_OR_NULL(clk_data->hws[mcd->id])) {
413 mcd->id);
417 hw = clk_hw_register_divider(dev, mcd->name, mcd->parent_name,
418 mcd->flags, base + mcd->div_reg, mcd->div_shift,
419 mcd->div_width, mcd->clk_divider_flags, lock);
422 pr_err("Failed to register clk %s: %pe\n", mcd->name,
427 clk_data->hws[mcd->id] = hw;
434 const struct mtk_clk_divider *mcd = &mcds[i];
436 if (IS_ERR_OR_NULL(clk_data->hws[mcd->id]))
439 clk_hw_unregister_divider(clk_data->hws[mcd->id]);
440 clk_data->hws[mcd->id] = ERR_PTR(-ENOENT);
456 const struct mtk_clk_divider *mcd = &mcds[i - 1];
458 if (IS_ERR_OR_NULL(clk_data->hws[mcd->id]))
461 clk_hw_unregister_divider(clk_data->hws[mcd->id]);
462 clk_data->hws[mcd->id] = ERR_PTR(-ENOENT);
471 const struct mtk_clk_desc *mcd;
476 mcd = device_get_match_data(&pdev->dev);
477 if (!mcd) {
481 mcd = (const struct mtk_clk_desc *)id->driver_data;
483 if (!mcd)
488 if (mcd->composite_clks || mcd->divider_clks) {
489 if (!mcd->shared_io)
509 num_clks = mcd->num_clks + mcd->num_composite_clks;
510 num_clks += mcd->num_fixed_clks + mcd->num_factor_clks;
511 num_clks += mcd->num_mux_clks + mcd->num_divider_clks;
519 if (mcd->fixed_clks) {
520 r = mtk_clk_register_fixed_clks(mcd->fixed_clks,
521 mcd->num_fixed_clks, clk_data);
526 if (mcd->factor_clks) {
527 r = mtk_clk_register_factors(mcd->factor_clks,
528 mcd->num_factor_clks, clk_data);
533 if (mcd->mux_clks) {
534 r = mtk_clk_register_muxes(&pdev->dev, mcd->mux_clks,
535 mcd->num_mux_clks, node,
536 mcd->clk_lock, clk_data);
541 if (mcd->composite_clks) {
544 mcd->composite_clks,
545 mcd->num_composite_clks,
546 base, mcd->clk_lock, clk_data);
551 if (mcd->divider_clks) {
553 mcd->divider_clks,
554 mcd->num_divider_clks,
555 base, mcd->clk_lock, clk_data);
560 if (mcd->clks) {
561 r = mtk_clk_register_gates(&pdev->dev, node, mcd->clks,
562 mcd->num_clks, clk_data);
567 if (mcd->clk_notifier_func) {
568 struct clk *mfg_mux = clk_data->hws[mcd->mfg_clk_idx]->clk;
570 r = mcd->clk_notifier_func(&pdev->dev, mfg_mux);
581 if (mcd->rst_desc) {
583 mcd->rst_desc);
593 if (mcd->clks)
594 mtk_clk_unregister_gates(mcd->clks, mcd->num_clks, clk_data);
596 if (mcd->divider_clks)
597 mtk_clk_unregister_dividers(mcd->divider_clks,
598 mcd->num_divider_clks, clk_data);
600 if (mcd->composite_clks)
601 mtk_clk_unregister_composites(mcd->composite_clks,
602 mcd->num_composite_clks, clk_data);
604 if (mcd->mux_clks)
605 mtk_clk_unregister_muxes(mcd->mux_clks,
606 mcd->num_mux_clks, clk_data);
608 if (mcd->factor_clks)
609 mtk_clk_unregister_factors(mcd->factor_clks,
610 mcd->num_factor_clks, clk_data);
612 if (mcd->fixed_clks)
613 mtk_clk_unregister_fixed_clks(mcd->fixed_clks,
614 mcd->num_fixed_clks, clk_data);
618 if (mcd->shared_io && base)
629 const struct mtk_clk_desc *mcd = device_get_match_data(&pdev->dev);
632 if (mcd->clks)
633 mtk_clk_unregister_gates(mcd->clks, mcd->num_clks, clk_data);
634 if (mcd->divider_clks)
635 mtk_clk_unregister_dividers(mcd->divider_clks,
636 mcd->num_divider_clks, clk_data);
637 if (mcd->composite_clks)
638 mtk_clk_unregister_composites(mcd->composite_clks,
639 mcd->num_composite_clks, clk_data);
640 if (mcd->mux_clks)
641 mtk_clk_unregister_muxes(mcd->mux_clks,
642 mcd->num_mux_clks, clk_data);
643 if (mcd->factor_clks)
644 mtk_clk_unregister_factors(mcd->factor_clks,
645 mcd->num_factor_clks, clk_data);
646 if (mcd->fixed_clks)
647 mtk_clk_unregister_fixed_clks(mcd->fixed_clks,
648 mcd->num_fixed_clks, clk_data);