* [PATCH v9 0/3] Add rockchip RK808 pmic driver @ 2014-09-04 1:12 Chris Zhong 2014-09-04 1:12 ` [PATCH v9 1/3] RTC: RK808: add RTC driver for RK808 Chris Zhong ` (3 more replies) 0 siblings, 4 replies; 15+ messages in thread From: Chris Zhong @ 2014-09-04 1:12 UTC (permalink / raw) To: dianders-F7+t8E8rja9g9hUCZPvPmw, heiko-4mtYJXux2i+zQB+pC5nmwQ Cc: robh+dt-DgEjT+Ai2ygdnm+yROfE0A, pawel.moll-5wv7dgnIgG8, mark.rutland-5wv7dgnIgG8, ijc+devicetree-KcIKpvwj1kUDXYZnReoRVg, galak-sgV2jX0FEOL9JmXXK+q4OQ, sameo-VuQAYsv1563Yd54FQh9/CA, lee.jones-QSEj5FYQhm4dnm+yROfE0A, lgirdwood-Re5JQEeQqe8AvxtiuMwx3w, a.zummo-BfzFCNDTiLLj+vYz1yj4TQ, mturquette-QSEj5FYQhm4dnm+yROfE0A, akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b, broonie-DgEjT+Ai2ygdnm+yROfE0A, devicetree-u79uwXL29TY76Z2rM5mHXA, linux-kernel-u79uwXL29TY76Z2rM5mHXA, rtc-linux-/JYPxA39Uh5TLH3MbocFFw, grant.likely-QSEj5FYQhm4dnm+yROfE0A, hl-TNX95d0MmH7DzftRWevZcw, huangtao-TNX95d0MmH7DzftRWevZcw, cf-TNX95d0MmH7DzftRWevZcw, zhangqing-TNX95d0MmH7DzftRWevZcw, xxx-TNX95d0MmH7DzftRWevZcw, olof-nZhT3qVonbNeoWH0uzbU5w, sonnyrao-F7+t8E8rja9g9hUCZPvPmw, dtor-F7+t8E8rja9g9hUCZPvPmw, javier.martinez-ZGY8ohtN/8pPYcu2f3hruQ, kever.yang-TNX95d0MmH7DzftRWevZcw, Chris Zhong This is the initial version of the RK808 PMIC. This is a power management IC for multimedia products. It provides regulators that are able to supply power to processor cores and other components. The chip provides other modules including RTC, Clockout Changes in v9: Adviced by Dmitry - if(rk808_rtc->irq < 0), return rk808_rtc->irq Adviced by Doug - add reg_np Changes in v8: Adviced by Doug - coding style - fix regmap_update_bits() - if(rk808_rtc->irq < 0) return err num Adviced by Mike -rename "control" to "enable" -define RK808_NR_OUTPUT 2 Adviced by Doug - remove rk808_regulator_dts() function - remove the check about "client->dev.of_node" Changes in v7: Adviced by doug - read rtc time from shadowed registers Adviced by Dmitry - use CONFIG_PM_SLEEP replace CONFIG_PM - use SIMPLE_DEV_PM_OPS replace dev_pm_ops - fix dev_warn - coding style Adviced by Heiko - remove rtc_ctl Adviced by doug -fix coding style problems - remove pdata struct from header file, add rk808_regulator struct Changes in v6: Adviced by doug - move RTC_READSEL setting into probe Adviced by doug - use correct argument call of_clk_add_provider in probe - remove the redundant code Changes in v5: - fixed a bug about set_time failed Adviced by doug - add some error checking in probe - move "rockchip,rk808.h" into the patch about dt-bindings - re-edit base on Mark's branch Changes in v4: - use &client->dev replace rk808->dev Adviced by doug - add "clock-output-names" propertiey - add a header file "rockchip,rk808.h" - use &client->dev replace rk808->dev Changes in v3: - fix compile err Changes in v2: Adviced by javier.martinez - Add a separate clock driver, rather than in RTC driver Adviced by javier.martinez - separated from rtc-rk808.c Adviced by Mark Browm: - change of_find_node_by_name to find_child_by_name - use RK808_NUM_REGULATORS as the name of the constant - create a pdata when missing platform data - use the rk808_reg name to supply_regulator name - replace regulator_register with devm_regulator_register - some other problem with coding style Chris Zhong (3): RTC: RK808: add RTC driver for RK808 clk: RK808: Add clkout driver for RK808 regulator: RK808: Remove pdata from the regulator drivers/clk/Kconfig | 9 + drivers/clk/Makefile | 1 + drivers/clk/clk-rk808.c | 164 ++++++++++++++ drivers/regulator/rk808-regulator.c | 91 ++------ drivers/rtc/Kconfig | 10 + drivers/rtc/Makefile | 1 + drivers/rtc/rtc-rk808.c | 426 +++++++++++++++++++++++++++++++++++ 7 files changed, 629 insertions(+), 73 deletions(-) create mode 100644 drivers/clk/clk-rk808.c create mode 100644 drivers/rtc/rtc-rk808.c -- 1.7.9.5 -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH v9 1/3] RTC: RK808: add RTC driver for RK808 2014-09-04 1:12 [PATCH v9 0/3] Add rockchip RK808 pmic driver Chris Zhong @ 2014-09-04 1:12 ` Chris Zhong [not found] ` <1409793159-2573-2-git-send-email-zyw-TNX95d0MmH7DzftRWevZcw@public.gmane.org> 2014-09-04 1:12 ` [PATCH v9 2/3] clk: RK808: Add clkout " Chris Zhong ` (2 subsequent siblings) 3 siblings, 1 reply; 15+ messages in thread From: Chris Zhong @ 2014-09-04 1:12 UTC (permalink / raw) To: dianders, heiko Cc: robh+dt, pawel.moll, mark.rutland, ijc+devicetree, galak, sameo, lee.jones, lgirdwood, a.zummo, mturquette, akpm, broonie, devicetree, linux-kernel, rtc-linux, grant.likely, hl, huangtao, cf, zhangqing, xxx, olof, sonnyrao, dtor, javier.martinez, kever.yang, Chris Zhong Adding RTC driver for supporting RTC device present inside RK808 PMIC. Signed-off-by: Chris Zhong <zyw@rock-chips.com> Signed-off-by: Zhang Qing <zhangqing@rock-chips.com> Tested-by: Heiko Stuebner <heiko@sntech.de> --- Changes in v9: Adviced by Dmitry - if(rk808_rtc->irq < 0), return rk808_rtc->irq Changes in v8: Adviced by Doug - coding style - fix regmap_update_bits() - if(rk808_rtc->irq < 0) return err num Changes in v7: Adviced by doug - read rtc time from shadowed registers Adviced by Dmitry - use CONFIG_PM_SLEEP replace CONFIG_PM - use SIMPLE_DEV_PM_OPS replace dev_pm_ops - fix dev_warn - coding style Adviced by Heiko - remove rtc_ctl Changes in v6: Adviced by doug - move RTC_READSEL setting into probe Changes in v5: - fixed a bug about set_time failed Changes in v4: - use &client->dev replace rk808->dev Changes in v3: None Changes in v2: Adviced by javier.martinez - Add a separate clock driver, rather than in RTC driver drivers/rtc/Kconfig | 10 ++ drivers/rtc/Makefile | 1 + drivers/rtc/rtc-rk808.c | 426 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 437 insertions(+) create mode 100644 drivers/rtc/rtc-rk808.c diff --git a/drivers/rtc/Kconfig b/drivers/rtc/Kconfig index a168e96..aeab9d9 100644 --- a/drivers/rtc/Kconfig +++ b/drivers/rtc/Kconfig @@ -288,6 +288,16 @@ config RTC_DRV_MAX77686 This driver can also be built as a module. If so, the module will be called rtc-max77686. +config RTC_DRV_RK808 + tristate "Rockchip RK808 RTC" + depends on MFD_RK808 + help + If you say yes here you will get support for the + RTC of RK808 PMIC. + + This driver can also be built as a module. If so, the module + will be called rk808-rtc. + config RTC_DRV_RS5C372 tristate "Ricoh R2025S/D, RS5C372A/B, RV5C386, RV5C387A" help diff --git a/drivers/rtc/Makefile b/drivers/rtc/Makefile index 56f061c..91fe4647 100644 --- a/drivers/rtc/Makefile +++ b/drivers/rtc/Makefile @@ -109,6 +109,7 @@ obj-$(CONFIG_RTC_DRV_PUV3) += rtc-puv3.o obj-$(CONFIG_RTC_DRV_PXA) += rtc-pxa.o obj-$(CONFIG_RTC_DRV_R9701) += rtc-r9701.o obj-$(CONFIG_RTC_DRV_RC5T583) += rtc-rc5t583.o +obj-$(CONFIG_RTC_DRV_RK808) += rtc-rk808.o obj-$(CONFIG_RTC_DRV_RP5C01) += rtc-rp5c01.o obj-$(CONFIG_RTC_DRV_RS5C313) += rtc-rs5c313.o obj-$(CONFIG_RTC_DRV_RS5C348) += rtc-rs5c348.o diff --git a/drivers/rtc/rtc-rk808.c b/drivers/rtc/rtc-rk808.c new file mode 100644 index 0000000..b8cd399 --- /dev/null +++ b/drivers/rtc/rtc-rk808.c @@ -0,0 +1,426 @@ +/* + * RTC driver for Rockchip RK808 + * + * Copyright (c) 2014, Fuzhou Rockchip Electronics Co., Ltd + * + * Author: Chris Zhong <zyw@rock-chips.com> + * Author: Zhang Qing <zhanqging@rock-chips.com> + * + * This program is free software; you can redistribute it and/or modify it + * under the terms and conditions of the GNU General Public License, + * version 2, as published by the Free Software Foundation. + * + * This program is distributed in the hope it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + */ + +#include <linux/module.h> +#include <linux/kernel.h> +#include <linux/rtc.h> +#include <linux/bcd.h> +#include <linux/mfd/rk808.h> +#include <linux/platform_device.h> +#include <linux/i2c.h> + +/* RTC_CTRL_REG bitfields */ +#define BIT_RTC_CTRL_REG_STOP_RTC_M BIT(0) + +/* RK808 has a shadowed register for saving a "frozen" RTC time. + * When user setting "GET_TIME" to 1, the time will save in this shadowed + * register. If set "READSEL" to 1, user read rtc time register, actually + * get the time of that moment. If we need the real time, clr this bit. + */ +#define BIT_RTC_CTRL_REG_RTC_GET_TIME BIT(6) +#define BIT_RTC_CTRL_REG_RTC_READSEL_M BIT(7) +#define BIT_RTC_INTERRUPTS_REG_IT_ALARM_M BIT(3) +#define RTC_STATUS_MASK 0xFE + +#define SECONDS_REG_MSK 0x7F +#define MINUTES_REG_MAK 0x7F +#define HOURS_REG_MSK 0x3F +#define DAYS_REG_MSK 0x3F +#define MONTHS_REG_MSK 0x1F +#define YEARS_REG_MSK 0xFF +#define WEEKS_REG_MSK 0x7 + +/* REG_SECONDS_REG through REG_YEARS_REG is how many registers? */ + +#define NUM_TIME_REGS (RK808_WEEKS_REG - RK808_SECONDS_REG + 1) +#define NUM_ALARM_REGS (RK808_ALARM_YEARS_REG - RK808_ALARM_SECONDS_REG + 1) + +struct rk808_rtc { + struct rk808 *rk808; + struct rtc_device *rtc; + int irq; +}; + +/* Read current time and date in RTC */ +static int rk808_rtc_readtime(struct device *dev, struct rtc_time *tm) +{ + struct rk808_rtc *rk808_rtc = dev_get_drvdata(dev); + struct rk808 *rk808 = rk808_rtc->rk808; + u8 rtc_data[NUM_TIME_REGS]; + int ret; + + /* Force an update of the shadowed registers right now */ + ret = regmap_update_bits(rk808->regmap, RK808_RTC_CTRL_REG, + BIT_RTC_CTRL_REG_RTC_GET_TIME, + 0); + if (ret) { + dev_err(dev, "Failed to update bits rtc_ctrl: %d\n", ret); + return ret; + } + + ret = regmap_update_bits(rk808->regmap, RK808_RTC_CTRL_REG, + BIT_RTC_CTRL_REG_RTC_GET_TIME, + BIT_RTC_CTRL_REG_RTC_GET_TIME); + if (ret) { + dev_err(dev, "Failed to update bits rtc_ctrl: %d\n", ret); + return ret; + } + + ret = regmap_bulk_read(rk808->regmap, RK808_SECONDS_REG, + rtc_data, NUM_TIME_REGS); + if (ret) { + dev_err(dev, "Failed to bulk read rtc_data: %d\n", ret); + return ret; + } + + tm->tm_sec = bcd2bin(rtc_data[0] & SECONDS_REG_MSK); + tm->tm_min = bcd2bin(rtc_data[1] & MINUTES_REG_MAK); + tm->tm_hour = bcd2bin(rtc_data[2] & HOURS_REG_MSK); + tm->tm_mday = bcd2bin(rtc_data[3] & DAYS_REG_MSK); + tm->tm_mon = (bcd2bin(rtc_data[4] & MONTHS_REG_MSK)) - 1; + tm->tm_year = (bcd2bin(rtc_data[5] & YEARS_REG_MSK)) + 100; + tm->tm_wday = bcd2bin(rtc_data[6] & WEEKS_REG_MSK); + dev_dbg(dev, "RTC date/time %4d-%02d-%02d(%d) %02d:%02d:%02d\n", + 1900 + tm->tm_year, tm->tm_mon + 1, tm->tm_mday, + tm->tm_wday, tm->tm_hour , tm->tm_min, tm->tm_sec); + + return ret; +} + +/* Set current time and date in RTC */ +static int rk808_rtc_set_time(struct device *dev, struct rtc_time *tm) +{ + struct rk808_rtc *rk808_rtc = dev_get_drvdata(dev); + struct rk808 *rk808 = rk808_rtc->rk808; + u8 rtc_data[NUM_TIME_REGS]; + int ret; + + rtc_data[0] = bin2bcd(tm->tm_sec); + rtc_data[1] = bin2bcd(tm->tm_min); + rtc_data[2] = bin2bcd(tm->tm_hour); + rtc_data[3] = bin2bcd(tm->tm_mday); + rtc_data[4] = bin2bcd(tm->tm_mon + 1); + rtc_data[5] = bin2bcd(tm->tm_year - 100); + rtc_data[6] = bin2bcd(tm->tm_wday); + dev_dbg(dev, "set RTC date/time %4d-%02d-%02d(%d) %02d:%02d:%02d\n", + 1900 + tm->tm_year, tm->tm_mon + 1, tm->tm_mday, + tm->tm_wday, tm->tm_hour , tm->tm_min, tm->tm_sec); + + /* Stop RTC while updating the RTC registers */ + ret = regmap_update_bits(rk808->regmap, RK808_RTC_CTRL_REG, + BIT_RTC_CTRL_REG_STOP_RTC_M, + BIT_RTC_CTRL_REG_STOP_RTC_M); + if (ret) { + dev_err(dev, "Failed to update RTC control: %d\n", ret); + return ret; + } + + ret = regmap_bulk_write(rk808->regmap, RK808_SECONDS_REG, + rtc_data, NUM_TIME_REGS); + if (ret) { + dev_err(dev, "Failed to bull write rtc_data: %d\n", ret); + return ret; + } + /* Start RTC again */ + ret = regmap_update_bits(rk808->regmap, RK808_RTC_CTRL_REG, + BIT_RTC_CTRL_REG_STOP_RTC_M, 0); + if (ret) { + dev_err(dev, "Failed to update RTC control: %d\n", ret); + return ret; + } + return 0; +} + +/* Read alarm time and date in RTC */ +static int rk808_rtc_readalarm(struct device *dev, struct rtc_wkalrm *alrm) +{ + struct rk808_rtc *rk808_rtc = dev_get_drvdata(dev); + struct rk808 *rk808 = rk808_rtc->rk808; + u8 alrm_data[NUM_ALARM_REGS]; + uint32_t int_reg; + int ret; + + ret = regmap_bulk_read(rk808->regmap, RK808_ALARM_SECONDS_REG, + alrm_data, NUM_ALARM_REGS); + + alrm->time.tm_sec = bcd2bin(alrm_data[0] & SECONDS_REG_MSK); + alrm->time.tm_min = bcd2bin(alrm_data[1] & MINUTES_REG_MAK); + alrm->time.tm_hour = bcd2bin(alrm_data[2] & HOURS_REG_MSK); + alrm->time.tm_mday = bcd2bin(alrm_data[3] & DAYS_REG_MSK); + alrm->time.tm_mon = (bcd2bin(alrm_data[4] & MONTHS_REG_MSK)) - 1; + alrm->time.tm_year = (bcd2bin(alrm_data[5] & YEARS_REG_MSK)) + 100; + + ret = regmap_read(rk808->regmap, RK808_RTC_INT_REG, &int_reg); + if (ret) { + dev_err(dev, "Failed to read RTC INT REG: %d\n", ret); + return ret; + } + + dev_dbg(dev, "alrm read RTC date/time %4d-%02d-%02d(%d) %02d:%02d:%02d\n", + 1900 + alrm->time.tm_year, alrm->time.tm_mon + 1, + alrm->time.tm_mday, alrm->time.tm_wday, alrm->time.tm_hour, + alrm->time.tm_min, alrm->time.tm_sec); + + alrm->enabled = (int_reg & BIT_RTC_INTERRUPTS_REG_IT_ALARM_M) ? 1 : 0; + + return 0; +} + +static int rk808_rtc_stop_alarm(struct rk808_rtc *rk808_rtc) +{ + struct rk808 *rk808 = rk808_rtc->rk808; + int ret; + + ret = regmap_update_bits(rk808->regmap, RK808_RTC_INT_REG, + BIT_RTC_INTERRUPTS_REG_IT_ALARM_M, 0); + + return ret; +} + +static int rk808_rtc_start_alarm(struct rk808_rtc *rk808_rtc) +{ + struct rk808 *rk808 = rk808_rtc->rk808; + int ret; + + ret = regmap_update_bits(rk808->regmap, RK808_RTC_INT_REG, + BIT_RTC_INTERRUPTS_REG_IT_ALARM_M, + BIT_RTC_INTERRUPTS_REG_IT_ALARM_M); + + return ret; +} + +static int rk808_rtc_setalarm(struct device *dev, struct rtc_wkalrm *alrm) +{ + struct rk808_rtc *rk808_rtc = dev_get_drvdata(dev); + struct rk808 *rk808 = rk808_rtc->rk808; + u8 alrm_data[NUM_ALARM_REGS]; + int ret; + + ret = rk808_rtc_stop_alarm(rk808_rtc); + if (ret) { + dev_err(dev, "Failed to stop alarm: %d\n", ret); + return ret; + } + dev_dbg(dev, "alrm set RTC date/time %4d-%02d-%02d(%d) %02d:%02d:%02d\n", + 1900 + alrm->time.tm_year, alrm->time.tm_mon + 1, + alrm->time.tm_mday, alrm->time.tm_wday, alrm->time.tm_hour, + alrm->time.tm_min, alrm->time.tm_sec); + + alrm_data[0] = bin2bcd(alrm->time.tm_sec); + alrm_data[1] = bin2bcd(alrm->time.tm_min); + alrm_data[2] = bin2bcd(alrm->time.tm_hour); + alrm_data[3] = bin2bcd(alrm->time.tm_mday); + alrm_data[4] = bin2bcd(alrm->time.tm_mon + 1); + alrm_data[5] = bin2bcd(alrm->time.tm_year - 100); + + ret = regmap_bulk_write(rk808->regmap, RK808_ALARM_SECONDS_REG, + alrm_data, NUM_ALARM_REGS); + if (ret) { + dev_err(dev, "Failed to bulk write: %d\n", ret); + return ret; + } + if (alrm->enabled) { + ret = rk808_rtc_start_alarm(rk808_rtc); + if (ret) { + dev_err(dev, "Failed to start alarm: %d\n", ret); + return ret; + } + } + return 0; +} + +static int rk808_rtc_alarm_irq_enable(struct device *dev, + unsigned int enabled) +{ + struct rk808_rtc *rk808_rtc = dev_get_drvdata(dev); + + if (enabled) + return rk808_rtc_start_alarm(rk808_rtc); + + return rk808_rtc_stop_alarm(rk808_rtc); +} + +/* + * We will just handle setting the frequency and make use the framework for + * reading the periodic interupts. + * + * @freq: Current periodic IRQ freq: + * bit 0: every second + * bit 1: every minute + * bit 2: every hour + * bit 3: every day + */ +static irqreturn_t rk808_alarm_irq(int irq, void *data) +{ + struct rk808_rtc *rk808_rtc = data; + struct rk808 *rk808 = rk808_rtc->rk808; + struct i2c_client *client = rk808->i2c; + int ret; + + ret = regmap_write(rk808->regmap, RK808_RTC_STATUS_REG, + RTC_STATUS_MASK); + if (ret) { + dev_err(&client->dev, + "%s:Failed to update RTC status: %d\n", __func__, ret); + return ret; + } + + rtc_update_irq(rk808_rtc->rtc, 1, RTC_IRQF | RTC_AF); + dev_dbg(&client->dev, + "%s:irq=%d\n", __func__, irq); + return IRQ_HANDLED; +} + +static const struct rtc_class_ops rk808_rtc_ops = { + .read_time = rk808_rtc_readtime, + .set_time = rk808_rtc_set_time, + .read_alarm = rk808_rtc_readalarm, + .set_alarm = rk808_rtc_setalarm, + .alarm_irq_enable = rk808_rtc_alarm_irq_enable, +}; + +#ifdef CONFIG_PM_SLEEP +/* Turn off the alarm if it should not be a wake source. */ +static int rk808_rtc_suspend(struct device *dev) +{ + struct platform_device *pdev = to_platform_device(dev); + struct rk808_rtc *rk808_rtc = dev_get_drvdata(&pdev->dev); + + if (device_may_wakeup(dev)) + enable_irq_wake(rk808_rtc->irq); + + return 0; +} + +/* Enable the alarm if it should be enabled (in case it was disabled to + * prevent use as a wake source). + */ +static int rk808_rtc_resume(struct device *dev) +{ + struct platform_device *pdev = to_platform_device(dev); + struct rk808_rtc *rk808_rtc = dev_get_drvdata(&pdev->dev); + + if (device_may_wakeup(dev)) + disable_irq_wake(rk808_rtc->irq); + + return 0; +} +#endif + +static SIMPLE_DEV_PM_OPS(rk808_rtc_pm_ops, + rk808_rtc_suspend, rk808_rtc_resume); + +/* 2014.1.1 12:00:00 Saturday */ +struct rtc_time tm_def = { + .tm_wday = 6, + .tm_year = 114, + .tm_mon = 0, + .tm_mday = 1, + .tm_hour = 12, + .tm_min = 0, + .tm_sec = 0, +}; + +static int rk808_rtc_probe(struct platform_device *pdev) +{ + struct rk808 *rk808 = dev_get_drvdata(pdev->dev.parent); + struct rk808_rtc *rk808_rtc; + struct rtc_time tm; + int ret; + + rk808_rtc = devm_kzalloc(&pdev->dev, sizeof(*rk808_rtc), GFP_KERNEL); + if (rk808_rtc == NULL) + return -ENOMEM; + + platform_set_drvdata(pdev, rk808_rtc); + rk808_rtc->rk808 = rk808; + + /* start rtc running by default, and use shadowed timer. */ + ret = regmap_update_bits(rk808->regmap, RK808_RTC_CTRL_REG, + BIT_RTC_CTRL_REG_STOP_RTC_M | + BIT_RTC_CTRL_REG_RTC_READSEL_M, + BIT_RTC_CTRL_REG_RTC_READSEL_M); + if (ret) { + dev_err(&pdev->dev, + "Failed to update RTC control: %d\n", ret); + return ret; + } + + ret = regmap_write(rk808->regmap, RK808_RTC_STATUS_REG, + RTC_STATUS_MASK); + if (ret) { + dev_err(&pdev->dev, + "Failed to write RTC status: %d\n", ret); + return ret; + } + + /* set init time */ + ret = rk808_rtc_readtime(&pdev->dev, &tm); + if (ret) { + dev_err(&pdev->dev, "Failed to read RTC time\n"); + return ret; + } + ret = rtc_valid_tm(&tm); + if (ret) { + dev_warn(&pdev->dev, "invalid date/time and init time\n"); + rk808_rtc_set_time(&pdev->dev, &tm_def); + } + + device_init_wakeup(&pdev->dev, 1); + + rk808_rtc->rtc = devm_rtc_device_register(&pdev->dev, "rk808-rtc", + &rk808_rtc_ops, THIS_MODULE); + if (IS_ERR(rk808_rtc->rtc)) { + ret = PTR_ERR(rk808_rtc->rtc); + return ret; + } + + rk808_rtc->irq = platform_get_irq(pdev, 0); + if (rk808_rtc->irq < 0) { + dev_err(&pdev->dev, "Wake up is not possible as irq = %d\n", + rk808_rtc->irq); + return rk808_rtc->irq; + } + + /* request alarm irq of rk808 */ + ret = devm_request_threaded_irq(&pdev->dev, rk808_rtc->irq, NULL, + rk808_alarm_irq, 0, + "RTC alarm", rk808_rtc); + if (ret) { + dev_err(&pdev->dev, "Failed to request alarm IRQ %d: %d\n", + rk808_rtc->irq, ret); + } + + return ret; +} + +static struct platform_driver rk808_rtc_driver = { + .probe = rk808_rtc_probe, + .driver = { + .name = "rk808-rtc", + .pm = &rk808_rtc_pm_ops, + }, +}; + +module_platform_driver(rk808_rtc_driver); + +MODULE_DESCRIPTION("RTC driver for the rk808 series PMICs"); +MODULE_AUTHOR("Chris Zhong <zyw@rock-chips.com>"); +MODULE_AUTHOR("Zhang Qing <zhanqging@rock-chips.com>"); +MODULE_LICENSE("GPL"); +MODULE_ALIAS("platform:rk808-rtc"); -- 1.7.9.5 ^ permalink raw reply related [flat|nested] 15+ messages in thread
[parent not found: <1409793159-2573-2-git-send-email-zyw-TNX95d0MmH7DzftRWevZcw@public.gmane.org>]
* Re: [PATCH v9 1/3] RTC: RK808: add RTC driver for RK808 [not found] ` <1409793159-2573-2-git-send-email-zyw-TNX95d0MmH7DzftRWevZcw@public.gmane.org> @ 2014-09-04 4:18 ` Doug Anderson [not found] ` <CAD=FV=U8XK945vJTnsY8FG3+WasOrMnoCYOF+b360HTyXVccfw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 0 siblings, 1 reply; 15+ messages in thread From: Doug Anderson @ 2014-09-04 4:18 UTC (permalink / raw) To: Chris Zhong Cc: Heiko Stübner, Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala, Samuel Ortiz, Lee Jones, Liam Girdwood, Alessandro Zummo, Mike Turquette, Andrew Morton, broonie-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org, devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, rtc-linux-/JYPxA39Uh5TLH3MbocFFw, Grant Likely, Lin Huang, Tao Huang, Eddie Cai, zhangqing, xxx Chris, On Wed, Sep 3, 2014 at 6:12 PM, Chris Zhong <zyw-TNX95d0MmH7DzftRWevZcw@public.gmane.org> wrote: > Adding RTC driver for supporting RTC device present inside RK808 PMIC. > > Signed-off-by: Chris Zhong <zyw-TNX95d0MmH7DzftRWevZcw@public.gmane.org> > Signed-off-by: Zhang Qing <zhangqing-TNX95d0MmH7DzftRWevZcw@public.gmane.org> > > Tested-by: Heiko Stuebner <heiko-4mtYJXux2i+zQB+pC5nmwQ@public.gmane.org> Reviewed-by: Doug Anderson <dianders-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org> Tested-by: Doug Anderson <dianders-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org> > + rk808_rtc->irq = platform_get_irq(pdev, 0); > + if (rk808_rtc->irq < 0) { > + dev_err(&pdev->dev, "Wake up is not possible as irq = %d\n", > + rk808_rtc->irq); Technically you shouldn't print the error if it's -EPROBE_DEFER. ...but I think that's really unlikely here (I can't imagine any real cases where the interrupt parent for RK808 would actually be deferred) so I won't push it. -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 15+ messages in thread
[parent not found: <CAD=FV=U8XK945vJTnsY8FG3+WasOrMnoCYOF+b360HTyXVccfw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>]
* Re: [PATCH v9 1/3] RTC: RK808: add RTC driver for RK808 [not found] ` <CAD=FV=U8XK945vJTnsY8FG3+WasOrMnoCYOF+b360HTyXVccfw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> @ 2014-09-04 17:33 ` Dmitry Torokhov 2014-09-04 19:04 ` Doug Anderson 0 siblings, 1 reply; 15+ messages in thread From: Dmitry Torokhov @ 2014-09-04 17:33 UTC (permalink / raw) To: Doug Anderson Cc: Chris Zhong, Heiko Stübner, Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala, Samuel Ortiz, Lee Jones, Liam Girdwood, Alessandro Zummo, Mike Turquette, Andrew Morton, broonie-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org, devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, rtc-linux-/JYPxA39Uh5TLH3MbocFFw, Grant Likely, Lin Huang, Tao Huang, Eddie Cai, zhangqing On Wed, Sep 03, 2014 at 09:18:42PM -0700, Doug Anderson wrote: > Chris, > > On Wed, Sep 3, 2014 at 6:12 PM, Chris Zhong <zyw-TNX95d0MmH7DzftRWevZcw@public.gmane.org> wrote: > > Adding RTC driver for supporting RTC device present inside RK808 PMIC. > > > > Signed-off-by: Chris Zhong <zyw-TNX95d0MmH7DzftRWevZcw@public.gmane.org> > > Signed-off-by: Zhang Qing <zhangqing-TNX95d0MmH7DzftRWevZcw@public.gmane.org> > > > > Tested-by: Heiko Stuebner <heiko-4mtYJXux2i+zQB+pC5nmwQ@public.gmane.org> > > Reviewed-by: Doug Anderson <dianders-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org> > Tested-by: Doug Anderson <dianders-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org> > > > > + rk808_rtc->irq = platform_get_irq(pdev, 0); > > + if (rk808_rtc->irq < 0) { > > + dev_err(&pdev->dev, "Wake up is not possible as irq = %d\n", > > + rk808_rtc->irq); > > Technically you shouldn't print the error if it's -EPROBE_DEFER. > ...but I think that's really unlikely here (I can't imagine any real > cases where the interrupt parent for RK808 would actually be deferred) > so I won't push it. Doug, platform_get_irq() simply iterates through IRQ resources assigned to the device, which are populated at platform device creation time. The only error it returns ever is -ENXIO, so we are fine here. Thanks. -- Dmitry -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH v9 1/3] RTC: RK808: add RTC driver for RK808 2014-09-04 17:33 ` Dmitry Torokhov @ 2014-09-04 19:04 ` Doug Anderson [not found] ` <CAD=FV=VDG=PteMYCkju1GGpK1CNLZeY8precPJkgxYY4udD-eg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 0 siblings, 1 reply; 15+ messages in thread From: Doug Anderson @ 2014-09-04 19:04 UTC (permalink / raw) To: Dmitry Torokhov Cc: Chris Zhong, Heiko Stübner, Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala, Samuel Ortiz, Lee Jones, Liam Girdwood, Alessandro Zummo, Mike Turquette, Andrew Morton, broonie@kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, rtc-linux, Grant Likely, Lin Huang, Tao Huang, Eddie Cai, zhangqing Dmitry, On Thu, Sep 4, 2014 at 10:33 AM, Dmitry Torokhov <dmitry.torokhov@gmail.com> wrote: > On Wed, Sep 03, 2014 at 09:18:42PM -0700, Doug Anderson wrote: >> Chris, >> >> On Wed, Sep 3, 2014 at 6:12 PM, Chris Zhong <zyw@rock-chips.com> wrote: >> > Adding RTC driver for supporting RTC device present inside RK808 PMIC. >> > >> > Signed-off-by: Chris Zhong <zyw@rock-chips.com> >> > Signed-off-by: Zhang Qing <zhangqing@rock-chips.com> >> > >> > Tested-by: Heiko Stuebner <heiko@sntech.de> >> >> Reviewed-by: Doug Anderson <dianders@chromium.org> >> Tested-by: Doug Anderson <dianders@chromium.org> >> >> >> > + rk808_rtc->irq = platform_get_irq(pdev, 0); >> > + if (rk808_rtc->irq < 0) { >> > + dev_err(&pdev->dev, "Wake up is not possible as irq = %d\n", >> > + rk808_rtc->irq); >> >> Technically you shouldn't print the error if it's -EPROBE_DEFER. >> ...but I think that's really unlikely here (I can't imagine any real >> cases where the interrupt parent for RK808 would actually be deferred) >> so I won't push it. > > Doug, platform_get_irq() simply iterates through IRQ resources assigned to the > device, which are populated at platform device creation time. The only error it > returns ever is -ENXIO, so we are fine here. I think maybe you're looking at older source code? The source code I have for mainline Linux specifically includes code handling EPROBE_DEFER in platform_get_irq(). -Doug ^ permalink raw reply [flat|nested] 15+ messages in thread
[parent not found: <CAD=FV=VDG=PteMYCkju1GGpK1CNLZeY8precPJkgxYY4udD-eg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>]
* Re: [PATCH v9 1/3] RTC: RK808: add RTC driver for RK808 [not found] ` <CAD=FV=VDG=PteMYCkju1GGpK1CNLZeY8precPJkgxYY4udD-eg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> @ 2014-09-04 20:08 ` Dmitry Torokhov 0 siblings, 0 replies; 15+ messages in thread From: Dmitry Torokhov @ 2014-09-04 20:08 UTC (permalink / raw) To: Doug Anderson Cc: Chris Zhong, Heiko Stübner, Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala, Samuel Ortiz, Lee Jones, Liam Girdwood, Alessandro Zummo, Mike Turquette, Andrew Morton, broonie-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org, devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, rtc-linux-/JYPxA39Uh5TLH3MbocFFw, Grant Likely, Lin Huang, Tao Huang, Eddie Cai, zhangqing On Thu, Sep 04, 2014 at 12:04:11PM -0700, Doug Anderson wrote: > Dmitry, > > On Thu, Sep 4, 2014 at 10:33 AM, Dmitry Torokhov > <dmitry.torokhov-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > On Wed, Sep 03, 2014 at 09:18:42PM -0700, Doug Anderson wrote: > >> Chris, > >> > >> On Wed, Sep 3, 2014 at 6:12 PM, Chris Zhong <zyw-TNX95d0MmH7DzftRWevZcw@public.gmane.org> wrote: > >> > Adding RTC driver for supporting RTC device present inside RK808 PMIC. > >> > > >> > Signed-off-by: Chris Zhong <zyw-TNX95d0MmH7DzftRWevZcw@public.gmane.org> > >> > Signed-off-by: Zhang Qing <zhangqing-TNX95d0MmH7DzftRWevZcw@public.gmane.org> > >> > > >> > Tested-by: Heiko Stuebner <heiko-4mtYJXux2i+zQB+pC5nmwQ@public.gmane.org> > >> > >> Reviewed-by: Doug Anderson <dianders-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org> > >> Tested-by: Doug Anderson <dianders-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org> > >> > >> > >> > + rk808_rtc->irq = platform_get_irq(pdev, 0); > >> > + if (rk808_rtc->irq < 0) { > >> > + dev_err(&pdev->dev, "Wake up is not possible as irq = %d\n", > >> > + rk808_rtc->irq); > >> > >> Technically you shouldn't print the error if it's -EPROBE_DEFER. > >> ...but I think that's really unlikely here (I can't imagine any real > >> cases where the interrupt parent for RK808 would actually be deferred) > >> so I won't push it. > > > > Doug, platform_get_irq() simply iterates through IRQ resources assigned to the > > device, which are populated at platform device creation time. The only error it > > returns ever is -ENXIO, so we are fine here. > > I think maybe you're looking at older source code? The source code I > have for mainline Linux specifically includes code handling > EPROBE_DEFER in platform_get_irq(). Ah, indeed. That -EPROBE_DEFER monstrosity keeps spreading :( -- Dmitry -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH v9 2/3] clk: RK808: Add clkout driver for RK808 2014-09-04 1:12 [PATCH v9 0/3] Add rockchip RK808 pmic driver Chris Zhong 2014-09-04 1:12 ` [PATCH v9 1/3] RTC: RK808: add RTC driver for RK808 Chris Zhong @ 2014-09-04 1:12 ` Chris Zhong [not found] ` <1409793159-2573-3-git-send-email-zyw-TNX95d0MmH7DzftRWevZcw@public.gmane.org> 2014-09-04 1:12 ` [PATCH v9 3/3] regulator: RK808: Remove pdata from the regulator Chris Zhong [not found] ` <1409793159-2573-1-git-send-email-zyw-TNX95d0MmH7DzftRWevZcw@public.gmane.org> 3 siblings, 1 reply; 15+ messages in thread From: Chris Zhong @ 2014-09-04 1:12 UTC (permalink / raw) To: dianders, heiko Cc: robh+dt, pawel.moll, mark.rutland, ijc+devicetree, galak, sameo, lee.jones, lgirdwood, a.zummo, mturquette, akpm, broonie, devicetree, linux-kernel, rtc-linux, grant.likely, hl, huangtao, cf, zhangqing, xxx, olof, sonnyrao, dtor, javier.martinez, kever.yang, Chris Zhong Signed-off-by: Chris Zhong <zyw@rock-chips.com> Reviewed-by: Doug Anderson <dianders@chromium.org> Tested-by: Doug Anderson <dianders@chromium.org> Tested-by: Heiko Stuebner <heiko@sntech.de> --- Changes in v9: None Changes in v8: Adviced by Mike -rename "control" to "enable" -define RK808_NR_OUTPUT 2 Changes in v7: Adviced by doug -fix coding style problems Changes in v6: Adviced by doug - use correct argument call of_clk_add_provider in probe Changes in v5: Adviced by doug - add some error checking in probe - move "rockchip,rk808.h" into the patch about dt-bindings Changes in v4: Adviced by doug - add "clock-output-names" propertiey - add a header file "rockchip,rk808.h" Changes in v3: - fix compile err Changes in v2: Adviced by javier.martinez - separated from rtc-rk808.c drivers/clk/Kconfig | 9 +++ drivers/clk/Makefile | 1 + drivers/clk/clk-rk808.c | 164 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 174 insertions(+) create mode 100644 drivers/clk/clk-rk808.c diff --git a/drivers/clk/Kconfig b/drivers/clk/Kconfig index cfd3af7..84e0590 100644 --- a/drivers/clk/Kconfig +++ b/drivers/clk/Kconfig @@ -38,6 +38,15 @@ config COMMON_CLK_MAX77686 ---help--- This driver supports Maxim 77686 crystal oscillator clock. +config COMMON_CLK_RK808 + tristate "Clock driver for RK808" + depends on MFD_RK808 + ---help--- + This driver supports RK808 crystal oscillator clock. These + multi-function devices have two fixed-rate oscillators, + clocked at 32KHz each. Clkout1 is always on, Clkout2 can off + by control register. + config COMMON_CLK_SI5351 tristate "Clock driver for SiLabs 5351A/B/C" depends on I2C diff --git a/drivers/clk/Makefile b/drivers/clk/Makefile index f537a0b..99f53d5 100644 --- a/drivers/clk/Makefile +++ b/drivers/clk/Makefile @@ -28,6 +28,7 @@ obj-$(CONFIG_ARCH_NOMADIK) += clk-nomadik.o obj-$(CONFIG_ARCH_NSPIRE) += clk-nspire.o obj-$(CONFIG_COMMON_CLK_PALMAS) += clk-palmas.o obj-$(CONFIG_CLK_PPC_CORENET) += clk-ppc-corenet.o +obj-$(CONFIG_COMMON_CLK_RK808) += clk-rk808.o obj-$(CONFIG_COMMON_CLK_S2MPS11) += clk-s2mps11.o obj-$(CONFIG_COMMON_CLK_SI5351) += clk-si5351.o obj-$(CONFIG_COMMON_CLK_SI570) += clk-si570.o diff --git a/drivers/clk/clk-rk808.c b/drivers/clk/clk-rk808.c new file mode 100644 index 0000000..8981346 --- /dev/null +++ b/drivers/clk/clk-rk808.c @@ -0,0 +1,164 @@ +/* + * Clkout driver for Rockchip RK808 + * + * Copyright (c) 2014, Fuzhou Rockchip Electronics Co., Ltd + * + * Author:Chris Zhong <zyw@rock-chips.com> + * + * This program is free software; you can redistribute it and/or modify it + * under the terms and conditions of the GNU General Public License, + * version 2, as published by the Free Software Foundation. + * + * This program is distributed in the hope it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + */ + +#include <linux/clk.h> +#include <linux/clk-provider.h> +#include <linux/module.h> +#include <linux/slab.h> +#include <linux/platform_device.h> +#include <linux/mfd/rk808.h> +#include <linux/i2c.h> + +#define RK808_NR_OUTPUT 2 + +struct rk808_clkout { + struct rk808 *rk808; + struct clk_onecell_data clk_data; + struct clk_hw clkout1_hw; + struct clk_hw clkout2_hw; +}; + +static unsigned long rk808_clkout_recalc_rate(struct clk_hw *hw, + unsigned long parent_rate) +{ + return 32768; +} + +static int rk808_clkout1_is_prepared(struct clk_hw *hw) +{ + return 1; +} + +static int rk808_clkout2_enable(struct clk_hw *hw, bool enable) +{ + struct rk808_clkout *rk808_clkout = container_of(hw, + struct rk808_clkout, + clkout2_hw); + struct rk808 *rk808 = rk808_clkout->rk808; + + return regmap_update_bits(rk808->regmap, RK808_CLK32OUT_REG, + CLK32KOUT2_EN, enable ? CLK32KOUT2_EN : 0); +} + +static int rk808_clkout2_prepare(struct clk_hw *hw) +{ + return rk808_clkout2_enable(hw, true); +} + +static void rk808_clkout2_unprepare(struct clk_hw *hw) +{ + rk808_clkout2_enable(hw, false); +} + +static int rk808_clkout2_is_prepared(struct clk_hw *hw) +{ + struct rk808_clkout *rk808_clkout = container_of(hw, + struct rk808_clkout, + clkout2_hw); + struct rk808 *rk808 = rk808_clkout->rk808; + uint32_t val; + + int ret = regmap_read(rk808->regmap, RK808_CLK32OUT_REG, &val); + + if (ret < 0) + return ret; + + return (val & CLK32KOUT2_EN) ? 1 : 0; +} + +static const struct clk_ops rk808_clkout1_ops = { + .is_prepared = rk808_clkout1_is_prepared, + .recalc_rate = rk808_clkout_recalc_rate, +}; + +static const struct clk_ops rk808_clkout2_ops = { + .prepare = rk808_clkout2_prepare, + .unprepare = rk808_clkout2_unprepare, + .is_prepared = rk808_clkout2_is_prepared, + .recalc_rate = rk808_clkout_recalc_rate, +}; + +static int rk808_clkout_probe(struct platform_device *pdev) +{ + struct rk808 *rk808 = dev_get_drvdata(pdev->dev.parent); + struct i2c_client *client = rk808->i2c; + struct device_node *node = client->dev.of_node; + struct clk_init_data init = {}; + struct clk **clk_table; + struct rk808_clkout *rk808_clkout; + + rk808_clkout = devm_kzalloc(&client->dev, + sizeof(*rk808_clkout), GFP_KERNEL); + if (!rk808_clkout) + return -ENOMEM; + + rk808_clkout->rk808 = rk808; + + clk_table = devm_kcalloc(&client->dev, RK808_NR_OUTPUT, + sizeof(struct clk *), GFP_KERNEL); + if (!clk_table) + return -ENOMEM; + + init.flags = CLK_IS_ROOT; + init.parent_names = NULL; + init.num_parents = 0; + init.name = "rk808-clkout1"; + init.ops = &rk808_clkout1_ops; + rk808_clkout->clkout1_hw.init = &init; + + /* optional override of the clockname */ + of_property_read_string_index(node, "clock-output-names", + 0, &init.name); + + clk_table[0] = devm_clk_register(&client->dev, + &rk808_clkout->clkout1_hw); + if (IS_ERR(clk_table[0])) + return PTR_ERR(clk_table[0]); + + init.name = "rk808-clkout2"; + init.ops = &rk808_clkout2_ops; + rk808_clkout->clkout2_hw.init = &init; + + /* optional override of the clockname */ + of_property_read_string_index(node, "clock-output-names", + 1, &init.name); + + clk_table[1] = devm_clk_register(&client->dev, + &rk808_clkout->clkout2_hw); + if (IS_ERR(clk_table[1])) + return PTR_ERR(clk_table[1]); + + rk808_clkout->clk_data.clks = clk_table; + rk808_clkout->clk_data.clk_num = RK808_NR_OUTPUT; + + return of_clk_add_provider(node, of_clk_src_onecell_get, + &rk808_clkout->clk_data); +} + +static struct platform_driver rk808_clkout_driver = { + .probe = rk808_clkout_probe, + .driver = { + .name = "rk808-clkout", + }, +}; + +module_platform_driver(rk808_clkout_driver); + +MODULE_DESCRIPTION("Clkout driver for the rk808 series PMICs"); +MODULE_AUTHOR("Chris Zhong <zyw@rock-chips.com>"); +MODULE_LICENSE("GPL"); +MODULE_ALIAS("platform:rk808-clkout"); -- 1.7.9.5 ^ permalink raw reply related [flat|nested] 15+ messages in thread
[parent not found: <1409793159-2573-3-git-send-email-zyw-TNX95d0MmH7DzftRWevZcw@public.gmane.org>]
* Re: [PATCH v9 2/3] clk: RK808: Add clkout driver for RK808 [not found] ` <1409793159-2573-3-git-send-email-zyw-TNX95d0MmH7DzftRWevZcw@public.gmane.org> @ 2014-09-04 17:40 ` Dmitry Torokhov [not found] ` <20140904174024.GD10224-WlK9ik9hQGAhIp7JRqBPierSzoNAToWh@public.gmane.org> 2014-09-05 1:35 ` Mike Turquette 1 sibling, 1 reply; 15+ messages in thread From: Dmitry Torokhov @ 2014-09-04 17:40 UTC (permalink / raw) To: Chris Zhong Cc: dianders-F7+t8E8rja9g9hUCZPvPmw, heiko-4mtYJXux2i+zQB+pC5nmwQ, robh+dt-DgEjT+Ai2ygdnm+yROfE0A, pawel.moll-5wv7dgnIgG8, mark.rutland-5wv7dgnIgG8, ijc+devicetree-KcIKpvwj1kUDXYZnReoRVg, galak-sgV2jX0FEOL9JmXXK+q4OQ, sameo-VuQAYsv1563Yd54FQh9/CA, lee.jones-QSEj5FYQhm4dnm+yROfE0A, lgirdwood-Re5JQEeQqe8AvxtiuMwx3w, a.zummo-BfzFCNDTiLLj+vYz1yj4TQ, mturquette-QSEj5FYQhm4dnm+yROfE0A, akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b, broonie-DgEjT+Ai2ygdnm+yROfE0A, devicetree-u79uwXL29TY76Z2rM5mHXA, linux-kernel-u79uwXL29TY76Z2rM5mHXA, rtc-linux-/JYPxA39Uh5TLH3MbocFFw, grant.likely-QSEj5FYQhm4dnm+yROfE0A, hl-TNX95d0MmH7DzftRWevZcw, huangtao-TNX95d0MmH7DzftRWevZcw, cf-TNX95d0MmH7DzftRWevZcw, zhangqing-TNX95d0MmH7DzftRWevZcw, xxx-TNX95d0MmH7DzftRWevZcw, olof-nZhT3qVonbNeoWH0uzbU5w, sonnyrao-F7+t8E8rja9g9hUCZPvPmw, javier.martinez-ZGY8ohtN/8pPYcu2f3hruQ, kever.yang-TNX95d0MmH7DzftRWevZcw Hi Chris, On Thu, Sep 04, 2014 at 09:12:38AM +0800, Chris Zhong wrote: > + rk808_clkout->clk_data.clks = clk_table; > + rk808_clkout->clk_data.clk_num = RK808_NR_OUTPUT; > + > + return of_clk_add_provider(node, of_clk_src_onecell_get, > + &rk808_clkout->clk_data); > +} > + > +static struct platform_driver rk808_clkout_driver = { > + .probe = rk808_clkout_probe, > + .driver = { > + .name = "rk808-clkout", > + }, > +}; Shouldn't there also be: static int rk808_clkout_probe(struct platform_device *pdev) { of_clk_del_provider(pdev->dev.of_node); /* The rest of resources are managed ones */ return 0; } Thanks. -- Dmitry -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 15+ messages in thread
[parent not found: <20140904174024.GD10224-WlK9ik9hQGAhIp7JRqBPierSzoNAToWh@public.gmane.org>]
* Re: [PATCH v9 2/3] clk: RK808: Add clkout driver for RK808 [not found] ` <20140904174024.GD10224-WlK9ik9hQGAhIp7JRqBPierSzoNAToWh@public.gmane.org> @ 2014-09-04 18:02 ` Heiko Stübner 2014-09-04 18:34 ` Dmitry Torokhov 0 siblings, 1 reply; 15+ messages in thread From: Heiko Stübner @ 2014-09-04 18:02 UTC (permalink / raw) To: Dmitry Torokhov Cc: Chris Zhong, dianders-F7+t8E8rja9g9hUCZPvPmw, robh+dt-DgEjT+Ai2ygdnm+yROfE0A, pawel.moll-5wv7dgnIgG8, mark.rutland-5wv7dgnIgG8, ijc+devicetree-KcIKpvwj1kUDXYZnReoRVg, galak-sgV2jX0FEOL9JmXXK+q4OQ, sameo-VuQAYsv1563Yd54FQh9/CA, lee.jones-QSEj5FYQhm4dnm+yROfE0A, lgirdwood-Re5JQEeQqe8AvxtiuMwx3w, a.zummo-BfzFCNDTiLLj+vYz1yj4TQ, mturquette-QSEj5FYQhm4dnm+yROfE0A, akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b, broonie-DgEjT+Ai2ygdnm+yROfE0A, devicetree-u79uwXL29TY76Z2rM5mHXA, linux-kernel-u79uwXL29TY76Z2rM5mHXA, rtc-linux-/JYPxA39Uh5TLH3MbocFFw, grant.likely-QSEj5FYQhm4dnm+yROfE0A, hl-TNX95d0MmH7DzftRWevZcw, huangtao-TNX95d0MmH7DzftRWevZcw, cf-TNX95d0MmH7DzftRWevZcw, zhangqing-TNX95d0MmH7DzftRWevZcw, xxx-TNX95d0MmH7DzftRWevZcw, olof-nZhT3qVonbNeoWH0uzbU5w, sonnyrao-F7+t8E8rja9g9hUCZPvPmw, javier.martinez-ZGY8ohtN/8pPYcu2f3hruQ, kever.yang-TNX95d0MmH7DzftRWevZcw Am Donnerstag, 4. September 2014, 10:40:24 schrieb Dmitry Torokhov: > Hi Chris, > > On Thu, Sep 04, 2014 at 09:12:38AM +0800, Chris Zhong wrote: > > + rk808_clkout->clk_data.clks = clk_table; > > + rk808_clkout->clk_data.clk_num = RK808_NR_OUTPUT; > > + > > + return of_clk_add_provider(node, of_clk_src_onecell_get, > > + &rk808_clkout->clk_data); > > +} > > + > > +static struct platform_driver rk808_clkout_driver = { > > + .probe = rk808_clkout_probe, > > + .driver = { > > + .name = "rk808-clkout", > > + }, > > +}; > > Shouldn't there also be: > > static int rk808_clkout_probe(struct platform_device *pdev) ^^ remove Just to prevent confusion. And you're right there of course. Heiko > { > of_clk_del_provider(pdev->dev.of_node); > > /* The rest of resources are managed ones */ > > return 0; > } > > Thanks. -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH v9 2/3] clk: RK808: Add clkout driver for RK808 2014-09-04 18:02 ` Heiko Stübner @ 2014-09-04 18:34 ` Dmitry Torokhov 0 siblings, 0 replies; 15+ messages in thread From: Dmitry Torokhov @ 2014-09-04 18:34 UTC (permalink / raw) To: Heiko Stübner Cc: Chris Zhong, dianders-F7+t8E8rja9g9hUCZPvPmw, robh+dt-DgEjT+Ai2ygdnm+yROfE0A, pawel.moll-5wv7dgnIgG8, mark.rutland-5wv7dgnIgG8, ijc+devicetree-KcIKpvwj1kUDXYZnReoRVg, galak-sgV2jX0FEOL9JmXXK+q4OQ, sameo-VuQAYsv1563Yd54FQh9/CA, lee.jones-QSEj5FYQhm4dnm+yROfE0A, lgirdwood-Re5JQEeQqe8AvxtiuMwx3w, a.zummo-BfzFCNDTiLLj+vYz1yj4TQ, mturquette-QSEj5FYQhm4dnm+yROfE0A, akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b, broonie-DgEjT+Ai2ygdnm+yROfE0A, devicetree-u79uwXL29TY76Z2rM5mHXA, linux-kernel-u79uwXL29TY76Z2rM5mHXA, rtc-linux-/JYPxA39Uh5TLH3MbocFFw, grant.likely-QSEj5FYQhm4dnm+yROfE0A, hl-TNX95d0MmH7DzftRWevZcw, huangtao-TNX95d0MmH7DzftRWevZcw, cf-TNX95d0MmH7DzftRWevZcw, zhangqing-TNX95d0MmH7DzftRWevZcw, xxx-TNX95d0MmH7DzftRWevZcw, olof-nZhT3qVonbNeoWH0uzbU5w, sonnyrao-F7+t8E8rja9g9hUCZPvPmw, javier.martinez-ZGY8ohtN/8pPYcu2f3hruQ, kever.yang-TNX95d0MmH7DzftRWevZcw On Thu, Sep 04, 2014 at 08:02:56PM +0200, Heiko Stübner wrote: > Am Donnerstag, 4. September 2014, 10:40:24 schrieb Dmitry Torokhov: > > Hi Chris, > > > > On Thu, Sep 04, 2014 at 09:12:38AM +0800, Chris Zhong wrote: > > > + rk808_clkout->clk_data.clks = clk_table; > > > + rk808_clkout->clk_data.clk_num = RK808_NR_OUTPUT; > > > + > > > + return of_clk_add_provider(node, of_clk_src_onecell_get, > > > + &rk808_clkout->clk_data); > > > +} > > > + > > > +static struct platform_driver rk808_clkout_driver = { > > > + .probe = rk808_clkout_probe, > > > + .driver = { > > > + .name = "rk808-clkout", > > > + }, > > > +}; > > > > Shouldn't there also be: > > > > static int rk808_clkout_probe(struct platform_device *pdev) > ^^ remove > > Just to prevent confusion. And you're right there of course. Ah, yes, stupid cut-and-paste... -- Dmitry -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH v9 2/3] clk: RK808: Add clkout driver for RK808 [not found] ` <1409793159-2573-3-git-send-email-zyw-TNX95d0MmH7DzftRWevZcw@public.gmane.org> 2014-09-04 17:40 ` Dmitry Torokhov @ 2014-09-05 1:35 ` Mike Turquette 1 sibling, 0 replies; 15+ messages in thread From: Mike Turquette @ 2014-09-05 1:35 UTC (permalink / raw) To: dianders-F7+t8E8rja9g9hUCZPvPmw, heiko-4mtYJXux2i+zQB+pC5nmwQ Cc: robh+dt-DgEjT+Ai2ygdnm+yROfE0A, pawel.moll-5wv7dgnIgG8, mark.rutland-5wv7dgnIgG8, ijc+devicetree-KcIKpvwj1kUDXYZnReoRVg, galak-sgV2jX0FEOL9JmXXK+q4OQ, sameo-VuQAYsv1563Yd54FQh9/CA, lee.jones-QSEj5FYQhm4dnm+yROfE0A, lgirdwood-Re5JQEeQqe8AvxtiuMwx3w, a.zummo-BfzFCNDTiLLj+vYz1yj4TQ, akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b, broonie-DgEjT+Ai2ygdnm+yROfE0A, devicetree-u79uwXL29TY76Z2rM5mHXA, linux-kernel-u79uwXL29TY76Z2rM5mHXA, rtc-linux-/JYPxA39Uh5TLH3MbocFFw, grant.likely-QSEj5FYQhm4dnm+yROfE0A, hl-TNX95d0MmH7DzftRWevZcw, huangtao-TNX95d0MmH7DzftRWevZcw, cf-TNX95d0MmH7DzftRWevZcw, zhangqing-TNX95d0MmH7DzftRWevZcw, xxx-TNX95d0MmH7DzftRWevZcw, olof-nZhT3qVonbNeoWH0uzbU5w, sonnyrao-F7+t8E8rja9g9hUCZPvPmw, dtor-F7+t8E8rja9g9hUCZPvPmw, javier.martinez-ZGY8ohtN/8pPYcu2f3hruQ, kever.yang-TNX95d0MmH7DzftRWevZcw, Chris Zhong Quoting Chris Zhong (2014-09-03 18:12:38) > +static int rk808_clkout1_is_prepared(struct clk_hw *hw) > +{ > + return 1; > +} > + <snip> > +static const struct clk_ops rk808_clkout1_ops = { > + .is_prepared = rk808_clkout1_is_prepared, > + .recalc_rate = rk808_clkout_recalc_rate, > +}; Hi Chris, I do not see a need clkout1 to have a .is_prepared callback. You should be fine only having a .recalc_rate. Regards, Mike -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH v9 3/3] regulator: RK808: Remove pdata from the regulator 2014-09-04 1:12 [PATCH v9 0/3] Add rockchip RK808 pmic driver Chris Zhong 2014-09-04 1:12 ` [PATCH v9 1/3] RTC: RK808: add RTC driver for RK808 Chris Zhong 2014-09-04 1:12 ` [PATCH v9 2/3] clk: RK808: Add clkout " Chris Zhong @ 2014-09-04 1:12 ` Chris Zhong [not found] ` <1409793159-2573-4-git-send-email-zyw-TNX95d0MmH7DzftRWevZcw@public.gmane.org> [not found] ` <1409793159-2573-1-git-send-email-zyw-TNX95d0MmH7DzftRWevZcw@public.gmane.org> 3 siblings, 1 reply; 15+ messages in thread From: Chris Zhong @ 2014-09-04 1:12 UTC (permalink / raw) To: dianders, heiko Cc: robh+dt, pawel.moll, mark.rutland, ijc+devicetree, galak, sameo, lee.jones, lgirdwood, a.zummo, mturquette, akpm, broonie, devicetree, linux-kernel, rtc-linux, grant.likely, hl, huangtao, cf, zhangqing, xxx, olof, sonnyrao, dtor, javier.martinez, kever.yang, Chris Zhong Signed-off-by: Chris Zhong <zyw@rock-chips.com> Tested-by: Heiko Stuebner <heiko@sntech.de> --- Changes in v9: Adviced by Doug - add reg_np Changes in v8: Adviced by Doug - remove rk808_regulator_dts() function - remove the check about "client->dev.of_node" Changes in v7: - remove pdata struct from header file, add rk808_regulator struct Changes in v6: - remove the redundant code Changes in v5: - re-edit base on Mark's branch Changes in v4: - use &client->dev replace rk808->dev Changes in v3: None Changes in v2: Adviced by Mark Browm: - change of_find_node_by_name to find_child_by_name - use RK808_NUM_REGULATORS as the name of the constant - create a pdata when missing platform data - use the rk808_reg name to supply_regulator name - replace regulator_register with devm_regulator_register - some other problem with coding style drivers/regulator/rk808-regulator.c | 91 +++++++---------------------------- 1 file changed, 18 insertions(+), 73 deletions(-) diff --git a/drivers/regulator/rk808-regulator.c b/drivers/regulator/rk808-regulator.c index e372008..0d5afc4 100644 --- a/drivers/regulator/rk808-regulator.c +++ b/drivers/regulator/rk808-regulator.c @@ -3,8 +3,8 @@ * * Copyright (c) 2014, Fuzhou Rockchip Electronics Co., Ltd * - * Author: Chris Zhong <zyw@rock-chips.com> - * Author: Zhang Qing <zhangqing@rock-chips.com> + * Author: Chris Zhong<zyw@rock-chips.com> + * Author: Zhang Qing<zhanqging@rock-chips.com> * * This program is free software; you can redistribute it and/or modify it * under the terms and conditions of the GNU General Public License, @@ -14,24 +14,16 @@ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * more details. - * */ #include <linux/module.h> -#include <linux/init.h> #include <linux/i2c.h> -#include <linux/err.h> -#include <linux/platform_device.h> #include <linux/mfd/rk808.h> -#include <linux/of.h> #include <linux/of_device.h> #include <linux/regulator/driver.h> #include <linux/regulator/of_regulator.h> -#include <linux/regmap.h> -#include <linux/slab.h> -/* - * Field Definitions. - */ + +/* Field Definitions */ #define RK808_BUCK_VSEL_MASK 0x3f #define RK808_BUCK4_VSEL_MASK 0xf #define RK808_LDO_VSEL_MASK 0x1f @@ -50,10 +42,6 @@ static const int buck_contr_base_addr[] = { RK808_BUCK4_CONFIG_REG, }; -#define rk808_BUCK_SET_VOL_REG(x) (buck_set_vol_base_addr[x]) -#define rk808_BUCK_CONTR_REG(x) (buck_contr_base_addr[x]) -#define rk808_LDO_SET_VOL_REG(x) (ldo_set_vol_base_addr[x]) - static const int ldo_set_vol_base_addr[] = { RK808_LDO1_ON_VSEL_REG, RK808_LDO2_ON_VSEL_REG, @@ -65,9 +53,7 @@ static const int ldo_set_vol_base_addr[] = { RK808_LDO8_ON_VSEL_REG, }; -/* - * rk808 voltage number - */ +/* rk808 voltage number */ static const struct regulator_linear_range rk808_buck_voltage_ranges[] = { REGULATOR_LINEAR_RANGE(700000, 0, 63, 12500), }; @@ -308,77 +294,35 @@ static struct of_regulator_match rk808_reg_matches[] = { [RK808_ID_SWITCH2] = { .name = "SWITCH_REG2" }, }; -static int rk808_regulator_dts(struct i2c_client *client, - struct rk808_board *pdata) -{ - struct device_node *np, *reg_np; - int i, ret; - - np = client->dev.of_node; - if (!np) { - dev_err(&client->dev, "could not find pmic sub-node\n"); - return -ENXIO; - } - - reg_np = of_get_child_by_name(np, "regulators"); - if (!reg_np) - return -ENXIO; - - ret = of_regulator_match(&client->dev, reg_np, rk808_reg_matches, - RK808_NUM_REGULATORS); - if (ret < 0) { - dev_err(&client->dev, - "failed to parse regulator data: %d\n", ret); - return ret; - } - - for (i = 0; i < RK808_NUM_REGULATORS; i++) { - if (!rk808_reg_matches[i].init_data || - !rk808_reg_matches[i].of_node) - continue; - - pdata->rk808_init_data[i] = rk808_reg_matches[i].init_data; - pdata->of_node[i] = rk808_reg_matches[i].of_node; - } - - return 0; -} - static int rk808_regulator_probe(struct platform_device *pdev) { struct rk808 *rk808 = dev_get_drvdata(pdev->dev.parent); struct i2c_client *client = rk808->i2c; - struct rk808_board *pdata = dev_get_platdata(&client->dev); + struct device_node *reg_np; struct regulator_config config = {}; struct regulator_dev *rk808_rdev; - struct regulator_init_data *reg_data; - int i = 0; - int ret = 0; + int ret, i; - if (!pdata) { - pdata = devm_kzalloc(&pdev->dev, sizeof(*pdata), GFP_KERNEL); - if (!pdata) - return -ENOMEM; - } + reg_np = of_get_child_by_name(client->dev.of_node, "regulators"); + if (!reg_np) + return -ENXIO; - ret = rk808_regulator_dts(client, pdata); - if (ret) + ret = of_regulator_match(&client->dev, reg_np, rk808_reg_matches, + RK808_NUM_REGULATORS); + if (ret < 0) return ret; /* Instantiate the regulators */ for (i = 0; i < RK808_NUM_REGULATORS; i++) { - reg_data = pdata->rk808_init_data[i]; - if (!reg_data) + if (!rk808_reg_matches[i].init_data || + !rk808_reg_matches[i].of_node) continue; config.dev = &client->dev; config.driver_data = rk808; config.regmap = rk808->regmap; - - if (client->dev.of_node) - config.of_node = pdata->of_node[i]; - - config.init_data = reg_data; + config.of_node = rk808_reg_matches[i].of_node; + config.init_data = rk808_reg_matches[i].init_data; rk808_rdev = devm_regulator_register(&pdev->dev, &rk808_reg[i], &config); @@ -388,6 +332,7 @@ static int rk808_regulator_probe(struct platform_device *pdev) return PTR_ERR(rk808_rdev); } } + return 0; } -- 1.7.9.5 ^ permalink raw reply related [flat|nested] 15+ messages in thread
[parent not found: <1409793159-2573-4-git-send-email-zyw-TNX95d0MmH7DzftRWevZcw@public.gmane.org>]
* Re: [PATCH v9 3/3] regulator: RK808: Remove pdata from the regulator [not found] ` <1409793159-2573-4-git-send-email-zyw-TNX95d0MmH7DzftRWevZcw@public.gmane.org> @ 2014-09-04 4:21 ` Doug Anderson 2014-09-04 19:07 ` Doug Anderson 1 sibling, 0 replies; 15+ messages in thread From: Doug Anderson @ 2014-09-04 4:21 UTC (permalink / raw) To: Chris Zhong Cc: Heiko Stübner, Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala, Samuel Ortiz, Lee Jones, Liam Girdwood, Alessandro Zummo, Mike Turquette, Andrew Morton, broonie-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org, devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, rtc-linux-/JYPxA39Uh5TLH3MbocFFw, Grant Likely, Lin Huang, Tao Huang, Eddie Cai, zhangqing, xxx Chris, On Wed, Sep 3, 2014 at 6:12 PM, Chris Zhong <zyw-TNX95d0MmH7DzftRWevZcw@public.gmane.org> wrote: > Signed-off-by: Chris Zhong <zyw-TNX95d0MmH7DzftRWevZcw@public.gmane.org> > > Tested-by: Heiko Stuebner <heiko-4mtYJXux2i+zQB+pC5nmwQ@public.gmane.org> > --- > > Changes in v9: > Adviced by Doug > - add reg_np > > Changes in v8: > Adviced by Doug > - remove rk808_regulator_dts() function > - remove the check about "client->dev.of_node" > > Changes in v7: > - remove pdata struct from header file, add rk808_regulator struct > > Changes in v6: > - remove the redundant code > > Changes in v5: > - re-edit base on Mark's branch > > Changes in v4: > - use &client->dev replace rk808->dev > > Changes in v3: None > Changes in v2: > Adviced by Mark Browm: > - change of_find_node_by_name to find_child_by_name > - use RK808_NUM_REGULATORS as the name of the constant > - create a pdata when missing platform data > - use the rk808_reg name to supply_regulator name > - replace regulator_register with devm_regulator_register > - some other problem with coding style > > drivers/regulator/rk808-regulator.c | 91 +++++++---------------------------- > 1 file changed, 18 insertions(+), 73 deletions(-) Reviewed-by: Doug Anderson <dianders-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org> Tested-by: Doug Anderson <dianders-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org> -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH v9 3/3] regulator: RK808: Remove pdata from the regulator [not found] ` <1409793159-2573-4-git-send-email-zyw-TNX95d0MmH7DzftRWevZcw@public.gmane.org> 2014-09-04 4:21 ` Doug Anderson @ 2014-09-04 19:07 ` Doug Anderson 1 sibling, 0 replies; 15+ messages in thread From: Doug Anderson @ 2014-09-04 19:07 UTC (permalink / raw) To: Chris Zhong Cc: Heiko Stübner, Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala, Samuel Ortiz, Lee Jones, Liam Girdwood, Alessandro Zummo, Mike Turquette, Andrew Morton, broonie-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org, devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, rtc-linux-/JYPxA39Uh5TLH3MbocFFw, Grant Likely, Lin Huang, Tao Huang, Eddie Cai, zhangqing, xxx Hi, On Wed, Sep 3, 2014 at 6:12 PM, Chris Zhong <zyw-TNX95d0MmH7DzftRWevZcw@public.gmane.org> wrote: > - * Author: Chris Zhong <zyw-TNX95d0MmH7DzftRWevZcw@public.gmane.org> > - * Author: Zhang Qing <zhangqing-TNX95d0MmH7DzftRWevZcw@public.gmane.org> > + * Author: Chris Zhong<zyw-TNX95d0MmH7DzftRWevZcw@public.gmane.org> > + * Author: Zhang Qing<zhanqging-TNX95d0MmH7DzftRWevZcw@public.gmane.org> As Dmitry pointed out, you probably shouldn't have changed these lines--they were good like they were. -Doug -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 15+ messages in thread
[parent not found: <1409793159-2573-1-git-send-email-zyw-TNX95d0MmH7DzftRWevZcw@public.gmane.org>]
* Re: [PATCH v9 0/3] Add rockchip RK808 pmic driver [not found] ` <1409793159-2573-1-git-send-email-zyw-TNX95d0MmH7DzftRWevZcw@public.gmane.org> @ 2014-09-09 11:45 ` Heiko Stübner 0 siblings, 0 replies; 15+ messages in thread From: Heiko Stübner @ 2014-09-09 11:45 UTC (permalink / raw) To: Chris Zhong Cc: dianders-F7+t8E8rja9g9hUCZPvPmw, robh+dt-DgEjT+Ai2ygdnm+yROfE0A, pawel.moll-5wv7dgnIgG8, mark.rutland-5wv7dgnIgG8, ijc+devicetree-KcIKpvwj1kUDXYZnReoRVg, galak-sgV2jX0FEOL9JmXXK+q4OQ, sameo-VuQAYsv1563Yd54FQh9/CA, lee.jones-QSEj5FYQhm4dnm+yROfE0A, lgirdwood-Re5JQEeQqe8AvxtiuMwx3w, a.zummo-BfzFCNDTiLLj+vYz1yj4TQ, mturquette-QSEj5FYQhm4dnm+yROfE0A, akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b, broonie-DgEjT+Ai2ygdnm+yROfE0A, devicetree-u79uwXL29TY76Z2rM5mHXA, linux-kernel-u79uwXL29TY76Z2rM5mHXA, rtc-linux-/JYPxA39Uh5TLH3MbocFFw, grant.likely-QSEj5FYQhm4dnm+yROfE0A, hl-TNX95d0MmH7DzftRWevZcw, huangtao-TNX95d0MmH7DzftRWevZcw, cf-TNX95d0MmH7DzftRWevZcw, zhangqing-TNX95d0MmH7DzftRWevZcw, xxx-TNX95d0MmH7DzftRWevZcw, olof-nZhT3qVonbNeoWH0uzbU5w, sonnyrao-F7+t8E8rja9g9hUCZPvPmw, dtor-F7+t8E8rja9g9hUCZPvPmw, javier.martinez-ZGY8ohtN/8pPYcu2f3hruQ, kever.yang-TNX95d0MmH7DzftRWevZcw Hi Chris, Am Donnerstag, 4. September 2014, 09:12:36 schrieb Chris Zhong: > This is the initial version of the RK808 PMIC. This is a power management IC > for multimedia products. > > It provides regulators that are able to supply power to processor cores > and other components. The chip provides other modules including RTC, > Clockout > Chris Zhong (3): > RTC: RK808: add RTC driver for RK808 > clk: RK808: Add clkout driver for RK808 > regulator: RK808: Remove pdata from the regulator It looks like the rk808 driver that is currently in the regulator tree [0] is producing compile errors. After applying your regulator patch from this series it again compiles - and works. So could you try to fast track this please? If you're short on time you could also just fix the small comment you received for patch3 and send it alone without the first two. Heiko [0] https://git.kernel.org/cgit/linux/kernel/git/broonie/regulator.git/log/?h=topic/rk808 -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 15+ messages in thread
end of thread, other threads:[~2014-09-09 11:45 UTC | newest] Thread overview: 15+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2014-09-04 1:12 [PATCH v9 0/3] Add rockchip RK808 pmic driver Chris Zhong 2014-09-04 1:12 ` [PATCH v9 1/3] RTC: RK808: add RTC driver for RK808 Chris Zhong [not found] ` <1409793159-2573-2-git-send-email-zyw-TNX95d0MmH7DzftRWevZcw@public.gmane.org> 2014-09-04 4:18 ` Doug Anderson [not found] ` <CAD=FV=U8XK945vJTnsY8FG3+WasOrMnoCYOF+b360HTyXVccfw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 2014-09-04 17:33 ` Dmitry Torokhov 2014-09-04 19:04 ` Doug Anderson [not found] ` <CAD=FV=VDG=PteMYCkju1GGpK1CNLZeY8precPJkgxYY4udD-eg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 2014-09-04 20:08 ` Dmitry Torokhov 2014-09-04 1:12 ` [PATCH v9 2/3] clk: RK808: Add clkout " Chris Zhong [not found] ` <1409793159-2573-3-git-send-email-zyw-TNX95d0MmH7DzftRWevZcw@public.gmane.org> 2014-09-04 17:40 ` Dmitry Torokhov [not found] ` <20140904174024.GD10224-WlK9ik9hQGAhIp7JRqBPierSzoNAToWh@public.gmane.org> 2014-09-04 18:02 ` Heiko Stübner 2014-09-04 18:34 ` Dmitry Torokhov 2014-09-05 1:35 ` Mike Turquette 2014-09-04 1:12 ` [PATCH v9 3/3] regulator: RK808: Remove pdata from the regulator Chris Zhong [not found] ` <1409793159-2573-4-git-send-email-zyw-TNX95d0MmH7DzftRWevZcw@public.gmane.org> 2014-09-04 4:21 ` Doug Anderson 2014-09-04 19:07 ` Doug Anderson [not found] ` <1409793159-2573-1-git-send-email-zyw-TNX95d0MmH7DzftRWevZcw@public.gmane.org> 2014-09-09 11:45 ` [PATCH v9 0/3] Add rockchip RK808 pmic driver Heiko Stübner
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).