Fixed some bugs, partially by Oscar Lesta.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13767 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Axel Dörfler
2005-07-19 17:19:02 +00:00
parent 599be43472
commit c05350e781
2 changed files with 54 additions and 55 deletions
+1 -1
View File
@@ -41,7 +41,7 @@ typedef struct {
uint32 signature; uint32 signature;
uint16 port; uint16 port;
uint8 size; // == index for POKE_PORT_INDEXED_* uint8 size; // == index for POKE_PORT_INDEXED_*
uint16 value; uint32 value;
} port_io_args; } port_io_args;
+25 -26
View File
@@ -60,10 +60,13 @@ init_driver(void)
{ {
open_count = 0; open_count = 0;
if (get_module(B_ISA_MODULE_NAME, (module_info**) &isa) < B_OK) if (get_module(B_ISA_MODULE_NAME, (module_info**)&isa) < B_OK)
return ENOSYS; return ENOSYS;
if (get_module(B_PCI_MODULE_NAME, (module_info**) &pci) < B_OK)
if (get_module(B_PCI_MODULE_NAME, (module_info**)&pci) < B_OK) {
put_module(B_ISA_MODULE_NAME);
return ENOSYS; return ENOSYS;
}
return B_OK; return B_OK;
} }
@@ -72,8 +75,8 @@ init_driver(void)
void void
uninit_driver(void) uninit_driver(void)
{ {
if (isa) put_module(B_ISA_MODULE_NAME); put_module(B_ISA_MODULE_NAME);
if (pci) put_module(B_PCI_MODULE_NAME); put_module(B_PCI_MODULE_NAME);
} }
@@ -131,7 +134,7 @@ poke_control(void* cookie, uint32 op, void* arg, size_t length)
case POKE_PORT_READ: case POKE_PORT_READ:
{ {
status_t result; status_t result;
port_io_args* ioctl = (port_io_args*) arg; port_io_args* ioctl = (port_io_args*)arg;
if (ioctl->signature != POKE_SIGNATURE) if (ioctl->signature != POKE_SIGNATURE)
return B_BAD_VALUE; return B_BAD_VALUE;
@@ -156,7 +159,7 @@ poke_control(void* cookie, uint32 op, void* arg, size_t length)
case POKE_PORT_WRITE: case POKE_PORT_WRITE:
{ {
status_t result; status_t result;
port_io_args* ioctl = (port_io_args*) arg; port_io_args* ioctl = (port_io_args*)arg;
if (ioctl->signature != POKE_SIGNATURE) if (ioctl->signature != POKE_SIGNATURE)
return B_BAD_VALUE; return B_BAD_VALUE;
@@ -169,7 +172,7 @@ poke_control(void* cookie, uint32 op, void* arg, size_t length)
isa->write_io_16(ioctl->port, ioctl->value); isa->write_io_16(ioctl->port, ioctl->value);
break; break;
case 4: case 4:
isa->write_io_16(ioctl->port, ioctl->value); isa->write_io_32(ioctl->port, ioctl->value);
break; break;
default: default:
result = B_BAD_VALUE; result = B_BAD_VALUE;
@@ -180,7 +183,7 @@ poke_control(void* cookie, uint32 op, void* arg, size_t length)
case POKE_PORT_INDEXED_READ: case POKE_PORT_INDEXED_READ:
{ {
port_io_args* ioctl = (port_io_args*) arg; port_io_args* ioctl = (port_io_args*)arg;
if (ioctl->signature != POKE_SIGNATURE) if (ioctl->signature != POKE_SIGNATURE)
return B_BAD_VALUE; return B_BAD_VALUE;
@@ -191,7 +194,7 @@ poke_control(void* cookie, uint32 op, void* arg, size_t length)
case POKE_PORT_INDEXED_WRITE: case POKE_PORT_INDEXED_WRITE:
{ {
port_io_args* ioctl = (port_io_args*) arg; port_io_args* ioctl = (port_io_args*)arg;
if (ioctl->signature != POKE_SIGNATURE) if (ioctl->signature != POKE_SIGNATURE)
return B_BAD_VALUE; return B_BAD_VALUE;
@@ -202,19 +205,18 @@ poke_control(void* cookie, uint32 op, void* arg, size_t length)
case POKE_PCI_READ_CONFIG: case POKE_PCI_READ_CONFIG:
{ {
pci_io_args* ioctl = (pci_io_args*) arg; pci_io_args* ioctl = (pci_io_args*)arg;
if (ioctl->signature != POKE_SIGNATURE) if (ioctl->signature != POKE_SIGNATURE)
return B_BAD_VALUE; return B_BAD_VALUE;
ioctl->value = pci->read_pci_config(ioctl->bus, ioctl->device, ioctl->value = pci->read_pci_config(ioctl->bus, ioctl->device,
ioctl->function, ioctl->offset, ioctl->function, ioctl->offset, ioctl->size);
ioctl->size);
return B_OK; return B_OK;
} }
case POKE_PCI_WRITE_CONFIG: case POKE_PCI_WRITE_CONFIG:
{ {
pci_io_args* ioctl = (pci_io_args*) arg; pci_io_args* ioctl = (pci_io_args*)arg;
if (ioctl->signature != POKE_SIGNATURE) if (ioctl->signature != POKE_SIGNATURE)
return B_BAD_VALUE; return B_BAD_VALUE;
@@ -225,7 +227,7 @@ poke_control(void* cookie, uint32 op, void* arg, size_t length)
case POKE_GET_NTH_PCI_INFO: case POKE_GET_NTH_PCI_INFO:
{ {
pci_info_args* ioctl = (pci_info_args*) arg; pci_info_args* ioctl = (pci_info_args*)arg;
if (ioctl->signature != POKE_SIGNATURE) if (ioctl->signature != POKE_SIGNATURE)
return B_BAD_VALUE; return B_BAD_VALUE;
@@ -235,7 +237,7 @@ poke_control(void* cookie, uint32 op, void* arg, size_t length)
case POKE_GET_PHYSICAL_ADDRESS: case POKE_GET_PHYSICAL_ADDRESS:
{ {
mem_map_args* ioctl = (mem_map_args*) arg; mem_map_args* ioctl = (mem_map_args*)arg;
physical_entry table; physical_entry table;
status_t result; status_t result;
@@ -250,22 +252,19 @@ poke_control(void* cookie, uint32 op, void* arg, size_t length)
case POKE_MAP_MEMORY: case POKE_MAP_MEMORY:
{ {
mem_map_args* ioctl = (mem_map_args*) arg; mem_map_args* ioctl = (mem_map_args*)arg;
if (ioctl->signature != POKE_SIGNATURE) if (ioctl->signature != POKE_SIGNATURE)
return B_BAD_VALUE; return B_BAD_VALUE;
ioctl->area = map_physical_memory(ioctl->name, ioctl->area = map_physical_memory(ioctl->name,
ioctl->physical_address, ioctl->physical_address, ioctl->size, ioctl->flags,
ioctl->size, ioctl->protection, (void**)&ioctl->address);
ioctl->flags,
ioctl->protection,
(void**) &ioctl->address);
return ioctl->area; return ioctl->area;
} }
case POKE_UNMAP_MEMORY: case POKE_UNMAP_MEMORY:
{ {
mem_map_args* ioctl = (mem_map_args*) arg; mem_map_args* ioctl = (mem_map_args*)arg;
if (ioctl->signature != POKE_SIGNATURE) if (ioctl->signature != POKE_SIGNATURE)
return B_BAD_VALUE; return B_BAD_VALUE;
@@ -278,16 +277,16 @@ poke_control(void* cookie, uint32 op, void* arg, size_t length)
status_t status_t
poke_read(void* cookie, off_t position, void* buffer, size_t* num_bytes) poke_read(void* cookie, off_t position, void* buffer, size_t* numBytes)
{ {
*num_bytes = 0; *numBytes = 0;
return B_NOT_ALLOWED; return B_NOT_ALLOWED;
} }
status_t status_t
poke_write(void* cookie, off_t position, const void* buffer, size_t* num_bytes) poke_write(void* cookie, off_t position, const void* buffer, size_t* numBytes)
{ {
*num_bytes = 0; *numBytes = 0;
return B_NOT_ALLOWED; return B_NOT_ALLOWED;
} }