mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 03:01:39 -04:00
Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc
* 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc: (28 commits) powerpc: Fix oops when loading modules powerpc: Wire up preadv and pwritev powerpc/ftrace: Fix printf format warning powerpc/ftrace: Fix #if that should be #ifdef powerpc: Fix ptrace compat wrapper for FPU register access powerpc: Print information about mapping hw irqs to virtual irqs powerpc: Correct dependency of KEXEC powerpc: Disable VSX or current process in giveup_fpu/altivec powerpc/pseries: Enable relay in pseries_defconfig powerpc/pseries: Fix ibm,client-architecture comment powerpc/pseries: Scan for all events in rtasd powerpc/pseries: Add dispatch dispersion statistics powerpc: Clean up some prom printouts powerpc: Print progress of ibm,client-architecture method powerpc: Remove duplicated #include's powerpc/pmac: Fix internal modem IRQ on Wallstreet PowerBook powerpc/wdrtas: Update wdrtas_get_interval to use rtas_data_buf fsl-diu-fb: Pass the proper device for dma mapping routines powerpc/pq2fads: Update device tree for use with device-tree-aware u-boot. cpm_uart: Disable CPM udbg when re-initing CPM uart, even if not the console. ...
This commit is contained in:
commit
44d84afa83
36 changed files with 235 additions and 123 deletions
|
|
@ -1352,14 +1352,15 @@ static int fsl_diu_resume(struct of_device *ofdev)
|
|||
#endif /* CONFIG_PM */
|
||||
|
||||
/* Align to 64-bit(8-byte), 32-byte, etc. */
|
||||
static int allocate_buf(struct diu_addr *buf, u32 size, u32 bytes_align)
|
||||
static int allocate_buf(struct device *dev, struct diu_addr *buf, u32 size,
|
||||
u32 bytes_align)
|
||||
{
|
||||
u32 offset, ssize;
|
||||
u32 mask;
|
||||
dma_addr_t paddr = 0;
|
||||
|
||||
ssize = size + bytes_align;
|
||||
buf->vaddr = dma_alloc_coherent(NULL, ssize, &paddr, GFP_DMA |
|
||||
buf->vaddr = dma_alloc_coherent(dev, ssize, &paddr, GFP_DMA |
|
||||
__GFP_ZERO);
|
||||
if (!buf->vaddr)
|
||||
return -ENOMEM;
|
||||
|
|
@ -1376,9 +1377,10 @@ static int allocate_buf(struct diu_addr *buf, u32 size, u32 bytes_align)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static void free_buf(struct diu_addr *buf, u32 size, u32 bytes_align)
|
||||
static void free_buf(struct device *dev, struct diu_addr *buf, u32 size,
|
||||
u32 bytes_align)
|
||||
{
|
||||
dma_free_coherent(NULL, size + bytes_align,
|
||||
dma_free_coherent(dev, size + bytes_align,
|
||||
buf->vaddr, (buf->paddr - buf->offset));
|
||||
return;
|
||||
}
|
||||
|
|
@ -1476,17 +1478,19 @@ static int __devinit fsl_diu_probe(struct of_device *ofdev,
|
|||
machine_data->monitor_port = monitor_port;
|
||||
|
||||
/* Area descriptor memory pool aligns to 64-bit boundary */
|
||||
if (allocate_buf(&pool.ad, sizeof(struct diu_ad) * FSL_AOI_NUM, 8))
|
||||
if (allocate_buf(&ofdev->dev, &pool.ad,
|
||||
sizeof(struct diu_ad) * FSL_AOI_NUM, 8))
|
||||
return -ENOMEM;
|
||||
|
||||
/* Get memory for Gamma Table - 32-byte aligned memory */
|
||||
if (allocate_buf(&pool.gamma, 768, 32)) {
|
||||
if (allocate_buf(&ofdev->dev, &pool.gamma, 768, 32)) {
|
||||
ret = -ENOMEM;
|
||||
goto error;
|
||||
}
|
||||
|
||||
/* For performance, cursor bitmap buffer aligns to 32-byte boundary */
|
||||
if (allocate_buf(&pool.cursor, MAX_CURS * MAX_CURS * 2, 32)) {
|
||||
if (allocate_buf(&ofdev->dev, &pool.cursor, MAX_CURS * MAX_CURS * 2,
|
||||
32)) {
|
||||
ret = -ENOMEM;
|
||||
goto error;
|
||||
}
|
||||
|
|
@ -1554,11 +1558,13 @@ error:
|
|||
i > 0; i--)
|
||||
uninstall_fb(machine_data->fsl_diu_info[i - 1]);
|
||||
if (pool.ad.vaddr)
|
||||
free_buf(&pool.ad, sizeof(struct diu_ad) * FSL_AOI_NUM, 8);
|
||||
free_buf(&ofdev->dev, &pool.ad,
|
||||
sizeof(struct diu_ad) * FSL_AOI_NUM, 8);
|
||||
if (pool.gamma.vaddr)
|
||||
free_buf(&pool.gamma, 768, 32);
|
||||
free_buf(&ofdev->dev, &pool.gamma, 768, 32);
|
||||
if (pool.cursor.vaddr)
|
||||
free_buf(&pool.cursor, MAX_CURS * MAX_CURS * 2, 32);
|
||||
free_buf(&ofdev->dev, &pool.cursor, MAX_CURS * MAX_CURS * 2,
|
||||
32);
|
||||
if (machine_data->dummy_aoi_virt)
|
||||
fsl_diu_free(machine_data->dummy_aoi_virt, 64);
|
||||
iounmap(dr.diu_reg);
|
||||
|
|
@ -1584,11 +1590,13 @@ static int fsl_diu_remove(struct of_device *ofdev)
|
|||
for (i = ARRAY_SIZE(machine_data->fsl_diu_info); i > 0; i--)
|
||||
uninstall_fb(machine_data->fsl_diu_info[i - 1]);
|
||||
if (pool.ad.vaddr)
|
||||
free_buf(&pool.ad, sizeof(struct diu_ad) * FSL_AOI_NUM, 8);
|
||||
free_buf(&ofdev->dev, &pool.ad,
|
||||
sizeof(struct diu_ad) * FSL_AOI_NUM, 8);
|
||||
if (pool.gamma.vaddr)
|
||||
free_buf(&pool.gamma, 768, 32);
|
||||
free_buf(&ofdev->dev, &pool.gamma, 768, 32);
|
||||
if (pool.cursor.vaddr)
|
||||
free_buf(&pool.cursor, MAX_CURS * MAX_CURS * 2, 32);
|
||||
free_buf(&ofdev->dev, &pool.cursor, MAX_CURS * MAX_CURS * 2,
|
||||
32);
|
||||
if (machine_data->dummy_aoi_virt)
|
||||
fsl_diu_free(machine_data->dummy_aoi_virt, 64);
|
||||
iounmap(dr.diu_reg);
|
||||
|
|
|
|||
Loading…
Reference in a new issue