diff options
Diffstat (limited to 'target/linux/s3c24xx/patches-2.6.26/1232-0003-a6k-sdio-Use-pnp_alloc_dev-to-properly-initiali.patch')
-rwxr-xr-x | target/linux/s3c24xx/patches-2.6.26/1232-0003-a6k-sdio-Use-pnp_alloc_dev-to-properly-initiali.patch | 264 |
1 files changed, 0 insertions, 264 deletions
diff --git a/target/linux/s3c24xx/patches-2.6.26/1232-0003-a6k-sdio-Use-pnp_alloc_dev-to-properly-initiali.patch b/target/linux/s3c24xx/patches-2.6.26/1232-0003-a6k-sdio-Use-pnp_alloc_dev-to-properly-initiali.patch deleted file mode 100755 index 8b61dacba9..0000000000 --- a/target/linux/s3c24xx/patches-2.6.26/1232-0003-a6k-sdio-Use-pnp_alloc_dev-to-properly-initiali.patch +++ /dev/null @@ -1,264 +0,0 @@ -From 0e70d711fe8c81a98b77b35b56728e29a669a08b Mon Sep 17 00:00:00 2001 -From: Holger Freyther <zecke@openmoko.org> -Date: Mon, 4 Aug 2008 08:34:39 +0100 -Subject: [PATCH] 0003-a6k-sdio-Use-pnp_alloc_dev-to-properly-initialize.patch - Signed-Off-By: Holger Freyther <zecke@openmoko.org> - ---- - drivers/sdio/function/wlan/ar6000/hif/hif.c | 2 +- - drivers/sdio/hcd/s3c24xx/s3c24xx_hcd.c | 6 +- - drivers/sdio/hcd/s3c24xx/s3c24xx_hcd.h | 4 +- - drivers/sdio/stack/busdriver/sdio_bus_os.c | 78 ++++++++++++++------------- - include/linux/sdio/sdio_busdriver.h | 2 +- - include/linux/sdio/sdio_hcd_defs.h | 2 +- - 6 files changed, 48 insertions(+), 46 deletions(-) - -diff --git a/drivers/sdio/function/wlan/ar6000/hif/hif.c b/drivers/sdio/function/wlan/ar6000/hif/hif.c -index 3d6d792..5171157 100644 ---- a/drivers/sdio/function/wlan/ar6000/hif/hif.c -+++ b/drivers/sdio/function/wlan/ar6000/hif/hif.c -@@ -782,7 +782,7 @@ delHifDevice(SDDEVICE *handle) - struct device* - HIFGetOSDevice(HIF_DEVICE *device) - { -- return &device->handle->Device.dev; -+ return &device->handle->Device->dev; - } - - static void ResetAllCards(void) -diff --git a/drivers/sdio/hcd/s3c24xx/s3c24xx_hcd.c b/drivers/sdio/hcd/s3c24xx/s3c24xx_hcd.c -index edb8523..09d81ee 100644 ---- a/drivers/sdio/hcd/s3c24xx/s3c24xx_hcd.c -+++ b/drivers/sdio/hcd/s3c24xx/s3c24xx_hcd.c -@@ -1296,7 +1296,6 @@ struct s3c24xx_hcd_context hcd_context = { - .hcd.pContext = &hcd_context, - .hcd.pRequest = s3c24xx_hcd_request, - .hcd.pConfigure = s3c24xx_hcd_config, -- .device.pnp_device.name = "sdio_s3c24xx_hcd", - .device.pnp_driver.name = "sdio_s3c24xx_hcd", - .device.pnp_driver.probe = s3c24xx_hcd_pnp_probe, - .device.pnp_driver.remove = s3c24xx_hcd_pnp_remove, -@@ -1348,7 +1347,7 @@ static int s3c24xx_hcd_probe(struct platform_device * pdev) - - status = SDIO_BusAddOSDevice(&hcd_context.device.dma, - &hcd_context.device.pnp_driver, -- &hcd_context.device.pnp_device); -+ &hcd_context.device.pnp_device, "sdio_s3c24xx_hcd"); - - out: - -@@ -1360,7 +1359,8 @@ static int s3c24xx_hcd_probe(struct platform_device * pdev) - */ - static int s3c24xx_hcd_remove(struct platform_device * pdev) { - printk("S3C2440 SDIO host controller unloaded\n"); -- SDIO_BusRemoveOSDevice(&hcd_context.device.pnp_driver, &hcd_context.device.pnp_device); -+ SDIO_BusRemoveOSDevice(&hcd_context.device.pnp_driver, hcd_context.device.pnp_device); -+ kfree(hcd_context.device.pnp_device); - - return 0; - } -diff --git a/drivers/sdio/hcd/s3c24xx/s3c24xx_hcd.h b/drivers/sdio/hcd/s3c24xx/s3c24xx_hcd.h -index 47fdd33..f8b0912 100644 ---- a/drivers/sdio/hcd/s3c24xx/s3c24xx_hcd.h -+++ b/drivers/sdio/hcd/s3c24xx/s3c24xx_hcd.h -@@ -8,8 +8,8 @@ - #define S3C24XX_HCD_DATA_WRITE 5 - - struct s3c24xx_hcd_device { -- OS_PNPDEVICE pnp_device; /* the OS device for this HCD */ -- OS_PNPDRIVER pnp_driver; /* the OS driver for this HCD */ -+ OS_PNPDEVICE *pnp_device; /* the OS device for this HCD */ -+ OS_PNPDRIVER pnp_driver; /* the OS driver for this HCD */ - SDDMA_DESCRIPTION dma; - struct clk * clock; - unsigned long max_clock_rate; -diff --git a/drivers/sdio/stack/busdriver/sdio_bus_os.c b/drivers/sdio/stack/busdriver/sdio_bus_os.c -index 2650d93..c6f68e6 100644 ---- a/drivers/sdio/stack/busdriver/sdio_bus_os.c -+++ b/drivers/sdio/stack/busdriver/sdio_bus_os.c -@@ -415,8 +415,8 @@ struct pnp_protocol sdio_protocol = { - */ - static int driver_probe(struct pnp_dev* pOSDevice, const struct pnp_device_id *pId) - { -- PSDDEVICE pDevice = SDDEVICE_FROM_OSDEVICE(pOSDevice); -- PSDFUNCTION pFunction = pDevice->Device.dev.driver_data; -+ PSDDEVICE pDevice = SDDEVICE_FROM_OSDEVICE(&pOSDevice); -+ PSDFUNCTION pFunction = pDevice->Device->dev.driver_data; - - if (pFunction == NULL) { - return -1; -@@ -496,34 +496,32 @@ static int UnregisterDriver(PSDFUNCTION pFunction) - */ - SDIO_STATUS OS_InitializeDevice(PSDDEVICE pDevice, PSDFUNCTION pFunction) - { -- char id_name[20]; -+ char id_name[20]; - -- memset(&pDevice->Device, 0, sizeof(pDevice->Device)); -- pDevice->Device.dev.driver_data = (PVOID)pFunction; -+ /* set the id as slot number/function number */ -+ snprintf(id_name, sizeof(id_name) - 1, "SD_%02X%02X", -+ pDevice->pHcd->SlotNumber, (UINT)SDDEVICE_GET_SDIO_FUNCNO(pDevice)); -+ -+ pDevice->Device = pnp_alloc_dev(&sdio_protocol, pDevice->pHcd->SlotNumber + 1, id_name); -+ pDevice->Device->dev.driver_data = (PVOID)pFunction; - //?? pDevice->Device.data = (PVOID)pFunction; - //?? pDevice->Device.dev.driver = &pFunction->Driver.driver; - //?? pDevice->Device.driver = &pFunction->Driver; - //?? pDevice->Device.dev.release = release; - /* get a unique device number, must be done with locks held */ - spin_lock(&InUseDevicesLock); -- pDevice->Device.number = FirstClearBit(&InUseDevices); -- SetBit(&InUseDevices, pDevice->Device.number); -+ pDevice->Device->number = FirstClearBit(&InUseDevices); -+ SetBit(&InUseDevices, pDevice->Device->number); - spin_unlock(&InUseDevicesLock); -- pDevice->Device.capabilities = PNP_REMOVABLE | PNP_DISABLE; -- pDevice->Device.protocol = &sdio_protocol; -- pDevice->Device.active = 1; -+ pDevice->Device->capabilities = PNP_REMOVABLE | PNP_DISABLE; -+ pDevice->Device->active = 1; - -- /* set the id as slot number/function number */ -- snprintf(id_name, sizeof(id_name) - 1, "SD_%02X%02X", -- pDevice->pHcd->SlotNumber, (UINT)SDDEVICE_GET_SDIO_FUNCNO(pDevice)); - DBG_PRINT(SDDBG_TRACE, ("SDIO BusDriver - OS_InitializeDevice adding id: %s\n", - id_name)); -- pnp_add_id(&pDevice->Device, id_name); -- -- /* deal with DMA settings */ -+ /* deal with DMA settings */ - if (pDevice->pHcd->pDmaDescription != NULL) { -- pDevice->Device.dev.dma_mask = &pDevice->pHcd->pDmaDescription->Mask; -- pDevice->Device.dev.coherent_dma_mask = pDevice->pHcd->pDmaDescription->Mask; -+ pDevice->Device->dev.dma_mask = &pDevice->pHcd->pDmaDescription->Mask; -+ pDevice->Device->dev.coherent_dma_mask = pDevice->pHcd->pDmaDescription->Mask; - } - - return SDIO_STATUS_SUCCESS; -@@ -537,13 +535,13 @@ SDIO_STATUS OS_AddDevice(PSDDEVICE pDevice, PSDFUNCTION pFunction) - int error; - DBG_PRINT(SDDBG_TRACE, ("SDIO BusDriver - OS_AddDevice adding function: %s\n", - pFunction->pName)); -- error = pnp_add_device(&pDevice->Device); -+ error = pnp_add_device(pDevice->Device); - if (error < 0) { - DBG_PRINT(SDDBG_ERROR, ("SDIO BusDriver - OS_AddDevice failed pnp_add_device: %d\n", - error)); - } - /* replace the buggy pnp's release */ -- pDevice->Device.dev.release = release; -+ pDevice->Device->dev.release = release; - - return OSErrorToSDIOError(error); - } -@@ -554,15 +552,17 @@ SDIO_STATUS OS_AddDevice(PSDDEVICE pDevice, PSDFUNCTION pFunction) - void OS_RemoveDevice(PSDDEVICE pDevice) - { - DBG_PRINT(SDDBG_TRACE, ("SDIO BusDriver - OS_RemoveDevice \n")); -- pnp_remove_card_device(&pDevice->Device); -+ pnp_remove_card_device(pDevice->Device); - spin_lock(&InUseDevicesLock); -- ClearBit(&InUseDevices, pDevice->Device.number); -+ ClearBit(&InUseDevices, pDevice->Device->number); - spin_unlock(&InUseDevicesLock); - -- if (pDevice->Device.id != NULL) { -- KernelFree(pDevice->Device.id); -- pDevice->Device.id = NULL; -+ if (pDevice->Device->id != NULL) { -+ KernelFree(pDevice->Device->id); -+ pDevice->Device->id = NULL; - } -+ -+ KernelFree(pDevice->Device); - } - - /*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -@@ -612,20 +612,13 @@ void OS_RemoveDevice(PSDDEVICE pDevice) - @see also: SDIO_BusRemoveOSDevice - - +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ --SDIO_STATUS SDIO_BusAddOSDevice(PSDDMA_DESCRIPTION pDma, POS_PNPDRIVER pDriver, POS_PNPDEVICE pDevice) -+SDIO_STATUS SDIO_BusAddOSDevice(PSDDMA_DESCRIPTION pDma, POS_PNPDRIVER pDriver, POS_PNPDEVICE *outDevice, const char* name) - { - int err; - struct pnp_device_id *pFdid; - static int slotNumber = 0; /* we just use an increasing count for the slots number */ -- char id_name[20]; -+ struct pnp_dev* pDevice; - -- if (pDma != NULL) { -- pDevice->dev.dma_mask = &pDma->Mask; -- pDevice->dev.coherent_dma_mask = pDma->Mask; -- } -- DBG_PRINT(SDDBG_ERROR, -- ("SDIO BusDriver - SDIO_GetBusOSDevice, registering driver: %s DMAmask: 0x%x\n", -- pDriver->name, (UINT)*pDevice->dev.dma_mask)); - pFdid = KernelAlloc(sizeof(struct pnp_device_id)*2); - /* set the id as slot number/function number */ - snprintf(pFdid[0].id, sizeof(pFdid[0].id), "SD_%02X08", -@@ -644,14 +637,22 @@ SDIO_STATUS SDIO_BusAddOSDevice(PSDDMA_DESCRIPTION pDma, POS_PNPDRIVER pDriver, - return OSErrorToSDIOError(err); - } - -+ pDevice = pnp_alloc_dev(&sdio_protocol, slotNumber - 1, pFdid[0].id); -+ if (!pDevice) -+ return -EINVAL; -+ -+ if (pDma != NULL) { -+ pDevice->dev.dma_mask = &pDma->Mask; -+ pDevice->dev.coherent_dma_mask = pDma->Mask; -+ } -+ DBG_PRINT(SDDBG_ERROR, -+ ("SDIO BusDriver - SDIO_GetBusOSDevice, registering driver: %s DMAmask: 0x%x\n", -+ pDriver->name, (UINT)*pDevice->dev.dma_mask)); -+ - pDevice->protocol = &sdio_protocol; - pDevice->capabilities = PNP_REMOVABLE | PNP_DISABLE; - pDevice->active = 1; - -- /* set the id as slot number/function number */ -- snprintf(id_name, sizeof(id_name) - 1, "SD_%02X08", -- 0); //??pDevice->pHcd->SlotNumber);//?????fix this, slotnumber isn't vaialble yet -- pnp_add_id(pDevice, id_name); - - /* get a unique device number */ - spin_lock(&InUseDevicesLock); -@@ -667,6 +668,7 @@ SDIO_STATUS SDIO_BusAddOSDevice(PSDDMA_DESCRIPTION pDma, POS_PNPDRIVER pDriver, - } - /* replace the buggy pnp's release */ - pDevice->dev.release = release; -+ *outDevice = pDevice; - return OSErrorToSDIOError(err); - } - -diff --git a/include/linux/sdio/sdio_busdriver.h b/include/linux/sdio/sdio_busdriver.h -index b431d3d..35e3ebb 100644 ---- a/include/linux/sdio/sdio_busdriver.h -+++ b/include/linux/sdio/sdio_busdriver.h -@@ -477,7 +477,7 @@ typedef struct _SDDEVICE { - struct _SDHCD *pHcd; /* host controller this device is on (internal use) */ - SDDEVICE_INFO DeviceInfo; /* device info */ - SD_PNP_INFO pId[1]; /* id of this device */ -- OS_PNPDEVICE Device; /* device registration with base system */ -+ OS_PNPDEVICE *Device; /* device registration with base system */ - SD_SLOT_CURRENT SlotCurrentAlloc; /* allocated slot current for this device/function (internal use) */ - SD_DEVICE_FLAGS Flags; /* internal use flags */ - CT_VERSION_CODE Version; /* version code of the bus driver */ -diff --git a/include/linux/sdio/sdio_hcd_defs.h b/include/linux/sdio/sdio_hcd_defs.h -index 1782469..e6115a2 100644 ---- a/include/linux/sdio/sdio_hcd_defs.h -+++ b/include/linux/sdio/sdio_hcd_defs.h -@@ -213,7 +213,7 @@ SDIO_STATUS SDIO_RegisterHostController(PSDHCD pHcd); - SDIO_STATUS SDIO_UnregisterHostController(PSDHCD pHcd); - SDIO_STATUS SDIO_HandleHcdEvent(PSDHCD pHcd, HCD_EVENT Event); - SDIO_STATUS SDIO_CheckResponse(PSDHCD pHcd, PSDREQUEST pReq, SDHCD_RESPONSE_CHECK_MODE CheckMode); --SDIO_STATUS SDIO_BusAddOSDevice(PSDDMA_DESCRIPTION pDma, POS_PNPDRIVER pDriver, POS_PNPDEVICE pDevice); -+SDIO_STATUS SDIO_BusAddOSDevice(PSDDMA_DESCRIPTION pDma, POS_PNPDRIVER pDriver, POS_PNPDEVICE *pDevice, const char* name); - void SDIO_BusRemoveOSDevice(POS_PNPDRIVER pDriver, POS_PNPDEVICE pDevice); - - #endif /* __SDIO_BUSDRIVER_H___ */ --- -1.5.6.3 - |