* is dynamic tick working?
@ 2006-05-13 2:05 David Brownell
2006-05-14 10:49 ` Tony Lindgren
0 siblings, 1 reply; 15+ messages in thread
From: David Brownell @ 2006-05-13 2:05 UTC (permalink / raw)
To: linux-omap-open-source
On an OSK, using today's GIT tree, I turned on dynamic tick using
sysfs and thought the IRQ rate (32 KHz timer) was odd. So I did
grep tim /proc/int*; sleep 60; grep tim /proc/int*
and saw 104551 IRQs, which is 1742 per second. Too many!! When
I turned dyntick off (on/off via sysfs) the same measurement
gave a more reasonable 7701 IRQs, making 128 per second.
In short, enabling dyntick got me 14x as many IRQs, instead of
shrinking the number of IRQs. Known bug?
- Dave
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: is dynamic tick working?
2006-05-13 2:05 is dynamic tick working? David Brownell
@ 2006-05-14 10:49 ` Tony Lindgren
2006-05-14 16:19 ` David Brownell
0 siblings, 1 reply; 15+ messages in thread
From: Tony Lindgren @ 2006-05-14 10:49 UTC (permalink / raw)
To: David Brownell; +Cc: linux-omap-open-source
* David Brownell <david-b@pacbell.net> [060512 19:05]:
> On an OSK, using today's GIT tree, I turned on dynamic tick using
> sysfs and thought the IRQ rate (32 KHz timer) was odd. So I did
>
> grep tim /proc/int*; sleep 60; grep tim /proc/int*
>
> and saw 104551 IRQs, which is 1742 per second. Too many!! When
> I turned dyntick off (on/off via sysfs) the same measurement
> gave a more reasonable 7701 IRQs, making 128 per second.
>
> In short, enabling dyntick got me 14x as many IRQs, instead of
> shrinking the number of IRQs. Known bug?
Is this with touchscreen enabled? I saw something similar last week
where SPI was generating interrupts continuously. I think Imre has a
patch for that already available.
With dyntick the timer interrupt handler is being called also from
other interrupt handlers to update time. So doing something like:
$ cat /proc/interrupts; sleep 10; cat /proc/interrupts
might give you a clue which device interrupt is stuck.
In general dyntick should work, and you should see about 4-6HZ idle
tick rate.
Regards,
Tony
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: is dynamic tick working?
2006-05-14 10:49 ` Tony Lindgren
@ 2006-05-14 16:19 ` David Brownell
2006-05-14 17:57 ` Imre Deak
2006-05-15 9:26 ` Tony Lindgren
0 siblings, 2 replies; 15+ messages in thread
From: David Brownell @ 2006-05-14 16:19 UTC (permalink / raw)
To: Tony Lindgren; +Cc: linux-omap-open-source
On Sunday 14 May 2006 3:49 am, Tony Lindgren wrote:
> * David Brownell <david-b@pacbell.net> [060512 19:05]:
> > In short, enabling dyntick got me 14x as many IRQs, instead of
> > shrinking the number of IRQs. Known bug?
>
> Is this with touchscreen enabled? I saw something similar last week
> where SPI was generating interrupts continuously. I think Imre has a
> patch for that already available.
It was, but I don't think I've seen such a patch yet.
I had noticed that the ads7846 code grew a glitch whereby its timer
polls for position even when the "pen" isn't down. That's oddly
similar to a glitch in omap-keyboard, where it keeps a timer active
even when no Mistral key is pressed.
> In general dyntick should work, and you should see about 4-6HZ idle
> tick rate.
Depending on drivers, it seems ... ;)
I have a patch to get rid of the OHCI root hub polling, which will
get rid of one 4Hz timer.
- Dave
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: is dynamic tick working?
2006-05-14 16:19 ` David Brownell
@ 2006-05-14 17:57 ` Imre Deak
2006-05-14 19:20 ` David Brownell
2006-05-15 9:26 ` Tony Lindgren
1 sibling, 1 reply; 15+ messages in thread
From: Imre Deak @ 2006-05-14 17:57 UTC (permalink / raw)
To: ext David Brownell; +Cc: linux-omap-open-source
ext David Brownell wrote:
> On Sunday 14 May 2006 3:49 am, Tony Lindgren wrote:
>> * David Brownell <david-b@pacbell.net> [060512 19:05]:
>>> In short, enabling dyntick got me 14x as many IRQs, instead of
>>> shrinking the number of IRQs. Known bug?
>> Is this with touchscreen enabled? I saw something similar last week
>> where SPI was generating interrupts continuously. I think Imre has a
>> patch for that already available.
>
> It was, but I don't think I've seen such a patch yet.
>
> I had noticed that the ads7846 code grew a glitch whereby its timer
> polls for position even when the "pen" isn't down.
The problem is caused by the ads7846 generating interrupts during the
measurement, which do not signal an actual pen down. Though the IRQ line
is disabled it will still be latched and serviced at the end of the
measurement when the IRQ line is reenabled. This will start another
round of measurements..
To solve this we have to check the state of the IRQ line at the time of
the interrupt if it's a "real one". The patch is already in the mainline
tree, I've also sent it to Tony after I noticed it's missing from the
OMAP tree. My fault, I should've kept the driver up-to-date in both trees..
--Imre
> That's oddly similar to a glitch in omap-keyboard, where it keeps a
> timer active even when no Mistral key is pressed.
>
>
>> In general dyntick should work, and you should see about 4-6HZ idle
>> tick rate.
>
> Depending on drivers, it seems ... ;)
>
> I have a patch to get rid of the OHCI root hub polling, which will
> get rid of one 4Hz timer.
>
> - Dave
> _______________________________________________
> Linux-omap-open-source mailing list
> Linux-omap-open-source@linux.omap.com
> http://linux.omap.com/mailman/listinfo/linux-omap-open-source
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: is dynamic tick working?
2006-05-14 17:57 ` Imre Deak
@ 2006-05-14 19:20 ` David Brownell
2006-05-14 20:31 ` Imre Deak
0 siblings, 1 reply; 15+ messages in thread
From: David Brownell @ 2006-05-14 19:20 UTC (permalink / raw)
To: Imre Deak; +Cc: linux-omap-open-source
On Sunday 14 May 2006 10:57 am, Imre Deak wrote:
> The patch is already in the mainline
> tree, I've also sent it to Tony after I noticed it's missing from the
> OMAP tree. My fault, I should've kept the driver up-to-date in both trees..
Understandable, given how long it took to get those patches merged
upstream! Plus the fact that the version in the OMAP tree was working
around byteswap bugs on the Microwire SPI driver ... I'm not sure I'd
have expected Tony to resolve all the merge conflicts right unless he
were more involved in sorting out those issues.
So let's see. Other than those recent patches resolving those byteswap
bugs, and the hwmon features (not all merged upstream yet, sigh), are
there any reasons left for the OMAP version of that driver to differ from
the upstream one?
My understanding is that thanks (!) mostly to your updates, we're almost
ready to say OMAP can use the same version of ads7846 that's upstream,
and that the omap_uwire driver could also go upstream. And given an OSK
version of that new routine, that Mistral support could also go upstream.
Does that sound right?
- Dave
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: is dynamic tick working?
2006-05-14 19:20 ` David Brownell
@ 2006-05-14 20:31 ` Imre Deak
2006-05-15 9:22 ` Tony Lindgren
0 siblings, 1 reply; 15+ messages in thread
From: Imre Deak @ 2006-05-14 20:31 UTC (permalink / raw)
To: ext David Brownell; +Cc: linux-omap-open-source
ext David Brownell wrote:
> On Sunday 14 May 2006 10:57 am, Imre Deak wrote:
>> The patch is already in the mainline
>> tree, I've also sent it to Tony after I noticed it's missing from the
>> OMAP tree. My fault, I should've kept the driver up-to-date in both trees..
>
> Understandable, given how long it took to get those patches merged
> upstream! Plus the fact that the version in the OMAP tree was working
> around byteswap bugs on the Microwire SPI driver ... I'm not sure I'd
> have expected Tony to resolve all the merge conflicts right unless he
> were more involved in sorting out those issues.
Yep, to make it work I fixed the thing in the wrong place.
>
> So let's see. Other than those recent patches resolving those byteswap
> bugs, and the hwmon features (not all merged upstream yet, sigh), are
> there any reasons left for the OMAP version of that driver to differ from
> the upstream one?
No, they must be in sync now. Since the changes went to mainline and to
the OMAP tree through different changesets (b/c the above wrong fix et
al) and now the OMAP version is out of sync, I've sent a patchset to
Tony to bring it up-to-date.
>
> My understanding is that thanks (!) mostly to your updates, we're almost
> ready to say OMAP can use the same version of ads7846 that's upstream,
> and that the omap_uwire driver could also go upstream. And given an OSK
> version of that new routine, that Mistral support could also go upstream.
> Does that sound right?
Yes, the ads7846 and omap_uwire should be ok - and identical with
upstream after the above patches.
--Imre
>
> - Dave
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: is dynamic tick working?
2006-05-14 20:31 ` Imre Deak
@ 2006-05-15 9:22 ` Tony Lindgren
2006-05-15 22:11 ` David Brownell
0 siblings, 1 reply; 15+ messages in thread
From: Tony Lindgren @ 2006-05-15 9:22 UTC (permalink / raw)
To: Imre Deak; +Cc: linux-omap-open-source
* Imre Deak <imre.deak@nokia.com> [060514 13:31]:
> ext David Brownell wrote:
> >On Sunday 14 May 2006 10:57 am, Imre Deak wrote:
> >> The patch is already in the mainline
> >>tree, I've also sent it to Tony after I noticed it's missing from the
> >>OMAP tree. My fault, I should've kept the driver up-to-date in both
> >>trees..
> >
> >Understandable, given how long it took to get those patches merged
> >upstream! Plus the fact that the version in the OMAP tree was working
> >around byteswap bugs on the Microwire SPI driver ... I'm not sure I'd
> >have expected Tony to resolve all the merge conflicts right unless he
> >were more involved in sorting out those issues.
>
> Yep, to make it work I fixed the thing in the wrong place.
>
> >
> >So let's see. Other than those recent patches resolving those byteswap
> >bugs, and the hwmon features (not all merged upstream yet, sigh), are
> >there any reasons left for the OMAP version of that driver to differ from
> >the upstream one?
>
> No, they must be in sync now. Since the changes went to mainline and to
> the OMAP tree through different changesets (b/c the above wrong fix et
> al) and now the OMAP version is out of sync, I've sent a patchset to
> Tony to bring it up-to-date.
>
> >
> >My understanding is that thanks (!) mostly to your updates, we're almost
> >ready to say OMAP can use the same version of ads7846 that's upstream,
> >and that the omap_uwire driver could also go upstream. And given an OSK
> >version of that new routine, that Mistral support could also go upstream.
> >Does that sound right?
>
> Yes, the ads7846 and omap_uwire should be ok - and identical with
> upstream after the above patches.
OK, I've pushed Imre's patches. Can you check that everything got
patched OK?
Regards,
Tony
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: is dynamic tick working?
2006-05-14 16:19 ` David Brownell
2006-05-14 17:57 ` Imre Deak
@ 2006-05-15 9:26 ` Tony Lindgren
2006-05-15 17:33 ` Linux On TI Omap850 Vince
2006-05-16 13:32 ` is dynamic tick working? Imre Deak
1 sibling, 2 replies; 15+ messages in thread
From: Tony Lindgren @ 2006-05-15 9:26 UTC (permalink / raw)
To: David Brownell; +Cc: linux-omap-open-source
* David Brownell <david-b@pacbell.net> [060514 09:19]:
> On Sunday 14 May 2006 3:49 am, Tony Lindgren wrote:
>
> > In general dyntick should work, and you should see about 4-6HZ idle
> > tick rate.
>
> Depending on drivers, it seems ... ;)
>
> I have a patch to get rid of the OHCI root hub polling, which will
> get rid of one 4Hz timer.
Cool. Last time I played with sub 4Hz idle tick, some timers stopped
working properly... Might be different now though as the timer system
has seen some changes since last fall.
Tony
^ permalink raw reply [flat|nested] 15+ messages in thread
* Linux On TI Omap850
2006-05-15 9:26 ` Tony Lindgren
@ 2006-05-15 17:33 ` Vince
2006-05-16 6:52 ` Tony Lindgren
2006-05-16 13:32 ` is dynamic tick working? Imre Deak
1 sibling, 1 reply; 15+ messages in thread
From: Vince @ 2006-05-15 17:33 UTC (permalink / raw)
Cc: linux-omap-open-source
I would like to know if someone has information about running linux on
TI omap850 platform.
I have searched on google and I only found one or two posts regarding
this topic.
I would like to have maximum information on this processor.
Thanks
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: is dynamic tick working?
2006-05-15 9:22 ` Tony Lindgren
@ 2006-05-15 22:11 ` David Brownell
2006-05-16 6:59 ` Tony Lindgren
0 siblings, 1 reply; 15+ messages in thread
From: David Brownell @ 2006-05-15 22:11 UTC (permalink / raw)
To: Tony Lindgren; +Cc: linux-omap-open-source
[-- Attachment #1: Type: text/plain, Size: 792 bytes --]
On Monday 15 May 2006 2:22 am, Tony Lindgren wrote:
>
> OK, I've pushed Imre's patches. Can you check that everything got
> patched OK?
I attach three patches:
- To make Mistral work better needs new callback), which worked for
me (modulo writing the "disable" file wedging, gotta retest that);
- A quickie bitbang SPI adapter for the 1510-Innovator FPGA hookup to ads7846,
untested beyond compiling (no Innovator here!);
- Removing the old OMAP-specific Mistral and Innovator touchscreen drivers;
this may be a trifle premature given the lack of Innovator testing
Anyway, with the first of these patches I saw tick rates of about 27 Hz;
the issue seems to be the omap_ts driver keeping a timer active (among
other misbehaviors).
In short: yes, it's better now.
- Dave
[-- Attachment #2: ads.patch --]
[-- Type: text/x-diff, Size: 980 bytes --]
Syncing the ads7846 code with mainstream means that the Mistral support
needs to include a callback to read the pendown state.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Index: osk/arch/arm/mach-omap1/board-osk.c
===================================================================
--- osk.orig/arch/arm/mach-omap1/board-osk.c 2006-05-03 08:03:40.000000000 -0700
+++ osk/arch/arm/mach-omap1/board-osk.c 2006-05-15 12:44:27.000000000 -0700
@@ -299,12 +299,17 @@ static struct platform_device *mistral_d
&osk5912_lcd_device,
};
+static int mistral_get_pendown_state(void)
+{
+ return !omap_get_gpio_datain(4);
+}
+
static const struct ads7846_platform_data mistral_ts_info = {
.model = 7846,
.vref_delay_usecs = 100, /* internal, no capacitor */
.x_plate_ohms = 419,
.y_plate_ohms = 486,
- // .{x,y,pressure}_{min,max}
+ .get_pendown_state = mistral_get_pendown_state,
};
static struct spi_board_info __initdata mistral_boardinfo[] = { {
[-- Attachment #3: spi-inn1510.patch --]
[-- Type: text/x-diff, Size: 8841 bytes --]
Add bitbang SPI driver for Innovator 1510 touchscreen, using the new
framework. Compile-tested only.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Index: osk/arch/arm/mach-omap1/board-innovator.c
===================================================================
--- osk.orig/arch/arm/mach-omap1/board-innovator.c 2006-05-15 12:46:56.000000000 -0700
+++ osk/arch/arm/mach-omap1/board-innovator.c 2006-05-15 12:46:59.000000000 -0700
@@ -139,6 +139,10 @@ static struct platform_device innovator_
#ifdef CONFIG_ARCH_OMAP15XX
+#include <linux/spi/spi.h>
+#include <linux/spi/ads7846.h>
+
+
/* Only FPGA needs to be mapped here. All others are done with ioremap */
static struct map_desc innovator1510_io_desc[] __initdata = {
{
@@ -174,13 +178,44 @@ static struct platform_device innovator1
.id = -1,
};
+static struct platform_device innovator1510_spi_device = {
+ .name = "spi_inn1510",
+ .id = -1,
+};
+
static struct platform_device *innovator1510_devices[] __initdata = {
&innovator_flash_device,
&innovator1510_smc91x_device,
&innovator_kp_device,
&innovator1510_lcd_device,
+ &innovator1510_spi_device,
};
+static int innovator_get_pendown_state(void)
+{
+ return !(fpga_read(OMAP1510_FPGA_TOUCHSCREEN) & (1 << 5));
+}
+
+static const struct ads7846_platform_data innovator1510_ts_info = {
+ .model = 7846,
+ .vref_delay_usecs = 100, /* internal, no capacitor */
+ .x_plate_ohms = 419,
+ .y_plate_ohms = 486,
+ .get_pendown_state = innovator_get_pendown_state,
+};
+
+static struct spi_board_info __initdata innovator1510_boardinfo[] = { {
+ /* FPGA (bus "10") CS0 has an ads7846e */
+ .modalias = "ads7846",
+ .platform_data = &innovator1510_ts_info,
+ .irq = OMAP1510_INT_FPGA_TS,
+ .max_speed_hz = 120000 /* max sample rate at 3V */
+ * 26 /* command + data + overhead */,
+ .bus_num = 10,
+ .chip_select = 0,
+} };
+
+
#endif /* CONFIG_ARCH_OMAP15XX */
#ifdef CONFIG_ARCH_OMAP16XX
@@ -311,6 +346,8 @@ static void __init innovator_init(void)
#ifdef CONFIG_ARCH_OMAP15XX
if (cpu_is_omap1510()) {
platform_add_devices(innovator1510_devices, ARRAY_SIZE(innovator1510_devices));
+ spi_register_board_info(innovator1510_boardinfo,
+ ARRAY_SIZE(innovator1510_boardinfo));
}
#endif
#ifdef CONFIG_ARCH_OMAP16XX
Index: osk/drivers/spi/Kconfig
===================================================================
--- osk.orig/drivers/spi/Kconfig 2006-05-15 12:46:56.000000000 -0700
+++ osk/drivers/spi/Kconfig 2006-05-15 12:46:59.000000000 -0700
@@ -85,6 +85,13 @@ config SPI_BUTTERFLY
inexpensive battery powered microcontroller evaluation board.
This same cable can be used to flash new firmware.
+config SPI_OMAP_INN1510
+ tristate "OMAP Innovator 1510 Bitbang SPI, for touchscreen"
+ depends on SPI_MASTER && MACH_OMAP_INNOVATOR
+ select SPI_BITBANG
+ help
+ This provides bitbang access to the Innovator touchscreen.
+
config SPI_OMAP_UWIRE
tristate "OMAP MicroWire"
depends on SPI_MASTER && ARCH_OMAP
Index: osk/drivers/spi/Makefile
===================================================================
--- osk.orig/drivers/spi/Makefile 2006-05-15 12:46:56.000000000 -0700
+++ osk/drivers/spi/Makefile 2006-05-15 12:46:59.000000000 -0700
@@ -14,6 +14,7 @@ obj-$(CONFIG_SPI_MASTER) += spi.o
obj-$(CONFIG_SPI_BITBANG) += spi_bitbang.o
obj-$(CONFIG_SPI_BUTTERFLY) += spi_butterfly.o
obj-$(CONFIG_SPI_OMAP24XX) += omap2_mcspi.o
+obj-$(CONFIG_SPI_OMAP_INN1510) += spi_inn1510.o
obj-$(CONFIG_SPI_OMAP_UWIRE) += omap_uwire.o
# ... add above this line ...
Index: osk/drivers/spi/spi_inn1510.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ osk/drivers/spi/spi_inn1510.c 2006-05-15 12:46:59.000000000 -0700
@@ -0,0 +1,194 @@
+/*
+ * spi_inn1510.c - spi support for OMAP1510 touchscreen
+ *
+ * Copyright (C) 2006 David Brownell (convert to cross-platform SPI framework)
+ * Copyright (C) 2002 MontaVista Software Inc. (FPGA glue)
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+#include <linux/config.h>
+#include <linux/kernel.h>
+#include <linux/init.h>
+#include <linux/delay.h>
+#include <linux/platform_device.h>
+
+#include <linux/spi/spi.h>
+#include <linux/spi/spi_bitbang.h>
+
+#include <asm/mach-types.h>
+#include <asm/io.h>
+
+#include <asm/arch/fpga.h>
+#include <asm/arch/board.h>
+
+
+struct inn1510_spi {
+ struct spi_bitbang bitbang;
+ struct platform_device *pdev;
+};
+
+/* Touchscreen hardware on the Innovator involves an FPGA register
+ * that's bit-banged to generate SPI transactions to an ads7846.
+ */
+#define FPGA_TS_BCLK (1<<0)
+#define FPGA_TS_BDIN (1<<1)
+#define FPGA_TS_BCS (1<<2)
+#define FPGA_TS_BBUSY (1<<3) /* we don't use this */
+#define FPGA_TS_BOUT (1<<4)
+// #define FPGA_TS_BPENUP (1<<5)
+
+// #define X_PLATE_OHMS 419
+// #define Y_PLATE_OHMS 486
+
+
+static inline u8 fpga_ts_read(void)
+{
+ return fpga_read(OMAP1510_FPGA_TOUCHSCREEN);
+}
+
+static inline void fpga_ts_write(u8 val)
+{
+ fpga_write(val, OMAP1510_FPGA_TOUCHSCREEN);
+}
+
+static inline void fpga_ts_set_bits(u8 mask)
+{
+ fpga_ts_write(fpga_ts_read() | mask);
+}
+
+static inline void fpga_ts_clear_bits(u8 mask)
+{
+ fpga_ts_write(fpga_ts_read() & ~mask);
+}
+
+/*----------------------------------------------------------------------*/
+
+static void inn1510_spi_chipselect(struct spi_device *spi, int is_on)
+{
+ if (is_on) {
+ fpga_ts_clear_bits(FPGA_TS_BCLK);
+ fpga_ts_clear_bits(FPGA_TS_BCS);
+ } else {
+ fpga_ts_set_bits(FPGA_TS_BCS);
+ }
+}
+
+static inline void setsck(struct spi_device *spi, int is_on)
+{
+ if (is_on)
+ fpga_ts_set_bits(FPGA_TS_BCLK);
+ else
+ fpga_ts_clear_bits(FPGA_TS_BCLK);
+}
+
+static inline void setmosi(struct spi_device *spi, int is_on)
+{
+ if (is_on)
+ fpga_ts_set_bits(FPGA_TS_BDIN);
+ else
+ fpga_ts_clear_bits(FPGA_TS_BDIN);
+}
+
+static inline int getmiso(struct spi_device *spi)
+{
+ return ((fpga_ts_read() & FPGA_TS_BOUT) ? 1 : 0) ;
+}
+
+
+#define spidelay(X) ndelay(X)
+
+#define EXPAND_BITBANG_TXRX
+#include <linux/spi/spi_bitbang.h>
+
+static u32
+inn1510_spi_txrx_word_mode0(struct spi_device *spi,
+ unsigned nsecs,
+ u32 word, u8 bits)
+{
+ return bitbang_txrx_be_cpha0(spi, nsecs, 0, word, 8);
+}
+
+/*----------------------------------------------------------------------*/
+
+static int __init inn1510_spi_probe(struct platform_device *pdev)
+{
+ int status;
+ struct spi_master *master;
+ struct inn1510_spi *inn1510_spi;
+
+ master = spi_alloc_master(&pdev->dev, sizeof *inn1510_spi);
+ if (!master)
+ return -ENOMEM;
+ inn1510_spi = spi_master_get_devdata(master);
+ inn1510_spi->pdev = pdev;
+ platform_set_drvdata(pdev, inn1510_spi);
+
+ /* SPI and bitbang hookup */
+ master->bus_num = 10;
+ master->num_chipselect = 1;
+
+ inn1510_spi->bitbang.master = spi_master_get(master);
+ inn1510_spi->bitbang.chipselect = inn1510_spi_chipselect;
+ inn1510_spi->bitbang.txrx_word[SPI_MODE_0] = inn1510_spi_txrx_word_mode0;
+
+ status = spi_bitbang_start(&inn1510_spi->bitbang);
+ if (status < 0)
+ (void) spi_master_put(inn1510_spi->bitbang.master);
+
+ return status;
+}
+
+static int __exit inn1510_spi_remove(struct platform_device *pdev)
+{
+ int status;
+ struct inn1510_spi *inn1510_spi = platform_get_drvdata(pdev);
+
+ /* stop() unregisters child devices too */
+ status = spi_bitbang_stop(&inn1510_spi->bitbang);
+ (void) spi_master_put(inn1510_spi->bitbang.master);
+ platform_set_drvdata(pdev, NULL);
+ return status;
+}
+
+
+struct platform_driver inn1510_spi_driver = {
+ .driver = {
+ .name = "inn1510_spi",
+ .owner = THIS_MODULE,
+ },
+ .probe = inn1510_spi_probe,
+ .remove = __exit_p(inn1510_spi_remove),
+};
+
+
+static int __init inn1510_spi_init(void)
+{
+ if (!machine_is_omap_innovator())
+ return -ENODEV;
+
+ /* register driver */
+ return platform_driver_register(&inn1510_spi_driver);
+}
+device_initcall(inn1510_spi_init);
+
+static void __exit inn1510_spi_exit(void)
+{
+ platform_driver_unregister(&inn1510_spi_driver);
+}
+module_exit(inn1510_spi_exit);
+
+MODULE_DESCRIPTION("Innovator 1510 FPGA SPI (for touchscreen)");
+MODULE_LICENSE("GPL");
+
[-- Attachment #4: ts.patch --]
[-- Type: text/x-diff, Size: 15240 bytes --]
Remove OSK/Mistral and Innovator support for the old OMAP-specfic
touchscreen framework; both of those board should be able to use
the new SPI framework with the ads7846 touchscreen driver that's
now in the upstream kernels.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Index: osk/drivers/input/touchscreen/Kconfig
===================================================================
--- osk.orig/drivers/input/touchscreen/Kconfig 2006-05-03 08:03:40.000000000 -0700
+++ osk/drivers/input/touchscreen/Kconfig 2006-05-15 14:57:27.000000000 -0700
@@ -114,13 +114,13 @@ config TOUCHSCREEN_HP600
endif
config TOUCHSCREEN_OMAP
tristate "OMAP touchscreen input driver"
- depends on INPUT && INPUT_TOUCHSCREEN && ARCH_OMAP
+ depends on INPUT && INPUT_TOUCHSCREEN && (MACH_OMAP_H2 || MACH_OMAP_H3)
help
Say Y here if you have an OMAP based board with touchscreen
- attached to it, e.g. OMAP Innovator, OSK, H2 or H3
+ attached to it, e.g. OMAP H2 or H3
If unsure, or you're using drivers in the newer SPI
- framework, say N.
+ framework (as with Innovator or OSK/Mistral), say N.
To compile this driver as a module, choose M here: the
module will be called omap_ts.
Index: osk/drivers/input/touchscreen/omap/Makefile
===================================================================
--- osk.orig/drivers/input/touchscreen/omap/Makefile 2005-09-21 12:54:14.000000000 -0700
+++ osk/drivers/input/touchscreen/omap/Makefile 2006-05-15 14:54:39.000000000 -0700
@@ -6,7 +6,5 @@ obj-$(CONFIG_TOUCHSCREEN_OMAP) += omapts
objs-$(CONFIG_ARCH_OMAP16XX)$(CONFIG_MACH_OMAP_H2) += ts_hx.o
objs-$(CONFIG_ARCH_OMAP16XX)$(CONFIG_MACH_OMAP_H3) += ts_hx.o
-objs-$(CONFIG_ARCH_OMAP15XX)$(CONFIG_MACH_OMAP_INNOVATOR) += ts_inn1510.o
-objs-$(CONFIG_ARCH_OMAP16XX)$(CONFIG_MACH_OMAP_OSK) += ts_osk.o
omapts-objs := omap_ts.o $(objs-yy)
Index: osk/drivers/input/touchscreen/omap/omap_ts.c
===================================================================
--- osk.orig/drivers/input/touchscreen/omap/omap_ts.c 2006-04-22 14:41:05.000000000 -0700
+++ osk/drivers/input/touchscreen/omap/omap_ts.c 2006-05-15 14:56:39.000000000 -0700
@@ -49,12 +49,6 @@ static struct ts_device *__initdata ts_d
#if defined(CONFIG_MACH_OMAP_H2) || defined(CONFIG_MACH_OMAP_H3)
&hx_ts,
#endif
-#ifdef CONFIG_MACH_OMAP_OSK
- &osk_ts,
-#endif
-#if defined(CONFIG_MACH_OMAP_INNOVATOR) && defined(CONFIG_ARCH_OMAP15XX)
- &innovator1510_ts,
-#endif
};
static struct omap_ts_t ts_omap;
@@ -245,6 +239,9 @@ static int __init omap_ts_init(void)
{
int ret;
+ if (machine_is_omap_osk() || machine_is_omap_innovator())
+ return -ENODEV;
+
ret = platform_device_register(&omap_ts_device);
if (ret != 0)
return -ENODEV;
Index: osk/drivers/input/touchscreen/omap/omap_ts.h
===================================================================
--- osk.orig/drivers/input/touchscreen/omap/omap_ts.h 2006-04-22 14:41:05.000000000 -0700
+++ osk/drivers/input/touchscreen/omap/omap_ts.h 2006-05-15 15:00:23.000000000 -0700
@@ -53,7 +53,5 @@ struct omap_ts_t{
};
extern struct ts_device hx_ts;
-extern struct ts_device osk_ts;
-extern struct ts_device innovator1510_ts;
#endif /* __OMAP_TS_H */
Index: osk/drivers/input/touchscreen/omap/ts_osk.c
===================================================================
--- osk.orig/drivers/input/touchscreen/omap/ts_osk.c 2006-04-22 14:41:05.000000000 -0700
+++ /dev/null 1970-01-01 00:00:00.000000000 +0000
@@ -1,158 +0,0 @@
-/*
- * ts_osk.c - touchscreen support for OMAP OSK board
- *
- * Copyright 2002 MontaVista Software Inc.
- * Author: MontaVista Software, Inc.
- * stevel@mvista.com or source@mvista.com
- *
- * The touchscreen hardware on the OSK uses OMAP5912 uWire interface,
- * GPIO4 (/PENIRQ) and GPIO6 (BUSY) to connect to an ADS7846
- * touch screen controller. GPIO6 doesn't seem to be necessary here.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#include <linux/input.h>
-#include <linux/device.h>
-#include <asm/arch/mux.h>
-#include <asm/arch/gpio.h>
-#include <asm/mach-types.h>
-
-#include "../drivers/ssi/omap-uwire.h"
-
-#include "omap_ts.h"
-#include "ads7846.h"
-
-// /PENIRQ on GPIO4 on OSK
-#define PEN_IRQ OMAP_GPIO_IRQ(4)
-
-// ADS7846 is on OSK uWire CS 0
-#define ADS7846_UWIRE_CS 0
-#define UWIRE_LEAVE_CS 1
-
-#define X_PLATE_OHMS 419
-#define Y_PLATE_OHMS 486
-
-static int osk_ts_penup(void);
-static int osk_ts_probe(struct omap_ts_t *ts);
-static void osk_ts_read(u16 * data);
-static void osk_ts_enable(void);
-static void osk_ts_disable(void);
-#ifdef MODULE
-static void osk_ts_remove(void);
-#endif
-
-struct ts_device osk_ts = {
- .probe = osk_ts_probe,
- .read = osk_ts_read,
- .enable = osk_ts_enable,
- .disable = osk_ts_disable,
- .remove = __exit_p(osk_ts_remove),
- .penup = osk_ts_penup,
-};
-
-static u16 ads7846_do(u8 cmd)
-{
- u16 val = 0;
-
- // send the command to the ADS7846, leave CS active after this
- omap_uwire_data_transfer(ADS7846_UWIRE_CS, cmd, 8, 0, NULL, UWIRE_LEAVE_CS);
-
- // now read returned data
- omap_uwire_data_transfer(ADS7846_UWIRE_CS, 0, 0, 16, &val, !UWIRE_LEAVE_CS);
-
- return val;
-}
-
-static int osk_ts_penup(void)
-{
- return (omap_get_gpio_datain(4));
-}
-
-static int __init osk_ts_probe(struct omap_ts_t *ts)
-{
-#ifdef CONFIG_OMAP_OSK_MISTRAL
- if (!machine_is_omap_osk())
- return -ENODEV;
-
- /* Configure GPIO4 (pin M17 ZDY) as /PENIRQ interrupt input */
- omap_cfg_reg(P20_1610_GPIO4);
- omap_request_gpio(4);
- omap_set_gpio_direction(4, 1);
- ts->irq_type = SA_TRIGGER_FALLING;
-
- ts->irq = PEN_IRQ;
-
- /* Configure uWire interface. ADS7846 is on CS0 */
- omap_uwire_configure_mode(ADS7846_UWIRE_CS, UWIRE_READ_RISING_EDGE |
- UWIRE_WRITE_RISING_EDGE |
- UWIRE_CS_ACTIVE_LOW |
- UWIRE_FREQ_DIV_2);
-
- /* FIXME verify there's really a Mistral board:
- * see if the AD7846 chip responds.
- */
-
- /* NOTE: no VREF; must ignore the temp, VBAT, and AUX sensors */
- return 0;
-#else
- return -ENODEV;
-#endif
-}
-
-static void osk_ts_read(u16 *data)
-{
- unsigned int Rt = 0;
-
- data[0] = ads7846_do(MEASURE_12BIT_X);
- data[1] = ads7846_do(MEASURE_12BIT_Y);
- data[2] = ads7846_do(MEASURE_12BIT_Z1);
- data[3] = ads7846_do(MEASURE_12BIT_Z2);
-
- // Calculate touch pressure resistance
- if (data[2]) {
- Rt = (X_PLATE_OHMS * (u32)data[0] *
- ((u32)data[3] - (u32)data[2])) / (u32)data[2];
-
- Rt = (Rt + 2048) >> 12; // round up to nearest ohm
- }
-
- /*
- * Raw OSK touchscreen data values are between ~4000 and
- * ~60000. This seems to be to large for calibration
- * systems (e.g. tslib). Make the values smaller.
- */
- data[0] = data[0] >> 4;
- data[1] = data[1] >> 4;
-
- data[2] = Rt;
-}
-
-static void osk_ts_enable(void)
-{
-
-}
-
-static void osk_ts_disable(void)
-{
-
-}
-
-#ifdef MODULE
-static void __exit osk_ts_remove(void)
-{
- omap_free_gpio(4);
-}
-#endif
Index: osk/drivers/input/touchscreen/omap/ts_inn1510.c
===================================================================
--- osk.orig/drivers/input/touchscreen/omap/ts_inn1510.c 2006-04-22 14:41:05.000000000 -0700
+++ /dev/null 1970-01-01 00:00:00.000000000 +0000
@@ -1,219 +0,0 @@
-/*
- * ts_inn1510.c - touchscreen support for OMAP1510 Innovator board
- *
- * Copyright 2002 MontaVista Software Inc.
- * Author: MontaVista Software, Inc.
- * stevel@mvista.com or source@mvista.com
- *
- * The touchscreen hardware on the Innovator consists of an FPGA
- * register which is bit-banged to generate SPI-like transactions
- * to an ADS7846 touch screen controller.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#include <linux/input.h>
-#include <linux/device.h>
-#include <asm/io.h>
-#include <asm/mach-types.h>
-#include <asm/arch/fpga.h>
-
-#include "omap_ts.h"
-#include "ads7846.h"
-
-// The Touch Screen Register on Innovator FPGA
-#define FPGA_TS_BCLK (1<<0)
-#define FPGA_TS_BDIN (1<<1)
-#define FPGA_TS_BCS (1<<2)
-#define FPGA_TS_BBUSY (1<<3)
-#define FPGA_TS_BOUT (1<<4)
-#define FPGA_TS_BPENUP (1<<5)
-
-#define X_PLATE_OHMS 419
-#define Y_PLATE_OHMS 486
-
-static int inn1510_ts_penup(void);
-static int inn1510_ts_probe(struct omap_ts_t *ts);
-static void inn1510_ts_read(u16 * data);
-static void inn1510_ts_enable(void);
-static void inn1510_ts_disable(void);
-#ifdef MODULE
-static void inn1510_ts_remove(void);
-#endif
-
-struct ts_device innovator1510_ts = {
- .probe = inn1510_ts_probe,
- .read = inn1510_ts_read,
- .enable = inn1510_ts_enable,
- .disable = inn1510_ts_disable,
- .remove = __exit_p(inn1510_ts_remove),
- .penup = inn1510_ts_penup,
-};
-
-static inline u8 fpga_ts_read(void)
-{
- return fpga_read(OMAP1510_FPGA_TOUCHSCREEN);
-}
-
-static inline void fpga_ts_write(u8 val)
-{
- fpga_write(val, OMAP1510_FPGA_TOUCHSCREEN);
-}
-
-static inline void fpga_ts_set_bits(u8 mask)
-{
- fpga_ts_write(fpga_ts_read() | mask);
-}
-
-static inline void fpga_ts_clear_bits(u8 mask)
-{
- fpga_ts_write(fpga_ts_read() & ~mask);
-}
-
-static inline void CS_H(void)
-{
- // EPLD inverts active low signals.
- fpga_ts_clear_bits(FPGA_TS_BCS);
-}
-
-static inline void CS_L(void)
-{
- fpga_ts_set_bits(FPGA_TS_BCS);
-}
-
-static inline void SCLK_L(void)
-{
- fpga_ts_clear_bits(FPGA_TS_BCLK);
-}
-
-static inline void SCLK_H(void)
-{
- fpga_ts_set_bits(FPGA_TS_BCLK);
-}
-
-static inline void SDI_L(void)
-{
- fpga_ts_clear_bits(FPGA_TS_BDIN);
-}
-
-static inline void SDI_H(void)
-{
- fpga_ts_set_bits(FPGA_TS_BDIN);
-}
-
-static inline int BUSY(void)
-{
- return (((fpga_ts_read() & FPGA_TS_BBUSY) == 0) ? 1 : 0) ;
-}
-
-static inline u8 DOUT(void)
-{
- return ((fpga_ts_read() & FPGA_TS_BOUT) ? 1 : 0) ;
-}
-
-static u16 ads7846_do(u8 cmd)
-{
- int i;
- u16 val=0;
-
- SCLK_L() ;
- SDI_L();
- CS_L() ; // enable the chip select
-
- // send the command to the ADS7846
- for (i=0; i<8; i++ ) {
- if (cmd & 0x80)
- SDI_H();
- else
- SDI_L(); // prepare the data on line sdi OR din
-
- SCLK_H() ; // clk in the data
- cmd <<= 1 ;
- SCLK_L() ;
- }
-
- SDI_L();
- while (BUSY())
- ;
-
- // now read returned data
- for (i=0 ; i<16 ; i++ ) {
- SCLK_L() ;
-
- if (i < 12) {
- val <<= 1 ;
- val |= DOUT();
- }
- SCLK_H() ;
- }
-
- SCLK_L() ;
- CS_H() ; // disable the chip select
-
- return val;
-}
-
-static int inn1510_ts_penup(void)
-{
- return ((fpga_ts_read() & FPGA_TS_BPENUP) ? 0 : 1) ;
-}
-
-static int __init inn1510_ts_probe(struct omap_ts_t *ts)
-{
- if (!cpu_is_omap15xx() || !machine_is_omap_innovator())
- return -ENODEV;
-
- ts->irq = OMAP1510_INT_FPGA_TS;
- ts->irq_type = 0;
-
- return 0;
-}
-
-static void inn1510_ts_read(u16 *data)
-{
- unsigned int Rt = 0;
-
- data[0] = ads7846_do(MEASURE_12BIT_X);
- data[1] = ads7846_do(MEASURE_12BIT_Y);
- data[2] = ads7846_do(MEASURE_12BIT_Z1);
- data[3] = ads7846_do(MEASURE_12BIT_Z2);
-
- // Calculate touch pressure resistance
- if (data[2]) {
- Rt = (X_PLATE_OHMS * (u32)data[0] *
- ((u32)data[3] - (u32)data[2])) / (u32)data[2];
-
- Rt = (Rt + 2048) >> 12; // round up to nearest ohm
- }
-
- data[2] = Rt;
-}
-
-static void inn1510_ts_enable(void)
-{
-
-}
-
-static void inn1510_ts_disable(void)
-{
-
-}
-
-#ifdef MODULE
-static void __exit inn1510_ts_remove(void)
-{
- /* Nothing to do here */
-}
-#endif
Index: osk/drivers/input/touchscreen/omap/ads7846.h
===================================================================
--- osk.orig/drivers/input/touchscreen/omap/ads7846.h 2005-09-21 12:54:14.000000000 -0700
+++ /dev/null 1970-01-01 00:00:00.000000000 +0000
@@ -1,53 +0,0 @@
-/*
- * ads7846.h - header file for ADS7846 touchscreen controller
- *
- * Copyright 2002 MontaVista Software Inc.
- * Author: MontaVista Software, Inc.
- * stevel@mvista.com or source@mvista.com
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#ifndef __ADS7846_H
-#define __ADS7846_H
-
-// ADS7846 Control Byte bit defines
-#define ADS7846_S (1<<7)
-#define ADS7846_ADDR_BIT 4
-#define ADS7846_ADDR_MASK (0x7<<ADS7846_ADDR_BIT)
-#define ADS7846_MEASURE_X (0x5<<ADS7846_ADDR_BIT)
-#define ADS7846_MEASURE_Y (0x1<<ADS7846_ADDR_BIT)
-#define ADS7846_MEASURE_Z1 (0x3<<ADS7846_ADDR_BIT)
-#define ADS7846_MEASURE_Z2 (0x4<<ADS7846_ADDR_BIT)
-#define ADS7846_8BITS (1<<3)
-#define ADS7846_12BITS 0
-#define ADS7846_SER (1<<2)
-#define ADS7846_DFR 0
-#define ADS7846_PWR_BIT 0
-#define ADS7846_PD 0
-#define ADS7846_ADC_ON (0x1<<ADS7846_PWR_BIT)
-#define ADS7846_REF_ON (0x2<<ADS7846_PWR_BIT)
-#define ADS7846_REF_ADC_ON (0x3<<ADS7846_PWR_BIT)
-
-#define MEASURE_12BIT_X \
- (ADS7846_S | ADS7846_MEASURE_X | ADS7846_12BITS | ADS7846_DFR | ADS7846_PD)
-#define MEASURE_12BIT_Y \
- (ADS7846_S | ADS7846_MEASURE_Y | ADS7846_12BITS | ADS7846_DFR | ADS7846_PD)
-#define MEASURE_12BIT_Z1 \
- (ADS7846_S | ADS7846_MEASURE_Z1 | ADS7846_12BITS | ADS7846_DFR | ADS7846_PD)
-#define MEASURE_12BIT_Z2 \
- (ADS7846_S | ADS7846_MEASURE_Z2 | ADS7846_12BITS | ADS7846_DFR | ADS7846_PD)
-
-#endif /* __ADS7846_H */
[-- Attachment #5: Type: text/plain, Size: 0 bytes --]
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: Linux On TI Omap850
2006-05-15 17:33 ` Linux On TI Omap850 Vince
@ 2006-05-16 6:52 ` Tony Lindgren
2006-05-16 14:11 ` Brian Swetland
0 siblings, 1 reply; 15+ messages in thread
From: Tony Lindgren @ 2006-05-16 6:52 UTC (permalink / raw)
To: Vince; +Cc: linux-omap-open-source
* Vince <v.richomme@hotmail.fr> [060515 10:32]:
> I would like to know if someone has information about running linux on
> TI omap850 platform.
> I have searched on google and I only found one or two posts regarding
> this topic.
> I would like to have maximum information on this processor.
Try going to linux.omap.com, go to the mailing lists. Then select April
2006 archives by thread. There you see all the current 850 fsample
patches. We integrated the core 850 fsample support patch yesterday, so
the device driver patches are still missing.
Regards,
Tony
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: is dynamic tick working?
2006-05-15 22:11 ` David Brownell
@ 2006-05-16 6:59 ` Tony Lindgren
2006-05-26 23:44 ` Tony Lindgren
0 siblings, 1 reply; 15+ messages in thread
From: Tony Lindgren @ 2006-05-16 6:59 UTC (permalink / raw)
To: David Brownell; +Cc: linux-omap-open-source
* David Brownell <david-b@pacbell.net> [060515 15:11]:
> On Monday 15 May 2006 2:22 am, Tony Lindgren wrote:
> >
> > OK, I've pushed Imre's patches. Can you check that everything got
> > patched OK?
>
> I attach three patches:
>
> - To make Mistral work better needs new callback), which worked for
> me (modulo writing the "disable" file wedging, gotta retest that);
I'll push this patch today.
> - A quickie bitbang SPI adapter for the 1510-Innovator FPGA hookup to ads7846,
> untested beyond compiling (no Innovator here!);
>
> - Removing the old OMAP-specific Mistral and Innovator touchscreen drivers;
> this may be a trifle premature given the lack of Innovator testing
Let's try these patches out before pushing. Can somebody with an
Innovator test these patches?
> Anyway, with the first of these patches I saw tick rates of about 27 Hz;
> the issue seems to be the omap_ts driver keeping a timer active (among
> other misbehaviors).
>
> In short: yes, it's better now.
AFAIK omap_ts should only need a timer when pen is down.
Tony
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: is dynamic tick working?
2006-05-15 9:26 ` Tony Lindgren
2006-05-15 17:33 ` Linux On TI Omap850 Vince
@ 2006-05-16 13:32 ` Imre Deak
1 sibling, 0 replies; 15+ messages in thread
From: Imre Deak @ 2006-05-16 13:32 UTC (permalink / raw)
To: ext Tony Lindgren; +Cc: linux-omap-open-source
On Mon, 2006-05-15 at 02:26 -0700, ext Tony Lindgren wrote:
> * David Brownell <david-b@pacbell.net> [060514 09:19]:
> > On Sunday 14 May 2006 3:49 am, Tony Lindgren wrote:
> >
> > > In general dyntick should work, and you should see about 4-6HZ idle
> > > tick rate.
> >
> > Depending on drivers, it seems ... ;)
> >
> > I have a patch to get rid of the OHCI root hub polling, which will
> > get rid of one 4Hz timer.
>
> Cool. Last time I played with sub 4Hz idle tick, some timers stopped
> working properly... Might be different now though as the timer system
> has seen some changes since last fall.
On N770 I've found that the omap_udc is pushing up the tick-rate as well
by HZ/3. It is a workaround to account for lost RX interrupts.
--Imre
>
> Tony
> _______________________________________________
> Linux-omap-open-source mailing list
> Linux-omap-open-source@linux.omap.com
> http://linux.omap.com/mailman/listinfo/linux-omap-open-source
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: Linux On TI Omap850
2006-05-16 6:52 ` Tony Lindgren
@ 2006-05-16 14:11 ` Brian Swetland
0 siblings, 0 replies; 15+ messages in thread
From: Brian Swetland @ 2006-05-16 14:11 UTC (permalink / raw)
To: Tony Lindgren; +Cc: linux-omap-open-source
[Tony Lindgren <tony@atomide.com>]
> * Vince <v.richomme@hotmail.fr> [060515 10:32]:
> > I would like to know if someone has information about running linux on
> > TI omap850 platform.
> > I have searched on google and I only found one or two posts regarding
> > this topic.
> > I would like to have maximum information on this processor.
>
> Try going to linux.omap.com, go to the mailing lists. Then select April
> 2006 archives by thread. There you see all the current 850 fsample
> patches. We integrated the core 850 fsample support patch yesterday, so
> the device driver patches are still missing.
Speaking of the device driver patches, I still need to figure out how
to have lcd_p2.c included for perseus2 or fsample, but not twice if you
build a kernel for both...
obviously, something like this in drivers/video/Makefile is wrong:
objs-y$(CONFIG_MACH_OMAP_PERSEUS2) += lcd_p2.o
objs-y$(CONFIG_MACH_OMAP_FSAMPLE) += lcd_p2.o
Is the solution to have a CONFIG_FB_OMAP_LCD_P2?
Brian, unwise in the ways of kconfig
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: is dynamic tick working?
2006-05-16 6:59 ` Tony Lindgren
@ 2006-05-26 23:44 ` Tony Lindgren
0 siblings, 0 replies; 15+ messages in thread
From: Tony Lindgren @ 2006-05-26 23:44 UTC (permalink / raw)
To: David Brownell; +Cc: linux-omap-open-source
* Tony Lindgren <tony@atomide.com> [060517 13:59]:
> * David Brownell <david-b@pacbell.net> [060515 15:11]:
> > On Monday 15 May 2006 2:22 am, Tony Lindgren wrote:
> > >
> > > OK, I've pushed Imre's patches. Can you check that everything got
> > > patched OK?
> >
> > I attach three patches:
> >
> > - To make Mistral work better needs new callback), which worked for
> > me (modulo writing the "disable" file wedging, gotta retest that);
>
> I'll push this patch today.
>
> > - A quickie bitbang SPI adapter for the 1510-Innovator FPGA hookup to ads7846,
> > untested beyond compiling (no Innovator here!);
> >
> > - Removing the old OMAP-specific Mistral and Innovator touchscreen drivers;
> > this may be a trifle premature given the lack of Innovator testing
>
> Let's try these patches out before pushing. Can somebody with an
> Innovator test these patches?
Pushed the Innovator patches too, nobody complained in time :)
Tony
^ permalink raw reply [flat|nested] 15+ messages in thread
end of thread, other threads:[~2006-05-26 23:44 UTC | newest]
Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-05-13 2:05 is dynamic tick working? David Brownell
2006-05-14 10:49 ` Tony Lindgren
2006-05-14 16:19 ` David Brownell
2006-05-14 17:57 ` Imre Deak
2006-05-14 19:20 ` David Brownell
2006-05-14 20:31 ` Imre Deak
2006-05-15 9:22 ` Tony Lindgren
2006-05-15 22:11 ` David Brownell
2006-05-16 6:59 ` Tony Lindgren
2006-05-26 23:44 ` Tony Lindgren
2006-05-15 9:26 ` Tony Lindgren
2006-05-15 17:33 ` Linux On TI Omap850 Vince
2006-05-16 6:52 ` Tony Lindgren
2006-05-16 14:11 ` Brian Swetland
2006-05-16 13:32 ` is dynamic tick working? Imre Deak
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox