All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jordan Crouse <jcrouse-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
To: Sean Paul <seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
Cc: devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	ryadav-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org,
	linux-arm-msm
	<linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	dri-devel
	<dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org>,
	Rob Clark <robdclark-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
	"Kristian H. Kristensen"
	<hoegsberg-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>,
	freedreno
	<freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org>
Subject: Re: [DPU PATCH 09/11] drm/msm/dpu: Remove unused code and move the header
Date: Fri, 22 Jun 2018 09:33:53 -0600	[thread overview]
Message-ID: <20180622153352.GE24526@jcrouse-lnx.qualcomm.com> (raw)
In-Reply-To: <CAOw6vbLXWojrjXUQq62+n-BDbtQsyBLq_xYGe0RSqnsxo2Ep5Q-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>

On Fri, Jun 22, 2018 at 09:51:28AM -0400, Sean Paul wrote:
> On Wed, May 30, 2018 at 10:50 AM Rajesh Yadav <ryadav@codeaurora.org> wrote:
> >
> > From: Jordan Crouse <jcrouse@codeaurora.org>
> >
> > Remove unused code from dpu_io_util.c.  The functions are only
> > used inside of the msm driver so remove the EXPORT_SYMBOL
> > tags and move the header dpu_io_util.h from include/linux.
> >
> > Signed-off-by: Jordan Crouse <jcrouse@codeaurora.org>
> > [ryadav@codeaurora.org: rebased and removed some extra unused code]
> > Signed-off-by: Rajesh Yadav <ryadav@codeaurora.org>
> 
> Hi Rajesh and Jordan,
> I'm backporting this series for testing, and have found that the
> mdss-pll driver uses both dpu_io_util and a bunch of functions/struct
> members removed in this patchset. Do we anticipate having to add those
> back for mdss-pll?

At some point in the distant past some of the downstream folks discovered that
they were using relatively similar functions so they decided to share the code.
The code originally lived in the display driver so it happened that the exported
code continued to be hosted there.

I'm not sure what the upstream status of the mdss-pll code is but I can't
imagine that sharing this code would be in the long term plan and even if it
was basic module guidelines would dictate that it would live with mdss-pll
which would be more likely to be either be built in or act as a dependency for
DPU.

Jordan

