From ccdad945c618e742a2d1875ed0b57cd5d99e9d72 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Sun, 29 Jun 2008 10:24:40 +0000 Subject: [PATCH] * 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 --- .../busses/ide/legacy_sata/legacy_sata.c | 61 +++++++++++-------- 1 file changed, 37 insertions(+), 24 deletions(-) diff --git a/src/add-ons/kernel/busses/ide/legacy_sata/legacy_sata.c b/src/add-ons/kernel/busses/ide/legacy_sata/legacy_sata.c index 08f5b0934c..9df55b8e15 100644 --- a/src/add-ons/kernel/busses/ide/legacy_sata/legacy_sata.c +++ b/src/add-ons/kernel/busses/ide/legacy_sata/legacy_sata.c @@ -56,9 +56,10 @@ static const char * const kChannelNames[] = { "Tertiary Channel", "Quaternary Channel" }; -static ide_for_controller_interface* ide; -static ide_adapter_interface* ide_adapter; -static device_manager_info* dm; +static ide_for_controller_interface* ide; +static ide_adapter_interface* ide_adapter; +static device_manager_info* dm; + static float controller_supports(device_node *parent) @@ -224,7 +225,6 @@ err: } - static status_t controller_init(device_node *node, void **controller_cookie) { @@ -240,6 +240,7 @@ controller_uninit(void *controller_cookie) ide_adapter->uninit_controller(controller_cookie); } + static void controller_removed(void *controller_cookie) { @@ -251,8 +252,7 @@ controller_removed(void *controller_cookie) static status_t channel_init(device_node *node, void **channel_cookie) { - return ide_adapter->init_channel( - node, + return ide_adapter->init_channel(node, (ide_adapter_channel_info**)channel_cookie, sizeof(ide_adapter_channel_info), 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 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[] = { - { IDE_FOR_CONTROLLER_MODULE_NAME, (module_info **)&ide }, - { B_DEVICE_MANAGER_MODULE_NAME, (module_info **)&dm }, - { IDE_ADAPTER_MODULE_NAME, (module_info **)&ide_adapter }, + { IDE_FOR_CONTROLLER_MODULE_NAME, (module_info **)&ide }, + { B_DEVICE_MANAGER_MODULE_NAME, (module_info **)&dm }, + { IDE_ADAPTER_MODULE_NAME, (module_info **)&ide_adapter }, {} }; @@ -351,24 +358,30 @@ static ide_controller_interface sChannelInterface = { NULL }, - .supports_device = NULL, - .register_device = NULL, - .init_driver = channel_init, - .uninit_driver = channel_uninit, - .device_removed = channel_removed, + NULL, + NULL, + channel_init, + channel_uninit, + NULL, + NULL, + channel_removed, }, - .write_command_block_regs = task_file_write, - .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, -}; + channel_set, + 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 = { {