/*
 * Copyright (c) 2010 Broadcom Corporation
 *
 * Permission to use, copy, modify, and/or distribute this software for any
 * purpose with or without fee is hereby granted, provided that the above
 * copyright notice and this permission notice appear in all copies.
 *
 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
 * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
 * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
 * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 */

#ifndef	_BRCM_HW_IDS_H_
#define	_BRCM_HW_IDS_H_

#define BCM4313_D11N2G_ID	0x4727	/* 4313 802.11n 2.4G device */

#define BCM43224_D11N_ID	0x4353	/* 43224 802.11n dualband device */
#define BCM43224_D11N_ID_VEN1	0x0576	/* Vendor specific 43224 802.11n db */

#define BCM43225_D11N2G_ID	0x4357	/* 43225 802.11n 2.4GHz device */

#define BCM43236_D11N_ID	0x4346	/* 43236 802.11n dualband device */
#define BCM43236_D11N2G_ID	0x4347	/* 43236 802.11n 2.4GHz device */

/* Chipcommon Core Chip IDs */
#define BCM4313_CHIP_ID		0x4313
#define BCM43224_CHIP_ID	43224
#define BCM43225_CHIP_ID	43225
#define BCM43235_CHIP_ID	43235
#define BCM43236_CHIP_ID	43236
#define BCM43238_CHIP_ID	43238
#define BCM43241_CHIP_ID	0x4324
#define BCM4329_CHIP_ID		0x4329
#define BCM4330_CHIP_ID		0x4330
#define BCM4331_CHIP_ID		0x4331
#define BCM4334_CHIP_ID		0x4334

#endif				/* _BRCM_HW_IDS_H_ */
