* [PATCHv5 1/3] ARM: tegra: Add Tegra AHB driver @ 2012-05-07 6:43 Hiroshi DOYU [not found] ` <1336373032-16881-1-git-send-email-hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org> 2012-05-07 8:04 ` Arnd Bergmann 0 siblings, 2 replies; 12+ messages in thread From: Hiroshi DOYU @ 2012-05-07 6:43 UTC (permalink / raw) To: swarren-3lzwWm7+Weoh9ZMKESR00Q Cc: linux-tegra-u79uwXL29TY76Z2rM5mHXA, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, Hiroshi DOYU, Felipe Balbi, Arnd Bergmann, Grant Likely, Rob Herring, Rob Landley, Colin Cross, Olof Johansson, Russell King, Greg Kroah-Hartman, Ohad Ben-Cohen, Linus Walleij, John W. Linville, MyungJoo Ham, devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ, linux-doc-u79uwXL29TY76Z2rM5mHXA, linux-kernel-u79uwXL29TY76Z2rM5mHXA Tegra AHB Bus conforms to the AMBA Specification (Rev 2.0) Advanced High-performance Bus (AHB) architecture. The AHB Arbiter controls AHB bus master arbitration. This effectively forms a second level of arbitration for access to the memory controller through the AHB Slave Memory device. The AHB pre-fetch logic can be configured to enhance performance for devices doing sequential access. Each AHB master is assigned to either the high or low priority bin. Both Tegra20/30 have this AHB bus. Some of configuration params could be passed from DT too if needed. Signed-off-by: Hiroshi DOYU <hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org> Cc: Felipe Balbi <balbi-l0cyMroinI0@public.gmane.org> Cc: Arnd Bergmann <arnd-r2nGTMty4D4@public.gmane.org> --- .../bindings/arm/tegra/nvidia,tegra20-ahb.txt | 11 + arch/arm/mach-tegra/Kconfig | 8 + drivers/Makefile | 2 +- drivers/amba/Makefile | 4 +- drivers/amba/tegra-ahb.c | 261 ++++++++++++++++++++ 5 files changed, 283 insertions(+), 3 deletions(-) diff --git a/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-ahb.txt b/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-ahb.txt new file mode 100644 index 0000000..234406d --- /dev/null +++ b/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-ahb.txt @@ -0,0 +1,11 @@ +NVIDIA Tegra AHB + +Required properties: +- compatible : "nvidia,tegra20-ahb" or "nvidia,tegra30-ahb" +- reg : Should contain 1 register ranges(address and length) + +Example: + ahb: ahb@6000c004 { + compatible = "nvidia,tegra20-ahb"; + reg = <0x6000c004 0x10c>; /* AHB Arbitration + Gizmo Controller */ + }; diff --git a/arch/arm/mach-tegra/Kconfig b/arch/arm/mach-tegra/Kconfig index 204d3d4..6a113a9 100644 --- a/arch/arm/mach-tegra/Kconfig +++ b/arch/arm/mach-tegra/Kconfig @@ -50,6 +50,14 @@ config TEGRA_PCI depends on ARCH_TEGRA_2x_SOC select PCI +config TEGRA_AHB + bool "Enable AHB driver for NVIDIA Tegra SoCs" + default y + help + Adds AHB configuration functionality for NVIDIA Tegra SoCs, + which controls AHB bus master arbitration and some + perfomance parameters(priority, prefech size). + comment "Tegra board type" config MACH_HARMONY diff --git a/drivers/Makefile b/drivers/Makefile index 5870322..d97e2e2 100644 --- a/drivers/Makefile +++ b/drivers/Makefile @@ -18,7 +18,7 @@ obj-$(CONFIG_SFI) += sfi/ # PnP must come after ACPI since it will eventually need to check if acpi # was used and do nothing if so obj-$(CONFIG_PNP) += pnp/ -obj-$(CONFIG_ARM_AMBA) += amba/ +obj-$(CONFIG_ARM) += amba/ # Many drivers will want to use DMA so this has to be made available # really early. obj-$(CONFIG_DMA_ENGINE) += dma/ diff --git a/drivers/amba/Makefile b/drivers/amba/Makefile index 40fe740..66e81c2 100644 --- a/drivers/amba/Makefile +++ b/drivers/amba/Makefile @@ -1,2 +1,2 @@ -obj-y += bus.o - +obj-$(CONFIG_ARM_AMBA) += bus.o +obj-$(CONFIG_TEGRA_AHB) += tegra-ahb.o diff --git a/drivers/amba/tegra-ahb.c b/drivers/amba/tegra-ahb.c new file mode 100644 index 0000000..106a780 --- /dev/null +++ b/drivers/amba/tegra-ahb.c @@ -0,0 +1,261 @@ +/* + * Copyright (c) 2012, NVIDIA CORPORATION. All rights reserved. + * Copyright (C) 2011 Google, Inc. + * + * Author: + * Jay Cheng <jacheng-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org> + * James Wylder <james.wylder-3WKxDLwmzFNWk0Htik3J/w@public.gmane.org> + * Benoit Goby <benoit-z5hGa2qSFaRBDgjK7y7TUQ@public.gmane.org> + * Colin Cross <ccross-z5hGa2qSFaRBDgjK7y7TUQ@public.gmane.org> + * Hiroshi DOYU <hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org> + * + * This software is licensed under the terms of the GNU General Public + * License version 2, as published by the Free Software Foundation, and + * may be copied, distributed, and modified under those terms. + * + * 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. + * + */ + +#include <linux/kernel.h> +#include <linux/module.h> +#include <linux/platform_device.h> +#include <linux/io.h> + +#define DRV_NAME "tegra-ahb" + +#define AHB_ARBITRATION_DISABLE 0x00 +#define AHB_ARBITRATION_PRIORITY_CTRL 0x04 +#define AHB_PRIORITY_WEIGHT(x) (((x) & 0x7) << 29) +#define PRIORITY_SELECT_USB BIT(6) +#define PRIORITY_SELECT_USB2 BIT(18) +#define PRIORITY_SELECT_USB3 BIT(17) + +#define AHB_GIZMO_AHB_MEM 0x0c +#define ENB_FAST_REARBITRATE BIT(2) +#define DONT_SPLIT_AHB_WR BIT(7) + +#define AHB_GIZMO_APB_DMA 0x10 +#define AHB_GIZMO_IDE 0x18 +#define AHB_GIZMO_USB 0x1c +#define AHB_GIZMO_AHB_XBAR_BRIDGE 0x20 +#define AHB_GIZMO_CPU_AHB_BRIDGE 0x24 +#define AHB_GIZMO_COP_AHB_BRIDGE 0x28 +#define AHB_GIZMO_XBAR_APB_CTLR 0x2c +#define AHB_GIZMO_VCP_AHB_BRIDGE 0x30 +#define AHB_GIZMO_NAND 0x3c +#define AHB_GIZMO_SDMMC4 0x44 +#define AHB_GIZMO_XIO 0x48 +#define AHB_GIZMO_BSEV 0x60 +#define AHB_GIZMO_BSEA 0x70 +#define AHB_GIZMO_NOR 0x74 +#define AHB_GIZMO_USB2 0x78 +#define AHB_GIZMO_USB3 0x7c +#define IMMEDIATE BIT(18) + +#define AHB_GIZMO_SDMMC1 0x80 +#define AHB_GIZMO_SDMMC2 0x84 +#define AHB_GIZMO_SDMMC3 0x88 +#define AHB_MEM_PREFETCH_CFG_X 0xd8 +#define AHB_ARBITRATION_XBAR_CTRL 0xdc +#define AHB_MEM_PREFETCH_CFG3 0xe0 +#define AHB_MEM_PREFETCH_CFG4 0xe4 +#define AHB_MEM_PREFETCH_CFG1 0xec +#define AHB_MEM_PREFETCH_CFG2 0xf0 +#define PREFETCH_ENB BIT(31) +#define MST_ID(x) (((x) & 0x1f) << 26) +#define AHBDMA_MST_ID MST_ID(5) +#define USB_MST_ID MST_ID(6) +#define USB2_MST_ID MST_ID(18) +#define USB3_MST_ID MST_ID(17) +#define ADDR_BNDRY(x) (((x) & 0xf) << 21) +#define INACTIVITY_TIMEOUT(x) (((x) & 0xffff) << 0) + +#define AHB_ARBITRATION_AHB_MEM_WRQUE_MST_ID 0xf8 + +static const u32 tegra_ahb_gizmo[] = { + AHB_ARBITRATION_DISABLE, + AHB_ARBITRATION_PRIORITY_CTRL, + AHB_GIZMO_AHB_MEM, + AHB_GIZMO_APB_DMA, + AHB_GIZMO_IDE, + AHB_GIZMO_USB, + AHB_GIZMO_AHB_XBAR_BRIDGE, + AHB_GIZMO_CPU_AHB_BRIDGE, + AHB_GIZMO_COP_AHB_BRIDGE, + AHB_GIZMO_XBAR_APB_CTLR, + AHB_GIZMO_VCP_AHB_BRIDGE, + AHB_GIZMO_NAND, + AHB_GIZMO_SDMMC4, + AHB_GIZMO_XIO, + AHB_GIZMO_BSEV, + AHB_GIZMO_BSEA, + AHB_GIZMO_NOR, + AHB_GIZMO_USB2, + AHB_GIZMO_USB3, + AHB_GIZMO_SDMMC1, + AHB_GIZMO_SDMMC2, + AHB_GIZMO_SDMMC3, + AHB_MEM_PREFETCH_CFG_X, + AHB_ARBITRATION_XBAR_CTRL, + AHB_MEM_PREFETCH_CFG3, + AHB_MEM_PREFETCH_CFG4, + AHB_MEM_PREFETCH_CFG1, + AHB_MEM_PREFETCH_CFG2, + AHB_ARBITRATION_AHB_MEM_WRQUE_MST_ID, +}; + +struct tegra_ahb { + void __iomem *regs; + struct device *dev; + u32 ctx[0]; +}; + +static inline u32 gizmo_readl(struct tegra_ahb *ahb, u32 offset) +{ + return readl(ahb->regs + offset); +} + +static inline void gizmo_writel(struct tegra_ahb *ahb, u32 value, u32 offset) +{ + writel(value, ahb->regs + offset); +} + +static int tegra_ahb_suspend(struct device *dev) +{ + int i; + struct tegra_ahb *ahb = dev_get_drvdata(dev); + + for (i = 0; i < ARRAY_SIZE(tegra_ahb_gizmo); i++) + ahb->ctx[i] = gizmo_readl(ahb, tegra_ahb_gizmo[i]); + return 0; +} + +static int tegra_ahb_resume(struct device *dev) +{ + int i; + struct tegra_ahb *ahb = dev_get_drvdata(dev); + + for (i = 0; i < ARRAY_SIZE(tegra_ahb_gizmo); i++) + gizmo_writel(ahb, ahb->ctx[i], tegra_ahb_gizmo[i]); + return 0; +} + +static UNIVERSAL_DEV_PM_OPS(tegra_ahb_pm, + tegra_ahb_suspend, + tegra_ahb_resume, NULL); + +static void tegra_ahb_gizmo_init(struct tegra_ahb *ahb) +{ + u32 val; + + val = gizmo_readl(ahb, AHB_GIZMO_AHB_MEM); + val |= ENB_FAST_REARBITRATE | IMMEDIATE | DONT_SPLIT_AHB_WR; + gizmo_writel(ahb, val, AHB_GIZMO_AHB_MEM); + + val = gizmo_readl(ahb, AHB_GIZMO_USB); + val |= IMMEDIATE; + gizmo_writel(ahb, val, AHB_GIZMO_USB); + + val = gizmo_readl(ahb, AHB_GIZMO_USB2); + val |= IMMEDIATE; + gizmo_writel(ahb, val, AHB_GIZMO_USB2); + + val = gizmo_readl(ahb, AHB_GIZMO_USB3); + val |= IMMEDIATE; + gizmo_writel(ahb, val, AHB_GIZMO_USB3); + + val = gizmo_readl(ahb, AHB_ARBITRATION_PRIORITY_CTRL); + val |= PRIORITY_SELECT_USB | + PRIORITY_SELECT_USB2 | + PRIORITY_SELECT_USB3 | + AHB_PRIORITY_WEIGHT(7); + gizmo_writel(ahb, val, AHB_ARBITRATION_PRIORITY_CTRL); + + val = gizmo_readl(ahb, AHB_MEM_PREFETCH_CFG1); + val &= ~MST_ID(~0); + val |= PREFETCH_ENB | + AHBDMA_MST_ID | + ADDR_BNDRY(0xc) | + INACTIVITY_TIMEOUT(0x1000); + gizmo_writel(ahb, val, AHB_MEM_PREFETCH_CFG1); + + val = gizmo_readl(ahb, AHB_MEM_PREFETCH_CFG2); + val &= ~MST_ID(~0); + val |= PREFETCH_ENB | + USB_MST_ID | + ADDR_BNDRY(0xc) | + INACTIVITY_TIMEOUT(0x1000); + gizmo_writel(ahb, val, AHB_MEM_PREFETCH_CFG2); + + val = gizmo_readl(ahb, AHB_MEM_PREFETCH_CFG3); + val &= ~MST_ID(~0); + val |= PREFETCH_ENB | + USB3_MST_ID | + ADDR_BNDRY(0xc) | + INACTIVITY_TIMEOUT(0x1000); + gizmo_writel(ahb, val, AHB_MEM_PREFETCH_CFG3); + + val = gizmo_readl(ahb, AHB_MEM_PREFETCH_CFG4); + val &= ~MST_ID(~0); + val |= PREFETCH_ENB | + USB2_MST_ID | + ADDR_BNDRY(0xc) | + INACTIVITY_TIMEOUT(0x1000); + gizmo_writel(ahb, val, AHB_MEM_PREFETCH_CFG4); +} + +static int __devinit tegra_ahb_probe(struct platform_device *pdev) +{ + struct resource *res; + struct tegra_ahb *ahb; + size_t bytes; + + bytes = sizeof(*ahb) + sizeof(u32) * ARRAY_SIZE(tegra_ahb_gizmo); + ahb = devm_kzalloc(&pdev->dev, bytes, GFP_KERNEL); + if (!ahb) + return -ENOMEM; + + res = platform_get_resource(pdev, IORESOURCE_MEM, 0); + if (!res) + return -ENODEV; + ahb->regs = devm_request_and_ioremap(&pdev->dev, res); + if (!ahb->regs) + return -EBUSY; + + ahb->dev = &pdev->dev; + platform_set_drvdata(pdev, ahb); + tegra_ahb_gizmo_init(ahb); + return 0; +} + +static int __devexit tegra_ahb_remove(struct platform_device *pdev) +{ + return 0; +} + +static const struct of_device_id tegra_ahb_of_match[] __devinitconst = { + { .compatible = "nvidia,tegra30-ahb", }, + { .compatible = "nvidia,tegra20-ahb", }, + {}, +}; + +static struct platform_driver tegra_ahb_driver = { + .probe = tegra_ahb_probe, + .remove = __devexit_p(tegra_ahb_remove), + .driver = { + .name = DRV_NAME, + .owner = THIS_MODULE, + .of_match_table = tegra_ahb_of_match, + .pm = &tegra_ahb_pm, + }, +}; +module_platform_driver(tegra_ahb_driver); + +MODULE_AUTHOR("Hiroshi DOYU <hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>"); +MODULE_DESCRIPTION("Tegra AHB driver"); +MODULE_LICENSE("GPL v2"); +MODULE_ALIAS("platform:" DRV_NAME); -- 1.7.5.4 ^ permalink raw reply related [flat|nested] 12+ messages in thread
[parent not found: <1336373032-16881-1-git-send-email-hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>]
* Re: [PATCHv5 1/3] ARM: tegra: Add Tegra AHB driver [not found] ` <1336373032-16881-1-git-send-email-hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org> @ 2012-05-07 7:42 ` Russell King - ARM Linux [not found] ` <20120507074228.GK26481-l+eeeJia6m9vn6HldHNs0ANdhmdF6hFW@public.gmane.org> 0 siblings, 1 reply; 12+ messages in thread From: Russell King - ARM Linux @ 2012-05-07 7:42 UTC (permalink / raw) To: Hiroshi DOYU Cc: swarren-3lzwWm7+Weoh9ZMKESR00Q, linux-tegra-u79uwXL29TY76Z2rM5mHXA, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, Felipe Balbi, Arnd Bergmann, Grant Likely, Rob Herring, Rob Landley, Colin Cross, Olof Johansson, Greg Kroah-Hartman, Ohad Ben-Cohen, Linus Walleij, John W. Linville, MyungJoo Ham, devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ, linux-doc-u79uwXL29TY76Z2rM5mHXA, linux-kernel-u79uwXL29TY76Z2rM5mHXA On Mon, May 07, 2012 at 09:43:45AM +0300, Hiroshi DOYU wrote: > diff --git a/drivers/Makefile b/drivers/Makefile > index 5870322..d97e2e2 100644 > --- a/drivers/Makefile > +++ b/drivers/Makefile > @@ -18,7 +18,7 @@ obj-$(CONFIG_SFI) += sfi/ > # PnP must come after ACPI since it will eventually need to check if acpi > # was used and do nothing if so > obj-$(CONFIG_PNP) += pnp/ > -obj-$(CONFIG_ARM_AMBA) += amba/ > +obj-$(CONFIG_ARM) += amba/ NAK. This makes amba only buildable for ARM which is not the intention. Other architectures do have Primecells. ^ permalink raw reply [flat|nested] 12+ messages in thread
[parent not found: <20120507074228.GK26481-l+eeeJia6m9vn6HldHNs0ANdhmdF6hFW@public.gmane.org>]
* Re: [PATCHv5 1/3] ARM: tegra: Add Tegra AHB driver [not found] ` <20120507074228.GK26481-l+eeeJia6m9vn6HldHNs0ANdhmdF6hFW@public.gmane.org> @ 2012-05-07 7:52 ` Hiroshi Doyu [not found] ` <20120507.105254.1899925115243585929.hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org> 0 siblings, 1 reply; 12+ messages in thread From: Hiroshi Doyu @ 2012-05-07 7:52 UTC (permalink / raw) To: linux-lFZ/pmaqli7XmaaqVzeoHQ@public.gmane.org Cc: swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org, linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org, balbi-l0cyMroinI0@public.gmane.org, arnd-r2nGTMty4D4@public.gmane.org, grant.likely-s3s/WqlpOiPyB63q8FvJNQ@public.gmane.org, rob.herring-bsGFqQB8/DxBDgjK7y7TUQ@public.gmane.org, rob-VoJi6FS/r0vR7s880joybQ@public.gmane.org, ccross-z5hGa2qSFaRBDgjK7y7TUQ@public.gmane.org, olof-nZhT3qVonbNeoWH0uzbU5w@public.gmane.org, gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org, ohad-Ix1uc/W3ht7QT0dZR+AlfA@public.gmane.org, linus.walleij-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org, linville-2XuSBdqkA4R54TAoqtyWWQ@public.gmane.org, myungjoo.ham-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org, devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org, linux-doc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org From: Russell King - ARM Linux <linux-lFZ/pmaqli7XmaaqVzeoHQ@public.gmane.org> Subject: Re: [PATCHv5 1/3] ARM: tegra: Add Tegra AHB driver Date: Mon, 7 May 2012 09:42:28 +0200 Message-ID: <20120507074228.GK26481-l+eeeJia6m9vn6HldHNs0ANdhmdF6hFW@public.gmane.org> > On Mon, May 07, 2012 at 09:43:45AM +0300, Hiroshi DOYU wrote: > > diff --git a/drivers/Makefile b/drivers/Makefile > > index 5870322..d97e2e2 100644 > > --- a/drivers/Makefile > > +++ b/drivers/Makefile > > @@ -18,7 +18,7 @@ obj-$(CONFIG_SFI) += sfi/ > > # PnP must come after ACPI since it will eventually need to check if acpi > > # was used and do nothing if so > > obj-$(CONFIG_PNP) += pnp/ > > -obj-$(CONFIG_ARM_AMBA) += amba/ > > +obj-$(CONFIG_ARM) += amba/ > > NAK. This makes amba only buildable for ARM which is not the intention. > Other architectures do have Primecells. What about the following? +obj-y += amba/ ^ permalink raw reply [flat|nested] 12+ messages in thread
[parent not found: <20120507.105254.1899925115243585929.hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>]
* Re: [PATCHv5 1/3] ARM: tegra: Add Tegra AHB driver [not found] ` <20120507.105254.1899925115243585929.hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org> @ 2012-05-07 8:59 ` Arnd Bergmann 2012-05-07 9:23 ` Hiroshi Doyu 0 siblings, 1 reply; 12+ messages in thread From: Arnd Bergmann @ 2012-05-07 8:59 UTC (permalink / raw) To: Hiroshi Doyu Cc: linux-lFZ/pmaqli7XmaaqVzeoHQ@public.gmane.org, swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org, linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org, balbi-l0cyMroinI0@public.gmane.org, grant.likely-s3s/WqlpOiPyB63q8FvJNQ@public.gmane.org, rob.herring-bsGFqQB8/DxBDgjK7y7TUQ@public.gmane.org, rob-VoJi6FS/r0vR7s880joybQ@public.gmane.org, ccross-z5hGa2qSFaRBDgjK7y7TUQ@public.gmane.org, olof-nZhT3qVonbNeoWH0uzbU5w@public.gmane.org, gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org, ohad-Ix1uc/W3ht7QT0dZR+AlfA@public.gmane.org, linus.walleij-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org, linville-2XuSBdqkA4R54TAoqtyWWQ@public.gmane.org, myungjoo.ham-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org, devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org, linux-doc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org On Monday 07 May 2012, Hiroshi Doyu wrote: > > On Mon, May 07, 2012 at 09:43:45AM +0300, Hiroshi DOYU wrote: > > > diff --git a/drivers/Makefile b/drivers/Makefile > > > index 5870322..d97e2e2 100644 > > > --- a/drivers/Makefile > > > +++ b/drivers/Makefile > > > @@ -18,7 +18,7 @@ obj-$(CONFIG_SFI) += sfi/ > > > # PnP must come after ACPI since it will eventually need to check if acpi > > > # was used and do nothing if so > > > obj-$(CONFIG_PNP) += pnp/ > > > -obj-$(CONFIG_ARM_AMBA) += amba/ > > > +obj-$(CONFIG_ARM) += amba/ > > > > NAK. This makes amba only buildable for ARM which is not the intention. > > Other architectures do have Primecells. > > What about the following? > > +obj-y += amba/ Looks ok to me, but which problem are you trying to solve anyway? Tegra always enables ARM_AMBA, so AFAICT there is no difference between this and the original code. Arnd ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCHv5 1/3] ARM: tegra: Add Tegra AHB driver 2012-05-07 8:59 ` Arnd Bergmann @ 2012-05-07 9:23 ` Hiroshi Doyu 2012-05-07 10:24 ` Arnd Bergmann 0 siblings, 1 reply; 12+ messages in thread From: Hiroshi Doyu @ 2012-05-07 9:23 UTC (permalink / raw) To: arnd@arndb.de Cc: linux@arm.linux.org.uk, swarren@wwwdotorg.org, linux-tegra@vger.kernel.org, linux-arm-kernel@lists.infradead.org, balbi@ti.com, grant.likely@secretlab.ca, rob.herring@calxeda.com, rob@landley.net, ccross@android.com, olof@lixom.net, gregkh@linuxfoundation.org, ohad@wizery.com, linus.walleij@linaro.org, linville@tuxdriver.com, myungjoo.ham@samsung.com, devicetree-discuss@lists.ozlabs.org, linux-doc@vger.kernel.org From: Arnd Bergmann <arnd@arndb.de> Subject: Re: [PATCHv5 1/3] ARM: tegra: Add Tegra AHB driver Date: Mon, 7 May 2012 10:59:28 +0200 Message-ID: <201205070859.29174.arnd@arndb.de> > On Monday 07 May 2012, Hiroshi Doyu wrote: > > > On Mon, May 07, 2012 at 09:43:45AM +0300, Hiroshi DOYU wrote: > > > > diff --git a/drivers/Makefile b/drivers/Makefile > > > > index 5870322..d97e2e2 100644 > > > > --- a/drivers/Makefile > > > > +++ b/drivers/Makefile > > > > @@ -18,7 +18,7 @@ obj-$(CONFIG_SFI) += sfi/ > > > > # PnP must come after ACPI since it will eventually need to check if acpi > > > > # was used and do nothing if so > > > > obj-$(CONFIG_PNP) += pnp/ > > > > -obj-$(CONFIG_ARM_AMBA) += amba/ > > > > +obj-$(CONFIG_ARM) += amba/ > > > > > > NAK. This makes amba only buildable for ARM which is not the intention. > > > Other architectures do have Primecells. > > > > What about the following? > > > > +obj-y += amba/ > > Looks ok to me, but which problem are you trying to solve anyway? Tegra > always enables ARM_AMBA, so AFAICT there is no difference between this > and the original code. Tegra doesn't enable ARM_AMBA and Tegra doesn't use the following "drivers/amba/bus.c" right now. I needed to make this directory available to ones without ARM_AMBA enabled. drivers/amba/Makefile: obj-$(CONFIG_ARM_AMBA) += bus.o obj-$(CONFIG_TEGRA_AHB) += tegra-ahb.o ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCHv5 1/3] ARM: tegra: Add Tegra AHB driver 2012-05-07 9:23 ` Hiroshi Doyu @ 2012-05-07 10:24 ` Arnd Bergmann [not found] ` <201205071024.48958.arnd-r2nGTMty4D4@public.gmane.org> 0 siblings, 1 reply; 12+ messages in thread From: Arnd Bergmann @ 2012-05-07 10:24 UTC (permalink / raw) To: Hiroshi Doyu Cc: linux@arm.linux.org.uk, swarren@wwwdotorg.org, linux-tegra@vger.kernel.org, linux-arm-kernel@lists.infradead.org, balbi@ti.com, grant.likely@secretlab.ca, rob.herring@calxeda.com, rob@landley.net, ccross@android.com, olof@lixom.net, gregkh@linuxfoundation.org, ohad@wizery.com, linus.walleij@linaro.org, linville@tuxdriver.com, myungjoo.ham@samsung.com, devicetree-discuss@lists.ozlabs.org, linux-doc@vger.kernel.org On Monday 07 May 2012, Hiroshi Doyu wrote: > Tegra doesn't enable ARM_AMBA and Tegra doesn't use the following > "drivers/amba/bus.c" right now. I needed to make this directory > available to ones without ARM_AMBA enabled. Ah, right. I looked at arch/arm/Kconfig earlier to see if tegra enabled ARM_AMBA but was accidentally looking at ARCH_INtegraTOR when grepping for TEGRA ;-) Your proposed solution sounds good then. Arnd ^ permalink raw reply [flat|nested] 12+ messages in thread
[parent not found: <201205071024.48958.arnd-r2nGTMty4D4@public.gmane.org>]
* Re: [PATCHv5 1/3] ARM: tegra: Add Tegra AHB driver [not found] ` <201205071024.48958.arnd-r2nGTMty4D4@public.gmane.org> @ 2012-05-07 11:36 ` Hiroshi Doyu 2012-05-07 15:47 ` Stephen Warren ` (2 more replies) 0 siblings, 3 replies; 12+ messages in thread From: Hiroshi Doyu @ 2012-05-07 11:36 UTC (permalink / raw) To: arnd-r2nGTMty4D4@public.gmane.org, linux-lFZ/pmaqli7XmaaqVzeoHQ@public.gmane.org, swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org Cc: linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org, balbi-l0cyMroinI0@public.gmane.org, grant.likely-s3s/WqlpOiPyB63q8FvJNQ@public.gmane.org, rob.herring-bsGFqQB8/DxBDgjK7y7TUQ@public.gmane.org, rob-VoJi6FS/r0vR7s880joybQ@public.gmane.org, ccross-z5hGa2qSFaRBDgjK7y7TUQ@public.gmane.org, olof-nZhT3qVonbNeoWH0uzbU5w@public.gmane.org, gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org, ohad-Ix1uc/W3ht7QT0dZR+AlfA@public.gmane.org, linus.walleij-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org, linville-2XuSBdqkA4R54TAoqtyWWQ@public.gmane.org, myungjoo.ham-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org, devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org, linux-doc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org From: Arnd Bergmann <arnd-r2nGTMty4D4@public.gmane.org> Subject: Re: [PATCHv5 1/3] ARM: tegra: Add Tegra AHB driver Date: Mon, 7 May 2012 12:24:48 +0200 Message-ID: <201205071024.48958.arnd-r2nGTMty4D4@public.gmane.org> > On Monday 07 May 2012, Hiroshi Doyu wrote: > > Tegra doesn't enable ARM_AMBA and Tegra doesn't use the following > > "drivers/amba/bus.c" right now. I needed to make this directory > > available to ones without ARM_AMBA enabled. > > Ah, right. I looked at arch/arm/Kconfig earlier to see if > tegra enabled ARM_AMBA but was accidentally looking > at ARCH_INtegraTOR when grepping for TEGRA ;-) > > Your proposed solution sounds good then. Thank you for reviewing patches & ACK. Attached the update one here, instead of sending a while series again. >From 16cc2b0fab00c33cd24bb5c43c45a4cda646ad42 Mon Sep 17 00:00:00 2001 From: Hiroshi DOYU <hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org> Date: Wed, 18 Apr 2012 11:41:56 +0300 Subject: [PATCHv5 1/3] ARM: tegra: Add Tegra AHB driver Tegra AHB Bus conforms to the AMBA Specification (Rev 2.0) Advanced High-performance Bus (AHB) architecture. The AHB Arbiter controls AHB bus master arbitration. This effectively forms a second level of arbitration for access to the memory controller through the AHB Slave Memory device. The AHB pre-fetch logic can be configured to enhance performance for devices doing sequential access. Each AHB master is assigned to either the high or low priority bin. Both Tegra20/30 have this AHB bus. Some of configuration params could be passed from DT too if needed. Change-Id: I184e0e1ce033e76881353a4bb99234e2850e99c2 Signed-off-by: Hiroshi DOYU <hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org> Acked-by: Arnd Bergmann <arnd-r2nGTMty4D4@public.gmane.org> Cc: Felipe Balbi <balbi-l0cyMroinI0@public.gmane.org> --- .../bindings/arm/tegra/nvidia,tegra20-ahb.txt | 11 + arch/arm/mach-tegra/Kconfig | 8 + drivers/Makefile | 2 +- drivers/amba/Makefile | 4 +- drivers/amba/tegra-ahb.c | 261 ++++++++++++++++++++ 5 files changed, 283 insertions(+), 3 deletions(-) diff --git a/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-ahb.txt b/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-ahb.txt new file mode 100644 index 0000000..234406d --- /dev/null +++ b/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-ahb.txt @@ -0,0 +1,11 @@ +NVIDIA Tegra AHB + +Required properties: +- compatible : "nvidia,tegra20-ahb" or "nvidia,tegra30-ahb" +- reg : Should contain 1 register ranges(address and length) + +Example: + ahb: ahb@6000c004 { + compatible = "nvidia,tegra20-ahb"; + reg = <0x6000c004 0x10c>; /* AHB Arbitration + Gizmo Controller */ + }; diff --git a/arch/arm/mach-tegra/Kconfig b/arch/arm/mach-tegra/Kconfig index 204d3d4..6a113a9 100644 --- a/arch/arm/mach-tegra/Kconfig +++ b/arch/arm/mach-tegra/Kconfig @@ -50,6 +50,14 @@ config TEGRA_PCI depends on ARCH_TEGRA_2x_SOC select PCI +config TEGRA_AHB + bool "Enable AHB driver for NVIDIA Tegra SoCs" + default y + help + Adds AHB configuration functionality for NVIDIA Tegra SoCs, + which controls AHB bus master arbitration and some + perfomance parameters(priority, prefech size). + comment "Tegra board type" config MACH_HARMONY diff --git a/drivers/Makefile b/drivers/Makefile index 5870322..8ba23a7 100644 --- a/drivers/Makefile +++ b/drivers/Makefile @@ -18,7 +18,7 @@ obj-$(CONFIG_SFI) += sfi/ # PnP must come after ACPI since it will eventually need to check if acpi # was used and do nothing if so obj-$(CONFIG_PNP) += pnp/ -obj-$(CONFIG_ARM_AMBA) += amba/ +obj-y += amba/ # Many drivers will want to use DMA so this has to be made available # really early. obj-$(CONFIG_DMA_ENGINE) += dma/ diff --git a/drivers/amba/Makefile b/drivers/amba/Makefile index 40fe740..66e81c2 100644 --- a/drivers/amba/Makefile +++ b/drivers/amba/Makefile @@ -1,2 +1,2 @@ -obj-y += bus.o - +obj-$(CONFIG_ARM_AMBA) += bus.o +obj-$(CONFIG_TEGRA_AHB) += tegra-ahb.o diff --git a/drivers/amba/tegra-ahb.c b/drivers/amba/tegra-ahb.c new file mode 100644 index 0000000..106a780 --- /dev/null +++ b/drivers/amba/tegra-ahb.c @@ -0,0 +1,261 @@ +/* + * Copyright (c) 2012, NVIDIA CORPORATION. All rights reserved. + * Copyright (C) 2011 Google, Inc. + * + * Author: + * Jay Cheng <jacheng-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org> + * James Wylder <james.wylder-3WKxDLwmzFNWk0Htik3J/w@public.gmane.org> + * Benoit Goby <benoit-z5hGa2qSFaRBDgjK7y7TUQ@public.gmane.org> + * Colin Cross <ccross-z5hGa2qSFaRBDgjK7y7TUQ@public.gmane.org> + * Hiroshi DOYU <hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org> + * + * This software is licensed under the terms of the GNU General Public + * License version 2, as published by the Free Software Foundation, and + * may be copied, distributed, and modified under those terms. + * + * 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. + * + */ + +#include <linux/kernel.h> +#include <linux/module.h> +#include <linux/platform_device.h> +#include <linux/io.h> + +#define DRV_NAME "tegra-ahb" + +#define AHB_ARBITRATION_DISABLE 0x00 +#define AHB_ARBITRATION_PRIORITY_CTRL 0x04 +#define AHB_PRIORITY_WEIGHT(x) (((x) & 0x7) << 29) +#define PRIORITY_SELECT_USB BIT(6) +#define PRIORITY_SELECT_USB2 BIT(18) +#define PRIORITY_SELECT_USB3 BIT(17) + +#define AHB_GIZMO_AHB_MEM 0x0c +#define ENB_FAST_REARBITRATE BIT(2) +#define DONT_SPLIT_AHB_WR BIT(7) + +#define AHB_GIZMO_APB_DMA 0x10 +#define AHB_GIZMO_IDE 0x18 +#define AHB_GIZMO_USB 0x1c +#define AHB_GIZMO_AHB_XBAR_BRIDGE 0x20 +#define AHB_GIZMO_CPU_AHB_BRIDGE 0x24 +#define AHB_GIZMO_COP_AHB_BRIDGE 0x28 +#define AHB_GIZMO_XBAR_APB_CTLR 0x2c +#define AHB_GIZMO_VCP_AHB_BRIDGE 0x30 +#define AHB_GIZMO_NAND 0x3c +#define AHB_GIZMO_SDMMC4 0x44 +#define AHB_GIZMO_XIO 0x48 +#define AHB_GIZMO_BSEV 0x60 +#define AHB_GIZMO_BSEA 0x70 +#define AHB_GIZMO_NOR 0x74 +#define AHB_GIZMO_USB2 0x78 +#define AHB_GIZMO_USB3 0x7c +#define IMMEDIATE BIT(18) + +#define AHB_GIZMO_SDMMC1 0x80 +#define AHB_GIZMO_SDMMC2 0x84 +#define AHB_GIZMO_SDMMC3 0x88 +#define AHB_MEM_PREFETCH_CFG_X 0xd8 +#define AHB_ARBITRATION_XBAR_CTRL 0xdc +#define AHB_MEM_PREFETCH_CFG3 0xe0 +#define AHB_MEM_PREFETCH_CFG4 0xe4 +#define AHB_MEM_PREFETCH_CFG1 0xec +#define AHB_MEM_PREFETCH_CFG2 0xf0 +#define PREFETCH_ENB BIT(31) +#define MST_ID(x) (((x) & 0x1f) << 26) +#define AHBDMA_MST_ID MST_ID(5) +#define USB_MST_ID MST_ID(6) +#define USB2_MST_ID MST_ID(18) +#define USB3_MST_ID MST_ID(17) +#define ADDR_BNDRY(x) (((x) & 0xf) << 21) +#define INACTIVITY_TIMEOUT(x) (((x) & 0xffff) << 0) + +#define AHB_ARBITRATION_AHB_MEM_WRQUE_MST_ID 0xf8 + +static const u32 tegra_ahb_gizmo[] = { + AHB_ARBITRATION_DISABLE, + AHB_ARBITRATION_PRIORITY_CTRL, + AHB_GIZMO_AHB_MEM, + AHB_GIZMO_APB_DMA, + AHB_GIZMO_IDE, + AHB_GIZMO_USB, + AHB_GIZMO_AHB_XBAR_BRIDGE, + AHB_GIZMO_CPU_AHB_BRIDGE, + AHB_GIZMO_COP_AHB_BRIDGE, + AHB_GIZMO_XBAR_APB_CTLR, + AHB_GIZMO_VCP_AHB_BRIDGE, + AHB_GIZMO_NAND, + AHB_GIZMO_SDMMC4, + AHB_GIZMO_XIO, + AHB_GIZMO_BSEV, + AHB_GIZMO_BSEA, + AHB_GIZMO_NOR, + AHB_GIZMO_USB2, + AHB_GIZMO_USB3, + AHB_GIZMO_SDMMC1, + AHB_GIZMO_SDMMC2, + AHB_GIZMO_SDMMC3, + AHB_MEM_PREFETCH_CFG_X, + AHB_ARBITRATION_XBAR_CTRL, + AHB_MEM_PREFETCH_CFG3, + AHB_MEM_PREFETCH_CFG4, + AHB_MEM_PREFETCH_CFG1, + AHB_MEM_PREFETCH_CFG2, + AHB_ARBITRATION_AHB_MEM_WRQUE_MST_ID, +}; + +struct tegra_ahb { + void __iomem *regs; + struct device *dev; + u32 ctx[0]; +}; + +static inline u32 gizmo_readl(struct tegra_ahb *ahb, u32 offset) +{ + return readl(ahb->regs + offset); +} + +static inline void gizmo_writel(struct tegra_ahb *ahb, u32 value, u32 offset) +{ + writel(value, ahb->regs + offset); +} + +static int tegra_ahb_suspend(struct device *dev) +{ + int i; + struct tegra_ahb *ahb = dev_get_drvdata(dev); + + for (i = 0; i < ARRAY_SIZE(tegra_ahb_gizmo); i++) + ahb->ctx[i] = gizmo_readl(ahb, tegra_ahb_gizmo[i]); + return 0; +} + +static int tegra_ahb_resume(struct device *dev) +{ + int i; + struct tegra_ahb *ahb = dev_get_drvdata(dev); + + for (i = 0; i < ARRAY_SIZE(tegra_ahb_gizmo); i++) + gizmo_writel(ahb, ahb->ctx[i], tegra_ahb_gizmo[i]); + return 0; +} + +static UNIVERSAL_DEV_PM_OPS(tegra_ahb_pm, + tegra_ahb_suspend, + tegra_ahb_resume, NULL); + +static void tegra_ahb_gizmo_init(struct tegra_ahb *ahb) +{ + u32 val; + + val = gizmo_readl(ahb, AHB_GIZMO_AHB_MEM); + val |= ENB_FAST_REARBITRATE | IMMEDIATE | DONT_SPLIT_AHB_WR; + gizmo_writel(ahb, val, AHB_GIZMO_AHB_MEM); + + val = gizmo_readl(ahb, AHB_GIZMO_USB); + val |= IMMEDIATE; + gizmo_writel(ahb, val, AHB_GIZMO_USB); + + val = gizmo_readl(ahb, AHB_GIZMO_USB2); + val |= IMMEDIATE; + gizmo_writel(ahb, val, AHB_GIZMO_USB2); + + val = gizmo_readl(ahb, AHB_GIZMO_USB3); + val |= IMMEDIATE; + gizmo_writel(ahb, val, AHB_GIZMO_USB3); + + val = gizmo_readl(ahb, AHB_ARBITRATION_PRIORITY_CTRL); + val |= PRIORITY_SELECT_USB | + PRIORITY_SELECT_USB2 | + PRIORITY_SELECT_USB3 | + AHB_PRIORITY_WEIGHT(7); + gizmo_writel(ahb, val, AHB_ARBITRATION_PRIORITY_CTRL); + + val = gizmo_readl(ahb, AHB_MEM_PREFETCH_CFG1); + val &= ~MST_ID(~0); + val |= PREFETCH_ENB | + AHBDMA_MST_ID | + ADDR_BNDRY(0xc) | + INACTIVITY_TIMEOUT(0x1000); + gizmo_writel(ahb, val, AHB_MEM_PREFETCH_CFG1); + + val = gizmo_readl(ahb, AHB_MEM_PREFETCH_CFG2); + val &= ~MST_ID(~0); + val |= PREFETCH_ENB | + USB_MST_ID | + ADDR_BNDRY(0xc) | + INACTIVITY_TIMEOUT(0x1000); + gizmo_writel(ahb, val, AHB_MEM_PREFETCH_CFG2); + + val = gizmo_readl(ahb, AHB_MEM_PREFETCH_CFG3); + val &= ~MST_ID(~0); + val |= PREFETCH_ENB | + USB3_MST_ID | + ADDR_BNDRY(0xc) | + INACTIVITY_TIMEOUT(0x1000); + gizmo_writel(ahb, val, AHB_MEM_PREFETCH_CFG3); + + val = gizmo_readl(ahb, AHB_MEM_PREFETCH_CFG4); + val &= ~MST_ID(~0); + val |= PREFETCH_ENB | + USB2_MST_ID | + ADDR_BNDRY(0xc) | + INACTIVITY_TIMEOUT(0x1000); + gizmo_writel(ahb, val, AHB_MEM_PREFETCH_CFG4); +} + +static int __devinit tegra_ahb_probe(struct platform_device *pdev) +{ + struct resource *res; + struct tegra_ahb *ahb; + size_t bytes; + + bytes = sizeof(*ahb) + sizeof(u32) * ARRAY_SIZE(tegra_ahb_gizmo); + ahb = devm_kzalloc(&pdev->dev, bytes, GFP_KERNEL); + if (!ahb) + return -ENOMEM; + + res = platform_get_resource(pdev, IORESOURCE_MEM, 0); + if (!res) + return -ENODEV; + ahb->regs = devm_request_and_ioremap(&pdev->dev, res); + if (!ahb->regs) + return -EBUSY; + + ahb->dev = &pdev->dev; + platform_set_drvdata(pdev, ahb); + tegra_ahb_gizmo_init(ahb); + return 0; +} + +static int __devexit tegra_ahb_remove(struct platform_device *pdev) +{ + return 0; +} + +static const struct of_device_id tegra_ahb_of_match[] __devinitconst = { + { .compatible = "nvidia,tegra30-ahb", }, + { .compatible = "nvidia,tegra20-ahb", }, + {}, +}; + +static struct platform_driver tegra_ahb_driver = { + .probe = tegra_ahb_probe, + .remove = __devexit_p(tegra_ahb_remove), + .driver = { + .name = DRV_NAME, + .owner = THIS_MODULE, + .of_match_table = tegra_ahb_of_match, + .pm = &tegra_ahb_pm, + }, +}; +module_platform_driver(tegra_ahb_driver); + +MODULE_AUTHOR("Hiroshi DOYU <hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>"); +MODULE_DESCRIPTION("Tegra AHB driver"); +MODULE_LICENSE("GPL v2"); +MODULE_ALIAS("platform:" DRV_NAME); -- 1.7.5.4 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCHv5 1/3] ARM: tegra: Add Tegra AHB driver 2012-05-07 11:36 ` Hiroshi Doyu @ 2012-05-07 15:47 ` Stephen Warren 2012-05-07 18:36 ` gregkh [not found] ` <20120507.143647.508182574757518311.hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org> 2 siblings, 0 replies; 12+ messages in thread From: Stephen Warren @ 2012-05-07 15:47 UTC (permalink / raw) To: Hiroshi Doyu Cc: arnd@arndb.de, linux@arm.linux.org.uk, linux-tegra@vger.kernel.org, linux-arm-kernel@lists.infradead.org, balbi@ti.com, grant.likely@secretlab.ca, rob.herring@calxeda.com, rob@landley.net, ccross@android.com, olof@lixom.net, gregkh@linuxfoundation.org, ohad@wizery.com, linus.walleij@linaro.org, linville@tuxdriver.com, myungjoo.ham@samsung.com, devicetree-discuss@lists.ozlabs.org, linux-doc@vger.kernel.org On 05/07/2012 05:36 AM, Hiroshi Doyu wrote: > From: Arnd Bergmann <arnd@arndb.de> > Subject: Re: [PATCHv5 1/3] ARM: tegra: Add Tegra AHB driver > Date: Mon, 7 May 2012 12:24:48 +0200 > Message-ID: <201205071024.48958.arnd@arndb.de> > >> On Monday 07 May 2012, Hiroshi Doyu wrote: >>> Tegra doesn't enable ARM_AMBA and Tegra doesn't use the following >>> "drivers/amba/bus.c" right now. I needed to make this directory >>> available to ones without ARM_AMBA enabled. >> >> Ah, right. I looked at arch/arm/Kconfig earlier to see if >> tegra enabled ARM_AMBA but was accidentally looking >> at ARCH_INtegraTOR when grepping for TEGRA ;-) >> >> Your proposed solution sounds good then. > > Thank you for reviewing patches & ACK. Attached the update one here, > instead of sending a while series again. Russell, assuming you're OK with this update patch, is it OK if I take the whole series through the Tegra tree? ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCHv5 1/3] ARM: tegra: Add Tegra AHB driver 2012-05-07 11:36 ` Hiroshi Doyu 2012-05-07 15:47 ` Stephen Warren @ 2012-05-07 18:36 ` gregkh 2012-05-08 5:12 ` Hiroshi Doyu [not found] ` <20120507.143647.508182574757518311.hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org> 2 siblings, 1 reply; 12+ messages in thread From: gregkh @ 2012-05-07 18:36 UTC (permalink / raw) To: Hiroshi Doyu Cc: arnd@arndb.de, linux@arm.linux.org.uk, swarren@wwwdotorg.org, linux-tegra@vger.kernel.org, linux-arm-kernel@lists.infradead.org, balbi@ti.com, grant.likely@secretlab.ca, rob.herring@calxeda.com, rob@landley.net, ccross@android.com, olof@lixom.net, ohad@wizery.com, linus.walleij@linaro.org, linville@tuxdriver.com, myungjoo.ham@samsung.com, devicetree-discuss@lists.ozlabs.org, linux-doc@vger.kernel.org, linux-kernel@ On Mon, May 07, 2012 at 01:36:47PM +0200, Hiroshi Doyu wrote: > From: Arnd Bergmann <arnd@arndb.de> > Subject: Re: [PATCHv5 1/3] ARM: tegra: Add Tegra AHB driver > Date: Mon, 7 May 2012 12:24:48 +0200 > Message-ID: <201205071024.48958.arnd@arndb.de> > > > On Monday 07 May 2012, Hiroshi Doyu wrote: > > > Tegra doesn't enable ARM_AMBA and Tegra doesn't use the following > > > "drivers/amba/bus.c" right now. I needed to make this directory > > > available to ones without ARM_AMBA enabled. > > > > Ah, right. I looked at arch/arm/Kconfig earlier to see if > > tegra enabled ARM_AMBA but was accidentally looking > > at ARCH_INtegraTOR when grepping for TEGRA ;-) > > > > Your proposed solution sounds good then. > > Thank you for reviewing patches & ACK. Attached the update one here, > instead of sending a while series again. > > >From 16cc2b0fab00c33cd24bb5c43c45a4cda646ad42 Mon Sep 17 00:00:00 2001 > From: Hiroshi DOYU <hdoyu@nvidia.com> > Date: Wed, 18 Apr 2012 11:41:56 +0300 > Subject: [PATCHv5 1/3] ARM: tegra: Add Tegra AHB driver > > Tegra AHB Bus conforms to the AMBA Specification (Rev 2.0) Advanced > High-performance Bus (AHB) architecture. > > The AHB Arbiter controls AHB bus master arbitration. This effectively > forms a second level of arbitration for access to the memory > controller through the AHB Slave Memory device. The AHB pre-fetch > logic can be configured to enhance performance for devices doing > sequential access. Each AHB master is assigned to either the high or > low priority bin. Both Tegra20/30 have this AHB bus. > > Some of configuration params could be passed from DT too if needed. > > Change-Id: I184e0e1ce033e76881353a4bb99234e2850e99c2 What nonsense is this? Please never put that in a patch you want accepted upstream, as it makes no sense and we just have to edit it out by hand, making us grumpy... greg k-h ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCHv5 1/3] ARM: tegra: Add Tegra AHB driver 2012-05-07 18:36 ` gregkh @ 2012-05-08 5:12 ` Hiroshi Doyu 0 siblings, 0 replies; 12+ messages in thread From: Hiroshi Doyu @ 2012-05-08 5:12 UTC (permalink / raw) To: swarren@wwwdotorg.org, gregkh@linuxfoundation.org Cc: ohad@wizery.com, linux@arm.linux.org.uk, arnd@arndb.de, linux-doc@vger.kernel.org, linus.walleij@linaro.org, linville@tuxdriver.com, balbi@ti.com, linux-kernel@vger.kernel.org, grant.likely@secretlab.ca, olof@lixom.net, myungjoo.ham@samsung.com, rob.herring@calxeda.com, rob@landley.net, ccross@android.com, linux-tegra@vger.kernel.org, devicetree-discuss@lists.ozlabs.org, linux-arm-kernel@lists.infradead.org On Mon, 7 May 2012 20:36:11 +0200 "gregkh@linuxfoundation.org" <gregkh@linuxfoundation.org> wrote: > On Mon, May 07, 2012 at 01:36:47PM +0200, Hiroshi Doyu wrote: > > From: Arnd Bergmann <arnd@arndb.de> > > Subject: Re: [PATCHv5 1/3] ARM: tegra: Add Tegra AHB driver > > Date: Mon, 7 May 2012 12:24:48 +0200 > > Message-ID: <201205071024.48958.arnd@arndb.de> > > > > > On Monday 07 May 2012, Hiroshi Doyu wrote: > > > > Tegra doesn't enable ARM_AMBA and Tegra doesn't use the following > > > > "drivers/amba/bus.c" right now. I needed to make this directory > > > > available to ones without ARM_AMBA enabled. > > > > > > Ah, right. I looked at arch/arm/Kconfig earlier to see if > > > tegra enabled ARM_AMBA but was accidentally looking > > > at ARCH_INtegraTOR when grepping for TEGRA ;-) > > > > > > Your proposed solution sounds good then. > > > > Thank you for reviewing patches & ACK. Attached the update one here, > > instead of sending a while series again. > > > > >From 16cc2b0fab00c33cd24bb5c43c45a4cda646ad42 Mon Sep 17 00:00:00 2001 > > From: Hiroshi DOYU <hdoyu@nvidia.com> > > Date: Wed, 18 Apr 2012 11:41:56 +0300 > > Subject: [PATCHv5 1/3] ARM: tegra: Add Tegra AHB driver > > > > Tegra AHB Bus conforms to the AMBA Specification (Rev 2.0) Advanced > > High-performance Bus (AHB) architecture. > > > > The AHB Arbiter controls AHB bus master arbitration. This effectively > > forms a second level of arbitration for access to the memory > > controller through the AHB Slave Memory device. The AHB pre-fetch > > logic can be configured to enhance performance for devices doing > > sequential access. Each AHB master is assigned to either the high or > > low priority bin. Both Tegra20/30 have this AHB bus. > > > > Some of configuration params could be passed from DT too if needed. > > > > Change-Id: I184e0e1ce033e76881353a4bb99234e2850e99c2 > > What nonsense is this? Please never put that in a patch you want > accepted upstream, as it makes no sense and we just have to edit it out > by hand, making us grumpy... Sorry, my bad. Stephen, would you mind removing that line when you take them in? ^ permalink raw reply [flat|nested] 12+ messages in thread
[parent not found: <20120507.143647.508182574757518311.hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>]
* Re: [PATCHv5 1/3] ARM: tegra: Add Tegra AHB driver [not found] ` <20120507.143647.508182574757518311.hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org> @ 2012-05-08 19:45 ` Stephen Warren 0 siblings, 0 replies; 12+ messages in thread From: Stephen Warren @ 2012-05-08 19:45 UTC (permalink / raw) To: Hiroshi Doyu Cc: arnd-r2nGTMty4D4@public.gmane.org, linux-lFZ/pmaqli7XmaaqVzeoHQ@public.gmane.org, linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org, balbi-l0cyMroinI0@public.gmane.org, grant.likely-s3s/WqlpOiPyB63q8FvJNQ@public.gmane.org, rob.herring-bsGFqQB8/DxBDgjK7y7TUQ@public.gmane.org, rob-VoJi6FS/r0vR7s880joybQ@public.gmane.org, ccross-z5hGa2qSFaRBDgjK7y7TUQ@public.gmane.org, olof-nZhT3qVonbNeoWH0uzbU5w@public.gmane.org, gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org, ohad-Ix1uc/W3ht7QT0dZR+AlfA@public.gmane.org, linus.walleij-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org, linville-2XuSBdqkA4R54TAoqtyWWQ@public.gmane.org, myungjoo.ham-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org, devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org, linux-doc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org On 05/07/2012 05:36 AM, Hiroshi Doyu wrote: ... > Tegra AHB Bus conforms to the AMBA Specification (Rev 2.0) Advanced > High-performance Bus (AHB) architecture. > > The AHB Arbiter controls AHB bus master arbitration. This effectively > forms a second level of arbitration for access to the memory > controller through the AHB Slave Memory device. The AHB pre-fetch > logic can be configured to enhance performance for devices doing > sequential access. Each AHB master is assigned to either the high or > low priority bin. Both Tegra20/30 have this AHB bus. I've applied this (minus the Change-Id line) and the other two patches to Tegra's for-next branch. I'll let it sit there for a day or two before sending a pull request into arm-soc for 3.5; hopefully it's not too late for that. ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCHv5 1/3] ARM: tegra: Add Tegra AHB driver 2012-05-07 6:43 [PATCHv5 1/3] ARM: tegra: Add Tegra AHB driver Hiroshi DOYU [not found] ` <1336373032-16881-1-git-send-email-hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org> @ 2012-05-07 8:04 ` Arnd Bergmann 1 sibling, 0 replies; 12+ messages in thread From: Arnd Bergmann @ 2012-05-07 8:04 UTC (permalink / raw) To: Hiroshi DOYU Cc: swarren, linux-tegra, linux-arm-kernel, Felipe Balbi, Grant Likely, Rob Herring, Rob Landley, Colin Cross, Olof Johansson, Russell King, Greg Kroah-Hartman, Ohad Ben-Cohen, Linus Walleij, John W. Linville, MyungJoo Ham, devicetree-discuss, linux-doc, linux-kernel On Monday 07 May 2012, Hiroshi DOYU wrote: > Tegra AHB Bus conforms to the AMBA Specification (Rev 2.0) Advanced > High-performance Bus (AHB) architecture. > > The AHB Arbiter controls AHB bus master arbitration. This effectively > forms a second level of arbitration for access to the memory > controller through the AHB Slave Memory device. The AHB pre-fetch > logic can be configured to enhance performance for devices doing > sequential access. Each AHB master is assigned to either the high or > low priority bin. Both Tegra20/30 have this AHB bus. > > Some of configuration params could be passed from DT too if needed. > > Signed-off-by: Hiroshi DOYU <hdoyu@nvidia.com> > Cc: Felipe Balbi <balbi@ti.com> > Cc: Arnd Bergmann <arnd@arndb.de> Acked-by: Arnd Bergmann <arnd@arndb.de> for the driver, but please fix the issue pointed out by Russell. Arnd ^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2012-05-08 19:45 UTC | newest] Thread overview: 12+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2012-05-07 6:43 [PATCHv5 1/3] ARM: tegra: Add Tegra AHB driver Hiroshi DOYU [not found] ` <1336373032-16881-1-git-send-email-hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org> 2012-05-07 7:42 ` Russell King - ARM Linux [not found] ` <20120507074228.GK26481-l+eeeJia6m9vn6HldHNs0ANdhmdF6hFW@public.gmane.org> 2012-05-07 7:52 ` Hiroshi Doyu [not found] ` <20120507.105254.1899925115243585929.hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org> 2012-05-07 8:59 ` Arnd Bergmann 2012-05-07 9:23 ` Hiroshi Doyu 2012-05-07 10:24 ` Arnd Bergmann [not found] ` <201205071024.48958.arnd-r2nGTMty4D4@public.gmane.org> 2012-05-07 11:36 ` Hiroshi Doyu 2012-05-07 15:47 ` Stephen Warren 2012-05-07 18:36 ` gregkh 2012-05-08 5:12 ` Hiroshi Doyu [not found] ` <20120507.143647.508182574757518311.hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org> 2012-05-08 19:45 ` Stephen Warren 2012-05-07 8:04 ` Arnd Bergmann
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).