Commit cbf3b4c9 authored by Linus Torvalds's avatar Linus Torvalds

Merge bk://bk.arm.linux.org.uk

into home.transmeta.com:/home/torvalds/v2.5/linux
parents e85148e6 ab0680db
...@@ -123,6 +123,10 @@ endif ...@@ -123,6 +123,10 @@ endif
MACHINE = sa1100 MACHINE = sa1100
endif endif
ifeq ($(CONFIG_ARCH_PXA),y)
MACHINE = pxa
endif
ifeq ($(CONFIG_ARCH_L7200),y) ifeq ($(CONFIG_ARCH_L7200),y)
MACHINE = l7200 MACHINE = l7200
endif endif
......
...@@ -87,6 +87,10 @@ ifeq ($(CONFIG_SA1111),y) ...@@ -87,6 +87,10 @@ ifeq ($(CONFIG_SA1111),y)
endif endif
endif endif
ifeq ($(CONFIG_ARCH_PXA),y)
ZRELADDR = 0xa0008000
endif
ifeq ($(CONFIG_ARCH_ANAKIN),y) ifeq ($(CONFIG_ARCH_ANAKIN),y)
ZRELADDR = 0x20008000 ZRELADDR = 0x20008000
endif endif
......
...@@ -26,6 +26,7 @@ choice 'ARM system type' \ ...@@ -26,6 +26,7 @@ choice 'ARM system type' \
Cirrus-CL-PS7500FE CONFIG_ARCH_CLPS7500 \ Cirrus-CL-PS7500FE CONFIG_ARCH_CLPS7500 \
CLPS711x/EP721x-based CONFIG_ARCH_CLPS711X \ CLPS711x/EP721x-based CONFIG_ARCH_CLPS711X \
Co-EBSA285 CONFIG_ARCH_CO285 \ Co-EBSA285 CONFIG_ARCH_CO285 \
PXA250/210-based CONFIG_ARCH_PXA \
EBSA-110 CONFIG_ARCH_EBSA110 \ EBSA-110 CONFIG_ARCH_EBSA110 \
Epxa10db CONFIG_ARCH_CAMELOT \ Epxa10db CONFIG_ARCH_CAMELOT \
FootBridge CONFIG_ARCH_FOOTBRIDGE \ FootBridge CONFIG_ARCH_FOOTBRIDGE \
...@@ -125,6 +126,16 @@ dep_tristate ' Support for SA11x0 USB character device emulation' CONFIG_SA1100 ...@@ -125,6 +126,16 @@ dep_tristate ' Support for SA11x0 USB character device emulation' CONFIG_SA1100
dep_tristate 'Compaq iPAQ Handheld sleeve support' CONFIG_H3600_SLEEVE $CONFIG_SA1100_H3600 dep_tristate 'Compaq iPAQ Handheld sleeve support' CONFIG_H3600_SLEEVE $CONFIG_SA1100_H3600
endmenu endmenu
mainmenu_option next_comment
comment 'Intel PXA250/210 Implementations'
dep_bool ' Intel DBPXA250 Development Platform' CONFIG_ARCH_LUBBOCK $CONFIG_ARCH_PXA
dep_bool ' Accelent Xscale IDP' CONFIG_ARCH_PXA_IDP $CONFIG_ARCH_PXA
if [ "$CONFIG_ARCH_LUBBOCK" = "y" ]; then
define_bool CONFIG_SA1111 y
fi
endmenu
mainmenu_option next_comment mainmenu_option next_comment
comment 'CLPS711X/EP721X Implementations' comment 'CLPS711X/EP721X Implementations'
dep_bool ' AUTCPU12' CONFIG_ARCH_AUTCPU12 $CONFIG_ARCH_CLPS711X dep_bool ' AUTCPU12' CONFIG_ARCH_AUTCPU12 $CONFIG_ARCH_CLPS711X
...@@ -227,7 +238,9 @@ if [ "$CONFIG_ARCH_EBSA110" = "y" -o "$CONFIG_FOOTBRIDGE" = "y" -o \ ...@@ -227,7 +238,9 @@ if [ "$CONFIG_ARCH_EBSA110" = "y" -o "$CONFIG_FOOTBRIDGE" = "y" -o \
else else
define_bool CONFIG_CPU_32v4 n define_bool CONFIG_CPU_32v4 n
fi fi
if [ "$CONFIG_ARCH_IOP310" = "y" -o "$CONFIG_ARCH_ADIFCC" = "y" ]; then if [ "$CONFIG_ARCH_IOP310" = "y" -o \
"$CONFIG_ARCH_ADIFCC" = "y" -o \
"$CONFIG_ARCH_PXA" = "y" ]; then
define_bool CONFIG_CPU_32v5 y define_bool CONFIG_CPU_32v5 y
else else
define_bool CONFIG_CPU_32v5 n define_bool CONFIG_CPU_32v5 n
...@@ -317,7 +330,9 @@ else ...@@ -317,7 +330,9 @@ else
fi fi
# XScale # XScale
if [ "$CONFIG_ARCH_IOP310" = "y" -o "$CONFIG_ARCH_ADIFCC" = "y" ]; then if [ "$CONFIG_ARCH_IOP310" = "y" -o \
"$CONFIG_ARCH_ADIFCC" = "y" -o \
"$CONFIG_ARCH_PXA" = "y" ]; then
define_bool CONFIG_CPU_XSCALE y define_bool CONFIG_CPU_XSCALE y
else else
define_bool CONFIG_CPU_XSCALE n define_bool CONFIG_CPU_XSCALE n
...@@ -467,6 +482,8 @@ if [ "$CONFIG_ARCH_NETWINDER" = "y" -o \ ...@@ -467,6 +482,8 @@ if [ "$CONFIG_ARCH_NETWINDER" = "y" -o \
"$CONFIG_ARCH_SHARK" = "y" -o \ "$CONFIG_ARCH_SHARK" = "y" -o \
"$CONFIG_ARCH_CO285" = "y" -o \ "$CONFIG_ARCH_CO285" = "y" -o \
"$CONFIG_ARCH_SA1100" = "y" -o \ "$CONFIG_ARCH_SA1100" = "y" -o \
"$CONFIG_ARCH_LUBBOCK" = "y" -o \
"$CONFIG_ARCH_PXA_IDP" = "y" -o \
"$CONFIG_ARCH_INTEGRATOR" = "y" -o \ "$CONFIG_ARCH_INTEGRATOR" = "y" -o \
"$CONFIG_ARCH_CDB89712" = "y" -o \ "$CONFIG_ARCH_CDB89712" = "y" -o \
"$CONFIG_ARCH_P720T" = "y" ]; then "$CONFIG_ARCH_P720T" = "y" ]; then
...@@ -477,6 +494,8 @@ if [ "$CONFIG_ARCH_NETWINDER" = "y" -o \ ...@@ -477,6 +494,8 @@ if [ "$CONFIG_ARCH_NETWINDER" = "y" -o \
"$CONFIG_ARCH_SHARK" = "y" -o \ "$CONFIG_ARCH_SHARK" = "y" -o \
"$CONFIG_ARCH_CO285" = "y" -o \ "$CONFIG_ARCH_CO285" = "y" -o \
"$CONFIG_ARCH_SA1100" = "y" -o \ "$CONFIG_ARCH_SA1100" = "y" -o \
"$CONFIG_ARCH_LUBBOCK" = "y" -o \
"$CONFIG_ARCH_PXA_IDP" = "y" -o \
"$CONFIG_ARCH_INTEGRATOR" = "y" -o \ "$CONFIG_ARCH_INTEGRATOR" = "y" -o \
"$CONFIG_ARCH_P720T" = "y" ]; then "$CONFIG_ARCH_P720T" = "y" ]; then
bool ' Timer LED' CONFIG_LEDS_TIMER bool ' Timer LED' CONFIG_LEDS_TIMER
......
This diff is collapsed.
...@@ -215,8 +215,8 @@ ...@@ -215,8 +215,8 @@
.macro addruart,rx .macro addruart,rx
mrc p15, 0, \rx, c1, c0 mrc p15, 0, \rx, c1, c0
tst \rx, #1 @ MMU enabled? tst \rx, #1 @ MMU enabled?
moveq \rx, #0x40000000 @ physical moveq \rx, #0x40000000 @ physical
movne \rx, #0xfc000000 @ virtual movne \rx, #io_p2v(0x40000000) @ virtual
orr \rx, \rx, #0x00100000 orr \rx, \rx, #0x00100000
.endm .endm
......
...@@ -133,10 +133,10 @@ static void isa_disable_dma(dmach_t channel, dma_t *dma) ...@@ -133,10 +133,10 @@ static void isa_disable_dma(dmach_t channel, dma_t *dma)
} }
static struct dma_ops isa_dma_ops = { static struct dma_ops isa_dma_ops = {
type: "ISA", .type = "ISA",
enable: isa_enable_dma, .enable = isa_enable_dma,
disable: isa_disable_dma, .disable = isa_disable_dma,
residue: isa_get_dma_residue, .residue = isa_get_dma_residue,
}; };
static struct resource dma_resources[] = { static struct resource dma_resources[] = {
......
...@@ -407,7 +407,7 @@ static int ecard_reboot(struct notifier_block *me, unsigned long val, void *v) ...@@ -407,7 +407,7 @@ static int ecard_reboot(struct notifier_block *me, unsigned long val, void *v)
} }
static struct notifier_block ecard_reboot_notifier = { static struct notifier_block ecard_reboot_notifier = {
notifier_call: ecard_reboot, .notifier_call = ecard_reboot,
}; };
...@@ -571,9 +571,9 @@ static void ecard_irq_mask(unsigned int irqnr) ...@@ -571,9 +571,9 @@ static void ecard_irq_mask(unsigned int irqnr)
} }
static struct irqchip ecard_chip = { static struct irqchip ecard_chip = {
ack: ecard_irq_mask, .ack = ecard_irq_mask,
mask: ecard_irq_mask, .mask = ecard_irq_mask,
unmask: ecard_irq_unmask, .unmask = ecard_irq_unmask,
}; };
void ecard_enablefiq(unsigned int fiqnr) void ecard_enablefiq(unsigned int fiqnr)
......
...@@ -244,7 +244,7 @@ vector_prefetch: ...@@ -244,7 +244,7 @@ vector_prefetch:
tst lr, #3 tst lr, #3
bne __pabt_invalid bne __pabt_invalid
save_user_regs save_user_regs
teqp pc, #0x00000003 @ NOT a problem - doesnt change mode teqp pc, #0x00000003 @ NOT a problem - doesn't change mode
mask_pc r0, lr @ Address of abort mask_pc r0, lr @ Address of abort
mov r1, sp @ Tasks registers mov r1, sp @ Tasks registers
bl do_PrefetchAbort bl do_PrefetchAbort
...@@ -295,7 +295,7 @@ Laddrexcptn_not_user: ...@@ -295,7 +295,7 @@ Laddrexcptn_not_user:
and r2, lr, #3 and r2, lr, #3
teq r2, #3 teq r2, #3
bne Laddrexcptn_illegal_mode bne Laddrexcptn_illegal_mode
teqp pc, #0x00000003 @ NOT a problem - doesnt change mode teqp pc, #0x00000003 @ NOT a problem - doesn't change mode
mask_pc r0, lr mask_pc r0, lr
mov r1, sp mov r1, sp
orr r2, r2, #0x400 orr r2, r2, #0x400
...@@ -399,7 +399,7 @@ vector_data: sub lr, lr, #8 @ Correct lr ...@@ -399,7 +399,7 @@ vector_data: sub lr, lr, #8 @ Correct lr
tst lr, #3 tst lr, #3
bne Ldata_not_user bne Ldata_not_user
save_user_regs save_user_regs
teqp pc, #0x00000003 @ NOT a problem - doesnt change mode teqp pc, #0x00000003 @ NOT a problem - doesn't change mode
mask_pc r0, lr mask_pc r0, lr
bl Ldata_do bl Ldata_do
b ret_from_exception b ret_from_exception
...@@ -410,7 +410,7 @@ Ldata_not_user: ...@@ -410,7 +410,7 @@ Ldata_not_user:
teq r2, #3 teq r2, #3
bne Ldata_illegal_mode bne Ldata_illegal_mode
tst lr, #0x08000000 tst lr, #0x08000000
teqeqp pc, #0x00000003 @ NOT a problem - doesnt change mode teqeqp pc, #0x00000003 @ NOT a problem - doesn't change mode
mask_pc r0, lr mask_pc r0, lr
bl Ldata_do bl Ldata_do
SVC_RESTORE_ALL SVC_RESTORE_ALL
......
...@@ -590,7 +590,7 @@ ENTRY(anakin_active_irqs) ...@@ -590,7 +590,7 @@ ENTRY(anakin_active_irqs)
.endm .endm
.macro get_irqnr_and_base, irqnr, irqstat, base, tmp .macro get_irqnr_and_base, irqnr, irqstat, base, tmp
mov \base, #0xfc000000 @ IIR Ctl = 0xfcd00000 mov \base, #io_p2v(0x40000000) @ IIR Ctl = 0x40d00000
add \base, \base, #0x00d00000 add \base, \base, #0x00d00000
ldr \irqstat, [\base, #0] @ ICIP ldr \irqstat, [\base, #0] @ ICIP
ldr \irqnr, [\base, #4] @ ICMR ldr \irqnr, [\base, #4] @ ICMR
......
...@@ -87,8 +87,8 @@ static int fiq_def_op(void *ref, int relinquish) ...@@ -87,8 +87,8 @@ static int fiq_def_op(void *ref, int relinquish)
} }
static struct fiq_handler default_owner = { static struct fiq_handler default_owner = {
name: "default", .name = "default",
fiq_op: fiq_def_op, .fiq_op = fiq_def_op,
}; };
static struct fiq_handler *current_fiq = &default_owner; static struct fiq_handler *current_fiq = &default_owner;
......
...@@ -64,15 +64,15 @@ void do_bad_IRQ(unsigned int irq, struct irqdesc *desc, struct pt_regs *regs) ...@@ -64,15 +64,15 @@ void do_bad_IRQ(unsigned int irq, struct irqdesc *desc, struct pt_regs *regs)
} }
static struct irqchip bad_chip = { static struct irqchip bad_chip = {
ack: dummy_mask_unmask_irq, .ack = dummy_mask_unmask_irq,
mask: dummy_mask_unmask_irq, .mask = dummy_mask_unmask_irq,
unmask: dummy_mask_unmask_irq, .unmask = dummy_mask_unmask_irq,
}; };
static struct irqdesc bad_irq_desc = { static struct irqdesc bad_irq_desc = {
chip: &bad_chip, .chip = &bad_chip,
handle: do_bad_IRQ, .handle = do_bad_IRQ,
depth: 1, .depth = 1,
}; };
/** /**
......
...@@ -803,8 +803,8 @@ static void c_stop(struct seq_file *m, void *v) ...@@ -803,8 +803,8 @@ static void c_stop(struct seq_file *m, void *v)
} }
struct seq_operations cpuinfo_op = { struct seq_operations cpuinfo_op = {
start: c_start, .start = c_start,
next: c_next, .next = c_next,
stop: c_stop, .stop = c_stop,
show: c_show .show = c_show
}; };
...@@ -205,7 +205,7 @@ void do_settimeofday(struct timeval *tv) ...@@ -205,7 +205,7 @@ void do_settimeofday(struct timeval *tv)
} }
static struct irqaction timer_irq = { static struct irqaction timer_irq = {
name: "timer", .name = "timer",
}; };
/* /*
......
...@@ -49,9 +49,9 @@ anakin_interrupt(int irq, void *dev_id, struct pt_regs *regs) ...@@ -49,9 +49,9 @@ anakin_interrupt(int irq, void *dev_id, struct pt_regs *regs)
} }
static struct irqaction anakin_irq = { static struct irqaction anakin_irq = {
name: "Anakin IRQ", .name = "Anakin IRQ",
handler: anakin_interrupt, .handler = anakin_interrupt,
flags: SA_INTERRUPT .flags = SA_INTERRUPT
}; };
void __init void __init
......
...@@ -110,23 +110,23 @@ static void arc_disable_dma(dmach_t channel, dma_t *dma) ...@@ -110,23 +110,23 @@ static void arc_disable_dma(dmach_t channel, dma_t *dma)
} }
static struct dma_ops arc_floppy_data_dma_ops = { static struct dma_ops arc_floppy_data_dma_ops = {
type: "FIQDMA", .type = "FIQDMA",
enable: arc_floppy_data_enable_dma, .enable = arc_floppy_data_enable_dma,
disable: arc_disable_dma, .disable = arc_disable_dma,
residue: arc_floppy_data_get_dma_residue, .residue = arc_floppy_data_get_dma_residue,
}; };
static struct dma_ops arc_floppy_cmdend_dma_ops = { static struct dma_ops arc_floppy_cmdend_dma_ops = {
type: "FIQCMD", .type = "FIQCMD",
enable: arc_floppy_cmdend_enable_dma, .enable = arc_floppy_cmdend_enable_dma,
disable: arc_disable_dma, .disable = arc_disable_dma,
residue: arc_floppy_cmdend_get_dma_residue, .residue = arc_floppy_cmdend_get_dma_residue,
}; };
#endif #endif
#ifdef CONFIG_ARCH_A5K #ifdef CONFIG_ARCH_A5K
static struct fiq_handler fh = { static struct fiq_handler fh = {
name: "floppydata" .name = "floppydata"
}; };
static int a5k_floppy_get_dma_residue(dmach_t channel, dma_t *dma) static int a5k_floppy_get_dma_residue(dmach_t channel, dma_t *dma)
...@@ -175,10 +175,10 @@ static void a5k_floppy_disable_dma(dmach_t channel, dma_t *dma) ...@@ -175,10 +175,10 @@ static void a5k_floppy_disable_dma(dmach_t channel, dma_t *dma)
} }
static struct dma_ops a5k_floppy_dma_ops = { static struct dma_ops a5k_floppy_dma_ops = {
type: "FIQDMA", .type = "FIQDMA",
enable: a5k_floppy_enable_dma, .enable = a5k_floppy_enable_dma,
disable: a5k_floppy_disable_dma, .disable = a5k_floppy_disable_dma,
residue: a5k_floppy_get_dma_residue, .residue = a5k_floppy_get_dma_residue,
}; };
#endif #endif
...@@ -190,9 +190,9 @@ static void sound_enable_disable_dma(dmach_t channel, dma_t *dma) ...@@ -190,9 +190,9 @@ static void sound_enable_disable_dma(dmach_t channel, dma_t *dma)
} }
static struct dma_ops sound_dma_ops = { static struct dma_ops sound_dma_ops = {
type: "VIRTUAL", .type = "VIRTUAL",
enable: sound_enable_disable_dma, .enable = sound_enable_disable_dma,
disable: sound_enable_disable_dma, .disable = sound_enable_disable_dma,
}; };
void __init arch_dma_init(dma_t *dma) void __init arch_dma_init(dma_t *dma)
......
...@@ -63,9 +63,9 @@ static void int1_unmask(unsigned int irq) ...@@ -63,9 +63,9 @@ static void int1_unmask(unsigned int irq)
} }
static struct irqchip int1_chip = { static struct irqchip int1_chip = {
ack: int1_ack, .ack = int1_ack,
mask: int1_mask, .mask = int1_mask,
unmask: int1_unmask, .unmask = int1_unmask,
}; };
static void int2_mask(unsigned int irq) static void int2_mask(unsigned int irq)
...@@ -100,9 +100,9 @@ static void int2_unmask(unsigned int irq) ...@@ -100,9 +100,9 @@ static void int2_unmask(unsigned int irq)
} }
static struct irqchip int2_chip = { static struct irqchip int2_chip = {
ack: int2_ack, .ack = int2_ack,
mask: int2_mask, .mask = int2_mask,
unmask: int2_unmask, .unmask = int2_unmask,
}; };
void __init clps711x_init_irq(void) void __init clps711x_init_irq(void)
......
...@@ -42,9 +42,9 @@ static void ebsa110_unmask_irq(unsigned int irq) ...@@ -42,9 +42,9 @@ static void ebsa110_unmask_irq(unsigned int irq)
} }
static struct irqchip ebsa110_irq_chip = { static struct irqchip ebsa110_irq_chip = {
ack: ebsa110_mask_irq, .ack = ebsa110_mask_irq,
mask: ebsa110_mask_irq, .mask = ebsa110_mask_irq,
unmask: ebsa110_unmask_irq, .unmask = ebsa110_unmask_irq,
}; };
static void __init ebsa110_init_irq(void) static void __init ebsa110_init_irq(void)
......
...@@ -39,15 +39,15 @@ static void epxa_unmask_irq(unsigned int irq) ...@@ -39,15 +39,15 @@ static void epxa_unmask_irq(unsigned int irq)
static struct irqchip epxa_irq_chip = { static struct irqchip epxa_irq_chip = {
ack: epxa_mask_irq, .ack = epxa_mask_irq,
mask: epxa_mask_irq, .mask = epxa_mask_irq,
unmask: epxa_unmask_irq, .unmask = epxa_unmask_irq,
}; };
static struct resource irq_resource = { static struct resource irq_resource = {
name: "irq_handler", .name = "irq_handler",
start: IO_ADDRESS(EXC_INT_CTRL00_BASE), .start = IO_ADDRESS(EXC_INT_CTRL00_BASE),
end: IO_ADDRESS(INT_PRIORITY_FC(EXC_INT_CTRL00_BASE))+4, .end = IO_ADDRESS(INT_PRIORITY_FC(EXC_INT_CTRL00_BASE))+4,
}; };
void __init epxa10db_init_irq(void) void __init epxa10db_init_irq(void)
......
...@@ -36,13 +36,13 @@ static int __init cats_map_irq(struct pci_dev *dev, u8 slot, u8 pin) ...@@ -36,13 +36,13 @@ static int __init cats_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
* cards being used (ie, pci-pci bridge based cards)? * cards being used (ie, pci-pci bridge based cards)?
*/ */
static struct hw_pci cats_pci __initdata = { static struct hw_pci cats_pci __initdata = {
swizzle: NULL, .swizzle = NULL,
map_irq: cats_map_irq, .map_irq = cats_map_irq,
nr_controllers: 1, .nr_controllers = 1,
setup: dc21285_setup, .setup = dc21285_setup,
scan: dc21285_scan_bus, .scan = dc21285_scan_bus,
preinit: dc21285_preinit, .preinit = dc21285_preinit,
postinit: dc21285_postinit, .postinit = dc21285_postinit,
}; };
static int cats_pci_init(void) static int cats_pci_init(void)
......
...@@ -35,10 +35,10 @@ static void fb_dma_disable(dmach_t channel, dma_t *dma) ...@@ -35,10 +35,10 @@ static void fb_dma_disable(dmach_t channel, dma_t *dma)
} }
static struct dma_ops fb_dma_ops = { static struct dma_ops fb_dma_ops = {
type: "fb", .type = "fb",
request: fb_dma_request, .request = fb_dma_request,
enable: fb_dma_enable, .enable = fb_dma_enable,
disable: fb_dma_disable, .disable = fb_dma_disable,
}; };
#endif #endif
......
...@@ -29,13 +29,13 @@ static int __init ebsa285_map_irq(struct pci_dev *dev, u8 slot, u8 pin) ...@@ -29,13 +29,13 @@ static int __init ebsa285_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
} }
static struct hw_pci ebsa285_pci __initdata = { static struct hw_pci ebsa285_pci __initdata = {
swizzle: pci_std_swizzle, .swizzle = pci_std_swizzle,
map_irq: ebsa285_map_irq, .map_irq = ebsa285_map_irq,
nr_controllers: 1, .nr_controllers = 1,
setup: dc21285_setup, .setup = dc21285_setup,
scan: dc21285_scan_bus, .scan = dc21285_scan_bus,
preinit: dc21285_preinit, .preinit = dc21285_preinit,
postinit: dc21285_postinit, .postinit = dc21285_postinit,
}; };
static int __init ebsa285_init_pci(void) static int __init ebsa285_init_pci(void)
......
...@@ -67,9 +67,9 @@ static void fb_unmask_irq(unsigned int irq) ...@@ -67,9 +67,9 @@ static void fb_unmask_irq(unsigned int irq)
} }
static struct irqchip fb_chip = { static struct irqchip fb_chip = {
ack: fb_mask_irq, .ack = fb_mask_irq,
mask: fb_mask_irq, .mask = fb_mask_irq,
unmask: fb_unmask_irq, .unmask = fb_unmask_irq,
}; };
static void __init __fb_init_irq(void) static void __init __fb_init_irq(void)
......
...@@ -50,9 +50,9 @@ static void isa_unmask_pic_lo_irq(unsigned int irq) ...@@ -50,9 +50,9 @@ static void isa_unmask_pic_lo_irq(unsigned int irq)
} }
static struct irqchip isa_lo_chip = { static struct irqchip isa_lo_chip = {
ack: isa_ack_pic_lo_irq, .ack = isa_ack_pic_lo_irq,
mask: isa_mask_pic_lo_irq, .mask = isa_mask_pic_lo_irq,
unmask: isa_unmask_pic_lo_irq, .unmask = isa_unmask_pic_lo_irq,
}; };
static void isa_mask_pic_hi_irq(unsigned int irq) static void isa_mask_pic_hi_irq(unsigned int irq)
...@@ -79,9 +79,9 @@ static void isa_unmask_pic_hi_irq(unsigned int irq) ...@@ -79,9 +79,9 @@ static void isa_unmask_pic_hi_irq(unsigned int irq)
} }
static struct irqchip isa_hi_chip = { static struct irqchip isa_hi_chip = {
ack: isa_ack_pic_hi_irq, .ack = isa_ack_pic_hi_irq,
mask: isa_mask_pic_hi_irq, .mask = isa_mask_pic_hi_irq,
unmask: isa_unmask_pic_hi_irq, .unmask = isa_unmask_pic_hi_irq,
}; };
static void no_action(int irq, void *dev_id, struct pt_regs *regs) static void no_action(int irq, void *dev_id, struct pt_regs *regs)
......
...@@ -43,13 +43,13 @@ static int __init netwinder_map_irq(struct pci_dev *dev, u8 slot, u8 pin) ...@@ -43,13 +43,13 @@ static int __init netwinder_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
} }
static struct hw_pci netwinder_pci __initdata = { static struct hw_pci netwinder_pci __initdata = {
swizzle: pci_std_swizzle, .swizzle = pci_std_swizzle,
map_irq: netwinder_map_irq, .map_irq = netwinder_map_irq,
nr_controllers: 1, .nr_controllers = 1,
setup: dc21285_setup, .setup = dc21285_setup,
scan: dc21285_scan_bus, .scan = dc21285_scan_bus,
preinit: dc21285_preinit, .preinit = dc21285_preinit,
postinit: dc21285_postinit, .postinit = dc21285_postinit,
}; };
static int __init netwinder_pci_init(void) static int __init netwinder_pci_init(void)
......
...@@ -38,12 +38,12 @@ static int __init personal_server_map_irq(struct pci_dev *dev, u8 slot, u8 pin) ...@@ -38,12 +38,12 @@ static int __init personal_server_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
} }
static struct hw_pci personal_server_pci __initdata = { static struct hw_pci personal_server_pci __initdata = {
map_irq: personal_server_map_irq, .map_irq = personal_server_map_irq,
nr_controllers: 1, .nr_controllers = 1,
setup: dc21285_setup, .setup = dc21285_setup,
scan: dc21285_scan_bus, .scan = dc21285_scan_bus,
preinit: dc21285_preinit, .preinit = dc21285_preinit,
postinit: dc21285_postinit, .postinit = dc21285_postinit,
}; };
static int __init personal_pci_init(void) static int __init personal_pci_init(void)
......
...@@ -45,9 +45,9 @@ static u8 __init ftv_swizzle(struct pci_dev *dev, u8 *pin) ...@@ -45,9 +45,9 @@ static u8 __init ftv_swizzle(struct pci_dev *dev, u8 *pin)
/* ftv host-specific stuff */ /* ftv host-specific stuff */
static struct hw_pci ftv_pci __initdata = { static struct hw_pci ftv_pci __initdata = {
init: plx90x0_init, .init = plx90x0_init,
swizzle: ftv_swizzle, .swizzle = ftv_swizzle,
map_irq: ftv_map_irq, .map_irq = ftv_map_irq,
}; };
static int __init ftv_pci_init(void) static int __init ftv_pci_init(void)
......
...@@ -36,17 +36,17 @@ extern void integrator_init_irq(void); ...@@ -36,17 +36,17 @@ extern void integrator_init_irq(void);
#ifdef CONFIG_KMI_KEYB #ifdef CONFIG_KMI_KEYB
static struct kmi_info integrator_keyboard __initdata = { static struct kmi_info integrator_keyboard __initdata = {
base: IO_ADDRESS(KMI0_BASE), .base = IO_ADDRESS(KMI0_BASE),
irq: IRQ_KMIINT0, .irq = IRQ_KMIINT0,
divisor: 24 / 8 - 1, .divisor = 24 / 8 - 1,
type: KMI_KEYBOARD, .type = KMI_KEYBOARD,
}; };
static struct kmi_info integrator_mouse __initdata = { static struct kmi_info integrator_mouse __initdata = {
base: IO_ADDRESS(KMI1_BASE), .base = IO_ADDRESS(KMI1_BASE),
irq: IRQ_KMIINT1, .irq = IRQ_KMIINT1,
divisor: 24 / 8 - 1, .divisor = 24 / 8 - 1,
type: KMI_MOUSE, .type = KMI_MOUSE,
}; };
#endif #endif
......
...@@ -48,9 +48,9 @@ static void sc_unmask_irq(unsigned int irq) ...@@ -48,9 +48,9 @@ static void sc_unmask_irq(unsigned int irq)
} }
static struct irqchip sc_chip = { static struct irqchip sc_chip = {
ack: sc_mask_irq, .ack = sc_mask_irq,
mask: sc_mask_irq, .mask = sc_mask_irq,
unmask: sc_unmask_irq, .unmask = sc_unmask_irq,
}; };
void __init integrator_init_irq(void) void __init integrator_init_irq(void)
......
...@@ -114,13 +114,13 @@ static int __init integrator_map_irq(struct pci_dev *dev, u8 slot, u8 pin) ...@@ -114,13 +114,13 @@ static int __init integrator_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
extern void pci_v3_init(void *); extern void pci_v3_init(void *);
static struct hw_pci integrator_pci __initdata = { static struct hw_pci integrator_pci __initdata = {
swizzle: integrator_swizzle, .swizzle = integrator_swizzle,
map_irq: integrator_map_irq, .map_irq = integrator_map_irq,
setup: pci_v3_setup, .setup = pci_v3_setup,
nr_controllers: 1, .nr_controllers = 1,
scan: pci_v3_scan_bus, .scan = pci_v3_scan_bus,
preinit: pci_v3_preinit, .preinit = pci_v3_preinit,
postinit: pci_v3_postinit, .postinit = pci_v3_postinit,
}; };
static int __init integrator_pci_init(void) static int __init integrator_pci_init(void)
......
...@@ -382,26 +382,26 @@ static int v3_write_config_dword(struct pci_dev *dev, int where, u32 val) ...@@ -382,26 +382,26 @@ static int v3_write_config_dword(struct pci_dev *dev, int where, u32 val)
} }
static struct pci_ops pci_v3_ops = { static struct pci_ops pci_v3_ops = {
read_byte: v3_read_config_byte, .read_byte = v3_read_config_byte,
read_word: v3_read_config_word, .read_word = v3_read_config_word,
read_dword: v3_read_config_dword, .read_dword = v3_read_config_dword,
write_byte: v3_write_config_byte, .write_byte = v3_write_config_byte,
write_word: v3_write_config_word, .write_word = v3_write_config_word,
write_dword: v3_write_config_dword, .write_dword = v3_write_config_dword,
}; };
static struct resource non_mem = { static struct resource non_mem = {
name: "PCI non-prefetchable", .name = "PCI non-prefetchable",
start: PHYS_PCI_MEM_BASE + PCI_BUS_NONMEM_START, .start = PHYS_PCI_MEM_BASE + PCI_BUS_NONMEM_START,
end: PHYS_PCI_MEM_BASE + PCI_BUS_NONMEM_START + PCI_BUS_NONMEM_SIZE - 1, .end = PHYS_PCI_MEM_BASE + PCI_BUS_NONMEM_START + PCI_BUS_NONMEM_SIZE - 1,
flags: IORESOURCE_MEM, .flags = IORESOURCE_MEM,
}; };
static struct resource pre_mem = { static struct resource pre_mem = {
name: "PCI prefetchable", .name = "PCI prefetchable",
start: PHYS_PCI_MEM_BASE + PCI_BUS_PREMEM_START, .start = PHYS_PCI_MEM_BASE + PCI_BUS_PREMEM_START,
end: PHYS_PCI_MEM_BASE + PCI_BUS_PREMEM_START + PCI_BUS_PREMEM_SIZE - 1, .end = PHYS_PCI_MEM_BASE + PCI_BUS_PREMEM_START + PCI_BUS_PREMEM_SIZE - 1,
flags: IORESOURCE_MEM | IORESOURCE_PREFETCH, .flags = IORESOURCE_MEM | IORESOURCE_PREFETCH,
}; };
static int __init pci_v3_setup_resources(struct resource **resource) static int __init pci_v3_setup_resources(struct resource **resource)
......
...@@ -58,9 +58,9 @@ static void iop310_irq_unmask (unsigned int irq) ...@@ -58,9 +58,9 @@ static void iop310_irq_unmask (unsigned int irq)
} }
struct irqchip ext_chip = { struct irqchip ext_chip = {
ack: iop310_irq_mask, .ack = iop310_irq_mask,
mask: iop310_irq_mask, .mask = iop310_irq_mask,
unmask: iop310_irq_unmask, .unmask = iop310_irq_unmask,
}; };
void void
......
...@@ -41,9 +41,9 @@ static void iq80310_irq_unmask(unsigned int irq) ...@@ -41,9 +41,9 @@ static void iq80310_irq_unmask(unsigned int irq)
} }
static struct irqchip iq80310_irq_chip = { static struct irqchip iq80310_irq_chip = {
ack: iq80310_irq_mask, .ack = iq80310_irq_mask,
mask: iq80310_irq_mask, .mask = iq80310_irq_mask,
unmask: iq80310_irq_unmask, .unmask = iq80310_irq_unmask,
}; };
extern struct irqchip ext_chip; extern struct irqchip ext_chip;
......
...@@ -147,11 +147,11 @@ static void iq80310_preinit(void) ...@@ -147,11 +147,11 @@ static void iq80310_preinit(void)
} }
static struct hw_pci iq80310_pci __initdata = { static struct hw_pci iq80310_pci __initdata = {
swizzle: pci_std_swizzle, .swizzle = pci_std_swizzle,
nr_controllers: 2, .nr_controllers = 2,
setup: iq80310_setup, .setup = iq80310_setup,
scan: iop310_scan_bus, .scan = iop310_scan_bus,
preinit: iq80310_preinit, .preinit = iq80310_preinit,
}; };
static int __init iq80310_pci_init(void) static int __init iq80310_pci_init(void)
......
...@@ -119,8 +119,8 @@ static void iq80310_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) ...@@ -119,8 +119,8 @@ static void iq80310_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
extern unsigned long (*gettimeoffset)(void); extern unsigned long (*gettimeoffset)(void);
static struct irqaction timer_irq = { static struct irqaction timer_irq = {
name: "timer", .name = "timer",
handler: iq80310_timer_interrupt, .handler = iq80310_timer_interrupt,
}; };
......
...@@ -47,9 +47,9 @@ static void xs80200_irq_unmask (unsigned int irq) ...@@ -47,9 +47,9 @@ static void xs80200_irq_unmask (unsigned int irq)
} }
static struct irqchip xs80200_chip = { static struct irqchip xs80200_chip = {
ack: xs80200_irq_mask, .ack = xs80200_irq_mask,
mask: xs80200_irq_mask, .mask = xs80200_irq_mask,
unmask: xs80200_irq_unmask, .unmask = xs80200_irq_unmask,
}; };
void __init xs80200_init_irq(void) void __init xs80200_init_irq(void)
......
...@@ -29,4 +29,7 @@ leds-$(CONFIG_ARCH_PXA_IDP) += leds-idp.o ...@@ -29,4 +29,7 @@ leds-$(CONFIG_ARCH_PXA_IDP) += leds-idp.o
obj-$(CONFIG_LEDS) += $(leds-y) obj-$(CONFIG_LEDS) += $(leds-y)
# Misc features
obj-$(CONFIG_PM) += pm.o sleep.o
include $(TOPDIR)/Rules.make include $(TOPDIR)/Rules.make
...@@ -91,9 +91,10 @@ static struct map_desc standard_io_desc[] __initdata = { ...@@ -91,9 +91,10 @@ static struct map_desc standard_io_desc[] __initdata = {
/* virtual physical length type */ /* virtual physical length type */
{ 0xf6000000, 0x20000000, 0x01000000, MT_DEVICE }, /* PCMCIA0 IO */ { 0xf6000000, 0x20000000, 0x01000000, MT_DEVICE }, /* PCMCIA0 IO */
{ 0xf7000000, 0x30000000, 0x01000000, MT_DEVICE }, /* PCMCIA1 IO */ { 0xf7000000, 0x30000000, 0x01000000, MT_DEVICE }, /* PCMCIA1 IO */
{ 0xfc000000, 0x40000000, 0x01400000, MT_DEVICE }, /* Devs */ { 0xf8000000, 0x40000000, 0x01400000, MT_DEVICE }, /* Devs */
{ 0xfe000000, 0x44000000, 0x00200000, MT_DEVICE }, /* LCD */ { 0xfa000000, 0x44000000, 0x00100000, MT_DEVICE }, /* LCD */
{ 0xff000000, 0x48000000, 0x00200000, MT_DEVICE } /* Mem Ctl */ { 0xfc000000, 0x48000000, 0x00100000, MT_DEVICE }, /* Mem Ctl */
{ 0xff000000, 0x00000000, 0x00100000, MT_DEVICE } /* UNCACHED_PHYS_0 */
}; };
void __init pxa_map_io(void) void __init pxa_map_io(void)
......
...@@ -40,9 +40,9 @@ static void pxa_unmask_irq(unsigned int irq) ...@@ -40,9 +40,9 @@ static void pxa_unmask_irq(unsigned int irq)
} }
static struct irqchip pxa_internal_chip = { static struct irqchip pxa_internal_chip = {
ack: pxa_mask_irq, .ack = pxa_mask_irq,
mask: pxa_mask_irq, .mask = pxa_mask_irq,
unmask: pxa_unmask_irq, .unmask = pxa_unmask_irq,
}; };
/* /*
...@@ -109,11 +109,11 @@ static void pxa_ack_low_gpio(unsigned int irq) ...@@ -109,11 +109,11 @@ static void pxa_ack_low_gpio(unsigned int irq)
} }
static struct irqchip pxa_low_gpio_chip = { static struct irqchip pxa_low_gpio_chip = {
ack: pxa_ack_low_gpio, .ack = pxa_ack_low_gpio,
mask: pxa_mask_irq, .mask = pxa_mask_irq,
unmask: pxa_unmask_irq, .unmask = pxa_unmask_irq,
rerun: pxa_manual_rerun, .rerun = pxa_manual_rerun,
type: pxa_gpio_irq_type, .type = pxa_gpio_irq_type,
}; };
/* /*
...@@ -201,11 +201,11 @@ static void pxa_unmask_muxed_gpio(unsigned int irq) ...@@ -201,11 +201,11 @@ static void pxa_unmask_muxed_gpio(unsigned int irq)
} }
static struct irqchip pxa_muxed_gpio_chip = { static struct irqchip pxa_muxed_gpio_chip = {
ack: pxa_ack_muxed_gpio, .ack = pxa_ack_muxed_gpio,
mask: pxa_mask_muxed_gpio, .mask = pxa_mask_muxed_gpio,
unmask: pxa_unmask_muxed_gpio, .unmask = pxa_unmask_muxed_gpio,
rerun: pxa_manual_rerun, .rerun = pxa_manual_rerun,
type: pxa_gpio_irq_type, .type = pxa_gpio_irq_type,
}; };
......
...@@ -54,9 +54,9 @@ static void lubbock_unmask_irq(unsigned int irq) ...@@ -54,9 +54,9 @@ static void lubbock_unmask_irq(unsigned int irq)
} }
static struct irqchip lubbock_irq_chip = { static struct irqchip lubbock_irq_chip = {
ack: lubbock_ack_irq, .ack = lubbock_ack_irq,
mask: lubbock_mask_irq, .mask = lubbock_mask_irq,
unmask: lubbock_unmask_irq, .unmask = lubbock_unmask_irq,
}; };
void lubbock_irq_handler(unsigned int irq, struct irqdesc *desc, void lubbock_irq_handler(unsigned int irq, struct irqdesc *desc,
...@@ -142,11 +142,20 @@ static void __init lubbock_map_io(void) ...@@ -142,11 +142,20 @@ static void __init lubbock_map_io(void)
/* This is for the SMC chip select */ /* This is for the SMC chip select */
pxa_gpio_mode(GPIO79_nCS_3_MD); pxa_gpio_mode(GPIO79_nCS_3_MD);
/* setup sleep mode values */
PWER = 0x00000002;
PFER = 0x00000000;
PRER = 0x00000002;
PGSR0 = 0x00008000;
PGSR1 = 0x003F0202;
PGSR2 = 0x0001C000;
PCFR |= PCFR_OPDE;
} }
MACHINE_START(LUBBOCK, "Intel DBPXA250 Development Platform") MACHINE_START(LUBBOCK, "Intel DBPXA250 Development Platform")
MAINTAINER("MontaVista Software Inc.") MAINTAINER("MontaVista Software Inc.")
BOOT_MEM(0xa0000000, 0x40000000, 0xfc000000) BOOT_MEM(0xa0000000, 0x40000000, io_p2v(0x40000000))
MAPIO(lubbock_map_io) MAPIO(lubbock_map_io)
INITIRQ(lubbock_init_irq) INITIRQ(lubbock_init_irq)
MACHINE_END MACHINE_END
/*
* PXA250/210 Power Management Routines
*
* Original code for the SA11x0:
* Copyright (c) 2001 Cliff Brake <cbrake@accelent.com>
*
* Modified for the PXA250 by Nicolas Pitre:
* Copyright (c) 2002 Monta Vista Software, Inc.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License.
*/
#include <linux/config.h>
#include <linux/init.h>
#include <linux/pm.h>
#include <linux/slab.h>
#include <linux/sched.h>
#include <linux/interrupt.h>
#include <linux/sysctl.h>
#include <linux/errno.h>
#include <asm/hardware.h>
#include <asm/memory.h>
#include <asm/system.h>
#include <asm/leds.h>
/*
* Debug macros
*/
#undef DEBUG
extern void pxa_cpu_suspend(void);
extern void pxa_cpu_resume(void);
#define SAVE(x) sleep_save[SLEEP_SAVE_##x] = x
#define RESTORE(x) x = sleep_save[SLEEP_SAVE_##x]
/*
* List of global PXA peripheral registers to preserve.
* More ones like CP and general purpose register values are preserved
* with the stack pointer in sleep.S.
*/
enum { SLEEP_SAVE_START = 0,
SLEEP_SAVE_OSCR, SLEEP_SAVE_OIER,
SLEEP_SAVE_OSMR0, SLEEP_SAVE_OSMR1, SLEEP_SAVE_OSMR2, SLEEP_SAVE_OSMR3,
SLEEP_SAVE_GPDR0, SLEEP_SAVE_GPDR1, SLEEP_SAVE_GPDR2,
SLEEP_SAVE_GRER0, SLEEP_SAVE_GRER1, SLEEP_SAVE_GRER2,
SLEEP_SAVE_GFER0, SLEEP_SAVE_GFER1, SLEEP_SAVE_GFER2,
SLEEP_SAVE_GAFR0_L, SLEEP_SAVE_GAFR1_L, SLEEP_SAVE_GAFR2_L,
SLEEP_SAVE_GAFR0_U, SLEEP_SAVE_GAFR1_U, SLEEP_SAVE_GAFR2_U,
SLEEP_SAVE_FFIER, SLEEP_SAVE_FFLCR, SLEEP_SAVE_FFMCR,
SLEEP_SAVE_FFSPR, SLEEP_SAVE_FFISR,
SLEEP_SAVE_FFDLL, SLEEP_SAVE_FFDLH,
SLEEP_SAVE_ICMR,
SLEEP_SAVE_CKEN,
SLEEP_SAVE_CKSUM,
SLEEP_SAVE_SIZE
};
int pm_do_suspend(void)
{
unsigned long sleep_save[SLEEP_SAVE_SIZE];
unsigned long checksum = 0;
int i;
cli();
clf();
leds_event(led_stop);
/* preserve current time */
RCNR = xtime.tv_sec;
/*
* Temporary solution. This won't be necessary once
* we move pxa support into the serial/* driver
* Save the FF UART
*/
SAVE(FFIER);
SAVE(FFLCR);
SAVE(FFMCR);
SAVE(FFSPR);
SAVE(FFISR);
FFLCR |= 0x80;
SAVE(FFDLL);
SAVE(FFDLH);
FFLCR &= 0xef;
/* save vital registers */
SAVE(OSCR);
SAVE(OSMR0);
SAVE(OSMR1);
SAVE(OSMR2);
SAVE(OSMR3);
SAVE(OIER);
SAVE(GPDR0); SAVE(GPDR1); SAVE(GPDR2);
SAVE(GRER0); SAVE(GRER1); SAVE(GRER2);
SAVE(GFER0); SAVE(GFER1); SAVE(GFER2);
SAVE(GAFR0_L); SAVE(GAFR0_U);
SAVE(GAFR1_L); SAVE(GAFR1_U);
SAVE(GAFR2_L); SAVE(GAFR2_U);
SAVE(ICMR);
ICMR = 0;
SAVE(CKEN);
CKEN = 0;
/* Note: wake up source are set up in each machine specific files */
/* clear GPIO transition detect bits */
GEDR0 = GEDR0; GEDR1 = GEDR1; GEDR2 = GEDR2;
/* Clear sleep reset status */
RCSR = RCSR_SMR;
/* set resume return address */
PSPR = virt_to_phys(pxa_cpu_resume);
/* before sleeping, calculate and save a checksum */
for (i = 0; i < SLEEP_SAVE_SIZE - 1; i++)
checksum += sleep_save[i];
sleep_save[SLEEP_SAVE_CKSUM] = checksum;
/* *** go zzz *** */
pxa_cpu_suspend();
/* after sleeping, validate the checksum */
checksum = 0;
for (i = 0; i < SLEEP_SAVE_SIZE - 1; i++)
checksum += sleep_save[i];
/* if invalid, display message and wait for a hardware reset */
if (checksum != sleep_save[SLEEP_SAVE_CKSUM]) {
#ifdef CONFIG_ARCH_LUBBOCK
LUB_HEXLED = 0xbadbadc5;
#endif
while (1);
}
/* ensure not to come back here if it wasn't intended */
PSPR = 0;
/* restore registers */
RESTORE(GPDR0); RESTORE(GPDR1); RESTORE(GPDR2);
RESTORE(GRER0); RESTORE(GRER1); RESTORE(GRER2);
RESTORE(GFER0); RESTORE(GFER1); RESTORE(GFER2);
RESTORE(GAFR0_L); RESTORE(GAFR0_U);
RESTORE(GAFR1_L); RESTORE(GAFR1_U);
RESTORE(GAFR2_L); RESTORE(GAFR2_U);
PSSR = PSSR_PH;
RESTORE(OSMR0);
RESTORE(OSMR1);
RESTORE(OSMR2);
RESTORE(OSMR3);
RESTORE(OSCR);
RESTORE(OIER);
RESTORE(CKEN);
ICLR = 0;
ICCR = 1;
RESTORE(ICMR);
/*
* Temporary solution. This won't be necessary once
* we move pxa support into the serial/* driver.
* Restore the FF UART.
*/
RESTORE(FFMCR);
RESTORE(FFSPR);
RESTORE(FFLCR);
FFLCR |= 0x80;
RESTORE(FFDLH);
RESTORE(FFDLL);
RESTORE(FFLCR);
RESTORE(FFISR);
FFFCR = 0x07;
RESTORE(FFIER);
/* restore current time */
xtime.tv_sec = RCNR;
#ifdef DEBUG
printk(KERN_DEBUG "*** made it back from resume\n");
#endif
leds_event(led_start);
sti();
return 0;
}
unsigned long sleep_phys_sp(void *sp)
{
return virt_to_phys(sp);
}
#ifdef CONFIG_SYSCTL
/*
* ARGH! ACPI people defined CTL_ACPI in linux/acpi.h rather than
* linux/sysctl.h.
*
* This means our interface here won't survive long - it needs a new
* interface. Quick hack to get this working - use sysctl id 9999.
*/
#warning ACPI broke the kernel, this interface needs to be fixed up.
#define CTL_ACPI 9999
#define ACPI_S1_SLP_TYP 19
/*
* Send us to sleep.
*/
static int sysctl_pm_do_suspend(void)
{
int retval;
retval = pm_send_all(PM_SUSPEND, (void *)3);
if (retval == 0) {
retval = pm_do_suspend();
pm_send_all(PM_RESUME, (void *)0);
}
return retval;
}
static struct ctl_table pm_table[] =
{
{ACPI_S1_SLP_TYP, "suspend", NULL, 0, 0600, NULL, (proc_handler *)&sysctl_pm_do_suspend},
{0}
};
static struct ctl_table pm_dir_table[] =
{
{CTL_ACPI, "pm", NULL, 0, 0555, pm_table},
{0}
};
/*
* Initialize power interface
*/
static int __init pm_init(void)
{
register_sysctl_table(pm_dir_table, 1);
return 0;
}
__initcall(pm_init);
#endif
/*
* Low-level PXA250/210 sleep/wakeUp support
*
* Initial SA1110 code:
* Copyright (c) 2001 Cliff Brake <cbrake@accelent.com>
*
* Adapted for PXA by Nicolas Pitre:
* Copyright (c) 2002 Monta Vista Software, Inc.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License.
*/
#include <linux/config.h>
#include <linux/linkage.h>
#include <asm/assembler.h>
#include <asm/hardware.h>
.text
/*
* pxa_cpu_suspend()
*
* Forces CPU into sleep state
*/
ENTRY(pxa_cpu_suspend)
mra r2, r3, acc0
stmfd sp!, {r2 - r12, lr} @ save registers on stack
@ get coprocessor registers
mrc p15, 0, r4, c15, c1, 0 @ CP access reg
mrc p15, 0, r5, c13, c0, 0 @ PID
mrc p15, 0, r6, c3, c0, 0 @ domain ID
mrc p15, 0, r7, c2, c0, 0 @ translation table base addr
mrc p15, 0, r8, c1, c1, 0 @ auxiliary control reg
mrc p15, 0, r9, c1, c0, 0 @ control reg
@ store them plus current virtual stack ptr on stack
mov r10, sp
stmfd sp!, {r4 - r10}
@ preserve phys address of stack
mov r0, sp
bl sleep_phys_sp
ldr r1, =sleep_save_sp
str r0, [r1]
@ clean data cache
bl cpu_xscale_cache_clean_invalidate_all
@ Put the processor to sleep
@ (also workaround for sighting 28071)
@ prepare value for sleep mode
mov r1, #3 @ sleep mode
@ prepare to put SDRAM into self-refresh manually
ldr r4, =MDREFR
ldr r5, [r4]
orr r5, r5, #MDREFR_SLFRSH
@ prepare pointer to physical address 0 (virtual mapping in generic.c)
mov r2, #UNCACHED_PHYS_0
@ align execution to a cache line
b 1f
.ltorg
.align 5
1:
@ All needed values are now in registers.
@ These last instructions should be in cache
@ put SDRAM into self-refresh
str r5, [r4]
@ force address lines low by reading at physical address 0
ldr r3, [r2]
@ enter sleep mode
mcr p14, 0, r1, c7, c0, 0
20: nop
b 20b @ loop waiting for sleep
/*
* cpu_pxa_resume()
*
* entry point from bootloader into kernel during resume
*
* Note: Yes, part of the following code is located into the .data section.
* This is to allow sleep_save_sp to be accessed with a relative load
* while we can't rely on any MMU translation. We could have put
* sleep_save_sp in the .text section as well, but some setups might
* insist on it to be truely read-only.
*/
.data
.align 5
ENTRY(pxa_cpu_resume)
mov r0, #I_BIT | F_BIT | MODE_SVC @ set SVC, irqs off
msr cpsr_c, r0
ldr r0, sleep_save_sp @ stack phys addr
ldr r2, =resume_after_mmu @ its absolute virtual address
ldmfd r0, {r4 - r9, sp} @ CP regs + virt stack ptr
mov r1, #0
mcr p15, 0, r1, c8, c7, 0 @ invalidate I & D TLBs
mcr p15, 0, r1, c7, c7, 0 @ invalidate I & D caches, BTB
#ifdef CONFIG_XSCALE_CACHE_ERRATA
bic r9, r9, #0x0004 @ see cpu_xscale_proc_init
#endif
mcr p15, 0, r4, c15, c1, 0 @ CP access reg
mcr p15, 0, r5, c13, c0, 0 @ PID
mcr p15, 0, r6, c3, c0, 0 @ domain ID
mcr p15, 0, r7, c2, c0, 0 @ translation table base addr
mcr p15, 0, r8, c1, c1, 0 @ auxiliary control reg
b resume_turn_on_mmu @ cache align execution
.align 5
resume_turn_on_mmu:
mcr p15, 0, r9, c1, c0, 0 @ turn on MMU, caches, etc.
@ Let us ensure we jump to resume_after_mmu only when the mcr above
@ actually took effect. They call it the "cpwait" operation.
mrc p15, 0, r1, c2, c0, 0 @ queue a dependency on CP15
sub pc, r2, r1, lsr #32 @ jump to virtual addr
nop
nop
nop
sleep_save_sp:
.word 0 @ preserve stack phys ptr here
.text
resume_after_mmu:
#ifdef CONFIG_XSCALE_CACHE_ERRATA
bl cpu_xscale_proc_init
#endif
ldmfd sp!, {r2, r3}
mar acc0, r2, r3
ldmfd sp!, {r4 - r12, pc} @ return to caller
...@@ -216,16 +216,16 @@ static int iomd_set_dma_speed(dmach_t channel, dma_t *dma, int cycle) ...@@ -216,16 +216,16 @@ static int iomd_set_dma_speed(dmach_t channel, dma_t *dma, int cycle)
} }
static struct dma_ops iomd_dma_ops = { static struct dma_ops iomd_dma_ops = {
type: "IOMD", .type = "IOMD",
request: iomd_request_dma, .request = iomd_request_dma,
free: iomd_free_dma, .free = iomd_free_dma,
enable: iomd_enable_dma, .enable = iomd_enable_dma,
disable: iomd_disable_dma, .disable = iomd_disable_dma,
setspeed: iomd_set_dma_speed, .setspeed = iomd_set_dma_speed,
}; };
static struct fiq_handler fh = { static struct fiq_handler fh = {
name: "floppydma" .name = "floppydma"
}; };
static void floppy_enable_dma(dmach_t channel, dma_t *dma) static void floppy_enable_dma(dmach_t channel, dma_t *dma)
...@@ -275,10 +275,10 @@ static int floppy_get_residue(dmach_t channel, dma_t *dma) ...@@ -275,10 +275,10 @@ static int floppy_get_residue(dmach_t channel, dma_t *dma)
} }
static struct dma_ops floppy_dma_ops = { static struct dma_ops floppy_dma_ops = {
type: "FIQDMA", .type = "FIQDMA",
enable: floppy_enable_dma, .enable = floppy_enable_dma,
disable: floppy_disable_dma, .disable = floppy_disable_dma,
residue: floppy_get_residue, .residue = floppy_get_residue,
}; };
/* /*
...@@ -289,9 +289,9 @@ static void sound_enable_disable_dma(dmach_t channel, dma_t *dma) ...@@ -289,9 +289,9 @@ static void sound_enable_disable_dma(dmach_t channel, dma_t *dma)
} }
static struct dma_ops sound_dma_ops = { static struct dma_ops sound_dma_ops = {
type: "VIRTUAL", .type = "VIRTUAL",
enable: sound_enable_disable_dma, .enable = sound_enable_disable_dma,
disable: sound_enable_disable_dma, .disable = sound_enable_disable_dma,
}; };
void __init arch_dma_init(dma_t *dma) void __init arch_dma_init(dma_t *dma)
......
...@@ -34,9 +34,9 @@ static void iomd_unmask_irq_a(unsigned int irq) ...@@ -34,9 +34,9 @@ static void iomd_unmask_irq_a(unsigned int irq)
} }
static struct irqchip iomd_a_chip = { static struct irqchip iomd_a_chip = {
ack: iomd_ack_irq_a, .ack = iomd_ack_irq_a,
mask: iomd_mask_irq_a, .mask = iomd_mask_irq_a,
unmask: iomd_unmask_irq_a, .unmask = iomd_unmask_irq_a,
}; };
static void iomd_mask_irq_b(unsigned int irq) static void iomd_mask_irq_b(unsigned int irq)
...@@ -58,9 +58,9 @@ static void iomd_unmask_irq_b(unsigned int irq) ...@@ -58,9 +58,9 @@ static void iomd_unmask_irq_b(unsigned int irq)
} }
static struct irqchip iomd_b_chip = { static struct irqchip iomd_b_chip = {
ack: iomd_mask_irq_b, .ack = iomd_mask_irq_b,
mask: iomd_mask_irq_b, .mask = iomd_mask_irq_b,
unmask: iomd_unmask_irq_b, .unmask = iomd_unmask_irq_b,
}; };
static void iomd_mask_irq_dma(unsigned int irq) static void iomd_mask_irq_dma(unsigned int irq)
...@@ -82,9 +82,9 @@ static void iomd_unmask_irq_dma(unsigned int irq) ...@@ -82,9 +82,9 @@ static void iomd_unmask_irq_dma(unsigned int irq)
} }
static struct irqchip iomd_dma_chip = { static struct irqchip iomd_dma_chip = {
ack: iomd_mask_irq_dma, .ack = iomd_mask_irq_dma,
mask: iomd_mask_irq_dma, .mask = iomd_mask_irq_dma,
unmask: iomd_unmask_irq_dma, .unmask = iomd_unmask_irq_dma,
}; };
static void iomd_mask_irq_fiq(unsigned int irq) static void iomd_mask_irq_fiq(unsigned int irq)
...@@ -106,9 +106,9 @@ static void iomd_unmask_irq_fiq(unsigned int irq) ...@@ -106,9 +106,9 @@ static void iomd_unmask_irq_fiq(unsigned int irq)
} }
static struct irqchip iomd_fiq_chip = { static struct irqchip iomd_fiq_chip = {
ack: iomd_mask_irq_fiq, .ack = iomd_mask_irq_fiq,
mask: iomd_mask_irq_fiq, .mask = iomd_mask_irq_fiq,
unmask: iomd_unmask_irq_fiq, .unmask = iomd_unmask_irq_fiq,
}; };
void __init rpc_init_irq(void) void __init rpc_init_irq(void)
......
...@@ -100,7 +100,7 @@ static int adsbitsy_uart_open(struct uart_port *port, struct uart_info *info) ...@@ -100,7 +100,7 @@ static int adsbitsy_uart_open(struct uart_port *port, struct uart_info *info)
} }
static struct sa1100_port_fns adsbitsy_port_fns __initdata = { static struct sa1100_port_fns adsbitsy_port_fns __initdata = {
open: adsbitsy_uart_open, .open = adsbitsy_uart_open,
}; };
static void __init adsbitsy_map_io(void) static void __init adsbitsy_map_io(void)
......
...@@ -254,9 +254,9 @@ static u_int assabet_get_mctrl(struct uart_port *port) ...@@ -254,9 +254,9 @@ static u_int assabet_get_mctrl(struct uart_port *port)
} }
static struct sa1100_port_fns assabet_port_fns __initdata = { static struct sa1100_port_fns assabet_port_fns __initdata = {
set_mctrl: assabet_set_mctrl, .set_mctrl = assabet_set_mctrl,
get_mctrl: assabet_get_mctrl, .get_mctrl = assabet_get_mctrl,
pm: assabet_uart_pm, .pm = assabet_uart_pm,
}; };
static struct map_desc assabet_io_desc[] __initdata = { static struct map_desc assabet_io_desc[] __initdata = {
......
...@@ -216,7 +216,7 @@ static int sa1100_dram_notifier(struct notifier_block *nb, ...@@ -216,7 +216,7 @@ static int sa1100_dram_notifier(struct notifier_block *nb,
static struct notifier_block sa1100_dram_block = { static struct notifier_block sa1100_dram_block = {
notifier_call: sa1100_dram_notifier, .notifier_call = sa1100_dram_notifier,
}; };
......
...@@ -51,53 +51,53 @@ struct sdram_info { ...@@ -51,53 +51,53 @@ struct sdram_info {
}; };
static struct sdram_params tc59sm716_cl2_params __initdata = { static struct sdram_params tc59sm716_cl2_params __initdata = {
rows: 12, .rows = 12,
tck: 10, .tck = 10,
trcd: 20, .trcd = 20,
trp: 20, .trp = 20,
twr: 10, .twr = 10,
refresh: 64000, .refresh = 64000,
cas_latency: 2, .cas_latency = 2,
}; };
static struct sdram_params tc59sm716_cl3_params __initdata = { static struct sdram_params tc59sm716_cl3_params __initdata = {
rows: 12, .rows = 12,
tck: 8, .tck = 8,
trcd: 20, .trcd = 20,
trp: 20, .trp = 20,
twr: 8, .twr = 8,
refresh: 64000, .refresh = 64000,
cas_latency: 3, .cas_latency = 3,
}; };
static struct sdram_params samsung_k4s641632d_tc75 __initdata = { static struct sdram_params samsung_k4s641632d_tc75 __initdata = {
rows: 14, .rows = 14,
tck: 9, .tck = 9,
trcd: 27, .trcd = 27,
trp: 20, .trp = 20,
twr: 9, .twr = 9,
refresh: 64000, .refresh = 64000,
cas_latency: 3, .cas_latency = 3,
}; };
static struct sdram_params samsung_km416s4030ct __initdata = { static struct sdram_params samsung_km416s4030ct __initdata = {
rows: 13, .rows = 13,
tck: 8, .tck = 8,
trcd: 24, /* 3 CLKs */ .trcd = 24, /* 3 CLKs */
trp: 24, /* 3 CLKs */ .trp = 24, /* 3 CLKs */
twr: 16, /* Trdl: 2 CLKs */ .twr = 16, /* Trdl: 2 CLKs */
refresh: 64000, .refresh = 64000,
cas_latency: 3, .cas_latency = 3,
}; };
static struct sdram_params wbond_w982516ah75l_cl3_params __initdata = { static struct sdram_params wbond_w982516ah75l_cl3_params __initdata = {
rows: 16, .rows = 16,
tck: 8, .tck = 8,
trcd: 20, .trcd = 20,
trp: 20, .trp = 20,
twr: 8, .twr = 8,
refresh: 64000, .refresh = 64000,
cas_latency: 3, .cas_latency = 3,
}; };
static struct sdram_params sdram_params; static struct sdram_params sdram_params;
......
...@@ -84,7 +84,7 @@ unsigned int sa11x0_getspeed(void) ...@@ -84,7 +84,7 @@ unsigned int sa11x0_getspeed(void)
/* /*
* We still need to provide this so building without cpufreq works. * We still need to provide this so building without cpufreq works.
*/ */
unsigned int cpufreq_get(int cpu) unsigned int cpufreq_get(unsigned int cpu)
{ {
return cclk_frequency_100khz[PPCR & 0xf] * 100; return cclk_frequency_100khz[PPCR & 0xf] * 100;
} }
......
...@@ -67,9 +67,9 @@ static void gc_unmask_irq1(unsigned int irq) ...@@ -67,9 +67,9 @@ static void gc_unmask_irq1(unsigned int irq)
} }
static struct irqchip gc_irq1_chip = { static struct irqchip gc_irq1_chip = {
ack: gc_mask_irq1, .ack = gc_mask_irq1,
mask: gc_mask_irq1, .mask = gc_mask_irq1,
unmask: gc_unmask_irq1, .unmask = gc_unmask_irq1,
}; };
static void gc_mask_irq2(unsigned int irq) static void gc_mask_irq2(unsigned int irq)
...@@ -85,9 +85,9 @@ static void gc_unmask_irq2(unsigned int irq) ...@@ -85,9 +85,9 @@ static void gc_unmask_irq2(unsigned int irq)
} }
static struct irqchip gc_irq2_chip = { static struct irqchip gc_irq2_chip = {
ack: gc_mask_irq2, .ack = gc_mask_irq2,
mask: gc_mask_irq2, .mask = gc_mask_irq2,
unmask: gc_unmask_irq2, .unmask = gc_unmask_irq2,
}; };
static void __init graphicsclient_init_irq(void) static void __init graphicsclient_init_irq(void)
...@@ -178,9 +178,9 @@ graphicsclient_uart_pm(struct uart_port *port, u_int state, u_int oldstate) ...@@ -178,9 +178,9 @@ graphicsclient_uart_pm(struct uart_port *port, u_int state, u_int oldstate)
} }
static struct sa1100_port_fns graphicsclient_port_fns __initdata = { static struct sa1100_port_fns graphicsclient_port_fns __initdata = {
get_mctrl: graphicsclient_get_mctrl, .get_mctrl = graphicsclient_get_mctrl,
set_mctrl: graphicsclient_set_mctrl, .set_mctrl = graphicsclient_set_mctrl,
pm: graphicsclient_uart_pm, .pm = graphicsclient_uart_pm,
}; };
static void __init graphicsclient_map_io(void) static void __init graphicsclient_map_io(void)
......
...@@ -100,9 +100,9 @@ static void gm_unmask_irq1(unsigned int irq) ...@@ -100,9 +100,9 @@ static void gm_unmask_irq1(unsigned int irq)
} }
static struct irqchip gm_irq1_chip = { static struct irqchip gm_irq1_chip = {
ack: gm_mask_irq1, .ack = gm_mask_irq1,
mask: gm_mask_irq1, .mask = gm_mask_irq1,
unmask: gm_unmask_irq1, .unmask = gm_unmask_irq1,
}; };
static void gm_mask_irq2(unsigned int irq) static void gm_mask_irq2(unsigned int irq)
...@@ -118,9 +118,9 @@ static void gm_unmask_irq2(unsigned int irq) ...@@ -118,9 +118,9 @@ static void gm_unmask_irq2(unsigned int irq)
} }
static struct irqchip gm_irq2_chip = { static struct irqchip gm_irq2_chip = {
ack: gm_mask_irq2, .ack = gm_mask_irq2,
mask: gm_mask_irq2, .mask = gm_mask_irq2,
unmask: gm_unmask_irq2, .unmask = gm_unmask_irq2,
}; };
static void __init graphicsmaster_init_irq(void) static void __init graphicsmaster_init_irq(void)
...@@ -236,9 +236,9 @@ graphicsmaster_uart_pm(struct uart_port *port, u_int state, u_int oldstate) ...@@ -236,9 +236,9 @@ graphicsmaster_uart_pm(struct uart_port *port, u_int state, u_int oldstate)
} }
static struct sa1100_port_fns graphicsmaster_port_fns __initdata = { static struct sa1100_port_fns graphicsmaster_port_fns __initdata = {
get_mctrl: graphicsmaster_get_mctrl, .get_mctrl = graphicsmaster_get_mctrl,
set_mctrl: graphicsmaster_set_mctrl, .set_mctrl = graphicsmaster_set_mctrl,
pm: graphicsmaster_uart_pm, .pm = graphicsmaster_uart_pm,
}; };
static void __init graphicsmaster_map_io(void) static void __init graphicsmaster_map_io(void)
......
...@@ -428,10 +428,10 @@ static int h3600_uart_set_wake(struct uart_port *port, u_int enable) ...@@ -428,10 +428,10 @@ static int h3600_uart_set_wake(struct uart_port *port, u_int enable)
} }
static struct sa1100_port_fns h3600_port_fns __initdata = { static struct sa1100_port_fns h3600_port_fns __initdata = {
set_mctrl: h3600_uart_set_mctrl, .set_mctrl = h3600_uart_set_mctrl,
get_mctrl: h3600_uart_get_mctrl, .get_mctrl = h3600_uart_get_mctrl,
pm: h3600_uart_pm, .pm = h3600_uart_pm,
set_wake: h3600_uart_set_wake, .set_wake = h3600_uart_set_wake,
}; };
static struct map_desc h3600_io_desc[] __initdata = { static struct map_desc h3600_io_desc[] __initdata = {
......
...@@ -95,11 +95,11 @@ static void sa1100_low_gpio_unmask(unsigned int irq) ...@@ -95,11 +95,11 @@ static void sa1100_low_gpio_unmask(unsigned int irq)
} }
static struct irqchip sa1100_low_gpio_chip = { static struct irqchip sa1100_low_gpio_chip = {
ack: sa1100_low_gpio_ack, .ack = sa1100_low_gpio_ack,
mask: sa1100_low_gpio_mask, .mask = sa1100_low_gpio_mask,
unmask: sa1100_low_gpio_unmask, .unmask = sa1100_low_gpio_unmask,
rerun: sa1100_manual_rerun, .rerun = sa1100_manual_rerun,
type: sa1100_gpio_type, .type = sa1100_gpio_type,
}; };
/* /*
...@@ -169,11 +169,11 @@ static void sa1100_high_gpio_unmask(unsigned int irq) ...@@ -169,11 +169,11 @@ static void sa1100_high_gpio_unmask(unsigned int irq)
} }
static struct irqchip sa1100_high_gpio_chip = { static struct irqchip sa1100_high_gpio_chip = {
ack: sa1100_high_gpio_ack, .ack = sa1100_high_gpio_ack,
mask: sa1100_high_gpio_mask, .mask = sa1100_high_gpio_mask,
unmask: sa1100_high_gpio_unmask, .unmask = sa1100_high_gpio_unmask,
rerun: sa1100_manual_rerun, .rerun = sa1100_manual_rerun,
type: sa1100_gpio_type, .type = sa1100_gpio_type,
}; };
/* /*
...@@ -191,16 +191,16 @@ static void sa1100_unmask_irq(unsigned int irq) ...@@ -191,16 +191,16 @@ static void sa1100_unmask_irq(unsigned int irq)
} }
static struct irqchip sa1100_normal_chip = { static struct irqchip sa1100_normal_chip = {
ack: sa1100_mask_irq, .ack = sa1100_mask_irq,
mask: sa1100_mask_irq, .mask = sa1100_mask_irq,
unmask: sa1100_unmask_irq, .unmask = sa1100_unmask_irq,
/* rerun should never be called */ /* rerun should never be called */
}; };
static struct resource irq_resource = { static struct resource irq_resource = {
name: "irqs", .name = "irqs",
start: 0x90050000, .start = 0x90050000,
end: 0x9005ffff, .end = 0x9005ffff,
}; };
void __init sa1100_init_irq(void) void __init sa1100_init_irq(void)
......
...@@ -26,8 +26,8 @@ ...@@ -26,8 +26,8 @@
#include "sa1111.h" #include "sa1111.h"
static struct device neponset_device = { static struct device neponset_device = {
name: "Neponset", .name = "Neponset",
bus_id: "nep_bus", .bus_id = "nep_bus",
}; };
/* /*
...@@ -159,8 +159,8 @@ static u_int neponset_get_mctrl(struct uart_port *port) ...@@ -159,8 +159,8 @@ static u_int neponset_get_mctrl(struct uart_port *port)
} }
static struct sa1100_port_fns neponset_port_fns __initdata = { static struct sa1100_port_fns neponset_port_fns __initdata = {
set_mctrl: neponset_set_mctrl, .set_mctrl = neponset_set_mctrl,
get_mctrl: neponset_get_mctrl, .get_mctrl = neponset_get_mctrl,
}; };
static int __init neponset_init(void) static int __init neponset_init(void)
......
...@@ -133,11 +133,11 @@ static int sa1111_type_lowirq(unsigned int irq, unsigned int flags) ...@@ -133,11 +133,11 @@ static int sa1111_type_lowirq(unsigned int irq, unsigned int flags)
} }
static struct irqchip sa1111_low_chip = { static struct irqchip sa1111_low_chip = {
ack: sa1111_ack_lowirq, .ack = sa1111_ack_lowirq,
mask: sa1111_mask_lowirq, .mask = sa1111_mask_lowirq,
unmask: sa1111_unmask_lowirq, .unmask = sa1111_unmask_lowirq,
rerun: sa1111_rerun_lowirq, .rerun = sa1111_rerun_lowirq,
type: sa1111_type_lowirq, .type = sa1111_type_lowirq,
}; };
static void sa1111_ack_highirq(unsigned int irq) static void sa1111_ack_highirq(unsigned int irq)
...@@ -198,11 +198,11 @@ static int sa1111_type_highirq(unsigned int irq, unsigned int flags) ...@@ -198,11 +198,11 @@ static int sa1111_type_highirq(unsigned int irq, unsigned int flags)
} }
static struct irqchip sa1111_high_chip = { static struct irqchip sa1111_high_chip = {
ack: sa1111_ack_highirq, .ack = sa1111_ack_highirq,
mask: sa1111_mask_highirq, .mask = sa1111_mask_highirq,
unmask: sa1111_unmask_highirq, .unmask = sa1111_unmask_highirq,
rerun: sa1111_rerun_highirq, .rerun = sa1111_rerun_highirq,
type: sa1111_type_highirq, .type = sa1111_type_highirq,
}; };
static void __init sa1111_init_irq(int irq_nr) static void __init sa1111_init_irq(int irq_nr)
...@@ -257,8 +257,8 @@ static int sa1111_resume(struct device *dev, u32 level) ...@@ -257,8 +257,8 @@ static int sa1111_resume(struct device *dev, u32 level)
} }
static struct device_driver sa1111_device_driver = { static struct device_driver sa1111_device_driver = {
suspend: sa1111_suspend, .suspend = sa1111_suspend,
resume: sa1111_resume, .resume = sa1111_resume,
}; };
/** /**
......
...@@ -57,7 +57,7 @@ static void simpad_uart_pm(struct uart_port *port, u_int state, u_int oldstate) ...@@ -57,7 +57,7 @@ static void simpad_uart_pm(struct uart_port *port, u_int state, u_int oldstate)
} }
static struct sa1100_port_fns simpad_port_fns __initdata = { static struct sa1100_port_fns simpad_port_fns __initdata = {
pm: simpad_uart_pm, .pm = simpad_uart_pm,
}; };
static void __init simpad_map_io(void) static void __init simpad_map_io(void)
......
...@@ -100,13 +100,13 @@ static struct map_desc system3_io_desc[] __initdata = { ...@@ -100,13 +100,13 @@ static struct map_desc system3_io_desc[] __initdata = {
}; };
static struct sa1100_port_fns system3_port_fns __initdata = { static struct sa1100_port_fns system3_port_fns __initdata = {
set_mctrl: system3_set_mctrl, .set_mctrl = system3_set_mctrl,
get_mctrl: system3_get_mctrl, .get_mctrl = system3_get_mctrl,
pm: system3_uart_pm, .pm = system3_uart_pm,
}; };
static struct notifier_block system3_clkchg_block = { static struct notifier_block system3_clkchg_block = {
notifier_call: sdram_notifier, .notifier_call = sdram_notifier,
}; };
/********************************************************************** /**********************************************************************
......
...@@ -69,9 +69,9 @@ static void bogus_int(int irq, void *dev_id, struct pt_regs *regs) ...@@ -69,9 +69,9 @@ static void bogus_int(int irq, void *dev_id, struct pt_regs *regs)
static struct irqaction cascade; static struct irqaction cascade;
static struct irqchip fb_chip = { static struct irqchip fb_chip = {
ack: shark_ack_8259A_irq, .ack = shark_ack_8259A_irq,
mask: shark_disable_8259A_irq, .mask = shark_disable_8259A_irq,
unmask: shark_enable_8259A_irq, .unmask = shark_enable_8259A_irq,
}; };
void __init shark_init_irq(void) void __init shark_init_irq(void)
......
...@@ -24,12 +24,12 @@ static int __init shark_map_irq(struct pci_dev *dev, u8 slot, u8 pin) ...@@ -24,12 +24,12 @@ static int __init shark_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
extern void __init via82c505_preinit(void *sysdata); extern void __init via82c505_preinit(void *sysdata);
static struct hw_pci shark_pci __initdata = { static struct hw_pci shark_pci __initdata = {
setup: via82c505_setup, .setup = via82c505_setup,
swizzle: pci_std_swizzle, .swizzle = pci_std_swizzle,
map_irq: shark_map_irq, .map_irq = shark_map_irq,
nr_controllers: 1, .nr_controllers = 1,
scan: via82c505_scan_bus, .scan = via82c505_scan_bus,
preinit: via82c505_preinit .preinit = via82c505_preinit
}; };
static int __init shark_pci_init(void) static int __init shark_pci_init(void)
......
...@@ -6,3 +6,5 @@ void show_pte(struct mm_struct *mm, unsigned long addr); ...@@ -6,3 +6,5 @@ void show_pte(struct mm_struct *mm, unsigned long addr);
int do_page_fault(unsigned long addr, unsigned int fsr, struct pt_regs *regs); int do_page_fault(unsigned long addr, unsigned int fsr, struct pt_regs *regs);
int do_translation_fault(unsigned long addr, unsigned int fsr, struct pt_regs *regs); int do_translation_fault(unsigned long addr, unsigned int fsr, struct pt_regs *regs);
unsigned long search_exception_table(unsigned long addr);
...@@ -156,7 +156,7 @@ ENTRY(cpu_xscale_reset) ...@@ -156,7 +156,7 @@ ENTRY(cpu_xscale_reset)
msr cpsr_c, r1 @ reset CPSR msr cpsr_c, r1 @ reset CPSR
mrc p15, 0, r1, c1, c0, 0 @ ctrl register mrc p15, 0, r1, c1, c0, 0 @ ctrl register
bic r1, r1, #0x0086 @ ........B....CA. bic r1, r1, #0x0086 @ ........B....CA.
bic r1, r1, #0x1900 @ ...IZ..S........ bic r1, r1, #0x3900 @ ..VIZ..S........
mcr p15, 0, r1, c1, c0, 0 @ ctrl register mcr p15, 0, r1, c1, c0, 0 @ ctrl register
mcr p15, 0, ip, c7, c7, 0 @ invalidate I,D caches & BTB mcr p15, 0, ip, c7, c7, 0 @ invalidate I,D caches & BTB
bic r1, r1, #0x0001 @ ...............M bic r1, r1, #0x0001 @ ...............M
......
...@@ -379,21 +379,21 @@ static void do_fd_request(request_queue_t *); ...@@ -379,21 +379,21 @@ static void do_fd_request(request_queue_t *);
/************************* End of Prototypes **************************/ /************************* End of Prototypes **************************/
static struct timer_list motor_off_timer = { static struct timer_list motor_off_timer = {
function: fd_motor_off_timer, .function = fd_motor_off_timer,
}; };
#ifdef TRACKBUFFER #ifdef TRACKBUFFER
static struct timer_list readtrack_timer = { static struct timer_list readtrack_timer = {
function: fd_readtrack_check, .function = fd_readtrack_check,
}; };
#endif #endif
static struct timer_list timeout_timer = { static struct timer_list timeout_timer = {
function: fd_times_out, .function = fd_times_out,
}; };
static struct timer_list fd_timer = { static struct timer_list fd_timer = {
function: check_change, .function = check_change,
}; };
/* DAG: Haven't got a clue what this is? */ /* DAG: Haven't got a clue what this is? */
...@@ -1548,11 +1548,11 @@ static int floppy_release(struct inode *inode, struct file *filp) ...@@ -1548,11 +1548,11 @@ static int floppy_release(struct inode *inode, struct file *filp)
static struct block_device_operations floppy_fops = static struct block_device_operations floppy_fops =
{ {
open: floppy_open, .open = floppy_open,
release: floppy_release, .release = floppy_release,
ioctl: fd_ioctl, .ioctl = fd_ioctl,
check_media_change: check_floppy_change, .check_media_change = check_floppy_change,
revalidate: floppy_revalidate, .revalidate = floppy_revalidate,
}; };
......
...@@ -1255,25 +1255,25 @@ void xd_set_geometry(struct block_device *bdev, unsigned char secsptrack, ...@@ -1255,25 +1255,25 @@ void xd_set_geometry(struct block_device *bdev, unsigned char secsptrack,
static struct gendisk mfm_gendisk[2] = { static struct gendisk mfm_gendisk[2] = {
{ {
major: MAJOR_NR, .major = MAJOR_NR,
first_minor: 0, .first_minor = 0,
major_name: "mfm", .major_name = "mfm",
minor_shift: 6, .minor_shift = 6,
part: mfm, .part = mfm,
}, },
{ {
major: MAJOR_NR, .major = MAJOR_NR,
first_minor: 64, .first_minor = 64,
major_name: "mfm", .major_name = "mfm",
minor_shift: 6, .minor_shift = 6,
part: mfm + 64, .part = mfm + 64,
}; };
static struct block_device_operations mfm_fops = static struct block_device_operations mfm_fops =
{ {
owner: THIS_MODULE, .owner = THIS_MODULE,
open: mfm_open, .open = mfm_open,
ioctl: mfm_ioctl, .ioctl = mfm_ioctl,
}; };
static void mfm_geninit (void) static void mfm_geninit (void)
......
...@@ -200,13 +200,13 @@ static int rtc_ioctl(struct inode *inode, struct file *file, ...@@ -200,13 +200,13 @@ static int rtc_ioctl(struct inode *inode, struct file *file,
} }
static struct file_operations rtc_fops = { static struct file_operations rtc_fops = {
ioctl: rtc_ioctl, .ioctl = rtc_ioctl,
}; };
static struct miscdevice rtc_dev = { static struct miscdevice rtc_dev = {
minor: RTC_MINOR, .minor = RTC_MINOR,
name: "rtc", .name = "rtc",
fops: &rtc_fops, .fops = &rtc_fops,
}; };
/* IOC / IOMD i2c driver */ /* IOC / IOMD i2c driver */
...@@ -264,13 +264,13 @@ static int ioc_getsda(void *data) ...@@ -264,13 +264,13 @@ static int ioc_getsda(void *data)
} }
static struct i2c_algo_bit_data ioc_data = { static struct i2c_algo_bit_data ioc_data = {
setsda: ioc_setsda, .setsda = ioc_setsda,
setscl: ioc_setscl, .setscl = ioc_setscl,
getsda: ioc_getsda, .getsda = ioc_getsda,
getscl: ioc_getscl, .getscl = ioc_getscl,
udelay: 80, .udelay = 80,
mdelay: 80, .mdelay = 80,
timeout: 100 .timeout = 100
}; };
static int ioc_client_reg(struct i2c_client *client) static int ioc_client_reg(struct i2c_client *client)
...@@ -303,11 +303,11 @@ static int ioc_client_unreg(struct i2c_client *client) ...@@ -303,11 +303,11 @@ static int ioc_client_unreg(struct i2c_client *client)
} }
static struct i2c_adapter ioc_ops = { static struct i2c_adapter ioc_ops = {
name: "IOC/IOMD", .name = "IOC/IOMD",
id: I2C_HW_B_IOC, .id = I2C_HW_B_IOC,
algo_data: &ioc_data, .algo_data = &ioc_data,
client_register: ioc_client_reg, .client_register = ioc_client_reg,
client_unregister: ioc_client_unreg .client_unregister = ioc_client_unreg
}; };
static int __init i2c_ioc_init(void) static int __init i2c_ioc_init(void)
......
...@@ -250,12 +250,12 @@ static unsigned int aux_poll(struct file *file, poll_table * wait) ...@@ -250,12 +250,12 @@ static unsigned int aux_poll(struct file *file, poll_table * wait)
} }
struct file_operations psaux_fops = { struct file_operations psaux_fops = {
read: read_aux, .read = read_aux,
write: write_aux, .write = write_aux,
poll: aux_poll, .poll = aux_poll,
open: open_aux, .open = open_aux,
release: release_aux, .release = release_aux,
fasync: fasync_aux, .fasync = fasync_aux,
}; };
/* /*
......
...@@ -23,13 +23,13 @@ static unsigned short ignore[] = { I2C_CLIENT_END }; ...@@ -23,13 +23,13 @@ static unsigned short ignore[] = { I2C_CLIENT_END };
static unsigned short normal_addr[] = { 0x50, I2C_CLIENT_END }; static unsigned short normal_addr[] = { 0x50, I2C_CLIENT_END };
static struct i2c_client_address_data addr_data = { static struct i2c_client_address_data addr_data = {
normal_i2c: normal_addr, .normal_i2c = normal_addr,
normal_i2c_range: ignore, .normal_i2c_range = ignore,
probe: ignore, .probe = ignore,
probe_range: ignore, .probe_range = ignore,
ignore: ignore, .ignore = ignore,
ignore_range: ignore, .ignore_range = ignore,
force: ignore, .force = ignore,
}; };
#define DAT(x) ((unsigned int)(x->data)) #define DAT(x) ((unsigned int)(x->data))
...@@ -224,12 +224,12 @@ pcf8583_command(struct i2c_client *client, unsigned int cmd, void *arg) ...@@ -224,12 +224,12 @@ pcf8583_command(struct i2c_client *client, unsigned int cmd, void *arg)
} }
static struct i2c_driver pcf8583_driver = { static struct i2c_driver pcf8583_driver = {
name: "PCF8583", .name = "PCF8583",
id: I2C_DRIVERID_PCF8583, .id = I2C_DRIVERID_PCF8583,
flags: I2C_DF_NOTIFY, .flags = I2C_DF_NOTIFY,
attach_adapter: pcf8583_probe, .attach_adapter = pcf8583_probe,
detach_client: pcf8583_detach, .detach_client = pcf8583_detach,
command: pcf8583_command .command = pcf8583_command
}; };
static __init int pcf8583_init(void) static __init int pcf8583_init(void)
......
...@@ -141,8 +141,8 @@ static void etherh_irq_disable(ecard_t *ec, int irqnr) ...@@ -141,8 +141,8 @@ static void etherh_irq_disable(ecard_t *ec, int irqnr)
} }
static expansioncard_ops_t etherh_ops = { static expansioncard_ops_t etherh_ops = {
irqenable: etherh_irq_enable, .irqenable = etherh_irq_enable,
irqdisable: etherh_irq_disable, .irqdisable = etherh_irq_disable,
}; };
......
...@@ -3120,22 +3120,22 @@ int acornscsi_proc_info(char *buffer, char **start, off_t offset, ...@@ -3120,22 +3120,22 @@ int acornscsi_proc_info(char *buffer, char **start, off_t offset,
} }
static Scsi_Host_Template acornscsi_template = { static Scsi_Host_Template acornscsi_template = {
module: THIS_MODULE, .module = THIS_MODULE,
proc_info: acornscsi_proc_info, .proc_info = acornscsi_proc_info,
name: "AcornSCSI", .name = "AcornSCSI",
detect: acornscsi_detect, .detect = acornscsi_detect,
release: acornscsi_release, .release = acornscsi_release,
info: acornscsi_info, .info = acornscsi_info,
queuecommand: acornscsi_queuecmd, .queuecommand = acornscsi_queuecmd,
abort: acornscsi_abort, .abort = acornscsi_abort,
reset: acornscsi_reset, .reset = acornscsi_reset,
bios_param: scsicam_bios_param, .bios_param = scsicam_bios_param,
can_queue: 16, .can_queue = 16,
this_id: 7, .this_id = 7,
sg_tablesize: SG_ALL, .sg_tablesize = SG_ALL,
cmd_per_lun: 2, .cmd_per_lun = 2,
unchecked_isa_dma: 0, .unchecked_isa_dma = 0,
use_clustering: DISABLE_CLUSTERING .use_clustering = DISABLE_CLUSTERING
}; };
static int __init acornscsi_init(void) static int __init acornscsi_init(void)
......
...@@ -389,21 +389,21 @@ static void cumanascsi_write(struct Scsi_Host *instance, int reg, int value) ...@@ -389,21 +389,21 @@ static void cumanascsi_write(struct Scsi_Host *instance, int reg, int value)
#include "../../scsi/NCR5380.c" #include "../../scsi/NCR5380.c"
static Scsi_Host_Template cumanascsi_template = { static Scsi_Host_Template cumanascsi_template = {
module: THIS_MODULE, .module = THIS_MODULE,
name: "Cumana 16-bit SCSI", .name = "Cumana 16-bit SCSI",
detect: cumanascsi_detect, .detect = cumanascsi_detect,
release: cumanascsi_release, .release = cumanascsi_release,
info: cumanascsi_info, .info = cumanascsi_info,
queuecommand: cumanascsi_queue_command, .queuecommand = cumanascsi_queue_command,
abort: cumanascsi_abort, .abort = cumanascsi_abort,
reset: cumanascsi_reset, .reset = cumanascsi_reset,
bios_param: scsicam_bios_param, .bios_param = scsicam_bios_param,
can_queue: 16, .can_queue = 16,
this_id: 7, .this_id = 7,
sg_tablesize: SG_ALL, .sg_tablesize = SG_ALL,
cmd_per_lun: 2, .cmd_per_lun = 2,
unchecked_isa_dma: 0, .unchecked_isa_dma = 0,
use_clustering: DISABLE_CLUSTERING .use_clustering = DISABLE_CLUSTERING
}; };
static int __init cumanascsi_init(void) static int __init cumanascsi_init(void)
......
...@@ -557,24 +557,24 @@ int cumanascsi_2_proc_info (char *buffer, char **start, off_t offset, ...@@ -557,24 +557,24 @@ int cumanascsi_2_proc_info (char *buffer, char **start, off_t offset,
} }
static Scsi_Host_Template cumanascsi2_template = { static Scsi_Host_Template cumanascsi2_template = {
module: THIS_MODULE, .module = THIS_MODULE,
proc_info: cumanascsi_2_proc_info, .proc_info = cumanascsi_2_proc_info,
name: "Cumana SCSI II", .name = "Cumana SCSI II",
detect: cumanascsi_2_detect, .detect = cumanascsi_2_detect,
release: cumanascsi_2_release, .release = cumanascsi_2_release,
info: cumanascsi_2_info, .info = cumanascsi_2_info,
bios_param: scsicam_bios_param, .bios_param = scsicam_bios_param,
can_queue: 1, .can_queue = 1,
this_id: 7, .this_id = 7,
sg_tablesize: SG_ALL, .sg_tablesize = SG_ALL,
cmd_per_lun: 1, .cmd_per_lun = 1,
use_clustering: DISABLE_CLUSTERING, .use_clustering = DISABLE_CLUSTERING,
command: fas216_command, .command = fas216_command,
queuecommand: fas216_queue_command, .queuecommand = fas216_queue_command,
eh_host_reset_handler: fas216_eh_host_reset, .eh_host_reset_handler = fas216_eh_host_reset,
eh_bus_reset_handler: fas216_eh_bus_reset, .eh_bus_reset_handler = fas216_eh_bus_reset,
eh_device_reset_handler: fas216_eh_device_reset, .eh_device_reset_handler = fas216_eh_device_reset,
eh_abort_handler: fas216_eh_abort, .eh_abort_handler = fas216_eh_abort,
}; };
static int __init cumanascsi2_init(void) static int __init cumanascsi2_init(void)
......
...@@ -262,19 +262,19 @@ int NCR5380_proc_info(char *buffer, char **start, off_t offset, ...@@ -262,19 +262,19 @@ int NCR5380_proc_info(char *buffer, char **start, off_t offset,
#include "../../scsi/NCR5380.c" #include "../../scsi/NCR5380.c"
static Scsi_Host_Template ecoscsi_template = { static Scsi_Host_Template ecoscsi_template = {
module: THIS_MODULE, .module = THIS_MODULE,
name: "Serial Port EcoSCSI NCR5380", .name = "Serial Port EcoSCSI NCR5380",
detect: ecoscsi_detect, .detect = ecoscsi_detect,
release: ecoscsi_release, .release = ecoscsi_release,
info: ecoscsi_info, .info = ecoscsi_info,
queuecommand: ecoscsi_queue_command, .queuecommand = ecoscsi_queue_command,
abort: ecoscsi_abort, .abort = ecoscsi_abort,
reset: ecoscsi_reset, .reset = ecoscsi_reset,
can_queue: 16, .can_queue = 16,
this_id: 7, .this_id = 7,
sg_tablesize: SG_ALL, .sg_tablesize = SG_ALL,
cmd_per_lun: 2, .cmd_per_lun = 2,
use_clustering: DISABLE_CLUSTERING .use_clustering = DISABLE_CLUSTERING
}; };
static int __init ecoscsi_init(void) static int __init ecoscsi_init(void)
......
...@@ -554,24 +554,24 @@ int eesoxscsi_proc_info(char *buffer, char **start, off_t offset, ...@@ -554,24 +554,24 @@ int eesoxscsi_proc_info(char *buffer, char **start, off_t offset,
} }
static Scsi_Host_Template eesox_template = { static Scsi_Host_Template eesox_template = {
module: THIS_MODULE, .module = THIS_MODULE,
proc_info: eesoxscsi_proc_info, .proc_info = eesoxscsi_proc_info,
name: "EESOX SCSI", .name = "EESOX SCSI",
detect: eesoxscsi_detect, .detect = eesoxscsi_detect,
release: eesoxscsi_release, .release = eesoxscsi_release,
info: eesoxscsi_info, .info = eesoxscsi_info,
bios_param: scsicam_bios_param, .bios_param = scsicam_bios_param,
can_queue: 1, .can_queue = 1,
this_id: 7, .this_id = 7,
sg_tablesize: SG_ALL, .sg_tablesize = SG_ALL,
cmd_per_lun: 1, .cmd_per_lun = 1,
use_clustering: DISABLE_CLUSTERING, .use_clustering = DISABLE_CLUSTERING,
command: fas216_command, .command = fas216_command,
queuecommand: fas216_queue_command, .queuecommand = fas216_queue_command,
eh_host_reset_handler: fas216_eh_host_reset, .eh_host_reset_handler = fas216_eh_host_reset,
eh_bus_reset_handler: fas216_eh_bus_reset, .eh_bus_reset_handler = fas216_eh_bus_reset,
eh_device_reset_handler: fas216_eh_device_reset, .eh_device_reset_handler = fas216_eh_device_reset,
eh_abort_handler: fas216_eh_abort, .eh_abort_handler = fas216_eh_abort,
}; };
static int __init eesox_init(void) static int __init eesox_init(void)
......
...@@ -252,20 +252,20 @@ printk("reading %p len %d\n", addr, len); ...@@ -252,20 +252,20 @@ printk("reading %p len %d\n", addr, len);
#include "../../scsi/NCR5380.c" #include "../../scsi/NCR5380.c"
static Scsi_Host_Template oakscsi_template = { static Scsi_Host_Template oakscsi_template = {
module: THIS_MODULE, .module = THIS_MODULE,
proc_info: oakscsi_proc_info, .proc_info = oakscsi_proc_info,
name: "Oak 16-bit SCSI", .name = "Oak 16-bit SCSI",
detect: oakscsi_detect, .detect = oakscsi_detect,
release: oakscsi_release, .release = oakscsi_release,
info: oakscsi_info, .info = oakscsi_info,
queuecommand: oakscsi_queue_command, .queuecommand = oakscsi_queue_command,
abort: oakscsi_abort, .abort = oakscsi_abort,
reset: oakscsi_reset, .reset = oakscsi_reset,
can_queue: 16, .can_queue = 16,
this_id: 7, .this_id = 7,
sg_tablesize: SG_ALL, .sg_tablesize = SG_ALL,
cmd_per_lun: 2, .cmd_per_lun = 2,
use_clustering: DISABLE_CLUSTERING .use_clustering = DISABLE_CLUSTERING
}; };
static int __init oakscsi_init(void) static int __init oakscsi_init(void)
......
...@@ -454,24 +454,24 @@ int powertecscsi_proc_info(char *buffer, char **start, off_t offset, ...@@ -454,24 +454,24 @@ int powertecscsi_proc_info(char *buffer, char **start, off_t offset,
} }
static Scsi_Host_Template powertecscsi_template = { static Scsi_Host_Template powertecscsi_template = {
module: THIS_MODULE, .module = THIS_MODULE,
proc_info: powertecscsi_proc_info, .proc_info = powertecscsi_proc_info,
name: "PowerTec SCSI", .name = "PowerTec SCSI",
detect: powertecscsi_detect, .detect = powertecscsi_detect,
release: powertecscsi_release, .release = powertecscsi_release,
info: powertecscsi_info, .info = powertecscsi_info,
bios_param: scsicam_bios_param, .bios_param = scsicam_bios_param,
can_queue: 1, .can_queue = 1,
this_id: 7, .this_id = 7,
sg_tablesize: SG_ALL, .sg_tablesize = SG_ALL,
cmd_per_lun: 1, .cmd_per_lun = 1,
use_clustering: ENABLE_CLUSTERING, .use_clustering = ENABLE_CLUSTERING,
command: fas216_command, .command = fas216_command,
queuecommand: fas216_queue_command, .queuecommand = fas216_queue_command,
eh_host_reset_handler: fas216_eh_host_reset, .eh_host_reset_handler = fas216_eh_host_reset,
eh_bus_reset_handler: fas216_eh_bus_reset, .eh_bus_reset_handler = fas216_eh_bus_reset,
eh_device_reset_handler: fas216_eh_device_reset, .eh_device_reset_handler = fas216_eh_device_reset,
eh_abort_handler: fas216_eh_abort, .eh_abort_handler = fas216_eh_abort,
}; };
static int __init powertecscsi_init(void) static int __init powertecscsi_init(void)
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
# Makefile for the kernel pcmcia subsystem (c/o David Hinds) # Makefile for the kernel pcmcia subsystem (c/o David Hinds)
# #
export-objs := ds.o cs.o yenta.o export-objs := ds.o cs.o yenta.o sa1100_pcmcia.o
obj-$(CONFIG_PCMCIA) += pcmcia_core.o ds.o obj-$(CONFIG_PCMCIA) += pcmcia_core.o ds.o
ifeq ($(CONFIG_CARDBUS),y) ifeq ($(CONFIG_CARDBUS),y)
......
...@@ -137,7 +137,7 @@ static int sa1100_pcmcia_set_mecr(int sock) ...@@ -137,7 +137,7 @@ static int sa1100_pcmcia_set_mecr(int sock)
local_irq_restore(flags); local_irq_restore(flags);
DEBUG(4, "%s(): FAST%u %lx BSM%u %lx BSA%u %lx BSIO%u %lx\n", DEBUG(4, "%s(): FAST%u %X BSM%u %X BSA%u %X BSIO%u %X\n",
__FUNCTION__, sock, MECR_FAST_GET(mecr, sock), sock, __FUNCTION__, sock, MECR_FAST_GET(mecr, sock), sock,
MECR_BSM_GET(mecr, sock), sock, MECR_BSA_GET(mecr, sock), MECR_BSM_GET(mecr, sock), sock, MECR_BSA_GET(mecr, sock),
sock, MECR_BSIO_GET(mecr, sock)); sock, MECR_BSIO_GET(mecr, sock));
...@@ -1052,6 +1052,7 @@ int sa1100_register_pcmcia(struct pcmcia_low_level *ops) ...@@ -1052,6 +1052,7 @@ int sa1100_register_pcmcia(struct pcmcia_low_level *ops)
pcmcia_low_level = NULL; pcmcia_low_level = NULL;
return ret; return ret;
} }
EXPORT_SYMBOL(sa1100_register_pcmcia);
/* sa1100_unregister_pcmcia() /* sa1100_unregister_pcmcia()
* ^^^^^^^^^^^^^^^^^^^^^^^^^^ * ^^^^^^^^^^^^^^^^^^^^^^^^^^
...@@ -1091,6 +1092,7 @@ void sa1100_unregister_pcmcia(struct pcmcia_low_level *ops) ...@@ -1091,6 +1092,7 @@ void sa1100_unregister_pcmcia(struct pcmcia_low_level *ops)
pcmcia_low_level = NULL; pcmcia_low_level = NULL;
} }
EXPORT_SYMBOL(sa1100_unregister_pcmcia);
/* sa1100_pcmcia_init() /* sa1100_pcmcia_init()
* ^^^^^^^^^^^^^^^^^^^^ * ^^^^^^^^^^^^^^^^^^^^
......
...@@ -205,9 +205,6 @@ ...@@ -205,9 +205,6 @@
extern void (*sa1100fb_backlight_power)(int on); extern void (*sa1100fb_backlight_power)(int on);
extern void (*sa1100fb_lcd_power)(int on); extern void (*sa1100fb_lcd_power)(int on);
void (*sa1100fb_blank_helper)(int blank);
EXPORT_SYMBOL(sa1100fb_blank_helper);
/* /*
* IMHO this looks wrong. In 8BPP, length should be 8. * IMHO this looks wrong. In 8BPP, length should be 8.
*/ */
...@@ -262,7 +259,7 @@ static struct sa1100fb_mach_info pal_info __initdata = { ...@@ -262,7 +259,7 @@ static struct sa1100fb_mach_info pal_info __initdata = {
#endif #endif
#endif #endif
#ifdef CONFIG_SA1100_H3XXX #ifdef CONFIG_SA1100_H3800
static struct sa1100fb_mach_info h3800_info __initdata = { static struct sa1100fb_mach_info h3800_info __initdata = {
pixclock: 174757, bpp: 16, pixclock: 174757, bpp: 16,
xres: 320, yres: 240, xres: 320, yres: 240,
...@@ -274,9 +271,12 @@ static struct sa1100fb_mach_info h3800_info __initdata = { ...@@ -274,9 +271,12 @@ static struct sa1100fb_mach_info h3800_info __initdata = {
sync: 0, cmap_static: 1, sync: 0, cmap_static: 1,
lccr0: LCCR0_Color | LCCR0_Sngl | LCCR0_Act, lccr0: LCCR0_Color | LCCR0_Sngl | LCCR0_Act,
lccr3: LCCR3_ACBsCntOff | LCCR3_PixFlEdg | LCCR3_OutEnH, lccr3: LCCR3_ACBsDiv(2) | LCCR3_PixRsEdg | LCCR3_OutEnH |
LCCR3_ACBsCntOff,
}; };
#endif
#ifdef CONFIG_SA1100_H3600
static struct sa1100fb_mach_info h3600_info __initdata = { static struct sa1100fb_mach_info h3600_info __initdata = {
pixclock: 174757, bpp: 16, pixclock: 174757, bpp: 16,
xres: 320, yres: 240, xres: 320, yres: 240,
...@@ -288,7 +288,8 @@ static struct sa1100fb_mach_info h3600_info __initdata = { ...@@ -288,7 +288,8 @@ static struct sa1100fb_mach_info h3600_info __initdata = {
sync: 0, cmap_static: 1, sync: 0, cmap_static: 1,
lccr0: LCCR0_Color | LCCR0_Sngl | LCCR0_Act, lccr0: LCCR0_Color | LCCR0_Sngl | LCCR0_Act,
lccr3: LCCR3_ACBsCntOff | LCCR3_OutEnH | LCCR3_PixFlEdg, lccr3: LCCR3_ACBsDiv(2) | LCCR3_PixRsEdg | LCCR3_OutEnH |
LCCR3_ACBsCntOff,
}; };
static struct sa1100fb_rgb h3600_rgb_16 = { static struct sa1100fb_rgb h3600_rgb_16 = {
...@@ -297,7 +298,9 @@ static struct sa1100fb_rgb h3600_rgb_16 = { ...@@ -297,7 +298,9 @@ static struct sa1100fb_rgb h3600_rgb_16 = {
blue: { offset: 1, length: 4, }, blue: { offset: 1, length: 4, },
transp: { offset: 0, length: 0, }, transp: { offset: 0, length: 0, },
}; };
#endif
#ifdef CONFIG_SA1100_H3100
static struct sa1100fb_mach_info h3100_info __initdata = { static struct sa1100fb_mach_info h3100_info __initdata = {
pixclock: 406977, bpp: 4, pixclock: 406977, bpp: 4,
xres: 320, yres: 240, xres: 320, yres: 240,
...@@ -680,14 +683,18 @@ sa1100fb_get_machine_info(struct sa1100fb_info *fbi) ...@@ -680,14 +683,18 @@ sa1100fb_get_machine_info(struct sa1100fb_info *fbi)
#endif #endif
} }
#endif #endif
#ifdef CONFIG_SA1100_H3XXX #ifdef CONFIG_SA1100_H3100
if (machine_is_h3100()) {
inf = &h3100_info;
}
#endif
#ifdef CONFIG_SA1100_H3600
if (machine_is_h3600()) { if (machine_is_h3600()) {
inf = &h3600_info; inf = &h3600_info;
fbi->rgb[RGB_16] = &h3600_rgb_16; fbi->rgb[RGB_16] = &h3600_rgb_16;
} }
if (machine_is_h3100()) { #endif
inf = &h3100_info; #ifdef CONFIG_SA1100_H3800
}
if (machine_is_h3800()) { if (machine_is_h3800()) {
inf = &h3800_info; inf = &h3800_info;
} }
...@@ -1310,13 +1317,9 @@ static int sa1100fb_blank(int blank, struct fb_info *info) ...@@ -1310,13 +1317,9 @@ static int sa1100fb_blank(int blank, struct fb_info *info)
for (i = 0; i < fbi->palette_size; i++) for (i = 0; i < fbi->palette_size; i++)
sa1100fb_setpalettereg(i, 0, 0, 0, 0, info); sa1100fb_setpalettereg(i, 0, 0, 0, 0, info);
sa1100fb_schedule_task(fbi, C_DISABLE); sa1100fb_schedule_task(fbi, C_DISABLE);
if (sa1100fb_blank_helper)
sa1100fb_blank_helper(blank);
break; break;
case VESA_NO_BLANKING: case VESA_NO_BLANKING:
if (sa1100fb_blank_helper)
sa1100fb_blank_helper(blank);
if (fbi->fb.disp->visual == FB_VISUAL_PSEUDOCOLOR || if (fbi->fb.disp->visual == FB_VISUAL_PSEUDOCOLOR ||
fbi->fb.disp->visual == FB_VISUAL_STATIC_PSEUDOCOLOR) fbi->fb.disp->visual == FB_VISUAL_STATIC_PSEUDOCOLOR)
fb_set_cmap(&fbi->fb.cmap, 1, info); fb_set_cmap(&fbi->fb.cmap, 1, info);
......
...@@ -198,9 +198,9 @@ adfs_dir_lookup_byname(struct inode *inode, struct qstr *name, struct object_inf ...@@ -198,9 +198,9 @@ adfs_dir_lookup_byname(struct inode *inode, struct qstr *name, struct object_inf
} }
struct file_operations adfs_dir_operations = { struct file_operations adfs_dir_operations = {
read: generic_read_dir, .read = generic_read_dir,
readdir: adfs_readdir, .readdir = adfs_readdir,
fsync: file_fsync, .fsync = file_fsync,
}; };
static int static int
...@@ -265,8 +265,8 @@ adfs_compare(struct dentry *parent, struct qstr *entry, struct qstr *name) ...@@ -265,8 +265,8 @@ adfs_compare(struct dentry *parent, struct qstr *entry, struct qstr *name)
} }
struct dentry_operations adfs_dentry_operations = { struct dentry_operations adfs_dentry_operations = {
d_hash: adfs_hash, .d_hash = adfs_hash,
d_compare: adfs_compare, .d_compare = adfs_compare,
}; };
struct dentry *adfs_lookup(struct inode *dir, struct dentry *dentry) struct dentry *adfs_lookup(struct inode *dir, struct dentry *dentry)
...@@ -297,6 +297,6 @@ struct dentry *adfs_lookup(struct inode *dir, struct dentry *dentry) ...@@ -297,6 +297,6 @@ struct dentry *adfs_lookup(struct inode *dir, struct dentry *dentry)
* directories can handle most operations... * directories can handle most operations...
*/ */
struct inode_operations adfs_dir_inode_operations = { struct inode_operations adfs_dir_inode_operations = {
lookup: adfs_lookup, .lookup = adfs_lookup,
setattr: adfs_notify_change, .setattr = adfs_notify_change,
}; };
...@@ -31,14 +31,14 @@ ...@@ -31,14 +31,14 @@
#include "adfs.h" #include "adfs.h"
struct file_operations adfs_file_operations = { struct file_operations adfs_file_operations = {
llseek: generic_file_llseek, .llseek = generic_file_llseek,
read: generic_file_read, .read = generic_file_read,
mmap: generic_file_mmap, .mmap = generic_file_mmap,
fsync: file_fsync, .fsync = file_fsync,
write: generic_file_write, .write = generic_file_write,
sendfile: generic_file_sendfile, .sendfile = generic_file_sendfile,
}; };
struct inode_operations adfs_file_inode_operations = { struct inode_operations adfs_file_inode_operations = {
setattr: adfs_notify_change, .setattr = adfs_notify_change,
}; };
...@@ -73,12 +73,12 @@ static int _adfs_bmap(struct address_space *mapping, long block) ...@@ -73,12 +73,12 @@ static int _adfs_bmap(struct address_space *mapping, long block)
} }
static struct address_space_operations adfs_aops = { static struct address_space_operations adfs_aops = {
readpage: adfs_readpage, .readpage = adfs_readpage,
writepage: adfs_writepage, .writepage = adfs_writepage,
sync_page: block_sync_page, .sync_page = block_sync_page,
prepare_write: adfs_prepare_write, .prepare_write = adfs_prepare_write,
commit_write: generic_commit_write, .commit_write = generic_commit_write,
bmap: _adfs_bmap .bmap = _adfs_bmap
}; };
static inline unsigned int static inline unsigned int
......
...@@ -247,12 +247,12 @@ static void destroy_inodecache(void) ...@@ -247,12 +247,12 @@ static void destroy_inodecache(void)
} }
static struct super_operations adfs_sops = { static struct super_operations adfs_sops = {
alloc_inode: adfs_alloc_inode, .alloc_inode = adfs_alloc_inode,
destroy_inode: adfs_destroy_inode, .destroy_inode = adfs_destroy_inode,
write_inode: adfs_write_inode, .write_inode = adfs_write_inode,
put_super: adfs_put_super, .put_super = adfs_put_super,
statfs: adfs_statfs, .statfs = adfs_statfs,
remount_fs: adfs_remount, .remount_fs = adfs_remount,
}; };
static struct adfs_discmap *adfs_read_map(struct super_block *sb, struct adfs_discrecord *dr) static struct adfs_discmap *adfs_read_map(struct super_block *sb, struct adfs_discrecord *dr)
...@@ -464,11 +464,11 @@ static struct super_block *adfs_get_sb(struct file_system_type *fs_type, ...@@ -464,11 +464,11 @@ static struct super_block *adfs_get_sb(struct file_system_type *fs_type,
} }
static struct file_system_type adfs_fs_type = { static struct file_system_type adfs_fs_type = {
owner: THIS_MODULE, .owner = THIS_MODULE,
name: "adfs", .name = "adfs",
get_sb: adfs_get_sb, .get_sb = adfs_get_sb,
kill_sb: kill_block_super, .kill_sb = kill_block_super,
fs_flags: FS_REQUIRES_DEV, .fs_flags = FS_REQUIRES_DEV,
}; };
static int __init init_adfs_fs(void) static int __init init_adfs_fs(void)
......
...@@ -27,17 +27,27 @@ ...@@ -27,17 +27,27 @@
/* /*
* Intel PXA internal I/O mappings * We requires absolute addresses.
*/ */
#define PCIO_BASE 0
#define io_p2v(x) \ /*
(((x) < 0x44000000) ? ((x) - 0x40000000 + 0xfc000000) : \ * Workarounds for at least 2 errata so far require this.
((x) < 0x48000000) ? ((x) - 0x44000000 + 0xfe000000) : \ * The mapping is set in mach-pxa/generic.c.
((x) - 0x48000000 + 0xff000000)) */
#define io_v2p( x ) \ #define UNCACHED_PHYS_0 0xff000000
(((x) < 0xfe000000) ? ((x) - 0xfc000000 + 0x40000000) : \ #define UNCACHED_ADDR UNCACHED_PHYS_0
((x) < 0xff000000) ? ((x) - 0xfe000000 + 0x44000000) : \
((x) - 0xff000000 + 0x48000000)) /*
* Intel PXA internal I/O mappings:
*
* 0x40000000 - 0x41ffffff <--> 0xf8000000 - 0xf9ffffff
* 0x44000000 - 0x45ffffff <--> 0xfa000000 - 0xfbffffff
* 0x48000000 - 0x49ffffff <--> 0xfc000000 - 0xfdffffff
*/
#define io_p2v(x) ( ((x) | 0xbe000000) ^ (~((x) >> 1) & 0x06000000) )
#define io_v2p( x ) ( ((x) & 0x41ffffff) ^ ( ((x) & 0x06000000) << 1) )
#ifndef __ASSEMBLY__ #ifndef __ASSEMBLY__
...@@ -51,7 +61,7 @@ ...@@ -51,7 +61,7 @@
* doesn't guess this by itself. * doesn't guess this by itself.
*/ */
#include <asm/types.h> #include <asm/types.h>
typedef struct { volatile u32 offset[1024]; } __regbase; typedef struct { volatile u32 offset[4096]; } __regbase;
# define __REGP(x) ((__regbase *)((x)&~4095))->offset[((x)&4095)>>2] # define __REGP(x) ((__regbase *)((x)&~4095))->offset[((x)&4095)>>2]
# define __REG(x) __REGP(io_p2v(x)) # define __REG(x) __REGP(io_p2v(x))
#endif #endif
...@@ -93,5 +103,6 @@ extern unsigned int get_lclk_frequency_10khz(void); ...@@ -93,5 +103,6 @@ extern unsigned int get_lclk_frequency_10khz(void);
#include "lubbock.h" #include "lubbock.h"
#include "idp.h" #include "idp.h"
#include "cerf.h"
#endif /* _ASM_ARCH_HARDWARE_H */ #endif /* _ASM_ARCH_HARDWARE_H */
This diff is collapsed.
...@@ -131,7 +131,8 @@ ...@@ -131,7 +131,8 @@
#ifdef CONFIG_SA1111 #ifdef CONFIG_SA1111
#define NR_IRQS (S1_BVD1_STSCHG + 1) #define NR_IRQS (S1_BVD1_STSCHG + 1)
#elif defined(CONFIG_SA1100_GRAPHICSCLIENT) || \ #elif defined(CONFIG_SA1100_GRAPHICSCLIENT) || \
defined(CONFIG_SA1100_GRAPHICSMASTER) defined(CONFIG_SA1100_GRAPHICSMASTER) || \
defined(CONFIG_SA1100_H3800)
#define NR_IRQS (IRQ_BOARD_END) #define NR_IRQS (IRQ_BOARD_END)
#else #else
#define NR_IRQS (IRQ_BOARD_START) #define NR_IRQS (IRQ_BOARD_START)
...@@ -148,3 +149,24 @@ ...@@ -148,3 +149,24 @@
/* PT Digital Board Interrupts (CONFIG_SA1100_PT_SYSTEM3) */ /* PT Digital Board Interrupts (CONFIG_SA1100_PT_SYSTEM3) */
#define IRQ_SYSTEM3_SA1111 (IRQ_BOARD_START + 0) #define IRQ_SYSTEM3_SA1111 (IRQ_BOARD_START + 0)
#define IRQ_SYSTEM3_SMC9196 (IRQ_BOARD_START + 1) #define IRQ_SYSTEM3_SMC9196 (IRQ_BOARD_START + 1)
/* H3800-specific IRQs (CONFIG_SA1100_H3800) */
#define H3800_KPIO_IRQ_START (IRQ_BOARD_START)
#define IRQ_H3800_KEY (IRQ_BOARD_START + 0)
#define IRQ_H3800_SPI (IRQ_BOARD_START + 1)
#define IRQ_H3800_OWM (IRQ_BOARD_START + 2)
#define IRQ_H3800_ADC (IRQ_BOARD_START + 3)
#define IRQ_H3800_UART_0 (IRQ_BOARD_START + 4)
#define IRQ_H3800_UART_1 (IRQ_BOARD_START + 5)
#define IRQ_H3800_TIMER_0 (IRQ_BOARD_START + 6)
#define IRQ_H3800_TIMER_1 (IRQ_BOARD_START + 7)
#define IRQ_H3800_TIMER_2 (IRQ_BOARD_START + 8)
#define H3800_KPIO_IRQ_COUNT 9
#define H3800_GPIO_IRQ_START (IRQ_BOARD_START + 9)
#define IRQ_H3800_PEN (IRQ_BOARD_START + 9)
#define IRQ_H3800_SD_DETECT (IRQ_BOARD_START + 10)
#define IRQ_H3800_EAR_IN (IRQ_BOARD_START + 11)
#define IRQ_H3800_USB_DETECT (IRQ_BOARD_START + 12)
#define IRQ_H3800_SD_CON_SLT (IRQ_BOARD_START + 13)
#define H3800_GPIO_IRQ_COUNT 5
...@@ -101,9 +101,9 @@ static unsigned int rates[] = { ...@@ -101,9 +101,9 @@ static unsigned int rates[] = {
#define RATES sizeof(rates) / sizeof(rates[0]) #define RATES sizeof(rates) / sizeof(rates[0])
static snd_pcm_hw_constraint_list_t hw_constraints_rates = { static snd_pcm_hw_constraint_list_t hw_constraints_rates = {
count: RATES, .count = RATES,
list: rates, .list = rates,
mask: 0, .mask = 0,
}; };
/* }}} */ /* }}} */
...@@ -545,46 +545,46 @@ static int snd_card_sa11xx_uda1341_pcm_trigger(stream_id_t stream_id, ...@@ -545,46 +545,46 @@ static int snd_card_sa11xx_uda1341_pcm_trigger(stream_id_t stream_id,
static snd_pcm_hardware_t snd_sa11xx_uda1341_capture = static snd_pcm_hardware_t snd_sa11xx_uda1341_capture =
{ {
info: (SNDRV_PCM_INFO_INTERLEAVED | .info = (SNDRV_PCM_INFO_INTERLEAVED |
SNDRV_PCM_INFO_BLOCK_TRANSFER | SNDRV_PCM_INFO_BLOCK_TRANSFER |
SNDRV_PCM_INFO_MMAP | SNDRV_PCM_INFO_MMAP_VALID), SNDRV_PCM_INFO_MMAP | SNDRV_PCM_INFO_MMAP_VALID),
formats: SNDRV_PCM_FMTBIT_S16_LE, .formats = SNDRV_PCM_FMTBIT_S16_LE,
rates: (SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000 |\ .rates = (SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000 |\
SNDRV_PCM_RATE_22050 | SNDRV_PCM_RATE_32000 |\ SNDRV_PCM_RATE_22050 | SNDRV_PCM_RATE_32000 |\
SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_48000 |\ SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_48000 |\
SNDRV_PCM_RATE_KNOT), SNDRV_PCM_RATE_KNOT),
rate_min: 8000, .rate_min = 8000,
rate_max: 48000, .rate_max = 48000,
channels_min: 2, .channels_min: = 2,
channels_max: 2, .channels_max: = 2,
buffer_bytes_max: 16380, .buffer_bytes_max: = 16380,
period_bytes_min: 64, .period_bytes_min: = 64,
period_bytes_max: 8190, /* <= MAX_DMA_SIZE from ams/arch-sa1100/dma.h */ .period_bytes_max: = 8190, /* <= MAX_DMA_SIZE from ams/arch-sa1100/dma.h */
periods_min: 2, .periods_min = 2,
periods_max: 255, .periods_max = 255,
fifo_size: 0, .fifo_size = 0,
}; };
static snd_pcm_hardware_t snd_sa11xx_uda1341_playback = static snd_pcm_hardware_t snd_sa11xx_uda1341_playback =
{ {
info: (SNDRV_PCM_INFO_INTERLEAVED | .info = (SNDRV_PCM_INFO_INTERLEAVED |
SNDRV_PCM_INFO_BLOCK_TRANSFER | SNDRV_PCM_INFO_BLOCK_TRANSFER |
SNDRV_PCM_INFO_MMAP | SNDRV_PCM_INFO_MMAP_VALID), SNDRV_PCM_INFO_MMAP | SNDRV_PCM_INFO_MMAP_VALID),
formats: SNDRV_PCM_FMTBIT_S16_LE, .formats = SNDRV_PCM_FMTBIT_S16_LE,
rates: (SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000 |\ .rates = (SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000 |\
SNDRV_PCM_RATE_22050 | SNDRV_PCM_RATE_32000 |\ SNDRV_PCM_RATE_22050 | SNDRV_PCM_RATE_32000 |\
SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_48000 |\ SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_48000 |\
SNDRV_PCM_RATE_KNOT), SNDRV_PCM_RATE_KNOT),
rate_min: 8000, .rate_min = 8000,
rate_max: 48000, .rate_max = 48000,
channels_min: 2, .channels_min = 2,
channels_max: 2, .channels_max = 2,
buffer_bytes_max: 16380, .buffer_bytes_max = 16380,
period_bytes_min: 64, .period_bytes_min = 64,
period_bytes_max: 8190, /* <= MAX_DMA_SIZE from ams/arch-sa1100/dma.h */ .period_bytes_max = 8190, /* <= MAX_DMA_SIZE from ams/arch-sa1100/dma.h */
periods_min: 2, .periods_min = 2,
periods_max: 255, .periods_max = 255,
fifo_size: 0, .fifo_size = 0,
}; };
/* {{{ snd_card_sa11xx_uda1341_playback functions */ /* {{{ snd_card_sa11xx_uda1341_playback functions */
...@@ -752,25 +752,25 @@ static int snd_sa11xx_uda1341_hw_free(snd_pcm_substream_t * substream) ...@@ -752,25 +752,25 @@ static int snd_sa11xx_uda1341_hw_free(snd_pcm_substream_t * substream)
/* }}} */ /* }}} */
static snd_pcm_ops_t snd_card_sa11xx_uda1341_playback_ops = { static snd_pcm_ops_t snd_card_sa11xx_uda1341_playback_ops = {
open: snd_card_sa11xx_uda1341_playback_open, .open = snd_card_sa11xx_uda1341_playback_open,
close: snd_card_sa11xx_uda1341_playback_close, .close = snd_card_sa11xx_uda1341_playback_close,
ioctl: snd_card_sa11xx_uda1341_playback_ioctl, .ioctl = snd_card_sa11xx_uda1341_playback_ioctl,
hw_params: snd_sa11xx_uda1341_hw_params, .hw_params = snd_sa11xx_uda1341_hw_params,
hw_free: snd_sa11xx_uda1341_hw_free, .hw_free = snd_sa11xx_uda1341_hw_free,
prepare: snd_card_sa11xx_uda1341_playback_prepare, .prepare = snd_card_sa11xx_uda1341_playback_prepare,
trigger: snd_card_sa11xx_uda1341_playback_trigger, .trigger = snd_card_sa11xx_uda1341_playback_trigger,
pointer: snd_card_sa11xx_uda1341_playback_pointer, .pointer = snd_card_sa11xx_uda1341_playback_pointer,
}; };
static snd_pcm_ops_t snd_card_sa11xx_uda1341_capture_ops = { static snd_pcm_ops_t snd_card_sa11xx_uda1341_capture_ops = {
open: snd_card_sa11xx_uda1341_capture_open, .open = snd_card_sa11xx_uda1341_capture_open,
close: snd_card_sa11xx_uda1341_capture_close, .close = snd_card_sa11xx_uda1341_capture_close,
ioctl: snd_card_sa11xx_uda1341_capture_ioctl, .ioctl = snd_card_sa11xx_uda1341_capture_ioctl,
hw_params: snd_sa11xx_uda1341_hw_params, .hw_params = snd_sa11xx_uda1341_hw_params,
hw_free: snd_sa11xx_uda1341_hw_free, .hw_free = snd_sa11xx_uda1341_hw_free,
prepare: snd_card_sa11xx_uda1341_capture_prepare, .prepare = snd_card_sa11xx_uda1341_capture_prepare,
trigger: snd_card_sa11xx_uda1341_capture_trigger, .trigger = snd_card_sa11xx_uda1341_capture_trigger,
pointer: snd_card_sa11xx_uda1341_capture_pointer, .pointer = snd_card_sa11xx_uda1341_capture_pointer,
}; };
static int __init snd_card_sa11xx_uda1341_pcm(sa11xx_uda1341_t *sa11xx_uda1341, int device, int substreams) static int __init snd_card_sa11xx_uda1341_pcm(sa11xx_uda1341_t *sa11xx_uda1341, int device, int substreams)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment