static void __exit au1000_pcmcia_driver_shutdown(void)
{
	int i;

	del_timer_sync(&poll_timer);
	unregister_ss_entry(&au1000_pcmcia_operations);
	pcmcia_low_level->shutdown();
	flush_scheduled_tasks();
	for(i=0; i < socket_count; i++) {
		if (pcmcia_socket[i].virt_io) 
			iounmap((void *)pcmcia_socket[i].virt_io);
	}
	DEBUG(1, "au1000: shutdown complete\n");
}
/* sa1100_pcmcia_driver_shutdown()
 * ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 * Invokes the low-level kernel service to free IRQs associated with this
 * socket controller and reset GPIO edge detection.
 */
static void __exit sa1100_pcmcia_driver_shutdown(void)
{
  int i;

  del_timer_sync(&poll_timer);

  unregister_ss_entry(&sa1100_pcmcia_operations);

#ifdef CONFIG_CPU_FREQ
  cpufreq_unregister_notifier(&sa1100_pcmcia_notifier_block);
#endif

  for (i = 0; i < sa1100_pcmcia_socket_count; i++) {
    iounmap(sa1100_pcmcia_socket[i].virt_io);
    release_mem_region(_PCMCIA(i), PCMCIASp);
  }

  pcmcia_low_level->shutdown();

  flush_scheduled_tasks();
}
Example #3
0
static inline void cancel_mac_stats_update(struct adapter *ap)
{
	del_timer_sync(&ap->stats_update_timer);
	flush_scheduled_tasks();
}
/* ssa_pcmcia_driver_shutdown()
 * ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 * Invokes the low-level kernel service to free IRQs associated with this
 * socket controller and reset GPIO edge detection.
 */
static void __exit ssa_pcmcia_driver_shutdown (void)
{
   del_timer_sync (&poll_timer);
   unregister_ss_entry (&ssa_pcmcia_operations);
   flush_scheduled_tasks();
}