示例#1
0
extern int
sq_spi_master_slave_mode3_test(int autotest)
{
	int ret = 0;
	cpha=SQ_SPI_CPHA_1;
	cpol=SQ_SPI_CPOL_1;
	if(pure)
		ret = test_item_ctrl(&sq_spi_master_sb_test_container, autotest);
	else
		ret = test_item_ctrl(&sq_spi_slave_type_test_container, autotest);
	return ret;
}
示例#2
0
extern int sq_spi_master0_test(int autotest)
{
	int ret = 0;
	
	{
		extern struct test_item sq_spi_transfer_test_items[];
		
		sq_spi_transfer_test_items[1].enable = SQ_SPI_EEPROM_0_TEST;
		sq_spi_transfer_test_items[2].enable = SQ_SPI_MARVEL_WIFI_0_TEST;
		sq_spi_transfer_test_items[3].enable = SQ_SPI_TSC2000_0_TEST;
 	    sq_spi_transfer_test_items[4].enable = SQ_SPI_AR7646_0_TEST;	
	}	
	sq_spi_base = SQ_APB0_SPI0;
#ifdef CONFIG_SQ8000
		sq_scu_dev_enable(SQ_DEVCON_SPI0);
		sq_scu_hdma_req45_spi0();
#endif
	sq_spi_master_init(sq_spi_base,SQ_INTC_SPI0);
		
	ret = test_item_ctrl(&sq_spi_transfer_test_container, autotest);
#ifdef CONFIG_SQ8000
	sq_scu_dev_disable(SQ_DEVCON_SPI0);
#endif
	sq_spi_master_free();
	return ret;
}
示例#3
0
extern int
sq_spi_master_test(int autotest)
{
	int ret = 0;
	ret = test_item_ctrl(&sq_spi_master_test_container, autotest);
	return ret;
}
示例#4
0
extern int
RTCTesting(int autotest)
{
	int result = 0;
	
#if defined(CONFIG_LDK5) || defined(CONFIG_PDK) || defined(CONFIG_PC7210)
	u32 check;
	check = ioread32(SOCLE_RTC_TIME);
	RESET_RTC_CIRCUIT();
	MSDELAY(1000);
	if(ioread32(SOCLE_RTC_TIME) == check)
        	RESET_RTC_COUNTER();       
	 if (RTC_IS_PWFAIL) {
                printf("Warning: RTC Power Fail!!\n");
                printf("\tPlease change your battery and then reset RTC again...\n");
        }
        if(!RTC_IS_GOOD){
                printf("RTC is not Power Good\n");
        }
#endif	//CONFIG_LDK5

	RTC_SET_DIVIDER(RTC_DIVIDER);
	
	RTC_EN();
	
	result = test_item_ctrl(&rtc_main_container, autotest);
	
	RTC_DIS();
	
	return result;
}
示例#5
0
extern int
SPITesting(int autotest)
{
	
	int ret = 0;
	ret = test_item_ctrl(&sq_spi_test_container, autotest);
	return ret;
}
示例#6
0
extern int
sq_spi_master_msb_test(int autotest)
{
	int ret = 0;
	lsb=SQ_SPI_TX_MSB_FIRST;
	ret = test_item_ctrl(&sq_spi_master_ch_test_container, autotest);
	return ret;
}
示例#7
0
extern int 
socle_audio_codec_adc_test(int autotest)
{
	int ret;
	ret = test_item_ctrl(&socle_audio_adc_input_ch_test_container, autotest);	
	return ret;

}
示例#8
0
extern int
socle_audio_adc_input_ch2_test(int autotest)
{
	int ret = 0;
	socle_adc_channel_contrl(2);	
	ret = test_item_ctrl(&socle_audio_adc_control_test_container, autotest);
	return ret;
}
示例#9
0
extern int
sq_spi_master_slave_protocol_test(int autotest)
{
  int ret = 0;
  pure=0;
  ret = test_item_ctrl(&sq_spi_master_slave_mode_test_container, autotest);
	return ret;
}
示例#10
0
extern int 
bch4_ecc_corrected(int autotest)
{
	int ret = 0;
	nand_info->ecc_mode = 0;
	ret = test_item_ctrl(&nfc_ctrl_ecc_correct_test_container, autotest);
	return ret;
}
示例#11
0
int nfc_ctrl_fpga_test(int autotest)
{
	int ret = 0;

	ret = test_item_ctrl(&nfc_fpga_test_container, autotest);
	return ret;

}
示例#12
0
extern int
rtc_alarm_test(int autotest)
{
	int result = 0;
	
	result = test_item_ctrl(&rtc_alarm_test_container, autotest);
	
	return result;
}
示例#13
0
extern int 
socle_audio_codec_ms6335_test(int autotest)
{
	int ret;

	ret = test_item_ctrl(&socle_audio_codec_adc_dac_test_container, autotest);	
	return ret;

}
示例#14
0
extern int
sq_spi_master_slave_reg_test(int autotest)
{
	int ret = 0;
	pure=1;
  regflag=1;
  ret = test_item_ctrl(&sq_spi_master_slave_mode_test_container, autotest);
	return ret;
}
示例#15
0
extern int 
instruction_test(int autotest)
{
	int ret = 0;

	page_number = 0;
	ret = test_item_ctrl(&nfc_ctrl_data_transfer_dma_test_container, autotest);
	return ret;

}
示例#16
0
extern int 
instruction_without_dma_test(int autotest)
{
	int ret = 0;
	nand_info->dma_on = 0;
	socle_nfc_set_dma(nand_info);
	ret = test_item_ctrl(&nfc_ctrl_event_container, autotest);

	return ret;
}
示例#17
0
extern int 
dma_transfer_size_16bit(int autotest)
{
	int ret = 0;
	nand_info->dma_size= NF_DMA_SIZE_16;

	ret = test_item_ctrl(&nfc_ctrl_transfer_dma_mode_test_container, autotest);
	return ret;

}
示例#18
0
extern int 
sq_other_test(int autotest)
{
	int ret=0;

	ret = test_item_ctrl(&sq_tps62353_regs_container, autotest);

	return ret;	

}
示例#19
0
extern int fllookup_test(int autotest)
{
	int ret = 0;

	nand_info->dma_on =0;
	nand_info->ecc_on = 0;
	socle_nfc_set_ecc(nand_info);
	ret = test_item_ctrl(&nfc_ctrl_fllookup_test_container, autotest);
	return ret;

}
示例#20
0
extern int 
dma_transfer_size_32bit(int autotest)
{
	int ret = 0;
	nand_info->dma_size= NF_DMA_SIZE_32;

	ret = test_item_ctrl(&nfc_ctrl_transfer_dma_mode_test_container, autotest);
	//ret = socle_nand_page_read_program_loopback_test();	
	return ret;

}
示例#21
0
extern int 
instruction_with_dma_test(int autotest)
{
	int ret = 0;
	nand_info->dma_on= 1;
	socle_nfc_set_dma(nand_info);

	ret = test_item_ctrl(&nfc_ctrl_dma_transfer_size_test_container, autotest);
	
	return ret;

}
示例#22
0
extern int
tps62353_test(int autotest)
{
	int ret;
	
	tps62353_client.addr = TPS62353_I2C_CLIENT_ADDR;

	ret = tps62353_en_dcdc_set(&tps62353_client, 1);	//device enable
	if(ret == -1){
		printf("tps62353 enable fails\n");
		return -1;
	}
	
	ret = test_item_ctrl(&sq_tps62353_main_container, autotest);	
	
	return ret;
}
示例#23
0
extern int 
sq_voltage_test(int autotest)
{
	int ret=0;
	
	if(tps62353_type == 0){
		tps62353_vsm_set = tps62353_vsm0_set;
		tps62353_vsm_get = tps62353_vsm0_get;
	}else{		
		tps62353_vsm_set = tps62353_vsm1_set;
		tps62353_vsm_get = tps62353_vsm1_get;
	}

	ret = test_item_ctrl(&sq_tps62353_voltage_container, autotest);

	return ret;
}
示例#24
0
extern int
sq_spi_internal_hdma_test(int autotest)
{
	int ret = 0;	
	sq_spi_tx_dma_ext_hdreq = 5;
	sq_spi_rx_dma_ext_hdreq = 4;

	sq_spi_tx_dma_ch_num = PANTHER7_HDMA_CH_1;
	sq_spi_rx_dma_ch_num = PANTHER7_HDMA_CH_0;
	
	sq_request_dma(sq_spi_tx_dma_ch_num, &sq_spi_tx_dma_notifier);
	sq_request_dma(sq_spi_rx_dma_ch_num, &sq_spi_rx_dma_notifier);
	ret = test_item_ctrl(&sq_spi_hdma_burst_type_test_container, autotest);
	sq_disable_dma(sq_spi_tx_dma_ch_num);
	sq_disable_dma(sq_spi_rx_dma_ch_num);
	sq_free_dma(sq_spi_tx_dma_ch_num);
	sq_free_dma(sq_spi_rx_dma_ch_num);
	return ret;
}
示例#25
0
extern int 
ecc_correction_test(int autotest)
{
	int ret = 0;

	nand_info->dma_on = 0;
	nand_info->ecc_on = 1;
	socle_nfc_set_ecc(nand_info);
		
	reference_page = socle_get_test_page_number();
	target_page = reference_page+1;
	page_number++;
	
	socle_nand_initial_buf(BUFFER_WRITE);
	if (socle_nfc_page_program_memory(nand_info, reference_page, nand_info->flash_info->page_size))
		return -1;
	
	ret = test_item_ctrl(&nfc_ctrl_ecc_correct_mode_test_container, autotest);

	nand_info->ecc_on = 0;
	socle_nfc_set_ecc(nand_info);
	return ret;
}
示例#26
0
int nfc_ctrl_test (int autotest)
{
	int ret = 0;
	int auto_boot_fail = 0;

	if (nfc_mode == fpga_axi) {
		nand_info->io_base = 0x30040000 + NF_SFR_ADDRESS_OFFSET;
		nand_info->buf_addr = 0x30040000;
	}else if (nfc_mode == fpga_ahb) {
		nand_info->io_base = 0x20040000 + NF_SFR_ADDRESS_OFFSET;
		nand_info->buf_addr = 0x20040000;
	}else {
		nand_info->io_base = NF_CONTROLLER_ADDRESS + NF_SFR_ADDRESS_OFFSET;
		nand_info->buf_addr = NF_CONTROLLER_ADDRESS;
	}
	mtd->priv = &nand_info;

	printf(	"Warning: After testing, Diagnostic will erase offset 0x20000 block.\n"
		"This block storage U-boot Environment information.\n"
		"You must re-enter `saveenv` in U-boot.\n");
#if defined(CONFIG_PC9223)
	socle_scu_dev_enable(SOCLE_DEVCON_NFC);
#endif

#ifndef SKIP_AUTO_BOOT_TEST
	if (autoboot_test () != 0) 
		printf("Auto Boot Up Test... [Fail]\n");
	else
		printf("Auto Boot Up Test... [Pass]\n");
#endif

	socle_nand_initial_buf(BUFFER_INITIAL);
	socle_nand_prepare_pattern((u8 *) TEST_PATTERN_TX_ADDR, TEST_PATTERN_BUF_SIZE);

	socle_nfc_init();

	/* Select the device */
	socle_nfc_select_chip (mtd, 0);
	if(nand_detect_flash(&socle_info))
		return -1;

/*	if (auto_boot_fail) {
		printf("Auto Boot Up Test... [Fail]\n");
		printf("Re-write page 0 for auto boot up test!!!\n");
		socle_nfc_configure_timing(NULL, 0);

		if(socle_nfc_block_erase(nand_info, 0)) {
			printf("%s: Erase fail\n", __func__);
			return -1;
		}
		if (socle_nfc_read_status(nand_info) & NAND_STATUS_FAIL) {
			printf("%s: Read Status fail\n", __func__);
			return -1;
		}

		nand_info->ecc_on = 0;
		socle_nfc_set_ecc(nand_info);
		socle_nand_initial_buf(BUFFER_WRITE);
		if (!(socle_nfc_page_program_memory(nand_info, 0, nand_info->flash_info->page_size) & NAND_STATUS_READY)) {
			printf("%s: Program Page fail\n", __func__);
			return -1;
		}
		printf("Please power shut down and re-start diagnostic for auto boot test again!!!\n");		
		return -1;
	}*/
	
	socle_init_badblock_remap(nand_info);

	nand_info->irq_on = 0;

	ret = test_item_ctrl(&nfc_ctrl_feature_test_container, autotest);	

	return ret;

}
示例#27
0
extern int 
interrupt_test(int autotest)
{
#if 1
	int ret = 0;

	nand_info->irq_on = 1;
	//socle_init_nfc_int();	//all interrupt, DMA, RnB, Protect

	NDEBUG("Start Test Interrupt\n");
	ret = test_item_ctrl(&nfc_ctrl_interrupt_test_container, autotest);

	nand_info->irq_on = 0;
	//socle_exit_nfc_int();
	return ret;

#else
	struct socle_nand_flash *flash_info = nand_info->flash_info;
	int ret = 0;
	u32 block_erase_num = 0;

	socle_nfc_int_flag = 0;
	socle_nfc_int_state = 0;

	nand_info->dma_on = 0;
	nand_info->ecc_on = 0;
	socle_nfc_set_ecc(nand_info);

	//test RnB interrupt
	NDEBUG("------------Int test 1--------------------\n");
	nand_info->dma_on = 1;
	nand_info->dma_size= NF_DMA_SIZE_8;//NF_DMA_SIZE_16
	nand_info->dma_mode = NF_DMA_BURST_8_ADDR_INC;

	socle_nand_initial_buf(BUFFER_READ);
	if (!(socle_nfc_interrupt_page_read(nand_info, NAND_TEST_PAGE_ADDR, flash_info->page_size) & NAND_STATUS_READY))
		return -1;
	 free_irq(NAND_INT);
	 
#if 0//def NFC_CTRL_DEBUG
	show_data((u8 *)nand_info->buf_addr, 128);
	show_data((u8 *)TEST_PATTERN_RX_ADDR, 128);
#endif
	//compare
	if(socle_nand_compare_pattern(TEST_PATTERN_RX_ADDR,nand_info->buf_addr, flash_info->page_size))
		ret= -1;


	//test Prot_IE  interrupt
	NDEBUG("------------Int test 2--------------------\n");
	socle_nfc_set_protected_area(TEST_BEGIN_PROTECT_BLOCK, TEST_END_PROTECT_BLOCK);

    	socle_nand_initial_buf(BUFFER_WRITE);
	if (!(socle_nfc_interrupt_page_program(nand_info, (TEST_BEGIN_PROTECT_BLOCK+1) *(flash_info->page_per_block),flash_info->page_size) & NAND_STATUS_WP))
		ret = -1;
	free_irq(NAND_INT);
	NDEBUG(" Protect  socle_nfc_int_state =0x%x\n",socle_nfc_int_state);
	socle_nfc_set_protected_area(0, 0);


	//Test DMA IE
	NDEBUG("------------Int test 3--------------------\n");
	nand_info->dma_on= 1;
	nand_info->dma_size= NF_DMA_SIZE_8;//NF_DMA_SIZE_16
	nand_info->dma_mode = NF_DMA_BURST_8_ADDR_INC;

	if ((page_number %flash_info->page_per_block)==0)
	{
		block_erase_num = (int)(NAND_TEST_PAGE_ADDR + page_number)/flash_info->page_per_block; 		
		NDEBUG("Block erase number = 0x%x\n", block_erase_num);
		if(socle_nfc_block_erase(nand_info, block_erase_num))
			return -1;
		if (socle_nfc_read_status(nand_info) & NAND_STATUS_FAIL)
			return -1;
		page_number = 0;
	}
	page_number ++;
	NDEBUG("===Int write page\n");	
	socle_nand_initial_buf(BUFFER_WRITE);
	if (!(socle_nfc_dma_interrupt_page_program(nand_info, NAND_TEST_PAGE_ADDR + page_number, flash_info->page_size) & NAND_STATUS_READY))
		return -1;
	free_irq(NAND_INT);

	NDEBUG("===Int read page\n");	
	socle_nand_initial_buf(BUFFER_READ);		
	if (!(socle_nfc_dma_interrupt_page_read(nand_info, NAND_TEST_PAGE_ADDR + page_number, flash_info->page_size) & NAND_STATUS_READY))
		return -1;
	free_irq(NAND_INT);

	//compare
	if(socle_nand_compare_pattern(TEST_PATTERN_TX_ADDR,TEST_PATTERN_RX_ADDR, nand_info->flash_info->page_size))
		ret= -1;


	socle_nfc_write(socle_nfc_read( NF_SFR_FLCTRL) &~ (NF_CTRL_INT_EN|NF_CTRL_ACC_ERR_EN|NF_CTRL_PROT_IE|NF_CTRL_RNB_IE|NF_CTRL_DMA_IE|NF_CTRL_DMA_TRIGGER|NF_CTRL_TRANS_COMPLETE) , NF_SFR_FLCTRL);        

	return ret;
#endif
}