linux-pci.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] PCI: designware: Make dw_pcie_rd_own_conf(), etc., static
@ 2013-10-08  0:04 Bjorn Helgaas
  2013-10-08  0:07 ` Bjorn Helgaas
  2013-10-09  7:50 ` Jingoo Han
  0 siblings, 2 replies; 8+ messages in thread
From: Bjorn Helgaas @ 2013-10-08  0:04 UTC (permalink / raw)
  To: Jingoo Han; +Cc: linux-pci

The following variables and functions are used only in pcie-designware.c,
so make them static:

  global_io_offset
  dw_pcie_rd_own_conf()
  dw_pcie_wr_own_conf()
  dw_pcie_setup()
  dw_pcie_scan_bus()
  dw_pcie_map_irq()

Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
---
 drivers/pci/host/pcie-designware.c |   16 ++++++++--------
 drivers/pci/host/pcie-designware.h |    7 -------
 2 files changed, 8 insertions(+), 15 deletions(-)

diff --git a/drivers/pci/host/pcie-designware.c b/drivers/pci/host/pcie-designware.c
index c10e9ac..900e875 100644
--- a/drivers/pci/host/pcie-designware.c
+++ b/drivers/pci/host/pcie-designware.c
@@ -64,7 +64,7 @@
 
 static struct hw_pci dw_pci;
 
-unsigned long global_io_offset;
+static unsigned long global_io_offset;
 
 static inline struct pcie_port *sys_to_pcie(struct pci_sys_data *sys)
 {
@@ -115,8 +115,8 @@ static inline void dw_pcie_writel_rc(struct pcie_port *pp, u32 val, u32 reg)
 		writel(val, pp->dbi_base + reg);
 }
 
