Lines Matching refs:blk

87     struct Virtblk *blk = dev;
88 struct VirtblkConfig *conf = (void *)(blk->dev.base + VIRTMMIO_REG_CONFIG);
96 blk->blkSize = VIRTBLK_DEF_BLK_SIZE;
101 blk->blkSize = bs;
106 blk->capacity = conf->capacity;
123 static void PopulateRequestQ(const struct Virtblk *blk)
125 const struct Virtq *q = &blk->dev.vq[0];
128 q->desc[i].pAddr = VMM_TO_DMA_ADDR((VADDR_T)&blk->req);
137 q->desc[i].pAddr = VMM_TO_DMA_ADDR((VADDR_T)&blk->resp);
142 static uint8_t VirtblkIO(struct Virtblk *blk, uint32_t cmd, uint64_t startSector,
146 struct Virtq *q = &blk->dev.vq[0];
149 blk->req.type = cmd;
150 blk->req.startSector = startSector;
161 OSAL_WRITEL(0, blk->dev.base + VIRTMMIO_REG_QUEUENOTIFY);
164 if ((ret = DmaEventWait(&blk->event, 1, HDF_WAIT_FOREVER)) != 1) {
169 return blk->resp;
175 struct Virtblk *blk = dev;
176 struct Virtq *q = &blk->dev.vq[0];
178 if (!(OSAL_READL(blk->dev.base + VIRTMMIO_REG_INTERRUPTSTATUS) & VIRTMMIO_IRQ_NOTIFY_USED)) {
182 (void)DmaEventSignal(&blk->event, 1);
185 OSAL_WRITEL(VIRTMMIO_IRQ_NOTIFY_USED, blk->dev.base + VIRTMMIO_REG_INTERRUPTACK);
189 static void VirtblkDeInit(struct Virtblk *blk)
191 if (blk->dev.irq & ~_IRQ_MASK) {
192 OsalUnregisterIrq(blk->dev.irq & _IRQ_MASK, blk);
194 LOS_DmaMemFree(blk);
199 struct Virtblk *blk = NULL;
205 if ((blk = LOS_DmaMemAlloc(NULL, len, sizeof(void *), DMA_CACHE)) == NULL) {
209 memset_s(blk, len, 0, len);
211 if (!VirtmmioDiscover(VIRTMMIO_DEVICE_ID_BLK, &blk->dev)) {
215 VirtmmioInitBegin(&blk->dev);
216 if (!VirtmmioNegotiate(&blk->dev, Feature0, Feature1, blk)) {
219 base = ALIGN((VADDR_T)blk + sizeof(struct Virtblk), VIRTQ_ALIGN_DESC);
221 if (VirtmmioConfigQueue(&blk->dev, base, &qsz, 1) == 0) {
225 if ((ret = DmaEventInit(&blk->event)) != HDF_SUCCESS) {
229 ret = OsalRegisterIrq(blk->dev.irq, OSAL_IRQF_TRIGGER_NONE, (OsalIRQHandle)VirtblkIRQhandle,
230 VIRTMMIO_BLK_NAME, blk);
235 blk->dev.irq |= ~_IRQ_MASK;
237 PopulateRequestQ(blk);
238 VritmmioInitEnd(&blk->dev); /* now virt queue can be used */
239 return blk;
242 VirtmmioInitFailed(&blk->dev);
244 VirtblkDeInit(blk);
297 static void VirtMmcFillRespCid(struct MmcCmd *cmd, const struct Virtblk *blk)
305 *(uint32_t *)&b[MMC_CID_PSN_SBYTE] = (uint32_t)blk; /* unique sn */
353 static void VirtMmcFillRespCsd(struct MmcCmd *cmd, const struct Virtblk *blk)
363 if (blk->capacity > CAPACITY_2G) {
364 uint32_t e = U32_BITS - __builtin_clz(blk->blkSize) - 1;
371 uint32_t size = blk->capacity*MMC_SEC_SIZE / (1<<READ_BL_LEN) / (1<<(C_SIZE_MULT+2)) - 1;
387 static void VirtMmcFillDataExtCsd(const struct MmcCmd *cmd, const struct Virtblk *blk)
392 b[EMMC_EXT_CSD_ACC_SIZE] = blk->blkSize / MMC_SEC_SIZE;
393 b[EMMC_EXT_CSD_REL_WR_SEC_C] = blk->blkSize / MMC_SEC_SIZE;
394 *(uint32_t*)&b[EMMC_EXT_CSD_SEC_CNT] = blk->capacity;
413 struct Virtblk *blk = cntlr->priv;
427 ret = VirtblkIO(blk, io, startSector, cmd->data->dataBuffer, cmd->data->blockNum);
443 struct Virtblk *blk = cntlr->priv;
450 if (blk->capacity > CAPACITY_2G) {
458 VirtMmcFillRespCid(cmd, blk);
461 VirtMmcFillDataExtCsd(cmd, blk);
470 VirtMmcFillRespCsd(cmd, blk);
510 struct Virtblk *blk = cntlr->priv;
512 if (blk) {
513 VirtblkDeInit(blk);
527 struct Virtblk *blk = NULL;
541 if ((blk = VirtblkInitDev()) == NULL) {
548 cntlr->priv = blk;