lkml.org 
[lkml]   [2019]   [Feb]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH v10 3/9] 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>
    ---
    drivers/clk/Kconfig | 6 +++---
    drivers/clk/clk-bd718x7.c | 20 ++++++++++++++++----
    2 files changed, 19 insertions(+), 7 deletions(-)

    diff --git a/drivers/clk/Kconfig b/drivers/clk/Kconfig
    index d2f0bb5ba47e..87f61a46cd5f 100644
    --- a/drivers/clk/Kconfig
    +++ b/drivers/clk/Kconfig
    @@ -285,10 +285,10 @@ config COMMON_CLK_STM32H7

    config COMMON_CLK_BD718XX
    tristate "Clock driver for ROHM BD718x7 PMIC"
    - depends on MFD_ROHM_BD718XX
    + depends on MFD_ROHM_BD718XX || MFD_ROHM_BD70528
    help
    - This driver supports ROHM BD71837 and ROHM BD71847
    - PMICs clock gates.
    + This driver supports ROHM BD71837, ROHM BD71847 and
    + ROHM BD70528 PMICs clock gates.

    source "drivers/clk/actions/Kconfig"
    source "drivers/clk/bcm/Kconfig"
    diff --git a/drivers/clk/clk-bd718x7.c b/drivers/clk/clk-bd718x7.c
    index 461228ebf703..ae6e5baee330 100644
    --- a/drivers/clk/clk-bd718x7.c
    +++ b/drivers/clk/clk-bd718x7.c
    @@ -8,6 +8,7 @@
    #include <linux/platform_device.h>
    #include <linux/slab.h>
    #include <linux/mfd/rohm-bd718x7.h>
    +#include <linux/mfd/rohm-bd70528.h>
    #include <linux/clk-provider.h>
    #include <linux/clkdev.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");
    return -EINVAL;
    }
    -
    - c->reg = BD718XX_REG_OUT32K;
    - c->mask = BD718XX_OUT32K_EN;
    + switch (mfd->chip_type) {
    + case ROHM_CHIP_TYPE_BD71837:
    + 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->pdev = pdev;
    c->hw.init = &init;
    @@ -119,5 +131,5 @@ static struct platform_driver bd71837_clk = {
    module_platform_driver(bd71837_clk);

    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");
    --
    2.14.3

    --
    Matti Vaittinen, Linux device drivers
    ROHM Semiconductors, Finland SWDC
    Kiviharjunlenkki 1E
    90220 OULU
    FINLAND

    ~~~ "I don't think so," said Rene Descartes. Just then, he vanished ~~~

    \
     
     \ /
      Last update: 2019-02-14 14:09    [W:4.112 / U:1.200 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site