[PATCH 2/7] ARM i.MX5: Add IPU device support

Jason Chen weitway at gmail.com
Thu Apr 14 08:40:33 EDT 2011


2011/4/14 Sascha Hauer <s.hauer at pengutronix.de>:
> On Wed, Apr 13, 2011 at 11:53:31PM +0800, weitway at gmail.com wrote:
>> From: Jason Chen <b02280 at freescale.com>
>>
>> diff --git a/arch/arm/plat-mxc/devices/platform-imx_ipuv3.c b/arch/arm/plat-mxc/devices/platform-imx_ipuv3.c
>> new file mode 100644
>> index 0000000..fe76cf1
>> --- /dev/null
>> +++ b/arch/arm/plat-mxc/devices/platform-imx_ipuv3.c
>> @@ -0,0 +1,94 @@
>> +/*
>> + * Copyright (C) 2010 Pengutronix
>> + * Uwe Kleine-Koenig <u.kleine-koenig at pengutronix.de>
>> + *
>> + * This program is free software; you can redistribute it and/or modify it under
>> + * the terms of the GNU General Public License version 2 as published by the
>> + * Free Software Foundation.
>> + */
>> +#include <mach/hardware.h>
>> +#include <mach/devices-common.h>
>> +
>> +#define imx5_ipuv3_data_entry_single(soc, size, ipu_init)            \
>> +     {                                                               \
>> +             .iobase = soc ## _IPU_CTRL_BASE_ADDR,                   \
>> +             .irq_err = soc ## _INT_IPU_ERR,                         \
>> +             .irq = soc ## _INT_IPU_SYN,                             \
>> +             .iosize = size,                                         \
>> +             .init = ipu_init,                                       \
>> +     }
>> +
>> +#ifdef CONFIG_SOC_IMX51
>> +int __init mx51_ipuv3_init(struct platform_device *pdev)
>> +{
>> +     int ret = 0;
>> +     u32 val;
>> +
>> +     /* hard reset the IPU */
>> +     val = readl(MX51_IO_ADDRESS(MX51_SRC_BASE_ADDR));
>> +     val |= 1 << 3;
>> +     writel(val, MX51_IO_ADDRESS(MX51_SRC_BASE_ADDR));
>> +
>> +     return ret;
>> +}
>> +
>> +const struct imx_ipuv3_data imx51_ipuv3_data __initconst =
>> +                     imx5_ipuv3_data_entry_single(MX51,
>> +                     SZ_512M, mx51_ipuv3_init);
>> +#endif /* ifdef CONFIG_SOC_IMX51 */
>> +
>> +#ifdef CONFIG_SOC_IMX53
>> +int __init mx53_ipuv3_init(struct platform_device *pdev)
>> +{
>> +     int ret = 0;
>> +     u32 val;
>> +     int i;
>> +
>> +     /* fixup ipu base address */
>> +     for (i = 0; i < pdev->num_resources; i++) {
>> +             struct resource *r = &pdev->resource[i];
>> +
>> +             if (IORESOURCE_MEM == resource_type(r))
>> +                     r->start -= 0x18000000;
>> +     }
>
> This is ugly. We should rather use IPU_CM_REG_BASE directly for the
> resources and remove the offsets from the IPU driver.
>
ok
> Sascha
>
>
> --
> Pengutronix e.K.                           |                             |
> Industrial Linux Solutions                 | http://www.pengutronix.de/  |
> Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
> Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |
>



More information about the linux-arm-kernel mailing list