aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/ar71xx/patches-4.9/702-MIPS-ath79-fixup-routerboot-board-parameter.patch
blob: b8715bba9e883d64a2804e200cc68d5f88733625 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
From: Gabor Juhos <juhosg@freemail.hu>
Date: Sat, 2 Dec 2017 19:15:29 +0100
Subject: [PATCH] MIPS: ath79: fix board detection with newer RouterBOOT versions

Recent RouterBOOT version (at least version 3.41 on RB911G-5HPacD)
use "Board=" kernel parameter instead of "board=" to pass the board
name to the kernel. Due to this change the board detection code is
not working on the devices shipped with the new RouterBOOT version.
Because the kernel is unable to identify these boards they become
unusable despite that they are supported by the current code.

Update the prom_init code to convert the 'Board' kernel parameter to
'board'. After this change, the board detection works also with the
new RouterBOOT versions.

Signed-off-by: Gabor Juhos <juhosg@freemail.hu>
---
--- a/arch/mips/ath79/prom.c
+++ b/arch/mips/ath79/prom.c
@@ -104,6 +104,7 @@ static int __init ath79_prom_init_myload
 void __init prom_init(void)
 {
 	const char *env;
+	char *c;
 
 	if (ath79_prom_init_myloader())
 		return;
@@ -137,6 +138,15 @@ void __init prom_init(void)
 	}
 #endif
 
