goto free_master;
        init_completion(&mps->txisrdone);
  
-       psc_num = master->bus_num;
-       snprintf(clk_name, sizeof(clk_name), "psc%d_mclk", psc_num);
-       clk = devm_clk_get(dev, clk_name);
+       clk = devm_clk_get(dev, "mclk");
        if (IS_ERR(clk)) {
                ret = PTR_ERR(clk);
 -              goto free_irq;
 +              goto free_master;
        }
        ret = clk_prepare_enable(clk);
        if (ret)
  
        return ret;
  
- free_clock:
+ free_ipg_clock:
+       clk_disable_unprepare(mps->clk_ipg);
+ free_mclk_clock:
        clk_disable_unprepare(mps->clk_mclk);
 -free_irq:
 -      free_irq(mps->irq, mps);
  free_master:
 -      if (mps->psc)
 -              iounmap(mps->psc);
        spi_master_put(master);
  
        return ret;
        struct mpc512x_psc_spi *mps = spi_master_get_devdata(master);
  
        clk_disable_unprepare(mps->clk_mclk);
 -      free_irq(mps->irq, mps);
 -      if (mps->psc)
 -              iounmap(mps->psc);
+       clk_disable_unprepare(mps->clk_ipg);
  
        return 0;
  }