board.c 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. // SPDX-License-Identifier: GPL-2.0+
  2. /*
  3. * Copyright (C) 2017 Microchip
  4. * Wenyou Yang <wenyou.yang@microchip.com>
  5. */
  6. #include <common.h>
  7. #include <dm.h>
  8. #include <env.h>
  9. #include <w1.h>
  10. #include <w1-eeprom.h>
  11. #include <dm/device-internal.h>
  12. #define AT91_PDA_EEPROM_ID_OFFSET 15
  13. #define AT91_PDA_EEPROM_ID_LENGTH 5
  14. #define AT91_PDA_EEPROM_DEFAULT_BUS 0
  15. char *get_cpu_name(void);
  16. void dummy(void)
  17. {
  18. }
  19. #if defined CONFIG_W1
  20. void at91_pda_detect(void)
  21. {
  22. struct udevice *bus, *dev;
  23. u8 buf[AT91_PDA_EEPROM_ID_LENGTH + 1] = {0};
  24. int ret;
  25. int pda = 0;
  26. ret = w1_get_bus(AT91_PDA_EEPROM_DEFAULT_BUS, &bus);
  27. if (ret)
  28. goto pda_detect_err;
  29. for (device_find_first_child(bus, &dev);
  30. dev;
  31. device_find_next_child(&dev)) {
  32. ret = device_probe(dev);
  33. if (ret) {
  34. continue;
  35. } else {
  36. ret = w1_eeprom_read_buf(dev, AT91_PDA_EEPROM_ID_OFFSET,
  37. (u8 *)buf, AT91_PDA_EEPROM_ID_LENGTH);
  38. if (ret)
  39. goto pda_detect_err;
  40. break;
  41. }
  42. }
  43. pda = dectoul((const char *)buf, NULL);
  44. switch (pda) {
  45. case 7000:
  46. if (buf[4] == 'B')
  47. printf("PDA TM7000B detected\n");
  48. else
  49. printf("PDA TM7000 detected\n");
  50. break;
  51. case 4300:
  52. printf("PDA TM4300 detected\n");
  53. break;
  54. case 5000:
  55. printf("PDA TM5000 detected\n");
  56. break;
  57. }
  58. pda_detect_err:
  59. env_set("pda", (const char *)buf);
  60. }
  61. #else
  62. void at91_pda_detect(void)
  63. {
  64. }
  65. #endif
  66. void at91_prepare_cpu_var(void)
  67. {
  68. env_set("cpu", get_cpu_name());
  69. }