-int dw_pcie_rd_own_conf(struct pcie_port *pp, int where, int size,
-				u32 *val)
+static int dw_pcie_rd_own_conf(struct pcie_port *pp, int where, int size,
+			       u32 *val)
 {
 	int ret;
 
@@ -128,8 +128,8 @@ int dw_pcie_rd_own_conf(struct pcie_port *pp, int where, int size,
 	return ret;
 }
 
-int dw_pcie_wr_own_conf(struct pcie_port *pp, int where, int size,
-				u32 val)
+static int dw_pcie_wr_own_conf(struct pcie_port *pp, int where, int size,
+			       u32 val)
 {
 	int ret;
 
@@ -438,7 +438,7 @@ static struct pci_ops dw_pcie_ops = {
 	.write = dw_pcie_wr_conf,
 };
 
-int dw_pcie_setup(int nr, struct pci_sys_data *sys)
+static int dw_pcie_setup(int nr, struct pci_sys_data *sys)
 {
 	struct pcie_port *pp;
 
@@ -461,7 +461,7 @@ int dw_pcie_setup(int nr, struct pci_sys_data *sys)
 	return 1;
 }
 
-struct pci_bus *dw_pcie_scan_bus(int nr, struct pci_sys_data *sys)
+static struct pci_bus *dw_pcie_scan_bus(int nr, struct pci_sys_data *sys)
 {
 	struct pci_bus *bus;
 	struct pcie_port *pp = sys_to_pcie(sys);
@@ -478,7 +478,7 @@ struct pci_bus *dw_pcie_scan_bus(int nr, struct pci_sys_data *sys)
 	return bus;
 }
 
-int dw_pcie_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
+static int dw_pcie_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
 {
 	struct pcie_port *pp = sys_to_pcie(dev->bus->sysdata);
 
diff --git a/drivers/pci/host/pcie-designware.h b/drivers/pci/host/pcie-designware.h
index 133820f..401b154 100644
--- a/drivers/pci/host/pcie-designware.h
+++ b/drivers/pci/host/pcie-designware.h
@@ -51,15 +51,8 @@ struct pcie_host_ops {
 	void (*host_init)(struct pcie_port *pp);
 };
 
-extern unsigned long global_io_offset;
-
 int cfg_read(void __iomem *addr, int where, int size, u32 *val);
 int cfg_write(void __iomem *addr, int where, int size, u32 val);
-int dw_pcie_wr_own_conf(struct pcie_port *pp, int where, int size, u32 val);
-int dw_pcie_rd_own_conf(struct pcie_port *pp, int where, int size, u32 *val);
 int dw_pcie_link_up(struct pcie_port *pp);
 void dw_pcie_setup_rc(struct pcie_port *pp);
 int dw_pcie_host_init(struct pcie_port *pp);
-int dw_pcie_setup(int nr, struct pci_sys_data *sys);
-struct pci_bus *dw_pcie_scan_bus(int nr, struct pci_sys_data *sys);
-int dw_pcie_map_irq(const struct pci_dev *dev, u8 slot, u8 pin);


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH] PCI: designware: Make dw_pcie_rd_own_conf(), etc., static
  2013-10-08  0:04 [PATCH] PCI: designware: Make dw_pcie_rd_own_conf(), etc., static Bjorn Helgaas
@ 2013-10-08  0:07 ` Bjorn Helgaas
  2013-10-08  6:06   ` Pratyush Anand
  2013-10-09  7:50 ` Jingoo Han
  1 sibling, 1 reply; 8+ messages in thread
From: Bjorn Helgaas @ 2013-10-08  0:07 UTC (permalink / raw)
  To: Jingoo Han; +Cc: linux-pci@vger.kernel.org

On Mon, Oct 7, 2013 at 6:04 PM, Bjorn Helgaas <bhelgaas@google.com> wrote:
> The following variables and functions are used only in pcie-designware.c,
> so make them static:
...
> diff --git a/drivers/pci/host/pcie-designware.c b/drivers/pci/host/pcie-designware.c
> index c10e9ac..900e875 100644
> --- a/drivers/pci/host/pcie-designware.c
> +++ b/drivers/pci/host/pcie-designware.c
> @@ -64,7 +64,7 @@
>
>  static struct hw_pci dw_pci;
>
> -unsigned long global_io_offset;
> +static unsigned long global_io_offset;

While you're looking at this, I think "cfg_read()" and "cfg_write()"
are too generic to be global symbols.  I don't know if it would make
sense to rename them "dw_cfg_read()", pass around pointers in a
structure or what.

Bjorn

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] PCI: designware: Make dw_pcie_rd_own_conf(), etc., static
  2013-10-08  0:07 ` Bjorn Helgaas
@ 2013-10-08  6:06   ` Pratyush Anand
  2013-10-09  1:33     ` Jingoo Han
  0 siblings, 1 reply; 8+ messages in thread
From: Pratyush Anand @ 2013-10-08  6:06 UTC (permalink / raw)
  To: Bjorn Helgaas; +Cc: Jingoo Han, linux-pci@vger.kernel.org

On Tue, Oct 08, 2013 at 08:07:24AM +0800, Bjorn Helgaas wrote:
> On Mon, Oct 7, 2013 at 6:04 PM, Bjorn Helgaas <bhelgaas@google.com> wrote:
> > The following variables and functions are used only in pcie-designware.c,
> > so make them static:
> ...
> > diff --git a/drivers/pci/host/pcie-designware.c b/drivers/pci/host/pcie-designware.c
> > index c10e9ac..900e875 100644
> > --- a/drivers/pci/host/pcie-designware.c
> > +++ b/drivers/pci/host/pcie-designware.c
> > @@ -64,7 +64,7 @@
> >
> >  static struct hw_pci dw_pci;
> >
> > -unsigned long global_io_offset;
> > +static unsigned long global_io_offset;
> 
> While you're looking at this, I think "cfg_read()" and "cfg_write()"
> are too generic to be global symbols.  I don't know if it would make
> sense to rename them "dw_cfg_read()", pass around pointers in a
> structure or what.

In fact cfg_read, cfg_write & sys_to_pcie should go to common library,
as you will find similar function in other files too.

Regards
Pratyush

> 
> Bjorn
> --
> To unsubscribe from this list: send the line "unsubscribe linux-pci" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] PCI: designware: Make dw_pcie_rd_own_conf(), etc., static
  2013-10-08  6:06   ` Pratyush Anand
@ 2013-10-09  1:33     ` Jingoo Han
  2013-10-09  9:49       ` Thomas Petazzoni
  0 siblings, 1 reply; 8+ messages in thread
From: Jingoo Han @ 2013-10-09  1:33 UTC (permalink / raw)
  To: 'Pratyush Anand', 'Bjorn Helgaas'
  Cc: linux-pci, 'Thierry Reding', 'Jason Cooper',
	'Thomas Petazzoni', 'Andrew Lunn',
	'Gregory Clement', 'Kishon Vijay Abraham I',
	'Shawn Guo', 'Sean Cross', 'Jingoo Han'

On Tuesday, October 08, 2013 3:07 PM, Pratyush Anand wrote:
> On Tue, Oct 08, 2013 at 08:07:24AM +0800, Bjorn Helgaas wrote:
> > On Mon, Oct 7, 2013 at 6:04 PM, Bjorn Helgaas <bhelgaas@google.com> wrote:
> > > The following variables and functions are used only in pcie-designware.c,
> > > so make them static:
> > ...
> > > diff --git a/drivers/pci/host/pcie-designware.c b/drivers/pci/host/pcie-designware.c
> > > index c10e9ac..900e875 100644
> > > --- a/drivers/pci/host/pcie-designware.c
> > > +++ b/drivers/pci/host/pcie-designware.c
> > > @@ -64,7 +64,7 @@
> > >
> > >  static struct hw_pci dw_pci;
> > >
> > > -unsigned long global_io_offset;
> > > +static unsigned long global_io_offset;
> >
> > While you're looking at this, I think "cfg_read()" and "cfg_write()"
> > are too generic to be global symbols.  I don't know if it would make
> > sense to rename them "dw_cfg_read()", pass around pointers in a
> > structure or what.
> 
> In fact cfg_read, cfg_write & sys_to_pcie should go to common library,
> as you will find similar function in other files too.
> 

(+CC each PCIe host controller maintainer)

Yes, you're right. I think so, too. :-)

cfg_read, cfg_write & sys_to_pcie can go to common library.
I looked at pcie-designware.c, pci-tegra.c, & pci-mvebu.c.
These drivers can use common cfg_read(), cfg_write(), and sys_to_pcie().

For example, common cfg_read() can be used as below:
If there is no objection, I will send the patch.
However, I cannot decide which file is a good place for the common
cfg_read(), cfg_write(), and sys_to_pcie().

int cfg_read(void __iomem *addr, int where, int size, u32 *val)
{
        *val = readl(addr);

        if (size == 1)
                *val = (*val >> (8 * (where & 3))) & 0xff;
        else if (size == 2)
                *val = (*val >> (8 * (where & 3))) & 0xffff;
        else if (size != 4)
                return PCIBIOS_BAD_REGISTER_NUMBER;

        return PCIBIOS_SUCCESSFUL;
}

./drivers/pci/host/pci-mvebu.c
@@ -243,14 +243,7 @@ static int mvebu_pcie_hw_rd_conf(struct mvebu_pcie_port *port,
        writel(PCIE_CONF_ADDR(bus->number, devfn, where),
               port->base + PCIE_CONF_ADDR_OFF);

-       *val = readl(port->base + PCIE_CONF_DATA_OFF);
-
-       if (size == 1)
-               *val = (*val >> (8 * (where & 3))) & 0xff;
-       else if (size == 2)
-               *val = (*val >> (8 * (where & 3))) & 0xffff;
-
-       return PCIBIOS_SUCCESSFUL;
+       return cfg_read(port->base + PCIE_CONF_DATA_OFF, where, size, val);
 }


./drivers/pci/host/pci-tegra.c
@@ -462,14 +462,7 @@ static int tegra_pcie_read_conf(struct pci_bus *bus, unsigned int devfn,
                return PCIBIOS_DEVICE_NOT_FOUND;
        }

-       *value = readl(addr);
-
-       if (size == 1)
-               *value = (*value >> (8 * (where & 3))) & 0xff;
-       else if (size == 2)
-               *value = (*value >> (8 * (where & 3))) & 0xffff;
-
-       return PCIBIOS_SUCCESSFUL;
+       return cfg_read(addr, where, size, val);
 }

Best regards,
Jingoo Han


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] PCI: designware: Make dw_pcie_rd_own_conf(), etc., static
  2013-10-08  0:04 [PATCH] PCI: designware: Make dw_pcie_rd_own_conf(), etc., static Bjorn Helgaas
  2013-10-08  0:07 ` Bjorn Helgaas
@ 2013-10-09  7:50 ` Jingoo Han
  2013-10-09 15:00   ` Bjorn Helgaas
  1 sibling, 1 reply; 8+ messages in thread
From: Jingoo Han @ 2013-10-09  7:50 UTC (permalink / raw)
  To: 'Bjorn Helgaas'
  Cc: linux-pci, 'Pratyush Anand', 'Jingoo Han'

On Tuesday, October 08, 2013 9:05 AM, Bjorn Helgaas wrote:
> 
> The following variables and functions are used only in pcie-designware.c,
> so make them static:
> 
>   global_io_offset
>   dw_pcie_rd_own_conf()
>   dw_pcie_wr_own_conf()
>   dw_pcie_setup()
>   dw_pcie_scan_bus()
>   dw_pcie_map_irq()
> 
> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>

Acked-by: Jingoo Han <jg1.han@samsung.com>

It looks good.
Also I tested this patch on Exynos5440. It works properly.
Thank you for sending the patch.

Best regards,
Jingoo Han

> ---
>  drivers/pci/host/pcie-designware.c |   16 ++++++++--------
>  drivers/pci/host/pcie-designware.h |    7 -------
>  2 files changed, 8 insertions(+), 15 deletions(-)


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] PCI: designware: Make dw_pcie_rd_own_conf(), etc., static
  2013-10-09  1:33     ` Jingoo Han
@ 2013-10-09  9:49       ` Thomas Petazzoni
  0 siblings, 0 replies; 8+ messages in thread
