Lines Matching refs:mdev_state

90 struct mdev_state {
112 static void mdpy_create_config_space(struct mdev_state *mdev_state)
114 STORE_LE16((u16 *) &mdev_state->vconfig[PCI_VENDOR_ID],
116 STORE_LE16((u16 *) &mdev_state->vconfig[PCI_DEVICE_ID],
118 STORE_LE16((u16 *) &mdev_state->vconfig[PCI_SUBSYSTEM_VENDOR_ID],
120 STORE_LE16((u16 *) &mdev_state->vconfig[PCI_SUBSYSTEM_ID],
123 STORE_LE16((u16 *) &mdev_state->vconfig[PCI_COMMAND],
125 STORE_LE16((u16 *) &mdev_state->vconfig[PCI_STATUS],
127 STORE_LE16((u16 *) &mdev_state->vconfig[PCI_CLASS_DEVICE],
129 mdev_state->vconfig[PCI_CLASS_REVISION] = 0x01;
131 STORE_LE32((u32 *) &mdev_state->vconfig[PCI_BASE_ADDRESS_0],
135 mdev_state->bar_mask = ~(mdev_state->memsize) + 1;
138 mdev_state->vconfig[PCI_CAPABILITY_LIST] = MDPY_VENDORCAP_OFFSET;
139 mdev_state->vconfig[MDPY_VENDORCAP_OFFSET + 0] = 0x09; /* vendor cap */
140 mdev_state->vconfig[MDPY_VENDORCAP_OFFSET + 1] = 0x00; /* next ptr */
141 mdev_state->vconfig[MDPY_VENDORCAP_OFFSET + 2] = MDPY_VENDORCAP_SIZE;
142 STORE_LE32((u32 *) &mdev_state->vconfig[MDPY_FORMAT_OFFSET],
143 mdev_state->type->format);
144 STORE_LE32((u32 *) &mdev_state->vconfig[MDPY_WIDTH_OFFSET],
145 mdev_state->type->width);
146 STORE_LE32((u32 *) &mdev_state->vconfig[MDPY_HEIGHT_OFFSET],
147 mdev_state->type->height);
150 static void handle_pci_cfg_write(struct mdev_state *mdev_state, u16 offset,
153 struct device *dev = mdev_dev(mdev_state->mdev);
161 cfg_addr = (cfg_addr & mdev_state->bar_mask);
168 cfg_addr |= (mdev_state->vconfig[offset] &
170 STORE_LE32(&mdev_state->vconfig[offset], cfg_addr);
178 struct mdev_state *mdev_state = mdev_get_drvdata(mdev);
182 mutex_lock(&mdev_state->ops_lock);
186 handle_pci_cfg_write(mdev_state, pos, buf, count);
188 memcpy(buf, (mdev_state->vconfig + pos), count);
192 MDPY_MEMORY_BAR_OFFSET + mdev_state->memsize)) {
195 memcpy(mdev_state->memblk, buf, count);
197 memcpy(buf, mdev_state->memblk, count);
210 mutex_unlock(&mdev_state->ops_lock);
217 struct mdev_state *mdev_state = mdev_get_drvdata(mdev);
221 stride = mdev_state->type->width * mdev_state->type->bytepp;
222 for (i = 0; i < mdev_state->type->height; i++)
223 memset(mdev_state->memblk + i * stride,
224 i * 255 / mdev_state->type->height,
233 struct mdev_state *mdev_state;
239 mdev_state = kzalloc(sizeof(struct mdev_state), GFP_KERNEL);
240 if (mdev_state == NULL)
243 mdev_state->vconfig = kzalloc(MDPY_CONFIG_SPACE_SIZE, GFP_KERNEL);
244 if (mdev_state->vconfig == NULL) {
245 kfree(mdev_state);
253 mdev_state->memblk = vmalloc_user(fbsize);
254 if (!mdev_state->memblk) {
255 kfree(mdev_state->vconfig);
256 kfree(mdev_state);
262 mutex_init(&mdev_state->ops_lock);
263 mdev_state->mdev = mdev;
264 mdev_set_drvdata(mdev, mdev_state);
266 mdev_state->type = type;
267 mdev_state->memsize = fbsize;
268 mdpy_create_config_space(mdev_state);
277 struct mdev_state *mdev_state = mdev_get_drvdata(mdev);
283 vfree(mdev_state->memblk);
284 kfree(mdev_state->vconfig);
285 kfree(mdev_state);
409 struct mdev_state *mdev_state = mdev_get_drvdata(mdev);
415 if (vma->vm_end - vma->vm_start > mdev_state->memsize)
421 mdev_state->memblk, 0,
429 struct mdev_state *mdev_state;
431 mdev_state = mdev_get_drvdata(mdev);
432 if (!mdev_state)
449 region_info->size = mdev_state->memsize;
482 struct mdev_state *mdev_state = mdev_get_drvdata(mdev);
494 plane->drm_format = mdev_state->type->format;
495 plane->width = mdev_state->type->width;
496 plane->height = mdev_state->type->height;
497 plane->stride = (mdev_state->type->width *
498 mdev_state->type->bytepp);
499 plane->size = mdev_state->memsize;
517 struct mdev_state *mdev_state;
519 mdev_state = mdev_get_drvdata(mdev);
538 memcpy(&mdev_state->dev_info, &info, sizeof(info));
580 (info.index >= mdev_state->dev_info.num_irqs))
643 struct mdev_state *mdev_state = mdev_get_drvdata(mdev);
646 mdev_state->type->width,
647 mdev_state->type->height);