diff options
Diffstat (limited to 'uClinux-2.4.20-uc1/arch/armnommu/mach-W90N745')
4 files changed, 114 insertions, 0 deletions
diff --git a/uClinux-2.4.20-uc1/arch/armnommu/mach-W90N745/Makefile b/uClinux-2.4.20-uc1/arch/armnommu/mach-W90N745/Makefile new file mode 100644 index 0000000..498b599 --- /dev/null +++ b/uClinux-2.4.20-uc1/arch/armnommu/mach-W90N745/Makefile @@ -0,0 +1,21 @@ +# +# Makefile for the linux kernel. +# +# Note! Dependencies are done automagically by 'make dep', which also +# removes any old dependencies. DON'T put your own dependencies here +# unless it's something special (ie not a .c file). + +USE_STANDARD_AS_RULE := true + +O_TARGET := W90N745.o + +# Object file lists. + +obj-y := $(patsubst %.c, %.o, $(wildcard *.c)) +obj-m := +obj-n := +obj- := + +export-objs := + +include $(TOPDIR)/Rules.make diff --git a/uClinux-2.4.20-uc1/arch/armnommu/mach-W90N745/arch.c b/uClinux-2.4.20-uc1/arch/armnommu/mach-W90N745/arch.c new file mode 100644 index 0000000..815beb8 --- /dev/null +++ b/uClinux-2.4.20-uc1/arch/armnommu/mach-W90N745/arch.c @@ -0,0 +1,24 @@ +/* + * linux/arch/arm/mach-W90N745/arch.c + * + * Architecture specific fixups. This is where any + * parameters in the params struct are fixed up, or + * any additional architecture specific information + * is pulled from the params struct. + */ +#include <linux/tty.h> +#include <linux/delay.h> +#include <linux/pm.h> +#include <linux/init.h> + +#include <asm/elf.h> +#include <asm/setup.h> +#include <asm/mach-types.h> +#include <asm/mach/arch.h> + +extern void genarch_init_irq(void); + +MACHINE_START(W90N745, "W90N745") + MAINTAINER("Shirley yu") + INITIRQ(genarch_init_irq) +MACHINE_END diff --git a/uClinux-2.4.20-uc1/arch/armnommu/mach-W90N745/irq.c b/uClinux-2.4.20-uc1/arch/armnommu/mach-W90N745/irq.c new file mode 100644 index 0000000..f8c34be --- /dev/null +++ b/uClinux-2.4.20-uc1/arch/armnommu/mach-W90N745/irq.c @@ -0,0 +1,39 @@ +/* +* linux/arch/armnommu/mach-W90N745/irq.c +* 2003 clyu <clyu2@winbond.com.tw> +*/ +#include <linux/init.h> + +#include <asm/mach/irq.h> +#include <asm/hardware.h> +#include <asm/io.h> +#include <asm/irq.h> +#include <asm/system.h> + +void W90N745_mask_irq(unsigned int irq) +{ + INT_DISABLE(irq); +} + +void W90N745_unmask_irq(unsigned int irq) +{ + INT_ENABLE(irq); +} + +void W90N745_mask_ack_irq(unsigned int irq) +{ + INT_DISABLE(irq); +} + +void W90N745_int_init() +{ + //int i=0; + //IntPend = 0x1FFFFF; + CSR_WRITE(AIC_MDCR,0xFFFFFFFF); + CSR_WRITE(AIC_SCR9,0x41); + CSR_WRITE(AIC_SCR13,0x41); + //for(i=6;i<=18;i++) + // IntScr(i,0x41); + //IntMode = INT_MODE_IRQ; + //INT_ENABLE(INT_GLOBAL); +} diff --git a/uClinux-2.4.20-uc1/arch/armnommu/mach-W90N745/time.c b/uClinux-2.4.20-uc1/arch/armnommu/mach-W90N745/time.c new file mode 100644 index 0000000..067085f --- /dev/null +++ b/uClinux-2.4.20-uc1/arch/armnommu/mach-W90N745/time.c @@ -0,0 +1,30 @@ +/* + * time.c Timer functions for Winbond W90N745 + */ + +#include <linux/time.h> +#include <linux/timex.h> +#include <linux/types.h> +#include <linux/sched.h> +#include <asm/io.h> +#include <asm/arch/hardware.h> +#include <linux/interrupt.h> + +struct irqaction watchdog_irq = { + name: "watchdog", +}; + +unsigned long winbond_gettimeoffset (void) +{ + return 0; +} + +void winbond_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) +{ + do_timer(regs); +} + +void winbond_watchdog_interrupt(int irq, void *dev_id, struct pt_regs *regs) +{ + CSR_WRITE(WTCR, (CSR_READ(WTCR)&0xF7)|0x01); +} |