[RFC v2 1/8] TILER-DMM: DMM-PAT driver for TI TILER
Varadarajan, Charulatha
charu at ti.com
Wed Dec 1 01:04:22 EST 2010
David,
On Wed, Dec 1, 2010 at 01:28, David Sin <davidsin at ti.com> wrote:
> This patch adds support for DMM-PAT initialization and programming.
>
> Signed-off-by: David Sin <davidsin at ti.com>
> Signed-off-by: Lajos Molnar <molnar at ti.com>
> ---
> arch/arm/mach-omap2/dmm-omap44xx.c | 81 ++++++++++++++
> arch/arm/mach-omap2/include/mach/dmm.h | 92 ++++++++++++++++
> drivers/misc/tiler/dmm-main.c | 187 ++++++++++++++++++++++++++++++++
> 3 files changed, 360 insertions(+), 0 deletions(-)
> create mode 100644 arch/arm/mach-omap2/dmm-omap44xx.c
> create mode 100644 arch/arm/mach-omap2/include/mach/dmm.h
> create mode 100644 drivers/misc/tiler/dmm-main.c
>
> diff --git a/arch/arm/mach-omap2/dmm-omap44xx.c b/arch/arm/mach-omap2/dmm-omap44xx.c
> new file mode 100644
> index 0000000..2919d8e
> --- /dev/null
> +++ b/arch/arm/mach-omap2/dmm-omap44xx.c
> @@ -0,0 +1,81 @@
> +/*
> + * DMM driver support functions for TI OMAP processors.
> + *
> + * Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com/
> + *
> + * This program is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU General Public License as
> + * published by the Free Software Foundation version 2.
> + *
> + * This program is distributed "as is" WITHOUT ANY WARRANTY of any
> + * kind, whether express or implied; without even the implied warranty
> + * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> + * GNU General Public License for more details.
> + */
> +
> +#include <linux/init.h>
> +#include <linux/module.h>
> +#include <mach/dmm.h>
> +#include <plat/omap_device.h>
> +#include <plat/omap_hwmod.h>
> +#include <linux/errno.h>
> +#include <linux/err.h>
> +
> +static struct dmm *plat_data;
> +static int pdata;
> +
> +#ifdef CONFIG_ARCH_OMAP4
Do not use these #ifdefs as it would not work as intended in multi-omap build.
This driver is making use of omap_hwmod fw. Try to take advantage of hwmod_fw
and avoid these checks.
> +static struct dmm omap4_plat_data[] = {
> + {
> + .oh_name = "dmm",
Do not use "oh_name" as it is confusing.
> + },
> +};
> +#define NUM_PDATA ARRAY_SIZE(omap4_plat_data)
> +#else
> +#define omap4_plat_data NULL
> +#define NUM_PDATA 0
> +#endif
> +
> +static struct omap_device_pm_latency omap_dmm_latency[] = {
> + [0] = {
> + .deactivate_func = omap_device_idle_hwmods,
> + .activate_func = omap_device_enable_hwmods,
> + .flags = OMAP_DEVICE_LATENCY_AUTO_ADJUST,
> + },
> +};
> +
> +static s32 __init dmm_omap_init(void)
> +{
> + struct omap_hwmod *oh = NULL;
> + struct omap_device *od = NULL;
> + struct omap_device_pm_latency *ohl = NULL;
Any specific reson for not assigning it directly to omap_dmm_latency?
I think this is redundant and omap_dmm_latency can be directly passed
to omap_device_build()
> + int ohlc = 0, i = 0;
> +
> + plat_data = omap4_plat_data;
> + pdata = NUM_PDATA;
name "pdata" is confusing. Also no need to iterate over the list of
devices using
NUM_PDATA. If you have multiple devices, make use of hwmod class.
> +
> + for (i = 0; i < pdata; i++) {
> + struct dmm *data = &plat_data[i];
> +
> + oh = omap_hwmod_lookup(data->oh_name)
I do not find any other devices sharing same name for the device name
and oh->name.
Normally the device's name is preferred to be "omap_devname.id" to be
consistent across all drivers
and the oh->name is given as "devname(id)"
example: McSPI's device name could be "omap_mcspi" and it's hwmod name
could be "mcspi"
> + if (!oh)
> + goto error;
> +
> + data->base = oh->_mpu_rt_va;
not required. Make use of platform_get APIs in probe to extract the
base, dma and irq info using pdev.
> + ohl = omap_dmm_latency;
> + ohlc = ARRAY_SIZE(omap_dmm_latency);
> +
> + od = omap_device_build(data->oh_name, i, oh, data,
> + sizeof(*data), ohl, ohlc, false);
> + if (IS_ERR(od))
> + goto error;
> + }
> + return 0;
> +error:
> + return -ENODEV;
print the error message.
> +}
> +
> +MODULE_LICENSE("GPL v2");
> +MODULE_AUTHOR("David Sin <davidsin at ti.com>");
> +MODULE_AUTHOR("Lajos Molnar <molnar at ti.com>");
> +device_initcall(dmm_omap_init);
<<snip>>
More information about the linux-arm-kernel
mailing list