Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6d7e925b authored by Ionut Nicu's avatar Ionut Nicu Committed by Omar Ramirez Luna
Browse files

staging: tidspbridge: remove gb bitmap implementation



Now that all users of gb have been converted to the
standard linux bitmap API, we can remove it from the
gen library.

Signed-off-by: default avatarIonut Nicu <ionut.nicu@mindbit.ro>
Signed-off-by: default avatarOmar Ramirez Luna <omar.ramirez@ti.com>
parent b5a38aba
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
obj-$(CONFIG_TIDSPBRIDGE)	+= bridgedriver.o

libgen = gen/gb.o gen/gh.o gen/uuidutil.o
libgen = gen/gh.o gen/uuidutil.o
libcore = core/chnl_sm.o core/msg_sm.o core/io_sm.o core/tiomap3430.o \
		core/tiomap3430_pwr.o core/tiomap_io.o \
		core/ue_deh.o core/wdt.o core/dsp-clock.o core/sync.o
+0 −165
Original line number Diff line number Diff line
/*
 * gb.c
 *
 * DSP-BIOS Bridge driver support functions for TI OMAP processors.
 *
 * Generic bitmap operations.
 *
 * Copyright (C) 2005-2006 Texas Instruments, Inc.
 *
 * This package 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 PACKAGE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
 * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
 * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
 */

/*  ----------------------------------- DSP/BIOS Bridge */
#include <linux/types.h>
/*  ----------------------------------- This */
#include <dspbridge/gb.h>

struct gb_t_map {
	u32 len;
	u32 wcnt;
	u32 *words;
};

/*
 *  ======== gb_clear ========
 *  purpose:
 *      Clears a bit in the bit map.
 */

void gb_clear(struct gb_t_map *map, u32 bitn)
{
	u32 mask;

	mask = 1L << (bitn % BITS_PER_LONG);
	map->words[bitn / BITS_PER_LONG] &= ~mask;
}

/*
 *  ======== gb_create ========
 *  purpose:
 *      Creates a bit map.
 */

struct gb_t_map *gb_create(u32 len)
{
	struct gb_t_map *map;
	u32 i;
	map = kzalloc(sizeof(struct gb_t_map), GFP_KERNEL);
	if (map != NULL) {
		map->len = len;
		map->wcnt = len / BITS_PER_LONG + 1;
		map->words = kzalloc(map->wcnt * sizeof(u32), GFP_KERNEL);
		if (map->words != NULL) {
			for (i = 0; i < map->wcnt; i++)
				map->words[i] = 0L;

		} else {
			kfree(map);
			map = NULL;
		}
	}

	return map;
}

/*
 *  ======== gb_delete ========
 *  purpose:
 *      Frees a bit map.
 */

void gb_delete(struct gb_t_map *map)
{
	kfree(map->words);
	kfree(map);
}

/*
 *  ======== gb_findandset ========
 *  purpose:
 *      Finds a free bit and sets it.
 */
u32 gb_findandset(struct gb_t_map *map)
{
	u32 bitn;

	bitn = gb_minclear(map);

	if (bitn != GB_NOBITS)
		gb_set(map, bitn);

	return bitn;
}

/*
 *  ======== gb_minclear ========
 *  purpose:
 *      returns the location of the first unset bit in the bit map.
 */
u32 gb_minclear(struct gb_t_map *map)
{
	u32 bit_location = 0;
	u32 bit_acc = 0;
	u32 i;
	u32 bit;
	u32 *word;

	for (word = map->words, i = 0; i < map->wcnt; word++, i++) {
		if (~*word) {
			for (bit = 0; bit < BITS_PER_LONG; bit++, bit_acc++) {
				if (bit_acc == map->len)
					return GB_NOBITS;

				if (~*word & (1L << bit)) {
					bit_location = i * BITS_PER_LONG + bit;
					return bit_location;
				}

			}
		} else {
			bit_acc += BITS_PER_LONG;
		}
	}

	return GB_NOBITS;
}

/*
 *  ======== gb_set ========
 *  purpose:
 *      Sets a bit in the bit map.
 */

void gb_set(struct gb_t_map *map, u32 bitn)
{
	u32 mask;

	mask = 1L << (bitn % BITS_PER_LONG);
	map->words[bitn / BITS_PER_LONG] |= mask;
}

/*
 *  ======== gb_test ========
 *  purpose:
 *      Returns true if the bit is set in the specified location.
 */

bool gb_test(struct gb_t_map *map, u32 bitn)
{
	bool state;
	u32 mask;
	u32 word;

	mask = 1L << (bitn % BITS_PER_LONG);
	word = map->words[bitn / BITS_PER_LONG];
	state = word & mask ? true : false;

	return state;
}
+0 −79
Original line number Diff line number Diff line
/*
 * gb.h
 *
 * DSP-BIOS Bridge driver support functions for TI OMAP processors.
 *
 * Generic bitmap manager.
 *
 * Copyright (C) 2005-2006 Texas Instruments, Inc.
 *
 * This package 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 PACKAGE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
 * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
 * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
 */

#ifndef GB_
#define GB_

#define GB_NOBITS (~0)
#include <dspbridge/host_os.h>

struct gb_t_map;

/*
 *  ======== gb_clear ========
 *  Clear the bit in position bitn in the bitmap map.  Bit positions are
 *  zero based.
 */

extern void gb_clear(struct gb_t_map *map, u32 bitn);

/*
 *  ======== gb_create ========
 *  Create a bit map with len bits.  Initially all bits are cleared.
 */

extern struct gb_t_map *gb_create(u32 len);

/*
 *  ======== gb_delete ========
 *  Delete previously created bit map
 */

extern void gb_delete(struct gb_t_map *map);

/*
 *  ======== gb_findandset ========
 *  Finds a clear bit, sets it, and returns the position
 */

extern u32 gb_findandset(struct gb_t_map *map);

/*
 *  ======== gb_minclear ========
 *  gb_minclear returns the minimum clear bit position.  If no bit is
 *  clear, gb_minclear returns -1.
 */
extern u32 gb_minclear(struct gb_t_map *map);

/*
 *  ======== gb_set ========
 *  Set the bit in position bitn in the bitmap map.  Bit positions are
 *  zero based.
 */

extern void gb_set(struct gb_t_map *map, u32 bitn);

/*
 *  ======== gb_test ========
 *  Returns TRUE if the bit in position bitn is set in map; otherwise
 *  gb_test returns FALSE.  Bit positions are zero based.
 */

extern bool gb_test(struct gb_t_map *map, u32 bitn);

#endif /*GB_ */