Re: [PATCH v3 3/4] arm/dts: AM33XX: Configure pinmuxs for D_CAN1 on AM335x-EVM

2012-08-28 Thread Vaibhav Hiremath


On 8/25/2012 1:44 AM, Tony Lindgren wrote:
 * AnilKumar Ch anilku...@ti.com [120816 05:20]:
 Add D_CAN1 pinctrl node to am3358_pinmux master node to export
 D_CAN functionality on AM335x EVM according to pinctrl-single
 driver.

 Signed-off-by: AnilKumar Ch anilku...@ti.com
 ---
 Changes from v2:
  - Incorporated Vaibhav H's comments on v2
* Added dcan0 instances to am33xx.dtsi file

 Changes from v1:
  - These two patches separated from c_can DT support
patch series.

  arch/arm/boot/dts/am335x-evm.dts |   12 
  1 file changed, 12 insertions(+)

 diff --git a/arch/arm/boot/dts/am335x-evm.dts 
 b/arch/arm/boot/dts/am335x-evm.dts
 index 5dd8a6b..a64c30a 100644
 --- a/arch/arm/boot/dts/am335x-evm.dts
 +++ b/arch/arm/boot/dts/am335x-evm.dts
 @@ -18,6 +18,18 @@
  reg = 0x8000 0x1000; /* 256 MB */
  };
  
 +am3358_pinmux: pinmux@44E10800 {
 
 This should be just am3358_pinmux as you already include it.
 

I think it won't work this way, it will result into syntax error.
The reason being is, unlike OMAP (and like other platforms, like, imx)
here we are again representing device hierarchy starting from root,

am335x-evm.dts:
/ {

ocp {
...
};

};

Although I am not too familiar with DTS compiler, but below code results
in syntax error:

am335x-evm.dts:
/ {

ocp {
...
am3358_pinmux {
...
};
};

};


Thanks,
Vaibhav

 +pinctrl-names = default;
 +pinctrl-0 = d_can1_pins;
 +
 +d_can1_pins: pinmux_d_can_pins {
 +pinctrl-single,pins = 
 +0x168 0x2   /* uart0_ctsn.d_can1_tx, OUTPUT 
 | MODE2 */
 +0x16C 0x32  /* uart0_rtsn.d_can1_rx, 
 INPUT_PULLUP | MODE2 */
 +;
 +};
 +};
 +
 
 It would better to claim these pins in the dcan driver entry
 rather than set them as pins enabled by the pinctrl driver.
 The reason is that in case you want to enable runtime PM related
 stuff, like some more advanced wake-up features, for the rx pin
 you can do it in the driver.
 
 Then one nit.. Please lowercase all hex number in this series as that's the 
 style
 here.
 
 Regards,
 
 Tony
 ___
 devicetree-discuss mailing list
 devicetree-disc...@lists.ozlabs.org
 https://lists.ozlabs.org/listinfo/devicetree-discuss
 
--
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/2] arm/dts: Cleanup regulator naming and remove @0,1..

2012-08-28 Thread Rajendra Nayak

Hi Tony,


* Rajendra Nayakrna...@ti.com  [120730 06:17]:

regulators do not have a 'reg' property, hence the regulator@0,
regulator@1 do not make sense. get rid of it.


Looks like this needs to be refreshed to apply. Care to
refresh against current devel-dt branch in case other
places need the same change?


Looks like devel-dt is missing the PATCH 1/2 from this series,
which you have already pushed in the -rc for merge.
With that applied, this ones applies cleanly too.

regards,
Rajendra



Regards,

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


[PATCH RESEND v4 2/3] arm/dts: AM33XX: Configure pinmuxs for user leds control on Bone

2012-08-28 Thread AnilKumar Ch
Adds GPIO pinctrl nodes to am3358_pinmux master node to control
user leds (USR0, USR1, USR2 and USR3) present on BeagleBone.

Signed-off-by: AnilKumar Ch anilku...@ti.com
---
 arch/arm/boot/dts/am335x-bone.dts |   14 ++
 1 file changed, 14 insertions(+)

diff --git a/arch/arm/boot/dts/am335x-bone.dts 
b/arch/arm/boot/dts/am335x-bone.dts
index a7906cb..58f5042 100644
--- a/arch/arm/boot/dts/am335x-bone.dts
+++ b/arch/arm/boot/dts/am335x-bone.dts
@@ -18,6 +18,20 @@
reg = 0x8000 0x1000; /* 256 MB */
};
 
+   am3358_pinmux: pinmux@44E10800 {
+   pinctrl-names = default;
+   pinctrl-0 = userled_pins;
+
+   userled_pins: pinmux_userled_pins {
+   pinctrl-single,pins = 
+   0x54 0x7/* gpmc_a5.gpio1_21, OUTPUT | 
MODE7 */
+   0x58 0x17   /* gpmc_a6.gpio1_22, 
OUTPUT_PULLUP | MODE7 */
+   0x5C 0x7/* gpmc_a7.gpio1_23, OUTPUT | 
MODE7 */
+   0x60 0x17   /* gpmc_a8.gpio1_24, 
OUTPUT_PULLUP | MODE7 */
+   ;
+   };
+   };
+
ocp {
uart1: serial@44E09000 {
status = okay;
-- 
1.7.9.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


[PATCH v4 0/3] Add device tree data for AM33XX devices

2012-08-28 Thread AnilKumar Ch
Add pinctrl and d_can device tree data to AM33XX family of devices.
First two patches add support for pinctrl DT data and third one
adds dcan DT data.

Reason behind combining these patches is to apply cleanly on
linux-omap tree, because these are sequential patches.

These patches were tested on AM335x-Bone and AM335x-EVM apply
on linux-omap:master

d_can:
  Changes from v3:
- Removed d_can1 node from am335x-evm.dts file. Instance
  one of CAN (d_can1) is available on AM335x-EVM only under
  a specific CPLD mode selection. am335x-evm.dts does not
  support this mode so remove the d_can1 node.
- Dropped d_can pinmux settings patch, above comment
  applies here as well.

  Changes from v2:
- Incorporated Vaibhav H's comments on v2
  * Added dcan0 instances to am33xx.dtsi file

  Changes from v1:
- These two patches separated from c_can DT support
  patch series.

pinctrl:
  Changes from v3:
- Updated the reg length based on latest AM335x TRM.

  Changes from v2:
- user led pinmux comments updated according to Tony's
  comment.

  Changes from v1:
- Rebased the patches based on latest pinctrl-single driver

AnilKumar Ch (3):
  arm/dts: AM33XX: Add basic pinctrl device tree data
  arm/dts: AM33XX: Configure pinmuxs for user leds control on Bone
  arm/dts: AM33XX: Add D_CAN device tree data

 arch/arm/boot/dts/am335x-bone.dts |   14 ++
 arch/arm/boot/dts/am33xx.dtsi |   27 +++
 2 files changed, 41 insertions(+)

-- 
1.7.9.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


[PATCH v4 3/3] arm/dts: AM33XX: Add D_CAN device tree data

2012-08-28 Thread AnilKumar Ch
Add Bosch D_CAN controller device tree data to AM33XX dtsi
file by adding d_can device nodes with all the necessary
parameters.

Signed-off-by: AnilKumar Ch anilku...@ti.com
---
 arch/arm/boot/dts/am33xx.dtsi |   18 ++
 1 file changed, 18 insertions(+)

diff --git a/arch/arm/boot/dts/am33xx.dtsi b/arch/arm/boot/dts/am33xx.dtsi
index dfe9c559..d965137 100644
--- a/arch/arm/boot/dts/am33xx.dtsi
+++ b/arch/arm/boot/dts/am33xx.dtsi
@@ -177,5 +177,23 @@
compatible = ti,omap3-wdt;
ti,hwmods = wd_timer2;
};
+
+   dcan0: d_can@481CC000 {
+   compatible = bosch,d_can;
+   ti,hwmods = d_can0;
+   reg = 0x481CC000 0x2000;
+   interrupts = 52;
+   interrupt-parent = intc;
+   status = disabled;
+   };
+
+   dcan1: d_can@481D {
+   compatible = bosch,d_can;
+   ti,hwmods = d_can1;
+   reg = 0x481D 0x2000;
+   interrupts = 55;
+   interrupt-parent = intc;
+   status = disabled;
+   };
};
 };
-- 
1.7.9.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


[PATCH RESEND v4 1/3] arm/dts: AM33XX: Add basic pinctrl device tree data

2012-08-28 Thread AnilKumar Ch
Adds basic pinctrl device tree data for AM33XX family of devices.
This patch is based on the pinctrl-single driver.

Signed-off-by: AnilKumar Ch anilku...@ti.com
---
 arch/arm/boot/dts/am33xx.dtsi |9 +
 1 file changed, 9 insertions(+)

diff --git a/arch/arm/boot/dts/am33xx.dtsi b/arch/arm/boot/dts/am33xx.dtsi
index dde76f7..dfe9c559 100644
--- a/arch/arm/boot/dts/am33xx.dtsi
+++ b/arch/arm/boot/dts/am33xx.dtsi
@@ -40,6 +40,15 @@
};
};
 
+   am3358_pinmux: pinmux@44E10800 {
+   compatible = pinctrl-single;
+   reg = 0x44E10800 0x0238;
+   #address-cells = 1;
+   #size-cells = 0;
+   pinctrl-single,register-width = 32;
+   pinctrl-single,function-mask = 0x7F;
+   };
+
/*
 * XXX: Use a flat representation of the AM33XX interconnect.
 * The real AM33XX interconnect network is quite complex.Since
-- 
1.7.9.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


Re: [PATCH v2 02/14] MFD: twl4030-audio: Convert to use devm_kzalloc

2012-08-28 Thread Tero Kristo
On Tue, 2012-08-14 at 17:22 +0300, Peter Ujfalusi wrote:
 Signed-off-by: Peter Ujfalusi peter.ujfal...@ti.com

I think this one could use a short commit message, also about why
kfree():s are dropped (handled internally by devm_* etc.)

-Tero

--
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 00/14] MFD/ASoC/Input: twl4030-audio submodule DT support

2012-08-28 Thread Tero Kristo
Hi Peter,

The MFD patches in this set look good to me except for the minor comment
on patch 2 I just sent. That is with my limited knowledge of DT
though...

-Tero


--
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 RESEND 1/4] ARM: OMAP2+: AM33XX: Add tps65910 device tree data

2012-08-28 Thread Lee Jones
Hi Mark,

  arch/arm/boot/dts/db8500.dtsi
 
 I'm not actually seeing anything terribly problematic here, though the
 regulator-name properties should really be removed as they're fairly
 useless and seem to be missing the point of having the property.

Just looking at this now. 

The regulator-name property is used to populate constrains-name. Are
you sure you still want them all removed?

Kind regards,
Lee

-- 
Lee Jones
Linaro ST-Ericsson Landing Team Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog
--
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 v6 07/10] ARM: OMAP2+: gpmc: generic timing calculation

2012-08-28 Thread Mohammed, Afzal
Hi Jon,

On Tue, Aug 28, 2012 at 02:00:13, Hunter, Jon wrote:
 On 08/27/2012 05:37 AM, Mohammed, Afzal wrote:

  And at least for initial users, they are expected to have
  some grasp on how to calculate timings, such a user will
  not be much worried about your 3 concerns above, anyway as
  of now they need to have a good grasp on it.
 
 I would consider myself to be an initial user and I am concerned,
 doesn't that count?

Yes sir, what I meant was new users who want to have runtime
calculation using the generic timing routine. For the
peripherals already making use of custom timing routine,
I am into that role too, hence the patches 8-10.

And if you have any board that makes use of existing custom
timing calculation routines (OneNAND, tusb6010 or smc91x),
can you please give this series a try.

Regards
Afzal
--
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] arm: omap: ratelimit omap_l3_smx error log spam

2012-08-28 Thread Aaro Koskinen
Hi,

On Mon, Aug 27, 2012 at 05:17:30PM -0700, Shilimkar, Santosh wrote:
 On Mon, Aug 27, 2012 at 4:26 PM, Aaro Koskinen aaro.koski...@iki.fi wrote:
  I tried bypassing the whole SRAM init, but the device does not seem to
  boot up at all.
 
  If I comment out the memset alone, then it boots and the issue is gone:
 
  +#if 0
  memset_io(omap_sram_base + SRAM_BOOTLOADER_SZ, 0,
omap_sram_size - SRAM_BOOTLOADER_SZ);
  +#endif
 
 Good. So the issue is indeed direct or indirect access to the secure SRAM.
 As security can dynamically resize the secure RAM size it is even harder
 to fix this issue properly. One easier way to deal with the issue is map only
 needed SRAM and leave rest for security.
 
 For now, Can you check if reducing the size of the SRAM in init is helping you
 to get way with the issue. Sorry it might need few iterations for you to get
 a working SRAM size.

The problem is triggered by writing to the beginning of the SRAM area,
not to the end. I need to skip the first 16k (0x4000) to get rid of
the errors. Maybe the base address calculation is wrong? This could
also explain why it's still possible to use the device - it seems the
allocator starts from the end, and moves towards the base...

A.
--
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


[PATCHv2 1/2] mmc: omap_hsmmc: convert from IP timer to hrtimer

2012-08-28 Thread Venkatraman S
omap hsmmc controller IP has a built in timer that can be programmed to
guard against unresponsive operations. But its range is very narrow,
and the maximum countable time is a few seconds.

Card maintenance operations like BKOPS and MMC_ERASE and long
stream writes like packed command require timers of order of
several minutes, much beyond the capability of the IP timer.
So get rid of using the IP timer entirely and use kernel's hrtimer
functionality for guarding the device operations.
As part of this change, a workaround that disabled timeouts for
MMC_ERASE command is removed, and the arbitary timing of 100ms
is used only when the timeout is not explicitly specified by core.

A trivial change to get rid of unnecessary dealiasing of host-data
in omap_hsmmc_do_irq is also included.

Signed-off-by: Venkatraman S svenk...@ti.com
---

v1-v2:
   Fix typos in commit message.
   Add checks to handle subtle races between MMC IRQ and HRTIMER IRQ
   Mark set_guard_timer function as static
   (Felipe's comment to use macros for INT_EN_MASK is done as a separate patch )
 drivers/mmc/host/omap_hsmmc.c | 96 ++-
 1 file changed, 50 insertions(+), 46 deletions(-)

diff --git a/drivers/mmc/host/omap_hsmmc.c b/drivers/mmc/host/omap_hsmmc.c
index 9afdd20..57e86a4 100644
--- a/drivers/mmc/host/omap_hsmmc.c
+++ b/drivers/mmc/host/omap_hsmmc.c
@@ -79,7 +79,7 @@
 #define CLKD_SHIFT 6
 #define DTO_MASK   0x000F
 #define DTO_SHIFT  16
-#define INT_EN_MASK0x307F0033
+#define INT_EN_MASK0x306E0033
 #define BWR_ENABLE (1  4)
 #define BRR_ENABLE (1  5)
 #define DTO_ENABLE (1  20)
@@ -160,6 +160,7 @@ struct omap_hsmmc_host {
unsigned intdma_sg_idx;
unsigned char   bus_mode;
unsigned char   power_mode;
+   unsigned intns_per_clk_cycle;
int suspended;
int irq;
int use_dma, dma_ch;
@@ -172,6 +173,7 @@ struct omap_hsmmc_host {
int reqs_blocked;
int use_reg;
int req_in_progress;
+   struct hrtimer  guard_timer;
struct omap_hsmmc_next  next_data;
 
struct  omap_mmc_platform_data  *pdata;
@@ -455,10 +457,6 @@ static void omap_hsmmc_enable_irq(struct omap_hsmmc_host 
*host,
else
irq_mask = INT_EN_MASK;
 
-   /* Disable timeout for erases */
-   if (cmd-opcode == MMC_ERASE)
-   irq_mask = ~DTO_ENABLE;
-
OMAP_HSMMC_WRITE(host-base, STAT, STAT_CLEAR);
OMAP_HSMMC_WRITE(host-base, ISE, irq_mask);
OMAP_HSMMC_WRITE(host-base, IE, irq_mask);
@@ -508,6 +506,9 @@ static void omap_hsmmc_set_clock(struct omap_hsmmc_host 
*host)
 time_before(jiffies, timeout))
