From 3c90534a30bbfd46aad95b2277af3e8c33b8aa1a Mon Sep 17 00:00:00 2001 From: Rask Ingemann Lambertsen Date: Tue, 31 Mar 2009 00:28:09 +0200 Subject: Fix cpu_is_s3c2442() returning false for an S3C2442B An S3C2442B would be detected as S3C2440 by the cpu_is_s3cxxxx() macros. This patch fixes it. Signed-off-by: Rask Ingeman Lambertsen --- arch/arm/plat-s3c/init.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/arch/arm/plat-s3c/init.c b/arch/arm/plat-s3c/init.c index 94a3120f561..c1ddac1007c 100644 --- a/arch/arm/plat-s3c/init.c +++ b/arch/arm/plat-s3c/init.c @@ -52,7 +52,8 @@ static void __init set_system_rev(unsigned int idcode) if (idcode == 0x32410002 || idcode == 0x32440001) system_rev |= (0x1 << 16); - if (idcode == 0x32440aaa) /* s3c2442 */ + if (idcode == 0x32440aaa /* s3c2442 */ + || idcode == 0x32440aab) /* s3c2442b */ system_rev |= (0x2 << 16); if (idcode == 0x0) /* s3c2400 */ system_rev |= (0x2400 << 16); -- cgit v1.2.3 From 5c7e3aef519168ab5230466f51f28b8553cbd363 Mon Sep 17 00:00:00 2001 From: Werner Almesberger Date: Mon, 30 Mar 2009 21:06:02 -0300 Subject: Fix ar6000_do_activate return value ... and check the return value in ar6000_activate. [ Werner: changed ___FUNCTION__ to __func__ ] Signed-off-by: Michael Trimarchi Signed-off-by: Werner Almesberger --- drivers/ar6000/hif/hif2.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/drivers/ar6000/hif/hif2.c b/drivers/ar6000/hif/hif2.c index 571833f2c79..8d0755f7b5a 100644 --- a/drivers/ar6000/hif/hif2.c +++ b/drivers/ar6000/hif/hif2.c @@ -508,7 +508,8 @@ static int ar6000_do_activate(struct hif_device *hif) sdio_release_host(func); hif->io_task = kthread_run(io, hif, "ar6000_io"); - if (IS_ERR(hif->io_task)) { + ret = IS_ERR(hif->io_task); + if (ret) { dev_err(dev, "kthread_run(ar6000_io): %d\n", ret); goto out_func_ready; } @@ -580,8 +581,14 @@ static int ar6000_activate(struct hif_device *hif) mutex_lock(&hif->activate_lock); if (!hif->active) { ret = ar6000_do_activate(hif); + if (ret) { + printk(KERN_ERR "%s: Failed to activate %d\n", + __func__, ret); + goto out; + } hif->active = 1; } +out: mutex_unlock(&hif->activate_lock); return ret; } -- cgit v1.2.3 From 645df9d63189968bb3884d46f6558c3e2b0c935a Mon Sep 17 00:00:00 2001 From: "ivan_p@hotbox.ru" Date: Thu, 26 Mar 2009 15:03:03 +0300 Subject: AR6000 netif_queue_stop non stop, Bug? This patch resolves the following issue: http://lists.openmoko.org/pipermail/openmoko-kernel/2009-March/009643.html Changed: prevent rescheduling network queue at interface opened/connected. Removed: wake network queue at transmit complete. Added: wake network queue at packet queue limit not reached. Signed-off-by: Ivan Petrov --- drivers/ar6000/ar6000/ar6000_drv.c | 46 +++++++++++------------ drivers/ar6000/ar6000/ar6000_drv.h | 1 - drivers/ar6000/ar6000/ar6000_raw_if.c | 1 + drivers/ar6000/htc/htc.c | 1 + drivers/ar6000/htc/htc_send.c | 70 +++++++++++++++++------------------ drivers/ar6000/include/htc_api.h | 3 ++ 6 files changed, 60 insertions(+), 62 deletions(-) diff --git a/drivers/ar6000/ar6000/ar6000_drv.c b/drivers/ar6000/ar6000/ar6000_drv.c index 816557641de..cdf05d1b314 100644 --- a/drivers/ar6000/ar6000/ar6000_drv.c +++ b/drivers/ar6000/ar6000/ar6000_drv.c @@ -238,6 +238,8 @@ static void ar6000_tx_complete(void *Context, HTC_PACKET *pPacket); static void ar6000_tx_queue_full(void *Context, HTC_ENDPOINT_ID Endpoint); +static void ar6000_tx_queue_avail(void *Context, HTC_ENDPOINT_ID Endpoint); + /* * Static variables */ @@ -1149,7 +1151,7 @@ static int ar6000_open(struct net_device *dev) { /* Wake up the queues */ - netif_wake_queue(dev); + netif_start_queue(dev); return 0; } @@ -1278,6 +1280,7 @@ int ar6000_init(struct net_device *dev) connect.EpCallbacks.EpRecv = ar6000_rx; connect.EpCallbacks.EpRecvRefill = ar6000_rx_refill; connect.EpCallbacks.EpSendFull = ar6000_tx_queue_full; + connect.EpCallbacks.EpSendAvail = ar6000_tx_queue_avail; /* set the max queue depth so that our ar6000_tx_queue_full handler gets called. * Linux has the peculiarity of not providing flow control between the * NIC and the network stack. There is no API to indicate that a TX packet @@ -1753,10 +1756,10 @@ applyAPTCHeuristics(AR_SOFTC_T *ar) } #endif /* ADAPTIVE_POWER_THROUGHPUT_CONTROL */ -static void ar6000_tx_queue_full(void *Context, HTC_ENDPOINT_ID Endpoint) +static void +ar6000_tx_queue_full(void *Context, HTC_ENDPOINT_ID Endpoint) { - AR_SOFTC_T *ar = (AR_SOFTC_T *)Context; - + AR_SOFTC_T *ar = (AR_SOFTC_T *)Context; if (Endpoint == arWMIStream2EndpointID(ar,WMI_CONTROL_PRI)) { if (!bypasswmi) { @@ -1771,19 +1774,27 @@ static void ar6000_tx_queue_full(void *Context, HTC_ENDPOINT_ID Endpoint) AR_DEBUG_PRINTF("WMI Control Endpoint is FULL!!! \n"); } } else { - - AR6000_SPIN_LOCK(&ar->arLock, 0); - ar->arNetQueueStopped = TRUE; - AR6000_SPIN_UNLOCK(&ar->arLock, 0); /* one of the data endpoints queues is getting full..need to stop network stack - * the queue will resume in ar6000_tx_complete() */ + * the queue will resume after credits received */ netif_stop_queue(ar->arNetDev); } +} +static void +ar6000_tx_queue_avail(void *Context, HTC_ENDPOINT_ID Endpoint) +{ + AR_SOFTC_T *ar = (AR_SOFTC_T *)Context; + if (Endpoint == arWMIStream2EndpointID(ar,WMI_CONTROL_PRI)) { + /* FIXME: what do for it? */ + } else { + /* Wake up interface, rescheduling prevented. */ + if ((ar->arConnected == TRUE) || (bypasswmi)) { + netif_wake_queue(ar->arNetDev); + } + } } - static void ar6000_tx_complete(void *Context, HTC_PACKET *pPacket) { @@ -1877,10 +1888,6 @@ ar6000_tx_complete(void *Context, HTC_PACKET *pPacket) ar6000_free_cookie(ar, cookie); } - if (ar->arNetQueueStopped) { - ar->arNetQueueStopped = FALSE; - } - AR6000_SPIN_UNLOCK(&ar->arLock, 0); /* lock is released, we can freely call other kernel APIs */ @@ -1888,18 +1895,9 @@ ar6000_tx_complete(void *Context, HTC_PACKET *pPacket) /* this indirectly frees the HTC_PACKET */ A_NETBUF_FREE(skb); - if ((ar->arConnected == TRUE) || (bypasswmi)) { - if (status != A_ECANCELED) { - /* don't wake the queue if we are flushing, other wise it will just - * keep queueing packets, which will keep failing */ - netif_wake_queue(ar->arNetDev); - } - } - if (wakeEvent) { wake_up(&arEvent); } - } /* @@ -2317,7 +2315,7 @@ ar6000_connect_event(AR_SOFTC_T *ar, A_UINT16 channel, A_UINT8 *bssid, /* flush data queues */ ar6000_TxDataCleanup(ar); - netif_wake_queue(ar->arNetDev); + netif_start_queue(ar->arNetDev); if ((OPEN_AUTH == ar->arDot11AuthMode) && (NONE_AUTH == ar->arAuthMode) && diff --git a/drivers/ar6000/ar6000/ar6000_drv.h b/drivers/ar6000/ar6000/ar6000_drv.h index d5ff7774885..784f158d9c4 100644 --- a/drivers/ar6000/ar6000/ar6000_drv.h +++ b/drivers/ar6000/ar6000/ar6000_drv.h @@ -273,7 +273,6 @@ typedef struct ar6_softc { A_BOOL write_buffer_available[HTC_RAW_STREAM_NUM_MAX]; A_BOOL read_buffer_available[HTC_RAW_STREAM_NUM_MAX]; #endif - A_BOOL arNetQueueStopped; A_BOOL arRawIfInit; int arDeviceIndex; COMMON_CREDIT_STATE_INFO arCreditStateInfo; diff --git a/drivers/ar6000/ar6000/ar6000_raw_if.c b/drivers/ar6000/ar6000/ar6000_raw_if.c index 65402b9c8d5..4443bb26733 100644 --- a/drivers/ar6000/ar6000/ar6000_raw_if.c +++ b/drivers/ar6000/ar6000/ar6000_raw_if.c @@ -127,6 +127,7 @@ static A_STATUS ar6000_connect_raw_service(AR_SOFTC_T *ar, /* simple interface, we don't need these optional callbacks */ connect.EpCallbacks.EpRecvRefill = NULL; connect.EpCallbacks.EpSendFull = NULL; + connect.EpCallbacks.EpSendAvail = NULL; connect.MaxSendQueueDepth = RAW_HTC_WRITE_BUFFERS_NUM; /* connect to the raw streams service, we may be able to get 1 or more diff --git a/drivers/ar6000/htc/htc.c b/drivers/ar6000/htc/htc.c index b5e691b962e..63ef90bf916 100644 --- a/drivers/ar6000/htc/htc.c +++ b/drivers/ar6000/htc/htc.c @@ -284,6 +284,7 @@ A_STATUS HTCWaitTarget(HTC_HANDLE HTCHandle) connect.EpCallbacks.EpRecv = HTCControlRecv; connect.EpCallbacks.EpRecvRefill = NULL; /* not needed */ connect.EpCallbacks.EpSendFull = NULL; /* not nedded */ + connect.EpCallbacks.EpSendAvail = NULL; /* not nedded */ connect.MaxSendQueueDepth = NUM_CONTROL_BUFFERS; connect.ServiceID = HTC_CTRL_RSVD_SVC; diff --git a/drivers/ar6000/htc/htc_send.c b/drivers/ar6000/htc/htc_send.c index fd5ef6e2605..62d8bcda5e2 100644 --- a/drivers/ar6000/htc/htc_send.c +++ b/drivers/ar6000/htc/htc_send.c @@ -101,23 +101,22 @@ A_STATUS HTCIssueSend(HTC_TARGET *target, HTC_PACKET *pPacket, A_UINT8 SendFlags } /* try to send the current packet or a packet at the head of the TX queue, - * if there are no credits, the packet remains in the queue. - * this function always succeeds and returns a flag if the TX queue for - * the endpoint has hit the set limit */ -static A_BOOL HTCTrySend(HTC_TARGET *target, - HTC_ENDPOINT *pEndpoint, - HTC_PACKET *pPacketToSend) + * if there are no credits, the packet remains in the queue. */ +static void HTCTrySend(HTC_TARGET *target, + HTC_PACKET *pPacketToSend, + HTC_ENDPOINT_ID ep) { - HTC_PACKET *pPacket; - int creditsRequired; - int remainder; - A_UINT8 sendFlags; - A_BOOL epFull = FALSE; - - LOCK_HTC_TX(target); + HTC_PACKET *pPacket; + HTC_ENDPOINT *pEndpoint; + int creditsRequired; + A_UINT8 sendFlags; AR_DEBUG_PRINTF(ATH_DEBUG_SEND,("+HTCTrySend (pPkt:0x%X)\n",(A_UINT32)pPacketToSend)); + pEndpoint = &target->EndPoint[ep]; + + LOCK_HTC_TX(target); + if (pPacketToSend != NULL) { /* caller supplied us a packet to queue to the tail of the HTC TX queue before * we check the tx queue */ @@ -143,12 +142,9 @@ static A_BOOL HTCTrySend(HTC_TARGET *target, (A_UINT32)pPacket, pEndpoint->CurrentTxQueueDepth)); /* figure out how many credits this message requires */ - creditsRequired = (pPacket->ActualLength + HTC_HDR_LENGTH) / target->TargetCreditSize; - remainder = (pPacket->ActualLength + HTC_HDR_LENGTH) % target->TargetCreditSize; - - if (remainder) { - creditsRequired++; - } + creditsRequired = pPacket->ActualLength + HTC_HDR_LENGTH; + creditsRequired += target->TargetCreditSize - 1; + creditsRequired /= target->TargetCreditSize; AR_DEBUG_PRINTF(ATH_DEBUG_SEND,(" Creds Required:%d Got:%d\n", creditsRequired, pEndpoint->CreditDist.TxCredits)); @@ -212,14 +208,23 @@ static A_BOOL HTCTrySend(HTC_TARGET *target, } if (pEndpoint->CurrentTxQueueDepth >= pEndpoint->MaxTxQueueDepth) { - /* let caller know that this endpoint has reached the maximum depth */ - epFull = TRUE; + AR_DEBUG_PRINTF(ATH_DEBUG_SEND, (" Endpoint %d, TX queue is full, Depth:%d, Max:%d \n", + ep, pEndpoint->CurrentTxQueueDepth, pEndpoint->MaxTxQueueDepth)); + UNLOCK_HTC_TX(target); + /* queue is now full, let caller know */ + if (pEndpoint->EpCallBacks.EpSendFull != NULL) { + AR_DEBUG_PRINTF(ATH_DEBUG_SEND, (" Calling driver's send full callback.... \n")); + pEndpoint->EpCallBacks.EpSendFull(pEndpoint->EpCallBacks.pContext, ep); + } + } else { + UNLOCK_HTC_TX(target); + /* queue is now available for new packet, let caller know */ + if (pEndpoint->EpCallBacks.EpSendAvail) { + pEndpoint->EpCallBacks.EpSendAvail(pEndpoint->EpCallBacks.pContext, ep); + } } - UNLOCK_HTC_TX(target); - AR_DEBUG_PRINTF(ATH_DEBUG_SEND,("-HTCTrySend: \n")); - return epFull; } /* HTC API - HTCSendPkt */ @@ -251,20 +256,12 @@ A_STATUS HTCSendPkt(HTC_HANDLE HTCHandle, HTC_PACKET *pPacket) pPacket->Completion = HTCSendPktCompletionHandler; pPacket->pContext = target; - if (HTCTrySend(target, pEndpoint, pPacket)) { - AR_DEBUG_PRINTF(ATH_DEBUG_SEND, (" Endpoint %d, TX queue is full, Depth:%d, Max:%d \n", - ep, pEndpoint->CurrentTxQueueDepth, pEndpoint->MaxTxQueueDepth)); - /* queue is now full, let caller know */ - if (pEndpoint->EpCallBacks.EpSendFull != NULL) { - AR_DEBUG_PRINTF(ATH_DEBUG_SEND, (" Calling driver's send full callback.... \n")); - pEndpoint->EpCallBacks.EpSendFull(pEndpoint->EpCallBacks.pContext, - ep); - } - } + HTCTrySend(target, pPacket, ep); - AR_DEBUG_PRINTF(ATH_DEBUG_SEND, ("-HTCSendPkt \n")); } while (FALSE); + AR_DEBUG_PRINTF(ATH_DEBUG_SEND, ("-HTCSendPkt \n")); + return status; } @@ -292,7 +289,7 @@ static INLINE void HTCCheckEndpointTxQueues(HTC_TARGET *target) * Highest priority queue get's processed first, if there are credits available the * highest priority queue will get a chance to reclaim credits from lower priority * ones */ - HTCTrySend(target, pEndpoint, NULL); + HTCTrySend(target, NULL, pDistItem->Endpoint); } pDistItem = pDistItem->pNext; @@ -480,7 +477,6 @@ void HTCFlushSendPkts(HTC_TARGET *target) HTCFlushEndpointTX(target,pEndpoint,HTC_TX_PACKET_TAG_ALL); } - } /* HTC API to flush an endpoint's TX queue*/ diff --git a/drivers/ar6000/include/htc_api.h b/drivers/ar6000/include/htc_api.h index 73b7df60ed0..e75692d7efa 100644 --- a/drivers/ar6000/include/htc_api.h +++ b/drivers/ar6000/include/htc_api.h @@ -86,6 +86,8 @@ typedef void (*HTC_EP_RECV_REFILL)(void *, HTC_ENDPOINT_ID Endpoint); * Other OSes require a "per-packet" indication_RAW_STREAM_NUM_MAX for each completed TX packet, this * closed loop mechanism will prevent the network stack from overunning the NIC */ typedef void (*HTC_EP_SEND_QUEUE_FULL)(void *, HTC_ENDPOINT_ID Endpoint); +/* Optional per service connection callback when a send queue is available for receive new packet. */ +typedef void (*HTC_EP_SEND_QUEUE_AVAIL)(void *, HTC_ENDPOINT_ID Endpoint); typedef struct _HTC_EP_CALLBACKS { void *pContext; /* context for each callback */ @@ -93,6 +95,7 @@ typedef struct _HTC_EP_CALLBACKS { HTC_EP_RECV_PKT EpRecv; /* receive callback for connected endpoint */ HTC_EP_RECV_REFILL EpRecvRefill; /* OPTIONAL receive re-fill callback for connected endpoint */ HTC_EP_SEND_QUEUE_FULL EpSendFull; /* OPTIONAL send full callback */ + HTC_EP_SEND_QUEUE_AVAIL EpSendAvail; /* OPTIONAL send available callback */ } HTC_EP_CALLBACKS; /* service connection information */ -- cgit v1.2.3 From 0213cae5cbda64977b86396a3a79269ab047aa1b Mon Sep 17 00:00:00 2001 From: Werner Almesberger Date: Tue, 31 Mar 2009 00:49:46 -0300 Subject: Minor AR6000 cleanup This patch cleans up a little after Ivan's netif_queue_stop fix. Signed-off-by: Werner Almesberger --- drivers/ar6000/ar6000/ar6000_drv.c | 5 ++--- drivers/ar6000/htc/htc.c | 4 ++-- drivers/ar6000/htc/htc_send.c | 3 +-- 3 files changed, 5 insertions(+), 7 deletions(-) diff --git a/drivers/ar6000/ar6000/ar6000_drv.c b/drivers/ar6000/ar6000/ar6000_drv.c index cdf05d1b314..21504f221dd 100644 --- a/drivers/ar6000/ar6000/ar6000_drv.c +++ b/drivers/ar6000/ar6000/ar6000_drv.c @@ -1759,7 +1759,7 @@ applyAPTCHeuristics(AR_SOFTC_T *ar) static void ar6000_tx_queue_full(void *Context, HTC_ENDPOINT_ID Endpoint) { - AR_SOFTC_T *ar = (AR_SOFTC_T *)Context; + AR_SOFTC_T *ar = (AR_SOFTC_T *) Context; if (Endpoint == arWMIStream2EndpointID(ar,WMI_CONTROL_PRI)) { if (!bypasswmi) { @@ -1789,9 +1789,8 @@ ar6000_tx_queue_avail(void *Context, HTC_ENDPOINT_ID Endpoint) /* FIXME: what do for it? */ } else { /* Wake up interface, rescheduling prevented. */ - if ((ar->arConnected == TRUE) || (bypasswmi)) { + if (ar->arConnected == TRUE || bypasswmi) netif_wake_queue(ar->arNetDev); - } } } diff --git a/drivers/ar6000/htc/htc.c b/drivers/ar6000/htc/htc.c index 63ef90bf916..d52ed944e0d 100644 --- a/drivers/ar6000/htc/htc.c +++ b/drivers/ar6000/htc/htc.c @@ -283,8 +283,8 @@ A_STATUS HTCWaitTarget(HTC_HANDLE HTCHandle) connect.EpCallbacks.EpTxComplete = HTCControlTxComplete; connect.EpCallbacks.EpRecv = HTCControlRecv; connect.EpCallbacks.EpRecvRefill = NULL; /* not needed */ - connect.EpCallbacks.EpSendFull = NULL; /* not nedded */ - connect.EpCallbacks.EpSendAvail = NULL; /* not nedded */ + connect.EpCallbacks.EpSendFull = NULL; /* not needed */ + connect.EpCallbacks.EpSendAvail = NULL; /* not needed */ connect.MaxSendQueueDepth = NUM_CONTROL_BUFFERS; connect.ServiceID = HTC_CTRL_RSVD_SVC; diff --git a/drivers/ar6000/htc/htc_send.c b/drivers/ar6000/htc/htc_send.c index 62d8bcda5e2..cf0dabef472 100644 --- a/drivers/ar6000/htc/htc_send.c +++ b/drivers/ar6000/htc/htc_send.c @@ -219,9 +219,8 @@ static void HTCTrySend(HTC_TARGET *target, } else { UNLOCK_HTC_TX(target); /* queue is now available for new packet, let caller know */ - if (pEndpoint->EpCallBacks.EpSendAvail) { + if (pEndpoint->EpCallBacks.EpSendAvail) pEndpoint->EpCallBacks.EpSendAvail(pEndpoint->EpCallBacks.pContext, ep); - } } AR_DEBUG_PRINTF(ATH_DEBUG_SEND,("-HTCTrySend: \n")); -- cgit v1.2.3 From 1804926eec28ef558225577d086fad7a91cbc38a Mon Sep 17 00:00:00 2001 From: Werner Almesberger Date: Tue, 31 Mar 2009 04:02:04 -0300 Subject: AR6000: revert MMC busy status check e2c0650efa751a6a2220618695fa41a2a5e7d23c introduced a platform-specific hack to check if the MMC driver and hardware handle busy signaling from the device properly. Since this seems to be the case, we can revert this hack now. Signed-off-by: Werner Almesberger --- drivers/ar6000/hif/hif2.c | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/drivers/ar6000/hif/hif2.c b/drivers/ar6000/hif/hif2.c index 8d0755f7b5a..fddd2af8c1a 100644 --- a/drivers/ar6000/hif/hif2.c +++ b/drivers/ar6000/hif/hif2.c @@ -26,7 +26,6 @@ #include #include #include -#include #include #include "athdefs.h" @@ -132,9 +131,6 @@ static DEFINE_MUTEX(shutdown_lock); /* ----- Request processing ------------------------------------------------ */ -#include - - static A_STATUS process_request(struct hif_request *req) { int ret; @@ -143,16 +139,8 @@ static A_STATUS process_request(struct hif_request *req) dev_dbg(&req->func->dev, "process_request(req %p)\n", req); sdio_claim_host(req->func); if (req->read) { - while (!s3c2410_gpio_getpin(S3C2410_GPE7)) { - printk(KERN_INFO "READ WHILE BUSY !\n"); - yield(); - } ret = req->read(req->func, req->buf, req->addr, req->len); } else { - while (!s3c2410_gpio_getpin(S3C2410_GPE7)) { - printk(KERN_INFO "WRITE WHILE BUSY !\n"); - yield(); - } ret = req->write(req->func, req->addr, req->buf, req->len); } sdio_release_host(req->func); -- cgit v1.2.3 From 8ce8fdbdb2d1ea30109aa816b9557dbf37ea58ad Mon Sep 17 00:00:00 2001 From: Werner Almesberger Date: Tue, 31 Mar 2009 04:16:32 -0300 Subject: AR6000: Corrected 'vendor/device IDs'. IDs 0 and 1 are AR6002, not AR6001. This is based on a patch by Ivan Petrov, but it differs in leaving the IDs in include/linux/mmc/sdio_ids.h Signed-off-by: Werner Almesberger Reported-by: Ivan Petrov --- drivers/ar6000/hif/hif2.c | 12 ++++++------ include/linux/mmc/sdio_ids.h | 3 ++- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/drivers/ar6000/hif/hif2.c b/drivers/ar6000/hif/hif2.c index fddd2af8c1a..56981af8b96 100644 --- a/drivers/ar6000/hif/hif2.c +++ b/drivers/ar6000/hif/hif2.c @@ -660,12 +660,12 @@ static void sdio_ar6000_remove(struct sdio_func *func) SDIO_DEVICE(SDIO_VENDOR_ID_ATHEROS, SDIO_DEVICE_ID_ATHEROS_##id | (offset)) static const struct sdio_device_id sdio_ar6000_ids[] = { - { ATHEROS_SDIO_DEVICE(AR6000, 0) }, - { ATHEROS_SDIO_DEVICE(AR6000, 0x1) }, - { ATHEROS_SDIO_DEVICE(AR6000, 0x8) }, - { ATHEROS_SDIO_DEVICE(AR6000, 0x9) }, - { ATHEROS_SDIO_DEVICE(AR6000, 0xa) }, - { ATHEROS_SDIO_DEVICE(AR6000, 0xb) }, + { ATHEROS_SDIO_DEVICE(AR6002, 0) }, + { ATHEROS_SDIO_DEVICE(AR6002, 0x1) }, + { ATHEROS_SDIO_DEVICE(AR6001, 0x8) }, + { ATHEROS_SDIO_DEVICE(AR6001, 0x9) }, + { ATHEROS_SDIO_DEVICE(AR6001, 0xa) }, + { ATHEROS_SDIO_DEVICE(AR6001, 0xb) }, { /* end: all zeroes */ }, }; diff --git a/include/linux/mmc/sdio_ids.h b/include/linux/mmc/sdio_ids.h index 27061909203..1ee06dfc883 100644 --- a/include/linux/mmc/sdio_ids.h +++ b/include/linux/mmc/sdio_ids.h @@ -27,6 +27,7 @@ #define SDIO_DEVICE_ID_MARVELL_LIBERTAS 0x9103 #define SDIO_DEVICE_ID_MARVELL_88W8688 0x9104 #define SDIO_VENDOR_ID_ATHEROS 0x0271 -#define SDIO_DEVICE_ID_ATHEROS_AR6000 0x0100 +#define SDIO_DEVICE_ID_ATHEROS_AR6001 0x0100 +#define SDIO_DEVICE_ID_ATHEROS_AR6002 0x0200 #endif -- cgit v1.2.3 From 18f5e41da61cfb512042c1978e24e07bde6917cf Mon Sep 17 00:00:00 2001 From: Tim Niemeyer Date: Fri, 27 Mar 2009 17:27:53 +0100 Subject: remove sysfs-links on remove Signed-off-by: Tim Niemeyer --- arch/arm/plat-s3c24xx/neo1973_pm_gps.c | 1 + 1 file changed, 1 insertion(+) diff --git a/arch/arm/plat-s3c24xx/neo1973_pm_gps.c b/arch/arm/plat-s3c24xx/neo1973_pm_gps.c index b5322f200b4..93b491137e7 100644 --- a/arch/arm/plat-s3c24xx/neo1973_pm_gps.c +++ b/arch/arm/plat-s3c24xx/neo1973_pm_gps.c @@ -764,6 +764,7 @@ static int gta01_pm_gps_remove(struct platform_device *pdev) regulator_put(neo1973_gps.regulator[i]); } #endif + bus_remove_device_link(&platform_bus_type, "gta01-pm-gps.0"); sysfs_remove_group(&pdev->dev.kobj, >a01_gps_attr_group); } -- cgit v1.2.3 From 3b770a4056e1c5ff907fdc50e6ea04e3a1499483 Mon Sep 17 00:00:00 2001 From: Tim Niemeyer Date: Fri, 27 Mar 2009 18:10:36 +0100 Subject: This patch brings suspend/resume back to GTA01 "pdata" is NULL on GTA01 and you oops. Revised patch, this time with if(..) instead of #ifdef Signed-off-by: Tim Niemeyer --- drivers/leds/leds-neo1973-vibrator.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/leds/leds-neo1973-vibrator.c b/drivers/leds/leds-neo1973-vibrator.c index e25ca4830bc..8bfb1179d03 100644 --- a/drivers/leds/leds-neo1973-vibrator.c +++ b/drivers/leds/leds-neo1973-vibrator.c @@ -129,7 +129,8 @@ static int neo1973_vib_init_hw(struct neo1973_vib_priv *vp) static int neo1973_vib_suspend(struct platform_device *dev, pm_message_t state) { led_classdev_suspend(&neo1973_vib_led.cdev); - neo1973_vib_priv.pdata->disable_fiq(); + if (neo1973_vib_priv.pdata) + neo1973_vib_priv.pdata->disable_fiq(); return 0; } @@ -141,7 +142,8 @@ static int neo1973_vib_resume(struct platform_device *dev) neo1973_vib_init_hw(vp); led_classdev_resume(&neo1973_vib_led.cdev); - neo1973_vib_priv.pdata->enable_fiq(); + if (neo1973_vib_priv.pdata) + neo1973_vib_priv.pdata->enable_fiq(); return 0; } -- cgit v1.2.3 From 34152a920a7e529ba65ded0a8024492026e68356 Mon Sep 17 00:00:00 2001 From: Werner Almesberger Date: Tue, 31 Mar 2009 04:47:06 -0300 Subject: AR6000: support GTA02-specific rfkill only if building for GTA02 This is loosely based on a patch by Ivan Petrov. Signed-off-by: Werner Almesberger Reported-by: Ivan Petrov --- drivers/ar6000/hif/hif2.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/drivers/ar6000/hif/hif2.c b/drivers/ar6000/hif/hif2.c index 56981af8b96..386d96e668f 100644 --- a/drivers/ar6000/hif/hif2.c +++ b/drivers/ar6000/hif/hif2.c @@ -26,13 +26,28 @@ #include #include #include -#include #include "athdefs.h" #include "a_types.h" #include "hif.h" +/* @@@ Hack - this wants cleaning up */ + +#ifdef CONFIG_MACH_NEO1973_GTA02 + +#include + +#else /* CONFIG_MACH_NEO1973_GTA02 */ + +#define gta02_wlan_query_rfkill_lock() 1 +#define gta02_wlan_set_rfkill_cb(cb, hif) ((void) cb) +#define gta02_wlan_query_rfkill_unlock() +#define gta02_wlan_clear_rfkill_cb() + +#endif /* !CONFIG_MACH_NEO1973_GTA02 */ + + /* * KNOWN BUGS: * -- cgit v1.2.3 From 60c66130a4467ca2a2994a6e3d7d5ac63839eefb Mon Sep 17 00:00:00 2001 From: Werner Almesberger Date: Tue, 31 Mar 2009 23:23:05 -0300 Subject: rtc-pcf50606: Fix month off-by-one error According to the PCF50606 manual, the issues resoved by commit cc1663fc922c03feb0d7bbb8b18d62fbac0128de also exists there. Signed-off-by: Werner Almesberger Reported-by: Rask Ingemann Lambertsen --- drivers/rtc/rtc-pcf50606.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/rtc/rtc-pcf50606.c b/drivers/rtc/rtc-pcf50606.c index e059093d908..434cfc1dca4 100644 --- a/drivers/rtc/rtc-pcf50606.c +++ b/drivers/rtc/rtc-pcf50606.c @@ -70,7 +70,7 @@ static void pcf2rtc_time(struct rtc_time *rtc, struct pcf50606_time *pcf) rtc->tm_hour = bcd2bin(pcf->time[PCF50606_TI_HOUR]); rtc->tm_wday = bcd2bin(pcf->time[PCF50606_TI_WKDAY]); rtc->tm_mday = bcd2bin(pcf->time[PCF50606_TI_DAY]); - rtc->tm_mon = bcd2bin(pcf->time[PCF50606_TI_MONTH]); + rtc->tm_mon = bcd2bin(pcf->time[PCF50606_TI_MONTH]) - 1; rtc->tm_year = bcd2bin(pcf->time[PCF50606_TI_YEAR]) + 100; } @@ -81,7 +81,7 @@ static void rtc2pcf_time(struct pcf50606_time *pcf, struct rtc_time *rtc) pcf->time[PCF50606_TI_HOUR] = bin2bcd(rtc->tm_hour); pcf->time[PCF50606_TI_WKDAY] = bin2bcd(rtc->tm_wday); pcf->time[PCF50606_TI_DAY] = bin2bcd(rtc->tm_mday); - pcf->time[PCF50606_TI_MONTH] = bin2bcd(rtc->tm_mon); + pcf->time[PCF50606_TI_MONTH] = bin2bcd(rtc->tm_mon + 1); pcf->time[PCF50606_TI_YEAR] = bin2bcd(rtc->tm_year % 100); } -- cgit v1.2.3 From 9c4451ff31b937a478f3d3eabef30b71cbe12b12 Mon Sep 17 00:00:00 2001 From: Werner Almesberger Date: Thu, 2 Apr 2009 08:12:12 -0300 Subject: AR6000: move low-level cleanup from ar6000_destroy to ar6000_close A network device is supposed to disable its internals in the "close" function. Doing so affords us protection against various races, including the ioctl vs. rfkill conflict reported by Michael. Signed-off-by: Werner Almesberger Reported-by: Michael Trimarch --- drivers/ar6000/ar6000/ar6000_drv.c | 150 +++++++++++++++++++------------------ 1 file changed, 76 insertions(+), 74 deletions(-) diff --git a/drivers/ar6000/ar6000/ar6000_drv.c b/drivers/ar6000/ar6000/ar6000_drv.c index 21504f221dd..b790670ece8 100644 --- a/drivers/ar6000/ar6000/ar6000_drv.c +++ b/drivers/ar6000/ar6000/ar6000_drv.c @@ -974,86 +974,17 @@ ar6000_destroy(struct net_device *dev, unsigned int unregister) return; } - /* Stop the transmit queues */ - netif_stop_queue(dev); - - /* Disable the target and the interrupts associated with it */ - if (ar->arWmiReady == TRUE) - { - if (!bypasswmi) - { - if (ar->arConnected == TRUE || ar->arConnectPending == TRUE) - { - AR_DEBUG_PRINTF("%s(): Disconnect\n", __func__); - AR6000_SPIN_LOCK(&ar->arLock, 0); - ar6000_init_profile_info(ar); - AR6000_SPIN_UNLOCK(&ar->arLock, 0); - wmi_disconnect_cmd(ar->arWmi); - } - - ar6000_dbglog_get_debug_logs(ar); - ar->arWmiReady = FALSE; - ar->arConnected = FALSE; - ar->arConnectPending = FALSE; - wmi_shutdown(ar->arWmi); - ar->arWmiEnabled = FALSE; - ar->arWmi = NULL; - ar->arWlanState = WLAN_ENABLED; -#ifdef USER_KEYS - ar->user_savedkeys_stat = USER_SAVEDKEYS_STAT_INIT; - ar->user_key_ctrl = 0; -#endif - } - - AR_DEBUG_PRINTF("%s(): WMI stopped\n", __func__); - } - else - { - AR_DEBUG_PRINTF("%s(): WMI not ready 0x%08x 0x%08x\n", - __func__, (unsigned int) ar, (unsigned int) ar->arWmi); - - /* Shut down WMI if we have started it */ - if(ar->arWmiEnabled == TRUE) - { - AR_DEBUG_PRINTF("%s(): Shut down WMI\n", __func__); - wmi_shutdown(ar->arWmi); - ar->arWmiEnabled = FALSE; - ar->arWmi = NULL; - } - } - - /* stop HTC */ - HTCStop(ar->arHtcTarget); - - /* set the instance to NULL so we do not get called back on remove incase we - * we're explicity destroyed by module unload */ - HTCSetInstance(ar->arHtcTarget, NULL); - - if (resetok) { - /* try to reset the device if we can - * The driver may have been configure NOT to reset the target during - * a debug session */ - AR_DEBUG_PRINTF(" Attempting to reset target on instance destroy.... \n"); - ar6000_reset_device(ar->arHifDevice, ar->arTargetType); - } else { - AR_DEBUG_PRINTF(" Host does not want target reset. \n"); - } - - /* Done with cookies */ - ar6000_cookie_cleanup(ar); - - /* Cleanup BMI */ - BMIInit(); - /* Clear the tx counters */ memset(tx_attempt, 0, sizeof(tx_attempt)); memset(tx_post, 0, sizeof(tx_post)); memset(tx_complete, 0, sizeof(tx_complete)); - /* Free up the device data structure */ - if (unregister) - unregister_netdev(dev); + if (unregister) { + unregister_netdev(dev); + } else { + ar6000_close(dev); + } free_raw_buffers(ar); @@ -1159,8 +1090,79 @@ ar6000_open(struct net_device *dev) static int ar6000_close(struct net_device *dev) { + AR_SOFTC_T *ar = netdev_priv(dev); + + /* Stop the transmit queues */ netif_stop_queue(dev); + /* Disable the target and the interrupts associated with it */ + if (ar->arWmiReady == TRUE) + { + if (!bypasswmi) + { + if (ar->arConnected == TRUE || ar->arConnectPending == TRUE) + { + AR_DEBUG_PRINTF("%s(): Disconnect\n", __func__); + AR6000_SPIN_LOCK(&ar->arLock, 0); + ar6000_init_profile_info(ar); + AR6000_SPIN_UNLOCK(&ar->arLock, 0); + wmi_disconnect_cmd(ar->arWmi); + } + + ar6000_dbglog_get_debug_logs(ar); + ar->arWmiReady = FALSE; + ar->arConnected = FALSE; + ar->arConnectPending = FALSE; + wmi_shutdown(ar->arWmi); + ar->arWmiEnabled = FALSE; + ar->arWmi = NULL; + ar->arWlanState = WLAN_ENABLED; +#ifdef USER_KEYS + ar->user_savedkeys_stat = USER_SAVEDKEYS_STAT_INIT; + ar->user_key_ctrl = 0; +#endif + } + + AR_DEBUG_PRINTF("%s(): WMI stopped\n", __func__); + } + else + { + AR_DEBUG_PRINTF("%s(): WMI not ready 0x%08x 0x%08x\n", + __func__, (unsigned int) ar, (unsigned int) ar->arWmi); + + /* Shut down WMI if we have started it */ + if(ar->arWmiEnabled == TRUE) + { + AR_DEBUG_PRINTF("%s(): Shut down WMI\n", __func__); + wmi_shutdown(ar->arWmi); + ar->arWmiEnabled = FALSE; + ar->arWmi = NULL; + } + } + + /* stop HTC */ + HTCStop(ar->arHtcTarget); + + /* set the instance to NULL so we do not get called back on remove incase we + * we're explicity destroyed by module unload */ + HTCSetInstance(ar->arHtcTarget, NULL); + + if (resetok) { + /* try to reset the device if we can + * The driver may have been configure NOT to reset the target during + * a debug session */ + AR_DEBUG_PRINTF(" Attempting to reset target on instance destroy.... \n"); + ar6000_reset_device(ar->arHifDevice, ar->arTargetType); + } else { + AR_DEBUG_PRINTF(" Host does not want target reset. \n"); + } + + /* Done with cookies */ + ar6000_cookie_cleanup(ar); + + /* Cleanup BMI */ + BMIInit(); + return 0; } -- cgit v1.2.3 From bd4b7e8e84ab43a13a4620b001d52d373c2122b3 Mon Sep 17 00:00:00 2001 From: Nicolas Dufresne Date: Sat, 4 Apr 2009 14:15:48 -0400 Subject: Fixed the LCM driver state transition delay and pixel clock issue Space transition between sleep-in and sleep-out of at least 120 ms as mentionned in the spec. Also, made sure the LCM is moved into sleep state before the pixel clock is turned off. To do so, I've modified glamo-fb to send FB_BLANK_POWERDOWN before turning off the pixel clock. Also fixed various violation of coding style. This patch should reduce the risk of white screen. Signed-off-by: Nicolas Dufresne --- drivers/mfd/glamo/glamo-fb.c | 127 +++++++++++++++++++++--------------- drivers/video/display/jbt6k74.c | 141 ++++++++++++++++++++++------------------ 2 files changed, 153 insertions(+), 115 deletions(-) diff --git a/drivers/mfd/glamo/glamo-fb.c b/drivers/mfd/glamo/glamo-fb.c index 4eb81a508e5..5491dadbf8a 100644 --- a/drivers/mfd/glamo/glamo-fb.c +++ b/drivers/mfd/glamo/glamo-fb.c @@ -37,9 +37,9 @@ #include #include #include +#include +#include -#include -#include #include #ifdef CONFIG_PM @@ -76,6 +76,7 @@ struct glamofb_handle { u_int32_t pseudo_pal[16]; spinlock_t lock_cmd; int angle; /* Current rotation angle */ + int blank_mode; }; /* 'sibling' spi device for lcm init */ @@ -89,7 +90,7 @@ static int reg_read(struct glamofb_handle *glamo, { int i = 0; - for (i = 0; i != 2; i ++) + for (i = 0; i != 2; i++) nop(); return readw(glamo->base + reg); @@ -100,7 +101,7 @@ static void reg_write(struct glamofb_handle *glamo, { int i = 0; - for (i = 0; i != 2; i ++) + for (i = 0; i != 2; i++) nop(); writew(val, glamo->base + reg); @@ -141,7 +142,8 @@ static int glamofb_run_script(struct glamofb_handle *glamo, int i; if (glamo->mach_info->glamo->suspending) { - dev_err(&glamo->mach_info->glamo->pdev->dev, "IGNORING glamofb_run_script while " + dev_err(&glamo->mach_info->glamo->pdev->dev, + "IGNORING glamofb_run_script while " "suspended\n"); return -EBUSY; } @@ -166,7 +168,8 @@ static int glamofb_check_var(struct fb_var_screeninfo *var, struct glamofb_handle *glamo = info->par; if (glamo->mach_info->glamo->suspending) { - dev_err(&glamo->mach_info->glamo->pdev->dev, "IGNORING glamofb_check_var while " + dev_err(&glamo->mach_info->glamo->pdev->dev, + "IGNORING glamofb_check_var while " "suspended\n"); return -EBUSY; } @@ -263,32 +266,33 @@ static void __rotate_lcd(struct glamofb_handle *glamo, __u32 rotation) int glamo_rot; if (glamo->mach_info->glamo->suspending) { - dev_err(&glamo->mach_info->glamo->pdev->dev, "IGNORING rotate_lcd while " + dev_err(&glamo->mach_info->glamo->pdev->dev, + "IGNORING rotate_lcd while " "suspended\n"); return; } switch (rotation) { - case FB_ROTATE_UR: - glamo_rot = GLAMO_LCD_ROT_MODE_0; - glamo->angle = 0; - break; - case FB_ROTATE_CW: - glamo_rot = GLAMO_LCD_ROT_MODE_90; - glamo->angle = 90; - break; - case FB_ROTATE_UD: - glamo_rot = GLAMO_LCD_ROT_MODE_180; - glamo->angle = 180; - break; - case FB_ROTATE_CCW: - glamo_rot = GLAMO_LCD_ROT_MODE_270; - glamo->angle = 270; - break; - default: - glamo->angle = 0; - glamo_rot = GLAMO_LCD_ROT_MODE_0; - break; + case FB_ROTATE_UR: + glamo_rot = GLAMO_LCD_ROT_MODE_0; + glamo->angle = 0; + break; + case FB_ROTATE_CW: + glamo_rot = GLAMO_LCD_ROT_MODE_90; + glamo->angle = 90; + break; + case FB_ROTATE_UD: + glamo_rot = GLAMO_LCD_ROT_MODE_180; + glamo->angle = 180; + break; + case FB_ROTATE_CCW: + glamo_rot = GLAMO_LCD_ROT_MODE_270; + glamo->angle = 270; + break; + default: + glamo->angle = 0; + glamo_rot = GLAMO_LCD_ROT_MODE_0; + break; } reg_set_bit_mask(glamo, @@ -298,7 +302,7 @@ static void __rotate_lcd(struct glamofb_handle *glamo, __u32 rotation) reg_set_bit_mask(glamo, GLAMO_REG_LCD_MODE1, GLAMO_LCD_MODE1_ROTATE_EN, - (glamo_rot != GLAMO_LCD_ROT_MODE_0)? + (glamo_rot != GLAMO_LCD_ROT_MODE_0) ? GLAMO_LCD_MODE1_ROTATE_EN : 0); } @@ -313,7 +317,8 @@ static void glamofb_update_lcd_controller(struct glamofb_handle *glamo, return; if (glamo->mach_info->glamo->suspending) { - dev_err(&glamo->mach_info->glamo->pdev->dev, "IGNORING glamofb_update_lcd_controller while " + dev_err(&glamo->mach_info->glamo->pdev->dev, + "IGNORING glamofb_update_lcd_controller while " "suspended\n"); return; } @@ -331,10 +336,10 @@ static void glamofb_update_lcd_controller(struct glamofb_handle *glamo, var->pixclock); if (glamo->angle == 90 || glamo->angle == 270) { - /* + /* * But if we are going back to portrait mode from here, - * we get inverted values from Xglamo - */ + * we get inverted values from Xglamo + */ if (!(var->rotate == FB_ROTATE_UR || var->rotate == FB_ROTATE_UD)) { width = var->yres; @@ -354,7 +359,8 @@ static void glamofb_update_lcd_controller(struct glamofb_handle *glamo, /* We don't need to set xres and yres in this particular case * because Xglamo does it for us */ if (!(glamo->angle == 90 || glamo->angle == 270)) { - var->xres = width;var->yres = height; + var->xres = width; + var->yres = height; } var->xres_virtual = width; @@ -427,7 +433,8 @@ out_unlock: spin_unlock_irqrestore(&glamo->lock_cmd, flags); } -static int glamofb_pan_display(struct fb_var_screeninfo *var, struct fb_info *info) +static int glamofb_pan_display(struct fb_var_screeninfo *var, + struct fb_info *info) { struct glamofb_handle *glamo = info->par; u_int16_t page = var->yoffset / glamo->mach_info->yres.defval; @@ -442,7 +449,8 @@ static int glamofb_set_par(struct fb_info *info) struct fb_var_screeninfo *var = &info->var; if (glamo->mach_info->glamo->suspending) { - dev_err(&glamo->mach_info->glamo->pdev->dev, "IGNORING glamofb_set_par while " + dev_err(&glamo->mach_info->glamo->pdev->dev, + "IGNORING glamofb_set_par while " "suspended\n"); return -EBUSY; } @@ -488,17 +496,29 @@ static int glamofb_blank(int blank_mode, struct fb_info *info) * we should already switch off pixel clock here */ break; case FB_BLANK_POWERDOWN: + /* Simulating FB_BLANK_NORMAL allow turning off backlight */ + if (gfb->blank_mode != FB_BLANK_NORMAL) + notify_blank(info, FB_BLANK_NORMAL); + + /* LCM need notification before pixel clock is stopped */ + notify_blank(info, blank_mode); + /* disable the pixel clock */ glamo_engine_clkreg_set(gcore, GLAMO_ENGINE_LCD, GLAMO_CLOCK_LCD_EN_DCLK, 0); + gfb->blank_mode = blank_mode; break; case FB_BLANK_UNBLANK: case FB_BLANK_NORMAL: - /* enable the pixel clock */ - glamo_engine_clkreg_set(gcore, GLAMO_ENGINE_LCD, + /* enable the pixel clock if off */ + if (gfb->blank_mode == FB_BLANK_POWERDOWN) + glamo_engine_clkreg_set(gcore, + GLAMO_ENGINE_LCD, GLAMO_CLOCK_LCD_EN_DCLK, GLAMO_CLOCK_LCD_EN_DCLK); + notify_blank(info, blank_mode); + gfb->blank_mode = blank_mode; break; } @@ -524,7 +544,8 @@ static int glamofb_setcolreg(unsigned regno, unsigned int val; if (glamo->mach_info->glamo->suspending) { - dev_err(&glamo->mach_info->glamo->pdev->dev, "IGNORING glamofb_set_par while " + dev_err(&glamo->mach_info->glamo->pdev->dev, + "IGNORING glamofb_set_par while " "suspended\n"); return -EBUSY; } @@ -692,7 +713,8 @@ int glamofb_cmd_mode(struct glamofb_handle *gfb, int on) int timeout = 2000000; if (gfb->mach_info->glamo->suspending) { - dev_err(&gfb->mach_info->glamo->pdev->dev, "IGNORING glamofb_cmd_mode while " + dev_err(&gfb->mach_info->glamo->pdev->dev, + "IGNORING glamofb_cmd_mode while " "suspended\n"); return -EBUSY; } @@ -700,7 +722,7 @@ int glamofb_cmd_mode(struct glamofb_handle *gfb, int on) dev_dbg(gfb->dev, "glamofb_cmd_mode(gfb=%p, on=%d)\n", gfb, on); if (on) { dev_dbg(gfb->dev, "%s: waiting for cmdq empty: ", - __FUNCTION__); + __func__); while ((!glamofb_cmdq_empty(gfb)) && (timeout--)) /* yield() */; if (timeout < 0) { @@ -755,12 +777,13 @@ int glamofb_cmd_write(struct glamofb_handle *gfb, u_int16_t val) int timeout = 200000; if (gfb->mach_info->glamo->suspending) { - dev_err(&gfb->mach_info->glamo->pdev->dev, "IGNORING glamofb_cmd_write while " + dev_err(&gfb->mach_info->glamo->pdev->dev, + "IGNORING glamofb_cmd_write while " "suspended\n"); return -EBUSY; } - dev_dbg(gfb->dev, "%s: waiting for cmdq empty\n", __FUNCTION__); + dev_dbg(gfb->dev, "%s: waiting for cmdq empty\n", __func__); while ((!glamofb_cmdq_empty(gfb)) && (timeout--)) yield(); if (timeout < 0) { @@ -822,6 +845,7 @@ static int __init glamofb_probe(struct platform_device *pdev) glamofb->dev = &pdev->dev; glamofb->angle = 0; + glamofb->blank_mode = FB_BLANK_POWERDOWN; strcpy(fbinfo->fix.id, "SMedia Glamo"); @@ -976,38 +1000,35 @@ static int glamofb_suspend(struct platform_device *pdev, pm_message_t state) struct glamofb_handle *gfb = platform_get_drvdata(pdev); /* we need to stop anything touching our framebuffer */ -// fb_blank(gfb->fb, FB_BLANK_NORMAL); fb_set_suspend(gfb->fb, 1); /* seriously -- nobody is allowed to touch glamo memory when we * are suspended or we lock on nWAIT */ -// iounmap(gfb->fb->screen_base); + /* iounmap(gfb->fb->screen_base); */ return 0; } static int glamofb_resume(struct platform_device *pdev) { - struct glamofb_handle *glamofb = platform_get_drvdata(pdev); + struct glamofb_handle *gfb = platform_get_drvdata(pdev); struct glamofb_platform_data *mach_info = pdev->dev.platform_data; /* OK let's allow framebuffer ops again */ -// gfb->fb->screen_base = ioremap(gfb->fb_res->start, -// RESSIZE(gfb->fb_res)); + /* gfb->fb->screen_base = ioremap(gfb->fb_res->start, + RESSIZE(gfb->fb_res)); */ glamo_engine_enable(mach_info->glamo, GLAMO_ENGINE_LCD); glamo_engine_reset(mach_info->glamo, GLAMO_ENGINE_LCD); printk(KERN_ERR"spin_lock_init\n"); - spin_lock_init(&glamofb->lock_cmd); - glamofb_init_regs(glamofb); + spin_lock_init(&gfb->lock_cmd); + glamofb_init_regs(gfb); #ifdef CONFIG_MFD_GLAMO_HWACCEL - glamofb_cursor_onoff(glamofb, 1); + glamofb_cursor_onoff(gfb, 1); #endif - - fb_set_suspend(glamofb->fb, 0); -// fb_blank(gfb->fb, FB_BLANK_UNBLANK); + fb_set_suspend(gfb->fb, 0); return 0; } diff --git a/drivers/video/display/jbt6k74.c b/drivers/video/display/jbt6k74.c index 9add1c6bf8a..4524be34df2 100644 --- a/drivers/video/display/jbt6k74.c +++ b/drivers/video/display/jbt6k74.c @@ -31,6 +31,7 @@ #include #include #include +#include enum jbt_register { JBT_REG_SLEEP_IN = 0x10, @@ -117,12 +118,18 @@ struct jbt_info { struct notifier_block fb_notif; u16 tx_buf[8]; u16 reg_cache[0xEE]; - int have_resumed; + struct timespec last_sleep; }; #define JBT_COMMAND 0x000 #define JBT_DATA 0x100 +static inline unsigned int timespec_sub_ms(struct timespec lhs, + struct timespec rhs) +{ + struct timespec ts = timespec_sub(lhs, rhs); + return (ts.tv_sec * MSEC_PER_SEC) + (ts.tv_nsec / NSEC_PER_MSEC); +} static int jbt_reg_write_nodata(struct jbt_info *jbt, u8 reg) { @@ -179,7 +186,7 @@ static int jbt_init_regs(struct jbt_info *jbt) { int rc; - dev_dbg(&jbt->spi_dev->dev, "entering %cVGA mode\n", + dev_dbg(&jbt->spi_dev->dev, "entering %cVGA mode\n", jbt->normal_state == JBT_STATE_QVGA_NORMAL ? 'Q' : ' '); rc = jbt_reg_write(jbt, JBT_REG_DISPLAY_MODE1, 0x01); @@ -268,36 +275,25 @@ static int sleep_to_normal(struct jbt_info *jbt) { int rc; - /* RGB I/F on, RAM wirte off, QVGA through, SIGCON enable */ - rc = jbt_reg_write(jbt, JBT_REG_DISPLAY_MODE, 0x80); - - /* Quad mode off */ - rc |= jbt_reg_write(jbt, JBT_REG_QUAD_RATE, 0x00); - - /* AVDD on, XVDD on */ - rc |= jbt_reg_write(jbt, JBT_REG_POWER_ON_OFF, 0x16); - - /* Output control */ - rc |= jbt_reg_write16(jbt, JBT_REG_OUTPUT_CONTROL, 0xfff9); + /* Make sure we are 120 ms after SLEEP_OUT */ + unsigned int sleep_time = timespec_sub_ms(current_kernel_time(), + jbt->last_sleep); + if (sleep_time < 120) + mdelay(120 - sleep_time); - /* Turn on display */ - rc |= jbt_reg_write_nodata(jbt, JBT_REG_DISPLAY_ON); + if (jbt->normal_state == JBT_STATE_NORMAL) { + /* RGB I/F on, RAM wirte off, QVGA through, SIGCON enable */ + rc = jbt_reg_write(jbt, JBT_REG_DISPLAY_MODE, 0x80); - /* Sleep mode off */ - rc |= jbt_reg_write_nodata(jbt, JBT_REG_SLEEP_OUT); - - return rc ? -EIO : 0; -} - -static int sleep_to_qvga_normal(struct jbt_info *jbt) -{ - int rc; - - /* RGB I/F on, RAM wirte off, QVGA through, SIGCON enable */ - rc = jbt_reg_write(jbt, JBT_REG_DISPLAY_MODE, 0x81); + /* Quad mode off */ + rc |= jbt_reg_write(jbt, JBT_REG_QUAD_RATE, 0x00); + } else { + /* RGB I/F on, RAM wirte off, QVGA through, SIGCON enable */ + rc = jbt_reg_write(jbt, JBT_REG_DISPLAY_MODE, 0x81); - /* Quad mode on */ - rc |= jbt_reg_write(jbt, JBT_REG_QUAD_RATE, 0x22); + /* Quad mode on */ + rc |= jbt_reg_write(jbt, JBT_REG_QUAD_RATE, 0x22); + } /* AVDD on, XVDD on */ rc |= jbt_reg_write(jbt, JBT_REG_POWER_ON_OFF, 0x16); @@ -310,6 +306,10 @@ static int sleep_to_qvga_normal(struct jbt_info *jbt) /* Sleep mode off */ rc |= jbt_reg_write_nodata(jbt, JBT_REG_SLEEP_OUT); + jbt->last_sleep = current_kernel_time(); + + /* Allow the booster and display controller to restart stably */ + mdelay(5); return rc ? -EIO : 0; } @@ -318,9 +318,19 @@ static int normal_to_sleep(struct jbt_info *jbt) { int rc; + /* Make sure we are 120 ms after SLEEP_OUT */ + unsigned int sleep_time = timespec_sub_ms(current_kernel_time(), + jbt->last_sleep); + if (sleep_time < 120) + mdelay(120 - sleep_time); + rc = jbt_reg_write_nodata(jbt, JBT_REG_DISPLAY_OFF); rc |= jbt_reg_write16(jbt, JBT_REG_OUTPUT_CONTROL, 0x8002); rc |= jbt_reg_write_nodata(jbt, JBT_REG_SLEEP_IN); + jbt->last_sleep = current_kernel_time(); + + /* Allow the internal circuits to stop automatically */ + mdelay(5); return rc ? -EIO : 0; } @@ -335,8 +345,9 @@ int jbt6k74_enter_state(struct jbt_info *jbt, enum jbt_state new_state) { int rc = -EINVAL; - dev_dbg(&jbt->spi_dev->dev, "entering (old_state=%s, " - "new_state=%s)\n", jbt_state_names[jbt->state], jbt_state_names[new_state]); + dev_dbg(&jbt->spi_dev->dev, "entering (old_state=%s, new_state=%s)\n", + jbt_state_names[jbt->state], + jbt_state_names[new_state]); mutex_lock(&jbt->lock); @@ -363,7 +374,7 @@ int jbt6k74_enter_state(struct jbt_info *jbt, enum jbt_state new_state) /* first transition into sleep */ rc = standby_to_sleep(jbt); /* then transition into normal */ - rc |= sleep_to_qvga_normal(jbt); + rc |= sleep_to_normal(jbt); break; } break; @@ -376,10 +387,8 @@ int jbt6k74_enter_state(struct jbt_info *jbt, enum jbt_state new_state) rc = sleep_to_standby(jbt); break; case JBT_STATE_NORMAL: - rc = sleep_to_normal(jbt); - break; case JBT_STATE_QVGA_NORMAL: - rc = sleep_to_qvga_normal(jbt); + rc = sleep_to_normal(jbt); break; } break; @@ -405,7 +414,7 @@ int jbt6k74_enter_state(struct jbt_info *jbt, enum jbt_state new_state) /* third transition into sleep */ rc |= standby_to_sleep(jbt); /* fourth transition into normal */ - rc |= sleep_to_qvga_normal(jbt); + rc |= sleep_to_normal(jbt); break; } break; @@ -436,12 +445,13 @@ int jbt6k74_enter_state(struct jbt_info *jbt, enum jbt_state new_state) } break; } - + if (rc == 0) jbt->state = new_state; else - dev_err(&jbt->spi_dev->dev, "Failed enter state '%s')\n", jbt_state_names[new_state]); - + dev_err(&jbt->spi_dev->dev, "Failed enter state '%s')\n", + jbt_state_names[new_state]); + mutex_unlock(&jbt->lock); return rc; @@ -525,18 +535,27 @@ static ssize_t gamma_write(struct device *dev, struct device_attribute *attr, static ssize_t reset_write(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { + int rc; struct jbt_info *jbt = dev_get_drvdata(dev); - struct jbt6k74_platform_data *jbt6k74_pdata = jbt->spi_dev->dev.platform_data; + struct jbt6k74_platform_data *pdata = jbt->spi_dev->dev.platform_data; dev_info(dev, "**** jbt6k74 reset\n"); - jbt6k74_enter_state(jbt, JBT_STATE_DEEP_STANDBY); + mutex_lock(&jbt->lock); + + jbt->state = JBT_STATE_DEEP_STANDBY; /* hard reset the jbt6k74 */ - mutex_lock(&jbt->lock); - (jbt6k74_pdata->reset)(0, 0); + (pdata->reset)(0, 0); mdelay(1); - (jbt6k74_pdata->reset)(0, 1); + (pdata->reset)(0, 1); + mdelay(120); + + rc = jbt_reg_write_nodata(jbt, 0x01); + if (rc < 0) + dev_err(&jbt->spi_dev->dev, "cannot soft reset\n"); + mdelay(120); + mutex_unlock(&jbt->lock); jbt6k74_enter_state(jbt, jbt->normal_state); @@ -572,31 +591,30 @@ static int fb_notifier_callback(struct notifier_block *self, struct fb_event *evdata = data; int fb_blank; + jbt = container_of(self, struct jbt_info, fb_notif); + + dev_dbg(&jbt->spi_dev->dev, "jbt6k74 event=%lu\n", event); + if (event != FB_EVENT_BLANK && event != FB_EVENT_CONBLANK) return 0; fb_blank = *(int *)evdata->data; - jbt = container_of(self, struct jbt_info, fb_notif); - switch (fb_blank) { case FB_BLANK_UNBLANK: - dev_info(&jbt->spi_dev->dev, "**** jbt6k74 unblank\n"); + dev_dbg(&jbt->spi_dev->dev, "unblank\n"); jbt6k74_enter_state(jbt, jbt->normal_state); break; case FB_BLANK_NORMAL: - dev_info(&jbt->spi_dev->dev, "**** jbt6k74 normal\n"); + dev_dbg(&jbt->spi_dev->dev, "blank\n"); break; case FB_BLANK_VSYNC_SUSPEND: - dev_info(&jbt->spi_dev->dev, "**** jbt6k74 vsync suspend\n"); + dev_dbg(&jbt->spi_dev->dev, "vsync suspend\n"); break; case FB_BLANK_HSYNC_SUSPEND: - dev_info(&jbt->spi_dev->dev, "**** jbt6k74 hsync suspend\n"); + dev_dbg(&jbt->spi_dev->dev, "hsync suspend\n"); break; case FB_BLANK_POWERDOWN: - dev_info(&jbt->spi_dev->dev, "**** jbt6k74 powerdown\n"); - /* FIXME DEEP STANDBY wihtout suspend causes WSOD at cold - * temperature on certain devices. */ - /*jbt6k74_enter_state(jbt, JBT_STATE_DEEP_STANDBY);*/ + dev_dbg(&jbt->spi_dev->dev, "powerdown\n"); jbt6k74_enter_state(jbt, JBT_STATE_SLEEP); break; } @@ -610,7 +628,7 @@ static int __devinit jbt_probe(struct spi_device *spi) { int rc; struct jbt_info *jbt; - struct jbt6k74_platform_data *jbt6k74_pdata = spi->dev.platform_data; + struct jbt6k74_platform_data *pdata = spi->dev.platform_data; /* the controller doesn't have a MISO pin; we can't do detection */ @@ -631,6 +649,7 @@ static int __devinit jbt_probe(struct spi_device *spi) jbt->spi_dev = spi; jbt->normal_state = JBT_STATE_NORMAL; jbt->state = JBT_STATE_DEEP_STANDBY; + jbt->last_sleep = current_kernel_time(); mutex_init(&jbt->lock); dev_set_drvdata(&spi->dev, jbt); @@ -654,8 +673,8 @@ static int __devinit jbt_probe(struct spi_device *spi) goto err_sysfs; } - if (jbt6k74_pdata->probe_completed) - (jbt6k74_pdata->probe_completed)(&spi->dev); + if (pdata->probe_completed) + (pdata->probe_completed)(&spi->dev); return 0; @@ -693,8 +712,6 @@ static int jbt_suspend(struct spi_device *spi, pm_message_t state) jbt6k74_enter_state(jbt, JBT_STATE_DEEP_STANDBY); - jbt->have_resumed = 0; - dev_info(&spi->dev, "**** jbt6k74 suspend end\n"); return 0; @@ -703,14 +720,14 @@ static int jbt_suspend(struct spi_device *spi, pm_message_t state) int jbt6k74_resume(struct spi_device *spi) { struct jbt_info *jbt = dev_get_drvdata(&spi->dev); - struct jbt6k74_platform_data *jbt6k74_pdata = spi->dev.platform_data; + struct jbt6k74_platform_data *pdata = spi->dev.platform_data; dev_info(&spi->dev, "**** jbt6k74 resume start\n"); jbt6k74_enter_state(jbt, jbt->normal_state); - if (jbt6k74_pdata->resuming) - (jbt6k74_pdata->resuming)(0); + if (pdata->resuming) + (pdata->resuming)(0); dev_info(&spi->dev, "**** jbt6k74 resume end\n"); -- cgit v1.2.3 From a11deea16ee98a3ee7a78eaab8f5cb014854b201 Mon Sep 17 00:00:00 2001 From: Mark Brown Date: Fri, 3 Apr 2009 12:36:26 +0100 Subject: ASoC: Clean up coding style issues in GTA02 No substantial changes, this just tidies up a bunch of coding style issues that ought to be fixed up before merge (which I'll do when the GTA02 machine support is queued for merge). Signed-off-by: Mark Brown --- sound/soc/s3c24xx/neo1973_gta02_wm8753.c | 32 ++++++++++++++------------------ 1 file changed, 14 insertions(+), 18 deletions(-) diff --git a/sound/soc/s3c24xx/neo1973_gta02_wm8753.c b/sound/soc/s3c24xx/neo1973_gta02_wm8753.c index d9fe7d1fffd..1358f6fe820 100644 --- a/sound/soc/s3c24xx/neo1973_gta02_wm8753.c +++ b/sound/soc/s3c24xx/neo1973_gta02_wm8753.c @@ -104,7 +104,7 @@ static int neo1973_gta02_hifi_hw_params(struct snd_pcm_substream *substream, /* set MCLK division for sample rate */ ret = snd_soc_dai_set_clkdiv(cpu_dai, S3C24XX_DIV_MCLK, - S3C2410_IISMOD_32FS ); + S3C2410_IISMOD_32FS); if (ret < 0) return ret; @@ -116,7 +116,7 @@ static int neo1973_gta02_hifi_hw_params(struct snd_pcm_substream *substream, /* set prescaler division for sample rate */ ret = snd_soc_dai_set_clkdiv(cpu_dai, S3C24XX_DIV_PRESCALER, - S3C24XX_PRESCALE(4,4)); + S3C24XX_PRESCALE(4, 4)); if (ret < 0) return ret; @@ -210,7 +210,7 @@ static struct snd_soc_ops neo1973_gta02_voice_ops = { #define LM4853_AMP 1 #define LM4853_SPK 2 -static u8 lm4853_state=0; +static u8 lm4853_state; /* This has no effect, it exists only to maintain compatibility with * existing ALSA state files. @@ -220,11 +220,10 @@ static int lm4853_set_state(struct snd_kcontrol *kcontrol, { int val = ucontrol->value.integer.value[0]; - if(val) { + if (val) lm4853_state |= LM4853_AMP; - } else { + else lm4853_state &= ~LM4853_AMP; - } return 0; } @@ -242,12 +241,12 @@ static int lm4853_set_spk(struct snd_kcontrol *kcontrol, { int val = ucontrol->value.integer.value[0]; - if(val) { + if (val) { lm4853_state |= LM4853_SPK; - s3c2410_gpio_setpin(GTA02_GPIO_HP_IN,0); + s3c2410_gpio_setpin(GTA02_GPIO_HP_IN, 0); } else { lm4853_state &= ~LM4853_SPK; - s3c2410_gpio_setpin(GTA02_GPIO_HP_IN,1); + s3c2410_gpio_setpin(GTA02_GPIO_HP_IN, 1); } return 0; @@ -348,7 +347,8 @@ static int neo1973_gta02_wm8753_init(struct snd_soc_codec *codec) snd_soc_dapm_nc_pin(codec, "LINE2"); /* Add neo1973 gta02 specific widgets */ - snd_soc_dapm_new_controls(codec, wm8753_dapm_widgets, ARRAY_SIZE(wm8753_dapm_widgets)); + snd_soc_dapm_new_controls(codec, wm8753_dapm_widgets, + ARRAY_SIZE(wm8753_dapm_widgets)); /* add neo1973 gta02 specific controls */ for (i = 0; i < ARRAY_SIZE(wm8753_neo1973_gta02_controls); i++) { @@ -378,8 +378,8 @@ static int neo1973_gta02_wm8753_init(struct snd_soc_codec *codec) /* * BT Codec DAI */ -static struct snd_soc_dai bt_dai = -{ .name = "Bluetooth", +static struct snd_soc_dai bt_dai = { + .name = "Bluetooth", .id = 0, .playback = { .channels_min = 1, @@ -423,8 +423,6 @@ static struct snd_soc_device neo1973_gta02_snd_devdata = { .codec_dev = &soc_codec_dev_wm8753, }; - - static struct platform_device *neo1973_gta02_snd_device; static int __init neo1973_gta02_init(void) @@ -433,7 +431,7 @@ static int __init neo1973_gta02_init(void) if (!machine_is_neo1973_gta02()) { printk(KERN_INFO - "Only GTA02 hardware supported by ASoc driver\n"); + "Only GTA02 is supported by this ASoC driver\n"); return -ENODEV; } @@ -468,18 +466,16 @@ static int __init neo1973_gta02_init(void) return ret; } +module_init(neo1973_gta02_init); static void __exit neo1973_gta02_exit(void) { snd_soc_unregister_dai(&bt_dai); platform_device_unregister(neo1973_gta02_snd_device); } - -module_init(neo1973_gta02_init); module_exit(neo1973_gta02_exit); /* Module information */ MODULE_AUTHOR("Graeme Gregory, graeme@openmoko.org"); MODULE_DESCRIPTION("ALSA SoC WM8753 Neo1973 GTA02"); MODULE_LICENSE("GPL"); - -- cgit v1.2.3 From 918bf45f92b69c642960b78a7c70a04d5bccb6c3 Mon Sep 17 00:00:00 2001 From: Paul Fertser Date: Wed, 8 Apr 2009 00:51:35 +0400 Subject: Correct platform s3c-ohci device name, makes bluetooth work Not sure what is the correct naming scheme and if MODULE_ALIAS in drivers/usb/host/ohci-s3c2410.c is needed at all (if yes, probably it should be modified too). Signed-off-by: Paul Fertser --- arch/arm/plat-s3c/dev-usb.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/arm/plat-s3c/dev-usb.c b/arch/arm/plat-s3c/dev-usb.c index 2ee85abed6d..721ff18f438 100644 --- a/arch/arm/plat-s3c/dev-usb.c +++ b/arch/arm/plat-s3c/dev-usb.c @@ -37,7 +37,7 @@ static struct resource s3c_usb_resource[] = { static u64 s3c_device_usb_dmamask = 0xffffffffUL; struct platform_device s3c_device_usb = { - .name = "s3c2410-ohci", + .name = "s3c-ohci", .id = -1, .num_resources = ARRAY_SIZE(s3c_usb_resource), .resource = s3c_usb_resource, -- cgit v1.2.3 From 3ba2221b2b4f43ac60afc455c1aaf23e35f9aa94 Mon Sep 17 00:00:00 2001 From: Michael Trimarchi Date: Wed, 8 Apr 2009 15:48:15 +0200 Subject: Cleanup USB host code of s3c2410 Cleanup code of ohci-s3c2410. Signed-off-by: Michael Trimarchi --- drivers/usb/host/ohci-s3c2410.c | 84 ++++++++++++++++++++++------------------- 1 file changed, 45 insertions(+), 39 deletions(-) diff --git a/drivers/usb/host/ohci-s3c2410.c b/drivers/usb/host/ohci-s3c2410.c index 5d8d556d92c..4c69ee58518 100644 --- a/drivers/usb/host/ohci-s3c2410.c +++ b/drivers/usb/host/ohci-s3c2410.c @@ -21,10 +21,11 @@ #include #include - -//#include +/* +#include +#include +*/ #include -//#include #define valid_port(idx) ((idx) == 1 || (idx) == 2) @@ -59,9 +60,8 @@ static void s3c2410_start_hc(struct platform_device *dev, struct usb_hcd *hcd) info->hcd = hcd; info->report_oc = s3c2410_hcd_oc; - if (info->enable_oc != NULL) { + if (info->enable_oc != NULL) (info->enable_oc)(info, 1); - } } } @@ -75,9 +75,8 @@ static void s3c2410_stop_hc(struct platform_device *dev) info->report_oc = NULL; info->hcd = NULL; - if (info->enable_oc != NULL) { + if (info->enable_oc != NULL) (info->enable_oc)(info, 0); - } } clk_disable(clk); @@ -91,14 +90,14 @@ static void s3c2410_stop_hc(struct platform_device *dev) */ static int -ohci_s3c2410_hub_status_data (struct usb_hcd *hcd, char *buf) +ohci_s3c2410_hub_status_data(struct usb_hcd *hcd, char *buf) { struct s3c2410_hcd_info *info = to_s3c2410_info(hcd); struct s3c2410_hcd_port *port; int orig; int portno; - orig = ohci_hub_status_data (hcd, buf); + orig = ohci_hub_status_data(hcd, buf); if (info == NULL) return orig; @@ -148,7 +147,7 @@ static void s3c2410_usb_set_power(struct s3c2410_hcd_info *info, * request. */ -static int ohci_s3c2410_hub_control ( +static int ohci_s3c2410_hub_control( struct usb_hcd *hcd, u16 typeReq, u16 wValue, @@ -202,9 +201,8 @@ static int ohci_s3c2410_hub_control ( dev_dbg(hcd->self.controller, "ClearPortFeature: OVER_CURRENT\n"); - if (valid_port(wIndex)) { + if (valid_port(wIndex)) info->port[wIndex-1].oc_status = 0; - } goto out; @@ -245,28 +243,28 @@ static int ohci_s3c2410_hub_control ( desc->wHubCharacteristics |= cpu_to_le16(0x0001); if (info->enable_oc) { - desc->wHubCharacteristics &= ~cpu_to_le16(HUB_CHAR_OCPM); - desc->wHubCharacteristics |= cpu_to_le16(0x0008|0x0001); + desc->wHubCharacteristics &= + ~cpu_to_le16(HUB_CHAR_OCPM); + desc->wHubCharacteristics |= + cpu_to_le16(0x0008|0x0001); } - dev_dbg(hcd->self.controller, "wHubCharacteristics after 0x%04x\n", + dev_dbg(hcd->self.controller, + "wHubCharacteristics after 0x%04x\n", desc->wHubCharacteristics); return ret; case GetPortStatus: /* check port status */ - dev_dbg(hcd->self.controller, "GetPortStatus(%d)\n", wIndex); if (valid_port(wIndex)) { - if (info->port[wIndex-1].oc_changed) { + if (info->port[wIndex-1].oc_changed) *data |= cpu_to_le32(RH_PS_OCIC); - } - if (info->port[wIndex-1].oc_status) { + if (info->port[wIndex-1].oc_status) *data |= cpu_to_le32(RH_PS_POCI); - } } } @@ -324,7 +322,7 @@ static ssize_t set_usb_mode(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { if (!strncmp(buf, "host", 4)) { - printk("s3c2410: changing usb to host\n"); + printk(KERN_WARNING "s3c2410: changing usb to host\n"); s3c2410_modify_misccr(S3C2410_MISCCR_USBHOST, S3C2410_MISCCR_USBHOST); /* FIXME: @@ -333,11 +331,11 @@ static ssize_t set_usb_mode(struct device *dev, struct device_attribute *attr, */ s3c2410_gpio_setpin(S3C2410_GPB9, 0); } else if (!strncmp(buf, "device", 6)) { - printk("s3c2410: changing usb to device\n"); + printk(KERN_WARNING "s3c2410: changing usb to device\n"); s3c2410_modify_misccr(S3C2410_MISCCR_USBHOST, 0); s3c2410_gpio_setpin(S3C2410_GPB9, 1); } else { - printk("s3c2410: unknown mode\n"); + printk(KERN_WARNING "s3c2410: unknown mode\n"); return -EINVAL; } @@ -362,9 +360,11 @@ static DEVICE_ATTR(usb_mode, S_IRUGO | S_IWUSR, show_usb_mode, set_usb_mode); */ static void -usb_hcd_s3c2410_remove (struct usb_hcd *hcd, struct platform_device *dev) +usb_hcd_s3c2410_remove(struct usb_hcd *hcd, struct platform_device *dev) { - //device_remove_file(&dev->dev, &dev_attr_usb_mode); +/* + device_remove_file(&dev->dev, &dev_attr_usb_mode); +*/ usb_remove_hcd(hcd); s3c2410_stop_hc(dev); iounmap(hcd->regs); @@ -381,8 +381,8 @@ usb_hcd_s3c2410_remove (struct usb_hcd *hcd, struct platform_device *dev) * through the hotplug entry's driver_data. * */ -static int usb_hcd_s3c2410_probe (const struct hc_driver *driver, - struct platform_device *dev) +static int usb_hcd_s3c2410_probe(const struct hc_driver *driver, + struct platform_device *dev) { struct usb_hcd *hcd = NULL; int retval; @@ -432,16 +432,20 @@ static int usb_hcd_s3c2410_probe (const struct hc_driver *driver, if (retval != 0) goto err_ioremap; -// retval = device_create_file(&dev->dev, &dev_attr_usb_mode); -// if (retval != 0) -// goto err_hcd; +/* + retval = device_create_file(&dev->dev, &dev_attr_usb_mode); + if (retval != 0) + goto err_hcd; +*/ return 0; -// err_hcd: -// usb_remove_hcd(hcd); +/* +err_hcd: + usb_remove_hcd(hcd); +*/ - err_ioremap: +err_ioremap: s3c2410_stop_hc(dev); iounmap(hcd->regs); clk_put(usb_clk); @@ -460,17 +464,19 @@ static int usb_hcd_s3c2410_probe (const struct hc_driver *driver, /*-------------------------------------------------------------------------*/ static int -ohci_s3c2410_start (struct usb_hcd *hcd) +ohci_s3c2410_start(struct usb_hcd *hcd) { - struct ohci_hcd *ohci = hcd_to_ohci (hcd); + struct ohci_hcd *ohci = hcd_to_ohci(hcd); int ret; - if ((ret = ohci_init(ohci)) < 0) + ret = ohci_init(ohci); + if (ret < 0) return ret; - if ((ret = ohci_run (ohci)) < 0) { - err ("can't start %s", hcd->self.bus_name); - ohci_stop (hcd); + ret = ohci_run(ohci); + if (ret < 0) { + err("can't start %s", hcd->self.bus_name); + ohci_stop(hcd); return ret; } -- cgit v1.2.3 From 901d73fe51f33032b34b2ae5612eb863ec90532a Mon Sep 17 00:00:00 2001 From: Michael Trimarchi Date: Wed, 8 Apr 2009 15:50:02 +0200 Subject: Re-enable USBHOST attribute Re-enable usbmode attribute. It was disabled by 70b36104ab8c03f5be6d03344214d09447d9d4a8. Signed-off-by: Michael Trimarchi --- drivers/usb/host/ohci-s3c2410.c | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/drivers/usb/host/ohci-s3c2410.c b/drivers/usb/host/ohci-s3c2410.c index 4c69ee58518..cdbd3f2fd32 100644 --- a/drivers/usb/host/ohci-s3c2410.c +++ b/drivers/usb/host/ohci-s3c2410.c @@ -21,10 +21,8 @@ #include #include -/* #include #include -*/ #include #define valid_port(idx) ((idx) == 1 || (idx) == 2) @@ -307,7 +305,6 @@ static void s3c2410_hcd_oc(struct s3c2410_hcd_info *info, int port_oc) local_irq_restore(flags); } -#if 0 /* switching of USB pads */ static ssize_t show_usb_mode(struct device *dev, struct device_attribute *attr, char *buf) @@ -343,7 +340,6 @@ static ssize_t set_usb_mode(struct device *dev, struct device_attribute *attr, } static DEVICE_ATTR(usb_mode, S_IRUGO | S_IWUSR, show_usb_mode, set_usb_mode); -#endif /* may be called without controller electrically present */ /* may be called with controller, bus, and devices active */ @@ -362,9 +358,7 @@ static DEVICE_ATTR(usb_mode, S_IRUGO | S_IWUSR, show_usb_mode, set_usb_mode); static void usb_hcd_s3c2410_remove(struct usb_hcd *hcd, struct platform_device *dev) { -/* device_remove_file(&dev->dev, &dev_attr_usb_mode); -*/ usb_remove_hcd(hcd); s3c2410_stop_hc(dev); iounmap(hcd->regs); @@ -432,18 +426,14 @@ static int usb_hcd_s3c2410_probe(const struct hc_driver *driver, if (retval != 0) goto err_ioremap; -/* retval = device_create_file(&dev->dev, &dev_attr_usb_mode); if (retval != 0) goto err_hcd; -*/ return 0; -/* err_hcd: usb_remove_hcd(hcd); -*/ err_ioremap: s3c2410_stop_hc(dev); -- cgit v1.2.3 From d9a7be9aab65cd86981d60806041ac11fe514277 Mon Sep 17 00:00:00 2001 From: Nicolas Dufresne Date: Mon, 13 Apr 2009 10:43:30 -0400 Subject: fbcon: Cleaned unnecessary debugging output (fix bug 2265) Cleaned unnecessary debugging output. Signed-off-by: Nicolas Dufresne --- drivers/video/console/fbcon.c | 8 ++------ drivers/video/display/jbt6k74.c | 12 +++++------- 2 files changed, 7 insertions(+), 13 deletions(-) diff --git a/drivers/video/console/fbcon.c b/drivers/video/console/fbcon.c index 4cefce8a910..208da5af5f2 100644 --- a/drivers/video/console/fbcon.c +++ b/drivers/video/console/fbcon.c @@ -3130,17 +3130,13 @@ static void fbcon_get_requirement(struct fb_info *info, static int fbcon_event_notify(struct notifier_block *self, unsigned long action, void *data) { - struct fb_event *event; - struct fb_info *info; + struct fb_event *event = data; + struct fb_info *info = event->info; struct fb_videomode *mode; struct fb_con2fbmap *con2fb; struct fb_blit_caps *caps; int ret = 0; - printk(KERN_INFO "fbcon_event_notify action=%ld, data=%p\n", action, data); - - event = data; - info = event->info; /* * ignore all events except driver registration and deregistration * if fbcon is not active diff --git a/drivers/video/display/jbt6k74.c b/drivers/video/display/jbt6k74.c index 4524be34df2..5d7a6519de9 100644 --- a/drivers/video/display/jbt6k74.c +++ b/drivers/video/display/jbt6k74.c @@ -523,7 +523,7 @@ static ssize_t gamma_write(struct device *dev, struct device_attribute *attr, int reg = reg_by_string(attr->attr.name); unsigned long val = simple_strtoul(buf, NULL, 10); - dev_info(dev, "**** jbt6k74 writing gama %lu\n", val & 0xff); + dev_info(dev, "writing gama %lu\n", val & 0xff); mutex_lock(&jbt->lock); jbt_reg_write(jbt, reg, val & 0xff); @@ -539,7 +539,7 @@ static ssize_t reset_write(struct device *dev, struct device_attribute *attr, struct jbt_info *jbt = dev_get_drvdata(dev); struct jbt6k74_platform_data *pdata = jbt->spi_dev->dev.platform_data; - dev_info(dev, "**** jbt6k74 reset\n"); + dev_info(dev, "reset\n"); mutex_lock(&jbt->lock); @@ -593,7 +593,7 @@ static int fb_notifier_callback(struct notifier_block *self, jbt = container_of(self, struct jbt_info, fb_notif); - dev_dbg(&jbt->spi_dev->dev, "jbt6k74 event=%lu\n", event); + dev_dbg(&jbt->spi_dev->dev, "event=%lu\n", event); if (event != FB_EVENT_BLANK && event != FB_EVENT_CONBLANK) return 0; @@ -712,7 +712,7 @@ static int jbt_suspend(struct spi_device *spi, pm_message_t state) jbt6k74_enter_state(jbt, JBT_STATE_DEEP_STANDBY); - dev_info(&spi->dev, "**** jbt6k74 suspend end\n"); + dev_info(&spi->dev, "suspended\n"); return 0; } @@ -722,14 +722,12 @@ int jbt6k74_resume(struct spi_device *spi) struct jbt_info *jbt = dev_get_drvdata(&spi->dev); struct jbt6k74_platform_data *pdata = spi->dev.platform_data; - dev_info(&spi->dev, "**** jbt6k74 resume start\n"); - jbt6k74_enter_state(jbt, jbt->normal_state); if (pdata->resuming) (pdata->resuming)(0); - dev_info(&spi->dev, "**** jbt6k74 resume end\n"); + dev_info(&spi->dev, "resumed\n"); return 0; } -- cgit v1.2.3 From 2bea5c68313577b214b872b0edc5968db0cf3b68 Mon Sep 17 00:00:00 2001 From: Mike Westerhof Date: Tue, 14 Apr 2009 02:10:02 -0500 Subject: Fix kernel oops when starting wpa_supplicant. This closes bug #2267. Signed-off-by: Mike Westerhof --- drivers/ar6000/ar6000/wireless_ext.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/drivers/ar6000/ar6000/wireless_ext.c b/drivers/ar6000/ar6000/wireless_ext.c index d9a592038e6..af78ae05fcb 100644 --- a/drivers/ar6000/ar6000/wireless_ext.c +++ b/drivers/ar6000/ar6000/wireless_ext.c @@ -976,6 +976,16 @@ static int ar6000_ioctl_giwpower(struct net_device *dev, { AR_SOFTC_T *ar = (AR_SOFTC_T *)netdev_priv(dev); + /* + * FIXME: + * https://docs.openmoko.org/trac/ticket/2267 + * When starting wpa_supplicant the kernel oopses. + * The following condition avoids the oops. + * Remove this comment to bless this solution. + */ + if (ar->arWlanState == WLAN_DISABLED || ar->arWmiReady == FALSE) + return -EIO; + return wmi_get_power_mode_cmd(ar->arWmi); } -- cgit v1.2.3 From 962780e3631255fc5423192d0762f30a1fa45239 Mon Sep 17 00:00:00 2001 From: Tim Niemeyer Date: Tue, 14 Apr 2009 19:07:27 +0200 Subject: update gta01 config based on gta02 config Signed-off-by: Tim Niemeyer --- arch/arm/configs/gta01_moredrivers_defconfig | 519 +++++++++++++++------------ 1 file changed, 292 insertions(+), 227 deletions(-) diff --git a/arch/arm/configs/gta01_moredrivers_defconfig b/arch/arm/configs/gta01_moredrivers_defconfig index b60ebfba3b8..4b9e2042fff 100644 --- a/arch/arm/configs/gta01_moredrivers_defconfig +++ b/arch/arm/configs/gta01_moredrivers_defconfig @@ -1,9 +1,10 @@ # # Automatically generated make config: don't edit # Linux kernel version: 2.6.29-rc3 -# Tue Feb 24 02:13:21 2009 +# Tue Apr 14 18:14:44 2009 # CONFIG_ARM=y +CONFIG_HAVE_PWM=y CONFIG_SYS_SUPPORTS_APM_EMULATION=y CONFIG_GENERIC_GPIO=y # CONFIG_GENERIC_TIME is not set @@ -33,7 +34,7 @@ CONFIG_EXPERIMENTAL=y CONFIG_BROKEN_ON_SMP=y CONFIG_LOCK_KERNEL=y CONFIG_INIT_ENV_ARG_LIMIT=32 -CONFIG_LOCALVERSION="" +CONFIG_LOCALVERSION="-mokodev" # CONFIG_LOCALVERSION_AUTO is not set CONFIG_SWAP=y CONFIG_SYSVIPC=y @@ -53,7 +54,7 @@ CONFIG_CLASSIC_RCU=y # CONFIG_PREEMPT_RCU_TRACE is not set CONFIG_IKCONFIG=y CONFIG_IKCONFIG_PROC=y -CONFIG_LOG_BUF_SHIFT=14 +CONFIG_LOG_BUF_SHIFT=18 # CONFIG_GROUP_SCHED is not set # CONFIG_CGROUPS is not set CONFIG_SYSFS_DEPRECATED=y @@ -73,7 +74,7 @@ CONFIG_SYSCTL=y CONFIG_UID16=y CONFIG_SYSCTL_SYSCALL=y CONFIG_KALLSYMS=y -# CONFIG_KALLSYMS_ALL is not set +CONFIG_KALLSYMS_ALL=y # CONFIG_KALLSYMS_EXTRA_PASS is not set CONFIG_HOTPLUG=y CONFIG_PRINTK=y @@ -89,15 +90,12 @@ CONFIG_TIMERFD=y CONFIG_EVENTFD=y CONFIG_SHMEM=y CONFIG_AIO=y -# CONFIG_ASHMEM is not set +CONFIG_ASHMEM=y CONFIG_VM_EVENT_COUNTERS=y CONFIG_SLAB=y # CONFIG_SLUB is not set # CONFIG_SLOB is not set -CONFIG_PROFILING=y -CONFIG_TRACEPOINTS=y -# CONFIG_MARKERS is not set -CONFIG_OPROFILE=m +# CONFIG_PROFILING is not set CONFIG_HAVE_OPROFILE=y # CONFIG_KPROBES is not set CONFIG_HAVE_KPROBES=y @@ -176,7 +174,7 @@ CONFIG_ARCH_S3C2410=y # CONFIG_ARCH_W90X900 is not set CONFIG_PLAT_S3C24XX=y CONFIG_S3C2410_CLOCK=y -# CONFIG_S3C24XX_PWM is not set +CONFIG_S3C24XX_PWM=y CONFIG_S3C24XX_GPIO_EXTRA=0 CONFIG_S3C2410_DMA=y # CONFIG_S3C2410_DMA_DEBUG is not set @@ -203,6 +201,7 @@ CONFIG_S3C_GPIO_SPACE=0 CONFIG_S3C_GPIO_TRACK=y CONFIG_S3C_DMA=y CONFIG_S3C_PWM=y +CONFIG_S3C_DEV_USB_HOST=y # # S3C2400 Machines @@ -326,7 +325,8 @@ CONFIG_ATAGS_PROC=y # # CPU Power Management # -# CONFIG_CPU_IDLE is not set +CONFIG_CPU_IDLE=y +CONFIG_CPU_IDLE_GOV_LADDER=y # # Floating point emulation @@ -352,12 +352,9 @@ CONFIG_HAVE_AOUT=y # Power management options # CONFIG_PM=y -CONFIG_PM_DEBUG=y -# CONFIG_PM_VERBOSE is not set -CONFIG_CAN_PM_TRACE=y +# CONFIG_PM_DEBUG is not set CONFIG_PM_SLEEP=y CONFIG_SUSPEND=y -# CONFIG_PM_TEST_SUSPEND is not set CONFIG_SUSPEND_FREEZER=y CONFIG_APM_EMULATION=y CONFIG_ARCH_SUSPEND_POSSIBLE=y @@ -435,6 +432,7 @@ CONFIG_IPV6_TUNNEL=m CONFIG_NETFILTER=y # CONFIG_NETFILTER_DEBUG is not set CONFIG_NETFILTER_ADVANCED=y +CONFIG_BRIDGE_NETFILTER=y # # Core Netfilter Configuration @@ -442,28 +440,27 @@ CONFIG_NETFILTER_ADVANCED=y CONFIG_NETFILTER_NETLINK=m CONFIG_NETFILTER_NETLINK_QUEUE=m CONFIG_NETFILTER_NETLINK_LOG=m -CONFIG_NF_CONNTRACK=m -CONFIG_NF_CT_ACCT=y -CONFIG_NF_CONNTRACK_MARK=y -CONFIG_NF_CONNTRACK_EVENTS=y +CONFIG_NF_CONNTRACK=y +# CONFIG_NF_CT_ACCT is not set +# CONFIG_NF_CONNTRACK_MARK is not set +# CONFIG_NF_CONNTRACK_EVENTS is not set # CONFIG_NF_CT_PROTO_DCCP is not set -CONFIG_NF_CT_PROTO_GRE=m -CONFIG_NF_CT_PROTO_SCTP=m +# CONFIG_NF_CT_PROTO_SCTP is not set # CONFIG_NF_CT_PROTO_UDPLITE is not set # CONFIG_NF_CONNTRACK_AMANDA is not set -CONFIG_NF_CONNTRACK_FTP=m -CONFIG_NF_CONNTRACK_H323=m -CONFIG_NF_CONNTRACK_IRC=m -CONFIG_NF_CONNTRACK_NETBIOS_NS=m -CONFIG_NF_CONNTRACK_PPTP=m -CONFIG_NF_CONNTRACK_SANE=m -CONFIG_NF_CONNTRACK_SIP=m -CONFIG_NF_CONNTRACK_TFTP=m -CONFIG_NF_CT_NETLINK=m +# CONFIG_NF_CONNTRACK_FTP is not set +# CONFIG_NF_CONNTRACK_H323 is not set +# CONFIG_NF_CONNTRACK_IRC is not set +# CONFIG_NF_CONNTRACK_NETBIOS_NS is not set +# CONFIG_NF_CONNTRACK_PPTP is not set +# CONFIG_NF_CONNTRACK_SANE is not set +# CONFIG_NF_CONNTRACK_SIP is not set +# CONFIG_NF_CONNTRACK_TFTP is not set +# CONFIG_NF_CT_NETLINK is not set # CONFIG_NETFILTER_TPROXY is not set CONFIG_NETFILTER_XTABLES=m CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m -CONFIG_NETFILTER_XT_TARGET_CONNMARK=m +# CONFIG_NETFILTER_XT_TARGET_CONNMARK is not set CONFIG_NETFILTER_XT_TARGET_DSCP=m CONFIG_NETFILTER_XT_TARGET_MARK=m CONFIG_NETFILTER_XT_TARGET_NFLOG=m @@ -472,15 +469,15 @@ CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m CONFIG_NETFILTER_XT_TARGET_TCPMSS=m # CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP is not set # CONFIG_NETFILTER_XT_MATCH_COMMENT is not set -CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m +# CONFIG_NETFILTER_XT_MATCH_CONNBYTES is not set # CONFIG_NETFILTER_XT_MATCH_CONNLIMIT is not set -CONFIG_NETFILTER_XT_MATCH_CONNMARK=m +# CONFIG_NETFILTER_XT_MATCH_CONNMARK is not set CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m CONFIG_NETFILTER_XT_MATCH_DCCP=m CONFIG_NETFILTER_XT_MATCH_DSCP=m CONFIG_NETFILTER_XT_MATCH_ESP=m CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m -CONFIG_NETFILTER_XT_MATCH_HELPER=m +# CONFIG_NETFILTER_XT_MATCH_HELPER is not set # CONFIG_NETFILTER_XT_MATCH_IPRANGE is not set CONFIG_NETFILTER_XT_MATCH_LENGTH=m CONFIG_NETFILTER_XT_MATCH_LIMIT=m @@ -489,13 +486,14 @@ CONFIG_NETFILTER_XT_MATCH_MARK=m CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m # CONFIG_NETFILTER_XT_MATCH_OWNER is not set CONFIG_NETFILTER_XT_MATCH_POLICY=m +CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m CONFIG_NETFILTER_XT_MATCH_QUOTA=m # CONFIG_NETFILTER_XT_MATCH_RATEEST is not set CONFIG_NETFILTER_XT_MATCH_REALM=m # CONFIG_NETFILTER_XT_MATCH_RECENT is not set CONFIG_NETFILTER_XT_MATCH_SCTP=m -CONFIG_NETFILTER_XT_MATCH_STATE=m +# CONFIG_NETFILTER_XT_MATCH_STATE is not set CONFIG_NETFILTER_XT_MATCH_STATISTIC=m CONFIG_NETFILTER_XT_MATCH_STRING=m CONFIG_NETFILTER_XT_MATCH_TCPMSS=m @@ -506,9 +504,9 @@ CONFIG_NETFILTER_XT_MATCH_TCPMSS=m # # IP: Netfilter Configuration # -CONFIG_NF_DEFRAG_IPV4=m -CONFIG_NF_CONNTRACK_IPV4=m -CONFIG_NF_CONNTRACK_PROC_COMPAT=y +CONFIG_NF_DEFRAG_IPV4=y +CONFIG_NF_CONNTRACK_IPV4=y +# CONFIG_NF_CONNTRACK_PROC_COMPAT is not set # CONFIG_IP_NF_QUEUE is not set CONFIG_IP_NF_IPTABLES=m CONFIG_IP_NF_MATCH_ADDRTYPE=m @@ -522,20 +520,18 @@ CONFIG_IP_NF_TARGET_ULOG=m CONFIG_NF_NAT=m CONFIG_NF_NAT_NEEDED=y CONFIG_IP_NF_TARGET_MASQUERADE=m -CONFIG_IP_NF_TARGET_NETMAP=m -CONFIG_IP_NF_TARGET_REDIRECT=m -CONFIG_NF_NAT_SNMP_BASIC=m -CONFIG_NF_NAT_PROTO_GRE=m -CONFIG_NF_NAT_PROTO_SCTP=m -CONFIG_NF_NAT_FTP=m -CONFIG_NF_NAT_IRC=m -CONFIG_NF_NAT_TFTP=m +# CONFIG_IP_NF_TARGET_NETMAP is not set +# CONFIG_IP_NF_TARGET_REDIRECT is not set +# CONFIG_NF_NAT_SNMP_BASIC is not set +# CONFIG_NF_NAT_FTP is not set +# CONFIG_NF_NAT_IRC is not set +# CONFIG_NF_NAT_TFTP is not set # CONFIG_NF_NAT_AMANDA is not set -CONFIG_NF_NAT_PPTP=m -CONFIG_NF_NAT_H323=m -CONFIG_NF_NAT_SIP=m +# CONFIG_NF_NAT_PPTP is not set +# CONFIG_NF_NAT_H323 is not set +# CONFIG_NF_NAT_SIP is not set CONFIG_IP_NF_MANGLE=m -CONFIG_IP_NF_TARGET_CLUSTERIP=m +# CONFIG_IP_NF_TARGET_CLUSTERIP is not set CONFIG_IP_NF_TARGET_ECN=m CONFIG_IP_NF_TARGET_TTL=m # CONFIG_IP_NF_RAW is not set @@ -561,14 +557,38 @@ CONFIG_IP6_NF_TARGET_REJECT=m CONFIG_IP6_NF_MANGLE=m CONFIG_IP6_NF_TARGET_HL=m # CONFIG_IP6_NF_RAW is not set +CONFIG_BRIDGE_NF_EBTABLES=m +CONFIG_BRIDGE_EBT_BROUTE=m +CONFIG_BRIDGE_EBT_T_FILTER=m +CONFIG_BRIDGE_EBT_T_NAT=m +CONFIG_BRIDGE_EBT_802_3=m +CONFIG_BRIDGE_EBT_AMONG=m +CONFIG_BRIDGE_EBT_ARP=m +CONFIG_BRIDGE_EBT_IP=m +# CONFIG_BRIDGE_EBT_IP6 is not set +CONFIG_BRIDGE_EBT_LIMIT=m +CONFIG_BRIDGE_EBT_MARK=m +CONFIG_BRIDGE_EBT_PKTTYPE=m +CONFIG_BRIDGE_EBT_STP=m +CONFIG_BRIDGE_EBT_VLAN=m +CONFIG_BRIDGE_EBT_ARPREPLY=m +CONFIG_BRIDGE_EBT_DNAT=m +CONFIG_BRIDGE_EBT_MARK_T=m +CONFIG_BRIDGE_EBT_REDIRECT=m +CONFIG_BRIDGE_EBT_SNAT=m +CONFIG_BRIDGE_EBT_LOG=m +CONFIG_BRIDGE_EBT_ULOG=m +# CONFIG_BRIDGE_EBT_NFLOG is not set # CONFIG_IP_DCCP is not set # CONFIG_IP_SCTP is not set # CONFIG_TIPC is not set # CONFIG_ATM is not set -# CONFIG_BRIDGE is not set +CONFIG_STP=y +CONFIG_BRIDGE=y # CONFIG_NET_DSA is not set # CONFIG_VLAN_8021Q is not set # CONFIG_DECNET is not set +CONFIG_LLC=y # CONFIG_LLC2 is not set # CONFIG_IPX is not set # CONFIG_ATALK is not set @@ -624,14 +644,14 @@ CONFIG_NET_SCH_FIFO=y # CONFIG_CAN is not set # CONFIG_IRDA is not set CONFIG_BT=y -CONFIG_BT_L2CAP=m -CONFIG_BT_SCO=m -CONFIG_BT_RFCOMM=m +CONFIG_BT_L2CAP=y +CONFIG_BT_SCO=y +CONFIG_BT_RFCOMM=y CONFIG_BT_RFCOMM_TTY=y -CONFIG_BT_BNEP=m +CONFIG_BT_BNEP=y CONFIG_BT_BNEP_MC_FILTER=y CONFIG_BT_BNEP_PROTO_FILTER=y -CONFIG_BT_HIDP=m +CONFIG_BT_HIDP=y # # Bluetooth device drivers @@ -648,14 +668,14 @@ CONFIG_BT_HCIBTUSB=y CONFIG_FIB_RULES=y CONFIG_WIRELESS=y # CONFIG_CFG80211 is not set -CONFIG_WIRELESS_OLD_REGULATORY=y +# CONFIG_WIRELESS_OLD_REGULATORY is not set CONFIG_WIRELESS_EXT=y CONFIG_WIRELESS_EXT_SYSFS=y # CONFIG_LIB80211 is not set # CONFIG_MAC80211 is not set # CONFIG_WIMAX is not set CONFIG_RFKILL=y -# CONFIG_RFKILL_INPUT is not set +CONFIG_RFKILL_INPUT=y CONFIG_RFKILL_LEDS=y # CONFIG_NET_9P is not set @@ -670,7 +690,7 @@ CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" CONFIG_STANDALONE=y CONFIG_PREVENT_FIRMWARE_BUILD=y CONFIG_FW_LOADER=y -CONFIG_FIRMWARE_IN_KERNEL=y +# CONFIG_FIRMWARE_IN_KERNEL is not set CONFIG_EXTRA_FIRMWARE="" # CONFIG_DEBUG_DRIVER is not set # CONFIG_DEBUG_DEVRES is not set @@ -678,7 +698,7 @@ CONFIG_EXTRA_FIRMWARE="" CONFIG_CONNECTOR=m CONFIG_MTD=y # CONFIG_MTD_DEBUG is not set -# CONFIG_MTD_CONCAT is not set +CONFIG_MTD_CONCAT=y CONFIG_MTD_PARTITIONS=y # CONFIG_MTD_TESTS is not set # CONFIG_MTD_REDBOOT_PARTS is not set @@ -721,7 +741,7 @@ CONFIG_MTD_CFI_INTELEXT=y # CONFIG_MTD_CFI_STAA is not set CONFIG_MTD_CFI_UTIL=y # CONFIG_MTD_RAM is not set -# CONFIG_MTD_ROM is not set +CONFIG_MTD_ROM=y CONFIG_MTD_ABSENT=y # @@ -807,7 +827,7 @@ CONFIG_HAVE_IDE=y # SCSI device support # # CONFIG_RAID_ATTRS is not set -CONFIG_SCSI=m +CONFIG_SCSI=y CONFIG_SCSI_DMA=y # CONFIG_SCSI_TGT is not set # CONFIG_SCSI_NETLINK is not set @@ -816,18 +836,18 @@ CONFIG_SCSI_PROC_FS=y # # SCSI support type (disk, tape, CD-ROM) # -CONFIG_BLK_DEV_SD=m +CONFIG_BLK_DEV_SD=y # CONFIG_CHR_DEV_ST is not set # CONFIG_CHR_DEV_OSST is not set -CONFIG_BLK_DEV_SR=m +CONFIG_BLK_DEV_SR=y # CONFIG_BLK_DEV_SR_VENDOR is not set -CONFIG_CHR_DEV_SG=m +CONFIG_CHR_DEV_SG=y # CONFIG_CHR_DEV_SCH is not set # # Some SCSI devices (e.g. CD jukebox) support multiple LUNs # -# CONFIG_SCSI_MULTI_LUN is not set +CONFIG_SCSI_MULTI_LUN=y # CONFIG_SCSI_CONSTANTS is not set # CONFIG_SCSI_LOGGING is not set CONFIG_SCSI_SCAN_ASYNC=y @@ -853,7 +873,7 @@ CONFIG_NETDEVICES=y # CONFIG_BONDING is not set # CONFIG_MACVLAN is not set # CONFIG_EQUALIZER is not set -CONFIG_TUN=m +CONFIG_TUN=y # CONFIG_VETH is not set # CONFIG_PHYLIB is not set CONFIG_NET_ETHERNET=y @@ -895,14 +915,14 @@ CONFIG_USB_PEGASUS=m CONFIG_USB_RTL8150=m CONFIG_USB_USBNET=y CONFIG_USB_NET_AX8817X=m -CONFIG_USB_NET_CDCETHER=m +CONFIG_USB_NET_CDCETHER=y CONFIG_USB_NET_DM9601=m # CONFIG_USB_NET_SMSC95XX is not set CONFIG_USB_NET_GL620A=m CONFIG_USB_NET_NET1080=m CONFIG_USB_NET_PLUSB=m CONFIG_USB_NET_MCS7830=m -CONFIG_USB_NET_RNDIS_HOST=m +CONFIG_USB_NET_RNDIS_HOST=y CONFIG_USB_NET_CDC_SUBSET=m CONFIG_USB_ALI_M5632=y CONFIG_USB_AN2720=y @@ -913,18 +933,18 @@ CONFIG_USB_KC2190=y CONFIG_USB_NET_ZAURUS=m # CONFIG_USB_HSO is not set # CONFIG_WAN is not set -CONFIG_PPP=m +CONFIG_PPP=y CONFIG_PPP_MULTILINK=y CONFIG_PPP_FILTER=y -CONFIG_PPP_ASYNC=m -CONFIG_PPP_SYNC_TTY=m -CONFIG_PPP_DEFLATE=m -CONFIG_PPP_BSDCOMP=m -CONFIG_PPP_MPPE=m +CONFIG_PPP_ASYNC=y +CONFIG_PPP_SYNC_TTY=y +CONFIG_PPP_DEFLATE=y +CONFIG_PPP_BSDCOMP=y +CONFIG_PPP_MPPE=y # CONFIG_PPPOE is not set # CONFIG_PPPOL2TP is not set # CONFIG_SLIP is not set -CONFIG_SLHC=m +CONFIG_SLHC=y # CONFIG_NETCONSOLE is not set # CONFIG_NETPOLL is not set # CONFIG_NET_POLL_CONTROLLER is not set @@ -1021,7 +1041,7 @@ CONFIG_VT_CONSOLE=y CONFIG_NR_TTY_DEVICES=8 CONFIG_HW_CONSOLE=y CONFIG_VT_HW_CONSOLE_BINDING=y -CONFIG_DEVKMEM=y +# CONFIG_DEVKMEM is not set # CONFIG_SERIAL_NONSTANDARD is not set # @@ -1090,7 +1110,7 @@ CONFIG_I2C_S3C2410=y # CONFIG_SENSORS_PCF8591 is not set # CONFIG_SENSORS_MAX6875 is not set # CONFIG_SENSORS_TSL2550 is not set -# CONFIG_PCA9632 is not set +CONFIG_PCA9632=y # CONFIG_I2C_DEBUG_CORE is not set # CONFIG_I2C_DEBUG_ALGO is not set # CONFIG_I2C_DEBUG_BUS is not set @@ -1103,8 +1123,8 @@ CONFIG_SPI_MASTER=y # SPI Master Controller Drivers # CONFIG_SPI_BITBANG=y -# CONFIG_SPI_GPIO is not set -CONFIG_SPI_S3C24XX=y +CONFIG_SPI_GPIO=y +# CONFIG_SPI_S3C24XX is not set CONFIG_SPI_S3C24XX_GPIO=y # @@ -1114,8 +1134,8 @@ CONFIG_SPI_S3C24XX_GPIO=y # CONFIG_SPI_TLE62X0 is not set CONFIG_ARCH_REQUIRE_GPIOLIB=y CONFIG_GPIOLIB=y -# CONFIG_DEBUG_GPIO is not set -# CONFIG_GPIO_SYSFS is not set +CONFIG_DEBUG_GPIO=y +CONFIG_GPIO_SYSFS=y # # Memory mapped GPIO expanders: @@ -1140,15 +1160,71 @@ CONFIG_GPIOLIB=y # CONFIG_W1 is not set CONFIG_POWER_SUPPLY=y # CONFIG_POWER_SUPPLY_DEBUG is not set -# CONFIG_PDA_POWER is not set -# CONFIG_APM_POWER is not set +CONFIG_PDA_POWER=y +CONFIG_APM_POWER=y # CONFIG_BATTERY_DS2760 is not set # CONFIG_BATTERY_BQ27x00 is not set -CONFIG_BATTERY_BQ27000_HDQ=y +# CONFIG_BATTERY_BQ27000_HDQ is not set CONFIG_HDQ_GPIO_BITBANG=y CONFIG_CHARGER_PCF50606=y CONFIG_BATTERY_GTA01=y -# CONFIG_HWMON is not set +CONFIG_HWMON=y +# CONFIG_HWMON_VID is not set +# CONFIG_SENSORS_AD7414 is not set +# CONFIG_SENSORS_AD7418 is not set +# CONFIG_SENSORS_ADCXX is not set +# CONFIG_SENSORS_ADM1021 is not set +# CONFIG_SENSORS_ADM1025 is not set +# CONFIG_SENSORS_ADM1026 is not set +# CONFIG_SENSORS_ADM1029 is not set +# CONFIG_SENSORS_ADM1031 is not set +# CONFIG_SENSORS_ADM9240 is not set +# CONFIG_SENSORS_ADT7462 is not set +# CONFIG_SENSORS_ADT7470 is not set +# CONFIG_SENSORS_ADT7473 is not set +# CONFIG_SENSORS_ADT7475 is not set +# CONFIG_SENSORS_ATXP1 is not set +# CONFIG_SENSORS_DS1621 is not set +# CONFIG_SENSORS_F71805F is not set +# CONFIG_SENSORS_F71882FG is not set +# CONFIG_SENSORS_F75375S is not set +# CONFIG_SENSORS_GL518SM is not set +# CONFIG_SENSORS_GL520SM is not set +# CONFIG_SENSORS_IT87 is not set +# CONFIG_SENSORS_LM63 is not set +# CONFIG_SENSORS_LM70 is not set +# CONFIG_SENSORS_LM75 is not set +# CONFIG_SENSORS_LM77 is not set +# CONFIG_SENSORS_LM78 is not set +# CONFIG_SENSORS_LM80 is not set +# CONFIG_SENSORS_LM83 is not set +# CONFIG_SENSORS_LM85 is not set +# CONFIG_SENSORS_LM87 is not set +# CONFIG_SENSORS_LM90 is not set +# CONFIG_SENSORS_LM92 is not set +# CONFIG_SENSORS_LM93 is not set +# CONFIG_SENSORS_LTC4245 is not set +# CONFIG_SENSORS_MAX1111 is not set +# CONFIG_SENSORS_MAX1619 is not set +# CONFIG_SENSORS_MAX6650 is not set +# CONFIG_SENSORS_PC87360 is not set +# CONFIG_SENSORS_PC87427 is not set +# CONFIG_SENSORS_DME1737 is not set +# CONFIG_SENSORS_SMSC47M1 is not set +# CONFIG_SENSORS_SMSC47M192 is not set +# CONFIG_SENSORS_SMSC47B397 is not set +# CONFIG_SENSORS_ADS7828 is not set +# CONFIG_SENSORS_THMC50 is not set +# CONFIG_SENSORS_VT1211 is not set +# CONFIG_SENSORS_W83781D is not set +# CONFIG_SENSORS_W83791D is not set +# CONFIG_SENSORS_W83792D is not set +# CONFIG_SENSORS_W83793 is not set +# CONFIG_SENSORS_W83L785TS is not set +# CONFIG_SENSORS_W83L786NG is not set +# CONFIG_SENSORS_W83627HF is not set +# CONFIG_SENSORS_W83627EHF is not set +# CONFIG_HWMON_DEBUG_CHIP is not set # CONFIG_THERMAL is not set # CONFIG_THERMAL_HWMON is not set CONFIG_WATCHDOG=y @@ -1159,6 +1235,7 @@ CONFIG_WATCHDOG=y # # CONFIG_SOFT_WATCHDOG is not set CONFIG_S3C2410_WATCHDOG=m +CONFIG_PCF50606_WATCHDOG=y # # USB-based Watchdog Cards @@ -1219,7 +1296,7 @@ CONFIG_DAB=y # Graphics support # # CONFIG_VGASTATE is not set -# CONFIG_VIDEO_OUTPUT_CONTROL is not set +CONFIG_VIDEO_OUTPUT_CONTROL=y CONFIG_FB=y # CONFIG_FIRMWARE_EDID is not set # CONFIG_FB_DDC is not set @@ -1251,7 +1328,7 @@ CONFIG_FB_S3C2410=y # CONFIG_FB_MB862XX is not set CONFIG_BACKLIGHT_LCD_SUPPORT=y CONFIG_LCD_CLASS_DEVICE=y -# CONFIG_LCD_LTV350QV is not set +CONFIG_LCD_LTV350QV=y # CONFIG_LCD_ILI9320 is not set # CONFIG_LCD_TDO24M is not set # CONFIG_LCD_VGG2432A4 is not set @@ -1259,11 +1336,16 @@ CONFIG_LCD_CLASS_DEVICE=y CONFIG_BACKLIGHT_CLASS_DEVICE=y CONFIG_BACKLIGHT_GENERIC=y CONFIG_BACKLIGHT_GTA01=y +# CONFIG_BACKLIGHT_PWM is not set # # Display device support # -# CONFIG_DISPLAY_SUPPORT is not set +CONFIG_DISPLAY_SUPPORT=y + +# +# Display hardware drivers +# CONFIG_DISPLAY_JBT6K74=y # CONFIG_DISPLAY_L1K002 is not set @@ -1289,39 +1371,43 @@ CONFIG_FONT_6x11=y # CONFIG_LOGO is not set CONFIG_SOUND=y CONFIG_SOUND_OSS_CORE=y -CONFIG_SND=m -CONFIG_SND_TIMER=m -CONFIG_SND_PCM=m +CONFIG_SND=y +CONFIG_SND_TIMER=y +CONFIG_SND_PCM=y +CONFIG_SND_HWDEP=m +CONFIG_SND_RAWMIDI=m # CONFIG_SND_SEQUENCER is not set CONFIG_SND_OSSEMUL=y -CONFIG_SND_MIXER_OSS=m -CONFIG_SND_PCM_OSS=m +CONFIG_SND_MIXER_OSS=y +CONFIG_SND_PCM_OSS=y CONFIG_SND_PCM_OSS_PLUGINS=y # CONFIG_SND_DYNAMIC_MINORS is not set CONFIG_SND_SUPPORT_OLD_API=y CONFIG_SND_VERBOSE_PROCFS=y # CONFIG_SND_VERBOSE_PRINTK is not set -# CONFIG_SND_DEBUG is not set +CONFIG_SND_DEBUG=y +# CONFIG_SND_DEBUG_VERBOSE is not set +CONFIG_SND_PCM_XRUN_DEBUG=y CONFIG_SND_DRIVERS=y # CONFIG_SND_DUMMY is not set # CONFIG_SND_MTPAV is not set # CONFIG_SND_SERIAL_U16550 is not set # CONFIG_SND_MPU401 is not set CONFIG_SND_ARM=y -CONFIG_SND_SPI=y +# CONFIG_SND_SPI is not set CONFIG_SND_USB=y -# CONFIG_SND_USB_AUDIO is not set +CONFIG_SND_USB_AUDIO=m # CONFIG_SND_USB_CAIAQ is not set -CONFIG_SND_SOC=m -CONFIG_SND_S3C24XX_SOC=m -CONFIG_SND_S3C24XX_SOC_I2S=m -CONFIG_SND_S3C24XX_SOC_NEO1973_WM8753=m +CONFIG_SND_SOC=y +CONFIG_SND_S3C24XX_SOC=y +CONFIG_SND_S3C24XX_SOC_I2S=y +CONFIG_SND_S3C24XX_SOC_NEO1973_WM8753=y # CONFIG_SND_S3C24XX_SOC_LN2440SBC_ALC650 is not set # CONFIG_SND_S3C24XX_SOC_S3C24XX_UDA134X is not set # CONFIG_SND_S3C64XX_SOC_SMDK6410_WM8731 is not set -CONFIG_SND_SOC_I2C_AND_SPI=m +CONFIG_SND_SOC_I2C_AND_SPI=y # CONFIG_SND_SOC_ALL_CODECS is not set -CONFIG_SND_SOC_WM8753=m +CONFIG_SND_SOC_WM8753=y # CONFIG_SOUND_PRIME is not set CONFIG_HID_SUPPORT=y CONFIG_HID=y @@ -1331,36 +1417,36 @@ CONFIG_HID=y # # USB Input Devices # -CONFIG_USB_HID=m -# CONFIG_HID_PID is not set +CONFIG_USB_HID=y +CONFIG_HID_PID=y # CONFIG_USB_HIDDEV is not set # # Special HID drivers # CONFIG_HID_COMPAT=y -CONFIG_HID_A4TECH=m -CONFIG_HID_APPLE=m -CONFIG_HID_BELKIN=m -CONFIG_HID_CHERRY=m -CONFIG_HID_CHICONY=m -CONFIG_HID_CYPRESS=m -CONFIG_HID_EZKEY=m -CONFIG_HID_GYRATION=m -CONFIG_HID_LOGITECH=m +CONFIG_HID_A4TECH=y +CONFIG_HID_APPLE=y +CONFIG_HID_BELKIN=y +CONFIG_HID_CHERRY=y +CONFIG_HID_CHICONY=y +CONFIG_HID_CYPRESS=y +CONFIG_HID_EZKEY=y +CONFIG_HID_GYRATION=y +CONFIG_HID_LOGITECH=y # CONFIG_LOGITECH_FF is not set # CONFIG_LOGIRUMBLEPAD2_FF is not set -CONFIG_HID_MICROSOFT=m -CONFIG_HID_MONTEREY=m -CONFIG_HID_NTRIG=m -CONFIG_HID_PANTHERLORD=m +CONFIG_HID_MICROSOFT=y +CONFIG_HID_MONTEREY=y +CONFIG_HID_NTRIG=y +CONFIG_HID_PANTHERLORD=y # CONFIG_PANTHERLORD_FF is not set -CONFIG_HID_PETALYNX=m -CONFIG_HID_SAMSUNG=m -CONFIG_HID_SONY=m -CONFIG_HID_SUNPLUS=m +CONFIG_HID_PETALYNX=y +CONFIG_HID_SAMSUNG=y +CONFIG_HID_SONY=y +CONFIG_HID_SUNPLUS=y # CONFIG_GREENASIA_FF is not set -CONFIG_HID_TOPSEED=m +CONFIG_HID_TOPSEED=y # CONFIG_THRUSTMASTER_FF is not set # CONFIG_ZEROPLUS_FF is not set CONFIG_USB_SUPPORT=y @@ -1369,7 +1455,7 @@ CONFIG_USB_ARCH_HAS_OHCI=y # CONFIG_USB_ARCH_HAS_EHCI is not set CONFIG_USB=y # CONFIG_USB_DEBUG is not set -# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set +CONFIG_USB_ANNOUNCE_NEW_DEVICES=y # # Miscellaneous USB options @@ -1389,7 +1475,7 @@ CONFIG_USB_MON=y # CONFIG_USB_C67X00_HCD is not set # CONFIG_USB_OXU210HP_HCD is not set # CONFIG_USB_ISP116X_HCD is not set -CONFIG_USB_OHCI_HCD=m +CONFIG_USB_OHCI_HCD=y # CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set # CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set CONFIG_USB_OHCI_LITTLE_ENDIAN=y @@ -1402,10 +1488,10 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y # # USB Device Class drivers # -CONFIG_USB_ACM=m +CONFIG_USB_ACM=y CONFIG_USB_PRINTER=m # CONFIG_USB_WDM is not set -# CONFIG_USB_TMC is not set +CONFIG_USB_TMC=m # # NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed; @@ -1414,7 +1500,7 @@ CONFIG_USB_PRINTER=m # # see USB_STORAGE Help for more information # -CONFIG_USB_STORAGE=m +CONFIG_USB_STORAGE=y # CONFIG_USB_STORAGE_DEBUG is not set CONFIG_USB_STORAGE_DATAFAB=y CONFIG_USB_STORAGE_FREECOM=y @@ -1438,7 +1524,8 @@ CONFIG_USB_LIBUSUAL=y # # USB port drivers # -CONFIG_USB_SERIAL=m +CONFIG_USB_SERIAL=y +CONFIG_USB_SERIAL_CONSOLE=y CONFIG_USB_EZUSB=y CONFIG_USB_SERIAL_GENERIC=y CONFIG_USB_SERIAL_AIRCABLE=m @@ -1462,18 +1549,6 @@ CONFIG_USB_SERIAL_IPW=m # CONFIG_USB_SERIAL_IUU is not set CONFIG_USB_SERIAL_KEYSPAN_PDA=m CONFIG_USB_SERIAL_KEYSPAN=m -CONFIG_USB_SERIAL_KEYSPAN_MPR=y -CONFIG_USB_SERIAL_KEYSPAN_USA28=y -CONFIG_USB_SERIAL_KEYSPAN_USA28X=y -CONFIG_USB_SERIAL_KEYSPAN_USA28XA=y -CONFIG_USB_SERIAL_KEYSPAN_USA28XB=y -CONFIG_USB_SERIAL_KEYSPAN_USA19=y -CONFIG_USB_SERIAL_KEYSPAN_USA18X=y -CONFIG_USB_SERIAL_KEYSPAN_USA19W=y -CONFIG_USB_SERIAL_KEYSPAN_USA19QW=y -CONFIG_USB_SERIAL_KEYSPAN_USA19QI=y -CONFIG_USB_SERIAL_KEYSPAN_USA49W=y -CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y CONFIG_USB_SERIAL_KLSI=m CONFIG_USB_SERIAL_KOBIL_SCT=m CONFIG_USB_SERIAL_MCT_U232=m @@ -1492,7 +1567,7 @@ CONFIG_USB_SERIAL_SIERRAWIRELESS=m CONFIG_USB_SERIAL_TI=m CONFIG_USB_SERIAL_CYBERJACK=m CONFIG_USB_SERIAL_XIRCOM=m -CONFIG_USB_SERIAL_OPTION=m +CONFIG_USB_SERIAL_OPTION=y CONFIG_USB_SERIAL_OMNINET=m # CONFIG_USB_SERIAL_OPTICON is not set # CONFIG_USB_SERIAL_DEBUG is not set @@ -1536,7 +1611,7 @@ CONFIG_USB_GADGET_SELECTED=y # CONFIG_USB_GADGET_PXA27X is not set CONFIG_USB_GADGET_S3C2410=y CONFIG_USB_S3C2410=y -# CONFIG_USB_S3C2410_DEBUG is not set +CONFIG_USB_S3C2410_DEBUG=y # CONFIG_USB_GADGET_S3C_OTGD_HS is not set # CONFIG_USB_GADGET_IMX is not set # CONFIG_USB_GADGET_M66592 is not set @@ -1561,9 +1636,7 @@ CONFIG_USB_ETH_RNDIS=y # OTG and related infrastructure # # CONFIG_USB_GPIO_VBUS is not set -CONFIG_AR6000_WLAN=m -# CONFIG_AR6000_WLAN_DEBUG is not set -# CONFIG_AR6000_WLAN_RESET is not set +# CONFIG_AR6000_WLAN is not set CONFIG_MMC=y # CONFIG_MMC_DEBUG is not set CONFIG_MMC_UNSAFE_RESUME=y @@ -1579,8 +1652,7 @@ CONFIG_MMC_BLOCK_BOUNCE=y # # MMC/SD/SDIO Host Controller Drivers # -CONFIG_MMC_SDHCI=y -CONFIG_MMC_SDHCI_S3C=y +# CONFIG_MMC_SDHCI is not set # CONFIG_MMC_SPI is not set CONFIG_MMC_S3C=y # CONFIG_MEMSTICK is not set @@ -1592,7 +1664,7 @@ CONFIG_LEDS_CLASS=y # LED drivers # # CONFIG_LEDS_PCA9532 is not set -# CONFIG_LEDS_GPIO is not set +CONFIG_LEDS_GPIO=y # CONFIG_LEDS_PCA955X is not set CONFIG_LEDS_NEO1973_VIBRATOR=y # CONFIG_LEDS_LP5521 is not set @@ -1603,7 +1675,7 @@ CONFIG_LEDS_NEO1973_VIBRATOR=y CONFIG_LEDS_TRIGGERS=y CONFIG_LEDS_TRIGGER_TIMER=y # CONFIG_LEDS_TRIGGER_HEARTBEAT is not set -# CONFIG_LEDS_TRIGGER_BACKLIGHT is not set +CONFIG_LEDS_TRIGGER_BACKLIGHT=y # CONFIG_LEDS_TRIGGER_DEFAULT_ON is not set CONFIG_LEDS_TRIGGER_NETDEV=y CONFIG_RTC_LIB=y @@ -1669,14 +1741,22 @@ CONFIG_RTC_DRV_PCF50606=y # on-CPU RTC drivers # CONFIG_RTC_DRV_S3C=m -# CONFIG_DMADEVICES is not set +CONFIG_DMADEVICES=y + +# +# DMA Devices +# CONFIG_REGULATOR=y CONFIG_REGULATOR_DEBUG=y # CONFIG_REGULATOR_FIXED_VOLTAGE is not set # CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set # CONFIG_REGULATOR_BQ24022 is not set CONFIG_REGULATOR_PCF50606=y -# CONFIG_UIO is not set +CONFIG_UIO=y +CONFIG_UIO_PDRV=y +# CONFIG_UIO_PDRV_GENIRQ is not set +# CONFIG_UIO_SMX is not set +# CONFIG_UIO_SERCOS3 is not set CONFIG_STAGING=y # CONFIG_STAGING_EXCLUDE_BUILD is not set # CONFIG_MEILHAUS is not set @@ -1699,15 +1779,7 @@ CONFIG_ANDROID_RAM_CONSOLE_ENABLE_VERBOSE=y # CONFIG_ANDROID_RAM_CONSOLE_EARLY_INIT is not set CONFIG_ANDROID_TIMED_GPIO=y CONFIG_ANDROID_LOW_MEMORY_KILLER=y -CONFIG_ANDROID_HAS_WAKELOCK=y -CONFIG_ANDROID_HAS_EARLYSUSPEND=y -CONFIG_ANDROID_WAKELOCK=y -CONFIG_ANDROID_USER_WAKELOCK=y -CONFIG_ANDROID_EARLYSUSPEND=y -# CONFIG_NO_USER_SPACE_SCREEN_ACCESS_CONTROL is not set -CONFIG_ANDROID_CONSOLE_EARLYSUSPEND=y -# CONFIG_ANDROID_FB_EARLYSUSPEND is not set -CONFIG_ANDROID_POWER_ALARM=y +# CONFIG_ANDROID_WAKELOCK is not set CONFIG_ANDROID_PARANOID_NETWORK=y # @@ -1718,12 +1790,19 @@ CONFIG_EXT2_FS=y # CONFIG_EXT2_FS_XIP is not set CONFIG_EXT3_FS=y # CONFIG_EXT3_FS_XATTR is not set -# CONFIG_EXT4_FS is not set +CONFIG_EXT4_FS=y +CONFIG_EXT4DEV_COMPAT=y +CONFIG_EXT4_FS_XATTR=y +# CONFIG_EXT4_FS_POSIX_ACL is not set +CONFIG_EXT4_FS_SECURITY=y CONFIG_JBD=y # CONFIG_JBD_DEBUG is not set +CONFIG_JBD2=y +# CONFIG_JBD2_DEBUG is not set +CONFIG_FS_MBCACHE=y # CONFIG_REISERFS_FS is not set # CONFIG_JFS_FS is not set -CONFIG_FS_POSIX_ACL=y +# CONFIG_FS_POSIX_ACL is not set CONFIG_FILE_LOCKING=y # CONFIG_XFS_FS is not set # CONFIG_OCFS2_FS is not set @@ -1733,7 +1812,7 @@ CONFIG_INOTIFY=y CONFIG_INOTIFY_USER=y # CONFIG_QUOTA is not set # CONFIG_AUTOFS_FS is not set -CONFIG_AUTOFS4_FS=m +# CONFIG_AUTOFS4_FS is not set CONFIG_FUSE_FS=m # @@ -1742,8 +1821,7 @@ CONFIG_FUSE_FS=m CONFIG_ISO9660_FS=m CONFIG_JOLIET=y # CONFIG_ZISOFS is not set -CONFIG_UDF_FS=m -CONFIG_UDF_NLS=y +# CONFIG_UDF_FS is not set # # DOS/FAT/NT Filesystems @@ -1797,41 +1875,29 @@ CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3 CONFIG_ROMFS_FS=y # CONFIG_SYSV_FS is not set # CONFIG_UFS_FS is not set -CONFIG_NETWORK_FILESYSTEMS=y -CONFIG_NFS_FS=y -CONFIG_NFS_V3=y -# CONFIG_NFS_V3_ACL is not set -CONFIG_NFS_V4=y -CONFIG_ROOT_NFS=y -CONFIG_NFSD=m -CONFIG_NFSD_V3=y -# CONFIG_NFSD_V3_ACL is not set -CONFIG_NFSD_V4=y -CONFIG_LOCKD=y -CONFIG_LOCKD_V4=y -CONFIG_EXPORTFS=m -CONFIG_NFS_COMMON=y -CONFIG_SUNRPC=y -CONFIG_SUNRPC_GSS=y -# CONFIG_SUNRPC_REGISTER_V4 is not set -CONFIG_RPCSEC_GSS_KRB5=y -# CONFIG_RPCSEC_GSS_SPKM3 is not set -# CONFIG_SMB_FS is not set -CONFIG_CIFS=m -# CONFIG_CIFS_STATS is not set -CONFIG_CIFS_WEAK_PW_HASH=y -# CONFIG_CIFS_XATTR is not set -# CONFIG_CIFS_DEBUG2 is not set -# CONFIG_CIFS_EXPERIMENTAL is not set -# CONFIG_NCP_FS is not set -# CONFIG_CODA_FS is not set -# CONFIG_AFS_FS is not set +# CONFIG_NETWORK_FILESYSTEMS is not set # # Partition Types # -# CONFIG_PARTITION_ADVANCED is not set +CONFIG_PARTITION_ADVANCED=y +# CONFIG_ACORN_PARTITION is not set +# CONFIG_OSF_PARTITION is not set +# CONFIG_AMIGA_PARTITION is not set +# CONFIG_ATARI_PARTITION is not set +# CONFIG_MAC_PARTITION is not set CONFIG_MSDOS_PARTITION=y +# CONFIG_BSD_DISKLABEL is not set +# CONFIG_MINIX_SUBPARTITION is not set +# CONFIG_SOLARIS_X86_PARTITION is not set +# CONFIG_UNIXWARE_DISKLABEL is not set +# CONFIG_LDM_PARTITION is not set +# CONFIG_SGI_PARTITION is not set +# CONFIG_ULTRIX_PARTITION is not set +# CONFIG_SUN_PARTITION is not set +# CONFIG_KARMA_PARTITION is not set +# CONFIG_EFI_PARTITION is not set +# CONFIG_SYSV68_PARTITION is not set CONFIG_NLS=y CONFIG_NLS_DEFAULT="iso8859-1" CONFIG_NLS_CODEPAGE_437=y @@ -1877,7 +1943,7 @@ CONFIG_NLS_UTF8=m # # Kernel hacking # -# CONFIG_PRINTK_TIME is not set +CONFIG_PRINTK_TIME=y CONFIG_ENABLE_WARN_DEPRECATED=y CONFIG_ENABLE_MUST_CHECK=y CONFIG_FRAME_WARN=1024 @@ -1886,24 +1952,26 @@ CONFIG_MAGIC_SYSRQ=y CONFIG_DEBUG_FS=y # CONFIG_HEADERS_CHECK is not set CONFIG_DEBUG_KERNEL=y -# CONFIG_DEBUG_SHIRQ is not set +CONFIG_DEBUG_SHIRQ=y CONFIG_DETECT_SOFTLOCKUP=y -# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set -CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0 -# CONFIG_SCHED_DEBUG is not set -# CONFIG_SCHEDSTATS is not set +CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC=y +CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=1 +CONFIG_SCHED_DEBUG=y +CONFIG_SCHEDSTATS=y CONFIG_TIMER_STATS=y # CONFIG_DEBUG_OBJECTS is not set # CONFIG_DEBUG_SLAB is not set CONFIG_DEBUG_PREEMPT=y # CONFIG_DEBUG_RT_MUTEXES is not set # CONFIG_RT_MUTEX_TESTER is not set -# CONFIG_DEBUG_SPINLOCK is not set -# CONFIG_DEBUG_MUTEXES is not set -# CONFIG_DEBUG_LOCK_ALLOC is not set +CONFIG_DEBUG_SPINLOCK=y +CONFIG_DEBUG_MUTEXES=y +CONFIG_DEBUG_LOCK_ALLOC=y # CONFIG_PROVE_LOCKING is not set -# CONFIG_LOCK_STAT is not set -# CONFIG_DEBUG_SPINLOCK_SLEEP is not set +CONFIG_LOCKDEP=y +CONFIG_LOCK_STAT=y +CONFIG_DEBUG_LOCKDEP=y +CONFIG_DEBUG_SPINLOCK_SLEEP=y # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set CONFIG_STACKTRACE=y # CONFIG_DEBUG_KOBJECT is not set @@ -1913,21 +1981,18 @@ CONFIG_DEBUG_INFO=y # CONFIG_DEBUG_WRITECOUNT is not set CONFIG_DEBUG_MEMORY_INIT=y # CONFIG_DEBUG_LIST is not set -# CONFIG_DEBUG_SG is not set +CONFIG_DEBUG_SG=y # CONFIG_DEBUG_NOTIFIERS is not set CONFIG_FRAME_POINTER=y # CONFIG_BOOT_PRINTK_DELAY is not set # CONFIG_RCU_TORTURE_TEST is not set -# CONFIG_RCU_CPU_STALL_DETECTOR is not set +CONFIG_RCU_CPU_STALL_DETECTOR=y # CONFIG_BACKTRACE_SELF_TEST is not set # CONFIG_DEBUG_BLOCK_EXT_DEVT is not set # CONFIG_FAULT_INJECTION is not set -# CONFIG_LATENCYTOP is not set -# CONFIG_SYSCTL_SYSCALL_CHECK is not set -CONFIG_NOP_TRACER=y +CONFIG_LATENCYTOP=y +CONFIG_SYSCTL_SYSCALL_CHECK=y CONFIG_HAVE_FUNCTION_TRACER=y -CONFIG_RING_BUFFER=y -CONFIG_TRACING=y # # Tracers @@ -1938,9 +2003,8 @@ CONFIG_TRACING=y # CONFIG_BOOT_TRACER is not set # CONFIG_TRACE_BRANCH_PROFILING is not set # CONFIG_STACK_TRACER is not set -# CONFIG_FTRACE_STARTUP_TEST is not set # CONFIG_FIND_IRQ_BLOCKERS is not set -# CONFIG_DYNAMIC_PRINTK_DEBUG is not set +CONFIG_DYNAMIC_PRINTK_DEBUG=y # CONFIG_SAMPLES is not set CONFIG_HAVE_ARCH_KGDB=y # CONFIG_KGDB is not set @@ -1955,14 +2019,14 @@ CONFIG_DEBUG_S3C_UART=0 # # CONFIG_KEYS is not set # CONFIG_SECURITY is not set -# CONFIG_SECURITYFS is not set +CONFIG_SECURITYFS=y # CONFIG_SECURITY_FILE_CAPABILITIES is not set CONFIG_CRYPTO=y # # Crypto core or helper # -# CONFIG_CRYPTO_FIPS is not set +CONFIG_CRYPTO_FIPS=y CONFIG_CRYPTO_ALGAPI=y CONFIG_CRYPTO_ALGAPI2=y CONFIG_CRYPTO_AEAD=m @@ -1971,6 +2035,7 @@ CONFIG_CRYPTO_BLKCIPHER=y CONFIG_CRYPTO_BLKCIPHER2=y CONFIG_CRYPTO_HASH=y CONFIG_CRYPTO_HASH2=y +CONFIG_CRYPTO_RNG=y CONFIG_CRYPTO_RNG2=y CONFIG_CRYPTO_MANAGER=y CONFIG_CRYPTO_MANAGER2=y @@ -1993,7 +2058,7 @@ CONFIG_CRYPTO_TEST=m CONFIG_CRYPTO_CBC=y # CONFIG_CRYPTO_CTR is not set # CONFIG_CRYPTO_CTS is not set -CONFIG_CRYPTO_ECB=m +CONFIG_CRYPTO_ECB=y CONFIG_CRYPTO_LRW=m CONFIG_CRYPTO_PCBC=m # CONFIG_CRYPTO_XTS is not set @@ -2015,7 +2080,7 @@ CONFIG_CRYPTO_MICHAEL_MIC=m # CONFIG_CRYPTO_RMD160 is not set # CONFIG_CRYPTO_RMD256 is not set # CONFIG_CRYPTO_RMD320 is not set -CONFIG_CRYPTO_SHA1=m +CONFIG_CRYPTO_SHA1=y CONFIG_CRYPTO_SHA256=m CONFIG_CRYPTO_SHA512=m CONFIG_CRYPTO_TGR192=m @@ -2024,9 +2089,9 @@ CONFIG_CRYPTO_WP512=m # # Ciphers # -CONFIG_CRYPTO_AES=m +CONFIG_CRYPTO_AES=y CONFIG_CRYPTO_ANUBIS=m -CONFIG_CRYPTO_ARC4=m +CONFIG_CRYPTO_ARC4=y CONFIG_CRYPTO_BLOWFISH=m CONFIG_CRYPTO_CAMELLIA=m CONFIG_CRYPTO_CAST5=m @@ -2050,7 +2115,7 @@ CONFIG_CRYPTO_DEFLATE=m # # Random Number Generation # -# CONFIG_CRYPTO_ANSI_CPRNG is not set +CONFIG_CRYPTO_ANSI_CPRNG=y CONFIG_CRYPTO_HW=y # @@ -2058,10 +2123,10 @@ CONFIG_CRYPTO_HW=y # CONFIG_BITREVERSE=y CONFIG_GENERIC_FIND_LAST_BIT=y -CONFIG_CRC_CCITT=m -CONFIG_CRC16=m -# CONFIG_CRC_T10DIF is not set -CONFIG_CRC_ITU_T=m +CONFIG_CRC_CCITT=y +CONFIG_CRC16=y +CONFIG_CRC_T10DIF=y +# CONFIG_CRC_ITU_T is not set CONFIG_CRC32=y # CONFIG_CRC7 is not set CONFIG_LIBCRC32C=m -- cgit v1.2.3 From 44d9e5b72cb127c3f4cf0def6623d4ace2d8fa92 Mon Sep 17 00:00:00 2001 From: Tim Niemeyer Date: Tue, 14 Apr 2009 19:07:25 +0200 Subject: better naming for filter_configuration this affects gta01 and gta02, now we can enable both in the .config Signed-off-by: Tim Niemeyer --- arch/arm/mach-s3c2410/mach-gta01.c | 4 ++-- arch/arm/mach-s3c2442/mach-gta02.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/arch/arm/mach-s3c2410/mach-gta01.c b/arch/arm/mach-s3c2410/mach-gta01.c index c5961d49ad8..ec7b1de7da9 100644 --- a/arch/arm/mach-s3c2410/mach-gta01.c +++ b/arch/arm/mach-s3c2410/mach-gta01.c @@ -733,7 +733,7 @@ static struct ts_filter_linear_configuration gta01_ts_linear = { }; #endif -struct ts_filter_chain_configuration filter_configuration[] = +struct ts_filter_chain_configuration gta01_filter_configuration[] = { #ifdef CONFIG_TOUCHSCREEN_FILTER {&ts_filter_group_api, >a01_ts_group.config}, @@ -747,7 +747,7 @@ struct ts_filter_chain_configuration filter_configuration[] = static struct s3c2410_ts_mach_info gta01_ts_cfg = { .delay = 10000, .presc = 0xff, /* slow as we can go */ - .filter_config = filter_configuration, + .filter_config = gta01_filter_configuration, }; /* SPI */ diff --git a/arch/arm/mach-s3c2442/mach-gta02.c b/arch/arm/mach-s3c2442/mach-gta02.c index e1f8b9b2fd6..db2f1704c69 100644 --- a/arch/arm/mach-s3c2442/mach-gta02.c +++ b/arch/arm/mach-s3c2442/mach-gta02.c @@ -986,7 +986,7 @@ const static struct ts_filter_linear_configuration gta02_ts_linear = { }; #endif -const struct ts_filter_chain_configuration filter_configuration[] = +const struct ts_filter_chain_configuration gta02_filter_configuration[] = { #ifdef CONFIG_TOUCHSCREEN_FILTER {&ts_filter_group_api, >a02_ts_group.config}, @@ -1000,7 +1000,7 @@ const struct ts_filter_chain_configuration filter_configuration[] = const static struct s3c2410_ts_mach_info gta02_ts_cfg = { .delay = 10000, .presc = 0xff, /* slow as we can go */ - .filter_config = filter_configuration, + .filter_config = gta02_filter_configuration, }; -- cgit v1.2.3 From 83052807ac3346706954554ec7e3a3a443f2e881 Mon Sep 17 00:00:00 2001 From: Tim Niemeyer Date: Tue, 14 Apr 2009 19:07:26 +0200 Subject: Too many info messages for apm battery support Changing dev_info => dev_dbg. Signed-off-by: Tim Niemeyer --- drivers/mfd/pcf50606-adc.c | 2 +- drivers/mfd/pcf50606-core.c | 2 +- drivers/power/gta01_battery.c | 1 - 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/drivers/mfd/pcf50606-adc.c b/drivers/mfd/pcf50606-adc.c index fe0336b9753..38f5b5c0593 100644 --- a/drivers/mfd/pcf50606-adc.c +++ b/drivers/mfd/pcf50606-adc.c @@ -175,7 +175,7 @@ static int adc_result(struct pcf50606 *pcf) u16 ret = (pcf50606_reg_read(pcf, PCF50606_REG_ADCS1) << 2) | (pcf50606_reg_read(pcf, PCF50606_REG_ADCS2) & 0x03); - dev_info(pcf->dev, "adc result = %d\n", ret); + dev_dbg(pcf->dev, "adc result = %d\n", ret); return ret; } diff --git a/drivers/mfd/pcf50606-core.c b/drivers/mfd/pcf50606-core.c index 9d0bdae0cb5..7c4fb42b460 100644 --- a/drivers/mfd/pcf50606-core.c +++ b/drivers/mfd/pcf50606-core.c @@ -349,7 +349,7 @@ static void pcf50606_irq_worker(struct work_struct *work) pcf_int[1] &= ~(1 << PCF50606_INT2_CHGINS); } - dev_info(pcf->dev, "INT1=0x%02x INT2=0x%02x INT3=0x%02x\n", + dev_dbg(pcf->dev, "INT1=0x%02x INT2=0x%02x INT3=0x%02x\n", pcf_int[0], pcf_int[1], pcf_int[2]); /* Some revisions of the chip don't have a 8s standby mode on diff --git a/drivers/power/gta01_battery.c b/drivers/power/gta01_battery.c index 126b1721f8d..909f7fe16d9 100644 --- a/drivers/power/gta01_battery.c +++ b/drivers/power/gta01_battery.c @@ -44,7 +44,6 @@ static int gta01_bat_get_property(struct power_supply *psy, val->intval = bat->pdata->get_current(); break; default: - printk(KERN_ERR "Unknown property benig asked for\n"); return -EINVAL; } -- cgit v1.2.3 From 9a690f4a8733bbeeba62ff28ae38ff7f869e4b05 Mon Sep 17 00:00:00 2001 From: Nelson Castillo Date: Wed, 15 Apr 2009 00:21:33 -0500 Subject: make touchscreen filter symbols const static in mach-gta01.c and mach-gta02.c Signed-off-by: Nelson Castillo --- arch/arm/mach-s3c2410/mach-gta01.c | 12 ++++++------ arch/arm/mach-s3c2442/mach-gta02.c | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/arch/arm/mach-s3c2410/mach-gta01.c b/arch/arm/mach-s3c2410/mach-gta01.c index ec7b1de7da9..bddba990a74 100644 --- a/arch/arm/mach-s3c2410/mach-gta01.c +++ b/arch/arm/mach-s3c2410/mach-gta01.c @@ -708,32 +708,32 @@ static struct s3c2410_udc_mach_info gta01_udc_cfg = { /* Touchscreen configuration. */ #ifdef CONFIG_TOUCHSCREEN_FILTER -static struct ts_filter_group_configuration gta01_ts_group = { +const static struct ts_filter_group_configuration gta01_ts_group = { .length = 12, .close_enough = 10, .threshold = 6, /* At least half of the points in a group. */ .attempts = 10, }; -static struct ts_filter_median_configuration gta01_ts_median = { +const static struct ts_filter_median_configuration gta01_ts_median = { .extent = 20, .decimation_below = 3, .decimation_threshold = 8 * 3, .decimation_above = 4, }; -static struct ts_filter_mean_configuration gta01_ts_mean = { +const static struct ts_filter_mean_configuration gta01_ts_mean = { .length = 4, }; -static struct ts_filter_linear_configuration gta01_ts_linear = { +const static struct ts_filter_linear_configuration gta01_ts_linear = { .constants = {1, 0, 0, 0, 1, 0, 1}, /* Don't modify coords. */ .coord0 = 0, .coord1 = 1, }; #endif -struct ts_filter_chain_configuration gta01_filter_configuration[] = +const static struct ts_filter_chain_configuration gta01_filter_configuration[] = { #ifdef CONFIG_TOUCHSCREEN_FILTER {&ts_filter_group_api, >a01_ts_group.config}, @@ -744,7 +744,7 @@ struct ts_filter_chain_configuration gta01_filter_configuration[] = {NULL, NULL}, }; -static struct s3c2410_ts_mach_info gta01_ts_cfg = { +const static struct s3c2410_ts_mach_info gta01_ts_cfg = { .delay = 10000, .presc = 0xff, /* slow as we can go */ .filter_config = gta01_filter_configuration, diff --git a/arch/arm/mach-s3c2442/mach-gta02.c b/arch/arm/mach-s3c2442/mach-gta02.c index db2f1704c69..079a2cc13b7 100644 --- a/arch/arm/mach-s3c2442/mach-gta02.c +++ b/arch/arm/mach-s3c2442/mach-gta02.c @@ -986,7 +986,7 @@ const static struct ts_filter_linear_configuration gta02_ts_linear = { }; #endif -const struct ts_filter_chain_configuration gta02_filter_configuration[] = +const static struct ts_filter_chain_configuration gta02_filter_configuration[] = { #ifdef CONFIG_TOUCHSCREEN_FILTER {&ts_filter_group_api, >a02_ts_group.config}, -- cgit v1.2.3 From 9bb6dde7dcd22b1a12306669673a55e824a856da Mon Sep 17 00:00:00 2001 From: Paul Fertser Date: Thu, 16 Apr 2009 01:37:55 +0400 Subject: OHCI: Disabled additional debugging Disabled additional debugging introduced in 70b36104ab8c03f5be6d03344214d09447d9d4a8 --- drivers/usb/host/ohci-hcd.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/usb/host/ohci-hcd.c b/drivers/usb/host/ohci-hcd.c index 86d9775e071..b14f3808adc 100644 --- a/drivers/usb/host/ohci-hcd.c +++ b/drivers/usb/host/ohci-hcd.c @@ -18,7 +18,6 @@ * This file is licenced under the GPL. */ -#define DEBUG 2 #include #include #include -- cgit v1.2.3 From 06fbe40974754ff188612acf0340c1b29400e439 Mon Sep 17 00:00:00 2001 From: Paul Fertser Date: Thu, 16 Apr 2009 16:04:14 +0400 Subject: gta02: fix re-enabling backlight with <12 values If brightness value was set to anything less than 12, the backlight wasn't re-enabled after unblanking the display. Closes ticket #2262. Signed-off-by: Paul Fertser --- arch/arm/mach-s3c2442/mach-gta02.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/arch/arm/mach-s3c2442/mach-gta02.c b/arch/arm/mach-s3c2442/mach-gta02.c index 079a2cc13b7..d16e9d638c1 100644 --- a/arch/arm/mach-s3c2442/mach-gta02.c +++ b/arch/arm/mach-s3c2442/mach-gta02.c @@ -1027,16 +1027,17 @@ static void gta02_bl_set_intensity(int intensity) return; } - old_intensity = pcf50633_reg_read(pcf, PCF50633_REG_LEDOUT); + if (!(pcf50633_reg_read(pcf, PCF50633_REG_LEDENA) & 3)) + old_intensity = 0; + else + old_intensity = pcf50633_reg_read(pcf, PCF50633_REG_LEDOUT); + if (intensity == old_intensity) return; /* We can't do this anywhere else */ pcf50633_reg_write(pcf, PCF50633_REG_LEDDIM, 5); - if (!(pcf50633_reg_read(pcf, PCF50633_REG_LEDENA) & 3)) - old_intensity = 0; - /* * The PCF50633 cannot handle LEDOUT = 0 (datasheet p60) * if seen, you have to re-enable the LED unit -- cgit v1.2.3 From 81c61a7d1abb03aecd13f5395aba355e996a1641 Mon Sep 17 00:00:00 2001 From: Nelson Castillo Date: Thu, 16 Apr 2009 09:18:51 -0500 Subject: Revert "update gta01 config based on gta02 config" This reverts commit 962780e3631255fc5423192d0762f30a1fa45239. Nothing really wrong with it but the resulting kernel was too big for the GTA01 NAND flash. GTA01 boots. --- arch/arm/configs/gta01_moredrivers_defconfig | 519 ++++++++++++--------------- 1 file changed, 227 insertions(+), 292 deletions(-) diff --git a/arch/arm/configs/gta01_moredrivers_defconfig b/arch/arm/configs/gta01_moredrivers_defconfig index 4b9e2042fff..b60ebfba3b8 100644 --- a/arch/arm/configs/gta01_moredrivers_defconfig +++ b/arch/arm/configs/gta01_moredrivers_defconfig @@ -1,10 +1,9 @@ # # Automatically generated make config: don't edit # Linux kernel version: 2.6.29-rc3 -# Tue Apr 14 18:14:44 2009 +# Tue Feb 24 02:13:21 2009 # CONFIG_ARM=y -CONFIG_HAVE_PWM=y CONFIG_SYS_SUPPORTS_APM_EMULATION=y CONFIG_GENERIC_GPIO=y # CONFIG_GENERIC_TIME is not set @@ -34,7 +33,7 @@ CONFIG_EXPERIMENTAL=y CONFIG_BROKEN_ON_SMP=y CONFIG_LOCK_KERNEL=y CONFIG_INIT_ENV_ARG_LIMIT=32 -CONFIG_LOCALVERSION="-mokodev" +CONFIG_LOCALVERSION="" # CONFIG_LOCALVERSION_AUTO is not set CONFIG_SWAP=y CONFIG_SYSVIPC=y @@ -54,7 +53,7 @@ CONFIG_CLASSIC_RCU=y # CONFIG_PREEMPT_RCU_TRACE is not set CONFIG_IKCONFIG=y CONFIG_IKCONFIG_PROC=y -CONFIG_LOG_BUF_SHIFT=18 +CONFIG_LOG_BUF_SHIFT=14 # CONFIG_GROUP_SCHED is not set # CONFIG_CGROUPS is not set CONFIG_SYSFS_DEPRECATED=y @@ -74,7 +73,7 @@ CONFIG_SYSCTL=y CONFIG_UID16=y CONFIG_SYSCTL_SYSCALL=y CONFIG_KALLSYMS=y -CONFIG_KALLSYMS_ALL=y +# CONFIG_KALLSYMS_ALL is not set # CONFIG_KALLSYMS_EXTRA_PASS is not set CONFIG_HOTPLUG=y CONFIG_PRINTK=y @@ -90,12 +89,15 @@ CONFIG_TIMERFD=y CONFIG_EVENTFD=y CONFIG_SHMEM=y CONFIG_AIO=y -CONFIG_ASHMEM=y +# CONFIG_ASHMEM is not set CONFIG_VM_EVENT_COUNTERS=y CONFIG_SLAB=y # CONFIG_SLUB is not set # CONFIG_SLOB is not set -# CONFIG_PROFILING is not set +CONFIG_PROFILING=y +CONFIG_TRACEPOINTS=y +# CONFIG_MARKERS is not set +CONFIG_OPROFILE=m CONFIG_HAVE_OPROFILE=y # CONFIG_KPROBES is not set CONFIG_HAVE_KPROBES=y @@ -174,7 +176,7 @@ CONFIG_ARCH_S3C2410=y # CONFIG_ARCH_W90X900 is not set CONFIG_PLAT_S3C24XX=y CONFIG_S3C2410_CLOCK=y -CONFIG_S3C24XX_PWM=y +# CONFIG_S3C24XX_PWM is not set CONFIG_S3C24XX_GPIO_EXTRA=0 CONFIG_S3C2410_DMA=y # CONFIG_S3C2410_DMA_DEBUG is not set @@ -201,7 +203,6 @@ CONFIG_S3C_GPIO_SPACE=0 CONFIG_S3C_GPIO_TRACK=y CONFIG_S3C_DMA=y CONFIG_S3C_PWM=y -CONFIG_S3C_DEV_USB_HOST=y # # S3C2400 Machines @@ -325,8 +326,7 @@ CONFIG_ATAGS_PROC=y # # CPU Power Management # -CONFIG_CPU_IDLE=y -CONFIG_CPU_IDLE_GOV_LADDER=y +# CONFIG_CPU_IDLE is not set # # Floating point emulation @@ -352,9 +352,12 @@ CONFIG_HAVE_AOUT=y # Power management options # CONFIG_PM=y -# CONFIG_PM_DEBUG is not set +CONFIG_PM_DEBUG=y +# CONFIG_PM_VERBOSE is not set +CONFIG_CAN_PM_TRACE=y CONFIG_PM_SLEEP=y CONFIG_SUSPEND=y +# CONFIG_PM_TEST_SUSPEND is not set CONFIG_SUSPEND_FREEZER=y CONFIG_APM_EMULATION=y CONFIG_ARCH_SUSPEND_POSSIBLE=y @@ -432,7 +435,6 @@ CONFIG_IPV6_TUNNEL=m CONFIG_NETFILTER=y # CONFIG_NETFILTER_DEBUG is not set CONFIG_NETFILTER_ADVANCED=y -CONFIG_BRIDGE_NETFILTER=y # # Core Netfilter Configuration @@ -440,27 +442,28 @@ CONFIG_BRIDGE_NETFILTER=y CONFIG_NETFILTER_NETLINK=m CONFIG_NETFILTER_NETLINK_QUEUE=m CONFIG_NETFILTER_NETLINK_LOG=m -CONFIG_NF_CONNTRACK=y -# CONFIG_NF_CT_ACCT is not set -# CONFIG_NF_CONNTRACK_MARK is not set -# CONFIG_NF_CONNTRACK_EVENTS is not set +CONFIG_NF_CONNTRACK=m +CONFIG_NF_CT_ACCT=y +CONFIG_NF_CONNTRACK_MARK=y +CONFIG_NF_CONNTRACK_EVENTS=y # CONFIG_NF_CT_PROTO_DCCP is not set -# CONFIG_NF_CT_PROTO_SCTP is not set +CONFIG_NF_CT_PROTO_GRE=m +CONFIG_NF_CT_PROTO_SCTP=m # CONFIG_NF_CT_PROTO_UDPLITE is not set # CONFIG_NF_CONNTRACK_AMANDA is not set -# CONFIG_NF_CONNTRACK_FTP is not set -# CONFIG_NF_CONNTRACK_H323 is not set -# CONFIG_NF_CONNTRACK_IRC is not set -# CONFIG_NF_CONNTRACK_NETBIOS_NS is not set -# CONFIG_NF_CONNTRACK_PPTP is not set -# CONFIG_NF_CONNTRACK_SANE is not set -# CONFIG_NF_CONNTRACK_SIP is not set -# CONFIG_NF_CONNTRACK_TFTP is not set -# CONFIG_NF_CT_NETLINK is not set +CONFIG_NF_CONNTRACK_FTP=m +CONFIG_NF_CONNTRACK_H323=m +CONFIG_NF_CONNTRACK_IRC=m +CONFIG_NF_CONNTRACK_NETBIOS_NS=m +CONFIG_NF_CONNTRACK_PPTP=m +CONFIG_NF_CONNTRACK_SANE=m +CONFIG_NF_CONNTRACK_SIP=m +CONFIG_NF_CONNTRACK_TFTP=m +CONFIG_NF_CT_NETLINK=m # CONFIG_NETFILTER_TPROXY is not set CONFIG_NETFILTER_XTABLES=m CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m -# CONFIG_NETFILTER_XT_TARGET_CONNMARK is not set +CONFIG_NETFILTER_XT_TARGET_CONNMARK=m CONFIG_NETFILTER_XT_TARGET_DSCP=m CONFIG_NETFILTER_XT_TARGET_MARK=m CONFIG_NETFILTER_XT_TARGET_NFLOG=m @@ -469,15 +472,15 @@ CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m CONFIG_NETFILTER_XT_TARGET_TCPMSS=m # CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP is not set # CONFIG_NETFILTER_XT_MATCH_COMMENT is not set -# CONFIG_NETFILTER_XT_MATCH_CONNBYTES is not set +CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m # CONFIG_NETFILTER_XT_MATCH_CONNLIMIT is not set -# CONFIG_NETFILTER_XT_MATCH_CONNMARK is not set +CONFIG_NETFILTER_XT_MATCH_CONNMARK=m CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m CONFIG_NETFILTER_XT_MATCH_DCCP=m CONFIG_NETFILTER_XT_MATCH_DSCP=m CONFIG_NETFILTER_XT_MATCH_ESP=m CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m -# CONFIG_NETFILTER_XT_MATCH_HELPER is not set +CONFIG_NETFILTER_XT_MATCH_HELPER=m # CONFIG_NETFILTER_XT_MATCH_IPRANGE is not set CONFIG_NETFILTER_XT_MATCH_LENGTH=m CONFIG_NETFILTER_XT_MATCH_LIMIT=m @@ -486,14 +489,13 @@ CONFIG_NETFILTER_XT_MATCH_MARK=m CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m # CONFIG_NETFILTER_XT_MATCH_OWNER is not set CONFIG_NETFILTER_XT_MATCH_POLICY=m -CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m CONFIG_NETFILTER_XT_MATCH_QUOTA=m # CONFIG_NETFILTER_XT_MATCH_RATEEST is not set CONFIG_NETFILTER_XT_MATCH_REALM=m # CONFIG_NETFILTER_XT_MATCH_RECENT is not set CONFIG_NETFILTER_XT_MATCH_SCTP=m -# CONFIG_NETFILTER_XT_MATCH_STATE is not set +CONFIG_NETFILTER_XT_MATCH_STATE=m CONFIG_NETFILTER_XT_MATCH_STATISTIC=m CONFIG_NETFILTER_XT_MATCH_STRING=m CONFIG_NETFILTER_XT_MATCH_TCPMSS=m @@ -504,9 +506,9 @@ CONFIG_NETFILTER_XT_MATCH_TCPMSS=m # # IP: Netfilter Configuration # -CONFIG_NF_DEFRAG_IPV4=y -CONFIG_NF_CONNTRACK_IPV4=y -# CONFIG_NF_CONNTRACK_PROC_COMPAT is not set +CONFIG_NF_DEFRAG_IPV4=m +CONFIG_NF_CONNTRACK_IPV4=m +CONFIG_NF_CONNTRACK_PROC_COMPAT=y # CONFIG_IP_NF_QUEUE is not set CONFIG_IP_NF_IPTABLES=m CONFIG_IP_NF_MATCH_ADDRTYPE=m @@ -520,18 +522,20 @@ CONFIG_IP_NF_TARGET_ULOG=m CONFIG_NF_NAT=m CONFIG_NF_NAT_NEEDED=y CONFIG_IP_NF_TARGET_MASQUERADE=m -# CONFIG_IP_NF_TARGET_NETMAP is not set -# CONFIG_IP_NF_TARGET_REDIRECT is not set -# CONFIG_NF_NAT_SNMP_BASIC is not set -# CONFIG_NF_NAT_FTP is not set -# CONFIG_NF_NAT_IRC is not set -# CONFIG_NF_NAT_TFTP is not set +CONFIG_IP_NF_TARGET_NETMAP=m +CONFIG_IP_NF_TARGET_REDIRECT=m +CONFIG_NF_NAT_SNMP_BASIC=m +CONFIG_NF_NAT_PROTO_GRE=m +CONFIG_NF_NAT_PROTO_SCTP=m +CONFIG_NF_NAT_FTP=m +CONFIG_NF_NAT_IRC=m +CONFIG_NF_NAT_TFTP=m # CONFIG_NF_NAT_AMANDA is not set -# CONFIG_NF_NAT_PPTP is not set -# CONFIG_NF_NAT_H323 is not set -# CONFIG_NF_NAT_SIP is not set +CONFIG_NF_NAT_PPTP=m +CONFIG_NF_NAT_H323=m +CONFIG_NF_NAT_SIP=m CONFIG_IP_NF_MANGLE=m -# CONFIG_IP_NF_TARGET_CLUSTERIP is not set +CONFIG_IP_NF_TARGET_CLUSTERIP=m CONFIG_IP_NF_TARGET_ECN=m CONFIG_IP_NF_TARGET_TTL=m # CONFIG_IP_NF_RAW is not set @@ -557,38 +561,14 @@ CONFIG_IP6_NF_TARGET_REJECT=m CONFIG_IP6_NF_MANGLE=m CONFIG_IP6_NF_TARGET_HL=m # CONFIG_IP6_NF_RAW is not set -CONFIG_BRIDGE_NF_EBTABLES=m -CONFIG_BRIDGE_EBT_BROUTE=m -CONFIG_BRIDGE_EBT_T_FILTER=m -CONFIG_BRIDGE_EBT_T_NAT=m -CONFIG_BRIDGE_EBT_802_3=m -CONFIG_BRIDGE_EBT_AMONG=m -CONFIG_BRIDGE_EBT_ARP=m -CONFIG_BRIDGE_EBT_IP=m -# CONFIG_BRIDGE_EBT_IP6 is not set -CONFIG_BRIDGE_EBT_LIMIT=m -CONFIG_BRIDGE_EBT_MARK=m -CONFIG_BRIDGE_EBT_PKTTYPE=m -CONFIG_BRIDGE_EBT_STP=m -CONFIG_BRIDGE_EBT_VLAN=m -CONFIG_BRIDGE_EBT_ARPREPLY=m -CONFIG_BRIDGE_EBT_DNAT=m -CONFIG_BRIDGE_EBT_MARK_T=m -CONFIG_BRIDGE_EBT_REDIRECT=m -CONFIG_BRIDGE_EBT_SNAT=m -CONFIG_BRIDGE_EBT_LOG=m -CONFIG_BRIDGE_EBT_ULOG=m -# CONFIG_BRIDGE_EBT_NFLOG is not set # CONFIG_IP_DCCP is not set # CONFIG_IP_SCTP is not set # CONFIG_TIPC is not set # CONFIG_ATM is not set -CONFIG_STP=y -CONFIG_BRIDGE=y +# CONFIG_BRIDGE is not set # CONFIG_NET_DSA is not set # CONFIG_VLAN_8021Q is not set # CONFIG_DECNET is not set -CONFIG_LLC=y # CONFIG_LLC2 is not set # CONFIG_IPX is not set # CONFIG_ATALK is not set @@ -644,14 +624,14 @@ CONFIG_NET_SCH_FIFO=y # CONFIG_CAN is not set # CONFIG_IRDA is not set CONFIG_BT=y -CONFIG_BT_L2CAP=y -CONFIG_BT_SCO=y -CONFIG_BT_RFCOMM=y +CONFIG_BT_L2CAP=m +CONFIG_BT_SCO=m +CONFIG_BT_RFCOMM=m CONFIG_BT_RFCOMM_TTY=y -CONFIG_BT_BNEP=y +CONFIG_BT_BNEP=m CONFIG_BT_BNEP_MC_FILTER=y CONFIG_BT_BNEP_PROTO_FILTER=y -CONFIG_BT_HIDP=y +CONFIG_BT_HIDP=m # # Bluetooth device drivers @@ -668,14 +648,14 @@ CONFIG_BT_HCIBTUSB=y CONFIG_FIB_RULES=y CONFIG_WIRELESS=y # CONFIG_CFG80211 is not set -# CONFIG_WIRELESS_OLD_REGULATORY is not set +CONFIG_WIRELESS_OLD_REGULATORY=y CONFIG_WIRELESS_EXT=y CONFIG_WIRELESS_EXT_SYSFS=y # CONFIG_LIB80211 is not set # CONFIG_MAC80211 is not set # CONFIG_WIMAX is not set CONFIG_RFKILL=y -CONFIG_RFKILL_INPUT=y +# CONFIG_RFKILL_INPUT is not set CONFIG_RFKILL_LEDS=y # CONFIG_NET_9P is not set @@ -690,7 +670,7 @@ CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" CONFIG_STANDALONE=y CONFIG_PREVENT_FIRMWARE_BUILD=y CONFIG_FW_LOADER=y -# CONFIG_FIRMWARE_IN_KERNEL is not set +CONFIG_FIRMWARE_IN_KERNEL=y CONFIG_EXTRA_FIRMWARE="" # CONFIG_DEBUG_DRIVER is not set # CONFIG_DEBUG_DEVRES is not set @@ -698,7 +678,7 @@ CONFIG_EXTRA_FIRMWARE="" CONFIG_CONNECTOR=m CONFIG_MTD=y # CONFIG_MTD_DEBUG is not set -CONFIG_MTD_CONCAT=y +# CONFIG_MTD_CONCAT is not set CONFIG_MTD_PARTITIONS=y # CONFIG_MTD_TESTS is not set # CONFIG_MTD_REDBOOT_PARTS is not set @@ -741,7 +721,7 @@ CONFIG_MTD_CFI_INTELEXT=y # CONFIG_MTD_CFI_STAA is not set CONFIG_MTD_CFI_UTIL=y # CONFIG_MTD_RAM is not set -CONFIG_MTD_ROM=y +# CONFIG_MTD_ROM is not set CONFIG_MTD_ABSENT=y # @@ -827,7 +807,7 @@ CONFIG_HAVE_IDE=y # SCSI device support # # CONFIG_RAID_ATTRS is not set -CONFIG_SCSI=y +CONFIG_SCSI=m CONFIG_SCSI_DMA=y # CONFIG_SCSI_TGT is not set # CONFIG_SCSI_NETLINK is not set @@ -836,18 +816,18 @@ CONFIG_SCSI_PROC_FS=y # # SCSI support type (disk, tape, CD-ROM) # -CONFIG_BLK_DEV_SD=y +CONFIG_BLK_DEV_SD=m # CONFIG_CHR_DEV_ST is not set # CONFIG_CHR_DEV_OSST is not set -CONFIG_BLK_DEV_SR=y +CONFIG_BLK_DEV_SR=m # CONFIG_BLK_DEV_SR_VENDOR is not set -CONFIG_CHR_DEV_SG=y +CONFIG_CHR_DEV_SG=m # CONFIG_CHR_DEV_SCH is not set # # Some SCSI devices (e.g. CD jukebox) support multiple LUNs # -CONFIG_SCSI_MULTI_LUN=y +# CONFIG_SCSI_MULTI_LUN is not set # CONFIG_SCSI_CONSTANTS is not set # CONFIG_SCSI_LOGGING is not set CONFIG_SCSI_SCAN_ASYNC=y @@ -873,7 +853,7 @@ CONFIG_NETDEVICES=y # CONFIG_BONDING is not set # CONFIG_MACVLAN is not set # CONFIG_EQUALIZER is not set -CONFIG_TUN=y +CONFIG_TUN=m # CONFIG_VETH is not set # CONFIG_PHYLIB is not set CONFIG_NET_ETHERNET=y @@ -915,14 +895,14 @@ CONFIG_USB_PEGASUS=m CONFIG_USB_RTL8150=m CONFIG_USB_USBNET=y CONFIG_USB_NET_AX8817X=m -CONFIG_USB_NET_CDCETHER=y +CONFIG_USB_NET_CDCETHER=m CONFIG_USB_NET_DM9601=m # CONFIG_USB_NET_SMSC95XX is not set CONFIG_USB_NET_GL620A=m CONFIG_USB_NET_NET1080=m CONFIG_USB_NET_PLUSB=m CONFIG_USB_NET_MCS7830=m -CONFIG_USB_NET_RNDIS_HOST=y +CONFIG_USB_NET_RNDIS_HOST=m CONFIG_USB_NET_CDC_SUBSET=m CONFIG_USB_ALI_M5632=y CONFIG_USB_AN2720=y @@ -933,18 +913,18 @@ CONFIG_USB_KC2190=y CONFIG_USB_NET_ZAURUS=m # CONFIG_USB_HSO is not set # CONFIG_WAN is not set -CONFIG_PPP=y +CONFIG_PPP=m CONFIG_PPP_MULTILINK=y CONFIG_PPP_FILTER=y -CONFIG_PPP_ASYNC=y -CONFIG_PPP_SYNC_TTY=y -CONFIG_PPP_DEFLATE=y -CONFIG_PPP_BSDCOMP=y -CONFIG_PPP_MPPE=y +CONFIG_PPP_ASYNC=m +CONFIG_PPP_SYNC_TTY=m +CONFIG_PPP_DEFLATE=m +CONFIG_PPP_BSDCOMP=m +CONFIG_PPP_MPPE=m # CONFIG_PPPOE is not set # CONFIG_PPPOL2TP is not set # CONFIG_SLIP is not set -CONFIG_SLHC=y +CONFIG_SLHC=m # CONFIG_NETCONSOLE is not set # CONFIG_NETPOLL is not set # CONFIG_NET_POLL_CONTROLLER is not set @@ -1041,7 +1021,7 @@ CONFIG_VT_CONSOLE=y CONFIG_NR_TTY_DEVICES=8 CONFIG_HW_CONSOLE=y CONFIG_VT_HW_CONSOLE_BINDING=y -# CONFIG_DEVKMEM is not set +CONFIG_DEVKMEM=y # CONFIG_SERIAL_NONSTANDARD is not set # @@ -1110,7 +1090,7 @@ CONFIG_I2C_S3C2410=y # CONFIG_SENSORS_PCF8591 is not set # CONFIG_SENSORS_MAX6875 is not set # CONFIG_SENSORS_TSL2550 is not set -CONFIG_PCA9632=y +# CONFIG_PCA9632 is not set # CONFIG_I2C_DEBUG_CORE is not set # CONFIG_I2C_DEBUG_ALGO is not set # CONFIG_I2C_DEBUG_BUS is not set @@ -1123,8 +1103,8 @@ CONFIG_SPI_MASTER=y # SPI Master Controller Drivers # CONFIG_SPI_BITBANG=y -CONFIG_SPI_GPIO=y -# CONFIG_SPI_S3C24XX is not set +# CONFIG_SPI_GPIO is not set +CONFIG_SPI_S3C24XX=y CONFIG_SPI_S3C24XX_GPIO=y # @@ -1134,8 +1114,8 @@ CONFIG_SPI_S3C24XX_GPIO=y # CONFIG_SPI_TLE62X0 is not set CONFIG_ARCH_REQUIRE_GPIOLIB=y CONFIG_GPIOLIB=y -CONFIG_DEBUG_GPIO=y -CONFIG_GPIO_SYSFS=y +# CONFIG_DEBUG_GPIO is not set +# CONFIG_GPIO_SYSFS is not set # # Memory mapped GPIO expanders: @@ -1160,71 +1140,15 @@ CONFIG_GPIO_SYSFS=y # CONFIG_W1 is not set CONFIG_POWER_SUPPLY=y # CONFIG_POWER_SUPPLY_DEBUG is not set -CONFIG_PDA_POWER=y -CONFIG_APM_POWER=y +# CONFIG_PDA_POWER is not set +# CONFIG_APM_POWER is not set # CONFIG_BATTERY_DS2760 is not set # CONFIG_BATTERY_BQ27x00 is not set -# CONFIG_BATTERY_BQ27000_HDQ is not set +CONFIG_BATTERY_BQ27000_HDQ=y CONFIG_HDQ_GPIO_BITBANG=y CONFIG_CHARGER_PCF50606=y CONFIG_BATTERY_GTA01=y -CONFIG_HWMON=y -# CONFIG_HWMON_VID is not set -# CONFIG_SENSORS_AD7414 is not set -# CONFIG_SENSORS_AD7418 is not set -# CONFIG_SENSORS_ADCXX is not set -# CONFIG_SENSORS_ADM1021 is not set -# CONFIG_SENSORS_ADM1025 is not set -# CONFIG_SENSORS_ADM1026 is not set -# CONFIG_SENSORS_ADM1029 is not set -# CONFIG_SENSORS_ADM1031 is not set -# CONFIG_SENSORS_ADM9240 is not set -# CONFIG_SENSORS_ADT7462 is not set -# CONFIG_SENSORS_ADT7470 is not set -# CONFIG_SENSORS_ADT7473 is not set -# CONFIG_SENSORS_ADT7475 is not set -# CONFIG_SENSORS_ATXP1 is not set -# CONFIG_SENSORS_DS1621 is not set -# CONFIG_SENSORS_F71805F is not set -# CONFIG_SENSORS_F71882FG is not set -# CONFIG_SENSORS_F75375S is not set -# CONFIG_SENSORS_GL518SM is not set -# CONFIG_SENSORS_GL520SM is not set -# CONFIG_SENSORS_IT87 is not set -# CONFIG_SENSORS_LM63 is not set -# CONFIG_SENSORS_LM70 is not set -# CONFIG_SENSORS_LM75 is not set -# CONFIG_SENSORS_LM77 is not set -# CONFIG_SENSORS_LM78 is not set -# CONFIG_SENSORS_LM80 is not set -# CONFIG_SENSORS_LM83 is not set -# CONFIG_SENSORS_LM85 is not set -# CONFIG_SENSORS_LM87 is not set -# CONFIG_SENSORS_LM90 is not set -# CONFIG_SENSORS_LM92 is not set -# CONFIG_SENSORS_LM93 is not set -# CONFIG_SENSORS_LTC4245 is not set -# CONFIG_SENSORS_MAX1111 is not set -# CONFIG_SENSORS_MAX1619 is not set -# CONFIG_SENSORS_MAX6650 is not set -# CONFIG_SENSORS_PC87360 is not set -# CONFIG_SENSORS_PC87427 is not set -# CONFIG_SENSORS_DME1737 is not set -# CONFIG_SENSORS_SMSC47M1 is not set -# CONFIG_SENSORS_SMSC47M192 is not set -# CONFIG_SENSORS_SMSC47B397 is not set -# CONFIG_SENSORS_ADS7828 is not set -# CONFIG_SENSORS_THMC50 is not set -# CONFIG_SENSORS_VT1211 is not set -# CONFIG_SENSORS_W83781D is not set -# CONFIG_SENSORS_W83791D is not set -# CONFIG_SENSORS_W83792D is not set -# CONFIG_SENSORS_W83793 is not set -# CONFIG_SENSORS_W83L785TS is not set -# CONFIG_SENSORS_W83L786NG is not set -# CONFIG_SENSORS_W83627HF is not set -# CONFIG_SENSORS_W83627EHF is not set -# CONFIG_HWMON_DEBUG_CHIP is not set +# CONFIG_HWMON is not set # CONFIG_THERMAL is not set # CONFIG_THERMAL_HWMON is not set CONFIG_WATCHDOG=y @@ -1235,7 +1159,6 @@ CONFIG_WATCHDOG=y # # CONFIG_SOFT_WATCHDOG is not set CONFIG_S3C2410_WATCHDOG=m -CONFIG_PCF50606_WATCHDOG=y # # USB-based Watchdog Cards @@ -1296,7 +1219,7 @@ CONFIG_DAB=y # Graphics support # # CONFIG_VGASTATE is not set -CONFIG_VIDEO_OUTPUT_CONTROL=y +# CONFIG_VIDEO_OUTPUT_CONTROL is not set CONFIG_FB=y # CONFIG_FIRMWARE_EDID is not set # CONFIG_FB_DDC is not set @@ -1328,7 +1251,7 @@ CONFIG_FB_S3C2410=y # CONFIG_FB_MB862XX is not set CONFIG_BACKLIGHT_LCD_SUPPORT=y CONFIG_LCD_CLASS_DEVICE=y -CONFIG_LCD_LTV350QV=y +# CONFIG_LCD_LTV350QV is not set # CONFIG_LCD_ILI9320 is not set # CONFIG_LCD_TDO24M is not set # CONFIG_LCD_VGG2432A4 is not set @@ -1336,16 +1259,11 @@ CONFIG_LCD_LTV350QV=y CONFIG_BACKLIGHT_CLASS_DEVICE=y CONFIG_BACKLIGHT_GENERIC=y CONFIG_BACKLIGHT_GTA01=y -# CONFIG_BACKLIGHT_PWM is not set # # Display device support # -CONFIG_DISPLAY_SUPPORT=y - -# -# Display hardware drivers -# +# CONFIG_DISPLAY_SUPPORT is not set CONFIG_DISPLAY_JBT6K74=y # CONFIG_DISPLAY_L1K002 is not set @@ -1371,43 +1289,39 @@ CONFIG_FONT_6x11=y # CONFIG_LOGO is not set CONFIG_SOUND=y CONFIG_SOUND_OSS_CORE=y -CONFIG_SND=y -CONFIG_SND_TIMER=y -CONFIG_SND_PCM=y -CONFIG_SND_HWDEP=m -CONFIG_SND_RAWMIDI=m +CONFIG_SND=m +CONFIG_SND_TIMER=m +CONFIG_SND_PCM=m # CONFIG_SND_SEQUENCER is not set CONFIG_SND_OSSEMUL=y -CONFIG_SND_MIXER_OSS=y -CONFIG_SND_PCM_OSS=y +CONFIG_SND_MIXER_OSS=m +CONFIG_SND_PCM_OSS=m CONFIG_SND_PCM_OSS_PLUGINS=y # CONFIG_SND_DYNAMIC_MINORS is not set CONFIG_SND_SUPPORT_OLD_API=y CONFIG_SND_VERBOSE_PROCFS=y # CONFIG_SND_VERBOSE_PRINTK is not set -CONFIG_SND_DEBUG=y -# CONFIG_SND_DEBUG_VERBOSE is not set -CONFIG_SND_PCM_XRUN_DEBUG=y +# CONFIG_SND_DEBUG is not set CONFIG_SND_DRIVERS=y # CONFIG_SND_DUMMY is not set # CONFIG_SND_MTPAV is not set # CONFIG_SND_SERIAL_U16550 is not set # CONFIG_SND_MPU401 is not set CONFIG_SND_ARM=y -# CONFIG_SND_SPI is not set +CONFIG_SND_SPI=y CONFIG_SND_USB=y -CONFIG_SND_USB_AUDIO=m +# CONFIG_SND_USB_AUDIO is not set # CONFIG_SND_USB_CAIAQ is not set -CONFIG_SND_SOC=y -CONFIG_SND_S3C24XX_SOC=y -CONFIG_SND_S3C24XX_SOC_I2S=y -CONFIG_SND_S3C24XX_SOC_NEO1973_WM8753=y +CONFIG_SND_SOC=m +CONFIG_SND_S3C24XX_SOC=m +CONFIG_SND_S3C24XX_SOC_I2S=m +CONFIG_SND_S3C24XX_SOC_NEO1973_WM8753=m # CONFIG_SND_S3C24XX_SOC_LN2440SBC_ALC650 is not set # CONFIG_SND_S3C24XX_SOC_S3C24XX_UDA134X is not set # CONFIG_SND_S3C64XX_SOC_SMDK6410_WM8731 is not set -CONFIG_SND_SOC_I2C_AND_SPI=y +CONFIG_SND_SOC_I2C_AND_SPI=m # CONFIG_SND_SOC_ALL_CODECS is not set -CONFIG_SND_SOC_WM8753=y +CONFIG_SND_SOC_WM8753=m # CONFIG_SOUND_PRIME is not set CONFIG_HID_SUPPORT=y CONFIG_HID=y @@ -1417,36 +1331,36 @@ CONFIG_HID=y # # USB Input Devices # -CONFIG_USB_HID=y -CONFIG_HID_PID=y +CONFIG_USB_HID=m +# CONFIG_HID_PID is not set # CONFIG_USB_HIDDEV is not set # # Special HID drivers # CONFIG_HID_COMPAT=y -CONFIG_HID_A4TECH=y -CONFIG_HID_APPLE=y -CONFIG_HID_BELKIN=y -CONFIG_HID_CHERRY=y -CONFIG_HID_CHICONY=y -CONFIG_HID_CYPRESS=y -CONFIG_HID_EZKEY=y -CONFIG_HID_GYRATION=y -CONFIG_HID_LOGITECH=y +CONFIG_HID_A4TECH=m +CONFIG_HID_APPLE=m +CONFIG_HID_BELKIN=m +CONFIG_HID_CHERRY=m +CONFIG_HID_CHICONY=m +CONFIG_HID_CYPRESS=m +CONFIG_HID_EZKEY=m +CONFIG_HID_GYRATION=m +CONFIG_HID_LOGITECH=m # CONFIG_LOGITECH_FF is not set # CONFIG_LOGIRUMBLEPAD2_FF is not set -CONFIG_HID_MICROSOFT=y -CONFIG_HID_MONTEREY=y -CONFIG_HID_NTRIG=y -CONFIG_HID_PANTHERLORD=y +CONFIG_HID_MICROSOFT=m +CONFIG_HID_MONTEREY=m +CONFIG_HID_NTRIG=m +CONFIG_HID_PANTHERLORD=m # CONFIG_PANTHERLORD_FF is not set -CONFIG_HID_PETALYNX=y -CONFIG_HID_SAMSUNG=y -CONFIG_HID_SONY=y -CONFIG_HID_SUNPLUS=y +CONFIG_HID_PETALYNX=m +CONFIG_HID_SAMSUNG=m +CONFIG_HID_SONY=m +CONFIG_HID_SUNPLUS=m # CONFIG_GREENASIA_FF is not set -CONFIG_HID_TOPSEED=y +CONFIG_HID_TOPSEED=m # CONFIG_THRUSTMASTER_FF is not set # CONFIG_ZEROPLUS_FF is not set CONFIG_USB_SUPPORT=y @@ -1455,7 +1369,7 @@ CONFIG_USB_ARCH_HAS_OHCI=y # CONFIG_USB_ARCH_HAS_EHCI is not set CONFIG_USB=y # CONFIG_USB_DEBUG is not set -CONFIG_USB_ANNOUNCE_NEW_DEVICES=y +# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set # # Miscellaneous USB options @@ -1475,7 +1389,7 @@ CONFIG_USB_MON=y # CONFIG_USB_C67X00_HCD is not set # CONFIG_USB_OXU210HP_HCD is not set # CONFIG_USB_ISP116X_HCD is not set -CONFIG_USB_OHCI_HCD=y +CONFIG_USB_OHCI_HCD=m # CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set # CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set CONFIG_USB_OHCI_LITTLE_ENDIAN=y @@ -1488,10 +1402,10 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y # # USB Device Class drivers # -CONFIG_USB_ACM=y +CONFIG_USB_ACM=m CONFIG_USB_PRINTER=m # CONFIG_USB_WDM is not set -CONFIG_USB_TMC=m +# CONFIG_USB_TMC is not set # # NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed; @@ -1500,7 +1414,7 @@ CONFIG_USB_TMC=m # # see USB_STORAGE Help for more information # -CONFIG_USB_STORAGE=y +CONFIG_USB_STORAGE=m # CONFIG_USB_STORAGE_DEBUG is not set CONFIG_USB_STORAGE_DATAFAB=y CONFIG_USB_STORAGE_FREECOM=y @@ -1524,8 +1438,7 @@ CONFIG_USB_LIBUSUAL=y # # USB port drivers # -CONFIG_USB_SERIAL=y -CONFIG_USB_SERIAL_CONSOLE=y +CONFIG_USB_SERIAL=m CONFIG_USB_EZUSB=y CONFIG_USB_SERIAL_GENERIC=y CONFIG_USB_SERIAL_AIRCABLE=m @@ -1549,6 +1462,18 @@ CONFIG_USB_SERIAL_IPW=m # CONFIG_USB_SERIAL_IUU is not set CONFIG_USB_SERIAL_KEYSPAN_PDA=m CONFIG_USB_SERIAL_KEYSPAN=m +CONFIG_USB_SERIAL_KEYSPAN_MPR=y +CONFIG_USB_SERIAL_KEYSPAN_USA28=y +CONFIG_USB_SERIAL_KEYSPAN_USA28X=y +CONFIG_USB_SERIAL_KEYSPAN_USA28XA=y +CONFIG_USB_SERIAL_KEYSPAN_USA28XB=y +CONFIG_USB_SERIAL_KEYSPAN_USA19=y +CONFIG_USB_SERIAL_KEYSPAN_USA18X=y +CONFIG_USB_SERIAL_KEYSPAN_USA19W=y +CONFIG_USB_SERIAL_KEYSPAN_USA19QW=y +CONFIG_USB_SERIAL_KEYSPAN_USA19QI=y +CONFIG_USB_SERIAL_KEYSPAN_USA49W=y +CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y CONFIG_USB_SERIAL_KLSI=m CONFIG_USB_SERIAL_KOBIL_SCT=m CONFIG_USB_SERIAL_MCT_U232=m @@ -1567,7 +1492,7 @@ CONFIG_USB_SERIAL_SIERRAWIRELESS=m CONFIG_USB_SERIAL_TI=m CONFIG_USB_SERIAL_CYBERJACK=m CONFIG_USB_SERIAL_XIRCOM=m -CONFIG_USB_SERIAL_OPTION=y +CONFIG_USB_SERIAL_OPTION=m CONFIG_USB_SERIAL_OMNINET=m # CONFIG_USB_SERIAL_OPTICON is not set # CONFIG_USB_SERIAL_DEBUG is not set @@ -1611,7 +1536,7 @@ CONFIG_USB_GADGET_SELECTED=y # CONFIG_USB_GADGET_PXA27X is not set CONFIG_USB_GADGET_S3C2410=y CONFIG_USB_S3C2410=y -CONFIG_USB_S3C2410_DEBUG=y +# CONFIG_USB_S3C2410_DEBUG is not set # CONFIG_USB_GADGET_S3C_OTGD_HS is not set # CONFIG_USB_GADGET_IMX is not set # CONFIG_USB_GADGET_M66592 is not set @@ -1636,7 +1561,9 @@ CONFIG_USB_ETH_RNDIS=y # OTG and related infrastructure # # CONFIG_USB_GPIO_VBUS is not set -# CONFIG_AR6000_WLAN is not set +CONFIG_AR6000_WLAN=m +# CONFIG_AR6000_WLAN_DEBUG is not set +# CONFIG_AR6000_WLAN_RESET is not set CONFIG_MMC=y # CONFIG_MMC_DEBUG is not set CONFIG_MMC_UNSAFE_RESUME=y @@ -1652,7 +1579,8 @@ CONFIG_MMC_BLOCK_BOUNCE=y # # MMC/SD/SDIO Host Controller Drivers # -# CONFIG_MMC_SDHCI is not set +CONFIG_MMC_SDHCI=y +CONFIG_MMC_SDHCI_S3C=y # CONFIG_MMC_SPI is not set CONFIG_MMC_S3C=y # CONFIG_MEMSTICK is not set @@ -1664,7 +1592,7 @@ CONFIG_LEDS_CLASS=y # LED drivers # # CONFIG_LEDS_PCA9532 is not set -CONFIG_LEDS_GPIO=y +# CONFIG_LEDS_GPIO is not set # CONFIG_LEDS_PCA955X is not set CONFIG_LEDS_NEO1973_VIBRATOR=y # CONFIG_LEDS_LP5521 is not set @@ -1675,7 +1603,7 @@ CONFIG_LEDS_NEO1973_VIBRATOR=y CONFIG_LEDS_TRIGGERS=y CONFIG_LEDS_TRIGGER_TIMER=y # CONFIG_LEDS_TRIGGER_HEARTBEAT is not set -CONFIG_LEDS_TRIGGER_BACKLIGHT=y +# CONFIG_LEDS_TRIGGER_BACKLIGHT is not set # CONFIG_LEDS_TRIGGER_DEFAULT_ON is not set CONFIG_LEDS_TRIGGER_NETDEV=y CONFIG_RTC_LIB=y @@ -1741,22 +1669,14 @@ CONFIG_RTC_DRV_PCF50606=y # on-CPU RTC drivers # CONFIG_RTC_DRV_S3C=m -CONFIG_DMADEVICES=y - -# -# DMA Devices -# +# CONFIG_DMADEVICES is not set CONFIG_REGULATOR=y CONFIG_REGULATOR_DEBUG=y # CONFIG_REGULATOR_FIXED_VOLTAGE is not set # CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set # CONFIG_REGULATOR_BQ24022 is not set CONFIG_REGULATOR_PCF50606=y -CONFIG_UIO=y -CONFIG_UIO_PDRV=y -# CONFIG_UIO_PDRV_GENIRQ is not set -# CONFIG_UIO_SMX is not set -# CONFIG_UIO_SERCOS3 is not set +# CONFIG_UIO is not set CONFIG_STAGING=y # CONFIG_STAGING_EXCLUDE_BUILD is not set # CONFIG_MEILHAUS is not set @@ -1779,7 +1699,15 @@ CONFIG_ANDROID_RAM_CONSOLE_ENABLE_VERBOSE=y # CONFIG_ANDROID_RAM_CONSOLE_EARLY_INIT is not set CONFIG_ANDROID_TIMED_GPIO=y CONFIG_ANDROID_LOW_MEMORY_KILLER=y -# CONFIG_ANDROID_WAKELOCK is not set +CONFIG_ANDROID_HAS_WAKELOCK=y +CONFIG_ANDROID_HAS_EARLYSUSPEND=y +CONFIG_ANDROID_WAKELOCK=y +CONFIG_ANDROID_USER_WAKELOCK=y +CONFIG_ANDROID_EARLYSUSPEND=y +# CONFIG_NO_USER_SPACE_SCREEN_ACCESS_CONTROL is not set +CONFIG_ANDROID_CONSOLE_EARLYSUSPEND=y +# CONFIG_ANDROID_FB_EARLYSUSPEND is not set +CONFIG_ANDROID_POWER_ALARM=y CONFIG_ANDROID_PARANOID_NETWORK=y # @@ -1790,19 +1718,12 @@ CONFIG_EXT2_FS=y # CONFIG_EXT2_FS_XIP is not set CONFIG_EXT3_FS=y # CONFIG_EXT3_FS_XATTR is not set -CONFIG_EXT4_FS=y -CONFIG_EXT4DEV_COMPAT=y -CONFIG_EXT4_FS_XATTR=y -# CONFIG_EXT4_FS_POSIX_ACL is not set -CONFIG_EXT4_FS_SECURITY=y +# CONFIG_EXT4_FS is not set CONFIG_JBD=y # CONFIG_JBD_DEBUG is not set -CONFIG_JBD2=y -# CONFIG_JBD2_DEBUG is not set -CONFIG_FS_MBCACHE=y # CONFIG_REISERFS_FS is not set # CONFIG_JFS_FS is not set -# CONFIG_FS_POSIX_ACL is not set +CONFIG_FS_POSIX_ACL=y CONFIG_FILE_LOCKING=y # CONFIG_XFS_FS is not set # CONFIG_OCFS2_FS is not set @@ -1812,7 +1733,7 @@ CONFIG_INOTIFY=y CONFIG_INOTIFY_USER=y # CONFIG_QUOTA is not set # CONFIG_AUTOFS_FS is not set -# CONFIG_AUTOFS4_FS is not set +CONFIG_AUTOFS4_FS=m CONFIG_FUSE_FS=m # @@ -1821,7 +1742,8 @@ CONFIG_FUSE_FS=m CONFIG_ISO9660_FS=m CONFIG_JOLIET=y # CONFIG_ZISOFS is not set -# CONFIG_UDF_FS is not set +CONFIG_UDF_FS=m +CONFIG_UDF_NLS=y # # DOS/FAT/NT Filesystems @@ -1875,29 +1797,41 @@ CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3 CONFIG_ROMFS_FS=y # CONFIG_SYSV_FS is not set # CONFIG_UFS_FS is not set -# CONFIG_NETWORK_FILESYSTEMS is not set +CONFIG_NETWORK_FILESYSTEMS=y +CONFIG_NFS_FS=y +CONFIG_NFS_V3=y +# CONFIG_NFS_V3_ACL is not set +CONFIG_NFS_V4=y +CONFIG_ROOT_NFS=y +CONFIG_NFSD=m +CONFIG_NFSD_V3=y +# CONFIG_NFSD_V3_ACL is not set +CONFIG_NFSD_V4=y +CONFIG_LOCKD=y +CONFIG_LOCKD_V4=y +CONFIG_EXPORTFS=m +CONFIG_NFS_COMMON=y +CONFIG_SUNRPC=y +CONFIG_SUNRPC_GSS=y +# CONFIG_SUNRPC_REGISTER_V4 is not set +CONFIG_RPCSEC_GSS_KRB5=y +# CONFIG_RPCSEC_GSS_SPKM3 is not set +# CONFIG_SMB_FS is not set +CONFIG_CIFS=m +# CONFIG_CIFS_STATS is not set +CONFIG_CIFS_WEAK_PW_HASH=y +# CONFIG_CIFS_XATTR is not set +# CONFIG_CIFS_DEBUG2 is not set +# CONFIG_CIFS_EXPERIMENTAL is not set +# CONFIG_NCP_FS is not set +# CONFIG_CODA_FS is not set +# CONFIG_AFS_FS is not set # # Partition Types # -CONFIG_PARTITION_ADVANCED=y -# CONFIG_ACORN_PARTITION is not set -# CONFIG_OSF_PARTITION is not set -# CONFIG_AMIGA_PARTITION is not set -# CONFIG_ATARI_PARTITION is not set -# CONFIG_MAC_PARTITION is not set +# CONFIG_PARTITION_ADVANCED is not set CONFIG_MSDOS_PARTITION=y -# CONFIG_BSD_DISKLABEL is not set -# CONFIG_MINIX_SUBPARTITION is not set -# CONFIG_SOLARIS_X86_PARTITION is not set -# CONFIG_UNIXWARE_DISKLABEL is not set -# CONFIG_LDM_PARTITION is not set -# CONFIG_SGI_PARTITION is not set -# CONFIG_ULTRIX_PARTITION is not set -# CONFIG_SUN_PARTITION is not set -# CONFIG_KARMA_PARTITION is not set -# CONFIG_EFI_PARTITION is not set -# CONFIG_SYSV68_PARTITION is not set CONFIG_NLS=y CONFIG_NLS_DEFAULT="iso8859-1" CONFIG_NLS_CODEPAGE_437=y @@ -1943,7 +1877,7 @@ CONFIG_NLS_UTF8=m # # Kernel hacking # -CONFIG_PRINTK_TIME=y +# CONFIG_PRINTK_TIME is not set CONFIG_ENABLE_WARN_DEPRECATED=y CONFIG_ENABLE_MUST_CHECK=y CONFIG_FRAME_WARN=1024 @@ -1952,26 +1886,24 @@ CONFIG_MAGIC_SYSRQ=y CONFIG_DEBUG_FS=y # CONFIG_HEADERS_CHECK is not set CONFIG_DEBUG_KERNEL=y -CONFIG_DEBUG_SHIRQ=y +# CONFIG_DEBUG_SHIRQ is not set CONFIG_DETECT_SOFTLOCKUP=y -CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC=y -CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=1 -CONFIG_SCHED_DEBUG=y -CONFIG_SCHEDSTATS=y +# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set +CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0 +# CONFIG_SCHED_DEBUG is not set +# CONFIG_SCHEDSTATS is not set CONFIG_TIMER_STATS=y # CONFIG_DEBUG_OBJECTS is not set # CONFIG_DEBUG_SLAB is not set CONFIG_DEBUG_PREEMPT=y # CONFIG_DEBUG_RT_MUTEXES is not set # CONFIG_RT_MUTEX_TESTER is not set -CONFIG_DEBUG_SPINLOCK=y -CONFIG_DEBUG_MUTEXES=y -CONFIG_DEBUG_LOCK_ALLOC=y +# CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_DEBUG_MUTEXES is not set +# CONFIG_DEBUG_LOCK_ALLOC is not set # CONFIG_PROVE_LOCKING is not set -CONFIG_LOCKDEP=y -CONFIG_LOCK_STAT=y -CONFIG_DEBUG_LOCKDEP=y -CONFIG_DEBUG_SPINLOCK_SLEEP=y +# CONFIG_LOCK_STAT is not set +# CONFIG_DEBUG_SPINLOCK_SLEEP is not set # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set CONFIG_STACKTRACE=y # CONFIG_DEBUG_KOBJECT is not set @@ -1981,18 +1913,21 @@ CONFIG_DEBUG_INFO=y # CONFIG_DEBUG_WRITECOUNT is not set CONFIG_DEBUG_MEMORY_INIT=y # CONFIG_DEBUG_LIST is not set -CONFIG_DEBUG_SG=y +# CONFIG_DEBUG_SG is not set # CONFIG_DEBUG_NOTIFIERS is not set CONFIG_FRAME_POINTER=y # CONFIG_BOOT_PRINTK_DELAY is not set # CONFIG_RCU_TORTURE_TEST is not set -CONFIG_RCU_CPU_STALL_DETECTOR=y +# CONFIG_RCU_CPU_STALL_DETECTOR is not set # CONFIG_BACKTRACE_SELF_TEST is not set # CONFIG_DEBUG_BLOCK_EXT_DEVT is not set # CONFIG_FAULT_INJECTION is not set -CONFIG_LATENCYTOP=y -CONFIG_SYSCTL_SYSCALL_CHECK=y +# CONFIG_LATENCYTOP is not set +# CONFIG_SYSCTL_SYSCALL_CHECK is not set +CONFIG_NOP_TRACER=y CONFIG_HAVE_FUNCTION_TRACER=y +CONFIG_RING_BUFFER=y +CONFIG_TRACING=y # # Tracers @@ -2003,8 +1938,9 @@ CONFIG_HAVE_FUNCTION_TRACER=y # CONFIG_BOOT_TRACER is not set # CONFIG_TRACE_BRANCH_PROFILING is not set # CONFIG_STACK_TRACER is not set +# CONFIG_FTRACE_STARTUP_TEST is not set # CONFIG_FIND_IRQ_BLOCKERS is not set -CONFIG_DYNAMIC_PRINTK_DEBUG=y +# CONFIG_DYNAMIC_PRINTK_DEBUG is not set # CONFIG_SAMPLES is not set CONFIG_HAVE_ARCH_KGDB=y # CONFIG_KGDB is not set @@ -2019,14 +1955,14 @@ CONFIG_DEBUG_S3C_UART=0 # # CONFIG_KEYS is not set # CONFIG_SECURITY is not set -CONFIG_SECURITYFS=y +# CONFIG_SECURITYFS is not set # CONFIG_SECURITY_FILE_CAPABILITIES is not set CONFIG_CRYPTO=y # # Crypto core or helper # -CONFIG_CRYPTO_FIPS=y +# CONFIG_CRYPTO_FIPS is not set CONFIG_CRYPTO_ALGAPI=y CONFIG_CRYPTO_ALGAPI2=y CONFIG_CRYPTO_AEAD=m @@ -2035,7 +1971,6 @@ CONFIG_CRYPTO_BLKCIPHER=y CONFIG_CRYPTO_BLKCIPHER2=y CONFIG_CRYPTO_HASH=y CONFIG_CRYPTO_HASH2=y -CONFIG_CRYPTO_RNG=y CONFIG_CRYPTO_RNG2=y CONFIG_CRYPTO_MANAGER=y CONFIG_CRYPTO_MANAGER2=y @@ -2058,7 +1993,7 @@ CONFIG_CRYPTO_TEST=m CONFIG_CRYPTO_CBC=y # CONFIG_CRYPTO_CTR is not set # CONFIG_CRYPTO_CTS is not set -CONFIG_CRYPTO_ECB=y +CONFIG_CRYPTO_ECB=m CONFIG_CRYPTO_LRW=m CONFIG_CRYPTO_PCBC=m # CONFIG_CRYPTO_XTS is not set @@ -2080,7 +2015,7 @@ CONFIG_CRYPTO_MICHAEL_MIC=m # CONFIG_CRYPTO_RMD160 is not set # CONFIG_CRYPTO_RMD256 is not set # CONFIG_CRYPTO_RMD320 is not set -CONFIG_CRYPTO_SHA1=y +CONFIG_CRYPTO_SHA1=m CONFIG_CRYPTO_SHA256=m CONFIG_CRYPTO_SHA512=m CONFIG_CRYPTO_TGR192=m @@ -2089,9 +2024,9 @@ CONFIG_CRYPTO_WP512=m # # Ciphers # -CONFIG_CRYPTO_AES=y +CONFIG_CRYPTO_AES=m CONFIG_CRYPTO_ANUBIS=m -CONFIG_CRYPTO_ARC4=y +CONFIG_CRYPTO_ARC4=m CONFIG_CRYPTO_BLOWFISH=m CONFIG_CRYPTO_CAMELLIA=m CONFIG_CRYPTO_CAST5=m @@ -2115,7 +2050,7 @@ CONFIG_CRYPTO_DEFLATE=m # # Random Number Generation # -CONFIG_CRYPTO_ANSI_CPRNG=y +# CONFIG_CRYPTO_ANSI_CPRNG is not set CONFIG_CRYPTO_HW=y # @@ -2123,10 +2058,10 @@ CONFIG_CRYPTO_HW=y # CONFIG_BITREVERSE=y CONFIG_GENERIC_FIND_LAST_BIT=y -CONFIG_CRC_CCITT=y -CONFIG_CRC16=y -CONFIG_CRC_T10DIF=y -# CONFIG_CRC_ITU_T is not set +CONFIG_CRC_CCITT=m +CONFIG_CRC16=m +# CONFIG_CRC_T10DIF is not set +CONFIG_CRC_ITU_T=m CONFIG_CRC32=y # CONFIG_CRC7 is not set CONFIG_LIBCRC32C=m -- cgit v1.2.3 From aa2dbc74bed8cf60e591c654ba1882011b9a8ece Mon Sep 17 00:00:00 2001 From: Nelson Castillo Date: Sun, 19 Apr 2009 11:16:56 -0500 Subject: Revert "Fixed the LCM driver state transition delay and pixel clock issue" This reverts commit bd4b7e8e84ab43a13a4620b001d52d373c2122b3 which brought WSOD back for some devices. It was reported that the problem does not happen with Qi and it seem it is good news. See: https://docs.openmoko.org/trac/ticket/2274 Conflicts: drivers/video/display/jbt6k74.c --- drivers/mfd/glamo/glamo-fb.c | 127 ++++++++++++++++--------------------- drivers/video/display/jbt6k74.c | 136 ++++++++++++++++++---------------------- 2 files changed, 114 insertions(+), 149 deletions(-) diff --git a/drivers/mfd/glamo/glamo-fb.c b/drivers/mfd/glamo/glamo-fb.c index 5491dadbf8a..4eb81a508e5 100644 --- a/drivers/mfd/glamo/glamo-fb.c +++ b/drivers/mfd/glamo/glamo-fb.c @@ -37,9 +37,9 @@ #include #include #include -#include -#include +#include +#include #include #ifdef CONFIG_PM @@ -76,7 +76,6 @@ struct glamofb_handle { u_int32_t pseudo_pal[16]; spinlock_t lock_cmd; int angle; /* Current rotation angle */ - int blank_mode; }; /* 'sibling' spi device for lcm init */ @@ -90,7 +89,7 @@ static int reg_read(struct glamofb_handle *glamo, { int i = 0; - for (i = 0; i != 2; i++) + for (i = 0; i != 2; i ++) nop(); return readw(glamo->base + reg); @@ -101,7 +100,7 @@ static void reg_write(struct glamofb_handle *glamo, { int i = 0; - for (i = 0; i != 2; i++) + for (i = 0; i != 2; i ++) nop(); writew(val, glamo->base + reg); @@ -142,8 +141,7 @@ static int glamofb_run_script(struct glamofb_handle *glamo, int i; if (glamo->mach_info->glamo->suspending) { - dev_err(&glamo->mach_info->glamo->pdev->dev, - "IGNORING glamofb_run_script while " + dev_err(&glamo->mach_info->glamo->pdev->dev, "IGNORING glamofb_run_script while " "suspended\n"); return -EBUSY; } @@ -168,8 +166,7 @@ static int glamofb_check_var(struct fb_var_screeninfo *var, struct glamofb_handle *glamo = info->par; if (glamo->mach_info->glamo->suspending) { - dev_err(&glamo->mach_info->glamo->pdev->dev, - "IGNORING glamofb_check_var while " + dev_err(&glamo->mach_info->glamo->pdev->dev, "IGNORING glamofb_check_var while " "suspended\n"); return -EBUSY; } @@ -266,33 +263,32 @@ static void __rotate_lcd(struct glamofb_handle *glamo, __u32 rotation) int glamo_rot; if (glamo->mach_info->glamo->suspending) { - dev_err(&glamo->mach_info->glamo->pdev->dev, - "IGNORING rotate_lcd while " + dev_err(&glamo->mach_info->glamo->pdev->dev, "IGNORING rotate_lcd while " "suspended\n"); return; } switch (rotation) { - case FB_ROTATE_UR: - glamo_rot = GLAMO_LCD_ROT_MODE_0; - glamo->angle = 0; - break; - case FB_ROTATE_CW: - glamo_rot = GLAMO_LCD_ROT_MODE_90; - glamo->angle = 90; - break; - case FB_ROTATE_UD: - glamo_rot = GLAMO_LCD_ROT_MODE_180; - glamo->angle = 180; - break; - case FB_ROTATE_CCW: - glamo_rot = GLAMO_LCD_ROT_MODE_270; - glamo->angle = 270; - break; - default: - glamo->angle = 0; - glamo_rot = GLAMO_LCD_ROT_MODE_0; - break; + case FB_ROTATE_UR: + glamo_rot = GLAMO_LCD_ROT_MODE_0; + glamo->angle = 0; + break; + case FB_ROTATE_CW: + glamo_rot = GLAMO_LCD_ROT_MODE_90; + glamo->angle = 90; + break; + case FB_ROTATE_UD: + glamo_rot = GLAMO_LCD_ROT_MODE_180; + glamo->angle = 180; + break; + case FB_ROTATE_CCW: + glamo_rot = GLAMO_LCD_ROT_MODE_270; + glamo->angle = 270; + break; + default: + glamo->angle = 0; + glamo_rot = GLAMO_LCD_ROT_MODE_0; + break; } reg_set_bit_mask(glamo, @@ -302,7 +298,7 @@ static void __rotate_lcd(struct glamofb_handle *glamo, __u32 rotation) reg_set_bit_mask(glamo, GLAMO_REG_LCD_MODE1, GLAMO_LCD_MODE1_ROTATE_EN, - (glamo_rot != GLAMO_LCD_ROT_MODE_0) ? + (glamo_rot != GLAMO_LCD_ROT_MODE_0)? GLAMO_LCD_MODE1_ROTATE_EN : 0); } @@ -317,8 +313,7 @@ static void glamofb_update_lcd_controller(struct glamofb_handle *glamo, return; if (glamo->mach_info->glamo->suspending) { - dev_err(&glamo->mach_info->glamo->pdev->dev, - "IGNORING glamofb_update_lcd_controller while " + dev_err(&glamo->mach_info->glamo->pdev->dev, "IGNORING glamofb_update_lcd_controller while " "suspended\n"); return; } @@ -336,10 +331,10 @@ static void glamofb_update_lcd_controller(struct glamofb_handle *glamo, var->pixclock); if (glamo->angle == 90 || glamo->angle == 270) { - /* + /* * But if we are going back to portrait mode from here, - * we get inverted values from Xglamo - */ + * we get inverted values from Xglamo + */ if (!(var->rotate == FB_ROTATE_UR || var->rotate == FB_ROTATE_UD)) { width = var->yres; @@ -359,8 +354,7 @@ static void glamofb_update_lcd_controller(struct glamofb_handle *glamo, /* We don't need to set xres and yres in this particular case * because Xglamo does it for us */ if (!(glamo->angle == 90 || glamo->angle == 270)) { - var->xres = width; - var->yres = height; + var->xres = width;var->yres = height; } var->xres_virtual = width; @@ -433,8 +427,7 @@ out_unlock: spin_unlock_irqrestore(&glamo->lock_cmd, flags); } -static int glamofb_pan_display(struct fb_var_screeninfo *var, - struct fb_info *info) +static int glamofb_pan_display(struct fb_var_screeninfo *var, struct fb_info *info) { struct glamofb_handle *glamo = info->par; u_int16_t page = var->yoffset / glamo->mach_info->yres.defval; @@ -449,8 +442,7 @@ static int glamofb_set_par(struct fb_info *info) struct fb_var_screeninfo *var = &info->var; if (glamo->mach_info->glamo->suspending) { - dev_err(&glamo->mach_info->glamo->pdev->dev, - "IGNORING glamofb_set_par while " + dev_err(&glamo->mach_info->glamo->pdev->dev, "IGNORING glamofb_set_par while " "suspended\n"); return -EBUSY; } @@ -496,29 +488,17 @@ static int glamofb_blank(int blank_mode, struct fb_info *info) * we should already switch off pixel clock here */ break; case FB_BLANK_POWERDOWN: - /* Simulating FB_BLANK_NORMAL allow turning off backlight */ - if (gfb->blank_mode != FB_BLANK_NORMAL) - notify_blank(info, FB_BLANK_NORMAL); - - /* LCM need notification before pixel clock is stopped */ - notify_blank(info, blank_mode); - /* disable the pixel clock */ glamo_engine_clkreg_set(gcore, GLAMO_ENGINE_LCD, GLAMO_CLOCK_LCD_EN_DCLK, 0); - gfb->blank_mode = blank_mode; break; case FB_BLANK_UNBLANK: case FB_BLANK_NORMAL: - /* enable the pixel clock if off */ - if (gfb->blank_mode == FB_BLANK_POWERDOWN) - glamo_engine_clkreg_set(gcore, - GLAMO_ENGINE_LCD, + /* enable the pixel clock */ + glamo_engine_clkreg_set(gcore, GLAMO_ENGINE_LCD, GLAMO_CLOCK_LCD_EN_DCLK, GLAMO_CLOCK_LCD_EN_DCLK); - notify_blank(info, blank_mode); - gfb->blank_mode = blank_mode; break; } @@ -544,8 +524,7 @@ static int glamofb_setcolreg(unsigned regno, unsigned int val; if (glamo->mach_info->glamo->suspending) { - dev_err(&glamo->mach_info->glamo->pdev->dev, - "IGNORING glamofb_set_par while " + dev_err(&glamo->mach_info->glamo->pdev->dev, "IGNORING glamofb_set_par while " "suspended\n"); return -EBUSY; } @@ -713,8 +692,7 @@ int glamofb_cmd_mode(struct glamofb_handle *gfb, int on) int timeout = 2000000; if (gfb->mach_info->glamo->suspending) { - dev_err(&gfb->mach_info->glamo->pdev->dev, - "IGNORING glamofb_cmd_mode while " + dev_err(&gfb->mach_info->glamo->pdev->dev, "IGNORING glamofb_cmd_mode while " "suspended\n"); return -EBUSY; } @@ -722,7 +700,7 @@ int glamofb_cmd_mode(struct glamofb_handle *gfb, int on) dev_dbg(gfb->dev, "glamofb_cmd_mode(gfb=%p, on=%d)\n", gfb, on); if (on) { dev_dbg(gfb->dev, "%s: waiting for cmdq empty: ", - __func__); + __FUNCTION__); while ((!glamofb_cmdq_empty(gfb)) && (timeout--)) /* yield() */; if (timeout < 0) { @@ -777,13 +755,12 @@ int glamofb_cmd_write(struct glamofb_handle *gfb, u_int16_t val) int timeout = 200000; if (gfb->mach_info->glamo->suspending) { - dev_err(&gfb->mach_info->glamo->pdev->dev, - "IGNORING glamofb_cmd_write while " + dev_err(&gfb->mach_info->glamo->pdev->dev, "IGNORING glamofb_cmd_write while " "suspended\n"); return -EBUSY; } - dev_dbg(gfb->dev, "%s: waiting for cmdq empty\n", __func__); + dev_dbg(gfb->dev, "%s: waiting for cmdq empty\n", __FUNCTION__); while ((!glamofb_cmdq_empty(gfb)) && (timeout--)) yield(); if (timeout < 0) { @@ -845,7 +822,6 @@ static int __init glamofb_probe(struct platform_device *pdev) glamofb->dev = &pdev->dev; glamofb->angle = 0; - glamofb->blank_mode = FB_BLANK_POWERDOWN; strcpy(fbinfo->fix.id, "SMedia Glamo"); @@ -1000,35 +976,38 @@ static int glamofb_suspend(struct platform_device *pdev, pm_message_t state) struct glamofb_handle *gfb = platform_get_drvdata(pdev); /* we need to stop anything touching our framebuffer */ +// fb_blank(gfb->fb, FB_BLANK_NORMAL); fb_set_suspend(gfb->fb, 1); /* seriously -- nobody is allowed to touch glamo memory when we * are suspended or we lock on nWAIT */ - /* iounmap(gfb->fb->screen_base); */ +// iounmap(gfb->fb->screen_base); return 0; } static int glamofb_resume(struct platform_device *pdev) { - struct glamofb_handle *gfb = platform_get_drvdata(pdev); + struct glamofb_handle *glamofb = platform_get_drvdata(pdev); struct glamofb_platform_data *mach_info = pdev->dev.platform_data; /* OK let's allow framebuffer ops again */ - /* gfb->fb->screen_base = ioremap(gfb->fb_res->start, - RESSIZE(gfb->fb_res)); */ +// gfb->fb->screen_base = ioremap(gfb->fb_res->start, +// RESSIZE(gfb->fb_res)); glamo_engine_enable(mach_info->glamo, GLAMO_ENGINE_LCD); glamo_engine_reset(mach_info->glamo, GLAMO_ENGINE_LCD); printk(KERN_ERR"spin_lock_init\n"); - spin_lock_init(&gfb->lock_cmd); - glamofb_init_regs(gfb); + spin_lock_init(&glamofb->lock_cmd); + glamofb_init_regs(glamofb); #ifdef CONFIG_MFD_GLAMO_HWACCEL - glamofb_cursor_onoff(gfb, 1); + glamofb_cursor_onoff(glamofb, 1); #endif - fb_set_suspend(gfb->fb, 0); + + fb_set_suspend(glamofb->fb, 0); +// fb_blank(gfb->fb, FB_BLANK_UNBLANK); return 0; } diff --git a/drivers/video/display/jbt6k74.c b/drivers/video/display/jbt6k74.c index 5d7a6519de9..0307ed5318f 100644 --- a/drivers/video/display/jbt6k74.c +++ b/drivers/video/display/jbt6k74.c @@ -31,7 +31,6 @@ #include #include #include -#include enum jbt_register { JBT_REG_SLEEP_IN = 0x10, @@ -118,18 +117,12 @@ struct jbt_info { struct notifier_block fb_notif; u16 tx_buf[8]; u16 reg_cache[0xEE]; - struct timespec last_sleep; + int have_resumed; }; #define JBT_COMMAND 0x000 #define JBT_DATA 0x100 -static inline unsigned int timespec_sub_ms(struct timespec lhs, - struct timespec rhs) -{ - struct timespec ts = timespec_sub(lhs, rhs); - return (ts.tv_sec * MSEC_PER_SEC) + (ts.tv_nsec / NSEC_PER_MSEC); -} static int jbt_reg_write_nodata(struct jbt_info *jbt, u8 reg) { @@ -186,7 +179,7 @@ static int jbt_init_regs(struct jbt_info *jbt) { int rc; - dev_dbg(&jbt->spi_dev->dev, "entering %cVGA mode\n", + dev_dbg(&jbt->spi_dev->dev, "entering %cVGA mode\n", jbt->normal_state == JBT_STATE_QVGA_NORMAL ? 'Q' : ' '); rc = jbt_reg_write(jbt, JBT_REG_DISPLAY_MODE1, 0x01); @@ -275,25 +268,36 @@ static int sleep_to_normal(struct jbt_info *jbt) { int rc; - /* Make sure we are 120 ms after SLEEP_OUT */ - unsigned int sleep_time = timespec_sub_ms(current_kernel_time(), - jbt->last_sleep); - if (sleep_time < 120) - mdelay(120 - sleep_time); + /* RGB I/F on, RAM wirte off, QVGA through, SIGCON enable */ + rc = jbt_reg_write(jbt, JBT_REG_DISPLAY_MODE, 0x80); - if (jbt->normal_state == JBT_STATE_NORMAL) { - /* RGB I/F on, RAM wirte off, QVGA through, SIGCON enable */ - rc = jbt_reg_write(jbt, JBT_REG_DISPLAY_MODE, 0x80); + /* Quad mode off */ + rc |= jbt_reg_write(jbt, JBT_REG_QUAD_RATE, 0x00); - /* Quad mode off */ - rc |= jbt_reg_write(jbt, JBT_REG_QUAD_RATE, 0x00); - } else { - /* RGB I/F on, RAM wirte off, QVGA through, SIGCON enable */ - rc = jbt_reg_write(jbt, JBT_REG_DISPLAY_MODE, 0x81); + /* AVDD on, XVDD on */ + rc |= jbt_reg_write(jbt, JBT_REG_POWER_ON_OFF, 0x16); - /* Quad mode on */ - rc |= jbt_reg_write(jbt, JBT_REG_QUAD_RATE, 0x22); - } + /* Output control */ + rc |= jbt_reg_write16(jbt, JBT_REG_OUTPUT_CONTROL, 0xfff9); + + /* Turn on display */ + rc |= jbt_reg_write_nodata(jbt, JBT_REG_DISPLAY_ON); + + /* Sleep mode off */ + rc |= jbt_reg_write_nodata(jbt, JBT_REG_SLEEP_OUT); + + return rc ? -EIO : 0; +} + +static int sleep_to_qvga_normal(struct jbt_info *jbt) +{ + int rc; + + /* RGB I/F on, RAM wirte off, QVGA through, SIGCON enable */ + rc = jbt_reg_write(jbt, JBT_REG_DISPLAY_MODE, 0x81); + + /* Quad mode on */ + rc |= jbt_reg_write(jbt, JBT_REG_QUAD_RATE, 0x22); /* AVDD on, XVDD on */ rc |= jbt_reg_write(jbt, JBT_REG_POWER_ON_OFF, 0x16); @@ -306,10 +310,6 @@ static int sleep_to_normal(struct jbt_info *jbt) /* Sleep mode off */ rc |= jbt_reg_write_nodata(jbt, JBT_REG_SLEEP_OUT); - jbt->last_sleep = current_kernel_time(); - - /* Allow the booster and display controller to restart stably */ - mdelay(5); return rc ? -EIO : 0; } @@ -318,19 +318,9 @@ static int normal_to_sleep(struct jbt_info *jbt) { int rc; - /* Make sure we are 120 ms after SLEEP_OUT */ - unsigned int sleep_time = timespec_sub_ms(current_kernel_time(), - jbt->last_sleep); - if (sleep_time < 120) - mdelay(120 - sleep_time); - rc = jbt_reg_write_nodata(jbt, JBT_REG_DISPLAY_OFF); rc |= jbt_reg_write16(jbt, JBT_REG_OUTPUT_CONTROL, 0x8002); rc |= jbt_reg_write_nodata(jbt, JBT_REG_SLEEP_IN); - jbt->last_sleep = current_kernel_time(); - - /* Allow the internal circuits to stop automatically */ - mdelay(5); return rc ? -EIO : 0; } @@ -345,9 +335,8 @@ int jbt6k74_enter_state(struct jbt_info *jbt, enum jbt_state new_state) { int rc = -EINVAL; - dev_dbg(&jbt->spi_dev->dev, "entering (old_state=%s, new_state=%s)\n", - jbt_state_names[jbt->state], - jbt_state_names[new_state]); + dev_dbg(&jbt->spi_dev->dev, "entering (old_state=%s, " + "new_state=%s)\n", jbt_state_names[jbt->state], jbt_state_names[new_state]); mutex_lock(&jbt->lock); @@ -374,7 +363,7 @@ int jbt6k74_enter_state(struct jbt_info *jbt, enum jbt_state new_state) /* first transition into sleep */ rc = standby_to_sleep(jbt); /* then transition into normal */ - rc |= sleep_to_normal(jbt); + rc |= sleep_to_qvga_normal(jbt); break; } break; @@ -387,9 +376,11 @@ int jbt6k74_enter_state(struct jbt_info *jbt, enum jbt_state new_state) rc = sleep_to_standby(jbt); break; case JBT_STATE_NORMAL: - case JBT_STATE_QVGA_NORMAL: rc = sleep_to_normal(jbt); break; + case JBT_STATE_QVGA_NORMAL: + rc = sleep_to_qvga_normal(jbt); + break; } break; case JBT_STATE_NORMAL: @@ -414,7 +405,7 @@ int jbt6k74_enter_state(struct jbt_info *jbt, enum jbt_state new_state) /* third transition into sleep */ rc |= standby_to_sleep(jbt); /* fourth transition into normal */ - rc |= sleep_to_normal(jbt); + rc |= sleep_to_qvga_normal(jbt); break; } break; @@ -445,13 +436,12 @@ int jbt6k74_enter_state(struct jbt_info *jbt, enum jbt_state new_state) } break; } - + if (rc == 0) jbt->state = new_state; else - dev_err(&jbt->spi_dev->dev, "Failed enter state '%s')\n", - jbt_state_names[new_state]); - + dev_err(&jbt->spi_dev->dev, "Failed enter state '%s')\n", jbt_state_names[new_state]); + mutex_unlock(&jbt->lock); return rc; @@ -535,27 +525,18 @@ static ssize_t gamma_write(struct device *dev, struct device_attribute *attr, static ssize_t reset_write(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { - int rc; struct jbt_info *jbt = dev_get_drvdata(dev); - struct jbt6k74_platform_data *pdata = jbt->spi_dev->dev.platform_data; + struct jbt6k74_platform_data *jbt6k74_pdata = jbt->spi_dev->dev.platform_data; dev_info(dev, "reset\n"); - mutex_lock(&jbt->lock); - - jbt->state = JBT_STATE_DEEP_STANDBY; + jbt6k74_enter_state(jbt, JBT_STATE_DEEP_STANDBY); /* hard reset the jbt6k74 */ - (pdata->reset)(0, 0); + mutex_lock(&jbt->lock); + (jbt6k74_pdata->reset)(0, 0); mdelay(1); - (pdata->reset)(0, 1); - mdelay(120); - - rc = jbt_reg_write_nodata(jbt, 0x01); - if (rc < 0) - dev_err(&jbt->spi_dev->dev, "cannot soft reset\n"); - mdelay(120); - + (jbt6k74_pdata->reset)(0, 1); mutex_unlock(&jbt->lock); jbt6k74_enter_state(jbt, jbt->normal_state); @@ -599,22 +580,26 @@ static int fb_notifier_callback(struct notifier_block *self, return 0; fb_blank = *(int *)evdata->data; + switch (fb_blank) { case FB_BLANK_UNBLANK: - dev_dbg(&jbt->spi_dev->dev, "unblank\n"); + dev_info(&jbt->spi_dev->dev, "**** jbt6k74 unblank\n"); jbt6k74_enter_state(jbt, jbt->normal_state); break; case FB_BLANK_NORMAL: - dev_dbg(&jbt->spi_dev->dev, "blank\n"); + dev_info(&jbt->spi_dev->dev, "**** jbt6k74 normal\n"); break; case FB_BLANK_VSYNC_SUSPEND: - dev_dbg(&jbt->spi_dev->dev, "vsync suspend\n"); + dev_info(&jbt->spi_dev->dev, "**** jbt6k74 vsync suspend\n"); break; case FB_BLANK_HSYNC_SUSPEND: - dev_dbg(&jbt->spi_dev->dev, "hsync suspend\n"); + dev_info(&jbt->spi_dev->dev, "**** jbt6k74 hsync suspend\n"); break; case FB_BLANK_POWERDOWN: - dev_dbg(&jbt->spi_dev->dev, "powerdown\n"); + dev_info(&jbt->spi_dev->dev, "**** jbt6k74 powerdown\n"); + /* FIXME DEEP STANDBY wihtout suspend causes WSOD at cold + * temperature on certain devices. */ + /*jbt6k74_enter_state(jbt, JBT_STATE_DEEP_STANDBY);*/ jbt6k74_enter_state(jbt, JBT_STATE_SLEEP); break; } @@ -628,7 +613,7 @@ static int __devinit jbt_probe(struct spi_device *spi) { int rc; struct jbt_info *jbt; - struct jbt6k74_platform_data *pdata = spi->dev.platform_data; + struct jbt6k74_platform_data *jbt6k74_pdata = spi->dev.platform_data; /* the controller doesn't have a MISO pin; we can't do detection */ @@ -649,7 +634,6 @@ static int __devinit jbt_probe(struct spi_device *spi) jbt->spi_dev = spi; jbt->normal_state = JBT_STATE_NORMAL; jbt->state = JBT_STATE_DEEP_STANDBY; - jbt->last_sleep = current_kernel_time(); mutex_init(&jbt->lock); dev_set_drvdata(&spi->dev, jbt); @@ -673,8 +657,8 @@ static int __devinit jbt_probe(struct spi_device *spi) goto err_sysfs; } - if (pdata->probe_completed) - (pdata->probe_completed)(&spi->dev); + if (jbt6k74_pdata->probe_completed) + (jbt6k74_pdata->probe_completed)(&spi->dev); return 0; @@ -712,6 +696,8 @@ static int jbt_suspend(struct spi_device *spi, pm_message_t state) jbt6k74_enter_state(jbt, JBT_STATE_DEEP_STANDBY); + jbt->have_resumed = 0; + dev_info(&spi->dev, "suspended\n"); return 0; @@ -720,12 +706,12 @@ static int jbt_suspend(struct spi_device *spi, pm_message_t state) int jbt6k74_resume(struct spi_device *spi) { struct jbt_info *jbt = dev_get_drvdata(&spi->dev); - struct jbt6k74_platform_data *pdata = spi->dev.platform_data; + struct jbt6k74_platform_data *jbt6k74_pdata = spi->dev.platform_data; jbt6k74_enter_state(jbt, jbt->normal_state); - if (pdata->resuming) - (pdata->resuming)(0); + if (jbt6k74_pdata->resuming) + (jbt6k74_pdata->resuming)(0); dev_info(&spi->dev, "resumed\n"); -- cgit v1.2.3 From 08c73c0533ec33dba5676d1124634dd1654aef8b Mon Sep 17 00:00:00 2001 From: Nelson Castillo Date: Sun, 19 Apr 2009 14:41:33 -0500 Subject: Revert "Revert "Fixed the LCM driver state transition delay and pixel clock issue"" This reverts commit aa2dbc74bed8cf60e591c654ba1882011b9a8ece. Reverting the revert. Sorry for the noise. Check: http://lists.openmoko.org/pipermail/openmoko-kernel/2009-April/010023.html --- drivers/mfd/glamo/glamo-fb.c | 127 +++++++++++++++++++++---------------- drivers/video/display/jbt6k74.c | 136 ++++++++++++++++++++++------------------ 2 files changed, 149 insertions(+), 114 deletions(-) diff --git a/drivers/mfd/glamo/glamo-fb.c b/drivers/mfd/glamo/glamo-fb.c index 4eb81a508e5..5491dadbf8a 100644 --- a/drivers/mfd/glamo/glamo-fb.c +++ b/drivers/mfd/glamo/glamo-fb.c @@ -37,9 +37,9 @@ #include #include #include +#include +#include -#include -#include #include #ifdef CONFIG_PM @@ -76,6 +76,7 @@ struct glamofb_handle { u_int32_t pseudo_pal[16]; spinlock_t lock_cmd; int angle; /* Current rotation angle */ + int blank_mode; }; /* 'sibling' spi device for lcm init */ @@ -89,7 +90,7 @@ static int reg_read(struct glamofb_handle *glamo, { int i = 0; - for (i = 0; i != 2; i ++) + for (i = 0; i != 2; i++) nop(); return readw(glamo->base + reg); @@ -100,7 +101,7 @@ static void reg_write(struct glamofb_handle *glamo, { int i = 0; - for (i = 0; i != 2; i ++) + for (i = 0; i != 2; i++) nop(); writew(val, glamo->base + reg); @@ -141,7 +142,8 @@ static int glamofb_run_script(struct glamofb_handle *glamo, int i; if (glamo->mach_info->glamo->suspending) { - dev_err(&glamo->mach_info->glamo->pdev->dev, "IGNORING glamofb_run_script while " + dev_err(&glamo->mach_info->glamo->pdev->dev, + "IGNORING glamofb_run_script while " "suspended\n"); return -EBUSY; } @@ -166,7 +168,8 @@ static int glamofb_check_var(struct fb_var_screeninfo *var, struct glamofb_handle *glamo = info->par; if (glamo->mach_info->glamo->suspending) { - dev_err(&glamo->mach_info->glamo->pdev->dev, "IGNORING glamofb_check_var while " + dev_err(&glamo->mach_info->glamo->pdev->dev, + "IGNORING glamofb_check_var while " "suspended\n"); return -EBUSY; } @@ -263,32 +266,33 @@ static void __rotate_lcd(struct glamofb_handle *glamo, __u32 rotation) int glamo_rot; if (glamo->mach_info->glamo->suspending) { - dev_err(&glamo->mach_info->glamo->pdev->dev, "IGNORING rotate_lcd while " + dev_err(&glamo->mach_info->glamo->pdev->dev, + "IGNORING rotate_lcd while " "suspended\n"); return; } switch (rotation) { - case FB_ROTATE_UR: - glamo_rot = GLAMO_LCD_ROT_MODE_0; - glamo->angle = 0; - break; - case FB_ROTATE_CW: - glamo_rot = GLAMO_LCD_ROT_MODE_90; - glamo->angle = 90; - break; - case FB_ROTATE_UD: - glamo_rot = GLAMO_LCD_ROT_MODE_180; - glamo->angle = 180; - break; - case FB_ROTATE_CCW: - glamo_rot = GLAMO_LCD_ROT_MODE_270; - glamo->angle = 270; - break; - default: - glamo->angle = 0; - glamo_rot = GLAMO_LCD_ROT_MODE_0; - break; + case FB_ROTATE_UR: + glamo_rot = GLAMO_LCD_ROT_MODE_0; + glamo->angle = 0; + break; + case FB_ROTATE_CW: + glamo_rot = GLAMO_LCD_ROT_MODE_90; + glamo->angle = 90; + break; + case FB_ROTATE_UD: + glamo_rot = GLAMO_LCD_ROT_MODE_180; + glamo->angle = 180; + break; + case FB_ROTATE_CCW: + glamo_rot = GLAMO_LCD_ROT_MODE_270; + glamo->angle = 270; + break; + default: + glamo->angle = 0; + glamo_rot = GLAMO_LCD_ROT_MODE_0; + break; } reg_set_bit_mask(glamo, @@ -298,7 +302,7 @@ static void __rotate_lcd(struct glamofb_handle *glamo, __u32 rotation) reg_set_bit_mask(glamo, GLAMO_REG_LCD_MODE1, GLAMO_LCD_MODE1_ROTATE_EN, - (glamo_rot != GLAMO_LCD_ROT_MODE_0)? + (glamo_rot != GLAMO_LCD_ROT_MODE_0) ? GLAMO_LCD_MODE1_ROTATE_EN : 0); } @@ -313,7 +317,8 @@ static void glamofb_update_lcd_controller(struct glamofb_handle *glamo, return; if (glamo->mach_info->glamo->suspending) { - dev_err(&glamo->mach_info->glamo->pdev->dev, "IGNORING glamofb_update_lcd_controller while " + dev_err(&glamo->mach_info->glamo->pdev->dev, + "IGNORING glamofb_update_lcd_controller while " "suspended\n"); return; } @@ -331,10 +336,10 @@ static void glamofb_update_lcd_controller(struct glamofb_handle *glamo, var->pixclock); if (glamo->angle == 90 || glamo->angle == 270) { - /* + /* * But if we are going back to portrait mode from here, - * we get inverted values from Xglamo - */ + * we get inverted values from Xglamo + */ if (!(var->rotate == FB_ROTATE_UR || var->rotate == FB_ROTATE_UD)) { width = var->yres; @@ -354,7 +359,8 @@ static void glamofb_update_lcd_controller(struct glamofb_handle *glamo, /* We don't need to set xres and yres in this particular case * because Xglamo does it for us */ if (!(glamo->angle == 90 || glamo->angle == 270)) { - var->xres = width;var->yres = height; + var->xres = width; + var->yres = height; } var->xres_virtual = width; @@ -427,7 +433,8 @@ out_unlock: spin_unlock_irqrestore(&glamo->lock_cmd, flags); } -static int glamofb_pan_display(struct fb_var_screeninfo *var, struct fb_info *info) +static int glamofb_pan_display(struct fb_var_screeninfo *var, + struct fb_info *info) { struct glamofb_handle *glamo = info->par; u_int16_t page = var->yoffset / glamo->mach_info->yres.defval; @@ -442,7 +449,8 @@ static int glamofb_set_par(struct fb_info *info) struct fb_var_screeninfo *var = &info->var; if (glamo->mach_info->glamo->suspending) { - dev_err(&glamo->mach_info->glamo->pdev->dev, "IGNORING glamofb_set_par while " + dev_err(&glamo->mach_info->glamo->pdev->dev, + "IGNORING glamofb_set_par while " "suspended\n"); return -EBUSY; } @@ -488,17 +496,29 @@ static int glamofb_blank(int blank_mode, struct fb_info *info) * we should already switch off pixel clock here */ break; case FB_BLANK_POWERDOWN: + /* Simulating FB_BLANK_NORMAL allow turning off backlight */ + if (gfb->blank_mode != FB_BLANK_NORMAL) + notify_blank(info, FB_BLANK_NORMAL); + + /* LCM need notification before pixel clock is stopped */ + notify_blank(info, blank_mode); + /* disable the pixel clock */ glamo_engine_clkreg_set(gcore, GLAMO_ENGINE_LCD, GLAMO_CLOCK_LCD_EN_DCLK, 0); + gfb->blank_mode = blank_mode; break; case FB_BLANK_UNBLANK: case FB_BLANK_NORMAL: - /* enable the pixel clock */ - glamo_engine_clkreg_set(gcore, GLAMO_ENGINE_LCD, + /* enable the pixel clock if off */ + if (gfb->blank_mode == FB_BLANK_POWERDOWN) + glamo_engine_clkreg_set(gcore, + GLAMO_ENGINE_LCD, GLAMO_CLOCK_LCD_EN_DCLK, GLAMO_CLOCK_LCD_EN_DCLK); + notify_blank(info, blank_mode); + gfb->blank_mode = blank_mode; break; } @@ -524,7 +544,8 @@ static int glamofb_setcolreg(unsigned regno, unsigned int val; if (glamo->mach_info->glamo->suspending) { - dev_err(&glamo->mach_info->glamo->pdev->dev, "IGNORING glamofb_set_par while " + dev_err(&glamo->mach_info->glamo->pdev->dev, + "IGNORING glamofb_set_par while " "suspended\n"); return -EBUSY; } @@ -692,7 +713,8 @@ int glamofb_cmd_mode(struct glamofb_handle *gfb, int on) int timeout = 2000000; if (gfb->mach_info->glamo->suspending) { - dev_err(&gfb->mach_info->glamo->pdev->dev, "IGNORING glamofb_cmd_mode while " + dev_err(&gfb->mach_info->glamo->pdev->dev, + "IGNORING glamofb_cmd_mode while " "suspended\n"); return -EBUSY; } @@ -700,7 +722,7 @@ int glamofb_cmd_mode(struct glamofb_handle *gfb, int on) dev_dbg(gfb->dev, "glamofb_cmd_mode(gfb=%p, on=%d)\n", gfb, on); if (on) { dev_dbg(gfb->dev, "%s: waiting for cmdq empty: ", - __FUNCTION__); + __func__); while ((!glamofb_cmdq_empty(gfb)) && (timeout--)) /* yield() */; if (timeout < 0) { @@ -755,12 +777,13 @@ int glamofb_cmd_write(struct glamofb_handle *gfb, u_int16_t val) int timeout = 200000; if (gfb->mach_info->glamo->suspending) { - dev_err(&gfb->mach_info->glamo->pdev->dev, "IGNORING glamofb_cmd_write while " + dev_err(&gfb->mach_info->glamo->pdev->dev, + "IGNORING glamofb_cmd_write while " "suspended\n"); return -EBUSY; } - dev_dbg(gfb->dev, "%s: waiting for cmdq empty\n", __FUNCTION__); + dev_dbg(gfb->dev, "%s: waiting for cmdq empty\n", __func__); while ((!glamofb_cmdq_empty(gfb)) && (timeout--)) yield(); if (timeout < 0) { @@ -822,6 +845,7 @@ static int __init glamofb_probe(struct platform_device *pdev) glamofb->dev = &pdev->dev; glamofb->angle = 0; + glamofb->blank_mode = FB_BLANK_POWERDOWN; strcpy(fbinfo->fix.id, "SMedia Glamo"); @@ -976,38 +1000,35 @@ static int glamofb_suspend(struct platform_device *pdev, pm_message_t state) struct glamofb_handle *gfb = platform_get_drvdata(pdev); /* we need to stop anything touching our framebuffer */ -// fb_blank(gfb->fb, FB_BLANK_NORMAL); fb_set_suspend(gfb->fb, 1); /* seriously -- nobody is allowed to touch glamo memory when we * are suspended or we lock on nWAIT */ -// iounmap(gfb->fb->screen_base); + /* iounmap(gfb->fb->screen_base); */ return 0; } static int glamofb_resume(struct platform_device *pdev) { - struct glamofb_handle *glamofb = platform_get_drvdata(pdev); + struct glamofb_handle *gfb = platform_get_drvdata(pdev); struct glamofb_platform_data *mach_info = pdev->dev.platform_data; /* OK let's allow framebuffer ops again */ -// gfb->fb->screen_base = ioremap(gfb->fb_res->start, -// RESSIZE(gfb->fb_res)); + /* gfb->fb->screen_base = ioremap(gfb->fb_res->start, + RESSIZE(gfb->fb_res)); */ glamo_engine_enable(mach_info->glamo, GLAMO_ENGINE_LCD); glamo_engine_reset(mach_info->glamo, GLAMO_ENGINE_LCD); printk(KERN_ERR"spin_lock_init\n"); - spin_lock_init(&glamofb->lock_cmd); - glamofb_init_regs(glamofb); + spin_lock_init(&gfb->lock_cmd); + glamofb_init_regs(gfb); #ifdef CONFIG_MFD_GLAMO_HWACCEL - glamofb_cursor_onoff(glamofb, 1); + glamofb_cursor_onoff(gfb, 1); #endif - - fb_set_suspend(glamofb->fb, 0); -// fb_blank(gfb->fb, FB_BLANK_UNBLANK); + fb_set_suspend(gfb->fb, 0); return 0; } diff --git a/drivers/video/display/jbt6k74.c b/drivers/video/display/jbt6k74.c index 0307ed5318f..5d7a6519de9 100644 --- a/drivers/video/display/jbt6k74.c +++ b/drivers/video/display/jbt6k74.c @@ -31,6 +31,7 @@ #include #include #include +#include enum jbt_register { JBT_REG_SLEEP_IN = 0x10, @@ -117,12 +118,18 @@ struct jbt_info { struct notifier_block fb_notif; u16 tx_buf[8]; u16 reg_cache[0xEE]; - int have_resumed; + struct timespec last_sleep; }; #define JBT_COMMAND 0x000 #define JBT_DATA 0x100 +static inline unsigned int timespec_sub_ms(struct timespec lhs, + struct timespec rhs) +{ + struct timespec ts = timespec_sub(lhs, rhs); + return (ts.tv_sec * MSEC_PER_SEC) + (ts.tv_nsec / NSEC_PER_MSEC); +} static int jbt_reg_write_nodata(struct jbt_info *jbt, u8 reg) { @@ -179,7 +186,7 @@ static int jbt_init_regs(struct jbt_info *jbt) { int rc; - dev_dbg(&jbt->spi_dev->dev, "entering %cVGA mode\n", + dev_dbg(&jbt->spi_dev->dev, "entering %cVGA mode\n", jbt->normal_state == JBT_STATE_QVGA_NORMAL ? 'Q' : ' '); rc = jbt_reg_write(jbt, JBT_REG_DISPLAY_MODE1, 0x01); @@ -268,36 +275,25 @@ static int sleep_to_normal(struct jbt_info *jbt) { int rc; - /* RGB I/F on, RAM wirte off, QVGA through, SIGCON enable */ - rc = jbt_reg_write(jbt, JBT_REG_DISPLAY_MODE, 0x80); - - /* Quad mode off */ - rc |= jbt_reg_write(jbt, JBT_REG_QUAD_RATE, 0x00); - - /* AVDD on, XVDD on */ - rc |= jbt_reg_write(jbt, JBT_REG_POWER_ON_OFF, 0x16); + /* Make sure we are 120 ms after SLEEP_OUT */ + unsigned int sleep_time = timespec_sub_ms(current_kernel_time(), + jbt->last_sleep); + if (sleep_time < 120) + mdelay(120 - sleep_time); - /* Output control */ - rc |= jbt_reg_write16(jbt, JBT_REG_OUTPUT_CONTROL, 0xfff9); - - /* Turn on display */ - rc |= jbt_reg_write_nodata(jbt, JBT_REG_DISPLAY_ON); + if (jbt->normal_state == JBT_STATE_NORMAL) { + /* RGB I/F on, RAM wirte off, QVGA through, SIGCON enable */ + rc = jbt_reg_write(jbt, JBT_REG_DISPLAY_MODE, 0x80); - /* Sleep mode off */ - rc |= jbt_reg_write_nodata(jbt, JBT_REG_SLEEP_OUT); - - return rc ? -EIO : 0; -} - -static int sleep_to_qvga_normal(struct jbt_info *jbt) -{ - int rc; - - /* RGB I/F on, RAM wirte off, QVGA through, SIGCON enable */ - rc = jbt_reg_write(jbt, JBT_REG_DISPLAY_MODE, 0x81); + /* Quad mode off */ + rc |= jbt_reg_write(jbt, JBT_REG_QUAD_RATE, 0x00); + } else { + /* RGB I/F on, RAM wirte off, QVGA through, SIGCON enable */ + rc = jbt_reg_write(jbt, JBT_REG_DISPLAY_MODE, 0x81); - /* Quad mode on */ - rc |= jbt_reg_write(jbt, JBT_REG_QUAD_RATE, 0x22); + /* Quad mode on */ + rc |= jbt_reg_write(jbt, JBT_REG_QUAD_RATE, 0x22); + } /* AVDD on, XVDD on */ rc |= jbt_reg_write(jbt, JBT_REG_POWER_ON_OFF, 0x16); @@ -310,6 +306,10 @@ static int sleep_to_qvga_normal(struct jbt_info *jbt) /* Sleep mode off */ rc |= jbt_reg_write_nodata(jbt, JBT_REG_SLEEP_OUT); + jbt->last_sleep = current_kernel_time(); + + /* Allow the booster and display controller to restart stably */ + mdelay(5); return rc ? -EIO : 0; } @@ -318,9 +318,19 @@ static int normal_to_sleep(struct jbt_info *jbt) { int rc; + /* Make sure we are 120 ms after SLEEP_OUT */ + unsigned int sleep_time = timespec_sub_ms(current_kernel_time(), + jbt->last_sleep); + if (sleep_time < 120) + mdelay(120 - sleep_time); + rc = jbt_reg_write_nodata(jbt, JBT_REG_DISPLAY_OFF); rc |= jbt_reg_write16(jbt, JBT_REG_OUTPUT_CONTROL, 0x8002); rc |= jbt_reg_write_nodata(jbt, JBT_REG_SLEEP_IN); + jbt->last_sleep = current_kernel_time(); + + /* Allow the internal circuits to stop automatically */ + mdelay(5); return rc ? -EIO : 0; } @@ -335,8 +345,9 @@ int jbt6k74_enter_state(struct jbt_info *jbt, enum jbt_state new_state) { int rc = -EINVAL; - dev_dbg(&jbt->spi_dev->dev, "entering (old_state=%s, " - "new_state=%s)\n", jbt_state_names[jbt->state], jbt_state_names[new_state]); + dev_dbg(&jbt->spi_dev->dev, "entering (old_state=%s, new_state=%s)\n", + jbt_state_names[jbt->state], + jbt_state_names[new_state]); mutex_lock(&jbt->lock); @@ -363,7 +374,7 @@ int jbt6k74_enter_state(struct jbt_info *jbt, enum jbt_state new_state) /* first transition into sleep */ rc = standby_to_sleep(jbt); /* then transition into normal */ - rc |= sleep_to_qvga_normal(jbt); + rc |= sleep_to_normal(jbt); break; } break; @@ -376,10 +387,8 @@ int jbt6k74_enter_state(struct jbt_info *jbt, enum jbt_state new_state) rc = sleep_to_standby(jbt); break; case JBT_STATE_NORMAL: - rc = sleep_to_normal(jbt); - break; case JBT_STATE_QVGA_NORMAL: - rc = sleep_to_qvga_normal(jbt); + rc = sleep_to_normal(jbt); break; } break; @@ -405,7 +414,7 @@ int jbt6k74_enter_state(struct jbt_info *jbt, enum jbt_state new_state) /* third transition into sleep */ rc |= standby_to_sleep(jbt); /* fourth transition into normal */ - rc |= sleep_to_qvga_normal(jbt); + rc |= sleep_to_normal(jbt); break; } break; @@ -436,12 +445,13 @@ int jbt6k74_enter_state(struct jbt_info *jbt, enum jbt_state new_state) } break; } - + if (rc == 0) jbt->state = new_state; else - dev_err(&jbt->spi_dev->dev, "Failed enter state '%s')\n", jbt_state_names[new_state]); - + dev_err(&jbt->spi_dev->dev, "Failed enter state '%s')\n", + jbt_state_names[new_state]); + mutex_unlock(&jbt->lock); return rc; @@ -525,18 +535,27 @@ static ssize_t gamma_write(struct device *dev, struct device_attribute *attr, static ssize_t reset_write(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { + int rc; struct jbt_info *jbt = dev_get_drvdata(dev); - struct jbt6k74_platform_data *jbt6k74_pdata = jbt->spi_dev->dev.platform_data; + struct jbt6k74_platform_data *pdata = jbt->spi_dev->dev.platform_data; dev_info(dev, "reset\n"); - jbt6k74_enter_state(jbt, JBT_STATE_DEEP_STANDBY); + mutex_lock(&jbt->lock); + + jbt->state = JBT_STATE_DEEP_STANDBY; /* hard reset the jbt6k74 */ - mutex_lock(&jbt->lock); - (jbt6k74_pdata->reset)(0, 0); + (pdata->reset)(0, 0); mdelay(1); - (jbt6k74_pdata->reset)(0, 1); + (pdata->reset)(0, 1); + mdelay(120); + + rc = jbt_reg_write_nodata(jbt, 0x01); + if (rc < 0) + dev_err(&jbt->spi_dev->dev, "cannot soft reset\n"); + mdelay(120); + mutex_unlock(&jbt->lock); jbt6k74_enter_state(jbt, jbt->normal_state); @@ -580,26 +599,22 @@ static int fb_notifier_callback(struct notifier_block *self, return 0; fb_blank = *(int *)evdata->data; - switch (fb_blank) { case FB_BLANK_UNBLANK: - dev_info(&jbt->spi_dev->dev, "**** jbt6k74 unblank\n"); + dev_dbg(&jbt->spi_dev->dev, "unblank\n"); jbt6k74_enter_state(jbt, jbt->normal_state); break; case FB_BLANK_NORMAL: - dev_info(&jbt->spi_dev->dev, "**** jbt6k74 normal\n"); + dev_dbg(&jbt->spi_dev->dev, "blank\n"); break; case FB_BLANK_VSYNC_SUSPEND: - dev_info(&jbt->spi_dev->dev, "**** jbt6k74 vsync suspend\n"); + dev_dbg(&jbt->spi_dev->dev, "vsync suspend\n"); break; case FB_BLANK_HSYNC_SUSPEND: - dev_info(&jbt->spi_dev->dev, "**** jbt6k74 hsync suspend\n"); + dev_dbg(&jbt->spi_dev->dev, "hsync suspend\n"); break; case FB_BLANK_POWERDOWN: - dev_info(&jbt->spi_dev->dev, "**** jbt6k74 powerdown\n"); - /* FIXME DEEP STANDBY wihtout suspend causes WSOD at cold - * temperature on certain devices. */ - /*jbt6k74_enter_state(jbt, JBT_STATE_DEEP_STANDBY);*/ + dev_dbg(&jbt->spi_dev->dev, "powerdown\n"); jbt6k74_enter_state(jbt, JBT_STATE_SLEEP); break; } @@ -613,7 +628,7 @@ static int __devinit jbt_probe(struct spi_device *spi) { int rc; struct jbt_info *jbt; - struct jbt6k74_platform_data *jbt6k74_pdata = spi->dev.platform_data; + struct jbt6k74_platform_data *pdata = spi->dev.platform_data; /* the controller doesn't have a MISO pin; we can't do detection */ @@ -634,6 +649,7 @@ static int __devinit jbt_probe(struct spi_device *spi) jbt->spi_dev = spi; jbt->normal_state = JBT_STATE_NORMAL; jbt->state = JBT_STATE_DEEP_STANDBY; + jbt->last_sleep = current_kernel_time(); mutex_init(&jbt->lock); dev_set_drvdata(&spi->dev, jbt); @@ -657,8 +673,8 @@ static int __devinit jbt_probe(struct spi_device *spi) goto err_sysfs; } - if (jbt6k74_pdata->probe_completed) - (jbt6k74_pdata->probe_completed)(&spi->dev); + if (pdata->probe_completed) + (pdata->probe_completed)(&spi->dev); return 0; @@ -696,8 +712,6 @@ static int jbt_suspend(struct spi_device *spi, pm_message_t state) jbt6k74_enter_state(jbt, JBT_STATE_DEEP_STANDBY); - jbt->have_resumed = 0; - dev_info(&spi->dev, "suspended\n"); return 0; @@ -706,12 +720,12 @@ static int jbt_suspend(struct spi_device *spi, pm_message_t state) int jbt6k74_resume(struct spi_device *spi) { struct jbt_info *jbt = dev_get_drvdata(&spi->dev); - struct jbt6k74_platform_data *jbt6k74_pdata = spi->dev.platform_data; + struct jbt6k74_platform_data *pdata = spi->dev.platform_data; jbt6k74_enter_state(jbt, jbt->normal_state); - if (jbt6k74_pdata->resuming) - (jbt6k74_pdata->resuming)(0); + if (pdata->resuming) + (pdata->resuming)(0); dev_info(&spi->dev, "resumed\n"); -- cgit v1.2.3 From 8f4261328b706c95a96583b3ef6fef1dd429ad06 Mon Sep 17 00:00:00 2001 From: "Mike (mwester)" Date: Sun, 19 Apr 2009 22:06:00 -0500 Subject: remove-ext4-from-gta02_packaging_defconfig.patch Removes ext4 support from the packaging defconfig; there is little value in having this built into the kernel, and a bug in the current 2.6.29-rc3 kernel results in the kernel attempting to mount an ext2 rootfs as ext4, which fails. Signed-off-by: Mike Westerhof --- arch/arm/configs/gta02_packaging_defconfig | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/arch/arm/configs/gta02_packaging_defconfig b/arch/arm/configs/gta02_packaging_defconfig index 5f9aa9338e9..29da6279756 100644 --- a/arch/arm/configs/gta02_packaging_defconfig +++ b/arch/arm/configs/gta02_packaging_defconfig @@ -1803,16 +1803,9 @@ CONFIG_EXT2_FS=y # CONFIG_EXT2_FS_XIP is not set CONFIG_EXT3_FS=y # CONFIG_EXT3_FS_XATTR is not set -CONFIG_EXT4_FS=y -CONFIG_EXT4DEV_COMPAT=y -CONFIG_EXT4_FS_XATTR=y -# CONFIG_EXT4_FS_POSIX_ACL is not set -CONFIG_EXT4_FS_SECURITY=y +# CONFIG_EXT4_FS is not set CONFIG_JBD=y # CONFIG_JBD_DEBUG is not set -CONFIG_JBD2=y -# CONFIG_JBD2_DEBUG is not set -CONFIG_FS_MBCACHE=y # CONFIG_REISERFS_FS is not set # CONFIG_JFS_FS is not set CONFIG_FS_POSIX_ACL=y -- cgit v1.2.3 From 065c0049e3cf229ca0ce1fac4de6056857030593 Mon Sep 17 00:00:00 2001 From: Nelson Castillo Date: Mon, 20 Apr 2009 01:33:29 -0500 Subject: Disable EXT4 / enable reiserfs Disable EXT4 in gta02_moredrivers_defconfig. Enable reiserfs3 in gta02_moredrivers_defconfig and gta02_packaging_defconfig. Signed-off-by: Nelson Castillo Reported-by: W.Kenworthy --- arch/arm/configs/gta02_moredrivers_defconfig | 19 ++++++++----------- arch/arm/configs/gta02_packaging_defconfig | 11 +++++++---- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/arch/arm/configs/gta02_moredrivers_defconfig b/arch/arm/configs/gta02_moredrivers_defconfig index 94698ada167..a664520e127 100644 --- a/arch/arm/configs/gta02_moredrivers_defconfig +++ b/arch/arm/configs/gta02_moredrivers_defconfig @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit # Linux kernel version: 2.6.29-rc3 -# Tue Feb 24 02:11:01 2009 +# Sun Apr 19 23:22:38 2009 # CONFIG_ARM=y CONFIG_HAVE_PWM=y @@ -204,6 +204,7 @@ CONFIG_S3C_GPIO_SPACE=0 CONFIG_S3C_GPIO_TRACK=y CONFIG_S3C_DMA=y CONFIG_S3C_PWM=y +CONFIG_S3C_DEV_USB_HOST=y # # S3C2400 Machines @@ -1029,8 +1030,8 @@ CONFIG_INPUT_MISC=y # CONFIG_INPUT_YEALINK is not set # CONFIG_INPUT_CM109 is not set CONFIG_INPUT_UINPUT=m -CONFIG_INPUT_PCF50633_PMU=y CONFIG_INPUT_LIS302DL=y +CONFIG_INPUT_PCF50633_PMU=y # # Hardware I/O ports @@ -1800,17 +1801,13 @@ CONFIG_EXT2_FS=y # CONFIG_EXT2_FS_XIP is not set CONFIG_EXT3_FS=y # CONFIG_EXT3_FS_XATTR is not set -CONFIG_EXT4_FS=y -CONFIG_EXT4DEV_COMPAT=y -CONFIG_EXT4_FS_XATTR=y -# CONFIG_EXT4_FS_POSIX_ACL is not set -CONFIG_EXT4_FS_SECURITY=y +# CONFIG_EXT4_FS is not set CONFIG_JBD=y # CONFIG_JBD_DEBUG is not set -CONFIG_JBD2=y -# CONFIG_JBD2_DEBUG is not set -CONFIG_FS_MBCACHE=y -# CONFIG_REISERFS_FS is not set +CONFIG_REISERFS_FS=m +# CONFIG_REISERFS_CHECK is not set +# CONFIG_REISERFS_PROC_INFO is not set +# CONFIG_REISERFS_FS_XATTR is not set # CONFIG_JFS_FS is not set # CONFIG_FS_POSIX_ACL is not set CONFIG_FILE_LOCKING=y diff --git a/arch/arm/configs/gta02_packaging_defconfig b/arch/arm/configs/gta02_packaging_defconfig index 29da6279756..b2bdae810ca 100644 --- a/arch/arm/configs/gta02_packaging_defconfig +++ b/arch/arm/configs/gta02_packaging_defconfig @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit # Linux kernel version: 2.6.29-rc3 -# Tue Feb 24 02:12:40 2009 +# Sun Apr 19 22:57:25 2009 # CONFIG_ARM=y CONFIG_HAVE_PWM=y @@ -204,6 +204,7 @@ CONFIG_S3C_GPIO_SPACE=0 CONFIG_S3C_GPIO_TRACK=y CONFIG_S3C_DMA=y CONFIG_S3C_PWM=y +CONFIG_S3C_DEV_USB_HOST=y # # S3C2400 Machines @@ -1032,8 +1033,8 @@ CONFIG_INPUT_MISC=y # CONFIG_INPUT_YEALINK is not set # CONFIG_INPUT_CM109 is not set CONFIG_INPUT_UINPUT=m -CONFIG_INPUT_PCF50633_PMU=y CONFIG_INPUT_LIS302DL=y +CONFIG_INPUT_PCF50633_PMU=y # # Hardware I/O ports @@ -1806,7 +1807,10 @@ CONFIG_EXT3_FS=y # CONFIG_EXT4_FS is not set CONFIG_JBD=y # CONFIG_JBD_DEBUG is not set -# CONFIG_REISERFS_FS is not set +CONFIG_REISERFS_FS=m +# CONFIG_REISERFS_CHECK is not set +# CONFIG_REISERFS_PROC_INFO is not set +# CONFIG_REISERFS_FS_XATTR is not set # CONFIG_JFS_FS is not set CONFIG_FS_POSIX_ACL=y CONFIG_FILE_LOCKING=y @@ -1887,7 +1891,6 @@ CONFIG_NFS_FS=m CONFIG_NFS_V3=y CONFIG_NFS_V3_ACL=y # CONFIG_NFS_V4 is not set -CONFIG_ROOT_NFS=y CONFIG_NFSD=m CONFIG_NFSD_V2_ACL=y CONFIG_NFSD_V3=y -- cgit v1.2.3 From 80f036923d92f1f1bc5435366e6af35905d9d927 Mon Sep 17 00:00:00 2001 From: Nelson Castillo Date: Mon, 20 Apr 2009 21:39:56 -0500 Subject: Make Xglamo workaround opt-out. Fixes #2255. To disable the workaround at run-time run: echo 0 > /sys/class/i2c-adapter/i2c-0/0-0073/pcf50633-regltr.9/glamo3362.0/glamo-fb.0/xglamo_hack I guess I should add a compile option now to completely disable the workaround but let's call this an enhancement and let's close the bug now. By default the workaround is enabled. Signed-off-by: Nelson Castillo Reported-by: Timo Juhani Lindfors --- drivers/mfd/glamo/glamo-fb.c | 171 ++++++++++++++++++++++++++++++++++++------- 1 file changed, 144 insertions(+), 27 deletions(-) diff --git a/drivers/mfd/glamo/glamo-fb.c b/drivers/mfd/glamo/glamo-fb.c index 5491dadbf8a..43bb2359054 100644 --- a/drivers/mfd/glamo/glamo-fb.c +++ b/drivers/mfd/glamo/glamo-fb.c @@ -259,6 +259,7 @@ static void reg_set_bit_mask(struct glamofb_handle *glamo, #define GLAMO_LCD_HV_RETR_DISP_START_MASK 0x03FF #define GLAMO_LCD_HV_RETR_DISP_END_MASK 0x03FF +enum orientation {ORIENTATION_PORTRAIT, ORIENTATION_LANDSCAPE}; /* the caller has to enxure lock_cmd is held and we are in cmd mode */ static void __rotate_lcd(struct glamofb_handle *glamo, __u32 rotation) @@ -306,34 +307,78 @@ static void __rotate_lcd(struct glamofb_handle *glamo, __u32 rotation) GLAMO_LCD_MODE1_ROTATE_EN : 0); } -static void glamofb_update_lcd_controller(struct glamofb_handle *glamo, - struct fb_var_screeninfo *var) +static enum orientation get_orientation(struct fb_var_screeninfo *var) { - int sync, bp, disp, fp, total, pitch; - unsigned long flags; - int width, height; + if (var->xres <= var->yres) + return ORIENTATION_PORTRAIT; - if (!glamo || !var) - return; + return ORIENTATION_LANDSCAPE; +} - if (glamo->mach_info->glamo->suspending) { - dev_err(&glamo->mach_info->glamo->pdev->dev, - "IGNORING glamofb_update_lcd_controller while " - "suspended\n"); - return; +static int will_orientation_change(struct fb_var_screeninfo *var) +{ + enum orientation orient = get_orientation(var); + + switch (orient) { + case ORIENTATION_LANDSCAPE: + if (var->rotate == FB_ROTATE_UR || var->rotate == FB_ROTATE_UD) + return 1; + break; + case ORIENTATION_PORTRAIT: + if (var->rotate == FB_ROTATE_CW || var->rotate == FB_ROTATE_CCW) + return 1; + break; } + return 0; +} - dev_dbg(&glamo->mach_info->glamo->pdev->dev, - "glamofb_update_lcd_controller spin_lock_irqsave\n"); - spin_lock_irqsave(&glamo->lock_cmd, flags); +/* + * See https://docs.openmoko.org/trac/ticket/2255 + * We have a hack for some Xglamo bugs in kernel code. + * If someone fixes xglamo we can remove this hack. + * We might make xglamo_hack_enabled 0 by default in the future. + */ - if (glamofb_cmd_mode(glamo, 1)) - goto out_unlock; +static unsigned xglamo_hack_enabled = 1; - if (var->pixclock) - glamo_engine_reclock(glamo->mach_info->glamo, - GLAMO_ENGINE_LCD, - var->pixclock); +static ssize_t xglamo_hack_read(struct device *dev, + struct device_attribute *attr, char *buf) +{ + return sprintf(buf, "%d\n", xglamo_hack_enabled); +} + +static ssize_t xglamo_hack_write(struct device *dev, + struct device_attribute *attr, const char *buf, + size_t count) +{ + unsigned long val; + + if (!strict_strtoul(buf, 10, &val)) + xglamo_hack_enabled = !!val; + + return count; +} + +static DEVICE_ATTR(xglamo_hack, S_IWUSR | S_IRUGO, xglamo_hack_read, + xglamo_hack_write); + +static struct attribute *glamo_fb_sysfs_entries[] = { + &dev_attr_xglamo_hack.attr, + NULL +}; + +static struct attribute_group glamo_fb_attr_group = { + .name = NULL, + .attrs = glamo_fb_sysfs_entries, +}; + +/* This function implements the actual Xglamo hack. */ + +static void glamofb_update_lcd_controller_hack(struct glamofb_handle *glamo, + struct fb_var_screeninfo *var, + int *xres, int *yres, int *pitch) +{ + int width, height; if (glamo->angle == 90 || glamo->angle == 270) { /* @@ -365,23 +410,71 @@ static void glamofb_update_lcd_controller(struct glamofb_handle *glamo, var->xres_virtual = width; var->yres_virtual = height * 2; - pitch = width * var->bits_per_pixel / 8; + *pitch = width * var->bits_per_pixel / 8; } else { var->xres = height; var->yres = width; var->xres_virtual = height * 2; var->yres_virtual = width; - pitch = height * var->bits_per_pixel / 8; + *pitch = height * var->bits_per_pixel / 8; + } + + *xres = width; + *yres = height; +} + +static void glamofb_update_lcd_controller(struct glamofb_handle *glamo, + struct fb_var_screeninfo *var) +{ + int sync, bp, disp, fp, total, xres, yres, pitch; + int uninitialized_var(orientation_changing); + unsigned long flags; + + if (!glamo || !var) + return; + + if (glamo->mach_info->glamo->suspending) { + dev_err(&glamo->mach_info->glamo->pdev->dev, + "IGNORING glamofb_update_lcd_controller while " + "suspended\n"); + return; + } + + dev_dbg(&glamo->mach_info->glamo->pdev->dev, + "glamofb_update_lcd_controller spin_lock_irqsave\n"); + spin_lock_irqsave(&glamo->lock_cmd, flags); + + if (glamofb_cmd_mode(glamo, 1)) + goto out_unlock; + + if (var->pixclock) + glamo_engine_reclock(glamo->mach_info->glamo, + GLAMO_ENGINE_LCD, + var->pixclock); + + if (xglamo_hack_enabled) { + glamofb_update_lcd_controller_hack(glamo, var, &xres, &yres, + &pitch); + } else { + xres = var->xres; + yres = var->yres; + + orientation_changing = will_orientation_change(var); + /* Adjust the pitch according to new orientation to come. */ + if (will_orientation_change(var)) + pitch = var->yres * var->bits_per_pixel / 8; + else + pitch = var->xres * var->bits_per_pixel / 8; } reg_set_bit_mask(glamo, GLAMO_REG_LCD_WIDTH, GLAMO_LCD_WIDTH_MASK, - width); + xres); reg_set_bit_mask(glamo, GLAMO_REG_LCD_HEIGHT, GLAMO_LCD_HEIGHT_MASK, - height); + yres); reg_set_bit_mask(glamo, GLAMO_REG_LCD_PITCH, GLAMO_LCD_PITCH_MASK, @@ -390,11 +483,28 @@ static void glamofb_update_lcd_controller(struct glamofb_handle *glamo, /* honour the rotation request */ __rotate_lcd(glamo, var->rotate); + if (!xglamo_hack_enabled) { + /* update the reported geometry of the framebuffer. */ + if (orientation_changing) { + var->xres_virtual = yres; + var->xres = yres; + var->xres_virtual *= 2; + var->yres_virtual = xres; + var->yres = xres; + } else { + var->xres_virtual = xres; + var->xres = xres; /* Unneeded. */ + var->yres_virtual = yres; + var->yres = yres; /* Unneeded. */ + var->yres_virtual *= 2; + } + } + /* update scannout timings */ sync = 0; bp = sync + var->hsync_len; disp = bp + var->left_margin; - fp = disp + width; + fp = disp + xres; total = fp + var->right_margin; reg_set_bit_mask(glamo, GLAMO_REG_LCD_HORIZ_TOTAL, @@ -411,7 +521,7 @@ static void glamofb_update_lcd_controller(struct glamofb_handle *glamo, sync = 0; bp = sync + var->vsync_len; disp = bp + var->upper_margin; - fp = disp + height; + fp = disp + yres; total = fp + var->lower_margin; reg_set_bit_mask(glamo, GLAMO_REG_LCD_VERT_TOTAL, @@ -950,6 +1060,13 @@ static int __init glamofb_probe(struct platform_device *pdev) glamofb_cursor_onoff(glamofb, 1); #endif + /* sysfs */ + rc = sysfs_create_group(&pdev->dev.kobj, &glamo_fb_attr_group); + if (rc < 0) { + dev_err(&pdev->dev, "cannot create sysfs group\n"); + goto out_unmap_fb; + } + rc = register_framebuffer(fbinfo); if (rc < 0) { dev_err(&pdev->dev, "failed to register framebuffer\n"); -- cgit v1.2.3 From e360a2da41f5d1565424715f119d7290e9e6c073 Mon Sep 17 00:00:00 2001 From: Nelson Castillo Date: Tue, 21 Apr 2009 11:18:33 -0500 Subject: glamo_fb: Small cleanup ~ Cleanup of a redundant call I introduced before. ~ Removed useless assignation. Signed-off-by: Nelson Castillo --- drivers/mfd/glamo/glamo-fb.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/mfd/glamo/glamo-fb.c b/drivers/mfd/glamo/glamo-fb.c index 43bb2359054..914eab43e55 100644 --- a/drivers/mfd/glamo/glamo-fb.c +++ b/drivers/mfd/glamo/glamo-fb.c @@ -461,7 +461,7 @@ static void glamofb_update_lcd_controller(struct glamofb_handle *glamo, orientation_changing = will_orientation_change(var); /* Adjust the pitch according to new orientation to come. */ - if (will_orientation_change(var)) + if (orientation_changing) pitch = var->yres * var->bits_per_pixel / 8; else pitch = var->xres * var->bits_per_pixel / 8; @@ -493,9 +493,7 @@ static void glamofb_update_lcd_controller(struct glamofb_handle *glamo, var->yres = xres; } else { var->xres_virtual = xres; - var->xres = xres; /* Unneeded. */ var->yres_virtual = yres; - var->yres = yres; /* Unneeded. */ var->yres_virtual *= 2; } } -- cgit v1.2.3 From 7a806d20b7709a2894a7e29896621964f0021c92 Mon Sep 17 00:00:00 2001 From: Nelson Castillo Date: Tue, 21 Apr 2009 11:18:43 -0500 Subject: glamo_fb: make Xglamo workaround conditional Distributions that use Xorg will not need the workaround at all and now they can disable it. Updated configurations to enable it by default. Signed-off-by: Nelson Castillo --- arch/arm/configs/gta02_micro_defconfig | 1 + arch/arm/configs/gta02_moredrivers_defconfig | 1 + arch/arm/configs/gta02_packaging_defconfig | 1 + drivers/mfd/glamo/Kconfig | 12 +++++++++++- drivers/mfd/glamo/glamo-fb.c | 12 ++++++++++++ 5 files changed, 26 insertions(+), 1 deletion(-) diff --git a/arch/arm/configs/gta02_micro_defconfig b/arch/arm/configs/gta02_micro_defconfig index b81e96dbf09..ae30c4b1ddb 100644 --- a/arch/arm/configs/gta02_micro_defconfig +++ b/arch/arm/configs/gta02_micro_defconfig @@ -707,6 +707,7 @@ CONFIG_PCF50633_GPIO=y # CONFIG_MFD_PCF50606 is not set CONFIG_MFD_GLAMO=y CONFIG_MFD_GLAMO_FB=y +CONFIG_MFD_GLAMO_FB_XGLAMO_WORKAROUND=y CONFIG_MFD_GLAMO_SPI_GPIO=y CONFIG_MFD_GLAMO_SPI_FB=y CONFIG_MFD_GLAMO_MCI=y diff --git a/arch/arm/configs/gta02_moredrivers_defconfig b/arch/arm/configs/gta02_moredrivers_defconfig index a664520e127..1dbbbf63ce8 100644 --- a/arch/arm/configs/gta02_moredrivers_defconfig +++ b/arch/arm/configs/gta02_moredrivers_defconfig @@ -1280,6 +1280,7 @@ CONFIG_PCF50633_GPIO=y # CONFIG_MFD_PCF50606 is not set CONFIG_MFD_GLAMO=y CONFIG_MFD_GLAMO_FB=y +CONFIG_MFD_GLAMO_FB_XGLAMO_WORKAROUND=y CONFIG_MFD_GLAMO_SPI_GPIO=y CONFIG_MFD_GLAMO_SPI_FB=y CONFIG_MFD_GLAMO_MCI=y diff --git a/arch/arm/configs/gta02_packaging_defconfig b/arch/arm/configs/gta02_packaging_defconfig index b2bdae810ca..237fd959510 100644 --- a/arch/arm/configs/gta02_packaging_defconfig +++ b/arch/arm/configs/gta02_packaging_defconfig @@ -1283,6 +1283,7 @@ CONFIG_PCF50633_GPIO=y # CONFIG_MFD_PCF50606 is not set CONFIG_MFD_GLAMO=y CONFIG_MFD_GLAMO_FB=y +CONFIG_MFD_GLAMO_FB_XGLAMO_WORKAROUND=y CONFIG_MFD_GLAMO_SPI_GPIO=y CONFIG_MFD_GLAMO_SPI_FB=y CONFIG_MFD_GLAMO_MCI=y diff --git a/drivers/mfd/glamo/Kconfig b/drivers/mfd/glamo/Kconfig index d2ab3706f8f..60d29c92ef1 100644 --- a/drivers/mfd/glamo/Kconfig +++ b/drivers/mfd/glamo/Kconfig @@ -22,6 +22,16 @@ config MFD_GLAMO_FB If unsure, say N. +config MFD_GLAMO_FB_XGLAMO_WORKAROUND + bool "Smedia Glamo 336x/337x Xglamo rotation workaround" + depends on MFD_GLAMO_FB + help + This is a workaround for a Xglamo bug. This should be fixed + in Xglamo and not in kernel space. + + If unsure, say N. + + config MFD_GLAMO_SPI_GPIO tristate "Glamo GPIO SPI bitbang support" depends on MFD_GLAMO @@ -44,4 +54,4 @@ config MFD_GLAMO_MCI the S-Media GLAMO chip, as used in Openmoko neo1973 GTA-02. - If unsure, say N. \ No newline at end of file + If unsure, say N. diff --git a/drivers/mfd/glamo/glamo-fb.c b/drivers/mfd/glamo/glamo-fb.c index 914eab43e55..1ebb87d1276 100644 --- a/drivers/mfd/glamo/glamo-fb.c +++ b/drivers/mfd/glamo/glamo-fb.c @@ -332,6 +332,8 @@ static int will_orientation_change(struct fb_var_screeninfo *var) return 0; } +#ifdef CONFIG_MFD_GLAMO_FB_XGLAMO_WORKAROUND + /* * See https://docs.openmoko.org/trac/ticket/2255 * We have a hack for some Xglamo bugs in kernel code. @@ -422,6 +424,14 @@ static void glamofb_update_lcd_controller_hack(struct glamofb_handle *glamo, *xres = width; *yres = height; } +#else +#define xglamo_hack_enabled 0 +static void glamofb_update_lcd_controller_hack(struct glamofb_handle *glamo, + struct fb_var_screeninfo *var, + int *xres, int *yres, int *pitch) +{ +} +#endif static void glamofb_update_lcd_controller(struct glamofb_handle *glamo, struct fb_var_screeninfo *var) @@ -1058,12 +1068,14 @@ static int __init glamofb_probe(struct platform_device *pdev) glamofb_cursor_onoff(glamofb, 1); #endif +#ifdef CONFIG_MFD_GLAMO_FB_XGLAMO_WORKAROUND /* sysfs */ rc = sysfs_create_group(&pdev->dev.kobj, &glamo_fb_attr_group); if (rc < 0) { dev_err(&pdev->dev, "cannot create sysfs group\n"); goto out_unmap_fb; } +#endif rc = register_framebuffer(fbinfo); if (rc < 0) { -- cgit v1.2.3 From 0b9d21bf5d05d5dd909425a67a8be2eb1c1fc579 Mon Sep 17 00:00:00 2001 From: Michael Trimarchi Date: Tue, 21 Apr 2009 11:23:42 -0500 Subject: This patch take the min platform data array size and keys array size. Signed-off-by: Michael Trimarchi --- drivers/input/keyboard/neo1973kbd.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/input/keyboard/neo1973kbd.c b/drivers/input/keyboard/neo1973kbd.c index 56d3a689a4a..a95dd5806d2 100644 --- a/drivers/input/keyboard/neo1973kbd.c +++ b/drivers/input/keyboard/neo1973kbd.c @@ -368,8 +368,7 @@ static int neo1973kbd_probe(struct platform_device *pdev) goto out_device_create_file; /* register GPIO IRQs */ - - for(n = 0; n < ARRAY_SIZE(keys); n++) { + for(n = 0; n < min(pdev->num_resources, ARRAY_SIZE(keys)); n++) { if (!pdev->resource[0].start) continue; -- cgit v1.2.3 From b4136a36f31a65d0998a328465df9e8e2ba93166 Mon Sep 17 00:00:00 2001 From: Michael Trimarchi Date: Thu, 23 Apr 2009 09:12:14 +0200 Subject: Update status battery This patch adds the call to the worker in bq27000_battery_external_power_changed. Now (un)plugging the USB cable effects the battery status soon. I don't know if it is possible call the status change directly. Signed-off-by: Michael Trimarchi Signed-off-by: Daniel Willmann --- drivers/power/bq27000_battery.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/power/bq27000_battery.c b/drivers/power/bq27000_battery.c index bc3856e5755..9f0f1a96720 100644 --- a/drivers/power/bq27000_battery.c +++ b/drivers/power/bq27000_battery.c @@ -173,6 +173,7 @@ static void bq27000_battery_external_power_changed(struct power_supply *psy) struct bq27000_device_info *di = container_of(psy, struct bq27000_device_info, bat); dev_dbg(di->dev, "%s\n", __FUNCTION__); + schedule_delayed_work(&di->work, 0); } static int bq27000_battery_get_property(struct power_supply *psy, -- cgit v1.2.3