[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <CAGS+omAhExDg1H96nFY1EEKwTPVsnS6vNnxJCPYL4QwMt+hAcw@mail.gmail.com>
Date: Wed, 3 Feb 2016 11:29:29 +0800
From: Daniel Kurtz <djkurtz@...omium.org>
To: Jitao Shi <jitao.shi@...iatek.com>
Cc: Pawel Moll <pawel.moll@....com>,
Mark Rutland <mark.rutland@....com>,
Ian Campbell <ijc+devicetree@...lion.org.uk>,
Kumar Gala <galak@...eaurora.org>,
David Airlie <airlied@...ux.ie>,
Matthias Brugger <matthias.bgg@...il.com>, stonea168@....com,
dri-devel <dri-devel@...ts.freedesktop.org>,
Andy Yan <andy.yan@...k-chips.com>,
Ajay Kumar <ajaykumar.rs@...sung.com>,
Vincent Palatin <vpalatin@...omium.org>,
cawa cheng <cawa.cheng@...iatek.com>,
Bibby Hsieh (謝濟遠)
<bibby.hsieh@...iatek.com>, CK HU <ck.hu@...iatek.com>,
Russell King <rmk+kernel@....linux.org.uk>,
Thierry Reding <treding@...dia.com>,
"open list:OPEN FIRMWARE AND..." <devicetree@...r.kernel.org>,
Philipp Zabel <p.zabel@...gutronix.de>,
Inki Dae <inki.dae@...sung.com>,
"moderated list:ARM/Mediatek SoC support"
<linux-mediatek@...ts.infradead.org>,
Yingjoe Chen <yingjoe.chen@...iatek.com>,
Eddie Huang (黃智傑)
<eddie.huang@...iatek.com>,
"linux-arm-kernel@...ts.infradead.org"
<linux-arm-kernel@...ts.infradead.org>,
Rahul Sharma <rahul.sharma@...sung.com>,
srv_heupstream <srv_heupstream@...iatek.com>,
"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
Sascha Hauer <kernel@...gutronix.de>,
Sean Paul <seanpaul@...omium.org>
Subject: Re: [PATCH v8 2/2] drm/bridge: Add I2C based driver for ps8640 bridge
Hi Jitao,
One more comment, inline...
On Mon, Feb 1, 2016 at 12:13 PM, Jitao Shi <jitao.shi@...iatek.com> wrote:
> This patch adds drm_bridge driver for parade DSI to eDP bridge chip.
>
> Signed-off-by: Jitao Shi <jitao.shi@...iatek.com>
[snip]
> +static int ps8640_probe(struct i2c_client *client,
> + const struct i2c_device_id *id)
> +{
> + struct device *dev = &client->dev;
> + struct ps8640 *ps_bridge;
> + struct device_node *np = dev->of_node;
> + struct device_node *port, *out_ep;
> + struct device_node *panel_node = NULL;
> + int i, ret;
> +
> + ps_bridge = devm_kzalloc(dev, sizeof(*ps_bridge), GFP_KERNEL);
> + ps_bridge->dsi = devm_kzalloc(dev, sizeof(struct mipi_dsi_device),
> + GFP_KERNEL);
> + if (!ps_bridge) {
> + ret = -ENOMEM;
> + goto exit;
> + }
> + /* port@1 is ps8640 output port */
> + port = of_graph_get_port_by_id(np, 1);
> + if (port) {
> + out_ep = of_get_child_by_name(port, "endpoint");
> + of_node_put(port);
> + if (out_ep) {
> + panel_node = of_graph_get_remote_port_parent(out_ep);
> + of_node_put(out_ep);
> + }
> + }
> + if (panel_node) {
> + ps_bridge->panel = of_drm_find_panel(panel_node);
> + of_node_put(panel_node);
> + if (!ps_bridge->panel) {
> + ret = -EPROBE_DEFER;
> + goto exit;
> + }
> + }
> +
> + ps_bridge->pwr_3v3_supply = devm_regulator_get(dev, "vdd33");
> + if (IS_ERR(ps_bridge->pwr_3v3_supply)) {
> + ret = PTR_ERR(ps_bridge->pwr_3v3_supply);
> + dev_err(dev, "cannot get vdd33 supply: %d\n", ret);
> + goto exit;
> + }
> +
> + ps_bridge->pwr_1v2_supply = devm_regulator_get(dev, "vdd12");
Since we have two regulators, and they must always be enabled &
disabled together, we can just use the 'bulk regulator' APIs:
devm_regulator_bulk_get()
regulator_bulk_enable()
regulator_bulk_disable()
Powered by blists - more mailing lists