Hi, On Thu, 2010-08-26 at 14:43 +0200, ext Archit Taneja wrote: > Add dss_features.c and dss_features.h for the dss_features framework > > Signed-off-by: Archit Taneja <archit@xxxxxx> And some more comments inline > --- > drivers/video/omap2/dss/dss_features.c | 197 ++++++++++++++++++++++++++++++++ > drivers/video/omap2/dss/dss_features.h | 48 ++++++++ > 2 files changed, 245 insertions(+), 0 deletions(-) > create mode 100644 drivers/video/omap2/dss/dss_features.c > create mode 100644 drivers/video/omap2/dss/dss_features.h > > diff --git a/drivers/video/omap2/dss/dss_features.c b/drivers/video/omap2/dss/dss_features.c > new file mode 100644 > index 0000000..0ac18d2 > --- /dev/null > +++ b/drivers/video/omap2/dss/dss_features.c > @@ -0,0 +1,197 @@ > +/* > + * linux/drivers/video/omap2/dss/dss_features.c > + * > + * Copyright (C) 2010 Texas Instruments > + * Author: Archit Taneja <archit@xxxxxx> > + * > + * 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. > + * > + * This program is distributed in the hope that it will be useful, but WITHOUT > + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or > + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for > + * more details. > + * > + * You should have received a copy of the GNU General Public License along with > + * this program. If not, see <http://www.gnu.org/licenses/>. > + */ > + > +#include <linux/kernel.h> > +#include <linux/types.h> > +#include <linux/err.h> > +#include <linux/slab.h> > + > +#include <plat/display.h> > +#include <plat/cpu.h> > + > +#include "dss_features.h" > + > +static struct list_head reg_field_list; > +static int num_reg_fields; > + > +/* Defines a generic omap register field */ > +struct dss_reg_field { > + struct list_head list; > + int id; > + u8 start, end; > +}; > + > +/* This struct is divided into 2 sets: the first gives a value corresponding > + * to a feature, the second tells if a dss feature exists or not */ > +static struct > +{ > + int num_mgrs; > + int num_ovls; > + enum omap_display_type supported_displays[MAX_DSS_MANAGERS]; > + enum omap_color_mode supported_color_modes[MAX_DSS_OVERLAYS]; > + > + bool has_feature[MAX_DSS_FEATURES]; > +} omap_dss_features; > + > +/* Functions to add/fetch the start and end bits of a DSS register field */ > +static void dss_add_reg_field(int id, u8 start, u8 end) > +{ > + struct dss_reg_field *field; > + field = kzalloc(sizeof(*field), GFP_KERNEL); > + > + ++num_reg_fields; > + > + field->id = id; > + field->start = start; > + field->end = end; > + > + list_add_tail(&field->list, ®_field_list); > +} > + > +void omap_dss_get_reg_field(int id, u8 *start, u8 *end) > +{ > + struct dss_reg_field *field; > + > + list_for_each_entry(field, ®_field_list, list) { > + if (field->id == id) { > + *start = field->start; > + *end = field->end; > + return; > + } > + } > + BUG(); > +} > +EXPORT_SYMBOL(omap_dss_get_reg_field); I don't think these need to be exported. The only users for these should be inside DSS driver. And, as you've probably noticed, I've been using (usually) omap_dss_* prefix for exported functions, and (usually) dss_* prefix for non-exported, non-static functions. Although the naming convention inside DSS is sadly quite inconsistent... =) > +/* Functions returning values related to a DSS feature */ > +int omap_dss_num_mgrs(void) > +{ > + return omap_dss_features.num_mgrs; > +} > +EXPORT_SYMBOL(omap_dss_num_mgrs); Perhaps this should be dss_get_num_mgrs(). > + > +int omap_dss_num_ovls(void) > +{ > + return omap_dss_features.num_ovls; > +} > +EXPORT_SYMBOL(omap_dss_num_ovls); And "get" here too. And for the functions below. > +enum omap_display_type omap_dss_supported_displays(int id) > +{ > + return omap_dss_features.supported_displays[id]; > +} > +EXPORT_SYMBOL(omap_dss_supported_displays); > + > +enum omap_color_mode omap_dss_supported_color_modes(int id) > +{ > + return omap_dss_features.supported_color_modes[id]; > +} > +EXPORT_SYMBOL(omap_dss_supported_color_modes); > + > +/* DSS has_feature check */ > +bool omap_dss_has_feature(int id) > +{ > + return omap_dss_features.has_feature[id]; > +} > +EXPORT_SYMBOL(omap_dss_has_feature); Tomi -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html