armadeus-commitlog Mailing List for armadeus (Page 109)
Brought to you by:
sszy
You can subscribe to this list here.
| 2006 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(1) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2007 |
Jan
(43) |
Feb
(8) |
Mar
(7) |
Apr
(8) |
May
(14) |
Jun
(6) |
Jul
(4) |
Aug
(17) |
Sep
(18) |
Oct
(19) |
Nov
(52) |
Dec
(30) |
| 2008 |
Jan
(6) |
Feb
(6) |
Mar
(15) |
Apr
(22) |
May
(13) |
Jun
(11) |
Jul
(41) |
Aug
(10) |
Sep
(14) |
Oct
(21) |
Nov
(4) |
Dec
(66) |
| 2009 |
Jan
(67) |
Feb
(57) |
Mar
(90) |
Apr
(54) |
May
(64) |
Jun
(76) |
Jul
(14) |
Aug
(18) |
Sep
(18) |
Oct
(20) |
Nov
(15) |
Dec
(36) |
| 2010 |
Jan
(28) |
Feb
(25) |
Mar
(32) |
Apr
(23) |
May
(22) |
Jun
(62) |
Jul
(36) |
Aug
(16) |
Sep
(12) |
Oct
(20) |
Nov
(44) |
Dec
(25) |
| 2011 |
Jan
(36) |
Feb
(49) |
Mar
(28) |
Apr
(38) |
May
(26) |
Jun
(52) |
Jul
(33) |
Aug
(32) |
Sep
(19) |
Oct
(26) |
Nov
(13) |
Dec
(32) |
| 2012 |
Jan
(38) |
Feb
(34) |
Mar
(91) |
Apr
(35) |
May
(31) |
Jun
(72) |
Jul
(23) |
Aug
(13) |
Sep
(33) |
Oct
(47) |
Nov
(18) |
Dec
(22) |
| 2013 |
Jan
(31) |
Feb
(22) |
Mar
(26) |
Apr
(11) |
May
(38) |
Jun
(15) |
Jul
(37) |
Aug
(68) |
Sep
(34) |
Oct
(11) |
Nov
(26) |
Dec
(31) |
| 2014 |
Jan
(60) |
Feb
(55) |
Mar
(21) |
Apr
(31) |
May
(17) |
Jun
(35) |
Jul
(24) |
Aug
(17) |
Sep
(11) |
Oct
(23) |
Nov
(10) |
Dec
(23) |
| 2015 |
Jan
(15) |
Feb
(34) |
Mar
(46) |
Apr
(23) |
May
(12) |
Jun
(14) |
Jul
(18) |
Aug
(22) |
Sep
(6) |
Oct
(2) |
Nov
(1) |
Dec
(6) |
| 2016 |
Jan
(5) |
Feb
(7) |
Mar
(10) |
Apr
(10) |
May
(17) |
Jun
(6) |
Jul
(4) |
Aug
(6) |
Sep
(22) |
Oct
(8) |
Nov
(9) |
Dec
(5) |
| 2017 |
Jan
(11) |
Feb
(12) |
Mar
(27) |
Apr
(9) |
May
(1) |
Jun
(5) |
Jul
(11) |
Aug
(10) |
Sep
(6) |
Oct
(10) |
Nov
(4) |
Dec
(6) |
| 2018 |
Jan
(6) |
Feb
(13) |
Mar
(9) |
Apr
(7) |
May
(10) |
Jun
(9) |
Jul
(21) |
Aug
(13) |
Sep
(10) |
Oct
(4) |
Nov
(6) |
Dec
(1) |
| 2019 |
Jan
(6) |
Feb
(2) |
Mar
(5) |
Apr
(6) |
May
(19) |
Jun
(14) |
Jul
(18) |
Aug
(3) |
Sep
(5) |
Oct
(7) |
Nov
(8) |
Dec
(4) |
| 2020 |
Jan
(10) |
Feb
(3) |
Mar
(9) |
Apr
(7) |
May
(2) |
Jun
(18) |
Jul
(3) |
Aug
|
Sep
|
Oct
(7) |
Nov
|
Dec
(1) |
| 2021 |
Jan
(9) |
Feb
(6) |
Mar
(4) |
Apr
(11) |
May
(7) |
Jun
(5) |
Jul
(2) |
Aug
(4) |
Sep
(10) |
Oct
(9) |
Nov
(5) |
Dec
|
| 2022 |
Jan
(2) |
Feb
(12) |
Mar
(3) |
Apr
(5) |
May
(1) |
Jun
(3) |
Jul
(2) |
Aug
(1) |
Sep
(4) |
Oct
(4) |
Nov
(1) |
Dec
(3) |
| 2023 |
Jan
(5) |
Feb
(3) |
Mar
(3) |
Apr
(2) |
May
(1) |
Jun
(3) |
Jul
(3) |
Aug
(2) |
Sep
(1) |
Oct
(1) |
Nov
|
Dec
(4) |
| 2024 |
Jan
(2) |
Feb
(3) |
Mar
(8) |
Apr
(4) |
May
(1) |
Jun
(13) |
Jul
(7) |
Aug
(1) |
Sep
(6) |
Oct
(5) |
Nov
(11) |
Dec
(7) |
| 2025 |
Jan
(3) |
Feb
(1) |
Mar
(6) |
Apr
(4) |
May
(4) |
Jun
(1) |
Jul
(1) |
Aug
(7) |
Sep
(4) |
Oct
(4) |
Nov
(4) |
Dec
(1) |
| 2026 |
Jan
(3) |
Feb
(7) |
Mar
(3) |
Apr
(1) |
May
(6) |
Jun
(3) |
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
|
From: Fabien M <fa...@us...> - 2010-05-20 13:54:41
|
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "armadeus".
The branch, master has been updated
via f53b3b7132d60d12a6287891a5ce874df6d274db (commit)
via 43c0a940cb7cda1fec60116da6c9f220ecb1a5c6 (commit)
from 53d60476b9fd0481ffd82bef2eac1c61bd5f94db (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit f53b3b7132d60d12a6287891a5ce874df6d274db
Merge: 43c0a940cb7cda1fec60116da6c9f220ecb1a5c6 53d60476b9fd0481ffd82bef2eac1c61bd5f94db
Author: Fabien Marteau <fab...@ar...>
Date: Thu May 20 15:51:59 2010 +0200
Merge branch 'master' of git://armadeus.git.sourceforge.net/gitroot/armadeus/armadeus
commit 43c0a940cb7cda1fec60116da6c9f220ecb1a5c6
Author: Fabien Marteau <fab...@ar...>
Date: Thu May 20 15:51:39 2010 +0200
Adding image to test lcd
-----------------------------------------------------------------------
Summary of changes:
target/test/data/images/mire_480x270.png | Bin 0 -> 1999 bytes
target/test/data/images/mire_800x480.png | Bin 0 -> 2725 bytes
2 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 target/test/data/images/mire_480x270.png
create mode 100644 target/test/data/images/mire_800x480.png
diff --git a/target/test/data/images/mire_480x270.png b/target/test/data/images/mire_480x270.png
new file mode 100644
index 0000000..c11a891
Binary files /dev/null and b/target/test/data/images/mire_480x270.png differ
diff --git a/target/test/data/images/mire_800x480.png b/target/test/data/images/mire_800x480.png
new file mode 100644
index 0000000..4dd4e63
Binary files /dev/null and b/target/test/data/images/mire_800x480.png differ
hooks/post-receive
--
armadeus
|
|
From: Julien B a. A. <ar...@us...> - 2010-05-19 16:03:32
|
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "armadeus".
The branch, master has been updated
via 53d60476b9fd0481ffd82bef2eac1c61bd5f94db (commit)
via 7b8fc12e38fe32f98e7dd1faf2499f1938d48d29 (commit)
from 189e5720d117e7f9f2d890653d77aca69345d096 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 53d60476b9fd0481ffd82bef2eac1c61bd5f94db
Author: Julien Boibessot <jul...@ar...>
Date: Wed May 19 18:02:27 2010 +0200
[LINUX] ov7670: add possibility to read registers through /proc in DEBUG mode
commit 7b8fc12e38fe32f98e7dd1faf2499f1938d48d29
Author: Julien Boibessot <jul...@ar...>
Date: Wed May 19 17:58:06 2010 +0200
[LINUX] Improve error message when failing to allocate a GPIO
-----------------------------------------------------------------------
Summary of changes:
.../319-apf27-armadeus-ov96xx_sensors_driver.patch | 22 ++++----
...isplay_gpio_number_when_reservation_fails.patch | 11 ++--
...adeus-soc_camera-add_ov7670_sensor_driver.patch | 64 +++++++++++++++----
3 files changed, 67 insertions(+), 30 deletions(-)
diff --git a/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/319-apf27-armadeus-ov96xx_sensors_driver.patch b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/319-apf27-armadeus-ov96xx_sensors_driver.patch
index b373abe..e2e612a 100644
--- a/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/319-apf27-armadeus-ov96xx_sensors_driver.patch
+++ b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/319-apf27-armadeus-ov96xx_sensors_driver.patch
@@ -4,10 +4,10 @@ Based on work from Trilok Soni <son...@gm...> on ov9640 driver for OMAP
Signed-off-by: Julien boibessot <jul...@ar...>
-Index: linux-2.6.29/drivers/media/video/Kconfig
+Index: linux-2.6.29.6/drivers/media/video/Kconfig
===================================================================
---- linux-2.6.29.orig/drivers/media/video/Kconfig 2009-05-25 14:20:25.000000000 +0200
-+++ linux-2.6.29/drivers/media/video/Kconfig 2009-05-25 14:20:25.000000000 +0200
+--- linux-2.6.29.6.orig/drivers/media/video/Kconfig 2010-05-19 17:05:55.000000000 +0200
++++ linux-2.6.29.6/drivers/media/video/Kconfig 2010-05-19 17:48:31.000000000 +0200
@@ -298,6 +298,13 @@
OV7670 VGA camera. It currently only works with the M88ALP01
controller.
@@ -22,10 +22,10 @@ Index: linux-2.6.29/drivers/media/video/Kconfig
config VIDEO_TCM825X
tristate "TCM825x camera sensor support"
depends on I2C && VIDEO_V4L2
-Index: linux-2.6.29/drivers/media/video/Makefile
+Index: linux-2.6.29.6/drivers/media/video/Makefile
===================================================================
---- linux-2.6.29.orig/drivers/media/video/Makefile 2009-05-25 14:20:25.000000000 +0200
-+++ linux-2.6.29/drivers/media/video/Makefile 2009-05-25 14:20:25.000000000 +0200
+--- linux-2.6.29.6.orig/drivers/media/video/Makefile 2010-05-19 17:05:55.000000000 +0200
++++ linux-2.6.29.6/drivers/media/video/Makefile 2010-05-19 17:48:31.000000000 +0200
@@ -106,6 +106,7 @@
obj-$(CONFIG_VIDEO_CAFE_CCIC) += cafe_ccic.o
@@ -34,10 +34,10 @@ Index: linux-2.6.29/drivers/media/video/Makefile
obj-$(CONFIG_VIDEO_TCM825X) += tcm825x.o
-Index: linux-2.6.29/drivers/media/video/ov96xx.c
+Index: linux-2.6.29.6/drivers/media/video/ov96xx.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.29/drivers/media/video/ov96xx.c 2009-05-25 14:21:42.000000000 +0200
++++ linux-2.6.29.6/drivers/media/video/ov96xx.c 2010-05-19 17:05:55.000000000 +0200
@@ -0,0 +1,1785 @@
+/*
+ * drivers/media/video/ov96xx.c
@@ -1647,8 +1647,8 @@ Index: linux-2.6.29/drivers/media/video/ov96xx.c
+ goto err;
+
+ /* create proc files */
-+ proc_read = create_proc_entry( "driver/ovread", S_IWUSR | S_IRGRP | S_IROTH, NULL);
-+ proc_write = create_proc_entry( "driver/ovwrite", S_IWUSR | S_IRGRP | S_IROTH, NULL);
++ proc_read = create_proc_entry("driver/ovread", S_IWUSR | S_IRGRP | S_IROTH, NULL);
++ proc_write = create_proc_entry("driver/ovwrite", S_IWUSR | S_IRGRP | S_IROTH, NULL);
+ if ((proc_read == NULL) || (proc_write == NULL)) {
+ printk(KERN_ERR DRIVER_NAME ": Could not register one /proc file. Terminating\n");
+ return -ENOMEM;
@@ -1762,7 +1762,7 @@ Index: linux-2.6.29/drivers/media/video/ov96xx.c
+ goto err;
+
+ return 0;
-+
++
+/* err = v4l2_int_device_register(sensor->v4l2_int_device);
+ if (err)
+ i2c_set_clientdata(client, NULL);*/
diff --git a/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/345-apf27-armadeus-iomux-display_gpio_number_when_reservation_fails.patch b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/345-apf27-armadeus-iomux-display_gpio_number_when_reservation_fails.patch
index 8e30ef2..203fa10 100644
--- a/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/345-apf27-armadeus-iomux-display_gpio_number_when_reservation_fails.patch
+++ b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/345-apf27-armadeus-iomux-display_gpio_number_when_reservation_fails.patch
@@ -4,14 +4,15 @@ Signed-off-by: Julien Boibessot <jul...@ar...>
Index: linux-2.6.29.6/arch/arm/plat-mxc/iomux-mx1-mx2.c
===================================================================
---- linux-2.6.29.6.orig/arch/arm/plat-mxc/iomux-mx1-mx2.c 2009-12-17 10:04:43.000000000 +0100
-+++ linux-2.6.29.6/arch/arm/plat-mxc/iomux-mx1-mx2.c 2009-12-17 10:49:56.000000000 +0100
-@@ -136,6 +136,8 @@
+--- linux-2.6.29.6.orig/arch/arm/plat-mxc/iomux-mx1-mx2.c 2009-03-24 00:12:14.000000000 +0100
++++ linux-2.6.29.6/arch/arm/plat-mxc/iomux-mx1-mx2.c 2010-05-19 10:46:15.000000000 +0200
+@@ -136,6 +136,9 @@
return 0;
setup_error:
-+ printk("*** Failed to reserve GPIO %d (port %d pin %d)\n", gpio,
-+ gpio & GPIO_PORT_MASK, gpio & GPIO_PIN_MASK);
++ printk("*** Failed to reserve GPIO %d (port %c pin %d)\n", gpio,
++ 0x41 + ((gpio & GPIO_PORT_MASK) >> GPIO_PORT_SHIFT),
++ gpio & GPIO_PIN_MASK);
mxc_gpio_release_multiple_pins(pin_list, i);
return ret;
}
diff --git a/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/356-armadeus-soc_camera-add_ov7670_sensor_driver.patch b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/356-armadeus-soc_camera-add_ov7670_sensor_driver.patch
index 399d02b..7ce8588 100644
--- a/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/356-armadeus-soc_camera-add_ov7670_sensor_driver.patch
+++ b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/356-armadeus-soc_camera-add_ov7670_sensor_driver.patch
@@ -6,8 +6,8 @@ Signed-off-by: Julien Boibessot <jul...@ar...>
Index: linux-2.6.29.6/drivers/media/video/ov7670_soc.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.29.6/drivers/media/video/ov7670_soc.c 2010-05-18 15:32:00.000000000 +0200
-@@ -0,0 +1,1571 @@
++++ linux-2.6.29.6/drivers/media/video/ov7670_soc.c 2010-05-19 17:54:35.000000000 +0200
+@@ -0,0 +1,1607 @@
+/*
+ * A V4L2 driver for OmniVision OV7670 cameras.
+ *
@@ -33,7 +33,9 @@ Index: linux-2.6.29.6/drivers/media/video/ov7670_soc.c
+#include <media/v4l2-chip-ident.h>
+#include <linux/i2c.h>
+#include <media/soc_camera.h>
-+
++#ifdef DEBUG
++#include <linux/proc_fs.h>
++#endif
+
+MODULE_AUTHOR("Jonathan Corbet <co...@lw...>, Julien Boibessot <jul...@ar...>");
+MODULE_DESCRIPTION("SoC camera driver for OmniVision ov7670 sensors");
@@ -1398,13 +1400,47 @@ Index: linux-2.6.29.6/drivers/media/video/ov7670_soc.c
+ return 0;
+}
+
++static int
++ov7670_proc_read_register( __attribute__ ((unused)) struct file *file,
++ const char *buf, unsigned long count,
++ void *data)
++{
++ int len;
++ char given_param[16];
++ u8 reg_addr;
++ u8 reg_val;
++ struct i2c_client *i2c_client = data;
++
++ if (count <= 0) {
++ printk("Empty string transmitted !\n");
++ return 0;
++ }
++ if (count > 4) {
++ len = 4;
++ printk("Only 4x[0-9] decimal values supported !\n");
++ } else {
++ len = count;
++ }
++
++ if (copy_from_user(given_param, buf, len)) {
++ return -EFAULT;
++ }
++
++ reg_addr = (u8)(simple_strtol(given_param, 0, 16));
++ /*current_reg_addr = reg_addr;*/
++ ov7670_read(i2c_client, reg_addr, ®_val);
++ printk("Read 0x%02x @ 0x%02x\n", reg_val, reg_addr);
++
++ return len;
++}
++
+/* Interface active, can use i2c. If it fails, it can indeed mean, that
+ * this wasn't our capture interface, so, we wait for the right one */
+static int ov7670_video_probe(struct soc_camera_device *icd)
+{
+ struct ov7670 *ov7670 = container_of(icd, struct ov7670, icd);
+#ifdef DEBUG
-+ struct proc_dir_entry *proc_read, *proc_write;
++ struct proc_dir_entry *proc_read/*, *proc_write*/;
+#endif
+ struct i2c_client *client = ov7670->i2c_client;
+ int ret;
@@ -1422,16 +1458,16 @@ Index: linux-2.6.29.6/drivers/media/video/ov7670_soc.c
+
+#ifdef DEBUG
+ /* create proc files */
-+ proc_read = create_proc_entry( "driver/ovread", S_IWUSR | S_IRGRP | S_IROTH, NULL);
-+ proc_write = create_proc_entry( "driver/ovwrite", S_IWUSR | S_IRGRP | S_IROTH, NULL);
-+ if ((proc_read == NULL) || (proc_write == NULL)) {
++ proc_read = create_proc_entry("driver/ovread", S_IWUSR | S_IRGRP | S_IROTH, NULL);
++ /*proc_write = create_proc_entry("driver/ovwrite", S_IWUSR | S_IRGRP | S_IROTH, NULL);*/
++ if ((proc_read == NULL) /*|| (proc_write == NULL)*/) {
+ printk(KERN_ERR DRIVER_NAME ": Could not register one /proc file. Terminating\n");
+ return -ENOMEM;
+ } else {
+ proc_read->write_proc = ov7670_proc_read_register;
+ proc_read->data = client;
-+ proc_write->write_proc = ov7670_proc_write_register;
-+ proc_write->data = client;
++ /*proc_write->write_proc = ov7670_proc_write_register;
++ proc_write->data = client;*/
+ }
+#endif
+
@@ -1536,7 +1572,7 @@ Index: linux-2.6.29.6/drivers/media/video/ov7670_soc.c
+ return -ENODEV; /* our client isn't attached */
+#ifdef DEBUG
+ remove_proc_entry("driver/ovread", NULL);
-+ remove_proc_entry("driver/ovwrite", NULL);
++ /*remove_proc_entry("driver/ovwrite", NULL);*/
+#endif
+ soc_camera_device_unregister(&ov7670->icd);
+ i2c_set_clientdata(client, NULL);
@@ -1581,8 +1617,8 @@ Index: linux-2.6.29.6/drivers/media/video/ov7670_soc.c
+module_exit(ov7670_mod_exit);
Index: linux-2.6.29.6/drivers/media/video/Kconfig
===================================================================
---- linux-2.6.29.6.orig/drivers/media/video/Kconfig 2010-05-17 15:25:43.000000000 +0200
-+++ linux-2.6.29.6/drivers/media/video/Kconfig 2010-05-17 15:25:46.000000000 +0200
+--- linux-2.6.29.6.orig/drivers/media/video/Kconfig 2010-05-19 17:48:31.000000000 +0200
++++ linux-2.6.29.6/drivers/media/video/Kconfig 2010-05-19 17:48:46.000000000 +0200
@@ -796,6 +796,12 @@
help
This is a ov772x camera driver
@@ -1598,8 +1634,8 @@ Index: linux-2.6.29.6/drivers/media/video/Kconfig
depends on VIDEO_DEV && PXA27x && SOC_CAMERA
Index: linux-2.6.29.6/drivers/media/video/Makefile
===================================================================
---- linux-2.6.29.6.orig/drivers/media/video/Makefile 2010-05-17 15:25:43.000000000 +0200
-+++ linux-2.6.29.6/drivers/media/video/Makefile 2010-05-17 15:25:46.000000000 +0200
+--- linux-2.6.29.6.orig/drivers/media/video/Makefile 2010-05-19 17:48:31.000000000 +0200
++++ linux-2.6.29.6/drivers/media/video/Makefile 2010-05-19 17:48:46.000000000 +0200
@@ -145,6 +145,7 @@
obj-$(CONFIG_SOC_CAMERA_MT9M111) += mt9m111.o
obj-$(CONFIG_SOC_CAMERA_MT9T031) += mt9t031.o
hooks/post-receive
--
armadeus
|
|
From: Julien B a. A. <ar...@us...> - 2010-05-18 15:27:10
|
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "armadeus".
The branch, master has been updated
via 189e5720d117e7f9f2d890653d77aca69345d096 (commit)
from aea3f44ce82c03084f84f05c76a84d5fcadaac71 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 189e5720d117e7f9f2d890653d77aca69345d096
Author: Julien Boibessot <jul...@ar...>
Date: Tue May 18 17:05:27 2010 +0200
[TEST] Improves test_backlight.sh
-----------------------------------------------------------------------
Summary of changes:
target/test/test_backlight.sh | 24 ++++++++++++++++++------
1 files changed, 18 insertions(+), 6 deletions(-)
diff --git a/target/test/test_backlight.sh b/target/test/test_backlight.sh
index a995266..3699f32 100755
--- a/target/test/test_backlight.sh
+++ b/target/test/test_backlight.sh
@@ -3,7 +3,7 @@
#
# Script to test Armadeus Software release
#
-# Copyright (C) 2008 The Armadeus Project
+# Copyright (C) 2008-2010 The Armadeus Project
#
# 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
@@ -12,7 +12,6 @@
#
source ./test_helpers.sh
-source ./test_env.sh
SYS_DIR=/sys/class/backlight/imx-bl
@@ -20,6 +19,9 @@ test_backlight()
{
show_test_banner "Backlight"
echo 0 > /sys/class/graphics/fb0/blank # Leave FB sleep mode
+ # Paint it white:
+ clear > /dev/tty1
+ cat /dev/zero | tr '\0' '\377' | dd of=/dev/fb0 bs=1K count=750 2>/dev/null
modprobe imx_bl
if [ "$?" != 0 ]; then
@@ -30,10 +32,20 @@ test_backlight()
echo "Current brightness level: $current / 256"
echo 50 > $SYS_DIR/brightness
- ask_user "Backlight set to LOW, if OK say y"
- echo 200 > $SYS_DIR/brightness
- ask_user "Backlight set to HIGH, if OK say y"
- if [ "$response" == "y" ]; then
+ ask_user "Backlight set to MIDDLE, press ENTER"
+ echo 255 > $SYS_DIR/brightness
+ ask_user "Backlight set to MAX, press ENTER"
+ echo 0 > $SYS_DIR/brightness
+ ask_user "Backlight set to MIN, press ENTER"
+
+ ask_user "I will now loop through brightness, press ENTER when ready"
+ for loop in `seq 1 2 150`; do
+ usleep 100000
+ echo $loop > $SYS_DIR/brightness
+ done
+ echo $current > $SYS_DIR/brightness
+ ask_user "Did the test succeed ? (y/N)"
+ if [ "$response" == "y" ] || [ "$response" == "yes" ]; then
echo_test_ok
exit 0
fi
hooks/post-receive
--
armadeus
|
|
From: Julien B a. A. <ar...@us...> - 2010-05-18 14:10:20
|
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "armadeus".
The branch, master has been updated
via aea3f44ce82c03084f84f05c76a84d5fcadaac71 (commit)
from cce816f35d8a757d2d33f90b1a04379199cc9bbb (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit aea3f44ce82c03084f84f05c76a84d5fcadaac71
Author: Julien Boibessot <jul...@ar...>
Date: Tue May 18 16:09:19 2010 +0200
[LINUX] ov7670: change init/detect sequence
-----------------------------------------------------------------------
Summary of changes:
...adeus-soc_camera-add_ov7670_sensor_driver.patch | 25 ++++++++++++-------
1 files changed, 16 insertions(+), 9 deletions(-)
diff --git a/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/356-armadeus-soc_camera-add_ov7670_sensor_driver.patch b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/356-armadeus-soc_camera-add_ov7670_sensor_driver.patch
index 3909d7a..399d02b 100644
--- a/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/356-armadeus-soc_camera-add_ov7670_sensor_driver.patch
+++ b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/356-armadeus-soc_camera-add_ov7670_sensor_driver.patch
@@ -6,8 +6,8 @@ Signed-off-by: Julien Boibessot <jul...@ar...>
Index: linux-2.6.29.6/drivers/media/video/ov7670_soc.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.29.6/drivers/media/video/ov7670_soc.c 2010-04-22 11:05:56.000000000 +0200
-@@ -0,0 +1,1564 @@
++++ linux-2.6.29.6/drivers/media/video/ov7670_soc.c 2010-05-18 15:32:00.000000000 +0200
+@@ -0,0 +1,1571 @@
+/*
+ * A V4L2 driver for OmniVision OV7670 cameras.
+ *
@@ -516,15 +516,16 @@ Index: linux-2.6.29.6/drivers/media/video/ov7670_soc.c
+static int ov7670_initialize(struct i2c_client *client)
+{
+ dev_info(&client->dev, "initializing\n");
++
+ return ov7670_write_array(client, ov7670_default_regs);
+}
+
+static int ov7670_init(struct soc_camera_device *icd)
+{
-+ struct ov7670 *ov7670 = container_of(icd, struct ov7670, icd);
-+ struct i2c_client *client = ov7670->i2c_client;
++/* struct ov7670 *ov7670 = container_of(icd, struct ov7670, icd);
++ struct i2c_client *client = ov7670->i2c_client; */
+
-+ return ov7670_initialize(client);
++ return 0; /*ov7670_initialize(client);*/
+}
+
+static int ov7670_release(struct soc_camera_device *icd)
@@ -580,6 +581,8 @@ Index: linux-2.6.29.6/drivers/media/video/ov7670_soc.c
+ if (ret < 0)
+ return ret;
+#endif
++ ov7670_read(client, REG_MIDH, &v); /* first access after a reset
++ might fail */
+ ret = ov7670_read(client, REG_MIDH, &v);
+ if (ret < 0)
+ return ret;
@@ -604,6 +607,10 @@ Index: linux-2.6.29.6/drivers/media/video/ov7670_soc.c
+ if (v != 0x73) /* PID + VER = 0x76 / 0x73 */
+ return -ENODEV;
+
++ ret = ov7670_initialize(client);
++ if (ret < 0)
++ return ret;
++
+ return 0;
+}
+
@@ -1574,8 +1581,8 @@ Index: linux-2.6.29.6/drivers/media/video/ov7670_soc.c
+module_exit(ov7670_mod_exit);
Index: linux-2.6.29.6/drivers/media/video/Kconfig
===================================================================
---- linux-2.6.29.6.orig/drivers/media/video/Kconfig 2010-04-22 11:04:40.000000000 +0200
-+++ linux-2.6.29.6/drivers/media/video/Kconfig 2010-04-22 11:09:32.000000000 +0200
+--- linux-2.6.29.6.orig/drivers/media/video/Kconfig 2010-05-17 15:25:43.000000000 +0200
++++ linux-2.6.29.6/drivers/media/video/Kconfig 2010-05-17 15:25:46.000000000 +0200
@@ -796,6 +796,12 @@
help
This is a ov772x camera driver
@@ -1591,8 +1598,8 @@ Index: linux-2.6.29.6/drivers/media/video/Kconfig
depends on VIDEO_DEV && PXA27x && SOC_CAMERA
Index: linux-2.6.29.6/drivers/media/video/Makefile
===================================================================
---- linux-2.6.29.6.orig/drivers/media/video/Makefile 2010-04-22 11:04:45.000000000 +0200
-+++ linux-2.6.29.6/drivers/media/video/Makefile 2010-04-22 11:12:21.000000000 +0200
+--- linux-2.6.29.6.orig/drivers/media/video/Makefile 2010-05-17 15:25:43.000000000 +0200
++++ linux-2.6.29.6/drivers/media/video/Makefile 2010-05-17 15:25:46.000000000 +0200
@@ -145,6 +145,7 @@
obj-$(CONFIG_SOC_CAMERA_MT9M111) += mt9m111.o
obj-$(CONFIG_SOC_CAMERA_MT9T031) += mt9t031.o
hooks/post-receive
--
armadeus
|
|
From: Julien B a. A. <ar...@us...> - 2010-05-14 07:23:29
|
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "armadeus".
The branch, master has been updated
via cce816f35d8a757d2d33f90b1a04379199cc9bbb (commit)
from 0d22696d93e934c40dbdac1368d6eb546ce0f0d7 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit cce816f35d8a757d2d33f90b1a04379199cc9bbb
Author: Julien Boibessot <jul...@ar...>
Date: Fri May 14 09:13:05 2010 +0200
[BUILDROOT] Correct bad dependencies in wpa_supplicant package
-----------------------------------------------------------------------
Summary of changes:
.../buildroot/108-wpa_supplicant-add_package.patch | 18 +++++++++++-------
1 files changed, 11 insertions(+), 7 deletions(-)
diff --git a/patches/buildroot/108-wpa_supplicant-add_package.patch b/patches/buildroot/108-wpa_supplicant-add_package.patch
index 9084c28..2950db9 100644
--- a/patches/buildroot/108-wpa_supplicant-add_package.patch
+++ b/patches/buildroot/108-wpa_supplicant-add_package.patch
@@ -5,9 +5,9 @@ Not needed for recent BR.
Index: buildroot/package/Config.in
===================================================================
---- buildroot.orig/package/Config.in 2010-05-03 14:23:54.000000000 +0200
-+++ buildroot/package/Config.in 2010-05-03 14:25:24.000000000 +0200
-@@ -236,6 +236,7 @@
+--- buildroot.orig/package/Config.in 2010-05-10 16:43:00.000000000 +0200
++++ buildroot/package/Config.in 2010-05-10 16:43:00.000000000 +0200
+@@ -227,6 +227,7 @@
source "package/wget/Config.in"
endif
source "package/wireless-tools/Config.in"
@@ -18,7 +18,7 @@ Index: buildroot/package/Config.in
Index: buildroot/package/wpa_supplicant/Config.in
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ buildroot/package/wpa_supplicant/Config.in 2010-05-03 14:29:34.000000000 +0200
++++ buildroot/package/wpa_supplicant/Config.in 2010-05-10 16:43:00.000000000 +0200
@@ -0,0 +1,32 @@
+config BR2_PACKAGE_WPA_SUPPLICANT
+ bool "wpa_supplicant"
@@ -55,8 +55,8 @@ Index: buildroot/package/wpa_supplicant/Config.in
Index: buildroot/package/wpa_supplicant/wpa_supplicant.mk
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ buildroot/package/wpa_supplicant/wpa_supplicant.mk 2010-05-03 14:33:11.000000000 +0200
-@@ -0,0 +1,80 @@
++++ buildroot/package/wpa_supplicant/wpa_supplicant.mk 2010-05-11 15:02:38.000000000 +0200
+@@ -0,0 +1,84 @@
+#############################################################
+#
+# wpa_supplicant
@@ -81,7 +81,7 @@ Index: buildroot/package/wpa_supplicant/wpa_supplicant.mk
+ WPA_SUPPLICANT_DEPENDENCIES += openssl
+endif
+ifeq ($(BR2_PACKAGE_DBUS),y)
-+ WPA_SUPPLICANT_DEPENDENCIES += host-pkgconfig dbus
++ WPA_SUPPLICANT_DEPENDENCIES += pkgconfig dbus
+ WPA_SUPPLICANT_MAKE_ENV = \
+ PKG_CONFIG_SYSROOT_DIR="$(STAGING_DIR)" \
+ PKG_CONFIG_PATH="$(STAGING_DIR)/usr/lib/pkgconfig"
@@ -92,6 +92,10 @@ Index: buildroot/package/wpa_supplicant/wpa_supplicant.mk
+$(WPA_SUPPLICANT_TARGET_CONFIGURE):
+ cp $(WPA_SUPPLICANT_DIR)/wpa_supplicant/defconfig $(WPA_SUPPLICANT_CONFIG)
+ echo "CFLAGS += $(TARGET_CFLAGS)" >>$(WPA_SUPPLICANT_CONFIG)
++ifeq ($(BR2_PACKAGE_DBUS),y)
++ echo "CFLAGS += -I$(STAGING_DIR)/usr/include/dbus-1.0/" >>$(WPA_SUPPLICANT_CONFIG)
++ echo "CFLAGS += -I$(STAGING_DIR)/usr/lib/dbus-1.0/include/" >>$(WPA_SUPPLICANT_CONFIG)
++endif
+ echo "CC = $(TARGET_CC)" >>$(WPA_SUPPLICANT_CONFIG)
+ $(SED) "s/\/local//" $(WPA_SUPPLICANT_DIR)/wpa_supplicant/Makefile
+ifneq ($(BR2_PACKAGE_WPA_SUPPLICANT_EAP),y)
hooks/post-receive
--
armadeus
|
|
From: Julien B a. A. <ar...@us...> - 2010-05-13 16:32:13
|
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "armadeus".
The branch, master has been updated
via 0d22696d93e934c40dbdac1368d6eb546ce0f0d7 (commit)
via a899d947faa30fba41e3a141907d4d42caf98253 (commit)
via c62a845b57369c7ad08c517ac0ff27cb25542318 (commit)
from 16a427b63a7e30d782efb98347ee226df25f7fc0 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 0d22696d93e934c40dbdac1368d6eb546ce0f0d7
Author: Jaume Figeras <jau...@up...>
Date: Thu May 13 18:31:31 2010 +0200
[BUILDROOT] Add spanish keymap
commit a899d947faa30fba41e3a141907d4d42caf98253
Merge: c62a845b57369c7ad08c517ac0ff27cb25542318 16a427b63a7e30d782efb98347ee226df25f7fc0
Author: Julien Boibessot <jul...@ar...>
Date: Thu May 13 18:24:17 2010 +0200
Merge branch 'master' of ssh://artemys@armadeus.git.sourceforge.net/gitroot/armadeus/armadeus
commit c62a845b57369c7ad08c517ac0ff27cb25542318
Author: Julien Boibessot <jul...@ar...>
Date: Wed May 12 16:39:58 2010 +0200
[TEST] Improve media_perf.sh
-----------------------------------------------------------------------
Summary of changes:
.../rootfs/target_skeleton/etc/i18n/es_CA.kmap | Bin 0 -> 2823 bytes
target/test/mmc/media_perf.sh | 3 ++-
2 files changed, 2 insertions(+), 1 deletions(-)
create mode 100644 buildroot/target/device/armadeus/rootfs/target_skeleton/etc/i18n/es_CA.kmap
diff --git a/buildroot/target/device/armadeus/rootfs/target_skeleton/etc/i18n/es_CA.kmap b/buildroot/target/device/armadeus/rootfs/target_skeleton/etc/i18n/es_CA.kmap
new file mode 100644
index 0000000..0977051
Binary files /dev/null and b/buildroot/target/device/armadeus/rootfs/target_skeleton/etc/i18n/es_CA.kmap differ
diff --git a/target/test/mmc/media_perf.sh b/target/test/mmc/media_perf.sh
index cedcc4e..4d9abaf 100755
--- a/target/test/mmc/media_perf.sh
+++ b/target/test/mmc/media_perf.sh
@@ -133,7 +133,7 @@ if [ "$2" != "" ]; then
fi
if [ ! -b $MMC_DEVICE ] && [ ! -b $USB_DEVICE ]; then
- echo -n "Please insert your MMC/SD/microSD/USB key"
+ echo -n "Please insert your storage device: MMC/SD/microSD or USB key"
it=0
while [ ! -b $MMC_DEVICE ] && [ ! -b $USB_DEVICE ] && [ $it -le 20 ]; do
it=$((it+1))
@@ -229,5 +229,6 @@ echo "Integrity test successful !"
rm -rf $TEMP_DIR
rm $MOUNT_DIR/*.rnd
+umount $MOUNT_DIR
exit 0
hooks/post-receive
--
armadeus
|
|
From: Fabien M <fa...@us...> - 2010-05-12 12:40:32
|
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "armadeus".
The branch, master has been updated
via 16a427b63a7e30d782efb98347ee226df25f7fc0 (commit)
from 9086a079108a959449b1fd128058c6538a7ed529 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 16a427b63a7e30d782efb98347ee226df25f7fc0
Author: Fabien Marteau <fab...@ar...>
Date: Wed May 12 14:39:06 2010 +0200
[buildroot] demo capture makefile correction
-----------------------------------------------------------------------
Summary of changes:
target/demos/camera/capture/Makefile | 25 +++++++++++++------------
1 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/target/demos/camera/capture/Makefile b/target/demos/camera/capture/Makefile
index 4271506..20a62bc 100644
--- a/target/demos/camera/capture/Makefile
+++ b/target/demos/camera/capture/Makefile
@@ -1,15 +1,15 @@
-CFLAGS=-Wall
+ARMADEUS_BASE_DIR=../../../..
+-include $(ARMADEUS_BASE_DIR)/Makefile.in
+
+# Default values for local compiling:
+STAGING_DIR:=$(ARMADEUS_BUILD_DIR)/staging_dir/
+INSTALL_DIR:=$(ARMADEUS_ROOTFS_DIR)/usr/local/bin/
+CC:=$(ARMADEUS_TOOLCHAIN_PATH)/arm-linux-gcc
+STRIP:=$(ARMADEUS_TOOLCHAIN_PATH)/arm-linux-sstrip
+SDL_DIR:=$(ARMADEUS_SDL_DIR)
+CFLAGS=$(shell STAGING_DIR=$(STAGING_DIR) sh $(SDL_DIR)/sdl-config --cflags) -g
+
LDFLAGS= -lSDL -lpthread
-ifeq ($(PREFIX),)
-# Host
-CC=gcc
-CFLAGS+= -O2
-else
-# APF
-CC=${PREFIX}/usr/bin/arm-linux-uclibc-gcc
-CFLAGS+= -Os
-INSTALL_DIR=/tftpboot
-endif
EXEC=capture
SRC= $(wildcard *.c *.h)
@@ -30,5 +30,6 @@ clean:
rm -f $(EXEC)
install: all
- cp -f $(EXEC) $(INSTALL_DIR)
+ mkdir -p $(INSTALL_DIR)
+ cp $(EXEC) $(INSTALL_DIR)
hooks/post-receive
--
armadeus
|
|
From: Fabien M <fa...@us...> - 2010-05-12 08:13:07
|
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "armadeus".
The branch, master has been updated
via 9086a079108a959449b1fd128058c6538a7ed529 (commit)
from 034bf43cbdf0422284d11d0795820d1ad81d2403 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 9086a079108a959449b1fd128058c6538a7ed529
Author: Fabien Marteau <fab...@ar...>
Date: Wed May 12 10:12:33 2010 +0200
[buildroot] fix some bugs in demos package
-----------------------------------------------------------------------
Summary of changes:
buildroot/package/armadeus/demos/Config.in | 2 --
buildroot/package/armadeus/demos/demos.mk | 3 ++-
2 files changed, 2 insertions(+), 3 deletions(-)
diff --git a/buildroot/package/armadeus/demos/Config.in b/buildroot/package/armadeus/demos/Config.in
index 5e204ff..e15ce36 100644
--- a/buildroot/package/armadeus/demos/Config.in
+++ b/buildroot/package/armadeus/demos/Config.in
@@ -45,8 +45,6 @@ config BR2_PACKAGE_ARMADEUS_DEMOS_MUSIC_PLAYER
config BR2_PACKAGE_ARMADEUS_DEMOS_CAPTURE
bool "Camera capture"
select BR2_PACKAGE_SDL
- select BR2_PACKAGE_SDL_TTF
- select BR2_PACKAGE_SDL_MIXER
help
capture and print camera video stream.
diff --git a/buildroot/package/armadeus/demos/demos.mk b/buildroot/package/armadeus/demos/demos.mk
index 8c41002..19c6d83 100644
--- a/buildroot/package/armadeus/demos/demos.mk
+++ b/buildroot/package/armadeus/demos/demos.mk
@@ -26,7 +26,8 @@ ARMADEUS-DEMOS_SUBDIRS+=gpio
endif
ifeq ($(BR2_PACKAGE_ARMADEUS_DEMOS_CAPTURE),y)
-ARMADEUS-DEMOS_SUBDIRS+=capture
+ARMADEUS-DEMOS_SUBDIRS+=camera/capture
+ARMADEUS-DEMOS_DEPS=sdl
endif
ifeq ($(BR2_PACKAGE_ARMADEUS_DEMOS_GPS),y)
hooks/post-receive
--
armadeus
|
|
From: Fabien M <fa...@us...> - 2010-05-12 07:18:34
|
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "armadeus".
The branch, master has been updated
via 034bf43cbdf0422284d11d0795820d1ad81d2403 (commit)
from 8b63e6fb540365e17afefcef27b8c04d68125ea9 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 034bf43cbdf0422284d11d0795820d1ad81d2403
Author: Fabien Marteau <fab...@ar...>
Date: Wed May 12 09:17:47 2010 +0200
[buildroot] Adding camera capture tool in demos package
-----------------------------------------------------------------------
Summary of changes:
buildroot/package/armadeus/demos/Config.in | 8 ++++++++
buildroot/package/armadeus/demos/demos.mk | 4 ++++
2 files changed, 12 insertions(+), 0 deletions(-)
diff --git a/buildroot/package/armadeus/demos/Config.in b/buildroot/package/armadeus/demos/Config.in
index d3f89ad..5e204ff 100644
--- a/buildroot/package/armadeus/demos/Config.in
+++ b/buildroot/package/armadeus/demos/Config.in
@@ -42,6 +42,14 @@ config BR2_PACKAGE_ARMADEUS_DEMOS_MUSIC_PLAYER
help
SDL based music player.
+config BR2_PACKAGE_ARMADEUS_DEMOS_CAPTURE
+ bool "Camera capture"
+ select BR2_PACKAGE_SDL
+ select BR2_PACKAGE_SDL_TTF
+ select BR2_PACKAGE_SDL_MIXER
+ help
+ capture and print camera video stream.
+
config BR2_PACKAGE_ARMADEUS_DEMOS_OSCILLO
bool "Oscilloscope"
help
diff --git a/buildroot/package/armadeus/demos/demos.mk b/buildroot/package/armadeus/demos/demos.mk
index 75ee690..8c41002 100644
--- a/buildroot/package/armadeus/demos/demos.mk
+++ b/buildroot/package/armadeus/demos/demos.mk
@@ -25,6 +25,10 @@ ifeq ($(BR2_PACKAGE_ARMADEUS_DEMOS_GPIO),y)
ARMADEUS-DEMOS_SUBDIRS+=gpio
endif
+ifeq ($(BR2_PACKAGE_ARMADEUS_DEMOS_CAPTURE),y)
+ARMADEUS-DEMOS_SUBDIRS+=capture
+endif
+
ifeq ($(BR2_PACKAGE_ARMADEUS_DEMOS_GPS),y)
ARMADEUS-DEMOS_SUBDIRS+=gps
endif
hooks/post-receive
--
armadeus
|
|
From: Fabien M <fa...@us...> - 2010-05-04 14:04:32
|
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "armadeus".
The branch, master has been updated
via e607f92fb9cdc1eb3a7ab615062bd4f33bc4e147 (commit)
via 223e01c006ce6417e02dd777409b5103a7d2da6f (commit)
from e93ef0a43eec633fcb03a4c345457f89eca6cf9d (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit e607f92fb9cdc1eb3a7ab615062bd4f33bc4e147
Author: Fabien Marteau <fab...@ar...>
Date: Tue May 4 16:04:02 2010 +0200
[AsDevices] Adding irq and pullup function prototype for Python wrapper
commit 223e01c006ce6417e02dd777409b5103a7d2da6f
Author: Fabien Marteau <fab...@ar...>
Date: Tue May 4 15:55:42 2010 +0200
indentation
-----------------------------------------------------------------------
Summary of changes:
target/packages/as_devices/c/as_gpio.c | 23 ++++---
.../packages/as_devices/python/src/AsGpio_wrap.c | 65 ++++++++++++++++++++
.../packages/as_devices/python/src/AsGpio_wrap.h | 6 ++
3 files changed, 85 insertions(+), 9 deletions(-)
diff --git a/target/packages/as_devices/c/as_gpio.c b/target/packages/as_devices/c/as_gpio.c
index a2f7916..938529e 100644
--- a/target/packages/as_devices/c/as_gpio.c
+++ b/target/packages/as_devices/c/as_gpio.c
@@ -200,15 +200,20 @@ int32_t as_gpio_blocking_get_pin_value(struct as_gpio_device *aDev,
int ret;
char value;
- if ( aPinNum >= PORT_SIZE ) return -1; /* aPinNum wrong */
- if ( aPinNum < 0 ) return -1;
+ if (aPinNum >= PORT_SIZE )
+ return -1; /* aPinNum wrong */
+ if (aPinNum < 0 )
+ return -1;
- if ( aDev->fpin[aPinNum] == -1) return -1; /* irq must be configured before */
+ if (aDev->fpin[aPinNum] == -1)
+ return -1; /* irq must be configured before */
ret = read(aDev->fpin[aPinNum], &value, 1);
- if ( ret < 0) return ret;
+ if (ret < 0)
+ return ret;
- if (value != 0) return 1;
+ if (value != 0)
+ return 1;
else return 0;
}
@@ -350,22 +355,22 @@ int32_t as_gpio_set_irq_mode(struct as_gpio_device *aDev,
/* close fpin file */
- if ( (aMode == GPIO_IRQ_MODE_NOINT) && (aDev->fpin[aPinNum] != -1))
+ if ((aMode == GPIO_IRQ_MODE_NOINT) && (aDev->fpin[aPinNum] != -1))
{
close(aDev->fpin[aPinNum]);
aDev->fpin[aPinNum] = -1;
}
/* open fpin file */
- if ( (aMode != GPIO_IRQ_MODE_NOINT) && (aDev->fpin[aPinNum] == -1))
+ if ((aMode != GPIO_IRQ_MODE_NOINT) && (aDev->fpin[aPinNum] == -1))
{
ret = snprintf(buffer, BUFF_SIZE, "%s%c%d",
GPIO_BASE_PIN, aDev->port_letter, aPinNum);
- if ( ret < 0)
+ if (ret < 0)
return ret;
ret = open(buffer, O_RDONLY);
- if( ret < 0)
+ if (ret < 0)
return ret;
aDev->fpin[aPinNum] = ret;
diff --git a/target/packages/as_devices/python/src/AsGpio_wrap.c b/target/packages/as_devices/python/src/AsGpio_wrap.c
index b807ebc..5e652b5 100644
--- a/target/packages/as_devices/python/src/AsGpio_wrap.c
+++ b/target/packages/as_devices/python/src/AsGpio_wrap.c
@@ -27,6 +27,11 @@ static PyMethodDef AsGpio_wrap_methods[] = {
{"setPinDirection", setPinDirection, METH_VARARGS, "Set pin direction"},
{"setPinValue", setPinValue, METH_VARARGS, "Set pin value"},
{"getPinValue", getPinValue, METH_VARARGS, "Get pin value"},
+ {"blockingGetPinValue", blockingGetPinValue, METH_VARARGS, "Blocking read pin value"},
+ {"setPullupValue", setPullupValue, METH_VARARGS, "Set pull up value"},
+ {"getPullupValue", getPullupValue, METH_VARARGS, "Get pull up value"},
+ {"getIrqMode", getIrqMode, METH_VARARGS, "Get IRQ Mode"},
+ {"setIrqMode", setIrqMode, METH_VARARGS, "Set IRQ Mode"},
{"gpio_close", gpio_close, METH_VARARGS, "Close gpio"},
{NULL, NULL, 0, NULL} /* Sentinel */
};
@@ -230,6 +235,66 @@ static PyObject * getPinValue(PyObject *self, PyObject *args)
return Py_BuildValue("i", ret);
}
+/** @brief TODO
+ *
+ * @param TODO
+ * @param TODO
+ *
+ * @return TODO
+ */
+static PyObject * blockingGetPinValue(PyObject *self, PyObject *args)
+{
+ /* TODO */
+}
+
+/** @brief TODO
+ *
+ * @param TODO
+ * @param TODO
+ *
+ * @return TODO
+ */
+static PyObject * getPullupValue(PyObject *self, PyObject *args)
+{
+ /* TODO */
+}
+
+/** @brief TODO
+ *
+ * @param TODO
+ * @param TODO
+ *
+ * @return TODO
+ */
+static PyObject * setPullupValue(PyObject *self, PyObject *args)
+{
+ /* TODO */
+}
+
+/** @brief TODO
+ *
+ * @param TODO
+ * @param TODO
+ *
+ * @return TODO
+ */
+static PyObject * getIrqMode(PyObject *self, PyObject *args)
+{
+ /* TODO */
+}
+
+/** @brief TODO
+ *
+ * @param TODO
+ * @param TODO
+ *
+ * @return TODO
+ */
+static PyObject * setIrqMode(PyObject *self, PyObject *args)
+{
+ /* TODO */
+}
+
/** @brief Close port access
*
* @param ((ci)) -> (aPort_letter, aFdev) as_gpio_device structure_list
diff --git a/target/packages/as_devices/python/src/AsGpio_wrap.h b/target/packages/as_devices/python/src/AsGpio_wrap.h
index bf52ba6..10a910f 100644
--- a/target/packages/as_devices/python/src/AsGpio_wrap.h
+++ b/target/packages/as_devices/python/src/AsGpio_wrap.h
@@ -33,5 +33,11 @@ static PyObject * setPinDirection(PyObject *self, PyObject *args);
static PyObject * setPinValue(PyObject *self, PyObject *args);
static PyObject * getPinValue(PyObject *self, PyObject *args);
+static PyObject * blockingGetPinValue(PyObject *self, PyObject *args);
+static PyObject * getPullupValue(PyObject *self, PyObject *args);
+static PyObject * setPullupValue(PyObject *self, PyObject *args);
+static PyObject * getIrqMode(PyObject *self, PyObject *args);
+static PyObject * setIrqMode(PyObject *self, PyObject *args);
+
static PyObject * gpio_close(PyObject *self, PyObject *args);
hooks/post-receive
--
armadeus
|
|
From: Fabien M <fa...@us...> - 2010-05-04 12:45:26
|
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "armadeus".
The branch, master has been updated
via e93ef0a43eec633fcb03a4c345457f89eca6cf9d (commit)
from be149f1fc2815c742bf3ae4c7883c3fab0392730 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit e93ef0a43eec633fcb03a4c345457f89eca6cf9d
Author: Fabien Marteau <fab...@ar...>
Date: Tue May 4 14:44:53 2010 +0200
[AsDevices] Add blocking read function (not tested), correct indent
-----------------------------------------------------------------------
Summary of changes:
target/packages/as_devices/c/as_gpio.c | 104 +++++++++++++++++++++++++-------
target/packages/as_devices/c/as_gpio.h | 30 +++++++---
2 files changed, 105 insertions(+), 29 deletions(-)
diff --git a/target/packages/as_devices/c/as_gpio.c b/target/packages/as_devices/c/as_gpio.c
index fe33c73..a2f7916 100644
--- a/target/packages/as_devices/c/as_gpio.c
+++ b/target/packages/as_devices/c/as_gpio.c
@@ -29,17 +29,16 @@
#include <sys/ioctl.h>
#include <linux/ppdev.h>
-#define PORT_SIZE (32)
#define GPIORDDIRECTION _IOR(PP_IOCTL, 0xF0, int)
#define GPIOWRDIRECTION _IOW(PP_IOCTL, 0xF1, int)
-#define GPIORDDATA _IOR(PP_IOCTL, 0xF2, int)
-#define GPIOWRDATA _IOW(PP_IOCTL, 0xF3, int)
-#define GPIORDMODE _IOR(PP_IOCTL, 0xF4, int)
-#define GPIOWRMODE _IOW(PP_IOCTL, 0xF5, int)
+#define GPIORDDATA _IOR(PP_IOCTL, 0xF2, int)
+#define GPIOWRDATA _IOW(PP_IOCTL, 0xF3, int)
+#define GPIORDMODE _IOR(PP_IOCTL, 0xF4, int)
+#define GPIOWRMODE _IOW(PP_IOCTL, 0xF5, int)
-#define GPIORDPULLUP _IOR(PP_IOCTL, 0xF6, int)
-#define GPIOWRPULLUP _IOR(PP_IOCTL, 0xF7, int)
+#define GPIORDPULLUP _IOR(PP_IOCTL, 0xF6, int)
+#define GPIOWRPULLUP _IOR(PP_IOCTL, 0xF7, int)
#define GPIORDIRQMODE_H _IOR(PP_IOCTL, 0xF8, int)
#define GPIORDIRQMODE_L _IOR(PP_IOCTL, 0xF9, int)
@@ -47,6 +46,9 @@
#define GPIOWRIRQMODE_L _IOR(PP_IOCTL, 0xFB, int)
#define GPIO_BASE_PORT ("/dev/gpio/port")
+#define GPIO_BASE_PIN ("/dev/gpio/P")
+
+#define BUFF_SIZE (300)
#ifdef APF9328
# define NUMBER_OF_PORTS 4
@@ -64,6 +66,7 @@ as_gpio_open(char aPortChar)
struct as_gpio_device *dev;
char gpio_file_path[50];
int ret=0;
+ int i;
if (((aPortChar-'A') > (NUMBER_OF_PORTS-1)) || ((aPortChar-'A') < 0))
{
@@ -89,6 +92,11 @@ as_gpio_open(char aPortChar)
dev->port_letter = aPortChar;
dev->fdev = ret;
+ for(i=0; i < PORT_SIZE; i++)
+ {
+ dev->fpin[i] = -1;
+ dev->irq_mode[i] = GPIO_IRQ_MODE_NOINT;
+ }
return dev;
}
@@ -138,9 +146,9 @@ as_gpio_set_pin_direction(struct as_gpio_device *aDev,
/*------------------------------------------------------------------------------*/
int32_t
-as_gpio_set_pin_value( struct as_gpio_device *aDev,
- int aPinNum,
- int aValue)
+as_gpio_set_pin_value(struct as_gpio_device *aDev,
+ int aPinNum,
+ int aValue)
{
int ret=0;
int portval;
@@ -165,8 +173,8 @@ as_gpio_set_pin_value( struct as_gpio_device *aDev,
/*------------------------------------------------------------------------------*/
-int32_t as_gpio_get_pin_value( struct as_gpio_device *aDev,
- int aPinNum)
+int32_t as_gpio_get_pin_value(struct as_gpio_device *aDev,
+ int aPinNum)
{
int ret=0;
int portval;
@@ -185,8 +193,30 @@ int32_t as_gpio_get_pin_value( struct as_gpio_device *aDev,
/*------------------------------------------------------------------------------*/
+int32_t as_gpio_blocking_get_pin_value(struct as_gpio_device *aDev,
+ int aPinNum)
+{
+ /* TODO */
+ int ret;
+ char value;
+
+ if ( aPinNum >= PORT_SIZE ) return -1; /* aPinNum wrong */
+ if ( aPinNum < 0 ) return -1;
+
+ if ( aDev->fpin[aPinNum] == -1) return -1; /* irq must be configured before */
+
+ ret = read(aDev->fpin[aPinNum], &value, 1);
+ if ( ret < 0) return ret;
+
+ if (value != 0) return 1;
+ else return 0;
+
+}
+
+/*------------------------------------------------------------------------------*/
+
int32_t as_gpio_get_pullup_value(struct as_gpio_device *aDev,
- int aPinNum)
+ int aPinNum)
{
int ret=0;
int portval;
@@ -207,8 +237,8 @@ int32_t as_gpio_get_pullup_value(struct as_gpio_device *aDev,
/*------------------------------------------------------------------------------*/
int32_t as_gpio_set_pullup_value(struct as_gpio_device *aDev,
- int aPinNum,
- int aValue)
+ int aPinNum,
+ int aValue)
{
int ret=0;
int portval;
@@ -234,7 +264,7 @@ int32_t as_gpio_set_pullup_value(struct as_gpio_device *aDev,
/*------------------------------------------------------------------------------*/
int32_t as_gpio_get_irq_mode(struct as_gpio_device *aDev,
- int aPinNum)
+ int aPinNum)
{
int ret=0;
int portval;
@@ -269,11 +299,13 @@ int32_t as_gpio_get_irq_mode(struct as_gpio_device *aDev,
/*------------------------------------------------------------------------------*/
int32_t as_gpio_set_irq_mode(struct as_gpio_device *aDev,
- int aPinNum,
- int aMode)
+ int aPinNum,
+ int aMode)
{
int ret=0;
+ int i;
int portval;
+ char buffer[BUFF_SIZE];
/* check mode value */
if (aMode > 3)
@@ -315,8 +347,33 @@ int32_t as_gpio_set_irq_mode(struct as_gpio_device *aDev,
}
}
- return 0;
+
+ /* close fpin file */
+ if ( (aMode == GPIO_IRQ_MODE_NOINT) && (aDev->fpin[aPinNum] != -1))
+ {
+ close(aDev->fpin[aPinNum]);
+ aDev->fpin[aPinNum] = -1;
+ }
+
+ /* open fpin file */
+ if ( (aMode != GPIO_IRQ_MODE_NOINT) && (aDev->fpin[aPinNum] == -1))
+ {
+ ret = snprintf(buffer, BUFF_SIZE, "%s%c%d",
+ GPIO_BASE_PIN, aDev->port_letter, aPinNum);
+ if ( ret < 0)
+ return ret;
+
+ ret = open(buffer, O_RDONLY);
+ if( ret < 0)
+ return ret;
+
+ aDev->fpin[aPinNum] = ret;
+ }
+
+ aDev->irq_mode[i] = aMode;
+
+ return 0;
}
/*------------------------------------------------------------------------------*/
@@ -324,8 +381,13 @@ int32_t as_gpio_set_irq_mode(struct as_gpio_device *aDev,
int32_t
as_gpio_close(struct as_gpio_device *aDev)
{
- int ret;
- ret = close(aDev->fdev);
+ int i;
+ close(aDev->fdev);
+ for (i=0; i < PORT_SIZE; i++)
+ {
+ if (aDev->fpin[i] != -1)
+ close(aDev->fpin[i]);
+ }
free(aDev);
return 0;
}
diff --git a/target/packages/as_devices/c/as_gpio.h b/target/packages/as_devices/c/as_gpio.h
index 2f591fe..edda56b 100644
--- a/target/packages/as_devices/c/as_gpio.h
+++ b/target/packages/as_devices/c/as_gpio.h
@@ -33,14 +33,18 @@ extern "C" {
#define GPIO_IRQ_MODE_FALLING (2)
#define GPIO_IRQ_MODE_BOTH (3)
-//TODO: manage irq
+#define PORT_SIZE (32)
+
+//TODO: test irq
/**
* Store gpio parameters
*/
struct as_gpio_device {
unsigned char port_letter;
- int fdev;
+ int fdev; /* port file */
+ int fpin[PORT_SIZE]; /* pin file for blocking read */
+ int irq_mode[PORT_SIZE];
};
/** @brief Initialize port access
@@ -85,6 +89,16 @@ int32_t as_gpio_set_pin_value(struct as_gpio_device *aDev,
int32_t as_gpio_get_pin_value(struct as_gpio_device *aDev,
int aPinNum);
+/** @brief Get pin value, blocking until interrupt occur
+ *
+ * @param aDev as_gpio_device pointer structure
+ * @param aPinNum pin number
+ *
+ * @return pin value if positive or null, error if negative
+ */
+int32_t as_gpio_blocking_get_pin_value(struct as_gpio_device *aDev,
+ int aPinNum);
+
/** @brief Get pin pull-up value
*
* @param aDev as_gpio_device pointer structure
@@ -93,7 +107,7 @@ int32_t as_gpio_get_pin_value(struct as_gpio_device *aDev,
* @return pin pull up value if positive or null, error if negative
*/
int32_t as_gpio_get_pullup_value(struct as_gpio_device *aDev,
- int aPinNum);
+ int aPinNum);
/** @brief Set pin pull-up value
*
@@ -104,8 +118,8 @@ int32_t as_gpio_get_pullup_value(struct as_gpio_device *aDev,
* @return error if negative
*/
int32_t as_gpio_set_pullup_value(struct as_gpio_device *aDev,
- int aPinNum,
- int aValue);
+ int aPinNum,
+ int aValue);
/** @brief Set pin irq mode
*
@@ -116,8 +130,8 @@ int32_t as_gpio_set_pullup_value(struct as_gpio_device *aDev,
* @return error if negative
*/
int32_t as_gpio_set_irq_mode(struct as_gpio_device *aDev,
- int aPinNum,
- int aMode);
+ int aPinNum,
+ int aMode);
/** @brief Get pin irq mode value
*
@@ -127,7 +141,7 @@ int32_t as_gpio_set_irq_mode(struct as_gpio_device *aDev,
* @return pin mode value if positive or null, error if negative
*/
int32_t as_gpio_get_irq_mode(struct as_gpio_device *aDev,
- int aPinNum);
+ int aPinNum);
/** @brief Close port access
*
hooks/post-receive
--
armadeus
|
|
From: Fabien M <fa...@us...> - 2010-05-04 10:08:28
|
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "armadeus".
The branch, master has been updated
via be149f1fc2815c742bf3ae4c7883c3fab0392730 (commit)
from 4b868dae8eab68a6e6aa269b6dfe1bda444d0416 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit be149f1fc2815c742bf3ae4c7883c3fab0392730
Author: Fabien Marteau <fab...@ar...>
Date: Tue May 4 12:08:05 2010 +0200
[AsDevices] Add irq mode configuration function (not tested), suppress tab
-----------------------------------------------------------------------
Summary of changes:
target/packages/as_devices/c/as_gpio.c | 114 ++++++++++++++++++++++++++++----
target/packages/as_devices/c/as_gpio.h | 30 ++++++++-
2 files changed, 130 insertions(+), 14 deletions(-)
diff --git a/target/packages/as_devices/c/as_gpio.c b/target/packages/as_devices/c/as_gpio.c
index 0eb22a6..fe33c73 100644
--- a/target/packages/as_devices/c/as_gpio.c
+++ b/target/packages/as_devices/c/as_gpio.c
@@ -29,20 +29,22 @@
#include <sys/ioctl.h>
#include <linux/ppdev.h>
-#define GPIORDDIRECTION _IOR(PP_IOCTL, 0xF0, int)
-#define GPIOWRDIRECTION _IOW(PP_IOCTL, 0xF1, int)
-#define GPIORDDATA _IOR(PP_IOCTL, 0xF2, int)
-#define GPIOWRDATA _IOW(PP_IOCTL, 0xF3, int)
-#define GPIORDMODE _IOR(PP_IOCTL, 0xF4, int)
-#define GPIOWRMODE _IOW(PP_IOCTL, 0xF5, int)
+#define PORT_SIZE (32)
-#define GPIORDPULLUP _IOR(PP_IOCTL, 0xF6, int)
-#define GPIOWRPULLUP _IOR(PP_IOCTL, 0xF7, int)
+#define GPIORDDIRECTION _IOR(PP_IOCTL, 0xF0, int)
+#define GPIOWRDIRECTION _IOW(PP_IOCTL, 0xF1, int)
+#define GPIORDDATA _IOR(PP_IOCTL, 0xF2, int)
+#define GPIOWRDATA _IOW(PP_IOCTL, 0xF3, int)
+#define GPIORDMODE _IOR(PP_IOCTL, 0xF4, int)
+#define GPIOWRMODE _IOW(PP_IOCTL, 0xF5, int)
-#define GPIORDIRQMODE_H _IOR(PP_IOCTL, 0xF8, int)
-#define GPIORDIRQMODE_L _IOR(PP_IOCTL, 0xF9, int)
-#define GPIOWRIRQMODE_H _IOR(PP_IOCTL, 0xFA, int)
-#define GPIOWRIRQMODE_L _IOR(PP_IOCTL, 0xFB, int)
+#define GPIORDPULLUP _IOR(PP_IOCTL, 0xF6, int)
+#define GPIOWRPULLUP _IOR(PP_IOCTL, 0xF7, int)
+
+#define GPIORDIRQMODE_H _IOR(PP_IOCTL, 0xF8, int)
+#define GPIORDIRQMODE_L _IOR(PP_IOCTL, 0xF9, int)
+#define GPIOWRIRQMODE_H _IOR(PP_IOCTL, 0xFA, int)
+#define GPIOWRIRQMODE_L _IOR(PP_IOCTL, 0xFB, int)
#define GPIO_BASE_PORT ("/dev/gpio/port")
@@ -231,6 +233,94 @@ int32_t as_gpio_set_pullup_value(struct as_gpio_device *aDev,
/*------------------------------------------------------------------------------*/
+int32_t as_gpio_get_irq_mode(struct as_gpio_device *aDev,
+ int aPinNum)
+{
+ int ret=0;
+ int portval;
+
+ /* check pin num */
+ if (aPinNum >= PORT_SIZE)
+ return -1;
+
+ if (aPinNum < PORT_SIZE/2)
+ {
+
+ ret = ioctl(aDev->fdev, GPIORDIRQMODE_L, &portval);
+ if (ret < 0) {
+ return ret;
+ }
+
+ portval &= (3 << (aPinNum * 2));
+ return portval >> (aPinNum * 2);
+
+ } else {
+
+ ret = ioctl(aDev->fdev, GPIORDIRQMODE_H, &portval);
+ if (ret < 0) {
+ return ret;
+ }
+
+ portval &= (3 << ((aPinNum - (PORT_SIZE/2)) * 2));
+ return portval >> ((aPinNum - (PORT_SIZE/2)) * 2);
+ }
+}
+
+/*------------------------------------------------------------------------------*/
+
+int32_t as_gpio_set_irq_mode(struct as_gpio_device *aDev,
+ int aPinNum,
+ int aMode)
+{
+ int ret=0;
+ int portval;
+
+ /* check mode value */
+ if (aMode > 3)
+ return -1;
+
+ /* check pin num */
+ if (aPinNum >= PORT_SIZE)
+ return -1;
+
+ if (aPinNum < PORT_SIZE/2)
+ {
+
+ ret = ioctl(aDev->fdev, GPIORDIRQMODE_L, &portval);
+ if (ret < 0) {
+ return ret;
+ }
+
+ portval &= ~(3 << (aPinNum * 2));
+ portval |= (aMode << (aPinNum * 2));
+
+ ret = ioctl(aDev->fdev, GPIOWRIRQMODE_L, &portval);
+ if (ret < 0) {
+ return ret;
+ }
+
+ } else {
+
+ ret = ioctl(aDev->fdev, GPIORDIRQMODE_H, &portval);
+ if (ret < 0) {
+ return ret;
+ }
+
+ portval &= ~(3 << ((aPinNum - (PORT_SIZE/2)) * 2));
+ portval |= (aMode << ((aPinNum - (PORT_SIZE/2)) * 2));
+
+ ret = ioctl(aDev->fdev, GPIOWRIRQMODE_H, &portval);
+ if (ret < 0) {
+ return ret;
+ }
+ }
+
+ return 0;
+
+}
+
+/*------------------------------------------------------------------------------*/
+
int32_t
as_gpio_close(struct as_gpio_device *aDev)
{
diff --git a/target/packages/as_devices/c/as_gpio.h b/target/packages/as_devices/c/as_gpio.h
index 55f26f3..2f591fe 100644
--- a/target/packages/as_devices/c/as_gpio.h
+++ b/target/packages/as_devices/c/as_gpio.h
@@ -28,6 +28,11 @@
extern "C" {
#endif // __cplusplus
+#define GPIO_IRQ_MODE_NOINT (0)
+#define GPIO_IRQ_MODE_RISING (1)
+#define GPIO_IRQ_MODE_FALLING (2)
+#define GPIO_IRQ_MODE_BOTH (3)
+
//TODO: manage irq
/**
@@ -85,7 +90,7 @@ int32_t as_gpio_get_pin_value(struct as_gpio_device *aDev,
* @param aDev as_gpio_device pointer structure
* @param aPinNum pin number
*
- * @return pin value if positive or null, error if negative
+ * @return pin pull up value if positive or null, error if negative
*/
int32_t as_gpio_get_pullup_value(struct as_gpio_device *aDev,
int aPinNum);
@@ -102,13 +107,34 @@ int32_t as_gpio_set_pullup_value(struct as_gpio_device *aDev,
int aPinNum,
int aValue);
+/** @brief Set pin irq mode
+ *
+ * @param aDev as_gpio_device pointer structure
+ * @param aPinNum pin number
+ * @param aMode irq mode
+ *
+ * @return error if negative
+ */
+int32_t as_gpio_set_irq_mode(struct as_gpio_device *aDev,
+ int aPinNum,
+ int aMode);
+
+/** @brief Get pin irq mode value
+ *
+ * @param aDev as_gpio_device pointer structure
+ * @param aPinNum pin number
+ *
+ * @return pin mode value if positive or null, error if negative
+ */
+int32_t as_gpio_get_irq_mode(struct as_gpio_device *aDev,
+ int aPinNum);
+
/** @brief Close port access
*
* @param aDev as_gpio_device pointer structure
*
* @return pin value if positive or null, error if negative
*/
-
int32_t as_gpio_close(struct as_gpio_device *aDev);
#ifdef __cplusplus
hooks/post-receive
--
armadeus
|
|
From: Fabien M <fa...@us...> - 2010-05-04 08:34:39
|
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "armadeus".
The branch, master has been updated
via 4b868dae8eab68a6e6aa269b6dfe1bda444d0416 (commit)
via 701b7cf62b8bd3a8fe3495a9b167122ba1a932f0 (commit)
from 9fa6bc8a3589496fb0a5d9a1e2a5f559ad709933 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 4b868dae8eab68a6e6aa269b6dfe1bda444d0416
Merge: 701b7cf62b8bd3a8fe3495a9b167122ba1a932f0 9fa6bc8a3589496fb0a5d9a1e2a5f559ad709933
Author: Fabien Marteau <fab...@ar...>
Date: Tue May 4 10:33:35 2010 +0200
Merge branch 'master' of ssh://fabm@armadeus.git.sourceforge.net/gitroot/armadeus/armadeus
commit 701b7cf62b8bd3a8fe3495a9b167122ba1a932f0
Author: Fabien Marteau <fab...@ar...>
Date: Tue May 4 10:33:04 2010 +0200
[AsDevices] Adding pullup capability (not tested) and suppress trailling white space
-----------------------------------------------------------------------
Summary of changes:
target/packages/as_devices/c/as_gpio.c | 80 +++++++++++++++++++++++++++-----
target/packages/as_devices/c/as_gpio.h | 40 ++++++++++++----
2 files changed, 99 insertions(+), 21 deletions(-)
diff --git a/target/packages/as_devices/c/as_gpio.c b/target/packages/as_devices/c/as_gpio.c
index c24c4e9..0eb22a6 100644
--- a/target/packages/as_devices/c/as_gpio.c
+++ b/target/packages/as_devices/c/as_gpio.c
@@ -1,19 +1,19 @@
/*
** The ARMadeus Project
-**
-** Copyright (C) 2009 The armadeus systems team
+**
+** Copyright (C) 2009-2010 The armadeus systems team
** Fabien Marteau <fab...@ar...>
-**
+**
** This library is free software; you can redistribute it and/or
** modify it under the terms of the GNU Lesser General Public
** License as published by the Free Software Foundation; either
** version 2.1 of the License, or (at your option) any later version.
-**
+**
** This library 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
** Lesser General Public License for more details.
-**
+**
** You should have received a copy of the GNU Lesser General Public
** License along with this library; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
@@ -27,14 +27,22 @@
#include <unistd.h> /* for close() */
#include <sys/ioctl.h>
-#include <linux/ppdev.h>
+#include <linux/ppdev.h>
#define GPIORDDIRECTION _IOR(PP_IOCTL, 0xF0, int)
#define GPIOWRDIRECTION _IOW(PP_IOCTL, 0xF1, int)
#define GPIORDDATA _IOR(PP_IOCTL, 0xF2, int)
-#define GPIOWRDATA _IOW(PP_IOCTL, 0xF3, int)
+#define GPIOWRDATA _IOW(PP_IOCTL, 0xF3, int)
#define GPIORDMODE _IOR(PP_IOCTL, 0xF4, int)
-#define GPIOWRMODE _IOW(PP_IOCTL, 0xF5, int)
+#define GPIOWRMODE _IOW(PP_IOCTL, 0xF5, int)
+
+#define GPIORDPULLUP _IOR(PP_IOCTL, 0xF6, int)
+#define GPIOWRPULLUP _IOR(PP_IOCTL, 0xF7, int)
+
+#define GPIORDIRQMODE_H _IOR(PP_IOCTL, 0xF8, int)
+#define GPIORDIRQMODE_L _IOR(PP_IOCTL, 0xF9, int)
+#define GPIOWRIRQMODE_H _IOR(PP_IOCTL, 0xFA, int)
+#define GPIOWRIRQMODE_L _IOR(PP_IOCTL, 0xFB, int)
#define GPIO_BASE_PORT ("/dev/gpio/port")
@@ -73,10 +81,10 @@ as_gpio_open(char aPortChar)
return NULL;
}
- dev = (struct as_gpio_device *)malloc(sizeof(struct as_gpio_device));
+ dev = (struct as_gpio_device *)malloc(sizeof(struct as_gpio_device));
if (dev == NULL)
return NULL;
-
+
dev->port_letter = aPortChar;
dev->fdev = ret;
@@ -127,7 +135,7 @@ as_gpio_set_pin_direction(struct as_gpio_device *aDev,
/*------------------------------------------------------------------------------*/
-int32_t
+int32_t
as_gpio_set_pin_value( struct as_gpio_device *aDev,
int aPinNum,
int aValue)
@@ -175,7 +183,55 @@ int32_t as_gpio_get_pin_value( struct as_gpio_device *aDev,
/*------------------------------------------------------------------------------*/
-int32_t
+int32_t as_gpio_get_pullup_value(struct as_gpio_device *aDev,
+ int aPinNum)
+{
+ int ret=0;
+ int portval;
+
+ ret = ioctl(aDev->fdev, GPIORDPULLUP, &portval);
+ if (ret < 0) {
+ return ret;
+ }
+
+ if ((portval & (1<<aPinNum)) != 0) {
+ return 1;
+ } else {
+ return 0;
+ }
+
+}
+
+/*------------------------------------------------------------------------------*/
+
+int32_t as_gpio_set_pullup_value(struct as_gpio_device *aDev,
+ int aPinNum,
+ int aValue)
+{
+ int ret=0;
+ int portval;
+
+ ret = ioctl(aDev->fdev, GPIORDPULLUP, &portval);
+ if (ret < 0) {
+ return ret;
+ }
+
+ if (aValue == 0) {
+ portval &= ~(1 << aPinNum);
+ } else {
+ portval |= (1 << aPinNum);
+ }
+ ret = ioctl(aDev->fdev, GPIOWRPULLUP, &portval);
+ if (ret < 0) {
+ return ret;
+ }
+
+ return 0;
+}
+
+/*------------------------------------------------------------------------------*/
+
+int32_t
as_gpio_close(struct as_gpio_device *aDev)
{
int ret;
diff --git a/target/packages/as_devices/c/as_gpio.h b/target/packages/as_devices/c/as_gpio.h
index 48dee74..55f26f3 100644
--- a/target/packages/as_devices/c/as_gpio.h
+++ b/target/packages/as_devices/c/as_gpio.h
@@ -1,19 +1,19 @@
/*
** The ARMadeus Project
-**
-** Copyright (C) 2009 The armadeus systems team
+**
+** Copyright (C) 2009-2010 The armadeus systems team
** Fabien Marteau <fab...@ar...>
-**
+**
** This library is free software; you can redistribute it and/or
** modify it under the terms of the GNU Lesser General Public
** License as published by the Free Software Foundation; either
** version 2.1 of the License, or (at your option) any later version.
-**
+**
** This library 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
** Lesser General Public License for more details.
-**
+**
** You should have received a copy of the GNU Lesser General Public
** License along with this library; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
@@ -42,7 +42,7 @@ struct as_gpio_device {
*
* @param aPortChar character port in UPPER case
*
- * @return error if negative value
+ * @return error if negative value
*/
struct as_gpio_device *as_gpio_open(char aPortChar);
@@ -52,19 +52,19 @@ struct as_gpio_device *as_gpio_open(char aPortChar);
* @param aPinNum pin number
* @param aDirection direction 0:input 1:output
*
- * @return error if negative value
+ * @return error if negative value
*/
int32_t as_gpio_set_pin_direction(struct as_gpio_device *aDev,
int aPinNum,
int aDirection);
-/** @brief Set pin value
+/** @brief Set pin value
*
* @param aDev as_gpio_device pointer structure
* @param aPinNum pin number
* @param aValue value of pin (1 or 0)
*
- * @return error if negative
+ * @return error if negative
*/
int32_t as_gpio_set_pin_value(struct as_gpio_device *aDev,
int aPinNum,
@@ -80,6 +80,28 @@ int32_t as_gpio_set_pin_value(struct as_gpio_device *aDev,
int32_t as_gpio_get_pin_value(struct as_gpio_device *aDev,
int aPinNum);
+/** @brief Get pin pull-up value
+ *
+ * @param aDev as_gpio_device pointer structure
+ * @param aPinNum pin number
+ *
+ * @return pin value if positive or null, error if negative
+ */
+int32_t as_gpio_get_pullup_value(struct as_gpio_device *aDev,
+ int aPinNum);
+
+/** @brief Set pin pull-up value
+ *
+ * @param aDev as_gpio_device pointer structure
+ * @param aPinNum pin number
+ * @param aValue value of pin (1 or 0)
+ *
+ * @return error if negative
+ */
+int32_t as_gpio_set_pullup_value(struct as_gpio_device *aDev,
+ int aPinNum,
+ int aValue);
+
/** @brief Close port access
*
* @param aDev as_gpio_device pointer structure
hooks/post-receive
--
armadeus
|
|
From: Julien B a. A. <ar...@us...> - 2010-05-03 14:18:06
|
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "armadeus".
The branch, master has been updated
via 9fa6bc8a3589496fb0a5d9a1e2a5f559ad709933 (commit)
via 6683ecc650eb681a0dade8d2598eb2ba22b9edc6 (commit)
via 0eb5b0e5ad78f370ae8e5d91da2c500715b10c5c (commit)
from a2b0f5a38618a22eaec6d4849e56f9e8fef9993b (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 9fa6bc8a3589496fb0a5d9a1e2a5f559ad709933
Author: Julien Boibessot <jul...@ar...>
Date: Mon May 3 16:10:00 2010 +0200
[BUILDROOT] Add wpa_supplicant package (for 2008.11 Buildroot)
commit 6683ecc650eb681a0dade8d2598eb2ba22b9edc6
Author: Julien Boibessot <jul...@ar...>
Date: Fri Apr 30 19:29:15 2010 +0200
[DEMOS] Add better error handling in capture app
commit 0eb5b0e5ad78f370ae8e5d91da2c500715b10c5c
Author: Julien Boibessot <jul...@ar...>
Date: Fri Apr 30 19:26:58 2010 +0200
Add backlight_control/.gitignore
-----------------------------------------------------------------------
Summary of changes:
.../target/device/armadeus/apf27/apf27_defconfig | 3 +-
.../buildroot/108-wpa_supplicant-add_package.patch | 139 ++++++++++++++++++++
patches/buildroot/cleanup_buildroot.sh | 1 +
target/demos/backlight_control/.gitignore | 1 +
target/demos/camera/capture/capture.c | 48 +++++---
5 files changed, 174 insertions(+), 18 deletions(-)
create mode 100644 patches/buildroot/108-wpa_supplicant-add_package.patch
create mode 100644 target/demos/backlight_control/.gitignore
diff --git a/buildroot/target/device/armadeus/apf27/apf27_defconfig b/buildroot/target/device/armadeus/apf27/apf27_defconfig
index 08daaf0..4078a18 100644
--- a/buildroot/target/device/armadeus/apf27/apf27_defconfig
+++ b/buildroot/target/device/armadeus/apf27/apf27_defconfig
@@ -1,6 +1,6 @@
#
# Automatically generated make config: don't edit
-# Fri Apr 30 09:57:54 2010
+# Mon May 3 15:55:29 2010
#
BR2_HAVE_DOT_CONFIG=y
BR2_VERSION="0.10.0-svn"
@@ -490,6 +490,7 @@ BR2_PACKAGE_PORTMAP=y
# BR2_PACKAGE_VTUN is not set
# BR2_PACKAGE_WEBIF is not set
BR2_PACKAGE_WIRELESS_TOOLS=y
+# BR2_PACKAGE_WPA_SUPPLICANT is not set
BR2_BLOCKDEV_SUPPORT=y
#
diff --git a/patches/buildroot/108-wpa_supplicant-add_package.patch b/patches/buildroot/108-wpa_supplicant-add_package.patch
new file mode 100644
index 0000000..9084c28
--- /dev/null
+++ b/patches/buildroot/108-wpa_supplicant-add_package.patch
@@ -0,0 +1,139 @@
+
+Backport of wpa_supplicant integration from Buildroot mainline.
+
+Not needed for recent BR.
+
+Index: buildroot/package/Config.in
+===================================================================
+--- buildroot.orig/package/Config.in 2010-05-03 14:23:54.000000000 +0200
++++ buildroot/package/Config.in 2010-05-03 14:25:24.000000000 +0200
+@@ -236,6 +236,7 @@
+ source "package/wget/Config.in"
+ endif
+ source "package/wireless-tools/Config.in"
++source "package/wpa_supplicant/Config.in"
+
+ endif
+
+Index: buildroot/package/wpa_supplicant/Config.in
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ buildroot/package/wpa_supplicant/Config.in 2010-05-03 14:29:34.000000000 +0200
+@@ -0,0 +1,32 @@
++config BR2_PACKAGE_WPA_SUPPLICANT
++ bool "wpa_supplicant"
++ help
++ WPA supplicant for secure wireless networks
++
++ http://hostap.epitest.fi/wpa_supplicant/
++
++config BR2_PACKAGE_WPA_SUPPLICANT_EAP
++ bool "Enable WPA with EAP"
++ depends on BR2_PACKAGE_WPA_SUPPLICANT
++ help
++ Enable WPA with EAP (IEEE 802.1X)
++
++config BR2_PACKAGE_WPA_SUPPLICANT_OPENSSL
++ bool "Use openssl TLS (recommended)"
++ depends on BR2_PACKAGE_WPA_SUPPLICANT && BR2_PACKAGE_WPA_SUPPLICANT_EAP
++ select BR2_PACKAGE_OPENSSL
++ help
++ Use OpenSSL's TLS implementation instead of internal libtommath.
++
++config BR2_PACKAGE_WPA_SUPPLICANT_CLI
++ bool "Install wpa_cli binary"
++ depends on BR2_PACKAGE_WPA_SUPPLICANT
++ help
++ Install wpa_cli command line utility
++
++config BR2_PACKAGE_WPA_SUPPLICANT_PASSPHRASE
++ bool "Install wpa_passphrase binary"
++ depends on BR2_PACKAGE_WPA_SUPPLICANT
++ help
++ Install wpa_passphrase command line utility
++
+Index: buildroot/package/wpa_supplicant/wpa_supplicant.mk
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ buildroot/package/wpa_supplicant/wpa_supplicant.mk 2010-05-03 14:33:11.000000000 +0200
+@@ -0,0 +1,80 @@
++#############################################################
++#
++# wpa_supplicant
++#
++#############################################################
++
++WPA_SUPPLICANT_VERSION = 0.6.10
++WPA_SUPPLICANT_SITE = http://hostap.epitest.fi/releases
++WPA_SUPPLICANT_LIBTOOL_PATCH = NO
++WPA_SUPPLICANT_INSTALL_TARGET_OPT = DESTDIR=$(TARGET_DIR) install
++WPA_SUPPLICANT_DEPENDENCIES =
++WPA_SUPPLICANT_CONFIG = $(WPA_SUPPLICANT_DIR)/wpa_supplicant/.config
++WPA_SUPPLICANT_SUBDIR = wpa_supplicant
++WPA_SUPPLICANT_TARGET_BINS = wpa_cli wpa_supplicant wpa_passphrase
++WPA_SUPPLICANT_DBUS_SERVICE = fi.epitest.hostap.WPASupplicant
++
++ifeq ($(BR2_PACKAGE_LIBNL),y)
++ WPA_SUPPLICANT_DEPENDENCIES += libnl
++endif
++
++ifeq ($(BR2_PACKAGE_WPA_SUPPLICANT_OPENSSL),y)
++ WPA_SUPPLICANT_DEPENDENCIES += openssl
++endif
++ifeq ($(BR2_PACKAGE_DBUS),y)
++ WPA_SUPPLICANT_DEPENDENCIES += host-pkgconfig dbus
++ WPA_SUPPLICANT_MAKE_ENV = \
++ PKG_CONFIG_SYSROOT_DIR="$(STAGING_DIR)" \
++ PKG_CONFIG_PATH="$(STAGING_DIR)/usr/lib/pkgconfig"
++endif
++
++$(eval $(call AUTOTARGETS,package,wpa_supplicant))
++
++$(WPA_SUPPLICANT_TARGET_CONFIGURE):
++ cp $(WPA_SUPPLICANT_DIR)/wpa_supplicant/defconfig $(WPA_SUPPLICANT_CONFIG)
++ echo "CFLAGS += $(TARGET_CFLAGS)" >>$(WPA_SUPPLICANT_CONFIG)
++ echo "CC = $(TARGET_CC)" >>$(WPA_SUPPLICANT_CONFIG)
++ $(SED) "s/\/local//" $(WPA_SUPPLICANT_DIR)/wpa_supplicant/Makefile
++ifneq ($(BR2_PACKAGE_WPA_SUPPLICANT_EAP),y)
++ $(SED) "s/^CONFIG_EAP_*/#CONFIG_EAP_/g" $(WPA_SUPPLICANT_CONFIG)
++ echo "CONFIG_TLS=none" >>$(WPA_SUPPLICANT_CONFIG)
++else
++ifeq ($(BR2_PACKAGE_WPA_SUPPLICANT_OPENSSL),y)
++ echo "CONFIG_TLS=openssl" >>$(WPA_SUPPLICANT_CONFIG)
++else
++ echo "CONFIG_TLS=internal" >>$(WPA_SUPPLICANT_CONFIG)
++ echo "CONFIG_INTERNAL_LIBTOMMATH=y" >>$(WPA_SUPPLICANT_CONFIG)
++endif
++endif
++ifeq ($(BR2_PACKAGE_DBUS),y)
++ echo "CONFIG_CTRL_IFACE_DBUS=y" >>$(WPA_SUPPLICANT_CONFIG)
++endif
++ifeq ($(BR2_PACKAGE_LIBNL),y)
++ echo "CONFIG_DRIVER_NL80211=y" >>$(WPA_SUPPLICANT_CONFIG)
++endif
++ touch $@
++
++$(WPA_SUPPLICANT_HOOK_POST_INSTALL):
++ifneq ($(BR2_PACKAGE_WPA_SUPPLICANT_CLI),y)
++ rm -f $(TARGET_DIR)/usr/sbin/wpa_cli
++endif
++ifneq ($(BR2_PACKAGE_WPA_SUPPLICANT_PASSPHRASE),y)
++ rm -f $(TARGET_DIR)/usr/sbin/wpa_passphrase
++endif
++ifeq ($(BR2_PACKAGE_DBUS),y)
++ $(INSTALL) -D \
++ $(WPA_SUPPLICANT_DIR)/wpa_supplicant/dbus-wpa_supplicant.conf \
++ $(TARGET_DIR)/etc/dbus-1/system.d/wpa_supplicant.conf
++ $(INSTALL) -D \
++ $(WPA_SUPPLICANT_DIR)/wpa_supplicant/dbus-wpa_supplicant.service \
++ $(TARGET_DIR)/usr/share/dbus-1/system-services/$(WPA_SUPPLICANT_DBUS_SERVICE).service
++endif
++ touch $@
++
++$(WPA_SUPPLICANT_TARGET_UNINSTALL):
++ $(call MESSAGE,"Uninstalling")
++ rm -f $(addprefix $(TARGET_DIR)/usr/sbin/, $(WPA_SUPPLICANT_TARGET_BINS))
++ rm -f $(TARGET_DIR)/etc/dbus-1/system.d/wpa_supplicant.conf
++ rm -f $(TARGET_DIR)/usr/share/dbus-1/system-services/$(WPA_SUPPLICANT_DBUS_SERVICE).service
++ rm -f $(WPA_SUPPLICANT_TARGET_INSTALL_TARGET) $(WPA_SUPPLICANT_HOOK_POST_INSTALL)
++
diff --git a/patches/buildroot/cleanup_buildroot.sh b/patches/buildroot/cleanup_buildroot.sh
index 12117e8..4194e47 100755
--- a/patches/buildroot/cleanup_buildroot.sh
+++ b/patches/buildroot/cleanup_buildroot.sh
@@ -17,3 +17,4 @@ rm -f buildroot/package/audio/madplay/madplay-audio-alsa.patch
rm -f buildroot/package/mplayer/mplayer-1.0rc1-add_pld_asm_inst_for_non_armv5_arch.patch
rm -f buildroot/package/busybox/busybox-1.12.1-speed_table-B921600.patch
rm -rf buildroot/package/firmware/
+rm -rf buildroot/package/wpa_supplicant/
diff --git a/target/demos/backlight_control/.gitignore b/target/demos/backlight_control/.gitignore
new file mode 100644
index 0000000..bc78951
--- /dev/null
+++ b/target/demos/backlight_control/.gitignore
@@ -0,0 +1 @@
+backlight
diff --git a/target/demos/camera/capture/capture.c b/target/demos/camera/capture/capture.c
index 8282784..23c8a8b 100644
--- a/target/demos/camera/capture/capture.c
+++ b/target/demos/camera/capture/capture.c
@@ -200,7 +200,7 @@ static void simple_copy(void *yuv, int size, void* rgb)
memcpy(rgb, yuv, size);
}
-static void process_image(/*const */void *pCaptured)
+static void process_image(/*const */void *pCaptured, int size)
{
SDL_Rect update_rec;
@@ -212,7 +212,9 @@ static void process_image(/*const */void *pCaptured)
if (mycamera.pixelformat != V4L2_PIX_FMT_RGB565) {
printf("Unknown image format\n");
}
- simple_copy(pCaptured, mycamera.sizeimage, image->pixels);
+ if (size == 0)
+ size = mycamera.sizeimage;
+ simple_copy(pCaptured, size, image->pixels);
}
/* Blit converted image on screen */
@@ -231,7 +233,7 @@ static int read_frame(void)
switch (io) {
case IO_METHOD_READ:
- if (-1 == read (fd, buffers[0].start, buffers[0].length)) {
+ if (-1 == read(fd, buffers[0].start, buffers[0].length)) {
switch (errno) {
case EAGAIN:
return 0;
@@ -246,7 +248,7 @@ static int read_frame(void)
}
}
- process_image (buffers[0].start);
+ process_image(buffers[0].start, buffers[0].length);
break;
@@ -256,7 +258,7 @@ static int read_frame(void)
buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
buf.memory = V4L2_MEMORY_MMAP;
- if (-1 == xioctl (fd, VIDIOC_DQBUF, &buf)) {
+ if (-1 == xioctl(fd, VIDIOC_DQBUF, &buf)) {
switch (errno) {
case EAGAIN:
return 0;
@@ -267,16 +269,16 @@ static int read_frame(void)
/* fall through */
default:
- errno_exit ("VIDIOC_DQBUF");
+ errno_exit("VIDIOC_DQBUF");
}
}
assert (buf.index < n_buffers);
- process_image (buffers[buf.index].start);
+ process_image(buffers[buf.index].start, buf.length);
- if (-1 == xioctl (fd, VIDIOC_QBUF, &buf))
- errno_exit ("VIDIOC_QBUF");
+ if (-1 == xioctl(fd, VIDIOC_QBUF, &buf))
+ errno_exit("VIDIOC_QBUF");
break;
@@ -308,7 +310,7 @@ static int read_frame(void)
assert (i < n_buffers);
- process_image ((void *) buf.m.userptr);
+ process_image((void *) buf.m.userptr, 0);
if (-1 == xioctl (fd, VIDIOC_QBUF, &buf))
errno_exit ("VIDIOC_QBUF");
@@ -512,7 +514,7 @@ static void init_mmap(void)
exit (EXIT_FAILURE);
}
- buffers = calloc (req.count, sizeof (*buffers));
+ buffers = calloc(req.count, sizeof (*buffers));
if (!buffers) {
fprintf (stderr, "Out of memory\n");
@@ -615,12 +617,16 @@ static Uint32 get_a_supported_pix_fmt(void)
if (-1 == ioctl(fd, VIDIOC_ENUM_FMT, &fmtdesc))
break;
- if ((fmtdesc.pixelformat == V4L2_PIX_FMT_YUYV) || (fmtdesc.pixelformat == V4L2_PIX_FMT_YUV420)) {
+ if ((fmtdesc.pixelformat == V4L2_PIX_FMT_YUYV)
+ || (fmtdesc.pixelformat == V4L2_PIX_FMT_YUV420)
+ || (fmtdesc.pixelformat == V4L2_PIX_FMT_JPEG)) {
fprintf(stdout, "Using img format (%d 0x%08x): ", i, fmtdesc.pixelformat);
if (fmtdesc.pixelformat == V4L2_PIX_FMT_YUYV)
fprintf(stdout, "YUYV (YUV:4:2:2)\n");
if (fmtdesc.pixelformat == V4L2_PIX_FMT_YUV420)
fprintf(stdout, "YUV:4:2:0\n");
+ if (fmtdesc.pixelformat == V4L2_PIX_FMT_JPEG)
+ fprintf(stdout, "JPEG\n");
return fmtdesc.pixelformat;
}
}
@@ -704,6 +710,7 @@ static void init_device(unsigned int capt_width, unsigned int capt_height)
if (!fmt.fmt.pix.pixelformat) {
fprintf(stderr, "%s does not support requested img formats\n",
dev_name);
+ exit(EXIT_FAILURE);
}
fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
@@ -731,19 +738,22 @@ static void init_device(unsigned int capt_width, unsigned int capt_height)
mycamera.bytesperline = fmt.fmt.pix.bytesperline;
mycamera.sizeimage = fmt.fmt.pix.sizeimage;
+ fprintf(stdout, " picture size: %d\n", fmt.fmt.pix.sizeimage);
+
switch (io) {
case IO_METHOD_READ:
- init_read (fmt.fmt.pix.sizeimage);
+ init_read(fmt.fmt.pix.sizeimage);
break;
case IO_METHOD_MMAP:
- init_mmap ();
+ init_mmap();
break;
case IO_METHOD_USERPTR:
- init_userp (fmt.fmt.pix.sizeimage);
+ init_userp(fmt.fmt.pix.sizeimage);
break;
}
+ fprintf(stdout, " OK\n");
}
static void close_device(void)
@@ -884,8 +894,12 @@ int main(int argc, char **argv)
camheight = camheight > height ? height : camheight;
init_device(camwidth, camheight);
- SDL_Init(SDL_INIT_VIDEO);
- screen = SDL_SetVideoMode(width, height, 16, (SDL_HWSURFACE));
+ if (SDL_Init(SDL_INIT_VIDEO) < 0) {
+ fprintf(stderr, "Unable to init SDL: %s\n", SDL_GetError());
+ exit(EXIT_FAILURE);
+ }
+ fprintf(stderr, "SDL OK\n");
+ screen = SDL_SetVideoMode(width, height, 16, SDL_ANYFORMAT | SDL_DOUBLEBUF | SDL_HWSURFACE);
if (screen) {
printf("Video mode: %dx%dx%d\n", screen->w, screen->h,
screen->format->BitsPerPixel);
hooks/post-receive
--
armadeus
|
|
From: Julien B a. A. <ar...@us...> - 2010-04-30 08:06:39
|
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "armadeus".
The branch, master has been updated
via a2b0f5a38618a22eaec6d4849e56f9e8fef9993b (commit)
via 317605198ed611baeac487c1c01a4405501eac66 (commit)
from d6a993678745fe0c8fc42473db042d767031f9d6 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit a2b0f5a38618a22eaec6d4849e56f9e8fef9993b
Merge: 317605198ed611baeac487c1c01a4405501eac66 d6a993678745fe0c8fc42473db042d767031f9d6
Author: Julien Boibessot <jul...@ar...>
Date: Fri Apr 30 10:05:16 2010 +0200
Merge branch 'master' of ssh://artemys@armadeus.git.sourceforge.net/gitroot/armadeus/armadeus
commit 317605198ed611baeac487c1c01a4405501eac66
Author: Julien Boibessot <jul...@ar...>
Date: Fri Apr 30 10:04:30 2010 +0200
[BUILDROOT] Add default config for linux-firmware
-----------------------------------------------------------------------
Summary of changes:
buildroot/configs/apf27_defconfig | 5 ++++-
buildroot/configs/apf9328_defconfig | 5 ++++-
.../target/device/armadeus/apf27/apf27_defconfig | 5 ++++-
.../device/armadeus/apf9328/apf9328_defconfig | 5 ++++-
4 files changed, 16 insertions(+), 4 deletions(-)
diff --git a/buildroot/configs/apf27_defconfig b/buildroot/configs/apf27_defconfig
index a8f0d64..1edd944 100644
--- a/buildroot/configs/apf27_defconfig
+++ b/buildroot/configs/apf27_defconfig
@@ -1,6 +1,6 @@
#
# Automatically generated make config: don't edit
-# Fri Apr 23 16:15:36 2010
+# Fri Apr 30 09:57:54 2010
#
BR2_HAVE_DOT_CONFIG=y
BR2_VERSION="2010.02-rc1"
@@ -323,6 +323,9 @@ BR2_PACKAGE_IMXREGS=y
# BR2_PACKAGE_IMXSSI is not set
BR2_PACKAGE_MAX5821CTRL=y
# BR2_PACKAGE_ARMADEUS_TESTSUITE is not set
+# BR2_PACKAGE_FIRMWARE is not set
+# BR2_PACKAGE_FIRMWARE_88W8686_SDIO_V8 is not set
+# BR2_PACKAGE_FIRMWARE_88W8686_SDIO_V9 is not set
# BR2_PACKAGE_DUMMY is not set
# BR2_PACKAGE_SNES9X is not set
diff --git a/buildroot/configs/apf9328_defconfig b/buildroot/configs/apf9328_defconfig
index 82418da..3aee04a 100644
--- a/buildroot/configs/apf9328_defconfig
+++ b/buildroot/configs/apf9328_defconfig
@@ -1,6 +1,6 @@
#
# Automatically generated make config: don't edit
-# Fri Apr 23 16:43:36 2010
+# Fri Apr 30 09:57:54 2010
#
BR2_HAVE_DOT_CONFIG=y
BR2_VERSION="2010.02"
@@ -320,6 +320,9 @@ BR2_PACKAGE_IMXREGS=y
# BR2_PACKAGE_IMXSSI is not set
BR2_PACKAGE_MAX5821CTRL=y
# BR2_PACKAGE_ARMADEUS_TESTSUITE is not set
+# BR2_PACKAGE_FIRMWARE is not set
+# BR2_PACKAGE_FIRMWARE_88W8686_SDIO_V8 is not set
+# BR2_PACKAGE_FIRMWARE_88W8686_SDIO_V9 is not set
# BR2_PACKAGE_DUMMY is not set
# BR2_PACKAGE_SNES9X is not set
diff --git a/buildroot/target/device/armadeus/apf27/apf27_defconfig b/buildroot/target/device/armadeus/apf27/apf27_defconfig
index 6b4c011..08daaf0 100644
--- a/buildroot/target/device/armadeus/apf27/apf27_defconfig
+++ b/buildroot/target/device/armadeus/apf27/apf27_defconfig
@@ -1,6 +1,6 @@
#
# Automatically generated make config: don't edit
-# Fri Apr 23 16:15:36 2010
+# Fri Apr 30 09:57:54 2010
#
BR2_HAVE_DOT_CONFIG=y
BR2_VERSION="0.10.0-svn"
@@ -349,6 +349,9 @@ BR2_PACKAGE_IMXREGS=y
# BR2_PACKAGE_IMXSSI is not set
BR2_PACKAGE_MAX5821CTRL=y
# BR2_PACKAGE_ARMADEUS_TESTSUITE is not set
+# BR2_PACKAGE_FIRMWARE is not set
+# BR2_PACKAGE_FIRMWARE_88W8686_SDIO_V8 is not set
+# BR2_PACKAGE_FIRMWARE_88W8686_SDIO_V9 is not set
# BR2_PACKAGE_DUMMY is not set
# BR2_PACKAGE_FBTEST is not set
# BR2_PACKAGE_SNES9X is not set
diff --git a/buildroot/target/device/armadeus/apf9328/apf9328_defconfig b/buildroot/target/device/armadeus/apf9328/apf9328_defconfig
index 07716a1..1d75fb7 100644
--- a/buildroot/target/device/armadeus/apf9328/apf9328_defconfig
+++ b/buildroot/target/device/armadeus/apf9328/apf9328_defconfig
@@ -1,6 +1,6 @@
#
# Automatically generated make config: don't edit
-# Fri Apr 23 16:43:36 2010
+# Fri Apr 30 09:57:54 2010
#
BR2_HAVE_DOT_CONFIG=y
BR2_VERSION="0.10.0-svn"
@@ -345,6 +345,9 @@ BR2_PACKAGE_IMXREGS=y
# BR2_PACKAGE_IMXSSI is not set
BR2_PACKAGE_MAX5821CTRL=y
# BR2_PACKAGE_ARMADEUS_TESTSUITE is not set
+# BR2_PACKAGE_FIRMWARE is not set
+# BR2_PACKAGE_FIRMWARE_88W8686_SDIO_V8 is not set
+# BR2_PACKAGE_FIRMWARE_88W8686_SDIO_V9 is not set
# BR2_PACKAGE_DUMMY is not set
# BR2_PACKAGE_FBTEST is not set
# BR2_PACKAGE_SNES9X is not set
hooks/post-receive
--
armadeus
|
|
From: jorasse <jo...@us...> - 2010-04-29 01:28:05
|
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "armadeus".
The branch, master has been updated
via d6a993678745fe0c8fc42473db042d767031f9d6 (commit)
via ad3378c08224e7dc826acb597cc5888acf01c86b (commit)
from 9a8fafb0679025cb5c15f93339022d0c5504d7db (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit d6a993678745fe0c8fc42473db042d767031f9d6
Merge: ad3378c08224e7dc826acb597cc5888acf01c86b 9a8fafb0679025cb5c15f93339022d0c5504d7db
Author: Eric Jarrige <jo...@ar...>
Date: Thu Apr 29 03:26:56 2010 +0200
Merge branch 'master' of ssh://jorasse@armadeus.git.sourceforge.net/gitroot/armadeus/armadeus
commit ad3378c08224e7dc826acb597cc5888acf01c86b
Author: Eric Jarrige <jo...@ar...>
Date: Thu Apr 29 03:26:04 2010 +0200
[UBOOT] Fix clock init to support bootstrap loader
-----------------------------------------------------------------------
Summary of changes:
.../target/u-boot/u-boot-2010.03-310-apf27.patch | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/buildroot/target/u-boot/u-boot-2010.03-310-apf27.patch b/buildroot/target/u-boot/u-boot-2010.03-310-apf27.patch
index 71d51fc..283b389 100755
--- a/buildroot/target/u-boot/u-boot-2010.03-310-apf27.patch
+++ b/buildroot/target/u-boot/u-boot-2010.03-310-apf27.patch
@@ -848,7 +848,6 @@
+ writel(DSCR2, CONFIG_SYS_DSCR2_VAL)
+
+
-+ init_clock
+
+ /* skip clock and sdram initialization if we run from ram */
+ cmp pc, #0xa0000000
@@ -858,6 +857,7 @@
+
+ mov pc,r10
+1:
++ init_clock
+
+ sdram_init
+
hooks/post-receive
--
armadeus
|
|
From: Julien B a. A. <ar...@us...> - 2010-04-28 15:52:45
|
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "armadeus".
The branch, master has been updated
via 9a8fafb0679025cb5c15f93339022d0c5504d7db (commit)
via 129357017255ed7b5092f047d2c3bd8c0d67ba8e (commit)
from 16aed16c6fe21ec3655d09173fe050df36c4b71a (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 9a8fafb0679025cb5c15f93339022d0c5504d7db
Author: Julien Boibessot <jul...@ar...>
Date: Wed Apr 28 17:47:36 2010 +0200
[BUILDROOT] Add an infrastructure to install closed source linux-firmwares
commit 129357017255ed7b5092f047d2c3bd8c0d67ba8e
Author: Julien Boibessot <jul...@ar...>
Date: Tue Apr 27 11:18:11 2010 +0200
[LINUX] gpio: correct bug in armadeus_gpio_dev_read() (thanks to CimCim) and apply Linux coding rules on some function names
-----------------------------------------------------------------------
Summary of changes:
...e-add_infrastructure_to_install_firmwares.patch | 147 ++++++++++++++++++++
...e-add_infrastructure_to_install_firmwares.patch | 147 ++++++++++++++++++++
patches/buildroot/2010.02/cleanup_buildroot.sh | 1 +
patches/buildroot/cleanup_buildroot.sh | 1 +
target/linux/modules/gpio/core.c | 66 ++++-----
5 files changed, 327 insertions(+), 35 deletions(-)
create mode 100644 patches/buildroot/106-firmware-add_infrastructure_to_install_firmwares.patch
create mode 100644 patches/buildroot/2010.02/106-firmware-add_infrastructure_to_install_firmwares.patch
diff --git a/patches/buildroot/106-firmware-add_infrastructure_to_install_firmwares.patch b/patches/buildroot/106-firmware-add_infrastructure_to_install_firmwares.patch
new file mode 100644
index 0000000..e2a2f0c
--- /dev/null
+++ b/patches/buildroot/106-firmware-add_infrastructure_to_install_firmwares.patch
@@ -0,0 +1,147 @@
+Add infrastructure to download linux-firmwares.
+Currently only libertas 88W8686 firmwares are handled.
+
+Signed-off-by: Julien Boibessot <jul...@ar...>
+
+Index: buildroot/package/Config.in
+===================================================================
+--- buildroot.orig/package/Config.in 2010-04-27 14:52:04.000000000 +0200
++++ buildroot/package/Config.in 2010-04-27 14:54:12.000000000 +0200
+@@ -256,6 +256,7 @@
+ source "package/e2fsprogs/Config.in"
+ source "package/eeprog/Config.in"
+ source "package/fconfig/Config.in"
++source "package/firmware/Config.in"
+ source "package/fis/Config.in"
+ source "package/fuse/Config.in"
+ source "package/gadgetfs-test/Config.in"
+Index: buildroot/package/firmware/Config.in
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ buildroot/package/firmware/Config.in 2010-04-28 14:57:55.000000000 +0200
+@@ -0,0 +1,49 @@
++menuconfig BR2_PACKAGE_FIRMWARE
++ bool "linux-firmware"
++ help
++ Install selected firmware from linux-firmware.git repository.
++
++ This repository was setup by David Woodhouse in order to:
++ "include firmware files from vendors who have chosen not to
++ contribute their firmware to be distributed as part of the GPL'd
++ kernel source tree, but would still like their firmware to be readily
++ available to Linux users."
++
++
++if BR2_PACKAGE_FIRMWARE
++
++comment "Video"
++
++comment "WiFi chipsets"
++
++config BR2_PACKAGE_FIRMWARE_88W8686
++ bool "Marvell's 88W8686 (Libertas)"
++
++config BR2_PACKAGE_FIRMWARE_88W8686_SDIO
++ bool "SDIO"
++ default y
++ depends on BR2_PACKAGE_FIRMWARE_88W8686
++
++choice
++ prompt "Firmware version"
++ default BR2_PACKAGE_FIRMWARE_88W8686_SDIO_V9
++ depends on BR2_PACKAGE_FIRMWARE_88W8686_SDIO
++ help
++ SDIO firmware is available in v8 or v9 version.
++
++config BR2_PACKAGE_FIRMWARE_88W8686_SDIO_V8
++ bool "v8"
++
++config BR2_PACKAGE_FIRMWARE_88W8686_SDIO_V9
++ bool "v9"
++
++endchoice
++
++config BR2_PACKAGE_FIRMWARE_88W8686_GSPI
++ bool "GSPI"
++ depends on BR2_PACKAGE_FIRMWARE_88W8686
++
++comment "Others"
++
++endif
++
+Index: buildroot/package/firmware/firmware.mk
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ buildroot/package/firmware/firmware.mk 2010-04-28 17:28:13.000000000 +0200
+@@ -0,0 +1,71 @@
++#############################################################
++#
++# Get and install some linux-firmware
++#
++#############################################################
++FIRMWARE_VERSION:=af5222c5ded5d944267acfbd001571409bea7eeb
++FIRMWARE_SOURCE:=firmware-$(FIRMWARE_VERSION).tar.gz
++FIRMWARE_GIT:=git://git.kernel.org/pub/scm/linux/kernel/git/dwmw2/linux-firmware.git
++FIRMWARE_DIR:=$(BUILD_DIR)/firmware-$(FIRMWARE_VERSION)
++FIRMWARE_TARGET_DIR:=$(TARGET_DIR)/lib/firmware
++FIRMWARE_CAT:=$(ZCAT)
++FIRMWARE_NAME:=firmware-$(FIRMWARE_VERSION)
++
++
++ifeq ($(strip $(BR2_PACKAGE_FIRMWARE_88W8686_SDIO)),y)
++FIRMWARE_BINARIES+=sd8686_helper.bin sd8686.bin
++endif
++ifeq ($(strip $(BR2_PACKAGE_FIRMWARE_88W8686_GSPI)),y)
++FIRMWARE_BINARIES+=gspi8686_helper.bin gspi8686.bin
++endif
++ifeq ($(strip $(BR2_PACKAGE_FIRMWARE_88W8686_SDIO_V8)),y)
++FIRMWARE_88W8686_SDIO_VERSION:=_v8
++else
++FIRMWARE_88W8686_SDIO_VERSION:=_v9
++endif
++
++$(DL_DIR)/$(FIRMWARE_SOURCE):
++ git clone $(FIRMWARE_GIT) $(FIRMWARE_DIR)
++ (cd $(FIRMWARE_DIR); \
++ git archive --prefix=$(FIRMWARE_NAME)/ $(FIRMWARE_VERSION) | \
++ gzip > $(DL_DIR)/$(FIRMWARE_SOURCE) )
++ rm -rf $(FIRMWARE_DIR)
++# $(WGET) -O $(DL_DIR)/$(FIRMWARE_SOURCE) "$(FIRMWARE_URL)"
++
++$(FIRMWARE_DIR)/.unpacked: $(DL_DIR)/$(FIRMWARE_SOURCE)
++ $(FIRMWARE_CAT) $(DL_DIR)/$(FIRMWARE_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) -
++ touch $@
++
++$(FIRMWARE_DIR)/.installed: $(FIRMWARE_DIR)/.unpacked
++ mkdir -p $(FIRMWARE_TARGET_DIR)
++ifeq ($(strip $(BR2_PACKAGE_FIRMWARE_88W8686_SDIO)),y)
++ $(INSTALL) -D $(FIRMWARE_DIR)/libertas/sd8686_v9_helper.bin $(FIRMWARE_TARGET_DIR)/sd8686_helper.bin
++ $(INSTALL) -D $(FIRMWARE_DIR)/libertas/sd8686_v9.bin $(FIRMWARE_TARGET_DIR)/sd8686.bin
++endif
++ifeq ($(strip $(BR2_PACKAGE_FIRMWARE_88W8686_GSPI)),y)
++ $(INSTALL) -D $(FIRMWARE_DIR)/libertas/gspi8686_v9_helper.bin $(FIRMWARE_TARGET_DIR)/gspi8686_helper.bin
++ $(INSTALL) -D $(FIRMWARE_DIR)/libertas/gspi8686_v9.bin $(FIRMWARE_TARGET_DIR)/gspi8686.bin
++endif
++ touch $@
++
++firmware: $(FIRMWARE_DIR)/.installed
++
++firmware-source: $(DL_DIR)/$(FIRMWARE_SOURCE)
++
++firmware-clean:
++ rm -f $(FIRMWARE_DIR)/.installed
++ (for file in $(FIRMWARE_BINARIES); do \
++ rm -f "$(FIRMWARE_TARGET_DIR)/$$file"; \
++ done)
++
++firmware-dirclean:
++ rm -rf $(FIRMWARE_DIR)
++
++#############################################################
++#
++# Toplevel Makefile options
++#
++#############################################################
++ifeq ($(strip $(BR2_PACKAGE_FIRMWARE)),y)
++TARGETS+=firmware
++endif
diff --git a/patches/buildroot/2010.02/106-firmware-add_infrastructure_to_install_firmwares.patch b/patches/buildroot/2010.02/106-firmware-add_infrastructure_to_install_firmwares.patch
new file mode 100644
index 0000000..e2a2f0c
--- /dev/null
+++ b/patches/buildroot/2010.02/106-firmware-add_infrastructure_to_install_firmwares.patch
@@ -0,0 +1,147 @@
+Add infrastructure to download linux-firmwares.
+Currently only libertas 88W8686 firmwares are handled.
+
+Signed-off-by: Julien Boibessot <jul...@ar...>
+
+Index: buildroot/package/Config.in
+===================================================================
+--- buildroot.orig/package/Config.in 2010-04-27 14:52:04.000000000 +0200
++++ buildroot/package/Config.in 2010-04-27 14:54:12.000000000 +0200
+@@ -256,6 +256,7 @@
+ source "package/e2fsprogs/Config.in"
+ source "package/eeprog/Config.in"
+ source "package/fconfig/Config.in"
++source "package/firmware/Config.in"
+ source "package/fis/Config.in"
+ source "package/fuse/Config.in"
+ source "package/gadgetfs-test/Config.in"
+Index: buildroot/package/firmware/Config.in
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ buildroot/package/firmware/Config.in 2010-04-28 14:57:55.000000000 +0200
+@@ -0,0 +1,49 @@
++menuconfig BR2_PACKAGE_FIRMWARE
++ bool "linux-firmware"
++ help
++ Install selected firmware from linux-firmware.git repository.
++
++ This repository was setup by David Woodhouse in order to:
++ "include firmware files from vendors who have chosen not to
++ contribute their firmware to be distributed as part of the GPL'd
++ kernel source tree, but would still like their firmware to be readily
++ available to Linux users."
++
++
++if BR2_PACKAGE_FIRMWARE
++
++comment "Video"
++
++comment "WiFi chipsets"
++
++config BR2_PACKAGE_FIRMWARE_88W8686
++ bool "Marvell's 88W8686 (Libertas)"
++
++config BR2_PACKAGE_FIRMWARE_88W8686_SDIO
++ bool "SDIO"
++ default y
++ depends on BR2_PACKAGE_FIRMWARE_88W8686
++
++choice
++ prompt "Firmware version"
++ default BR2_PACKAGE_FIRMWARE_88W8686_SDIO_V9
++ depends on BR2_PACKAGE_FIRMWARE_88W8686_SDIO
++ help
++ SDIO firmware is available in v8 or v9 version.
++
++config BR2_PACKAGE_FIRMWARE_88W8686_SDIO_V8
++ bool "v8"
++
++config BR2_PACKAGE_FIRMWARE_88W8686_SDIO_V9
++ bool "v9"
++
++endchoice
++
++config BR2_PACKAGE_FIRMWARE_88W8686_GSPI
++ bool "GSPI"
++ depends on BR2_PACKAGE_FIRMWARE_88W8686
++
++comment "Others"
++
++endif
++
+Index: buildroot/package/firmware/firmware.mk
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ buildroot/package/firmware/firmware.mk 2010-04-28 17:28:13.000000000 +0200
+@@ -0,0 +1,71 @@
++#############################################################
++#
++# Get and install some linux-firmware
++#
++#############################################################
++FIRMWARE_VERSION:=af5222c5ded5d944267acfbd001571409bea7eeb
++FIRMWARE_SOURCE:=firmware-$(FIRMWARE_VERSION).tar.gz
++FIRMWARE_GIT:=git://git.kernel.org/pub/scm/linux/kernel/git/dwmw2/linux-firmware.git
++FIRMWARE_DIR:=$(BUILD_DIR)/firmware-$(FIRMWARE_VERSION)
++FIRMWARE_TARGET_DIR:=$(TARGET_DIR)/lib/firmware
++FIRMWARE_CAT:=$(ZCAT)
++FIRMWARE_NAME:=firmware-$(FIRMWARE_VERSION)
++
++
++ifeq ($(strip $(BR2_PACKAGE_FIRMWARE_88W8686_SDIO)),y)
++FIRMWARE_BINARIES+=sd8686_helper.bin sd8686.bin
++endif
++ifeq ($(strip $(BR2_PACKAGE_FIRMWARE_88W8686_GSPI)),y)
++FIRMWARE_BINARIES+=gspi8686_helper.bin gspi8686.bin
++endif
++ifeq ($(strip $(BR2_PACKAGE_FIRMWARE_88W8686_SDIO_V8)),y)
++FIRMWARE_88W8686_SDIO_VERSION:=_v8
++else
++FIRMWARE_88W8686_SDIO_VERSION:=_v9
++endif
++
++$(DL_DIR)/$(FIRMWARE_SOURCE):
++ git clone $(FIRMWARE_GIT) $(FIRMWARE_DIR)
++ (cd $(FIRMWARE_DIR); \
++ git archive --prefix=$(FIRMWARE_NAME)/ $(FIRMWARE_VERSION) | \
++ gzip > $(DL_DIR)/$(FIRMWARE_SOURCE) )
++ rm -rf $(FIRMWARE_DIR)
++# $(WGET) -O $(DL_DIR)/$(FIRMWARE_SOURCE) "$(FIRMWARE_URL)"
++
++$(FIRMWARE_DIR)/.unpacked: $(DL_DIR)/$(FIRMWARE_SOURCE)
++ $(FIRMWARE_CAT) $(DL_DIR)/$(FIRMWARE_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) -
++ touch $@
++
++$(FIRMWARE_DIR)/.installed: $(FIRMWARE_DIR)/.unpacked
++ mkdir -p $(FIRMWARE_TARGET_DIR)
++ifeq ($(strip $(BR2_PACKAGE_FIRMWARE_88W8686_SDIO)),y)
++ $(INSTALL) -D $(FIRMWARE_DIR)/libertas/sd8686_v9_helper.bin $(FIRMWARE_TARGET_DIR)/sd8686_helper.bin
++ $(INSTALL) -D $(FIRMWARE_DIR)/libertas/sd8686_v9.bin $(FIRMWARE_TARGET_DIR)/sd8686.bin
++endif
++ifeq ($(strip $(BR2_PACKAGE_FIRMWARE_88W8686_GSPI)),y)
++ $(INSTALL) -D $(FIRMWARE_DIR)/libertas/gspi8686_v9_helper.bin $(FIRMWARE_TARGET_DIR)/gspi8686_helper.bin
++ $(INSTALL) -D $(FIRMWARE_DIR)/libertas/gspi8686_v9.bin $(FIRMWARE_TARGET_DIR)/gspi8686.bin
++endif
++ touch $@
++
++firmware: $(FIRMWARE_DIR)/.installed
++
++firmware-source: $(DL_DIR)/$(FIRMWARE_SOURCE)
++
++firmware-clean:
++ rm -f $(FIRMWARE_DIR)/.installed
++ (for file in $(FIRMWARE_BINARIES); do \
++ rm -f "$(FIRMWARE_TARGET_DIR)/$$file"; \
++ done)
++
++firmware-dirclean:
++ rm -rf $(FIRMWARE_DIR)
++
++#############################################################
++#
++# Toplevel Makefile options
++#
++#############################################################
++ifeq ($(strip $(BR2_PACKAGE_FIRMWARE)),y)
++TARGETS+=firmware
++endif
diff --git a/patches/buildroot/2010.02/cleanup_buildroot.sh b/patches/buildroot/2010.02/cleanup_buildroot.sh
index 2bb4304..42fa09f 100755
--- a/patches/buildroot/2010.02/cleanup_buildroot.sh
+++ b/patches/buildroot/2010.02/cleanup_buildroot.sh
@@ -16,3 +16,4 @@ rm -rf buildroot/package/libcurl/
rm -f buildroot/package/multimedia/mplayer/mplayer-1.0rc2-add_pld_asm_inst_for_non_armv5_arch.patch
rm -f buildroot/package/multimedia/madplay/madplay-audio-alsa.patch
rm -f buildroot/package/busybox/busybox-1.15.3-speed_table-B921600.patch
+rm -rf buildroot/package/firmware/
diff --git a/patches/buildroot/cleanup_buildroot.sh b/patches/buildroot/cleanup_buildroot.sh
index 1c9f4a6..12117e8 100755
--- a/patches/buildroot/cleanup_buildroot.sh
+++ b/patches/buildroot/cleanup_buildroot.sh
@@ -16,3 +16,4 @@ rm -rf buildroot/package/libcurl/
rm -f buildroot/package/audio/madplay/madplay-audio-alsa.patch
rm -f buildroot/package/mplayer/mplayer-1.0rc1-add_pld_asm_inst_for_non_armv5_arch.patch
rm -f buildroot/package/busybox/busybox-1.12.1-speed_table-B921600.patch
+rm -rf buildroot/package/firmware/
diff --git a/target/linux/modules/gpio/core.c b/target/linux/modules/gpio/core.c
index 97f6f58..b07c7ef 100755
--- a/target/linux/modules/gpio/core.c
+++ b/target/linux/modules/gpio/core.c
@@ -328,12 +328,12 @@ static void initialize_all_ports(void)
}
-static void writeOnPort(unsigned int aPort, unsigned int aValue)
+static void write_on_port(unsigned int aPort, unsigned int aValue)
{
__raw_writel(aValue, VA_GPIO_BASE + MXC_DR(aPort));
}
-static unsigned int readFromPort(unsigned int aPort)
+static unsigned int read_from_port(unsigned int aPort)
{
unsigned int port_value = 0;
@@ -343,7 +343,7 @@ static unsigned int readFromPort(unsigned int aPort)
return port_value;
}
-static void setPortMode(unsigned int aPort, unsigned int aModeMask)
+static void set_port_mode(unsigned int aPort, unsigned int aModeMask)
{
int i;
int ocr1, ocr2, gius;
@@ -367,7 +367,7 @@ static void setPortMode(unsigned int aPort, unsigned int aModeMask)
__raw_writel(gius, VA_GPIO_BASE + MXC_GIUS(aPort));
}
-static unsigned int getPortMode(unsigned int aPort)
+static unsigned int get_port_mode(unsigned int aPort)
{
int i;
int ocr1, ocr2, gius, value = 0;
@@ -390,23 +390,23 @@ static unsigned int getPortMode(unsigned int aPort)
return value;
}
-static unsigned int getPortPullUp(unsigned int aPort)
+static unsigned int get_port_pull_up(unsigned int aPort)
{
return __raw_readl(VA_GPIO_BASE + MXC_PUEN(aPort));
}
-static void setPortPullUp(unsigned int aPort, unsigned int aPullMask)
+static void set_port_pullup(unsigned int aPort, unsigned int aPullMask)
{
__raw_writel(aPullMask & 0xffffffff, VA_GPIO_BASE + MXC_PUEN(aPort));
}
-static void setPortDir(unsigned int aPort, unsigned int aDirMask)
+static void set_port_dir(unsigned int aPort, unsigned int aDirMask)
{
__raw_writel(aDirMask & 0xffffffff, VA_GPIO_BASE + MXC_DDIR(aPort));
}
-static unsigned int getPortDir(unsigned int aPort)
+static unsigned int get_port_dir(unsigned int aPort)
{
unsigned int port_value = 0;
@@ -449,7 +449,7 @@ static ssize_t armadeus_gpio_dev_write(struct file *file, const char *data, size
if (gpio->nb_pins != 1) {
pr_debug("Full port write: 0x%x\n", value);
- writeOnPort(gpio->port, value);
+ write_on_port(gpio->port, value);
} else {
value = value ? 1 : 0;
pr_debug("Single pin write: %d\n", value);
@@ -467,9 +467,8 @@ static ssize_t armadeus_gpio_dev_read(struct file *file, char *buf,
size_t count, loff_t *ppos)
{
unsigned minor = MINOR(file->f_dentry->d_inode->i_rdev);
- u32 value=0;
+ u32 value = 0;
ssize_t ret = 0;
- u32 port_status;
struct gpio_item *gpio = file->private_data;
if (count == 0)
@@ -494,16 +493,13 @@ static ssize_t armadeus_gpio_dev_read(struct file *file, char *buf,
gpio->changed = 0;
if (gpio->nb_pins != 1) {
- value = readFromPort(gpio->port);
+ value = read_from_port(gpio->port);
pr_debug("Full port read: 0x%x\n", value);
} else {
value = gpio_get_value(minor);
pr_debug("Single pin read: %d\n", value);
}
- value = readFromPort(minor);
- port_status = (char)(value & 0xFF);
-
count = min(count, (size_t)sizeof(u32));
if (copy_to_user(buf, &value, count)) {
ret = -EFAULT;
@@ -591,7 +587,7 @@ static int armadeus_gpio_dev_open(struct inode *inode, struct file *file)
gpio->number = minor & GPIO_PIN_MASK;
gpio->pin_state = 0;
- if (getPortDir(gpio->port) & (1 << gpio->number)) {
+ if (get_port_dir(gpio->port) & (1 << gpio->number)) {
gpio_direction_output(minor, 0);
} else {
gpio_direction_input(minor);
@@ -697,38 +693,38 @@ int armadeus_gpio_dev_ioctl(struct inode *inode, struct file *filp,
switch (cmd) {
case GPIORDDIRECTION:
- value = getPortDir(MAX_MINOR - minor);
+ value = get_port_dir(MAX_MINOR - minor);
ret = __put_user(value, (unsigned int *)arg);
break;
case GPIOWRDIRECTION:
ret = __get_user(value, (unsigned int *)arg);
if (ret == 0) {
- setPortDir(MAX_MINOR - minor, value);
+ set_port_dir(MAX_MINOR - minor, value);
}
break;
case GPIORDDATA:
- value = readFromPort(MAX_MINOR - minor);
+ value = read_from_port(MAX_MINOR - minor);
ret = __put_user(value, (unsigned int *)arg);
break;
case GPIOWRDATA:
ret = __get_user(value, (unsigned int *)arg);
if (ret == 0) {
- writeOnPort(MAX_MINOR - minor, value);
+ write_on_port(MAX_MINOR - minor, value);
}
break;
case GPIORDMODE:
- value = getPortMode(MAX_MINOR - minor);
+ value = get_port_mode(MAX_MINOR - minor);
ret = __put_user(value, (unsigned int *)arg);
break;
case GPIOWRMODE:
ret = __get_user(value, (unsigned int *)arg);
if (ret == 0) {
- setPortMode(MAX_MINOR - minor, value);
+ set_port_mode(MAX_MINOR - minor, value);
}
break;
@@ -757,14 +753,14 @@ int armadeus_gpio_dev_ioctl(struct inode *inode, struct file *filp,
break;
case GPIORDPULLUP:
- value = getPortPullUp(MAX_MINOR - minor);
+ value = get_port_pull_up(MAX_MINOR - minor);
ret = __put_user(value, (unsigned int *)arg);
break;
case GPIOWRPULLUP:
ret = __get_user(value, (unsigned int *)arg);
if (ret == 0) {
- setPortPullUp(MAX_MINOR - minor, value);
+ set_port_pullup(MAX_MINOR - minor, value);
}
break;
@@ -829,15 +825,15 @@ static int armadeus_gpio_proc_read(char *buffer, char **start, off_t offset,
switch (settings->type) {
case MODE:
- port_status = getPortMode(port_ID);
+ port_status = get_port_mode(port_ID);
break;
case VALUE:
- port_status = readFromPort(port_ID);
+ port_status = read_from_port(port_ID);
break;
case DIRECTION:
- port_status = getPortDir(port_ID);
+ port_status = get_port_dir(port_ID);
break;
case PULL_UP:
@@ -922,19 +918,19 @@ static int armadeus_gpio_proc_write(__attribute__ ((unused)) struct file *file,
switch (settings->type)
{
case MODE:
- setPortMode(port_ID, gpio_state);
+ set_port_mode(port_ID, gpio_state);
break;
case VALUE:
- writeOnPort(port_ID, gpio_state);
+ write_on_port(port_ID, gpio_state);
break;
case DIRECTION:
- setPortDir(port_ID, gpio_state);
+ set_port_dir(port_ID, gpio_state);
break;
case PULL_UP:
- setPortPullUp(port_ID, gpio_state);
+ set_port_pullup(port_ID, gpio_state);
break;
case INTERRUPT:
@@ -1176,7 +1172,7 @@ void gpioWriteOnPort(unsigned int aPort, unsigned int aValue)
printk(DRIVER_NAME "port unknown !\n");
return;
}
- writeOnPort(aPort, aValue);
+ write_on_port(aPort, aValue);
}
unsigned int gpioReadFromPort(unsigned int aPort)
@@ -1185,18 +1181,18 @@ unsigned int gpioReadFromPort(unsigned int aPort)
printk(DRIVER_NAME "port unknown !\n");
return 0;
} else {
- return readFromPort(aPort);
+ return read_from_port(aPort);
}
}
void gpioSetPortDir(unsigned int aPort, unsigned int aDirMask)
{
- setPortDir(aPort, aDirMask);
+ set_port_dir(aPort, aDirMask);
}
unsigned int gpioGetPortDir(unsigned int aPort)
{
- return getPortDir(aPort);
+ return get_port_dir(aPort);
}
EXPORT_SYMBOL(gpioWriteOnPort);
hooks/post-receive
--
armadeus
|
|
From: Julien B a. A. <ar...@us...> - 2010-04-26 13:31:18
|
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "armadeus".
The branch, master has been updated
via 16aed16c6fe21ec3655d09173fe050df36c4b71a (commit)
via 201d8ae9232a1060e5ebf6dcb81c78f6ac17c250 (commit)
via a28b739d7f90401b8cfd14b688070452055af151 (commit)
from 76874a3114b0ddda52ebd6bae83e796ea089d907 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 16aed16c6fe21ec3655d09173fe050df36c4b71a
Author: Julien Boibessot <jul...@ar...>
Date: Mon Apr 26 15:25:37 2010 +0200
[LINUX] gpio: correct bug while getting IRQ state & add fasync handling (thanks to CimCim for both)
commit 201d8ae9232a1060e5ebf6dcb81c78f6ac17c250
Author: Julien Boibessot <jul...@ar...>
Date: Mon Apr 26 15:19:59 2010 +0200
[LINUX] APW: Bluetooth RESET pin should be driven by userspace
commit a28b739d7f90401b8cfd14b688070452055af151
Author: Julien Boibessot <jul...@ar...>
Date: Mon Apr 26 15:18:41 2010 +0200
Updates cleanup_buildroot.sh
-----------------------------------------------------------------------
Summary of changes:
.../2.6.29/281-apf27-armadeus-add_apf27.c.patch | 31 +++++-----------
patches/buildroot/2010.02/cleanup_buildroot.sh | 1 +
patches/buildroot/cleanup_buildroot.sh | 1 +
target/linux/modules/gpio/core.c | 38 ++++++++++++--------
4 files changed, 35 insertions(+), 36 deletions(-)
diff --git a/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/281-apf27-armadeus-add_apf27.c.patch b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/281-apf27-armadeus-add_apf27.c.patch
index c88a75b..72d2112 100644
--- a/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/281-apf27-armadeus-add_apf27.c.patch
+++ b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/281-apf27-armadeus-add_apf27.c.patch
@@ -9,7 +9,7 @@ Signed-off-by: Eric Jarrige <eri...@ar...>
Index: linux-2.6.29.6/arch/arm/mach-mx2/apf27.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.29.6/arch/arm/mach-mx2/apf27.c 2010-02-22 14:38:52.000000000 +0100
++++ linux-2.6.29.6/arch/arm/mach-mx2/apf27.c 2010-04-26 13:53:19.000000000 +0200
@@ -0,0 +1,789 @@
+ /*
+ * apf27.c
@@ -803,7 +803,7 @@ Index: linux-2.6.29.6/arch/arm/mach-mx2/apf27.c
Index: linux-2.6.29.6/arch/arm/mach-mx2/apf27-dev.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.29.6/arch/arm/mach-mx2/apf27-dev.c 2010-02-22 14:38:13.000000000 +0100
++++ linux-2.6.29.6/arch/arm/mach-mx2/apf27-dev.c 2010-04-26 15:06:48.000000000 +0200
@@ -0,0 +1,1019 @@
+ /*
+ * apf27-dev.c
@@ -1827,7 +1827,7 @@ Index: linux-2.6.29.6/arch/arm/mach-mx2/apf27-dev.c
Index: linux-2.6.29.6/arch/arm/mach-mx2/apf27-lcd.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.29.6/arch/arm/mach-mx2/apf27-lcd.c 2010-02-16 13:17:29.000000000 +0100
++++ linux-2.6.29.6/arch/arm/mach-mx2/apf27-lcd.c 2010-04-26 13:53:19.000000000 +0200
@@ -0,0 +1,220 @@
+/*
+ * apf27-lcd.c
@@ -2052,13 +2052,13 @@ Index: linux-2.6.29.6/arch/arm/mach-mx2/apf27-lcd.c
Index: linux-2.6.29.6/arch/arm/mach-mx2/apf27-dev-ext-apw.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.29.6/arch/arm/mach-mx2/apf27-dev-ext-apw.c 2010-02-16 13:17:29.000000000 +0100
-@@ -0,0 +1,201 @@
++++ linux-2.6.29.6/arch/arm/mach-mx2/apf27-dev-ext-apw.c 2010-04-26 14:56:34.000000000 +0200
+@@ -0,0 +1,190 @@
+ /*
+ * apf27-dev-ext-apw.c
-+ * Support for AFP27Dev's wireless extension board.
++ * Support for AFP27Dev's wireless extension board (APW).
+ *
-+ * Copyright (C) 2009 Armadeus Systems
++ * Copyright (C) 2009-2010 Armadeus Systems
+ * Authors: Julien Boibessot <jul...@ar...>
+ * Nicolas Colombain <nic...@ar...>
+ *
@@ -2145,17 +2145,15 @@ Index: linux-2.6.29.6/arch/arm/mach-mx2/apf27-dev-ext-apw.c
+#endif /* CONFIG_MACH_APF27_DEV_EXT_WIRELESS_GPS */
+
+
-+/* An optionnal Bluetooth + WiFi (Wi2Wi) module can be mounted on wireless
++/* An optional Bluetooth + WiFi module (Wi2Wi) can be mounted on wireless
+ extension board */
+#ifdef CONFIG_MACH_APF27_DEV_EXT_WIRELESS_BT_WIFI
+
-+#define BT_RESETn (GPIO_PORTB | 14) /* CSI_D4 */
++#define BT_RESETn (GPIO_PORTB | 14) /* shared with CSI_D4;
++ driven by userspace */
+#define WIFI_PWRDNn (GPIO_PORTE | 10) /* UART3_CTS */
+
+static int apw_bt_wifi_pins[] = {
-+#ifdef CONFIG_MACH_APF27_DEV_EXT_WIRELESS_BT
-+ (BT_RESETn | GPIO_OUT | GPIO_GPIO), /* Shared with CSI */
-+#endif
+ (WIFI_PWRDNn | GPIO_OUT | GPIO_GPIO),
+};
+
@@ -2194,9 +2192,6 @@ Index: linux-2.6.29.6/arch/arm/mach-mx2/apf27-dev-ext-apw.c
+ int res;
+
+ gpio_set_value(WIFI_PWRDNn, 1); /* WiFi on */
-+#ifdef CONFIG_MACH_APF27_DEV_EXT_WIRELESS_BT
-+ gpio_set_value(BT_RESETn, 1); /* Bluetooth on */
-+#endif
+ res = mxc_gpio_setup_multiple_pins(apw_bt_wifi_pins,
+ ARRAY_SIZE(apw_bt_wifi_pins), "BT_WIFI");
+ if (!res)
@@ -2210,9 +2205,6 @@ Index: linux-2.6.29.6/arch/arm/mach-mx2/apf27-dev-ext-apw.c
+void apf27dev_extension_resume(void)
+{
+#ifdef CONFIG_PM
-+# ifdef CONFIG_MACH_APF27_DEV_EXT_WIRELESS_BT
-+ gpio_set_value(BT_RESETn, 1);
-+# endif
+# ifdef CONFIG_MACH_APF27_DEV_EXT_WIRELESS_WIFI
+ gpio_set_value(WIFI_PWRDNn, 1);
+# endif
@@ -2225,9 +2217,6 @@ Index: linux-2.6.29.6/arch/arm/mach-mx2/apf27-dev-ext-apw.c
+void apf27dev_extension_suspend(void)
+{
+#ifdef CONFIG_PM
-+# ifdef CONFIG_MACH_APF27_DEV_EXT_WIRELESS_BT
-+ gpio_set_value(BT_RESETn, 0);
-+# endif
+# ifdef CONFIG_MACH_APF27_DEV_EXT_WIRELESS_WIFI
+ gpio_set_value(WIFI_PWRDNn, 0);
+# endif
diff --git a/patches/buildroot/2010.02/cleanup_buildroot.sh b/patches/buildroot/2010.02/cleanup_buildroot.sh
index 37b5a56..2bb4304 100755
--- a/patches/buildroot/2010.02/cleanup_buildroot.sh
+++ b/patches/buildroot/2010.02/cleanup_buildroot.sh
@@ -15,3 +15,4 @@ rm -rf buildroot/package/multimedia/flite/
rm -rf buildroot/package/libcurl/
rm -f buildroot/package/multimedia/mplayer/mplayer-1.0rc2-add_pld_asm_inst_for_non_armv5_arch.patch
rm -f buildroot/package/multimedia/madplay/madplay-audio-alsa.patch
+rm -f buildroot/package/busybox/busybox-1.15.3-speed_table-B921600.patch
diff --git a/patches/buildroot/cleanup_buildroot.sh b/patches/buildroot/cleanup_buildroot.sh
index 4792d53..1c9f4a6 100755
--- a/patches/buildroot/cleanup_buildroot.sh
+++ b/patches/buildroot/cleanup_buildroot.sh
@@ -15,3 +15,4 @@ rm -rf buildroot/package/audio/flite/
rm -rf buildroot/package/libcurl/
rm -f buildroot/package/audio/madplay/madplay-audio-alsa.patch
rm -f buildroot/package/mplayer/mplayer-1.0rc1-add_pld_asm_inst_for_non_armv5_arch.patch
+rm -f buildroot/package/busybox/busybox-1.12.1-speed_table-B921600.patch
diff --git a/target/linux/modules/gpio/core.c b/target/linux/modules/gpio/core.c
index 7f93037..97f6f58 100755
--- a/target/linux/modules/gpio/core.c
+++ b/target/linux/modules/gpio/core.c
@@ -230,7 +230,7 @@ static unsigned long fromString(char* buffer, int number_of_bits, int base)
}
/* Return the interrupt config for a pin */
-static unsigned char getIrqFromPin(int num_pin, int num_port)
+static unsigned char get_irq_from_pin(int num_pin, int num_port)
{
unsigned long shad;
int portSize = number_of_pins[num_port];
@@ -525,7 +525,7 @@ static irqreturn_t armadeus_gpio_interrupt(int irq, void *dev_id)
pr_debug("IT for pin %d %d\n", gpio->port, gpio->number);
old_state = gpio->pin_state;
- new_state = gpio_get_value(gpio->port|gpio->number);
+ new_state = gpio_get_value((gpio->port << GPIO_PORT_SHIFT) | gpio->number);
gpio->pin_state = new_state;
if ((gpio->irq_value != (IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING)) || new_state != old_state) {
@@ -535,7 +535,7 @@ static irqreturn_t armadeus_gpio_interrupt(int irq, void *dev_id)
if (gpio->async_queue)
kill_fasync(&gpio->async_queue, SIGIO, POLL_IN);
if (gpio->irq_value == (IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING)) {
- set_irq_type(irq, ((gpio->pin_state)?IRQF_TRIGGER_FALLING:IRQF_TRIGGER_RISING));
+ set_irq_type(irq, ((gpio->pin_state) ? IRQF_TRIGGER_FALLING : IRQF_TRIGGER_RISING));
}
}
@@ -599,7 +599,7 @@ static int armadeus_gpio_dev_open(struct inode *inode, struct file *file)
}
/* Request interrupt if pin was configured for */
- gpio->irq_value = getIrqFromPin(gpio->number,gpio->port);
+ gpio->irq_value = get_irq_from_pin(gpio->number, gpio->port);
if (gpio->irq_value) {
irq = IRQ_GPIOA(minor); /* irq number are continuous */
@@ -780,6 +780,24 @@ out:
return ret;
}
+static int armadeus_gpio_fasync(int fd, struct file* filp, int on)
+{
+ struct gpio_item* gpio = filp->private_data;
+
+ return fasync_helper(fd, filp, on, &(gpio->async_queue));
+}
+
+static struct file_operations gpio_fops = {
+ .owner = THIS_MODULE,
+ .llseek = no_llseek,
+ .write = armadeus_gpio_dev_write,
+ .read = armadeus_gpio_dev_read,
+ .open = armadeus_gpio_dev_open,
+ .release = armadeus_gpio_dev_release,
+ .ioctl = armadeus_gpio_dev_ioctl,
+ .fasync = armadeus_gpio_fasync,
+};
+
/*
* PROC file functions
@@ -858,7 +876,7 @@ static int armadeus_gpio_proc_read(char *buffer, char **start, off_t offset,
static char new_gpio_state[MAX_NUMBER_OF_PINS*2];
-static int armadeus_gpio_proc_write( __attribute__ ((unused)) struct file *file, const char *buf, unsigned long count, __attribute__ ((unused)) void* data)
+static int armadeus_gpio_proc_write(__attribute__ ((unused)) struct file *file, const char *buf, unsigned long count, __attribute__ ((unused)) void* data)
{
int len;
unsigned int gpio_state=0, gpio_state2=0;
@@ -1085,16 +1103,6 @@ static void remove_proc_entries(void)
remove_proc_entry(GPIO_PROC_DIRNAME, NULL);
}
-/* /dev functionnalities supported: */
-static struct file_operations gpio_fops = {
- .owner = THIS_MODULE,
- .llseek = no_llseek,
- .write = armadeus_gpio_dev_write,
- .read = armadeus_gpio_dev_read,
- .open = armadeus_gpio_dev_open,
- .release = armadeus_gpio_dev_release,
- .ioctl = armadeus_gpio_dev_ioctl,
-};
static void print_port_params(int port, int nb, int* params)
{
hooks/post-receive
--
armadeus
|
|
From: Julien B a. A. <ar...@us...> - 2010-04-26 08:56:49
|
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "armadeus".
The branch, master has been updated
via 76874a3114b0ddda52ebd6bae83e796ea089d907 (commit)
from e143aade66c48447ed5669e195483bfd924e0b73 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 76874a3114b0ddda52ebd6bae83e796ea089d907
Author: Julien Boibessot <jul...@ar...>
Date: Mon Apr 26 10:53:09 2010 +0200
[BUILDROOT] Busybox: add patch to be able to use serial speed of 921600 from stty
-----------------------------------------------------------------------
Summary of changes:
...busybox-add_support_for_B921600_tty_speed.patch | 40 ++++++++++++++++++++
...busybox-add_support_for_B921600_tty_speed.patch | 40 ++++++++++++++++++++
2 files changed, 80 insertions(+), 0 deletions(-)
create mode 100644 patches/buildroot/105-busybox-add_support_for_B921600_tty_speed.patch
create mode 100644 patches/buildroot/2010.02/105-busybox-add_support_for_B921600_tty_speed.patch
diff --git a/patches/buildroot/105-busybox-add_support_for_B921600_tty_speed.patch b/patches/buildroot/105-busybox-add_support_for_B921600_tty_speed.patch
new file mode 100644
index 0000000..f4fef9b
--- /dev/null
+++ b/patches/buildroot/105-busybox-add_support_for_B921600_tty_speed.patch
@@ -0,0 +1,40 @@
+Needed for busybox < 1.16
+Without this patch stty will refuse to setup a tty to B921600 speed.
+
+Index: buildroot/package/busybox/busybox-1.12.1-speed_table-B921600.patch
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ buildroot/package/busybox/busybox-1.12.1-speed_table-B921600.patch 2010-04-26 10:29:53.000000000 +0200
+@@ -0,0 +1,32 @@
++From e707a3000b2f6e2f684b6e85cd60590318d157c4 Mon Sep 17 00:00:00 2001
++From: Bernhard Reutner-Fischer <rep...@gm...>
++Date: Tue, 20 Oct 2009 17:40:20 +0000
++Subject: add B921600
++
++Signed-off-by: Bernhard Reutner-Fischer <rep...@gm...>
++---
++diff --git a/libbb/speed_table.c b/libbb/speed_table.c
++index 05fe66c..af676e1 100644
++--- a/libbb/speed_table.c
+++++ b/libbb/speed_table.c
++@@ -51,6 +51,9 @@ static const struct speed_map speeds[] = {
++ #ifdef B460800
++ {B460800, 460800/256 + 0x8000U},
++ #endif
+++#ifdef B921600
+++ {B921600, 921600/256 + 0x8000U},
+++#endif
++ };
++
++ enum { NUM_SPEEDS = ARRAY_SIZE(speeds) };
++@@ -93,7 +96,7 @@ int main(void)
++ unsigned long v;
++ speed_t s;
++
++- for (v = 0 ; v < 500000; v++) {
+++ for (v = 0 ; v < 1000000; v++) {
++ s = tty_value_to_baud(v);
++ if (s == (speed_t) -1) {
++ continue;
++--
++cgit v0.8.2.1
diff --git a/patches/buildroot/2010.02/105-busybox-add_support_for_B921600_tty_speed.patch b/patches/buildroot/2010.02/105-busybox-add_support_for_B921600_tty_speed.patch
new file mode 100644
index 0000000..9e30522
--- /dev/null
+++ b/patches/buildroot/2010.02/105-busybox-add_support_for_B921600_tty_speed.patch
@@ -0,0 +1,40 @@
+Needed for busybox < 1.16
+Without this patch stty will refuse to setup a tty to B921600 speed.
+
+Index: buildroot/package/busybox/busybox-1.15.3-speed_table-B921600.patch
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ buildroot/package/busybox/busybox-1.15.3-speed_table-B921600.patch 2010-04-26 10:29:53.000000000 +0200
+@@ -0,0 +1,32 @@
++From e707a3000b2f6e2f684b6e85cd60590318d157c4 Mon Sep 17 00:00:00 2001
++From: Bernhard Reutner-Fischer <rep...@gm...>
++Date: Tue, 20 Oct 2009 17:40:20 +0000
++Subject: add B921600
++
++Signed-off-by: Bernhard Reutner-Fischer <rep...@gm...>
++---
++diff --git a/libbb/speed_table.c b/libbb/speed_table.c
++index 05fe66c..af676e1 100644
++--- a/libbb/speed_table.c
+++++ b/libbb/speed_table.c
++@@ -51,6 +51,9 @@ static const struct speed_map speeds[] = {
++ #ifdef B460800
++ {B460800, 460800/256 + 0x8000U},
++ #endif
+++#ifdef B921600
+++ {B921600, 921600/256 + 0x8000U},
+++#endif
++ };
++
++ enum { NUM_SPEEDS = ARRAY_SIZE(speeds) };
++@@ -93,7 +96,7 @@ int main(void)
++ unsigned long v;
++ speed_t s;
++
++- for (v = 0 ; v < 500000; v++) {
+++ for (v = 0 ; v < 1000000; v++) {
++ s = tty_value_to_baud(v);
++ if (s == (speed_t) -1) {
++ continue;
++--
++cgit v0.8.2.1
hooks/post-receive
--
armadeus
|
|
From: Julien B a. A. <ar...@us...> - 2010-04-23 15:09:58
|
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "armadeus".
The branch, master has been updated
via e143aade66c48447ed5669e195483bfd924e0b73 (commit)
via a119cee0f76e8d668e501b9c126abfd1ccc2fd19 (commit)
from 3822de7a6df167852d0f11ecbd8a325533a39599 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit e143aade66c48447ed5669e195483bfd924e0b73
Author: Julien Boibessot <jul...@ar...>
Date: Fri Apr 23 16:49:23 2010 +0200
[BUILDROOT] Add a new (hidden) BR2_CPU_NAME config variable and updates imxregs accordingly
commit a119cee0f76e8d668e501b9c126abfd1ccc2fd19
Author: Julien Boibessot <jul...@ar...>
Date: Fri Apr 23 15:45:31 2010 +0200
[BUILDROOT] Bluez: remove no more needed serial port speed patch
-----------------------------------------------------------------------
Summary of changes:
buildroot/configs/apf27_defconfig | 3 +-
buildroot/configs/apf9328_defconfig | 3 +-
buildroot/local/apf27_test/apf27_test.config | 3 +-
buildroot/local/apf9328_test/apf9328_test.config | 3 +-
buildroot/package/armadeus/imxregs/Config.in | 1 -
buildroot/package/armadeus/imxregs/imxregs.mk | 5 ++-
...ttach-removes-uclibc-not-supported-speeds.patch | 25 --------------------
buildroot/target/device/.gitignore | 2 +-
buildroot/target/device/armadeus/Config.in | 5 ++++
.../target/device/armadeus/apf27/apf27_defconfig | 3 +-
.../device/armadeus/apf9328/apf9328_defconfig | 3 +-
11 files changed, 21 insertions(+), 35 deletions(-)
delete mode 100644 buildroot/package/bluez/bluez-utils-hciattach-removes-uclibc-not-supported-speeds.patch
diff --git a/buildroot/configs/apf27_defconfig b/buildroot/configs/apf27_defconfig
index 791ebfc..a8f0d64 100644
--- a/buildroot/configs/apf27_defconfig
+++ b/buildroot/configs/apf27_defconfig
@@ -1,6 +1,6 @@
#
# Automatically generated make config: don't edit
-# Tue Feb 23 09:17:23 2010
+# Fri Apr 23 16:15:36 2010
#
BR2_HAVE_DOT_CONFIG=y
BR2_VERSION="2010.02-rc1"
@@ -64,6 +64,7 @@ BR2_TARGET_ARMADEUS=y
BR2_TARGET_ARMADEUS_APF27=y
BR2_BOARD_NAME="apf27"
BR2_BOARD_PATH="target/device/armadeus/$(BR2_BOARD_NAME)"
+BR2_CPU_NAME="imx27"
# BR2_TARGET_ARMADEUS_APF27_SDRAM_16 is not set
# BR2_TARGET_ARMADEUS_APF27_SDRAM_32 is not set
BR2_TARGET_ARMADEUS_APF27_SDRAM_64=y
diff --git a/buildroot/configs/apf9328_defconfig b/buildroot/configs/apf9328_defconfig
index ca426bd..82418da 100644
--- a/buildroot/configs/apf9328_defconfig
+++ b/buildroot/configs/apf9328_defconfig
@@ -1,6 +1,6 @@
#
# Automatically generated make config: don't edit
-# Mon Mar 29 22:02:48 2010
+# Fri Apr 23 16:43:36 2010
#
BR2_HAVE_DOT_CONFIG=y
BR2_VERSION="2010.02"
@@ -64,6 +64,7 @@ BR2_TARGET_ARMADEUS_APF9328=y
# BR2_TARGET_ARMADEUS_APF27 is not set
BR2_BOARD_NAME="apf9328"
BR2_BOARD_PATH="target/device/armadeus/$(BR2_BOARD_NAME)"
+BR2_CPU_NAME="imxl"
# BR2_TARGET_ARMADEUS_SDRAM_8 is not set
BR2_TARGET_ARMADEUS_SDRAM_16=y
# BR2_TARGET_ARMADEUS_SDRAM_32 is not set
diff --git a/buildroot/local/apf27_test/apf27_test.config b/buildroot/local/apf27_test/apf27_test.config
index 6ccb600..dfb67f0 100644
--- a/buildroot/local/apf27_test/apf27_test.config
+++ b/buildroot/local/apf27_test/apf27_test.config
@@ -1,6 +1,6 @@
#
# Automatically generated make config: don't edit
-# Tue Dec 8 17:28:51 2009
+# Fri Apr 23 16:15:36 2010
#
BR2_HAVE_DOT_CONFIG=y
BR2_VERSION="0.10.0-svn"
@@ -70,6 +70,7 @@ BR2_TARGET_ARMADEUS=y
BR2_TARGET_ARMADEUS_APF27=y
BR2_BOARD_NAME="apf27"
BR2_BOARD_PATH="target/device/armadeus/$(BR2_BOARD_NAME)"
+BR2_CPU_NAME="imx27"
# BR2_TARGET_ARMADEUS_APF27_SDRAM_16 is not set
# BR2_TARGET_ARMADEUS_APF27_SDRAM_32 is not set
BR2_TARGET_ARMADEUS_APF27_SDRAM_64=y
diff --git a/buildroot/local/apf9328_test/apf9328_test.config b/buildroot/local/apf9328_test/apf9328_test.config
index cb827a1..4cd8c46 100644
--- a/buildroot/local/apf9328_test/apf9328_test.config
+++ b/buildroot/local/apf9328_test/apf9328_test.config
@@ -1,6 +1,6 @@
#
# Automatically generated make config: don't edit
-# Tue Dec 8 17:28:51 2009
+# Fri Apr 23 16:43:36 2010
#
BR2_HAVE_DOT_CONFIG=y
BR2_VERSION="0.10.0-svn"
@@ -70,6 +70,7 @@ BR2_TARGET_ARMADEUS_APF9328=y
# BR2_TARGET_ARMADEUS_APF27 is not set
BR2_BOARD_NAME="apf9328"
BR2_BOARD_PATH="target/device/armadeus/$(BR2_BOARD_NAME)"
+BR2_CPU_NAME="imxl"
# BR2_TARGET_ARMADEUS_SDRAM_8 is not set
BR2_TARGET_ARMADEUS_SDRAM_16=y
# BR2_TARGET_ARMADEUS_SDRAM_32 is not set
diff --git a/buildroot/package/armadeus/imxregs/Config.in b/buildroot/package/armadeus/imxregs/Config.in
index d25aaaa..f355521 100644
--- a/buildroot/package/armadeus/imxregs/Config.in
+++ b/buildroot/package/armadeus/imxregs/Config.in
@@ -1,6 +1,5 @@
config BR2_PACKAGE_IMXREGS
bool "imxregs"
- default n
help
This debug tool allows you to access the i.MX internal registers
directly from Linux userspace. (If operation was allowed in U-Boot).
diff --git a/buildroot/package/armadeus/imxregs/imxregs.mk b/buildroot/package/armadeus/imxregs/imxregs.mk
index e1da229..82a84af 100644
--- a/buildroot/package/armadeus/imxregs/imxregs.mk
+++ b/buildroot/package/armadeus/imxregs/imxregs.mk
@@ -8,10 +8,11 @@ IMXREGS_VER:=1.0
IMXREGS_SOURCE:=$(TOPDIR)/../target/linux/debug/imxregs/
IMXREGS_DIR:=$(BUILD_DIR)/imxregs-$(IMXREGS_VER)
IMXREGS_CAT:=zcat
-ifeq ($(BR2_TARGET_ARMADEUS_APF27),y)
+CPU_NAME=$(call qstrip,$(BR2_CPU_NAME))
+ifeq ($(CPU_NAME),imx27)
IMXREGS_BINARY:=imx27regs
else
- ifeq ($(BR2_TARGET_ARMADEUS_APF9328),y)
+ ifeq ($(CPU_NAME),imxl)
IMXREGS_BINARY:=imxregs
else
IMXREGS_BINARY:=unknown_arch
diff --git a/buildroot/package/bluez/bluez-utils-hciattach-removes-uclibc-not-supported-speeds.patch b/buildroot/package/bluez/bluez-utils-hciattach-removes-uclibc-not-supported-speeds.patch
deleted file mode 100644
index b9a2557..0000000
--- a/buildroot/package/bluez/bluez-utils-hciattach-removes-uclibc-not-supported-speeds.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-Index: bluez-utils-3.20/tools/hciattach.c
-===================================================================
---- bluez-utils-3.20.orig/tools/hciattach.c 2009-07-01 16:06:54.000000000 +0200
-+++ bluez-utils-3.20/tools/hciattach.c 2009-07-01 16:07:40.000000000 +0200
-@@ -104,7 +104,7 @@
- return B57600;
- case 115200:
- return B115200;
-- case 230400:
-+/* case 230400:
- return B230400;
- case 460800:
- return B460800;
-@@ -119,9 +119,9 @@
- case 1152000:
- return B1152000;
- case 1500000:
-- return B1500000;
-+ return B1500000;*/
- default:
-- return B57600;
-+ return B115200;
- }
- }
-
diff --git a/buildroot/target/device/.gitignore b/buildroot/target/device/.gitignore
index b3132da..9a1d08a 100644
--- a/buildroot/target/device/.gitignore
+++ b/buildroot/target/device/.gitignore
@@ -2,7 +2,7 @@ AMD/
ARM/
ARMLTD/
Atmel/
-Config.*
+/Config.*
Hitachi/
jp/
KwikByte/
diff --git a/buildroot/target/device/armadeus/Config.in b/buildroot/target/device/armadeus/Config.in
index 7d4a16a..773e32a 100644
--- a/buildroot/target/device/armadeus/Config.in
+++ b/buildroot/target/device/armadeus/Config.in
@@ -29,6 +29,11 @@ config BR2_BOARD_PATH
string
default "target/device/armadeus/$(BR2_BOARD_NAME)"
+config BR2_CPU_NAME
+ string
+ default "imxl" if BR2_TARGET_ARMADEUS_APF9328
+ default "imx27" if BR2_TARGET_ARMADEUS_APF27
+
source "target/device/armadeus/apf9328/Config.in"
source "target/device/armadeus/apf27/Config.in"
diff --git a/buildroot/target/device/armadeus/apf27/apf27_defconfig b/buildroot/target/device/armadeus/apf27/apf27_defconfig
index 02805ee..6b4c011 100644
--- a/buildroot/target/device/armadeus/apf27/apf27_defconfig
+++ b/buildroot/target/device/armadeus/apf27/apf27_defconfig
@@ -1,6 +1,6 @@
#
# Automatically generated make config: don't edit
-# Sun Jan 31 18:25:35 2010
+# Fri Apr 23 16:15:36 2010
#
BR2_HAVE_DOT_CONFIG=y
BR2_VERSION="0.10.0-svn"
@@ -70,6 +70,7 @@ BR2_TARGET_ARMADEUS=y
BR2_TARGET_ARMADEUS_APF27=y
BR2_BOARD_NAME="apf27"
BR2_BOARD_PATH="target/device/armadeus/$(BR2_BOARD_NAME)"
+BR2_CPU_NAME="imx27"
# BR2_TARGET_ARMADEUS_APF27_SDRAM_16 is not set
# BR2_TARGET_ARMADEUS_APF27_SDRAM_32 is not set
BR2_TARGET_ARMADEUS_APF27_SDRAM_64=y
diff --git a/buildroot/target/device/armadeus/apf9328/apf9328_defconfig b/buildroot/target/device/armadeus/apf9328/apf9328_defconfig
index bf02601..07716a1 100644
--- a/buildroot/target/device/armadeus/apf9328/apf9328_defconfig
+++ b/buildroot/target/device/armadeus/apf9328/apf9328_defconfig
@@ -1,6 +1,6 @@
#
# Automatically generated make config: don't edit
-# Tue Dec 8 17:26:00 2009
+# Fri Apr 23 16:43:36 2010
#
BR2_HAVE_DOT_CONFIG=y
BR2_VERSION="0.10.0-svn"
@@ -70,6 +70,7 @@ BR2_TARGET_ARMADEUS_APF9328=y
# BR2_TARGET_ARMADEUS_APF27 is not set
BR2_BOARD_NAME="apf9328"
BR2_BOARD_PATH="target/device/armadeus/$(BR2_BOARD_NAME)"
+BR2_CPU_NAME="imxl"
# BR2_TARGET_ARMADEUS_SDRAM_8 is not set
BR2_TARGET_ARMADEUS_SDRAM_16=y
# BR2_TARGET_ARMADEUS_SDRAM_32 is not set
hooks/post-receive
--
armadeus
|
|
From: Julien B a. A. <ar...@us...> - 2010-04-22 13:50:21
|
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "armadeus".
The branch, master has been updated
via 3822de7a6df167852d0f11ecbd8a325533a39599 (commit)
via 397ab26800114894ea3e23dd93ba163891ff5233 (commit)
via 1452d9b31940da10b01ae1911674e546e4a731f8 (commit)
via 7d45636b69ac75a615c9b1155758836c02c03811 (commit)
from d799fb3ddc79aaa66895fb05bf6308f16165a8f0 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 3822de7a6df167852d0f11ecbd8a325533a39599
Merge: 397ab26800114894ea3e23dd93ba163891ff5233 d799fb3ddc79aaa66895fb05bf6308f16165a8f0
Author: Julien Boibessot <jul...@ar...>
Date: Thu Apr 22 15:49:38 2010 +0200
Merge branch 'master' of ssh://artemys@armadeus.git.sourceforge.net/gitroot/armadeus/armadeus
commit 397ab26800114894ea3e23dd93ba163891ff5233
Author: Julien Boibessot <jul...@ar...>
Date: Thu Apr 22 15:49:09 2010 +0200
[DEMOS] Correct picture size bug in capture tool
commit 1452d9b31940da10b01ae1911674e546e4a731f8
Author: Julien Boibessot <jul...@ar...>
Date: Thu Apr 22 15:47:18 2010 +0200
[LINUX] Add ov7670_soc driver in default APF27 Linux configs
commit 7d45636b69ac75a615c9b1155758836c02c03811
Author: Julien Boibessot <jul...@ar...>
Date: Thu Apr 22 15:46:32 2010 +0200
[LINUX] SoC camera: add driver for OV7670 sensors
-----------------------------------------------------------------------
Summary of changes:
buildroot/local/apf27_test/linux-2.6.29.4.config | 3 +-
.../armadeus/apf27/apf27-linux-2.6.29.config | 3 +-
...adeus-soc_camera-add_ov7670_sensor_driver.patch | 1603 ++++++++++++++++++++
target/demos/camera/capture/capture.c | 2 +-
4 files changed, 1608 insertions(+), 3 deletions(-)
create mode 100644 buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/356-armadeus-soc_camera-add_ov7670_sensor_driver.patch
diff --git a/buildroot/local/apf27_test/linux-2.6.29.4.config b/buildroot/local/apf27_test/linux-2.6.29.4.config
index 58fd748..633eeda 100644
--- a/buildroot/local/apf27_test/linux-2.6.29.4.config
+++ b/buildroot/local/apf27_test/linux-2.6.29.4.config
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.29.6
-# Mon Feb 22 13:40:04 2010
+# Thu Apr 22 15:30:47 2010
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -1129,6 +1129,7 @@ CONFIG_SOC_CAMERA=m
# CONFIG_SOC_CAMERA_TW9910 is not set
# CONFIG_SOC_CAMERA_PLATFORM is not set
# CONFIG_SOC_CAMERA_OV772X is not set
+CONFIG_SOC_CAMERA_OV7670=m
# CONFIG_V4L_USB_DRIVERS is not set
CONFIG_VIDEO_MX27=m
# CONFIG_RADIO_ADAPTERS is not set
diff --git a/buildroot/target/device/armadeus/apf27/apf27-linux-2.6.29.config b/buildroot/target/device/armadeus/apf27/apf27-linux-2.6.29.config
index a2239f2..0883c54 100644
--- a/buildroot/target/device/armadeus/apf27/apf27-linux-2.6.29.config
+++ b/buildroot/target/device/armadeus/apf27/apf27-linux-2.6.29.config
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.29.6
-# Mon Feb 22 13:40:04 2010
+# Thu Apr 22 15:30:47 2010
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -1126,6 +1126,7 @@ CONFIG_SOC_CAMERA=m
# CONFIG_SOC_CAMERA_TW9910 is not set
# CONFIG_SOC_CAMERA_PLATFORM is not set
# CONFIG_SOC_CAMERA_OV772X is not set
+CONFIG_SOC_CAMERA_OV7670=m
# CONFIG_V4L_USB_DRIVERS is not set
CONFIG_VIDEO_MX27=m
# CONFIG_RADIO_ADAPTERS is not set
diff --git a/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/356-armadeus-soc_camera-add_ov7670_sensor_driver.patch b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/356-armadeus-soc_camera-add_ov7670_sensor_driver.patch
new file mode 100644
index 0000000..3909d7a
--- /dev/null
+++ b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/356-armadeus-soc_camera-add_ov7670_sensor_driver.patch
@@ -0,0 +1,1603 @@
+Adds a SoC camera compatible driver for OV7670.
+(Mostly an adaptation of the existing OV7670 OLPC driver)
+
+Signed-off-by: Julien Boibessot <jul...@ar...>
+
+Index: linux-2.6.29.6/drivers/media/video/ov7670_soc.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.29.6/drivers/media/video/ov7670_soc.c 2010-04-22 11:05:56.000000000 +0200
+@@ -0,0 +1,1564 @@
++/*
++ * A V4L2 driver for OmniVision OV7670 cameras.
++ *
++ * Copyright 2006 One Laptop Per Child Association, Inc. Written
++ * by Jonathan Corbet with substantial inspiration from Mark
++ * McClelland's ovcamchip code.
++ *
++ * Copyright 2006-7 Jonathan Corbet <co...@lw...>
++ *
++ * Copyright 2010 Armadeus Systems
++ * Modified to be compatible with soc_camera infrastructure
++ *
++ * This file may be distributed under the terms of the GNU General
++ * Public License, version 2.
++ */
++
++#include <linux/init.h>
++#include <linux/module.h>
++#include <linux/slab.h>
++#include <linux/delay.h>
++#include <linux/videodev.h>
++#include <media/v4l2-common.h>
++#include <media/v4l2-chip-ident.h>
++#include <linux/i2c.h>
++#include <media/soc_camera.h>
++
++
++MODULE_AUTHOR("Jonathan Corbet <co...@lw...>, Julien Boibessot <jul...@ar...>");
++MODULE_DESCRIPTION("SoC camera driver for OmniVision ov7670 sensors");
++MODULE_LICENSE("GPL");
++#define DRIVER_NAME "ov7670"
++
++/*
++ * Basic window sizes. These probably belong somewhere more globally
++ * useful.
++ */
++#define VGA_WIDTH 640
++#define VGA_HEIGHT 480
++#define QVGA_WIDTH 320
++#define QVGA_HEIGHT 240
++#define CIF_WIDTH 352
++#define CIF_HEIGHT 288
++#define QCIF_WIDTH 176
++#define QCIF_HEIGHT 144
++
++/*
++ * Array of image sizes supported by OV9640. These must be ordered from
++ * smallest image size to largest.
++ */
++struct capture_size {
++ unsigned long width;
++ unsigned long height;
++};
++
++enum image_size { QQCIF, QQVGA, QCIF, QVGA, CIF, VGA, SXGA };
++const static struct capture_size ov7670_sizes[] = {
++ { 88, 72 }, /* QQCIF */
++ { 160, 120 }, /* QQVGA */
++ { 176, 144 }, /* QCIF */
++ { 320, 240 }, /* QVGA */
++ { 352, 288 }, /* CIF */
++ { 640, 480 }, /* VGA */
++ { 1280, 960 }, /* SXGA */
++};
++
++/*
++ * Our nominal (default) frame rate.
++ */
++#define OV7670_FRAME_RATE 30
++
++/* Registers */
++#define REG_GAIN 0x00 /* Gain lower 8 bits (rest in vref) */
++#define REG_BLUE 0x01 /* blue gain */
++#define REG_RED 0x02 /* red gain */
++#define REG_VREF 0x03 /* Pieces of GAIN, VSTART, VSTOP */
++#define REG_COM1 0x04 /* Control 1 */
++#define COM1_CCIR656 0x40 /* CCIR656 enable */
++#define REG_BAVE 0x05 /* U/B Average level */
++#define REG_GbAVE 0x06 /* Y/Gb Average level */
++#define REG_AECHH 0x07 /* AEC MS 5 bits */
++#define REG_RAVE 0x08 /* V/R Average level */
++#define REG_COM2 0x09 /* Control 2 */
++#define COM2_SSLEEP 0x10 /* Soft sleep mode */
++#define REG_PID 0x0a /* Product ID MSB */
++#define REG_VER 0x0b /* Product ID LSB */
++#define REG_COM3 0x0c /* Control 3 */
++#define COM3_SWAP 0x40 /* Byte swap */
++#define COM3_SCALEEN 0x08 /* Enable scaling */
++#define COM3_DCWEN 0x04 /* Enable downsamp/crop/window */
++#define REG_COM4 0x0d /* Control 4 */
++#define REG_COM5 0x0e /* All "reserved" */
++#define REG_COM6 0x0f /* Control 6 */
++#define REG_AECH 0x10 /* More bits of AEC value */
++#define REG_CLKRC 0x11 /* Clocl control */
++#define CLK_EXT 0x40 /* Use external clock directly */
++#define CLK_SCALE 0x3f /* Mask for internal clock scale */
++#define REG_COM7 0x12 /* Control 7 */
++#define COM7_RESET 0x80 /* Register reset */
++#define COM7_FMT_MASK 0x38
++#define COM7_FMT_VGA 0x00
++#define COM7_FMT_CIF 0x20 /* CIF format */
++#define COM7_FMT_QVGA 0x10 /* QVGA format */
++#define COM7_FMT_QCIF 0x08 /* QCIF format */
++#define COM7_RGB 0x04 /* bits 0 and 2 - RGB format */
++#define COM7_YUV 0x00 /* YUV */
++#define COM7_BAYER 0x01 /* Bayer format */
++#define COM7_PBAYER 0x05 /* "Processed bayer" */
++#define REG_COM8 0x13 /* Control 8 */
++#define COM8_FASTAEC 0x80 /* Enable fast AGC/AEC */
++#define COM8_AECSTEP 0x40 /* Unlimited AEC step size */
++#define COM8_BFILT 0x20 /* Band filter enable */
++#define COM8_AGC 0x04 /* Auto gain enable */
++#define COM8_AWB 0x02 /* White balance enable */
++#define COM8_AEC 0x01 /* Auto exposure enable */
++#define REG_COM9 0x14 /* Control 9 - gain ceiling */
++#define REG_COM10 0x15 /* Control 10 */
++#define COM10_HSYNC 0x40 /* HSYNC instead of HREF */
++#define COM10_PCLK_HB 0x20 /* Suppress PCLK on horiz blank */
++#define COM10_HREF_REV 0x08 /* Reverse HREF */
++#define COM10_VS_LEAD 0x04 /* VSYNC on clock leading edge */
++#define COM10_VS_NEG 0x02 /* VSYNC negative */
++#define COM10_HS_NEG 0x01 /* HSYNC negative */
++#define REG_HSTART 0x17 /* Horiz start high bits */
++#define REG_HSTOP 0x18 /* Horiz stop high bits */
++#define REG_VSTART 0x19 /* Vert start high bits */
++#define REG_VSTOP 0x1a /* Vert stop high bits */
++#define REG_PSHFT 0x1b /* Pixel delay after HREF */
++#define REG_MIDH 0x1c /* Manuf. ID high */
++#define REG_MIDL 0x1d /* Manuf. ID low */
++#define REG_MVFP 0x1e /* Mirror / vflip */
++#define MVFP_MIRROR 0x20 /* Mirror image */
++#define MVFP_FLIP 0x10 /* Vertical flip */
++
++#define REG_AEW 0x24 /* AGC upper limit */
++#define REG_AEB 0x25 /* AGC lower limit */
++#define REG_VPT 0x26 /* AGC/AEC fast mode op region */
++#define REG_HSYST 0x30 /* HSYNC rising edge delay */
++#define REG_HSYEN 0x31 /* HSYNC falling edge delay */
++#define REG_HREF 0x32 /* HREF pieces */
++#define REG_TSLB 0x3a /* lots of stuff */
++#define TSLB_YLAST 0x04 /* UYVY or VYUY - see com13 */
++#define REG_COM11 0x3b /* Control 11 */
++#define COM11_NIGHT 0x80 /* NIght mode enable */
++#define COM11_NMFR 0x60 /* Two bit NM frame rate */
++#define COM11_HZAUTO 0x10 /* Auto detect 50/60 Hz */
++#define COM11_50HZ 0x08 /* Manual 50Hz select */
++#define COM11_EXP 0x02
++#define REG_COM12 0x3c /* Control 12 */
++#define COM12_HREF 0x80 /* HREF always */
++#define REG_COM13 0x3d /* Control 13 */
++#define COM13_GAMMA 0x80 /* Gamma enable */
++#define COM13_UVSAT 0x40 /* UV saturation auto adjustment */
++#define COM13_UVSWAP 0x01 /* V before U - w/TSLB */
++#define REG_COM14 0x3e /* Control 14 */
++#define COM14_DCWEN 0x10 /* DCW/PCLK-scale enable */
++#define REG_EDGE 0x3f /* Edge enhancement factor */
++#define REG_COM15 0x40 /* Control 15 */
++#define COM15_R10F0 0x00 /* Data range 10 to F0 */
++#define COM15_R01FE 0x80 /* 01 to FE */
++#define COM15_R00FF 0xc0 /* 00 to FF */
++#define COM15_RGB565 0x10 /* RGB565 output */
++#define COM15_RGB555 0x30 /* RGB555 output */
++#define REG_COM16 0x41 /* Control 16 */
++#define COM16_AWBGAIN 0x08 /* AWB gain enable */
++#define REG_COM17 0x42 /* Control 17 */
++#define COM17_AECWIN 0xc0 /* AEC window - must match COM4 */
++#define COM17_CBAR 0x08 /* DSP Color bar */
++
++/*
++ * This matrix defines how the colors are generated, must be
++ * tweaked to adjust hue and saturation.
++ *
++ * Order: v-red, v-green, v-blue, u-red, u-green, u-blue
++ *
++ * They are nine-bit signed quantities, with the sign bit
++ * stored in 0x58. Sign for v-red is bit 0, and up from there.
++ */
++#define REG_CMATRIX_BASE 0x4f
++#define CMATRIX_LEN 6
++#define REG_CMATRIX_SIGN 0x58
++
++
++#define REG_BRIGHT 0x55 /* Brightness */
++#define REG_CONTRAS 0x56 /* Contrast control */
++
++#define REG_GFIX 0x69 /* Fix gain control */
++
++#define REG_REG76 0x76 /* OV's name */
++#define R76_BLKPCOR 0x80 /* Black pixel correction enable */
++#define R76_WHTPCOR 0x40 /* White pixel correction enable */
++
++#define REG_RGB444 0x8c /* RGB 444 control */
++#define R444_ENABLE 0x02 /* Turn on RGB444, overrides 5x5 */
++#define R444_RGBX 0x01 /* Empty nibble at end */
++
++#define REG_HAECC1 0x9f /* Hist AEC/AGC control 1 */
++#define REG_HAECC2 0xa0 /* Hist AEC/AGC control 2 */
++
++#define REG_BD50MAX 0xa5 /* 50hz banding step limit */
++#define REG_HAECC3 0xa6 /* Hist AEC/AGC control 3 */
++#define REG_HAECC4 0xa7 /* Hist AEC/AGC control 4 */
++#define REG_HAECC5 0xa8 /* Hist AEC/AGC control 5 */
++#define REG_HAECC6 0xa9 /* Hist AEC/AGC control 6 */
++#define REG_HAECC7 0xaa /* Hist AEC/AGC control 7 */
++#define REG_BD60MAX 0xab /* 60hz banding step limit */
++
++
++/*
++ * Information we maintain about a known sensor.
++ */
++struct ov7670_format_struct; /* coming later */
++
++struct ov7670 {
++ struct i2c_client *i2c_client;
++ struct soc_camera_device icd;
++ int model; /* V4L2_IDENT_* codes from v4l2-chip-ident.h */
++// int ver; /*ov96xx chip version*/
++
++ struct v4l2_int_device *v4l2_int_device;
++ struct v4l2_pix_format pix;
++ struct v4l2_fract timeperframe;
++ struct ov7670_format_struct *fmt; /* Current format */
++ unsigned char sat; /* Saturation value */
++ int hue; /* Hue value */
++};
++
++
++
++/*
++ * The default register settings, as obtained from OmniVision. There
++ * is really no making sense of most of these - lots of "reserved" values
++ * and such.
++ *
++ * These settings give VGA YUYV.
++ */
++
++struct regval_list {
++ unsigned char reg_num;
++ unsigned char value;
++};
++
++static struct regval_list ov7670_default_regs[] = {
++ { REG_COM7, COM7_RESET },
++/*
++ * Clock scale: 3 = 15fps
++ * 2 = 20fps
++ * 1 = 30fps
++ */
++ { REG_CLKRC, 0x1 }, /* OV: clock scale (30 fps) */
++ { REG_TSLB, 0x04 }, /* OV */
++ { REG_COM7, 0 }, /* VGA */
++ /*
++ * Set the hardware window. These values from OV don't entirely
++ * make sense - hstop is less than hstart. But they work...
++ */
++ { REG_HSTART, 0x13 }, { REG_HSTOP, 0x01 },
++ { REG_HREF, 0xb6 }, { REG_VSTART, 0x02 },
++ { REG_VSTOP, 0x7a }, { REG_VREF, 0x0a },
++
++ { REG_COM3, 0 }, { REG_COM14, 0 },
++ /* Mystery scaling numbers */
++ { 0x70, 0x3a }, { 0x71, 0x35 },
++ { 0x72, 0x11 }, { 0x73, 0xf0 },
++ { 0xa2, 0x02 }, { REG_COM10, 0x0 },
++
++ /* Gamma curve values */
++ { 0x7a, 0x20 }, { 0x7b, 0x10 },
++ { 0x7c, 0x1e }, { 0x7d, 0x35 },
++ { 0x7e, 0x5a }, { 0x7f, 0x69 },
++ { 0x80, 0x76 }, { 0x81, 0x80 },
++ { 0x82, 0x88 }, { 0x83, 0x8f },
++ { 0x84, 0x96 }, { 0x85, 0xa3 },
++ { 0x86, 0xaf }, { 0x87, 0xc4 },
++ { 0x88, 0xd7 }, { 0x89, 0xe8 },
++
++ /* AGC and AEC parameters. Note we start by disabling those features,
++ then turn them only after tweaking the values. */
++ { REG_COM8, COM8_FASTAEC | COM8_AECSTEP | COM8_BFILT },
++ { REG_GAIN, 0 }, { REG_AECH, 0 },
++ { REG_COM4, 0x40 }, /* magic reserved bit */
++ { REG_COM9, 0x18 }, /* 4x gain + magic rsvd bit */
++ { REG_BD50MAX, 0x05 }, { REG_BD60MAX, 0x07 },
++ { REG_AEW, 0x95 }, { REG_AEB, 0x33 },
++ { REG_VPT, 0xe3 }, { REG_HAECC1, 0x78 },
++ { REG_HAECC2, 0x68 }, { 0xa1, 0x03 }, /* magic */
++ { REG_HAECC3, 0xd8 }, { REG_HAECC4, 0xd8 },
++ { REG_HAECC5, 0xf0 }, { REG_HAECC6, 0x90 },
++ { REG_HAECC7, 0x94 },
++ { REG_COM8, COM8_FASTAEC|COM8_AECSTEP|COM8_BFILT|COM8_AGC|COM8_AEC },
++
++ /* Almost all of these are magic "reserved" values. */
++ { REG_COM5, 0x61 }, { REG_COM6, 0x4b },
++ { 0x16, 0x02 }, { REG_MVFP, 0x07 },
++ { 0x21, 0x02 }, { 0x22, 0x91 },
++ { 0x29, 0x07 }, { 0x33, 0x0b },
++ { 0x35, 0x0b }, { 0x37, 0x1d },
++ { 0x38, 0x71 }, { 0x39, 0x2a },
++ { REG_COM12, 0x78 }, { 0x4d, 0x40 },
++ { 0x4e, 0x20 }, { REG_GFIX, 0 },
++ { 0x6b, 0x4a }, { 0x74, 0x10 },
++ { 0x8d, 0x4f }, { 0x8e, 0 },
++ { 0x8f, 0 }, { 0x90, 0 },
++ { 0x91, 0 }, { 0x96, 0 },
++ { 0x9a, 0 }, { 0xb0, 0x84 },
++ { 0xb1, 0x0c }, { 0xb2, 0x0e },
++ { 0xb3, 0x82 }, { 0xb8, 0x0a },
++
++ /* More reserved magic, some of which tweaks white balance */
++ { 0x43, 0x0a }, { 0x44, 0xf0 },
++ { 0x45, 0x34 }, { 0x46, 0x58 },
++ { 0x47, 0x28 }, { 0x48, 0x3a },
++ { 0x59, 0x88 }, { 0x5a, 0x88 },
++ { 0x5b, 0x44 }, { 0x5c, 0x67 },
++ { 0x5d, 0x49 }, { 0x5e, 0x0e },
++ { 0x6c, 0x0a }, { 0x6d, 0x55 },
++ { 0x6e, 0x11 }, { 0x6f, 0x9f }, /* "9e for advance AWB" */
++ { 0x6a, 0x40 }, { REG_BLUE, 0x40 },
++ { REG_RED, 0x60 },
++ { REG_COM8, COM8_FASTAEC|COM8_AECSTEP|COM8_BFILT|COM8_AGC|COM8_AEC|COM8_AWB },
++
++ /* Matrix coefficients */
++ { 0x4f, 0x80 }, { 0x50, 0x80 },
++ { 0x51, 0 }, { 0x52, 0x22 },
++ { 0x53, 0x5e }, { 0x54, 0x80 },
++ { 0x58, 0x9e },
++
++ { REG_COM16, COM16_AWBGAIN }, { REG_EDGE, 0 },
++ { 0x75, 0x05 }, { 0x76, 0xe1 },
++ { 0x4c, 0 }, { 0x77, 0x01 },
++ { REG_COM13, 0xc3 }, { 0x4b, 0x09 },
++ { 0xc9, 0x60 }, { REG_COM16, 0x38 },
++ { 0x56, 0x40 },
++
++ { 0x34, 0x11 }, { REG_COM11, COM11_EXP|COM11_HZAUTO },
++ { 0xa4, 0x88 }, { 0x96, 0 },
++ { 0x97, 0x30 }, { 0x98, 0x20 },
++ { 0x99, 0x30 }, { 0x9a, 0x84 },
++ { 0x9b, 0x29 }, { 0x9c, 0x03 },
++ { 0x9d, 0x4c }, { 0x9e, 0x3f },
++ { 0x78, 0x04 },
++
++ /* Extra-weird stuff. Some sort of multiplexor register */
++ { 0x79, 0x01 }, { 0xc8, 0xf0 },
++ { 0x79, 0x0f }, { 0xc8, 0x00 },
++ { 0x79, 0x10 }, { 0xc8, 0x7e },
++ { 0x79, 0x0a }, { 0xc8, 0x80 },
++ { 0x79, 0x0b }, { 0xc8, 0x01 },
++ { 0x79, 0x0c }, { 0xc8, 0x0f },
++ { 0x79, 0x0d }, { 0xc8, 0x20 },
++ { 0x79, 0x09 }, { 0xc8, 0x80 },
++ { 0x79, 0x02 }, { 0xc8, 0xc0 },
++ { 0x79, 0x03 }, { 0xc8, 0x40 },
++ { 0x79, 0x05 }, { 0xc8, 0x30 },
++ { 0x79, 0x26 },
++
++ { 0xff, 0xff }, /* END MARKER */
++};
++
++
++/*
++ * Here we'll try to encapsulate the changes for just the output
++ * video format.
++ *
++ * RGB656 and YUV422 come from OV; RGB444 is homebrewed.
++ *
++ * IMPORTANT RULE: the first entry must be for COM7, see ov7670_s_fmt for why.
++ */
++
++
++static struct regval_list ov7670_fmt_yuv422[] = {
++ { REG_COM7, 0x0 }, /* Selects YUV mode */
++ { REG_RGB444, 0 }, /* No RGB444 please */
++ { REG_COM1, 0 },
++ { REG_COM15, COM15_R00FF },
++ { REG_COM9, 0x18 }, /* 4x gain ceiling; 0x8 is reserved bit */
++ { 0x4f, 0x80 }, /* "matrix coefficient 1" */
++ { 0x50, 0x80 }, /* "matrix coefficient 2" */
++ { 0x51, 0 }, /* vb */
++ { 0x52, 0x22 }, /* "matrix coefficient 4" */
++ { 0x53, 0x5e }, /* "matrix coefficient 5" */
++ { 0x54, 0x80 }, /* "matrix coefficient 6" */
++ { REG_COM13, COM13_GAMMA|COM13_UVSAT },
++ { 0xff, 0xff },
++};
++
++static struct regval_list ov7670_fmt_rgb565[] = {
++ { REG_COM7, COM7_RGB }, /* Selects RGB mode */
++ { REG_RGB444, 0 }, /* No RGB444 please */
++ { REG_COM1, 0x0 },
++ { REG_COM15, COM15_RGB565 },
++ { REG_COM9, 0x38 }, /* 16x gain ceiling; 0x8 is reserved bit */
++ { 0x4f, 0xb3 }, /* "matrix coefficient 1" */
++ { 0x50, 0xb3 }, /* "matrix coefficient 2" */
++ { 0x51, 0 }, /* vb */
++ { 0x52, 0x3d }, /* "matrix coefficient 4" */
++ { 0x53, 0xa7 }, /* "matrix coefficient 5" */
++ { 0x54, 0xe4 }, /* "matrix coefficient 6" */
++ { REG_COM13, COM13_GAMMA|COM13_UVSAT },
++ { 0xff, 0xff },
++};
++
++static struct regval_list ov7670_fmt_rgb444[] = {
++ { REG_COM7, COM7_RGB }, /* Selects RGB mode */
++ { REG_RGB444, R444_ENABLE }, /* Enable xxxxrrrr ggggbbbb */
++ { REG_COM1, 0x40 }, /* Magic reserved bit */
++ { REG_COM15, COM15_R01FE|COM15_RGB565 }, /* Data range needed? */
++ { REG_COM9, 0x38 }, /* 16x gain ceiling; 0x8 is reserved bit */
++ { 0x4f, 0xb3 }, /* "matrix coefficient 1" */
++ { 0x50, 0xb3 }, /* "matrix coefficient 2" */
++ { 0x51, 0 }, /* vb */
++ { 0x52, 0x3d }, /* "matrix coefficient 4" */
++ { 0x53, 0xa7 }, /* "matrix coefficient 5" */
++ { 0x54, 0xe4 }, /* "matrix coefficient 6" */
++ { REG_COM13, COM13_GAMMA|COM13_UVSAT|0x2 }, /* Magic rsvd bit */
++ { 0xff, 0xff },
++};
++
++static struct regval_list ov7670_fmt_raw[] = {
++ { REG_COM7, COM7_BAYER },
++ { REG_COM13, 0x08 }, /* No gamma, magic rsvd bit */
++ { REG_COM16, 0x3d }, /* Edge enhancement, denoise */
++ { REG_REG76, 0xe1 }, /* Pix correction, magic rsvd */
++ { 0xff, 0xff },
++};
++
++
++
++/*
++ * Low-level register I/O.
++ */
++#if 0
++static int ov7670_read(struct i2c_client *c, unsigned char reg,
++ unsigned char *value)
++{
++ int ret;
++
++ ret = i2c_smbus_read_byte_data(c, reg);
++ if (ret >= 0) {
++ *value = (unsigned char) ret;
++ ret = 0;
++ }
++ return ret;
++}
++#endif
++
++static int ov7670_read(struct i2c_client *client, u8 reg, u8 *val)
++{
++ int err;
++ struct i2c_msg msg[1];
++ unsigned char data[1];
++
++ if (!client->adapter)
++ return -ENODEV;
++
++ msg->addr = client->addr;
++ msg->flags = 0;
++ msg->len = 1;
++ msg->buf = data;
++ *data = reg;
++ err = i2c_transfer(client->adapter, msg, 1);
++ if (err >= 0) {
++ msg->flags = I2C_M_RD;
++ err = i2c_transfer(client->adapter, msg, 1);
++ }
++ if (err >= 0) {
++ *val = *data;
++ return 0;
++ }
++ return err;
++}
++
++static int ov7670_write(struct i2c_client *c, unsigned char reg,
++ unsigned char value)
++{
++ int ret = i2c_smbus_write_byte_data(c, reg, value);
++ if (reg == REG_COM7 && (value & COM7_RESET))
++ msleep(2); /* Wait for reset to run */
++ return ret;
++}
++
++
++/*
++ * Write a list of register settings; ff/ff stops the process.
++ */
++static int ov7670_write_array(struct i2c_client *c, struct regval_list *vals)
++{
++ while (vals->reg_num != 0xff || vals->value != 0xff) {
++ int ret = ov7670_write(c, vals->reg_num, vals->value);
++ if (ret < 0)
++ return ret;
++ vals++;
++ }
++ return 0;
++}
++
++
++/*
++ * Stuff that knows about the sensor.
++ */
++static void ov7670_reset(struct i2c_client *client)
++{
++ ov7670_write(client, REG_COM7, COM7_RESET);
++ msleep(1);
++}
++
++static int ov7670_initialize(struct i2c_client *client)
++{
++ dev_info(&client->dev, "initializing\n");
++ return ov7670_write_array(client, ov7670_default_regs);
++}
++
++static int ov7670_init(struct soc_camera_device *icd)
++{
++ struct ov7670 *ov7670 = container_of(icd, struct ov7670, icd);
++ struct i2c_client *client = ov7670->i2c_client;
++
++ return ov7670_initialize(client);
++}
++
++static int ov7670_release(struct soc_camera_device *icd)
++{
++ /* Disable the chip ?? */
++ /* TBDJB */
++ printk(KERN_DEBUG "- %s\n", __func__);
++ return 0;
++}
++
++static int ov7670_start_capture(struct soc_camera_device *icd)
++{
++ /* TBDJB */
++ printk(KERN_DEBUG "- %s\n", __func__);
++ return 0;
++}
++
++static int ov7670_stop_capture(struct soc_camera_device *icd)
++{
++ /* TBDJB */
++ printk(KERN_DEBUG "- %s\n", __func__);
++ return 0;
++}
++
++static int ov7670_set_bus_param(struct soc_camera_device *icd,
++ unsigned long flags)
++{
++ /* TBDJB */
++ printk(KERN_DEBUG "- %s\n", __func__);
++ return 0;
++}
++
++static unsigned long ov7670_query_bus_param(struct soc_camera_device *icd)
++{
++ unsigned int width_flag = SOCAM_DATAWIDTH_10 | SOCAM_DATAWIDTH_8;
++
++ printk(KERN_DEBUG "- %s\n", __func__);
++ /* OV7670 has all capture_format parameters fixed ?? TBDJB*/
++ return SOCAM_PCLK_SAMPLE_RISING |
++ SOCAM_HSYNC_ACTIVE_HIGH |
++ SOCAM_VSYNC_ACTIVE_HIGH |
++ SOCAM_MASTER |
++ width_flag;
++}
++
++static int ov7670_detect(struct i2c_client *client)
++{
++ unsigned char v;
++ int ret;
++
++#if 0
++ ret = ov7670_initialize(client);
++ if (ret < 0)
++ return ret;
++#endif
++ ret = ov7670_read(client, REG_MIDH, &v);
++ if (ret < 0)
++ return ret;
++ if (v != 0x7f) /* OV manuf. id. */
++ return -ENODEV;
++ ret = ov7670_read(client, REG_MIDL, &v);
++ if (ret < 0)
++ return ret;
++ if (v != 0xa2)
++ return -ENODEV;
++ /*
++ * OK, we know we have an OmniVision chip...but which one?
++ */
++ ret = ov7670_read(client, REG_PID, &v);
++ if (ret < 0)
++ return ret;
++ if (v != 0x76) /* PID + VER = 0x76 / 0x73 */
++ return -ENODEV;
++ ret = ov7670_read(client, REG_VER, &v);
++ if (ret < 0)
++ return ret;
++ if (v != 0x73) /* PID + VER = 0x76 / 0x73 */
++ return -ENODEV;
++
++ return 0;
++}
++
++
++/*
++ * Store information about the video data format. The color matrix
++ * is deeply tied into the format, so keep the relevant values here.
++ * The magic matrix nubmers come from OmniVision.
++ */
++static struct ov7670_format_struct {
++ __u8 *desc;
++ __u32 pixelformat;
++ struct regval_list *regs;
++ int cmatrix[CMATRIX_LEN];
++ int bpp; /* Bytes per pixel */
++} ov7670_formats[] = {
++ {
++ .desc = "YUYV 4:2:2",
++ .pixelformat = V4L2_PIX_FMT_YUYV,
++ .regs = ov7670_fmt_yuv422,
++ .cmatrix = { 128, -128, 0, -34, -94, 128 },
++ .bpp = 2,
++ },
++ {
++ .desc = "RGB 444",
++ .pixelformat = V4L2_PIX_FMT_RGB444,
++ .regs = ov7670_fmt_rgb444,
++ .cmatrix = { 179, -179, 0, -61, -176, 228 },
++ .bpp = 2,
++ },
++ {
++ .desc = "RGB 565",
++ .pixelformat = V4L2_PIX_FMT_RGB565,
++ .regs = ov7670_fmt_rgb565,
++ .cmatrix = { 179, -179, 0, -61, -176, 228 },
++ .bpp = 2,
++ },
++ {
++ .desc = "Raw RGB Bayer",
++ .pixelformat = V4L2_PIX_FMT_SBGGR8,
++ .regs = ov7670_fmt_raw,
++ .cmatrix = { 0, 0, 0, 0, 0, 0 },
++ .bpp = 1
++ },
++};
++#define N_OV7670_FMTS ARRAY_SIZE(ov7670_formats)
++
++static const struct soc_camera_data_format ov7670_soc_formats[] = {
++ {
++ .name = "YUYV 4:2:2",
++ .fourcc = V4L2_PIX_FMT_YUYV,
++ .depth = 16,
++ },
++ {
++ .name = "RGB 444",
++ .fourcc = V4L2_PIX_FMT_RGB444,
++ .depth = 16,
++ },
++ {
++ .name = "RGB 565",
++ .fourcc = V4L2_PIX_FMT_RGB565,
++ .depth = 16,
++ },
++ {
++ .name = "Raw RGB Bayer",
++ .fourcc = V4L2_PIX_FMT_SBGGR8,
++ .depth = 8,
++ },
++
++};
++
++/*
++ * Then there is the issue of window sizes. Try to capture the info here.
++ */
++
++/*
++ * QCIF mode is done (by OV) in a very strange way - it actually looks like
++ * VGA with weird scaling options - they do *not* use the canned QCIF mode
++ * which is allegedly provided by the sensor. So here's the weird register
++ * settings.
++ */
++static struct regval_list ov7670_qcif_regs[] = {
++ { REG_COM3, COM3_SCALEEN|COM3_DCWEN },
++ { REG_COM3, COM3_DCWEN },
++ { REG_COM14, COM14_DCWEN | 0x01},
++ { 0x73, 0xf1 },
++ { 0xa2, 0x52 },
++ { 0x7b, 0x1c },
++ { 0x7c, 0x28 },
++ { 0x7d, 0x3c },
++ { 0x7f, 0x69 },
++ { REG_COM9, 0x38 },
++ { 0xa1, 0x0b },
++ { 0x74, 0x19 },
++ { 0x9a, 0x80 },
++ { 0x43, 0x14 },
++ { REG_COM13, 0xc0 },
++ { 0xff, 0xff },
++};
++
++static struct ov7670_win_size {
++ int width;
++ int height;
++ unsigned char com7_bit;
++ int hstart; /* Start/stop values for the camera. Note */
++ int hstop; /* that they do not always make complete */
++ int vstart; /* sense to humans, but evidently the sensor */
++ int vstop; /* will do the right thing... */
++ struct regval_list *regs; /* Regs to tweak */
++/* h/vref stuff */
++} ov7670_win_sizes[] = {
++ /* VGA */
++ {
++ .width = VGA_WIDTH,
++ .height = VGA_HEIGHT,
++ .com7_bit = COM7_FMT_VGA,
++ .hstart = 158, /* These values from */
++ .hstop = 14, /* Omnivision */
++ .vstart = 10,
++ .vstop = 490,
++ .regs = NULL,
++ },
++ /* CIF */
++ {
++ .width = CIF_WIDTH,
++ .height = CIF_HEIGHT,
++ .com7_bit = COM7_FMT_CIF,
++ .hstart = 170, /* Empirically determined */
++ .hstop = 90,
++ .vstart = 14,
++ .vstop = 494,
++ .regs = NULL,
++ },
++ /* QVGA */
++ {
++ .width = QVGA_WIDTH,
++ .height = QVGA_HEIGHT,
++ .com7_bit = COM7_FMT_QVGA,
++ .hstart = 164, /* Empirically determined */
++ .hstop = 20,
++ .vstart = 14,
++ .vstop = 494,
++ .regs = NULL,
++ },
++ /* QCIF */
++ {
++ .width = QCIF_WIDTH,
++ .height = QCIF_HEIGHT,
++ .com7_bit = COM7_FMT_VGA, /* see comment above */
++ .hstart = 456, /* Empirically determined */
++ .hstop = 24,
++ .vstart = 14,
++ .vstop = 494,
++ .regs = ov7670_qcif_regs,
++ },
++};
++
++#define N_WIN_SIZES (ARRAY_SIZE(ov7670_win_sizes))
++
++
++/*
++ * Store a set of start/stop values into the camera.
++ */
++static int ov7670_set_hw(struct i2c_client *client, int hstart, int hstop,
++ int vstart, int vstop)
++{
++ int ret;
++ unsigned char v;
++/*
++ * Horizontal: 11 bits, top 8 live in hstart and hstop. Bottom 3 of
++ * hstart are in href[2:0], bottom 3 of hstop in href[5:3]. There is
++ * a mystery "edge offset" value in the top two bits of href.
++ */
++ ret = ov7670_write(client, REG_HSTART, (hstart >> 3) & 0xff);
++ ret += ov7670_write(client, REG_HSTOP, (hstop >> 3) & 0xff);
++ ret += ov7670_read(client, REG_HREF, &v);
++ v = (v & 0xc0) | ((hstop & 0x7) << 3) | (hstart & 0x7);
++ msleep(10);
++ ret += ov7670_write(client, REG_HREF, v);
++/*
++ * Vertical: similar arrangement, but only 10 bits.
++ */
++ ret += ov7670_write(client, REG_VSTART, (vstart >> 2) & 0xff);
++ ret += ov7670_write(client, REG_VSTOP, (vstop >> 2) & 0xff);
++ ret += ov7670_read(client, REG_VREF, &v);
++ v = (v & 0xf0) | ((vstop & 0x3) << 2) | (vstart & 0x3);
++ msleep(10);
++ ret += ov7670_write(client, REG_VREF, v);
++ return ret;
++}
++
++static int ov7670_try_format(struct i2c_client *client , struct v4l2_format *fmt,
++ struct ov7670_format_struct **ret_fmt,
++ struct ov7670_win_size **ret_wsize)
++{
++ int index;
++ struct ov7670_win_size *wsize;
++ struct v4l2_pix_format *pix = &fmt->fmt.pix;
++
++ if (!fmt) {
++ printk("Invalid format\n");
++ return -EINVAL;
++ }
++ for (index = 0; index < N_OV7670_FMTS; index++) {
++ if (ov7670_formats[index].pixelformat == pix->pixelformat)
++ break;
++ }
++ if (index >= N_OV7670_FMTS) {
++ /* default to first format */
++ index = 0;
++ pix->pixelformat = ov7670_formats[0].pixelformat;
++ }
++ /*
++ * Fields: the OV devices claim to be progressive.
++ */
++ pix->field = V4L2_FIELD_NONE;
++ /*
++ * Round requested image size down to the nearest
++ * we support, but not below the smallest.
++ */
++ for (wsize = ov7670_win_sizes; wsize < ov7670_win_sizes + N_WIN_SIZES;
++ wsize++)
++ if (pix->width >= wsize->width && pix->height >= wsize->height)
++ break;
++ if (wsize >= ov7670_win_sizes + N_WIN_SIZES)
++ wsize--; /* Take the smallest one */
++ /*
++ * Note the size we'll actually handle.
++ */
++ pix->width = wsize->width;
++ pix->height = wsize->height;
++ pix->bytesperline = pix->width*ov7670_formats[index].bpp;
++ pix->sizeimage = pix->height*pix->bytesperline;
++
++ return 0;
++}
++
++static int ov7670_try_fmt(struct soc_camera_device *icd, struct v4l2_format *fmt)
++{
++ struct ov7670 *ov7670 = container_of(icd, struct ov7670, icd);
++ struct i2c_client *client = ov7670->i2c_client;
++
++ return ov7670_try_format(client, fmt, NULL, NULL);
++}
++
++
++/*
++ * Set a format.
++ */
++static int ov7670_set_fmt(struct soc_camera_device *icd,
++ __u32 pixfmt,
++ struct v4l2_rect *rect)
++{
++ struct ov7670 *ov7670 = container_of(icd, struct ov7670, icd);
++ struct i2c_client *c = ov7670->i2c_client;
++ int ret = -EINVAL;
++ int i;
++ struct ov7670_win_size *wsize;
++ unsigned char com7, clkrc;
++
++ for (i = 0; i < N_OV7670_FMTS; i++) {
++ if (pixfmt == ov7670_formats[i].pixelformat) {
++ ret = 0;
++ ov7670->fmt = &ov7670_formats[i];
++ icd->current_fmt = &ov7670_soc_formats[i];
++ break;
++ }
++ }
++
++/* ret = ov7670_try_format(c, fmt, &ovfmt, &wsize);*/
++ if (ret)
++ return ret;
++
++ /* Duplicated code ? */
++ for (wsize = ov7670_win_sizes; wsize < ov7670_win_sizes + N_WIN_SIZES;
++ wsize++)
++ if (rect->width >= wsize->width && rect->height >= wsize->height)
++ break;
++ if (wsize >= ov7670_win_sizes + N_WIN_SIZES)
++ wsize--; /* Take the smallest one */
++
++ /*
++ * HACK: if we're running rgb565 we need to grab then rewrite
++ * CLKRC. If we're *not*, however, then rewriting clkrc hoses
++ * the colors.
++ */
++ if (pixfmt == V4L2_PIX_FMT_RGB565) {
++ ret = ov7670_read(c, REG_CLKRC, &clkrc);
++ if (ret)
++ return ret;
++ }
++ /*
++ * COM7 is a pain in the ass, it doesn't like to be read then
++ * quickly written afterward. But we have everything we need
++ * to set it absolutely here, as long as the format-specific
++ * register sets list it first.
++ */
++ com7 = ov7670->fmt->regs[0].value;
++ com7 |= wsize->com7_bit;
++ ov7670_write(c, REG_COM7, com7);
++ /*
++ * Now write the rest of the array. Also store start/stops
++ */
++ ov7670_write_array(c, ov7670->fmt->regs + 1);
++ ov7670_set_hw(c, wsize->hstart, wsize->hstop, wsize->vstart,
++ wsize->vstop);
++ ret = 0;
++ if (wsize->regs)
++ ret = ov7670_write_array(c, wsize->regs);
++
++ if (pixfmt == V4L2_PIX_FMT_RGB565 && ret == 0)
++ ret = ov7670_write(c, REG_CLKRC, clkrc);
++
++ return ret;
++}
++
++/*
++ * Implement G/S_PARM. There is a "high quality" mode we could try
++ * to do someday; for now, we just do the frame rate tweak.
++ */
++#if 0
++static int ov7670_g_parm(struct i2c_client *c, struct v4l2_streamparm *parms)
++{
++ struct v4l2_captureparm *cp = &parms->parm.capture;
++ unsigned char clkrc;
++ int ret;
++
++ if (parms->type != V4L2_BUF_TYPE_VIDEO_CAPTURE)
++ return -EINVAL;
++ ret = ov7670_read(c, REG_CLKRC, &clkrc);
++ if (ret < 0)
++ return ret;
++ memset(cp, 0, sizeof(struct v4l2_captureparm));
++ cp->capability = V4L2_CAP_TIMEPERFRAME;
++ cp->timeperframe.numerator = 1;
++ cp->timeperframe.denominator = OV7670_FRAME_RATE;
++ if ((clkrc & CLK_EXT) == 0 && (clkrc & CLK_SCALE) > 1)
++ cp->timeperframe.denominator /= (clkrc & CLK_SCALE);
++ return 0;
++}
++
++static int ov7670_s_parm(struct i2c_client *c, struct v4l2_streamparm *parms)
++{
++ struct v4l2_captureparm *cp = &parms->parm.capture;
++ struct v4l2_fract *tpf = &cp->timeperframe;
++ unsigned char clkrc;
++ int ret, div;
++
++ if (parms->type != V4L2_BUF_TYPE_VIDEO_CAPTURE)
++ return -EINVAL;
++ if (cp->extendedmode != 0)
++ return -EINVAL;
++ /*
++ * CLKRC has a reserved bit, so let's preserve it.
++ */
++ ret = ov7670_read(c, REG_CLKRC, &clkrc);
++ if (ret < 0)
++ return ret;
++ if (tpf->numerator == 0 || tpf->denominator == 0)
++ div = 1; /* Reset to full rate */
++ else
++ div = (tpf->numerator*OV7670_FRAME_RATE)/tpf->denominator;
++ if (div == 0)
++ div = 1;
++ else if (div > CLK_SCALE)
++ div = CLK_SCALE;
++ clkrc = (clkrc & 0x80) | div;
++ tpf->numerator = 1;
++ tpf->denominator = OV7670_FRAME_RATE/div;
++ return ov7670_write(c, REG_CLKRC, clkrc);
++}
++#endif
++
++
++/*
++ * Code for dealing with controls.
++ */
++
++static int ov7670_store_cmatrix(struct i2c_client *client,
++ int matrix[CMATRIX_LEN])
++{
++ int i, ret;
++ unsigned char signbits = 0;
++
++ /*
++ * Weird crap seems to exist in the upper part of
++ * the sign bits register, so let's preserve it.
++ */
++ ret = ov7670_read(client, REG_CMATRIX_SIGN, &signbits);
++ signbits &= 0xc0;
++
++ for (i = 0; i < CMATRIX_LEN; i++) {
++ unsigned char raw;
++
++ if (matrix[i] < 0) {
++ signbits |= (1 << i);
++ if (matrix[i] < -255)
++ raw = 0xff;
++ else
++ raw = (-1 * matrix[i]) & 0xff;
++ }
++ else {
++ if (matrix[i] > 255)
++ raw = 0xff;
++ else
++ raw = matrix[i] & 0xff;
++ }
++ ret += ov7670_write(client, REG_CMATRIX_BASE + i, raw);
++ }
++ ret += ov7670_write(client, REG_CMATRIX_SIGN, signbits);
++ return ret;
++}
++
++
++/*
++ * Hue also requires messing with the color matrix. It also requires
++ * trig functions, which tend not to be well supported in the kernel.
++ * So here is a simple table of sine values, 0-90 degrees, in steps
++ * of five degrees. Values are multiplied by 1000.
++ *
++ * The following naive approximate trig functions require an argument
++ * carefully limited to -180 <= theta <= 180.
++ */
++#define SIN_STEP 5
++static const int ov7670_sin_table[] = {
++ 0, 87, 173, 258, 342, 422,
++ 499, 573, 642, 707, 766, 819,
++ 866, 906, 939, 965, 984, 996,
++ 1000
++};
++
++static int ov7670_sine(int theta)
++{
++ int chs = 1;
++ int sine;
++
++ if (theta < 0) {
++ theta = -theta;
++ chs = -1;
++ }
++ if (theta <= 90)
++ sine = ov7670_sin_table[theta/SIN_STEP];
++ else {
++ theta -= 90;
++ sine = 1000 - ov7670_sin_table[theta/SIN_STEP];
++ }
++ return sine*chs;
++}
++
++static int ov7670_cosine(int theta)
++{
++ theta = 90 - theta;
++ if (theta > 180)
++ theta -= 360;
++ else if (theta < -180)
++ theta += 360;
++ return ov7670_sine(theta);
++}
++
++static void ov7670_calc_cmatrix(struct ov7670 *info,
++ int matrix[CMATRIX_LEN])
++{
++ int i;
++ /*
++ * Apply the current saturation setting first.
++ */
++ for (i = 0; i < CMATRIX_LEN; i++)
++ matrix[i] = (info->fmt->cmatrix[i]*info->sat) >> 7;
++ /*
++ * Then, if need be, rotate the hue value.
++ */
++ if (info->hue != 0) {
++ int sinth, costh, tmpmatrix[CMATRIX_LEN];
++
++ memcpy(tmpmatrix, matrix, CMATRIX_LEN*sizeof(int));
++ sinth = ov7670_sine(info->hue);
++ costh = ov7670_cosine(info->hue);
++
++ matrix[0] = (matrix[3]*sinth + matrix[0]*costh)/1000;
++ matrix[1] = (matrix[4]*sinth + matrix[1]*costh)/1000;
++ matrix[2] = (matrix[5]*sinth + matrix[2]*costh)/1000;
++ matrix[3] = (matrix[3]*costh - matrix[0]*sinth)/1000;
++ matrix[4] = (matrix[4]*costh - matrix[1]*sinth)/1000;
++ matrix[5] = (matrix[5]*costh - matrix[2]*sinth)/1000;
++ }
++}
++
++static int ov7670_tweak_sat(struct i2c_client *client, int value)
++{
++ struct ov7670 *info = i2c_get_clientdata(client);
++ int matrix[CMATRIX_LEN];
++ int ret;
++
++ info->sat = value;
++ ov7670_calc_cmatrix(info, matrix);
++ ret = ov7670_store_cmatrix(client, matrix);
++ return ret;
++}
++
++static int ov7670_query_sat(struct i2c_client *client, __s32 *value)
++{
++ struct ov7670 *info = i2c_get_clientdata(client);
++
++ *value = info->sat;
++ return 0;
++}
++
++static int ov7670_tweak_hue(struct i2c_client *client, int value)
++{
++ struct ov7670 *info = i2c_get_clientdata(client);
++ int matrix[CMATRIX_LEN];
++ int ret;
++
++ if (value < -180 || value > 180)
++ return -EINVAL;
++ info->hue = value;
++ ov7670_calc_cmatrix(info, matrix);
++ ret = ov7670_store_cmatrix(client, matrix);
++ return ret;
++}
++
++static int ov7670_query_hue(struct i2c_client *client, __s32 *value)
++{
++ struct ov7670 *info = i2c_get_clientdata(client);
++
++ *value = info->hue;
++ return 0;
++}
++
++
++/*
++ * Some weird registers seem to store values in a sign/magnitude format!
++ */
++static unsigned char ov7670_sm_to_abs(unsigned char v)
++{
++ if ((v & 0x80) == 0)
++ return v + 128;
++ else
++ return 128 - (v & 0x7f);
++}
++
++static unsigned char ov7670_abs_to_sm(unsigned char v)
++{
++ if (v > 127)
++ return v & 0x7f;
++ else
++ return (128 - v) | 0x80;
++}
++
++static int ov7670_tweak_brightness(struct i2c_client *client, int value)
++{
++ unsigned char com8 = 0, v;
++ int ret;
++
++ ov7670_read(client, REG_COM8, &com8);
++ com8 &= ~COM8_AEC;
++ ov7670_write(client, REG_COM8, com8);
++ v = ov7670_abs_to_sm(value);
++ ret = ov7670_write(client, REG_BRIGHT, v);
++ return ret;
++}
++
++static int ov7670_query_brightness(struct i2c_client *client, __s32 *value)
++{
++ unsigned char v = 0;
++ int ret = ov7670_read(client, REG_BRIGHT, &v);
++
++ *value = ov7670_sm_to_abs(v);
++ return ret;
++}
++
++static int ov7670_tweak_contrast(struct i2c_client *client, int value)
++{
++ return ov7670_write(client, REG_CONTRAS, (unsigned char) value);
++}
++
++static int ov7670_query_contrast(struct i2c_client *client, __s32 *value)
++{
++ unsigned char v = 0;
++ int ret = ov7670_read(client, REG_CONTRAS, &v);
++
++ *value = v;
++ return ret;
++}
++
++static int ov7670_query_hflip(struct i2c_client *client, __s32 *value)
++{
++ int ret;
++ unsigned char v = 0;
++
++ ret = ov7670_read(client, REG_MVFP, &v);
++ *value = (v & MVFP_MIRROR) == MVFP_MIRROR;
++ return ret;
++}
++
++static int ov7670_tweak_hflip(struct i2c_client *client, int value)
++{
++ unsigned char v = 0;
++ int ret;
++
++ ret = ov7670_read(client, REG_MVFP, &v);
++ if (value)
++ v |= MVFP_MIRROR;
++ else
++ v &= ~MVFP_MIRROR;
++ msleep(10); /* FIXME */
++ ret += ov7670_write(client, REG_MVFP, v);
++ return ret;
++}
++
++static int ov7670_query_vflip(struct i2c_client *client, __s32 *value)
++{
++ int ret;
++ unsigned char v = 0;
++
++ ret = ov7670_read(client, REG_MVFP, &v);
++ *value = (v & MVFP_FLIP) == MVFP_FLIP;
++ return ret;
++}
++
++static int ov7670_tweak_vflip(struct i2c_client *client, int value)
++{
++ unsigned char v = 0;
++ int ret;
++
++ ret = ov7670_read(client, REG_MVFP, &v);
++ if (value)
++ v |= MVFP_FLIP;
++ else
++ v &= ~MVFP_FLIP;
++ msleep(10); /* FIXME */
++ ret += ov7670_write(client, REG_MVFP, v);
++ return ret;
++}
++
++
++static const struct v4l2_queryctrl ov7670_controls[] = {
++ {
++ .id = V4L2_CID_BRIGHTNESS,
++ .type = V4L2_CTRL_TYPE_INTEGER,
++ .name = "Brightness",
++ .minimum = 0,
++ .maximum = 255,
++ .step = 1,
++ .default_value = 0x80,
++ .flags = V4L2_CTRL_FLAG_SLIDER
++ }, {
++ .id = V4L2_CID_CONTRAST,
++ .type = V4L2_CTRL_TYPE_INTEGER,
++ .name = "Contrast",
++ .minimum = 0,
++ .maximum = 127,
++ .step = 1,
++ .default_value = 0x40, /* XXX ov7670 spec */
++ .flags = V4L2_CTRL_FLAG_SLIDER
++ }, {
++ .id = V4L2_CID_SATURATION,
++ .type = V4L2_CTRL_TYPE_INTEGER,
++ .name = "Saturation",
++ .minimum = 0,
++ .maximum = 256,
++ .step = 1,
++ .default_value = 0x80,
++ .flags = V4L2_CTRL_FLAG_SLIDER
++ }, {
++ .id = V4L2_CID_HUE,
++ .type = V4L2_CTRL_TYPE_INTEGER,
++ .name = "HUE",
++ .minimum = -180,
++ .maximum = 180,
++ .step = 5,
++ .default_value = 0,
++ .flags = V4L2_CTRL_FLAG_SLIDER
++ }, {
++ .id = V4L2_CID_VFLIP,
++ .type = V4L2_CTRL_TYPE_BOOLEAN,
++ .name = "Vertical flip",
++ .minimum = 0,
++ .maximum = 1,
++ .step = 1,
++ .default_value = 0,
++ }, {
++ .id = V4L2_CID_HFLIP,
++ .type = V4L2_CTRL_TYPE_BOOLEAN,
++ .name = "Horizontal mirror",
++ .minimum = 0,
++ .maximum = 1,
++ .step = 1,
++ .default_value = 0,
++ },
++};
++#define N_CONTROLS (ARRAY_SIZE(ov7670_controls))
++
++/* To simplify control get/set methods
++ (Should correspond to ov7670_controls)
++ */
++static struct ov7670_control {
++ __u32 id;
++ int (*query)(struct i2c_client *c, __s32 *value);
++ int (*tweak)(struct i2c_client *c, int value);
++} ov7670_priv_controls[] = {
++ {
++ .id = V4L2_CID_BRIGHTNESS,
++ .tweak = ov7670_tweak_brightness,
++ .query = ov7670_query_brightness,
++ }, {
++ .id = V4L2_CID_CONTRAST,
++ .tweak = ov7670_tweak_contrast,
++ .query = ov7670_query_contrast,
++ }, {
++ .id = V4L2_CID_SATURATION,
++ .tweak = ov7670_tweak_sat,
++ .query = ov7670_query_sat,
++ }, {
++ .id = V4L2_CID_HUE,
++ .tweak = ov7670_tweak_hue,
++ .query = ov7670_query_hue,
++ }, {
++ .id = V4L2_CID_VFLIP,
++ .tweak = ov7670_tweak_vflip,
++ .query = ov7670_query_vflip,
++ }, {
++ .id = V4L2_CID_HFLIP,
++ .tweak = ov7670_tweak_hflip,
++ .query = ov7670_query_hflip,
++ },
++};
++
++static struct ov7670_control *ov7670_find_control(__u32 id)
++{
++ int i;
++
++ for (i = 0; i < N_CONTROLS; i++)
++ if (ov7670_priv_controls[i].id == id)
++ return ov7670_priv_controls + i;
++ return NULL;
++}
++
++static int ov7670_get_control(struct soc_camera_device *icd,
++ struct v4l2_control *ctrl)
++{
++ struct ov7670 *ov7670 = container_of(icd, struct ov7670, icd);
++ struct ov7670_control *octrl = ov7670_find_control(ctrl->id);
++ int ret;
++
++ if (octrl == NULL)
++ return -EINVAL;
++
++ ret = octrl->query(ov7670->i2c_client, &ctrl->value);
++ if (ret >= 0)
++ return 0;
++ return ret;
++}
++
++static int ov7670_set_control(struct soc_camera_device *icd,
++ struct v4l2_control *ctrl)
++{
++ struct ov7670 *ov7670 = container_of(icd, struct ov7670, icd);
++ struct ov7670_control *octrl = ov7670_find_control(ctrl->id);
++ int ret;
++
++ if (octrl == NULL)
++ return -EINVAL;
++
++ ret = octrl->tweak(ov7670->i2c_client, ctrl->value);
++ if (ret >= 0)
++ return 0;
++ return ret;
++}
++
++static int ov7670_get_chip_id(struct soc_camera_device *icd,
++ struct v4l2_dbg_chip_ident *id)
++{
++ struct ov7670 *ov7670 = container_of(icd, struct ov7670, icd);
++
++ if (id->match.type != V4L2_CHIP_MATCH_I2C_ADDR)
++ return -EINVAL;
++
++ if (id->match.addr != ov7670->i2c_client->addr)
++ return -ENODEV;
++
++ id->ident = ov7670->model;
++ id->revision = 0;
++
++ return 0;
++}
++
++/* Interface active, can use i2c. If it fails, it can indeed mean, that
++ * this wasn't our capture interface, so, we wait for the right one */
++static int ov7670_video_probe(struct soc_camera_device *icd)
++{
++ struct ov7670 *ov7670 = container_of(icd, struct ov7670, icd);
++#ifdef DEBUG
++ struct proc_dir_entry *proc_read, *proc_write;
++#endif
++ struct i2c_client *client = ov7670->i2c_client;
++ int ret;
++
++ ret = ov7670_detect(client);
++ if (ret < 0) {
++ dev_err(&client->dev, "Unable to detect " DRIVER_NAME " sensor\n");
++ return ret;
++ }
++ dev_info(&client->dev, "found an 0V7670 sensor\n");
++ ov7670->model = V4L2_IDENT_OV7670;
++
++ icd->formats = ov7670_soc_formats;
++ icd->num_formats = ARRAY_SIZE(ov7670_soc_formats);
++
++#ifdef DEBUG
++ /* create proc files */
++ proc_read = create_proc_entry( "driver/ovread", S_IWUSR | S_IRGRP | S_IROTH, NULL);
++ proc_write = create_proc_entry( "driver/ovwrite", S_IWUSR | S_IRGRP | S_IROTH, NULL);
++ if ((proc_read == NULL) || (proc_write == NULL)) {
++ printk(KERN_ERR DRIVER_NAME ": Could not register one /proc file. Terminating\n");
++ return -ENOMEM;
++ } else {
++ proc_read->write_proc = ov7670_proc_read_register;
++ proc_read->data = client;
++ proc_write->write_proc = ov7670_proc_write_register;
++ proc_write->data = client;
++ }
++#endif
++
++ /* Now that we know the model, we can start video */
++ ret = soc_camera_video_start(icd);
++ if (ret)
++ goto err;
++
++ return 0;
++
++err:
++ return ret;
++}
++
++static void ov7670_video_remove(struct soc_camera_device *icd)
++{
++ struct ov7670 *ov7670 = container_of(icd, struct ov7670, icd);
++
++ dev_dbg(&icd->dev, "Video %x removed: %p, %p\n", ov7670->i2c_client->addr,
++ icd->dev.parent, icd->vdev);
++ soc_camera_video_stop(icd);
++}
++
++static struct soc_camera_ops ov7670_ops = {
++ .owner = THIS_MODULE,
++ .probe = ov7670_video_probe,
++ .remove = ov7670_video_remove,
++ .init = ov7670_init,
++ .release = ov7670_release,
++ .start_capture = ov7670_start_capture,
++ .stop_capture = ov7670_stop_capture,
++ .set_fmt = ov7670_set_fmt,
++ .try_fmt = ov7670_try_fmt,
++ .set_bus_param = ov7670_set_bus_param,
++ .query_bus_param = ov7670_query_bus_param,
++ .controls = ov7670_controls,
++ .num_controls = N_CONTROLS,
++ .get_control = ov7670_get_control,
++ .set_control = ov7670_set_control,
++ .get_chip_id = ov7670_get_chip_id,
++#ifdef CONFIG_VIDEO_ADV_DEBUG
++ .get_register = ov7670_get_register,
++ .set_register = ov7670_set_register,
++#endif
++};
++
++static int __init
++ov7670_probe(struct i2c_client *client, const struct i2c_device_id *did)
++{
++ struct ov7670 *ov7670;
++ struct soc_camera_device *icd;
++ struct soc_camera_link *icl = client->dev.platform_data;
++ int ret;
++
++ if (!icl) {
++ dev_err(&client->dev, DRIVER_NAME " driver needs platform data ?\n");
++/* return -EINVAL; TBDJB ! */
++ }
++
++ if (i2c_get_clientdata(client))
++ return -EBUSY;
++
++ ov7670 = kzalloc(sizeof(struct ov7670), GFP_KERNEL);
++ if (!ov7670)
++ return -ENOMEM;
++
++ ov7670->i2c_client = client;
++ i2c_set_clientdata(client, ov7670);
++
++ /* Second stage probe - when a capture adapter is there */
++ icd = &(ov7670->icd);
++ icd->ops = &ov7670_ops;
++ icd->control = &client->dev;
++ icd->x_min = 20;
++ icd->y_min = 12;
++ icd->x_current = 20;
++ icd->y_current = 12;
++ icd->width_min = 88;
++ icd->width_max = 1280;
++ icd->height_min = 72;
++ icd->height_max = 1024;
++ icd->y_skip_top = 1;
++/* icd->iface = icl->bus_id; TBDJB !! */
++
++ ret = soc_camera_device_register(icd);
++ if (ret)
++ goto err;
++
++ return 0;
++
++err:
++ kfree(ov7670);
++ return ret;
++}
++
++static int __exit
++ov7670_remove(struct i2c_client *client)
++{
++ struct ov7670 *ov7670 = i2c_get_clientdata(client);
++
++ if (!client->adapter)
++ return -ENODEV; /* our client isn't attached */
++#ifdef DEBUG
++ remove_proc_entry("driver/ovread", NULL);
++ remove_proc_entry("driver/ovwrite", NULL);
++#endif
++ soc_camera_device_unregister(&ov7670->icd);
++ i2c_set_clientdata(client, NULL);
++ kfree(ov7670);
++
++ return 0;
++}
++
++
++/* auto-detection */
++static const struct i2c_device_id ov7670_id[] = {
++ { DRIVER_NAME, 0 },
++ { }
++};
++MODULE_DEVICE_TABLE(i2c, ov7670_id);
++
++static struct i2c_driver ov7670_i2c_driver = {
++ .driver = {
++ .name = DRIVER_NAME,
++ },
++ .probe = ov7670_probe,
++ .remove = __exit_p(ov7670_remove),
++ .id_table = ov7670_id,
++};
++
++
++/*
++ * Module initialization
++ */
++static int __init ov7670_mod_init(void)
++{
++ printk(KERN_NOTICE "OmniVision ov7670 sensor driver, at your service\n");
++ return i2c_add_driver(&ov7670_i2c_driver);
++}
++
++static void __exit ov7670_mod_exit(void)
++{
++ i2c_del_driver(&ov7670_i2c_driver);
++}
++
++module_init(ov7670_mod_init);
++module_exit(ov7670_mod_exit);
+Index: linux-2.6.29.6/drivers/media/video/Kconfig
+===================================================================
+--- linux-2.6.29.6.orig/drivers/media/video/Kconfig 2010-04-22 11:04:40.000000000 +0200
++++ linux-2.6.29.6/drivers/media/video/Kconfig 2010-04-22 11:09:32.000000000 +0200
+@@ -796,6 +796,12 @@
+ help
+ This is a ov772x camera driver
+
++config SOC_CAMERA_OV7670
++ tristate "ov7670 camera support"
++ depends on SOC_CAMERA && I2C
++ help
++ This is a (SoC camera compatible) ov7670 sensor driver
++
+ config VIDEO_PXA27x
+ tristate "PXA27x Quick Capture Interface driver"
+ depends on VIDEO_DEV && PXA27x && SOC_CAMERA
+Index: linux-2.6.29.6/drivers/media/video/Makefile
+===================================================================
+--- linux-2.6.29.6.orig/drivers/media/video/Makefile 2010-04-22 11:04:45.000000000 +0200
++++ linux-2.6.29.6/drivers/media/video/Makefile 2010-04-22 11:12:21.000000000 +0200
+@@ -145,6 +145,7 @@
+ obj-$(CONFIG_SOC_CAMERA_MT9M111) += mt9m111.o
+ obj-$(CONFIG_SOC_CAMERA_MT9T031) += mt9t031.o
+ obj-$(CONFIG_SOC_CAMERA_MT9V022) += mt9v022.o
++obj-$(CONFIG_SOC_CAMERA_OV7670) += ov7670_soc.o
+ obj-$(CONFIG_SOC_CAMERA_OV772X) += ov772x.o
+ obj-$(CONFIG_SOC_CAMERA_PLATFORM) += soc_camera_platform.o
+ obj-$(CONFIG_SOC_CAMERA_TW9910) += tw9910.o
diff --git a/target/demos/camera/capture/capture.c b/target/demos/camera/capture/capture.c
index 53726a7..8282784 100644
--- a/target/demos/camera/capture/capture.c
+++ b/target/demos/camera/capture/capture.c
@@ -881,7 +881,7 @@ int main(int argc, char **argv)
open_device();
camwidth = camwidth > width ? width : camwidth;
- camheight = camheight > height ? height : height;
+ camheight = camheight > height ? height : camheight;
init_device(camwidth, camheight);
SDL_Init(SDL_INIT_VIDEO);
hooks/post-receive
--
armadeus
|
|
From: Fabien M <fa...@us...> - 2010-04-21 17:26:13
|
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "armadeus".
The branch, master has been updated
via d799fb3ddc79aaa66895fb05bf6308f16165a8f0 (commit)
via ebf204b5ba00aab39d8a7a4068d9028bc00feaf8 (commit)
via 630abe75f70b0ac5d4a1063b842500d0c0ffc7e3 (commit)
from b7f5889a3c6740ac887a61e230db1f4c0f491bc5 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit d799fb3ddc79aaa66895fb05bf6308f16165a8f0
Merge: ebf204b5ba00aab39d8a7a4068d9028bc00feaf8 b7f5889a3c6740ac887a61e230db1f4c0f491bc5
Author: Fabien Marteau <fab...@ar...>
Date: Wed Apr 21 19:25:43 2010 +0200
Merge branch 'master' of ssh://fabm@armadeus.git.sourceforge.net/gitroot/armadeus/armadeus
commit ebf204b5ba00aab39d8a7a4068d9028bc00feaf8
Author: Fabien Marteau <fab...@ar...>
Date: Wed Apr 21 19:24:54 2010 +0200
[linux] GPIO mask correction
commit 630abe75f70b0ac5d4a1063b842500d0c0ffc7e3
Author: Fabien Marteau <fab...@ar...>
Date: Thu Apr 15 14:07:16 2010 +0200
[linux] change gpio drivers version number
-----------------------------------------------------------------------
Summary of changes:
target/linux/modules/gpio/core.c | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/target/linux/modules/gpio/core.c b/target/linux/modules/gpio/core.c
index d63204f..7f93037 100755
--- a/target/linux/modules/gpio/core.c
+++ b/target/linux/modules/gpio/core.c
@@ -46,7 +46,7 @@
#define DRIVER_NAME "Armadeus GPIOs driver"
-#define DRIVER_VERSION "2.3"
+#define DRIVER_VERSION "2.4"
/* By default, we use dynamic allocation of major numbers -> MAJOR = 0 */
#define GPIO_MAJOR 0
#define GPIO_PROC_DIRNAME "driver/gpio"
@@ -253,7 +253,7 @@ static unsigned char getIrqFromPin(int num_pin, int num_port)
#ifdef CONFIG_ARCH_IMX
static unsigned long PORT_MASK[]= { 0x0003FFFE, 0xF00FFF00, 0x0003E1F8, 0xFFFFFFFF };
#else
-static unsigned long PORT_MASK[]= { 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFF6060, 0xFFFE0000, 0x00FFFCFF8, 0x006B6C80 };
+static unsigned long PORT_MASK[]= { 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFC000, 0xFFFE0000, 0x00FFCCF8, 0x00FFFF80 };
#endif
static void initialize_port(int port, int* init_params)
hooks/post-receive
--
armadeus
|
|
From: Julien B a. A. <ar...@us...> - 2010-04-21 12:32:55
|
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "armadeus".
The branch, master has been updated
via b7f5889a3c6740ac887a61e230db1f4c0f491bc5 (commit)
via b17417d3a0bea2c9e2932203bf168c385d284a13 (commit)
via 9b27c4f87007c68b48fac607405fe7e656fe1c55 (commit)
via f99d91472081d282231531a71bb0f35825a1c634 (commit)
from 94f14a6d13d63a9d72d22acddf0861c173a22d14 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit b7f5889a3c6740ac887a61e230db1f4c0f491bc5
Author: Julien Boibessot <jul...@ar...>
Date: Wed Apr 21 14:32:07 2010 +0200
Indentation
commit b17417d3a0bea2c9e2932203bf168c385d284a13
Author: Julien Boibessot <jul...@ar...>
Date: Wed Apr 21 14:31:00 2010 +0200
[DEMOS] Capture: add RGR565 support (default format) + the possibility to choose screen and picture sizes
commit 9b27c4f87007c68b48fac607405fe7e656fe1c55
Author: Julien Boibessot <jul...@ar...>
Date: Wed Apr 21 14:29:59 2010 +0200
[DEMOS] Capture: link with libpthread otherwise runtime crash may occur
commit f99d91472081d282231531a71bb0f35825a1c634
Author: Julien Boibessot <jul...@ar...>
Date: Wed Apr 21 14:29:00 2010 +0200
[DEMOS] Capture: improve doc
-----------------------------------------------------------------------
Summary of changes:
target/demos/backlight_control/backlight.c | 152 +++++++++++++--------------
target/demos/camera/capture/.gitignore | 1 +
target/demos/camera/capture/Makefile | 2 +-
target/demos/camera/capture/README | 5 +
target/demos/camera/capture/capture.c | 111 ++++++++++++++++-----
target/demos/test_lcd/test_lcd.c | 3 +-
6 files changed, 166 insertions(+), 108 deletions(-)
create mode 100644 target/demos/camera/capture/.gitignore
create mode 100644 target/demos/camera/capture/README
diff --git a/target/demos/backlight_control/backlight.c b/target/demos/backlight_control/backlight.c
index 197cd70..36e3da8 100644
--- a/target/demos/backlight_control/backlight.c
+++ b/target/demos/backlight_control/backlight.c
@@ -61,37 +61,35 @@ static int loadImages()
{
int result = 0;
- full_end = SDL_LoadBMP( DEFAULT_DATA_DIR "full_end.bmp" );
- full = SDL_LoadBMP( DEFAULT_DATA_DIR "full.bmp" );
- cursor = SDL_LoadBMP( DEFAULT_DATA_DIR "cursor.bmp" );
- empty = SDL_LoadBMP( DEFAULT_DATA_DIR "empty.bmp" );
- empty_end = SDL_LoadBMP( DEFAULT_DATA_DIR "empty_end.bmp" );
-
- // Check if we got all images
- if( full_end == NULL || full == NULL || cursor == NULL || empty == NULL || empty_end == NULL )
- {
+ full_end = SDL_LoadBMP(DEFAULT_DATA_DIR "full_end.bmp");
+ full = SDL_LoadBMP(DEFAULT_DATA_DIR "full.bmp");
+ cursor = SDL_LoadBMP(DEFAULT_DATA_DIR "cursor.bmp");
+ empty = SDL_LoadBMP(DEFAULT_DATA_DIR "empty.bmp");
+ empty_end = SDL_LoadBMP(DEFAULT_DATA_DIR "empty_end.bmp");
+
+ /* Check if we got all images */
+ if (full_end == NULL || full == NULL || cursor == NULL || empty == NULL || empty_end == NULL) {
printf("Unable to load image files !\n");
result = -1;
} else {
//SDL_SetAlpha( image, 0/*SDL_SRCALPHA*/, SDL_ALPHA_TRANSPARENT );
- if( SDL_SetColorKey( cursor, SDL_SRCCOLORKEY, SDL_MapRGB(cursor->format, 0xFF, 0xFF, 0xFF) ) )
- {
+ if (SDL_SetColorKey(cursor, SDL_SRCCOLORKEY, SDL_MapRGB(cursor->format, 0xFF, 0xFF, 0xFF))) {
printf("Error while setting transparent color\n");
}
}
- return(result);
+ return result;
}
//
static void freeRessources()
{
- SDL_FreeSurface( screen );
- SDL_FreeSurface( full_end );
- SDL_FreeSurface( full );
- SDL_FreeSurface( cursor );
- SDL_FreeSurface( empty );
- SDL_FreeSurface( empty_end );
+ SDL_FreeSurface(screen);
+ SDL_FreeSurface(full_end);
+ SDL_FreeSurface(full);
+ SDL_FreeSurface(cursor);
+ SDL_FreeSurface(empty);
+ SDL_FreeSurface(empty_end);
}
//
@@ -108,84 +106,84 @@ void drawBackground()
{
SDL_Rect dest;
dest.x = 0; dest.y = 0; dest.w = SCREEN_WIDTH; dest.h = SCREEN_HEIGHT;
- // Fill background
- SDL_FillRect( screen, &dest, SDL_MapRGB( screen->format, 0xFF, 0xFF, 0xFF ) );
+ /* Fill background */
+ SDL_FillRect(screen, &dest, SDL_MapRGB(screen->format, 0xFF, 0xFF, 0xFF));
}
//
-static int paddXPos( int xpos )
+static int paddXPos(int xpos)
{
- int x=0;
+ int x = 0;
- if( xpos <= BAR_MIN_XPOSITION ) {
+ if (xpos <= BAR_MIN_XPOSITION) {
x = BAR_MIN_XPOSITION;
- } else if ( xpos >= BAR_MAX_XPOSITION ) {
+ } else if (xpos >= BAR_MAX_XPOSITION) {
x = BAR_MAX_XPOSITION;
} else {
x = xpos;
}
- return( x );
+ return x;
}
//
-static void drawBar( int xpos )
+static void drawBar(int xpos)
{
- int i=BAR_MIN_XPOSITION;
+ int i = BAR_MIN_XPOSITION;
- if( xpos <= BAR_MIN_XPOSITION ) {
+ if (xpos <= BAR_MIN_XPOSITION) {
xpos = BAR_MIN_XPOSITION;
- } else if ( xpos >= BAR_MAX_XPOSITION ) {
+ } else if (xpos >= BAR_MAX_XPOSITION) {
xpos = BAR_MAX_XPOSITION;
}
- drawImage( full_end, i, BAR_YPOSITION );
+ drawImage(full_end, i, BAR_YPOSITION);
i+=5;
- for( ; i<=xpos; i+=5 ) {
- drawImage( full, i, BAR_YPOSITION );
+ for ( ; i<=xpos; i+=5) {
+ drawImage(full, i, BAR_YPOSITION);
}
- for( ; i<=BAR_MAX_XPOSITION; i+=5 ) {
- drawImage( empty, i, BAR_YPOSITION );
+ for ( ; i<=BAR_MAX_XPOSITION; i+=5) {
+ drawImage(empty, i, BAR_YPOSITION);
}
- drawImage( empty_end, i, BAR_YPOSITION );
+ drawImage(empty_end, i, BAR_YPOSITION);
}
//
-static unsigned char calculateBacklight( int xpos )
+static unsigned char calculateBacklight(int xpos)
{
int x = 0;
- unsigned char backlight = 0; // 0-100 %
+ unsigned char backlight = 0; /* 0-100 % */
- x = paddXPos( xpos );
+ x = paddXPos(xpos);
backlight = (unsigned char) (((x - BAR_MIN_XPOSITION)*100) / BAR_WIDTH);
- return( backlight );
+ return backlight;
}
//
-static void drawCursor( int xpos )
+static void drawCursor(int xpos)
{
- int x=0;
+ int x = 0;
- x = paddXPos( xpos );
- drawImage( cursor, x, BAR_YPOSITION-5 );
+ x = paddXPos(xpos);
+ drawImage(cursor, x, BAR_YPOSITION-5);
}
//
-void updateCursor( int xpos )
+void updateCursor(int xpos)
{
drawBackground();
- drawBar( xpos );
- drawCursor(xpos );
- SDL_Flip( screen );
+ drawBar(xpos);
+ drawCursor(xpos);
+ SDL_Flip(screen);
}
-void cleanup( void )
+void cleanup(void)
{
- // Cleanup what we used
+ /* Cleanup what we used */
releaseBacklightControl();
freeRessources();
SDL_Quit();
@@ -199,55 +197,53 @@ int main(int argc, char *argv[])
Uint8* keys;
int cursorPos = 0;
- // Initialize SDL
- if( SDL_Init( SDL_INIT_VIDEO | SDL_INIT_TIMER /*| SDL_INIT_EVENTTHREAD |SDL_INIT_NOPARACHUTE*/) < 0 )
- {
+ /* Initialize SDL */
+ if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_TIMER /*| SDL_INIT_EVENTTHREAD |SDL_INIT_NOPARACHUTE*/) < 0) {
fprintf(stderr, "Unable to init SDL: %s\n", SDL_GetError());
exit(1);
}
- // Ask SDL to cleanup when exiting
+ /* Ask SDL to cleanup when exiting */
atexit(cleanup);
- // Get a screen to display our game
- screen=SDL_SetVideoMode( SCREEN_WIDTH, SCREEN_HEIGHT, 16, 0/*SDL_HWPALETTE*//*SDL_HWSURFACE|| SDL_DOUBLEBUF*/ );
- if( screen == NULL )
- {
+ /* Get a screen to display our GUI */
+ screen = SDL_SetVideoMode(SCREEN_WIDTH, SCREEN_HEIGHT, 16, 0/*SDL_HWPALETTE*//*SDL_HWSURFACE|| SDL_DOUBLEBUF*/);
+ if (screen == NULL) {
fprintf(stderr, "Unable to set %dx%dvideo mode: %s\n", SCREEN_WIDTH, SCREEN_HEIGHT, SDL_GetError());
exit(1);
}
- // Load our graphics
- if( loadImages() )
- {
- return(1);
+ /* Load our graphics */
+ if (loadImages()) {
+ return 1;
}
drawBackground();
- // Initialize Backlight control
- if( initBacklightControl() )
- {
+ /* Initialize Backlight control */
+ if (initBacklightControl()) {
printf("Unable to find Backlight control on your system -> won't be activated\n");
}
- updateCursor( (getBrightness() * BAR_WIDTH / 100) + BAR_MIN_XPOSITION );
+ updateCursor((getBrightness() * BAR_WIDTH / 100) + BAR_MIN_XPOSITION);
int done=0, move=0;
- // Hide mouse
+ /* Hide mouse */
SDL_ShowCursor(0);
- // Main loop
- while(done == 0)
+ /* Main loop */
+ while (done == 0)
{
SDL_Event event;
- // Wait for SDL events
- while ( SDL_PollEvent(&event) )
+ /* Wait for SDL events */
+ while (SDL_PollEvent(&event))
{
cursorPos = 0;
- switch( event.type )
+ switch (event.type)
{
case SDL_QUIT: { done = 1; break; }
case SDL_KEYDOWN:
{
- if ( event.key.keysym.sym == SDLK_ESCAPE ) { done = 1; }
+ if (event.key.keysym.sym == SDLK_ESCAPE) {
+ done = 1;
+ }
break;
}
case SDL_MOUSEBUTTONDOWN:
@@ -261,7 +257,7 @@ int main(int argc, char *argv[])
case SDL_MOUSEMOTION:
{
- if( move == 1 ) {
+ if (move == 1) {
debug("Current mouse position is: (%d, %d)\n", event.motion.x, event.motion.y);
cursorPos = event.motion.x;
}
@@ -270,12 +266,10 @@ int main(int argc, char *argv[])
}
}
- if( cursorPos != 0 && move == 1 ) {
- //
- setBrightness( calculateBacklight( cursorPos ) );
-
- // Update screen
- updateCursor( cursorPos );
+ if (cursorPos != 0 && move == 1) {
+ setBrightness(calculateBacklight(cursorPos));
+ /* Update screen */
+ updateCursor(cursorPos);
}
SDL_Delay(50);
diff --git a/target/demos/camera/capture/.gitignore b/target/demos/camera/capture/.gitignore
new file mode 100644
index 0000000..c727a35
--- /dev/null
+++ b/target/demos/camera/capture/.gitignore
@@ -0,0 +1 @@
+capture
diff --git a/target/demos/camera/capture/Makefile b/target/demos/camera/capture/Makefile
index 7cd81a8..4271506 100644
--- a/target/demos/camera/capture/Makefile
+++ b/target/demos/camera/capture/Makefile
@@ -1,5 +1,5 @@
CFLAGS=-Wall
-LDFLAGS= -lSDL
+LDFLAGS= -lSDL -lpthread
ifeq ($(PREFIX),)
# Host
CC=gcc
diff --git a/target/demos/camera/capture/README b/target/demos/camera/capture/README
new file mode 100644
index 0000000..53efb9c
--- /dev/null
+++ b/target/demos/camera/capture/README
@@ -0,0 +1,5 @@
+Compile me:
+* native:
+ $ make
+* cross-compilation:
+ $ make CC=/.../.../arm-linux-gcc
diff --git a/target/demos/camera/capture/capture.c b/target/demos/camera/capture/capture.c
index 9de29df..53726a7 100644
--- a/target/demos/camera/capture/capture.c
+++ b/target/demos/camera/capture/capture.c
@@ -77,10 +77,8 @@ struct camera mycamera;
static void errno_exit(const char *s)
{
- fprintf (stderr, "%s error %d, %s\n",
- s, errno, strerror (errno));
-
- exit (EXIT_FAILURE);
+ fprintf(stderr, "%s error %d, %s\n", s, errno, strerror (errno));
+ exit(EXIT_FAILURE);
}
static int xioctl(int fd, int request, void *arg)
@@ -211,7 +209,9 @@ static void process_image(/*const */void *pCaptured)
} else if (mycamera.pixelformat == V4L2_PIX_FMT_YUV420) {
yuv420_to_rgb565(pCaptured, mycamera.sizeimage, image->pixels);
} else {
- printf("Unknown image format\n");
+ if (mycamera.pixelformat != V4L2_PIX_FMT_RGB565) {
+ printf("Unknown image format\n");
+ }
simple_copy(pCaptured, mycamera.sizeimage, image->pixels);
}
@@ -592,6 +592,22 @@ static Uint32 get_a_supported_pix_fmt(void)
struct v4l2_fmtdesc fmtdesc;
int i;
+ /* First check if a LCD native format is available (-> no CSC) */
+ for (i = 0;; i++) {
+ CLEAR(fmtdesc);
+ fmtdesc.index = i;
+ fmtdesc.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+ if (-1 == ioctl(fd, VIDIOC_ENUM_FMT, &fmtdesc))
+ break;
+
+ if (fmtdesc.pixelformat == V4L2_PIX_FMT_RGB565) {
+ fprintf(stdout, "Using img format (%d 0x%08x): ", i, fmtdesc.pixelformat);
+ fprintf(stdout, "RGB565\n");
+ return fmtdesc.pixelformat;
+ }
+ }
+
+ /* If no RGB565, then default to YUV422 or YUV420 */
for (i = 0;; i++) {
CLEAR(fmtdesc);
fmtdesc.index = i;
@@ -612,7 +628,7 @@ static Uint32 get_a_supported_pix_fmt(void)
return 0;
}
-static void init_device(void)
+static void init_device(unsigned int capt_width, unsigned int capt_height)
{
struct v4l2_capability cap;
struct v4l2_cropcap cropcap;
@@ -691,14 +707,15 @@ static void init_device(void)
}
fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
- fmt.fmt.pix.width = CAM_WIDTH;
- fmt.fmt.pix.height = CAM_HEIGHT;
+ fmt.fmt.pix.width = capt_width;
+ fmt.fmt.pix.height = capt_height;
fmt.fmt.pix.field = V4L2_FIELD_INTERLACED;
- if (-1 == xioctl (fd, VIDIOC_S_FMT, &fmt))
- errno_exit ("VIDIOC_S_FMT");
+ if (-1 == xioctl(fd, VIDIOC_S_FMT, &fmt))
+ errno_exit("VIDIOC_S_FMT");
/* Note VIDIOC_S_FMT may change width and height. */
+ fprintf(stdout, "Camera picture: %dx%d\n", fmt.fmt.pix.width, fmt.fmt.pix.height);
/* Buggy driver paranoia. */
min = fmt.fmt.pix.width * 2;
@@ -771,23 +788,37 @@ static void usage(FILE *fp, int argc, char **argv)
"-m | --mmap Use memory mapped buffers\n"
"-r | --read Use read() calls\n"
"-u | --userp Use application allocated buffers\n"
+ "--width W Use W as screen width (instead of %d)\n"
+ "--height H Use H as screen height (instead of %d)\n"
+ "--camwidth W Use W as camera picture width (instead of %d)\n"
+ "--camheight H Use H as camera picture height (instead of %d)\n"
"",
- argv[0]);
+ argv[0], SCREEN_WIDTH, SCREEN_HEIGHT, CAM_WIDTH, CAM_HEIGHT);
}
-static const char short_options [] = "d:hmru";
+static const char short_options [] = "d:hmruwt";
static const struct option long_options [] = {
- { "device", required_argument, NULL, 'd' },
- { "help", no_argument, NULL, 'h' },
- { "mmap", no_argument, NULL, 'm' },
- { "read", no_argument, NULL, 'r' },
- { "userp", no_argument, NULL, 'u' },
- { 0, 0, 0, 0 }
+ { "device", required_argument, NULL, 'd' },
+ { "help", no_argument, NULL, 'h' },
+ { "mmap", no_argument, NULL, 'm' },
+ { "read", no_argument, NULL, 'r' },
+ { "userp", no_argument, NULL, 'u' },
+ { "width", required_argument, NULL, 'w' },
+ { "height", required_argument, NULL, 't' },
+ { "camwidth", required_argument, NULL, 'y' },
+ { "camheight", required_argument, NULL, 'z' },
+ { 0, 0, 0, 0 }
};
int main(int argc, char **argv)
{
+ int ret = EXIT_SUCCESS;
+ unsigned int width = SCREEN_WIDTH;
+ unsigned int height = SCREEN_HEIGHT;
+ unsigned int camwidth = CAM_WIDTH;
+ unsigned int camheight = CAM_HEIGHT;
+
dev_name = "/dev/video0";
atexit(SDL_Quit);
@@ -812,7 +843,7 @@ int main(int argc, char **argv)
case 'h':
usage(stdout, argc, argv);
- exit (EXIT_SUCCESS);
+ exit(EXIT_SUCCESS);
case 'm':
io = IO_METHOD_MMAP;
@@ -826,17 +857,44 @@ int main(int argc, char **argv)
io = IO_METHOD_USERPTR;
break;
+ case 'w':
+ width = atoi(optarg);
+ break;
+
+ case 't':
+ height = atoi(optarg);
+ break;
+
+ case 'y':
+ camwidth = atoi(optarg);
+ break;
+
+ case 'z':
+ camheight = atoi(optarg);
+ break;
+
default:
usage(stderr, argc, argv);
exit(EXIT_FAILURE);
}
}
- open_device();
- init_device();
+ open_device();
+ camwidth = camwidth > width ? width : camwidth;
+ camheight = camheight > height ? height : height;
+ init_device(camwidth, camheight);
SDL_Init(SDL_INIT_VIDEO);
- screen = SDL_SetVideoMode(SCREEN_WIDTH, SCREEN_HEIGHT, 16, (SDL_HWSURFACE));
+ screen = SDL_SetVideoMode(width, height, 16, (SDL_HWSURFACE));
+ if (screen) {
+ printf("Video mode: %dx%dx%d\n", screen->w, screen->h,
+ screen->format->BitsPerPixel);
+ } else {
+ printf("Unable to set %dx%d video mode: %s\n", SCREEN_WIDTH, SCREEN_HEIGHT, SDL_GetError());
+ ret = EXIT_FAILURE;
+ goto the_end;
+ }
+
image = SDL_CreateRGBSurface(/*SDL_HWSURFACE*/0, mycamera.width, mycamera.height, 16, 0, 0, 0, 0);
// printf("image fmt: RGB%d%d%d\n", image->format->Rshift, image->format->Gshift, image->format->Bshift);
@@ -844,10 +902,11 @@ int main(int argc, char **argv)
mainloop();
stop_capturing();
- uninit_device();
- close_device();
+the_end:
+ uninit_device();
+ close_device();
- exit(EXIT_SUCCESS);
+ exit(ret);
- return 0;
+ return 0;
}
diff --git a/target/demos/test_lcd/test_lcd.c b/target/demos/test_lcd/test_lcd.c
index 6e82467..7ca7b9a 100644
--- a/target/demos/test_lcd/test_lcd.c
+++ b/target/demos/test_lcd/test_lcd.c
@@ -65,8 +65,7 @@ int main(int argc, char *argv[])
int i, height, width;
/* Initialize SDL */
- if( SDL_Init( SDL_INIT_VIDEO | SDL_INIT_TIMER /*| SDL_INIT_EVENTTHREAD |SDL_INIT_NOPARACHUTE*/) < 0 )
- {
+ if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_TIMER /*| SDL_INIT_EVENTTHREAD |SDL_INIT_NOPARACHUTE*/) < 0) {
fprintf(stderr, "Unable to init SDL: %s\n", SDL_GetError());
exit(1);
}
hooks/post-receive
--
armadeus
|
|
From: Fabien M <fa...@us...> - 2010-04-15 10:30:47
|
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "armadeus".
The branch, master has been updated
via 94f14a6d13d63a9d72d22acddf0861c173a22d14 (commit)
via 603a09c1d88152108978364036229fa439a124ea (commit)
via d1c1b0824cee58ca7d556cf3c92d9d80e5424521 (commit)
from 877adc3ab311d87185a4a3d38d43e2275973ed21 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 94f14a6d13d63a9d72d22acddf0861c173a22d14
Author: Fabien Marteau <fab...@ar...>
Date: Thu Apr 15 12:30:23 2010 +0200
[linux][driver][gpio] Fix workaround (bis)
commit 603a09c1d88152108978364036229fa439a124ea
Author: Fabien Marteau <fab...@ar...>
Date: Thu Apr 15 12:29:56 2010 +0200
[linux][driver][gpio] Fix workaround
commit d1c1b0824cee58ca7d556cf3c92d9d80e5424521
Author: Fabien Marteau <fab...@ar...>
Date: Thu Apr 15 12:27:10 2010 +0200
[linux] change patch comments
-----------------------------------------------------------------------
Summary of changes:
...c-armadeus-lan95xx-activate_blinking_leds.patch | 5 --
target/linux/modules/gpio/core.c | 51 +++++++++++--------
target/linux/modules/gpio/core.h | 27 ++++++----
3 files changed, 45 insertions(+), 38 deletions(-)
diff --git a/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/347c-armadeus-lan95xx-activate_blinking_leds.patch b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/347c-armadeus-lan95xx-activate_blinking_leds.patch
index 58dfe7f..598896a 100644
--- a/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/347c-armadeus-lan95xx-activate_blinking_leds.patch
+++ b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/347c-armadeus-lan95xx-activate_blinking_leds.patch
@@ -1,8 +1,3 @@
-author Steve Glendinning <ste...@sm...>
- Tue, 22 Sep 2009 05:13:02 +0000 (05:13 +0000)
-committer David S. Miller <da...@da...>
- Tue, 22 Sep 2009 21:00:06 +0000 (14:00 -0700)
-
smsc95xx: Separe link led and activity led
Signed-off-by: Fabien Marteau <fab...@ar...>
diff --git a/target/linux/modules/gpio/core.c b/target/linux/modules/gpio/core.c
index 848e3c7..d63204f 100755
--- a/target/linux/modules/gpio/core.c
+++ b/target/linux/modules/gpio/core.c
@@ -180,11 +180,11 @@ struct gpio_item {
};
#ifdef CONFIG_ARCH_IMX
-static unsigned int shadows_irq[NB_PORTS] = { 0, 0, 0, 0 };
-static unsigned int shadows_irq2[NB_PORTS] = { 0, 0, 0, 0 };
+static unsigned int shadows_irq_h[NB_PORTS] = { 0, 0, 0, 0 };
+static unsigned int shadows_irq_l[NB_PORTS] = { 0, 0, 0, 0 };
#else
-static unsigned int shadows_irq[NB_PORTS] = { 0, 0, 0, 0, 0, 0 };
-static unsigned int shadows_irq2[NB_PORTS] = { 0, 0, 0, 0, 0, 0 };
+static unsigned int shadows_irq_h[NB_PORTS] = { 0, 0, 0, 0, 0, 0 };
+static unsigned int shadows_irq_l[NB_PORTS] = { 0, 0, 0, 0, 0, 0 };
#endif
@@ -236,9 +236,9 @@ static unsigned char getIrqFromPin(int num_pin, int num_port)
int portSize = number_of_pins[num_port];
if (num_pin < (portSize/2)) {
- shad = shadows_irq2[num_port];
+ shad = shadows_irq_l[num_port];
} else {
- shad = shadows_irq[num_port];
+ shad = shadows_irq_h[num_port];
num_pin -= (portSize/2);
}
@@ -659,7 +659,6 @@ int armadeus_gpio_dev_ioctl(struct inode *inode, struct file *filp,
unsigned int cmd, unsigned long arg)
{
int err = 0, ret = 0, value = 0;
- /* u64 value64; TODO */
unsigned int minor;
pr_debug(DRIVER_NAME " ## IOCTL received: (0x%x) ##\n", cmd);
@@ -733,20 +732,28 @@ int armadeus_gpio_dev_ioctl(struct inode *inode, struct file *filp,
}
break;
- case GPIORDIRQMODE:
- /* TODO
- value64 = (u64)(shadows_irq2[MAX_MINOR - minor] & 0xFFFFFFFF);
- value64 |= ((u64)(shadows_irq[MAX_MINOR - minor])) << 32;
- ret = __put_user(value64, (u64 *)arg); */
+ case GPIORDIRQMODE_H:
+ value = shadows_irq_h[MAX_MINOR - minor];
+ ret = __put_user(value, (unsigned int *)arg);
+ break;
+
+ case GPIORDIRQMODE_L:
+ value = shadows_irq_l[MAX_MINOR - minor];
+ ret = __put_user(value, (unsigned int *)arg);
break;
- case GPIOWRIRQMODE:
- /* TODO
- ret = __get_user(value64, (u64 *)arg);
+ case GPIOWRIRQMODE_H:
+ ret = __get_user(value, (unsigned int *)arg);
if (ret == 0) {
- shadows_irq[MAX_MINOR - minor] = (value64 >> 32);
- shadows_irq2[MAX_MINOR - minor] = (value64 & 0xFFFFFFFF);
- } */
+ shadows_irq_h[MAX_MINOR - minor] = value;
+ }
+ break;
+
+ case GPIOWRIRQMODE_L:
+ ret = __get_user(value, (unsigned int *)arg);
+ if (ret == 0) {
+ shadows_irq_l[MAX_MINOR - minor] = value;
+ }
break;
case GPIORDPULLUP:
@@ -820,8 +827,8 @@ static int armadeus_gpio_proc_read(char *buffer, char **start, off_t offset,
break;
case INTERRUPT:
- port_status = shadows_irq[port_ID];
- port_status2 = shadows_irq2[port_ID];
+ port_status = shadows_irq_h[port_ID];
+ port_status2 = shadows_irq_l[port_ID];
break;
default:
@@ -913,8 +920,8 @@ static int armadeus_gpio_proc_write( __attribute__ ((unused)) struct file *file,
break;
case INTERRUPT:
- shadows_irq[port_ID] = gpio_state;
- shadows_irq2[port_ID] = gpio_state2;
+ shadows_irq_h[port_ID] = gpio_state;
+ shadows_irq_l[port_ID] = gpio_state2;
break;
default:
diff --git a/target/linux/modules/gpio/core.h b/target/linux/modules/gpio/core.h
index 8a9bc58..9307e45 100755
--- a/target/linux/modules/gpio/core.h
+++ b/target/linux/modules/gpio/core.h
@@ -28,19 +28,24 @@
/* IOCTL */
-#define GPIORDDIRECTION _IOR(PP_IOCTL, 0xF0, int) /* Read/write bitmask that determines input/output pins (1 means output, 0 input) */
-#define GPIOWRDIRECTION _IOW(PP_IOCTL, 0xF1, int)
-#define GPIORDDATA _IOR(PP_IOCTL, 0xF2, int)
-#define GPIOWRDATA _IOW(PP_IOCTL, 0xF3, int)
-#define GPIORDMODE _IOR(PP_IOCTL, 0xF4, int)
-#define GPIOWRMODE _IOW(PP_IOCTL, 0xF5, int)
-#define GPIORDIRQMODE _IOR(PP_IOCTL, 0xF6, u64)
-#define GPIOWRIRQMODE _IOW(PP_IOCTL, 0xF7, u64)
-#define GPIORDPULLUP _IOR(PP_IOCTL, 0xF8, int)
-#define GPIOWRPULLUP _IOR(PP_IOCTL, 0xF9, int)
+#define GPIORDDIRECTION _IOR(PP_IOCTL, 0xF0, int)/* Read/write bitmask that determine*/
+#define GPIOWRDIRECTION _IOW(PP_IOCTL, 0xF1, int)/*in/out pins (1 output, 0 input) */
+
+#define GPIORDDATA _IOR(PP_IOCTL, 0xF2, int)
+#define GPIOWRDATA _IOW(PP_IOCTL, 0xF3, int)
+
+#define GPIORDMODE _IOR(PP_IOCTL, 0xF4, int)
+#define GPIOWRMODE _IOW(PP_IOCTL, 0xF5, int)
+
+#define GPIORDPULLUP _IOR(PP_IOCTL, 0xF6, int)
+#define GPIOWRPULLUP _IOR(PP_IOCTL, 0xF7, int)
+
+#define GPIORDIRQMODE_H _IOR(PP_IOCTL, 0xF8, int)
+#define GPIORDIRQMODE_L _IOR(PP_IOCTL, 0xF9, int)
+#define GPIOWRIRQMODE_H _IOR(PP_IOCTL, 0xFA, int)
+#define GPIOWRIRQMODE_L _IOR(PP_IOCTL, 0xFB, int)
/* Pretend we're PPDEV for IOCTL */
#include <linux/ppdev.h>
-
#endif /* __CORE_GPIO_H__ */
hooks/post-receive
--
armadeus
|
|
From: Julien B a. A. <ar...@us...> - 2010-04-15 09:27:01
|
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "armadeus".
The branch, master has been updated
via 877adc3ab311d87185a4a3d38d43e2275973ed21 (commit)
from 1888c2241743dca857bd5bc6142e2eeb77ccf5a5 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 877adc3ab311d87185a4a3d38d43e2275973ed21
Author: Julien Boibessot <jul...@ar...>
Date: Thu Apr 15 11:26:35 2010 +0200
[LINUX] GPIO: Workaround compilation problem due to recent commits (grrrrr) + indentation
-----------------------------------------------------------------------
Summary of changes:
target/linux/modules/gpio/core.c | 35 ++++++++++++++++++-----------------
1 files changed, 18 insertions(+), 17 deletions(-)
diff --git a/target/linux/modules/gpio/core.c b/target/linux/modules/gpio/core.c
index 2f2b327..848e3c7 100755
--- a/target/linux/modules/gpio/core.c
+++ b/target/linux/modules/gpio/core.c
@@ -106,7 +106,7 @@ enum {
/* Global variables */
struct gpio_operations *driver_ops;
-static int gpio_major = GPIO_MAJOR;
+static int gpio_major = GPIO_MAJOR;
#ifdef CONFIG_ARCH_IMX
static int number_of_pins[NB_PORTS] = {32, 32, 32, 32};
@@ -417,7 +417,7 @@ static unsigned int getPortDir(unsigned int aPort)
}
-char* port_name[NB_PORTS] = { "portA", "portB", "portC", "portD",
+char* port_name[NB_PORTS] = { "portA", "portB", "portC", "portD",
#ifdef CONFIG_ARCH_MX2
"portE", "portF",
#endif
@@ -449,7 +449,7 @@ static ssize_t armadeus_gpio_dev_write(struct file *file, const char *data, size
if (gpio->nb_pins != 1) {
pr_debug("Full port write: 0x%x\n", value);
- writeOnPort( gpio->port, value );
+ writeOnPort(gpio->port, value);
} else {
value = value ? 1 : 0;
pr_debug("Single pin write: %d\n", value);
@@ -572,7 +572,7 @@ static int armadeus_gpio_dev_open(struct inode *inode, struct file *file)
#endif
gpio->nb_pins = 32;
gpio->changed = 1;
- gpio->port = FULL_MINOR_TO_PORT(minor);
+ gpio->port = FULL_MINOR_TO_PORT(minor);
pr_debug("Reserving full %s\n", port_name[gpio->port]);
goto success;
break;
@@ -587,7 +587,7 @@ static int armadeus_gpio_dev_open(struct inode *inode, struct file *file)
goto err_request;
}
- gpio->port = minor >> GPIO_PORT_SHIFT;
+ gpio->port = minor >> GPIO_PORT_SHIFT;
gpio->number = minor & GPIO_PIN_MASK;
gpio->pin_state = 0;
@@ -659,7 +659,7 @@ int armadeus_gpio_dev_ioctl(struct inode *inode, struct file *filp,
unsigned int cmd, unsigned long arg)
{
int err = 0, ret = 0, value = 0;
- u64 value64;
+ /* u64 value64; TODO */
unsigned int minor;
pr_debug(DRIVER_NAME " ## IOCTL received: (0x%x) ##\n", cmd);
@@ -734,17 +734,19 @@ int armadeus_gpio_dev_ioctl(struct inode *inode, struct file *filp,
break;
case GPIORDIRQMODE:
+ /* TODO
value64 = (u64)(shadows_irq2[MAX_MINOR - minor] & 0xFFFFFFFF);
- value64 |= (u64)(shadows_irq<<32);
- ret = __put_user(value64, (u64 *)arg);
+ value64 |= ((u64)(shadows_irq[MAX_MINOR - minor])) << 32;
+ ret = __put_user(value64, (u64 *)arg); */
break;
case GPIOWRIRQMODE:
+ /* TODO
ret = __get_user(value64, (u64 *)arg);
- if(ret == 0) {
- shadows_irq[MAX_MINOR - minor] = (value64>>32);
- shadows_irq2[MAX_MINOR - minor] = (value64&0xFFFFFFFF);
- }
+ if (ret == 0) {
+ shadows_irq[MAX_MINOR - minor] = (value64 >> 32);
+ shadows_irq2[MAX_MINOR - minor] = (value64 & 0xFFFFFFFF);
+ } */
break;
case GPIORDPULLUP:
@@ -927,7 +929,6 @@ static int armadeus_gpio_proc_write( __attribute__ ((unused)) struct file *file,
}
pr_debug(" on %s %s register\n", port_name[port_ID],
port_setting_name[settings->type]);
-
}
up(&gpio_sema);
@@ -1183,10 +1184,10 @@ unsigned int gpioGetPortDir(unsigned int aPort)
return getPortDir(aPort);
}
-EXPORT_SYMBOL( gpioWriteOnPort );
-EXPORT_SYMBOL( gpioReadFromPort );
-EXPORT_SYMBOL( gpioSetPortDir );
-EXPORT_SYMBOL( gpioGetPortDir );
+EXPORT_SYMBOL(gpioWriteOnPort);
+EXPORT_SYMBOL(gpioReadFromPort);
+EXPORT_SYMBOL(gpioSetPortDir);
+EXPORT_SYMBOL(gpioGetPortDir);
module_init(armadeus_gpio_init);
hooks/post-receive
--
armadeus
|