diff options
23 files changed, 73 insertions, 155 deletions
diff --git a/arch/arm/mach-tegra/board-ardbeg.c b/arch/arm/mach-tegra/board-ardbeg.c index 92fe38b39d32..7cffe0ad1824 100644 --- a/arch/arm/mach-tegra/board-ardbeg.c +++ b/arch/arm/mach-tegra/board-ardbeg.c @@ -74,6 +74,7 @@ #include <mach/xusb.h> #include <linux/platform_data/tegra_usb_modem_power.h> #include <linux/platform_data/tegra_ahci.h> +#include <linux/irqchip/tegra.h> #include "board.h" #include "board-ardbeg.h" @@ -86,7 +87,6 @@ #include "gpio-names.h" #include "iomap.h" #include "pm.h" -#include "pm-irq.h" #include "tegra-board-id.h" static struct board_info board_info, display_board_info; diff --git a/arch/arm/mach-tegra/board-dalmore.c b/arch/arm/mach-tegra/board-dalmore.c index 5709f33e4b6b..edb198d54963 100644 --- a/arch/arm/mach-tegra/board-dalmore.c +++ b/arch/arm/mach-tegra/board-dalmore.c @@ -50,6 +50,7 @@ #include <linux/usb/tegra_usb_phy.h> #include <linux/clk/tegra.h> #include <linux/clocksource.h> +#include <linux/irqchip/tegra.h> #include <mach/irqs.h> #include <mach/pinmux.h> @@ -75,7 +76,6 @@ #include "fuse.h" #include "iomap.h" #include "pm.h" -#include "pm-irq.h" #include "common.h" #include "tegra-board-id.h" diff --git a/arch/arm/mach-tegra/board-loki.c b/arch/arm/mach-tegra/board-loki.c index 5aa27d23a5d9..26a47fd65c6f 100644 --- a/arch/arm/mach-tegra/board-loki.c +++ b/arch/arm/mach-tegra/board-loki.c @@ -71,6 +71,7 @@ #include <mach/tegra_fiq_debugger.h> #include <mach/xusb.h> #include <linux/platform_data/tegra_usb_modem_power.h> +#include <linux/irqchip/tegra.h> #include "board-touch-raydium.h" #include "board.h" @@ -80,7 +81,6 @@ #include "devices.h" #include "gpio-names.h" #include "pm.h" -#include "pm-irq.h" #include "common.h" #include "tegra-board-id.h" #include "iomap.h" diff --git a/arch/arm/mach-tegra/board-macallan.c b/arch/arm/mach-tegra/board-macallan.c index 0f8276d1895c..b37b7bbfe022 100644 --- a/arch/arm/mach-tegra/board-macallan.c +++ b/arch/arm/mach-tegra/board-macallan.c @@ -49,6 +49,7 @@ #include <linux/clk/tegra.h> #include <linux/tegra-soc.h> #include <linux/clocksource.h> +#include <linux/irqchip/tegra.h> #include <mach/irqs.h> #include <mach/pinmux.h> @@ -73,7 +74,6 @@ #include "fuse.h" #include "iomap.h" #include "pm.h" -#include "pm-irq.h" #include "common.h" #include "tegra-board-id.h" diff --git a/arch/arm/mach-tegra/board-pismo.c b/arch/arm/mach-tegra/board-pismo.c index bc7598a0819c..f78439911278 100644 --- a/arch/arm/mach-tegra/board-pismo.c +++ b/arch/arm/mach-tegra/board-pismo.c @@ -50,6 +50,7 @@ #include <linux/usb/tegra_usb_phy.h> #include <linux/clk/tegra.h> #include <linux/clocksource.h> +#include <linux/irqchip/tegra.h> #include <mach/irqs.h> #include <mach/pinmux.h> @@ -72,7 +73,6 @@ #include "gpio-names.h" #include "fuse.h" #include "pm.h" -#include "pm-irq.h" #include "common.h" #include "tegra-board-id.h" #include "iomap.h" diff --git a/arch/arm/mach-tegra/cpuidle-t11x.c b/arch/arm/mach-tegra/cpuidle-t11x.c index 0ca9bd04af39..320959eb9c72 100644 --- a/arch/arm/mach-tegra/cpuidle-t11x.c +++ b/arch/arm/mach-tegra/cpuidle-t11x.c @@ -43,6 +43,7 @@ #include <linux/tegra-soc.h> #include <linux/tegra-timer.h> #include <linux/tegra-cpuidle.h> +#include <linux/irqchip/tegra.h> #include <asm/cacheflush.h> #include <asm/localtimer.h> @@ -55,7 +56,6 @@ #include "clock.h" #include "dvfs.h" -#include "gic.h" #include "iomap.h" #include "pm.h" #include "reset.h" diff --git a/arch/arm/mach-tegra/cpuidle-t14x.c b/arch/arm/mach-tegra/cpuidle-t14x.c index b4145d016717..fb8e18f03e5d 100644 --- a/arch/arm/mach-tegra/cpuidle-t14x.c +++ b/arch/arm/mach-tegra/cpuidle-t14x.c @@ -35,6 +35,7 @@ #include <linux/cpu_pm.h> #include <linux/module.h> #include <linux/tegra-soc.h> +#include <linux/irqchip/tegra.h> #include <asm/cacheflush.h> #include <asm/localtimer.h> @@ -50,7 +51,6 @@ #include "cpuidle.h" #include "dvfs.h" #include "fuse.h" -#include "gic.h" #include "iomap.h" #include "pm.h" #include "reset.h" diff --git a/arch/arm/mach-tegra/cpuidle-t2.c b/arch/arm/mach-tegra/cpuidle-t2.c index 1736b7910806..c0787c3b6331 100644 --- a/arch/arm/mach-tegra/cpuidle-t2.c +++ b/arch/arm/mach-tegra/cpuidle-t2.c @@ -3,7 +3,7 @@ * * CPU idle driver for Tegra2 CPUs * - * Copyright (c) 2010-2011, NVIDIA Corporation. + * Copyright (c) 2010-2013, NVIDIA Corporation. All rights reserved. * Copyright (c) 2011 Google, Inc. * Author: Colin Cross <ccross@android.com> * Gary King <gking@nvidia.com> @@ -39,6 +39,7 @@ #include <linux/suspend.h> #include <linux/tick.h> #include <linux/cpu_pm.h> +#include <linux/irqchip/tegra.h> #include <asm/suspend.h> @@ -46,7 +47,6 @@ #include <mach/irqs.h> #include "cpuidle.h" -#include "gic.h" #include "pm.h" #include "sleep.h" #include "timer.h" diff --git a/arch/arm/mach-tegra/cpuidle-t3.c b/arch/arm/mach-tegra/cpuidle-t3.c index 2e436ae760b6..e79964d4f3c7 100644 --- a/arch/arm/mach-tegra/cpuidle-t3.c +++ b/arch/arm/mach-tegra/cpuidle-t3.c @@ -3,7 +3,7 @@ * * CPU idle driver for Tegra3 CPUs * - * Copyright (c) 2010-2013, NVIDIA Corporation. + * Copyright (c) 2010-2013, NVIDIA Corporation. 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 as published by @@ -41,6 +41,7 @@ #include <linux/cpu_pm.h> #include <linux/module.h> #include <linux/tegra-soc.h> +#include <linux/irqchip/tegra.h> #include <asm/cacheflush.h> #include <asm/localtimer.h> @@ -56,7 +57,6 @@ #include "cpuidle.h" #include "dvfs.h" #include "fuse.h" -#include "gic.h" #include "iomap.h" #include "pm.h" #include "reset.h" diff --git a/arch/arm/mach-tegra/fiq.c b/arch/arm/mach-tegra/fiq.c index 4f650ac6ea09..1ed4570bcb09 100644 --- a/arch/arm/mach-tegra/fiq.c +++ b/arch/arm/mach-tegra/fiq.c @@ -26,8 +26,6 @@ #include <linux/slab.h> #include <linux/irqchip/arm-gic.h> -#include <mach/fiq.h> - #include "board.h" #include "iomap.h" diff --git a/arch/arm/mach-tegra/gic.c b/arch/arm/mach-tegra/gic.c index 4688a740cce3..48e5240f84cf 100644 --- a/arch/arm/mach-tegra/gic.c +++ b/arch/arm/mach-tegra/gic.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010-2012, NVIDIA Corporation + * Copyright (C) 2010-2013, NVIDIA Corporation. All rights reserved. * * This software is licensed under the terms of the GNU General Public * License version 2, as published by the Free Software Foundation, and @@ -18,10 +18,10 @@ #include <linux/irqnr.h> #include <linux/cpu_pm.h> #include <linux/irqchip/arm-gic.h> +#include <linux/irqchip/tegra.h> #include <mach/irqs.h> -#include "gic.h" #include "iomap.h" #include "pm.h" diff --git a/arch/arm/mach-tegra/gic.h b/arch/arm/mach-tegra/gic.h deleted file mode 100644 index d5ea0289f369..000000000000 --- a/arch/arm/mach-tegra/gic.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * arch/arm/mach-tegra/include/mach/gic.h - * - * Copyright (C) 2010-2012 NVIDIA Corporation - * - * 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. - * - */ - -#ifndef _MACH_TEGRA_GIC_H_ -#define _MACH_TEGRA_GIC_H_ - -#if defined(CONFIG_HOTPLUG_CPU) || defined(CONFIG_PM_SLEEP) - -void tegra_gic_cpu_disable(bool disable_pass_through); -void tegra_gic_cpu_enable(void); - -#endif - -#define GIC_V1 1 -#define GIC_V2 2 - -#if defined(CONFIG_PM_SLEEP) - -int tegra_gic_pending_interrupt(void); - -#ifndef CONFIG_ARCH_TEGRA_2x_SOC - -void tegra_gic_dist_disable(void); -void tegra_gic_dist_enable(void); - -void tegra_gic_disable_affinity(void); -void tegra_gic_restore_affinity(void); -void tegra_gic_affinity_to_cpu0(void); - -#endif -#endif - -u32 tegra_gic_version(void); -void __init tegra_gic_init(bool is_dt); - -#endif /* _MACH_TEGRA_GIC_H_ */ diff --git a/arch/arm/mach-tegra/hotplug.c b/arch/arm/mach-tegra/hotplug.c index b07a52cc0db9..20f5f2140d51 100644 --- a/arch/arm/mach-tegra/hotplug.c +++ b/arch/arm/mach-tegra/hotplug.c @@ -2,7 +2,7 @@ * * Copyright (C) 2002 ARM Ltd. * All Rights Reserved - * Copyright (c) 2010, 2012 NVIDIA Corporation. All rights reserved. + * Copyright (C) 2010-2013 NVIDIA Corporation. 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 as @@ -13,11 +13,11 @@ #include <linux/clk/tegra.h> #include <linux/cpu_pm.h> #include <linux/clk/tegra.h> +#include <linux/irqchip/tegra.h> #include <asm/cacheflush.h> #include <asm/smp_plat.h> -#include "gic.h" #include "sleep.h" static void (*tegra_hotplug_shutdown)(void); diff --git a/arch/arm/mach-tegra/include/mach/fiq.h b/arch/arm/mach-tegra/include/mach/fiq.h deleted file mode 100644 index 17625facf627..000000000000 --- a/arch/arm/mach-tegra/include/mach/fiq.h +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright (C) 2010 Google, Inc. - * - * Author: - * Iliyan Malchev <malchev@google.com> - * - * 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. - * - */ - -#ifndef __ASM_ARCH_TEGRA_FIQ_H -#define __ASM_ARCH_TEGRA_FIQ_H - -/* enable/disable an interrupt that is an FIQ (safe from FIQ context?) */ -void tegra_fiq_enable(int n); -void tegra_fiq_disable(int n); - -#endif diff --git a/arch/arm/mach-tegra/include/mach/legacy_irq.h b/arch/arm/mach-tegra/include/mach/legacy_irq.h deleted file mode 100644 index c692c128abdf..000000000000 --- a/arch/arm/mach-tegra/include/mach/legacy_irq.h +++ /dev/null @@ -1,26 +0,0 @@ -/* - * arch/arm/mach-tegra/include/mach/legacy_irq.h - * - * Copyright (C) 2010 Google, Inc. - * Author: Colin Cross <ccross@android.com> - * - * 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. - * - */ - -#ifndef _ARCH_ARM_MACH_TEGRA_LEGARY_IRQ_H -#define _ARCH_ARM_MACH_TEGRA_LEGARY_IRQ_H - -void tegra_init_legacy_irq_cop(void); - -/* lp1 wake interrupts enabled or disabled using this API */ -int tegra_update_lp1_irq_wake(unsigned int irq, bool enable); - -#endif diff --git a/arch/arm/mach-tegra/irq.c b/arch/arm/mach-tegra/irq.c index 2bb7ea6486bf..95693529ea80 100644 --- a/arch/arm/mach-tegra/irq.c +++ b/arch/arm/mach-tegra/irq.c @@ -28,13 +28,10 @@ #include <linux/irqchip.h> #include <linux/syscore_ops.h> #include <linux/clk/tegra.h> - -#include <mach/legacy_irq.h> +#include <linux/irqchip/tegra.h> #include "board.h" -#include "gic.h" #include "iomap.h" -#include "pm-irq.h" #define ICTLR_CPU_IEP_VFIQ 0x08 #define ICTLR_CPU_IEP_FIR 0x14 diff --git a/arch/arm/mach-tegra/pm-irq.c b/arch/arm/mach-tegra/pm-irq.c index 15b7531598c1..e7860d32d803 100644 --- a/arch/arm/mach-tegra/pm-irq.c +++ b/arch/arm/mach-tegra/pm-irq.c @@ -30,9 +30,9 @@ #include <linux/moduleparam.h> #include <linux/seq_file.h> #include <linux/syscore_ops.h> +#include <linux/irqchip/tegra.h> #include "iomap.h" -#include "pm-irq.h" #define PMC_CTRL 0x0 #define PMC_CTRL_LATCH_WAKEUPS (1 << 5) diff --git a/arch/arm/mach-tegra/pm.c b/arch/arm/mach-tegra/pm.c index 88629b72b8e1..ddce3ea43438 100644 --- a/arch/arm/mach-tegra/pm.c +++ b/arch/arm/mach-tegra/pm.c @@ -52,6 +52,7 @@ #include <linux/tegra-soc.h> #include <linux/tegra-timer.h> #include <linux/tegra-cpuidle.h> +#include <linux/irqchip/tegra.h> #include <trace/events/power.h> #include <trace/events/nvsecurity.h> @@ -72,10 +73,8 @@ #include "clock.h" #include "common.h" #include "fuse.h" -#include "gic.h" #include "iomap.h" #include "pm.h" -#include "pm-irq.h" #include "reset.h" #include "pmc.h" #include "sleep.h" diff --git a/arch/arm/mach-tegra/tegra_wakeup_monitor.c b/arch/arm/mach-tegra/tegra_wakeup_monitor.c index 534c37a4f382..ba843487384e 100644 --- a/arch/arm/mach-tegra/tegra_wakeup_monitor.c +++ b/arch/arm/mach-tegra/tegra_wakeup_monitor.c @@ -21,6 +21,7 @@ #include <linux/completion.h> #include <linux/suspend.h> #include <linux/slab.h> +#include <linux/irqchip/tegra.h> #include <net/ip.h> #include <linux/netfilter_ipv4.h> @@ -29,7 +30,6 @@ #include <mach/tegra_wakeup_monitor.h> -#include "pm-irq.h" #define MAX_PACKET_NUM 6 #define MONITOR_HTABLE_SIZE 256 diff --git a/arch/arm/mach-tegra/wakeups-t11x.c b/arch/arm/mach-tegra/wakeups-t11x.c index 1eca859eb7b2..d3ae3909dd4a 100644 --- a/arch/arm/mach-tegra/wakeups-t11x.c +++ b/arch/arm/mach-tegra/wakeups-t11x.c @@ -18,6 +18,7 @@ #include <linux/gpio.h> #include <linux/init.h> #include <linux/io.h> +#include <linux/irqchip/tegra.h> #include <mach/irqs.h> #include <mach/gpio-tegra.h> @@ -25,7 +26,6 @@ #include "tegra-board-id.h" #include "gpio-names.h" #include "iomap.h" -#include "pm-irq.h" /* Tegra USB1 wake source index */ #define USB1_VBUS_WAKE 19 diff --git a/drivers/gpio/gpio-tegra.c b/drivers/gpio/gpio-tegra.c index 124321c9ffb6..5369f4cb9a75 100644 --- a/drivers/gpio/gpio-tegra.c +++ b/drivers/gpio/gpio-tegra.c @@ -35,10 +35,7 @@ #include <linux/pm.h> #include <linux/syscore_ops.h> #include <linux/tegra-soc.h> - -#include <mach/legacy_irq.h> - -#include "../../arch/arm/mach-tegra/pm-irq.h" +#include <linux/irqchip/tegra.h> #define GPIO_BANK(x) ((x) >> 5) #define GPIO_PORT(x) (((x) >> 3) & 0x3) diff --git a/drivers/media/platform/tegra/nvavp/nvavp_dev.c b/drivers/media/platform/tegra/nvavp/nvavp_dev.c index f8d7994f1338..1ed26cc145b9 100644 --- a/drivers/media/platform/tegra/nvavp/nvavp_dev.c +++ b/drivers/media/platform/tegra/nvavp/nvavp_dev.c @@ -39,8 +39,8 @@ #include <linux/pm_runtime.h> #include <linux/clk/tegra.h> #include <linux/tegra-powergate.h> +#include <linux/irqchip/tegra.h> -#include <mach/legacy_irq.h> #include <mach/pm_domains.h> #include <linux/nvmap.h> diff --git a/arch/arm/mach-tegra/pm-irq.h b/include/linux/irqchip/tegra.h index 279db85dd307..c51b1249f893 100644 --- a/arch/arm/mach-tegra/pm-irq.h +++ b/include/linux/irqchip/tegra.h @@ -1,30 +1,53 @@ /* - * Copyright (C) 2011 Google, Inc. + * arch/arm/mach-tegra/include/mach/gic.h * - * Author: - * Colin Cross <ccross@android.com> + * Copyright (C) 2010-2013 NVIDIA Corporation. All rights reserved. * - * Copyright (c) 2012-2013, NVIDIA CORPORATION. All rights reserved. + * 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 free software; you can redistribute it and/or modify it - * under the terms and conditions of the GNU General Public License, - * 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. * - * This program is distributed in the hope 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. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -#ifndef _MACH_TERA_PM_IRQ_H_ -#define _MACH_TERA_PM_IRQ_H_ +#ifndef _MACH_TEGRA_GIC_H_ +#define _MACH_TEGRA_GIC_H_ #define PMC_MAX_WAKE_COUNT 64 +#define GIC_V1 1 +#define GIC_V2 2 + +/* tegra internal any polarity wake sources */ +enum { + ANY_WAKE_INDEX_VBUS = 0, + ANY_WAKE_INDEX_ID +}; + +#if defined(CONFIG_HOTPLUG_CPU) || defined(CONFIG_PM_SLEEP) +void tegra_gic_cpu_disable(bool disable_pass_through); +void tegra_gic_cpu_enable(void); +#endif + +#if defined(CONFIG_PM_SLEEP) +int tegra_gic_pending_interrupt(void); +#ifndef CONFIG_ARCH_TEGRA_2x_SOC +void tegra_gic_dist_disable(void); +void tegra_gic_dist_enable(void); + +void tegra_gic_disable_affinity(void); +void tegra_gic_restore_affinity(void); +void tegra_gic_affinity_to_cpu0(void); +#endif +#endif -#ifdef CONFIG_PM_SLEEP +u32 tegra_gic_version(void); +void __init tegra_gic_init(bool is_dt); + +#if defined(CONFIG_PM_SLEEP) u64 tegra_read_pmc_wake_status(void); int tegra_pm_irq_set_wake(int wake, int enable); int tegra_pm_irq_set_wake_type(int wake, int flow_type); @@ -68,13 +91,8 @@ static inline int tegra_disable_wake_source(int wake) return 0; } #endif -void tegra_set_usb_wake_source(void); -/* tegra internal any polarity wake sources */ -enum { - ANY_WAKE_INDEX_VBUS = 0, - ANY_WAKE_INDEX_ID -}; +void tegra_set_usb_wake_source(void); /* get chip specific list of internal any polarity wake sources */ void tegra_get_internal_any_wake_list(u8 *wake_count, u8 **any_wake, @@ -89,4 +107,13 @@ void tegra_get_internal_any_wake_list(u8 *wake_count, u8 **any_wake, int get_vbus_id_cable_connect_state(bool *is_vbus_connected, bool *is_id_connected); -#endif +/* enable/disable an interrupt that is an FIQ (safe from FIQ context?) */ +void tegra_fiq_enable(int n); +void tegra_fiq_disable(int n); + +void tegra_init_legacy_irq_cop(void); + +/* lp1 wake interrupts enabled or disabled using this API */ +int tegra_update_lp1_irq_wake(unsigned int irq, bool enable); + +#endif /* _MACH_TEGRA_GIC_H_ */ |