diff for duplicates of <577CC7D0.2040402@rock-chips.com> diff --git a/a/1.txt b/N1/1.txt index b207e40..4232302 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -31,7 +31,7 @@ On 2016年07月06日 16:03, Wadim Egorov wrote: >>>>> So we can reuse the RTC and Clkout functionality. >>>> Swap '.' for ','. >>>> ->>>>> Signed-off-by: Wadim Egorov <w.egorov@phytec.de> +>>>>> Signed-off-by: Wadim Egorov <w.egorov-guT5V/WYfQezQB+pC5nmwQ@public.gmane.org> >>>>> --- >>>>> drivers/mfd/Kconfig | 4 +- >>>>> drivers/mfd/rk808.c | 231 @@ -72,12 +72,12 @@ On 2016年07月06日 16:03, Wadim Egorov wrote: >>>>> * >>>>> * 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-TNX95d0MmH7DzftRWevZcw@public.gmane.org> +>>>>> * Author: Zhang Qing <zhangqing-TNX95d0MmH7DzftRWevZcw@public.gmane.org> >>>>> * >>>>> + * Copyright (C) 2016 PHYTEC Messtechnik GmbH >>>>> + * ->>>>> + * Author: Wadim Egorov <w.egorov@phytec.de> +>>>>> + * Author: Wadim Egorov <w.egorov-guT5V/WYfQezQB+pC5nmwQ@public.gmane.org> >>>>> + * >>>>> * This program is free software; you can redistribute it and/or >>>>> modify it @@ -350,3 +350,14 @@ On 2016年07月06日 16:03, Wadim Egorov wrote: > > > + + +-- +You received this message because you are subscribed to "rtc-linux". +Membership options at http://groups.google.com/group/rtc-linux . +Please read http://groups.google.com/group/rtc-linux/web/checklist +before submitting a driver. +--- +You received this message because you are subscribed to the Google Groups "rtc-linux" group. +To unsubscribe from this group and stop receiving emails from it, send an email to rtc-linux+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org +For more options, visit https://groups.google.com/d/optout. diff --git a/a/content_digest b/N1/content_digest index 5604668..8d1666e 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -3,29 +3,30 @@ "ref\05759277D.7090101@phytec.de\0" "ref\0577C77DF.9060706@rock-chips.com\0" "ref\0577CBB62.8080806@phytec.de\0" - "From\0Andy Yan <andy.yan@rock-chips.com>\0" + "ref\0577CBB62.8080806-guT5V/WYfQezQB+pC5nmwQ@public.gmane.org\0" + "From\0Andy Yan <andy.yan-TNX95d0MmH7DzftRWevZcw@public.gmane.org>\0" "Subject\0Re: [RESEND PATCH v5 1/5] mfd: RK808: Add RK818 support\0" "Date\0Wed, 6 Jul 2016 16:56:48 +0800\0" - "To\0Wadim Egorov <w.egorov@phytec.de>" - " Lee Jones <lee.jones@linaro.org>\0" - "Cc\0mark.rutland@arm.com" - devicetree@vger.kernel.org - a.zummo@towertech.it - pawel.moll@arm.com - rtc-linux@googlegroups.com - ijc+devicetree@hellion.org.uk - mturquette@baylibre.com - sboyd@codeaurora.org - linux-kernel@vger.kernel.org - lgirdwood@gmail.com - linux-rockchip@lists.infradead.org - robh+dt@kernel.org - alexandre.belloni@free-electrons.com - broonie@kernel.org - dianders@chromium.org - galak@codeaurora.org - zyw@rock-chips.com - " linux-clk@vger.kernel.org\0" + "To\0Wadim Egorov <w.egorov-guT5V/WYfQezQB+pC5nmwQ@public.gmane.org>" + " Lee Jones <lee.jones-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>\0" + "Cc\0mark.rutland-5wv7dgnIgG8@public.gmane.org" + devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org + a.zummo-BfzFCNDTiLLj+vYz1yj4TQ@public.gmane.org + pawel.moll-5wv7dgnIgG8@public.gmane.org + rtc-linux-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org + ijc+devicetree-KcIKpvwj1kUDXYZnReoRVg@public.gmane.org + mturquette-rdvid1DuHRBWk0Htik3J/w@public.gmane.org + sboyd-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org + linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org + lgirdwood-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org + linux-rockchip-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org + robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org + alexandre.belloni-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org + broonie-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org + dianders-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org + galak-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org + zyw-TNX95d0MmH7DzftRWevZcw@public.gmane.org + " linux-clk-u79uwXL29TY76Z2rM5mHXA@public.gmane.org\0" "\00:1\0" "b\0" "Hi Wadim:\n" @@ -61,7 +62,7 @@ ">>>>> So we can reuse the RTC and Clkout functionality.\n" ">>>> Swap '.' for ','.\n" ">>>>\n" - ">>>>> Signed-off-by: Wadim Egorov <w.egorov@phytec.de>\n" + ">>>>> Signed-off-by: Wadim Egorov <w.egorov-guT5V/WYfQezQB+pC5nmwQ@public.gmane.org>\n" ">>>>> ---\n" ">>>>> drivers/mfd/Kconfig | 4 +-\n" ">>>>> drivers/mfd/rk808.c | 231\n" @@ -102,12 +103,12 @@ ">>>>> *\n" ">>>>> * Copyright (c) 2014, Fuzhou Rockchip Electronics Co., Ltd\n" ">>>>> *\n" - ">>>>> * Author: Chris Zhong <zyw@rock-chips.com>\n" - ">>>>> * Author: Zhang Qing <zhangqing@rock-chips.com>\n" + ">>>>> * Author: Chris Zhong <zyw-TNX95d0MmH7DzftRWevZcw@public.gmane.org>\n" + ">>>>> * Author: Zhang Qing <zhangqing-TNX95d0MmH7DzftRWevZcw@public.gmane.org>\n" ">>>>> *\n" ">>>>> + * Copyright (C) 2016 PHYTEC Messtechnik GmbH\n" ">>>>> + *\n" - ">>>>> + * Author: Wadim Egorov <w.egorov@phytec.de>\n" + ">>>>> + * Author: Wadim Egorov <w.egorov-guT5V/WYfQezQB+pC5nmwQ@public.gmane.org>\n" ">>>>> + *\n" ">>>>> * This program is free software; you can redistribute it and/or\n" ">>>>> modify it\n" @@ -379,6 +380,17 @@ "> version?\n" ">\n" ">\n" - > + ">\n" + "\n" + "\n" + "-- \n" + "You received this message because you are subscribed to \"rtc-linux\".\n" + "Membership options at http://groups.google.com/group/rtc-linux .\n" + "Please read http://groups.google.com/group/rtc-linux/web/checklist\n" + "before submitting a driver.\n" + "--- \n" + "You received this message because you are subscribed to the Google Groups \"rtc-linux\" group.\n" + "To unsubscribe from this group and stop receiving emails from it, send an email to rtc-linux+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org\n" + For more options, visit https://groups.google.com/d/optout. -b9a56c564a35da2f20ef96ba685af54ad568535a32e0f9e3fbc4a6d37ccbc27c +05b99b09d21c5275f8193e9355212a8cd96d82727ab2de426b9adc490f0b2f94
diff --git a/a/1.txt b/N2/1.txt index b207e40..7803d92 100644 --- a/a/1.txt +++ b/N2/1.txt @@ -1,12 +1,12 @@ Hi Wadim: -On 2016年07月06日 16:03, Wadim Egorov wrote: +On 2016=E5=B9=B407=E6=9C=8806=E6=97=A5 16:03, Wadim Egorov wrote: > Hi Andy, > > On 06.07.2016 05:15, Andy Yan wrote: >> Hi Wadim: >> ->> On 2016年06月09日 16:23, Wadim Egorov wrote: +>> On 2016=E5=B9=B406=E6=9C=8809=E6=97=A5 16:23, Wadim Egorov wrote: >>> Hi, >>> >>> On 08.06.2016 16:17, Lee Jones wrote: @@ -81,7 +81,8 @@ On 2016年07月06日 16:03, Wadim Egorov wrote: >>>>> + * >>>>> * This program is free software; you can redistribute it and/or >>>>> modify it ->>>>> * under the terms and conditions of the GNU General Public License, +>>>>> * under the terms and conditions of the GNU General Public Licens= +e, >>>>> * version 2, as published by the Free Software Foundation. >>>>> @@ -22,12 +26,7 @@ >>>>> #include <linux/mfd/core.h> @@ -104,45 +105,48 @@ On 2016年07月06日 16:03, Wadim Egorov wrote: >>>>> *dev, unsigned int reg) >>>>> return false; >>>>> } ->>>>> +static const struct regmap_config rk818_regmap_config = { ->>>>> + .reg_bits = 8, ->>>>> + .val_bits = 8, ->>>>> + .max_register = RK818_USB_CTRL_REG, ->>>>> + .cache_type = REGCACHE_RBTREE, ->>>>> + .volatile_reg = rk808_is_volatile_reg, +>>>>> +static const struct regmap_config rk818_regmap_config =3D { +>>>>> + .reg_bits =3D 8, +>>>>> + .val_bits =3D 8, +>>>>> + .max_register =3D RK818_USB_CTRL_REG, +>>>>> + .cache_type =3D REGCACHE_RBTREE, +>>>>> + .volatile_reg =3D rk808_is_volatile_reg, >>>>> +}; >>>>> + ->>>>> static const struct regmap_config rk808_regmap_config = { ->>>>> .reg_bits = 8, ->>>>> .val_bits = 8, ->>>>> @@ -83,7 +90,17 @@ static const struct mfd_cell rk808s[] = { +>>>>> static const struct regmap_config rk808_regmap_config =3D { +>>>>> .reg_bits =3D 8, +>>>>> .val_bits =3D 8, +>>>>> @@ -83,7 +90,17 @@ static const struct mfd_cell rk808s[] =3D { >>>>> }, >>>>> }; ->>>>> -static const struct rk808_reg_data pre_init_reg[] = { ->>>>> +static const struct mfd_cell rk818s[] = { ->>>>> + { .name = "rk808-clkout", }, +>>>>> -static const struct rk808_reg_data pre_init_reg[] =3D { +>>>>> +static const struct mfd_cell rk818s[] =3D { +>>>>> + { .name =3D "rk808-clkout", }, >>>> How does this differ to a normal -clock driver? >>> I don't know. It is a normal clock driver. >>> ->>>>> + { .name = "rk808-regulator", }, +>>>>> + { .name =3D "rk808-regulator", }, >>>>> + { ->>>>> + .name = "rk808-rtc", ->>>>> + .num_resources = ARRAY_SIZE(rtc_resources), ->>>>> + .resources = &rtc_resources[0], ->>>> .resources = rtc_resources, ? +>>>>> + .name =3D "rk808-rtc", +>>>>> + .num_resources =3D ARRAY_SIZE(rtc_resources), +>>>>> + .resources =3D &rtc_resources[0], +>>>> .resources =3D rtc_resources, ? >>>> >>>>> + }, >>>>> +}; >>>>> + ->>>>> +static const struct rk8xx_reg_data rk808_pre_init_reg[] = { ->>>>> { RK808_BUCK3_CONFIG_REG, BUCK_ILMIN_MASK, BUCK_ILMIN_150MA }, ->>>>> { RK808_BUCK4_CONFIG_REG, BUCK_ILMIN_MASK, BUCK_ILMIN_200MA }, ->>>>> { RK808_BOOST_CONFIG_REG, BOOST_ILMIN_MASK, BOOST_ILMIN_100MA }, +>>>>> +static const struct rk8xx_reg_data rk808_pre_init_reg[] =3D { +>>>>> { RK808_BUCK3_CONFIG_REG, BUCK_ILMIN_MASK, BUCK_ILMIN_150MA }= +, +>>>>> { RK808_BUCK4_CONFIG_REG, BUCK_ILMIN_MASK, BUCK_ILMIN_200MA }= +, +>>>>> { RK808_BOOST_CONFIG_REG, BOOST_ILMIN_MASK, BOOST_ILMIN_100MA = +}, >>>>> @@ -94,6 +111,22 @@ static const struct rk808_reg_data ->>>>> pre_init_reg[] = { +>>>>> pre_init_reg[] =3D { >>>>> VB_LO_SEL_3500MV }, >>>>> }; ->>>>> +static const struct rk8xx_reg_data rk818_pre_init_reg[] = { +>>>>> +static const struct rk8xx_reg_data rk818_pre_init_reg[] =3D { >>>>> + { RK818_USB_CTRL_REG, RK818_USB_ILIM_SEL_MASK, >>>>> + RK818_USB_ILMIN_2000MA }, >>>>> + /* close charger when usb lower then 3.4V */ @@ -153,8 +157,10 @@ On 2016年07月06日 16:03, Wadim Egorov wrote: >>>>> + /* enable HDMI 5V */ >>>>> + { RK818_H5V_EN_REG, BIT(0), RK818_H5V_EN }, >>>>> + /* improve efficiency */ ->>>>> + { RK818_BUCK2_CONFIG_REG, BUCK2_RATE_MASK, BUCK_ILMIN_250MA }, ->>>>> + { RK818_BUCK4_CONFIG_REG, BUCK_ILMIN_MASK, BUCK_ILMIN_250MA }, +>>>>> + { RK818_BUCK2_CONFIG_REG, BUCK2_RATE_MASK, BUCK_ILMIN_250MA }= +, +>>>>> + { RK818_BUCK4_CONFIG_REG, BUCK_ILMIN_MASK, BUCK_ILMIN_250MA }= +, >>>>> + { RK818_BOOST_CONFIG_REG, BOOST_ILMIN_MASK, >>>>> BOOST_ILMIN_100MA }, >>>>> + { RK808_VB_MON_REG, MASK_ALL, VB_LO_ACT | @@ -163,98 +169,100 @@ On 2016年07月06日 16:03, Wadim Egorov wrote: >>>> The alignment here looks odd. >>> I will fix it in the next version. >>> ->>>>> static const struct regmap_irq rk808_irqs[] = { +>>>>> static const struct regmap_irq rk808_irqs[] =3D { >>>>> /* INT_STS */ ->>>>> [RK808_IRQ_VOUT_LO] = { ->>>>> @@ -136,6 +169,76 @@ static const struct regmap_irq rk808_irqs[] = { +>>>>> [RK808_IRQ_VOUT_LO] =3D { +>>>>> @@ -136,6 +169,76 @@ static const struct regmap_irq rk808_irqs[] =3D = +{ >>>>> }, >>>>> }; ->>>>> +static const struct regmap_irq rk818_irqs[] = { +>>>>> +static const struct regmap_irq rk818_irqs[] =3D { >>>>> + /* INT_STS */ ->>>>> + [RK818_IRQ_VOUT_LO] = { ->>>>> + .mask = RK818_IRQ_VOUT_LO_MSK, ->>>>> + .reg_offset = 0, +>>>>> + [RK818_IRQ_VOUT_LO] =3D { +>>>>> + .mask =3D RK818_IRQ_VOUT_LO_MSK, +>>>>> + .reg_offset =3D 0, >>>>> + }, ->>>>> + [RK818_IRQ_VB_LO] = { ->>>>> + .mask = RK818_IRQ_VB_LO_MSK, ->>>>> + .reg_offset = 0, +>>>>> + [RK818_IRQ_VB_LO] =3D { +>>>>> + .mask =3D RK818_IRQ_VB_LO_MSK, +>>>>> + .reg_offset =3D 0, >>>>> + }, ->>>>> + [RK818_IRQ_PWRON] = { ->>>>> + .mask = RK818_IRQ_PWRON_MSK, ->>>>> + .reg_offset = 0, +>>>>> + [RK818_IRQ_PWRON] =3D { +>>>>> + .mask =3D RK818_IRQ_PWRON_MSK, +>>>>> + .reg_offset =3D 0, >>>>> + }, ->>>>> + [RK818_IRQ_PWRON_LP] = { ->>>>> + .mask = RK818_IRQ_PWRON_LP_MSK, ->>>>> + .reg_offset = 0, +>>>>> + [RK818_IRQ_PWRON_LP] =3D { +>>>>> + .mask =3D RK818_IRQ_PWRON_LP_MSK, +>>>>> + .reg_offset =3D 0, >>>>> + }, ->>>>> + [RK818_IRQ_HOTDIE] = { ->>>>> + .mask = RK818_IRQ_HOTDIE_MSK, ->>>>> + .reg_offset = 0, +>>>>> + [RK818_IRQ_HOTDIE] =3D { +>>>>> + .mask =3D RK818_IRQ_HOTDIE_MSK, +>>>>> + .reg_offset =3D 0, >>>>> + }, ->>>>> + [RK818_IRQ_RTC_ALARM] = { ->>>>> + .mask = RK818_IRQ_RTC_ALARM_MSK, ->>>>> + .reg_offset = 0, +>>>>> + [RK818_IRQ_RTC_ALARM] =3D { +>>>>> + .mask =3D RK818_IRQ_RTC_ALARM_MSK, +>>>>> + .reg_offset =3D 0, >>>>> + }, ->>>>> + [RK818_IRQ_RTC_PERIOD] = { ->>>>> + .mask = RK818_IRQ_RTC_PERIOD_MSK, ->>>>> + .reg_offset = 0, +>>>>> + [RK818_IRQ_RTC_PERIOD] =3D { +>>>>> + .mask =3D RK818_IRQ_RTC_PERIOD_MSK, +>>>>> + .reg_offset =3D 0, >>>>> + }, ->>>>> + [RK818_IRQ_USB_OV] = { ->>>>> + .mask = RK818_IRQ_USB_OV_MSK, ->>>>> + .reg_offset = 0, +>>>>> + [RK818_IRQ_USB_OV] =3D { +>>>>> + .mask =3D RK818_IRQ_USB_OV_MSK, +>>>>> + .reg_offset =3D 0, >>>>> + }, >>>>> + >>>>> + /* INT_STS2 */ ->>>>> + [RK818_IRQ_PLUG_IN] = { ->>>>> + .mask = RK818_IRQ_PLUG_IN_MSK, ->>>>> + .reg_offset = 1, +>>>>> + [RK818_IRQ_PLUG_IN] =3D { +>>>>> + .mask =3D RK818_IRQ_PLUG_IN_MSK, +>>>>> + .reg_offset =3D 1, >>>>> + }, ->>>>> + [RK818_IRQ_PLUG_OUT] = { ->>>>> + .mask = RK818_IRQ_PLUG_OUT_MSK, ->>>>> + .reg_offset = 1, +>>>>> + [RK818_IRQ_PLUG_OUT] =3D { +>>>>> + .mask =3D RK818_IRQ_PLUG_OUT_MSK, +>>>>> + .reg_offset =3D 1, >>>>> + }, ->>>>> + [RK818_IRQ_CHG_OK] = { ->>>>> + .mask = RK818_IRQ_CHG_OK_MSK, ->>>>> + .reg_offset = 1, +>>>>> + [RK818_IRQ_CHG_OK] =3D { +>>>>> + .mask =3D RK818_IRQ_CHG_OK_MSK, +>>>>> + .reg_offset =3D 1, >>>>> + }, ->>>>> + [RK818_IRQ_CHG_TE] = { ->>>>> + .mask = RK818_IRQ_CHG_TE_MSK, ->>>>> + .reg_offset = 1, +>>>>> + [RK818_IRQ_CHG_TE] =3D { +>>>>> + .mask =3D RK818_IRQ_CHG_TE_MSK, +>>>>> + .reg_offset =3D 1, >>>>> + }, ->>>>> + [RK818_IRQ_CHG_TS1] = { ->>>>> + .mask = RK818_IRQ_CHG_TS1_MSK, ->>>>> + .reg_offset = 1, +>>>>> + [RK818_IRQ_CHG_TS1] =3D { +>>>>> + .mask =3D RK818_IRQ_CHG_TS1_MSK, +>>>>> + .reg_offset =3D 1, >>>>> + }, ->>>>> + [RK818_IRQ_TS2] = { ->>>>> + .mask = RK818_IRQ_TS2_MSK, ->>>>> + .reg_offset = 1, +>>>>> + [RK818_IRQ_TS2] =3D { +>>>>> + .mask =3D RK818_IRQ_TS2_MSK, +>>>>> + .reg_offset =3D 1, >>>>> + }, ->>>>> + [RK818_IRQ_CHG_CVTLIM] = { ->>>>> + .mask = RK818_IRQ_CHG_CVTLIM_MSK, ->>>>> + .reg_offset = 1, +>>>>> + [RK818_IRQ_CHG_CVTLIM] =3D { +>>>>> + .mask =3D RK818_IRQ_CHG_CVTLIM_MSK, +>>>>> + .reg_offset =3D 1, >>>>> + }, ->>>>> + [RK818_IRQ_DISCHG_ILIM] = { ->>>>> + .mask = RK818_IRQ_DISCHG_ILIM_MSK, ->>>>> + .reg_offset = 1, +>>>>> + [RK818_IRQ_DISCHG_ILIM] =3D { +>>>>> + .mask =3D RK818_IRQ_DISCHG_ILIM_MSK, +>>>>> + .reg_offset =3D 1, >>>>> + }, >>>>> +}; >>>>> + ->>>>> static struct regmap_irq_chip rk808_irq_chip = { ->>>>> .name = "rk808", ->>>>> .irqs = rk808_irqs, ->>>>> @@ -148,6 +251,18 @@ static struct regmap_irq_chip rk808_irq_chip = { ->>>>> .init_ack_masked = true, +>>>>> static struct regmap_irq_chip rk808_irq_chip =3D { +>>>>> .name =3D "rk808", +>>>>> .irqs =3D rk808_irqs, +>>>>> @@ -148,6 +251,18 @@ static struct regmap_irq_chip rk808_irq_chip =3D= + { +>>>>> .init_ack_masked =3D true, >>>>> }; ->>>>> +static struct regmap_irq_chip rk818_irq_chip = { ->>>>> + .name = "rk818", ->>>>> + .irqs = rk818_irqs, ->>>>> + .num_irqs = ARRAY_SIZE(rk818_irqs), ->>>>> + .num_regs = 2, ->>>>> + .irq_reg_stride = 2, ->>>>> + .status_base = RK818_INT_STS_REG1, ->>>>> + .mask_base = RK818_INT_STS_MSK_REG1, ->>>>> + .ack_base = RK818_INT_STS_REG1, ->>>>> + .init_ack_masked = true, +>>>>> +static struct regmap_irq_chip rk818_irq_chip =3D { +>>>>> + .name =3D "rk818", +>>>>> + .irqs =3D rk818_irqs, +>>>>> + .num_irqs =3D ARRAY_SIZE(rk818_irqs), +>>>>> + .num_regs =3D 2, +>>>>> + .irq_reg_stride =3D 2, +>>>>> + .status_base =3D RK818_INT_STS_REG1, +>>>>> + .mask_base =3D RK818_INT_STS_MSK_REG1, +>>>>> + .ack_base =3D RK818_INT_STS_REG1, +>>>>> + .init_ack_masked =3D true, >>>>> +}; >>>>> + >>>>> static struct i2c_client *rk808_i2c_client; @@ -263,9 +271,11 @@ On 2016年07月06日 16:03, Wadim Egorov wrote: >>>>> @@ -167,6 +282,48 @@ static void rk808_device_shutdown(void) >>>>> dev_err(&rk808_i2c_client->dev, "power off error!\n"); >>>>> } ->>>>> +static const struct of_device_id rk808_of_match[] = { ->>>>> + { .compatible = "rockchip,rk808", .data = (void *) RK808_ID }, ->>>>> + { .compatible = "rockchip,rk818", .data = (void *) RK818_ID }, +>>>>> +static const struct of_device_id rk808_of_match[] =3D { +>>>>> + { .compatible =3D "rockchip,rk808", .data =3D (void *) RK808_ID = +}, +>>>>> + { .compatible =3D "rockchip,rk818", .data =3D (void *) RK818_ID = +}, >>>>> + { }, >>>>> +}; >>>>> +MODULE_DEVICE_TABLE(of, rk808_of_match); @@ -280,29 +290,29 @@ On 2016年07月06日 16:03, Wadim Egorov wrote: >>>>> +{ >>>>> + const struct of_device_id *of_id; >>>>> + ->>>>> + of_id = of_match_device(rk808_of_match, dev); +>>>>> + of_id =3D of_match_device(rk808_of_match, dev); >>>>> + if (!of_id) { >>>>> + dev_err(dev, "Unable to match OF ID\n"); >>>>> + return -ENODEV; >>>>> + } ->>>>> + rk808->variant = (long) of_id->data; +>>>>> + rk808->variant =3D (long) of_id->data; >>>>> + >>>>> + switch (rk808->variant) { >>>>> + case RK808_ID: ->>>>> + rk808->nr_cells = ARRAY_SIZE(rk808s); ->>>>> + rk808->cells = rk808s; ->>>>> + rk808->regmap_cfg = &rk808_regmap_config; ->>>>> + rk808->regmap_irq_chip = &rk808_irq_chip; ->>>>> + rk808->pre_init_reg = rk808_pre_init_reg; ->>>>> + rk808->nr_pre_init_regs = ARRAY_SIZE(rk808_pre_init_reg); +>>>>> + rk808->nr_cells =3D ARRAY_SIZE(rk808s); +>>>>> + rk808->cells =3D rk808s; +>>>>> + rk808->regmap_cfg =3D &rk808_regmap_config; +>>>>> + rk808->regmap_irq_chip =3D &rk808_irq_chip; +>>>>> + rk808->pre_init_reg =3D rk808_pre_init_reg; +>>>>> + rk808->nr_pre_init_regs =3D ARRAY_SIZE(rk808_pre_init_reg); >>>>> + break; >>>>> + case RK818_ID: ->>>>> + rk808->nr_cells = ARRAY_SIZE(rk818s); ->>>>> + rk808->cells = rk818s; ->>>>> + rk808->regmap_cfg = &rk818_regmap_config; ->>>>> + rk808->regmap_irq_chip = &rk818_irq_chip; ->>>>> + rk808->pre_init_reg = rk818_pre_init_reg; ->>>>> + rk808->nr_pre_init_regs = ARRAY_SIZE(rk818_pre_init_reg); +>>>>> + rk808->nr_cells =3D ARRAY_SIZE(rk818s); +>>>>> + rk808->cells =3D rk818s; +>>>>> + rk808->regmap_cfg =3D &rk818_regmap_config; +>>>>> + rk808->regmap_irq_chip =3D &rk818_irq_chip; +>>>>> + rk808->pre_init_reg =3D rk818_pre_init_reg; +>>>>> + rk808->nr_pre_init_regs =3D ARRAY_SIZE(rk818_pre_init_reg); >>>>> + break; >>>>> + default: >>>>> + dev_err(dev, "unsupported RK8XX ID %lu\n", rk808->variant); @@ -319,16 +329,18 @@ On 2016年07月06日 16:03, Wadim Egorov wrote: >>>>> int ret; >>>>> int i; >>>>> - if (!client->irq) { ->>>>> - dev_err(&client->dev, "No interrupt support, no core IRQ\n"); +>>>>> - dev_err(&client->dev, "No interrupt support, no core IRQ\n")= +; >>>>> - return -EINVAL; >>>>> - } >>>>> - ->>>>> rk808 = devm_kzalloc(&client->dev, sizeof(*rk808), GFP_KERNEL); +>>>>> rk808 =3D devm_kzalloc(&client->dev, sizeof(*rk808), GFP_KERNE= +L); >>>>> if (!rk808) >>>>> return -ENOMEM; ->>>>> - rk808->regmap = devm_regmap_init_i2c(client, +>>>>> - rk808->regmap =3D devm_regmap_init_i2c(client, >>>>> &rk808_regmap_config); ->>>>> + ret = rk8xx_match_device(rk808, &client->dev); +>>>>> + ret =3D rk8xx_match_device(rk808, &client->dev); >>>> Is there a way to dynamically probe the device? No device ID you can >>>> read directly from the silicon? >>> AFAIK there is no device ID register. At least it is not documented in @@ -339,14 +351,28 @@ On 2016年07月06日 16:03, Wadim Egorov wrote: > thank you for sharing this information. I have no RK808 PMIC device > here, so I would also need the IDs for RK808. - I have checked with the RK808 IC designer, the values of register + I have checked with the RK808 IC designer, the values of register=20 0x17 and 0x18 are both 0x00. > > Lee, you have already applied this series. But I can't find the patches > in your kernel tree. -> I would like to read the device ID from the register in the probe function. +> I would like to read the device ID from the register in the probe functio= +n. > Do you want me to base my changes on top of this series or send a new > version? > > > + + +--=20 +You received this message because you are subscribed to "rtc-linux". +Membership options at http://groups.google.com/group/rtc-linux . +Please read http://groups.google.com/group/rtc-linux/web/checklist +before submitting a driver. +---=20 +You received this message because you are subscribed to the Google Groups "= +rtc-linux" group. +To unsubscribe from this group and stop receiving emails from it, send an e= +mail to rtc-linux+unsubscribe@googlegroups.com. +For more options, visit https://groups.google.com/d/optout. diff --git a/a/content_digest b/N2/content_digest index 5604668..53b6e02 100644 --- a/a/content_digest +++ b/N2/content_digest @@ -4,7 +4,7 @@ "ref\0577C77DF.9060706@rock-chips.com\0" "ref\0577CBB62.8080806@phytec.de\0" "From\0Andy Yan <andy.yan@rock-chips.com>\0" - "Subject\0Re: [RESEND PATCH v5 1/5] mfd: RK808: Add RK818 support\0" + "Subject\0[rtc-linux] Re: [RESEND PATCH v5 1/5] mfd: RK808: Add RK818 support\0" "Date\0Wed, 6 Jul 2016 16:56:48 +0800\0" "To\0Wadim Egorov <w.egorov@phytec.de>" " Lee Jones <lee.jones@linaro.org>\0" @@ -30,13 +30,13 @@ "b\0" "Hi Wadim:\n" "\n" - "On 2016\345\271\26407\346\234\21006\346\227\245 16:03, Wadim Egorov wrote:\n" + "On 2016=E5=B9=B407=E6=9C=8806=E6=97=A5 16:03, Wadim Egorov wrote:\n" "> Hi Andy,\n" ">\n" "> On 06.07.2016 05:15, Andy Yan wrote:\n" ">> Hi Wadim:\n" ">>\n" - ">> On 2016\345\271\26406\346\234\21009\346\227\245 16:23, Wadim Egorov wrote:\n" + ">> On 2016=E5=B9=B406=E6=9C=8809=E6=97=A5 16:23, Wadim Egorov wrote:\n" ">>> Hi,\n" ">>>\n" ">>> On 08.06.2016 16:17, Lee Jones wrote:\n" @@ -111,7 +111,8 @@ ">>>>> + *\n" ">>>>> * This program is free software; you can redistribute it and/or\n" ">>>>> modify it\n" - ">>>>> * under the terms and conditions of the GNU General Public License,\n" + ">>>>> * under the terms and conditions of the GNU General Public Licens=\n" + "e,\n" ">>>>> * version 2, as published by the Free Software Foundation.\n" ">>>>> @@ -22,12 +26,7 @@\n" ">>>>> #include <linux/mfd/core.h>\n" @@ -134,45 +135,48 @@ ">>>>> *dev, unsigned int reg)\n" ">>>>> return false;\n" ">>>>> }\n" - ">>>>> +static const struct regmap_config rk818_regmap_config = {\n" - ">>>>> + .reg_bits = 8,\n" - ">>>>> + .val_bits = 8,\n" - ">>>>> + .max_register = RK818_USB_CTRL_REG,\n" - ">>>>> + .cache_type = REGCACHE_RBTREE,\n" - ">>>>> + .volatile_reg = rk808_is_volatile_reg,\n" + ">>>>> +static const struct regmap_config rk818_regmap_config =3D {\n" + ">>>>> + .reg_bits =3D 8,\n" + ">>>>> + .val_bits =3D 8,\n" + ">>>>> + .max_register =3D RK818_USB_CTRL_REG,\n" + ">>>>> + .cache_type =3D REGCACHE_RBTREE,\n" + ">>>>> + .volatile_reg =3D rk808_is_volatile_reg,\n" ">>>>> +};\n" ">>>>> +\n" - ">>>>> static const struct regmap_config rk808_regmap_config = {\n" - ">>>>> .reg_bits = 8,\n" - ">>>>> .val_bits = 8,\n" - ">>>>> @@ -83,7 +90,17 @@ static const struct mfd_cell rk808s[] = {\n" + ">>>>> static const struct regmap_config rk808_regmap_config =3D {\n" + ">>>>> .reg_bits =3D 8,\n" + ">>>>> .val_bits =3D 8,\n" + ">>>>> @@ -83,7 +90,17 @@ static const struct mfd_cell rk808s[] =3D {\n" ">>>>> },\n" ">>>>> };\n" - ">>>>> -static const struct rk808_reg_data pre_init_reg[] = {\n" - ">>>>> +static const struct mfd_cell rk818s[] = {\n" - ">>>>> + { .name = \"rk808-clkout\", },\n" + ">>>>> -static const struct rk808_reg_data pre_init_reg[] =3D {\n" + ">>>>> +static const struct mfd_cell rk818s[] =3D {\n" + ">>>>> + { .name =3D \"rk808-clkout\", },\n" ">>>> How does this differ to a normal -clock driver?\n" ">>> I don't know. It is a normal clock driver.\n" ">>>\n" - ">>>>> + { .name = \"rk808-regulator\", },\n" + ">>>>> + { .name =3D \"rk808-regulator\", },\n" ">>>>> + {\n" - ">>>>> + .name = \"rk808-rtc\",\n" - ">>>>> + .num_resources = ARRAY_SIZE(rtc_resources),\n" - ">>>>> + .resources = &rtc_resources[0],\n" - ">>>> .resources = rtc_resources, ?\n" + ">>>>> + .name =3D \"rk808-rtc\",\n" + ">>>>> + .num_resources =3D ARRAY_SIZE(rtc_resources),\n" + ">>>>> + .resources =3D &rtc_resources[0],\n" + ">>>> .resources =3D rtc_resources, ?\n" ">>>>\n" ">>>>> + },\n" ">>>>> +};\n" ">>>>> +\n" - ">>>>> +static const struct rk8xx_reg_data rk808_pre_init_reg[] = {\n" - ">>>>> { RK808_BUCK3_CONFIG_REG, BUCK_ILMIN_MASK, BUCK_ILMIN_150MA },\n" - ">>>>> { RK808_BUCK4_CONFIG_REG, BUCK_ILMIN_MASK, BUCK_ILMIN_200MA },\n" - ">>>>> { RK808_BOOST_CONFIG_REG, BOOST_ILMIN_MASK, BOOST_ILMIN_100MA },\n" + ">>>>> +static const struct rk8xx_reg_data rk808_pre_init_reg[] =3D {\n" + ">>>>> { RK808_BUCK3_CONFIG_REG, BUCK_ILMIN_MASK, BUCK_ILMIN_150MA }=\n" + ",\n" + ">>>>> { RK808_BUCK4_CONFIG_REG, BUCK_ILMIN_MASK, BUCK_ILMIN_200MA }=\n" + ",\n" + ">>>>> { RK808_BOOST_CONFIG_REG, BOOST_ILMIN_MASK, BOOST_ILMIN_100MA =\n" + "},\n" ">>>>> @@ -94,6 +111,22 @@ static const struct rk808_reg_data\n" - ">>>>> pre_init_reg[] = {\n" + ">>>>> pre_init_reg[] =3D {\n" ">>>>> VB_LO_SEL_3500MV },\n" ">>>>> };\n" - ">>>>> +static const struct rk8xx_reg_data rk818_pre_init_reg[] = {\n" + ">>>>> +static const struct rk8xx_reg_data rk818_pre_init_reg[] =3D {\n" ">>>>> + { RK818_USB_CTRL_REG, RK818_USB_ILIM_SEL_MASK,\n" ">>>>> + RK818_USB_ILMIN_2000MA },\n" ">>>>> + /* close charger when usb lower then 3.4V */\n" @@ -183,8 +187,10 @@ ">>>>> + /* enable HDMI 5V */\n" ">>>>> + { RK818_H5V_EN_REG, BIT(0), RK818_H5V_EN },\n" ">>>>> + /* improve efficiency */\n" - ">>>>> + { RK818_BUCK2_CONFIG_REG, BUCK2_RATE_MASK, BUCK_ILMIN_250MA },\n" - ">>>>> + { RK818_BUCK4_CONFIG_REG, BUCK_ILMIN_MASK, BUCK_ILMIN_250MA },\n" + ">>>>> + { RK818_BUCK2_CONFIG_REG, BUCK2_RATE_MASK, BUCK_ILMIN_250MA }=\n" + ",\n" + ">>>>> + { RK818_BUCK4_CONFIG_REG, BUCK_ILMIN_MASK, BUCK_ILMIN_250MA }=\n" + ",\n" ">>>>> + { RK818_BOOST_CONFIG_REG, BOOST_ILMIN_MASK,\n" ">>>>> BOOST_ILMIN_100MA },\n" ">>>>> + { RK808_VB_MON_REG, MASK_ALL, VB_LO_ACT |\n" @@ -193,98 +199,100 @@ ">>>> The alignment here looks odd.\n" ">>> I will fix it in the next version.\n" ">>>\n" - ">>>>> static const struct regmap_irq rk808_irqs[] = {\n" + ">>>>> static const struct regmap_irq rk808_irqs[] =3D {\n" ">>>>> /* INT_STS */\n" - ">>>>> [RK808_IRQ_VOUT_LO] = {\n" - ">>>>> @@ -136,6 +169,76 @@ static const struct regmap_irq rk808_irqs[] = {\n" + ">>>>> [RK808_IRQ_VOUT_LO] =3D {\n" + ">>>>> @@ -136,6 +169,76 @@ static const struct regmap_irq rk808_irqs[] =3D =\n" + "{\n" ">>>>> },\n" ">>>>> };\n" - ">>>>> +static const struct regmap_irq rk818_irqs[] = {\n" + ">>>>> +static const struct regmap_irq rk818_irqs[] =3D {\n" ">>>>> + /* INT_STS */\n" - ">>>>> + [RK818_IRQ_VOUT_LO] = {\n" - ">>>>> + .mask = RK818_IRQ_VOUT_LO_MSK,\n" - ">>>>> + .reg_offset = 0,\n" + ">>>>> + [RK818_IRQ_VOUT_LO] =3D {\n" + ">>>>> + .mask =3D RK818_IRQ_VOUT_LO_MSK,\n" + ">>>>> + .reg_offset =3D 0,\n" ">>>>> + },\n" - ">>>>> + [RK818_IRQ_VB_LO] = {\n" - ">>>>> + .mask = RK818_IRQ_VB_LO_MSK,\n" - ">>>>> + .reg_offset = 0,\n" + ">>>>> + [RK818_IRQ_VB_LO] =3D {\n" + ">>>>> + .mask =3D RK818_IRQ_VB_LO_MSK,\n" + ">>>>> + .reg_offset =3D 0,\n" ">>>>> + },\n" - ">>>>> + [RK818_IRQ_PWRON] = {\n" - ">>>>> + .mask = RK818_IRQ_PWRON_MSK,\n" - ">>>>> + .reg_offset = 0,\n" + ">>>>> + [RK818_IRQ_PWRON] =3D {\n" + ">>>>> + .mask =3D RK818_IRQ_PWRON_MSK,\n" + ">>>>> + .reg_offset =3D 0,\n" ">>>>> + },\n" - ">>>>> + [RK818_IRQ_PWRON_LP] = {\n" - ">>>>> + .mask = RK818_IRQ_PWRON_LP_MSK,\n" - ">>>>> + .reg_offset = 0,\n" + ">>>>> + [RK818_IRQ_PWRON_LP] =3D {\n" + ">>>>> + .mask =3D RK818_IRQ_PWRON_LP_MSK,\n" + ">>>>> + .reg_offset =3D 0,\n" ">>>>> + },\n" - ">>>>> + [RK818_IRQ_HOTDIE] = {\n" - ">>>>> + .mask = RK818_IRQ_HOTDIE_MSK,\n" - ">>>>> + .reg_offset = 0,\n" + ">>>>> + [RK818_IRQ_HOTDIE] =3D {\n" + ">>>>> + .mask =3D RK818_IRQ_HOTDIE_MSK,\n" + ">>>>> + .reg_offset =3D 0,\n" ">>>>> + },\n" - ">>>>> + [RK818_IRQ_RTC_ALARM] = {\n" - ">>>>> + .mask = RK818_IRQ_RTC_ALARM_MSK,\n" - ">>>>> + .reg_offset = 0,\n" + ">>>>> + [RK818_IRQ_RTC_ALARM] =3D {\n" + ">>>>> + .mask =3D RK818_IRQ_RTC_ALARM_MSK,\n" + ">>>>> + .reg_offset =3D 0,\n" ">>>>> + },\n" - ">>>>> + [RK818_IRQ_RTC_PERIOD] = {\n" - ">>>>> + .mask = RK818_IRQ_RTC_PERIOD_MSK,\n" - ">>>>> + .reg_offset = 0,\n" + ">>>>> + [RK818_IRQ_RTC_PERIOD] =3D {\n" + ">>>>> + .mask =3D RK818_IRQ_RTC_PERIOD_MSK,\n" + ">>>>> + .reg_offset =3D 0,\n" ">>>>> + },\n" - ">>>>> + [RK818_IRQ_USB_OV] = {\n" - ">>>>> + .mask = RK818_IRQ_USB_OV_MSK,\n" - ">>>>> + .reg_offset = 0,\n" + ">>>>> + [RK818_IRQ_USB_OV] =3D {\n" + ">>>>> + .mask =3D RK818_IRQ_USB_OV_MSK,\n" + ">>>>> + .reg_offset =3D 0,\n" ">>>>> + },\n" ">>>>> +\n" ">>>>> + /* INT_STS2 */\n" - ">>>>> + [RK818_IRQ_PLUG_IN] = {\n" - ">>>>> + .mask = RK818_IRQ_PLUG_IN_MSK,\n" - ">>>>> + .reg_offset = 1,\n" + ">>>>> + [RK818_IRQ_PLUG_IN] =3D {\n" + ">>>>> + .mask =3D RK818_IRQ_PLUG_IN_MSK,\n" + ">>>>> + .reg_offset =3D 1,\n" ">>>>> + },\n" - ">>>>> + [RK818_IRQ_PLUG_OUT] = {\n" - ">>>>> + .mask = RK818_IRQ_PLUG_OUT_MSK,\n" - ">>>>> + .reg_offset = 1,\n" + ">>>>> + [RK818_IRQ_PLUG_OUT] =3D {\n" + ">>>>> + .mask =3D RK818_IRQ_PLUG_OUT_MSK,\n" + ">>>>> + .reg_offset =3D 1,\n" ">>>>> + },\n" - ">>>>> + [RK818_IRQ_CHG_OK] = {\n" - ">>>>> + .mask = RK818_IRQ_CHG_OK_MSK,\n" - ">>>>> + .reg_offset = 1,\n" + ">>>>> + [RK818_IRQ_CHG_OK] =3D {\n" + ">>>>> + .mask =3D RK818_IRQ_CHG_OK_MSK,\n" + ">>>>> + .reg_offset =3D 1,\n" ">>>>> + },\n" - ">>>>> + [RK818_IRQ_CHG_TE] = {\n" - ">>>>> + .mask = RK818_IRQ_CHG_TE_MSK,\n" - ">>>>> + .reg_offset = 1,\n" + ">>>>> + [RK818_IRQ_CHG_TE] =3D {\n" + ">>>>> + .mask =3D RK818_IRQ_CHG_TE_MSK,\n" + ">>>>> + .reg_offset =3D 1,\n" ">>>>> + },\n" - ">>>>> + [RK818_IRQ_CHG_TS1] = {\n" - ">>>>> + .mask = RK818_IRQ_CHG_TS1_MSK,\n" - ">>>>> + .reg_offset = 1,\n" + ">>>>> + [RK818_IRQ_CHG_TS1] =3D {\n" + ">>>>> + .mask =3D RK818_IRQ_CHG_TS1_MSK,\n" + ">>>>> + .reg_offset =3D 1,\n" ">>>>> + },\n" - ">>>>> + [RK818_IRQ_TS2] = {\n" - ">>>>> + .mask = RK818_IRQ_TS2_MSK,\n" - ">>>>> + .reg_offset = 1,\n" + ">>>>> + [RK818_IRQ_TS2] =3D {\n" + ">>>>> + .mask =3D RK818_IRQ_TS2_MSK,\n" + ">>>>> + .reg_offset =3D 1,\n" ">>>>> + },\n" - ">>>>> + [RK818_IRQ_CHG_CVTLIM] = {\n" - ">>>>> + .mask = RK818_IRQ_CHG_CVTLIM_MSK,\n" - ">>>>> + .reg_offset = 1,\n" + ">>>>> + [RK818_IRQ_CHG_CVTLIM] =3D {\n" + ">>>>> + .mask =3D RK818_IRQ_CHG_CVTLIM_MSK,\n" + ">>>>> + .reg_offset =3D 1,\n" ">>>>> + },\n" - ">>>>> + [RK818_IRQ_DISCHG_ILIM] = {\n" - ">>>>> + .mask = RK818_IRQ_DISCHG_ILIM_MSK,\n" - ">>>>> + .reg_offset = 1,\n" + ">>>>> + [RK818_IRQ_DISCHG_ILIM] =3D {\n" + ">>>>> + .mask =3D RK818_IRQ_DISCHG_ILIM_MSK,\n" + ">>>>> + .reg_offset =3D 1,\n" ">>>>> + },\n" ">>>>> +};\n" ">>>>> +\n" - ">>>>> static struct regmap_irq_chip rk808_irq_chip = {\n" - ">>>>> .name = \"rk808\",\n" - ">>>>> .irqs = rk808_irqs,\n" - ">>>>> @@ -148,6 +251,18 @@ static struct regmap_irq_chip rk808_irq_chip = {\n" - ">>>>> .init_ack_masked = true,\n" + ">>>>> static struct regmap_irq_chip rk808_irq_chip =3D {\n" + ">>>>> .name =3D \"rk808\",\n" + ">>>>> .irqs =3D rk808_irqs,\n" + ">>>>> @@ -148,6 +251,18 @@ static struct regmap_irq_chip rk808_irq_chip =3D=\n" + " {\n" + ">>>>> .init_ack_masked =3D true,\n" ">>>>> };\n" - ">>>>> +static struct regmap_irq_chip rk818_irq_chip = {\n" - ">>>>> + .name = \"rk818\",\n" - ">>>>> + .irqs = rk818_irqs,\n" - ">>>>> + .num_irqs = ARRAY_SIZE(rk818_irqs),\n" - ">>>>> + .num_regs = 2,\n" - ">>>>> + .irq_reg_stride = 2,\n" - ">>>>> + .status_base = RK818_INT_STS_REG1,\n" - ">>>>> + .mask_base = RK818_INT_STS_MSK_REG1,\n" - ">>>>> + .ack_base = RK818_INT_STS_REG1,\n" - ">>>>> + .init_ack_masked = true,\n" + ">>>>> +static struct regmap_irq_chip rk818_irq_chip =3D {\n" + ">>>>> + .name =3D \"rk818\",\n" + ">>>>> + .irqs =3D rk818_irqs,\n" + ">>>>> + .num_irqs =3D ARRAY_SIZE(rk818_irqs),\n" + ">>>>> + .num_regs =3D 2,\n" + ">>>>> + .irq_reg_stride =3D 2,\n" + ">>>>> + .status_base =3D RK818_INT_STS_REG1,\n" + ">>>>> + .mask_base =3D RK818_INT_STS_MSK_REG1,\n" + ">>>>> + .ack_base =3D RK818_INT_STS_REG1,\n" + ">>>>> + .init_ack_masked =3D true,\n" ">>>>> +};\n" ">>>>> +\n" ">>>>> static struct i2c_client *rk808_i2c_client;\n" @@ -293,9 +301,11 @@ ">>>>> @@ -167,6 +282,48 @@ static void rk808_device_shutdown(void)\n" ">>>>> dev_err(&rk808_i2c_client->dev, \"power off error!\\n\");\n" ">>>>> }\n" - ">>>>> +static const struct of_device_id rk808_of_match[] = {\n" - ">>>>> + { .compatible = \"rockchip,rk808\", .data = (void *) RK808_ID },\n" - ">>>>> + { .compatible = \"rockchip,rk818\", .data = (void *) RK818_ID },\n" + ">>>>> +static const struct of_device_id rk808_of_match[] =3D {\n" + ">>>>> + { .compatible =3D \"rockchip,rk808\", .data =3D (void *) RK808_ID =\n" + "},\n" + ">>>>> + { .compatible =3D \"rockchip,rk818\", .data =3D (void *) RK818_ID =\n" + "},\n" ">>>>> + { },\n" ">>>>> +};\n" ">>>>> +MODULE_DEVICE_TABLE(of, rk808_of_match);\n" @@ -310,29 +320,29 @@ ">>>>> +{\n" ">>>>> + const struct of_device_id *of_id;\n" ">>>>> +\n" - ">>>>> + of_id = of_match_device(rk808_of_match, dev);\n" + ">>>>> + of_id =3D of_match_device(rk808_of_match, dev);\n" ">>>>> + if (!of_id) {\n" ">>>>> + dev_err(dev, \"Unable to match OF ID\\n\");\n" ">>>>> + return -ENODEV;\n" ">>>>> + }\n" - ">>>>> + rk808->variant = (long) of_id->data;\n" + ">>>>> + rk808->variant =3D (long) of_id->data;\n" ">>>>> +\n" ">>>>> + switch (rk808->variant) {\n" ">>>>> + case RK808_ID:\n" - ">>>>> + rk808->nr_cells = ARRAY_SIZE(rk808s);\n" - ">>>>> + rk808->cells = rk808s;\n" - ">>>>> + rk808->regmap_cfg = &rk808_regmap_config;\n" - ">>>>> + rk808->regmap_irq_chip = &rk808_irq_chip;\n" - ">>>>> + rk808->pre_init_reg = rk808_pre_init_reg;\n" - ">>>>> + rk808->nr_pre_init_regs = ARRAY_SIZE(rk808_pre_init_reg);\n" + ">>>>> + rk808->nr_cells =3D ARRAY_SIZE(rk808s);\n" + ">>>>> + rk808->cells =3D rk808s;\n" + ">>>>> + rk808->regmap_cfg =3D &rk808_regmap_config;\n" + ">>>>> + rk808->regmap_irq_chip =3D &rk808_irq_chip;\n" + ">>>>> + rk808->pre_init_reg =3D rk808_pre_init_reg;\n" + ">>>>> + rk808->nr_pre_init_regs =3D ARRAY_SIZE(rk808_pre_init_reg);\n" ">>>>> + break;\n" ">>>>> + case RK818_ID:\n" - ">>>>> + rk808->nr_cells = ARRAY_SIZE(rk818s);\n" - ">>>>> + rk808->cells = rk818s;\n" - ">>>>> + rk808->regmap_cfg = &rk818_regmap_config;\n" - ">>>>> + rk808->regmap_irq_chip = &rk818_irq_chip;\n" - ">>>>> + rk808->pre_init_reg = rk818_pre_init_reg;\n" - ">>>>> + rk808->nr_pre_init_regs = ARRAY_SIZE(rk818_pre_init_reg);\n" + ">>>>> + rk808->nr_cells =3D ARRAY_SIZE(rk818s);\n" + ">>>>> + rk808->cells =3D rk818s;\n" + ">>>>> + rk808->regmap_cfg =3D &rk818_regmap_config;\n" + ">>>>> + rk808->regmap_irq_chip =3D &rk818_irq_chip;\n" + ">>>>> + rk808->pre_init_reg =3D rk818_pre_init_reg;\n" + ">>>>> + rk808->nr_pre_init_regs =3D ARRAY_SIZE(rk818_pre_init_reg);\n" ">>>>> + break;\n" ">>>>> + default:\n" ">>>>> + dev_err(dev, \"unsupported RK8XX ID %lu\\n\", rk808->variant);\n" @@ -349,16 +359,18 @@ ">>>>> int ret;\n" ">>>>> int i;\n" ">>>>> - if (!client->irq) {\n" - ">>>>> - dev_err(&client->dev, \"No interrupt support, no core IRQ\\n\");\n" + ">>>>> - dev_err(&client->dev, \"No interrupt support, no core IRQ\\n\")=\n" + ";\n" ">>>>> - return -EINVAL;\n" ">>>>> - }\n" ">>>>> -\n" - ">>>>> rk808 = devm_kzalloc(&client->dev, sizeof(*rk808), GFP_KERNEL);\n" + ">>>>> rk808 =3D devm_kzalloc(&client->dev, sizeof(*rk808), GFP_KERNE=\n" + "L);\n" ">>>>> if (!rk808)\n" ">>>>> return -ENOMEM;\n" - ">>>>> - rk808->regmap = devm_regmap_init_i2c(client,\n" + ">>>>> - rk808->regmap =3D devm_regmap_init_i2c(client,\n" ">>>>> &rk808_regmap_config);\n" - ">>>>> + ret = rk8xx_match_device(rk808, &client->dev);\n" + ">>>>> + ret =3D rk8xx_match_device(rk808, &client->dev);\n" ">>>> Is there a way to dynamically probe the device? No device ID you can\n" ">>>> read directly from the silicon?\n" ">>> AFAIK there is no device ID register. At least it is not documented in\n" @@ -369,16 +381,30 @@ "> thank you for sharing this information. I have no RK808 PMIC device\n" "> here, so I would also need the IDs for RK808.\n" "\n" - " I have checked with the RK808 IC designer, the values of register \n" + " I have checked with the RK808 IC designer, the values of register=20\n" "0x17 and 0x18 are both 0x00.\n" ">\n" "> Lee, you have already applied this series. But I can't find the patches\n" "> in your kernel tree.\n" - "> I would like to read the device ID from the register in the probe function.\n" + "> I would like to read the device ID from the register in the probe functio=\n" + "n.\n" "> Do you want me to base my changes on top of this series or send a new\n" "> version?\n" ">\n" ">\n" - > + ">\n" + "\n" + "\n" + "--=20\n" + "You received this message because you are subscribed to \"rtc-linux\".\n" + "Membership options at http://groups.google.com/group/rtc-linux .\n" + "Please read http://groups.google.com/group/rtc-linux/web/checklist\n" + "before submitting a driver.\n" + "---=20\n" + "You received this message because you are subscribed to the Google Groups \"=\n" + "rtc-linux\" group.\n" + "To unsubscribe from this group and stop receiving emails from it, send an e=\n" + "mail to rtc-linux+unsubscribe@googlegroups.com.\n" + For more options, visit https://groups.google.com/d/optout. -b9a56c564a35da2f20ef96ba685af54ad568535a32e0f9e3fbc4a6d37ccbc27c +32f2fc475a94b3c1d33ed75fb114a6cf0e8c0b88bd9e4fca7f3b2fcd955c7da0
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.