lkml.org 
[lkml]   [2019]   [Oct]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[RFC PATCH 03/13] clk: bd718x7: Support ROHM BD71828 clk block
    BD71828GW is a single-chip power management IC for battery-powered portable
    devices. Add support for controlling BD71828 clk using bd718x7 driver.

    Signed-off-by: Matti Vaittinen <matti.vaittinen@fi.rohmeurope.com>
    ---
    drivers/clk/Kconfig | 6 +++---
    drivers/clk/clk-bd718x7.c | 15 ++++++++++-----
    2 files changed, 13 insertions(+), 8 deletions(-)

    diff --git a/drivers/clk/Kconfig b/drivers/clk/Kconfig
    index 801fa1cd0321..1d61d94cdb29 100644
    --- a/drivers/clk/Kconfig
    +++ b/drivers/clk/Kconfig
    @@ -302,10 +302,10 @@ config COMMON_CLK_STM32H7
    Support for stm32h7 SoC family clocks

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

    config COMMON_CLK_FIXED_MMIO
    diff --git a/drivers/clk/clk-bd718x7.c b/drivers/clk/clk-bd718x7.c
    index ae6e5baee330..d17a19e04592 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-bd71828.h>
    #include <linux/mfd/rohm-bd70528.h>
    #include <linux/clk-provider.h>
    #include <linux/clkdev.h>
    @@ -21,10 +22,8 @@ struct bd718xx_clk {
    struct rohm_regmap_dev *mfd;
    };

    -static int bd71837_clk_set(struct clk_hw *hw, int status)
    +static int bd71837_clk_set(struct bd718xx_clk *c, int status)
    {
    - struct bd718xx_clk *c = container_of(hw, struct bd718xx_clk, hw);
    -
    return regmap_update_bits(c->mfd->regmap, c->reg, c->mask, status);
    }

    @@ -33,14 +32,16 @@ static void bd71837_clk_disable(struct clk_hw *hw)
    int rv;
    struct bd718xx_clk *c = container_of(hw, struct bd718xx_clk, hw);

    - rv = bd71837_clk_set(hw, 0);
    + rv = bd71837_clk_set(c, 0);
    if (rv)
    dev_dbg(&c->pdev->dev, "Failed to disable 32K clk (%d)\n", rv);
    }

    static int bd71837_clk_enable(struct clk_hw *hw)
    {
    - return bd71837_clk_set(hw, 1);
    + struct bd718xx_clk *c = container_of(hw, struct bd718xx_clk, hw);
    +
    + return bd71837_clk_set(c, 0xffffffff);
    }

    static int bd71837_clk_is_enabled(struct clk_hw *hw)
    @@ -93,6 +94,10 @@ static int bd71837_clk_probe(struct platform_device *pdev)
    c->reg = BD718XX_REG_OUT32K;
    c->mask = BD718XX_OUT32K_EN;
    break;
    + case ROHM_CHIP_TYPE_BD71828:
    + c->reg = BD71828_REG_OUT32K;
    + c->mask = BD71828_OUT32K_EN;
    + break;
    case ROHM_CHIP_TYPE_BD70528:
    c->reg = BD70528_REG_CLK_OUT;
    c->mask = BD70528_CLK_OUT_EN_MASK;
    --
    2.21.0

    --
    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 ~~~
    Simon says - in Latin please.
    ~~~ "non cogito me" dixit Rene Descarte, deinde evanescavit ~~~
    Thanks to Simon Glass for the translation =]

    \
     
     \ /
      Last update: 2019-10-17 11:44    [W:4.333 / U:0.560 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site