+	/*
+	 * RouterBOOT uses "Board" kernel parameter instead of "board" since
+	 * version 3.41 (or so). Replace the first character of the parameter
+	 * to keep board detection working.
+	 */
+	c = strstr(arcs_cmdline, "Board=");
+	if (c)
+		c[0] = 'b';
+
 	if (strstr(arcs_cmdline, "board=750Gr3") ||
 	    strstr(arcs_cmdline, "board=750i") ||
 	    strstr(arcs_cmdline, "board=750-hb") ||
0'>320 321 322 323 324 325 326 327 328
# オーディオ

<!---
  original document: 0.9.0:docs/feature_audio.md
  git diff 0.9.0 HEAD -- docs/feature_audio.md | cat
-->

キーボードは音を出すことができます!Planck、Preonic あるいは特定の PWM 対応ピンにアクセスできる AVR キーボードがある場合は、単純なスピーカーを接続してビープ音を鳴らすことができます。これらのビープ音を使ってレイヤーの変化、モディファイア、特殊キーを示したり、あるいは単にイカした8ビットの曲を鳴らすことができます。

最大2つの同時オーディオ音声がサポートされ、1つはタイマー1によってもう一つはタイマー3によって駆動されます。以下のピンは config.h の中でオーディオ出力として定義することができます:

Timer 1:
`#define B5_AUDIO`
`#define B6_AUDIO`
`#define B7_AUDIO`

Timer 3:
`#define C4_AUDIO`
`#define C5_AUDIO`
`#define C6_AUDIO`

`rules.mk``AUDIO_ENABLE = yes` を追加すると、他の設定無しで自動的に有効になる幾つかの異なるサウンドがあります:

```
STARTUP_SONG // キーボードの起動時に再生 (audio.c)
GOODBYE_SONG // RESET キーを押すと再生 (quantum.c)
AG_NORM_SONG // AG_NORM キーを押すと再生 (quantum.c)
AG_SWAP_SONG // AG_SWAP キーを押すと再生 (quantum.c)
CG_NORM_SONG // CG_NORM キーを押すと再生 (quantum.c)
CG_SWAP_SONG // CG_SWAP キーを押すと再生 (quantum.c)
MUSIC_ON_SONG // 音楽モードがアクティブになると再生 (process_music.c)
MUSIC_OFF_SONG // 音楽モードが非アクティブになると再生 (process_music.c)
CHROMATIC_SONG // 半音階音楽モードが選択された時に再生 (process_music.c)
GUITAR_SONG // ギター音楽モードが選択された時に再生 (process_music.c)
VIOLIN_SONG // バイオリン音楽モードが選択された時に再生 (process_music.c)
MAJOR_SONG // メジャー音楽モードが選択された時に再生 (process_music.c)
```

`config.h` の中で以下のような操作を行うことで、デフォルトの曲を上書きすることができます:

```c
#ifdef AUDIO_ENABLE
  #define STARTUP_SONG SONG(STARTUP_SOUND)
#endif
```

サウンドの完全なリストは、[quantum/audio/song_list.h](https://github.com/qmk/qmk_firmware/blob/master/quantum/audio/song_list.h) で見つかります - このリストに自由に追加してください!利用可能な音は [quantum/audio/musical_notes.h](https://github.com/qmk/qmk_firmware/blob/master/quantum/audio/musical_notes.h) で見つかります。

特定の時にカスタムサウンドを再生するために、以下のように曲を定義することができます(ファイルの上部付近に):

```c
float my_song[][2] = SONG(QWERTY_SOUND);
```

以下のように曲を再生します:

```c
PLAY_SONG(my_song);
```

または、以下のようにループで再生することができます:

```c
PLAY_LOOP(my_song);
```

オーディオがキーボードに組み込まれていない時に問題が起きる事を避けるために、`#ifdef AUDIO_ENABLE` / `#endif` で全てのオーディオ機能をくるむことをお勧めします。

オーディオで利用可能なキーコードは以下の通りです:

* `AU_ON` - オーディオ機能をオン
* `AU_OFF` - オーディオ機能をオフ
* `AU_TOG` - オーディオ機能を切り替え

!> これらのキーコードは全てのオーディオ機能をオンおよびオフにします。オフにするとオーディオフィードバック、オーディオクリック、音楽モードなどが完全に無効になります。

## ARM オーディオボリューム

ARM デバイスの場合、DAC サンプル値を調整できます。キーボードがあなたやあなたの同僚にとって騒々しい場合、`config.h` 内の `DAC_SAMPLE_MAX` を使って最大量を設定することができます:

```c
#define DAC_SAMPLE_MAX 65535U
```

## 音楽モード

音楽モードは列を半音階に、行をオクターブにマップします。これは格子配列キーボードで最適に動作しますが、他のものでも動作させることができます。`0xFF` 未満の全てのキーコードはブロックされるため、音の演奏中は入力できません - 特別なキー/mod があればそれらは引き続き動作します。これを回避するには、音楽モードを有効にする前(あるいは後)で、KC_NO を使って別のレイヤーにジャンプします。

メモリの問題により、録音は実験的です - 奇妙な動作が発生した場合は、キーボードの取り外しと再接続で問題が解決するでしょう。

利用可能なキーコード:

* `MU_ON` - 音楽モードをオン
* `MU_OFF` - 音楽モードをオフ
* `MU_TOG` - 音楽モードの切り替え
* `MU_MOD` - 音楽モードの循環
   * `CHROMATIC_MODE` - 半音階。行はオクターブを変更します
   * `GUITAR_MODE` - 半音階、ただし行は弦を変更します (+5 階)
   * `VIOLIN_MODE` - 半音階。ただし行は弦を変換します (+7 階)
   * `MAJOR_MODE` - メージャースケール

音楽モードでは、以下のキーコードは動作が異なり、通過しません:

* `LCTL` - 録音を開始
* `LALT` - 録音を停止/演奏を停止
* `LGUI` - 録音を再生
* `KC_UP` - 再生をスピードアップ
* `KC_DOWN` - 再生をスローダウン

ピッチ標準 (`PITCH_STANDARD_A`) はデフォルトで 440.0f です - これを変更するには、`config.h` に以下のようなものを追加します:

    #define PITCH_STANDARD_A 432.0f

音楽モードも完全に無効にすることができます。コントローラの容量が足りなくて困っている場合に役に立ちます。無効にするには、これを `config.h` に追加します:

    #define NO_MUSIC_MODE

### 音楽マスク

デフォルトで、`MUSIC_MASK` は `keycode < 0xFF` に設定されます。これは、`0xFF` 未満のキーコードが音に変換され、何も出力しないことを意味します。`config.h` の中で以下のものを定義することで、これを変更することができます:

    #define MUSIC_MASK keycode != KC_NO

これは全てのキーコードを捕捉します - これは、キーボードを再起動するまで、音楽モードで動けなくなることに注意してください!

どのキーコードを引き続き処理するかを制御する、より高度な方法については、`<keyboard>.c` の中の `music_mask_kb(keycode)` および `keymap.c` の中の `music_mask_user(keycode)` を使うことができます:

    bool music_mask_user(uint16_t keycode) {
      switch (keycode) {
        case RAISE:
        case LOWER:
          return false;
        default:
          return true;
      }
    }

false を返すものはマスクの一部では無く、常に処理されます。

### 音楽マップ

デフォルトでは、音楽モードはキーのスケールを決定するために列と行を使います。キーボードレイアウトに一致する長方形のマトリックスを使うキーボードの場合、これで十分です。しかし、(Planck Rev6 あるいは多くの分割キーボードなどのように)より複雑なマトリックスを使うキーボードの場合、非常に歪んだ感じを受けることになります。

しかしながら、音楽マップオプションにより、音楽モードのためにスケーリングを再マップすることができるため、レイアウトに一致し、より自然になります。

この機能を使うには、`#define MUSIC_MAP` を `config.h` ファイルに追加します。そして、`キーボードの名前.c` または `keymap.c``uint8_t music_map` を追加します。

```c
const uint8_t music_map[MATRIX_ROWS][MATRIX_COLS] = LAYOUT_ortho_4x12(
	36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,