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 */ |