cpu_relax();
 
+   if (ios-clock)
+   host-ns_per_clk_cycle = DIV_ROUND_UP(NSEC_PER_SEC, ios-clock);
+
omap_hsmmc_start_clock(host);
 }
 
@@ -824,7 +825,7 @@ omap_hsmmc_xfer_done(struct omap_hsmmc_host *host, struct 
mmc_data *data)
omap_hsmmc_request_done(host, mrq);
return;
}
-
+   hrtimer_cancel(host-guard_timer);
host-data = NULL;
 
if (!data-error)
@@ -859,8 +860,11 @@ omap_hsmmc_cmd_done(struct omap_hsmmc_host *host, struct 
mmc_command *cmd)
cmd-resp[0] = OMAP_HSMMC_READ(host-base, RSP10);
}
}
-   if ((host-data == NULL  !host-response_busy) || cmd-error)
+   if ((host-data == NULL  !host-response_busy) || cmd-error) {
+   if (cmd-error != -ETIMEDOUT)
+   hrtimer_cancel(host-guard_timer);
omap_hsmmc_request_done(host, cmd-mrq);
+   }
 }
 
 /*
@@ -992,7 +996,7 @@ static void omap_hsmmc_do_irq(struct omap_hsmmc_host *host, 
int status)
hsmmc_command_incomplete(host, -EILSEQ);
 
end_cmd = 1;
-   if (host-data || host-response_busy) {
+   if (data || host-response_busy) {
end_trans = 1;
host-response_busy = 0;
}
@@ -1292,41 +1296,35 @@ static int omap_hsmmc_start_dma_transfer(struct 
omap_hsmmc_host *host,
return 0;
 }
 
-static void set_data_timeout(struct omap_hsmmc_host *host,
-unsigned int timeout_ns,
-unsigned int timeout_clks)
+static void set_guard_timer(struct omap_hsmmc_host *host,
+   unsigned long timeout_ms, unsigned long timeout_ns,
+   unsigned int timeout_clks)
 {
-   unsigned int timeout, cycle_ns;
-   uint32_t reg, clkd, dto = 0;
+   ktime_t gtime;
+   unsigned int sec, nsec;
 
-   reg = OMAP_HSMMC_READ(host-base, SYSCTL);
-   clkd = (reg  CLKD_MASK)  CLKD_SHIFT;
- 

[PATCH 2/2] mmc: omap_hsmmc: cleanup the bitmap definitions of Interrupt Register

2012-08-28 Thread Venkatraman S
Define the most frequently used bitmasks of the Interrupt Enable /
Interrupt Status register with consistent naming ( with _EN suffix).

Use meaningful concatenation of bitfields for INT_EN_MASK, which shows
which interrupts are enabled by default.
No functional changes.

Signed-off-by: Venkatraman S svenk...@ti.com
---
 drivers/mmc/host/omap_hsmmc.c | 51 ---
 1 file changed, 29 insertions(+), 22 deletions(-)

diff --git a/drivers/mmc/host/omap_hsmmc.c b/drivers/mmc/host/omap_hsmmc.c
index 57e86a4..03c2362 100644
--- a/drivers/mmc/host/omap_hsmmc.c
+++ b/drivers/mmc/host/omap_hsmmc.c
@@ -79,28 +79,16 @@
 #define CLKD_SHIFT 6
 #define DTO_MASK   0x000F
 #define DTO_SHIFT  16
-#define INT_EN_MASK0x306E0033
-#define BWR_ENABLE (1  4)
-#define BRR_ENABLE (1  5)
-#define DTO_ENABLE (1  20)
 #define INIT_STREAM(1  1)
 #define DP_SELECT  (1  21)
 #define DDIR   (1  4)
-#define DMA_EN 0x1
+#define DMAE   0x1
 #define MSBS   (1  5)
 #define BCE(1  1)
 #define FOUR_BIT   (1  1)
 #define DDR(1  19)
 #define DW8(1  5)
-#define CC 0x1
-#define TC 0x02
 #define OD 0x1
-#define ERR(1  15)
-#define CMD_TIMEOUT(1  16)
-#define DATA_TIMEOUT   (1  20)
-#define CMD_CRC(1  17)
-#define DATA_CRC   (1  21)
-#define CARD_ERR   (1  28)
 #define STAT_CLEAR 0x
 #define INIT_STREAM_CMD0x
 #define DUAL_VOLT_OCR_BIT  7
@@ -109,6 +97,25 @@
 #define SOFTRESET  (1  1)
 #define RESETDONE  (1  0)
 
+/* Interrupt masks for IE and ISE register */
+#define CC_EN  (1  0)
+#define TC_EN  (1  1)
+#define BWR_EN (1  4)
+#define BRR_EN (1  5)
+#define ERR_EN (1  15)
+#define CTO_EN (1  16)
+#define CCRC_EN(1  17)
+#define CEB_EN (1  18)
+#define CIE_EN (1  19)
+#define DTO_EN (1  20)
+#define DCRC_EN(1  21)
+#define DEB_EN (1  22)
+#define CERR_EN(1  28)
+#define BADA_EN(1  29)
+
+#define INT_EN_MASK(BADA_EN | CERR_EN | DEB_EN | DCRC_EN | \
+   CIE_EN | CEB_EN | CCRC_EN | BRR_EN | BWR_EN | TC_EN | CC_EN)
+
 #define MMC_AUTOSUSPEND_DELAY  100
 #define MMC_TIMEOUT_MS 20
 #define OMAP_MMC_MIN_CLOCK 40
@@ -453,7 +460,7 @@ 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);
+   irq_mask = INT_EN_MASK  ~(BRR_EN | BWR_EN);
else
irq_mask = INT_EN_MASK;
 
@@ -673,8 +680,8 @@ static void send_init_stream(struct omap_hsmmc_host *host)
OMAP_HSMMC_WRITE(host-base, CMD, INIT_STREAM_CMD);
 
timeout = jiffies + msecs_to_jiffies(MMC_TIMEOUT_MS);
-   while ((reg != CC)  time_before(jiffies, timeout))
-   reg = OMAP_HSMMC_READ(host-base, STAT)  CC;
+   while ((reg != CC_EN)  time_before(jiffies, timeout))
+   reg = OMAP_HSMMC_READ(host-base, STAT)  CC_EN;
 
OMAP_HSMMC_WRITE(host-base, CON,
OMAP_HSMMC_READ(host-base, CON)  ~INIT_STREAM);
@@ -765,7 +772,7 @@ omap_hsmmc_start_command(struct omap_hsmmc_host *host, 
struct mmc_command *cmd,
}
 
if (host-use_dma)
-   cmdreg |= DMA_EN;
+   cmdreg |= DMAE;
 
host-req_in_progress = 1;
 
@@ -988,11 +995,11 @@ static void omap_hsmmc_do_irq(struct omap_hsmmc_host 
*host, int status)
data = host-data;
dev_vdbg(mmc_dev(host-mmc), IRQ Status is %x\n, status);
 
-   if (status  ERR) {
+   if (status  ERR_EN) {
omap_hsmmc_dbg_report_irq(host, status);
-   if (status  (CMD_TIMEOUT | DATA_TIMEOUT))
+   if (status  (CTO_EN | DTO_EN))
hsmmc_command_incomplete(host, -ETIMEDOUT);
-   else if (status  (CMD_CRC | DATA_CRC))
+   else if (status  (CCRC_EN | DCRC_EN))
hsmmc_command_incomplete(host, -EILSEQ);
 
end_cmd = 1;
@@ -1002,9 +1009,9 @@ static void omap_hsmmc_do_irq(struct omap_hsmmc_host 
*host, int status)
}
}
 
