danube to ifxmips transition

SVN-Revision: 9825
This commit is contained in:
John Crispin 2007-12-22 13:55:14 +00:00
parent 4da7f2dbed
commit ede7545200
26 changed files with 546 additions and 552 deletions

View file

@ -1,35 +1,35 @@
# copyright 2007 john crispin <blogic@openwrt.org>
menu "Danube built-in"
menu "IFXMips built-in"
config IFXMIPS_ASC_UART
bool "Danube asc uart"
bool "IFXMips asc uart"
select SERIAL_CORE
select SERIAL_CORE_CONSOLE
default y
config MTD_IFXMIPS
bool "Danube flash map"
bool "IFXMips flash map"
default y
config IFXMIPS_WDT
bool "Danube watchdog"
bool "IFXMips watchdog"
default y
config IFXMIPS_LED
bool "Danube led"
bool "IFXMips led"
default y
config IFXMIPS_GPIO
bool "Danube gpio"
bool "IFXMips gpio"
default y
config IFXMIPS_SSC
bool "Danube ssc"
bool "IFXMips ssc"
default y
config IFXMIPS_EEPROM
bool "Danube eeprom"
bool "IFXMips eeprom"
default y
endmenu

View file

@ -1,9 +1,3 @@
#
# Copyright 2007 openwrt.org
# John Crispin <blogic@openwrt.org>
#
# Makefile for Infineon Danube
#
obj-y := reset.o prom.o setup.o interrupt.o dma-core.o pmu.o
obj-$(CONFIG_PCI) += pci.o

View file

