bcmf_core.h 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. /****************************************************************************
  2. * drivers/wireless/ieee80211/bcmf_core.h
  3. *
  4. * Copyright (C) 2017 Gregory Nutt. All rights reserved.
  5. * Author: Simon Piriou <spiriou31@gmail.com>
  6. *
  7. * Redistribution and use in source and binary forms, with or without
  8. * modification, are permitted provided that the following conditions
  9. * are met:
  10. *
  11. * 1. Redistributions of source code must retain the above copyright
  12. * notice, this list of conditions and the following disclaimer.
  13. * 2. Redistributions in binary form must reproduce the above copyright
  14. * notice, this list of conditions and the following disclaimer in
  15. * the documentation and/or other materials provided with the
  16. * distribution.
  17. * 3. Neither the name NuttX nor the names of its contributors may be
  18. * used to endorse or promote products derived from this software
  19. * without specific prior written permission.
  20. *
  21. * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  22. * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  23. * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
  24. * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
  25. * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
  26. * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
  27. * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
  28. * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
  29. * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  30. * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
  31. * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  32. * POSSIBILITY OF SUCH DAMAGE.
  33. *
  34. ****************************************************************************/
  35. #ifndef __DRIVERS_WIRELESS_IEEE80211_BCMF_CORE_H
  36. #define __DRIVERS_WIRELESS_IEEE80211_BCMF_CORE_H
  37. #include <stdint.h>
  38. #include <stdbool.h>
  39. #include "bcmf_sdio.h"
  40. int bcmf_read_sbreg(FAR struct bcmf_sdio_dev_s *sbus, uint32_t address,
  41. uint8_t *reg, unsigned int len);
  42. int bcmf_write_sbreg(FAR struct bcmf_sdio_dev_s *sbus, uint32_t address,
  43. uint8_t *reg, unsigned int len);
  44. bool bcmf_core_isup(FAR struct bcmf_sdio_dev_s *sbus, unsigned int core);
  45. void bcmf_core_disable(FAR struct bcmf_sdio_dev_s *sbus, unsigned int core);
  46. void bcmf_core_reset(FAR struct bcmf_sdio_dev_s *sbus, unsigned int core);
  47. int bcmf_core_upload_firmware(FAR struct bcmf_sdio_dev_s *sbus);
  48. static inline int bcmf_read_sbregb(FAR struct bcmf_sdio_dev_s *sbus,
  49. uint32_t address, uint8_t *reg)
  50. {
  51. return bcmf_read_sbreg(sbus, address, reg, 1);
  52. }
  53. static inline int bcmf_read_sbregw(FAR struct bcmf_sdio_dev_s *sbus,
  54. uint32_t address, uint32_t *reg)
  55. {
  56. return bcmf_read_sbreg(sbus, address, (uint8_t *)reg, 4);
  57. }
  58. static inline int bcmf_write_sbregb(FAR struct bcmf_sdio_dev_s *sbus,
  59. uint32_t address, uint8_t reg)
  60. {
  61. return bcmf_write_sbreg(sbus, address, &reg, 1);
  62. }
  63. static inline int bcmf_write_sbregw(FAR struct bcmf_sdio_dev_s *sbus,
  64. uint32_t address, uint32_t reg)
  65. {
  66. return bcmf_write_sbreg(sbus, address, (uint8_t *)&reg, 4);
  67. }
  68. #endif /* __DRIVERS_WIRELESS_IEEE80211_BCMF_CORE_H */