VineSeed ML アーカイブ



[VineSeed:17630] Re: upload: kernel

  • From: HARADA Kazutaka <kazutaka@xxxxxxxxxxxxxxxx>
  • Subject: [VineSeed:17630] Re: upload: kernel
  • Date: Sat, 23 May 2009 14:54:43 +0900
ハラダです。

(2009年03月21日 00:05), HARADA Kazutaka さんは書きました:
> 調べてみたところ、以下の URI の patch が backport 用に使える
> んじゃない?みたいな記述を見かけたのですが、Seed の 2.6.27 には
> 使えるんでしょうか?(良くわからないもので…)

すいません。これ↑けっこう寝ぼけたことを書いていたようで、
kernel-2.6-vl.spec を読んだら、

# panasonic-laptop
Patch4010: linux-2.6-panasonic-laptop-0.94.patch

として既に去年の12月に patch を追加してもらえてたんですね。
失礼しました。

で、latest stable の 2.6.29.4 の panasonic-laptop.c と
上記 patch を見比べてみたところ微妙に修正が入っている
ようだったので、これとの差分を取って Patch4011 として
追加して kernel をビルドしてみたところ、問題なく modprobe
で module を load でき、また Fn + F1/F2 でのバックライトの
輝度変更や Fn + F5/F6 でのボリューム変更が機能することが
確認できました。

patch を添付しておきますので、問題なければ次の kernel の
更新時に反映してもらえると助かります。

# さっき気づいたのですが、ボリューム変更の方は何故か半分より
# 下に下がらないようです。うーん…。

-- 
--------------------------------------
Kazutaka HARADA
  e-mail:kazutaka@xxxxxxxxxxxxxxxx
--------------------------------------
--- linux-2.6.27/drivers/misc/panasonic-laptop.c.orig	2009-05-22 14:35:54.000000000 +0900
+++ linux-2.6.27/drivers/misc/panasonic-laptop.c	2009-03-24 08:12:14.000000000 +0900
@@ -116,7 +116,6 @@
  *
  */
 
-#include <linux/version.h>
 #include <linux/kernel.h>
 #include <linux/module.h>
 #include <linux/init.h>
@@ -242,8 +241,6 @@
 	};
 	acpi_status status = AE_OK;
 
-	ACPI_FUNCTION_TRACE("acpi_pcc_write_sset");
-
 	status = acpi_evaluate_object(pcc->handle, METHOD_HKEY_SSET,
 				      &params, NULL);
 
@@ -252,11 +249,9 @@
 
 static inline int acpi_pcc_get_sqty(struct acpi_device *device)
 {
-	unsigned long s;
+	unsigned long long s;
 	acpi_status status;
 
-	ACPI_FUNCTION_TRACE("acpi_pcc_get_sqty");
-
 	status = acpi_evaluate_integer(device->handle, METHOD_HKEY_SQTY,
 				       NULL, &s);
 	if (ACPI_SUCCESS(status))
@@ -275,8 +270,6 @@
 	union acpi_object *hkey = NULL;
 	int i;
 
-	ACPI_FUNCTION_TRACE("acpi_pcc_retrieve_biosdata");
-
 	status = acpi_evaluate_object(pcc->handle, METHOD_HKEY_SINF, 0,
 				      &buffer);
 	if (ACPI_FAILURE(status)) {
@@ -500,9 +493,7 @@
 	struct input_dev *hotk_input_dev = pcc->input_dev;
 	int rc;
 	int key_code, hkey_num;
-	unsigned long result;
-
-	ACPI_FUNCTION_TRACE("acpi_pcc_generate_keyinput");
+	unsigned long long result;
 
 	rc = acpi_evaluate_integer(pcc->handle, METHOD_HKEY_QUERY,
 				   NULL, &result);
@@ -516,7 +507,7 @@
 
 	hkey_num = result & 0xf;
 
-	if (hkey_num < 0 || hkey_num > ARRAY_SIZE(pcc->keymap)) {
+	if (hkey_num < 0 || hkey_num >= ARRAY_SIZE(pcc->keymap)) {
 		ACPI_DEBUG_PRINT((ACPI_DB_ERROR,
 				  "hotkey number out of range: %d\n",
 				  hkey_num));
@@ -539,8 +530,6 @@
 {
 	struct pcc_acpi *pcc = (struct pcc_acpi *) data;
 
-	ACPI_FUNCTION_TRACE("acpi_pcc_hotkey_notify");
-
 	switch (event) {
 	case HKEY_NOTIFY:
 		acpi_pcc_generate_keyinput(pcc);
@@ -555,8 +544,6 @@
 {
 	int i, rc;
 
-	ACPI_FUNCTION_TRACE("acpi_pcc_init_input");
-
 	pcc->input_dev = input_allocate_device();
 	if (!pcc->input_dev) {
 		ACPI_DEBUG_PRINT((ACPI_DB_ERROR,
@@ -598,8 +585,6 @@
 	struct pcc_acpi *pcc = acpi_driver_data(device);
 	acpi_status status = AE_OK;
 
-	ACPI_FUNCTION_TRACE("acpi_pcc_hotkey_resume");
-
 	if (device == NULL || pcc == NULL)
 		return -EINVAL;
 
@@ -617,8 +602,6 @@
 	struct pcc_acpi *pcc;
 	int num_sifr, result;
 
-	ACPI_FUNCTION_TRACE("acpi_pcc_hotkey_add");
-
 	if (!device)
 		return -EINVAL;
 
@@ -645,7 +628,7 @@
 	pcc->device = device;
 	pcc->handle = device->handle;
 	pcc->num_sifr = num_sifr;
-	acpi_driver_data(device) = pcc;
+	device->driver_data = pcc;
 	strcpy(acpi_device_name(device), ACPI_PCC_DEVICE_NAME);
 	strcpy(acpi_device_class(device), ACPI_PCC_CLASS);
 
@@ -715,8 +698,6 @@
 {
 	int result = 0;
 
-	ACPI_FUNCTION_TRACE("acpi_pcc_init");
-
 	if (acpi_disabled)
 		return -ENODEV;
 
@@ -734,8 +715,6 @@
 {
 	struct pcc_acpi *pcc = acpi_driver_data(device);
 
-	ACPI_FUNCTION_TRACE("acpi_pcc_hotkey_remove");
-
 	if (!device || !pcc)
 		return -EINVAL;
 
@@ -758,8 +737,6 @@
 
 static void __exit acpi_pcc_exit(void)
 {
-	ACPI_FUNCTION_TRACE("acpi_pcc_exit");
-
 	acpi_bus_unregister_driver(&acpi_pcc_driver);
 }