/*
 *  Copyright (c) 2012 Mindspeed Technologies, Inc.
 *
 *  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; either version 2
 *  of the License, or (at your option) any later version.

 *  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, write to the Free Software
 *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 *
 *
 */

#ifndef _CONTROL_COMMON_H_
#define _CONTROL_COMMON_H_

#include "types.h"

#if defined (COMCERTO_2000)
U32 hw_entry_get_field(U32 *field);
void hw_entry_set_field(U32 *field, U32 val);
void hw_entry_set_flags(U32 *hw_flags, U32 flags);
#endif

#endif

