sandbox_pch.c 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. // SPDX-License-Identifier: GPL-2.0+
  2. /*
  3. * Copyright 2018 Google LLC
  4. */
  5. #include <common.h>
  6. #include <dm.h>
  7. #include <pch.h>
  8. struct sandbox_pch_priv {
  9. bool protect;
  10. };
  11. int sandbox_get_pch_spi_protect(struct udevice *dev)
  12. {
  13. struct sandbox_pch_priv *priv = dev_get_priv(dev);
  14. return priv->protect;
  15. }
  16. static int sandbox_pch_get_spi_base(struct udevice *dev, ulong *sbasep)
  17. {
  18. *sbasep = 0x10;
  19. return 0;
  20. }
  21. static int sandbox_pch_set_spi_protect(struct udevice *dev, bool protect)
  22. {
  23. struct sandbox_pch_priv *priv = dev_get_priv(dev);
  24. priv->protect = protect;
  25. return 0;
  26. }
  27. static int sandbox_pch_get_gpio_base(struct udevice *dev, u32 *gbasep)
  28. {
  29. *gbasep = 0x20;
  30. return 0;
  31. }
  32. static int sandbox_pch_get_io_base(struct udevice *dev, u32 *iobasep)
  33. {
  34. *iobasep = 0x30;
  35. return 0;
  36. }
  37. int sandbox_pch_ioctl(struct udevice *dev, enum pch_req_t req, void *data,
  38. int size)
  39. {
  40. switch (req) {
  41. case PCH_REQ_TEST1:
  42. return -ENOSYS;
  43. case PCH_REQ_TEST2:
  44. return *(char *)data;
  45. case PCH_REQ_TEST3:
  46. *(char *)data = 'x';
  47. return 1;
  48. default:
  49. return -ENOSYS;
  50. }
  51. }
  52. static const struct pch_ops sandbox_pch_ops = {
  53. .get_spi_base = sandbox_pch_get_spi_base,
  54. .set_spi_protect = sandbox_pch_set_spi_protect,
  55. .get_gpio_base = sandbox_pch_get_gpio_base,
  56. .get_io_base = sandbox_pch_get_io_base,
  57. .ioctl = sandbox_pch_ioctl,
  58. };
  59. static const struct udevice_id sandbox_pch_ids[] = {
  60. { .compatible = "sandbox,pch" },
  61. { }
  62. };
  63. U_BOOT_DRIVER(sandbox_pch_drv) = {
  64. .name = "sandbox-pch",
  65. .id = UCLASS_PCH,
  66. .of_match = sandbox_pch_ids,
  67. .ops = &sandbox_pch_ops,
  68. .priv_auto = sizeof(struct sandbox_pch_priv),
  69. };