0001
0002
0003
0004
0005
0006
0007
0008
0009
0010 #include <linux/clk-provider.h>
0011 #include <linux/err.h>
0012 #include <linux/module.h>
0013 #include <linux/platform_data/x86/clk-lpss.h>
0014 #include <linux/platform_device.h>
0015
0016 static int lpss_atom_clk_probe(struct platform_device *pdev)
0017 {
0018 struct lpss_clk_data *drvdata;
0019 struct clk *clk;
0020
0021 drvdata = devm_kzalloc(&pdev->dev, sizeof(*drvdata), GFP_KERNEL);
0022 if (!drvdata)
0023 return -ENOMEM;
0024
0025
0026 drvdata->name = "lpss_clk";
0027 clk = clk_register_fixed_rate(&pdev->dev, drvdata->name, NULL,
0028 0, 100000000);
0029 if (IS_ERR(clk))
0030 return PTR_ERR(clk);
0031
0032 drvdata->clk = clk;
0033 platform_set_drvdata(pdev, drvdata);
0034 return 0;
0035 }
0036
0037 static struct platform_driver lpss_atom_clk_driver = {
0038 .driver = {
0039 .name = "clk-lpss-atom",
0040 },
0041 .probe = lpss_atom_clk_probe,
0042 };
0043
0044 int __init lpss_atom_clk_init(void)
0045 {
0046 return platform_driver_register(&lpss_atom_clk_driver);
0047 }