Subject: Cobalt build error

From: Ralf Baechle <[email-masked]>
Date: Fri, 7 Mar 2008 15:32:56 +0000

Maybe some Cobalt hacker can sort out these issues in the latest kernel.
I could try to fix the build but don't have any Cobalt kit for testing ...

  Ralf

  CC      drivers/input/misc/cobalt_btns.o
drivers/input/misc/cobalt_btns.c: In function ‘cobalt_buttons_probe’:
drivers/input/misc/cobalt_btns.c:100: error: ‘struct input_dev’ has no member named ‘cdev’
drivers/input/misc/cobalt_btns.c:102: error: ‘struct platform_device’ has no member named ‘keymap’
drivers/input/misc/cobalt_btns.c:103: error: ‘struct platform_device’ has no member named ‘keymap’
drivers/input/misc/cobalt_btns.c:103: error: ‘struct platform_device’ has no member named ‘keymap’
drivers/input/misc/cobalt_btns.c:103: error: ‘struct platform_device’ has no member named ‘keymap’
drivers/input/misc/cobalt_btns.c:103: error: ‘struct platform_device’ has no member named ‘keymap’
drivers/input/misc/cobalt_btns.c:103: warning: type defaults to ‘int’ in declaration of ‘type name’
drivers/input/misc/cobalt_btns.c:103: warning: type defaults to ‘int’ in declaration of ‘type name’
drivers/input/misc/cobalt_btns.c:103: error: size of array ‘type name’ is negative
drivers/input/misc/cobalt_btns.c:108: error: ‘buttons_map’ undeclared (first use in this function)
drivers/input/misc/cobalt_btns.c:108: error: (Each undeclared identifier is reported only once
drivers/input/misc/cobalt_btns.c:108: error: for each function it appears in.)
drivers/input/misc/cobalt_btns.c:108: warning: type defaults to ‘int’ in declaration of ‘type name’
drivers/input/misc/cobalt_btns.c:108: warning: type defaults to ‘int’ in declaration of ‘type name’
drivers/input/misc/cobalt_btns.c:108: error: size of array ‘type name’ is negative
drivers/input/misc/cobalt_btns.c:109: warning: dereferencing ‘void *’ pointer
drivers/input/misc/cobalt_btns.c:109: error: invalid use of void expression
make[1]: *** [drivers/input/misc/cobalt_btns.o] Error 1
make: *** [drivers/input/misc/cobalt_btns.o] Error 2

---

From: Yoichi Yuasa <[email-masked]>
Date: Sat, 8 Mar 2008 09:19:47 +0900

Hi,

On Fri, 7 Mar 2008 15:32:56 +0000

> I could try to fix the build but don't have any Cobalt kit for testing ...

I already sent the patch to Dmitry Torokhov.
He said I will apply it.
But, it has not been applied yet.

Yoichi

---

From: [email-masked] (Thomas Bogendoerfer)
Date: Sat, 8 Mar 2008 01:28:54 +0100

> I could try to fix the build but don't have any Cobalt kit for testing ...

the patch below fixes the compile breakage, but is untested ...

Thomas.

Fix breakage introduced by commit b037b08e59633d939d79f1df9c43c6625f8db904

Signed-off-by: Thomas Bogendoerfer <[email-masked]>
---

 drivers/input/misc/cobalt_btns.c |    9 ++++-----
 1 files changed, 4 insertions(+), 5 deletions(-)

diff --git a/drivers/input/misc/cobalt_btns.c b/drivers/input/misc/cobalt_btns.c
index 4833b1a..b554047 100644
--- a/drivers/input/misc/cobalt_btns.c
+++ b/drivers/input/misc/cobalt_btns.c
@@ -97,16 +97,15 @@ static int __devinit cobalt_buttons_probe(struct platform_device *pdev)
 	input->name = "Cobalt buttons";
 	input->phys = "cobalt/input0";
 	input->id.bustype = BUS_HOST;
-	input->cdev.dev = &pdev->dev;
 
-	input->keycode = pdev->keymap;
-	input->keycodemax = ARRAY_SIZE(pdev->keymap);
+	input->keycode = bdev->keymap;
+	input->keycodemax = ARRAY_SIZE(bdev->keymap);
 	input->keycodesize = sizeof(unsigned short);
 
 	input_set_capability(input, EV_MSC, MSC_SCAN);
 	__set_bit(EV_KEY, input->evbit);
-	for (i = 0; i < ARRAY_SIZE(buttons_map); i++)
-		__set_bit(input->keycode[i], input->keybit);
+	for (i = 0; i < ARRAY_SIZE(cobalt_map); i++)
+		__set_bit(cobalt_map[i], input->keybit);
 	__clear_bit(KEY_RESERVED, input->keybit);
 
 	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);

-- 
Crap can work. Given enough thrust pigs will fly, but it's not necessary a
good idea.                                                [ RFC1925, 2.3 ]

---

From: Martin Michlmayr <[email-masked]>
Date: Sat, 8 Mar 2008 08:44:13 +0100

> But, it has not been applied yet.

That was quite a while ago, wasn't it?  Maybe you could ping him again
or ask Ralf or Andrew to send the patch to Linus.
-- 
Martin Michlmayr
http://www.cyrius.com/

---

From: Yoichi Yuasa <[email-masked]>
Date: Sat, 8 Mar 2008 17:45:48 +0900

Hi,

On Sat, 8 Mar 2008 08:44:13 +0100

> or ask Ralf or Andrew to send the patch to Linus.

I sent a mail to him 10 days ago.
But, there is no reply.

Ralf,
Could you send the patch to Linus?

Yoichi

Fix cobalt_btns loadable keymaps support.

Signed-off-by: Yoichi Yuasa <[email-masked]>

diff -pruN -X /home/yuasa/Memo/dontdiff linux-orig/drivers/input/misc/cobalt_btns.c linux/drivers/input/misc/cobalt_btns.c
--- linux-orig/drivers/input/misc/cobalt_btns.c	2008-02-10 20:16:54.621304697 +0900
+++ linux/drivers/input/misc/cobalt_btns.c	2008-02-10 23:02:30.875539556 +0900
@@ -1,7 +1,7 @@
 /*
  *  Cobalt button interface driver.
  *
- *  Copyright (C) 2007  Yoichi Yuasa <[email-masked]>
+ *  Copyright (C) 2007-2008  Yoichi Yuasa <[email-masked]>
  *
  *  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
@@ -15,7 +15,7 @@
  *
  *  You should have received a copy of the GNU General Public License
  *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 #include <linux/init.h>
 #include <linux/input-polldev.h>
@@ -55,7 +55,7 @@ static void handle_buttons(struct input_
 	status = ~readl(bdev->reg) >> 24;
 
 	for (i = 0; i < ARRAY_SIZE(bdev->keymap); i++) {
-		if (status & (1UL << i)) {
+		if (status & (1U << i)) {
 			if (++bdev->count[i] == BUTTONS_COUNT_THRESHOLD) {
 				input_event(input, EV_MSC, MSC_SCAN, i);
 				input_report_key(input, bdev->keymap[i], 1);
@@ -97,16 +97,16 @@ static int __devinit cobalt_buttons_prob
 	input->name = "Cobalt buttons";
 	input->phys = "cobalt/input0";
 	input->id.bustype = BUS_HOST;
-	input->cdev.dev = &pdev->dev;
+	input->dev.parent = &pdev->dev;

+		__set_bit(bdev->keymap[i], input->keybit);