-   if (end_cmd || ((status  CC)  host-cmd))
+   if (end_cmd || ((status  CC_EN)  host-cmd))
omap_hsmmc_cmd_done(host, host-cmd);
-   if ((end_trans || (status  TC))  host-mrq)
+   if ((end_trans || (status  TC_EN))  host-mrq)
omap_hsmmc_xfer_done(host, 

Re: [PATCHv2 1/2] mmc: omap_hsmmc: convert from IP timer to hrtimer

2012-08-28 Thread Felipe Balbi
On Tue, Aug 28, 2012 at 06:49:06PM +0530, Venkatraman S wrote:
 omap hsmmc controller IP has a built in timer that can be programmed to
 guard against unresponsive operations. But its range is very narrow,
 and the maximum countable time is a few seconds.
 
 Card maintenance operations like BKOPS and MMC_ERASE and long
 stream writes like packed command require timers of order of
 several minutes, much beyond the capability of the IP timer.
 So get rid of using the IP timer entirely and use kernel's hrtimer
 functionality for guarding the device operations.
 As part of this change, a workaround that disabled timeouts for
 MMC_ERASE command is removed, and the arbitary timing of 100ms
 is used only when the timeout is not explicitly specified by core.
 
 A trivial change to get rid of unnecessary dealiasing of host-data
 in omap_hsmmc_do_irq is also included.
 
 Signed-off-by: Venkatraman S svenk...@ti.com

Now it looks good:

Reviewed-by: Felipe Balbi ba...@ti.com

 ---
 
 v1-v2:
Fix typos in commit message.
Add checks to handle subtle races between MMC IRQ and HRTIMER IRQ
Mark set_guard_timer function as static
(Felipe's comment to use macros for INT_EN_MASK is done as a separate 
 patch )
  drivers/mmc/host/omap_hsmmc.c | 96 
 ++-
  1 file changed, 50 insertions(+), 46 deletions(-)
 
 diff --git a/drivers/mmc/host/omap_hsmmc.c b/drivers/mmc/host/omap_hsmmc.c
 index 9afdd20..57e86a4 100644
 --- a/drivers/mmc/host/omap_hsmmc.c
 +++ b/drivers/mmc/host/omap_hsmmc.c
 @@ -79,7 +79,7 @@
  #define CLKD_SHIFT   6
  #define DTO_MASK 0x000F
  #define DTO_SHIFT16
 -#define INT_EN_MASK  0x307F0033
 +#define INT_EN_MASK  0x306E0033
  #define BWR_ENABLE   (1  4)
  #define BRR_ENABLE   (1  5)
  #define DTO_ENABLE   (1  20)
 @@ -160,6 +160,7 @@ struct omap_hsmmc_host {
   unsigned intdma_sg_idx;
   unsigned char   bus_mode;
   unsigned char   power_mode;
 + unsigned intns_per_clk_cycle;
   int suspended;
   int irq;
   int use_dma, dma_ch;
 @@ -172,6 +173,7 @@ struct omap_hsmmc_host {
   int reqs_blocked;
   int use_reg;
   int req_in_progress;
 + struct hrtimer  guard_timer;
   struct omap_hsmmc_next  next_data;
  
   struct  omap_mmc_platform_data  *pdata;
 @@ -455,10 +457,6 @@ static void omap_hsmmc_enable_irq(struct omap_hsmmc_host 
 *host,
   else
   irq_mask = INT_EN_MASK;
  
 - /* Disable timeout for erases */
 - if (cmd-opcode == MMC_ERASE)
 - irq_mask = ~DTO_ENABLE;
 -
   OMAP_HSMMC_WRITE(host-base, STAT, STAT_CLEAR);
   OMAP_HSMMC_WRITE(host-base, ISE, irq_mask);
   OMAP_HSMMC_WRITE(host-base, IE, irq_mask);
 @@ -508,6 +506,9 @@ static void omap_hsmmc_set_clock(struct omap_hsmmc_host 
 *host)
time_before(jiffies, timeout))
   cpu_relax();
  
 + if (ios-clock)
 + host-ns_per_clk_cycle = DIV_ROUND_UP(NSEC_PER_SEC, ios-clock);
 +
   omap_hsmmc_start_clock(host);
  }
  
 @@ -824,7 +825,7 @@ omap_hsmmc_xfer_done(struct omap_hsmmc_host *host, struct 
 mmc_data *data)
   omap_hsmmc_request_done(host, mrq);
   return;
   }
 -
 + hrtimer_cancel(host-guard_timer);
   host-data = NULL;
  
   if (!data-error)
 @@ -859,8 +860,11 @@ omap_hsmmc_cmd_done(struct omap_hsmmc_host *host, struct 
 mmc_command *cmd)
   cmd-resp[0] = OMAP_HSMMC_READ(host-base, RSP10);
   }
   }
 - if ((host-data == NULL  !host-response_busy) || cmd-error)
 + if ((host-data == NULL  !host-response_busy) || cmd-error) {
 + if (cmd-error != -ETIMEDOUT)
 + hrtimer_cancel(host-guard_timer);
   omap_hsmmc_request_done(host, cmd-mrq);
 + }
  }
  
  /*
 @@ -992,7 +996,7 @@ static void omap_hsmmc_do_irq(struct omap_hsmmc_host 
 *host, int status)
   hsmmc_command_incomplete(host, -EILSEQ);
  
   end_cmd = 1;
 - if (host-data || host-response_busy) {
 + if (data || host-response_busy) {
   end_trans = 1;
   host-response_busy = 0;
   }
 @@ -1292,41 +1296,35 @@ static int omap_hsmmc_start_dma_transfer(struct 
 omap_hsmmc_host *host,
   return 0;
  }
  
 -static void set_data_timeout(struct omap_hsmmc_host *host,
 -  unsigned int timeout_ns,
 -  unsigned int timeout_clks)
 +static void set_guard_timer(struct omap_hsmmc_host *host,
 + unsigned long timeout_ms, unsigned long timeout_ns,
 + unsigned int timeout_clks)
  {
 - unsigned int timeout, cycle_ns;
 - uint32_t reg, clkd, dto = 0;
 + ktime_t gtime;
 + 

Re: [PATCH 2/2] mmc: omap_hsmmc: cleanup the bitmap definitions of Interrupt Register

2012-08-28 Thread Felipe Balbi
Hi,

On Tue, Aug 28, 2012 at 06:49:07PM +0530, Venkatraman S wrote:
 Define the most frequently used bitmasks of the Interrupt Enable /
 Interrupt Status register with consistent naming ( with _EN suffix).
 
 Use meaningful concatenation of bitfields for INT_EN_MASK, which shows
 which interrupts are enabled by default.
 No functional changes.
 
 Signed-off-by: Venkatraman S svenk...@ti.com

Acked-by: Felipe Balbi ba...@ti.com

 ---
  drivers/mmc/host/omap_hsmmc.c | 51 
 ---
  1 file changed, 29 insertions(+), 22 deletions(-)
 
 diff --git a/drivers/mmc/host/omap_hsmmc.c b/drivers/mmc/host/omap_hsmmc.c
 index 57e86a4..03c2362 100644
 --- a/drivers/mmc/host/omap_hsmmc.c
 +++ b/drivers/mmc/host/omap_hsmmc.c
 @@ -79,28 +79,16 @@
  #define CLKD_SHIFT   6
  #define DTO_MASK 0x000F
  #define DTO_SHIFT16
 -#define INT_EN_MASK  0x306E0033
 -#define BWR_ENABLE   (1  4)
 -#define BRR_ENABLE   (1  5)
 -#define DTO_ENABLE   (1  20)
  #define INIT_STREAM  (1  1)
  #define DP_SELECT(1  21)
  #define DDIR (1  4)
 -#define DMA_EN   0x1
 +#define DMAE 0x1
  #define MSBS (1  5)
  #define BCE  (1  1)
  #define FOUR_BIT (1  1)
  #define DDR  (1  19)
  #define DW8  (1  5)
 -#define CC   0x1
 -#define TC   0x02
  #define OD   0x1
 -#define ERR  (1  15)
 -#define CMD_TIMEOUT  (1  16)
 -#define DATA_TIMEOUT (1  20)
 -#define CMD_CRC  (1  17)
 -#define DATA_CRC (1  21)
 -#define CARD_ERR (1  28)
  #define STAT_CLEAR   0x
  #define INIT_STREAM_CMD  0x
  #define DUAL_VOLT_OCR_BIT7
 @@ -109,6 +97,25 @@
  #define SOFTRESET(1  1)
  #define RESETDONE(1  0)
  
 +/* Interrupt masks for IE and ISE register */
 +#define CC_EN(1  0)
 +#define TC_EN(1  1)
 +#define BWR_EN   (1  4)
 +#define BRR_EN   (1  5)
 +#define ERR_EN   (1  15)
 +#define CTO_EN   (1  16)
 +#define CCRC_EN  (1  17)
 +#define CEB_EN   (1  18)
 +#define CIE_EN   (1  19)
 +#define DTO_EN   (1  20)
 +#define DCRC_EN  (1  21)
 +#define DEB_EN   (1  22)
 +#define CERR_EN  (1  28)
 +#define BADA_EN  (1  29)
 +
 +#define INT_EN_MASK  (BADA_EN | CERR_EN | DEB_EN | DCRC_EN | \
 + CIE_EN | CEB_EN | CCRC_EN | BRR_EN | BWR_EN | TC_EN | CC_EN)
 +
  #define MMC_AUTOSUSPEND_DELAY100
  #define MMC_TIMEOUT_MS   20
  #define OMAP_MMC_MIN_CLOCK   40
 @@ -453,7 +460,7 @@ 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);
 + irq_mask = INT_EN_MASK  ~(BRR_EN | BWR_EN);
   else
   irq_mask = INT_EN_MASK;
  
 @@ -673,8 +680,8 @@ static void send_init_stream(struct omap_hsmmc_host *host)
   OMAP_HSMMC_WRITE(host-base, CMD, INIT_STREAM_CMD);
  
   timeout = jiffies + msecs_to_jiffies(MMC_TIMEOUT_MS);
 - while ((reg != CC)  time_before(jiffies, timeout))
 - reg = OMAP_HSMMC_READ(host-base, STAT)  CC;
 + while ((reg != CC_EN)  time_before(jiffies, timeout))
 + reg = OMAP_HSMMC_READ(host-base, STAT)  CC_EN;
  
   OMAP_HSMMC_WRITE(host-base, CON,
   OMAP_HSMMC_READ(host-base, CON)  ~INIT_STREAM);
 @@ -765,7 +772,7 @@ omap_hsmmc_start_command(struct omap_hsmmc_host *host, 
 struct mmc_command *cmd,
   }
  
   if (host-use_dma)
 - cmdreg |= DMA_EN;
 + cmdreg |= DMAE;
  
   host-req_in_progress = 1;
  
 @@ -988,11 +995,11 @@ static void omap_hsmmc_do_irq(struct omap_hsmmc_host 
 *host, int status)
   data = host-data;
   dev_vdbg(mmc_dev(host-mmc), IRQ Status is %x\n, status);
  
 - if (status  ERR) {
 + if (status  ERR_EN) {
   omap_hsmmc_dbg_report_irq(host, status);
 - if (status  (CMD_TIMEOUT | DATA_TIMEOUT))
 + if (status  (CTO_EN | DTO_EN))
   hsmmc_command_incomplete(host, -ETIMEDOUT);
 - else if (status  (CMD_CRC | DATA_CRC))
 + else if (status  (CCRC_EN | DCRC_EN))
   hsmmc_command_incomplete(host, -EILSEQ);
  
   end_cmd = 1;
 @@ -1002,9 +1009,9 @@ static void omap_hsmmc_do_irq(struct omap_hsmmc_host 
 *host, int status)
   }
   }
  
 - if (end_cmd || ((status  CC)  host-cmd))
 + if (end_cmd || ((status  CC_EN)  host-cmd))
   

Re: [PATCH] arm: omap: ratelimit omap_l3_smx error log spam

2012-08-28 Thread Shilimkar, Santosh
On Tue, Aug 28, 2012 at 5:20 AM, Aaro Koskinen aaro.koski...@iki.fi wrote:
 Hi,

 On Mon, Aug 27, 2012 at 05:17:30PM -0700, Shilimkar, Santosh wrote:
 On Mon, Aug 27, 2012 at 4:26 PM, Aaro Koskinen aaro.koski...@iki.fi wrote:
  I tried bypassing the whole SRAM init, but the device does not seem to
  boot up at all.
 
  If I comment out the memset alone, then it boots and the issue is gone:
 
  +#if 0
  memset_io(omap_sram_base + SRAM_BOOTLOADER_SZ, 0,
omap_sram_size - SRAM_BOOTLOADER_SZ);
  +#endif
 
 Good. So the issue is indeed direct or indirect access to the secure SRAM.
 As security can dynamically resize the secure RAM size it is even harder
 to fix this issue properly. One easier way to deal with the issue is map only
 needed SRAM and leave rest for security.

 For now, Can you check if reducing the size of the SRAM in init is helping 
 you
 to get way with the issue. Sorry it might need few iterations for you to get
 a working SRAM size.

 The problem is triggered by writing to the beginning of the SRAM area,
 not to the end. I need to skip the first 16k (0x4000) to get rid of
 the errors. Maybe the base address calculation is wrong? This could
 also explain why it's still possible to use the device - it seems the
 allocator starts from the end, and moves towards the base...

Or the PPA has resized the secure area of 16K. As you have seen the issue
on one OMAP3 device, it makes sense to takeout that 16K from the public
SRAM map.

Can you send the patch with fixed base address fir PUB SRAM ?

Regards
Santosh
--
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: [alsa-devel] [PATCH] ASoC: ams-delta: fix card initalization failure

2012-08-28 Thread Janusz Krzysztofik
On Mon, 27 Aug 2012 14:38:35 Mark Brown wrote:
 On Mon, Aug 27, 2012 at 11:28:30PM +0200, Janusz Krzysztofik wrote:
 
  -   platform_set_drvdata(ams_delta_audio_platform_device,
  -   ams_delta_audio_card);
  -
  -   ret = platform_device_add(ams_delta_audio_platform_device);
  -   if (ret)
  -   goto err;
 
 The real fix here is that you should be using platform data here, not
 driver data.  Is there some reason not to do that?

Mark,

Do you think the change you propose is suitable for the rc cycle? I'm 
trying to fix a regression in the first place. Converting the ams-delta 
asoc to a platform driver is on my todo list and I'm going to take care 
of this as soon as I have enough spare time.

Thanks,
Janusz

--
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 02/14] MFD: twl4030-audio: Convert to use devm_kzalloc

2012-08-28 Thread Mark Brown
On Tue, Aug 28, 2012 at 12:50:10PM +0300, Tero Kristo wrote:
 On Tue, 2012-08-14 at 17:22 +0300, Peter Ujfalusi wrote:
  Signed-off-by: Peter Ujfalusi peter.ujfal...@ti.com

 I think this one could use a short commit message, also about why
 kfree():s are dropped (handled internally by devm_* etc.)

Honestly I think people should be able to figure this out, it's not like
it's an obscure API nobody ever used before.
--
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 RESEND 1/4] ARM: OMAP2+: AM33XX: Add tps65910 device tree data

2012-08-28 Thread Mark Brown
On Tue, Aug 28, 2012 at 12:26:07PM +0100, Lee Jones wrote:

   arch/arm/boot/dts/db8500.dtsi

  I'm not actually seeing anything terribly problematic here, though the
  regulator-name properties should really be removed as they're fairly
  useless and seem to be missing the point of having the property.

 Just looking at this now. 

 The regulator-name property is used to populate constrains-name. Are
 you sure you still want them all removed?

Yes, of course.  There's no way that a generic .dtsi used for any
possible board could come up with a sensible value.
--
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: [alsa-devel] [PATCH] ASoC: ams-delta: fix card initalization failure

2012-08-28 Thread Mark Brown
On Tue, Aug 28, 2012 at 05:13:05PM +0200, Janusz Krzysztofik wrote:
 On Mon, 27 Aug 2012 14:38:35 Mark Brown wrote:
  On Mon, Aug 27, 2012 at 11:28:30PM +0200, Janusz Krzysztofik wrote:

   - platform_set_drvdata(ams_delta_audio_platform_device,
   - ams_delta_audio_card);

  The real fix here is that you should be using platform data here, not
  driver data.  Is there some reason not to do that?

 Do you think the change you propose is suitable for the rc cycle? I'm 
 trying to fix a regression in the first place. Converting the ams-delta 
 asoc to a platform driver is on my todo list and I'm going to take care 
 of this as soon as I have enough spare time.

The above looks like you already have a platform driver?  All I'm
suggesting is changing the above to use platform rather than driver
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


[RFC PATCH 5/5] arm: omap: n8x0: enable retu

2012-08-28 Thread Aaro Koskinen
Add Retu configuration.

Signed-off-by: Aaro Koskinen aaro.koski...@iki.fi
---
 arch/arm/mach-omap2/board-n8x0.c |8 
 1 files changed, 8 insertions(+), 0 deletions(-)

diff --git a/arch/arm/mach-omap2/board-n8x0.c b/arch/arm/mach-omap2/board-n8x0.c
index 8ea0dea..6ac8cd9 100644
--- a/arch/arm/mach-omap2/board-n8x0.c
+++ b/arch/arm/mach-omap2/board-n8x0.c
@@ -58,8 +58,16 @@ static struct platform_device n8x0_cbus_device = {
},
 };
 
+static struct i2c_board_info n8x0_i2c_board_info_3[] __initdata = {
+   {
+   I2C_BOARD_INFO(retu-mfd, 0x01),
+   },
+};
+
 static void __init n8x0_cbus_init(void)
 {
+   i2c_register_board_info(3, n8x0_i2c_board_info_3,
+   ARRAY_SIZE(n8x0_i2c_board_info_3));
platform_device_register(n8x0_cbus_device);
 }
 #else /* CONFIG_I2C_CBUS */
-- 
1.7.2.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 3/5] watchdog: introduce retu_wdt driver

2012-08-28 Thread Aaro Koskinen
Introduce Retu watchdog driver.

Signed-off-by: Aaro Koskinen aaro.koski...@iki.fi
Cc: linux-watch...@vger.kernel.org
---
 drivers/watchdog/Kconfig|   12 +++
 drivers/watchdog/Makefile   |1 +
 drivers/watchdog/retu_wdt.c |  191 +++
 3 files changed, 204 insertions(+), 0 deletions(-)
 create mode 100644 drivers/watchdog/retu_wdt.c

diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig
index 53d7571..0526c7a 100644
--- a/drivers/watchdog/Kconfig
+++ b/drivers/watchdog/Kconfig
@@ -352,6 +352,18 @@ config IMX2_WDT
  To compile this driver as a module, choose M here: the
  module will be called imx2_wdt.
 
+config RETU_WATCHDOG
+   tristate Retu watchdog
+   depends on MFD_RETU
+   select WATCHDOG_CORE
+   help
+ Retu watchdog driver for Nokia Internet Tablets (700, N800,
+ N810). At least on N800 the watchdog cannot be disabled, so
+ this driver is essential and you should enable it.
+
+ To compile this driver as a module, choose M here: the
+ module will be called retu_wdt.
+
 # AVR32 Architecture
 
 config AT32AP700X_WDT
diff --git a/drivers/watchdog/Makefile b/drivers/watchdog/Makefile
index 572b39b..d2f1c0c 100644
--- a/drivers/watchdog/Makefile
+++ b/drivers/watchdog/Makefile
@@ -52,6 +52,7 @@ obj-$(CONFIG_STMP3XXX_WATCHDOG) += stmp3xxx_wdt.o
 obj-$(CONFIG_NUC900_WATCHDOG) += nuc900_wdt.o
 obj-$(CONFIG_TS72XX_WATCHDOG) += ts72xx_wdt.o
 obj-$(CONFIG_IMX2_WDT) += imx2_wdt.o
+obj-$(CONFIG_RETU_WATCHDOG) += retu_wdt.o
 
 # AVR32 Architecture
 obj-$(CONFIG_AT32AP700X_WDT) += at32ap700x_wdt.o
diff --git a/drivers/watchdog/retu_wdt.c b/drivers/watchdog/retu_wdt.c
new file mode 100644
index 000..4a3ae00
--- /dev/null
+++ b/drivers/watchdog/retu_wdt.c
@@ -0,0 +1,191 @@
+/*
+ * Retu watchdog driver
+ *
+ * Copyright (C) 2004, 2005 Nokia Corporation
+ *
+ * Based on code written by Amit Kucheria and Michael Buesch. Rewritten
+ * to use Retu MFD driver and new watchdog core by Aaro Koskinen.
+ *
+ * This file is subject to the terms and conditions of the GNU General
+ * Public License. See the file COPYING in the main directory of this
+ * archive for more details.
+ *
+ * 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.
+ */
+
+#include linux/init.h
+#include linux/slab.h
+#include linux/errno.h
+#include linux/device.h
+#include linux/kernel.h
+#include linux/module.h
+#include linux/mfd/retu.h
+#include linux/watchdog.h
+#include linux/platform_device.h
+
+/* Watchdog timer values in seconds */
+#define RETU_WDT_MAX_TIMER 63
+
+/* Registers */
+#define RETU_REG_WATCHDOG  0x17
+
+struct retu_wdt_dev {
+   struct retu_dev *rdev;
+   struct device   *dev;
+   struct delayed_work ping_work;
+};
+
+/*
+ * Since Retu watchdog cannot be disabled in hardware, we must kick it
+ * with a timer until userspace watchdog software takes over. If
+ * CONFIG_WATCHDOG_NOWAYOUT is set, we never start the feeding.
+ */
+static void retu_wdt_ping_enable(struct retu_wdt_dev *wdev)
+{
+   retu_write(wdev-rdev, RETU_REG_WATCHDOG, RETU_WDT_MAX_TIMER);
+   schedule_delayed_work(wdev-ping_work,
+   round_jiffies_relative(RETU_WDT_MAX_TIMER * HZ / 2));
+}
+
+static void retu_wdt_ping_disable(struct retu_wdt_dev *wdev)
+{
+   retu_write(wdev-rdev, RETU_REG_WATCHDOG, RETU_WDT_MAX_TIMER);
+   cancel_delayed_work_sync(wdev-ping_work);
+}
+
+static void retu_wdt_ping_work(struct work_struct *work)
+{
+   struct retu_wdt_dev *wdev = container_of(to_delayed_work(work),
+   struct retu_wdt_dev, ping_work);
+   retu_wdt_ping_enable(wdev);
+}
+
+static int retu_wdt_start(struct watchdog_device *wdog)
+{
+   struct retu_wdt_dev *wdev = watchdog_get_drvdata(wdog);
+
+   retu_wdt_ping_disable(wdev);
+
+   return retu_write(wdev-rdev, RETU_REG_WATCHDOG, wdog-timeout);
+}
+
+static int retu_wdt_stop(struct watchdog_device *wdog)
+{
+   struct retu_wdt_dev *wdev = watchdog_get_drvdata(wdog);
+
+   retu_wdt_ping_enable(wdev);
+
+   return 0;
+}
+
+static int retu_wdt_ping(struct watchdog_device *wdog)
+{
+   struct retu_wdt_dev *wdev = watchdog_get_drvdata(wdog);
+
+   return retu_write(wdev-rdev, RETU_REG_WATCHDOG, wdog-timeout);
+}
+
+static int retu_wdt_set_timeout(struct watchdog_device *wdog,
+   unsigned int timeout)
+{
+   struct retu_wdt_dev *wdev = watchdog_get_drvdata(wdog);
+
+   wdog-timeout = timeout;
+   return retu_write(wdev-rdev, RETU_REG_WATCHDOG, wdog-timeout);
+}
+
+static const struct watchdog_info retu_wdt_info = {
+   .options = WDIOF_SETTIMEOUT | WDIOF_KEEPALIVEPING,
+   .identity = Retu watchdog,
+};
+

[RFC PATCH 2/5] mfd: introduce retu-mfd driver

2012-08-28 Thread Aaro Koskinen
Retu is a multi-function device found on Nokia Internet Tablets
implementing at least watchdog, RTC, headset detection and power button
functionality.

This patch implements a minimum functionality providing only register
access functions.

Signed-off-by: Aaro Koskinen aaro.koski...@iki.fi
Cc: sa...@linux.intel.com
---
 drivers/mfd/Kconfig  |8 +++
 drivers/mfd/Makefile |1 +
 drivers/mfd/retu-mfd.c   |  114 ++
 include/linux/mfd/retu.h |   20 
 4 files changed, 143 insertions(+), 0 deletions(-)
 create mode 100644 drivers/mfd/retu-mfd.c
 create mode 100644 include/linux/mfd/retu.h

diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig
index b1a1462..8ca1270 100644
--- a/drivers/mfd/Kconfig
+++ b/drivers/mfd/Kconfig
@@ -1003,6 +1003,14 @@ config MFD_PALMAS
  If you say yes here you get support for the Palmas
  series of PMIC chips from Texas Instruments.
 
+config MFD_RETU
+   tristate Support for Retu multi-function device
+   select MFD_CORE
+   depends on I2C
+   help
+ Retu is a multi-function device found on Nokia Internet Tables
+ (770, N800 and N810).
+
 endmenu
 endif
 
diff --git a/drivers/mfd/Makefile b/drivers/mfd/Makefile
index 79dd22d..962ec9d 100644
--- a/drivers/mfd/Makefile
+++ b/drivers/mfd/Makefile
@@ -132,3 +132,4 @@ obj-$(CONFIG_MFD_RC5T583)   += rc5t583.o rc5t583-irq.o
 obj-$(CONFIG_MFD_SEC_CORE) += sec-core.o sec-irq.o
 obj-$(CONFIG_MFD_ANATOP)   += anatop-mfd.o
 obj-$(CONFIG_MFD_LM3533)   += lm3533-core.o lm3533-ctrlbank.o
+obj-$(CONFIG_MFD_RETU) += retu-mfd.o
diff --git a/drivers/mfd/retu-mfd.c b/drivers/mfd/retu-mfd.c
new file mode 100644
index 000..f0097d7
--- /dev/null
+++ b/drivers/mfd/retu-mfd.c
@@ -0,0 +1,114 @@
+/*
+ * Retu MFD driver
+ *
+ * Copyright (C) 2004, 2005 Nokia Corporation
+ *
+ * Based on code written by Juha Yrjölä, David Weinehall and Mikko Ylinen.
+ * Rewritten to MFD/I2C driver by Aaro Koskinen.
+ *
+ * This file is subject to the terms and conditions of the GNU General
+ * Public License. See the file COPYING in the main directory of this
+ * archive for more details.
+ *
+ * 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.
+ */
+
+#include linux/err.h
+#include linux/i2c.h
+#include linux/init.h
+#include linux/slab.h
+#include linux/mutex.h
+#include linux/module.h
+#include linux/mfd/core.h
+#include linux/mfd/retu.h
+#include linux/moduleparam.h
+
+/* Registers */
+#define RETU_REG_ASICR 0x00/* ASIC ID and revision */
+#define RETU_REG_ASICR_VILMA   (1  7)/* Bit indicating Vilma */
+
+static struct mfd_cell retu_devs[] = {
+   { .name = retu-wdt },
+};
+
+int retu_read(struct retu_dev *rdev, u8 reg)
+{
+   return i2c_smbus_read_word_data(rdev-i2c, reg);
+}
+EXPORT_SYMBOL_GPL(retu_read);
+
+int retu_write(struct retu_dev *rdev, u8 reg, u16 data)
+{
+   return i2c_smbus_write_word_data(rdev-i2c, reg, data);
+}
+EXPORT_SYMBOL_GPL(retu_write);
+
+static int __devinit retu_probe(struct i2c_client *i2c,
+   const struct i2c_device_id *id)
+{
+   struct retu_dev *rdev;
+   int ret;
+
+   rdev = kzalloc(sizeof(*rdev), GFP_KERNEL);
+   if (rdev == NULL)
+   return -ENOMEM;
+
+   i2c_set_clientdata(i2c, rdev);
+   rdev-dev = i2c-dev;
+   rdev-i2c = i2c;
+
+   ret = retu_read(rdev, RETU_REG_ASICR);
+   if (ret  0) {
+   dev_err(rdev-dev, could not read Retu revision: %d\n, ret);
+   return -EIO;
+   }
+
+   dev_info(rdev-dev, Retu%s v%d.%d found\n,
+(ret  RETU_REG_ASICR_VILMA) ?   Vilma : ,
+(ret  4)  0x7, ret  0xf);
+
+   ret = mfd_add_devices(rdev-dev, -1, retu_devs, ARRAY_SIZE(retu_devs),
+ NULL, 0);
+   if (ret  0)
+   goto error;
+
+   return ret;
+
+error:
+   kfree(rdev);
+   return ret;
+}
+
+static int __devexit retu_remove(struct i2c_client *i2c)
+{
+   struct retu_dev *rdev = i2c_get_clientdata(i2c);
+
+   mfd_remove_devices(rdev-dev);
+   kfree(rdev);
+
+   return 0;
+}
+
+static const struct i2c_device_id retu_id[] = {
+   { retu-mfd, 0 },
+   { }
+};
+MODULE_DEVICE_TABLE(i2c, retu_id);
+
+static struct i2c_driver retu_driver = {
+   .driver = {
+   .name = retu-mfd,
+   .owner = THIS_MODULE,
+   },
+   .probe  = retu_probe,
+   .remove = retu_remove,
+   .id_table   = retu_id,
+};
+module_i2c_driver(retu_driver);
+
+MODULE_DESCRIPTION(Retu MFD driver);
+MODULE_AUTHOR(Aaro Koskinen aaro.koski...@iki.fi);
+MODULE_LICENSE(GPL);
diff --git a/include/linux/mfd/retu.h b/include/linux/mfd/retu.h
new 

[RFC PATCH 1/5] i2c: introduce i2c-cbus driver

2012-08-28 Thread Aaro Koskinen
Add i2c driver to enable access to devices behind CBUS on Nokia Internet
Tablets.

Signed-off-by: Aaro Koskinen aaro.koski...@iki.fi
Cc: linux-...@vger.kernel.org
---
 drivers/i2c/busses/Kconfig|   10 ++
 drivers/i2c/busses/Makefile   |1 +
 drivers/i2c/busses/i2c-cbus.c |  342 +
 include/linux/i2c-cbus.h  |   27 
 4 files changed, 380 insertions(+), 0 deletions(-)
 create mode 100644 drivers/i2c/busses/i2c-cbus.c
 create mode 100644 include/linux/i2c-cbus.h

diff --git a/drivers/i2c/busses/Kconfig b/drivers/i2c/busses/Kconfig
index b4aaa1b..184ef43 100644
--- a/drivers/i2c/busses/Kconfig
+++ b/drivers/i2c/busses/Kconfig
@@ -331,6 +331,16 @@ config I2C_BLACKFIN_TWI_CLK_KHZ
help
  The unit of the TWI clock is kHz.
 
+config I2C_CBUS
+   tristate CBUS I2C driver
+   depends on GENERIC_GPIO
+   help
+ Support for CBUS access using I2C API. Mostly relevant for Nokia
+ Internet Tablets (770, N800 and N810).
+
+ This driver can also be built as a module.  If so, the module
+ will be called i2c-cbus.
+
 config I2C_CPM
tristate Freescale CPM1 or CPM2 (MPC8xx/826x)
depends on (CPM1 || CPM2)  OF_I2C
diff --git a/drivers/i2c/busses/Makefile b/drivers/i2c/busses/Makefile
index ce3c2be..44dbfd1 100644
--- a/drivers/i2c/busses/Makefile
+++ b/drivers/i2c/busses/Makefile
@@ -31,6 +31,7 @@ obj-$(CONFIG_I2C_POWERMAC)+= i2c-powermac.o
 obj-$(CONFIG_I2C_AT91) += i2c-at91.o
 obj-$(CONFIG_I2C_AU1550)   += i2c-au1550.o
 obj-$(CONFIG_I2C_BLACKFIN_TWI) += i2c-bfin-twi.o
+obj-$(CONFIG_I2C_CBUS) += i2c-cbus.o
 obj-$(CONFIG_I2C_CPM)  += i2c-cpm.o
 obj-$(CONFIG_I2C_DAVINCI)  += i2c-davinci.o
 obj-$(CONFIG_I2C_DESIGNWARE_PLATFORM)  += i2c-designware-platform.o
