mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-23 17:30:02 +00:00
ARM: 5843/1: OMAP3: add AMBA devices for ETM and ETB
This enables on-chip tracing components found in omap3xxx. Signed-off-by: Alexander Shishkin <virtuoso@slind.org> Acked-by: Tony Lindgren <tony@atomide.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
This commit is contained in:
parent
c5d6c7708c
commit
183bd50f4f
4 changed files with 81 additions and 4 deletions
|
@ -100,3 +100,11 @@ config MACH_OMAP_ZOOM2
|
||||||
config MACH_OMAP_4430SDP
|
config MACH_OMAP_4430SDP
|
||||||
bool "OMAP 4430 SDP board"
|
bool "OMAP 4430 SDP board"
|
||||||
depends on ARCH_OMAP4
|
depends on ARCH_OMAP4
|
||||||
|
|
||||||
|
config OMAP3_EMU
|
||||||
|
bool "OMAP3 debugging peripherals"
|
||||||
|
depends on ARCH_OMAP3
|
||||||
|
select OC_ETM
|
||||||
|
help
|
||||||
|
Say Y here to enable debugging hardware of omap3
|
||||||
|
|
||||||
|
|
|
@ -44,6 +44,9 @@ obj-$(CONFIG_ARCH_OMAP4) += cm4xxx.o
|
||||||
obj-$(CONFIG_ARCH_OMAP2) += clock24xx.o
|
obj-$(CONFIG_ARCH_OMAP2) += clock24xx.o
|
||||||
obj-$(CONFIG_ARCH_OMAP3) += clock34xx.o
|
obj-$(CONFIG_ARCH_OMAP3) += clock34xx.o
|
||||||
|
|
||||||
|
# EMU peripherals
|
||||||
|
obj-$(CONFIG_OMAP3_EMU) += emu.o
|
||||||
|
|
||||||
iommu-y += iommu2.o
|
iommu-y += iommu2.o
|
||||||
iommu-$(CONFIG_ARCH_OMAP3) += omap3-iommu.o
|
iommu-$(CONFIG_ARCH_OMAP3) += omap3-iommu.o
|
||||||
|
|
||||||
|
|
|
@ -119,7 +119,7 @@ static struct omap_clk omap34xx_clks[] = {
|
||||||
CLK(NULL, "dpll3_m2x2_ck", &dpll3_m2x2_ck, CK_343X),
|
CLK(NULL, "dpll3_m2x2_ck", &dpll3_m2x2_ck, CK_343X),
|
||||||
CLK(NULL, "dpll3_m3_ck", &dpll3_m3_ck, CK_343X),
|
CLK(NULL, "dpll3_m3_ck", &dpll3_m3_ck, CK_343X),
|
||||||
CLK(NULL, "dpll3_m3x2_ck", &dpll3_m3x2_ck, CK_343X),
|
CLK(NULL, "dpll3_m3x2_ck", &dpll3_m3x2_ck, CK_343X),
|
||||||
CLK(NULL, "emu_core_alwon_ck", &emu_core_alwon_ck, CK_343X),
|
CLK("etb", "emu_core_alwon_ck", &emu_core_alwon_ck, CK_343X),
|
||||||
CLK(NULL, "dpll4_ck", &dpll4_ck, CK_343X),
|
CLK(NULL, "dpll4_ck", &dpll4_ck, CK_343X),
|
||||||
CLK(NULL, "dpll4_x2_ck", &dpll4_x2_ck, CK_343X),
|
CLK(NULL, "dpll4_x2_ck", &dpll4_x2_ck, CK_343X),
|
||||||
CLK(NULL, "omap_96m_alwon_fck", &omap_96m_alwon_fck, CK_343X),
|
CLK(NULL, "omap_96m_alwon_fck", &omap_96m_alwon_fck, CK_343X),
|
||||||
|
@ -138,7 +138,7 @@ static struct omap_clk omap34xx_clks[] = {
|
||||||
CLK(NULL, "dpll4_m5x2_ck", &dpll4_m5x2_ck, CK_343X),
|
CLK(NULL, "dpll4_m5x2_ck", &dpll4_m5x2_ck, CK_343X),
|
||||||
CLK(NULL, "dpll4_m6_ck", &dpll4_m6_ck, CK_343X),
|
CLK(NULL, "dpll4_m6_ck", &dpll4_m6_ck, CK_343X),
|
||||||
CLK(NULL, "dpll4_m6x2_ck", &dpll4_m6x2_ck, CK_343X),
|
CLK(NULL, "dpll4_m6x2_ck", &dpll4_m6x2_ck, CK_343X),
|
||||||
CLK(NULL, "emu_per_alwon_ck", &emu_per_alwon_ck, CK_343X),
|
CLK("etb", "emu_per_alwon_ck", &emu_per_alwon_ck, CK_343X),
|
||||||
CLK(NULL, "dpll5_ck", &dpll5_ck, CK_3430ES2),
|
CLK(NULL, "dpll5_ck", &dpll5_ck, CK_3430ES2),
|
||||||
CLK(NULL, "dpll5_m2_ck", &dpll5_m2_ck, CK_3430ES2),
|
CLK(NULL, "dpll5_m2_ck", &dpll5_m2_ck, CK_3430ES2),
|
||||||
CLK(NULL, "clkout2_src_ck", &clkout2_src_ck, CK_343X),
|
CLK(NULL, "clkout2_src_ck", &clkout2_src_ck, CK_343X),
|
||||||
|
@ -147,7 +147,7 @@ static struct omap_clk omap34xx_clks[] = {
|
||||||
CLK(NULL, "dpll1_fck", &dpll1_fck, CK_343X),
|
CLK(NULL, "dpll1_fck", &dpll1_fck, CK_343X),
|
||||||
CLK(NULL, "mpu_ck", &mpu_ck, CK_343X),
|
CLK(NULL, "mpu_ck", &mpu_ck, CK_343X),
|
||||||
CLK(NULL, "arm_fck", &arm_fck, CK_343X),
|
CLK(NULL, "arm_fck", &arm_fck, CK_343X),
|
||||||
CLK(NULL, "emu_mpu_alwon_ck", &emu_mpu_alwon_ck, CK_343X),
|
CLK("etb", "emu_mpu_alwon_ck", &emu_mpu_alwon_ck, CK_343X),
|
||||||
CLK(NULL, "dpll2_fck", &dpll2_fck, CK_343X),
|
CLK(NULL, "dpll2_fck", &dpll2_fck, CK_343X),
|
||||||
CLK(NULL, "iva2_ck", &iva2_ck, CK_343X),
|
CLK(NULL, "iva2_ck", &iva2_ck, CK_343X),
|
||||||
CLK(NULL, "l3_ick", &l3_ick, CK_343X),
|
CLK(NULL, "l3_ick", &l3_ick, CK_343X),
|
||||||
|
@ -302,7 +302,7 @@ static struct omap_clk omap34xx_clks[] = {
|
||||||
CLK("omap-mcbsp.2", "fck", &mcbsp2_fck, CK_343X),
|
CLK("omap-mcbsp.2", "fck", &mcbsp2_fck, CK_343X),
|
||||||
CLK("omap-mcbsp.3", "fck", &mcbsp3_fck, CK_343X),
|
CLK("omap-mcbsp.3", "fck", &mcbsp3_fck, CK_343X),
|
||||||
CLK("omap-mcbsp.4", "fck", &mcbsp4_fck, CK_343X),
|
CLK("omap-mcbsp.4", "fck", &mcbsp4_fck, CK_343X),
|
||||||
CLK(NULL, "emu_src_ck", &emu_src_ck, CK_343X),
|
CLK("etb", "emu_src_ck", &emu_src_ck, CK_343X),
|
||||||
CLK(NULL, "pclk_fck", &pclk_fck, CK_343X),
|
CLK(NULL, "pclk_fck", &pclk_fck, CK_343X),
|
||||||
CLK(NULL, "pclkx2_fck", &pclkx2_fck, CK_343X),
|
CLK(NULL, "pclkx2_fck", &pclkx2_fck, CK_343X),
|
||||||
CLK(NULL, "atclk_fck", &atclk_fck, CK_343X),
|
CLK(NULL, "atclk_fck", &atclk_fck, CK_343X),
|
||||||
|
|
66
arch/arm/mach-omap2/emu.c
Normal file
66
arch/arm/mach-omap2/emu.c
Normal file
|
@ -0,0 +1,66 @@
|
||||||
|
/*
|
||||||
|
* emu.c
|
||||||
|
*
|
||||||
|
* ETM and ETB CoreSight components' resources as found in OMAP3xxx.
|
||||||
|
*
|
||||||
|
* Copyright (C) 2009 Nokia Corporation.
|
||||||
|
* Alexander Shishkin
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License version 2 as
|
||||||
|
* published by the Free Software Foundation.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <linux/kernel.h>
|
||||||
|
#include <linux/init.h>
|
||||||
|
#include <linux/types.h>
|
||||||
|
#include <linux/module.h>
|
||||||
|
#include <linux/device.h>
|
||||||
|
#include <linux/amba/bus.h>
|
||||||
|
#include <linux/io.h>
|
||||||
|
#include <linux/clk.h>
|
||||||
|
#include <linux/err.h>
|
||||||
|
|
||||||
|
MODULE_LICENSE("GPL");
|
||||||
|
MODULE_AUTHOR("Alexander Shishkin");
|
||||||
|
|
||||||
|
/* Cortex CoreSight components within omap3xxx EMU */
|
||||||
|
#define ETM_BASE (L4_EMU_34XX_PHYS + 0x10000)
|
||||||
|
#define DBG_BASE (L4_EMU_34XX_PHYS + 0x11000)
|
||||||
|
#define ETB_BASE (L4_EMU_34XX_PHYS + 0x1b000)
|
||||||
|
#define DAPCTL (L4_EMU_34XX_PHYS + 0x1d000)
|
||||||
|
|
||||||
|
static struct amba_device omap3_etb_device = {
|
||||||
|
.dev = {
|
||||||
|
.init_name = "etb",
|
||||||
|
},
|
||||||
|
.res = {
|
||||||
|
.start = ETB_BASE,
|
||||||
|
.end = ETB_BASE + SZ_4K - 1,
|
||||||
|
.flags = IORESOURCE_MEM,
|
||||||
|
},
|
||||||
|
.periphid = 0x000bb907,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct amba_device omap3_etm_device = {
|
||||||
|
.dev = {
|
||||||
|
.init_name = "etm",
|
||||||
|
},
|
||||||
|
.res = {
|
||||||
|
.start = ETM_BASE,
|
||||||
|
.end = ETM_BASE + SZ_4K - 1,
|
||||||
|
.flags = IORESOURCE_MEM,
|
||||||
|
},
|
||||||
|
.periphid = 0x102bb921,
|
||||||
|
};
|
||||||
|
|
||||||
|
static int __init emu_init(void)
|
||||||
|
{
|
||||||
|
amba_device_register(&omap3_etb_device, &iomem_resource);
|
||||||
|
amba_device_register(&omap3_etm_device, &iomem_resource);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
subsys_initcall(emu_init);
|
||||||
|
|
Loading…
Reference in a new issue