/*
 * Copyright (C) 2015 Texas Instruments
 * Author: Jyri Sarha <jsarha@ti.com>
 *
 * 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/>.
 */
/* This header declares the symbols defined in tilcdc_slave_compat.dts */

#ifndef __TILCDC_SLAVE_COMPAT_H__
#define __TILCDC_SLAVE_COMPAT_H__

extern uint8_t __dtb_tilcdc_slave_compat_begin[];
extern uint8_t __dtb_tilcdc_slave_compat_end[];

#endif /* __TILCDC_SLAVE_COMPAT_H__ */