@ -19,10 +19,10 @@
#include <linux/errno.h>
#include <asm/io.h>
#include <asm/danube/danube.h>
#include <asm/danube/danube_irq.h>
#include <asm/danube/danube_dma.h>
#include <asm/danube/danube_pmu.h>
#include <asm/ifxmips/ifxmips.h>
#include <asm/ifxmips/ifxmips_irq.h>
#include <asm/ifxmips/ifxmips_dma.h>
#include <asm/ifxmips/ifxmips_pmu.h>
/*25 descriptors for each dma channel,4096/8/20=25.xx*/
#define IFXMIPS_DMA_DESCRIPTOR_OFFSET 25
@ -32,9 +32,9 @@
#define DMA_INT_BUDGET 100 /*budget for interrupt handling */
#define DMA_POLL_COUNTER 4 /*fix me, set the correct counter value here! */
extern void mask_and_ack_danube_irq (unsigned int irq_nr);
extern void enable_danube_irq (unsigned int irq_nr);
extern void disable_danube_irq (unsigned int irq_nr);
extern void mask_and_ack_ifxmips_irq (unsigned int irq_nr);
extern void enable_ifxmips_irq (unsigned int irq_nr);
extern void disable_ifxmips_irq (unsigned int irq_nr);
u64 *g_desc_list;
_dma_device_info dma_devs[MAX_DMA_DEVICE_NUM];
@ -67,8 +67,8 @@ _dma_chan_map default_dma_map[MAX_DMA_CHANNEL_NUM] = {
};
_dma_chan_map *chan_map = default_dma_map;
volatile u32 g_danube_dma_int_status = 0;
volatile int g_danube_dma_in_process = 0;/*0=not in process,1=in process*/
volatile u32 g_ifxmips_dma_int_status = 0;
volatile int g_ifxmips_dma_in_process = 0;/*0=not in process,1=in process*/
void do_dma_tasklet (unsigned long);
DECLARE_TASKLET (dma_tasklet, do_dma_tasklet, 0);
@ -101,7 +101,7 @@ enable_ch_irq (_dma_channel_info *pCh)
writel(0x4a, IFXMIPS_DMA_CIE);
writel(readl(IFXMIPS_DMA_IRNEN) | (1 << chan_no), IFXMIPS_DMA_IRNEN);
local_irq_restore(flag);
enable_danube_irq(pCh->irq);
enable_ifxmips_irq(pCh->irq);
}
void
@ -111,12 +111,12 @@ disable_ch_irq (_dma_channel_info *pCh)
int chan_no = (int) (pCh - dma_chan);
local_irq_save(flag);
g_danube_dma_int_status &= ~(1 << chan_no);
g_ifxmips_dma_int_status &= ~(1 << chan_no);
writel(chan_no, IFXMIPS_DMA_CS);
writel(0, IFXMIPS_DMA_CIE);
writel(readl(IFXMIPS_DMA_IRNEN) & ~(1 << chan_no), IFXMIPS_DMA_IRNEN);
local_irq_restore(flag);
mask_and_ack_danube_irq(pCh->irq);
mask_and_ack_ifxmips_irq(pCh->irq);
}
void
@ -180,9 +180,9 @@ rx_chan_intr_handler (int chan_no)
writel(chan_no, IFXMIPS_DMA_CS);
writel(readl(IFXMIPS_DMA_CIS) | 0x7e, IFXMIPS_DMA_CIS);
writel(tmp, IFXMIPS_DMA_CS);
g_danube_dma_int_status &= ~(1 << chan_no);
g_ifxmips_dma_int_status &= ~(1 << chan_no);
local_irq_restore(flag);
enable_danube_irq(dma_chan[chan_no].irq);
enable_ifxmips_irq(dma_chan[chan_no].irq);
}
}
@ -199,7 +199,7 @@ tx_chan_intr_handler (int chan_no)
writel(chan_no, IFXMIPS_DMA_CS);
writel(readl(IFXMIPS_DMA_CIS) | 0x7e, IFXMIPS_DMA_CIS);
writel(tmp, IFXMIPS_DMA_CS);
g_danube_dma_int_status &= ~(1 << chan_no);
g_ifxmips_dma_int_status &= ~(1 << chan_no);
local_irq_restore(flag);
pDev->current_tx_chan = pCh->rel_chan_no;
if (pDev->intr_handler)
@ -215,7 +215,7 @@ do_dma_tasklet (unsigned long unused)
int weight = 0;
int flag;
while (g_danube_dma_int_status)
while (g_ifxmips_dma_int_status)
{
if (budget-- < 0)
{
@ -226,7 +226,7 @@ do_dma_tasklet (unsigned long unused)
weight = 0;
for (i = 0; i < MAX_DMA_CHANNEL_NUM; i++)
{
if ((g_danube_dma_int_status & (1 << i)) && dma_chan[i].weight > 0)
if ((g_ifxmips_dma_int_status & (1 << i)) && dma_chan[i].weight > 0)
{
if (dma_chan[i].weight > weight)
{
@ -251,10 +251,10 @@ do_dma_tasklet (unsigned long unused)
}
local_irq_save(flag);
g_danube_dma_in_process = 0;
if (g_danube_dma_int_status)
g_ifxmips_dma_in_process = 0;
if (g_ifxmips_dma_int_status)
{
g_danube_dma_in_process = 1;
g_ifxmips_dma_in_process = 1;
tasklet_schedule(&dma_tasklet);
}
local_irq_restore(flag);
@ -274,13 +274,13 @@ dma_interrupt (int irq, void *dev_id)
tmp = readl(IFXMIPS_DMA_IRNEN);
writel(0, IFXMIPS_DMA_IRNEN);
g_danube_dma_int_status |= 1 << chan_no;
g_ifxmips_dma_int_status |= 1 << chan_no;
writel(tmp, IFXMIPS_DMA_IRNEN);
mask_and_ack_danube_irq(irq);
mask_and_ack_ifxmips_irq(irq);
if (!g_danube_dma_in_process)
if (!g_ifxmips_dma_in_process)
{
g_danube_dma_in_process = 1;
g_ifxmips_dma_in_process = 1;
tasklet_schedule(&dma_tasklet);
}
@ -387,7 +387,7 @@ dma_device_register(_dma_device_info *dev)
writel(readl(IFXMIPS_DMA_IRNEN) | (1 << chan_no), IFXMIPS_DMA_IRNEN);
writel(0x30000, IFXMIPS_DMA_CCTRL);
local_irq_restore(flag);
enable_danube_irq(dma_chan[chan_no].irq);
enable_ifxmips_irq(dma_chan[chan_no].irq);
}
}
}
@ -438,10 +438,10 @@ dma_device_unregister (_dma_device_info *dev)
{
pCh = dev->rx_chan[i];
chan_no = (int)(dev->rx_chan[i] - dma_chan);
disable_danube_irq(pCh->irq);
disable_ifxmips_irq(pCh->irq);
local_irq_save(flag);
g_danube_dma_int_status &= ~(1 << chan_no);
g_ifxmips_dma_int_status &= ~(1 << chan_no);
pCh->curr_desc = 0;
pCh->prev_desc = 0;
pCh->control = IFXMIPS_DMA_CH_OFF;
@ -685,7 +685,7 @@ dma_chip_init(void)
int i;
// enable DMA from PMU
danube_pmu_enable(IFXMIPS_PMU_PWDCR_DMA);
ifxmips_pmu_enable(IFXMIPS_PMU_PWDCR_DMA);
// reset DMA
writel(readl(IFXMIPS_DMA_CTRL) | 1, IFXMIPS_DMA_CTRL);
@ -704,7 +704,7 @@ dma_chip_init(void)
}
int
danube_dma_init (void)
ifxmips_dma_init (void)
{
int i;
@ -736,7 +736,7 @@ danube_dma_init (void)
return 0;
}
arch_initcall(danube_dma_init);
arch_initcall(ifxmips_dma_init);
void
dma_cleanup(void)

View file

@ -1,5 +1,5 @@
/*
* arch/mips/danube/interrupt.c
* arch/mips/ifxmips/interrupt.c
*
* 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
@ -17,7 +17,7 @@
*
* Copyright (C) 2005 Wu Qi Ming infineon
*
* Rewrite of Infineon Danube code, thanks to infineon for the support,
* Rewrite of Infineon IFXMips code, thanks to infineon for the support,
* software and hardware
*
* Copyright (C) 2007 John Crispin <blogic@openwrt.org>
@ -33,97 +33,97 @@
#include <asm/bootinfo.h>
#include <asm/irq.h>
#include <asm/danube/danube.h>
#include <asm/danube/danube_irq.h>
#include <asm/ifxmips/ifxmips.h>
#include <asm/ifxmips/ifxmips_irq.h>
#include <asm/irq_cpu.h>
void
disable_danube_irq (unsigned int irq_nr)
disable_ifxmips_irq (unsigned int irq_nr)
{
int i;
u32 *danube_ier = IFXMIPS_ICU_IM0_IER;
u32 *ifxmips_ier = IFXMIPS_ICU_IM0_IER;
irq_nr -= INT_NUM_IRQ0;
for (i = 0; i <= 4; i++)
{
if (irq_nr < INT_NUM_IM_OFFSET){
writel(readl(danube_ier) & ~(1 << irq_nr ), danube_ier);
writel(readl(ifxmips_ier) & ~(1 << irq_nr ), ifxmips_ier);
return;
}
danube_ier += IFXMIPS_ICU_OFFSET;
ifxmips_ier += IFXMIPS_ICU_OFFSET;
irq_nr -= INT_NUM_IM_OFFSET;
}
}
EXPORT_SYMBOL (disable_danube_irq);
EXPORT_SYMBOL (disable_ifxmips_irq);
void
mask_and_ack_danube_irq (unsigned int irq_nr)
mask_and_ack_ifxmips_irq (unsigned int irq_nr)
{
int i;
u32 *danube_ier = IFXMIPS_ICU_IM0_IER;
u32 *danube_isr = IFXMIPS_ICU_IM0_ISR;
u32 *ifxmips_ier = IFXMIPS_ICU_IM0_IER;
u32 *ifxmips_isr = IFXMIPS_ICU_IM0_ISR;
irq_nr -= INT_NUM_IRQ0;
for (i = 0; i <= 4; i++)
{
if (irq_nr < INT_NUM_IM_OFFSET)
{
writel(readl(danube_ier) & ~(1 << irq_nr ), danube_ier);
writel((1 << irq_nr ), danube_isr);
writel(readl(ifxmips_ier) & ~(1 << irq_nr ), ifxmips_ier);
writel((1 << irq_nr ), ifxmips_isr);
return;
}
danube_ier += IFXMIPS_ICU_OFFSET;
danube_isr += IFXMIPS_ICU_OFFSET;
ifxmips_ier += IFXMIPS_ICU_OFFSET;
ifxmips_isr += IFXMIPS_ICU_OFFSET;
irq_nr -= INT_NUM_IM_OFFSET;
}
}
EXPORT_SYMBOL (mask_and_ack_danube_irq);
EXPORT_SYMBOL (mask_and_ack_ifxmips_irq);
void
enable_danube_irq (unsigned int irq_nr)
enable_ifxmips_irq (unsigned int irq_nr)
{
int i;
u32 *danube_ier = IFXMIPS_ICU_IM0_IER;
u32 *ifxmips_ier = IFXMIPS_ICU_IM0_IER;
irq_nr -= INT_NUM_IRQ0;
for (i = 0; i <= 4; i++)
{
if (irq_nr < INT_NUM_IM_OFFSET)
{
writel(readl(danube_ier) | (1 << irq_nr ), danube_ier);
writel(readl(ifxmips_ier) | (1 << irq_nr ), ifxmips_ier);
return;
}
danube_ier += IFXMIPS_ICU_OFFSET;
ifxmips_ier += IFXMIPS_ICU_OFFSET;
irq_nr -= INT_NUM_IM_OFFSET;
}
}
EXPORT_SYMBOL (enable_danube_irq);
EXPORT_SYMBOL (enable_ifxmips_irq);
static unsigned int
startup_danube_irq (unsigned int irq)
startup_ifxmips_irq (unsigned int irq)
{
enable_danube_irq (irq);
enable_ifxmips_irq (irq);
return 0;
}
static void
end_danube_irq (unsigned int irq)
end_ifxmips_irq (unsigned int irq)
{
if (!(irq_desc[irq].status & (IRQ_DISABLED | IRQ_INPROGRESS)))
enable_danube_irq (irq);
enable_ifxmips_irq (irq);
}
static struct hw_interrupt_type danube_irq_type = {
static struct hw_interrupt_type ifxmips_irq_type = {
"IFXMIPS",
.startup = startup_danube_irq,
.enable = enable_danube_irq,
.disable = disable_danube_irq,
.unmask = enable_danube_irq,
.ack = end_danube_irq,
.mask = disable_danube_irq,
.mask_ack = mask_and_ack_danube_irq,
.end = end_danube_irq,
.startup = startup_ifxmips_irq,
.enable = enable_ifxmips_irq,
.disable = disable_ifxmips_irq,
.unmask = enable_ifxmips_irq,
.ack = end_ifxmips_irq,
.mask = disable_ifxmips_irq,
.mask_ack = mask_and_ack_ifxmips_irq,
.end = end_ifxmips_irq,
};
static inline int
@ -141,7 +141,7 @@ ls1bit32(unsigned long x)
}
void
danube_hw_irqdispatch (int module)
ifxmips_hw_irqdispatch (int module)
{
u32 irq;
@ -171,7 +171,7 @@ plat_irq_dispatch (void)
{
if (pending & (CAUSEF_IP2 << i))
{
danube_hw_irqdispatch(i);
ifxmips_hw_irqdispatch(i);
goto out;
}
}
@ -212,7 +212,7 @@ arch_init_irq(void)
irq_desc[i].action = NULL;
irq_desc[i].depth = 1;
#endif
set_irq_chip_and_handler(i, &danube_irq_type, handle_level_irq);
set_irq_chip_and_handler(i, &ifxmips_irq_type, handle_level_irq);
}
set_c0_status (IE_IRQ0 | IE_IRQ1 | IE_IRQ2 | IE_IRQ3 | IE_IRQ4 | IE_IRQ5);

View file

@ -4,8 +4,8 @@
#include <linux/init.h>
#include <linux/delay.h>
#include <linux/mm.h>
#include <asm/danube/danube.h>
#include <asm/danube/danube_irq.h>
#include <asm/ifxmips/ifxmips.h>
#include <asm/ifxmips/ifxmips_irq.h>
#include <asm/addrspace.h>
#include <linux/vmalloc.h>
@ -21,12 +21,12 @@
#define PCI_ACCESS_READ 0
#define PCI_ACCESS_WRITE 1
static int danube_pci_read_config_dword(struct pci_bus *bus, unsigned int devfn, int where, int size, u32 *val);
static int danube_pci_write_config_dword(struct pci_bus *bus, unsigned int devfn, int where, int size, u32 val);
static int ifxmips_pci_read_config_dword(struct pci_bus *bus, unsigned int devfn, int where, int size, u32 *val);
static int ifxmips_pci_write_config_dword(struct pci_bus *bus, unsigned int devfn, int where, int size, u32 val);
struct pci_ops danube_pci_ops = {
.read = danube_pci_read_config_dword,
.write = danube_pci_write_config_dword
struct pci_ops ifxmips_pci_ops = {
.read = ifxmips_pci_read_config_dword,
.write = ifxmips_pci_write_config_dword
};
static struct resource pci_io_resource = {
@ -43,18 +43,18 @@ static struct resource pci_mem_resource = {
.flags = IORESOURCE_MEM
};
static struct pci_controller danube_pci_controller = {
.pci_ops = &danube_pci_ops,
static struct pci_controller ifxmips_pci_controller = {
.pci_ops = &ifxmips_pci_ops,
.mem_resource = &pci_mem_resource,
.mem_offset = 0x00000000UL,
.io_resource = &pci_io_resource,
.io_offset = 0x00000000UL,
};
static u32 danube_pci_mapped_cfg;
static u32 ifxmips_pci_mapped_cfg;
static int
danube_pci_config_access(unsigned char access_type,
ifxmips_pci_config_access(unsigned char access_type,
struct pci_bus *bus, unsigned int devfn, unsigned int where, u32 *data)
{
unsigned long cfg_base;
@ -62,15 +62,15 @@ danube_pci_config_access(unsigned char access_type,
u32 temp;
/* Danube support slot from 0 to 15 */
/* dev_fn 0&0x68 (AD29) is danube itself */
/* IFXMips support slot from 0 to 15 */
/* dev_fn 0&0x68 (AD29) is ifxmips itself */
if ((bus->number != 0) || ((devfn & 0xf8) > 0x78)
|| ((devfn & 0xf8) == 0) || ((devfn & 0xf8) == 0x68))
return 1;
local_irq_save(flags);
cfg_base = danube_pci_mapped_cfg;
cfg_base = ifxmips_pci_mapped_cfg;
cfg_base |= (bus->number << IFXMIPS_PCI_CFG_BUSNUM_SHF) | (devfn <<
IFXMIPS_PCI_CFG_FUNNUM_SHF) | (where & ~0x3);
@ -91,12 +91,12 @@ danube_pci_config_access(unsigned char access_type,
wmb();
/* clean possible Master abort */
cfg_base = (danube_pci_mapped_cfg | (0x0 << IFXMIPS_PCI_CFG_FUNNUM_SHF)) + 4;
cfg_base = (ifxmips_pci_mapped_cfg | (0x0 << IFXMIPS_PCI_CFG_FUNNUM_SHF)) + 4;
temp = readl(((u32*)(cfg_base)));
#ifdef CONFIG_IFXMIPS_PCI_HW_SWAP
temp = swab32 (temp);
#endif
cfg_base = (danube_pci_mapped_cfg | (0x68 << IFXMIPS_PCI_CFG_FUNNUM_SHF)) + 4;
cfg_base = (ifxmips_pci_mapped_cfg | (0x68 << IFXMIPS_PCI_CFG_FUNNUM_SHF)) + 4;
writel(temp, ((u32*)cfg_base));
local_irq_restore(flags);
@ -107,12 +107,12 @@ danube_pci_config_access(unsigned char access_type,
return 0;
}
static int danube_pci_read_config_dword(struct pci_bus *bus, unsigned int devfn,
static int ifxmips_pci_read_config_dword(struct pci_bus *bus, unsigned int devfn,
int where, int size, u32 * val)
{
u32 data = 0;
if (danube_pci_config_access(PCI_ACCESS_READ, bus, devfn, where, &data))
if (ifxmips_pci_config_access(PCI_ACCESS_READ, bus, devfn, where, &data))
return PCIBIOS_DEVICE_NOT_FOUND;
if (size == 1)
@ -125,7 +125,7 @@ static int danube_pci_read_config_dword(struct pci_bus *bus, unsigned int devfn,
return PCIBIOS_SUCCESSFUL;
}
static int danube_pci_write_config_dword(struct pci_bus *bus, unsigned int devfn,
static int ifxmips_pci_write_config_dword(struct pci_bus *bus, unsigned int devfn,
int where, int size, u32 val)
{
u32 data = 0;
@ -134,7 +134,7 @@ static int danube_pci_write_config_dword(struct pci_bus *bus, unsigned int devfn
{
data = val;
} else {
if (danube_pci_config_access(PCI_ACCESS_READ, bus, devfn, where, &data))
if (ifxmips_pci_config_access(PCI_ACCESS_READ, bus, devfn, where, &data))
return PCIBIOS_DEVICE_NOT_FOUND;
if (size == 1)
@ -145,7 +145,7 @@ static int danube_pci_write_config_dword(struct pci_bus *bus, unsigned int devfn
(val << ((where & 3) << 3));
}
if (danube_pci_config_access(PCI_ACCESS_WRITE, bus, devfn, where, &data))
if (ifxmips_pci_config_access(PCI_ACCESS_WRITE, bus, devfn, where, &data))
return PCIBIOS_DEVICE_NOT_FOUND;
return PCIBIOS_SUCCESSFUL;
@ -178,8 +178,8 @@ int pcibios_plat_dev_init(struct pci_dev *dev){
return 0;
}
static void __init danube_pci_startup (void){
/*initialize the first PCI device--danube itself */
static void __init ifxmips_pci_startup (void){
/*initialize the first PCI device--ifxmips itself */
u32 temp_buffer;
/*TODO: trigger reset */
writel(readl(IFXMIPS_CGU_IFCCR) & ~0xf00000, IFXMIPS_CGU_IFCCR);
@ -301,17 +301,17 @@ int pcibios_init(void){
pci_probe_only = 0;
printk ("PCI: Probing PCI hardware on host bus 0.\n");
danube_pci_startup ();
ifxmips_pci_startup ();
// IFXMIPS_PCI_REG32(PCI_CR_CLK_CTRL_REG) &= (~8);
danube_pci_mapped_cfg = ioremap_nocache(0x17000000, 0x800 * 16);
printk("Danube PCI mapped to 0x%08X\n", (unsigned long)danube_pci_mapped_cfg);
ifxmips_pci_mapped_cfg = ioremap_nocache(0x17000000, 0x800 * 16);
printk("IFXMips PCI mapped to 0x%08X\n", (unsigned long)ifxmips_pci_mapped_cfg);
danube_pci_controller.io_map_base = (unsigned long)ioremap(IFXMIPS_PCI_IO_BASE, IFXMIPS_PCI_IO_SIZE - 1);
ifxmips_pci_controller.io_map_base = (unsigned long)ioremap(IFXMIPS_PCI_IO_BASE, IFXMIPS_PCI_IO_SIZE - 1);
printk("Danube PCI I/O mapped to 0x%08X\n", (unsigned long)danube_pci_controller.io_map_base);
printk("IFXMips PCI I/O mapped to 0x%08X\n", (unsigned long)ifxmips_pci_controller.io_map_base);
register_pci_controller(&danube_pci_controller);
register_pci_controller(&ifxmips_pci_controller);
return 0;
}

View file

@ -1,5 +1,5 @@
/*
* arch/mips/danube/pmu.c
* arch/mips/ifxmips/pmu.c
*
* 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
@ -22,10 +22,10 @@
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/version.h>
#include <asm/danube/danube.h>
#include <asm/ifxmips/ifxmips.h>
void
danube_pmu_enable (unsigned int module)
ifxmips_pmu_enable (unsigned int module)
{
int err = 1000000;
@ -35,11 +35,11 @@ danube_pmu_enable (unsigned int module)
if (!err)
panic("activating PMU module failed!");
}
EXPORT_SYMBOL(danube_pmu_enable);
EXPORT_SYMBOL(ifxmips_pmu_enable);
void
danube_pmu_disable (unsigned int module)
ifxmips_pmu_disable (unsigned int module)
{
writel(readl(IFXMIPS_PMU_PWDCR) | module, IFXMIPS_PMU_PWDCR);
}
EXPORT_SYMBOL(danube_pmu_disable);
EXPORT_SYMBOL(ifxmips_pmu_disable);

View file

@ -1,5 +1,5 @@
/*
* arch/mips/danube/prom.c
* arch/mips/ifxmips/prom.c
*
* 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
@ -17,7 +17,7 @@
*
* Copyright (C) 2005 Wu Qi Ming infineon
*
* Rewrite of Infineon Danube code, thanks to infineon for the support,
* Rewrite of Infineon IFXMips code, thanks to infineon for the support,
* software and hardware
*
* Copyright (C) 2007 John Crispin <blogic@openwrt.org>
@ -27,7 +27,7 @@
#include <linux/init.h>
#include <linux/bootmem.h>
#include <asm/bootinfo.h>
#include <asm/danube/danube.h>
#include <asm/ifxmips/ifxmips.h>
static char buf[1024];

View file

@ -1,5 +1,5 @@
/*
* arch/mips/danube/prom.c
* arch/mips/ifxmips/prom.c
*
* 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
@ -17,7 +17,7 @@
*
* Copyright (C) 2005 infineon
*
* Rewrite of Infineon Danube code, thanks to infineon for the support,
* Rewrite of Infineon IFXMips code, thanks to infineon for the support,
* software and hardware
*
* Copyright (C) 2007 John Crispin <blogic@openwrt.org>
@ -29,10 +29,10 @@
#include <asm/reboot.h>
#include <asm/system.h>
#include <asm/io.h>
#include <asm/danube/danube.h>
#include <asm/ifxmips/ifxmips.h>
static void
danube_machine_restart (char *command)
ifxmips_machine_restart (char *command)
{
printk (KERN_NOTICE "System restart\n");
local_irq_disable ();
@ -42,7 +42,7 @@ danube_machine_restart (char *command)
}
static void
danube_machine_halt (void)
ifxmips_machine_halt (void)
{
printk (KERN_NOTICE "System halted.\n");
local_irq_disable ();
@ -50,7 +50,7 @@ danube_machine_halt (void)
}
static void
danube_machine_power_off (void)
ifxmips_machine_power_off (void)
{
printk (KERN_NOTICE "Please turn off the power now.\n");
local_irq_disable ();
@ -58,9 +58,9 @@ danube_machine_power_off (void)
}
void
danube_reboot_setup (void)
ifxmips_reboot_setup (void)
{
_machine_restart = danube_machine_restart;
_machine_halt = danube_machine_halt;
pm_power_off = danube_machine_power_off;
_machine_restart = ifxmips_machine_restart;
_machine_halt = ifxmips_machine_halt;
pm_power_off = ifxmips_machine_power_off;
}

View file

@ -1,5 +1,5 @@
/*
* arch/mips/danube/setup.c
* arch/mips/ifxmips/setup.c
*
* 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
@ -17,7 +17,7 @@
*
* Copyright (C) 2004 peng.liu@infineon.com
*
* Rewrite of Infineon Danube code, thanks to infineon for the support,
* Rewrite of Infineon IFXMips code, thanks to infineon for the support,
* software and hardware
*
* Copyright (C) 2007 John Crispin <blogic@openwrt.org>
@ -30,14 +30,14 @@
#include <asm/traps.h>
#include <asm/cpu.h>
#include <asm/irq.h>
#include <asm/danube/danube.h>
#include <asm/danube/danube_irq.h>
#include <asm/danube/danube_pmu.h>
#include <asm/ifxmips/ifxmips.h>
#include <asm/ifxmips/ifxmips_irq.h>
#include <asm/ifxmips/ifxmips_pmu.h>
static unsigned int r4k_offset; /* Amount to increment compare reg each time */
static unsigned int r4k_cur; /* What counter should be at next timer irq */
extern void danube_reboot_setup (void);
extern void ifxmips_reboot_setup (void);
void prom_printf (const char * fmt, ...);
void
@ -47,7 +47,7 @@ __init bus_error_init (void)
}
unsigned int
danube_get_ddr_hz (void)
ifxmips_get_ddr_hz (void)
{
switch (readl(IFXMIPS_CGU_SYS) & 0x3)
{
@ -60,12 +60,12 @@ danube_get_ddr_hz (void)
}
return CLOCK_83M;
}
EXPORT_SYMBOL(danube_get_ddr_hz);
EXPORT_SYMBOL(ifxmips_get_ddr_hz);
unsigned int
danube_get_cpu_hz (void)
ifxmips_get_cpu_hz (void)
{
unsigned int ddr_clock = danube_get_ddr_hz();
unsigned int ddr_clock = ifxmips_get_ddr_hz();
switch (readl(IFXMIPS_CGU_SYS) & 0xc)
{
case 0:
@ -75,38 +75,38 @@ danube_get_cpu_hz (void)
}
return ddr_clock << 1;
}
EXPORT_SYMBOL(danube_get_cpu_hz);
EXPORT_SYMBOL(ifxmips_get_cpu_hz);
unsigned int
danube_get_fpi_hz (void)
ifxmips_get_fpi_hz (void)
{
unsigned int ddr_clock = danube_get_ddr_hz();
unsigned int ddr_clock = ifxmips_get_ddr_hz();
if (readl(IFXMIPS_CGU_SYS) & 0x40)
{
return ddr_clock >> 1;
}
return ddr_clock;
}
EXPORT_SYMBOL(danube_get_fpi_hz);
EXPORT_SYMBOL(ifxmips_get_fpi_hz);
unsigned int
danube_get_cpu_ver (void)
ifxmips_get_cpu_ver (void)
{
return readl(IFXMIPS_MCD_CHIPID) & 0xFFFFF000;
}
EXPORT_SYMBOL(danube_get_cpu_ver);
EXPORT_SYMBOL(ifxmips_get_cpu_ver);
void
danube_time_init (void)
ifxmips_time_init (void)
{
mips_hpt_frequency = danube_get_cpu_hz() / 2;
mips_hpt_frequency = ifxmips_get_cpu_hz() / 2;
r4k_offset = mips_hpt_frequency / HZ;
printk("mips_hpt_frequency:%d\n", mips_hpt_frequency);
printk("r4k_offset: %08x(%d)\n", r4k_offset, r4k_offset);
}
int
danube_be_handler(struct pt_regs *regs, int is_fixup)
ifxmips_be_handler(struct pt_regs *regs, int is_fixup)
{
/*TODO*/
printk(KERN_ERR "TODO: BUS error\n");
@ -116,7 +116,7 @@ danube_be_handler(struct pt_regs *regs, int is_fixup)
/* ISR GPTU Timer 6 for high resolution timer */
static irqreturn_t
danube_timer6_interrupt(int irq, void *dev_id)
ifxmips_timer6_interrupt(int irq, void *dev_id)
{
timer_interrupt(IFXMIPS_TIMER6_INT, NULL);
@ -124,7 +124,7 @@ danube_timer6_interrupt(int irq, void *dev_id)
}
static struct irqaction hrt_irqaction = {
.handler = danube_timer6_interrupt,
.handler = ifxmips_timer6_interrupt,
.flags = IRQF_DISABLED,
.name = "hrt",
};
@ -139,7 +139,7 @@ plat_timer_setup (struct irqaction *irq)
r4k_cur = (read_c0_count() + r4k_offset);
write_c0_compare(r4k_cur);
danube_pmu_enable(IFXMIPS_PMU_PWDCR_GPT | IFXMIPS_PMU_PWDCR_FPI);
ifxmips_pmu_enable(IFXMIPS_PMU_PWDCR_GPT | IFXMIPS_PMU_PWDCR_FPI);
writel(0x100, IFXMIPS_GPTU_GPT_CLC);
@ -158,7 +158,7 @@ void __init
plat_mem_setup (void)
{
u32 status;
prom_printf("This %s has a cpu rev of 0x%X\n", BOARD_SYSTEM_TYPE, danube_get_cpu_ver());
prom_printf("This %s has a cpu rev of 0x%X\n", BOARD_SYSTEM_TYPE, ifxmips_get_cpu_ver());
//TODO WHY ???
/* clear RE bit*/
@ -166,9 +166,9 @@ plat_mem_setup (void)
status &= (~(1<<25));
write_c0_status(status);
danube_reboot_setup();
board_time_init = danube_time_init;
board_be_handler = &danube_be_handler;
ifxmips_reboot_setup();
board_time_init = ifxmips_time_init;
board_be_handler = &ifxmips_be_handler;
ioport_resource.start = IOPORT_RESOURCE_START;
ioport_resource.end = IOPORT_RESOURCE_END;

View file

@ -53,13 +53,13 @@
#include <linux/kernel.h>
#include <linux/version.h>
#include <asm/danube/danube.h>
#include <asm/danube/danube_irq.h>
#include <asm/danube/ifx_ssc_defines.h>
#include <asm/danube/ifx_ssc.h>
#include <asm/ifxmips/ifxmips.h>
#include <asm/ifxmips/ifxmips_irq.h>
#include <asm/ifxmips/ifx_ssc_defines.h>
#include <asm/ifxmips/ifx_ssc.h>
/* allow the user to set the major device number */
static int danube_eeprom_maj = 0;
static int ifxmips_eeprom_maj = 0;
extern int ifx_ssc_init (void);
extern int ifx_ssc_open (struct inode *inode, struct file *filp);
@ -299,26 +299,26 @@ out:
}
int
danube_eeprom_open (struct inode *inode, struct file *filp)
ifxmips_eeprom_open (struct inode *inode, struct file *filp)
{
filp->f_pos = 0;
return 0;
}
int
danube_eeprom_close (struct inode *inode, struct file *filp)
ifxmips_eeprom_close (struct inode *inode, struct file *filp)
{
return 0;
}
int
danube_eeprom_ioctl (struct inode *inode, struct file *filp, unsigned int cmd, unsigned long data)
ifxmips_eeprom_ioctl (struct inode *inode, struct file *filp, unsigned int cmd, unsigned long data)
{
return 0;
}
ssize_t
danube_eeprom_read (char *buf, size_t len, unsigned int addr)
ifxmips_eeprom_read (char *buf, size_t len, unsigned int addr)
{
int ret = 0;
unsigned int data;
@ -335,7 +335,7 @@ danube_eeprom_read (char *buf, size_t len, unsigned int addr)
if ((ret = ifx_ssc_open((struct inode *) 0, NULL)))
{
printk("danube_eeprom_open fails\n");
printk("ifxmips_eeprom_open fails\n");
goto out;
}
@ -361,14 +361,14 @@ danube_eeprom_read (char *buf, size_t len, unsigned int addr)
out:
if (ifx_ssc_close((struct inode *) 0, NULL))
printk("danube_eeprom_close fails\n");
printk("ifxmips_eeprom_close fails\n");
return len;
}
EXPORT_SYMBOL(danube_eeprom_read);
EXPORT_SYMBOL(ifxmips_eeprom_read);
static ssize_t
danube_eeprom_fops_read (struct file *filp, char *ubuf, size_t len, loff_t * off)
ifxmips_eeprom_fops_read (struct file *filp, char *ubuf, size_t len, loff_t * off)
{
int ret = 0;
unsigned char ssc_rx_buf[EEPROM_SIZE];
@ -385,7 +385,7 @@ danube_eeprom_fops_read (struct file *filp, char *ubuf, size_t len, loff_t * off
local_irq_save(flag);
if ((ret = danube_eeprom_read(ssc_rx_buf, len, *off)) < 0)
if ((ret = ifxmips_eeprom_read(ssc_rx_buf, len, *off)) < 0)
{
printk("read fails, err=%x\n", ret);
local_irq_restore(flag);
@ -405,14 +405,14 @@ danube_eeprom_fops_read (struct file *filp, char *ubuf, size_t len, loff_t * off
}
ssize_t
danube_eeprom_write (char *buf, size_t len, unsigned int addr)
ifxmips_eeprom_write (char *buf, size_t len, unsigned int addr)
{
int ret = 0;
unsigned int data;
if ((ret = ifx_ssc_open ((struct inode *) 0, NULL)))
{
printk ("danube_eeprom_open fails\n");
printk ("ifxmips_eeprom_open fails\n");
goto out;
}
@ -436,14 +436,14 @@ danube_eeprom_write (char *buf, size_t len, unsigned int addr)
out:
if (ifx_ssc_close ((struct inode *) 0, NULL))
printk ("danube_eeprom_close fails\n");
printk ("ifxmips_eeprom_close fails\n");
return ret;
}
EXPORT_SYMBOL(danube_eeprom_write);
EXPORT_SYMBOL(ifxmips_eeprom_write);
static ssize_t
danube_eeprom_fops_write (struct file *filp, const char *ubuf, size_t len, loff_t * off)
ifxmips_eeprom_fops_write (struct file *filp, const char *ubuf, size_t len, loff_t * off)
{
int ret = 0;
unsigned char ssc_tx_buf[EEPROM_SIZE];
@ -457,7 +457,7 @@ danube_eeprom_fops_write (struct file *filp, const char *ubuf, size_t len, loff_
if ((ret = copy_from_user (ssc_tx_buf, ubuf, len)))
return EFAULT;
ret = danube_eeprom_write (ssc_tx_buf, len, *off);
ret = ifxmips_eeprom_write (ssc_tx_buf, len, *off);
if (ret > 0)
*off = ret;
@ -466,7 +466,7 @@ danube_eeprom_fops_write (struct file *filp, const char *ubuf, size_t len, loff_
}
loff_t
danube_eeprom_llseek (struct file * filp, loff_t off, int whence)
ifxmips_eeprom_llseek (struct file * filp, loff_t off, int whence)
{
loff_t newpos;
switch (whence) {
@ -490,24 +490,24 @@ danube_eeprom_llseek (struct file * filp, loff_t off, int whence)
return newpos;
}
static struct file_operations danube_eeprom_fops = {
static struct file_operations ifxmips_eeprom_fops = {
owner:THIS_MODULE,
llseek:danube_eeprom_llseek,
read:danube_eeprom_fops_read,
write:danube_eeprom_fops_write,
ioctl:danube_eeprom_ioctl,
open:danube_eeprom_open,
release:danube_eeprom_close,
llseek:ifxmips_eeprom_llseek,
read:ifxmips_eeprom_fops_read,
write:ifxmips_eeprom_fops_write,
ioctl:ifxmips_eeprom_ioctl,
open:ifxmips_eeprom_open,
release:ifxmips_eeprom_close,
};
int __init
danube_eeprom_init (void)
ifxmips_eeprom_init (void)
{
int ret = 0;
danube_eeprom_maj = register_chrdev(0, "eeprom", &danube_eeprom_fops);
ifxmips_eeprom_maj = register_chrdev(0, "eeprom", &ifxmips_eeprom_fops);
if (danube_eeprom_maj < 0)
if (ifxmips_eeprom_maj < 0)
{
printk("failed to register eeprom device\n");
ret = -EINVAL;
@ -515,27 +515,27 @@ danube_eeprom_init (void)
goto out;
}
printk("danube_eeprom : /dev/eeprom mayor %d\n", danube_eeprom_maj);
printk("ifxmips_eeprom : /dev/eeprom mayor %d\n", ifxmips_eeprom_maj);
out:
return ret;
}
void __exit
danube_eeprom_cleanup_module (void)
ifxmips_eeprom_cleanup_module (void)
{
/*if (unregister_chrdev (danube_eeprom_maj, "eeprom")) {
/*if (unregister_chrdev (ifxmips_eeprom_maj, "eeprom")) {
printk ("Unable to unregister major %d for the EEPROM\n",
maj);
}*/
}
module_exit (danube_eeprom_cleanup_module);
module_init (danube_eeprom_init);
module_exit (ifxmips_eeprom_cleanup_module);
module_init (ifxmips_eeprom_init);
MODULE_LICENSE ("GPL");
MODULE_AUTHOR ("Peng Liu");
MODULE_DESCRIPTION ("IFAP EEPROM driver");
MODULE_SUPPORTED_DEVICE ("danube_eeprom");
MODULE_SUPPORTED_DEVICE ("ifxmips_eeprom");

View file

@ -26,13 +26,13 @@
#include <linux/ioctl.h>
#include <asm/semaphore.h>
#include <asm/uaccess.h>
#include <asm/danube/danube.h>
#include <asm/danube/danube_ioctl.h>
#include <asm/ifxmips/ifxmips.h>
#include <asm/ifxmips/ifxmips_ioctl.h>
#define MAX_PORTS 2
#define PINS_PER_PORT 16
static unsigned int danube_gpio_major = 0;
static unsigned int ifxmips_gpio_major = 0;
/* TODO do we need this ? */
static struct semaphore port_sem;
@ -41,147 +41,147 @@ static struct semaphore port_sem;
#define IFXMIPS_GPIO_SANITY {if (port > MAX_PORTS || pin > PINS_PER_PORT) return -EINVAL; }
int
danube_port_reserve_pin (unsigned int port, unsigned int pin)
ifxmips_port_reserve_pin (unsigned int port, unsigned int pin)
{
IFXMIPS_GPIO_SANITY;
printk("%s : call to obseleted function\n", __func__);
return 0;
}
EXPORT_SYMBOL(danube_port_reserve_pin);
EXPORT_SYMBOL(ifxmips_port_reserve_pin);
int
danube_port_free_pin (unsigned int port, unsigned int pin)
ifxmips_port_free_pin (unsigned int port, unsigned int pin)
{
IFXMIPS_GPIO_SANITY;
printk("%s : call to obseleted function\n", __func__);
return 0;
}
EXPORT_SYMBOL(danube_port_free_pin);
EXPORT_SYMBOL(ifxmips_port_free_pin);
int
danube_port_set_open_drain (unsigned int port, unsigned int pin)
ifxmips_port_set_open_drain (unsigned int port, unsigned int pin)
{
IFXMIPS_GPIO_SANITY;
writel(readl(IFXMIPS_GPIO_P0_OD + (port * 0x30)) | (1 << pin), IFXMIPS_GPIO_P0_OD);
return 0;
}
EXPORT_SYMBOL(danube_port_set_open_drain);
EXPORT_SYMBOL(ifxmips_port_set_open_drain);
int
danube_port_clear_open_drain (unsigned int port, unsigned int pin)
ifxmips_port_clear_open_drain (unsigned int port, unsigned int pin)
{
IFXMIPS_GPIO_SANITY;
writel(readl(IFXMIPS_GPIO_P0_OD + (port * 0x30)) & ~(1 << pin), IFXMIPS_GPIO_P0_OD);
return 0;
}
EXPORT_SYMBOL(danube_port_clear_open_drain);
EXPORT_SYMBOL(ifxmips_port_clear_open_drain);
int
danube_port_set_pudsel (unsigned int port, unsigned int pin)
ifxmips_port_set_pudsel (unsigned int port, unsigned int pin)
{
IFXMIPS_GPIO_SANITY;
writel(readl(IFXMIPS_GPIO_P0_PUDSEL + (port * 0x30)) | (1 << pin), IFXMIPS_GPIO_P0_PUDSEL);
return 0;
}
EXPORT_SYMBOL(danube_port_set_pudsel);
EXPORT_SYMBOL(ifxmips_port_set_pudsel);
int
danube_port_clear_pudsel (unsigned int port, unsigned int pin)
ifxmips_port_clear_pudsel (unsigned int port, unsigned int pin)
{
IFXMIPS_GPIO_SANITY;
writel(readl(IFXMIPS_GPIO_P0_PUDSEL + (port * 0x30)) & ~(1 << pin), IFXMIPS_GPIO_P0_PUDSEL);
return 0;
}
EXPORT_SYMBOL(danube_port_clear_pudsel);
EXPORT_SYMBOL(ifxmips_port_clear_pudsel);
int
danube_port_set_puden (unsigned int port, unsigned int pin)
ifxmips_port_set_puden (unsigned int port, unsigned int pin)
{
IFXMIPS_GPIO_SANITY;
writel(readl(IFXMIPS_GPIO_P0_PUDEN + (port * 0x30)) | (1 << pin), IFXMIPS_GPIO_P0_PUDEN);
return 0;
}
EXPORT_SYMBOL(danube_port_set_puden);
EXPORT_SYMBOL(ifxmips_port_set_puden);
int
danube_port_clear_puden (unsigned int port, unsigned int pin)
ifxmips_port_clear_puden (unsigned int port, unsigned int pin)
{
IFXMIPS_GPIO_SANITY;
writel(readl(IFXMIPS_GPIO_P0_PUDEN + (port * 0x30)) & ~(1 << pin), IFXMIPS_GPIO_P0_PUDEN);
return 0;
}
EXPORT_SYMBOL(danube_port_clear_puden);
EXPORT_SYMBOL(ifxmips_port_clear_puden);
int
danube_port_set_stoff (unsigned int port, unsigned int pin)
ifxmips_port_set_stoff (unsigned int port, unsigned int pin)
{
IFXMIPS_GPIO_SANITY;
writel(readl(IFXMIPS_GPIO_P0_STOFF + (port * 0x30)) | (1 << pin), IFXMIPS_GPIO_P0_STOFF);
return 0;
}
EXPORT_SYMBOL(danube_port_set_stoff);
EXPORT_SYMBOL(ifxmips_port_set_stoff);
int
danube_port_clear_stoff (unsigned int port, unsigned int pin)
ifxmips_port_clear_stoff (unsigned int port, unsigned int pin)
{
IFXMIPS_GPIO_SANITY;
writel(readl(IFXMIPS_GPIO_P0_STOFF + (port * 0x30)) & ~(1 << pin), IFXMIPS_GPIO_P0_STOFF);
return 0;
}
EXPORT_SYMBOL(danube_port_clear_stoff);
EXPORT_SYMBOL(ifxmips_port_clear_stoff);
int
danube_port_set_dir_out (unsigned int port, unsigned int pin)
ifxmips_port_set_dir_out (unsigned int port, unsigned int pin)
{
IFXMIPS_GPIO_SANITY;
writel(readl(IFXMIPS_GPIO_P0_DIR + (port * 0x30)) | (1 << pin), IFXMIPS_GPIO_P0_DIR);
return 0;
}
EXPORT_SYMBOL(danube_port_set_dir_out);
EXPORT_SYMBOL(ifxmips_port_set_dir_out);
int
danube_port_set_dir_in (unsigned int port, unsigned int pin)
ifxmips_port_set_dir_in (unsigned int port, unsigned int pin)
{
IFXMIPS_GPIO_SANITY;
writel(readl(IFXMIPS_GPIO_P0_DIR + (port * 0x30)) & ~(1 << pin), IFXMIPS_GPIO_P0_DIR);
return 0;
}
EXPORT_SYMBOL(danube_port_set_dir_in);
EXPORT_SYMBOL(ifxmips_port_set_dir_in);
int
danube_port_set_output (unsigned int port, unsigned int pin)
ifxmips_port_set_output (unsigned int port, unsigned int pin)
{
IFXMIPS_GPIO_SANITY;
writel(readl(IFXMIPS_GPIO_P0_OUT + (port * 0x30)) | (1 << pin), IFXMIPS_GPIO_P0_OUT);
return 0;
}
EXPORT_SYMBOL(danube_port_set_output);
EXPORT_SYMBOL(ifxmips_port_set_output);
int
danube_port_clear_output (unsigned int port, unsigned int pin)
ifxmips_port_clear_output (unsigned int port, unsigned int pin)
{
IFXMIPS_GPIO_SANITY;
writel(readl(IFXMIPS_GPIO_P0_OUT + (port * 0x30)) & ~(1 << pin), IFXMIPS_GPIO_P0_OUT);
return 0;
}
EXPORT_SYMBOL(danube_port_clear_output);
EXPORT_SYMBOL(ifxmips_port_clear_output);
int
danube_port_get_input (unsigned int port, unsigned int pin)
ifxmips_port_get_input (unsigned int port, unsigned int pin)
{
IFXMIPS_GPIO_SANITY;
@ -190,49 +190,49 @@ danube_port_get_input (unsigned int port, unsigned int pin)
else
return 1;
}
EXPORT_SYMBOL(danube_port_get_input);
EXPORT_SYMBOL(ifxmips_port_get_input);
int
danube_port_set_altsel0 (unsigned int port, unsigned int pin)
ifxmips_port_set_altsel0 (unsigned int port, unsigned int pin)
{
IFXMIPS_GPIO_SANITY;
writel(readl(IFXMIPS_GPIO_P0_ALTSEL0 + (port * 0x30)) | (1 << pin), IFXMIPS_GPIO_P0_ALTSEL0);
return 0;
}
EXPORT_SYMBOL(danube_port_set_altsel0);
EXPORT_SYMBOL(ifxmips_port_set_altsel0);
int
danube_port_clear_altsel0 (unsigned int port, unsigned int pin)
ifxmips_port_clear_altsel0 (unsigned int port, unsigned int pin)
{
IFXMIPS_GPIO_SANITY;
writel(readl(IFXMIPS_GPIO_P0_ALTSEL0 + (port * 0x30)) & ~(1 << pin), IFXMIPS_GPIO_P0_ALTSEL0);
return 0;
}
EXPORT_SYMBOL(danube_port_clear_altsel0);
EXPORT_SYMBOL(ifxmips_port_clear_altsel0);
int
danube_port_set_altsel1 (unsigned int port, unsigned int pin)
ifxmips_port_set_altsel1 (unsigned int port, unsigned int pin)
{
IFXMIPS_GPIO_SANITY;
writel(readl(IFXMIPS_GPIO_P0_ALTSEL1 + (port * 0x30)) | (1 << pin), IFXMIPS_GPIO_P0_ALTSEL1);
return 0;
}
EXPORT_SYMBOL(danube_port_set_altsel1);
EXPORT_SYMBOL(ifxmips_port_set_altsel1);
int
danube_port_clear_altsel1 (unsigned int port, unsigned int pin)
ifxmips_port_clear_altsel1 (unsigned int port, unsigned int pin)
{
IFXMIPS_GPIO_SANITY;
writel(readl(IFXMIPS_GPIO_P0_ALTSEL1 + (port * 0x30)) & ~(1 << pin), IFXMIPS_GPIO_P0_ALTSEL1);
return 0;
}
EXPORT_SYMBOL(danube_port_clear_altsel1);
EXPORT_SYMBOL(ifxmips_port_clear_altsel1);
long danube_port_read_procmem_helper(char* tag, u32* in_reg, char *buf)
long ifxmips_port_read_procmem_helper(char* tag, u32* in_reg, char *buf)
{
u32 reg, bit = 0;
unsigned int len, t;
@ -252,10 +252,10 @@ long danube_port_read_procmem_helper(char* tag, u32* in_reg, char *buf)
}
int
danube_port_read_procmem (char *buf, char **start, off_t offset, int count,
ifxmips_port_read_procmem (char *buf, char **start, off_t offset, int count,
int *eof, void *data)
{
long len = sprintf (buf, "\nDanube Port Settings\n");
long len = sprintf (buf, "\nIFXMips Port Settings\n");
len += sprintf (buf + len,
" 3 2 1 0\n");
@ -264,24 +264,24 @@ danube_port_read_procmem (char *buf, char **start, off_t offset, int count,
len += sprintf (buf + len,
"----------------------------------------\n");
len += danube_port_read_procmem_helper("P0-OUT", IFXMIPS_GPIO_P0_OUT, &buf[len]);
len += danube_port_read_procmem_helper("P1-OUT", IFXMIPS_GPIO_P1_OUT, &buf[len]);
len += danube_port_read_procmem_helper("P0-IN ", IFXMIPS_GPIO_P0_IN, &buf[len]);
len += danube_port_read_procmem_helper("P1-IN ", IFXMIPS_GPIO_P1_IN, &buf[len]);
len += danube_port_read_procmem_helper("P0-DIR", IFXMIPS_GPIO_P0_DIR, &buf[len]);
len += danube_port_read_procmem_helper("P1-DIR", IFXMIPS_GPIO_P1_DIR, &buf[len]);
len += danube_port_read_procmem_helper("P0-STO ", IFXMIPS_GPIO_P0_STOFF, &buf[len]);
len += danube_port_read_procmem_helper("P1-STO ", IFXMIPS_GPIO_P1_STOFF, &buf[len]);
len += danube_port_read_procmem_helper("P0-PUDE", IFXMIPS_GPIO_P0_PUDEN, &buf[len]);
len += danube_port_read_procmem_helper("P1-PUDE", IFXMIPS_GPIO_P1_PUDEN, &buf[len]);
len += danube_port_read_procmem_helper("P0-OD ", IFXMIPS_GPIO_P0_OD, &buf[len]);
len += danube_port_read_procmem_helper("P1-OD ", IFXMIPS_GPIO_P1_OD, &buf[len]);
len += danube_port_read_procmem_helper("P0-PUDS", IFXMIPS_GPIO_P0_PUDSEL, &buf[len]);
len += danube_port_read_procmem_helper("P1-PUDS", IFXMIPS_GPIO_P1_PUDSEL, &buf[len]);
len += danube_port_read_procmem_helper("P0-ALT0", IFXMIPS_GPIO_P0_ALTSEL0, &buf[len]);
len += danube_port_read_procmem_helper("P1-ALT0", IFXMIPS_GPIO_P1_ALTSEL0, &buf[len]);
len += danube_port_read_procmem_helper("P0-ALT1", IFXMIPS_GPIO_P0_ALTSEL1, &buf[len]);
len += danube_port_read_procmem_helper("P1-ALT1", IFXMIPS_GPIO_P1_ALTSEL1, &buf[len]);
len += ifxmips_port_read_procmem_helper("P0-OUT", IFXMIPS_GPIO_P0_OUT, &buf[len]);
len += ifxmips_port_read_procmem_helper("P1-OUT", IFXMIPS_GPIO_P1_OUT, &buf[len]);
len += ifxmips_port_read_procmem_helper("P0-IN ", IFXMIPS_GPIO_P0_IN, &buf[len]);
len += ifxmips_port_read_procmem_helper("P1-IN ", IFXMIPS_GPIO_P1_IN, &buf[len]);
len += ifxmips_port_read_procmem_helper("P0-DIR", IFXMIPS_GPIO_P0_DIR, &buf[len]);
len += ifxmips_port_read_procmem_helper("P1-DIR", IFXMIPS_GPIO_P1_DIR, &buf[len]);
len += ifxmips_port_read_procmem_helper("P0-STO ", IFXMIPS_GPIO_P0_STOFF, &buf[len]);
len += ifxmips_port_read_procmem_helper("P1-STO ", IFXMIPS_GPIO_P1_STOFF, &buf[len]);
len += ifxmips_port_read_procmem_helper("P0-PUDE", IFXMIPS_GPIO_P0_PUDEN, &buf[len]);
len += ifxmips_port_read_procmem_helper("P1-PUDE", IFXMIPS_GPIO_P1_PUDEN, &buf[len]);
len += ifxmips_port_read_procmem_helper("P0-OD ", IFXMIPS_GPIO_P0_OD, &buf[len]);
len += ifxmips_port_read_procmem_helper("P1-OD ", IFXMIPS_GPIO_P1_OD, &buf[len]);
len += ifxmips_port_read_procmem_helper("P0-PUDS", IFXMIPS_GPIO_P0_PUDSEL, &buf[len]);
len += ifxmips_port_read_procmem_helper("P1-PUDS", IFXMIPS_GPIO_P1_PUDSEL, &buf[len]);
len += ifxmips_port_read_procmem_helper("P0-ALT0", IFXMIPS_GPIO_P0_ALTSEL0, &buf[len]);
len += ifxmips_port_read_procmem_helper("P1-ALT0", IFXMIPS_GPIO_P1_ALTSEL0, &buf[len]);
len += ifxmips_port_read_procmem_helper("P0-ALT1", IFXMIPS_GPIO_P0_ALTSEL1, &buf[len]);
len += ifxmips_port_read_procmem_helper("P1-ALT1", IFXMIPS_GPIO_P1_ALTSEL1, &buf[len]);
len = len + sprintf (buf + len, "\n\n");
*eof = 1;
@ -290,23 +290,23 @@ danube_port_read_procmem (char *buf, char **start, off_t offset, int count,
}
static int
danube_port_open (struct inode *inode, struct file *filep)
ifxmips_port_open (struct inode *inode, struct file *filep)
{
return 0;
}
static int
danube_port_release (struct inode *inode, struct file *filelp)
ifxmips_port_release (struct inode *inode, struct file *filelp)
{
return 0;
}
static int
danube_port_ioctl (struct inode *inode, struct file *filp,
ifxmips_port_ioctl (struct inode *inode, struct file *filp,
unsigned int cmd, unsigned long arg)
{
int ret = 0;
volatile struct danube_port_ioctl_parm parm;
volatile struct ifxmips_port_ioctl_parm parm;
if (_IOC_TYPE (cmd) != IFXMIPS_PORT_IOC_MAGIC)
return -EINVAL;
@ -314,15 +314,15 @@ danube_port_ioctl (struct inode *inode, struct file *filp,
if (_IOC_DIR (cmd) & _IOC_WRITE) {
if (!access_ok
(VERIFY_READ, arg,
sizeof (struct danube_port_ioctl_parm)))
sizeof (struct ifxmips_port_ioctl_parm)))
return -EFAULT;
ret = copy_from_user ((void *) &parm, (void *) arg,
sizeof (struct danube_port_ioctl_parm));
sizeof (struct ifxmips_port_ioctl_parm));
}
if (_IOC_DIR (cmd) & _IOC_READ) {
if (!access_ok
(VERIFY_WRITE, arg,
sizeof (struct danube_port_ioctl_parm)))
sizeof (struct ifxmips_port_ioctl_parm)))
return -EFAULT;
}
@ -332,64 +332,64 @@ danube_port_ioctl (struct inode *inode, struct file *filp,
switch (cmd) {
case IFXMIPS_PORT_IOCOD:
if (parm.value == 0x00)
danube_port_clear_open_drain(parm.port, parm.pin);
ifxmips_port_clear_open_drain(parm.port, parm.pin);
else
danube_port_set_open_drain(parm.port, parm.pin);
ifxmips_port_set_open_drain(parm.port, parm.pin);
break;
case IFXMIPS_PORT_IOCPUDSEL:
if (parm.value == 0x00)
danube_port_clear_pudsel(parm.port, parm.pin);
ifxmips_port_clear_pudsel(parm.port, parm.pin);
else
danube_port_set_pudsel(parm.port, parm.pin);
ifxmips_port_set_pudsel(parm.port, parm.pin);
break;
case IFXMIPS_PORT_IOCPUDEN:
if (parm.value == 0x00)
danube_port_clear_puden(parm.port, parm.pin);
ifxmips_port_clear_puden(parm.port, parm.pin);
else
danube_port_set_puden(parm.port, parm.pin);
ifxmips_port_set_puden(parm.port, parm.pin);
break;
case IFXMIPS_PORT_IOCSTOFF:
if (parm.value == 0x00)
danube_port_clear_stoff(parm.port, parm.pin);
ifxmips_port_clear_stoff(parm.port, parm.pin);
else
danube_port_set_stoff(parm.port, parm.pin);
ifxmips_port_set_stoff(parm.port, parm.pin);
break;
case IFXMIPS_PORT_IOCDIR:
if (parm.value == 0x00)
danube_port_set_dir_in(parm.port, parm.pin);
ifxmips_port_set_dir_in(parm.port, parm.pin);
else
danube_port_set_dir_out(parm.port, parm.pin);
ifxmips_port_set_dir_out(parm.port, parm.pin);
break;
case IFXMIPS_PORT_IOCOUTPUT:
if (parm.value == 0x00)
danube_port_clear_output(parm.port, parm.pin);
ifxmips_port_clear_output(parm.port, parm.pin);
else
danube_port_set_output(parm.port, parm.pin);
ifxmips_port_set_output(parm.port, parm.pin);
break;
case IFXMIPS_PORT_IOCALTSEL0:
if (parm.value == 0x00)
danube_port_clear_altsel0(parm.port, parm.pin);
ifxmips_port_clear_altsel0(parm.port, parm.pin);
else
danube_port_set_altsel0(parm.port, parm.pin);
ifxmips_port_set_altsel0(parm.port, parm.pin);
break;
case IFXMIPS_PORT_IOCALTSEL1:
if (parm.value == 0x00)
danube_port_clear_altsel1(parm.port, parm.pin);
ifxmips_port_clear_altsel1(parm.port, parm.pin);
else
danube_port_set_altsel1(parm.port, parm.pin);
ifxmips_port_set_altsel1(parm.port, parm.pin);
break;
case IFXMIPS_PORT_IOCINPUT:
parm.value = danube_port_get_input(parm.port, parm.pin);
parm.value = ifxmips_port_get_input(parm.port, parm.pin);
copy_to_user((void*)arg, (void*)&parm,
sizeof(struct danube_port_ioctl_parm));
sizeof(struct ifxmips_port_ioctl_parm));
break;
default:
@ -402,41 +402,41 @@ danube_port_ioctl (struct inode *inode, struct file *filp,
}
static struct file_operations port_fops = {
.open = danube_port_open,
.release = danube_port_release,
.ioctl = danube_port_ioctl
.open = ifxmips_port_open,
.release = ifxmips_port_release,
.ioctl = ifxmips_port_ioctl
};
int __init
danube_gpio_init (void)
ifxmips_gpio_init (void)
{
int retval = 0;
sema_init (&port_sem, 1);
danube_gpio_major = register_chrdev(0, "danube_gpio", &port_fops);
if (!danube_gpio_major)
ifxmips_gpio_major = register_chrdev(0, "ifxmips_gpio", &port_fops);
if (!ifxmips_gpio_major)
{
printk("danube-port: Error! Could not register port device. #%d\n", danube_gpio_major);
printk("ifxmips-port: Error! Could not register port device. #%d\n", ifxmips_gpio_major);
retval = -EINVAL;
goto out;
}
create_proc_read_entry("danube_gpio", 0, NULL,
danube_port_read_procmem, NULL);
create_proc_read_entry("ifxmips_gpio", 0, NULL,
ifxmips_port_read_procmem, NULL);
printk("registered danube gpio driver\n");
printk("registered ifxmips gpio driver\n");
out:
return retval;
}
void __exit
danube_gpio_exit (void)
ifxmips_gpio_exit (void)
{
unregister_chrdev(danube_gpio_major, "danube_gpio");
remove_proc_entry("danube_gpio", NULL);
unregister_chrdev(ifxmips_gpio_major, "ifxmips_gpio");
remove_proc_entry("ifxmips_gpio", NULL);
}
module_init(danube_gpio_init);
module_exit(danube_gpio_exit);
module_init(ifxmips_gpio_init);
module_exit(ifxmips_gpio_exit);

View file

@ -27,9 +27,9 @@
#include <asm/uaccess.h>
#include <asm/unistd.h>
#include <linux/errno.h>
#include <asm/danube/danube.h>
#include <asm/danube/danube_gpio.h>
#include <asm/danube/danube_pmu.h>
#include <asm/ifxmips/ifxmips.h>
#include <asm/ifxmips/ifxmips_gpio.h>
#include <asm/ifxmips/ifxmips_pmu.h>
#define IFXMIPS_LED_CLK_EDGE IFXMIPS_LED_FALLING
//#define IFXMIPS_LED_CLK_EDGE IFXMIPS_LED_RISING
@ -38,52 +38,52 @@
#define IFXMIPS_LED_GPIO_PORT 0
static int danube_led_major;
static int ifxmips_led_major;
void
danube_led_set (unsigned int led)
ifxmips_led_set (unsigned int led)
{
led &= 0xffffff;
writel(readl(IFXMIPS_LED_CPU0) | led, IFXMIPS_LED_CPU0);
}
EXPORT_SYMBOL(danube_led_set);
EXPORT_SYMBOL(ifxmips_led_set);
void
danube_led_clear (unsigned int led)
ifxmips_led_clear (unsigned int led)
{
led = ~(led & 0xffffff);
writel(readl(IFXMIPS_LED_CPU0) & led, IFXMIPS_LED_CPU0);
}
EXPORT_SYMBOL(danube_led_clear);
EXPORT_SYMBOL(ifxmips_led_clear);
void
danube_led_blink_set (unsigned int led)
ifxmips_led_blink_set (unsigned int led)
{
led &= 0xffffff;
writel(readl(IFXMIPS_LED_CON0) | led, IFXMIPS_LED_CON0);
}
EXPORT_SYMBOL(danube_led_blink_set);
EXPORT_SYMBOL(ifxmips_led_blink_set);
void
danube_led_blink_clear (unsigned int led)
ifxmips_led_blink_clear (unsigned int led)
{
led = ~(led & 0xffffff);
writel(readl(IFXMIPS_LED_CON0) & led, IFXMIPS_LED_CON0);
}
EXPORT_SYMBOL(danube_led_blink_clear);
EXPORT_SYMBOL(ifxmips_led_blink_clear);
void
danube_led_setup_gpio (void)
ifxmips_led_setup_gpio (void)
{
int i = 0;
/* we need to setup pins SH,D,ST (4,5,6) */
for (i = 4; i < 7; i++)
{
danube_port_set_altsel0(IFXMIPS_LED_GPIO_PORT, i);
danube_port_clear_altsel1(IFXMIPS_LED_GPIO_PORT, i);
danube_port_set_dir_out(IFXMIPS_LED_GPIO_PORT, i);
danube_port_set_open_drain(IFXMIPS_LED_GPIO_PORT, i);
ifxmips_port_set_altsel0(IFXMIPS_LED_GPIO_PORT, i);
ifxmips_port_clear_altsel1(IFXMIPS_LED_GPIO_PORT, i);
ifxmips_port_set_dir_out(IFXMIPS_LED_GPIO_PORT, i);
ifxmips_port_set_open_drain(IFXMIPS_LED_GPIO_PORT, i);
}
}
@ -111,7 +111,7 @@ led_release (struct inode *inode, struct file *file)
return 0;
}
static struct file_operations danube_led_fops = {
static struct file_operations ifxmips_led_fops = {
.owner = THIS_MODULE,
.ioctl = led_ioctl,
.open = led_open,
@ -138,11 +138,11 @@ Map for hardware relay on reference board
int __init
danube_led_init (void)
ifxmips_led_init (void)
{
int ret = 0;
danube_led_setup_gpio();
ifxmips_led_setup_gpio();
writel(0, IFXMIPS_LED_AR);
writel(0, IFXMIPS_LED_CPU0);
@ -169,29 +169,29 @@ danube_led_init (void)
writel(readl(IFXMIPS_LED_CON0) | IFXMIPS_LED_ADSL_SRC, IFXMIPS_LED_CON0);
/* per default, the leds are turned on */
danube_pmu_enable(IFXMIPS_PMU_PWDCR_LED);
ifxmips_pmu_enable(IFXMIPS_PMU_PWDCR_LED);
danube_led_major = register_chrdev(0, "danube_led", &danube_led_fops);
ifxmips_led_major = register_chrdev(0, "ifxmips_led", &ifxmips_led_fops);
if (!danube_led_major)
if (!ifxmips_led_major)
{
printk("danube_led: Error! Could not register device. %d\n", danube_led_major);
printk("ifxmips_led: Error! Could not register device. %d\n", ifxmips_led_major);
ret = -EINVAL;
goto out;
}
printk(KERN_INFO "danube_led : device registered on major %d\n", danube_led_major);
printk(KERN_INFO "ifxmips_led : device registered on major %d\n", ifxmips_led_major);
out:
return ret;
}
void __exit
danube_led_exit (void)
ifxmips_led_exit (void)
{
unregister_chrdev(danube_led_major, "danube_led");
unregister_chrdev(ifxmips_led_major, "ifxmips_led");
}
module_init(danube_led_init);
module_exit(danube_led_exit);
module_init(ifxmips_led_init);
module_exit(ifxmips_led_exit);

View file

@ -54,10 +54,10 @@
#include <linux/kernel.h>
#include <linux/version.h>
#include <asm/danube/danube.h>
#include <asm/danube/danube_irq.h>
#include <asm/danube/ifx_ssc_defines.h>
#include <asm/danube/ifx_ssc.h>
#include <asm/ifxmips/ifxmips.h>
#include <asm/ifxmips/ifxmips_irq.h>
#include <asm/ifxmips/ifx_ssc_defines.h>
#include <asm/ifxmips/ifx_ssc.h>
#ifdef SSC_FRAME_INT_ENABLE
#undef SSC_FRAME_INT_ENABLE
@ -93,8 +93,8 @@ static unsigned int ifx_ssc_get_kernel_clk (struct ifx_ssc_port *info);
static void tx_int (struct ifx_ssc_port *);
static int ifx_ssc1_read_proc (char *, char **, off_t, int, int *, void *);
extern unsigned int danube_get_fpi_hz (void);
extern void mask_and_ack_danube_irq (unsigned int irq_nr);
extern unsigned int ifxmips_get_fpi_hz (void);
extern void mask_and_ack_ifxmips_irq (unsigned int irq_nr);
static struct file_operations ifx_ssc_fops = {
.owner = THIS_MODULE,
@ -116,7 +116,7 @@ ifx_ssc_get_kernel_clk (struct ifx_ssc_port *info)
printk ("ifx_ssc_get_kernel_clk rmc==0 \n");
return 0;
}
return danube_get_fpi_hz () / rmc;
return ifxmips_get_fpi_hz () / rmc;
}
#ifndef not_yet
@ -382,9 +382,9 @@ ifx_ssc_abort (struct ifx_ssc_port *info)
wake_up_interruptible (&info->rwait);
// clear pending int's
mask_and_ack_danube_irq(info->rxirq);
mask_and_ack_danube_irq(info->txirq);
mask_and_ack_danube_irq(info->errirq);
mask_and_ack_ifxmips_irq(info->rxirq);
mask_and_ack_ifxmips_irq(info->txirq);
mask_and_ack_ifxmips_irq(info->errirq);
// clear error flags
WRITE_PERIPHERAL_REGISTER (IFX_SSC_WHBSTATE_CLR_ALL_ERROR, info->mapbase + IFX_SSC_WHBSTATE);
@ -440,9 +440,9 @@ ifx_ssc_open (struct inode *inode, struct file *filp)
WRITE_PERIPHERAL_REGISTER (IFX_SSC_WHBSTATE_CLR_ALL_ERROR, info->mapbase + IFX_SSC_WHBSTATE);
// clear pending interrupts
mask_and_ack_danube_irq(info->rxirq);
mask_and_ack_danube_irq(info->txirq);
mask_and_ack_danube_irq(info->errirq);
mask_and_ack_ifxmips_irq(info->rxirq);
mask_and_ack_ifxmips_irq(info->txirq);
mask_and_ack_ifxmips_irq(info->errirq);
WRITE_PERIPHERAL_REGISTER (IFX_SSC_WHBSTATE_SET_ENABLE, info->mapbase + IFX_SSC_WHBSTATE);
@ -1529,5 +1529,5 @@ EXPORT_SYMBOL(ifx_ssc_rx);
MODULE_LICENSE("GPL");
MODULE_AUTHOR("John Crispin <blogic@openwrt.org>");
MODULE_DESCRIPTION("danube ssc driver");
MODULE_DESCRIPTION("ifxmips ssc driver");

View file

@ -23,19 +23,19 @@
#include <linux/proc_fs.h>
#include <linux/ioctl.h>
#include <linux/module.h>
#include <asm-mips/danube/danube_wdt.h>
#include <asm-mips/danube/danube.h>
#include <asm-mips/ifxmips/ifxmips_wdt.h>
#include <asm-mips/ifxmips/ifxmips.h>
// TODO remove magic numbers and weirdo macros
extern unsigned int danube_get_fpi_hz (void);
extern unsigned int ifxmips_get_fpi_hz (void);
static int danube_wdt_inuse = 0;
static int danube_wdt_major = 0;
static int ifxmips_wdt_inuse = 0;
static int ifxmips_wdt_major = 0;
int
danube_wdt_enable (unsigned int timeout)
ifxmips_wdt_enable (unsigned int timeout)
{
unsigned int wdt_cr = 0;
unsigned int wdt_reload = 0;
@ -88,7 +88,7 @@ out:
}
void
danube_wdt_disable (void)
ifxmips_wdt_disable (void)
{
writel(IFXMIPS_BIU_WDT_CR_PW_SET(IFXMIPS_WDT_PW1), IFXMIPS_BIU_WDT_CR);
writel(IFXMIPS_BIU_WDT_CR_PW_SET(IFXMIPS_WDT_PW2), IFXMIPS_BIU_WDT_CR);
@ -98,7 +98,7 @@ danube_wdt_disable (void)
/* passed LPEN or DSEN */
void
danube_wdt_enable_feature (int en, int type)
ifxmips_wdt_enable_feature (int en, int type)
{
unsigned int wdt_cr = 0;
@ -119,7 +119,7 @@ danube_wdt_enable_feature (int en, int type)
}
void
danube_wdt_prewarning_limit (int pwl)
ifxmips_wdt_prewarning_limit (int pwl)
{
unsigned int wdt_cr = 0;
@ -134,7 +134,7 @@ danube_wdt_prewarning_limit (int pwl)
}
void
danube_wdt_set_clkdiv (int clkdiv)
ifxmips_wdt_set_clkdiv (int clkdiv)
{
unsigned int wdt_cr = 0;
@ -149,7 +149,7 @@ danube_wdt_set_clkdiv (int clkdiv)
}
static int
danube_wdt_ioctl (struct inode *inode, struct file *file, unsigned int cmd,
ifxmips_wdt_ioctl (struct inode *inode, struct file *file, unsigned int cmd,
unsigned long arg)
{
int result = 0;
@ -167,7 +167,7 @@ danube_wdt_ioctl (struct inode *inode, struct file *file, unsigned int cmd,
switch (cmd)
{
case IFXMIPS_WDT_IOC_START:
if ((result = danube_wdt_enable(user_arg)) < 0)
if ((result = ifxmips_wdt_enable(user_arg)) < 0)
timeout = -1;
else
timeout = user_arg;
@ -175,14 +175,14 @@ danube_wdt_ioctl (struct inode *inode, struct file *file, unsigned int cmd,
case IFXMIPS_WDT_IOC_STOP:
printk("disable watch dog timer\n");
danube_wdt_disable();
ifxmips_wdt_disable();
break;
case IFXMIPS_WDT_IOC_PING:
if (timeout < 0)
result = -EIO;
else
result = danube_wdt_enable(timeout);
result = ifxmips_wdt_enable(timeout);
break;
case IFXMIPS_WDT_IOC_GET_STATUS:
@ -191,19 +191,19 @@ danube_wdt_ioctl (struct inode *inode, struct file *file, unsigned int cmd,
break;
case IFXMIPS_WDT_IOC_SET_PWL:
danube_wdt_prewarning_limit(user_arg);
ifxmips_wdt_prewarning_limit(user_arg);
break;
case IFXMIPS_WDT_IOC_SET_DSEN:
danube_wdt_enable_feature(user_arg, IFXMIPS_BIU_WDT_CR_DSEN);
ifxmips_wdt_enable_feature(user_arg, IFXMIPS_BIU_WDT_CR_DSEN);
break;
case IFXMIPS_WDT_IOC_SET_LPEN:
danube_wdt_enable_feature(user_arg, IFXMIPS_BIU_WDT_CR_LPEN);
ifxmips_wdt_enable_feature(user_arg, IFXMIPS_BIU_WDT_CR_LPEN);
break;
case IFXMIPS_WDT_IOC_SET_CLKDIV:
danube_wdt_set_clkdiv(user_arg);
ifxmips_wdt_set_clkdiv(user_arg);
break;
default:
@ -215,26 +215,26 @@ out:
}
static int
danube_wdt_open (struct inode *inode, struct file *file)
ifxmips_wdt_open (struct inode *inode, struct file *file)
{
if (danube_wdt_inuse)
if (ifxmips_wdt_inuse)
return -EBUSY;
danube_wdt_inuse = 1;
ifxmips_wdt_inuse = 1;
return 0;
}
static int
danube_wdt_release (struct inode *inode, struct file *file)
ifxmips_wdt_release (struct inode *inode, struct file *file)
{
danube_wdt_inuse = 0;
ifxmips_wdt_inuse = 0;
return 0;
}
int
danube_wdt_register_proc_read (char *buf, char **start, off_t offset, int count,
ifxmips_wdt_register_proc_read (char *buf, char **start, off_t offset, int count,
int *eof, void *data)
{
int len = 0;
@ -252,36 +252,36 @@ danube_wdt_register_proc_read (char *buf, char **start, off_t offset, int count,
static struct file_operations wdt_fops = {
.owner = THIS_MODULE,
.ioctl = danube_wdt_ioctl,
.open = danube_wdt_open,
.release = danube_wdt_release,
.ioctl = ifxmips_wdt_ioctl,
.open = ifxmips_wdt_open,
.release = ifxmips_wdt_release,
};
int __init
danube_wdt_init_module (void)
ifxmips_wdt_init_module (void)
{
danube_wdt_major = register_chrdev(0, "wdt", &wdt_fops);
ifxmips_wdt_major = register_chrdev(0, "wdt", &wdt_fops);
if (danube_wdt_major < 0)
if (ifxmips_wdt_major < 0)
{
printk("cannot register watchdog device\n");
return -EINVAL;
}
create_proc_read_entry("danube_wdt", 0, NULL, danube_wdt_register_proc_read, NULL);
create_proc_read_entry("ifxmips_wdt", 0, NULL, ifxmips_wdt_register_proc_read, NULL);
printk("danube watchdog loaded\n");
printk("ifxmips watchdog loaded\n");
return 0;
}
void
danube_wdt_cleanup_module (void)
ifxmips_wdt_cleanup_module (void)
{
unregister_chrdev(danube_wdt_major, "wdt");
remove_proc_entry("danube_wdt", NULL);
unregister_chrdev(ifxmips_wdt_major, "wdt");
remove_proc_entry("ifxmips_wdt", NULL);
}
module_init(danube_wdt_init_module);
module_exit(danube_wdt_cleanup_module);
module_init(ifxmips_wdt_init_module);
module_exit(ifxmips_wdt_cleanup_module);

View file

@ -1,5 +1,5 @@
/*
* drivers/net/danube_mii0.c
* drivers/net/ifxmips_mii0.c
*
* 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
@ -17,7 +17,7 @@
*
* Copyright (C) 2005 Infineon
*
* Rewrite of Infineon Danube code, thanks to infineon for the support,
* Rewrite of Infineon IFXMips code, thanks to infineon for the support,
* software and hardware
*
* Copyright (C) 2007 John Crispin <blogic@openwrt.org>
@ -41,16 +41,16 @@
#include <asm/checksum.h>
#include <linux/init.h>
#include <asm/delay.h>
#include <asm/danube/danube.h>
#include <asm/danube/danube_mii0.h>
#include <asm/danube/danube_dma.h>
#include <asm/danube/danube_pmu.h>
#include <asm/ifxmips/ifxmips.h>
#include <asm/ifxmips/ifxmips_mii0.h>
#include <asm/ifxmips/ifxmips_dma.h>
#include <asm/ifxmips/ifxmips_pmu.h>
static struct net_device danube_mii0_dev;
static struct net_device ifxmips_mii0_dev;
static unsigned char u_boot_ethaddr[MAX_ADDR_LEN];
void
danube_write_mdio (u32 phy_addr, u32 phy_reg, u16 phy_data)
ifxmips_write_mdio (u32 phy_addr, u32 phy_reg, u16 phy_data)
{
u32 val = MDIO_ACC_REQUEST |
((phy_addr & MDIO_ACC_ADDR_MASK) << MDIO_ACC_ADDR_OFFSET) |
@ -62,7 +62,7 @@ danube_write_mdio (u32 phy_addr, u32 phy_reg, u16 phy_data)
}
unsigned short
danube_read_mdio (u32 phy_addr, u32 phy_reg)
ifxmips_read_mdio (u32 phy_addr, u32 phy_reg)
{
u32 val = MDIO_ACC_REQUEST | MDIO_ACC_READ |
((phy_addr & MDIO_ACC_ADDR_MASK) << MDIO_ACC_ADDR_OFFSET) |
@ -76,7 +76,7 @@ danube_read_mdio (u32 phy_addr, u32 phy_reg)
}
int
danube_switch_open (struct net_device *dev)
ifxmips_switch_open (struct net_device *dev)
{
struct switch_priv* priv = (struct switch_priv*)dev->priv;
struct dma_device_info* dma_dev = priv->dma_device;
@ -230,12 +230,12 @@ dma_intr_handler (struct dma_device_info* dma_dev, int status)
switch (status)
{
case RCV_INT:
switch_hw_receive(&danube_mii0_dev, dma_dev);
switch_hw_receive(&ifxmips_mii0_dev, dma_dev);
break;
case TX_BUF_FULL_INT:
printk("tx buffer full\n");
netif_stop_queue(&danube_mii0_dev);
netif_stop_queue(&ifxmips_mii0_dev);
for (i = 0; i < dma_dev->max_tx_chan_num; i++)
{
if ((dma_dev->tx_chan[i])->control==IFXMIPS_DMA_CH_ON)
@ -247,7 +247,7 @@ dma_intr_handler (struct dma_device_info* dma_dev, int status)
for (i = 0; i < dma_dev->max_tx_chan_num; i++)
dma_dev->tx_chan[i]->disable_irq(dma_dev->tx_chan[i]);
netif_wake_queue(&danube_mii0_dev);
netif_wake_queue(&ifxmips_mii0_dev);
break;
}
@ -255,7 +255,7 @@ dma_intr_handler (struct dma_device_info* dma_dev, int status)
}
unsigned char*
danube_etop_dma_buffer_alloc (int len, int *byte_offset, void **opt)
ifxmips_etop_dma_buffer_alloc (int len, int *byte_offset, void **opt)
{
unsigned char *buffer = NULL;
struct sk_buff *skb = NULL;
@ -273,7 +273,7 @@ danube_etop_dma_buffer_alloc (int len, int *byte_offset, void **opt)
}
void
danube_etop_dma_buffer_free (unsigned char *dataptr, void *opt)
ifxmips_etop_dma_buffer_free (unsigned char *dataptr, void *opt)
{
struct sk_buff *skb = NULL;
@ -287,7 +287,7 @@ danube_etop_dma_buffer_free (unsigned char *dataptr, void *opt)
}
static struct net_device_stats*
danube_get_stats (struct net_device *dev)
ifxmips_get_stats (struct net_device *dev)
{
return (struct net_device_stats *)dev->priv;
}
@ -303,10 +303,10 @@ switch_init (struct net_device *dev)
printk("%s up\n", dev->name);
dev->open = danube_switch_open;
dev->open = ifxmips_switch_open;
dev->stop = switch_release;
dev->hard_start_xmit = switch_tx;
dev->get_stats = danube_get_stats;
dev->get_stats = ifxmips_get_stats;
dev->tx_timeout = switch_tx_timeout;
dev->watchdog_timeo = 10 * HZ;
dev->priv = kmalloc(sizeof(struct switch_priv), GFP_KERNEL);
@ -324,8 +324,8 @@ switch_init (struct net_device *dev)
return -ENODEV;
}
priv->dma_device->buffer_alloc = &danube_etop_dma_buffer_alloc;
priv->dma_device->buffer_free = &danube_etop_dma_buffer_free;
priv->dma_device->buffer_alloc = &ifxmips_etop_dma_buffer_alloc;
priv->dma_device->buffer_free = &ifxmips_etop_dma_buffer_free;
priv->dma_device->intr_handler = &dma_intr_handler;
priv->dma_device->max_rx_chan_num = 4;
@ -371,10 +371,10 @@ switch_init (struct net_device *dev)
}
static void
danube_sw_chip_init (int mode)
ifxmips_sw_chip_init (int mode)
{
danube_pmu_enable(IFXMIPS_PMU_PWDCR_DMA);
danube_pmu_enable(IFXMIPS_PMU_PWDCR_PPE);
ifxmips_pmu_enable(IFXMIPS_PMU_PWDCR_DMA);
ifxmips_pmu_enable(IFXMIPS_PMU_PWDCR_PPE);
if(mode == REV_MII_MODE)
writel((readl(IFXMIPS_PPE32_CFG) & PPE32_MII_MASK) | PPE32_MII_REVERSE, IFXMIPS_PPE32_CFG);
@ -393,21 +393,21 @@ switch_init_module(void)
{
int result = 0;
danube_mii0_dev.init = switch_init;
ifxmips_mii0_dev.init = switch_init;
strcpy(danube_mii0_dev.name, "eth%d");
strcpy(ifxmips_mii0_dev.name, "eth%d");
SET_MODULE_OWNER(dev);
result = register_netdev(&danube_mii0_dev);
result = register_netdev(&ifxmips_mii0_dev);
if (result)
{
printk("error %i registering device \"%s\"\n", result, danube_mii0_dev.name);
printk("error %i registering device \"%s\"\n", result, ifxmips_mii0_dev.name);
goto out;
}
/* danube eval kit connects the phy/switch in REV mode */
danube_sw_chip_init(REV_MII_MODE);
printk("danube MAC driver loaded!\n");
/* ifxmips eval kit connects the phy/switch in REV mode */
ifxmips_sw_chip_init(REV_MII_MODE);
printk("ifxmips MAC driver loaded!\n");
out:
return result;
@ -416,15 +416,15 @@ out:
static void __exit
switch_cleanup(void)
{
struct switch_priv *priv = (struct switch_priv*)danube_mii0_dev.priv;
struct switch_priv *priv = (struct switch_priv*)ifxmips_mii0_dev.priv;
printk("danube_mii0 cleanup\n");
printk("ifxmips_mii0 cleanup\n");
dma_device_unregister(priv->dma_device);
dma_device_release(priv->dma_device);
kfree(priv->dma_device);
kfree(danube_mii0_dev.priv);
unregister_netdev(&danube_mii0_dev);
kfree(ifxmips_mii0_dev.priv);
unregister_netdev(&ifxmips_mii0_dev);
return;
}

View file

@ -48,9 +48,9 @@
#include <asm/io.h>
#include <asm/uaccess.h>
#include <asm/bitops.h>
#include <asm/danube/danube.h>
#include <asm/danube/danube_irq.h>
#include <asm/danube/danube_serial.h>
#include <asm/ifxmips/ifxmips.h>
#include <asm/ifxmips/ifxmips_irq.h>
#include <asm/ifxmips/ifxmips_serial.h>
#define PORT_IFXMIPSASC 111
@ -58,48 +58,48 @@
#define UART_DUMMY_UER_RX 1
static void danubeasc_tx_chars(struct uart_port *port);
static void ifxmipsasc_tx_chars(struct uart_port *port);
extern void prom_printf(const char * fmt, ...);
static struct uart_port danubeasc_port;
static struct uart_driver danubeasc_reg;
static struct uart_port ifxmipsasc_port;
static struct uart_driver ifxmipsasc_reg;
static unsigned int uartclk = 0;
extern unsigned int danube_get_fpi_hz(void);
extern unsigned int ifxmips_get_fpi_hz(void);
static void
danubeasc_stop_tx (struct uart_port *port)
ifxmipsasc_stop_tx (struct uart_port *port)
{
/* fifo underrun shuts up after firing once */
return;
}
static void
danubeasc_start_tx (struct uart_port *port)
ifxmipsasc_start_tx (struct uart_port *port)
{
unsigned long flags;
local_irq_save(flags);
danubeasc_tx_chars(port);
ifxmipsasc_tx_chars(port);
local_irq_restore(flags);
return;
}
static void
danubeasc_stop_rx (struct uart_port *port)
ifxmipsasc_stop_rx (struct uart_port *port)
{
/* clear the RX enable bit */
writel(ASCWHBSTATE_CLRREN, IFXMIPS_ASC1_WHBSTATE);
}
static void
danubeasc_enable_ms (struct uart_port *port)
ifxmipsasc_enable_ms (struct uart_port *port)
{
/* no modem signals */
return;
}
static void
danubeasc_rx_chars (struct uart_port *port)
ifxmipsasc_rx_chars (struct uart_port *port)
{
struct tty_struct *tty = port->info->tty;
unsigned int ch = 0, rsr = 0, fifocnt;
@ -157,12 +157,12 @@ danubeasc_rx_chars (struct uart_port *port)
static void
danubeasc_tx_chars (struct uart_port *port)
ifxmipsasc_tx_chars (struct uart_port *port)
{
struct circ_buf *xmit = &port->info->xmit;
if (uart_tx_stopped(port)) {
danubeasc_stop_tx(port);
ifxmipsasc_stop_tx(port);
return;
}
@ -189,17 +189,17 @@ danubeasc_tx_chars (struct uart_port *port)
}
static irqreturn_t
danubeasc_tx_int (int irq, void *port)
ifxmipsasc_tx_int (int irq, void *port)
{
writel(ASC_IRNCR_TIR, IFXMIPS_ASC1_IRNCR);
danubeasc_start_tx(port);
mask_and_ack_danube_irq(irq);
ifxmipsasc_start_tx(port);
mask_and_ack_ifxmips_irq(irq);
return IRQ_HANDLED;
}
static irqreturn_t
danubeasc_er_int (int irq, void *port)
ifxmipsasc_er_int (int irq, void *port)
{
/* clear any pending interrupts */
writel(readl(IFXMIPS_ASC1_WHBSTATE) | ASCWHBSTATE_CLRPE |
@ -209,17 +209,17 @@ danubeasc_er_int (int irq, void *port)
}
static irqreturn_t
danubeasc_rx_int (int irq, void *port)
ifxmipsasc_rx_int (int irq, void *port)
{
writel(ASC_IRNCR_RIR, IFXMIPS_ASC1_IRNCR);
danubeasc_rx_chars((struct uart_port *) port);
mask_and_ack_danube_irq(irq);
ifxmipsasc_rx_chars((struct uart_port *) port);
mask_and_ack_ifxmips_irq(irq);
return IRQ_HANDLED;
}
static unsigned int
danubeasc_tx_empty (struct uart_port *port)
ifxmipsasc_tx_empty (struct uart_port *port)
{
int status;
@ -229,25 +229,25 @@ danubeasc_tx_empty (struct uart_port *port)
}
static unsigned int
danubeasc_get_mctrl (struct uart_port *port)
ifxmipsasc_get_mctrl (struct uart_port *port)
{
return TIOCM_CTS | TIOCM_CAR | TIOCM_DSR;
}
static void
danubeasc_set_mctrl (struct uart_port *port, u_int mctrl)
ifxmipsasc_set_mctrl (struct uart_port *port, u_int mctrl)
{
return;
}
static void
danubeasc_break_ctl (struct uart_port *port, int break_state)
ifxmipsasc_break_ctl (struct uart_port *port, int break_state)
{
return;
}
static void
danubeasc1_hw_init (void)
ifxmipsasc1_hw_init (void)
{
/* this setup was probably already done in ROM/u-boot but we do it again*/
/* TODO: GPIO pins are multifunction */
@ -266,36 +266,36 @@ danubeasc1_hw_init (void)
}
static int
danubeasc_startup (struct uart_port *port)
ifxmipsasc_startup (struct uart_port *port)
{
unsigned long flags;
int retval;
/* this assumes: CON.BRS = CON.FDE = 0 */
if (uartclk == 0)
uartclk = danube_get_fpi_hz();
uartclk = ifxmips_get_fpi_hz();
danubeasc_port.uartclk = uartclk;
ifxmipsasc_port.uartclk = uartclk;
danubeasc1_hw_init();
ifxmipsasc1_hw_init();
local_irq_save(flags);
retval = request_irq(IFXMIPSASC1_RIR, danubeasc_rx_int, IRQF_DISABLED, "asc_rx", port);
retval = request_irq(IFXMIPSASC1_RIR, ifxmipsasc_rx_int, IRQF_DISABLED, "asc_rx", port);
if (retval){
printk("failed to request danubeasc_rx_int\n");
printk("failed to request ifxmipsasc_rx_int\n");
return retval;
}
retval = request_irq(IFXMIPSASC1_TIR, danubeasc_tx_int, IRQF_DISABLED, "asc_tx", port);
retval = request_irq(IFXMIPSASC1_TIR, ifxmipsasc_tx_int, IRQF_DISABLED, "asc_tx", port);
if (retval){
printk("failed to request danubeasc_tx_int\n");
printk("failed to request ifxmipsasc_tx_int\n");
goto err1;
}
retval = request_irq(IFXMIPSASC1_EIR, danubeasc_er_int, IRQF_DISABLED, "asc_er", port);
retval = request_irq(IFXMIPSASC1_EIR, ifxmipsasc_er_int, IRQF_DISABLED, "asc_er", port);
if (retval){
printk("failed to request danubeasc_er_int\n");
printk("failed to request ifxmipsasc_er_int\n");
goto err2;
}
@ -317,7 +317,7 @@ err1:
}
static void
danubeasc_shutdown (struct uart_port *port)
ifxmipsasc_shutdown (struct uart_port *port)
{
free_irq(IFXMIPSASC1_RIR, port);
free_irq(IFXMIPSASC1_TIR, port);
@ -334,7 +334,7 @@ danubeasc_shutdown (struct uart_port *port)
writel(readl(IFXMIPS_ASC1_TXFCON) & ~ASCTXFCON_TXFEN, IFXMIPS_ASC1_TXFCON);
}
static void danubeasc_set_termios(struct uart_port *port, struct ktermios *new, struct ktermios *old)
static void ifxmipsasc_set_termios(struct uart_port *port, struct ktermios *new, struct ktermios *old)
{
unsigned int cflag;
unsigned int iflag;
@ -424,34 +424,34 @@ static void danubeasc_set_termios(struct uart_port *port, struct ktermios *new,
}
static const char*
danubeasc_type (struct uart_port *port)
ifxmipsasc_type (struct uart_port *port)
{
return port->type == PORT_IFXMIPSASC ? "IFXMIPSASC" : NULL;
}
static void
danubeasc_release_port (struct uart_port *port)
ifxmipsasc_release_port (struct uart_port *port)
{
return;
}
static int
danubeasc_request_port (struct uart_port *port)
ifxmipsasc_request_port (struct uart_port *port)
{
return 0;
}
static void
danubeasc_config_port (struct uart_port *port, int flags)
ifxmipsasc_config_port (struct uart_port *port, int flags)
{
if (flags & UART_CONFIG_TYPE) {
port->type = PORT_IFXMIPSASC;
danubeasc_request_port(port);
ifxmipsasc_request_port(port);
}
}
static int
danubeasc_verify_port (struct uart_port *port, struct serial_struct *ser)
ifxmipsasc_verify_port (struct uart_port *port, struct serial_struct *ser)
{
int ret = 0;
if (ser->type != PORT_UNKNOWN && ser->type != PORT_IFXMIPSASC)
@ -463,26 +463,26 @@ danubeasc_verify_port (struct uart_port *port, struct serial_struct *ser)
return ret;
}
static struct uart_ops danubeasc_pops = {
.tx_empty = danubeasc_tx_empty,
.set_mctrl = danubeasc_set_mctrl,
.get_mctrl = danubeasc_get_mctrl,
.stop_tx = danubeasc_stop_tx,
.start_tx = danubeasc_start_tx,
.stop_rx = danubeasc_stop_rx,
.enable_ms = danubeasc_enable_ms,
.break_ctl = danubeasc_break_ctl,
.startup = danubeasc_startup,
.shutdown = danubeasc_shutdown,
.set_termios = danubeasc_set_termios,
.type = danubeasc_type,
.release_port = danubeasc_release_port,
.request_port = danubeasc_request_port,
.config_port = danubeasc_config_port,
.verify_port = danubeasc_verify_port,
static struct uart_ops ifxmipsasc_pops = {
.tx_empty = ifxmipsasc_tx_empty,
.set_mctrl = ifxmipsasc_set_mctrl,
.get_mctrl = ifxmipsasc_get_mctrl,
.stop_tx = ifxmipsasc_stop_tx,
.start_tx = ifxmipsasc_start_tx,
.stop_rx = ifxmipsasc_stop_rx,
.enable_ms = ifxmipsasc_enable_ms,
.break_ctl = ifxmipsasc_break_ctl,
.startup = ifxmipsasc_startup,
.shutdown = ifxmipsasc_shutdown,
.set_termios = ifxmipsasc_set_termios,
.type = ifxmipsasc_type,
.release_port = ifxmipsasc_release_port,
.request_port = ifxmipsasc_request_port,
.config_port = ifxmipsasc_config_port,
.verify_port = ifxmipsasc_verify_port,
};
static struct uart_port danubeasc_port = {
static struct uart_port ifxmipsasc_port = {
membase: (void *)IFXMIPS_ASC1_BASE_ADDR,
mapbase: IFXMIPS_ASC1_BASE_ADDR,
iotype: SERIAL_IO_MEM,
@ -491,12 +491,12 @@ static struct uart_port danubeasc_port = {
fifosize: 16,
unused: {IFXMIPSASC1_TIR, IFXMIPSASC1_EIR},
type: PORT_IFXMIPSASC,
ops: &danubeasc_pops,
ops: &ifxmipsasc_pops,
flags: ASYNC_BOOT_AUTOCONF,
};
static void
danubeasc_console_write (struct console *co, const char *s, u_int count)
ifxmipsasc_console_write (struct console *co, const char *s, u_int count)
{
int i, fifocnt;
unsigned long flags;
@ -532,7 +532,7 @@ danubeasc_console_write (struct console *co, const char *s, u_int count)
}
static int __init
danubeasc_console_setup (struct console *co, char *options)
ifxmipsasc_console_setup (struct console *co, char *options)
{
struct uart_port *port;
int baud = 115200;
@ -541,11 +541,11 @@ danubeasc_console_setup (struct console *co, char *options)
int flow = 'n';
if (uartclk == 0)
uartclk = danube_get_fpi_hz();
uartclk = ifxmips_get_fpi_hz();
co->index = 0;
port = &danubeasc_port;
danubeasc_port.uartclk = uartclk;
danubeasc_port.type = PORT_IFXMIPSASC;
port = &ifxmipsasc_port;
ifxmipsasc_port.uartclk = uartclk;
ifxmipsasc_port.type = PORT_IFXMIPSASC;
if (options){
uart_parse_options(options, &baud, &parity, &bits, &flow);
@ -554,55 +554,55 @@ danubeasc_console_setup (struct console *co, char *options)
return uart_set_options(port, co, baud, parity, bits, flow);
}
static struct uart_driver danubeasc_reg;
static struct console danubeasc_console = {
static struct uart_driver ifxmipsasc_reg;
static struct console ifxmipsasc_console = {
name: "ttyS",
write: danubeasc_console_write,
write: ifxmipsasc_console_write,
device: uart_console_device,
setup: danubeasc_console_setup,
setup: ifxmipsasc_console_setup,
flags: CON_PRINTBUFFER,
index: -1,
data: &danubeasc_reg,
data: &ifxmipsasc_reg,
};
static int __init
danubeasc_console_init (void)
ifxmipsasc_console_init (void)
{
register_console(&danubeasc_console);
register_console(&ifxmipsasc_console);
return 0;
}
console_initcall(danubeasc_console_init);
console_initcall(ifxmipsasc_console_init);
static struct uart_driver danubeasc_reg = {
static struct uart_driver ifxmipsasc_reg = {
.owner = THIS_MODULE,
.driver_name = "serial",
.dev_name = "ttyS",
.major = TTY_MAJOR,
.minor = 64,
.nr = 1,
.cons = &danubeasc_console,
.cons = &ifxmipsasc_console,
};
static int __init
danubeasc_init (void)
ifxmipsasc_init (void)
{
unsigned char res;
uart_register_driver(&danubeasc_reg);
res = uart_add_one_port(&danubeasc_reg, &danubeasc_port);
uart_register_driver(&ifxmipsasc_reg);
res = uart_add_one_port(&ifxmipsasc_reg, &ifxmipsasc_port);
return res;
}
static void __exit
danubeasc_exit (void)
ifxmipsasc_exit (void)
{
uart_unregister_driver(&danubeasc_reg);
uart_unregister_driver(&ifxmipsasc_reg);
}
module_init(danubeasc_init);
module_exit(danubeasc_exit);
module_init(ifxmipsasc_init);
module_exit(ifxmipsasc_exit);
MODULE_AUTHOR("John Crispin <blogic@openwrt.org>");
MODULE_DESCRIPTION("MIPS Danube serial port driver");
MODULE_DESCRIPTION("MIPS IFXMips serial port driver");
MODULE_LICENSE("GPL");

View file

@ -19,24 +19,24 @@
#ifndef _IFXMIPS_GPIO_H__
#define _IFXMIPS_GPIO_H__
extern int danube_port_reserve_pin (unsigned int port, unsigned int pin);
extern int danube_port_free_pin (unsigned int port, unsigned int pin);
extern int danube_port_set_open_drain (unsigned int port, unsigned int pin);
extern int danube_port_clear_open_drain (unsigned int port, unsigned int pin);
extern int danube_port_set_pudsel (unsigned int port, unsigned int pin);
extern int danube_port_clear_pudsel (unsigned int port, unsigned int pin);
extern int danube_port_set_puden (unsigned int port, unsigned int pin);
extern int danube_port_clear_puden (unsigned int port, unsigned int pin);
extern int danube_port_set_stoff (unsigned int port, unsigned int pin);
extern int danube_port_clear_stoff (unsigned int port, unsigned int pin);
extern int danube_port_set_dir_out (unsigned int port, unsigned int pin);
extern int danube_port_set_dir_in (unsigned int port, unsigned int pin);
extern int danube_port_set_output (unsigned int port, unsigned int pin);
extern int danube_port_clear_output (unsigned int port, unsigned int pin);
extern int danube_port_get_input (unsigned int port, unsigned int pin);
extern int danube_port_set_altsel0 (unsigned int port, unsigned int pin);
extern int danube_port_clear_altsel0 (unsigned int port, unsigned int pin);
extern int danube_port_set_altsel1 (unsigned int port, unsigned int pin);
extern int danube_port_clear_altsel1 (unsigned int port, unsigned int pin);
extern int ifxmips_port_reserve_pin (unsigned int port, unsigned int pin);
extern int ifxmips_port_free_pin (unsigned int port, unsigned int pin);
extern int ifxmips_port_set_open_drain (unsigned int port, unsigned int pin);
extern int ifxmips_port_clear_open_drain (unsigned int port, unsigned int pin);
extern int ifxmips_port_set_pudsel (unsigned int port, unsigned int pin);
extern int ifxmips_port_clear_pudsel (unsigned int port, unsigned int pin);
extern int ifxmips_port_set_puden (unsigned int port, unsigned int pin);
extern int ifxmips_port_clear_puden (unsigned int port, unsigned int pin);
extern int ifxmips_port_set_stoff (unsigned int port, unsigned int pin);
extern int ifxmips_port_clear_stoff (unsigned int port, unsigned int pin);
extern int ifxmips_port_set_dir_out (unsigned int port, unsigned int pin);
extern int ifxmips_port_set_dir_in (unsigned int port, unsigned int pin);
extern int ifxmips_port_set_output (unsigned int port, unsigned int pin);
extern int ifxmips_port_clear_output (unsigned int port, unsigned int pin);
extern int ifxmips_port_get_input (unsigned int port, unsigned int pin);
extern int ifxmips_port_set_altsel0 (unsigned int port, unsigned int pin);
extern int ifxmips_port_clear_altsel0 (unsigned int port, unsigned int pin);
extern int ifxmips_port_set_altsel1 (unsigned int port, unsigned int pin);
extern int ifxmips_port_clear_altsel1 (unsigned int port, unsigned int pin);
#endif

View file

@ -21,7 +21,7 @@
/*------------ LED */
struct danube_port_ioctl_parm
struct ifxmips_port_ioctl_parm
{
int port;
int pin;
@ -29,14 +29,14 @@ struct danube_port_ioctl_parm
};
#define IFXMIPS_PORT_IOC_MAGIC 0xbf
#define IFXMIPS_PORT_IOCOD _IOW(IFXMIPS_PORT_IOC_MAGIC,0,struct danube_port_ioctl_parm)
#define IFXMIPS_PORT_IOCPUDSEL _IOW(IFXMIPS_PORT_IOC_MAGIC,1,struct danube_port_ioctl_parm)
#define IFXMIPS_PORT_IOCPUDEN _IOW(IFXMIPS_PORT_IOC_MAGIC,2,struct danube_port_ioctl_parm)
#define IFXMIPS_PORT_IOCSTOFF _IOW(IFXMIPS_PORT_IOC_MAGIC,3,struct danube_port_ioctl_parm)
#define IFXMIPS_PORT_IOCDIR _IOW(IFXMIPS_PORT_IOC_MAGIC,4,struct danube_port_ioctl_parm)
#define IFXMIPS_PORT_IOCOUTPUT _IOW(IFXMIPS_PORT_IOC_MAGIC,5,struct danube_port_ioctl_parm)
#define IFXMIPS_PORT_IOCINPUT _IOWR(IFXMIPS_PORT_IOC_MAGIC,6,struct danube_port_ioctl_parm)
#define IFXMIPS_PORT_IOCALTSEL0 _IOW(IFXMIPS_PORT_IOC_MAGIC,7,struct danube_port_ioctl_parm)
#define IFXMIPS_PORT_IOCALTSEL1 _IOW(IFXMIPS_PORT_IOC_MAGIC,8,struct danube_port_ioctl_parm)
#define IFXMIPS_PORT_IOCOD _IOW(IFXMIPS_PORT_IOC_MAGIC,0,struct ifxmips_port_ioctl_parm)
#define IFXMIPS_PORT_IOCPUDSEL _IOW(IFXMIPS_PORT_IOC_MAGIC,1,struct ifxmips_port_ioctl_parm)
#define IFXMIPS_PORT_IOCPUDEN _IOW(IFXMIPS_PORT_IOC_MAGIC,2,struct ifxmips_port_ioctl_parm)
#define IFXMIPS_PORT_IOCSTOFF _IOW(IFXMIPS_PORT_IOC_MAGIC,3,struct ifxmips_port_ioctl_parm)
#define IFXMIPS_PORT_IOCDIR _IOW(IFXMIPS_PORT_IOC_MAGIC,4,struct ifxmips_port_ioctl_parm)
#define IFXMIPS_PORT_IOCOUTPUT _IOW(IFXMIPS_PORT_IOC_MAGIC,5,struct ifxmips_port_ioctl_parm)
#define IFXMIPS_PORT_IOCINPUT _IOWR(IFXMIPS_PORT_IOC_MAGIC,6,struct ifxmips_port_ioctl_parm)
#define IFXMIPS_PORT_IOCALTSEL0 _IOW(IFXMIPS_PORT_IOC_MAGIC,7,struct ifxmips_port_ioctl_parm)
#define IFXMIPS_PORT_IOCALTSEL1 _IOW(IFXMIPS_PORT_IOC_MAGIC,8,struct ifxmips_port_ioctl_parm)
#endif

View file

@ -61,6 +61,6 @@
#define IFXMIPS_DMA_CH18_INT (INT_NUM_IM2_IRL0 + 16)
#define IFXMIPS_DMA_CH19_INT (INT_NUM_IM2_IRL0 + 21)
extern void mask_and_ack_danube_irq (unsigned int irq_nr);
extern void mask_and_ack_ifxmips_irq (unsigned int irq_nr);
#endif

View file

@ -5,8 +5,8 @@
/******************************************************************************
**
** FILE NAME : danube_sw.h
** PROJECT : Danube
** FILE NAME : ifxmips_sw.h
** PROJECT : IFXMips
** MODULES : ETH Interface (MII0)
**
** DATE : 11 AUG 2005

View file

@ -25,7 +25,7 @@
#define IFXMIPS_PMU_PWDCR_PPE 0x2000
#define IFXMIPS_PMU_PWDCR_FPI 0x4000
void danube_pmu_enable (unsigned int module);
void danube_pmu_disable (unsigned int module);
void ifxmips_pmu_enable (unsigned int module);
void ifxmips_pmu_disable (unsigned int module);
#endif

View file

@ -6,7 +6,7 @@
/******************************************************************************
**
** FILE NAME : serial.c
** PROJECT : Danube
** PROJECT : IFXMips
** MODULES : ASC/UART
**
** DATE : 27 MAR 2006

View file

@ -21,7 +21,7 @@
#ifndef IFXMIPS_WDT_H
#define IFXMIPS_WDT_H
/* Danube wdt ioctl control */
/* IFXMips wdt ioctl control */
#define IFXMIPS_WDT_IOC_MAGIC 0xc0
#define IFXMIPS_WDT_IOC_START _IOW(IFXMIPS_WDT_IOC_MAGIC, 0, int)
#define IFXMIPS_WDT_IOC_STOP _IO(IFXMIPS_WDT_IOC_MAGIC, 1)

View file

@ -9,7 +9,7 @@
#ifndef __IFX_SSC_H
#define __IFX_SSC_H
#ifdef __KERNEL__
#include <asm/danube/ifx_ssc_defines.h>
#include <asm/ifxmips/ifx_ssc_defines.h>
#endif //__KERNEL__
#define PORT_CNT 1 // assume default value

View file

@ -7,7 +7,7 @@ Index: linux-2.6.23/arch/mips/Kconfig
select GENERIC_HARDIRQS_NO__DO_IRQ
+config IFXMIPS
+ bool "Danube support"
+ bool "IFXMips support"
+ select DMA_NONCOHERENT
+ select IRQ_CPU
+ select SYS_HAS_CPU_MIPS32_R1
@ -24,7 +24,7 @@ Index: linux-2.6.23/arch/mips/Kconfig
source "arch/mips/tx4927/Kconfig"
source "arch/mips/tx4938/Kconfig"
source "arch/mips/vr41xx/Kconfig"
+source "arch/mips/danube/Kconfig"
+source "arch/mips/ifxmips/Kconfig"
endmenu
@ -39,8 +39,8 @@ Index: linux-2.6.23/arch/mips/Makefile
+#
+# Infineon IFXMIPS
+#
+core-$(CONFIG_IFXMIPS) += arch/mips/danube/
+cflags-$(CONFIG_IFXMIPS) += -Iinclude/asm-mips/mach-danube
+core-$(CONFIG_IFXMIPS) += arch/mips/ifxmips/
+cflags-$(CONFIG_IFXMIPS) += -Iinclude/asm-mips/mach-ifxmips
+load-$(CONFIG_IFXMIPS) += 0xffffffff80002000
+
#

View file

@ -7,10 +7,10 @@ Index: linux-2.6.23/drivers/serial/Kconfig
others can easily be added.
+config SERIAL_IFXMIPS
+ bool "Danube serial driver"
+ bool "IFXMips serial driver"
+ depends on IFXMIPS
+ help
+ Driver for the danubes built in ASC hardware
+ Driver for the ifxmipss built in ASC hardware
+
endmenu
Index: linux-2.6.23/drivers/serial/Makefile
@ -21,7 +21,7 @@ Index: linux-2.6.23/drivers/serial/Makefile
obj-$(CONFIG_SERIAL_NETX) += netx-serial.o
obj-$(CONFIG_SERIAL_OF_PLATFORM) += of_serial.o
obj-$(CONFIG_SERIAL_KS8695) += serial_ks8695.o
+obj-$(CONFIG_SERIAL_IFXMIPS) += danube_asc.o
+obj-$(CONFIG_SERIAL_IFXMIPS) += ifxmips_asc.o
Index: linux-2.6.23/drivers/mtd/maps/Makefile
===================================================================
--- linux-2.6.23.orig/drivers/mtd/maps/Makefile 2007-12-13 20:41:42.000000000 +0100
@ -30,7 +30,7 @@ Index: linux-2.6.23/drivers/mtd/maps/Makefile
obj-$(CONFIG_MTD_OMAP_NOR) += omap_nor.o
obj-$(CONFIG_MTD_MTX1) += mtx-1_flash.o
obj-$(CONFIG_MTD_TQM834x) += tqm834x.o
+obj-$(CONFIG_MTD_IFXMIPS) += danube.o
+obj-$(CONFIG_MTD_IFXMIPS) += ifxmips.o
Index: linux-2.6.23/drivers/net/Kconfig
===================================================================
--- linux-2.6.23.orig/drivers/net/Kconfig 2007-12-13 20:41:42.000000000 +0100
@ -40,16 +40,16 @@ Index: linux-2.6.23/drivers/net/Kconfig
source "drivers/net/arm/Kconfig"
+config IFXMIPS_MII0
+ tristate "Infineon Danube eth0 driver"
+ tristate "Infineon IFXMips eth0 driver"
+ depends on IFXMIPS
+ help
+ Support for the MII0 inside the Danube SOC
+ Support for the MII0 inside the IFXMips SOC
+
+config IFXMIPS_MII1
+ tristate "Infineon Danube eth1 driver"
+ tristate "Infineon IFXMips eth1 driver"
+ depends on IFXMIPS
+ help
+ Support for the MII1 inside the Danube SOC
+ Support for the MII1 inside the IFXMips SOC
+
config AX88796
tristate "ASIX AX88796 NE2000 clone support"
@ -62,7 +62,7 @@ Index: linux-2.6.23/drivers/net/Makefile
obj-$(CONFIG_FEC_8XX) += fec_8xx/
obj-$(CONFIG_PASEMI_MAC) += pasemi_mac.o
obj-$(CONFIG_MLX4_CORE) += mlx4/
+obj-$(CONFIG_IFXMIPS_MII0) += danube_mii0.o
+obj-$(CONFIG_IFXMIPS_MII0) += ifxmips_mii0.o
obj-$(CONFIG_MACB) += macb.o
@ -74,7 +74,7 @@ Index: linux-2.6.23/drivers/char/watchdog/Makefile
obj-$(CONFIG_INDYDOG) += indydog.o
obj-$(CONFIG_WDT_MTX1) += mtx-1_wdt.o
obj-$(CONFIG_WDT_RM9K_GPI) += rm9k_wdt.o
+obj-$(CONFIG_IFXMIPS_WDT) += danube_wdt.o
+obj-$(CONFIG_IFXMIPS_WDT) += ifxmips_wdt.o
# PARISC Architecture
@ -87,7 +87,7 @@ Index: linux-2.6.23/drivers/char/Makefile
endif
+
+obj-$(CONFIG_IFXMIPS_LED) += danube_led.o
+obj-$(CONFIG_IFXMIPS_GPIO) += danube_gpio.o
+obj-$(CONFIG_IFXMIPS_SSC) += danube_ssc.o
+obj-$(CONFIG_IFXMIPS_EEPROM) += danube_eeprom.o
+obj-$(CONFIG_IFXMIPS_LED) += ifxmips_led.o
+obj-$(CONFIG_IFXMIPS_GPIO) += ifxmips_gpio.o
+obj-$(CONFIG_IFXMIPS_SSC) += ifxmips_ssc.o
+obj-$(CONFIG_IFXMIPS_EEPROM) += ifxmips_eeprom.o