kopia lustrzana https://gitlab.com/sane-project/backends
Simplify DRAM test.
rodzic
bc9252c094
commit
a49bff1a60
|
@ -45,6 +45,8 @@
|
||||||
This file implements a SANE backend for the Mustek BearPaw 2448 TA Pro
|
This file implements a SANE backend for the Mustek BearPaw 2448 TA Pro
|
||||||
and similar USB2 scanners. */
|
and similar USB2 scanners. */
|
||||||
|
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
#include "mustek_usb2_asic.h"
|
#include "mustek_usb2_asic.h"
|
||||||
|
|
||||||
/* ---------------------- low level asic functions -------------------------- */
|
/* ---------------------- low level asic functions -------------------------- */
|
||||||
|
@ -2361,147 +2363,89 @@ SafeInitialChip (PAsic chip)
|
||||||
static STATUS
|
static STATUS
|
||||||
DRAM_Test (PAsic chip)
|
DRAM_Test (PAsic chip)
|
||||||
{
|
{
|
||||||
STATUS status = STATUS_GOOD;
|
STATUS status;
|
||||||
unsigned char *temps;
|
SANE_Byte temps[DRAM_TEST_SIZE];
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
|
|
||||||
DBG (DBG_ASIC, "DRAM_Test:Enter\n");
|
DBG (DBG_ASIC, "DRAM_Test: Enter\n");
|
||||||
|
|
||||||
temps = (unsigned char *) malloc (64);
|
for (i = 0; i < sizeof(temps); i++)
|
||||||
|
temps[i] = i;
|
||||||
|
|
||||||
for (i = 0; i < 64; i++)
|
|
||||||
{
|
|
||||||
*(temps + i) = i;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*set start address */
|
|
||||||
status = Mustek_SendData (chip, ES01_A0_HostStartAddr0_7, 0x00);
|
status = Mustek_SendData (chip, ES01_A0_HostStartAddr0_7, 0x00);
|
||||||
if (status != STATUS_GOOD)
|
if (status != STATUS_GOOD)
|
||||||
{
|
|
||||||
free (temps);
|
|
||||||
return status;
|
return status;
|
||||||
}
|
|
||||||
|
|
||||||
status = Mustek_SendData (chip, ES01_A1_HostStartAddr8_15, 0x00);
|
status = Mustek_SendData (chip, ES01_A1_HostStartAddr8_15, 0x00);
|
||||||
if (status != STATUS_GOOD)
|
if (status != STATUS_GOOD)
|
||||||
{
|
|
||||||
free (temps);
|
|
||||||
return status;
|
return status;
|
||||||
}
|
|
||||||
|
|
||||||
status =
|
status =
|
||||||
Mustek_SendData (chip, ES01_A2_HostStartAddr16_21, 0x00 | ACCESS_DRAM);
|
Mustek_SendData (chip, ES01_A2_HostStartAddr16_21, 0x00 | ACCESS_DRAM);
|
||||||
if (status != STATUS_GOOD)
|
if (status != STATUS_GOOD)
|
||||||
{
|
|
||||||
free (temps);
|
|
||||||
return status;
|
return status;
|
||||||
}
|
|
||||||
|
|
||||||
Mustek_SendData (chip, ES01_79_AFEMCLK_SDRAMCLK_DELAY_CONTROL,
|
status = Mustek_SendData (chip, ES01_79_AFEMCLK_SDRAMCLK_DELAY_CONTROL,
|
||||||
SDRAMCLK_DELAY_12_ns);
|
SDRAMCLK_DELAY_12_ns);
|
||||||
|
if (status != STATUS_GOOD)
|
||||||
|
return status;
|
||||||
|
|
||||||
status = Mustek_SendData (chip, ES01_A3_HostEndAddr0_7, 0xff);
|
status = Mustek_SendData (chip, ES01_A3_HostEndAddr0_7, 0xff);
|
||||||
if (status != STATUS_GOOD)
|
if (status != STATUS_GOOD)
|
||||||
{
|
|
||||||
free (temps);
|
|
||||||
return status;
|
return status;
|
||||||
}
|
|
||||||
|
|
||||||
status = Mustek_SendData (chip, ES01_A4_HostEndAddr8_15, 0xff);
|
status = Mustek_SendData (chip, ES01_A4_HostEndAddr8_15, 0xff);
|
||||||
if (status != STATUS_GOOD)
|
if (status != STATUS_GOOD)
|
||||||
{
|
|
||||||
free (temps);
|
|
||||||
return status;
|
return status;
|
||||||
}
|
|
||||||
|
|
||||||
status = Mustek_SendData (chip, ES01_A5_HostEndAddr16_21, 0xff);
|
status = Mustek_SendData (chip, ES01_A5_HostEndAddr16_21, 0xff);
|
||||||
if (status != STATUS_GOOD)
|
if (status != STATUS_GOOD)
|
||||||
{
|
|
||||||
free (temps);
|
|
||||||
return status;
|
return status;
|
||||||
}
|
|
||||||
|
|
||||||
status = Mustek_DMAWrite (chip, 64, (SANE_Byte *) (temps));
|
status = Mustek_DMAWrite (chip, sizeof(temps), temps);
|
||||||
if (status != STATUS_GOOD)
|
if (status != STATUS_GOOD)
|
||||||
{
|
{
|
||||||
DBG (DBG_ASIC, "Mustek_DMAWrite error\n");
|
DBG (DBG_ASIC, "Mustek_DMAWrite error\n");
|
||||||
free (temps);
|
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
status = Mustek_SendData (chip, ES01_A0_HostStartAddr0_7, 0x00);
|
status = Mustek_SendData (chip, ES01_A0_HostStartAddr0_7, 0x00);
|
||||||
if (status != STATUS_GOOD)
|
if (status != STATUS_GOOD)
|
||||||
{
|
|
||||||
free (temps);
|
|
||||||
return status;
|
return status;
|
||||||
}
|
|
||||||
|
|
||||||
status = Mustek_SendData (chip, ES01_A1_HostStartAddr8_15, 0x00);
|
status = Mustek_SendData (chip, ES01_A1_HostStartAddr8_15, 0x00);
|
||||||
if (status != STATUS_GOOD)
|
if (status != STATUS_GOOD)
|
||||||
{
|
|
||||||
free (temps);
|
|
||||||
return status;
|
return status;
|
||||||
}
|
|
||||||
|
|
||||||
status =
|
status =
|
||||||
Mustek_SendData (chip, ES01_A2_HostStartAddr16_21, 0x00 | ACCESS_DRAM);
|
Mustek_SendData (chip, ES01_A2_HostStartAddr16_21, 0x00 | ACCESS_DRAM);
|
||||||
if (status != STATUS_GOOD)
|
if (status != STATUS_GOOD)
|
||||||
{
|
|
||||||
free (temps);
|
|
||||||
return status;
|
return status;
|
||||||
}
|
|
||||||
|
|
||||||
/*set end address */
|
|
||||||
status = Mustek_SendData (chip, ES01_A3_HostEndAddr0_7, 0xff);
|
status = Mustek_SendData (chip, ES01_A3_HostEndAddr0_7, 0xff);
|
||||||
if (status != STATUS_GOOD)
|
if (status != STATUS_GOOD)
|
||||||
{
|
|
||||||
free (temps);
|
|
||||||
return status;
|
return status;
|
||||||
}
|
|
||||||
|
|
||||||
status = Mustek_SendData (chip, ES01_A4_HostEndAddr8_15, 0xff);
|
status = Mustek_SendData (chip, ES01_A4_HostEndAddr8_15, 0xff);
|
||||||
if (status != STATUS_GOOD)
|
if (status != STATUS_GOOD)
|
||||||
{
|
|
||||||
free (temps);
|
|
||||||
return status;
|
return status;
|
||||||
}
|
|
||||||
|
|
||||||
status = Mustek_SendData (chip, ES01_A5_HostEndAddr16_21, 0xff);
|
status = Mustek_SendData (chip, ES01_A5_HostEndAddr16_21, 0xff);
|
||||||
if (status != STATUS_GOOD)
|
if (status != STATUS_GOOD)
|
||||||
{
|
|
||||||
free (temps);
|
|
||||||
return status;
|
return status;
|
||||||
}
|
|
||||||
|
|
||||||
memset (temps, 0, 64);
|
memset (temps, 0, sizeof(temps));
|
||||||
|
|
||||||
status = Mustek_DMARead (chip, 64, (SANE_Byte *) (temps));
|
status = Mustek_DMARead (chip, sizeof(temps), temps);
|
||||||
if (status != STATUS_GOOD)
|
if (status != STATUS_GOOD)
|
||||||
{
|
{
|
||||||
free (temps);
|
DBG (DBG_ASIC, "Mustek_DMARead error\n");
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < 60; i += 10)
|
for (i = 0; i < sizeof(temps); i++)
|
||||||
{
|
{
|
||||||
DBG (DBG_ASIC, "%d,%d,%d,%d,%d,%d,%d,%d,%d,%d\n",
|
if (temps[i] != i)
|
||||||
*(temps + i), *(temps + i + 1), *(temps + i + 2), *(temps + i + 3),
|
|
||||||
*(temps + i + 4), *(temps + i + 5), *(temps + i + 6),
|
|
||||||
*(temps + i + 7), *(temps + i + 8), *(temps + i + 9));
|
|
||||||
}
|
|
||||||
|
|
||||||
for (i = 0; i < 64; i++)
|
|
||||||
{
|
{
|
||||||
if (*(temps + i) != i)
|
DBG (DBG_ERR, "DRAM test error at offset %d\n", i);
|
||||||
{
|
|
||||||
DBG (DBG_ERR, "DRAM Test error...(No.=%d)\n", i + 1);
|
|
||||||
return STATUS_IO_ERROR;
|
return STATUS_IO_ERROR;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
free (temps);
|
|
||||||
|
|
||||||
DBG (DBG_ASIC, "DRAM_Text: Exit\n");
|
DBG (DBG_ASIC, "DRAM_Text: Exit\n");
|
||||||
return status;
|
return STATUS_GOOD;
|
||||||
}
|
}
|
||||||
|
|
||||||
static STATUS
|
static STATUS
|
||||||
|
|
|
@ -194,6 +194,7 @@ STATUS;
|
||||||
#define DBG_DBG 10 /* usefull only for tracing bugs */
|
#define DBG_DBG 10 /* usefull only for tracing bugs */
|
||||||
|
|
||||||
|
|
||||||
|
#define DRAM_TEST_SIZE 64
|
||||||
#define DRAM_1Mx16_SIZE (1024*1024) /*unit : word */
|
#define DRAM_1Mx16_SIZE (1024*1024) /*unit : word */
|
||||||
#define PackAreaStartAddress ((DRAM_1Mx16_SIZE/4)*3)
|
#define PackAreaStartAddress ((DRAM_1Mx16_SIZE/4)*3)
|
||||||
|
|
||||||
|
|
Ładowanie…
Reference in New Issue