* Applied patch by Donn Cave: channel_set() was missing, causing bug #2284.

Thanks!
* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26163 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Axel Dörfler
2008-06-29 10:24:40 +00:00
parent 931a9e2b88
commit ccdad945c6
@@ -56,9 +56,10 @@ static const char * const kChannelNames[] = {
"Tertiary Channel", "Quaternary Channel" "Tertiary Channel", "Quaternary Channel"
}; };
static ide_for_controller_interface* ide; static ide_for_controller_interface* ide;
static ide_adapter_interface* ide_adapter; static ide_adapter_interface* ide_adapter;
static device_manager_info* dm; static device_manager_info* dm;
static float static float
controller_supports(device_node *parent) controller_supports(device_node *parent)
@@ -224,7 +225,6 @@ err:
} }
static status_t static status_t
controller_init(device_node *node, void **controller_cookie) controller_init(device_node *node, void **controller_cookie)
{ {
@@ -240,6 +240,7 @@ controller_uninit(void *controller_cookie)
ide_adapter->uninit_controller(controller_cookie); ide_adapter->uninit_controller(controller_cookie);
} }
static void static void
controller_removed(void *controller_cookie) controller_removed(void *controller_cookie)
{ {
@@ -251,8 +252,7 @@ controller_removed(void *controller_cookie)
static status_t static status_t
channel_init(device_node *node, void **channel_cookie) channel_init(device_node *node, void **channel_cookie)
{ {
return ide_adapter->init_channel( return ide_adapter->init_channel(node,
node,
(ide_adapter_channel_info**)channel_cookie, (ide_adapter_channel_info**)channel_cookie,
sizeof(ide_adapter_channel_info), sizeof(ide_adapter_channel_info),
ide_adapter->inthand); ide_adapter->inthand);
@@ -273,6 +273,13 @@ channel_removed(void *channel_cookie)
} }
static void
channel_set(void *cookie, ide_channel channel)
{
ide_adapter->set_channel((ide_adapter_channel_info *)cookie, channel);
}
static status_t static status_t
task_file_write(void *channel_cookie, ide_task_file *tf, ide_reg_mask mask) task_file_write(void *channel_cookie, ide_task_file *tf, ide_reg_mask mask)
{ {
@@ -337,9 +344,9 @@ dma_finish(void *channel_cookie)
module_dependency module_dependencies[] = { module_dependency module_dependencies[] = {
{ IDE_FOR_CONTROLLER_MODULE_NAME, (module_info **)&ide }, { IDE_FOR_CONTROLLER_MODULE_NAME, (module_info **)&ide },
{ B_DEVICE_MANAGER_MODULE_NAME, (module_info **)&dm }, { B_DEVICE_MANAGER_MODULE_NAME, (module_info **)&dm },
{ IDE_ADAPTER_MODULE_NAME, (module_info **)&ide_adapter }, { IDE_ADAPTER_MODULE_NAME, (module_info **)&ide_adapter },
{} {}
}; };
@@ -351,24 +358,30 @@ static ide_controller_interface sChannelInterface = {
NULL NULL
}, },
.supports_device = NULL, NULL,
.register_device = NULL, NULL,
.init_driver = channel_init, channel_init,
.uninit_driver = channel_uninit, channel_uninit,
.device_removed = channel_removed, NULL,
NULL,
channel_removed,
}, },
.write_command_block_regs = task_file_write, channel_set,
.read_command_block_regs = task_file_read,
.get_altstatus = altstatus_read,
.write_device_control = device_control_write,
.write_pio = pio_write,
.read_pio = pio_read,
.prepare_dma = dma_prepare,
.start_dma = dma_start,
.finish_dma = dma_finish,
};
task_file_write,
task_file_read,
altstatus_read,
device_control_write,
pio_write,
pio_read,
dma_prepare,
dma_start,
dma_finish,
};
static driver_module_info sControllerInterface = { static driver_module_info sControllerInterface = {
{ {