@@ -38,8 +38,11 @@ const unsigned int NUM_DEV[ID_DEV_SIZE] = {
38
38
[ID_DEV_BUZZER ] = 1 , [ID_DEV_MOTORRAWR ] = 1 , [ID_DEV_MOTORRAWL ] = 1 ,
39
39
[ID_DEV_MOTOREN ] = 1 , [ID_DEV_MOTOR ] = 1 , [ID_DEV_CNT ] = 2 };
40
40
41
- /* --- Device Names --- */
42
- static const char * NAME_DEV [ID_DEV_SIZE ] = {
41
+ /*
42
+ * --- Device Names ---
43
+ * used in rtmouse_dev.c
44
+ */
45
+ const char * NAME_DEV [ID_DEV_SIZE ] = {
43
46
[ID_DEV_LED ] = "rtled" ,
44
47
[ID_DEV_SWITCH ] = "rtswitch" ,
45
48
[ID_DEV_SENSOR ] = "rtlightsensor" ,
@@ -49,8 +52,11 @@ static const char *NAME_DEV[ID_DEV_SIZE] = {
49
52
[ID_DEV_MOTOREN ] = "rtmotoren" ,
50
53
[ID_DEV_MOTOR ] = "rtmotor" };
51
54
52
- /* --- Device Names(+%u) --- */
53
- static const char * NAME_DEV_U [ID_DEV_SIZE ] = {
55
+ /*
56
+ * --- Device Names(+%u) ---
57
+ * used in rtmouse_dev.c
58
+ */
59
+ const char * NAME_DEV_U [ID_DEV_SIZE ] = {
54
60
[ID_DEV_LED ] = "rtled%u" ,
55
61
[ID_DEV_SWITCH ] = "rtswitch%u" ,
56
62
[ID_DEV_SENSOR ] = "rtlightsensor%u" ,
@@ -60,22 +66,25 @@ static const char *NAME_DEV_U[ID_DEV_SIZE] = {
60
66
[ID_DEV_MOTOREN ] = "rtmotoren%u" ,
61
67
[ID_DEV_MOTOR ] = "rtmotor%u" };
62
68
63
- // used in by register_dev() and cleanup_each_dev()
64
- static int _major_dev [ID_DEV_SIZE ] = {
69
+ // used in by rtmouse_dev.c and cleanup_each_dev()
70
+ int _major_dev [ID_DEV_SIZE ] = {
65
71
[ID_DEV_LED ] = DEV_MAJOR , [ID_DEV_SWITCH ] = DEV_MAJOR ,
66
72
[ID_DEV_SENSOR ] = DEV_MAJOR , [ID_DEV_BUZZER ] = DEV_MAJOR ,
67
73
[ID_DEV_MOTORRAWR ] = DEV_MAJOR , [ID_DEV_MOTORRAWL ] = DEV_MAJOR ,
68
74
[ID_DEV_MOTOREN ] = DEV_MAJOR , [ID_DEV_MOTOR ] = DEV_MAJOR };
69
75
70
- // used in register_dev() and cleanup_each_dev()
71
- static int _minor_dev [ID_DEV_SIZE ] = {
76
+ // used in rtmouse_dev.c and cleanup_each_dev()
77
+ int _minor_dev [ID_DEV_SIZE ] = {
72
78
[ID_DEV_LED ] = DEV_MINOR , [ID_DEV_SWITCH ] = DEV_MINOR ,
73
79
[ID_DEV_SENSOR ] = DEV_MINOR , [ID_DEV_BUZZER ] = DEV_MINOR ,
74
80
[ID_DEV_MOTORRAWR ] = DEV_MINOR , [ID_DEV_MOTORRAWL ] = DEV_MINOR ,
75
81
[ID_DEV_MOTOREN ] = DEV_MINOR , [ID_DEV_MOTOR ] = DEV_MINOR };
76
82
77
- /* --- General Options --- */
78
- static struct class * class_dev [ID_DEV_SIZE ] = {
83
+ /*
84
+ * --- General Options ---
85
+ * used in rtmouse_dev.c
86
+ */
87
+ struct class * class_dev [ID_DEV_SIZE ] = {
79
88
[ID_DEV_LED ] = NULL , [ID_DEV_SWITCH ] = NULL ,
80
89
[ID_DEV_SENSOR ] = NULL , [ID_DEV_BUZZER ] = NULL ,
81
90
[ID_DEV_MOTORRAWR ] = NULL , [ID_DEV_MOTORRAWL ] = NULL ,
@@ -144,24 +153,6 @@ void rpi_pwm_write32(uint32_t offset, uint32_t val)
144
153
iowrite32 (val , pwm_base + offset );
145
154
}
146
155
147
- /*
148
- * Initialize buzzer
149
- * return 0 : device close
150
- */
151
- static int buzzer_init (void )
152
- {
153
-
154
- rpi_gpio_function_set (BUZZER_BASE , RPI_GPF_OUTPUT ); // io is pwm out
155
- rpi_pwm_write32 (RPI_PWM_CTRL , 0x00000000 );
156
- udelay (1000 );
157
- rpi_pwm_write32 (RPI_PWM_CTRL , 0x00008181 ); // PWM1,2 enable
158
-
159
- // printk(KERN_DEBUG "%s: rpi_pwm_ctrl:%08X\n", DRIVER_NAME,
160
- // ioread32(pwm_base + RPI_PWM_CTRL));
161
-
162
- return 0 ;
163
- }
164
-
165
156
/* --- GPIO mapping for Device Open/Close --- */
166
157
/*
167
158
* Get gpio addresses and set them to global variables.
@@ -230,75 +221,6 @@ static int gpio_unmap(void)
230
221
return 0 ;
231
222
}
232
223
233
- /* --- Device Driver Registration and Device File Creation --- */
234
- static int register_dev (int id_dev )
235
- {
236
- int retval ;
237
- dev_t dev ;
238
- dev_t devno ;
239
- int i ;
240
-
241
- /* 空いているメジャー番号を使ってメジャー&
242
- マイナー番号をカーネルに登録する */
243
- retval =
244
- alloc_chrdev_region (& dev , /* 結果を格納するdev_t構造体 */
245
- DEV_MINOR , /* ベースマイナー番号 */
246
- NUM_DEV [id_dev ], /* デバイスの数 */
247
- NAME_DEV [id_dev ] /* デバイスドライバの名前 */
248
- );
249
-
250
- if (retval < 0 ) {
251
- printk (KERN_ERR "alloc_chrdev_region failed.\n" );
252
- return retval ;
253
- }
254
- _major_dev [id_dev ] = MAJOR (dev );
255
-
256
- /* デバイスクラスを作成する */
257
- #if LINUX_VERSION_CODE < KERNEL_VERSION (6 , 4 , 0 )
258
- class_dev [id_dev ] = class_create (THIS_MODULE , NAME_DEV [id_dev ]);
259
- #else
260
- class_dev [id_dev ] = class_create (NAME_DEV [id_dev ]);
261
- #endif
262
-
263
- if (IS_ERR (class_dev [id_dev ])) {
264
- return PTR_ERR (class_dev [id_dev ]);
265
- }
266
-
267
- for (i = 0 ; i < NUM_DEV [id_dev ]; i ++ ) {
268
- /* デバイスの数だけキャラクタデバイスを登録する */
269
- devno = MKDEV (_major_dev [id_dev ], _minor_dev [id_dev ] + i );
270
-
271
- /* キャラクタデバイスとしてこのモジュールをカーネルに登録する */
272
- cdev_init (& (cdev_array [cdev_index ]), & dev_fops [id_dev ]);
273
- cdev_array [cdev_index ].owner = THIS_MODULE ;
274
- if (cdev_add (& (cdev_array [cdev_index ]), devno , 1 ) < 0 ) {
275
- /* 登録に失敗した */
276
- printk (KERN_ERR "cdev_add failed minor = %d\n" ,
277
- _minor_dev [id_dev ] + i );
278
- } else {
279
- /* デバイスノードの作成 */
280
- struct device * dev_ret ;
281
- dev_ret = device_create (class_dev [id_dev ], NULL , devno ,
282
- NULL , NAME_DEV_U [id_dev ],
283
- _minor_dev [id_dev ] + i );
284
-
285
- /* デバイスファイル作成の可否を判定 */
286
- if (IS_ERR (dev_ret )) {
287
- /* デバイスファイルの作成に失敗した */
288
- printk (KERN_ERR
289
- "device_create failed minor = %d\n" ,
290
- _minor_dev [id_dev ] + i );
291
- /* リソースリークを避けるために登録された状態cdevを削除する
292
- */
293
- cdev_del (& (cdev_array [cdev_index ]));
294
- return PTR_ERR (dev_ret );
295
- }
296
- }
297
- cdev_index ++ ;
298
- }
299
- return 0 ;
300
- }
301
-
302
224
/*
303
225
* dev_init_module - register driver module
304
226
* called by module_init(dev_init_module)
0 commit comments