diff --git a/drivers/i2c/busses/i2c-cbus.c b/drivers/i2c/busses/i2c-cbus.c
new file mode 100644
index 000..3cc5be4
--- /dev/null
+++ b/drivers/i2c/busses/i2c-cbus.c
@@ -0,0 +1,342 @@
+/*
+ * CBUS I2C driver for Nokia Internet Tablets.
+ *
+ * Copyright (C) 2004-2010 Nokia Corporation
+ *
+ * Based on code written by Juha Yrjölä, David Weinehall, Mikko Ylinen and
+ * Felipe Balbi. Converted to I2C driver by Aaro Koskinen.
+ *
+ * This file is subject to the terms and conditions of the GNU General
+ * Public License. See the file COPYING in the main directory of this
+ * archive for more details.
+ *
+ * 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.
+ */
+
+#include linux/gpio.h
+#include linux/interrupt.h
+#include linux/kernel.h
+#include linux/module.h
+#include linux/delay.h
+#include linux/slab.h
+#include linux/init.h
+#include linux/errno.h
+#include linux/platform_device.h
+#include linux/i2c.h
+#include linux/i2c-cbus.h
+#include linux/io.h
+
+struct cbus_host {
+   /* host lock */
+   spinlock_t  lock;
+
+   struct device   *dev;
+
+   int clk_gpio;
+   int dat_gpio;
+   int sel_gpio;
+};
+
+/**
+ * cbus_send_bit - sends one bit over the bus
+ * @host: the host we're using
+ * @bit: one bit of information to send
+ * @input: whether to set data pin as input after sending
+ */
+static int cbus_send_bit(struct cbus_host *host, unsigned bit,
+   unsigned input)
+{
+   int ret = 0;
+
+   gpio_set_value(host-dat_gpio, bit ? 1 : 0);
+   gpio_set_value(host-clk_gpio, 1);
+
+   /* The data bit is read on the rising edge of CLK */
+   if (input)
+   ret = gpio_direction_input(host-dat_gpio);
+
+   gpio_set_value(host-clk_gpio, 0);
+
+   return ret;
+}
+
+/**
+ * cbus_send_data - sends @len amount of data over the bus
+ * @host: the host we're using
+ * @data: the data to send
+ * @len: size of the transfer
+ * @input: whether to set data pin as input after sending
+ */
+static int cbus_send_data(struct cbus_host *host, unsigned data, unsigned len,
+   unsigned input)
+{
+   int ret = 0;
+   int i;
+
+   for (i = len; i  0; i--) {
+   ret = cbus_send_bit(host, data  (1  (i - 1)),
+   input  (i == 1));
+   if (ret  0)
+   goto out;
+   }
+
+out:
+   return ret;
+}
+
+/**
+ * cbus_receive_bit - receives one bit from the bus
+ * @host: the host we're using
+ */
+static int cbus_receive_bit(struct cbus_host *host)
+{
+   int ret;
+
+   gpio_set_value(host-clk_gpio, 1);
+   ret = gpio_get_value(host-dat_gpio);
+   if (ret  0)
+   goto out;
+   gpio_set_value(host-clk_gpio, 0);
+
+out:
+   return ret;
+}
+
+/**
+ * cbus_receive_word - receives 16-bit word from the bus
+ * @host: the host we're using
+ */
+static int cbus_receive_word(struct cbus_host *host)
+{
+   int 

[RFC PATCH 4/5] arm: omap: n8x0: add i2c-cbus platform data

2012-08-28 Thread Aaro Koskinen
Add platform data to enable i2c-cbus on N8x0. It will be I2C bus #3.

Signed-off-by: Aaro Koskinen aaro.koski...@iki.fi
---
 arch/arm/mach-omap2/board-n8x0.c |   27 +++
 1 files changed, 27 insertions(+), 0 deletions(-)

diff --git a/arch/arm/mach-omap2/board-n8x0.c b/arch/arm/mach-omap2/board-n8x0.c
index 677357f..8ea0dea 100644
--- a/arch/arm/mach-omap2/board-n8x0.c
+++ b/arch/arm/mach-omap2/board-n8x0.c
@@ -18,6 +18,7 @@
 #include linux/io.h
 #include linux/stddef.h
 #include linux/i2c.h
+#include linux/i2c-cbus.h
 #include linux/spi/spi.h
 #include linux/usb/musb.h
 #include sound/tlv320aic3x.h
@@ -42,6 +43,31 @@
 #define TUSB6010_GPIO_ENABLE   0
 #define TUSB6010_DMACHAN   0x3f
 
+#if defined(CONFIG_I2C_CBUS) || defined(CONFIG_I2C_CBUS_MODULE)
+static struct i2c_cbus_platform_data n8x0_cbus_data = {
+   .clk_gpio = 66,
+   .dat_gpio = 65,
+   .sel_gpio = 64,
+};
+
+static struct platform_device n8x0_cbus_device = {
+   .name   = i2c-cbus,
+   .id = 3,
+   .dev= {
+   .platform_data = n8x0_cbus_data,
+   },
+};
+
+static void __init n8x0_cbus_init(void)
+{
+   platform_device_register(n8x0_cbus_device);
+}
+#else /* CONFIG_I2C_CBUS */
+static void __init n8x0_cbus_init(void)
+{
+}
+#endif /* CONFIG_I2C_CBUS */
+
 #if defined(CONFIG_USB_MUSB_TUSB6010) || 
defined(CONFIG_USB_MUSB_TUSB6010_MODULE)
 /*
  * Enable or disable power to TUSB6010. When enabling, turn on 3.3 V and
@@ -681,6 +707,7 @@ static void __init n8x0_init_machine(void)
gpmc_onenand_init(board_onenand_data);
n8x0_mmc_init();
n8x0_usb_init();
+   n8x0_cbus_init();
 }
 
 MACHINE_START(NOKIA_N800, Nokia N800)
-- 
1.7.2.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


Re: [PATCH] arm: omap: ratelimit omap_l3_smx error log spam

2012-08-28 Thread Aaro Koskinen
Hi,

On Tue, Aug 28, 2012 at 07:19:38AM -0700, Shilimkar, Santosh wrote:
 Or the PPA has resized the secure area of 16K. As you have seen the issue
 on one OMAP3 device, it makes sense to takeout that 16K from the public
 SRAM map.
 
 Can you send the patch with fixed base address fir PUB SRAM ?

Maybe I'm missing something, but I tried the following and now something
else got broken:

save_secure_sram() returns ff02

(and it hangs there).

diff --git a/arch/arm/plat-omap/sram.c b/arch/arm/plat-omap/sram.c
index 766181c..242ea5b 100644
--- a/arch/arm/plat-omap/sram.c
+++ b/arch/arm/plat-omap/sram.c
@@ -38,7 +38,7 @@
 
 #define OMAP1_SRAM_PA  0x2000
 #define OMAP2_SRAM_PUB_PA  (OMAP2_SRAM_PA + 0xf800)
-#define OMAP3_SRAM_PUB_PA   (OMAP3_SRAM_PA + 0x8000)
+#define OMAP3_SRAM_PUB_PA   (OMAP3_SRAM_PA + 0xc000)
 #ifdef CONFIG_OMAP4_ERRATA_I688
 #define OMAP4_SRAM_PUB_PA  OMAP4_SRAM_PA
 #else
@@ -112,9 +112,9 @@ static void __init omap_detect_sram(void)
omap_sram_start = OMAP3_SRAM_PUB_PA;
if ((omap_type() == OMAP2_DEVICE_TYPE_EMU) ||
(omap_type() == OMAP2_DEVICE_TYPE_SEC)) {
-   omap_sram_size = 0x7000; /* 28K */
+   omap_sram_size = 0x3000; /* 12K */
} else {
-   omap_sram_size = 0x8000; /* 32K */
+   omap_sram_size = SZ_16K; /* 16K */
}
} else if (cpu_is_omap44xx()) {
omap_sram_start = OMAP4_SRAM_PUB_PA;
--
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 0/9] ARM: OMAP: cleanup plat/board.h file

2012-08-28 Thread Igor Grinberg
This patch series cleans up the plat/board.h and related files.

Remove confusingly empty struct omap_board_config_kernel structures
and unused omap_get_nr_config() macro along with
unused omap_get_var_config() function.
Those apparently were never used in upstream kernels.

Move OMAP3EVM revision bits to the board file as those are not used
(and never have been used) outside of the board file in upstream kernels.

Remove the tags part of the sti console workaround on OMAP2.
Also remove the crystal type tag parsing code on OMAP1.
Since the tags were never used upstream, the sti console workaround
and the crystal type tag parsing code have never fired.

OMAP custom tags code is not used - remove it.
Finally, move all leftovers from the plat/board.h to include/linux/*
and delete the plat/board.h file.

The series are based on Linus' v3.6-rc3, checkpatch clean,
and have been compile tested with omap1|2plus_defconfig(s).

Igor Grinberg (9):
  ARM: OMAP: cleanup struct omap_board_config_kernel
  ARM: OMAP: omap3evm: cleanup revision bits
  ARM: OMAP: remove the sti console workaround
  ARM: OMAP1: remove the crystal type tag parsing
  ARM: OMAP: remove the omap custom tags
  ARM: OMAP1: move omap1_bl pdata out of arch/arm/*
  ARM: OMAP1: move lcd pdata out of arch/arm/*
  ARM: OMAP: move debug_card_init() function
  ARM: OMAP: remove plat/board.h file

 arch/arm/mach-omap1/board-ams-delta.c   |1 -
 arch/arm/mach-omap1/board-fsample.c |1 -
 arch/arm/mach-omap1/board-generic.c |6 -
 arch/arm/mach-omap1/board-htcherald.c   |1 -
 arch/arm/mach-omap1/board-nokia770.c|1 -
 arch/arm/mach-omap1/board-osk.c |1 +
 arch/arm/mach-omap1/board-palmte.c  |2 +-
 arch/arm/mach-omap1/board-palmtt.c  |2 +-
 arch/arm/mach-omap1/board-palmz71.c |2 +-
 arch/arm/mach-omap1/board-perseus2.c|1 -
 arch/arm/mach-omap1/board-sx1.c |1 -
 arch/arm/mach-omap1/board-voiceblue.c   |6 -
 arch/arm/mach-omap1/clock_data.c|8 --
 arch/arm/mach-omap1/devices.c   |1 -
 arch/arm/mach-omap1/serial.c|1 -
 arch/arm/mach-omap2/board-2430sdp.c |1 -
 arch/arm/mach-omap2/board-3430sdp.c |6 -
 arch/arm/mach-omap2/board-3630sdp.c |6 -
 arch/arm/mach-omap2/board-4430sdp.c |1 -
 arch/arm/mach-omap2/board-am3517crane.c |9 --
 arch/arm/mach-omap2/board-am3517evm.c   |6 -
 arch/arm/mach-omap2/board-apollon.c |1 -
 arch/arm/mach-omap2/board-cm-t35.c  |6 -
 arch/arm/mach-omap2/board-cm-t3517.c|6 -
 arch/arm/mach-omap2/board-devkit8000.c  |1 -
 arch/arm/mach-omap2/board-generic.c |1 -
 arch/arm/mach-omap2/board-h4.c  |2 +-
 arch/arm/mach-omap2/board-igep0020.c|1 -
 arch/arm/mach-omap2/board-ldp.c |1 -
 arch/arm/mach-omap2/board-n8x0.c|1 -
 arch/arm/mach-omap2/board-omap3beagle.c |1 -
 arch/arm/mach-omap2/board-omap3evm.c|   19 ++-
 arch/arm/mach-omap2/board-omap3logic.c  |1 -
 arch/arm/mach-omap2/board-omap3pandora.c|1 -
 arch/arm/mach-omap2/board-omap3stalker.c|6 -
 arch/arm/mach-omap2/board-omap3touchbook.c  |1 -
 arch/arm/mach-omap2/board-omap4panda.c  |1 -
 arch/arm/mach-omap2/board-overo.c   |1 -
 arch/arm/mach-omap2/board-rx51-peripherals.c|1 -
 arch/arm/mach-omap2/board-rx51.c|1 -
 arch/arm/mach-omap2/board-ti8168evm.c   |6 -
 arch/arm/mach-omap2/board-zoom.c|1 -
 arch/arm/mach-omap2/common.c|1 -
 arch/arm/mach-omap2/devices.c   |1 -
 arch/arm/mach-omap2/gpmc-nand.c |1 -
 arch/arm/mach-omap2/gpmc-onenand.c  |1 -
 arch/arm/mach-omap2/gpmc-smc91x.c   |1 -
 arch/arm/mach-omap2/gpmc-smsc911x.c |1 -
 arch/arm/mach-omap2/pm-debug.c  |1 -
 arch/arm/mach-omap2/pm24xx.c|   11 --
 arch/arm/mach-omap2/serial.c|1 -
 arch/arm/plat-omap/common.c |   40 ---
 arch/arm/plat-omap/counter_32k.c|1 -
 arch/arm/plat-omap/debug-devices.c  |3 -
 arch/arm/plat-omap/devices.c|1 -
 arch/arm/plat-omap/fb.c |2 -
 arch/arm/plat-omap/include/plat/board.h |  138 ---
 arch/arm/plat-omap/include/plat/debug-devices.h |9 ++
 arch/arm/plat-omap/include/plat/mmc.h   |1 -
 arch/arm/plat-omap/include/plat/usb.h   |1 -
 arch/arm/plat-omap/sram.c   |1 -
 drivers/mmc/host/omap.c |   

[PATCH 3/9] ARM: OMAP: remove the sti console workaround

2012-08-28 Thread Igor Grinberg
The sti console workaround uses the OMAP custom tags.
Those tags are not used in upstream kernel and therefore the workaround
never fires on upstream kernels.
Remove the sti console workaround tags part.
This leaves the workaround functional part intact so can be reused if
needed.

Signed-off-by: Igor Grinberg grinb...@compulab.co.il
---
 arch/arm/mach-omap2/pm24xx.c |   10 --
 1 files changed, 0 insertions(+), 10 deletions(-)

diff --git a/arch/arm/mach-omap2/pm24xx.c b/arch/arm/mach-omap2/pm24xx.c
index 2edeffc..9e54dc9 100644
--- a/arch/arm/mach-omap2/pm24xx.c
+++ b/arch/arm/mach-omap2/pm24xx.c
@@ -352,16 +352,6 @@ int __init omap2_pm_init(void)
 
prcm_setup_regs();
 
-   /* Hack to prevent MPU retention when STI console is enabled. */
-   {
-   const struct omap_sti_console_config *sti;
-
-   sti = omap_get_config(OMAP_TAG_STI_CONSOLE,
- struct omap_sti_console_config);
-   if (sti != NULL  sti-enable)
-   sti_console_enabled = 1;
-   }
-
/*
 * We copy the assembler sleep/wakeup routines to SRAM.
 * These routines need to be in SRAM as that's the only
-- 
1.7.8.6

--
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 6/9] ARM: OMAP1: move omap1_bl pdata out of arch/arm/*

2012-08-28 Thread Igor Grinberg
omap1 backlight platform data resides inside plat/board.h while it
should be inside include/linux/...
Move the omap1 backlight platform data to
include/linux/platform_data/.

Cc: Richard Purdie rpur...@rpsys.net
Cc: Florian Tobias Schandinat florianschandi...@gmx.de
Cc: linux-fb...@vger.kernel.org
Signed-off-by: Igor Grinberg grinb...@compulab.co.il
---
 arch/arm/mach-omap1/board-osk.c |1 +
 arch/arm/mach-omap1/board-palmte.c  |1 +
 arch/arm/mach-omap1/board-palmtt.c  |1 +
 arch/arm/mach-omap1/board-palmz71.c |1 +
 arch/arm/plat-omap/include/plat/board.h |7 ---
 drivers/video/backlight/omap1_bl.c  |2 +-
 include/linux/platform_data/omap1_bl.h  |   11 +++
 7 files changed, 16 insertions(+), 8 deletions(-)
 create mode 100644 include/linux/platform_data/omap1_bl.h

diff --git a/arch/arm/mach-omap1/board-osk.c b/arch/arm/mach-omap1/board-osk.c
index 8784705..569b687 100644
--- a/arch/arm/mach-omap1/board-osk.c
+++ b/arch/arm/mach-omap1/board-osk.c
@@ -39,6 +39,7 @@
 #include linux/mtd/partitions.h
 #include linux/mtd/physmap.h
 #include linux/i2c/tps65010.h
+#include linux/platform_data/omap1_bl.h
 
 #include asm/mach-types.h
 #include asm/mach/arch.h
diff --git a/arch/arm/mach-omap1/board-palmte.c 
b/arch/arm/mach-omap1/board-palmte.c
index 26bcb9d..7bf00ba 100644
--- a/arch/arm/mach-omap1/board-palmte.c
+++ b/arch/arm/mach-omap1/board-palmte.c
@@ -28,6 +28,7 @@
 #include linux/interrupt.h
 #include linux/apm-emulation.h
 #include linux/omapfb.h
+#include linux/platform_data/omap1_bl.h
 
 #include asm/mach-types.h
 #include asm/mach/arch.h
diff --git a/arch/arm/mach-omap1/board-palmtt.c 
b/arch/arm/mach-omap1/board-palmtt.c
index 4d09944..2cce505 100644
--- a/arch/arm/mach-omap1/board-palmtt.c
+++ b/arch/arm/mach-omap1/board-palmtt.c
@@ -27,6 +27,7 @@
 #include linux/omapfb.h
 #include linux/spi/spi.h
 #include linux/spi/ads7846.h
+#include linux/platform_data/omap1_bl.h
 
 #include asm/mach-types.h
 #include asm/mach/arch.h
diff --git a/arch/arm/mach-omap1/board-palmz71.c 
b/arch/arm/mach-omap1/board-palmz71.c
index 3559803..45ab9f0 100644
--- a/arch/arm/mach-omap1/board-palmz71.c
+++ b/arch/arm/mach-omap1/board-palmz71.c
@@ -30,6 +30,7 @@
 #include linux/omapfb.h
 #include linux/spi/spi.h
 #include linux/spi/ads7846.h
+#include linux/platform_data/omap1_bl.h
 
 #include asm/mach-types.h
 #include asm/mach/arch.h
diff --git a/arch/arm/plat-omap/include/plat/board.h 
b/arch/arm/plat-omap/include/plat/board.h
index 5938c72..d0bc46e 100644
--- a/arch/arm/plat-omap/include/plat/board.h
+++ b/arch/arm/plat-omap/include/plat/board.h
@@ -19,13 +19,6 @@ struct omap_lcd_config {
u8   data_lines;
 };
 
-struct device;
-struct fb_info;
-struct omap_backlight_config {
-   int default_intensity;
-   int (*set_power)(struct device *dev, int state);
-};
-
 /* for TI reference platforms sharing the same debug card */
 extern int debug_card_init(u32 addr, unsigned gpio);
 
