board.c 1.3 KB

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