Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751706Ab0LAGFG (ORCPT ); Wed, 1 Dec 2010 01:05:06 -0500 Received: from na3sys009aog114.obsmtp.com ([74.125.149.211]:44344 "EHLO na3sys009aog114.obsmtp.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750998Ab0LAGFE convert rfc822-to-8bit (ORCPT ); Wed, 1 Dec 2010 01:05:04 -0500 MIME-Version: 1.0 In-Reply-To: <1291147139-23472-2-git-send-email-davidsin@ti.com> References: <1291147139-23472-1-git-send-email-davidsin@ti.com> <1291147139-23472-2-git-send-email-davidsin@ti.com> From: "Varadarajan, Charulatha" Date: Wed, 1 Dec 2010 11:34:22 +0530 Message-ID: Subject: Re: [RFC v2 1/8] TILER-DMM: DMM-PAT driver for TI TILER To: David Sin Cc: Greg KH , linux-omap@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Lajos Molnar Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8BIT Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 4701 Lines: 145 David, On Wed, Dec 1, 2010 at 01:28, David Sin wrote: > This patch adds support for DMM-PAT initialization and programming. > > Signed-off-by: David Sin > Signed-off-by: Lajos Molnar > --- > ?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 > +#include > +#include > +#include > +#include > +#include > +#include > + > +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 "); > +MODULE_AUTHOR("Lajos Molnar "); > +device_initcall(dmm_omap_init); <> -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/