Hi,
I'm trying to backport the WL1270 (NLCP) driver from TI compat-wireless (R5 SP3.05) for my WG7311-2A WLAN module on my 2.6.32 kernel.
Until now, I was using a pin compatible WG7310-2A chip with the "old" TI WiLink driver (what I think is MCP, I'm not sure. It works with sdio.ko, tiwlan_drv.ko and tiwlan_loader)
I want this new chip to work (whatever the driver). However I've been told the old WiLink driver can't pass latest EN300 328 v1.8.1 certification. I guess I need to use the NLCP driver here.
As far as I understand SDIO, WLAN enable and WLAN IRQ configuration remains unchanged on my board files. I mean, they don't need to change since it used to work with a pin compatible chip.
I followed those guidelines and advice :
- http://wireless.kernel.org/en/users/Drivers/wl12xx
- http://processors.wiki.ti.com/index.php/WL127x_Porting_Guide
- http://thread.gmane.org/gmane.linux.kernel.wireless.general/61910
- http://thread.gmane.org/gmane.linux.kernel.wireless.general/61952
- http://thread.gmane.org/gmane.linux.kernel.wireless.general/61986
I applied/backported the following patches (I tried to follow the same order as mainline kernel history):
• sdio: fix nasty oops in mmc_sdio_detect (Sun Nov 14 12:40:33 2010) - http://www.spinics.net/lists/linux-mmc/msg04549.html
• sdio: support suspend/resume while runtime suspended (Sat Oct 2 13:54:13 2010) - http://www.spinics.net/lists/linux-mmc/msg03975.html
• sdio: ensure mmc_sdio_detect is powered - http://www.spinics.net/lists/linux-mmc/msg03974.html
• sdio: enable runtime PM for SDIO functions - http://www.spinics.net/lists/linux-mmc/msg03973.html
• sdio: enable runtime PM for SDIO cards - http://www.spinics.net/lists/linux-mmc/msg03972.html
• sdio: use the generic runtime PM handlers - http://www.spinics.net/lists/linux-mmc/msg03971.html
• mmc: add runtime PM handlers - http://www.spinics.net/lists/linux-mmc/msg03970.html
• mmc: sdio: add power_restore support - http://www.spinics.net/lists/linux-mmc/msg03969.html
• mmc: propagate power save/restore ops return value (Sat Oct 2 13:54:06 2010) - http://www.spinics.net/lists/linux-mmc/msg03968.html
• mmc: sdio: fully reconfigure oldcard on resume (Sat Oct 2 13:54:05 2010) - http://www.spinics.net/lists/linux-mmc/msg03967.html (***: see above)
• PM: lenient generic runtime pm callbacks (Thu Sep 9 00:46:16 2010) http://permalink.gmane.org/gmane.linux.power-management.general/21579
• workqueue: flush_delayed_work: keep the original workqueue for re-queueing (Fri Apr 30 07:23:51 2010) - vanilla 47dd5be2d6a82b8153e059a1d09eb3879d485bfd
• PM: Provide generic subsystem-level callbacks (Sat Mar 6 21:28:37 2010) - vanilla d690b2cd222afc75320b9b8e9da7df02e9e630ca
• sdio: don't use CMD[357] as part of a powered SDIO resume (Fri Mar 5 13:43:33 2010) - vanilla 3bca4cf703826fcb2bbabbe19c6fc7b2fc4fd7cc
• PM: use pm_runtime_put_sync in system resume (Mon Dec 21 02:46:11 2009) - http://article.gmane.org/gmane.linux.power-management.general/16838
• PM: allow for usage_count > 0 in pm_runtime_get() (Sun Dec 13 20:28:30 2009) - http://article.gmane.org/gmane.linux.power-management.general/16434
***: For this patch, I only backported the code from the mmc_sdio_init_card function, not the mmc_sdio_resume one (it was a bit tricky to backport because features where not there in the 2.6.32 tree)
On the compat-wireless source tree:
- patches from https://gforge.ti.com/gf/download/frsrelease/934/6105/Compat-wireless-patches-R5_SP3_build_10.zip are applied
- then patches from my chip vendor are applied. Those are bluez-related patches I don't realy need, so I let them apply anyway.
- finally I applied the following custom patches to make it compile with my 2.6.32 kernel (see enclosed patch files) :
• 0001-compat-wireless-backport-convert-multicast-list-to-l.patch
• 0002-The-quirks-attribute-is-not-available-on-older-kerne.patch
• 0003-backport-mmc_power_save_host-usage.patch
• 0004-fix-2.6.32-compatibility-macros-redefinitions.patch
• 0005-enable-CONFIG_COMPAT_WL12XX_SDIO-and-CONFIG_WL12XX_P.patch
WL12XX_PLATFORM_DATA patches are already applied in the compat-wireless tree so I (think that) didn't need to use the following patches on the NLCP (or kernel) tree:
- http://www.spinics.net/lists/linux-wireless/msg61836.html
- http://www.spinics.net/lists/linux-wireless/msg61839.html
Then, the modules can build and I load them:
insmod compat.ko
insmod cfg80211.ko
insmod mac80211.ko
insmod compat_firmware_class.ko
insmod wl12xx.ko
insmod wl12xx_platform_data.ko
insmod wl12xx_sdio.ko
ifconfig wlan0 up
It produces:
Compat-wireless backport release: ol_R5.SP3.06
Backport based on wl12xx.git ol_R5.SP3.06
cfg80211: Calling CRDA to update world regulatory domain
wl12xx: driver version: ol_R5.SP3.06
wl12xx: compilation time: Thu Nov 15 15:50:59 2012
wl12xx_platform_data: module license 'unspecified' taints kernel.
Disabling lock debugging due to kernel taint
sdio_register_driver: Registring SDIO driver wl1271_sdio
ifconfig: SIOCGIFFLAGS: No such device
So, I can't "up" wlan0...
I can see that I miss "mmc*" logs that **should** appear. But they don't ...
Here is, enclosed too:
- my kernel .config file
- and my boot logs (just before loading the modules).
I'm pretty much stuck here, I'm running out of ideas now :/
There is a mistake somewhere or something I missed ...
So if you have any advice, any lead, ... to help me, I would be very thankful !!
Regards,
Yoann
From 07c0fc7c37f8c7b4e271f7d0cef9773c2f78c52c Mon Sep 17 00:00:00 2001 From: Yoann Sculo <yoanns@bookeen.com> Date: Fri, 28 Jun 2013 15:45:58 +0200 Subject: [PATCH] compat-wireless: backport convert multicast list to list_head. --- drivers/net/wireless/wl12xx/main.c | 33 +++++++++++++++++++++++++++++++++ include/net/mac80211.h | 4 ++++ net/mac80211/driver-ops.h | 17 +++++++++++++++-- net/mac80211/ieee80211_i.h | 5 +++++ net/mac80211/iface.c | 10 ++++++++++ net/mac80211/main.c | 6 ++++++ 6 files changed, 73 insertions(+), 2 deletions(-) diff --git a/drivers/net/wireless/wl12xx/main.c b/drivers/net/wireless/wl12xx/main.c index 72deb40..2be7adb 100644 --- a/drivers/net/wireless/wl12xx/main.c +++ b/drivers/net/wireless/wl12xx/main.c @@ -3751,11 +3751,20 @@ struct wl1271_filter_params { u8 mc_list[ACX_MC_ADDRESS_GROUP_MAX][ETH_ALEN]; }; +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35)) static u64 wl1271_op_prepare_multicast(struct ieee80211_hw *hw, struct netdev_hw_addr_list *mc_list) +#else +static u64 wl1271_op_prepare_multicast(struct ieee80211_hw *hw, int mc_count, + struct dev_addr_list *mc_list) +#endif { struct wl1271_filter_params *fp; +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35)) struct netdev_hw_addr *ha; +#else + int i; +#endif fp = kzalloc(sizeof(*fp), GFP_ATOMIC); if (!fp) { @@ -3764,16 +3773,40 @@ static u64 wl1271_op_prepare_multicast(struct ieee80211_hw *hw, } /* update multicast filtering parameters */ +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35)) fp->mc_list_length = 0; if (netdev_hw_addr_list_count(mc_list) > ACX_MC_ADDRESS_GROUP_MAX) { +#else + fp->enabled = true; + if (mc_count > ACX_MC_ADDRESS_GROUP_MAX) { + mc_count = 0; +#endif fp->enabled = false; +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35)) } else { fp->enabled = true; netdev_hw_addr_list_for_each(ha, mc_list) { +#else + } + + fp->mc_list_length = 0; + for (i = 0; i < mc_count; i++) { + if (mc_list->da_addrlen == ETH_ALEN) { +#endif memcpy(fp->mc_list[fp->mc_list_length], +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35)) ha->addr, ETH_ALEN); +#else + mc_list->da_addr, ETH_ALEN); +#endif fp->mc_list_length++; +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35)) } +#else + } else + wl1271_warning("Unknown mc address length."); + mc_list = mc_list->next; +#endif } return (u64)(unsigned long)fp; diff --git a/include/net/mac80211.h b/include/net/mac80211.h index 6c07b9e..c45b5ec 100644 --- a/include/net/mac80211.h +++ b/include/net/mac80211.h @@ -2176,7 +2176,11 @@ struct ieee80211_ops { enum ieee80211_tx_sync_type type); u64 (*prepare_multicast)(struct ieee80211_hw *hw, +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35)) struct netdev_hw_addr_list *mc_list); +#else + int mc_count, struct dev_addr_list *mc_list); +#endif void (*configure_filter)(struct ieee80211_hw *hw, unsigned int changed_flags, unsigned int *total_flags, diff --git a/net/mac80211/driver-ops.h b/net/mac80211/driver-ops.h index e3b409a..8b8fe30 100644 --- a/net/mac80211/driver-ops.h +++ b/net/mac80211/driver-ops.h @@ -204,16 +204,29 @@ static inline void drv_finish_tx_sync(struct ieee80211_local *local, } static inline u64 drv_prepare_multicast(struct ieee80211_local *local, +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35)) struct netdev_hw_addr_list *mc_list) +#else + int mc_count, + struct dev_addr_list *mc_list) +#endif { u64 ret = 0; - trace_drv_prepare_multicast(local, mc_list->count); - if (local->ops->prepare_multicast) +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35)) ret = local->ops->prepare_multicast(&local->hw, mc_list); +#else + ret = local->ops->prepare_multicast(&local->hw, mc_count, + mc_list); +#endif +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35)) + trace_drv_prepare_multicast(local, mc_list->count); trace_drv_return_u64(local, ret); +#else + trace_drv_prepare_multicast(local, mc_count); +#endif return ret; } diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h index 1c8d658..7a5bb1e 100644 --- a/net/mac80211/ieee80211_i.h +++ b/net/mac80211/ieee80211_i.h @@ -815,7 +815,12 @@ struct ieee80211_local { struct work_struct recalc_smps; /* aggregated multicast list */ +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35)) struct netdev_hw_addr_list mc_list; +#else + struct dev_addr_list *mc_list; + int mc_count; +#endif bool tim_in_locked_section; /* see ieee80211_beacon_get() */ diff --git a/net/mac80211/iface.c b/net/mac80211/iface.c index 6d20925..86d49c9 100644 --- a/net/mac80211/iface.c +++ b/net/mac80211/iface.c @@ -449,8 +449,13 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata, netif_addr_lock_bh(sdata->dev); spin_lock_bh(&local->filter_lock); +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35)) __hw_addr_unsync(&local->mc_list, &sdata->dev->mc, sdata->dev->addr_len); +#else + __dev_addr_unsync(&local->mc_list, &local->mc_count, + &sdata->dev->mc_list, &sdata->dev->mc_count); +#endif spin_unlock_bh(&local->filter_lock); netif_addr_unlock_bh(sdata->dev); @@ -618,7 +623,12 @@ static void ieee80211_set_multicast_list(struct net_device *dev) sdata->flags ^= IEEE80211_SDATA_PROMISC; } spin_lock_bh(&local->filter_lock); +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35)) __hw_addr_sync(&local->mc_list, &dev->mc, dev->addr_len); +#else + __dev_addr_sync(&local->mc_list, &local->mc_count, + &dev->mc_list, &dev->mc_count); +#endif spin_unlock_bh(&local->filter_lock); ieee80211_queue_work(&local->hw, &local->reconfig_filter); } diff --git a/net/mac80211/main.c b/net/mac80211/main.c index 9972bd3..136c053 100644 --- a/net/mac80211/main.c +++ b/net/mac80211/main.c @@ -71,7 +71,11 @@ void ieee80211_configure_filter(struct ieee80211_local *local) spin_lock_bh(&local->filter_lock); changed_flags = local->filter_flags ^ new_flags; +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35)) mc = drv_prepare_multicast(local, &local->mc_list); +#else + mc = drv_prepare_multicast(local, local->mc_count, local->mc_list); +#endif spin_unlock_bh(&local->filter_lock); /* be a bit nasty */ @@ -621,7 +625,9 @@ struct ieee80211_hw *ieee80211_alloc_hw(size_t priv_data_len, INIT_LIST_HEAD(&local->interfaces); +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35)) __hw_addr_init(&local->mc_list); +#endif mutex_init(&local->iflist_mtx); mutex_init(&local->mtx); -- 1.7.10.4
From 0abfe55f39a90ce0bffadcbb9eae2cac8f4eac54 Mon Sep 17 00:00:00 2001 From: Yoann Sculo <yoanns@bookeen.com> Date: Tue, 2 Jul 2013 11:25:18 +0200 Subject: [PATCH] The quirks attribute is not available on older kernels. --- drivers/net/wireless/wl12xx/sdio.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/net/wireless/wl12xx/sdio.c b/drivers/net/wireless/wl12xx/sdio.c index c7505d0..2837c2f 100644 --- a/drivers/net/wireless/wl12xx/sdio.c +++ b/drivers/net/wireless/wl12xx/sdio.c @@ -221,7 +221,9 @@ static int __devinit wl1271_probe(struct sdio_func *func, func->card->quirks |= MMC_QUIRK_LENIENT_FN0; /* Use block mode for transferring over one block size of data */ +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,34)) func->card->quirks |= MMC_QUIRK_BLKSZ_FOR_BYTE_MODE; +#endif wlan_data = wl12xx_get_platform_data(); if (IS_ERR(wlan_data)) { -- 1.7.10.4
From a17ff50255d0edec22037de0372d6b111c4eb50e Mon Sep 17 00:00:00 2001 From: Yoann Sculo <yoanns@bookeen.com> Date: Tue, 2 Jul 2013 15:59:49 +0200 Subject: [PATCH] backport mmc_power_save_host usage mmc_power_save_host is a void function in the 2.6.32 kernel --- drivers/net/wireless/wl12xx/sdio.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/drivers/net/wireless/wl12xx/sdio.c b/drivers/net/wireless/wl12xx/sdio.c index 2837c2f..d9dbc9d 100644 --- a/drivers/net/wireless/wl12xx/sdio.c +++ b/drivers/net/wireless/wl12xx/sdio.c @@ -142,18 +142,24 @@ static int wl12xx_sdio_power_on(struct wl12xx_sdio_glue *glue) * might have a positive reference counter. Make sure it is * really powered on. */ +#if (LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,32)) + mmc_power_restore_host(card->host); +#else ret = mmc_power_restore_host(card->host); if (ret < 0) { pm_runtime_put_sync(&card->dev); goto out; } +#endif } sdio_claim_host(func); sdio_enable_func(func); sdio_release_host(func); +#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,32)) out: +#endif return ret; } @@ -168,14 +174,20 @@ static int wl12xx_sdio_power_off(struct wl12xx_sdio_glue *glue) sdio_release_host(func); /* Power off the card manually in case it wasn't powered off above */ +#if (LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,32)) + mmc_power_save_host(card->host); +#else ret = mmc_power_save_host(card->host); if (ret < 0) goto out; +#endif /* Let runtime PM know the card is powered off */ pm_runtime_put_sync(&card->dev); +#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,32)) out: +#endif return ret; } @@ -385,4 +397,4 @@ MODULE_FIRMWARE(WL127X_FW_NAME_MULTI); MODULE_FIRMWARE(WL128X_FW_NAME_SINGLE); MODULE_FIRMWARE(WL128X_FW_NAME_MULTI); MODULE_FIRMWARE(WL127X_PLT_FW_NAME); -MODULE_FIRMWARE(WL128X_PLT_FW_NAME); \ No newline at end of file +MODULE_FIRMWARE(WL128X_PLT_FW_NAME); -- 1.7.10.4
From d5b771987e9daa53c3830b7a656b32db2acf00fb Mon Sep 17 00:00:00 2001 From: Yoann Sculo <yoanns@bookeen.com> Date: Mon, 8 Jul 2013 14:19:39 +0200 Subject: [PATCH] fix 2.6.32 compatibility (macros redefinitions) --- include/linux/compat-2.6.33.h | 3 --- include/linux/compat-2.6.34.h | 1 - 2 files changed, 4 deletions(-) diff --git a/include/linux/compat-2.6.33.h b/include/linux/compat-2.6.33.h index c900a6f..a60fb6f 100644 --- a/include/linux/compat-2.6.33.h +++ b/include/linux/compat-2.6.33.h @@ -58,9 +58,6 @@ static inline void compat_release_firmware(const struct firmware *fw) #define IFF_DONT_BRIDGE 0x800 /* disallow bridging this ether dev */ /* source: include/linux/if.h */ -/* this will never happen on older kernels */ -#define NETDEV_POST_INIT 0xffff - /* mask netdev_alloc_skb_ip_align as debian squeeze also backports this */ #define netdev_alloc_skb_ip_align(a, b) compat_netdev_alloc_skb_ip_align(a, b) diff --git a/include/linux/compat-2.6.34.h b/include/linux/compat-2.6.34.h index a9c9dd1..c303507 100644 --- a/include/linux/compat-2.6.34.h +++ b/include/linux/compat-2.6.34.h @@ -268,7 +268,6 @@ static inline int usb_disable_autosuspend(struct usb_device *udev) { return 0; } #define MMC_PM_KEEP_POWER (1 << 0) /* preserve card power during suspend */ -#define sdio_set_host_pm_flags(a, b) 0 #define rcu_dereference_protected(p, c) (p) #define rcu_access_pointer(p) ACCESS_ONCE(p) -- 1.7.10.4
From 959ca51ecb119cf8d5b4cb11cd1b4c23f38b981a Mon Sep 17 00:00:00 2001 From: Yoann Sculo <yoanns@bookeen.com> Date: Mon, 8 Jul 2013 14:29:41 +0200 Subject: [PATCH] enable CONFIG_COMPAT_WL12XX_SDIO and CONFIG_WL12XX_PLATFORM_DATA in config file --- config.mk | 4 ++ 1 file changed, 2 insertions(+) diff --git a/config.mk b/config.mk index f09d16d..4f37298 100644 --- a/config.mk +++ b/config.mk @@ -658,6 +658,8 @@ CONFIG_BRCMUTIL=m ifdef CONFIG_CRC7 CONFIG_WL1251=m CONFIG_WL12XX=m +CONFIG_COMPAT_WL12XX_SDIO=m +CONFIG_WL12XX_PLATFORM_DATA=m endif #CONFIG_CRC7 CONFIG_MWIFIEX=m -- 1.7.10.4
Linux version 2.6.32.7 (yoann@yoann) (gcc version 4.3.2 (Sourcery G++ Lite 2008q3-72) ) #82 PREEMPT Tue Jul 9 15:27:13 CEST 2013 CPU: ARMv7 Processor [413fc082] revision 2 (ARMv7), cr=10c53c7f CPU: VIPT nonaliasing data cache, VIPT nonaliasing instruction cache Machine: ODYV3 Memory policy: ECC disabled, Data cache writeback On node 0 totalpages: 32768 free_area_init_node: node 0, pgdat c03b7344, node_mem_map c03cd000 Normal zone: 256 pages used for memmap Normal zone: 0 pages reserved Normal zone: 32512 pages, LIFO batch:7 OMAP3630 ES1.2 (l2cache iva sgx neon isp 192mhz_clk ) SRAM: Mapped pa 0x40200000 to va 0xfe400000 size: 0x100000 Reserving 16777216 bytes SDRAM for VRAM Built 1 zonelists in Zone order, mobility grouping on. Total pages: 32512 Kernel command line: console=ttyO0,115200n8 root=/dev/mmcblk0p2 rw rootwait panic=1 dev_opts=3 swv=67438144 video=omap3epfb:mode=1024x758x16x20x0,deferred_io=-1,pmic_dwell=1000,vcom=-1855,pmic=tps65185-i2c nv=2 eth=90:d7:4f:01:27:00 bt=ff:ff:ff:ff:ff:ff emei=4294967295 sn=t PID hash table entries: 512 (order: -1, 2048 bytes) Dentry cache hash table entries: 16384 (order: 4, 65536 bytes) Inode-cache hash table entries: 8192 (order: 3, 32768 bytes) Memory: 128MB = 128MB total Memory: 103380KB available (3304K code, 286K data, 148K init, 0K highmem) Hierarchical RCU implementation. NR_IRQS:402 Clocking rate (Crystal/Core/MPU): 26.0/332/600 MHz Reprogramming SDRC clock to 332000000 Hz GPMC revision 5.0 IRQ: Found an INTC at 0xfa200000 (revision 4.0) with 96 interrupts Total of 96 interrupts on 1 active controller OMAP GPIO hardware version 2.5 OMAP clockevent source: GPTIMER1 at 32768 Hz Console: colour dummy device 80x30 Calibrating delay loop... 597.64 BogoMIPS (lpj=2334720) Mount-cache hash table entries: 512 CPU: Testing write buffer coherency: ok devtmpfs: initialized regulator: core version 0.5 NET: Registered protocol family 16 Odyssey V3 Rev 3.0 board SR1:Fused Nvalues for VDD1OPP130 aaceb9 SR1:Fused Nvalues for VDD1OPP100 9a8dfc SR1:Fused Nvalues for VDD1OPP50 99d5bf SR2:Fused Nvalues for VDD2OPP100 10065800 SR2:Fused Nvalues for VDD2OPP50 10085071 OMAP DMA hardware revision 5.0 bio: create slab <bio-0> at 0 omap-uart.1: ttyO0 at MMIO 0x4806a000 (irq = 72) is a OMAP UART1 console [ttyO0] enabled SCSI subsystem initialized i2c_omap i2c_omap.1: bus 1 rev4.0 at 2400 kHz twl4030: PIH (irq 7) chaining IRQs 368..375 twl4030: power (irq 373) chaining IRQs 376..383 twl4030: gpio (irq 368) chaining IRQs 384..401 May Configuring MMC Embedded TIWLAN Controller (mmc==2) May Configuring MMC Embedded TIWLAN Controller (mmc==1) May Configuring MMC Embedded TIWLAN Controller (mmc==3) regulator: VUSB1V5: 1500 mV normal standby regulator: VUSB1V8: 1800 mV normal standby regulator: VUSB3V1: 3100 mV normal standby twl4030_usb twl4030_usb: Initialized TWL4030 USB module regulator: VMMC2: 1850 mV normal standby regulator: VMMC1: 1850 <--> 3150 mV normal standby regulator: VDAC: 1800 mV normal standby i2c_omap i2c_omap.2: bus 2 rev4.0 at 100 kHz Registering new bus SDIO! Switching to clocksource 32k_counter musb_hdrc: version 6.0, musb-dma, peripheral, debug=0 HS USB OTG: revision 0x40, sysconfig 0x2011, sysstatus 0x1, intrfsel 0x1, simenable 0x0 musb_hdrc: ConfigData=0xde (UTMI-8, dyn FIFOs, bulk combine (X), bulk split (X), HB-ISO Rx, HB-ISO Tx, SoftConn) musb_hdrc: MHDRC RTL version 1.800 musb_hdrc: setup fifo_mode 4 musb_hdrc: 28/31 max ep, 16384/16384 memory WARNING: IRQ 92 does not support wakeup musb_hdrc: USB Peripheral mode controller at fa0ab000 using DMA, IRQ 92 NET: Registered protocol family 2 IP route cache hash table entries: 1024 (order: 0, 4096 bytes) TCP established hash table entries: 4096 (order: 3, 32768 bytes) TCP bind hash table entries: 4096 (order: 2, 16384 bytes) TCP: Hash tables configured (established 4096 bind 4096) TCP reno registered UDP hash table entries: 256 (order: 0, 4096 bytes) UDP-Lite hash table entries: 256 (order: 0, 4096 bytes) NET: Registered protocol family 1 dspbridge_init: 600000 bytes @ 81500000 PMM: Registering `wifi'... omap_zoom3_wifi_init: Will Switch Wifi Power On! NetWinder Floating Point Emulator V0.97 (double precision) VFS: Disk quotas dquot_6.5.2 Dquot-cache hash table entries: 1024 (order 0, 4096 bytes) fuse init (API version 7.13) msgmni has been set to 202 alg: No test for stdrng (krng) io scheduler noop registered io scheduler deadline registered io scheduler cfq registered (default) tps65185: detected CPLD with version: 3 SA: 1 tps65185: detected device with ID=65 (TPS65185r1p2) DSP Bridge driver loaded Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled brd: module loaded loop: module loaded ODYV3 Platform [OMAP3621@800Mhz/TPS65921/TPS65185] sn = `BK615BK3FD1I0528A1' | bsn = `0017079' PMM Init. input: TWL4030 Keypad as /devices/platform/i2c_omap.1/i2c-1/1-004a/twl4030_keypad/input/input0 PMM: Registering `twlkeypad'... PMM: Registering `mma7660'... mma7660 2-004c: i2c io error: -121 mma7660 2-004c: i2c io error: -121 mma7660 2-004c: i2c io error: -121 mma7660 2-004c: i2c io error: -121 mma7660 2-004c: i2c io error: -121 mma7660 2-004c: i2c io error: -121 mma7660 2-004c: i2c io error: -121 input: mma7660 Joystick as /devices/virtual/input/input1 input: etk2136 Touchscreen as /devices/virtual/input/input2 etk2136: type: 82FB version 0.1 PMM: Registering `etk2136'... etk2136 2-0015: irq 181 busy? etk2136: probe of 2-0015 failed with error -16 input: twl4030_pwrbutton as /devices/platform/i2c_omap.1/i2c-1/1-0049/twl4030_pwrbutton/input/input3 twl_rtc twl_rtc: rtc core: registered twl_rtc as rtc0 i2c /dev entries driver nvram loaded. OMAP Watchdog Timer Rev 0x31: initial timeout 60 sec cpuidle: using governor ladder cpuidle: using governor menu Registered led device: frontlight TCP cubic registered Initializing XFRM netlink socket NET: Registered protocol family 10 NET: Registered protocol family 17 Power Management for TI OMAP3. SmartReflex driver initialized SmartReflex driver initialized Disabling unused clock "gpt2_ick" Disabling unused clock "uart3_ick" Disabling unused clock "gpio2_dbck" Disabling unused clock "gpio3_dbck" Disabling unused clock "gpio5_dbck" Disabling unused clock "gpio6_dbck" Disabling unused clock "gpt2_fck" Disabling unused clock "uart3_fck" Disabling unused clock "dss_ick" Disabling unused clock "dss2_alwon_fck" Disabling unused clock "dss_96m_fck" Disabling unused clock "dss1_alwon_fck" Disabling unused clock "i2c_ick" Disabling unused clock "i2c_fck" Disabling unused clock "sad2d_ick" Disabling unused clock "dpll4_m6x2_ck" Disabling unused clock "dpll4_m5x2_ck" Disabling unused clock "dpll4_m3x2_ck" Disabling unused clock "dpll3_m3x2_ck" Disabling unused clock "sys_clkout1" VFP support v0.3: implementor 41 architecture 3 part 30 variant c rev 3 twl_rtc twl_rtc: setting system clock to 2012-12-26 04:22:37 UTC (1356495757) Waiting for root device /dev/mmcblk0p2... mmc1: new high speed MMC card at address 0001 mmcblk0: mmc1:0001 002G49 1.82 GiB mmcblk0: p1 p2 p3 p4 kjournald starting. Commit interval 5 seconds EXT3-fs (mmcblk0p2): using internal journal EXT3-fs (mmcblk0p2): mounted filesystem with writeback data mode VFS: Mounted root (ext3 filesystem) on device 179:2. devtmpfs: mounted Freeing init memory: 148K mmc2: card ROCR value: 0x80FF8000 mmc2: host does not support reading read-only switch. assuming write-enable. mmc2: new SD card at address d532 mmcblk1: mmc2:d532 SU01G 968 MiB mmcblk1: p1 udev: starting version 141 kjournald starting. Commit interval 5 seconds EXT3-fs (mmcblk0p3): using internal journal EXT3-fs (mmcblk0p3): recovery complete EXT3-fs (mmcblk0p3): mounted filesystem with writeback data mode proc_load: Processor Loaded /lib/dsp/baseimage.dof omap mailbox rev 4.0 proc_start: dsp in running state procwrap_detach: deprecated dspbridge ioctl proc_memory_sync: InValid address parameters 4054a000 be000 proc_memory_sync: InValid address parameters 40488000 2f600 proc_memory_sync: InValid address parameters 404b8000 2f600 DSPTrace:=== DSP: subframeip SN ver.1.08 (MV5) 07.X.2011 #1 (PPU)(IMG)(EINK-7) === proc_memory_sync: InValid address parameters 404e8000 2f600 proc_memory_sync: InValid address parameters 40518000 2f600 proc_memory_sync: InValid address parameters 4001e000 80 proc_memory_sync: InValid address parameters 4001f000 80 proc_memory_sync: InValid address parameters 40020000 80 proc_memory_sync: InValid address parameters 40021000 80 proc_memory_sync: InValid address parameters 40022000 80 proc_memory_sync: InValid address parameters 40548000 80 proc_memory_sync: InValid address parameters 40549000 80 proc_memory_sync: InValid address parameters 40608000 200 DSPTrace:=== DSP: Load waveforms for t = 32 === === DSP: EINK parser version 1.07 (MV5) === -I- ------ Header 1 ------ DSPTrace:-I- File checksum B44B6C43 (hex) -I- File size 143632 -I- Serial No 00000DE2 (hex) -I- Run Type: C -I- FPL: Vizplex 220 -I- FPL lot No 00A2 (hex) -I- Mode Version: 0 INIT, 1 DU, 2 GC16, 3 ***, 4 A2, 5 GL16, 6 A2IN, 7 A2OUT -I- Waveform version/subversion 18/01 (hex) -I- Waveform type: WS -I- Panel size: 6.0" -W- Manufacturer code: Unknown 0x6D -I- XWIA 000040 (hex) -I- ------ Header 2 ------ -I- WMTA = 000062 (hex) -I- Control format (FVSN): Simple Basic Format -I- Entry Size (ES): 2 bits. -I- Entry Count (EC): 256 entries per sub-frame. DSPTrace:-I- Max Frame Count (MFC): 256 sub-frames per update. -I- Temperature Range Table [15] loaded. -I- Ranges: 0-3-6-9-12-15-18-21-24-27-30-33-38-43-48 -I- ======================================== === ======================================== DSPTrace:-I- [0] Loaded ID = 2, t = 30 - 33, Subframes = 59 DSPTrace:-I- [1] Loaded ID = 2, t = 30 - 33, Subframes = 59 DSPTrace:-I- [2] Loaded ID = 1, t = 30 - 33, Subframes = 17 DSPTrace:-I- [3] Loaded ID = 4, t = 30 - 33, Subframes = 10 DSPTrace:-I- [4] Loaded ID = 5, t = 30 - 33, Subframes = 59 DSPTrace:-I- [5] Loaded ID = 6, t = 30 - 33, Subframes = 27 DSPTrace:-I- [6] Loaded ID = 7, t = 30 - 33, Subframes = 69 DSPTrace:-I- [7] Loaded ID = 0, t = 30 - 33, Subframes = 129 === ======================================== fusd: starting, $Id:$, debugging messages disabled cdev control id: 263192576 g_file_storage gadget: File-backed Storage Gadget, version: 20 November 2008 g_file_storage gadget: Number of LUNs=2 FAT: utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive! FAT: utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive! mma7660 2-004c: i2c io error: -121 mma7660 2-004c: i2c io error: -121 mma7660 2-004c: i2c io error: -121 musb_hdrc periph: enabled ep1in for bulk IN, dma, maxpacket 512 musb_hdrc periph: enabled ep1out for bulk OUT, dma, maxpacket 512 g_file_storage gadget: high speed config #1 etk2136: poweron packet: 545800A1