Lines Matching defs:mcd
408 const struct mtk_clk_divider *mcd = &mcds[i];
410 if (!IS_ERR_OR_NULL(clk_data->hws[mcd->id])) {
412 mcd->id);
416 hw = clk_hw_register_divider(dev, mcd->name, mcd->parent_name,
417 mcd->flags, base + mcd->div_reg, mcd->div_shift,
418 mcd->div_width, mcd->clk_divider_flags, lock);
421 pr_err("Failed to register clk %s: %pe\n", mcd->name,
426 clk_data->hws[mcd->id] = hw;
433 const struct mtk_clk_divider *mcd = &mcds[i];
435 if (IS_ERR_OR_NULL(clk_data->hws[mcd->id]))
438 clk_hw_unregister_divider(clk_data->hws[mcd->id]);
439 clk_data->hws[mcd->id] = ERR_PTR(-ENOENT);
455 const struct mtk_clk_divider *mcd = &mcds[i - 1];
457 if (IS_ERR_OR_NULL(clk_data->hws[mcd->id]))
460 clk_hw_unregister_divider(clk_data->hws[mcd->id]);
461 clk_data->hws[mcd->id] = ERR_PTR(-ENOENT);
470 const struct mtk_clk_desc *mcd;
475 mcd = device_get_match_data(&pdev->dev);
476 if (!mcd) {
480 mcd = (const struct mtk_clk_desc *)id->driver_data;
482 if (!mcd)
487 if (mcd->composite_clks || mcd->divider_clks) {
488 if (!mcd->shared_io)
498 num_clks = mcd->num_clks + mcd->num_composite_clks;
499 num_clks += mcd->num_fixed_clks + mcd->num_factor_clks;
500 num_clks += mcd->num_mux_clks + mcd->num_divider_clks;
508 if (mcd->fixed_clks) {
509 r = mtk_clk_register_fixed_clks(mcd->fixed_clks,
510 mcd->num_fixed_clks, clk_data);
515 if (mcd->factor_clks) {
516 r = mtk_clk_register_factors(mcd->factor_clks,
517 mcd->num_factor_clks, clk_data);
522 if (mcd->mux_clks) {
523 r = mtk_clk_register_muxes(&pdev->dev, mcd->mux_clks,
524 mcd->num_mux_clks, node,
525 mcd->clk_lock, clk_data);
530 if (mcd->composite_clks) {
533 mcd->composite_clks,
534 mcd->num_composite_clks,
535 base, mcd->clk_lock, clk_data);
540 if (mcd->divider_clks) {
542 mcd->divider_clks,
543 mcd->num_divider_clks,
544 base, mcd->clk_lock, clk_data);
549 if (mcd->clks) {
550 r = mtk_clk_register_gates(&pdev->dev, node, mcd->clks,
551 mcd->num_clks, clk_data);
556 if (mcd->clk_notifier_func) {
557 struct clk *mfg_mux = clk_data->hws[mcd->mfg_clk_idx]->clk;
559 r = mcd->clk_notifier_func(&pdev->dev, mfg_mux);
570 if (mcd->rst_desc) {
572 mcd->rst_desc);
580 if (mcd->clks)
581 mtk_clk_unregister_gates(mcd->clks, mcd->num_clks, clk_data);
583 if (mcd->divider_clks)
584 mtk_clk_unregister_dividers(mcd->divider_clks,
585 mcd->num_divider_clks, clk_data);
587 if (mcd->composite_clks)
588 mtk_clk_unregister_composites(mcd->composite_clks,
589 mcd->num_composite_clks, clk_data);
591 if (mcd->mux_clks)
592 mtk_clk_unregister_muxes(mcd->mux_clks,
593 mcd->num_mux_clks, clk_data);
595 if (mcd->factor_clks)
596 mtk_clk_unregister_factors(mcd->factor_clks,
597 mcd->num_factor_clks, clk_data);
599 if (mcd->fixed_clks)
600 mtk_clk_unregister_fixed_clks(mcd->fixed_clks,
601 mcd->num_fixed_clks, clk_data);
605 if (mcd->shared_io && base)
614 const struct mtk_clk_desc *mcd = device_get_match_data(&pdev->dev);
617 if (mcd->clks)
618 mtk_clk_unregister_gates(mcd->clks, mcd->num_clks, clk_data);
619 if (mcd->divider_clks)
620 mtk_clk_unregister_dividers(mcd->divider_clks,
621 mcd->num_divider_clks, clk_data);
622 if (mcd->composite_clks)
623 mtk_clk_unregister_composites(mcd->composite_clks,
624 mcd->num_composite_clks, clk_data);
625 if (mcd->mux_clks)
626 mtk_clk_unregister_muxes(mcd->mux_clks,
627 mcd->num_mux_clks, clk_data);
628 if (mcd->factor_clks)
629 mtk_clk_unregister_factors(mcd->factor_clks,
630 mcd->num_factor_clks, clk_data);
631 if (mcd->fixed_clks)
632 mtk_clk_unregister_fixed_clks(mcd->fixed_clks,
633 mcd->num_fixed_clks, clk_data);