Народ, кто будет хотеть серьезно юзать subj, учтите несколько неприятностей.
1. Та кнопка, что в винде управляет громкостью (слева вверху) в Линухе не поддерживается.
2. Регулировать громкость из OPIE не получится.
Прилагаемый патч это лечит.
(Оставляю свои координаты, дабы было ясно, что я не хакер, который хочет всем нагадить).
Index: arch/arm/mach-pxa/h5400_asic_io.c
===================================================================
RCS file: /cvs/linux/kernel/arch/arm/mach-pxa/h5400_asic_io.c,v
retrieving revision 1.36
diff -u -r1.36 h5400_asic_io.c
--- arch/arm/mach-pxa/h5400_asic_io.c 8 Mar 2004 23:38:21 -0000 1.36
+++ arch/arm/mach-pxa/h5400_asic_io.c 25 Sep 2005 18:43:39 -0000
@@ -62,8 +62,8 @@
#define PERROR(format,arg...) printk(KERN_ERR __FILE__ ":%s - " format "\n", __FUNCTION__, ## arg)
#define ADC_DATA_MASK 0x3ff
+#define MAX_BITS_IN_BUTTONS 14
-
/***********************************************************************************
* ADC support (stolen from the H3900 code)
***********************************************************************************/
@@ -542,12 +542,12 @@
static unsigned long oldkeys;
bits = h5400_asic_read_register (H5400_ASIC_GPIO_GPA_DAT);
-
+
keys = gpio_to_keys (bits);
d = keys ^ oldkeys;
-
- for (i = 0; i < 11; i++) {
+
+ for (i = 0; i < MAX_BITS_IN_BUTTONS; i++) {
if (d & (1 << i)) {
unsigned char down = (keys & (1 << i)) ? 1 : 0;
h3600_hal_keypress (H3600_MAKEKEY (i, down));
Index: drivers/char/h3600_ts.c
===================================================================
RCS file: /cvs/linux/kernel/drivers/char/h3600_ts.c,v
retrieving revision 1.76
diff -u -r1.76 h3600_ts.c
--- drivers/char/h3600_ts.c 27 Nov 2003 02:21:29 -0000 1.76
+++ drivers/char/h3600_ts.c 25 Sep 2005 18:43:46 -0000
@@ -140,9 +140,11 @@
H3600_SCANCODE_RIGHT, /* 7 -> right */
H3600_SCANCODE_LEFT, /* 8 -> left */
H3600_SCANCODE_DOWN, /* 9 -> down */
- H3600_SCANCODE_ACTION, /* 10 -> action button (synthesized, not from Atmel) */
- H3600_SCANCODE_SUSPEND, /* 11 -> power button (synthesized, not from Atmel) */
- 0, 0, 0, 0 /* pad out to 16 total bytes */
+ H3600_SCANCODE_ACTION, /* 10 -> action button (synthesized, not from Atmel) */
+ H3600_SCANCODE_SUSPEND, /* 11 -> power button (synthesized, not from Atmel) */
+ H3600_SCANCODE_UP, /* 12 -> up */
+ H3600_SCANCODE_DOWN, /* 13 -> down */
+ 0, 0 /* pad out to 16 total bytes */
};
enum {
Index: drivers/sound/ak4535.c
===================================================================
RCS file: /cvs/linux/kernel/drivers/sound/ak4535.c,v
retrieving revision 1.23
diff -u -r1.23 ak4535.c
--- drivers/sound/ak4535.c 29 Mar 2005 23:28:35 -0000 1.23
+++ drivers/sound/ak4535.c 25 Sep 2005 18:43:53 -0000
@@ -25,7 +25,7 @@
#include "ak4535.h"
#define REC_MASK (SOUND_MASK_LINE | SOUND_MASK_MIC)
-#define DEV_MASK (REC_MASK | SOUND_MASK_PCM |SOUND_MASK_BASS)
+#define DEV_MASK (REC_MASK | SOUND_MASK_PCM | SOUND_MASK_BASS | SOUND_MASK_VOLUME)
#define REG_MAX 0x10
@@ -432,7 +432,6 @@
switch (nr) {
case SOUND_MIXER_PCM:
- akm->volume = val;
akm->pcm = val;
akm->mod_cnt++;
/* input value [0,100], ak4535 uses [0,7] */
@@ -453,12 +452,15 @@
case SOUND_MIXER_TREBLE:
return -EINVAL;
+ case SOUND_MIXER_VOLUME:
case SOUND_MIXER_LINE:
+ akm->volume = val;
akm->line = val;
akm->mod_cnt++;
/* input value [0,100], ak4535 uses [255,0] */
val = gain.left;
- val = 0xff & ~(255 * val / 100);
+//// val = 0xff & ~(255 * val / 100);
+ val = 156 - (val * 156) / 100;
ak4535_update(clnt, I2C_SET_LINE_GAIN, &val);
break;
Index: scripts/ipkg-make-kernel-packages
===================================================================
RCS file: /cvs/linux/kernel/scripts/ipkg-make-kernel-packages,v
retrieving revision 1.96
diff -u -r1.96 ipkg-make-kernel-packages
--- scripts/ipkg-make-kernel-packages 4 Jul 2004 22:37:09 -0000 1.96
+++ scripts/ipkg-make-kernel-packages 25 Sep 2005 18:44:05 -0000
@@ -762,11 +762,11 @@
############################################################
popd
-ipkg-build -o root -g root $kernel_ipkg_src
-ipkg-build -o root -g root $km_ipkg_src
+ipkg-build $kernel_ipkg_src
+ipkg-build $km_ipkg_src
for package_src in $package_srcs; do
- ipkg-build -o root -g root $package_src
+ ipkg-build $package_src
done
rm -rf $tmpdir