definitionOfFireSuppressionFluctuation.c 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. /*
  2. * Critical Link MityOMAP-L138 SoM
  3. *
  4. * Copyright (C) 2010 Critical Link LLC - http://www.criticallink.com
  5. *
  6. * This file is licensed under the terms of the GNU General Public License
  7. * version 2. This program is licensed "as is" without any warranty of
  8. * any kind, whether express or implied.
  9. */
  10. #include <linux/kernel.h>
  11. #include <linux/init.h>
  12. #include <linux/console.h>
  13. #include <linux/platform_device.h>
  14. #include <linux/mtd/partitions.h>
  15. #include <linux/regulator/machine.h>
  16. #include <linux/i2c.h>
  17. #include <linux/i2c/at24.h>
  18. #include <linux/etherdevice.h>
  19. #include <linux/spi/spi.h>
  20. #include <linux/spi/flash.h>
  21. #include <asm/io.h>
  22. #include <asm/mach-types.h>
  23. #include <asm/mach/arch.h>
  24. #include <mach/common.h>
  25. #include <mach/cp_intc.h>
  26. #include <mach/da8xx.h>
  27. #include <linux/platform_data/mtd-davinci.h>
  28. #include <mach/mux.h>
  29. #include <linux/platform_data/spi-davinci.h>
  30. #define MITYOMAPL138_PHY_ID ""
  31. #define FACTORY_CONFIG_MAGIC 0x012C0138
  32. #define FACTORY_CONFIG_VERSION 0x00010001
  33. /* Data Held in On-Board I2C device */
  34. struct factory_config {
  35. u32 magic;
  36. u32 version;
  37. u8 mac[6];
  38. u32 fpga_type;
  39. u32 spare;
  40. u32 serialnumber;
  41. char partnum[32];
  42. };
  43. static struct factory_config factory_config;
  44. struct part_no_info {
  45. const char *part_no; /* part number string of interest */
  46. int max_freq; /* khz */
  47. };
  48. static struct part_no_info mityomapl138_pn_info[] = {
  49. {
  50. .part_no = "L138-C",
  51. .max_freq = 300000,
  52. },
  53. {
  54. .part_no = "L138-D",
  55. .max_freq = 375000,
  56. },
  57. {
  58. .part_no = "L138-F",
  59. .max_freq = 456000,
  60. },
  61. {
  62. .part_no = "1808-C",
  63. .max_freq = 300000,
  64. },
  65. {
  66. .part_no = "1808-D",
  67. .max_freq = 375000,
  68. },
  69. {
  70. .part_no = "1808-F",
  71. .max_freq = 456000,
  72. },
  73. {
  74. .part_no = "1810-D",
  75. .max_freq = 375000,
  76. },
  77. };
  78. #ifdef CONFIG_CPU_FREQ
  79. static void mityomapl138_cpufreq_init(const char *partnum)
  80. {
  81. int i, ret;
  82. for (i = 0; partnum && i < ARRAY_SIZE(mityomapl138_pn_info); i++) {
  83. /*
  84. * the part number has additional characters beyond what is
  85. * stored in the table. This information is not needed for
  86. * determining the speed grade, and would require several
  87. * more table entries. Only check the first N characters
  88. * for a match.
  89. */
  90. if (!strncmp(partnum, mityomapl138_pn_info[i].part_no,
  91. strlen(mityomapl138_pn_info[i].part_no))) {
  92. da850_max_speed = mityomapl138_pn_info[i].max_freq;
  93. break;
  94. }
  95. }
  96. ret = da850_register_cpufreq("pll0_sysclk3");
  97. if (ret)
  98. pr_warning("cpufreq registration failed: %d\n", ret);
  99. }
  100. #else
  101. static void mityomapl138_cpufreq_init(const char *partnum) { }
  102. #endif
  103. static void read_factory_config(struct memory_accessor *a, void *context)
  104. {
  105. int ret;
  106. const char *partnum = NULL;
  107. struct davinci_soc_info *soc_info = &davinci_soc_info;
  108. ret = a->read(a, (char *)&factory_config, 0, sizeof(factory_config));
  109. if (ret != sizeof(struct factory_config)) {
  110. pr_warning("MityOMAPL138: Read Factory Config Failed: %d\n",
  111. ret);
  112. goto bad_config;
  113. }
  114. if (factory_config.magic != FACTORY_CONFIG_MAGIC) {
  115. pr_warning("MityOMAPL138: Factory Config Magic Wrong (%X)\n",
  116. factory_config.magic);
  117. goto bad_config;
  118. }
  119. if (factory_config.version != FACTORY_CONFIG_VERSION) {
  120. pr_warning("MityOMAPL138: Factory Config Version Wrong (%X)\n",
  121. factory_config.version);
  122. goto bad_config;
  123. }