diff options
Diffstat (limited to 'include/asm-powerpc/smu.h')
-rw-r--r-- | include/asm-powerpc/smu.h | 40 |
1 files changed, 21 insertions, 19 deletions
diff --git a/include/asm-powerpc/smu.h b/include/asm-powerpc/smu.h index 76c29a9784dd..82ce47607774 100644 --- a/include/asm-powerpc/smu.h +++ b/include/asm-powerpc/smu.h | |||
@@ -4,9 +4,11 @@ | |||
4 | /* | 4 | /* |
5 | * Definitions for talking to the SMU chip in newer G5 PowerMacs | 5 | * Definitions for talking to the SMU chip in newer G5 PowerMacs |
6 | */ | 6 | */ |
7 | 7 | #ifdef __KERNEL__ | |
8 | #include <linux/config.h> | 8 | #include <linux/config.h> |
9 | #include <linux/list.h> | 9 | #include <linux/list.h> |
10 | #endif | ||
11 | #include <linux/types.h> | ||
10 | 12 | ||
11 | /* | 13 | /* |
12 | * Known SMU commands | 14 | * Known SMU commands |
@@ -20,7 +22,7 @@ | |||
20 | /* | 22 | /* |
21 | * Partition info commands | 23 | * Partition info commands |
22 | * | 24 | * |
23 | * These commands are used to retreive the sdb-partition-XX datas from | 25 | * These commands are used to retrieve the sdb-partition-XX datas from |
24 | * the SMU. The lenght is always 2. First byte is the subcommand code | 26 | * the SMU. The lenght is always 2. First byte is the subcommand code |
25 | * and second byte is the partition ID. | 27 | * and second byte is the partition ID. |
26 | * | 28 | * |
@@ -223,7 +225,7 @@ | |||
223 | * | 225 | * |
224 | * SMU_CMD_MISC_ee_GET_DATABLOCK_REC is used, among others, to | 226 | * SMU_CMD_MISC_ee_GET_DATABLOCK_REC is used, among others, to |
225 | * transfer blocks of data from the SMU. So far, I've decrypted it's | 227 | * transfer blocks of data from the SMU. So far, I've decrypted it's |
226 | * usage to retreive partition data. In order to do that, you have to | 228 | * usage to retrieve partition data. In order to do that, you have to |
227 | * break your transfer in "chunks" since that command cannot transfer | 229 | * break your transfer in "chunks" since that command cannot transfer |
228 | * more than a chunk at a time. The chunk size used by OF is 0xe bytes, | 230 | * more than a chunk at a time. The chunk size used by OF is 0xe bytes, |
229 | * but it seems that the darwin driver will let you do 0x1e bytes if | 231 | * but it seems that the darwin driver will let you do 0x1e bytes if |
@@ -356,6 +358,9 @@ extern unsigned long smu_cmdbuf_abs; | |||
356 | * Kenrel asynchronous i2c interface | 358 | * Kenrel asynchronous i2c interface |
357 | */ | 359 | */ |
358 | 360 | ||
361 | #define SMU_I2C_READ_MAX 0x1d | ||
362 | #define SMU_I2C_WRITE_MAX 0x15 | ||
363 | |||
359 | /* SMU i2c header, exactly matches i2c header on wire */ | 364 | /* SMU i2c header, exactly matches i2c header on wire */ |
360 | struct smu_i2c_param | 365 | struct smu_i2c_param |
361 | { | 366 | { |
@@ -366,12 +371,9 @@ struct smu_i2c_param | |||
366 | u8 subaddr[3]; /* subaddress */ | 371 | u8 subaddr[3]; /* subaddress */ |
367 | u8 caddr; /* combined address, filled by SMU driver */ | 372 | u8 caddr; /* combined address, filled by SMU driver */ |
368 | u8 datalen; /* length of transfer */ | 373 | u8 datalen; /* length of transfer */ |
369 | u8 data[7]; /* data */ | 374 | u8 data[SMU_I2C_READ_MAX]; /* data */ |
370 | }; | 375 | }; |
371 | 376 | ||
372 | #define SMU_I2C_READ_MAX 0x0d | ||
373 | #define SMU_I2C_WRITE_MAX 0x05 | ||
374 | |||
375 | struct smu_i2c_cmd | 377 | struct smu_i2c_cmd |
376 | { | 378 | { |
377 | /* public */ | 379 | /* public */ |
@@ -385,7 +387,7 @@ struct smu_i2c_cmd | |||
385 | int read; | 387 | int read; |
386 | int stage; | 388 | int stage; |
387 | int retries; | 389 | int retries; |
388 | u8 pdata[0x10]; | 390 | u8 pdata[32]; |
389 | struct list_head link; | 391 | struct list_head link; |
390 | }; | 392 | }; |
391 | 393 | ||
@@ -487,8 +489,8 @@ struct smu_sdbp_slotspow { | |||
487 | #define SMU_SDB_SENSORTREE_ID 0x25 | 489 | #define SMU_SDB_SENSORTREE_ID 0x25 |
488 | 490 | ||
489 | struct smu_sdbp_sensortree { | 491 | struct smu_sdbp_sensortree { |
490 | u8 model_id; | 492 | __u8 model_id; |
491 | u8 unknown[3]; | 493 | __u8 unknown[3]; |
492 | }; | 494 | }; |
493 | 495 | ||
494 | /* This partition contains CPU thermal control PID informations. So far | 496 | /* This partition contains CPU thermal control PID informations. So far |
@@ -498,13 +500,13 @@ struct smu_sdbp_sensortree { | |||
498 | #define SMU_SDB_CPUPIDDATA_ID 0x17 | 500 | #define SMU_SDB_CPUPIDDATA_ID 0x17 |
499 | 501 | ||
500 | struct smu_sdbp_cpupiddata { | 502 | struct smu_sdbp_cpupiddata { |
501 | u8 unknown1; | 503 | __u8 unknown1; |
502 | u8 target_temp_delta; | 504 | __u8 target_temp_delta; |
503 | u8 unknown2; | 505 | __u8 unknown2; |
504 | u8 history_len; | 506 | __u8 history_len; |
505 | s16 power_adj; | 507 | __s16 power_adj; |
506 | u16 max_power; | 508 | __u16 max_power; |
507 | s32 gp,gr,gd; | 509 | __s32 gp,gr,gd; |
508 | }; | 510 | }; |
509 | 511 | ||
510 | 512 | ||
@@ -517,7 +519,7 @@ struct smu_sdbp_cpupiddata { | |||
517 | * if not found. The data format is described below | 519 | * if not found. The data format is described below |
518 | */ | 520 | */ |
519 | extern struct smu_sdbp_header *smu_get_sdb_partition(int id, | 521 | extern struct smu_sdbp_header *smu_get_sdb_partition(int id, |
520 | unsigned int *size); | 522 | unsigned int *size); |
521 | 523 | ||
522 | #endif /* __KERNEL__ */ | 524 | #endif /* __KERNEL__ */ |
523 | 525 | ||
@@ -554,7 +556,7 @@ struct smu_user_cmd_hdr | |||
554 | __u32 cmdtype; | 556 | __u32 cmdtype; |
555 | #define SMU_CMDTYPE_SMU 0 /* SMU command */ | 557 | #define SMU_CMDTYPE_SMU 0 /* SMU command */ |
556 | #define SMU_CMDTYPE_WANTS_EVENTS 1 /* switch fd to events mode */ | 558 | #define SMU_CMDTYPE_WANTS_EVENTS 1 /* switch fd to events mode */ |
557 | #define SMU_CMDTYPE_GET_PARTITION 2 /* retreive an sdb partition */ | 559 | #define SMU_CMDTYPE_GET_PARTITION 2 /* retrieve an sdb partition */ |
558 | 560 | ||
559 | __u8 cmd; /* SMU command byte */ | 561 | __u8 cmd; /* SMU command byte */ |
560 | __u8 pad[3]; /* padding */ | 562 | __u8 pad[3]; /* padding */ |