dev-rng.c 1013 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. /*
  2. * This file is subject to the terms and conditions of the GNU General Public
  3. * License. See the file "COPYING" in the main directory of this archive
  4. * for more details.
  5. *
  6. * Copyright (C) 2011 Florian Fainelli <florian@openwrt.org>
  7. */
  8. #include <linux/init.h>
  9. #include <linux/kernel.h>
  10. #include <linux/platform_device.h>
  11. #include <bcm63xx_cpu.h>
  12. static struct resource rng_resources[] = {
  13. {
  14. .start = -1, /* filled at runtime */
  15. .end = -1, /* filled at runtime */
  16. .flags = IORESOURCE_MEM,
  17. },
  18. };
  19. static struct platform_device bcm63xx_rng_device = {
  20. .name = "bcm63xx-rng",
  21. .id = -1,
  22. .num_resources = ARRAY_SIZE(rng_resources),
  23. .resource = rng_resources,
  24. };
  25. int __init bcm63xx_rng_register(void)
  26. {
  27. if (!BCMCPU_IS_6368())
  28. return -ENODEV;
  29. rng_resources[0].start = bcm63xx_regset_address(RSET_RNG);
  30. rng_resources[0].end = rng_resources[0].start;
  31. rng_resources[0].end += RSET_RNG_SIZE - 1;
  32. return platform_device_register(&bcm63xx_rng_device);
  33. }
  34. arch_initcall(bcm63xx_rng_register);