> > ---
> >  drivers/gpu/drm/msm/dpu_io_util.c | 380 +-------------------------------------
> >  drivers/gpu/drm/msm/dpu_io_util.h |  61 ++++++
> >  drivers/gpu/drm/msm/msm_drv.h     |   1 -
> >  include/linux/dpu_io_util.h       | 115 ------------
> >  4 files changed, 66 insertions(+), 491 deletions(-)
> >  create mode 100644 drivers/gpu/drm/msm/dpu_io_util.h
> >  delete mode 100644 include/linux/dpu_io_util.h
> >
> > diff --git a/drivers/gpu/drm/msm/dpu_io_util.c b/drivers/gpu/drm/msm/dpu_io_util.c
> > index ecc297c..f7caec3 100644
> > --- a/drivers/gpu/drm/msm/dpu_io_util.c
> > +++ b/drivers/gpu/drm/msm/dpu_io_util.c
> > @@ -13,318 +13,9 @@
> >
> >  #include <linux/clk.h>
> >  #include <linux/err.h>
> > -#include <linux/io.h>
> > -#include <linux/regulator/consumer.h>
> >  #include <linux/delay.h>
> > -#include <linux/dpu_io_util.h>
> >
> > -#define MAX_I2C_CMDS  16
> > -void dss_reg_w(struct dss_io_data *io, u32 offset, u32 value, u32 debug)
> > -{
> > -       u32 in_val;
> > -
> > -       if (!io || !io->base) {
> > -               DEV_ERR("%pS->%s: invalid input\n",
> > -                       __builtin_return_address(0), __func__);
> > -               return;
> > -       }
> > -
> > -       if (offset > io->len) {
> > -               DEV_ERR("%pS->%s: offset out of range\n",
> > -                       __builtin_return_address(0), __func__);
> > -               return;
> > -       }
> > -
> > -       writel_relaxed(value, io->base + offset);
> > -       if (debug) {
> > -               in_val = readl_relaxed(io->base + offset);
> > -               DEV_DBG("[%08x] => %08x [%08x]\n",
> > -                       (u32)(unsigned long)(io->base + offset),
> > -                       value, in_val);
> > -       }
> > -} /* dss_reg_w */
> > -EXPORT_SYMBOL(dss_reg_w);
> > -
> > -u32 dss_reg_r(struct dss_io_data *io, u32 offset, u32 debug)
> > -{
> > -       u32 value;
> > -
> > -       if (!io || !io->base) {
> > -               DEV_ERR("%pS->%s: invalid input\n",
> > -                       __builtin_return_address(0), __func__);
> > -               return -EINVAL;
> > -       }
> > -
> > -       if (offset > io->len) {
> > -               DEV_ERR("%pS->%s: offset out of range\n",
> > -                       __builtin_return_address(0), __func__);
> > -               return -EINVAL;
> > -       }
> > -
> > -       value = readl_relaxed(io->base + offset);
> > -       if (debug)
> > -               DEV_DBG("[%08x] <= %08x\n",
> > -                       (u32)(unsigned long)(io->base + offset), value);
> > -
> > -       return value;
> > -} /* dss_reg_r */
> > -EXPORT_SYMBOL(dss_reg_r);
> > -
> > -void dss_reg_dump(void __iomem *base, u32 length, const char *prefix,
> > -       u32 debug)
> > -{
> > -       if (debug)
> > -               print_hex_dump(KERN_INFO, prefix, DUMP_PREFIX_OFFSET, 32, 4,
> > -                       (void *)base, length, false);
> > -} /* dss_reg_dump */
> > -EXPORT_SYMBOL(dss_reg_dump);
> > -
> > -static struct resource *msm_dss_get_res_byname(struct platform_device *pdev,
> > -       unsigned int type, const char *name)
> > -{
> > -       struct resource *res = NULL;
> > -
> > -       res = platform_get_resource_byname(pdev, type, name);
> > -       if (!res)
> > -               DEV_ERR("%s: '%s' resource not found\n", __func__, name);
> > -
> > -       return res;
> > -} /* msm_dss_get_res_byname */
> > -EXPORT_SYMBOL(msm_dss_get_res_byname);
> > -
> > -int msm_dss_ioremap_byname(struct platform_device *pdev,
> > -       struct dss_io_data *io_data, const char *name)
> > -{
> > -       struct resource *res = NULL;
> > -
> > -       if (!pdev || !io_data) {
> > -               DEV_ERR("%pS->%s: invalid input\n",
> > -                       __builtin_return_address(0), __func__);
> > -               return -EINVAL;
> > -       }
> > -
> > -       res = msm_dss_get_res_byname(pdev, IORESOURCE_MEM, name);
> > -       if (!res) {
> > -               DEV_ERR("%pS->%s: '%s' msm_dss_get_res_byname failed\n",
> > -                       __builtin_return_address(0), __func__, name);
> > -               return -ENODEV;
> > -       }
> > -
> > -       io_data->len = (u32)resource_size(res);
> > -       io_data->base = ioremap(res->start, io_data->len);
> > -       if (!io_data->base) {
> > -               DEV_ERR("%pS->%s: '%s' ioremap failed\n",
> > -                       __builtin_return_address(0), __func__, name);
> > -               return -EIO;
> > -       }
> > -
> > -       return 0;
> > -} /* msm_dss_ioremap_byname */
> > -EXPORT_SYMBOL(msm_dss_ioremap_byname);
> > -
> > -void msm_dss_iounmap(struct dss_io_data *io_data)
> > -{
> > -       if (!io_data) {
> > -               DEV_ERR("%pS->%s: invalid input\n",
> > -                       __builtin_return_address(0), __func__);
> > -               return;
> > -       }
> > -
> > -       if (io_data->base) {
> > -               iounmap(io_data->base);
> > -               io_data->base = NULL;
> > -       }
> > -       io_data->len = 0;
> > -} /* msm_dss_iounmap */
> > -EXPORT_SYMBOL(msm_dss_iounmap);
> > -
> > -int msm_dss_config_vreg(struct device *dev, struct dss_vreg *in_vreg,
> > -       int num_vreg, int config)
> > -{
> > -       int i = 0, rc = 0;
> > -       struct dss_vreg *curr_vreg = NULL;
> > -       enum dss_vreg_type type;
> > -
> > -       if (!in_vreg || !num_vreg)
> > -               return rc;
> > -
> > -       if (config) {
> > -               for (i = 0; i < num_vreg; i++) {
> > -                       curr_vreg = &in_vreg[i];
> > -                       curr_vreg->vreg = regulator_get(dev,
> > -                               curr_vreg->vreg_name);
> > -                       rc = PTR_RET(curr_vreg->vreg);
> > -                       if (rc) {
> > -                               DEV_ERR("%pS->%s: %s get failed. rc=%d\n",
> > -                                        __builtin_return_address(0), __func__,
> > -                                        curr_vreg->vreg_name, rc);
> > -                               curr_vreg->vreg = NULL;
> > -                               goto vreg_get_fail;
> > -                       }
> > -                       type = (regulator_count_voltages(curr_vreg->vreg) > 0)
> > -                                       ? DSS_REG_LDO : DSS_REG_VS;
> > -                       if (type == DSS_REG_LDO) {
> > -                               rc = regulator_set_voltage(
> > -                                       curr_vreg->vreg,
> > -                                       curr_vreg->min_voltage,
> > -                                       curr_vreg->max_voltage);
> > -                               if (rc < 0) {
> > -                                       DEV_ERR("%pS->%s: %s set vltg fail\n",
> > -                                               __builtin_return_address(0),
> > -                                               __func__,
> > -                                               curr_vreg->vreg_name);
> > -                                       goto vreg_set_voltage_fail;
> > -                               }
> > -                       }
> > -               }
> > -       } else {
> > -               for (i = num_vreg-1; i >= 0; i--) {
> > -                       curr_vreg = &in_vreg[i];
> > -                       if (curr_vreg->vreg) {
> > -                               type = (regulator_count_voltages(
> > -                                       curr_vreg->vreg) > 0)
> > -                                       ? DSS_REG_LDO : DSS_REG_VS;
> > -                               if (type == DSS_REG_LDO) {
> > -                                       regulator_set_voltage(curr_vreg->vreg,
> > -                                               0, curr_vreg->max_voltage);
> > -                               }
> > -                               regulator_put(curr_vreg->vreg);
> > -                               curr_vreg->vreg = NULL;
> > -                       }
> > -               }
> > -       }
> > -       return 0;
> > -
> > -vreg_unconfig:
> > -if (type == DSS_REG_LDO)
> > -       regulator_set_load(curr_vreg->vreg, 0);
> > -
> > -vreg_set_voltage_fail:
> > -       regulator_put(curr_vreg->vreg);
> > -       curr_vreg->vreg = NULL;
> > -
> > -vreg_get_fail:
> > -       for (i--; i >= 0; i--) {
> > -               curr_vreg = &in_vreg[i];
> > -               type = (regulator_count_voltages(curr_vreg->vreg) > 0)
> > -                       ? DSS_REG_LDO : DSS_REG_VS;
> > -               goto vreg_unconfig;
> > -       }
> > -       return rc;
> > -} /* msm_dss_config_vreg */
> > -EXPORT_SYMBOL(msm_dss_config_vreg);
> > -
> > -int msm_dss_enable_vreg(struct dss_vreg *in_vreg, int num_vreg, int enable)
> > -{
> > -       int i = 0, rc = 0;
> > -       bool need_sleep;
> > -
> > -       if (enable) {
> > -               for (i = 0; i < num_vreg; i++) {
> > -                       rc = PTR_RET(in_vreg[i].vreg);
> > -                       if (rc) {
> > -                               DEV_ERR("%pS->%s: %s regulator error. rc=%d\n",
> > -                                       __builtin_return_address(0), __func__,
> > -                                       in_vreg[i].vreg_name, rc);
> > -                               goto vreg_set_opt_mode_fail;
> > -                       }
> > -                       need_sleep = !regulator_is_enabled(in_vreg[i].vreg);
> > -                       if (in_vreg[i].pre_on_sleep && need_sleep)
> > -                               usleep_range(in_vreg[i].pre_on_sleep * 1000,
> > -                                       in_vreg[i].pre_on_sleep * 1000);
> > -                       rc = regulator_set_load(in_vreg[i].vreg,
> > -                               in_vreg[i].enable_load);
> > -                       if (rc < 0) {
> > -                               DEV_ERR("%pS->%s: %s set opt m fail\n",
> > -                                       __builtin_return_address(0), __func__,
> > -                                       in_vreg[i].vreg_name);
> > -                               goto vreg_set_opt_mode_fail;
> > -                       }
> > -                       rc = regulator_enable(in_vreg[i].vreg);
> > -                       if (in_vreg[i].post_on_sleep && need_sleep)
> > -                               usleep_range(in_vreg[i].post_on_sleep * 1000,
> > -                                       in_vreg[i].post_on_sleep * 1000);
> > -                       if (rc < 0) {
> > -                               DEV_ERR("%pS->%s: %s enable failed\n",
> > -                                       __builtin_return_address(0), __func__,
> > -                                       in_vreg[i].vreg_name);
> > -                               goto disable_vreg;
> > -                       }
> > -               }
> > -       } else {
> > -               for (i = num_vreg-1; i >= 0; i--) {
> > -                       if (in_vreg[i].pre_off_sleep)
> > -                               usleep_range(in_vreg[i].pre_off_sleep * 1000,
> > -                                       in_vreg[i].pre_off_sleep * 1000);
> > -                       regulator_set_load(in_vreg[i].vreg,
> > -                               in_vreg[i].disable_load);
> > -                       regulator_disable(in_vreg[i].vreg);
> > -                       if (in_vreg[i].post_off_sleep)
> > -                               usleep_range(in_vreg[i].post_off_sleep * 1000,
> > -                                       in_vreg[i].post_off_sleep * 1000);
> > -               }
> > -       }
> > -       return rc;
> > -
> > -disable_vreg:
> > -       regulator_set_load(in_vreg[i].vreg, in_vreg[i].disable_load);
> > -
> > -vreg_set_opt_mode_fail:
> > -       for (i--; i >= 0; i--) {
> > -               if (in_vreg[i].pre_off_sleep)
> > -                       usleep_range(in_vreg[i].pre_off_sleep * 1000,
> > -                               in_vreg[i].pre_off_sleep * 1000);
> > -               regulator_set_load(in_vreg[i].vreg,
> > -                       in_vreg[i].disable_load);
> > -               regulator_disable(in_vreg[i].vreg);
> > -               if (in_vreg[i].post_off_sleep)
> > -                       usleep_range(in_vreg[i].post_off_sleep * 1000,
> > -                               in_vreg[i].post_off_sleep * 1000);
> > -       }
> > -
> > -       return rc;
> > -} /* msm_dss_enable_vreg */
> > -EXPORT_SYMBOL(msm_dss_enable_vreg);
> > -
> > -int msm_dss_enable_gpio(struct dss_gpio *in_gpio, int num_gpio, int enable)
> > -{
> > -       int i = 0, rc = 0;
> > -
> > -       if (enable) {
> > -               for (i = 0; i < num_gpio; i++) {
> > -                       DEV_DBG("%pS->%s: %s enable\n",
> > -                               __builtin_return_address(0), __func__,
> > -                               in_gpio[i].gpio_name);
> > -
> > -                       rc = gpio_request(in_gpio[i].gpio,
> > -                               in_gpio[i].gpio_name);
> > -                       if (rc < 0) {
> > -                               DEV_ERR("%pS->%s: %s enable failed\n",
> > -                                       __builtin_return_address(0), __func__,
> > -                                       in_gpio[i].gpio_name);
> > -                               goto disable_gpio;
> > -                       }
> > -                       gpio_set_value(in_gpio[i].gpio, in_gpio[i].value);
> > -               }
> > -       } else {
> > -               for (i = num_gpio-1; i >= 0; i--) {
> > -                       DEV_DBG("%pS->%s: %s disable\n",
> > -                               __builtin_return_address(0), __func__,
> > -                               in_gpio[i].gpio_name);
> > -                       if (in_gpio[i].gpio)
> > -                               gpio_free(in_gpio[i].gpio);
> > -               }
> > -       }
> > -       return rc;
> > -
> > -disable_gpio:
> > -       for (i--; i >= 0; i--)
> > -               if (in_gpio[i].gpio)
> > -                       gpio_free(in_gpio[i].gpio);
> > -
> > -       return rc;
> > -} /* msm_dss_enable_gpio */
> > -EXPORT_SYMBOL(msm_dss_enable_gpio);
> > +#include "dpu_io_util.h"
> >
> >  void msm_dss_put_clk(struct dss_clk *clk_arry, int num_clk)
> >  {
> > @@ -335,8 +26,7 @@ void msm_dss_put_clk(struct dss_clk *clk_arry, int num_clk)
> >                         clk_put(clk_arry[i].clk);
> >                 clk_arry[i].clk = NULL;
> >         }
> > -} /* msm_dss_put_clk */
> > -EXPORT_SYMBOL(msm_dss_put_clk);
> > +}
> >
> >  int msm_dss_get_clk(struct device *dev, struct dss_clk *clk_arry, int num_clk)
> >  {
> > @@ -363,8 +53,7 @@ int msm_dss_get_clk(struct device *dev, struct dss_clk *clk_arry, int num_clk)
> >         }
> >
> >         return rc;
> > -} /* msm_dss_get_clk */
> > -EXPORT_SYMBOL(msm_dss_get_clk);
> > +}
> >
> >  int msm_dss_clk_set_rate(struct dss_clk *clk_arry, int num_clk)
> >  {
> > @@ -397,8 +86,7 @@ int msm_dss_clk_set_rate(struct dss_clk *clk_arry, int num_clk)
> >         }
> >
> >         return rc;
> > -} /* msm_dss_clk_set_rate */
> > -EXPORT_SYMBOL(msm_dss_clk_set_rate);
> > +}
> >
> >  int msm_dss_enable_clk(struct dss_clk *clk_arry, int num_clk, int enable)
> >  {
> > @@ -445,8 +133,7 @@ int msm_dss_enable_clk(struct dss_clk *clk_arry, int num_clk, int enable)
> >         }
> >
> >         return rc;
> > -} /* msm_dss_enable_clk */
> > -EXPORT_SYMBOL(msm_dss_enable_clk);
> > +}
> >
> >  int msm_dss_parse_clock(struct platform_device *pdev,
> >                 struct dss_module_power *mp)
> > @@ -497,60 +184,3 @@ int msm_dss_parse_clock(struct platform_device *pdev,
> >
> >         return rc;
> >  }
> > -
> > -int dpu_i2c_byte_read(struct i2c_client *client, uint8_t slave_addr,
> > -                       uint8_t reg_offset, uint8_t *read_buf)
> > -{
> > -       struct i2c_msg msgs[2];
> > -       int ret = -1;
> > -
> > -       pr_debug("%s: reading from slave_addr=[%x] and offset=[%x]\n",
> > -                __func__, slave_addr, reg_offset);
> > -
> > -       msgs[0].addr = slave_addr >> 1;
> > -       msgs[0].flags = 0;
> > -       msgs[0].buf = &reg_offset;
> > -       msgs[0].len = 1;
> > -
> > -       msgs[1].addr = slave_addr >> 1;
> > -       msgs[1].flags = I2C_M_RD;
> > -       msgs[1].buf = read_buf;
> > -       msgs[1].len = 1;
> > -
> > -       ret = i2c_transfer(client->adapter, msgs, 2);
> > -       if (ret < 1) {
> > -               pr_err("%s: I2C READ FAILED=[%d]\n", __func__, ret);
> > -               return -EACCES;
> > -       }
> > -       pr_debug("%s: i2c buf is [%x]\n", __func__, *read_buf);
> > -       return 0;
> > -}
> > -EXPORT_SYMBOL(dpu_i2c_byte_read);
> > -
> > -int dpu_i2c_byte_write(struct i2c_client *client, uint8_t slave_addr,
> > -                       uint8_t reg_offset, uint8_t *value)
> > -{
> > -       struct i2c_msg msgs[1];
> > -       uint8_t data[2];
> > -       int status = -EACCES;
> > -
> > -       pr_debug("%s: writing from slave_addr=[%x] and offset=[%x]\n",
> > -                __func__, slave_addr, reg_offset);
> > -
> > -       data[0] = reg_offset;
> > -       data[1] = *value;
> > -
> > -       msgs[0].addr = slave_addr >> 1;
> > -       msgs[0].flags = 0;
> > -       msgs[0].len = 2;
> > -       msgs[0].buf = data;
> > -
> > -       status = i2c_transfer(client->adapter, msgs, 1);
> > -       if (status < 1) {
> > -               pr_err("I2C WRITE FAILED=[%d]\n", status);
> > -               return -EACCES;
> > -       }
> > -       pr_debug("%s: I2C write status=%x\n", __func__, status);
> > -       return status;
> > -}
> > -EXPORT_SYMBOL(dpu_i2c_byte_write);
> > diff --git a/drivers/gpu/drm/msm/dpu_io_util.h b/drivers/gpu/drm/msm/dpu_io_util.h
> > new file mode 100644
> > index 0000000..773b52e
> > --- /dev/null
> > +++ b/drivers/gpu/drm/msm/dpu_io_util.h
> > @@ -0,0 +1,61 @@
> > +/* Copyright (c) 2012, 2017-2018, The Linux Foundation. All rights reserved.
> > + *
> > + * This program is free software; you can redistribute it and/or modify
> > + * it under the terms of the GNU General Public License version 2 and
> > + * only version 2 as published by the Free Software Foundation.
> > + *
> > + * This program is distributed in the hope that 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.
> > + */
> > +
> > +#ifndef __DPU_IO_UTIL_H__
> > +#define __DPU_IO_UTIL_H__
> > +
> > +#include <linux/gpio.h>
> > +#include <linux/platform_device.h>
> > +#include <linux/types.h>
> > +
> > +#ifdef DEBUG
> > +#define DEV_DBG(fmt, args...)   pr_err(fmt, ##args)
> > +#else
> > +#define DEV_DBG(fmt, args...)   pr_debug(fmt, ##args)
> > +#endif
> > +#define DEV_INFO(fmt, args...)  pr_info(fmt, ##args)
> > +#define DEV_WARN(fmt, args...)  pr_warn(fmt, ##args)
> > +#define DEV_ERR(fmt, args...)   pr_err(fmt, ##args)
> > +
> > +struct dss_gpio {
> > +       unsigned int gpio;
> > +       unsigned int value;
> > +       char gpio_name[32];
> > +};
> > +
> > +enum dss_clk_type {
> > +       DSS_CLK_AHB, /* no set rate. rate controlled through rpm */
> > +       DSS_CLK_PCLK,
> > +};
> > +
> > +struct dss_clk {
> > +       struct clk *clk; /* clk handle */
> > +       char clk_name[32];
> > +       enum dss_clk_type type;
> > +       unsigned long rate;
> > +       unsigned long max_rate;
> > +};
> > +
> > +struct dss_module_power {
> > +       unsigned int num_gpio;
> > +       struct dss_gpio *gpio_config;
> > +       unsigned int num_clk;
> > +       struct dss_clk *clk_config;
> > +};
> > +
> > +int msm_dss_get_clk(struct device *dev, struct dss_clk *clk_arry, int num_clk);
> > +void msm_dss_put_clk(struct dss_clk *clk_arry, int num_clk);
> > +int msm_dss_clk_set_rate(struct dss_clk *clk_arry, int num_clk);
> > +int msm_dss_enable_clk(struct dss_clk *clk_arry, int num_clk, int enable);
> > +int msm_dss_parse_clock(struct platform_device *pdev,
> > +               struct dss_module_power *mp);
> > +#endif /* __DPU_IO_UTIL_H__ */
> > diff --git a/drivers/gpu/drm/msm/msm_drv.h b/drivers/gpu/drm/msm/msm_drv.h
> > index d5937ba..811f7d4 100644
> > --- a/drivers/gpu/drm/msm/msm_drv.h
> > +++ b/drivers/gpu/drm/msm/msm_drv.h
> > @@ -33,7 +33,6 @@
> >  #include <linux/types.h>
> >  #include <linux/of_graph.h>
> >  #include <linux/of_device.h>
> > -#include <linux/dpu_io_util.h>
> >  #include <asm/sizes.h>
> >  #include <linux/kthread.h>
> >
> > diff --git a/include/linux/dpu_io_util.h b/include/linux/dpu_io_util.h
> > deleted file mode 100644
> > index 45e606f..0000000
> > --- a/include/linux/dpu_io_util.h
> > +++ /dev/null
> > @@ -1,115 +0,0 @@
> > -/* Copyright (c) 2012, 2017-2018, The Linux Foundation. All rights reserved.
> > - *
> > - * This program is free software; you can redistribute it and/or modify
> > - * it under the terms of the GNU General Public License version 2 and
> > - * only version 2 as published by the Free Software Foundation.
> > - *
> > - * This program is distributed in the hope that 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.
> > - */
> > -
> > -#ifndef __DPU_IO_UTIL_H__
> > -#define __DPU_IO_UTIL_H__
> > -
> > -#include <linux/gpio.h>
> > -#include <linux/platform_device.h>
> > -#include <linux/regulator/consumer.h>
> > -#include <linux/i2c.h>
> > -#include <linux/types.h>
> > -
> > -#ifdef DEBUG
> > -#define DEV_DBG(fmt, args...)   pr_err(fmt, ##args)
> > -#else
> > -#define DEV_DBG(fmt, args...)   pr_debug(fmt, ##args)
> > -#endif
> > -#define DEV_INFO(fmt, args...)  pr_info(fmt, ##args)
> > -#define DEV_WARN(fmt, args...)  pr_warn(fmt, ##args)
> > -#define DEV_ERR(fmt, args...)   pr_err(fmt, ##args)
> > -
> > -struct dss_io_data {
> > -       u32 len;
> > -       void __iomem *base;
> > -};
> > -
> > -void dss_reg_w(struct dss_io_data *io, u32 offset, u32 value, u32 debug);
> > -u32 dss_reg_r(struct dss_io_data *io, u32 offset, u32 debug);
> > -void dss_reg_dump(void __iomem *base, u32 len, const char *prefix, u32 debug);
> > -
> > -#define DSS_REG_W_ND(io, offset, val)  dss_reg_w(io, offset, val, false)
> > -#define DSS_REG_W(io, offset, val)     dss_reg_w(io, offset, val, true)
> > -#define DSS_REG_R_ND(io, offset)       dss_reg_r(io, offset, false)
> > -#define DSS_REG_R(io, offset)          dss_reg_r(io, offset, true)
> > -
> > -enum dss_vreg_type {
> > -       DSS_REG_LDO,
> > -       DSS_REG_VS,
> > -};
> > -
> > -struct dss_vreg {
> > -       struct regulator *vreg; /* vreg handle */
> > -       char vreg_name[32];
> > -       int min_voltage;
> > -       int max_voltage;
> > -       int enable_load;
> > -       int disable_load;
> > -       int pre_on_sleep;
> > -       int post_on_sleep;
> > -       int pre_off_sleep;
> > -       int post_off_sleep;
> > -};
> > -
> > -struct dss_gpio {
> > -       unsigned int gpio;
> > -       unsigned int value;
> > -       char gpio_name[32];
> > -};
> > -
> > -enum dss_clk_type {
> > -       DSS_CLK_AHB, /* no set rate. rate controlled through rpm */
> > -       DSS_CLK_PCLK,
> > -       DSS_CLK_OTHER,
> > -};
> > -
> > -struct dss_clk {
> > -       struct clk *clk; /* clk handle */
> > -       char clk_name[32];
> > -       enum dss_clk_type type;
> > -       unsigned long rate;
> > -       unsigned long max_rate;
> > -};
> > -
> > -struct dss_module_power {
> > -       unsigned int num_vreg;
> > -       struct dss_vreg *vreg_config;
> > -       unsigned int num_gpio;
> > -       struct dss_gpio *gpio_config;
> > -       unsigned int num_clk;
> > -       struct dss_clk *clk_config;
> > -};
> > -
> > -int msm_dss_ioremap_byname(struct platform_device *pdev,
> > -       struct dss_io_data *io_data, const char *name);
> > -void msm_dss_iounmap(struct dss_io_data *io_data);
> > -
> > -int msm_dss_enable_gpio(struct dss_gpio *in_gpio, int num_gpio, int enable);
> > -int msm_dss_gpio_enable(struct dss_gpio *in_gpio, int num_gpio, int enable);
> > -
> > -int msm_dss_config_vreg(struct device *dev, struct dss_vreg *in_vreg,
> > -       int num_vreg, int config);
> > -int msm_dss_enable_vreg(struct dss_vreg *in_vreg, int num_vreg,        int enable);
> > -
> > -int msm_dss_get_clk(struct device *dev, struct dss_clk *clk_arry, int num_clk);
> > -void msm_dss_put_clk(struct dss_clk *clk_arry, int num_clk);
> > -int msm_dss_clk_set_rate(struct dss_clk *clk_arry, int num_clk);
> > -int msm_dss_enable_clk(struct dss_clk *clk_arry, int num_clk, int enable);
> > -int msm_dss_parse_clock(struct platform_device *pdev,
> > -               struct dss_module_power *mp);
> > -
> > -int dpu_i2c_byte_read(struct i2c_client *client, uint8_t slave_addr,
> > -                      uint8_t reg_offset, uint8_t *read_buf);
> > -int dpu_i2c_byte_write(struct i2c_client *client, uint8_t slave_addr,
> > -                       uint8_t reg_offset, uint8_t *value);
> > -
> > -#endif /* __DPU_IO_UTIL_H__ */
> > --
> > The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
> > a Linux Foundation Collaborative Project
> >

