/*
 *    Copyright (c) 2012 Nest Labs, Inc.
 *
 *    See file CREDITS for list of people who contributed to this
 *    project.
 *
 *    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., 59 Temple Place, Suite 330, Boston,
 *    MA 02111-1307 USA
 *
 *    Description:
 *      This file defines mnemonics for J49-specific GPIOs.
 */

#ifndef ARCH_ARM_MACH_OMAP2_NESTLABS_J49_GPIO_H
#define ARCH_ARM_MACH_OMAP2_NESTLABS_J49_GPIO_H

/*
 * J49 ZigBee GPIO Control Signals
 */
#define J49_GPIO_ZIG_INT_L		        182
#define J49_GPIO_ZIG_PTI_EN                     140

/*
 * J49 Backlight Enable Signal
 */
#define J49_GPIO_LCD_BL_HWEN                    177

#endif /* ARCH_ARM_MACH_OMAP2_NESTLABS_J49_GPIO_H */
