board.c 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  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. w1_eeprom_read_buf(dev, AT91_PDA_EEPROM_ID_OFFSET,
  35. (u8 *)buf, AT91_PDA_EEPROM_ID_LENGTH);
  36. break;
  37. }
  38. }
  39. pda = simple_strtoul((const char *)buf, NULL, 10);
  40. switch (pda) {
  41. case 7000:
  42. if (buf[4] == 'B')
  43. printf("PDA TM7000B detected\n");
  44. else
  45. printf("PDA TM7000 detected\n");
  46. break;
  47. case 4300:
  48. printf("PDA TM4300 detected\n");
  49. break;
  50. case 5000:
  51. printf("PDA TM5000 detected\n");
  52. break;
  53. }
  54. env_set("pda", (const char *)buf);
  55. }
  56. #else
  57. void at91_pda_detect(void)
  58. {
  59. }
  60. #endif
  61. void at91_prepare_cpu_var(void)
  62. {
  63. env_set("cpu", get_cpu_name());
  64. }