162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Copyright (C) 2002  David McCullough <davidm@snapgear.com>
462306a36Sopenharmony_ci * Copyright (C) 2003  Paul Mundt <lethal@linux-sh.org>
562306a36Sopenharmony_ci *
662306a36Sopenharmony_ci * Based on files with the following comments:
762306a36Sopenharmony_ci *
862306a36Sopenharmony_ci *           Copyright (C) 2000  Kazumoto Kojima
962306a36Sopenharmony_ci *
1062306a36Sopenharmony_ci *           Modified for 7751 Solution Engine by
1162306a36Sopenharmony_ci *           Ian da Silva and Jeremy Siegel, 2001.
1262306a36Sopenharmony_ci */
1362306a36Sopenharmony_ci#include <linux/init.h>
1462306a36Sopenharmony_ci#include <linux/irq.h>
1562306a36Sopenharmony_ci#include <linux/interrupt.h>
1662306a36Sopenharmony_ci#include <linux/timer.h>
1762306a36Sopenharmony_ci#include <linux/delay.h>
1862306a36Sopenharmony_ci#include <linux/sched.h>
1962306a36Sopenharmony_ci#include <asm/machvec.h>
2062306a36Sopenharmony_ci#include <mach/secureedge5410.h>
2162306a36Sopenharmony_ci#include <asm/irq.h>
2262306a36Sopenharmony_ci#include <asm/io.h>
2362306a36Sopenharmony_ci#include <cpu/timer.h>
2462306a36Sopenharmony_ci
2562306a36Sopenharmony_ciunsigned short secureedge5410_ioport;
2662306a36Sopenharmony_ci
2762306a36Sopenharmony_ci/*
2862306a36Sopenharmony_ci * EraseConfig handling functions
2962306a36Sopenharmony_ci */
3062306a36Sopenharmony_cistatic irqreturn_t eraseconfig_interrupt(int irq, void *dev_id)
3162306a36Sopenharmony_ci{
3262306a36Sopenharmony_ci	printk("SnapGear: erase switch interrupt!\n");
3362306a36Sopenharmony_ci
3462306a36Sopenharmony_ci	return IRQ_HANDLED;
3562306a36Sopenharmony_ci}
3662306a36Sopenharmony_ci
3762306a36Sopenharmony_cistatic int __init eraseconfig_init(void)
3862306a36Sopenharmony_ci{
3962306a36Sopenharmony_ci	unsigned int irq = evt2irq(0x240);
4062306a36Sopenharmony_ci
4162306a36Sopenharmony_ci	printk("SnapGear: EraseConfig init\n");
4262306a36Sopenharmony_ci
4362306a36Sopenharmony_ci	/* Setup "EraseConfig" switch on external IRQ 0 */
4462306a36Sopenharmony_ci	if (request_irq(irq, eraseconfig_interrupt, 0, "Erase Config", NULL))
4562306a36Sopenharmony_ci		printk("SnapGear: failed to register IRQ%d for Reset witch\n",
4662306a36Sopenharmony_ci				irq);
4762306a36Sopenharmony_ci	else
4862306a36Sopenharmony_ci		printk("SnapGear: registered EraseConfig switch on IRQ%d\n",
4962306a36Sopenharmony_ci				irq);
5062306a36Sopenharmony_ci	return 0;
5162306a36Sopenharmony_ci}
5262306a36Sopenharmony_cidevice_initcall(eraseconfig_init);
5362306a36Sopenharmony_ci
5462306a36Sopenharmony_ci/*
5562306a36Sopenharmony_ci * Initialize IRQ setting
5662306a36Sopenharmony_ci *
5762306a36Sopenharmony_ci * IRL0 = erase switch
5862306a36Sopenharmony_ci * IRL1 = eth0
5962306a36Sopenharmony_ci * IRL2 = eth1
6062306a36Sopenharmony_ci * IRL3 = crypto
6162306a36Sopenharmony_ci */
6262306a36Sopenharmony_cistatic void __init init_snapgear_IRQ(void)
6362306a36Sopenharmony_ci{
6462306a36Sopenharmony_ci	printk("Setup SnapGear IRQ/IPR ...\n");
6562306a36Sopenharmony_ci	/* enable individual interrupt mode for externals */
6662306a36Sopenharmony_ci	plat_irq_setup_pins(IRQ_MODE_IRQ);
6762306a36Sopenharmony_ci}
6862306a36Sopenharmony_ci
6962306a36Sopenharmony_ci/*
7062306a36Sopenharmony_ci * The Machine Vector
7162306a36Sopenharmony_ci */
7262306a36Sopenharmony_cistatic struct sh_machine_vector mv_snapgear __initmv = {
7362306a36Sopenharmony_ci	.mv_name		= "SnapGear SecureEdge5410",
7462306a36Sopenharmony_ci	.mv_init_irq		= init_snapgear_IRQ,
7562306a36Sopenharmony_ci};
76