#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/clk-provider.h>
#include <linux/io.h>
#include <linux/slab.h>
#include <linux/err.h>
#include <linux/pm_clock.h>
#include <linux/pm_runtime.h>
#include <linux/device.h>
#include <linux/of.h>
#include <linux/platform_device.h>
#include <dt-bindings/clock/qcom,sm8250-lpass-audiocc.h>
#include <dt-bindings/clock/qcom,sm8250-lpass-aoncc.h>
struct lpass_gfm { … };
struct clk_gfm { … };
#define to_clk_gfm(_hw) …
static u8 clk_gfm_get_parent(struct clk_hw *hw)
{ … }
static int clk_gfm_set_parent(struct clk_hw *hw, u8 index)
{ … }
static const struct clk_ops clk_gfm_ops = …;
static struct clk_gfm lpass_gfm_va_mclk = …;
static struct clk_gfm lpass_gfm_tx_npl = …;
static struct clk_gfm lpass_gfm_wsa_mclk = …;
static struct clk_gfm lpass_gfm_wsa_npl = …;
static struct clk_gfm lpass_gfm_rx_mclk_mclk2 = …;
static struct clk_gfm lpass_gfm_rx_npl = …;
static struct clk_gfm *aoncc_gfm_clks[] = …;
static struct clk_hw_onecell_data aoncc_hw_onecell_data = …;
static struct clk_gfm *audiocc_gfm_clks[] = …;
static struct clk_hw_onecell_data audiocc_hw_onecell_data = …;
struct lpass_gfm_data { … };
static struct lpass_gfm_data audiocc_data = …;
static struct lpass_gfm_data aoncc_data = …;
static int lpass_gfm_clk_driver_probe(struct platform_device *pdev)
{ … }
static const struct of_device_id lpass_gfm_clk_match_table[] = …;
MODULE_DEVICE_TABLE(of, lpass_gfm_clk_match_table);
static const struct dev_pm_ops lpass_gfm_pm_ops = …;
static struct platform_driver lpass_gfm_clk_driver = …;
module_platform_driver(…) …;
MODULE_LICENSE(…) …;
MODULE_DESCRIPTION(…) …;