clk: bd718x7: Support ROHM BD70528 clk block
ROHM BD70528 is an ultra low power PMIC with similar 32K clk as bd718x7. Only difference (from clk perspective) is register address. Add support for controlling BD70528 clk using bd718x7 driver. Signed-off-by: Matti Vaittinen <matti.vaittinen@fi.rohmeurope.com> Acked-by: Stephen Boyd <sboyd@kernel.org> Signed-off-by: Lee Jones <lee.jones@linaro.org>
This commit is contained in:
parent
21b7c58fc1
commit
0dae7f5857
|
@ -293,10 +293,10 @@ config COMMON_CLK_STM32H7
|
||||||
|
|
||||||
config COMMON_CLK_BD718XX
|
config COMMON_CLK_BD718XX
|
||||||
tristate "Clock driver for ROHM BD718x7 PMIC"
|
tristate "Clock driver for ROHM BD718x7 PMIC"
|
||||||
depends on MFD_ROHM_BD718XX
|
depends on MFD_ROHM_BD718XX || MFD_ROHM_BD70528
|
||||||
help
|
help
|
||||||
This driver supports ROHM BD71837 and ROHM BD71847
|
This driver supports ROHM BD71837, ROHM BD71847 and
|
||||||
PMICs clock gates.
|
ROHM BD70528 PMICs clock gates.
|
||||||
|
|
||||||
config COMMON_CLK_FIXED_MMIO
|
config COMMON_CLK_FIXED_MMIO
|
||||||
bool "Clock driver for Memory Mapped Fixed values"
|
bool "Clock driver for Memory Mapped Fixed values"
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
#include <linux/platform_device.h>
|
#include <linux/platform_device.h>
|
||||||
#include <linux/slab.h>
|
#include <linux/slab.h>
|
||||||
#include <linux/mfd/rohm-bd718x7.h>
|
#include <linux/mfd/rohm-bd718x7.h>
|
||||||
|
#include <linux/mfd/rohm-bd70528.h>
|
||||||
#include <linux/clk-provider.h>
|
#include <linux/clk-provider.h>
|
||||||
#include <linux/clkdev.h>
|
#include <linux/clkdev.h>
|
||||||
#include <linux/regmap.h>
|
#include <linux/regmap.h>
|
||||||
|
@ -86,9 +87,20 @@ static int bd71837_clk_probe(struct platform_device *pdev)
|
||||||
dev_err(&pdev->dev, "No parent clk found\n");
|
dev_err(&pdev->dev, "No parent clk found\n");
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
switch (mfd->chip_type) {
|
||||||
c->reg = BD718XX_REG_OUT32K;
|
case ROHM_CHIP_TYPE_BD71837:
|
||||||
c->mask = BD718XX_OUT32K_EN;
|
case ROHM_CHIP_TYPE_BD71847:
|
||||||
|
c->reg = BD718XX_REG_OUT32K;
|
||||||
|
c->mask = BD718XX_OUT32K_EN;
|
||||||
|
break;
|
||||||
|
case ROHM_CHIP_TYPE_BD70528:
|
||||||
|
c->reg = BD70528_REG_CLK_OUT;
|
||||||
|
c->mask = BD70528_CLK_OUT_EN_MASK;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
dev_err(&pdev->dev, "Unknown clk chip\n");
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
c->mfd = mfd;
|
c->mfd = mfd;
|
||||||
c->pdev = pdev;
|
c->pdev = pdev;
|
||||||
c->hw.init = &init;
|
c->hw.init = &init;
|
||||||
|
@ -119,5 +131,5 @@ static struct platform_driver bd71837_clk = {
|
||||||
module_platform_driver(bd71837_clk);
|
module_platform_driver(bd71837_clk);
|
||||||
|
|
||||||
MODULE_AUTHOR("Matti Vaittinen <matti.vaittinen@fi.rohmeurope.com>");
|
MODULE_AUTHOR("Matti Vaittinen <matti.vaittinen@fi.rohmeurope.com>");
|
||||||
MODULE_DESCRIPTION("BD71837/BD71847 chip clk driver");
|
MODULE_DESCRIPTION("BD71837/BD71847/BD70528 chip clk driver");
|
||||||
MODULE_LICENSE("GPL");
|
MODULE_LICENSE("GPL");
|
||||||
|
|
Loading…
Reference in New Issue