diff options
| author | Philip Balister <philip@balister.org> | 2008-08-08 22:01:58 +0000 |
|---|---|---|
| committer | Philip Balister <philip@balister.org> | 2008-08-08 22:01:58 +0000 |
| commit | e9938336c173acad89726fa60605abba7c23d57f (patch) | |
| tree | 2f9ec804e06669659653a1c8049639f4b6c31b7e /packages/linux | |
| parent | 1f651e7bfd7409c8db96d530b74b31af2a79cf15 (diff) | |
| parent | da481e02805d3a9ec6e4cd70b6cbeb76d0af6fdb (diff) | |
merge of '05dd48c35e7fc8bd8ec725a975682953f4e2eb8b'
and 'e5d51ef06db323f64e81b4277041a3eb479eda1b'
Diffstat (limited to 'packages/linux')
17 files changed, 97 insertions, 2335 deletions
diff --git a/packages/linux/linux-kaiser_2.6.24+git.bb b/packages/linux/linux-kaiser_2.6.24+git.bb index 879c6e23be..73eb1e3b46 100644 --- a/packages/linux/linux-kaiser_2.6.24+git.bb +++ b/packages/linux/linux-kaiser_2.6.24+git.bb @@ -3,9 +3,7 @@ require linux.inc PV = "2.6.24+git${SRCREV}" PR = "r1" -COMPATIBLE_MACHINE = "htckaiser" -COMPATIBLE_MACHINE = "htcpolaris" - +COMPATIBLE_MACHINE = "htckaiser|htcpolaris" SRC_URI = "git://git.linuxtogo.org/home/groups/mobile-linux/kernel.git;branch=htc-msm;protocol=git" diff --git a/packages/linux/linux-neuros/neuros-osd2/defconfig b/packages/linux/linux-neuros/neuros-osd2/defconfig index 1958f1ca0c..17c100fe4f 100644 --- a/packages/linux/linux-neuros/neuros-osd2/defconfig +++ b/packages/linux/linux-neuros/neuros-osd2/defconfig @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit # Linux kernel version: 2.6.23-davinci1 -# Thu Mar 6 20:08:16 2008 +# Thu Aug 7 13:02:41 2008 # CONFIG_ARM=y CONFIG_SYS_SUPPORTS_APM_EMULATION=y @@ -32,7 +32,7 @@ CONFIG_EXPERIMENTAL=y CONFIG_BROKEN_ON_SMP=y CONFIG_INIT_ENV_ARG_LIMIT=32 CONFIG_LOCALVERSION="" -# CONFIG_LOCALVERSION_AUTO is not set +CONFIG_LOCALVERSION_AUTO=y # CONFIG_SWAP is not set CONFIG_SYSVIPC=y CONFIG_SYSVIPC_SYSCTL=y @@ -188,6 +188,7 @@ CONFIG_ARM_THUMB=y # CONFIG_CPU_DCACHE_WRITETHROUGH is not set # CONFIG_CPU_CACHE_ROUND_ROBIN is not set # CONFIG_OUTER_CACHE is not set +CONFIG_FORCE_MAX_ZONEORDER=13 # # Bus support @@ -208,7 +209,8 @@ CONFIG_ARM_THUMB=y # CONFIG_HIGH_RES_TIMERS is not set # CONFIG_PREEMPT is not set CONFIG_HZ=100 -# CONFIG_AEABI is not set +CONFIG_AEABI=y +CONFIG_OABI_COMPAT=y # CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set CONFIG_SELECT_MEMORY_MODEL=y CONFIG_FLATMEM_MANUAL=y @@ -231,7 +233,7 @@ CONFIG_ALIGNMENT_TRAP=y # CONFIG_ZBOOT_ROM_TEXT=0x0 CONFIG_ZBOOT_ROM_BSS=0x0 -CONFIG_CMDLINE="" +CONFIG_CMDLINE=" debug " # CONFIG_XIP_KERNEL is not set # CONFIG_KEXEC is not set @@ -252,7 +254,6 @@ CONFIG_CMDLINE="" CONFIG_BINFMT_ELF=y # CONFIG_BINFMT_AOUT is not set # CONFIG_BINFMT_MISC is not set -# CONFIG_ARTHUR is not set # # Power management options @@ -377,12 +378,17 @@ CONFIG_NETFILTER=y # Wireless # # CONFIG_CFG80211 is not set -# CONFIG_WIRELESS_EXT is not set +CONFIG_WIRELESS_EXT=y # CONFIG_MAC80211 is not set CONFIG_IEEE80211=y +# CONFIG_IEEE80211_DEBUG is not set +CONFIG_IEEE80211_CRYPT_WEP=y +# CONFIG_IEEE80211_CRYPT_CCMP is not set +# CONFIG_IEEE80211_CRYPT_TKIP is not set +CONFIG_IEEE80211_SOFTMAC=y +# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set # CONFIG_RFKILL is not set # CONFIG_NET_9P is not set -CONFIG_IEEE80211_SOFTMAC=y # # Device Drivers @@ -604,17 +610,21 @@ CONFIG_NET_ETHERNET=y # CONFIG_MII is not set # CONFIG_AX88796 is not set # CONFIG_SMC91X is not set +CONFIG_TI_DAVINCI_EMAC=y # CONFIG_DM9000 is not set CONFIG_NETDEV_1000=y CONFIG_NETDEV_10000=y -CONFIG_TI_DAVINCI_EMAC=y # # Wireless LAN # # CONFIG_WLAN_PRE80211 is not set CONFIG_WLAN_80211=y +# CONFIG_LIBERTAS is not set +# CONFIG_USB_ZD1201 is not set +# CONFIG_HOSTAP is not set CONFIG_ZD1211RW=y +# CONFIG_ZD1211RW_DEBUG is not set # # USB Network Adapters @@ -680,6 +690,12 @@ CONFIG_KEYBOARD_XTKBD=y # CONFIG_INPUT_TABLET is not set # CONFIG_INPUT_TOUCHSCREEN is not set CONFIG_INPUT_MISC=y +# CONFIG_INPUT_ATI_REMOTE is not set +# CONFIG_INPUT_ATI_REMOTE2 is not set +# CONFIG_INPUT_KEYSPAN_REMOTE is not set +# CONFIG_INPUT_POWERMATE is not set +# CONFIG_INPUT_YEALINK is not set +# CONFIG_INPUT_UINPUT is not set CONFIG_INPUT_NEUROS_IR=m # @@ -724,9 +740,9 @@ CONFIG_HW_RANDOM=y # CONFIG_R3964 is not set # CONFIG_RAW_DRIVER is not set CONFIG_RESIZER=y -CONFIG_THS7313=y -CONFIG_THS8200=y # CONFIG_TCG_TPM is not set +# CONFIG_PREVIEWER is not set +CONFIG_THS7313=y CONFIG_I2C=y CONFIG_I2C_BOARDINFO=y CONFIG_I2C_CHARDEV=y @@ -766,12 +782,12 @@ CONFIG_SENSORS_TLV320AIC33=y # CONFIG_SENSORS_MAX6875 is not set # CONFIG_SENSORS_TSL2550 is not set # CONFIG_GPIOEXPANDER_DAVINCI is not set +CONFIG_I2C_NEUROS_MSP430=m +CONFIG_I2C_NEUROS_SIL9034HDMI=m # CONFIG_I2C_DEBUG_CORE is not set # CONFIG_I2C_DEBUG_ALGO is not set # CONFIG_I2C_DEBUG_BUS is not set # CONFIG_I2C_DEBUG_CHIP is not set -CONFIG_I2C_NEUROS_MSP430=m -CONFIG_I2C_NEUROS_SIL9034HDMI=m # # SPI support @@ -848,10 +864,14 @@ CONFIG_VIDEO_V4L2=y CONFIG_VIDEO_CAPTURE_DRIVERS=y # CONFIG_VIDEO_ADV_DEBUG is not set CONFIG_VIDEO_HELPER_CHIPS_AUTO=y -CONFIG_VIDEO_DAVINCI=y CONFIG_VIDEO_TVP5150=y -CONFIG_VIDEO_TVP7000=y +CONFIG_VIDEO_DAVINCI=y + +# +# Video Capture Decoder +# # CONFIG_VIDEO_TVP5146 is not set +CONFIG_VIDEO_TVP7000=y # CONFIG_VIDEO_CPIA is not set # CONFIG_VIDEO_CPIA2 is not set # CONFIG_VIDEO_SAA5246A is not set @@ -880,6 +900,7 @@ CONFIG_RADIO_ADAPTERS=y # CONFIG_RADIO_TEA5761 is not set # CONFIG_USB_DSBR is not set # CONFIG_DVB_CORE is not set +CONFIG_VIDEO_BUF=y CONFIG_DAB=y # CONFIG_USB_DABUSB is not set @@ -894,6 +915,7 @@ CONFIG_DAB=y # CONFIG_DISPLAY_SUPPORT is not set # CONFIG_VGASTATE is not set CONFIG_VIDEO_OUTPUT_CONTROL=y +CONFIG_THS8200=y CONFIG_FB=y CONFIG_FIRMWARE_EDID=y # CONFIG_FB_DDC is not set @@ -918,6 +940,7 @@ CONFIG_FB_DEFERRED_IO=y # CONFIG_FB_DAVINCI is not set # CONFIG_FB_VIRTUAL is not set CONFIG_FB_DM=y + # # Console display driver support # @@ -929,10 +952,7 @@ CONFIG_FRAMEBUFFER_CONSOLE=y # CONFIG_FONTS is not set CONFIG_FONT_8x8=y CONFIG_FONT_8x16=y -CONFIG_LOGO=y -CONFIG_LOGO_LINUX_MONO=y -CONFIG_LOGO_LINUX_VGA16=y -CONFIG_LOGO_LINUX_CLUT224=y +# CONFIG_LOGO is not set # # Sound @@ -951,7 +971,8 @@ CONFIG_SOUND_PRIME=y # CONFIG_SOUND_MSNDCLAS is not set # CONFIG_SOUND_MSNDPIN is not set CONFIG_SOUND_DAVINCI=y -CONFIG_SOUND_DAVINCI_AIC32=y +CONFIG_SOUND_DAVINCI_AIC32=m +# CONFIG_SOUND_DAVINCI_AIC33 is not set # # DaVinci Audio Options @@ -1003,9 +1024,10 @@ CONFIG_USB_MUSB_SOC=y # DaVinci 644x USB support # CONFIG_USB_MUSB_HOST=y -# CONFIG_USB_MUSB_PERIPHERAL=y +# CONFIG_USB_MUSB_PERIPHERAL is not set # CONFIG_USB_MUSB_OTG is not set -CONFIG_USB_GADGET_MUSB_HDRC=y +# CONFIG_USB_GADGET_MUSB_HDRC is not set +CONFIG_USB_MUSB_HDRC_HCD=y # CONFIG_MUSB_PIO_ONLY is not set # CONFIG_USB_INVENTRA_DMA is not set CONFIG_USB_TI_CPPI_DMA=y @@ -1092,7 +1114,8 @@ CONFIG_USB_GADGET_SELECTED=y # CONFIG_USB_GADGET_FSL_USB2 is not set # CONFIG_USB_GADGET_NET2280 is not set # CONFIG_USB_GADGET_PXA2XX is not set -# CONFIG_USB_GADGET_M66592 is not set +CONFIG_USB_GADGET_M66592=y +CONFIG_USB_M66592=m # CONFIG_USB_GADGET_GOKU is not set # CONFIG_USB_GADGET_LH7A40X is not set # CONFIG_USB_GADGET_OMAP is not set @@ -1339,7 +1362,8 @@ CONFIG_NLS_UTF8=m # # Profiling support # -# CONFIG_PROFILING is not set +CONFIG_PROFILING=y +CONFIG_OPROFILE=y # # Kernel hacking @@ -1360,7 +1384,44 @@ CONFIG_FRAME_POINTER=y # # CONFIG_KEYS is not set # CONFIG_SECURITY is not set -# CONFIG_CRYPTO is not set +CONFIG_CRYPTO=y +CONFIG_CRYPTO_ALGAPI=y +CONFIG_CRYPTO_BLKCIPHER=y +CONFIG_CRYPTO_MANAGER=y +# CONFIG_CRYPTO_HMAC is not set +# CONFIG_CRYPTO_XCBC is not set +# CONFIG_CRYPTO_NULL is not set +# CONFIG_CRYPTO_MD4 is not set +# CONFIG_CRYPTO_MD5 is not set +# CONFIG_CRYPTO_SHA1 is not set +# CONFIG_CRYPTO_SHA256 is not set +# CONFIG_CRYPTO_SHA512 is not set +# CONFIG_CRYPTO_WP512 is not set +# CONFIG_CRYPTO_TGR192 is not set +# CONFIG_CRYPTO_GF128MUL is not set +CONFIG_CRYPTO_ECB=y +CONFIG_CRYPTO_CBC=m +CONFIG_CRYPTO_PCBC=m +# CONFIG_CRYPTO_LRW is not set +# CONFIG_CRYPTO_CRYPTD is not set +# CONFIG_CRYPTO_DES is not set +# CONFIG_CRYPTO_FCRYPT is not set +# CONFIG_CRYPTO_BLOWFISH is not set +# CONFIG_CRYPTO_TWOFISH is not set +# CONFIG_CRYPTO_SERPENT is not set +# CONFIG_CRYPTO_AES is not set +# CONFIG_CRYPTO_CAST5 is not set +# CONFIG_CRYPTO_CAST6 is not set +# CONFIG_CRYPTO_TEA is not set +CONFIG_CRYPTO_ARC4=y +# CONFIG_CRYPTO_KHAZAD is not set +# CONFIG_CRYPTO_ANUBIS is not set +# CONFIG_CRYPTO_DEFLATE is not set +# CONFIG_CRYPTO_MICHAEL_MIC is not set +# CONFIG_CRYPTO_CRC32C is not set +# CONFIG_CRYPTO_CAMELLIA is not set +# CONFIG_CRYPTO_TEST is not set +CONFIG_CRYPTO_HW=y # # Library routines diff --git a/packages/linux/linux-neuros_git.bb b/packages/linux/linux-neuros_git.bb index 77b68decf6..0a7996b614 100644 --- a/packages/linux/linux-neuros_git.bb +++ b/packages/linux/linux-neuros_git.bb @@ -2,10 +2,10 @@ require linux.inc DESCRIPTION = "Linux kernel for Neuros OSD devices" -SRCREV = "3560f6dca0c8dd97d9e2a935f68303effb3b8cc5" +SRCREV = "3ed322c3979aa3df112f9d41415fa8c95b904500" PV = "2.6.23-${PR}+git${SRCREV}" -PR = "r10" +PR = "r13" COMPATIBLE_MACHINE = "(neuros-osd|neuros-osd2)" diff --git a/packages/linux/linux-omap2-git/beagleboard/TWL4030-01.patch b/packages/linux/linux-omap2-git/beagleboard/TWL4030-01.patch deleted file mode 100644 index c361c33d61..0000000000 --- a/packages/linux/linux-omap2-git/beagleboard/TWL4030-01.patch +++ /dev/null @@ -1,43 +0,0 @@ -TWL4030: remove superfluous PWR interrupt status clear before masking - -From: Paul Walmsley <paul@pwsan.com> - -twl_irq_init() clears PWR interrupt status bits, then masks the interrupts -off, then clears the PWR interrupt status bits again. The first clear -seems unnecessary, so, remove it. - -Signed-off-by: Paul Walmsley <paul@pwsan.com> ---- - - drivers/i2c/chips/twl4030-core.c | 18 ------------------ - 1 files changed, 0 insertions(+), 18 deletions(-) - -diff --git a/drivers/i2c/chips/twl4030-core.c b/drivers/i2c/chips/twl4030-core.c -index adc45d4..ff662bc 100644 ---- a/drivers/i2c/chips/twl4030-core.c -+++ b/drivers/i2c/chips/twl4030-core.c -@@ -719,24 +719,6 @@ static void twl_init_irq(void) - char *msg = "Unable to register interrupt subsystem"; - unsigned int irq_num; - -- /* -- * We end up with interrupts from other modules before -- * they get a chance to handle them... -- */ -- /* PWR_ISR1 */ -- res = twl4030_i2c_write_u8(TWL4030_MODULE_INT, 0xFF, 0x00); -- if (res < 0) { -- pr_err("%s[%d][%d]\n", msg, res, __LINE__); -- return; -- } -- -- /* PWR_ISR2 */ -- res = twl4030_i2c_write_u8(TWL4030_MODULE_INT, 0xFF, 0x02); -- if (res < 0) { -- pr_err("%s[%d][%d]\n", msg, res, __LINE__); -- return; -- } -- - /* PWR_IMR1 */ - res = twl4030_i2c_write_u8(TWL4030_MODULE_INT, 0xFF, 0x1); - if (res < 0) { diff --git a/packages/linux/linux-omap2-git/beagleboard/TWL4030-02.patch b/packages/linux/linux-omap2-git/beagleboard/TWL4030-02.patch deleted file mode 100644 index 48a59b945b..0000000000 --- a/packages/linux/linux-omap2-git/beagleboard/TWL4030-02.patch +++ /dev/null @@ -1,71 +0,0 @@ -TWL4030: clear TWL GPIO interrupt status registers - -From: Paul Walmsley <paul@pwsan.com> - -twl_init_irq() does not clear the TWL GPIO ISR registers, but the PIH -ISR thinks that it has. This causes any previously-latched GPIO interrupts -to be stuck on until twl4030-gpio.c initializes, often drowning the console in - - TWL4030 module irq 368 is disabled but can't be masked! - -messages. This seems to be a particular problem when booting on Beagle. - -Signed-off-by: Paul Walmsley <paul@pwsan.com> ---- - - drivers/i2c/chips/twl4030-core.c | 42 ++++++++++++++++++++++++++++++++++++++ - 1 files changed, 42 insertions(+), 0 deletions(-) - -diff --git a/drivers/i2c/chips/twl4030-core.c b/drivers/i2c/chips/twl4030-core.c -index ff662bc..dfc3805 100644 ---- a/drivers/i2c/chips/twl4030-core.c -+++ b/drivers/i2c/chips/twl4030-core.c -@@ -857,6 +857,48 @@ static void twl_init_irq(void) - return; - } - -+ /* GPIO_ISR1A */ -+ res = twl4030_i2c_write_u8(TWL4030_MODULE_GPIO, 0xff, 0x19); -+ if (res < 0) { -+ pr_err("%s[%d][%d]\n", msg, res, __LINE__); -+ return; -+ } -+ -+ /* GPIO_ISR2A */ -+ res = twl4030_i2c_write_u8(TWL4030_MODULE_GPIO, 0xff, 0x1a); -+ if (res < 0) { -+ pr_err("%s[%d][%d]\n", msg, res, __LINE__); -+ return; -+ } -+ -+ /* GPIO_ISR3A */ -+ res = twl4030_i2c_write_u8(TWL4030_MODULE_GPIO, 0xff, 0x1b); -+ if (res < 0) { -+ pr_err("%s[%d][%d]\n", msg, res, __LINE__); -+ return; -+ } -+ -+ /* GPIO_ISR1B */ -+ res = twl4030_i2c_write_u8(TWL4030_MODULE_GPIO, 0xff, 0x1f); -+ if (res < 0) { -+ pr_err("%s[%d][%d]\n", msg, res, __LINE__); -+ return; -+ } -+ -+ /* GPIO_ISR2B */ -+ res = twl4030_i2c_write_u8(TWL4030_MODULE_GPIO, 0xff, 0x20); -+ if (res < 0) { -+ pr_err("%s[%d][%d]\n", msg, res, __LINE__); -+ return; -+ } -+ -+ /* GPIO_ISR3B */ -+ res = twl4030_i2c_write_u8(TWL4030_MODULE_GPIO, 0xff, 0x21); -+ if (res < 0) { -+ pr_err("%s[%d][%d]\n", msg, res, __LINE__); -+ return; -+ } -+ - /* install an irq handler for each of the PIH modules */ - for (i = TWL4030_IRQ_BASE; i < TWL4030_IRQ_END; i++) { - set_irq_chip(i, &twl4030_irq_chip); diff --git a/packages/linux/linux-omap2-git/beagleboard/TWL4030-03.patch b/packages/linux/linux-omap2-git/beagleboard/TWL4030-03.patch deleted file mode 100644 index fe1bea5398..0000000000 --- a/packages/linux/linux-omap2-git/beagleboard/TWL4030-03.patch +++ /dev/null @@ -1,82 +0,0 @@ -TWL4030: use correct register addresses for BCI IMR registers - -From: Paul Walmsley <paul@pwsan.com> - -The existing code to mask and clear BCI interrupts in twl_init_irq() is -wrong. It uses the wrong register offsets, it does not mask all of the -BCI IMR registers, and it does not clear all of the BCI ISR registers. - -Signed-off-by: Paul Walmsley <paul@pwsan.com> ---- - - drivers/i2c/chips/twl4030-core.c | 40 ++++++++++++++++++++++++++++++++------ - 1 files changed, 34 insertions(+), 6 deletions(-) - -diff --git a/drivers/i2c/chips/twl4030-core.c b/drivers/i2c/chips/twl4030-core.c -index dfc3805..bb0732c 100644 ---- a/drivers/i2c/chips/twl4030-core.c -+++ b/drivers/i2c/chips/twl4030-core.c -@@ -750,29 +750,57 @@ static void twl_init_irq(void) - /* POWER HACK (END) */ - /* Slave address 0x4A */ - -- /* BCIIMR1_1 */ -+ /* BCIIMR1A */ -+ res = twl4030_i2c_write_u8(TWL4030_MODULE_INTERRUPTS, 0xFF, 0x2); -+ if (res < 0) { -+ pr_err("%s[%d][%d]\n", msg, res, __LINE__); -+ return; -+ } -+ -+ /* BCIIMR2A */ - res = twl4030_i2c_write_u8(TWL4030_MODULE_INTERRUPTS, 0xFF, 0x3); - if (res < 0) { - pr_err("%s[%d][%d]\n", msg, res, __LINE__); - return; - } - -- /* BCIIMR1_2 */ -- res = twl4030_i2c_write_u8(TWL4030_MODULE_INTERRUPTS, 0xFF, 0x4); -+ /* BCIIMR1B */ -+ res = twl4030_i2c_write_u8(TWL4030_MODULE_INTERRUPTS, 0xFF, 0x6); - if (res < 0) { - pr_err("%s[%d][%d]\n", msg, res, __LINE__); - return; - } - -- /* BCIIMR2_1 */ -+ /* BCIIMR2B */ - res = twl4030_i2c_write_u8(TWL4030_MODULE_INTERRUPTS, 0xFF, 0x7); - if (res < 0) { - pr_err("%s[%d][%d]\n", msg, res, __LINE__); - return; - } - -- /* BCIIMR2_2 */ -- res = twl4030_i2c_write_u8(TWL4030_MODULE_INTERRUPTS, 0xFF, 0x8); -+ /* BCIISR1A */ -+ res = twl4030_i2c_write_u8(TWL4030_MODULE_INTERRUPTS, 0xFF, 0x0); -+ if (res < 0) { -+ pr_err("%s[%d][%d]\n", msg, res, __LINE__); -+ return; -+ } -+ -+ /* BCIISR2A */ -+ res = twl4030_i2c_write_u8(TWL4030_MODULE_INTERRUPTS, 0xFF, 0x1); -+ if (res < 0) { -+ pr_err("%s[%d][%d]\n", msg, res, __LINE__); -+ return; -+ } -+ -+ /* BCIISR1B */ -+ res = twl4030_i2c_write_u8(TWL4030_MODULE_INTERRUPTS, 0xFF, 0x4); -+ if (res < 0) { -+ pr_err("%s[%d][%d]\n", msg, res, __LINE__); -+ return; -+ } -+ -+ /* BCIISR2B */ -+ res = twl4030_i2c_write_u8(TWL4030_MODULE_INTERRUPTS, 0xFF, 0x5); - if (res < 0) { - pr_err("%s[%d][%d]\n", msg, res, __LINE__); - return; diff --git a/packages/linux/linux-omap2-git/beagleboard/TWL4030-04.patch b/packages/linux/linux-omap2-git/beagleboard/TWL4030-04.patch deleted file mode 100644 index fb65ac98bb..0000000000 --- a/packages/linux/linux-omap2-git/beagleboard/TWL4030-04.patch +++ /dev/null @@ -1,38 +0,0 @@ -TWL4030: clear MADC interrupt status registers upon init - -From: Paul Walmsley <paul@pwsan.com> - -twl_init_irq() does not clear MADC interrupt status registers upon init - -fix. - -Signed-off-by: Paul Walmsley <paul@pwsan.com> ---- - - drivers/i2c/chips/twl4030-core.c | 14 ++++++++++++++ - 1 files changed, 14 insertions(+), 0 deletions(-) - -diff --git a/drivers/i2c/chips/twl4030-core.c b/drivers/i2c/chips/twl4030-core.c -index bb0732c..9d93524 100644 ---- a/drivers/i2c/chips/twl4030-core.c -+++ b/drivers/i2c/chips/twl4030-core.c -@@ -821,6 +821,20 @@ static void twl_init_irq(void) - return; - } - -+ /* MADC_ISR1 */ -+ res = twl4030_i2c_write_u8(TWL4030_MODULE_MADC, 0xFF, 0x61); -+ if (res < 0) { -+ pr_err("%s[%d][%d]\n", msg, res, __LINE__); -+ return; -+ } -+ -+ /* MADC_ISR2 */ -+ res = twl4030_i2c_write_u8(TWL4030_MODULE_MADC, 0xFF, 0x63); -+ if (res < 0) { -+ pr_err("%s[%d][%d]\n", msg, res, __LINE__); -+ return; -+ } -+ - /* key Pad */ - /* KEYPAD - IMR1 */ - res = twl4030_i2c_write_u8(TWL4030_MODULE_KEYPAD, 0xFF, (0x12)); diff --git a/packages/linux/linux-omap2-git/beagleboard/TWL4030-05.patch b/packages/linux/linux-omap2-git/beagleboard/TWL4030-05.patch deleted file mode 100644 index 02a72ed9df..0000000000 --- a/packages/linux/linux-omap2-git/beagleboard/TWL4030-05.patch +++ /dev/null @@ -1,303 +0,0 @@ -TWL4030: use *_SIH_CTRL.COR bit to determine whether to read or write ISR to clear - -From: Paul Walmsley <paul@pwsan.com> - -TWL4030 interrupt status register bits can be cleared in one of two ways: -either by reading from the register, or by writing a 1 to the -appropriate bit(s) in the register. This behavior can be altered at any -time by the <twlmodule>_SIH_CTRL.COR register bit ("clear-on-read"). - -The TWL4030 TRM is deeply confused as to whether COR=1 means that the -registers are cleared on reads, or cleared on writes. Peter De -Schrijver <peter.de-schrijver> confirms that COR=1 means that the registers -are cleared on read. - -So, for each TWL4030 SIH, check the value of the *_SIH_CTRL.COR bit, and if -it is 1, use reads to clear the ISRs; if it is 0, use writes. - -Also, use WARN_ON() to warn if the read/write failed, and don't skip -the rest of the initialization on failure either. - -Thanks to Peter for his help with this patch. - - -Signed-off-by: Paul Walmsley <paul@pwsan.com> ---- - - drivers/i2c/chips/twl4030-core.c | 183 ++++++++++++++++++++++---------------- - 1 files changed, 106 insertions(+), 77 deletions(-) - -diff --git a/drivers/i2c/chips/twl4030-core.c b/drivers/i2c/chips/twl4030-core.c -index 9d93524..eae0634 100644 ---- a/drivers/i2c/chips/twl4030-core.c -+++ b/drivers/i2c/chips/twl4030-core.c -@@ -133,6 +133,16 @@ - /* on I2C-1 for 2430SDP */ - #define CONFIG_I2C_TWL4030_ID 1 - -+/* SIH_CTRL registers */ -+#define TWL4030_INT_PWR_SIH_CTRL 0x07 -+#define TWL4030_INTERRUPTS_BCISIHCTRL 0x0d -+#define TWL4030_MADC_MADC_SIH_CTRL 0x67 -+#define TWL4030_KEYPAD_KEYP_SIH_CTRL 0x17 -+#define TWL4030_GPIO_GPIO_SIH_CTRL 0x2d -+ -+#define TWL4030_SIH_CTRL_COR_MASK (1 << 2) -+ -+ - /* Helper functions */ - static int - twl4030_detect_client(struct i2c_adapter *adapter, unsigned char sid); -@@ -712,13 +722,61 @@ static int power_companion_init(void) - return e; - } - -+/** -+ * twl4030_i2c_clear_isr - clear TWL4030 SIH ISR regs via read + write -+ * @mod_no: TWL4030 module number -+ * @reg: register index to clear -+ * @cor: value of the <module>_SIH_CTRL.COR bit (1 or 0) -+ * -+ * Either reads (cor == 1) or writes (cor == 0) to a TWL4030 interrupt -+ * status register to ensure that any prior interrupts are cleared. -+ * Returns the status from the I2C read operation. -+ */ -+static int twl4030_i2c_clear_isr(u8 mod_no, u8 reg, u8 cor) -+{ -+ u8 tmp; -+ -+ return (cor) ? twl4030_i2c_read_u8(mod_no, &tmp, reg) : -+ twl4030_i2c_write_u8(mod_no, 0xff, reg); -+} -+ -+/** -+ * twl4030_read_cor_bit - are TWL module ISRs cleared by reads or writes? -+ * @mod_no: TWL4030 module number -+ * @reg: register index to clear -+ * -+ * Returns 1 if the TWL4030 SIH interrupt status registers (ISRs) for -+ * the specified TWL module are cleared by reads, or 0 if cleared by -+ * writes. -+ */ -+static int twl4030_read_cor_bit(u8 mod_no, u8 reg) -+{ -+ u8 tmp = 0; -+ -+ WARN_ON(twl4030_i2c_read_u8(mod_no, &tmp, reg) < 0); -+ -+ tmp &= TWL4030_SIH_CTRL_COR_MASK; -+ tmp >>= __ffs(TWL4030_SIH_CTRL_COR_MASK); -+ -+ return tmp; -+} -+ - static void twl_init_irq(void) - { - int i = 0; - int res = 0; -+ int cor; - char *msg = "Unable to register interrupt subsystem"; - unsigned int irq_num; - -+ /* -+ * For each TWL4030 module with ISR/IMR registers, mask all -+ * interrupts and then clear any existing interrupt status bits, -+ * since we initially do not have any TWL4030 module interrupt -+ * handlers present. -+ */ -+ -+ - /* PWR_IMR1 */ - res = twl4030_i2c_write_u8(TWL4030_MODULE_INT, 0xFF, 0x1); - if (res < 0) { -@@ -734,20 +792,18 @@ static void twl_init_irq(void) - } - - /* Clear off any other pending interrupts on power */ -+ -+ /* Are PWR interrupt status bits cleared by reads or writes? */ -+ cor = twl4030_read_cor_bit(TWL4030_MODULE_INT, -+ TWL4030_INT_PWR_SIH_CTRL); -+ WARN_ON(cor < 0); -+ - /* PWR_ISR1 */ -- res = twl4030_i2c_write_u8(TWL4030_MODULE_INT, 0xFF, 0x00); -- if (res < 0) { -- pr_err("%s[%d][%d]\n", msg, res, __LINE__); -- return; -- } -+ WARN_ON(twl4030_i2c_clear_isr(TWL4030_MODULE_INT, 0x00, cor) < 0); - - /* PWR_ISR2 */ -- res = twl4030_i2c_write_u8(TWL4030_MODULE_INT, 0xFF, 0x02); -- if (res < 0) { -- pr_err("%s[%d][%d]\n", msg, res, __LINE__); -- return; -- } -- /* POWER HACK (END) */ -+ WARN_ON(twl4030_i2c_clear_isr(TWL4030_MODULE_INT, 0x02, cor) < 0); -+ - /* Slave address 0x4A */ - - /* BCIIMR1A */ -@@ -778,33 +834,22 @@ static void twl_init_irq(void) - return; - } - -+ /* Are BCI interrupt status bits cleared by reads or writes? */ -+ cor = twl4030_read_cor_bit(TWL4030_MODULE_INTERRUPTS, -+ TWL4030_INTERRUPTS_BCISIHCTRL); -+ WARN_ON(cor < 0); -+ - /* BCIISR1A */ -- res = twl4030_i2c_write_u8(TWL4030_MODULE_INTERRUPTS, 0xFF, 0x0); -- if (res < 0) { -- pr_err("%s[%d][%d]\n", msg, res, __LINE__); -- return; -- } -+ WARN_ON(twl4030_i2c_clear_isr(TWL4030_MODULE_INTERRUPTS, 0x0, cor) < 0); - - /* BCIISR2A */ -- res = twl4030_i2c_write_u8(TWL4030_MODULE_INTERRUPTS, 0xFF, 0x1); -- if (res < 0) { -- pr_err("%s[%d][%d]\n", msg, res, __LINE__); -- return; -- } -+ WARN_ON(twl4030_i2c_clear_isr(TWL4030_MODULE_INTERRUPTS, 0x1, cor) < 0); - - /* BCIISR1B */ -- res = twl4030_i2c_write_u8(TWL4030_MODULE_INTERRUPTS, 0xFF, 0x4); -- if (res < 0) { -- pr_err("%s[%d][%d]\n", msg, res, __LINE__); -- return; -- } -+ WARN_ON(twl4030_i2c_clear_isr(TWL4030_MODULE_INTERRUPTS, 0x4, cor) < 0); - - /* BCIISR2B */ -- res = twl4030_i2c_write_u8(TWL4030_MODULE_INTERRUPTS, 0xFF, 0x5); -- if (res < 0) { -- pr_err("%s[%d][%d]\n", msg, res, __LINE__); -- return; -- } -+ WARN_ON(twl4030_i2c_clear_isr(TWL4030_MODULE_INTERRUPTS, 0x5, cor) < 0); - - /* MAD C */ - /* MADC_IMR1 */ -@@ -821,19 +866,16 @@ static void twl_init_irq(void) - return; - } - -+ /* Are MADC interrupt status bits cleared by reads or writes? */ -+ cor = twl4030_read_cor_bit(TWL4030_MODULE_MADC, -+ TWL4030_MADC_MADC_SIH_CTRL); -+ WARN_ON(cor < 0); -+ - /* MADC_ISR1 */ -- res = twl4030_i2c_write_u8(TWL4030_MODULE_MADC, 0xFF, 0x61); -- if (res < 0) { -- pr_err("%s[%d][%d]\n", msg, res, __LINE__); -- return; -- } -+ WARN_ON(twl4030_i2c_clear_isr(TWL4030_MODULE_MADC, 0x61, cor) < 0); - - /* MADC_ISR2 */ -- res = twl4030_i2c_write_u8(TWL4030_MODULE_MADC, 0xFF, 0x63); -- if (res < 0) { -- pr_err("%s[%d][%d]\n", msg, res, __LINE__); -- return; -- } -+ WARN_ON(twl4030_i2c_clear_isr(TWL4030_MODULE_MADC, 0x63, cor) < 0); - - /* key Pad */ - /* KEYPAD - IMR1 */ -@@ -842,12 +884,15 @@ static void twl_init_irq(void) - pr_err("%s[%d][%d]\n", msg, res, __LINE__); - return; - } -- { -- u8 clear; -- /* Clear ISR */ -- twl4030_i2c_read_u8(TWL4030_MODULE_KEYPAD, &clear, 0x11); -- twl4030_i2c_read_u8(TWL4030_MODULE_KEYPAD, &clear, 0x11); -- } -+ -+ /* Are keypad interrupt status bits cleared by reads or writes? */ -+ cor = twl4030_read_cor_bit(TWL4030_MODULE_KEYPAD, -+ TWL4030_KEYPAD_KEYP_SIH_CTRL); -+ WARN_ON(cor < 0); -+ -+ /* KEYPAD - ISR1 */ -+ /* XXX does this still need to be done twice for some reason? */ -+ WARN_ON(twl4030_i2c_clear_isr(TWL4030_MODULE_KEYPAD, 0x11, cor) < 0); - - /* KEYPAD - IMR2 */ - res = twl4030_i2c_write_u8(TWL4030_MODULE_KEYPAD, 0xFF, (0x14)); -@@ -856,6 +901,9 @@ static void twl_init_irq(void) - return; - } - -+ /* KEYPAD - ISR2 */ -+ WARN_ON(twl4030_i2c_clear_isr(TWL4030_MODULE_KEYPAD, 0x13, cor) < 0); -+ - /* Slave address 0x49 */ - /* GPIO_IMR1A */ - res = twl4030_i2c_write_u8(TWL4030_MODULE_GPIO, 0xFF, (0x1C)); -@@ -899,47 +947,28 @@ static void twl_init_irq(void) - return; - } - -+ /* Are GPIO interrupt status bits cleared by reads or writes? */ -+ cor = twl4030_read_cor_bit(TWL4030_MODULE_GPIO, -+ TWL4030_GPIO_GPIO_SIH_CTRL); -+ WARN_ON(cor < 0); -+ - /* GPIO_ISR1A */ -- res = twl4030_i2c_write_u8(TWL4030_MODULE_GPIO, 0xff, 0x19); -- if (res < 0) { -- pr_err("%s[%d][%d]\n", msg, res, __LINE__); -- return; -- } -+ WARN_ON(twl4030_i2c_clear_isr(TWL4030_MODULE_GPIO, 0x19, cor) < 0); - - /* GPIO_ISR2A */ -- res = twl4030_i2c_write_u8(TWL4030_MODULE_GPIO, 0xff, 0x1a); -- if (res < 0) { -- pr_err("%s[%d][%d]\n", msg, res, __LINE__); -- return; -- } -+ WARN_ON(twl4030_i2c_clear_isr(TWL4030_MODULE_GPIO, 0x1a, cor) < 0); - - /* GPIO_ISR3A */ -- res = twl4030_i2c_write_u8(TWL4030_MODULE_GPIO, 0xff, 0x1b); -- if (res < 0) { -- pr_err("%s[%d][%d]\n", msg, res, __LINE__); -- return; -- } -+ WARN_ON(twl4030_i2c_clear_isr(TWL4030_MODULE_GPIO, 0x1b, cor) < 0); - - /* GPIO_ISR1B */ -- res = twl4030_i2c_write_u8(TWL4030_MODULE_GPIO, 0xff, 0x1f); -- if (res < 0) { -- pr_err("%s[%d][%d]\n", msg, res, __LINE__); -- return; -- } -+ WARN_ON(twl4030_i2c_clear_isr(TWL4030_MODULE_GPIO, 0x1f, cor) < 0); - - /* GPIO_ISR2B */ -- res = twl4030_i2c_write_u8(TWL4030_MODULE_GPIO, 0xff, 0x20); -- if (res < 0) { -- pr_err("%s[%d][%d]\n", msg, res, __LINE__); -- return; -- } -+ WARN_ON(twl4030_i2c_clear_isr(TWL4030_MODULE_GPIO, 0x20, cor) < 0); - - /* GPIO_ISR3B */ -- res = twl4030_i2c_write_u8(TWL4030_MODULE_GPIO, 0xff, 0x21); -- if (res < 0) { -- pr_err("%s[%d][%d]\n", msg, res, __LINE__); -- return; -- } -+ WARN_ON(twl4030_i2c_clear_isr(TWL4030_MODULE_GPIO, 0x21, cor) < 0); - - /* install an irq handler for each of the PIH modules */ - for (i = TWL4030_IRQ_BASE; i < TWL4030_IRQ_END; i++) { diff --git a/packages/linux/linux-omap2-git/beagleboard/TWL4030-06.patch b/packages/linux/linux-omap2-git/beagleboard/TWL4030-06.patch deleted file mode 100644 index 67b837c454..0000000000 --- a/packages/linux/linux-omap2-git/beagleboard/TWL4030-06.patch +++ /dev/null @@ -1,179 +0,0 @@ -TWL4030: change init-time IMR mask code to WARN if error - -From: Paul Walmsley <paul@pwsan.com> - -twl_init_irq() prints error messages and returns if any interrupt mask -register writes fail. Change this to generate a warning traceback and -to continue execution rather than skipping TWL init. (These mask -writes should not fail at all unless either the I2C bus or the TWL4030 -is somehow wedged.) - -Signed-off-by: Paul Walmsley <paul@pwsan.com> ---- - - drivers/i2c/chips/twl4030-core.c | 100 +++++++------------------------------- - 1 files changed, 18 insertions(+), 82 deletions(-) - -diff --git a/drivers/i2c/chips/twl4030-core.c b/drivers/i2c/chips/twl4030-core.c -index eae0634..99cc143 100644 ---- a/drivers/i2c/chips/twl4030-core.c -+++ b/drivers/i2c/chips/twl4030-core.c -@@ -778,18 +778,10 @@ static void twl_init_irq(void) - - - /* PWR_IMR1 */ -- res = twl4030_i2c_write_u8(TWL4030_MODULE_INT, 0xFF, 0x1); -- if (res < 0) { -- pr_err("%s[%d][%d]\n", msg, res, __LINE__); -- return; -- } -+ WARN_ON(twl4030_i2c_write_u8(TWL4030_MODULE_ |
