mirror of
				https://github.com/Ysurac/openmptcprouter.git
				synced 2025-03-09 15:40:20 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			181 lines
		
	
	
	
		
			7.2 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			181 lines
		
	
	
	
		
			7.2 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| From f23375db001ec0fe9f565be75eff43adde15407e Mon Sep 17 00:00:00 2001
 | |
| From: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
 | |
| Date: Fri, 20 Jan 2023 10:20:35 +0100
 | |
| Subject: [PATCH 03/15] clk: mediatek: clk-mtk: Propagate struct device for
 | |
|  composites
 | |
| 
 | |
| Like done for cpumux clocks, propagate struct device for composite
 | |
| clocks registered through clk-mtk helpers to be able to get runtime
 | |
| pm support for MTK clocks.
 | |
| 
 | |
| Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
 | |
| Tested-by: Miles Chen <miles.chen@mediatek.com>
 | |
| Link: https://lore.kernel.org/r/20230120092053.182923-6-angelogioacchino.delregno@collabora.com
 | |
| Tested-by: Mingming Su <mingming.su@mediatek.com>
 | |
| Signed-off-by: Stephen Boyd <sboyd@kernel.org>
 | |
| 
 | |
| [daniel@makrotopia.org: remove parts not relevant for OpenWrt]
 | |
| ---
 | |
|  drivers/clk/mediatek/clk-mt2701.c | 10 ++++++----
 | |
|  drivers/clk/mediatek/clk-mt2712.c | 12 ++++++++----
 | |
|  drivers/clk/mediatek/clk-mt7622.c |  8 +++++---
 | |
|  drivers/clk/mediatek/clk-mt7629.c |  8 +++++---
 | |
|  drivers/clk/mediatek/clk-mtk.c    | 11 ++++++-----
 | |
|  drivers/clk/mediatek/clk-mtk.h    |  3 ++-
 | |
|  6 files changed, 32 insertions(+), 20 deletions(-)
 | |
| 
 | |
| --- a/drivers/clk/mediatek/clk-mt2701.c
 | |
| +++ b/drivers/clk/mediatek/clk-mt2701.c
 | |
