Lines Matching +full:no +full:- +full:sdio

1 /*-
2 * Copyright (c) 2016-2017 Ilya Bakulin
17 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
34 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
79 …() which is defined as probe function in struct sdio_driver. http://lxr.free-electrons.com/source/…
83 …* ops_sdio_probe() then calls brcmf_sdio_probe() -- at this point it has filled in sdiodev struct …
85 …ts F1 block size to 64 and F2 to 512, not consulting the values stored in SDIO CCCR / FBR registe…
89 …alls brcmf_sdio_probe() http://lxr.free-electrons.com/source/drivers/net/wireless/broadcom/brcm802…
91 * Here high-level workqueues and sg tables are allocated.
96 * Then turns off PLL: byte-write BRCMF_INIT_CLKCTL1 (0x28) -> SBSDIO_FUNC1_CHIPCLKCSR (0x1000E)
100 …* http://lxr.free-electrons.com/source/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c#L10…
102 * - brcmf_sdio_buscoreprep(): force clock to ALPAvail req only:
103 * SBSDIO_FORCE_HW_CLKREQ_OFF | SBSDIO_ALP_AVAIL_REQ -> SBSDIO_FUNC1_CHIPCLKCSR
106 * SBSDIO_FORCE_HW_CLKREQ_OFF | SBSDIO_FORCE_ALP (0x21)-> SBSDIO_FUNC1_CHIPCLKCSR
107 * Disaable SDIO pullups:
108 * byte 0 -> SBSDIO_FUNC1_SDIOPULLUP (0x0001000f)
111 * http://lxr.free-electrons.com/source/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c#L908
120 * http://lxr.free-electrons.com/source/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c#L700
124 …* http://lxr.free-electrons.com/source/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c#L10…
125 * Bus-specific setup code is NOP for SDIO.
131 …* http://lxr.free-electrons.com/source/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c#L36…
133 * Set card control so an SDIO card reset does a WLAN backplane reset
137 …*** Finished reading at http://lxr.free-electrons.com/source/drivers/net/wireless/broadcom/brcm802…
140 …* http://lxr.free-electrons.com/source/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c#L…
141 * The address to read from is written to three byte-sized registers of F1:
142 * - SBSDIO_FUNC1_SBADDRLOW 0x1000A
143 * - SBSDIO_FUNC1_SBADDRMID 0x1000B
144 * - SBSDIO_FUNC1_SBADDRHIGH 0x1000C
145 …* If this is 32-bit read , a flag is set. The address is ANDed with SBSDIO_SB_OFT_ADDR_MASK which …
147 …* http://lxr.free-electrons.com/source/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c#L…
150 * 1-byte IO is done with CMD52, more is read with CMD53 with address increment (not FIFO mode).
151 * http://lxr.free-electrons.com/source/drivers/mmc/core/sdio_io.c#L458
157 /* BRCM-specific functions */
193 bus->state = state; in brcmf_bus_change_state()
199 if (sdiodev->state == BRCMF_SDIOD_NOMEDIUM || in brcmf_sdiod_change_state()
200 state == sdiodev->state) in brcmf_sdiod_change_state()
203 //brcmf_dbg(TRACE, "%d -> %d\n", sdiodev->state, state); in brcmf_sdiod_change_state()
204 switch (sdiodev->state) { in brcmf_sdiod_change_state()
207 brcmf_bus_change_state(sdiodev->bus_if, BRCMF_BUS_DOWN); in brcmf_sdiod_change_state()
212 brcmf_bus_change_state(sdiodev->bus_if, BRCMF_BUS_UP); in brcmf_sdiod_change_state()
217 sdiodev->state = state; in brcmf_sdiod_change_state()
241 int ret = -EINVAL; in brcmf_sdiod_request_data()
243 brcmf_dbg(SDIO, "rw=%d, func=%d, addr=0x%05x, nbytes=%d\n", in brcmf_sdiod_request_data()
248 return -EINVAL; in brcmf_sdiod_request_data()
249 func = sdiodev->func[fn]; in brcmf_sdiod_request_data()
284 brcmf_dbg(SDIO, "failed to %s data F%d@0x%05x, err: %d\n", in brcmf_sdiod_request_data()
296 if (bar0 != sdiodev->sbwad) { in brcmf_sdiod_addrprep()
301 sdiodev->sbwad = bar0; in brcmf_sdiod_addrprep()
317 if (sdiodev->state == BRCMF_SDIOD_NOMEDIUM) in brcmf_sdiod_regrw_helper()
318 return -ENOMEDIUM; in brcmf_sdiod_regrw_helper()
339 } while (ret != 0 && ret != -ENOMEDIUM && in brcmf_sdiod_regrw_helper()
342 if (ret == -ENOMEDIUM) in brcmf_sdiod_regrw_helper()
354 brcmf_dbg(SDIO, "failed to %s data F%d@0x%05x, err: %d\n", in brcmf_sdiod_regrw_helper()
366 if (sdiodev->state == BRCMF_SDIOD_NOMEDIUM) in brcmf_sdiod_set_sbaddr_window()
367 return -ENOMEDIUM; in brcmf_sdiod_set_sbaddr_window()
392 brcmf_dbg(SDIO, "addr:0x%08x\n", addr); in brcmf_sdiod_regrl()
398 brcmf_dbg(SDIO, "data:0x%08x\n", data); in brcmf_sdiod_regrl()
425 const char fw_path[] = "/home/kibab/repos/fbsd-bbb/brcm-firmware/brcmfmac4330-sdio.bin"; in mmap_fw()
443 printf("sdiotool -u <pass_dev_unit>\n"); in usage()
453 * TODO: We should add SDIO card info about at least number of
466 sdio_func_read_cis(dev, 0, cis_addr, &ci->f[0]); in get_sdio_card_info()
468 ci->f[0].man_id, ci->f[0].prod_id, ci->f[0].max_block_size); in get_sdio_card_info()
474 sdio_func_read_cis(dev, i, cis_addr, &ci->f[i]); in get_sdio_card_info()
476 i, ci->f[i].man_id, ci->f[i].prod_id, ci->f[i].max_block_size); in get_sdio_card_info()
477 if (ci->f[i].man_id == 0) { in get_sdio_card_info()
481 ci->num_funcs++; in get_sdio_card_info()
498 while ((ch = getopt(argc, argv, "fu:")) != -1) { in main()
511 argc -= optind; in main()
519 /* For now, everything non-broadcom is out of the question */ in main()
538 brcmf_dev.func[0]->dev = brcmf_dev.func[1]->dev in main()
539 = brcmf_dev.func[2]->dev = cam_dev; in main()
540 brcmf_dev.func[0]->num = 0; in main()
541 brcmf_dev.func[1]->num = 1; in main()
542 brcmf_dev.func[2]->num = 2; in main()