Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1758076AbcJ1J3p (ORCPT ); Fri, 28 Oct 2016 05:29:45 -0400 Received: from regular1.263xmail.com ([211.150.99.139]:33335 "EHLO regular1.263xmail.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752126AbcJ1J3o (ORCPT ); Fri, 28 Oct 2016 05:29:44 -0400 X-263anti-spam: KSV:0; X-MAIL-GRAY: 0 X-MAIL-DELIVERY: 1 X-KSVirus-check: 0 X-ABS-CHECKED: 4 X-ADDR-CHECKED: 0 X-RL-SENDER: randy.li@rock-chips.com X-FST-TO: mark.yao@rock-chips.com X-SENDER-IP: 103.29.142.67 X-LOGIN-NAME: randy.li@rock-chips.com X-UNIQUE-TAG: <1d14c56e26c6c124099a93c11fe2126d> X-ATTACHMENT-NUM: 0 X-DNS-TYPE: 0 Subject: Re: [PATCH] drm/rockchip: analogix_dp: add supports for regulators in edp IP To: Shawn Lin , Randy Li , dri-devel@lists.freedesktop.org References: <1477163933-13140-1-git-send-email-ayaka@soulik.info> <6d050f06-996f-5ecc-20f9-587299ee34c7@rock-chips.com> Cc: heiko@sntech.de, airlied@linux.ie, linux-kernel@vger.kernel.org, linux-rockchip@lists.infradead.org, linux-arm-kernel@lists.infradead.org, mark.yao@rock-chips.com From: Randy Li Organization: Fuzhou Rockchip Message-ID: <16dfbe16-eae7-8da9-4108-07e623210d35@rock-chips.com> Date: Fri, 28 Oct 2016 17:29:15 +0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.4.0 MIME-Version: 1.0 In-Reply-To: <6d050f06-996f-5ecc-20f9-587299ee34c7@rock-chips.com> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 4053 Lines: 113 On 10/28/2016 05:11 PM, Shawn Lin wrote: > On 2016/10/23 3:18, Randy Li wrote: >> I found if eDP_AVDD_1V0 and eDP_AVDD_1V8 are not been power at >> RK3288, once trying to enable the pclk clock, the kernel would dead. >> This patch would try to enable them first. The eDP_AVDD_1V8 more >> likely to be applied to eDP phy, but I have no time to confirmed >> it yet. > > Comfirm it or at least someone should be able to answer your > question, Mark? I just forget to ask the IC department, the TRM didn't cover that. > > Have you considered to add some details about vcc-supply and vccio- > supply for your analogix_dp-rockchip.txt ? > > From your commit msg, these two properties are more likely to be > required but the code itself tell me them should be optional(from the > point of backward compatibility, it should also be optinoal). Yes, I keep it optional for the same reason. Most of boards won't turn off those power supply and may use some fixed regulators. > >> >> Signed-off-by: Randy Li >> --- >> drivers/gpu/drm/rockchip/analogix_dp-rockchip.c | 25 >> +++++++++++++++++++++++++ >> 1 file changed, 25 insertions(+) >> >> diff --git a/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c >> b/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c >> index 8548e82..6bf0441 100644 >> --- a/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c >> +++ b/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c >> @@ -17,6 +17,7 @@ >> #include >> #include >> #include >> +#include >> #include >> #include >> >> @@ -70,6 +71,7 @@ struct rockchip_dp_device { >> struct clk *grfclk; >> struct regmap *grf; >> struct reset_control *rst; >> + struct regulator_bulk_data supplies[2]; >> >> struct work_struct psr_work; >> spinlock_t psr_lock; >> @@ -146,6 +148,13 @@ static int rockchip_dp_poweron(struct >> analogix_dp_plat_data *plat_data) >> >> cancel_work_sync(&dp->psr_work); >> >> + ret = regulator_bulk_enable(ARRAY_SIZE(dp->supplies), >> + dp->supplies); >> + if (ret) { >> + dev_err(dp->dev, "failed to enable vdd supply %d\n", ret); >> + return ret; >> + } >> + >> ret = clk_prepare_enable(dp->pclk); >> if (ret < 0) { >> dev_err(dp->dev, "failed to enable pclk %d\n", ret); >> @@ -168,6 +177,9 @@ static int rockchip_dp_powerdown(struct >> analogix_dp_plat_data *plat_data) >> >> clk_disable_unprepare(dp->pclk); >> >> + regulator_bulk_disable(ARRAY_SIZE(dp->supplies), >> + dp->supplies); >> + >> return 0; >> } >> >> @@ -323,6 +335,19 @@ static int rockchip_dp_init(struct >> rockchip_dp_device *dp) >> return PTR_ERR(dp->rst); >> } >> >> + dp->supplies[0].supply = "vcc"; >> + dp->supplies[1].supply = "vccio"; >> + ret = devm_regulator_bulk_get(dev, ARRAY_SIZE(dp->supplies), >> + dp->supplies); >> + if (ret < 0) { >> + dev_err(dev, "failed to get regulators: %d\n", ret); >> + } >> + ret = regulator_bulk_enable(ARRAY_SIZE(dp->supplies), >> + dp->supplies); >> + if (ret < 0) { >> + dev_err(dev, "failed to enable regulators: %d\n", ret); >> + } >> + >> ret = clk_prepare_enable(dp->pclk); >> if (ret < 0) { >> dev_err(dp->dev, "failed to enable pclk %d\n", ret); >> > > -- Randy Li The third produce department =========================================================================== This email message, including any attachments, is for the sole use of the intended recipient(s) and may contain confidential and privileged information. Any unauthorized review, use, disclosure or distribution is prohibited. If you are not the intended recipient, please contact the sender by reply e-mail and destroy all copies of the original message. [Fuzhou Rockchip Electronics, INC. China mainland] ===========================================================================