From: Thomas Petazzoni @ 2013-10-09  9:49 UTC (permalink / raw)
  To: Jingoo Han
  Cc: 'Pratyush Anand', 'Bjorn Helgaas', linux-pci,
	'Thierry Reding', 'Jason Cooper',
	'Andrew Lunn', 'Gregory Clement',
	'Kishon Vijay Abraham I', 'Shawn Guo',
	'Sean Cross'

Dear Jingoo Han,

On Wed, 09 Oct 2013 10:33:30 +0900, Jingoo Han wrote:

> ./drivers/pci/host/pci-mvebu.c
> @@ -243,14 +243,7 @@ static int mvebu_pcie_hw_rd_conf(struct mvebu_pcie_port *port,
>         writel(PCIE_CONF_ADDR(bus->number, devfn, where),
>                port->base + PCIE_CONF_ADDR_OFF);
> 
> -       *val = readl(port->base + PCIE_CONF_DATA_OFF);
> -
> -       if (size == 1)
> -               *val = (*val >> (8 * (where & 3))) & 0xff;
> -       else if (size == 2)
> -               *val = (*val >> (8 * (where & 3))) & 0xffff;
> -
> -       return PCIBIOS_SUCCESSFUL;
> +       return cfg_read(port->base + PCIE_CONF_DATA_OFF, where, size, val);
>  }

