515_wifi.patch 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
  2. index f7961b22e051..c3f51e123990 100644
  3. --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
  4. +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
  5. @@ -4431,6 +4431,55 @@ brcmf_sdio_prepare_fw_request(struct brcmf_sdio *bus)
  6. return fwreq;
  7. }
  8. +static char brcmf_fw_name[BRCMF_FW_NAME_LEN];
  9. +
  10. +#ifdef CONFIG_PROC_FS
  11. +#include <linux/proc_fs.h>
  12. +
  13. +static int brcmf_sdio_proc_show(struct seq_file *m, void *v)
  14. +{
  15. + seq_printf(m, "brcmf_sdio\n");
  16. + return 0;
  17. +}
  18. +
  19. +static int brcmf_sdio_proc_open(struct inode *inode, struct file *file)
  20. +{
  21. + return single_open(file, brcmf_sdio_proc_show, NULL);
  22. +}
  23. +
  24. +static ssize_t brcmf_sdio_proc_read(struct file * file, char __user * buf, size_t size, loff_t * loff)
  25. +{
  26. + int len;
  27. + len = strlen(brcmf_fw_name);
  28. + return simple_read_from_buffer(buf, size, loff, brcmf_fw_name, len);
  29. +}
  30. +
  31. +static ssize_t brcmf_sdio_proc_write(struct file * file, const char __user * buf, size_t size, loff_t * loff)
  32. +{
  33. + return size;
  34. +}
  35. +
  36. +static const struct proc_ops brcmf_sdio_proc_fops = {
  37. + .proc_open = brcmf_sdio_proc_open,
  38. + .proc_read = brcmf_sdio_proc_read,
  39. + .proc_write = brcmf_sdio_proc_write,
  40. + .proc_lseek = seq_lseek,
  41. + .proc_release = single_release,
  42. +};
  43. +
  44. +static int __init brcmf_sdio_proc_init(void)
  45. +{
  46. + struct proc_dir_entry *r;
  47. +
  48. + r = proc_create("driver/brcmf_fw", S_IRWXUGO, NULL, &brcmf_sdio_proc_fops);
  49. + if (!r)
  50. + return -ENOMEM;
  51. + return 0;
  52. +}
  53. +#else
  54. +static inline int brcmf_sdio_proc_init(void) { return 0; }
  55. +#endif /* CONFIG_PROC_FS */
  56. +
  57. struct brcmf_sdio *brcmf_sdio_probe(struct brcmf_sdio_dev *sdiodev)
  58. {
  59. int ret;
  60. @@ -4439,6 +4488,7 @@ struct brcmf_sdio *brcmf_sdio_probe(struct brcmf_sdio_dev *sdiodev)
  61. struct brcmf_fw_request *fwreq;
  62. brcmf_dbg(TRACE, "Enter\n");
  63. + msleep(1000);
  64. /* Allocate private bus interface state */
  65. bus = kzalloc(sizeof(struct brcmf_sdio), GFP_ATOMIC);
  66. @@ -4533,6 +4583,9 @@ struct brcmf_sdio *brcmf_sdio_probe(struct brcmf_sdio_dev *sdiodev)
  67. goto fail;
  68. }
  69. + sprintf(brcmf_fw_name, "%s\n", sdiodev->fw_name);
  70. + brcmf_sdio_proc_init();
  71. +
  72. return bus;
  73. fail: