Re: [PATCH 2/3] OMAP3630: PM: implement Foward Body-Bias for OPP1G
On Thu, Apr 22, 2010 at 03:56:53PM +0200, ext Nishanth Menon wrote: Turquette, Mike had written, on 04/21/2010 04:21 PM, the following: [...] /** + * voltscale_adaptive_body_bias - controls ABB ldo during voltage scaling + * @target_volt: target voltage determines if ABB ldo is active or bypassed + * + * Adaptive Body-Bias is a technique in all OMAP silicon that uses the 45nm + * process. ABB can boost voltage in high OPPs for silicon with weak + * characteristics (forward Body-Bias) as well as lower voltage in low OPPs + * for silicon with strong characteristics (Reverse Body-Bias). + * + * Only Foward Body-Bias for operating at high OPPs is implemented below, per + * recommendations from silicon team. + * Reverse Body-Bias for saving power in active cases and sleep cases is not + * yet implemented. + * OMAP4 hardward also supports ABB ldo, but no recommendations have been made + * to implement it yet. + */ +int voltscale_adaptive_body_bias(unsigned long target_volt) +{ + u32 sr2en_enabled; + int timeout; + int sr2_wtcnt_value; + + /* calculate SR2_WTCNT_VALUE settling time */ + sr2_wtcnt_value = (ABB_MAX_SETTLING_TIME * + (clk_get_rate(sys_ck) / 100) / 8); + + /* has SR2EN been enabled previously? */ + sr2en_enabled = (prm_read_mod_reg(OMAP3430_GR_MOD, + OMAP3_PRM_LDO_ABB_CTRL_OFFSET) + OMAP3630_SR2EN); + + /* select fast, nominal or slow OPP for ABB ldo */ + /* FIXME: include OMAP4 once recommendations are complete */ + if (cpu_is_omap3630() (target_volt = 135)) { You are creating two steps to decide if you apply or not FBB. Here and also bellow (omap voltage scale). Would it make sense to bind it per opp? I mean just a flag on opp dat then you apply or not based on that flag. Same for RBB. Eduardo, Thanks for reviewing. There has been some offline discussion about the best way to handle the the relationship between FBB enable flags and OPPs: 1) extend OPP table 2) piggyback on Thara's SR hwmod structures This probably won't work given Paul's review comments 3) other wacky stuff After some discussion about the best way to do this I will definitely lose the duplicate checks and replace with some nice table look-up. Extending the OPP table is gross for OMAP2 and OMAP3430. Piggybacking on SR stuff is just a hack and there is no real relationship between ABB ldo and SR. The crux of the issue is how to relate FBB enable flags to OPP table. hwmod? Ideas on this are very welcome. might be a good idea for using I vote for 2) omap_volt_data in voltage.c and using the flag there. This was actually what I was also thinking. if you stick your flag on omap_volt_data should be enough. 1) is a bad idea as ABB is not present in older silicon and opp table should ideally be independent of silicon and contain only common data.. indeed. [...] -- Regards, Nishanth Menon -- To unsubscribe from this list: send the line unsubscribe linux-omap in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
RE: [PATCH v2] OMAP3: I2C: Errata ID i207: Clear wrong RDR interrupt
Tony, -Original Message- From: Tony Lindgren [mailto:t...@atomide.com] Sent: Thursday, April 22, 2010 3:13 AM To: G, Manjunath Kondaiah Cc: linux-...@vger.kernel.org; linux-omap@vger.kernel.org; ben-li...@fluff.org; Kalliguddi, Hema; Menon, Nishanth Subject: Re: [PATCH v2] OMAP3: I2C: Errata ID i207: Clear wrong RDR interrupt * Manjunatha GK manj...@ti.com [100413 06:32]: Under certain rare conditions, I2C_STAT[13].RDR bit may be set and the corresponding interrupt fire, even there is no data in the receive FIFO, or the I2C data transfer is still ongoing. These spurious RDR events must be ignored by the software. This patch handles and ignores RDR spurious interrupts. Patch tested on OMAP zoom3 board. Signed-off-by: Manjunatha GK manj...@ti.com Cc: linux-omap@vger.kernel.org Cc: linux-...@vger.kernel.org Cc: ben-li...@fluff.org Cc: Kalliguddi, Hema hem...@ti.com Cc: Nishanth Menon n...@ti.com --- Review comments for earlier post can be found at: https://patchwork.kernel.org/patch/90122/ drivers/i2c/busses/i2c-omap.c | 32 +++- 1 files changed, 31 insertions(+), 1 deletions(-) diff --git a/drivers/i2c/busses/i2c-omap.c b/drivers/i2c/busses/i2c-omap.c index ae6f5c1..d4ec886 100644 --- a/drivers/i2c/busses/i2c-omap.c +++ b/drivers/i2c/busses/i2c-omap.c @@ -733,10 +733,40 @@ complete: } if (stat (OMAP_I2C_STAT_RRDY | OMAP_I2C_STAT_RDR)) { u8 num_bytes = 1; + + /* +* I2C Errata(Errata Nos. OMAP2: 1.67, OMAP3: 1.8) +* Not applicable for OMAP4. +* Under certain rare conditions, RDR could be set again +* when the bus is busy, then ignore the interrupt and +* clear the interrupt. +*/ + if ((stat OMAP_I2C_STAT_RDR) !cpu_is_omap44xx()) { + /* Step 1: If RDR is set, clear it */ + omap_i2c_ack_stat(dev, stat OMAP_I2C_STAT_RDR); + + /* Step 2: */ + if(!(omap_i2c_read_reg(dev, OMAP_I2C_STAT_REG) + OMAP_I2C_STAT_BB)) { + /* Step 3: */ + while(omap_i2c_read_reg(dev, + OMAP_I2C_STAT_REG) + OMAP_I2C_STAT_RDR) { + omap_i2c_ack_stat(dev, stat + OMAP_I2C_STAT_RDR); + dev_err(dev-dev, + I2C : RDR when the bus is busy.\n); + continue; + } + + } + else + return IRQ_HANDLED; + } Please move these hacks into a separate inline function that you initialize during the init. Then in the function you do it if OMAP_I2C_QUIRK_1234 flag has been set. In general, it seems that a lot of TI omap4 patches just do: if (!cpu_is_omap4430()) { indent_old_code_even_more ... } else { add_hacks_for_omap4 ... } And sprinkle that all over the place. This is not a maintainable way of doing things. Please do something like this instead: #ifdef CONFIG_ARCH_OMAP4 static inline void omap_i2c_quirk_1234(struct device *dev) { /* Do hacks here */ } #else static inline void omap_i2c_quirk_1234(struct device *dev) { } #endif This might create issue for multi omap build? -Manjunath-- To unsubscribe from this list: send the line unsubscribe linux-omap in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCHV4] OMAP3: SDRC : Errata 1.176 Fix - Accesses to DDR stall in SDRC after a Warm-reset
From: Teerth Reddy tee...@ti.com This patch has the workaround for errata 1.176. In some cases, user is not able to access DDR memory after warm-reset.This situation occurs while the warm-reset happens during a read access to DDR memory. In that particular conditions, DDR memory does not respond to a corrupted read command due to the warm reset occurence but SDRC is waiting for read completion.SDRC is not sensitive to the warm reset, but the interconect is reset on the fly, thus causing a misalignment between SDRC logic, interconect logic and DDR memory state. Root cause description: A corrupted read transaction is issued to a closed row: (address0, bank0) instead of the expected read access, violating protocol. Failure signature: Once the failure occurs and system has restarted, memory content is not accessible.SDRC registers can be accessed successfully, until 1st access to memory location is performed. After 1st access to memory is done, SDRC is stuck. WORKAROUND Steps to perform before a SW reset is trigged, if user needs to generate a SW reset and keep DDR memory content: 1. Enable self-refresh on idle request 2. Put SDRC in idle 3. Wait until SDRC goes to idle 4. Generate SW reset Steps to perform after warm reset occurs: If HW warm reset is the source, apply below steps before any accesses to SDRAM: 1. Reset SMS and SDRC 2. Re-initialize SMS, SDRC and memory This would need the u-boot/x-loader workaround changes as well for the reboot to work correctly. Thanks to Paul Walmsley p...@pwsan.com for suggesting usefull changes. Signed-off-by: Teerth Reddy tee...@ti.com --- arch/arm/mach-omap2/prcm.c | 10 -- arch/arm/mach-omap2/sram34xx.S | 50 arch/arm/plat-omap/include/plat/sram.h |7 arch/arm/plat-omap/sram.c | 19 4 files changed, 83 insertions(+), 3 deletions(-) diff --git a/arch/arm/mach-omap2/prcm.c b/arch/arm/mach-omap2/prcm.c index 9537f6f..e0a4e98 100644 --- a/arch/arm/mach-omap2/prcm.c +++ b/arch/arm/mach-omap2/prcm.c @@ -27,6 +27,7 @@ #include plat/prcm.h #include plat/irqs.h #include plat/control.h +#include plat/sram.h #include clock.h #include clock2xxx.h @@ -141,6 +142,8 @@ void omap_prcm_arch_reset(char mode, const char *cmd) omap2xxx_clk_prepare_for_reboot(); prcm_offs = WKUP_MOD; + prm_set_mod_reg_bits(OMAP_RST_DPLL3, prcm_offs, +OMAP2_RM_RSTCTRL); } else if (cpu_is_omap34xx()) { u32 l; @@ -152,14 +155,15 @@ void omap_prcm_arch_reset(char mode, const char *cmd) * cf. OMAP34xx TRM, Initialization / Software Booting * Configuration. */ omap_writel(l, OMAP343X_SCRATCHPAD + 4); + /* Disable interrupts before reset */ + local_irq_disable(); + /* This function does not return */ + omap3_warmreset(); } else if (cpu_is_omap44xx()) prcm_offs = OMAP4430_PRM_DEVICE_MOD; else WARN_ON(1); - if (cpu_is_omap24xx() | cpu_is_omap34xx()) - prm_set_mod_reg_bits(OMAP_RST_DPLL3, prcm_offs, -OMAP2_RM_RSTCTRL); if (cpu_is_omap44xx()) prm_set_mod_reg_bits(OMAP_RST_DPLL3, prcm_offs, OMAP4_RM_RSTCTRL); diff --git a/arch/arm/mach-omap2/sram34xx.S b/arch/arm/mach-omap2/sram34xx.S index de99ba2..ab9b7db 100644 --- a/arch/arm/mach-omap2/sram34xx.S +++ b/arch/arm/mach-omap2/sram34xx.S @@ -33,6 +33,8 @@ #include sdrc.h #include cm.h +#include prcm-common.h +#include prm.h .text @@ -68,6 +70,9 @@ /* CM_CLKSEL1_PLL bit settings */ #define CORE_DPLL_CLKOUT_DIV_SHIFT 0x1b +/* PRM_RSTCTRL bit setting */ +#define EN_DPLL3_RESET 0x4 + /* * omap3_sram_configure_core_dpll - change DPLL3 M2 divider * @@ -313,3 +318,48 @@ core_m2_mask_val: ENTRY(omap3_sram_configure_core_dpll_sz) .word . - omap3_sram_configure_core_dpll + +/** + * omap3_sram_warmreset - + * + * Enable SDRC self refresh on idle request, put SDRC in idle, + * wait until SDRC goes to idle + * Enable DPLL3 reset bit in OMAP2_RM_RSTCTRL + */ + +ENTRY(omap3_sram_warmreset) +sdram_in_selfrefresh1: + ldr r11, omap3_sdrc_power1 @ read the SDRC_POWER register + ldr r12, [r11] @ read the contents of SDRC_POWER + orr r12, r12, #SRFRONIDLEREQ_MASK @ enable self refresh on idle + str r12, [r11] @ write back to SDRC_POWER register + ldr r12, [r11] @ posted-write barrier for SDRC + ldr r11, omap3_cm_iclken1_core1 @ read the CM_ICLKEN1_CORE reg + ldr r12, [r11] + bic r12, r12, #EN_SDRC_MASK @ disable iclk bit for SDRC + str r12, [r11] +wait_sdrc_idle2: +
Re: [PATCH] twl6030: regulator: Remove vsel tables and use formula for calculation
On Thu, Apr 22, 2010 at 02:18:32PM +0530, Rajendra Nayak wrote: All twl6030 regulators can be programmed from 1.0v to 3.3v with 100mV steps. The below formula can be used to calculate the vsel values to be programmed in the VREG_VOLTAGE registers. Acked-by: Mark Brown broo...@opensource.wolfsonmicro.com -- To unsubscribe from this list: send the line unsubscribe linux-omap in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 4/4][v4] OMAP:iommu- add TLB preservation support
Hi Hari, From: ext Hari Kanigeri h-kanige...@ti.com Subject: [PATCH 4/4][v4] OMAP:iommu- add TLB preservation support Date: Fri, 23 Apr 2010 01:16:36 +0200 This patch adds TLB preservation support to IOMMU module Signed-off-by: Hari Kanigeri h-kanige...@ti.com Signed-off-by: Hiroshi Doyu hiroshi.d...@nokia.com The above should be Acked-by:? BTW: Now the code gets a bit complicated for tlb iteration. So what about introducing the following macro? Not yet tested, though From a88de5ab41792b5a34c460741b8f75f1611327b9 Mon Sep 17 00:00:00 2001 From: Hiroshi DOYU hiroshi.d...@nokia.com Date: Fri, 23 Apr 2010 15:18:46 +0300 Subject: [PATCH 1/1] omap iommu: introduce iteration macro for iotlb entries scan There are some places to scan iotlb entries. This iteration macro could make these code a bit simpler. Signed-off-by: Hiroshi DOYU hiroshi.d...@nokia.com --- arch/arm/plat-omap/iommu.c | 55 ++- 1 files changed, 28 insertions(+), 27 deletions(-) diff --git a/arch/arm/plat-omap/iommu.c b/arch/arm/plat-omap/iommu.c index 1e83fac..d09a0a1 100644 --- a/arch/arm/plat-omap/iommu.c +++ b/arch/arm/plat-omap/iommu.c @@ -25,6 +25,9 @@ #include iopgtable.h +#define for_each_iotlb_cr(obj, n, i, cr) \ + for (i = 0; (i n) (cr = get_iotlb_cr(obj, i)); i++) + /* accommodate the difference between omap1 and omap2/3 */ static const struct iommu_functions *arch_iommu; @@ -211,6 +214,19 @@ static inline ssize_t iotlb_dump_cr(struct iommu *obj, struct cr_regs *cr, return arch_iommu-dump_cr(obj, cr, buf); } +static struct cr_regs get_iotlb_cr(struct iommu *obj, int n) +{ + struct cr_regs cr; + struct iotlb_lock l; + + iotlb_lock_get(obj, l); + l.vict = n; + iotlb_lock_set(obj, l); + iotlb_read_cr(obj, cr); + + return cr; +} + /** * load_iotlb_entry - Set an iommu tlb entry * @obj: target iommu @@ -218,7 +234,6 @@ static inline ssize_t iotlb_dump_cr(struct iommu *obj, struct cr_regs *cr, **/ int load_iotlb_entry(struct iommu *obj, struct iotlb_entry *e) { - int i; int err = 0; struct iotlb_lock l; struct cr_regs *cr; @@ -235,21 +250,20 @@ int load_iotlb_entry(struct iommu *obj, struct iotlb_entry *e) goto out; } if (!e-prsvd) { - for (i = l.base; i obj-nr_tlb_entries; i++) { - struct cr_regs tmp; + int i; + struct cr_regs tmp; - iotlb_lock_get(obj, l); - l.vict = i; - iotlb_lock_set(obj, l); - iotlb_read_cr(obj, tmp); + for_each_iotlb_cr(obj, obj-nr_tlb_entries, i, tmp) if (!iotlb_cr_valid(tmp)) break; - } + if (i == obj-nr_tlb_entries) { dev_dbg(obj-dev, %s: full: no entry\n, __func__); err = -EBUSY; goto out; } + + iotlb_lock_get(obj, l); } else { l.vict = l.base; iotlb_lock_set(obj, l); @@ -285,20 +299,15 @@ EXPORT_SYMBOL_GPL(load_iotlb_entry); **/ void flush_iotlb_page(struct iommu *obj, u32 da) { - struct iotlb_lock l; int i; + struct cr_regs cr; clk_enable(obj-clk); - for (i = 0; i obj-nr_tlb_entries; i++) { - struct cr_regs cr; + for_each_iotlb_cr(obj, obj-nr_tlb_entries, i, cr) { u32 start; size_t bytes; - iotlb_lock_get(obj, l); - l.vict = i; - iotlb_lock_set(obj, l); - iotlb_read_cr(obj, cr); if (!iotlb_cr_valid(cr)) continue; @@ -308,7 +317,6 @@ void flush_iotlb_page(struct iommu *obj, u32 da) if ((start = da) (da start + bytes)) { dev_dbg(obj-dev, %s: %08x=%08x(%x)\n, __func__, start, da, bytes); - iotlb_load_cr(obj, cr); iommu_write_reg(obj, 1, MMU_FLUSH_ENTRY); } } @@ -379,26 +387,19 @@ EXPORT_SYMBOL_GPL(iommu_dump_ctx); static int __dump_tlb_entries(struct iommu *obj, struct cr_regs *crs, int num) { int i; - struct iotlb_lock saved, l; + struct iotlb_lock saved; + struct cr_regs tmp; struct cr_regs *p = crs; clk_enable(obj-clk); - iotlb_lock_get(obj, saved); - memcpy(l, saved, sizeof(saved)); - for (i = 0; i num; i++) { - struct cr_regs tmp; - - iotlb_lock_get(obj, l); - l.vict = i; - iotlb_lock_set(obj, l); - iotlb_read_cr(obj, tmp); + for_each_iotlb_cr(obj, num, i, tmp) { if (!iotlb_cr_valid(tmp))
[PATCH v2] omap_hsmmc: improve interrupt synchronisation
From ad2e1cd024ccf9144b6620cfe808893719db738f Mon Sep 17 00:00:00 2001 From: Adrian Hunter adrian.hun...@nokia.com Date: Wed, 14 Apr 2010 16:26:45 +0300 Subject: [PATCH] omap_hsmmc: improve interrupt synchronisation The following changes were needed: - do not use in_interrupt() because it will not work with threaded interrupts In addition, the following improvements were made: - ensure DMA is unmapped only after the final DMA interrupt - ensure a request is completed only after the final DMA interrupt - disable controller interrupts when a request is not in progress - remove the spin-lock protecting the start of a new request from an unexpected interrupt because the locking was complicated and a 'req_in_progress' flag suffices (since the spin-lock only defers the unexpected interrupts anyway) - instead use the spin-lock to protect the MMC interrupt handler from the DMA interrupt handler - remove the semaphore preventing DMA from being started while the previous DMA is still in progress - the other changes make that impossible, so it is now a BUG_ON condition - ensure the controller interrupt status is clear before exiting the interrrupt handler In general, these changes make the code safer but do not fix any specific bugs so backporting is not necessary. Signed-off-by: Adrian Hunter adrian.hun...@nokia.com --- Changes from version 1: - use a spin-lock to protect the MMC interrupt handler from the DMA interrupt handler - use do {} while loop instead of goto in omap_hsmmc_irq S Venkatraman's request to use omap_hsmmc_dma_cleanup(host, 0) in omap_hsmmc_dma_cb() was not done because the code was not sufficiently the same. drivers/mmc/host/omap_hsmmc.c | 262 + 1 files changed, 134 insertions(+), 128 deletions(-) diff --git a/drivers/mmc/host/omap_hsmmc.c b/drivers/mmc/host/omap_hsmmc.c index c0b5021..cc0272d 100644 --- a/drivers/mmc/host/omap_hsmmc.c +++ b/drivers/mmc/host/omap_hsmmc.c @@ -157,12 +157,10 @@ struct omap_hsmmc_host { */ struct regulator *vcc; struct regulator *vcc_aux; - struct semaphore sem; struct work_struct mmc_carddetect_work; void__iomem *base; resource_size_t mapbase; spinlock_t irq_lock; /* Prevent races with irq handler */ - unsigned long flags; unsigned intid; unsigned intdma_len; unsigned intdma_sg_idx; @@ -183,6 +181,7 @@ struct omap_hsmmc_host { int protect_card; int reqs_blocked; int use_reg; + int req_in_progress; struct omap_mmc_platform_data *pdata; }; @@ -480,6 +479,27 @@ static void omap_hsmmc_stop_clock(struct omap_hsmmc_host *host) dev_dbg(mmc_dev(host-mmc), MMC Clock is not stoped\n); } +static void omap_hsmmc_enable_irq(struct omap_hsmmc_host *host) +{ + unsigned int irq_mask; + + if (host-use_dma) + irq_mask = INT_EN_MASK ~(BRR_ENABLE | BWR_ENABLE); + else + irq_mask = INT_EN_MASK; + + OMAP_HSMMC_WRITE(host-base, STAT, STAT_CLEAR); + OMAP_HSMMC_WRITE(host-base, ISE, irq_mask); + OMAP_HSMMC_WRITE(host-base, IE, irq_mask); +} + +static void omap_hsmmc_disable_irq(struct omap_hsmmc_host *host) +{ + OMAP_HSMMC_WRITE(host-base, ISE, 0); + OMAP_HSMMC_WRITE(host-base, IE, 0); + OMAP_HSMMC_WRITE(host-base, STAT, STAT_CLEAR); +} + #ifdef CONFIG_PM /* @@ -548,9 +568,7 @@ static int omap_hsmmc_context_restore(struct omap_hsmmc_host *host) time_before(jiffies, timeout)) ; - OMAP_HSMMC_WRITE(host-base, STAT, STAT_CLEAR); - OMAP_HSMMC_WRITE(host-base, ISE, INT_EN_MASK); - OMAP_HSMMC_WRITE(host-base, IE, INT_EN_MASK); + omap_hsmmc_disable_irq(host); /* Do not initialize card-specific things if the power is off */ if (host-power_mode == MMC_POWER_OFF) @@ -653,6 +671,8 @@ static void send_init_stream(struct omap_hsmmc_host *host) return; disable_irq(host-irq); + + OMAP_HSMMC_WRITE(host-base, IE, INT_EN_MASK); OMAP_HSMMC_WRITE(host-base, CON, OMAP_HSMMC_READ(host-base, CON) | INIT_STREAM); OMAP_HSMMC_WRITE(host-base, CMD, INIT_STREAM_CMD); @@ -718,17 +738,7 @@ omap_hsmmc_start_command(struct omap_hsmmc_host *host, struct mmc_command *cmd, mmc_hostname(host-mmc), cmd-opcode, cmd-arg); host-cmd = cmd; - /* -* Clear status bits and enable interrupts -*/ - OMAP_HSMMC_WRITE(host-base, STAT, STAT_CLEAR); - OMAP_HSMMC_WRITE(host-base, ISE, INT_EN_MASK); - - if (host-use_dma) -
RE: [PATCH 4/4][v4] OMAP:iommu- add TLB preservation support
Hi Hiroshi, -Original Message- From: Hiroshi DOYU [mailto:hiroshi.d...@nokia.com] Sent: Friday, April 23, 2010 7:34 AM To: Kanigeri, Hari Cc: Gupta, Ramesh; linux-omap@vger.kernel.org Subject: Re: [PATCH 4/4][v4] OMAP:iommu- add TLB preservation support Hi Hari, From: ext Hari Kanigeri h-kanige...@ti.com Subject: [PATCH 4/4][v4] OMAP:iommu- add TLB preservation support Date: Fri, 23 Apr 2010 01:16:36 +0200 This patch adds TLB preservation support to IOMMU module Signed-off-by: Hari Kanigeri h-kanige...@ti.com Signed-off-by: Hiroshi Doyu hiroshi.d...@nokia.com The above should be Acked-by:? -- By you :) BTW: Now the code gets a bit complicated for tlb iteration. So what about introducing the following macro? Not yet tested, though -- I like it. Let me test your changes, and will send a revised patch with these changes. -- To unsubscribe from this list: send the line unsubscribe linux-omap in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PM-WIP-SR][PATCH] OMAP3: PM: Separating PMIC specific part out of smartreflex driver
This patch adds a hook to register pmic specific data with the smartreflex driver. Currently with this the only info required to be registered is the API to enable smartreflex on PMIC side. Later any other pmic specific data can be added. This patch also modifies the pmic file twl4030.c meant for OMAP3430 and OMAP3630 chips to register the required data with the smartreflex driver. This patch is created on the pm-wip-sr branch off Kevin's pm tree and is dependent on Lesly's Triton power scripts patch series the link to which is given below http://marc.info/?l=linux-omapm=127167610420379w=2 Signed-off-by: Thara Gopinath th...@ti.com --- arch/arm/mach-omap2/smartreflex.c | 34 +++--- arch/arm/mach-omap2/smartreflex.h | 22 -- arch/arm/mach-omap2/twl4030.c | 26 ++ arch/arm/mach-omap2/twl4030.h |6 ++ 4 files changed, 71 insertions(+), 17 deletions(-) diff --git a/arch/arm/mach-omap2/smartreflex.c b/arch/arm/mach-omap2/smartreflex.c index a6a29d1..7134529 100644 --- a/arch/arm/mach-omap2/smartreflex.c +++ b/arch/arm/mach-omap2/smartreflex.c @@ -23,7 +23,6 @@ #include linux/err.h #include linux/clk.h #include linux/kobject.h -#include linux/i2c/twl.h #include linux/io.h #include linux/list.h #include linux/debugfs.h @@ -59,6 +58,7 @@ struct omap_sr { /* sr_list contains all the instances of smartreflex module */ static LIST_HEAD(sr_list); static struct omap_smartreflex_class_data *sr_class; +static struct omap_smartreflex_pmic_data *sr_pmic_data; static inline void sr_write_reg(struct omap_sr *sr, unsigned offset, u32 value) { @@ -670,6 +670,24 @@ void omap_sr_register_class(struct omap_smartreflex_class_data *class_data) sr_late_init(sr_info); } +/** + * omap_sr_register_pmic : API to register pmic specific info. + * @pmic_data - The structure containing pmic specific data. + * + * This API is to be called from the PMIC specific code to register with + * smartreflex driver pmic specific info. Currently the only info required + * is the smartreflex init on the PMIC side. + */ +void omap_sr_register_pmic(struct omap_smartreflex_pmic_data *pmic_data) +{ + if (!pmic_data) { + pr_warning(Trying to register NULL PMIC data structure with \ + smartreflex\n); + return; + } + sr_pmic_data = pmic_data; +} + /* PM Debug Fs enteries to enable disable smartreflex.*/ static int omap_sr_autocomp_show(void *data, u64 *val) @@ -770,16 +788,10 @@ static struct platform_driver smartreflex_driver = { static int __init sr_init(void) { - int ret = 0; - u8 RdReg; - - /* TODO: Find an appropriate place for this */ - /* Enable SR on T2 */ - ret = twl_i2c_read_u8(TWL4030_MODULE_PM_RECEIVER, RdReg, - R_DCDC_GLOBAL_CFG); - RdReg |= DCDC_GLOBAL_CFG_ENABLE_SRFLX; - ret |= twl_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, RdReg, - R_DCDC_GLOBAL_CFG); + int ret; + + if (sr_pmic_data sr_pmic_data-sr_pmic_init) + sr_pmic_data-sr_pmic_init(); ret = platform_driver_probe(smartreflex_driver, omap_smartreflex_probe); diff --git a/arch/arm/mach-omap2/smartreflex.h b/arch/arm/mach-omap2/smartreflex.h index d12c093..46bc1f1 100644 --- a/arch/arm/mach-omap2/smartreflex.h +++ b/arch/arm/mach-omap2/smartreflex.h @@ -138,12 +138,6 @@ extern struct dentry *pm_dbg_main_dir; /* TODO:3630/OMAP4 values if it has to come from this file */ -/* Info for enabling SR in T2/gaia. ToDo: Move it to twl4030_power.c */ -#define PHY_TO_OFF_PM_RECIEVER(p) (p - 0x5b) -#define R_DCDC_GLOBAL_CFG PHY_TO_OFF_PM_RECIEVER(0x61) -/* R_DCDC_GLOBAL_CFG register, SMARTREFLEX_ENABLE values */ -#define DCDC_GLOBAL_CFG_ENABLE_SRFLX 0x08 - #ifdef CONFIG_OMAP_SMARTREFLEX_TESTING #define SR_TESTING_NVALUES 1 #else @@ -196,6 +190,16 @@ struct omap_smartreflex_dev_data { #define SR_CLASS3 0x3 /** + * omap_smartreflex_pmic_data : Strucutre to be populated by pmic code to pass + * pmic specific info to smartreflex driver + * + * @sr_pmic_init - API to initialize smartreflex on the PMIC side. + */ +struct omap_smartreflex_pmic_data { + void (*sr_pmic_init) (void); +}; + +/** * omap_smartreflex_class_data : Structure to be populated by * Smartreflex class driver with corresponding class enable disable API's * @@ -260,9 +264,15 @@ void sr_configure_minmax(int srid); * API to register the smartreflex class driver with the smartreflex driver */ void omap_sr_register_class(struct omap_smartreflex_class_data *class_data); + + +/* API to register the pmic specific data with the smartreflex driver */ +void omap_sr_register_pmic(struct omap_smartreflex_pmic_data *pmic_data); #else static inline void omap_smartreflex_enable(int srid) {} static inline void
RE: [PATCH V4 0/2] OMAP3: Dynamic Calculation of SDRC stall latency during DVFS
Hi Paul, Please let me know if you have any comments on the patches below. The comments from Kevin, Ambresh and Sergio have been addressed in the last version of the patches and few in these patches. -Original Message- From: Gurav , Pramod Sent: Thursday, April 01, 2010 10:47 PM To: linux-omap@vger.kernel.org Cc: Gurav , Pramod Subject: [PATCH V4 0/2] OMAP3: Dynamic Calculation of SDRC stall latency during DVFS From: Pramod Gurav pramod.gu...@ti.com The patch has the changes to calculate the dpll3 clock stabilization delay dynamically. The SRAM delay is calibrated during bootup using the gptimers and used while calculating the stabilization delay. By using the dynamic method the dependency on the type of cache being used is removed. Formula to calculate the DVFS latency for 3430 and 3630 are different. The second patch implements the formula for later. This Version of patches adds optimisation to the formula implementation. Teerth Reddy (1): OMAP3: SDRC: Dynamic Calculation of SDRC stall latency during DVFS Pramod Gurav (1): OMAP3630 SDRC: Change in DVFS Latency Formula for OMAP3630 arch/arm/mach-omap2/clkt34xx_dpll3m2.c | 71 +++- arch/arm/mach-omap2/clock34xx.h|2 + arch/arm/mach-omap2/clock3xxx.c|2 +- arch/arm/mach-omap2/clock3xxx.h|1 + arch/arm/mach-omap2/clock3xxx_data.c | 13 ++ arch/arm/mach-omap2/sram34xx.S |8 arch/arm/plat-omap/include/plat/sram.h |4 ++ arch/arm/plat-omap/sram.c | 51 +++ 8 files changed, 140 insertions(+), 12 deletions(-) - Thanks and Best Regards Pramod Gurav -- To unsubscribe from this list: send the line unsubscribe linux-omap in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Need help understanding sporadic errors on OMAP35x YAFFS/NAND system
I've got a sporadic problem that I'm seeing using NAND/YAFFS on a Logic LV SOM using a 1928 block YAFFS filesystem. I've got the 2.6.32 kernel (L23 Poky from http://www.omappedia.org/wiki/OMAP_Poky) up and running, and sporadically in testing I observe an error where 0xff30 shows up in the data read back from the file - looks somewhat similar to: http://www.mail-archive.com/linux-omap@vger.kernel.org/msg23103.html Testing involves using dd if=/dev/zero of=/mnt/yaffs/file bs=1 seek=30M count=0 to create a 30MB file of zeros and then copies the file around on the flash, md5sum, syncing, etc to thrash the cache. The error I'm seeing is that when I read the file back, its md5sum does not match that of what a 30MB file of zeros should generate. To verify, I copy the file from the NAND to a temporary file in RAM, then md5sum that file and if the md5sum mimsmatches, then I hexdump the file to see where the data mismatches. This all runs fin in my test shell script, except after a while (somewhere around 30+GB read from NAND), I see: somefile.7: mismatch 666896a98683a364c10aeba0649f119c != 281ed1d5ae50e8419f9b978 aab16de83 000 * 1107800 ff30 ff30 ff30 ff30 ff30 ff30 ff30 ff30 * 1107a00 * 1e0 instead of the zeros I'd expect. Originally I thought the problem was in the NAND where somehow the driver tried to read a sector of data before it was ready, but if this was the case, I'd expect an ECC error from the comparison (using Hardware generated ECC, prefetch and DMA). This is not the case (I added a printk that triggers if omap_compare_ecc() returns non-zero). So if no ECC error is reported then the data should be valid on NAND. To test if the data was not written correctly I unmounted the filesystem and remounted it, but then the md5sum does match. This is not the first I've seen of the problem. I've see it in a 2.6.28-rc8 kernel, and in the 2.6.32 kernel I've tried turning off DMA, prefetch, and that hastens when the error turns up (and the number of 0xff30 shorts seein). I modified my testing to use a unique pattern intead of zeros and found when the 0xff30 shows up, it repeats for a number of shorts at the start of a page, then I see the data that I expected from the page. I've also modified the NAND driver to use a dev_ready function (as well as statistics to track how long it waits polling the R/B# line on WAIT0 that indicate its 21.2uS +/- 8.29uS once the call to omap_device_ready is made), and still no joy. I've also run this code on a 2.6.33-rc3 kernel with the same driver set and there it works flawlessly. Unfortunately I need the Poky kernel... At this point I'm at a loss to explain what is happening: 1) Has anyone seen this type of error before? 2) Are there any OMAP35x errata that could possibly explain what I'm seeing? 3) Has anyone done exhaustive testing of NAND-based filesystem on an OMAP35x board? 4) Any suggestions where to look next? (YAFFS testing with nandsim on an x86 doesn't exhibit the problem). The following is the original test script (cd into the mountpoint of the NAND filesystem before running): #!/bin/bash # MD5sum of 30M and 1K of zeros md5_30M=281ed1d5ae50e8419f9b978aab16de83 md5_1K=0f343b0931126a20f133d67c2b018a3b # temp file to use as intermediary copy tmpfile=/dev/tmp/junk #tmpfile=/tmp/junk mkdir -p `dirname $tmpfile` mismatches=0 pass=0 passes=120 if [ $1 != ]; then passes=$1 fi # $1 is file # $2 is good checksum chk_md5sum() { for cmf in $1 do cp $cmf $tmpfile ret=`md5sum $tmpfile | cut -d -f1` if [ $ret != $2 ]; then echo $cmf: mismatch $ret != $2 hexdump $tmpfile | head -100 mismatches=`expr $mismatches + 1` else echo $cmf: match $ret fi done } # $1 is src # $2 is destination # $3 is expected md5sum of source chk_cp() { cp $1 $tmpfile cp $tmpfile $2 ret=`md5sum $tmpfile | cut -d -f1` if [ $ret != $3 ]; then echo $1: mismatch $ret != $3 hexdump $tmpfile | head -100 mismatches=`expr $mismatches + 1` fi } while [ $pass -lt $passes ]; do pass=`expr $pass + 1` echo Pass: $pass Errors: $mismatches date # create a 30 M file echo Create 30M file of zeros and get md5sum dd if=/dev/zero of=somefile.1 bs=1 seek=30M count=0 chk_md5sum somefile.1 $md5_30M # create copies of file for f in 2 3 4 ; do cp somefile.1 somefile.$f done echo Calculate md5sums for copied files chk_md5sum somefile.* $md5_30M if [ $mismatches != 0 ]; then break; fi echo execute sync and recalculate md5sums sync chk_md5sum somefile.* $md5_30M if [ $mismatches != 0 ]; then break; fi echo Delete one of the files rm somefile.2 echo recopy the deleted
[RFC PATCH 0/5] HSI framework and drivers
Hi ! I have been working on a new proposal to support HSI/SSI drivers in the kernel. I would be very glad to get your feedback about this proposal. This patch series introduces the HSI framework, an SSI driver for OMAP and a generic character device for HSI/SSI devices. SSI, which is a legacy version of HSI, is used to connect the application engine with the cellular modem on the Nokia N900. This patch set is based on 2.6.34-rc3 Br, Carlos Chinea Andras Domokos (2): HSI CHAR: Add HSI char device driver HSI CHAR: Add HSI char device kernel configuration Carlos Chinea (3): HSI: Introducing HSI framework OMAP SSI: Introducing OMAP SSI driver OMAP SSI: Add OMAP SSI to the kernel configuration arch/arm/mach-omap2/Makefile |3 + arch/arm/mach-omap2/ssi.c | 139 +++ arch/arm/plat-omap/include/plat/ssi.h | 196 drivers/Kconfig |2 + drivers/Makefile |1 + drivers/hsi/Kconfig | 16 + drivers/hsi/Makefile |5 + drivers/hsi/clients/Kconfig | 11 + drivers/hsi/clients/Makefile |5 + drivers/hsi/clients/hsi_char.c| 1078 + drivers/hsi/controllers/Kconfig | 11 + drivers/hsi/controllers/Makefile |5 + drivers/hsi/controllers/omap_ssi.c| 1691 + drivers/hsi/hsi.c | 487 ++ include/linux/hsi/hsi.h | 365 +++ include/linux/hsi/hsi_char.h | 79 ++ 16 files changed, 4094 insertions(+), 0 deletions(-) create mode 100644 arch/arm/mach-omap2/ssi.c create mode 100644 arch/arm/plat-omap/include/plat/ssi.h create mode 100644 drivers/hsi/Kconfig create mode 100644 drivers/hsi/Makefile create mode 100644 drivers/hsi/clients/Kconfig create mode 100644 drivers/hsi/clients/Makefile create mode 100644 drivers/hsi/clients/hsi_char.c create mode 100644 drivers/hsi/controllers/Kconfig create mode 100644 drivers/hsi/controllers/Makefile create mode 100644 drivers/hsi/controllers/omap_ssi.c create mode 100644 drivers/hsi/hsi.c create mode 100644 include/linux/hsi/hsi.h create mode 100644 include/linux/hsi/hsi_char.h -- To unsubscribe from this list: send the line unsubscribe linux-omap in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[RFC PATCH 3/5] OMAP SSI: Add OMAP SSI to the kernel configuration
Add OMAP SSI driver to the kernel configuration Add OMAP SSI device to the kernel configuration Signed-off-by: Carlos Chinea carlos.chi...@nokia.com --- arch/arm/mach-omap2/Makefile |3 +++ drivers/hsi/Kconfig |2 ++ drivers/hsi/Makefile |1 + drivers/hsi/controllers/Kconfig | 11 +++ drivers/hsi/controllers/Makefile |5 + 5 files changed, 22 insertions(+), 0 deletions(-) create mode 100644 drivers/hsi/controllers/Kconfig create mode 100644 drivers/hsi/controllers/Makefile diff --git a/arch/arm/mach-omap2/Makefile b/arch/arm/mach-omap2/Makefile index 4b9fc57..106f0d5 100644 --- a/arch/arm/mach-omap2/Makefile +++ b/arch/arm/mach-omap2/Makefile @@ -97,6 +97,9 @@ obj-$(CONFIG_OMAP_IOMMU) += $(iommu-y) i2c-omap-$(CONFIG_I2C_OMAP):= i2c.o obj-y += $(i2c-omap-m) $(i2c-omap-y) +omap-ssi-$(CONFIG_OMAP_SSI):= ssi.o +obj-y += $(omap-ssi-m) $(omap-ssi-y) + # Specific board support obj-$(CONFIG_MACH_OMAP_GENERIC)+= board-generic.o obj-$(CONFIG_MACH_OMAP_H4) += board-h4.o diff --git a/drivers/hsi/Kconfig b/drivers/hsi/Kconfig index e122584..0398e23 100644 --- a/drivers/hsi/Kconfig +++ b/drivers/hsi/Kconfig @@ -10,4 +10,6 @@ menuconfig HSI if HSI +source drivers/hsi/controllers/Kconfig + endif # HSI diff --git a/drivers/hsi/Makefile b/drivers/hsi/Makefile index b42b6cf..d020ae1 100644 --- a/drivers/hsi/Makefile +++ b/drivers/hsi/Makefile @@ -2,3 +2,4 @@ # Makefile for HSI # obj-$(CONFIG_HSI) += hsi.o +obj-y += controllers/ diff --git a/drivers/hsi/controllers/Kconfig b/drivers/hsi/controllers/Kconfig new file mode 100644 index 000..0bae0c6 --- /dev/null +++ b/drivers/hsi/controllers/Kconfig @@ -0,0 +1,11 @@ +# +# HSI controllers configuration +# +config OMAP_SSI + tristate OMAP SSI hardware driver + depends on ARCH_OMAP HSI + default n + ---help--- + If you say Y here, you will enable the OMAP SSI hardware driver. + + If unsure, say N. diff --git a/drivers/hsi/controllers/Makefile b/drivers/hsi/controllers/Makefile new file mode 100644 index 000..c4ba2c2 --- /dev/null +++ b/drivers/hsi/controllers/Makefile @@ -0,0 +1,5 @@ +# +# Makefile for HSI controllers drivers +# + +obj-$(CONFIG_OMAP_SSI) += omap_ssi.o -- 1.5.6.5 -- To unsubscribe from this list: send the line unsubscribe linux-omap in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[RFC PATCH 5/5] HSI CHAR: Add HSI char device kernel configuration
From: Andras Domokos andras.domo...@nokia.com Add HSI character device kernel configuration Signed-off-by: Andras Domokos andras.domo...@nokia.com --- drivers/hsi/Kconfig |1 + drivers/hsi/Makefile |2 +- drivers/hsi/clients/Kconfig | 11 +++ drivers/hsi/clients/Makefile |5 + 4 files changed, 18 insertions(+), 1 deletions(-) create mode 100644 drivers/hsi/clients/Kconfig create mode 100644 drivers/hsi/clients/Makefile diff --git a/drivers/hsi/Kconfig b/drivers/hsi/Kconfig index 0398e23..87d87a1 100644 --- a/drivers/hsi/Kconfig +++ b/drivers/hsi/Kconfig @@ -11,5 +11,6 @@ menuconfig HSI if HSI source drivers/hsi/controllers/Kconfig +source drivers/hsi/clients/Kconfig endif # HSI diff --git a/drivers/hsi/Makefile b/drivers/hsi/Makefile index d020ae1..ebc91b3 100644 --- a/drivers/hsi/Makefile +++ b/drivers/hsi/Makefile @@ -2,4 +2,4 @@ # Makefile for HSI # obj-$(CONFIG_HSI) += hsi.o -obj-y += controllers/ +obj-y += controllers/ clients/ diff --git a/drivers/hsi/clients/Kconfig b/drivers/hsi/clients/Kconfig new file mode 100644 index 000..2145591 --- /dev/null +++ b/drivers/hsi/clients/Kconfig @@ -0,0 +1,11 @@ +# +# HSI clients configuration +# + +config HSI_CHAR + tristate HSI/SSI character driver + depends on HSI OMAP_SSI + ---help--- + If you say Y here, you will enable the HSI/SSI character driver. + This driver provides a simple character device interface for + serial communication with the cellular modem over HSI/SSI bus. diff --git a/drivers/hsi/clients/Makefile b/drivers/hsi/clients/Makefile new file mode 100644 index 000..327c0e2 --- /dev/null +++ b/drivers/hsi/clients/Makefile @@ -0,0 +1,5 @@ +# +# Makefile for HSI clients +# + +obj-$(CONFIG_HSI_CHAR) += hsi_char.o -- 1.5.6.5 -- To unsubscribe from this list: send the line unsubscribe linux-omap in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[RFC PATCH 1/5] HSI: Introducing HSI framework
Adds HSI framework in to the linux kernel. High Speed Synchronous Serial Interface (HSI) is a serial interface mainly used for connecting application engines (APE) with cellular modem engines (CMT) in cellular handsets. HSI provides multiplexing for up to 16 logical channels, low-latency and full duplex communication. Signed-off-by: Carlos Chinea carlos.chi...@nokia.com --- drivers/Kconfig |2 + drivers/Makefile|1 + drivers/hsi/Kconfig | 13 ++ drivers/hsi/Makefile|4 + drivers/hsi/hsi.c | 487 +++ include/linux/hsi/hsi.h | 365 +++ 6 files changed, 872 insertions(+), 0 deletions(-) create mode 100644 drivers/hsi/Kconfig create mode 100644 drivers/hsi/Makefile create mode 100644 drivers/hsi/hsi.c create mode 100644 include/linux/hsi/hsi.h diff --git a/drivers/Kconfig b/drivers/Kconfig index a2b902f..4fe39f9 100644 --- a/drivers/Kconfig +++ b/drivers/Kconfig @@ -50,6 +50,8 @@ source drivers/i2c/Kconfig source drivers/spi/Kconfig +source drivers/hsi/Kconfig + source drivers/pps/Kconfig source drivers/gpio/Kconfig diff --git a/drivers/Makefile b/drivers/Makefile index 2c4f277..24ca5bd 100644 --- a/drivers/Makefile +++ b/drivers/Makefile @@ -45,6 +45,7 @@ obj-$(CONFIG_SCSI)+= scsi/ obj-$(CONFIG_ATA) += ata/ obj-$(CONFIG_MTD) += mtd/ obj-$(CONFIG_SPI) += spi/ +obj-$(CONFIG_HSI) += hsi/ obj-y += net/ obj-$(CONFIG_ATM) += atm/ obj-$(CONFIG_FUSION) += message/ diff --git a/drivers/hsi/Kconfig b/drivers/hsi/Kconfig new file mode 100644 index 000..e122584 --- /dev/null +++ b/drivers/hsi/Kconfig @@ -0,0 +1,13 @@ +# +# HSI driver configuration +# +menuconfig HSI + bool HSI support + ---help--- + The High speed syncrhonous Serial Interface is + synchrnous serial interface used mainly to connect + application engines and celluar modems. + +if HSI + +endif # HSI diff --git a/drivers/hsi/Makefile b/drivers/hsi/Makefile new file mode 100644 index 000..b42b6cf --- /dev/null +++ b/drivers/hsi/Makefile @@ -0,0 +1,4 @@ +# +# Makefile for HSI +# +obj-$(CONFIG_HSI) += hsi.o diff --git a/drivers/hsi/hsi.c b/drivers/hsi/hsi.c new file mode 100644 index 000..f6fd777 --- /dev/null +++ b/drivers/hsi/hsi.c @@ -0,0 +1,487 @@ +/* + * hsi.c + * + * HSI core. + * + * Copyright (C) 2010 Nokia Corporation. All rights reserved. + * + * Contact: Carlos Chinea carlos.chi...@nokia.com + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * version 2 as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA + */ +#include linux/hsi/hsi.h +#include linux/rwsem.h + +struct hsi_cl_info { + struct list_headlist; + struct hsi_board_info info; +}; + +static LIST_HEAD(hsi_board_list); + +static struct device_type hsi_ctrl = { + .name = hsi_controller, +}; + +static struct device_type hsi_cl = { + .name = hsi_client, +}; + +static struct device_type hsi_port = { + .name = hsi_port, +}; + +static ssize_t modalias_show(struct device *dev, struct device_attribute *a, + char *buf) +{ + return sprintf(buf, hsi:%s\n, dev_name(dev)); +} + +static struct device_attribute hsi_bus_dev_attrs[] = { + __ATTR_RO(modalias), + __ATTR_NULL, +}; + +static int hsi_bus_uevent(struct device *dev, struct kobj_uevent_env *env) +{ + add_uevent_var(env, MODALIAS=hsi:%s, dev_name(dev)); + + return 0; +} + +static int hsi_bus_match(struct device *dev, struct device_driver *driver) +{ + return strcmp(dev_name(dev), driver-name) == 0; +} + +struct bus_type hsi_bus_type = { + .name = hsi, + .dev_attrs = hsi_bus_dev_attrs, + .match = hsi_bus_match, + .uevent = hsi_bus_uevent, +}; + +static void hsi_client_release(struct device *dev) +{ + kfree(to_hsi_client(dev)); +} + +static void hsi_new_client(struct hsi_port *port, struct hsi_board_info *info) +{ + struct hsi_client *cl; + + cl = kzalloc(sizeof(*cl), GFP_KERNEL); + if (!cl) + return; + cl-device.type = hsi_cl; + cl-tx_cfg = info-tx_cfg; + cl-rx_cfg = info-rx_cfg; + cl-device.bus = hsi_bus_type; + cl-device.parent = port-device;
Re: [PATCH v4 1/1] Registering sgx device and it's platform data
On Thu, 22 Apr 2010, Agarwal, Preshit wrote: In this patch SGX powervr_device is registered with it's platform specific data to provide information about setting constraint through omap_pm_set_min_bus_tput. This patch removes the requirement of EXPORT_SYMBOL for the same function. Signed-off-by: Preshit Agarwal preshit.agar...@ti.com Reviewed-by: Paul Walmsley p...@pwsan.com That's the right way to pass these function pointers. - Paul -- To unsubscribe from this list: send the line unsubscribe linux-omap in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [RFC PATCH 0/5] HSI framework and drivers
(cc Sébastien JAN) Hello Carlos, On Fri, 23 Apr 2010, Carlos Chinea wrote: I have been working on a new proposal to support HSI/SSI drivers in the kernel. I would be very glad to get your feedback about this proposal. This patch series introduces the HSI framework, an SSI driver for OMAP and a generic character device for HSI/SSI devices. SSI, which is a legacy version of HSI, is used to connect the application engine with the cellular modem on the Nokia N900. This patch set is based on 2.6.34-rc3 Have you looked at Sébastien's HSI driver code: http://www.mail-archive.com/linux-omap@vger.kernel.org/msg18506.html Is there some way that you can combine efforts with him? - Paul
RE: [PATCH v4 1/1] Registering sgx device and it's platform data
-Original Message- From: linux-omap-ow...@vger.kernel.org [mailto:linux-omap- ow...@vger.kernel.org] On Behalf Of Paul Walmsley Sent: Friday, April 23, 2010 10:45 AM To: Agarwal, Preshit Cc: linux-omap@vger.kernel.org; felipe.ba...@nokia.com; Pais, Allen Subject: Re: [PATCH v4 1/1] Registering sgx device and it's platform data On Thu, 22 Apr 2010, Agarwal, Preshit wrote: In this patch SGX powervr_device is registered with it's platform specific data to provide information about setting constraint through omap_pm_set_min_bus_tput. This patch removes the requirement of EXPORT_SYMBOL for the same function. Signed-off-by: Preshit Agarwal preshit.agar...@ti.com Reviewed-by: Paul Walmsley p...@pwsan.com That's the right way to pass these function pointers. Just to keep you posted, effort is happening on TI android kernel(.32) on integrating the sgx driver parts [1]. With user space still being non-GPL, not clear on the amount of functionality that can be enabled in upstream kernel. But a good start though to converge on the out-of-tree gaps !! Regards, Vikram [1] Internal tree references for sgx driver: http://git.omapzoom.org/?p=kernel/omap.git;a=commitdiff;h=f33345b97ad528e8093cc4f865570a17024bbf85 http://git.omapzoom.org/?p=kernel/omap.git;a=commitdiff;h=d9a3d7884c05fb310ff3d937e846202843c7c437 http://git.omapzoom.org/?p=kernel/omap.git;a=commitdiff;h=bf6accefac104660ea9b8fc5e1a782a97793692e - Paul -- To unsubscribe from this list: send the line unsubscribe linux-omap in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line unsubscribe linux-omap in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [RFC PATCH 1/5] HSI: Introducing HSI framework
On Fri, 23 Apr 2010 18:15:24 +0300 Carlos Chinea wrote: Adds HSI framework in to the linux kernel. High Speed Synchronous Serial Interface (HSI) is a ^^^ yes, correct spelling serial interface mainly used for connecting application engines (APE) with cellular modem engines (CMT) in cellular handsets. HSI provides multiplexing for up to 16 logical channels, low-latency and full duplex communication. Signed-off-by: Carlos Chinea carlos.chi...@nokia.com --- drivers/Kconfig |2 + drivers/Makefile|1 + drivers/hsi/Kconfig | 13 ++ drivers/hsi/Makefile|4 + drivers/hsi/hsi.c | 487 +++ include/linux/hsi/hsi.h | 365 +++ 6 files changed, 872 insertions(+), 0 deletions(-) create mode 100644 drivers/hsi/Kconfig create mode 100644 drivers/hsi/Makefile create mode 100644 drivers/hsi/hsi.c create mode 100644 include/linux/hsi/hsi.h diff --git a/drivers/hsi/Kconfig b/drivers/hsi/Kconfig new file mode 100644 index 000..e122584 --- /dev/null +++ b/drivers/hsi/Kconfig @@ -0,0 +1,13 @@ +# +# HSI driver configuration +# +menuconfig HSI + bool HSI support + ---help--- + The High speed syncrhonous Serial Interface is ~~~ + synchrnous serial interface used mainly to connect ~~ Fix spelling mistakes (or typos). + application engines and celluar modems. + +if HSI + +endif # HSI diff --git a/drivers/hsi/hsi.c b/drivers/hsi/hsi.c new file mode 100644 index 000..f6fd777 --- /dev/null +++ b/drivers/hsi/hsi.c @@ -0,0 +1,487 @@ +/* + * hsi.c + * + * HSI core. + * + * Copyright (C) 2010 Nokia Corporation. All rights reserved. + * + * Contact: Carlos Chinea carlos.chi...@nokia.com + */ +#include linux/hsi/hsi.h +#include linux/rwsem.h Need #include linux/list.h for LIST_HEAD(). + +struct hsi_cl_info { + struct list_headlist; + struct hsi_board_info info; +}; + +static LIST_HEAD(hsi_board_list); + + +static int hsi_bus_uevent(struct device *dev, struct kobj_uevent_env *env) #include linux/kobject.h +{ + add_uevent_var(env, MODALIAS=hsi:%s, dev_name(dev)); + + return 0; +} + +static int hsi_bus_match(struct device *dev, struct device_driver *driver) +{ + return strcmp(dev_name(dev), driver-name) == 0; string.h +} + +struct bus_type hsi_bus_type = { + .name = hsi, + .dev_attrs = hsi_bus_dev_attrs, + .match = hsi_bus_match, + .uevent = hsi_bus_uevent, +}; + +static void hsi_client_release(struct device *dev) +{ + kfree(to_hsi_client(dev)); slab.h +} + +static void hsi_new_client(struct hsi_port *port, struct hsi_board_info *info) +{ + struct hsi_client *cl; + + cl = kzalloc(sizeof(*cl), GFP_KERNEL); slab.h + if (!cl) + return; + cl-device.type = hsi_cl; + cl-tx_cfg = info-tx_cfg; + cl-rx_cfg = info-rx_cfg; + cl-device.bus = hsi_bus_type; + cl-device.parent = port-device; + cl-device.release = hsi_client_release; + dev_set_name(cl-device, info-name); + cl-device.platform_data = info-platform_data; + if (info-archdata) + cl-device.archdata = *info-archdata; + if (device_register(cl-device) 0) { + pr_err(hsi: failed to register client: %s\n, info-name); + kfree(cl); + } +} ... +/** + * hsi_alloc_msg - Allocate an HSI message + * @nents: Number of memory entries + * @flags: Kernel allocation flags + * + * NOTE: nents can be 0. This mainly makes sense for read transfer. + * In that case, HSI drivers will call the complete callback when + * there is data to be read without cosuming it. consuming + * + * Return NULL on failure or a pointer to an hsi_msg on success. + */ +struct hsi_msg *hsi_alloc_msg(unsigned int nents, gfp_t flags) +{ ... +} +EXPORT_SYMBOL_GPL(hsi_alloc_msg); ... +/** + * hsi_event -Notifies clients about port events + * @port: Port where the event occurred + * @event: The event type: + * - HSI_EVENT_START_RX: Incoming wake line high + * - HSI_EVENT_STOP_RX: Incoming wake line down + * + * Note: Clients should not be concerned about wake line behavior. But due + * to a race condition in HSI HW protocol when the wake lines are in used, are in use, + * they need to be notified about wake line changes, so they can implement + * a workaround for it. + */ +void hsi_event(struct hsi_port *port, unsigned int event) +{ ... +} diff --git a/include/linux/hsi/hsi.h b/include/linux/hsi/hsi.h new file mode 100644 index 000..b272f23 --- /dev/null +++ b/include/linux/hsi/hsi.h @@ -0,0 +1,365 @@ +/* + *
RE: [RFC PATCH 0/5] HSI framework and drivers
Hi Paul and others, On 23 April 2010, Paul Walmsley wrote: SSI, which is a legacy version of HSI, is used to connect the application engine with the cellular modem on the Nokia N900. This patch set is based on 2.6.34-rc3 Have you looked at Sébastien's HSI driver code: http://www.mail-archive.com/linux-omap@vger.kernel.org/msg18506.html I think the history of the patches is already shared. I've been looking at this from the sidelines and I think the story so far is: 2008: Carlos sent the original SSI patchset (and got comments) - http://lkml.org/lkml/2008/10/3/116 2009: Sébastien sent an updated patchset (and got comments) - http://www.mail-archive.com/linux-omap@vger.kernel.org/msg18506.html .. and now this latest one from Carlos is a completely new design that attempts to address the design comments that have been raised, hopefully pushing HSI/SSI a step closer to getting accepted. I'll leave it to Carlos and Sébastien to correct me if I got the above wrong... Br, -- Kai Vehmanen -- To unsubscribe from this list: send the line unsubscribe linux-omap in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [patch-2.6.34-rc2+ 00/11] musb patches (v2)
On Thu, Mar 25, 2010 at 01:14:22PM +0200, Felipe Balbi wrote: Hi Greg, sorry for the last time. There was a bug in my script which caused it to rebased against the wrong branch. All queued up, thanks greg k-h -- To unsubscribe from this list: send the line unsubscribe linux-omap in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH] usb: Fix tusb6010 for DMA API (Re: [patch-2.6.34-rc2+ 00/11] musb patches (v2))
* Greg KH g...@kroah.com [100423 14:05]: On Thu, Mar 25, 2010 at 01:14:22PM +0200, Felipe Balbi wrote: Hi Greg, sorry for the last time. There was a bug in my script which caused it to rebased against the wrong branch. All queued up, thanks This compile fix still needs to be queued too. Can also merge via omap tree if you guys ack. Tony From 70bc10c9cbfd245b43234f2504eae21ce6b3d73f Mon Sep 17 00:00:00 2001 From: Tony Lindgren t...@atomide.com Date: Wed, 31 Mar 2010 05:02:07 -0700 Subject: [PATCH] usb: Fix tusb6010 for DMA API Commit 18eabe2347ae7a11b3db768695913724166dfb0e introduced DMA buffer ownership. Fix tusb6010 accordingly. Also change the order of musb_read_fifo() to happen after dma_cache_maint to have the DMA operations completed before moving the remaining unaligned bytes with PIO. The DMA access and PIO touch different areas of the FIFO, so this change only makes the code a bit easier to follow. Tested on n810 and g_ether with variable size ping test. The test seems to fail for some ping sizes, but that seems to be a different problem. Signed-off-by: Tony Lindgren t...@atomide.com diff --git a/drivers/usb/musb/tusb6010.c b/drivers/usb/musb/tusb6010.c index ab776a8..60d3938 100644 --- a/drivers/usb/musb/tusb6010.c +++ b/drivers/usb/musb/tusb6010.c @@ -29,6 +29,19 @@ static void tusb_source_power(struct musb *musb, int is_on); #define TUSB_REV_MAJOR(reg_val) ((reg_val 4) 0xf) #define TUSB_REV_MINOR(reg_val) (reg_val 0xf) +#ifdef CONFIG_PM +/* REVISIT: These should be only needed if somebody implements off idle */ +void musb_platform_save_context(struct musb *musb, + struct musb_context_registers *musb_context) +{ +} + +void musb_platform_restore_context(struct musb *musb, + struct musb_context_registers *musb_context) +{ +} +#endif + /* * Checks the revision. We need to use the DMA register as 3.0 does not * have correct versions for TUSB_PRCM_REV or TUSB_INT_CTRL_REV. diff --git a/drivers/usb/musb/tusb6010_omap.c b/drivers/usb/musb/tusb6010_omap.c index 1c86809..6f0e943 100644 --- a/drivers/usb/musb/tusb6010_omap.c +++ b/drivers/usb/musb/tusb6010_omap.c @@ -38,7 +38,7 @@ struct tusb_omap_dma_ch { struct tusb_omap_dma *tusb_dma; - void __iomem *dma_addr; + dma_addr_t dma_addr; u32 len; u16 packet_sz; @@ -125,6 +125,7 @@ static void tusb_omap_dma_cb(int lch, u16 ch_status, void *data) struct tusb_omap_dma_ch *chdat = to_chdat(channel); struct tusb_omap_dma *tusb_dma = chdat-tusb_dma; struct musb *musb = chdat-musb; + struct device *dev = musb-controller; struct musb_hw_ep *hw_ep = chdat-hw_ep; void __iomem *ep_conf = hw_ep-conf; void __iomem *mbase = musb-mregs; @@ -172,13 +173,15 @@ static void tusb_omap_dma_cb(int lch, u16 ch_status, void *data) DBG(3, Using PIO for remaining %lu bytes\n, pio); buf = phys_to_virt((u32)chdat-dma_addr) + chdat-transfer_len; if (chdat-tx) { - dma_cache_maint(phys_to_virt((u32)chdat-dma_addr), - chdat-transfer_len, DMA_TO_DEVICE); + dma_unmap_single(dev, chdat-dma_addr, + chdat-transfer_len, + DMA_TO_DEVICE); musb_write_fifo(hw_ep, pio, buf); } else { + dma_unmap_single(dev, chdat-dma_addr, + chdat-transfer_len, + DMA_FROM_DEVICE); musb_read_fifo(hw_ep, pio, buf); - dma_cache_maint(phys_to_virt((u32)chdat-dma_addr), - chdat-transfer_len, DMA_FROM_DEVICE); } channel-actual_len += pio; } @@ -223,6 +226,7 @@ static int tusb_omap_dma_program(struct dma_channel *channel, u16 packet_sz, struct tusb_omap_dma_ch *chdat = to_chdat(channel); struct tusb_omap_dma *tusb_dma = chdat-tusb_dma; struct musb *musb = chdat-musb; + struct device *dev = musb-controller; struct musb_hw_ep *hw_ep = chdat-hw_ep; void __iomem *mbase = musb-mregs; void __iomem *ep_conf = hw_ep-conf; @@ -298,14 +302,16 @@ static int tusb_omap_dma_program(struct dma_channel *channel, u16 packet_sz, chdat-packet_sz = packet_sz; chdat-len = len; channel-actual_len = 0; - chdat-dma_addr = (void __iomem *)dma_addr; + chdat-dma_addr = dma_addr; channel-status = MUSB_DMA_STATUS_BUSY; /* Since we're recycling dma areas, we need to clean or invalidate */ if (chdat-tx) - dma_cache_maint(phys_to_virt(dma_addr), len, DMA_TO_DEVICE); + dma_map_single(dev, phys_to_virt(dma_addr), len, +DMA_TO_DEVICE); else - dma_cache_maint(phys_to_virt(dma_addr), len, DMA_FROM_DEVICE); + dma_map_single(dev, phys_to_virt(dma_addr), len, +DMA_FROM_DEVICE); /* Use 16-bit transfer if dma_addr is not 32-bit aligned */ if ((dma_addr 0x3) == 0) {
Re: [PATCH] usb: Fix tusb6010 for DMA API (Re: [patch-2.6.34-rc2+ 00/11] musb patches (v2))
On Fri, Apr 23, 2010 at 02:23:08PM -0700, Tony Lindgren wrote: * Greg KH g...@kroah.com [100423 14:05]: On Thu, Mar 25, 2010 at 01:14:22PM +0200, Felipe Balbi wrote: Hi Greg, sorry for the last time. There was a bug in my script which caused it to rebased against the wrong branch. All queued up, thanks This compile fix still needs to be queued too. Can also merge via omap tree if you guys ack. That's up to Felipe. I have no objection to it, it's his call. thanks, greg k-h -- To unsubscribe from this list: send the line unsubscribe linux-omap in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH 00/28] omap fixes for v2.6.34-rc5
Hi all, Here are some omap fixes for review. Mostly trivial stuff. Sorry for posting these so late in the -rc cycle. Travel, meetings and ELC sucked up quite a bit of my time over past month. Regards, Tony --- Aaro Koskinen (2): omap: fix clocksource_32k to start from zero omap: delete unused bootloader tag variables Abraham Arce (1): OMAP4: Clocks: Change SPI Instance Names Enric Balletbo i Serra (1): omap3: Fix EHCI port for IGEP v2 board Felipe Balbi (1): arm: omap1: remove dead code from timer32k.c Francisco Alecrim (1): n8x0_defconfig: remove CONFIG_NILFS2_FS override Janusz Krzysztofik (1): omap: gpio: fix incorrect matching of IRQ_TYPE_EDGE_BOTH Jarkko Nikula (2): omap: rx51_defconfig: Remove duplicate phonet omap: rx51_defconfig: Remove CONFIG_SYSFS_DEPRECATED*=y options Richard Woodruff (1): omap4: Fix build break when used with gcc-4.4.1 (2009-q3) Santosh Shilimkar (2): OMAP4: Fix for CONTROL register Base omap4: Fix McBSP4 base address Thomas Weber (8): omap: Devkit8000: Fix wrong usb port on Devkit8000 omap: board-sdp-flash.c: Fix typos in debug output omap: Devkit8000: Fix typo in supplies omap: Devkit8000: Add missing package selection omap: Devkit8000: Fix typo in pin name omap: Devkit8000: Remove unnecessary include file omap: Devkit8000: Change position of init calls omap: Devkit8000: Remove unused pins Tony Lindgren (2): omap2: Fix ARM processor check for 24xx omap: Fix n8x0 mmc_mmc_init compile warnings and typos kishore kadiyala (1): OMAP4-HSMMC: FIX for MMC5 Controller IRQ Base manjugk manjugk (1): omap: DMA: Init CDAC to zero stanley.miao (4): omap: fix the compile error if CONFIG_MTD_NAND_OMAP2 is notenabled omap: remove one of the define of INT_34XX_BENCH_MPU_EMUL AM3517: initialize i2c subsystem after mux subsystem omap: fix a gpmc nand problem arch/arm/configs/n8x0_defconfig|1 - arch/arm/configs/rx51_defconfig|3 -- arch/arm/mach-omap1/timer32k.c | 15 - arch/arm/mach-omap2/Kconfig|6 ++-- arch/arm/mach-omap2/board-am3517evm.c |4 +- arch/arm/mach-omap2/board-devkit8000.c | 39 ++-- arch/arm/mach-omap2/board-igep0020.c |8 ++--- arch/arm/mach-omap2/board-n8x0.c | 18 ++- arch/arm/mach-omap2/board-sdp-flash.c |8 ++--- arch/arm/mach-omap2/clock44xx_data.c |8 ++--- arch/arm/mach-omap2/devices.c |2 + arch/arm/mach-omap2/gpmc-nand.c|3 ++ arch/arm/mach-omap2/include/mach/entry-macro.S |2 + arch/arm/mach-omap2/omap-headsmp.S |6 ++-- arch/arm/mach-omap2/omap44xx-smc.S |2 + arch/arm/plat-omap/common.c| 22 +- arch/arm/plat-omap/dma.c |9 ++ arch/arm/plat-omap/gpio.c |6 ++-- arch/arm/plat-omap/include/plat/irqs.h |2 - arch/arm/plat-omap/include/plat/mcbsp.h|2 + arch/arm/plat-omap/include/plat/nand.h |7 arch/arm/plat-omap/include/plat/omap44xx.h |2 + 22 files changed, 80 insertions(+), 95 deletions(-) -- Signature -- To unsubscribe from this list: send the line unsubscribe linux-omap in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH 02/28] arm: omap1: remove dead code from timer32k.c
From: Felipe Balbi felipe.ba...@nokia.com Trivial patch, no functional changes Signed-off-by: Felipe Balbi felipe.ba...@nokia.com Signed-off-by: Tony Lindgren t...@atomide.com --- arch/arm/mach-omap1/timer32k.c | 15 --- 1 files changed, 0 insertions(+), 15 deletions(-) diff --git a/arch/arm/mach-omap1/timer32k.c b/arch/arm/mach-omap1/timer32k.c index 9ad1185..20cfbcc 100644 --- a/arch/arm/mach-omap1/timer32k.c +++ b/arch/arm/mach-omap1/timer32k.c @@ -68,12 +68,6 @@ struct sys_timer omap_timer; * --- */ -#if defined(CONFIG_ARCH_OMAP16XX) -#define TIMER_32K_SYNCHRONIZED 0xfffbc410 -#else -#error OMAP 32KHz timer does not currently work on 15XX! -#endif - /* 16xx specific defines */ #define OMAP1_32K_TIMER_BASE 0xfffb9000 #define OMAP1_32K_TIMER_CR 0x08 @@ -150,15 +144,6 @@ static struct clock_event_device clockevent_32k_timer = { .set_mode = omap_32k_timer_set_mode, }; -/* - * The 32KHz synchronized timer is an additional timer on 16xx. - * It is always running. - */ -static inline unsigned long omap_32k_sync_timer_read(void) -{ - return omap_readl(TIMER_32K_SYNCHRONIZED); -} - static irqreturn_t omap_32k_timer_interrupt(int irq, void *dev_id) { struct clock_event_device *evt = clockevent_32k_timer; -- To unsubscribe from this list: send the line unsubscribe linux-omap in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH 01/28] omap: fix clocksource_32k to start from zero
From: Aaro Koskinen aaro.koski...@nokia.com When the 32k sync timer is used for sched_clock(), it should count time from the kernel boot (clocksource init) instead of the last HW reset. Otherwise printk.time values will jump suddenly during the boot: [0.00] calling omap2_clk_arch_init+0x0/0x138 @ 1 [0.00] initcall omap2_clk_arch_init+0x0/0x138 returned -22 after 0 usecs [0.00] initcall omap2_clk_arch_init+0x0/0x138 returned with error code -22 [0.00] calling omap_init_clocksource_32k+0x0/0x98 @ 1 [ 508.697937] initcall omap_init_clocksource_32k+0x0/0x98 returned 0 after 0 usecs [ 508.697967] calling omap_init_devices+0x0/0x38 @ 1 [ 508.698425] initcall omap_init_devices+0x0/0x38 returned 0 after 0 usecs This will confuse tools such as scripts/bootgraph.pl. Signed-off-by: Aaro Koskinen aaro.koski...@nokia.com Acked-by: Kevin Hilman khil...@deeprootsystems.com Signed-off-by: Tony Lindgren t...@atomide.com --- arch/arm/plat-omap/common.c | 19 ++- 1 files changed, 14 insertions(+), 5 deletions(-) diff --git a/arch/arm/plat-omap/common.c b/arch/arm/plat-omap/common.c index 088c1a0..01cbb48 100644 --- a/arch/arm/plat-omap/common.c +++ b/arch/arm/plat-omap/common.c @@ -100,10 +100,17 @@ EXPORT_SYMBOL(omap_get_var_config); #include linux/clocksource.h +/* + * offset_32k holds the init time counter value. It is then subtracted + * from every counter read to achieve a counter that counts time from the + * kernel boot (needed for sched_clock()). + */ +static u32 offset_32k __read_mostly; + #ifdef CONFIG_ARCH_OMAP16XX static cycle_t omap16xx_32k_read(struct clocksource *cs) { - return omap_readl(OMAP16XX_TIMER_32K_SYNCHRONIZED); + return omap_readl(OMAP16XX_TIMER_32K_SYNCHRONIZED) - offset_32k; } #else #define omap16xx_32k_read NULL @@ -112,7 +119,7 @@ static cycle_t omap16xx_32k_read(struct clocksource *cs) #ifdef CONFIG_ARCH_OMAP2420 static cycle_t omap2420_32k_read(struct clocksource *cs) { - return omap_readl(OMAP2420_32KSYNCT_BASE + 0x10); + return omap_readl(OMAP2420_32KSYNCT_BASE + 0x10) - offset_32k; } #else #define omap2420_32k_read NULL @@ -121,7 +128,7 @@ static cycle_t omap2420_32k_read(struct clocksource *cs) #ifdef CONFIG_ARCH_OMAP2430 static cycle_t omap2430_32k_read(struct clocksource *cs) { - return omap_readl(OMAP2430_32KSYNCT_BASE + 0x10); + return omap_readl(OMAP2430_32KSYNCT_BASE + 0x10) - offset_32k; } #else #define omap2430_32k_read NULL @@ -130,7 +137,7 @@ static cycle_t omap2430_32k_read(struct clocksource *cs) #ifdef CONFIG_ARCH_OMAP3 static cycle_t omap34xx_32k_read(struct clocksource *cs) { - return omap_readl(OMAP3430_32KSYNCT_BASE + 0x10); + return omap_readl(OMAP3430_32KSYNCT_BASE + 0x10) - offset_32k; } #else #define omap34xx_32k_read NULL @@ -139,7 +146,7 @@ static cycle_t omap34xx_32k_read(struct clocksource *cs) #ifdef CONFIG_ARCH_OMAP4 static cycle_t omap44xx_32k_read(struct clocksource *cs) { - return omap_readl(OMAP4430_32KSYNCT_BASE + 0x10); + return omap_readl(OMAP4430_32KSYNCT_BASE + 0x10) - offset_32k; } #else #define omap44xx_32k_read NULL @@ -227,6 +234,8 @@ static int __init omap_init_clocksource_32k(void) clocksource_32k.mult = clocksource_hz2mult(32768, clocksource_32k.shift); + offset_32k = clocksource_32k.read(clocksource_32k); + if (clocksource_register(clocksource_32k)) printk(err, clocksource_32k.name); } -- To unsubscribe from this list: send the line unsubscribe linux-omap in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH 03/28] omap: gpio: fix incorrect matching of IRQ_TYPE_EDGE_BOTH
From: Janusz Krzysztofik jkrzy...@tis.icnet.pl Since IRQ_TYPE_EDGE_BOTH is defined as (IRQ_TYPE_EDGE_FALLING | IRQ_TYPE_EDGE_RISING), testing against it with a bitwise AND also matches both single-edge cases in addition to the intended both edges case. Fix it, replacing with a more accurate expression. Created and tested againts linux-2.6.34-rc3. Applicable to 2.6.33-stable as well. Signed-off-by: Janusz Krzysztofik jkrzy...@tis.icnet.pl Signed-off-by: Tony Lindgren t...@atomide.com --- arch/arm/plat-omap/gpio.c |6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) diff --git a/arch/arm/plat-omap/gpio.c b/arch/arm/plat-omap/gpio.c index 76a347b..45a225d 100644 --- a/arch/arm/plat-omap/gpio.c +++ b/arch/arm/plat-omap/gpio.c @@ -798,7 +798,7 @@ static int _set_gpio_triggering(struct gpio_bank *bank, int gpio, int trigger) case METHOD_MPUIO: reg += OMAP_MPUIO_GPIO_INT_EDGE; l = __raw_readl(reg); - if (trigger IRQ_TYPE_EDGE_BOTH) + if ((trigger IRQ_TYPE_SENSE_MASK) == IRQ_TYPE_EDGE_BOTH) bank-toggle_mask |= 1 gpio; if (trigger IRQ_TYPE_EDGE_RISING) l |= 1 gpio; @@ -812,7 +812,7 @@ static int _set_gpio_triggering(struct gpio_bank *bank, int gpio, int trigger) case METHOD_GPIO_1510: reg += OMAP1510_GPIO_INT_CONTROL; l = __raw_readl(reg); - if (trigger IRQ_TYPE_EDGE_BOTH) + if ((trigger IRQ_TYPE_SENSE_MASK) == IRQ_TYPE_EDGE_BOTH) bank-toggle_mask |= 1 gpio; if (trigger IRQ_TYPE_EDGE_RISING) l |= 1 gpio; @@ -846,7 +846,7 @@ static int _set_gpio_triggering(struct gpio_bank *bank, int gpio, int trigger) case METHOD_GPIO_7XX: reg += OMAP7XX_GPIO_INT_CONTROL; l = __raw_readl(reg); - if (trigger IRQ_TYPE_EDGE_BOTH) + if ((trigger IRQ_TYPE_SENSE_MASK) == IRQ_TYPE_EDGE_BOTH) bank-toggle_mask |= 1 gpio; if (trigger IRQ_TYPE_EDGE_RISING) l |= 1 gpio; -- To unsubscribe from this list: send the line unsubscribe linux-omap in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH 04/28] omap: DMA: Init CDAC to zero
From: manjugk manjugk manj...@ti.com The register DMA4_CDAC needs to be initialized to zero before starting DMA transfer. Cc: Santosh Shilimkar santosh.shilim...@ti.com Cc: Govindraj R govindraj.r...@ti.com Cc: Kevin Hilman khil...@deeprootsystems.com Reported-by:S, Venkatraman svenk...@ti.com Signed-off-by: Manjunatha GK manj...@ti.com Signed-off-by: Tony Lindgren t...@atomide.com --- arch/arm/plat-omap/dma.c |9 + 1 files changed, 9 insertions(+), 0 deletions(-) diff --git a/arch/arm/plat-omap/dma.c b/arch/arm/plat-omap/dma.c index 2ab224c..f6c9bdc 100644 --- a/arch/arm/plat-omap/dma.c +++ b/arch/arm/plat-omap/dma.c @@ -936,6 +936,15 @@ void omap_start_dma(int lch) { u32 l; + /* +* The CPC/CDAC register needs to be initialized to zero +* before starting dma transfer. +*/ + if (cpu_is_omap15xx()) + dma_write(0, CPC(lch)); + else + dma_write(0, CDAC(lch)); + if (!omap_dma_in_1510_mode() dma_chan[lch].next_lch != -1) { int next_lch, cur_lch; char dma_chan_link_map[OMAP_DMA4_LOGICAL_DMA_CH_COUNT]; -- To unsubscribe from this list: send the line unsubscribe linux-omap in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH 05/28] omap4: Fix build break when used with gcc-4.4.1 (2009-q3)
From: Richard Woodruff r-woodru...@ti.com This patch adds argument to smc calls as gcc-4.4.1 requires it otherwise the build breaks with 2009-q3 toolchanin. arch/arm/mach-omap2/omap-headsmp.S: Assembler messages: arch/arm/mach-omap2/omap-headsmp.S:36: Error: missing expression -- `smc' arch/arm/mach-omap2/omap-headsmp.S:55: Error: missing expression -- `smc' arch/arm/mach-omap2/omap-headsmp.S:63: Error: missing expression -- `smc' make[1]: *** [arch/arm/mach-omap2/omap-headsmp.o] Error 1 Signed-off-by: Richard Woodruff r-woodru...@ti.com Signed-off-by: Santosh Shilimkar santosh.shilim...@ti.com Signed-off-by: Tony Lindgren t...@atomide.com --- arch/arm/mach-omap2/omap-headsmp.S |6 +++--- arch/arm/mach-omap2/omap44xx-smc.S |2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/arch/arm/mach-omap2/omap-headsmp.S b/arch/arm/mach-omap2/omap-headsmp.S index aa3f65c..ef0e7a0 100644 --- a/arch/arm/mach-omap2/omap-headsmp.S +++ b/arch/arm/mach-omap2/omap-headsmp.S @@ -33,7 +33,7 @@ ENTRY(omap_secondary_startup) hold: ldr r12,=0x103 dsb - smc @ read from AuxCoreBoot0 + smc #0 @ read from AuxCoreBoot0 mov r0, r0, lsr #9 mrc p15, 0, r4, c0, c0, 5 and r4, r4, #0x0f @@ -52,7 +52,7 @@ ENTRY(omap_modify_auxcoreboot0) stmfd sp!, {r1-r12, lr} ldr r12, =0x104 dsb - smc + smc #0 ldmfd sp!, {r1-r12, pc} END(omap_modify_auxcoreboot0) @@ -60,6 +60,6 @@ ENTRY(omap_auxcoreboot_addr) stmfd sp!, {r2-r12, lr} ldr r12, =0x105 dsb - smc + smc #0 ldmfd sp!, {r2-r12, pc} END(omap_auxcoreboot_addr) diff --git a/arch/arm/mach-omap2/omap44xx-smc.S b/arch/arm/mach-omap2/omap44xx-smc.S index 89bb2b1..f61c777 100644 --- a/arch/arm/mach-omap2/omap44xx-smc.S +++ b/arch/arm/mach-omap2/omap44xx-smc.S @@ -27,6 +27,6 @@ ENTRY(omap_smc1) mov r12, r0 mov r0, r1 dsb - smc + smc #0 ldmfd sp!, {r2-r12, pc} END(omap_smc1) -- To unsubscribe from this list: send the line unsubscribe linux-omap in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH 07/28] omap: Fix n8x0 mmc_mmc_init compile warnings and typos
Fix warning: 'return' with a value, in function returning void in n8x0_mmc_init. Also fix a search and replace typo. Signed-off-by: Tony Lindgren t...@atomide.com --- arch/arm/mach-omap2/board-n8x0.c | 18 +- 1 files changed, 9 insertions(+), 9 deletions(-) diff --git a/arch/arm/mach-omap2/board-n8x0.c b/arch/arm/mach-omap2/board-n8x0.c index da9bcb8..3ccc34e 100644 --- a/arch/arm/mach-omap2/board-n8x0.c +++ b/arch/arm/mach-omap2/board-n8x0.c @@ -216,7 +216,7 @@ static void __init n8x0_onenand_init(void) {} */ #define N8X0_SLOT_SWITCH_GPIO 96 #define N810_EMMC_VSD_GPIO 23 -#define NN810_EMMC_VIO_GPIO9 +#define N810_EMMC_VIO_GPIO 9 static int n8x0_mmc_switch_slot(struct device *dev, int slot) { @@ -304,10 +304,10 @@ static void n810_set_power_emmc(struct device *dev, if (power_on) { gpio_set_value(N810_EMMC_VSD_GPIO, 1); msleep(1); - gpio_set_value(NN810_EMMC_VIO_GPIO, 1); + gpio_set_value(N810_EMMC_VIO_GPIO, 1); msleep(1); } else { - gpio_set_value(NN810_EMMC_VIO_GPIO, 0); + gpio_set_value(N810_EMMC_VIO_GPIO, 0); msleep(50); gpio_set_value(N810_EMMC_VSD_GPIO, 0); msleep(50); @@ -468,7 +468,7 @@ static void n8x0_mmc_cleanup(struct device *dev) if (machine_is_nokia_n810()) { gpio_free(N810_EMMC_VSD_GPIO); - gpio_free(NN810_EMMC_VIO_GPIO); + gpio_free(N810_EMMC_VIO_GPIO); } } @@ -529,7 +529,7 @@ void __init n8x0_mmc_init(void) err = gpio_request(N8X0_SLOT_SWITCH_GPIO, MMC slot switch); if (err) - return err; + return; gpio_direction_output(N8X0_SLOT_SWITCH_GPIO, 0); @@ -537,17 +537,17 @@ void __init n8x0_mmc_init(void) err = gpio_request(N810_EMMC_VSD_GPIO, MMC slot 2 Vddf); if (err) { gpio_free(N8X0_SLOT_SWITCH_GPIO); - return err; + return; } gpio_direction_output(N810_EMMC_VSD_GPIO, 0); - err = gpio_request(NN810_EMMC_VIO_GPIO, MMC slot 2 Vdd); + err = gpio_request(N810_EMMC_VIO_GPIO, MMC slot 2 Vdd); if (err) { gpio_free(N8X0_SLOT_SWITCH_GPIO); gpio_free(N810_EMMC_VSD_GPIO); - return err; + return; } - gpio_direction_output(NN810_EMMC_VIO_GPIO, 0); + gpio_direction_output(N810_EMMC_VIO_GPIO, 0); } mmc_data[0] = mmc1_data; -- To unsubscribe from this list: send the line unsubscribe linux-omap in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH 09/28] OMAP4-HSMMC: FIX for MMC5 Controller IRQ Base
From: kishore kadiyala kishore.kadiy...@ti.com This patch fixes HSMMC Controller5 IRQ Base. Signed-off-by: Kishore Kadiyala kishore.kadiy...@ti.com Signed-off-by: Tony Lindgren t...@atomide.com --- arch/arm/mach-omap2/devices.c |2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/arch/arm/mach-omap2/devices.c b/arch/arm/mach-omap2/devices.c index 23e4d77..2271b9b 100644 --- a/arch/arm/mach-omap2/devices.c +++ b/arch/arm/mach-omap2/devices.c @@ -726,7 +726,7 @@ void __init omap2_init_mmc(struct omap_mmc_platform_data **mmc_data, if (!cpu_is_omap44xx()) return; base = OMAP4_MMC5_BASE + OMAP4_MMC_REG_OFFSET; - irq = OMAP44XX_IRQ_MMC4; + irq = OMAP44XX_IRQ_MMC5; break; default: continue; -- To unsubscribe from this list: send the line unsubscribe linux-omap in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH 08/28] omap3: Fix EHCI port for IGEP v2 board
From: Enric Balletbo i Serra eballe...@iseebcn.com IGEP v2 uses EHCI port 1 instead of EHCI port 2. Signed-off-by: Enric Balletbo i Serra eballe...@iseebcn.com Acked-by: Felipe Balbi felipe.ba...@nokia.com Signed-off-by: Tony Lindgren t...@atomide.com --- arch/arm/mach-omap2/board-igep0020.c |8 1 files changed, 4 insertions(+), 4 deletions(-) diff --git a/arch/arm/mach-omap2/board-igep0020.c b/arch/arm/mach-omap2/board-igep0020.c index 3c7789d..d55c57b 100644 --- a/arch/arm/mach-omap2/board-igep0020.c +++ b/arch/arm/mach-omap2/board-igep0020.c @@ -458,13 +458,13 @@ static struct omap_musb_board_data musb_board_data = { }; static const struct ehci_hcd_omap_platform_data ehci_pdata __initconst = { - .port_mode[0] = EHCI_HCD_OMAP_MODE_UNKNOWN, - .port_mode[1] = EHCI_HCD_OMAP_MODE_PHY, + .port_mode[0] = EHCI_HCD_OMAP_MODE_PHY, + .port_mode[1] = EHCI_HCD_OMAP_MODE_UNKNOWN, .port_mode[2] = EHCI_HCD_OMAP_MODE_UNKNOWN, .phy_reset = true, - .reset_gpio_port[0] = -EINVAL, - .reset_gpio_port[1] = IGEP2_GPIO_USBH_NRESET, + .reset_gpio_port[0] = IGEP2_GPIO_USBH_NRESET, + .reset_gpio_port[1] = -EINVAL, .reset_gpio_port[2] = -EINVAL, }; -- To unsubscribe from this list: send the line unsubscribe linux-omap in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH 10/28] OMAP4: Fix for CONTROL register Base
From: Santosh Shilimkar santosh.shilim...@ti.com This patch fixes the base address of CONTROL register on OMAP4430SDP. The control base is used by peripherals like MMC1 for PBIAS configuration. Signed-off-by: Santosh Shilimkar santosh.shilim...@ti.com Signed-off-by: Kishore Kadiyala kishore.kadiy...@ti.com Signed-off-by: Tony Lindgren t...@atomide.com --- arch/arm/plat-omap/include/plat/omap44xx.h |2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/arch/arm/plat-omap/include/plat/omap44xx.h b/arch/arm/plat-omap/include/plat/omap44xx.h index 2302474..b3ef1a7 100644 --- a/arch/arm/plat-omap/include/plat/omap44xx.h +++ b/arch/arm/plat-omap/include/plat/omap44xx.h @@ -32,7 +32,7 @@ #define OMAP4430_PRM_BASE 0x4a306000 #define OMAP44XX_GPMC_BASE 0x5000 #define OMAP443X_SCM_BASE 0x4a002000 -#define OMAP443X_CTRL_BASE OMAP443X_SCM_BASE +#define OMAP443X_CTRL_BASE 0x4a10 #define OMAP44XX_IC_BASE 0x4820 #define OMAP44XX_IVA_INTC_BASE 0x4000 #define IRQ_SIR_IRQ0x0040 -- To unsubscribe from this list: send the line unsubscribe linux-omap in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH 11/28] omap: Devkit8000: Fix wrong usb port on Devkit8000
From: Thomas Weber we...@corscience.de Disable the nonexistent ehci port on Devkit8000. Signed-off-by: Thomas Weber we...@corscience.de Acked-by: Anand Gadiyar gadi...@ti.com Signed-off-by: Tony Lindgren t...@atomide.com --- arch/arm/mach-omap2/board-devkit8000.c |4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/arm/mach-omap2/board-devkit8000.c b/arch/arm/mach-omap2/board-devkit8000.c index 5bfc13b..db4c093 100644 --- a/arch/arm/mach-omap2/board-devkit8000.c +++ b/arch/arm/mach-omap2/board-devkit8000.c @@ -639,12 +639,12 @@ static struct omap_musb_board_data musb_board_data = { static const struct ehci_hcd_omap_platform_data ehci_pdata __initconst = { .port_mode[0] = EHCI_HCD_OMAP_MODE_PHY, - .port_mode[1] = EHCI_HCD_OMAP_MODE_PHY, + .port_mode[1] = EHCI_HCD_OMAP_MODE_UNKNOWN, .port_mode[2] = EHCI_HCD_OMAP_MODE_UNKNOWN, .phy_reset = true, .reset_gpio_port[0] = -EINVAL, - .reset_gpio_port[1] = 147, + .reset_gpio_port[1] = -EINVAL, .reset_gpio_port[2] = -EINVAL }; -- To unsubscribe from this list: send the line unsubscribe linux-omap in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH 12/28] OMAP4: Clocks: Change SPI Instance Names
From: Abraham Arce x0066...@ti.com Change the name for the spi instances on omap44xx_clks to match the names omap2 spi driver gives: omap-mcspi.1 - omap2_mcspi.1 omap-mcspi.2 - omap2_mcspi.2 omap-mcspi.3 - omap2_mcspi.3 omap-mcspi.4 - omap2_mcspi.4 Signed-off-by: Abraham Arce x0066...@ti.com Signed-off-by: Tony Lindgren t...@atomide.com --- arch/arm/mach-omap2/clock44xx_data.c |8 1 files changed, 4 insertions(+), 4 deletions(-) diff --git a/arch/arm/mach-omap2/clock44xx_data.c b/arch/arm/mach-omap2/clock44xx_data.c index 28b1079..a5c0c9c 100644 --- a/arch/arm/mach-omap2/clock44xx_data.c +++ b/arch/arm/mach-omap2/clock44xx_data.c @@ -2671,10 +2671,10 @@ static struct omap_clk omap44xx_clks[] = { CLK(omap-mcbsp.2, ick, dummy_ck, CK_443X), CLK(omap-mcbsp.3, ick, dummy_ck, CK_443X), CLK(omap-mcbsp.4, ick, dummy_ck, CK_443X), - CLK(omap-mcspi.1, ick, dummy_ck, CK_443X), - CLK(omap-mcspi.2, ick, dummy_ck, CK_443X), - CLK(omap-mcspi.3, ick, dummy_ck, CK_443X), - CLK(omap-mcspi.4, ick, dummy_ck, CK_443X), + CLK(omap2_mcspi.1,ick, dummy_ck, CK_443X), + CLK(omap2_mcspi.2,ick, dummy_ck, CK_443X), + CLK(omap2_mcspi.3,ick, dummy_ck, CK_443X), + CLK(omap2_mcspi.4,ick, dummy_ck, CK_443X), CLK(NULL, uart1_ick,dummy_ck, CK_443X), CLK(NULL, uart2_ick,dummy_ck, CK_443X), CLK(NULL, uart3_ick,dummy_ck, CK_443X), -- To unsubscribe from this list: send the line unsubscribe linux-omap in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH 13/28] omap: fix the compile error if CONFIG_MTD_NAND_OMAP2 is notenabled
From: stanley.miao stanley.m...@windriver.com If CONFIG_MTD_NAND_OMAP2 is not enabled, there will be a compile error, gpmc_nand_init() is not defined. Add a inline noop function to fix it. Signed-off-by: Stanley.Miao stanley.m...@windriver.com Signed-off-by: Tony Lindgren t...@atomide.com --- arch/arm/plat-omap/include/plat/nand.h |7 +++ 1 files changed, 7 insertions(+), 0 deletions(-) diff --git a/arch/arm/plat-omap/include/plat/nand.h b/arch/arm/plat-omap/include/plat/nand.h index 6ba88d2..f8efd54 100644 --- a/arch/arm/plat-omap/include/plat/nand.h +++ b/arch/arm/plat-omap/include/plat/nand.h @@ -29,4 +29,11 @@ struct omap_nand_platform_data { /* size (4 KiB) for IO mapping */ #defineNAND_IO_SIZESZ_4K +#if defined(CONFIG_MTD_NAND_OMAP2) || defined(CONFIG_MTD_NAND_OMAP2_MODULE) extern int gpmc_nand_init(struct omap_nand_platform_data *d); +#else +static inline int gpmc_nand_init(struct omap_nand_platform_data *d) +{ + return 0; +} +#endif -- To unsubscribe from this list: send the line unsubscribe linux-omap in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH 14/28] omap: remove one of the define of INT_34XX_BENCH_MPU_EMUL
From: stanley.miao stanley.m...@windriver.com INT_34XX_BENCH_MPU_EMUL was defined twice, another is at Line 312. Signed-off-by: Stanley.Miao stanley.m...@windriver.com Signed-off-by: Tony Lindgren t...@atomide.com --- arch/arm/plat-omap/include/plat/irqs.h |2 -- 1 files changed, 0 insertions(+), 2 deletions(-) diff --git a/arch/arm/plat-omap/include/plat/irqs.h b/arch/arm/plat-omap/include/plat/irqs.h index b65088a..4017019 100644 --- a/arch/arm/plat-omap/include/plat/irqs.h +++ b/arch/arm/plat-omap/include/plat/irqs.h @@ -345,8 +345,6 @@ #define INT_34XX_MMC3_IRQ 94 #define INT_34XX_GPT12_IRQ 95 -#defineINT_34XX_BENCH_MPU_EMUL 3 - #define INT_35XX_HECC0_IRQ 24 #define INT_35XX_HECC1_IRQ 28 #define INT_35XX_EMAC_C0_RXTHRESH_IRQ 67 -- To unsubscribe from this list: send the line unsubscribe linux-omap in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH 15/28] AM3517: initialize i2c subsystem after mux subsystem
From: stanley.miao stanley.m...@windriver.com The initialize of i2c subsystem will set pinmux, so it should be done after the initialize of mux subsystem initialization. Signed-off-by: Stanley.Miao stanley.m...@windriver.com Signed-off-by: Tony Lindgren t...@atomide.com --- arch/arm/mach-omap2/board-am3517evm.c |4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/arm/mach-omap2/board-am3517evm.c b/arch/arm/mach-omap2/board-am3517evm.c index 6ae8805..c1c4389 100644 --- a/arch/arm/mach-omap2/board-am3517evm.c +++ b/arch/arm/mach-omap2/board-am3517evm.c @@ -294,9 +294,9 @@ static struct omap_board_mux board_mux[] __initdata = { static void __init am3517_evm_init(void) { - am3517_evm_i2c_init(); - omap3_mux_init(board_mux, OMAP_PACKAGE_CBB); + + am3517_evm_i2c_init(); platform_add_devices(am3517_evm_devices, ARRAY_SIZE(am3517_evm_devices)); -- To unsubscribe from this list: send the line unsubscribe linux-omap in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH 16/28] omap: fix a gpmc nand problem
From: stanley.miao stanley.m...@windriver.com If gpmc_t isn't given, we don't need to set timing for gpmc, or it will cause a Oops. Signed-off-by: Stanley.Miao stanley.m...@windriver.com Signed-off-by: Tony Lindgren t...@atomide.com --- arch/arm/mach-omap2/gpmc-nand.c |3 +++ 1 files changed, 3 insertions(+), 0 deletions(-) diff --git a/arch/arm/mach-omap2/gpmc-nand.c b/arch/arm/mach-omap2/gpmc-nand.c index 64d74f0..e57fb29 100644 --- a/arch/arm/mach-omap2/gpmc-nand.c +++ b/arch/arm/mach-omap2/gpmc-nand.c @@ -39,6 +39,9 @@ static int omap2_nand_gpmc_retime(void) struct gpmc_timings t; int err; + if (!gpmc_nand_data-gpmc_t) + return 0; + memset(t, 0, sizeof(t)); t.sync_clk = gpmc_round_ns_to_ticks(gpmc_nand_data-gpmc_t-sync_clk); t.cs_on = gpmc_round_ns_to_ticks(gpmc_nand_data-gpmc_t-cs_on); -- To unsubscribe from this list: send the line unsubscribe linux-omap in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH 17/28] omap: rx51_defconfig: Remove duplicate phonet
From: Jarkko Nikula jhnik...@gmail.com Phonet is enabled by the commit bce54fed941e03695ab557100a4bd1e457abca42 and this duplicate gives a warning when doing make rx51_defconfig. Signed-off-by: Jarkko Nikula jhnik...@gmail.com Acked-by: Felipe Balbi felipe.ba...@nokia.com Signed-off-by: Tony Lindgren t...@atomide.com --- arch/arm/configs/rx51_defconfig |1 - 1 files changed, 0 insertions(+), 1 deletions(-) diff --git a/arch/arm/configs/rx51_defconfig b/arch/arm/configs/rx51_defconfig index 45135ff..cc6a32a 100644 --- a/arch/arm/configs/rx51_defconfig +++ b/arch/arm/configs/rx51_defconfig @@ -480,7 +480,6 @@ CONFIG_BT_HIDP=m # CONFIG_BT_HCIBFUSB is not set # CONFIG_BT_HCIVHCI is not set # CONFIG_AF_RXRPC is not set -# CONFIG_PHONET is not set CONFIG_WIRELESS=y CONFIG_CFG80211=y # CONFIG_CFG80211_REG_DEBUG is not set -- To unsubscribe from this list: send the line unsubscribe linux-omap in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH 18/28] omap: rx51_defconfig: Remove CONFIG_SYSFS_DEPRECATED*=y options
From: Jarkko Nikula jhnik...@gmail.com Modern udev will not work with the CONFIG_SYSFS_DEPRECATED*=y options and it seems also that the Maemo release works without when testing with the Maemo 2.6.28 kernel. Signed-off-by: Jarkko Nikula jhnik...@gmail.com Signed-off-by: Tony Lindgren t...@atomide.com --- arch/arm/configs/rx51_defconfig |2 -- 1 files changed, 0 insertions(+), 2 deletions(-) diff --git a/arch/arm/configs/rx51_defconfig b/arch/arm/configs/rx51_defconfig index cc6a32a..473f9e1 100644 --- a/arch/arm/configs/rx51_defconfig +++ b/arch/arm/configs/rx51_defconfig @@ -59,8 +59,6 @@ CONFIG_FAIR_GROUP_SCHED=y CONFIG_USER_SCHED=y # CONFIG_CGROUP_SCHED is not set # CONFIG_CGROUPS is not set -CONFIG_SYSFS_DEPRECATED=y -CONFIG_SYSFS_DEPRECATED_V2=y # CONFIG_RELAY is not set # CONFIG_NAMESPACES is not set CONFIG_BLK_DEV_INITRD=y -- To unsubscribe from this list: send the line unsubscribe linux-omap in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH 19/28] omap4: Fix McBSP4 base address
From: Santosh Shilimkar santosh.shilim...@ti.com This patch fixes the McBSP4 base address for OMAP4 Signed-off-by: Balaji T K balaj...@ti.com Signed-off-by: Tony Lindgren t...@atomide.com --- arch/arm/plat-omap/include/plat/mcbsp.h |2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/arch/arm/plat-omap/include/plat/mcbsp.h b/arch/arm/plat-omap/include/plat/mcbsp.h index 3974835..7de903d 100644 --- a/arch/arm/plat-omap/include/plat/mcbsp.h +++ b/arch/arm/plat-omap/include/plat/mcbsp.h @@ -59,7 +59,7 @@ #define OMAP44XX_MCBSP1_BASE 0x49022000 #define OMAP44XX_MCBSP2_BASE 0x49024000 #define OMAP44XX_MCBSP3_BASE 0x49026000 -#define OMAP44XX_MCBSP4_BASE 0x48074000 +#define OMAP44XX_MCBSP4_BASE 0x48096000 #if defined(CONFIG_ARCH_OMAP15XX) || defined(CONFIG_ARCH_OMAP16XX) || defined(CONFIG_ARCH_OMAP730) || defined(CONFIG_ARCH_OMAP850) -- To unsubscribe from this list: send the line unsubscribe linux-omap in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH 20/28] omap: board-sdp-flash.c: Fix typos in debug output
From: Thomas Weber sw...@gmx.li Corrected type of flash in output (OneNAND = NOR). Removed whitespace after newline in output. Removed double whitespace in output. Signed-off-by: Thomas Weber we...@corscience.de Signed-off-by: Tony Lindgren t...@atomide.com --- arch/arm/mach-omap2/board-sdp-flash.c |8 1 files changed, 4 insertions(+), 4 deletions(-) diff --git a/arch/arm/mach-omap2/board-sdp-flash.c b/arch/arm/mach-omap2/board-sdp-flash.c index b1b88de..2d02632 100644 --- a/arch/arm/mach-omap2/board-sdp-flash.c +++ b/arch/arm/mach-omap2/board-sdp-flash.c @@ -253,20 +253,20 @@ void __init sdp_flash_init(struct flash_partitions sdp_partition_info[]) } if (norcs GPMC_CS_NUM) - printk(KERN_INFO OneNAND: Unable to find configuration -in GPMC\n ); + printk(KERN_INFO NOR: Unable to find configuration + in GPMC\n); else board_nor_init(sdp_partition_info[0], norcs); if (onenandcs GPMC_CS_NUM) printk(KERN_INFO OneNAND: Unable to find configuration -in GPMC\n ); + in GPMC\n); else board_onenand_init(sdp_partition_info[1], onenandcs); if (nandcs GPMC_CS_NUM) printk(KERN_INFO NAND: Unable to find configuration -in GPMC\n ); + in GPMC\n); else board_nand_init(sdp_partition_info[2], nandcs); } -- To unsubscribe from this list: send the line unsubscribe linux-omap in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH 21/28] n8x0_defconfig: remove CONFIG_NILFS2_FS override
From: Francisco Alecrim francisco.alec...@openbossa.org arch/arm/configs/n8x0_defconfig:1061:warning: override: reassigning to symbol NILFS2_FS Signed-off-by: Francisco Alecrim francisco.alec...@openbossa.org Signed-off-by: Tony Lindgren t...@atomide.com --- arch/arm/configs/n8x0_defconfig |1 - 1 files changed, 0 insertions(+), 1 deletions(-) diff --git a/arch/arm/configs/n8x0_defconfig b/arch/arm/configs/n8x0_defconfig index 216ad00..9405e32 100644 --- a/arch/arm/configs/n8x0_defconfig +++ b/arch/arm/configs/n8x0_defconfig @@ -1058,7 +1058,6 @@ CONFIG_JFFS2_CMODE_PRIORITY=y # CONFIG_ROMFS_FS is not set # CONFIG_SYSV_FS is not set # CONFIG_UFS_FS is not set -# CONFIG_NILFS2_FS is not set CONFIG_NETWORK_FILESYSTEMS=y # CONFIG_NFS_FS is not set # CONFIG_NFSD is not set -- To unsubscribe from this list: send the line unsubscribe linux-omap in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH 22/28] omap: Devkit8000: Fix typo in supplies
From: Thomas Weber we...@corscience.de Replace wrong vdss_dsi with vdds_dsi. Signed-off-by: Thomas Weber we...@corscience.de Signed-off-by: Tony Lindgren t...@atomide.com --- arch/arm/mach-omap2/board-devkit8000.c |2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/arch/arm/mach-omap2/board-devkit8000.c b/arch/arm/mach-omap2/board-devkit8000.c index db4c093..b82e438 100644 --- a/arch/arm/mach-omap2/board-devkit8000.c +++ b/arch/arm/mach-omap2/board-devkit8000.c @@ -303,7 +303,7 @@ static struct regulator_consumer_supply devkit8000_vpll2_supplies[] = { .dev= devkit8000_lcd_device.dev, }, { - .supply = vdss_dsi, + .supply = vdds_dsi, .dev= devkit8000_dss_device.dev, } }; -- To unsubscribe from this list: send the line unsubscribe linux-omap in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH 23/28] omap: Devkit8000: Add missing package selection
From: Thomas Weber we...@corscience.de Devkit8000 uses the CUS package for OMAP3530. This patch adds missing package selection for CUS and enables CONFIG_MUX. Replace whitespace with tab in Kconfig. Signed-off-by: Thomas Weber we...@corscience.de Signed-off-by: Tony Lindgren t...@atomide.com --- arch/arm/mach-omap2/Kconfig |6 -- 1 files changed, 4 insertions(+), 2 deletions(-) diff --git a/arch/arm/mach-omap2/Kconfig b/arch/arm/mach-omap2/Kconfig index a8a3d1e..2455dcc 100644 --- a/arch/arm/mach-omap2/Kconfig +++ b/arch/arm/mach-omap2/Kconfig @@ -59,8 +59,10 @@ config MACH_OMAP3_BEAGLE select OMAP_PACKAGE_CBB config MACH_DEVKIT8000 -bool DEVKIT8000 board -depends on ARCH_OMAP3 + bool DEVKIT8000 board + depends on ARCH_OMAP3 + select OMAP_PACKAGE_CUS + select OMAP_MUX config MACH_OMAP_LDP bool OMAP3 LDP board -- To unsubscribe from this list: send the line unsubscribe linux-omap in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH 24/28] omap: Devkit8000: Fix typo in pin name
From: Thomas Weber we...@corscience.de Replace wrong sdr_cke[01] with sdrc_cke[01]. Signed-off-by: Thomas Weber we...@corscience.de Signed-off-by: Tony Lindgren t...@atomide.com --- arch/arm/mach-omap2/board-devkit8000.c |4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/arm/mach-omap2/board-devkit8000.c b/arch/arm/mach-omap2/board-devkit8000.c index b82e438..3fafef4 100644 --- a/arch/arm/mach-omap2/board-devkit8000.c +++ b/arch/arm/mach-omap2/board-devkit8000.c @@ -676,8 +676,8 @@ static void __init devkit8000_init(void) devkit8000_flash_init(); /* Ensure SDRC pins are mux'd for self-refresh */ - omap_mux_init_signal(sdr_cke0, OMAP_PIN_OUTPUT); - omap_mux_init_signal(sdr_cke1, OMAP_PIN_OUTPUT); + omap_mux_init_signal(sdrc_cke0, OMAP_PIN_OUTPUT); + omap_mux_init_signal(sdrc_cke1, OMAP_PIN_OUTPUT); } static void __init devkit8000_map_io(void) -- To unsubscribe from this list: send the line unsubscribe linux-omap in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH 25/28] omap: Devkit8000: Remove unnecessary include file
From: Thomas Weber we...@corscience.de Remove include otg.h. Signed-off-by: Thomas Weber we...@corscience.de Signed-off-by: Tony Lindgren t...@atomide.com --- arch/arm/mach-omap2/board-devkit8000.c |1 - 1 files changed, 0 insertions(+), 1 deletions(-) diff --git a/arch/arm/mach-omap2/board-devkit8000.c b/arch/arm/mach-omap2/board-devkit8000.c index 3fafef4..d605e05 100644 --- a/arch/arm/mach-omap2/board-devkit8000.c +++ b/arch/arm/mach-omap2/board-devkit8000.c @@ -50,7 +50,6 @@ #include linux/input/matrix_keypad.h #include linux/spi/spi.h #include linux/spi/ads7846.h -#include linux/usb/otg.h #include linux/dm9000.h #include linux/interrupt.h -- To unsubscribe from this list: send the line unsubscribe linux-omap in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH 26/28] omap: Devkit8000: Change position of init calls
From: Thomas Weber we...@corscience.de Change position of calling serial and ethernet initialization. Signed-off-by: Thomas Weber we...@corscience.de Signed-off-by: Tony Lindgren t...@atomide.com --- arch/arm/mach-omap2/board-devkit8000.c |8 1 files changed, 4 insertions(+), 4 deletions(-) diff --git a/arch/arm/mach-omap2/board-devkit8000.c b/arch/arm/mach-omap2/board-devkit8000.c index d605e05..0b4abd4 100644 --- a/arch/arm/mach-omap2/board-devkit8000.c +++ b/arch/arm/mach-omap2/board-devkit8000.c @@ -649,6 +649,10 @@ static const struct ehci_hcd_omap_platform_data ehci_pdata __initconst = { static void __init devkit8000_init(void) { + omap_serial_init(); + + omap_dm9000_init(); + devkit8000_i2c_init(); platform_add_devices(devkit8000_devices, ARRAY_SIZE(devkit8000_devices)); @@ -658,10 +662,6 @@ static void __init devkit8000_init(void) spi_register_board_info(devkit8000_spi_board_info, ARRAY_SIZE(devkit8000_spi_board_info)); - omap_serial_init(); - - omap_dm9000_init(); - devkit8000_ads7846_init(); omap_mux_init_gpio(170, OMAP_PIN_INPUT); -- To unsubscribe from this list: send the line unsubscribe linux-omap in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH 27/28] omap: Devkit8000: Remove unused pins
From: Thomas Weber we...@corscience.de Old code from original patch contains beagle board pins that are not available on the Devkit8000. Signed-off-by: Thomas Weber we...@corscience.de Signed-off-by: Tony Lindgren t...@atomide.com --- arch/arm/mach-omap2/board-devkit8000.c | 20 1 files changed, 0 insertions(+), 20 deletions(-) diff --git a/arch/arm/mach-omap2/board-devkit8000.c b/arch/arm/mach-omap2/board-devkit8000.c index 0b4abd4..47e3af2 100644 --- a/arch/arm/mach-omap2/board-devkit8000.c +++ b/arch/arm/mach-omap2/board-devkit8000.c @@ -268,20 +268,6 @@ static int devkit8000_twl_gpio_setup(struct device *dev, devkit8000_vmmc1_supply.dev = mmc[0].dev; devkit8000_vsim_supply.dev = mmc[0].dev; - /* REVISIT: need ehci-omap hooks for external VBUS -* power switch and overcurrent detect -*/ - - gpio_request(gpio + 1, EHCI_nOC); - gpio_direction_input(gpio + 1); - - /* TWL4030_GPIO_MAX + 0 == ledA, EHCI nEN_USB_PWR (out, active low) */ - gpio_request(gpio + TWL4030_GPIO_MAX, nEN_USB_PWR); - gpio_direction_output(gpio + TWL4030_GPIO_MAX, 1); - - /* TWL4030_GPIO_MAX + 1 == ledB, PMU_STAT (out, active low LED) */ - gpio_leds[2].gpio = gpio + TWL4030_GPIO_MAX + 1; - return 0; } @@ -664,12 +650,6 @@ static void __init devkit8000_init(void) devkit8000_ads7846_init(); - omap_mux_init_gpio(170, OMAP_PIN_INPUT); - - gpio_request(170, DVI_nPD); - /* REVISIT leave DVI powered down until it's needed ... */ - gpio_direction_output(170, true); - usb_musb_init(musb_board_data); usb_ehci_init(ehci_pdata); devkit8000_flash_init(); -- To unsubscribe from this list: send the line unsubscribe linux-omap in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH 28/28] omap: delete unused bootloader tag variables
From: Aaro Koskinen aaro.koski...@nokia.com They are not needed and add over 512 bytes to kernel data. Signed-off-by: Aaro Koskinen aaro.koski...@nokia.com Signed-off-by: Tony Lindgren t...@atomide.com --- arch/arm/plat-omap/common.c |3 --- 1 files changed, 0 insertions(+), 3 deletions(-) diff --git a/arch/arm/plat-omap/common.c b/arch/arm/plat-omap/common.c index 01cbb48..f12f0e3 100644 --- a/arch/arm/plat-omap/common.c +++ b/arch/arm/plat-omap/common.c @@ -44,9 +44,6 @@ #define NO_LENGTH_CHECK 0x -unsigned char omap_bootloader_tag[512]; -int omap_bootloader_tag_len; - struct omap_board_config_kernel *omap_board_config; int omap_board_config_size; -- To unsubscribe from this list: send the line unsubscribe linux-omap in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
new PM branch: OPP layer included
Hello, I just pushed a new PM branch. I did a bunch of reordering and restructuring of branches to include the OPP layer (more on this below.) OPP layer: pm-wip-opp branch gone, merged into PM branch What was in pm-wip-opp has now been broken up into a set of patches that can be combined and queued for upstream (pm-opp branch) as well as sets of patches for SR and SRF which are now on their respective branches (pm-sr, pm-srf) Next step is to combine the patches in pm-opp branch into a sensible series that can be submitted for the next merge window. Smart Reflex: Thara's v3 series available as pm-wip-sr. This is now based directly on the new PM branch instead of on pm-wip-opp. NOTE: the hwmod patches are now merged into l-o (omap-fixes branch) so they are no longer in pm-wip-sr. I didn't get to reviewing this series yet, but did test it out a bit on top of thenew PM branch. I gave this some basic testing on n900 and Zoom3 (required a u-boot update first) but basic OPP changes from userspace governor worked on both. SRF: This is still included in the PM branch (pm-srf branch), but will be removed from the official PM branch. It will be maintained as a separate branch for a short time (1 month max) and then dropped. Anyone else who wants to continue maintenance of SRF is free to do so. Kevin -- To unsubscribe from this list: send the line unsubscribe linux-omap in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
RE: [PATCH 4/4][v4] OMAP:iommu- add TLB preservation support
Hi Hiroshi, diff --git a/arch/arm/plat-omap/iommu.c b/arch/arm/plat-omap/iommu.c index 1e83fac..d09a0a1 100644 --- a/arch/arm/plat-omap/iommu.c +++ b/arch/arm/plat-omap/iommu.c @@ -25,6 +25,9 @@ #include iopgtable.h +#define for_each_iotlb_cr(obj, n, i, cr) \ + for (i = 0; (i n) (cr = get_iotlb_cr(obj, i)); i++) + -- This code is giving compilation error. Can you please send a new patch after fixing this on top of my patches. Thank you, Best regards, Hari -- To unsubscribe from this list: send the line unsubscribe linux-omap in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [RFC PATCH 00/37] cbus patches
* Tony Lindgren t...@atomide.com [100408 02:19]: * felipe.ba...@nokia.com felipe.ba...@nokia.com [100407 09:05]: From: Felipe Balbi felipe.ba...@nokia.com Hi all, I still have to test these patches, but I fell like it's time to get some comments. There's still a big TODO for the whole cbus drivers: . cleanup all tahvo drivers . instantiate platform_device on board-files . pass platform_data to retu/tahvo and their children from board-files . move retu-headset to jack abstraction layer (??) . move retu-user.c to platform_driver . move tahvo and retu to generic-irq . move tahvo and retu to mfd . move tahvo and retu to threaded irq (??) . move all children drivers to proper locations . move cbus.c to a common location (drivers/misc ??) . allow any arch to use cbus.c by passing correct gpio numbers . get it all into mainline. anyways, these patches were lightly boot tested on n810 and compile tested with n770_defconfig. patches also available on cbus branch of git://gitorious.org/usb/usb.git Great, let's make sure these work for 770 and N8x0 and then merge. One step closer to getting rid of the last remaining legacy branch.. Well 770 does not stay up, but at least boots to root. Meaning the watchdog is not getting kicked. Seems to just hang without these patches. Will try to look further at some point. N800 boots fine and stays up, so the watchdog is getting kicked. So I've pulled this into the cbus branch. Tony -- To unsubscribe from this list: send the line unsubscribe linux-omap in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html