Line 249... |
Line 249... |
}
|
}
|
}
|
}
|
/* ========================================================================= */
|
/* ========================================================================= */
|
|
|
/*----------------------------------------------------[ ATA Configuration ]---*/
|
/*----------------------------------------------------[ ATA Configuration ]---*/
|
|
static unsigned int conf_dev;
|
|
|
static void ata_baseaddr(union param_val val, void *dat)
|
static void ata_baseaddr(union param_val val, void *dat)
|
{
|
{
|
ata_host *ata = dat;
|
ata_host *ata = dat;
|
ata->baseaddr = val.addr_val;
|
ata->baseaddr = val.addr_val;
|
}
|
}
|
Line 364... |
Line 366... |
}
|
}
|
|
|
ata->dma_mode0_teoc = val.int_val;
|
ata->dma_mode0_teoc = val.int_val;
|
}
|
}
|
|
|
static void ata_dev_type0(union param_val val, void *dat)
|
static void ata_type(union param_val val, void *dat)
|
{
|
{
|
ata_host *ata = dat;
|
ata_host *ata = dat;
|
ata->devices.device[0].conf.type = val.int_val;
|
if(conf_dev <= 1)
|
|
ata->devices.device[conf_dev].conf.type = val.int_val;
|
}
|
}
|
|
|
static void ata_dev_file0(union param_val val, void *dat)
|
static void ata_file(union param_val val, void *dat)
|
{
|
{
|
ata_host *ata = dat;
|
ata_host *ata = dat;
|
if(!(ata->devices.device[0].conf.file = strdup(val.str_val))) {
|
|
|
if(conf_dev <= 1)
|
|
if(!(ata->devices.device[conf_dev].conf.file = strdup(val.str_val))) {
|
fprintf(stderr, "Peripheral ATA: Run out of memory\n");
|
fprintf(stderr, "Peripheral ATA: Run out of memory\n");
|
exit(-1);
|
exit(-1);
|
}
|
}
|
}
|
}
|
|
|
static void ata_dev_size0(union param_val val, void *dat)
|
static void ata_size(union param_val val, void *dat)
|
{
|
|
ata_host *ata = dat;
|
|
ata->devices.device[0].conf.size = val.int_val;
|
|
}
|
|
|
|
static void ata_dev_packet0(union param_val val, void *dat)
|
|
{
|
{
|
ata_host *ata = dat;
|
ata_host *ata = dat;
|
ata->devices.device[0].conf.packet = val.int_val;
|
if(conf_dev <= 1)
|
|
ata->devices.device[conf_dev].conf.size = val.int_val << 20;
|
}
|
}
|
|
|
static void ata_dev_type1(union param_val val, void *dat)
|
static void ata_packet(union param_val val, void *dat)
|
{
|
{
|
ata_host *ata = dat;
|
ata_host *ata = dat;
|
ata->devices.device[1].conf.packet = val.int_val;
|
if(conf_dev <= 1)
|
|
ata->devices.device[conf_dev].conf.packet = val.int_val;
|
}
|
}
|
|
|
static void ata_dev_file1(union param_val val, void *dat)
|
static void ata_enabled(union param_val val, void *dat)
|
{
|
{
|
ata_host *ata = dat;
|
ata_host *ata = dat;
|
if(!(ata->devices.device[1].conf.file = strdup(val.str_val))) {
|
ata->enabled = val.int_val;
|
fprintf(stderr, "Peripheral ATA: Run out of memory\n");
|
|
exit(-1);
|
|
}
|
|
}
|
}
|
|
|
static void ata_dev_size1(union param_val val, void *dat)
|
static void ata_start_device(union param_val val, void *dat)
|
{
|
{
|
ata_host *ata = dat;
|
conf_dev = val.int_val;
|
ata->devices.device[1].conf.size = val.int_val;
|
|
}
|
|
|
|
static void ata_dev_packet1(union param_val val, void *dat)
|
if(conf_dev > 1)
|
{
|
fprintf(stderr, "Device %d out-of-range\n", conf_dev);
|
ata_host *ata = dat;
|
|
ata->devices.device[1].conf.packet = val.int_val;
|
|
}
|
}
|
|
|
static void ata_enabled(union param_val val, void *dat)
|
static void ata_enddevice(union param_val val, void *dat)
|
{
|
{
|
ata_host *ata = dat;
|
conf_dev = 2;
|
ata->enabled = val.int_val;
|
|
}
|
}
|
|
|
static void *ata_sec_start(void)
|
static void *ata_sec_start(void)
|
{
|
{
|
ata_host *new = malloc(sizeof(ata_host));
|
ata_host *new = malloc(sizeof(ata_host));
|
Line 498... |
Line 491... |
|
|
reg_config_param(sec, "dma_mode0_tm", paramt_int, ata_dma_mode0_tm);
|
reg_config_param(sec, "dma_mode0_tm", paramt_int, ata_dma_mode0_tm);
|
reg_config_param(sec, "dma_mode0_td", paramt_int, ata_dma_mode0_td);
|
reg_config_param(sec, "dma_mode0_td", paramt_int, ata_dma_mode0_td);
|
reg_config_param(sec, "dma_mode0_teoc", paramt_int, ata_dma_mode0_teoc);
|
reg_config_param(sec, "dma_mode0_teoc", paramt_int, ata_dma_mode0_teoc);
|
|
|
reg_config_param(sec, "dev_type0", paramt_int, ata_dev_type0);
|
reg_config_param(sec, "device", paramt_int, ata_start_device);
|
reg_config_param(sec, "dev_file0", paramt_str, ata_dev_file0);
|
reg_config_param(sec, "enddevice", paramt_int, ata_enddevice);
|
reg_config_param(sec, "dev_size0", paramt_int, ata_dev_size0);
|
|
reg_config_param(sec, "dev_packet0", paramt_int, ata_dev_packet0);
|
reg_config_param(sec, "type", paramt_int, ata_type);
|
reg_config_param(sec, "dev_type1", paramt_int, ata_dev_type1);
|
reg_config_param(sec, "file", paramt_str, ata_file);
|
reg_config_param(sec, "dev_file1", paramt_str, ata_dev_file1);
|
reg_config_param(sec, "size", paramt_int, ata_size);
|
reg_config_param(sec, "dev_size1", paramt_int, ata_dev_size1);
|
reg_config_param(sec, "packet", paramt_int, ata_packet);
|
reg_config_param(sec, "dev_packet1", paramt_int, ata_dev_packet1);
|
|
}
|
}
|
|
|
No newline at end of file
|
No newline at end of file
|