All of lore.kernel.org
 help / color / mirror / Atom feed
From: Stephen Warren <swarren@wwwdotorg.org>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 8/8] dm: tegra: pci: Convert tegra boards to driver model for PCI
Date: Wed, 21 Oct 2015 14:46:12 -0600	[thread overview]
Message-ID: <5627F994.5030802@wwwdotorg.org> (raw)
In-Reply-To: <1445104205-4079-9-git-send-email-sjg@chromium.org>

On 10/17/2015 11:50 AM, Simon Glass wrote:
> Adjust the Tegra PCI driver to support driver model and move all boards over
> at the same time. This can make use of some generic driver model code, such
> as the range decoding logic.

FYI, this patch has quite a few conflicts with my series to add Tegra210 
support. See the git branch I mentioned earlier for a quick-n-dirty 
resolution to the conflicts, and subsequent fixups.

> diff --git a/arch/arm/mach-tegra/Kconfig b/arch/arm/mach-tegra/Kconfig
> index a5b7e0d..aff4900 100644
> --- a/arch/arm/mach-tegra/Kconfig
> +++ b/arch/arm/mach-tegra/Kconfig
> @@ -12,6 +12,7 @@ config TEGRA_ARMV7_COMMON
>   	select DM_I2C
>   	select DM_SPI
>   	select DM_GPIO
> +	select DM_PCI

I wonder if we shouldn't create the TEGRA_COMMON config variable now, 
since many of the options are common to both TEGRA_ARMV7_COMMON and 
TEGRA210. Perhaps also TEGRA_ARMV8_COMMON too, although currently 
there's only support for a single ARMV8 Tegra chip in U-Boot.

> diff --git a/drivers/pci/pci_tegra.c b/drivers/pci/pci_tegra.c

> -#define DEBUG

I actually find the debug prints useful, but yes I suppose debug should 
be turned off!

> -static int tegra_pcie_read_conf(struct pci_controller *hose, pci_dev_t bdf,
> -				int where, u32 *value)
> +static int pci_tegra_read_config(struct udevice *bus, pci_dev_t bdf,
> +				 uint offset, ulong *valuep,
> +				 enum pci_size_t size)
>   {
> -	struct tegra_pcie *pcie = to_tegra_pcie(hose);
> -	unsigned long address;
> +	struct tegra_pcie *pcie = dev_get_priv(bus);
> +	unsigned long address, value;
>   	int err;
>
> -	err = tegra_pcie_conf_address(pcie, bdf, where, &address);
> +	err = tegra_pcie_conf_address(pcie, bdf, offset, &address);
>   	if (err < 0) {
> -		*value = 0xffffffff;
> -		return 1;
> +		value = 0xffffffff;
> +		goto done;
>   	}
>
> -	*value = readl(address);
> +	value = readl(address);

This function used to be used only for dword-sized reads. Presumably in 
that case, "where" was always dword-aligned. When used for 
word/byte-sized reads, the wrappers to do that (e.g. 
pci_hose_read_config_word_via_dword) used to force the address passed to 
this function to be dword-aligned. Now that this function handles all 
sizes of read, I think it needs to align the address itself, doesn't it; 
i.e. pass "offset & ~3" to tegra_pcie_conf_address() or "address & ~3" 
to readl()? Same for the write function below.

This seems to work in practice without generating any alignment faults 
though; I'm not sure why. Perhaps I'm missing something, or we're just 
getting lucky?

> +int pci_skip_dev(struct pci_controller *hose, pci_dev_t dev)

The diff might be slightly smaller/clearer if this function wasn't moved?

  reply	other threads:[~2015-10-21 20:46 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-10-17 17:49 [U-Boot] [PATCH 0/8] dm: pci: tegra: Convert Tegra PCI to driver model Simon Glass
2015-10-17 17:49 ` [U-Boot] [PATCH 1/8] dm: tegra: pci: Move CONFIG_PCI_TEGRA to Kconfig Simon Glass
2015-10-21 20:13   ` Stephen Warren
2015-10-23 15:45     ` Simon Glass
2015-10-17 17:49 ` [U-Boot] [PATCH 2/8] dm: pci: Avoid a driver model build error with CONFIG_CMD_PCI_ENUM Simon Glass
2015-10-21 20:16   ` Stephen Warren
2015-10-23 15:47     ` Simon Glass
2015-10-23 17:30       ` Stephen Warren
2015-11-09 14:33         ` Thierry Reding
2015-10-17 17:50 ` [U-Boot] [PATCH 3/8] RFC: dm: pci: Set up the SDRAM mapping correctly Simon Glass
2015-10-21 20:19   ` Stephen Warren
2015-10-17 17:50 ` [U-Boot] [PATCH 4/8] dm: pci: Support decoding ranges with duplicate entries Simon Glass
2015-10-21 20:25   ` Stephen Warren
2015-10-23 15:50     ` Simon Glass
2015-10-17 17:50 ` [U-Boot] [PATCH 5/8] dm: pci: Add functions to emulate 8- and 16-bit access Simon Glass
2015-10-21 20:29   ` Stephen Warren
2015-10-17 17:50 ` [U-Boot] [PATCH 6/8] dm: pci: Add a function to get the controller for a bus Simon Glass
2015-10-25  3:11   ` Bin Meng
2015-10-17 17:50 ` [U-Boot] [PATCH 7/8] dm: pci: Add a function to find the regions for a PCI bus Simon Glass
2015-10-21 20:31   ` Stephen Warren
2015-10-17 17:50 ` [U-Boot] [PATCH 8/8] dm: tegra: pci: Convert tegra boards to driver model for PCI Simon Glass
2015-10-21 20:46   ` Stephen Warren [this message]
2015-11-12 16:06     ` Simon Glass

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=5627F994.5030802@wwwdotorg.org \
    --to=swarren@wwwdotorg.org \
    --cc=u-boot@lists.denx.de \
    /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.