| @@ -677,8 +677,9 @@ static int mtk_topckgen_init(struct plat
 | |
|  	mtk_clk_register_factors(top_fixed_divs, ARRAY_SIZE(top_fixed_divs),
 | |
|  								clk_data);
 | |
|  
 | |
| -	mtk_clk_register_composites(top_muxes, ARRAY_SIZE(top_muxes),
 | |
| -				base, &mt2701_clk_lock, clk_data);
 | |
| +	mtk_clk_register_composites(&pdev->dev, top_muxes,
 | |
| +				    ARRAY_SIZE(top_muxes), base,
 | |
| +				    &mt2701_clk_lock, clk_data);
 | |
|  
 | |
|  	mtk_clk_register_dividers(top_adj_divs, ARRAY_SIZE(top_adj_divs),
 | |
|  				base, &mt2701_clk_lock, clk_data);
 | |
| @@ -897,8 +898,9 @@ static int mtk_pericfg_init(struct platf
 | |
|  	mtk_clk_register_gates(&pdev->dev, node, peri_clks,
 | |
|  			       ARRAY_SIZE(peri_clks), clk_data);
 | |
|  
 | |
| -	mtk_clk_register_composites(peri_muxs, ARRAY_SIZE(peri_muxs), base,
 | |
| -			&mt2701_clk_lock, clk_data);
 | |
| +	mtk_clk_register_composites(&pdev->dev, peri_muxs,
 | |
| +				    ARRAY_SIZE(peri_muxs), base,
 | |
| +				    &mt2701_clk_lock, clk_data);
 | |
|  
 | |
|  	r = of_clk_add_hw_provider(node, of_clk_hw_onecell_get, clk_data);
 | |
|  	if (r)
 | |
| --- a/drivers/clk/mediatek/clk-mt2712.c
 | |
| +++ b/drivers/clk/mediatek/clk-mt2712.c
 | |
| @@ -1320,8 +1320,9 @@ static int clk_mt2712_top_probe(struct p
 | |
|  	mtk_clk_register_factors(top_early_divs, ARRAY_SIZE(top_early_divs),
 | |
|  			top_clk_data);
 | |
|  	mtk_clk_register_factors(top_divs, ARRAY_SIZE(top_divs), top_clk_data);
 | |
| -	mtk_clk_register_composites(top_muxes, ARRAY_SIZE(top_muxes), base,
 | |
| -			&mt2712_clk_lock, top_clk_data);
 | |
| +	mtk_clk_register_composites(&pdev->dev, top_muxes,
 | |
| +				    ARRAY_SIZE(top_muxes), base,
 | |
| +				    &mt2712_clk_lock, top_clk_data);
 | |
|  	mtk_clk_register_dividers(top_adj_divs, ARRAY_SIZE(top_adj_divs), base,
 | |
|  			&mt2712_clk_lock, top_clk_data);
 | |
|  	mtk_clk_register_gates(&pdev->dev, node, top_clks,
 | |
| @@ -1395,8 +1396,11 @@ static int clk_mt2712_mcu_probe(struct p
 | |
|  
 | |
|  	clk_data = mtk_alloc_clk_data(CLK_MCU_NR_CLK);
 | |
|  
 | |
| -	mtk_clk_register_composites(mcu_muxes, ARRAY_SIZE(mcu_muxes), base,
 | |
| -			&mt2712_clk_lock, clk_data);
 | |
| +	r = mtk_clk_register_composites(&pdev->dev, mcu_muxes,
 | |
| +					ARRAY_SIZE(mcu_muxes), base,
 | |
| +					&mt2712_clk_lock, clk_data);
 | |
| +	if (r)
 | |
| +		dev_err(&pdev->dev, "Could not register composites: %d\n", r);
 | |
|  
 | |
|  	r = of_clk_add_hw_provider(node, of_clk_hw_onecell_get, clk_data);
 | |
|  
 | |
| --- a/drivers/clk/mediatek/clk-mt7622.c
 | |
| +++ b/drivers/clk/mediatek/clk-mt7622.c
 | |
| @@ -615,8 +615,9 @@ static int mtk_topckgen_init(struct plat
 | |
|  	mtk_clk_register_factors(top_divs, ARRAY_SIZE(top_divs),
 | |
|  				 clk_data);
 | |
|  
 | |
| -	mtk_clk_register_composites(top_muxes, ARRAY_SIZE(top_muxes),
 | |
| -				    base, &mt7622_clk_lock, clk_data);
 | |
| +	mtk_clk_register_composites(&pdev->dev, top_muxes,
 | |
| +				    ARRAY_SIZE(top_muxes), base,
 | |
| +				    &mt7622_clk_lock, clk_data);
 | |
|  
 | |
|  	mtk_clk_register_dividers(top_adj_divs, ARRAY_SIZE(top_adj_divs),
 | |
|  				  base, &mt7622_clk_lock, clk_data);
 | |
| @@ -685,7 +686,8 @@ static int mtk_pericfg_init(struct platf
 | |
|  	mtk_clk_register_gates(&pdev->dev, node, peri_clks,
 | |
|  			       ARRAY_SIZE(peri_clks), clk_data);
 | |
|  
 | |
| -	mtk_clk_register_composites(peri_muxes, ARRAY_SIZE(peri_muxes), base,
 | |
| +	mtk_clk_register_composites(&pdev->dev, peri_muxes,
 | |
| +				    ARRAY_SIZE(peri_muxes), base,
 | |
|  				    &mt7622_clk_lock, clk_data);
 | |
|  
 | |
|  	r = of_clk_add_hw_provider(node, of_clk_hw_onecell_get, clk_data);
 | |
| --- a/drivers/clk/mediatek/clk-mt7629.c
 | |
| +++ b/drivers/clk/mediatek/clk-mt7629.c
 | |
| @@ -564,8 +564,9 @@ static int mtk_topckgen_init(struct plat
 | |
|  	mtk_clk_register_factors(top_divs, ARRAY_SIZE(top_divs),
 | |
|  				 clk_data);
 | |
|  
 | |
| -	mtk_clk_register_composites(top_muxes, ARRAY_SIZE(top_muxes),
 | |
| -				    base, &mt7629_clk_lock, clk_data);
 | |
| +	mtk_clk_register_composites(&pdev->dev, top_muxes,
 | |
| +				    ARRAY_SIZE(top_muxes), base,
 | |
| +				    &mt7629_clk_lock, clk_data);
 | |
|  
 | |
|  	clk_prepare_enable(clk_data->hws[CLK_TOP_AXI_SEL]->clk);
 | |
|  	clk_prepare_enable(clk_data->hws[CLK_TOP_MEM_SEL]->clk);
 | |
| @@ -607,7 +608,8 @@ static int mtk_pericfg_init(struct platf
 | |
|  	mtk_clk_register_gates(&pdev->dev, node, peri_clks,
 | |
|  			       ARRAY_SIZE(peri_clks), clk_data);
 | |
|  
 | |
| -	mtk_clk_register_composites(peri_muxes, ARRAY_SIZE(peri_muxes), base,
 | |
| +	mtk_clk_register_composites(&pdev->dev, peri_muxes,
 | |
| +				    ARRAY_SIZE(peri_muxes), base,
 | |
|  				    &mt7629_clk_lock, clk_data);
 | |
|  
 | |
|  	r = of_clk_add_hw_provider(node, of_clk_hw_onecell_get, clk_data);
 | |
| --- a/drivers/clk/mediatek/clk-mtk.c
 | |
| +++ b/drivers/clk/mediatek/clk-mtk.c
 | |
| @@ -197,8 +197,8 @@ void mtk_clk_unregister_factors(const st
 | |
|  }
 | |
|  EXPORT_SYMBOL_GPL(mtk_clk_unregister_factors);
 | |
|  
 | |
| -static struct clk_hw *mtk_clk_register_composite(const struct mtk_composite *mc,
 | |
| -		void __iomem *base, spinlock_t *lock)
 | |
| +static struct clk_hw *mtk_clk_register_composite(struct device *dev,
 | |
| +		const struct mtk_composite *mc, void __iomem *base, spinlock_t *lock)
 | |
|  {
 | |
|  	struct clk_hw *hw;
 | |
|  	struct clk_mux *mux = NULL;
 | |
| @@ -264,7 +264,7 @@ static struct clk_hw *mtk_clk_register_c
 | |
|  		div_ops = &clk_divider_ops;
 | |
|  	}
 | |
|  
 | |
| -	hw = clk_hw_register_composite(NULL, mc->name, parent_names, num_parents,
 | |
| +	hw = clk_hw_register_composite(dev, mc->name, parent_names, num_parents,
 | |
|  		mux_hw, mux_ops,
 | |
|  		div_hw, div_ops,
 | |
|  		gate_hw, gate_ops,
 | |
| @@ -308,7 +308,8 @@ static void mtk_clk_unregister_composite
 | |
|  	kfree(mux);
 | |
|  }
 | |
|  
 | |
| -int mtk_clk_register_composites(const struct mtk_composite *mcs, int num,
 | |
| +int mtk_clk_register_composites(struct device *dev,
 | |
| +				const struct mtk_composite *mcs, int num,
 | |
|  				void __iomem *base, spinlock_t *lock,
 | |
|  				struct clk_hw_onecell_data *clk_data)
 | |
|  {
 | |
| @@ -327,7 +328,7 @@ int mtk_clk_register_composites(const st
 | |
|  			continue;
 | |
|  		}
 | |
|  
 | |
| -		hw = mtk_clk_register_composite(mc, base, lock);
 | |
| +		hw = mtk_clk_register_composite(dev, mc, base, lock);
 | |
|  
 | |
|  		if (IS_ERR(hw)) {
 | |
|  			pr_err("Failed to register clk %s: %pe\n", mc->name,
 | |
| --- a/drivers/clk/mediatek/clk-mtk.h
 | |
| +++ b/drivers/clk/mediatek/clk-mtk.h
 | |
| @@ -149,7 +149,8 @@ struct mtk_composite {
 | |
|  		.flags = 0,						\
 | |
|  	}
 | |
|  
 | |
| -int mtk_clk_register_composites(const struct mtk_composite *mcs, int num,
 | |
| +int mtk_clk_register_composites(struct device *dev,
 | |
| +				const struct mtk_composite *mcs, int num,
 | |
|  				void __iomem *base, spinlock_t *lock,
 | |
|  				struct clk_hw_onecell_data *clk_data);
 | |
|  void mtk_clk_unregister_composites(const struct mtk_composite *mcs, int num,
 |