/*
 * Copyright 2004 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.
 *
 * 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
 */

#include <linux/module.h>
#include <asm/arch/mxc_security_api.h>

static int __init mxc_sec_mod_init(void)
{
        printk(KERN_INFO "SEC: mxc_sec_mod_init() called \n");
        return 0;
}

static void __exit mxc_sec_mod_cleanup(void)
{
        printk(KERN_INFO "SEC: mxc_sec_mod_cleanup() called \n");
}

/* Export Symbols of SCC driver module */
EXPORT_SYMBOL(scc_scm_read_sts);
EXPORT_SYMBOL(scc_check_enable);
EXPORT_SYMBOL(scc_kem_config);
EXPORT_SYMBOL(scc_kem_load_data2encrypt);
EXPORT_SYMBOL(scc_kem_load_data2decrypt);
EXPORT_SYMBOL(scc_kem_get_encrypt_data);
EXPORT_SYMBOL(scc_kem_get_decrypt_data);
EXPORT_SYMBOL(scc_kem_cipher_status);
EXPORT_SYMBOL(scc_scm_config_int);
EXPORT_SYMBOL(scc_scm_clear_int);
EXPORT_SYMBOL(scc_kem_get_size_info);
EXPORT_SYMBOL(scc_scm_get_ver);
EXPORT_SYMBOL(scc_scm_get_status);
EXPORT_SYMBOL(scc_scm_err_status);
EXPORT_SYMBOL(scc_smn_get_status);
EXPORT_SYMBOL(scc_get_state);
EXPORT_SYMBOL(scc_smn_get_ver);
EXPORT_SYMBOL(scc_check_boot);
EXPORT_SYMBOL(scc_smn_clear_status);
EXPORT_SYMBOL(scc_set_sw_alrm);
EXPORT_SYMBOL(scc_smn_clear_int);
EXPORT_SYMBOL(scc_smn_config_int);
EXPORT_SYMBOL(scc_zeroize);
EXPORT_SYMBOL(scc_zeroize_status);
EXPORT_SYMBOL(scc_zeroize_fail_clear);
EXPORT_SYMBOL(scc_redmem_put_data);
EXPORT_SYMBOL(scc_blackmem_put_data);
EXPORT_SYMBOL(scc_redmem_get_data);
EXPORT_SYMBOL(scc_blackmem_get_data);
EXPORT_SYMBOL(scc_asc_configure);
EXPORT_SYMBOL(scc_asc_set_seq);
EXPORT_SYMBOL(scc_asc_get_nxtseq);
EXPORT_SYMBOL(scc_aic_bit_status);
EXPORT_SYMBOL(scc_bitbnk_clear);
EXPORT_SYMBOL(scc_rd_bitcnt);
EXPORT_SYMBOL(scc_rd_bit_cmp);
EXPORT_SYMBOL(scc_rd_inc_dec_reg);
EXPORT_SYMBOL(scc_bitbnk_configure);
EXPORT_SYMBOL(scc_wr_pln_cip);
EXPORT_SYMBOL(scc_sec_config_tmr);
EXPORT_SYMBOL(scc_sec_ctrl_tmr);
EXPORT_SYMBOL(scc_sec_rd_tmr);
EXPORT_SYMBOL(scc_sec_rd_err_status);
EXPORT_SYMBOL(scc_dbdet_rd_status);
EXPORT_SYMBOL(scc_sec_rload_tmr);
#ifdef CONFIG_PM
EXPORT_SYMBOL(scc_suspend);
EXPORT_SYMBOL(scc_resume);
#endif

/* Export Symbol of RNGA */
EXPORT_SYMBOL(rnga_configure);
EXPORT_SYMBOL(rnga_get_status);
EXPORT_SYMBOL(rnga_get_fifo_level);
EXPORT_SYMBOL(rnga_seed_rand);
EXPORT_SYMBOL(rnga_get_rand);
EXPORT_SYMBOL(rnga_clear_int);
EXPORT_SYMBOL(rnga_get_fifo_size);
EXPORT_SYMBOL(rnga_configure_mode);
EXPORT_SYMBOL(rnga_sleep);
EXPORT_SYMBOL(rnga_config_vrfy_ctrl);
EXPORT_SYMBOL(rnga_config_osc_cntctrl);
EXPORT_SYMBOL(rnga_osc_cnt);
EXPORT_SYMBOL(rnga_osc_status);
EXPORT_SYMBOL(rnga_normal);
#ifdef CONFIG_PM
EXPORT_SYMBOL(rnga_suspend);
EXPORT_SYMBOL(rnga_resume);
#endif

#ifndef        CONFIG_ARCH_MX3
/* Export Symbol of HACC */
EXPORT_SYMBOL(hac_hash_data);
EXPORT_SYMBOL(hac_hashing_status);
EXPORT_SYMBOL(hac_get_status);
EXPORT_SYMBOL(hac_stop);
EXPORT_SYMBOL(hac_hash_result);
#ifdef CONFIG_PM
EXPORT_SYMBOL(hac_suspend);
EXPORT_SYMBOL(hac_resume);
#endif
#endif

#ifndef        CONFIG_ARCH_ZEUS
/* Export Symbol of RTIC */
EXPORT_SYMBOL(rtic_configure_mode);
EXPORT_SYMBOL(rtic_configure_mem_blk);
EXPORT_SYMBOL(rtic_start_hash);
EXPORT_SYMBOL(rtic_get_status);
EXPORT_SYMBOL(rtic_get_control);
EXPORT_SYMBOL(rtic_configure_interrupt);
EXPORT_SYMBOL(rtic_hash_result);
EXPORT_SYMBOL(rtic_get_faultaddress);
#ifdef CONFIG_PM
EXPORT_SYMBOL(rtic_suspend);
EXPORT_SYMBOL(rtic_resume);
#endif
#endif


module_init(mxc_sec_mod_init);
module_exit(mxc_sec_mod_cleanup);
