common.c 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. /*
  2. * arch/arm/mach-iop3xx/common.c
  3. *
  4. * Common routines shared across all IOP3xx implementations
  5. *
  6. * Author: Deepak Saxena <dsaxena@mvista.com>
  7. *
  8. * Copyright 2003 (c) MontaVista, Software, Inc.
  9. *
  10. * This file is licensed under the terms of the GNU General Public
  11. * License version 2. This program is licensed "as is" without any
  12. * warranty of any kind, whether express or implied.
  13. */
  14. #include <linux/config.h>
  15. #include <linux/delay.h>
  16. #include <asm/hardware.h>
  17. /*
  18. * Shared variables
  19. */
  20. unsigned long iop3xx_pcibios_min_io = 0;
  21. unsigned long iop3xx_pcibios_min_mem = 0;
  22. #ifdef CONFIG_ARCH_EP80219
  23. #include <linux/kernel.h>
  24. /*
  25. * Default power-off for EP80219
  26. */
  27. static inline void ep80219_send_to_pic(__u8 c) {
  28. }
  29. void ep80219_power_off(void)
  30. {
  31. /*
  32. * This function will send a SHUTDOWN_COMPLETE message to the PIC controller
  33. * over I2C. We are not using the i2c subsystem since we are going to power
  34. * off and it may be removed
  35. */
  36. /* Send the Address byte w/ the start condition */
  37. *IOP321_IDBR1 = 0x60;
  38. *IOP321_ICR1 = 0xE9;
  39. mdelay(1);
  40. /* Send the START_MSG byte w/ no start or stop condition */
  41. *IOP321_IDBR1 = 0x0F;
  42. *IOP321_ICR1 = 0xE8;
  43. mdelay(1);
  44. /* Send the SHUTDOWN_COMPLETE Message ID byte w/ no start or stop condition */
  45. *IOP321_IDBR1 = 0x03;
  46. *IOP321_ICR1 = 0xE8;
  47. mdelay(1);
  48. /* Send an ignored byte w/ stop condition */
  49. *IOP321_IDBR1 = 0x00;
  50. *IOP321_ICR1 = 0xEA;
  51. while (1) ;
  52. }
  53. #include <linux/init.h>
  54. #include <linux/pm.h>
  55. static int __init ep80219_init(void)
  56. {
  57. pm_power_off = ep80219_power_off;
  58. return 0;
  59. }
  60. arch_initcall(ep80219_init);
  61. #endif