Lines Matching refs:data
345 * struct fsl_diu_data - per-DIU data structure
357 * @cursor: hardware cursor data
363 * This data structure must be allocated with 32-byte alignment, so that the
379 /* It's easier to parse the cursor data as little-endian */
381 /* Blank cursor data -- used to hide the cursor */
383 /* Scratch cursor data -- used to build new cursor */
504 struct fsl_diu_data *data = mfbi->parent;
505 struct diu __iomem *hw = data->diu_reg;
512 cmfbi = &data->mfb[2];
523 cmfbi = &data->mfb[4];
534 pmfbi = &data->mfb[1];
536 if (hw->desc[1] == data->dummy_ad.paddr)
542 pmfbi = &data->mfb[3];
544 if (hw->desc[2] == data->dummy_ad.paddr)
556 struct fsl_diu_data *data = mfbi->parent;
557 struct diu __iomem *hw = data->diu_reg;
564 cmfbi = &data->mfb[2];
569 wr_reg_wa(&hw->desc[1], data->dummy_ad.paddr);
573 cmfbi = &data->mfb[4];
578 wr_reg_wa(&hw->desc[2], data->dummy_ad.paddr);
582 pmfbi = &data->mfb[1];
589 wr_reg_wa(&hw->desc[1], data->dummy_ad.paddr);
593 pmfbi = &data->mfb[3];
600 wr_reg_wa(&hw->desc[2], data->dummy_ad.paddr);
609 struct fsl_diu_data *data = mfbi->parent;
610 struct diu __iomem *hw = data->diu_reg;
618 struct fsl_diu_data *data = mfbi->parent;
619 struct diu __iomem *hw = data->diu_reg;
628 struct fsl_diu_data *data = mfbi->parent;
634 base_plane_width = data->fsl_diu_info[0].var.xres;
635 base_plane_height = data->fsl_diu_info[0].var.yres;
650 lower_aoi_mfbi = data->fsl_diu_info[index+1].par;
668 upper_aoi_mfbi = data->fsl_diu_info[index-1].par;
669 upper_aoi_height = data->fsl_diu_info[index-1].var.yres;
803 struct fsl_diu_data *data = mfbi->parent;
810 hw = data->diu_reg;
813 diu_ops.set_monitor_port(data->monitor_port);
814 gamma_table_base = data->gamma;
823 diu_ops.set_gamma_table(data->monitor_port, data->gamma);
829 out_be32(&hw->gamma, DMA_ADDR(data, gamma));
976 * Cursor data is represented as a sequence of 'width' bits packed into bytes.
979 * 7) / 8 bytes of 'data'
988 * is 24x24, then the first three bytes of 'image' contain the pixel data for
999 struct fsl_diu_data *data = mfbi->parent;
1000 __le16 *cursor = data->cursor;
1020 * Set a hardware cursor. The image data for the cursor is passed via the
1026 struct fsl_diu_data *data = mfbi->parent;
1027 struct diu __iomem *hw = data->diu_reg;
1037 * all the image data, in expectation of new data. However,
1041 memset(data->cursor, 0, sizeof(data->cursor));
1061 * Determine the size of the cursor image data. Normally,
1088 /* Use 32-bit operations on the data to improve performance */
1089 image = (uint32_t *)data->next_cursor;
1090 source = (uint32_t *)cursor->image.data;
1105 * Show or hide the cursor. The cursor data is always stored in the
1109 * redirect the CURSOR register to the real cursor data.
1112 out_be32(&hw->cursor, DMA_ADDR(data, cursor));
1114 out_be32(&hw->cursor, DMA_ADDR(data, blank_cursor));
1123 * data. This means we depend on the data in var inside fb_info to be
1132 struct fsl_diu_data *data = mfbi->parent;
1136 hw = data->diu_reg;
1154 ad->pix_fmt = diu_ops.get_pixel_format(data->monitor_port,
1362 struct fsl_diu_data *data = mfbi->parent;
1364 if (copy_from_user(data->gamma, buf, sizeof(data->gamma)))
1366 setbits32(&data->diu_reg->gamma, 0); /* Force table reload */
1370 struct fsl_diu_data *data = mfbi->parent;
1372 if (copy_to_user(buf, data->gamma, sizeof(data->gamma)))
1385 static inline void fsl_diu_enable_interrupts(struct fsl_diu_data *data)
1392 clrbits32(&data->diu_reg->int_mask, int_mask);
1433 struct fsl_diu_data *data = mfbi->parent;
1439 struct mfb_info *mi = data->fsl_diu_info[i].par;
1445 out_be32(&data->diu_reg->int_mask, 0xffffffff);
1472 struct fsl_diu_data *data = mfbi->parent;
1489 if (data->has_edid) {
1491 fb_edid_to_monspecs(data->edid_data, &info->monspecs);
1509 if ((mfbi->index == PLANE0) && data->has_edid)
1615 struct fsl_diu_data *data;
1617 data = dev_get_drvdata(&ofdev->dev);
1618 disable_lcdc(data->fsl_diu_info);
1625 struct fsl_diu_data *data;
1628 data = dev_get_drvdata(&ofdev->dev);
1630 fsl_diu_enable_interrupts(data);
1631 update_lcdc(data->fsl_diu_info);
1633 if (data->mfb[i].count)
1634 fsl_diu_enable_panel(&data->fsl_diu_info[i]);
1649 struct fsl_diu_data *data =
1652 old_monitor_port = data->monitor_port;
1653 data->monitor_port = fsl_diu_name_to_port(buf);
1655 if (old_monitor_port != data->monitor_port) {
1662 fsl_diu_set_par(&data->fsl_diu_info[i]);
1670 struct fsl_diu_data *data =
1673 switch (data->monitor_port) {
1689 struct fsl_diu_data *data;
1695 data = dmam_alloc_coherent(&pdev->dev, sizeof(struct fsl_diu_data),
1697 if (!data)
1699 data->dma_addr = dma_addr;
1708 if ((unsigned long)data & 31) {
1714 spin_lock_init(&data->reg_lock);
1717 struct fb_info *info = &data->fsl_diu_info[i];
1720 info->par = &data->mfb[i];
1726 data->ad[i].paddr = DMA_ADDR(data, ad[i]);
1730 /* Initialize the AOI data structure */
1733 mfbi->parent = data;
1734 mfbi->ad = &data->ad[i];
1737 /* Get the EDID data from the device tree, if present */
1740 memcpy(data->edid_data, prop, EDID_LENGTH);
1741 data->has_edid = true;
1744 data->diu_reg = of_iomap(np, 0);
1745 if (!data->diu_reg) {
1752 data->irq = irq_of_parse_and_map(np, 0);
1754 if (!data->irq) {
1759 data->monitor_port = monitor_port;
1762 data->dummy_ad.addr = cpu_to_le32(DMA_ADDR(data, dummy_aoi));
1763 data->dummy_ad.pix_fmt = 0x88882317;
1764 data->dummy_ad.src_size_g_alpha = cpu_to_le32((4 << 12) | 4);
1765 data->dummy_ad.aoi_size = cpu_to_le32((4 << 16) | 2);
1766 data->dummy_ad.offset_xyi = 0;
1767 data->dummy_ad.offset_xyd = 0;
1768 data->dummy_ad.next_ad = 0;
1769 data->dummy_ad.paddr = DMA_ADDR(data, dummy_ad);
1775 if (in_be32(&data->diu_reg->diu_mode) == MFB_MODE0)
1776 out_be32(&data->diu_reg->desc[0], 0);
1778 out_be32(&data->diu_reg->desc[1], data->dummy_ad.paddr);
1779 out_be32(&data->diu_reg->desc[2], data->dummy_ad.paddr);
1785 out_be32(&data->diu_reg->int_mask, 0xffffffff);
1786 in_be32(&data->diu_reg->int_status);
1788 ret = request_irq(data->irq, fsl_diu_isr, 0, "fsl-diu-fb",
1789 data->diu_reg);
1796 ret = install_fb(&data->fsl_diu_info[i]);
1799 free_irq(data->irq, data->diu_reg);
1804 sysfs_attr_init(&data->dev_attr.attr);
1805 data->dev_attr.attr.name = "monitor";
1806 data->dev_attr.attr.mode = S_IRUGO|S_IWUSR;
1807 data->dev_attr.show = show_monitor;
1808 data->dev_attr.store = store_monitor;
1809 ret = device_create_file(&pdev->dev, &data->dev_attr);
1812 data->dev_attr.attr.name);
1815 dev_set_drvdata(&pdev->dev, data);
1820 uninstall_fb(&data->fsl_diu_info[i]);
1822 iounmap(data->diu_reg);
1829 struct fsl_diu_data *data;
1832 data = dev_get_drvdata(&pdev->dev);
1833 disable_lcdc(&data->fsl_diu_info[0]);
1835 free_irq(data->irq, data->diu_reg);
1838 uninstall_fb(&data->fsl_diu_info[i]);
1840 iounmap(data->diu_reg);
1945 pr_debug("fsl-diu-fb: coherence data size is %zu bytes\n",