diff --git a/drivers/video/backlight/omap1_bl.c 
b/drivers/video/backlight/omap1_bl.c
index bfdc5fb..92257ef 100644
--- a/drivers/video/backlight/omap1_bl.c
+++ b/drivers/video/backlight/omap1_bl.c
@@ -27,9 +27,9 @@
 #include linux/fb.h
 #include linux/backlight.h
 #include linux/slab.h
+#include linux/platform_data/omap1_bl.h
 
 #include mach/hardware.h
-#include plat/board.h
 #include plat/mux.h
 
 #define OMAPBL_MAX_INTENSITY   0xff
diff --git a/include/linux/platform_data/omap1_bl.h 
b/include/linux/platform_data/omap1_bl.h
new file mode 100644
index 000..881a8e9
--- /dev/null
+++ b/include/linux/platform_data/omap1_bl.h
@@ -0,0 +1,11 @@
+#ifndef __OMAP1_BL_H__
+#define __OMAP1_BL_H__
+
+#include linux/device.h
+
+struct omap_backlight_config {
+   int default_intensity;
+   int (*set_power)(struct device *dev, int state);
+};
+
+#endif
-- 
1.7.8.6

--
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 1/9] ARM: OMAP: cleanup struct omap_board_config_kernel

2012-08-28 Thread Igor Grinberg
struct omap_board_config_kernel defined in the board files
is always empty and does not bring any added value.
Remove the struct omap_board_config_kernel instances from the board
files.
Also remove the omap_get_nr_config() macro and the omap_get_var_config()
function as both are not used for quite a long time (if ever).

Signed-off-by: Igor Grinberg grinb...@compulab.co.il
---
 arch/arm/mach-omap1/board-generic.c  |5 -
 arch/arm/mach-omap1/board-voiceblue.c|5 -
 arch/arm/mach-omap2/board-3430sdp.c  |6 --
 arch/arm/mach-omap2/board-3630sdp.c  |6 --
 arch/arm/mach-omap2/board-am3517crane.c  |9 -
 arch/arm/mach-omap2/board-am3517evm.c|6 --
 arch/arm/mach-omap2/board-cm-t35.c   |6 --
 arch/arm/mach-omap2/board-cm-t3517.c |6 --
 arch/arm/mach-omap2/board-omap3evm.c |7 ---
 arch/arm/mach-omap2/board-omap3stalker.c |6 --
 arch/arm/mach-omap2/board-ti8168evm.c|6 --
 arch/arm/plat-omap/common.c  |5 -
 arch/arm/plat-omap/include/plat/board.h  |4 
 13 files changed, 0 insertions(+), 77 deletions(-)

diff --git a/arch/arm/mach-omap1/board-generic.c 
b/arch/arm/mach-omap1/board-generic.c
index 6ec385e..d032734 100644
--- a/arch/arm/mach-omap1/board-generic.c
+++ b/arch/arm/mach-omap1/board-generic.c
@@ -52,9 +52,6 @@ static struct omap_usb_config generic1610_usb_config 
__initdata = {
 };
 #endif
 
-static struct omap_board_config_kernel generic_config[] __initdata = {
-};
-
 static void __init omap_generic_init(void)
 {
 #ifdef CONFIG_ARCH_OMAP15XX
@@ -76,8 +73,6 @@ static void __init omap_generic_init(void)
}
 #endif
 
-   omap_board_config = generic_config;
-   omap_board_config_size = ARRAY_SIZE(generic_config);
omap_serial_init();
omap_register_i2c_bus(1, 100, NULL, 0);
 }
diff --git a/arch/arm/mach-omap1/board-voiceblue.c 
b/arch/arm/mach-omap1/board-voiceblue.c
index 3497769..11e1ff3 100644
--- a/arch/arm/mach-omap1/board-voiceblue.c
+++ b/arch/arm/mach-omap1/board-voiceblue.c
@@ -155,9 +155,6 @@ static struct omap_usb_config voiceblue_usb_config 
__initdata = {
.pins[2]= 6,
 };
 
-static struct omap_board_config_kernel voiceblue_config[] = {
-};
-
 #define MACHINE_PANICED1
 #define MACHINE_REBOOTING  2
 #define MACHINE_REBOOT 4
@@ -275,8 +272,6 @@ static void __init voiceblue_init(void)
voiceblue_smc91x_resources[1].start = gpio_to_irq(8);
voiceblue_smc91x_resources[1].end = gpio_to_irq(8);
platform_add_devices(voiceblue_devices, ARRAY_SIZE(voiceblue_devices));
-   omap_board_config = voiceblue_config;
-   omap_board_config_size = ARRAY_SIZE(voiceblue_config);
omap_serial_init();
omap1_usb_init(voiceblue_usb_config);
omap_register_i2c_bus(1, 100, NULL, 0);
diff --git a/arch/arm/mach-omap2/board-3430sdp.c 
b/arch/arm/mach-omap2/board-3430sdp.c
index a98c688..0f78cdb 100644
--- a/arch/arm/mach-omap2/board-3430sdp.c
+++ b/arch/arm/mach-omap2/board-3430sdp.c
@@ -31,7 +31,6 @@
 #include asm/mach/map.h
 
 #include plat/mcspi.h
-#include plat/board.h
 #include plat/usb.h
 #include common.h
 #include plat/dma.h
@@ -191,9 +190,6 @@ static struct omap_dss_board_info sdp3430_dss_data = {
.default_device = sdp3430_lcd_device,
 };
 
