Index: busses/rti2c-ppc4xx.c =================================================================== --- busses/rti2c-ppc4xx.c (Revision 5) +++ busses/rti2c-ppc4xx.c (Arbeitskopie) @@ -62,7 +62,7 @@ module_param(rti2c_ppc4xx_force_fast, bool, 0); MODULE_PARM_DESC(rti2c_ppc4xx_fast_poll, "Force fast mode (400 kHz)"); -#define DBG_LEVEL 3 +#define DBG_LEVEL 0 #ifdef DBG #undef DBG @@ -405,7 +405,7 @@ rti2c_ppc4xx_dev_reset(dev); return; } - schedule(); + rtdm_task_sleep(1); } /* Just to clear errors */ @@ -764,7 +764,7 @@ adap->timeout = 1; adap->retries = 1; - ret = rti2c_adapter_register(adap, "rti2cppc4xx"); + ret = rti2c_adapter_register(adap); rtdm_printk("ibm-iic%d: using %s mode\n", dev->idx, dev->fast_mode ? "fast (400 kHz)" : "standard (100 kHz)"); Index: rti2c.h =================================================================== --- rti2c.h (Revision 5) +++ rti2c.h (Arbeitskopie) @@ -100,8 +100,7 @@ /* Adapter registration */ struct rti2c_adapter *rti2c_adapter_alloc(void); void rti2c_adapter_free(struct rti2c_adapter *); -int rti2c_adapter_register(struct rti2c_adapter *adapter, - const char* rtdm_device_name); +int rti2c_adapter_register(struct rti2c_adapter *adapter); int rti2c_adapter_unregister(struct rti2c_adapter *adapter); /* Return the functionality mask */ Index: rti2c-core.c =================================================================== --- rti2c-core.c (Revision 5) +++ rti2c-core.c (Arbeitskopie) @@ -26,6 +26,8 @@ */ #include "rti2c.h" +#include +#include #define RTI2C_MAX_ADAPTERS 5 @@ -43,16 +45,12 @@ { struct rti2c_adapter *adapter; - adapter = (struct rti2c_adapter *)rtdm_malloc(sizeof(*adapter)); + adapter = kzalloc(sizeof(*adapter), GFP_KERNEL); if (!adapter) { rtdm_printk("rti2c-core: cannot allocate rti2c_adapter\n"); return NULL; } - memset(adapter, 0, sizeof(*adapter)); memcpy(&adapter->dev, &rti2c_device, sizeof(adapter->dev)); - rtdm_printk("adapter->dev.proc_name = %s," - " rti2c_device.proc_name = %s\n", - adapter->dev.proc_name, rti2c_device.proc_name); rtdm_mutex_init(&adapter->bus_lock); return adapter; @@ -61,11 +59,10 @@ void rti2c_adapter_free(struct rti2c_adapter *adapter) { rtdm_mutex_destroy(&adapter->bus_lock); - rtdm_free(adapter); + kfree(adapter); } -int rti2c_adapter_register(struct rti2c_adapter *adapter, - const char* rtdm_device_name) +int rti2c_adapter_register(struct rti2c_adapter *adapter) { unsigned int i; int n = -1; @@ -76,6 +73,7 @@ for (i = 0; i < RTI2C_MAX_ADAPTERS; i++) { if (rti2c_adapters[i] == NULL) { n = i; + break; } } if (n < 0) { @@ -85,8 +83,8 @@ rtdm_mutex_unlock(&rti2c_mut_adapters); - memcpy(adapter->dev.device_name, rtdm_device_name, - sizeof(adapter->dev.device_name)); + snprintf(adapter->dev.device_name, sizeof(adapter->dev.device_name), + "rti2c%d", n); adapter->dev.proc_name = adapter->dev.device_name; adapter->dev.device_id = n; @@ -94,8 +92,10 @@ if (ret) { rtdm_printk("rti2c-core: cannot register rtdm-device %s\n", adapter->dev.device_name); + } else { + rtdm_printk("rti2c-core: adapter %s registered\n", + adapter->dev.device_name); } - return ret; } @@ -632,7 +632,7 @@ break; } data_ptrs[i] = (u8 __user *)rdwr_pa[i].buf; - rdwr_pa[i].buf = kmalloc(rdwr_pa[i].len, GFP_KERNEL); + rdwr_pa[i].buf = rtdm_malloc(rdwr_pa[i].len); if(rdwr_pa[i].buf == NULL) { res = -ENOMEM; break;