The cfg_read() name looks too generic to me to be globally exported in
the kernel, but provided a more specific name is used, I'm fine with
using that in the PCIe mvebu driver.

Thanks!

Thomas
-- 
Thomas Petazzoni, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] PCI: designware: Make dw_pcie_rd_own_conf(), etc., static
  2013-10-09  7:50 ` Jingoo Han
@ 2013-10-09 15:00   ` Bjorn Helgaas
  2013-10-09 15:19     ` Bjorn Helgaas
  0 siblings, 1 reply; 8+ messages in thread
From: Bjorn Helgaas @ 2013-10-09 15:00 UTC (permalink / raw)
  To: Jingoo Han; +Cc: linux-pci@vger.kernel.org, Pratyush Anand

On Wed, Oct 9, 2013 at 1:50 AM, Jingoo Han <jg1.han@samsung.com> wrote:
> On Tuesday, October 08, 2013 9:05 AM, Bjorn Helgaas wrote:
>>
>> The following variables and functions are used only in pcie-designware.c,
>> so make them static:
>>
>>   global_io_offset
>>   dw_pcie_rd_own_conf()
>>   dw_pcie_wr_own_conf()
>>   dw_pcie_setup()
>>   dw_pcie_scan_bus()
>>   dw_pcie_map_irq()
>>
>> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
>
> Acked-by: Jingoo Han <jg1.han@samsung.com>
>
> It looks good.
> Also I tested this patch on Exynos5440. It works properly.
> Thank you for sending the patch.

I applied this to my pci/host-designware branch for v3.13.  Thanks!

>> ---
>>  drivers/pci/host/pcie-designware.c |   16 ++++++++--------
>>  drivers/pci/host/pcie-designware.h |    7 -------
>>  2 files changed, 8 insertions(+), 15 deletions(-)
>

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] PCI: designware: Make dw_pcie_rd_own_conf(), etc., static
  2013-10-09 15:00   ` Bjorn Helgaas
