Merge tag 'pci-v5.18-changes-2' of git://git.kernel.org/pub/scm/linux/kernel/git...
[sfrench/cifs-2.6.git] / drivers / clk / mediatek / clk-mtk.h
index 7de41c3b320679761895afcadb06cbd7d01bd107..bf6565aa731961897e69af4e910f71b133d3ce22 100644 (file)
@@ -7,19 +7,19 @@
 #ifndef __DRV_CLK_MTK_H
 #define __DRV_CLK_MTK_H
 
-#include <linux/regmap.h>
-#include <linux/bitops.h>
 #include <linux/clk-provider.h>
-#include <linux/platform_device.h>
-
-struct clk;
-struct clk_onecell_data;
+#include <linux/io.h>
+#include <linux/kernel.h>
+#include <linux/spinlock.h>
+#include <linux/types.h>
 
 #define MAX_MUX_GATE_BIT       31
 #define INVALID_MUX_GATE_BIT   (MAX_MUX_GATE_BIT + 1)
 
 #define MHZ (1000 * 1000)
 
+struct platform_device;
+
 struct mtk_fixed_clk {
        int id;
        const char *name;
@@ -34,8 +34,10 @@ struct mtk_fixed_clk {
                .rate = _rate,                          \
        }
 
-void mtk_clk_register_fixed_clks(const struct mtk_fixed_clk *clks,
-               int num, struct clk_onecell_data *clk_data);
+int mtk_clk_register_fixed_clks(const struct mtk_fixed_clk *clks, int num,
+                               struct clk_onecell_data *clk_data);
+void mtk_clk_unregister_fixed_clks(const struct mtk_fixed_clk *clks, int num,
+                                  struct clk_onecell_data *clk_data);
 
 struct mtk_fixed_factor {
        int id;
@@ -53,8 +55,10 @@ struct mtk_fixed_factor {
                .div = _div,                            \
        }
 
-void mtk_clk_register_factors(const struct mtk_fixed_factor *clks,
-               int num, struct clk_onecell_data *clk_data);
+int mtk_clk_register_factors(const struct mtk_fixed_factor *clks, int num,
+                            struct clk_onecell_data *clk_data);
+void mtk_clk_unregister_factors(const struct mtk_fixed_factor *clks, int num,
+                               struct clk_onecell_data *clk_data);
 
 struct mtk_composite {
        int id;
@@ -146,34 +150,11 @@ struct mtk_composite {
 struct clk *mtk_clk_register_composite(const struct mtk_composite *mc,
                void __iomem *base, spinlock_t *lock);
 
-void mtk_clk_register_composites(const struct mtk_composite *mcs,
-               int num, void __iomem *base, spinlock_t *lock,
-               struct clk_onecell_data *clk_data);
-
-struct mtk_gate_regs {
-       u32 sta_ofs;
-       u32 clr_ofs;
-       u32 set_ofs;
-};
-
-struct mtk_gate {
-       int id;
-       const char *name;
-       const char *parent_name;
-       const struct mtk_gate_regs *regs;
-       int shift;
-       const struct clk_ops *ops;
-       unsigned long flags;
-};
-
-int mtk_clk_register_gates(struct device_node *node,
-                       const struct mtk_gate *clks, int num,
-                       struct clk_onecell_data *clk_data);
-
-int mtk_clk_register_gates_with_dev(struct device_node *node,
-               const struct mtk_gate *clks,
-               int num, struct clk_onecell_data *clk_data,
-               struct device *dev);
+int mtk_clk_register_composites(const struct mtk_composite *mcs, int num,
+                               void __iomem *base, spinlock_t *lock,
+                               struct clk_onecell_data *clk_data);
+void mtk_clk_unregister_composites(const struct mtk_composite *mcs, int num,
+                                  struct clk_onecell_data *clk_data);
 
 struct mtk_clk_divider {
        int id;
@@ -197,50 +178,14 @@ struct mtk_clk_divider {
                .div_width = _width,                            \
 }
 
-void mtk_clk_register_dividers(const struct mtk_clk_divider *mcds,
-                       int num, void __iomem *base, spinlock_t *lock,
-                               struct clk_onecell_data *clk_data);
+int mtk_clk_register_dividers(const struct mtk_clk_divider *mcds, int num,
+                             void __iomem *base, spinlock_t *lock,
+                             struct clk_onecell_data *clk_data);
+void mtk_clk_unregister_dividers(const struct mtk_clk_divider *mcds, int num,
+                                struct clk_onecell_data *clk_data);
 
 struct clk_onecell_data *mtk_alloc_clk_data(unsigned int clk_num);
-
-#define HAVE_RST_BAR   BIT(0)
-#define PLL_AO         BIT(1)
-
-struct mtk_pll_div_table {
-       u32 div;
-       unsigned long freq;
-};
-
-struct mtk_pll_data {
-       int id;
-       const char *name;
-       u32 reg;
-       u32 pwr_reg;
-       u32 en_mask;
-       u32 pd_reg;
-       u32 tuner_reg;
-       u32 tuner_en_reg;
-       u8 tuner_en_bit;
-       int pd_shift;
-       unsigned int flags;
-       const struct clk_ops *ops;
-       u32 rst_bar_mask;
-       unsigned long fmin;
-       unsigned long fmax;
-       int pcwbits;
-       int pcwibits;
-       u32 pcw_reg;
-       int pcw_shift;
-       u32 pcw_chg_reg;
-       const struct mtk_pll_div_table *div_table;
-       const char *parent_name;
-       u32 en_reg;
-       u8 pll_en_bit; /* Assume 0, indicates BIT(0) by default */
-};
-
-void mtk_clk_register_plls(struct device_node *node,
-               const struct mtk_pll_data *plls, int num_plls,
-               struct clk_onecell_data *clk_data);
+void mtk_free_clk_data(struct clk_onecell_data *clk_data);
 
 struct clk *mtk_clk_register_ref2usb_tx(const char *name,
                        const char *parent_name, void __iomem *reg);
@@ -257,5 +202,6 @@ struct mtk_clk_desc {
 };
 
 int mtk_clk_simple_probe(struct platform_device *pdev);
+int mtk_clk_simple_remove(struct platform_device *pdev);
 
 #endif /* __DRV_CLK_MTK_H */