-static struct omap_board_config_kernel sdp3430_config[] __initdata = {
-};
-
 static struct omap2_hsmmc_info mmc[] = {
{
.mmc= 1,
@@ -576,8 +572,6 @@ static void __init omap_3430sdp_init(void)
int gpio_pendown;
 
omap3_mux_init(board_mux, OMAP_PACKAGE_CBB);
-   omap_board_config = sdp3430_config;
-   omap_board_config_size = ARRAY_SIZE(sdp3430_config);
omap_hsmmc_init(mmc);
omap3430_i2c_init();
omap_display_init(sdp3430_dss_data);
diff --git a/arch/arm/mach-omap2/board-3630sdp.c 
b/arch/arm/mach-omap2/board-3630sdp.c
index 2dc9ba5..8518b13 100644
--- a/arch/arm/mach-omap2/board-3630sdp.c
+++ b/arch/arm/mach-omap2/board-3630sdp.c
@@ -17,7 +17,6 @@
 #include asm/mach/arch.h
 
 #include common.h
-#include plat/board.h
 #include plat/gpmc-smc91x.h
 #include plat/usb.h
 
@@ -67,9 +66,6 @@ static const struct usbhs_omap_board_data usbhs_bdata 
__initconst = {
.reset_gpio_port[2]  = -EINVAL
 };
 
-static struct omap_board_config_kernel sdp_config[] __initdata = {
-};
-
 #ifdef CONFIG_OMAP_MUX
 static struct omap_board_mux board_mux[] __initdata = {
{ .reg_offset = OMAP_MUX_TERMINATOR },
@@ -197,8 +193,6 @@ static struct flash_partitions sdp_flash_partitions[] = {
 static void __init omap_sdp_init(void)
 {
omap3_mux_init(board_mux, OMAP_PACKAGE_CBP);
-   omap_board_config = sdp_config;
-   omap_board_config_size = ARRAY_SIZE(sdp_config);
zoom_peripherals_init();
omap_sdrc_init(h8mbx00u0mer0em_sdrc_params,
  h8mbx00u0mer0em_sdrc_params);
diff --git 

[PATCH 2/9] ARM: OMAP: omap3evm: cleanup revision bits

2012-08-28 Thread Igor Grinberg
The omap3evm has its revision information bits inside the plat/board.h
file. Those bits are not used anywhere in the upstream tree besides the
board-omap3evm.c file.
Move the OMAP3EVM_BOARD_GEN_* bits to the board file and remove the
get_omap3_evm_rev() function declaration.

Signed-off-by: Igor Grinberg grinb...@compulab.co.il
---
 arch/arm/mach-omap2/board-omap3evm.c|   12 
 arch/arm/plat-omap/include/plat/board.h |   18 --
 2 files changed, 12 insertions(+), 18 deletions(-)

diff --git a/arch/arm/mach-omap2/board-omap3evm.c 
b/arch/arm/mach-omap2/board-omap3evm.c
index 5be082b..8477137 100644
--- a/arch/arm/mach-omap2/board-omap3evm.c
+++ b/arch/arm/mach-omap2/board-omap3evm.c
@@ -73,6 +73,18 @@
 #define OMAP3EVM_GEN1_ETHR_GPIO_RST64
 #define OMAP3EVM_GEN2_ETHR_GPIO_RST7
 
+/*
+ * OMAP35x EVM revision
+ * Run time detection of EVM revision is done by reading Ethernet
+ * PHY ID -
+ * GEN_1   = 0x0115
+ * GEN_2   = 0x9220
+ */
+enum {
+   OMAP3EVM_BOARD_GEN_1 = 0,   /* EVM Rev between  A - D */
+   OMAP3EVM_BOARD_GEN_2,   /* EVM Rev = Rev E */
+};
+
 static u8 omap3_evm_version;
 
 u8 get_omap3_evm_rev(void)
diff --git a/arch/arm/plat-omap/include/plat/board.h 
b/arch/arm/plat-omap/include/plat/board.h
index e6a8d79..db3bdc1 100644
--- a/arch/arm/plat-omap/include/plat/board.h
+++ b/arch/arm/plat-omap/include/plat/board.h
@@ -14,18 +14,6 @@
 
 #include plat/gpio-switch.h
 
-/*
- * OMAP35x EVM revision
- * Run time detection of EVM revision is done by reading Ethernet
- * PHY ID -
- * GEN_1   = 0x0115
- * GEN_2   = 0x9220
- */
-enum {
-   OMAP3EVM_BOARD_GEN_1 = 0,   /* EVM Rev between  A - D */
-   OMAP3EVM_BOARD_GEN_2,   /* EVM Rev = Rev E */
-};
-
 /* Different peripheral ids */
 #define OMAP_TAG_CLOCK 0x4f01
 #define OMAP_TAG_GPIO_SWITCH   0x4f06
@@ -125,10 +113,4 @@ extern int omap_board_config_size;
 /* for TI reference platforms sharing the same debug card */
 extern int debug_card_init(u32 addr, unsigned gpio);
 
-/* OMAP3EVM revision */
-#if defined(CONFIG_MACH_OMAP3EVM)
-u8 get_omap3_evm_rev(void);
-#else
-#define get_omap3_evm_rev() (-EINVAL)
-#endif
 #endif
-- 
1.7.8.6

--
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 4/9] ARM: OMAP1: remove the crystal type tag parsing

2012-08-28 Thread Igor Grinberg
The omap1 crystal setting uses the OMAP custom tags.
Those tags are not used in upstream kernel and therefore the crystal
type is never set by the tag parsing code on upstream kernels.
Remove the crystal tag parsing code.

Signed-off-by: Igor Grinberg grinb...@compulab.co.il
---
 arch/arm/mach-omap1/clock_data.c |8 
 1 files changed, 0 insertions(+), 8 deletions(-)

diff --git a/arch/arm/mach-omap1/clock_data.c b/arch/arm/mach-omap1/clock_data.c
index c007d80..6a32b9b 100644
--- a/arch/arm/mach-omap1/clock_data.c
+++ b/arch/arm/mach-omap1/clock_data.c
@@ -25,7 +25,6 @@
 #include plat/clock.h
 #include plat/cpu.h
 #include plat/clkdev_omap.h
-#include plat/board.h
 #include plat/sram.h /* for omap_sram_reprogram_clock() */
 
 #include mach/hardware.h
@@ -788,7 +787,6 @@ u32 cpu_mask;
 int __init omap1_clk_init(void)
 {
struct omap_clk *c;
-   const struct omap_clock_config *info;
int crystal_type = 0; /* Default 12 MHz */
u32 reg;
 
@@ -837,12 +835,6 @@ int __init omap1_clk_init(void)
ck_dpll1_p = clk_get(NULL, ck_dpll1);
ck_ref_p = clk_get(NULL, ck_ref);
 
-   info = omap_get_config(OMAP_TAG_CLOCK, struct omap_clock_config);
-   if (info != NULL) {
-   if (!cpu_is_omap15xx())
-   crystal_type = info-system_clock_type;
-   }
-
if (cpu_is_omap7xx())
ck_ref.rate = 1300;
if (cpu_is_omap16xx()  crystal_type == 2)
-- 
1.7.8.6

--
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 7/9] ARM: OMAP1: move lcd pdata out of arch/arm/*

2012-08-28 Thread Igor Grinberg
omap1 lcd platform data resides inside plat/board.h while it
should be inside include/linux/...
Move the omap1 lcd platform data to include/linux/omapfb.h.

Signed-off-by: Igor Grinberg grinb...@compulab.co.il
---
 arch/arm/mach-omap1/board-ams-delta.c   |1 -
 arch/arm/mach-omap1/board-fsample.c |1 -
 arch/arm/mach-omap1/board-htcherald.c   |1 -
 arch/arm/mach-omap1/board-nokia770.c|1 -
 arch/arm/mach-omap1/board-palmte.c  |1 -
 arch/arm/mach-omap1/board-palmtt.c  |1 -
 arch/arm/mach-omap1/board-palmz71.c |1 -
 arch/arm/mach-omap1/board-perseus2.c|1 -
 arch/arm/mach-omap1/board-sx1.c |1 -
 arch/arm/plat-omap/fb.c |2 --
 arch/arm/plat-omap/include/plat/board.h |7 ---
 include/linux/omapfb.h  |7 ++-
 12 files changed, 6 insertions(+), 19 deletions(-)

diff --git a/arch/arm/mach-omap1/board-ams-delta.c 
b/arch/arm/mach-omap1/board-ams-delta.c
index c534698..c162369 100644
--- a/arch/arm/mach-omap1/board-ams-delta.c
+++ b/arch/arm/mach-omap1/board-ams-delta.c
@@ -37,7 +37,6 @@
 #include plat/board-ams-delta.h
 #include plat/keypad.h
 #include plat/mux.h
-#include plat/board.h
 
 #include mach/hardware.h
 #include mach/ams-delta-fiq.h
diff --git a/arch/arm/mach-omap1/board-fsample.c 
b/arch/arm/mach-omap1/board-fsample.c
index 6872f3f..6d98552 100644
--- a/arch/arm/mach-omap1/board-fsample.c
+++ b/arch/arm/mach-omap1/board-fsample.c
@@ -32,7 +32,6 @@
 #include plat/flash.h
 #include plat/fpga.h
 #include plat/keypad.h
-#include plat/board.h
 
 #include mach/hardware.h
 
diff --git a/arch/arm/mach-omap1/board-htcherald.c 
b/arch/arm/mach-omap1/board-htcherald.c
index b3f6e94..b9771b5 100644
--- a/arch/arm/mach-omap1/board-htcherald.c
+++ b/arch/arm/mach-omap1/board-htcherald.c
@@ -42,7 +42,6 @@
 #include asm/mach/arch.h
 
 #include plat/omap7xx.h
-#include plat/board.h
 #include plat/keypad.h
 #include plat/mmc.h
 
diff --git a/arch/arm/mach-omap1/board-nokia770.c 
b/arch/arm/mach-omap1/board-nokia770.c
index 2c0ca8f..ec01f03 100644
--- a/arch/arm/mach-omap1/board-nokia770.c
+++ b/arch/arm/mach-omap1/board-nokia770.c
@@ -26,7 +26,6 @@
 #include asm/mach/map.h
 
 #include plat/mux.h
-#include plat/board.h
 #include plat/keypad.h
 #include plat/lcd_mipid.h
 #include plat/mmc.h
diff --git a/arch/arm/mach-omap1/board-palmte.c 
b/arch/arm/mach-omap1/board-palmte.c
index 7bf00ba..49f8d74 100644
--- a/arch/arm/mach-omap1/board-palmte.c
+++ b/arch/arm/mach-omap1/board-palmte.c
@@ -38,7 +38,6 @@
 #include plat/mux.h
 #include plat/tc.h
 #include plat/dma.h
-#include plat/board.h
 #include plat/irda.h
 #include plat/keypad.h
 
diff --git a/arch/arm/mach-omap1/board-palmtt.c 
b/arch/arm/mach-omap1/board-palmtt.c
index 2cce505..01523cd 100644
--- a/arch/arm/mach-omap1/board-palmtt.c
+++ b/arch/arm/mach-omap1/board-palmtt.c
@@ -38,7 +38,6 @@
 #include plat/mux.h
 #include plat/dma.h
 #include plat/tc.h
-#include plat/board.h
 #include plat/irda.h
 #include plat/keypad.h
 
diff --git a/arch/arm/mach-omap1/board-palmz71.c 
b/arch/arm/mach-omap1/board-palmz71.c
index 45ab9f0..a7abce6 100644
--- a/arch/arm/mach-omap1/board-palmz71.c
+++ b/arch/arm/mach-omap1/board-palmz71.c
@@ -40,7 +40,6 @@
 #include plat/mux.h
 #include plat/dma.h
 #include plat/tc.h
-#include plat/board.h
 #include plat/irda.h
 #include plat/keypad.h
 
diff --git a/arch/arm/mach-omap1/board-perseus2.c 
b/arch/arm/mach-omap1/board-perseus2.c
index 703d55e..277e0bc 100644
--- a/arch/arm/mach-omap1/board-perseus2.c
+++ b/arch/arm/mach-omap1/board-perseus2.c
@@ -32,7 +32,6 @@
 #include plat/fpga.h
 #include plat/flash.h
 #include plat/keypad.h
-#include plat/board.h
 
 #include mach/hardware.h
 
diff --git a/arch/arm/mach-omap1/board-sx1.c b/arch/arm/mach-omap1/board-sx1.c
index 8c665bd..2e1fff2 100644
--- a/arch/arm/mach-omap1/board-sx1.c
+++ b/arch/arm/mach-omap1/board-sx1.c
@@ -38,7 +38,6 @@
 #include plat/dma.h
 #include plat/irda.h
 #include plat/tc.h
-#include plat/board.h
 #include plat/keypad.h
 #include plat/board-sx1.h
 
diff --git a/arch/arm/plat-omap/fb.c b/arch/arm/plat-omap/fb.c
index dd6f92c..bcbb9d5 100644
--- a/arch/arm/plat-omap/fb.c
+++ b/arch/arm/plat-omap/fb.c
@@ -33,8 +33,6 @@
 #include mach/hardware.h
 #include asm/mach/map.h
 
-#include plat/board.h
-
 #if defined(CONFIG_FB_OMAP) || defined(CONFIG_FB_OMAP_MODULE)
 
 static bool omapfb_lcd_configured;
diff --git a/arch/arm/plat-omap/include/plat/board.h 
b/arch/arm/plat-omap/include/plat/board.h
index d0bc46e..2ddc198 100644
--- a/arch/arm/plat-omap/include/plat/board.h
+++ b/arch/arm/plat-omap/include/plat/board.h
@@ -12,13 +12,6 @@
 
 #include linux/types.h
 
-struct omap_lcd_config {
-   char panel_name[16];
-   char ctrl_name[16];
-   s16  nreset_gpio;
-   u8   data_lines;
-};
-
 /* for TI reference platforms sharing the same debug card */
 extern int debug_card_init(u32 addr, unsigned gpio);
 
diff --git a/include/linux/omapfb.h 

[PATCH 5/9] ARM: OMAP: remove the omap custom tags

2012-08-28 Thread Igor Grinberg
The omap custom initialization tags are not used anymore (if ever)
by the mainline kernel.
Thus remove the omap custom initialization tags.

Signed-off-by: Igor Grinberg grinb...@compulab.co.il
---
 arch/arm/plat-omap/common.c |   34 
 arch/arm/plat-omap/include/plat/board.h |   84 ---
 2 files changed, 0 insertions(+), 118 deletions(-)

diff --git a/arch/arm/plat-omap/common.c b/arch/arm/plat-omap/common.c
index af98971..7c04748 100644
--- a/arch/arm/plat-omap/common.c
+++ b/arch/arm/plat-omap/common.c
@@ -24,40 +24,6 @@
 
 #include plat/omap-secure.h
 
-
-#define NO_LENGTH_CHECK 0x
-
-struct omap_board_config_kernel *omap_board_config __initdata;
-int omap_board_config_size;
-
-static const void *__init get_config(u16 tag, size_t len,
-   int skip, size_t *len_out)
-{
-   struct omap_board_config_kernel *kinfo = NULL;
-   int i;
-
-   /* Try to find the config from the board-specific structures
-* in the kernel. */
-   for (i = 0; i  omap_board_config_size; i++) {
-   if (omap_board_config[i].tag == tag) {
-   if (skip == 0) {
-   kinfo = omap_board_config[i];
-   break;
-   } else {
-   skip--;
-   }
-   }
-   }
-   if (kinfo == NULL)
-   return NULL;
-   return kinfo-data;
-}
-
-const void *__init __omap_get_config(u16 tag, size_t len, int nr)
-{
-return get_config(tag, len, nr, NULL);
-}
-
 void __init omap_reserve(void)
 {
omap_vram_reserve_sdram_memblock();
diff --git a/arch/arm/plat-omap/include/plat/board.h 
b/arch/arm/plat-omap/include/plat/board.h
index db3bdc1..5938c72 100644
--- a/arch/arm/plat-omap/include/plat/board.h
+++ b/arch/arm/plat-omap/include/plat/board.h
@@ -12,39 +12,6 @@
 
 #include linux/types.h
 
-#include plat/gpio-switch.h
-
-/* Different peripheral ids */
-#define OMAP_TAG_CLOCK 0x4f01
-#define OMAP_TAG_GPIO_SWITCH   0x4f06
-#define OMAP_TAG_STI_CONSOLE   0x4f09
-#define OMAP_TAG_CAMERA_SENSOR 0x4f0a
-
-#define OMAP_TAG_BOOT_REASON0x4f80
-#define OMAP_TAG_FLASH_PART0x4f81
-#define OMAP_TAG_VERSION_STR   0x4f82
-
-struct omap_clock_config {
-   /* 0 for 12 MHz, 1 for 13 MHz and 2 for 19.2 MHz */
-   u8 system_clock_type;
-};
-
-struct omap_serial_console_config {
-   u8 console_uart;
-   u32 console_speed;
-};
-
-struct omap_sti_console_config {
-   unsigned enable:1;
-   u8 channel;
-};
-
-struct omap_camera_sensor_config {
-   u16 reset_gpio;
-   int (*power_on)(void * data);
-   int (*power_off)(void * data);
-};
-
 struct omap_lcd_config {
char panel_name[16];
char ctrl_name[16];
@@ -59,57 +26,6 @@ struct omap_backlight_config {
int (*set_power)(struct device *dev, int state);
 };
 
-struct omap_fbmem_config {
-   u32 start;
-   u32 size;
-};
-
-struct omap_pwm_led_platform_data {
-   const char *name;
-   int intensity_timer;
-   int blink_timer;
-   void (*set_power)(struct omap_pwm_led_platform_data *self, int on_off);
-};
-
-struct omap_uart_config {
-   /* Bit field of UARTs present; bit 0 -- UART1 */
-   unsigned int enabled_uarts;
-};
-
-
-struct omap_flash_part_config {
-   char part_table[0];
-};
-
-struct omap_boot_reason_config {
-   char reason_str[12];
-};
-
-struct omap_version_config {
-   char component[12];
-   char version[12];
-};
-
-struct omap_board_config_entry {
-   u16 tag;
-   u16 len;
-   u8  data[0];
-};
-
-struct omap_board_config_kernel {
-   u16 tag;
-   const void *data;
-};
-
-extern const void *__init __omap_get_config(u16 tag, size_t len, int nr);
-
-#define omap_get_config(tag, type) \
-   ((const type *) __omap_get_config((tag), sizeof(type), 0))
-
-extern struct omap_board_config_kernel *omap_board_config;
-extern int omap_board_config_size;
-
-
 /* for TI reference platforms sharing the same debug card */
 extern int debug_card_init(u32 addr, unsigned gpio);
 
-- 
1.7.8.6

--
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 8/9] ARM: OMAP: move debug_card_init() function

2012-08-28 Thread Igor Grinberg
debug_card_init() function resides in the plat/board.h file.
Move it to a separate header file under plat/ so the board.h file can be
removed.

Signed-off-by: Igor Grinberg grinb...@compulab.co.il
---
 arch/arm/mach-omap2/board-h4.c  |2 +-
 arch/arm/plat-omap/include/plat/board.h |5 -
 arch/arm/plat-omap/include/plat/debug-devices.h |9 +
 3 files changed, 10 insertions(+), 6 deletions(-)
 create mode 100644 arch/arm/plat-omap/include/plat/debug-devices.h

diff --git a/arch/arm/mach-omap2/board-h4.c b/arch/arm/mach-omap2/board-h4.c
index ace2048..5be30e6 100644
--- a/arch/arm/mach-omap2/board-h4.c
+++ b/arch/arm/mach-omap2/board-h4.c
@@ -32,11 +32,11 @@
 #include asm/mach/arch.h
 #include asm/mach/map.h
 
-#include plat/board.h
 #include common.h
 #include plat/menelaus.h
 #include plat/dma.h
 #include plat/gpmc.h
+#include plat/debug-devices.h
 
 #include video/omapdss.h
 #include video/omap-panel-generic-dpi.h
diff --git a/arch/arm/plat-omap/include/plat/board.h 
b/arch/arm/plat-omap/include/plat/board.h
index 2ddc198..d92f1b5 100644
--- a/arch/arm/plat-omap/include/plat/board.h
+++ b/arch/arm/plat-omap/include/plat/board.h
@@ -10,9 +10,4 @@
 #ifndef _OMAP_BOARD_H
 #define _OMAP_BOARD_H
 
-#include linux/types.h
-
-/* for TI reference platforms sharing the same debug card */
-extern int debug_card_init(u32 addr, unsigned gpio);
-
 #endif
diff --git a/arch/arm/plat-omap/include/plat/debug-devices.h 
b/arch/arm/plat-omap/include/plat/debug-devices.h
new file mode 100644
index 000..a4edbd2
--- /dev/null
+++ b/arch/arm/plat-omap/include/plat/debug-devices.h
@@ -0,0 +1,9 @@
+#ifndef _OMAP_DEBUG_DEVICES_H
+#define _OMAP_DEBUG_DEVICES_H
+
+#include linux/types.h
+
+/* for TI reference platforms sharing the same debug card */
+extern int debug_card_init(u32 addr, unsigned gpio);
+
+#endif
-- 
1.7.8.6

--
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 9/9] ARM: OMAP: remove plat/board.h file

2012-08-28 Thread Igor Grinberg
plat/board.h file is now empty - remove it.

Cc: Jarkko Lavinen jarkko.lavi...@nokia.com
Cc: Chris Ball c...@laptop.org
Cc: Kyungmin Park kyungmin.p...@samsung.com
Cc: linux-...@vger.kernel.org
Cc: linux-...@lists.infradead.org
Signed-off-by: Igor Grinberg grinb...@compulab.co.il
---
 arch/arm/mach-omap1/board-generic.c  |1 -
 arch/arm/mach-omap1/board-voiceblue.c|1 -
 arch/arm/mach-omap1/devices.c|1 -
 arch/arm/mach-omap1/serial.c |1 -
 arch/arm/mach-omap2/board-2430sdp.c  |1 -
 arch/arm/mach-omap2/board-4430sdp.c  |1 -
 arch/arm/mach-omap2/board-apollon.c  |1 -
 arch/arm/mach-omap2/board-devkit8000.c   |1 -
 arch/arm/mach-omap2/board-generic.c  |1 -
 arch/arm/mach-omap2/board-igep0020.c |1 -
 arch/arm/mach-omap2/board-ldp.c  |1 -
 arch/arm/mach-omap2/board-n8x0.c |1 -
 arch/arm/mach-omap2/board-omap3beagle.c  |1 -
 arch/arm/mach-omap2/board-omap3logic.c   |1 -
 arch/arm/mach-omap2/board-omap3pandora.c |1 -
 arch/arm/mach-omap2/board-omap3touchbook.c   |1 -
 arch/arm/mach-omap2/board-omap4panda.c   |1 -
 arch/arm/mach-omap2/board-overo.c|1 -
 arch/arm/mach-omap2/board-rx51-peripherals.c |1 -
 arch/arm/mach-omap2/board-rx51.c |1 -
 arch/arm/mach-omap2/board-zoom.c |1 -
 arch/arm/mach-omap2/common.c |1 -
 arch/arm/mach-omap2/devices.c|1 -
 arch/arm/mach-omap2/gpmc-nand.c  |1 -
 arch/arm/mach-omap2/gpmc-onenand.c   |1 -
 arch/arm/mach-omap2/gpmc-smc91x.c|1 -
 arch/arm/mach-omap2/gpmc-smsc911x.c  |1 -
 arch/arm/mach-omap2/pm-debug.c   |1 -
 arch/arm/mach-omap2/pm24xx.c |1 -
 arch/arm/mach-omap2/serial.c |1 -
 arch/arm/plat-omap/common.c  |1 -
 arch/arm/plat-omap/counter_32k.c |1 -
 arch/arm/plat-omap/debug-devices.c   |3 ---
 arch/arm/plat-omap/devices.c |1 -
 arch/arm/plat-omap/include/plat/board.h  |   13 -
 arch/arm/plat-omap/include/plat/mmc.h|1 -
 arch/arm/plat-omap/include/plat/usb.h|1 -
 arch/arm/plat-omap/sram.c|1 -
 drivers/mmc/host/omap.c  |1 -
 drivers/mmc/host/omap_hsmmc.c|1 -
 drivers/mtd/onenand/omap2.c  |2 --
 41 files changed, 0 insertions(+), 56 deletions(-)
 delete mode 100644 arch/arm/plat-omap/include/plat/board.h

diff --git a/arch/arm/mach-omap1/board-generic.c 
b/arch/arm/mach-omap1/board-generic.c
index d032734..04b5fda 100644
--- a/arch/arm/mach-omap1/board-generic.c
+++ b/arch/arm/mach-omap1/board-generic.c
@@ -23,7 +23,6 @@
 #include asm/mach/map.h
 
 #include plat/mux.h
-#include plat/board.h
 
 #include mach/usb.h
 
diff --git a/arch/arm/mach-omap1/board-voiceblue.c 
b/arch/arm/mach-omap1/board-voiceblue.c
index 11e1ff3..1668af3 100644
--- a/arch/arm/mach-omap1/board-voiceblue.c
+++ b/arch/arm/mach-omap1/board-voiceblue.c
@@ -35,7 +35,6 @@
 #include plat/flash.h
 #include plat/mux.h
 #include plat/tc.h
-#include plat/board.h
 
 #include mach/hardware.h
 #include mach/usb.h
diff --git a/arch/arm/mach-omap1/devices.c b/arch/arm/mach-omap1/devices.c
index fa1fa4d..1feca35 100644
--- a/arch/arm/mach-omap1/devices.c
+++ b/arch/arm/mach-omap1/devices.c
@@ -20,7 +20,6 @@
 #include asm/mach/map.h
 
 #include plat/tc.h
-#include plat/board.h
 #include plat/mux.h
 #include plat/dma.h
 #include plat/mmc.h
diff --git a/arch/arm/mach-omap1/serial.c b/arch/arm/mach-omap1/serial.c
index 6809c9e..0d1709b 100644
--- a/arch/arm/mach-omap1/serial.c
+++ b/arch/arm/mach-omap1/serial.c
@@ -22,7 +22,6 @@
 
 #include asm/mach-types.h
 
-#include plat/board.h
 #include plat/mux.h
 #include plat/fpga.h
 
diff --git a/arch/arm/mach-omap2/board-2430sdp.c 
b/arch/arm/mach-omap2/board-2430sdp.c
index 9511584..36eee4b 100644
--- a/arch/arm/mach-omap2/board-2430sdp.c
+++ b/arch/arm/mach-omap2/board-2430sdp.c
@@ -33,7 +33,6 @@
 #include asm/mach/arch.h
 #include asm/mach/map.h
 
-#include plat/board.h
 #include common.h
 #include plat/gpmc.h
 #include plat/usb.h
diff --git a/arch/arm/mach-omap2/board-4430sdp.c 
b/arch/arm/mach-omap2/board-4430sdp.c
index ad8a7d9..04e8574 100644
--- a/arch/arm/mach-omap2/board-4430sdp.c
+++ b/arch/arm/mach-omap2/board-4430sdp.c
@@ -34,7 +34,6 @@
 #include asm/mach/arch.h
 #include asm/mach/map.h
 
-#include plat/board.h
 #include common.h
 #include plat/usb.h
 #include plat/mmc.h
diff --git a/arch/arm/mach-omap2/board-apollon.c 
b/arch/arm/mach-omap2/board-apollon.c
index e5fa46b..a6a1b48 100644
--- a/arch/arm/mach-omap2/board-apollon.c
+++ b/arch/arm/mach-omap2/board-apollon.c
@@ -35,7 +35,6 @@
 #include asm/mach/flash.h
 
 #include plat/led.h
-#include plat/board.h
 #include common.h
 

Re: [PATCH] arm: omap: ratelimit omap_l3_smx error log spam

2012-08-28 Thread Shilimkar, Santosh
On Tue, Aug 28, 2012 at 4:09 PM, Aaro Koskinen aaro.koski...@iki.fi wrote:
 Hi,

 On Tue, Aug 28, 2012 at 07:19:38AM -0700, Shilimkar, Santosh wrote:
 Or the PPA has resized the secure area of 16K. As you have seen the issue
 on one OMAP3 device, it makes sense to takeout that 16K from the public
 SRAM map.

 Can you send the patch with fixed base address fir PUB SRAM ?

 Maybe I'm missing something, but I tried the following and now something
 else got broken:

 save_secure_sram() returns ff02

Damn. Looks like, you are running short of memory now for sram_push stuff.

Regards
Santosh
--
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 9/9] ARM: OMAP: remove plat/board.h file

2012-08-28 Thread Chris Ball
Hi,

On Tue, Aug 28 2012, Igor Grinberg wrote:
  drivers/mmc/host/omap.c  |1 -
  drivers/mmc/host/omap_hsmmc.c|1 -

Acked-by: Chris Ball c...@laptop.org

-- 
Chris Ball   c...@laptop.org   http://printf.net/
One Laptop Per Child
--
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] arm: omap: ratelimit omap_l3_smx error log spam

2012-08-28 Thread Aaro Koskinen
On Tue, Aug 28, 2012 at 04:38:24PM -0700, Shilimkar, Santosh wrote:
 On Tue, Aug 28, 2012 at 4:09 PM, Aaro Koskinen aaro.koski...@iki.fi wrote:
  On Tue, Aug 28, 2012 at 07:19:38AM -0700, Shilimkar, Santosh wrote:
  Or the PPA has resized the secure area of 16K. As you have seen the issue
  on one OMAP3 device, it makes sense to takeout that 16K from the public
  SRAM map.
 
  Can you send the patch with fixed base address fir PUB SRAM ?
 
  Maybe I'm missing something, but I tried the following and now something
  else got broken:
 
  save_secure_sram() returns ff02
 
 Damn. Looks like, you are running short of memory now for sram_push stuff.

No, it's not that, because the below version works and that leaves as
little memory for the sram_push code:

diff --git a/arch/arm/plat-omap/sram.c b/arch/arm/plat-omap/sram.c
index 766181c..a91e7ad 100644
--- a/arch/arm/plat-omap/sram.c
+++ b/arch/arm/plat-omap/sram.c
@@ -47,7 +47,7 @@
 #define OMAP5_SRAM_PA  0x4030
 
 #if defined(CONFIG_ARCH_OMAP2PLUS)
-#define SRAM_BOOTLOADER_SZ 0x00
+#define SRAM_BOOTLOADER_SZ (cpu_is_omap34xx() ? SZ_16K : 0)
 #else
 #define SRAM_BOOTLOADER_SZ 0x80
 #endif

A.
--
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: [alsa-devel] [PATCH] ASoC: ams-delta: fix card initalization failure

2012-08-28 Thread Janusz Krzysztofik
On Tue, 28 Aug 2012 11:13:39 Mark Brown wrote:
 On Tue, Aug 28, 2012 at 05:13:05PM +0200, Janusz Krzysztofik wrote:
  On Mon, 27 Aug 2012 14:38:35 Mark Brown wrote:
   On Mon, Aug 27, 2012 at 11:28:30PM +0200, Janusz Krzysztofik wrote:
 
-   platform_set_drvdata(ams_delta_audio_platform_device,
-   ams_delta_audio_card);
 
   The real fix here is that you should be using platform data here, 
not
   driver data.  Is there some reason not to do that?
 
  Do you think the change you propose is suitable for the rc cycle? 
I'm 
  trying to fix a regression in the first place. Converting the ams-
delta 
  asoc to a platform driver is on my todo list and I'm going to take 
care 
  of this as soon as I have enough spare time.
 
 The above looks like you already have a platform driver?  All I'm
 suggesting is changing the above to use platform rather than driver
 data.

The ams-delta asoc driver doesn't use snd_soc_register_card() so far, 
but relays solely on soc_probe() doing this for it, which in turn 
expects to find a snc_soc_card structure in drvdata. How is it supposed 
to find that structure if I pass it over platform data instead? Am I 
missing something?

Thanks,
Janusz
--
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