@ 2013-10-09 15:19     ` Bjorn Helgaas
  0 siblings, 0 replies; 8+ messages in thread
From: Bjorn Helgaas @ 2013-10-09 15:19 UTC (permalink / raw)
  To: Jingoo Han; +Cc: linux-pci@vger.kernel.org, Pratyush Anand

On Wed, Oct 9, 2013 at 9:00 AM, Bjorn Helgaas <bhelgaas@google.com> wrote:
> On Wed, Oct 9, 2013 at 1:50 AM, Jingoo Han <jg1.han@samsung.com> wrote:
>> On Tuesday, October 08, 2013 9:05 AM, Bjorn Helgaas wrote:
>>>
>>> The following variables and functions are used only in pcie-designware.c,
>>> so make them static:
>>>
>>>   global_io_offset
>>>   dw_pcie_rd_own_conf()
>>>   dw_pcie_wr_own_conf()
>>>   dw_pcie_setup()
>>>   dw_pcie_scan_bus()
>>>   dw_pcie_map_irq()
>>>
>>> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
>>
>> Acked-by: Jingoo Han <jg1.han@samsung.com>
>>
>> It looks good.
>> Also I tested this patch on Exynos5440. It works properly.
>> Thank you for sending the patch.
>
> I applied this to my pci/host-designware branch for v3.13.  Thanks!

Correction: I moved this to pci/host-exynos because it's tangled up
with the MSI support there.

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2013-10-09 15:19 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-10-08  0:04 [PATCH] PCI: designware: Make dw_pcie_rd_own_conf(), etc., static Bjorn Helgaas
2013-10-08  0:07 ` Bjorn Helgaas
2013-10-08  6:06   ` Pratyush Anand
2013-10-09  1:33     ` Jingoo Han
2013-10-09  9:49       ` Thomas Petazzoni
2013-10-09  7:50 ` Jingoo Han
2013-10-09 15:00   ` Bjorn Helgaas
2013-10-09 15:19     ` Bjorn Helgaas

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).