URL
https://opencores.org/ocsvn/or1k_old/or1k_old/trunk
Subversion Repositories or1k_old
[/] [or1k_old/] [trunk/] [uclinux/] [uClinux-2.0.x/] [arch/] [armnommu/] [drivers/] [block/] [ide-rapide.c] - Rev 1782
Compare with Previous | Blame | View Log
/* * linux/arch/arm/drivers/block/ide-ics.c * * Copyright (c) 1996 Russell King. * * Changelog: * 08-06-1996 RMK Created */ #include <linux/module.h> #include <linux/malloc.h> #include <linux/blkdev.h> #include <linux/errno.h> #include <asm/ecard.h> #include "ide.h" static const card_ids rapide_cids[] = { { 0xffff, 0xffff } }; static struct expansion_card *ec[MAX_ECARDS]; static int result[MAX_ECARDS]; static inline int rapide_register (struct expansion_card *ec) { unsigned long port = ecard_address (ec, ECARD_MEMC, 0); return ide_register_port (port, port + 0x206, 4, ec->irq); } int rapide_init (void) { int i; for (i = 0; i < MAX_ECARDS; i++) ec[i] = NULL; ecard_startfind (); for (i = 0; ; i++) { if ((ec[i] = ecard_find (0, rapide_cids)) == NULL) break; ecard_claim (ec[i]); result[i] = rapide_register (ec[i]); } for (i = 0; i < MAX_ECARDS; i++) if (ec[i] && result[i] < 0) { ecard_release (ec[i]); ec[i] = NULL; } return 0; } #ifdef MODULE int init_module (void) { return rapide_init(); } void cleanup_module (void) { int i; for (i = 0; i < MAX_ECARDS; i++) if (ec[i]) { unsigned long port; port = ecard_address (ec[i], ECARD_MEMC, 0); ide_unregister_port (port, ec[i]->irq, 16); ecard_release (ec[i]); ec[i] = NULL; } } #endif