/*
 * Copyright (C) 2008 Freescale Semiconductor, Inc. All rights reserved.
 *
 * 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.
 *
 * Prototypes for ADS5121 specific code
 */

#ifndef __MPC512ADS_H__
#define __MPC512ADS_H__
extern void __init mpc5121_ads_cpld_map(void);
extern void __init mpc5121_ads_cpld_pic_init(void);
#endif				/* __MPC512ADS_H__ */