-- 
The Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
a Linux Foundation Collaborative Project
_______________________________________________
Freedreno mailing list
Freedreno@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/freedreno

  parent reply	other threads:[~2018-06-22 15:33 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-05-30 14:49 [DPU PATCH 00/11] Remove unused code and cleanup devicetree bindings for DPU driver Rajesh Yadav
2018-05-30 14:49 ` [DPU PATCH 05/11] drm/msm/dpu: remove writeback support Rajesh Yadav
2018-05-30 14:49 ` [DPU PATCH 06/11] drm/msm/dpu: remove hdcp support Rajesh Yadav
2018-05-30 14:49 ` [DPU PATCH 08/11] dt-bindings: msm/disp: cleanup bindings for Snapdragon 845 DPU Rajesh Yadav
     [not found] ` <1527691788-9350-1-git-send-email-ryadav-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2018-05-30 14:49   ` [DPU PATCH 01/11] dt-bindings: msm/disp: remove unused dsi & panel bindings Rajesh Yadav
2018-05-30 14:49   ` [DPU PATCH 02/11] dt-bindings: msm/disp: remove unused display port bindings Rajesh Yadav
2018-05-30 14:49   ` [DPU PATCH 03/11] Revert "drm/msm: Add DisplayPort support" Rajesh Yadav
2018-05-30 14:49   ` [DPU PATCH 04/11] dt-bindings: msm/disp: remove unused writeback bindings Rajesh Yadav
2018-05-30 14:49   ` [DPU PATCH 07/11] drm/msm/dpu: remove dt parsing logic for bus_scale config Rajesh Yadav
2018-05-30 14:49   ` [DPU PATCH 09/11] drm/msm/dpu: Remove unused code and move the header Rajesh Yadav
     [not found]     ` <1527691788-9350-10-git-send-email-ryadav-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2018-06-22 13:51       ` Sean Paul
     [not found]         ` <CAOw6vbLXWojrjXUQq62+n-BDbtQsyBLq_xYGe0RSqnsxo2Ep5Q-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2018-06-22 15:33           ` Jordan Crouse [this message]
     [not found]             ` <20180622153352.GE24526-9PYrDHPZ2Orvke4nUoYGnHL1okKdlPRT@public.gmane.org>
2018-06-22 17:39               ` ryadav-sgV2jX0FEOL9JmXXK+q4OQ
2018-05-30 14:49   ` [DPU PATCH 10/11] drm/msm/dpu: correct dpu_io_util.h include path Rajesh Yadav
     [not found]     ` <1527691788-9350-11-git-send-email-ryadav-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2018-05-30 16:30       ` Jordan Crouse
     [not found]         ` <20180530163005.GC5028-9PYrDHPZ2Orvke4nUoYGnHL1okKdlPRT@public.gmane.org>
2018-05-31 11:41           ` ryadav-sgV2jX0FEOL9JmXXK+q4OQ
2018-05-30 14:49   ` [DPU PATCH 11/11] drm/msm/dpu: move dpu_io_util to dpu folder Rajesh Yadav

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180622153352.GE24526@jcrouse-lnx.qualcomm.com \
    --to=jcrouse-sgv2jx0feol9jmxxk+q4oq@public.gmane.org \
    --cc=devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org \
    --cc=freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org \
    --cc=hoegsberg-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org \
    --cc=linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=robdclark-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
    --cc=ryadav-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org \
    --cc=seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.