Skip to content

Commit 520d4a0

Browse files
niyas-saitrafaeljw
authored andcommitted
ACPICA: add support for ClockInput resource (v6.5)
ACPICA commit 661feab5ee01a34af95a389a18c82e79f1aba05a Link: acpica/acpica@661feab5 Signed-off-by: Bob Moore <robert.moore@intel.com> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
1 parent 612c293 commit 520d4a0

File tree

11 files changed

+137
-2
lines changed

11 files changed

+137
-2
lines changed

drivers/acpi/acpica/aclocal.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1122,7 +1122,8 @@ struct acpi_port_info {
11221122
#define ACPI_RESOURCE_NAME_PIN_GROUP 0x90
11231123
#define ACPI_RESOURCE_NAME_PIN_GROUP_FUNCTION 0x91
11241124
#define ACPI_RESOURCE_NAME_PIN_GROUP_CONFIG 0x92
1125-
#define ACPI_RESOURCE_NAME_LARGE_MAX 0x92
1125+
#define ACPI_RESOURCE_NAME_CLOCK_INPUT 0x93
1126+
#define ACPI_RESOURCE_NAME_LARGE_MAX 0x94
11261127

11271128
/*****************************************************************************
11281129
*

drivers/acpi/acpica/acresrc.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -306,6 +306,7 @@ extern struct acpi_rsconvert_info acpi_rs_convert_pin_config[];
306306
extern struct acpi_rsconvert_info acpi_rs_convert_pin_group[];
307307
extern struct acpi_rsconvert_info acpi_rs_convert_pin_group_function[];
308308
extern struct acpi_rsconvert_info acpi_rs_convert_pin_group_config[];
309+
extern struct acpi_rsconvert_info acpi_rs_convert_clock_input[];
309310

310311
/* These resources require separate get/set tables */
311312

@@ -361,6 +362,7 @@ extern struct acpi_rsdump_info acpi_rs_dump_pin_config[];
361362
extern struct acpi_rsdump_info acpi_rs_dump_pin_group[];
362363
extern struct acpi_rsdump_info acpi_rs_dump_pin_group_function[];
363364
extern struct acpi_rsdump_info acpi_rs_dump_pin_group_config[];
365+
extern struct acpi_rsdump_info acpi_rs_dump_clock_input[];
364366
#endif
365367

366368
#endif /* __ACRESRC_H__ */

drivers/acpi/acpica/acutils.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,8 @@ extern const char *acpi_gbl_sb_decode[];
5353
extern const char *acpi_gbl_fc_decode[];
5454
extern const char *acpi_gbl_pt_decode[];
5555
extern const char *acpi_gbl_ptyp_decode[];
56+
extern const char *acpi_gbl_clock_input_mode[];
57+
extern const char *acpi_gbl_clock_input_scale[];
5658
#endif
5759

5860
/*

drivers/acpi/acpica/amlresrc.h

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,8 @@
7070
#define ACPI_RESTAG_TYPE "_TTP" /* Translation(1), Static (0) */
7171
#define ACPI_RESTAG_XFERTYPE "_SIZ" /* 8(0), 8And16(1), 16(2) */
7272
#define ACPI_RESTAG_VENDORDATA "_VEN"
73+
#define ACPI_RESTAG_FQN "_FQN"
74+
#define ACPI_RESTAG_FQD "_FQD"
7375

7476
/* Default sizes for "small" resource descriptors */
7577

@@ -427,6 +429,20 @@ struct aml_resource_pin_config {
427429
*/
428430
};
429431

432+
#define AML_RESOURCE_CLOCK_INPUT_REVISION 1 /* ACPI 6.5 */
433+
434+
struct aml_resource_clock_input {
435+
AML_RESOURCE_LARGE_HEADER_COMMON u8 revision_id;
436+
u16 flags;
437+
u16 frequency_divisor;
438+
u32 frequency_numerator;
439+
/*
440+
* Optional fields follow immediately:
441+
* 1) Resource Source index
442+
* 2) Resource Source String
443+
*/
444+
};
445+
430446
#define AML_RESOURCE_PIN_CONFIG_REVISION 1 /* ACPI 6.2 */
431447

432448
struct aml_resource_pin_group {
@@ -533,6 +549,7 @@ union aml_resource {
533549
struct aml_resource_pin_group pin_group;
534550
struct aml_resource_pin_group_function pin_group_function;
535551
struct aml_resource_pin_group_config pin_group_config;
552+
struct aml_resource_clock_input clock_input;
536553

537554
/* Utility overlays */
538555

drivers/acpi/acpica/rscalc.c

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -320,6 +320,16 @@ acpi_rs_get_aml_length(struct acpi_resource *resource,
320320

321321
break;
322322

323+
case ACPI_RESOURCE_TYPE_CLOCK_INPUT:
324+
325+
total_size = (acpi_rs_length)(total_size +
326+
resource->data.
327+
clock_input.
328+
resource_source.
329+
string_length);
330+
331+
break;
332+
323333
case ACPI_RESOURCE_TYPE_SERIAL_BUS:
324334

325335
total_size =
@@ -650,6 +660,13 @@ acpi_rs_get_list_length(u8 *aml_buffer,
650660

651661
break;
652662

663+
case ACPI_RESOURCE_NAME_CLOCK_INPUT:
664+
extra_struct_bytes =
665+
acpi_rs_stream_option_length(resource_length,
666+
minimum_aml_resource_length);
667+
668+
break;
669+
653670
default:
654671

655672
break;

drivers/acpi/acpica/rsdumpinfo.c

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -301,6 +301,23 @@ struct acpi_rsdump_info acpi_rs_dump_pin_function[10] = {
301301
"VendorData", NULL},
302302
};
303303

304+
struct acpi_rsdump_info acpi_rs_dump_clock_input[7] = {
305+
{ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_clock_input),
306+
"ClockInput", NULL},
307+
{ACPI_RSD_UINT8, ACPI_RSD_OFFSET(clock_input.revision_id), "RevisionId",
308+
NULL},
309+
{ACPI_RSD_UINT32, ACPI_RSD_OFFSET(clock_input.frequency_numerator),
310+
"FrequencyNumerator", NULL},
311+
{ACPI_RSD_UINT32, ACPI_RSD_OFFSET(clock_input.frequency_divisor),
312+
"FrequencyDivisor", NULL},
313+
{ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(clock_input.scale), "Scale",
314+
acpi_gbl_clock_input_scale},
315+
{ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(clock_input.mode), "Mode",
316+
acpi_gbl_clock_input_mode},
317+
{ACPI_RSD_SOURCE, ACPI_RSD_OFFSET(clock_input.resource_source),
318+
"ResourceSource", NULL},
319+
};
320+
304321
struct acpi_rsdump_info acpi_rs_dump_pin_config[11] = {
305322
{ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_pin_config),
306323
"PinConfig", NULL},

drivers/acpi/acpica/rsinfo.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ struct acpi_rsconvert_info *acpi_gbl_set_resource_dispatch[] = {
4949
acpi_rs_convert_pin_group, /* 0x16, ACPI_RESOURCE_TYPE_PIN_GROUP */
5050
acpi_rs_convert_pin_group_function, /* 0x17, ACPI_RESOURCE_TYPE_PIN_GROUP_FUNCTION */
5151
acpi_rs_convert_pin_group_config, /* 0x18, ACPI_RESOURCE_TYPE_PIN_GROUP_CONFIG */
52+
acpi_rs_convert_clock_input, /* 0x19, ACPI_RESOURCE_TYPE_CLOCK_INPUT */
5253
};
5354

5455
/* Dispatch tables for AML-to-resource (Get Resource) conversion functions */
@@ -94,6 +95,7 @@ struct acpi_rsconvert_info *acpi_gbl_get_resource_dispatch[] = {
9495
acpi_rs_convert_pin_group, /* 0x10, ACPI_RESOURCE_NAME_PIN_GROUP */
9596
acpi_rs_convert_pin_group_function, /* 0x11, ACPI_RESOURCE_NAME_PIN_GROUP_FUNCTION */
9697
acpi_rs_convert_pin_group_config, /* 0x12, ACPI_RESOURCE_NAME_PIN_GROUP_CONFIG */
98+
acpi_rs_convert_clock_input, /* 0x13, ACPI_RESOURCE_NAME_CLOCK_INPUT */
9799
};
98100

99101
/* Subtype table for serial_bus -- I2C, SPI, UART, and CSI2 */
@@ -136,6 +138,7 @@ struct acpi_rsdump_info *acpi_gbl_dump_resource_dispatch[] = {
136138
acpi_rs_dump_pin_group, /* ACPI_RESOURCE_TYPE_PIN_GROUP */
137139
acpi_rs_dump_pin_group_function, /* ACPI_RESOURCE_TYPE_PIN_GROUP_FUNCTION */
138140
acpi_rs_dump_pin_group_config, /* ACPI_RESOURCE_TYPE_PIN_GROUP_CONFIG */
141+
acpi_rs_dump_clock_input, /* ACPI_RESOURCE_TYPE_CLOCK_INPUT */
139142
};
140143

141144
struct acpi_rsdump_info *acpi_gbl_dump_serial_bus_dispatch[] = {
@@ -178,6 +181,7 @@ const u8 acpi_gbl_aml_resource_sizes[] = {
178181
sizeof(struct aml_resource_pin_group), /* ACPI_RESOURCE_TYPE_PIN_GROUP */
179182
sizeof(struct aml_resource_pin_group_function), /* ACPI_RESOURCE_TYPE_PIN_GROUP_FUNCTION */
180183
sizeof(struct aml_resource_pin_group_config), /* ACPI_RESOURCE_TYPE_PIN_GROUP_CONFIG */
184+
sizeof(struct aml_resource_clock_input), /* ACPI_RESOURCE_TYPE_CLOCK_INPUT */
181185
};
182186

183187
const u8 acpi_gbl_resource_struct_sizes[] = {
@@ -221,6 +225,7 @@ const u8 acpi_gbl_resource_struct_sizes[] = {
221225
ACPI_RS_SIZE(struct acpi_resource_pin_group),
222226
ACPI_RS_SIZE(struct acpi_resource_pin_group_function),
223227
ACPI_RS_SIZE(struct acpi_resource_pin_group_config),
228+
ACPI_RS_SIZE(struct acpi_resource_clock_input),
224229
};
225230

226231
const u8 acpi_gbl_aml_resource_serial_bus_sizes[] = {

drivers/acpi/acpica/rsserial.c

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,55 @@ struct acpi_rsconvert_info acpi_rs_convert_gpio[18] = {
109109
0},
110110
};
111111

112+
/*******************************************************************************
113+
*
114+
* acpi_rs_convert_clock_input
115+
*
116+
******************************************************************************/
117+
118+
struct acpi_rsconvert_info acpi_rs_convert_clock_input[8] = {
119+
{ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_CLOCK_INPUT,
120+
ACPI_RS_SIZE(struct acpi_resource_clock_input),
121+
ACPI_RSC_TABLE_SIZE(acpi_rs_convert_clock_input)},
122+
123+
{ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_CLOCK_INPUT,
124+
sizeof(struct aml_resource_clock_input),
125+
0}
126+
,
127+
128+
{ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.clock_input.revision_id),
129+
AML_OFFSET(clock_input.revision_id),
130+
1}
131+
,
132+
133+
{ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.clock_input.mode),
134+
AML_OFFSET(clock_input.flags),
135+
0}
136+
,
137+
138+
{ACPI_RSC_2BITFLAG, ACPI_RS_OFFSET(data.clock_input.scale),
139+
AML_OFFSET(clock_input.flags),
140+
1}
141+
,
142+
143+
{ACPI_RSC_MOVE16, ACPI_RS_OFFSET(data.clock_input.frequency_divisor),
144+
AML_OFFSET(clock_input.frequency_divisor),
145+
2}
146+
,
147+
148+
{ACPI_RSC_MOVE32, ACPI_RS_OFFSET(data.clock_input.frequency_numerator),
149+
AML_OFFSET(clock_input.frequency_numerator),
150+
4}
151+
,
152+
153+
/* Resource Source */
154+
{ACPI_RSC_SOURCE, ACPI_RS_OFFSET(data.clock_input.resource_source),
155+
0,
156+
sizeof(struct aml_resource_clock_input)}
157+
,
158+
159+
};
160+
112161
/*******************************************************************************
113162
*
114163
* acpi_rs_convert_pinfunction

drivers/acpi/acpica/utresdecode.c

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -284,4 +284,15 @@ const char *acpi_gbl_ptyp_decode[] = {
284284
"Input Schmitt Trigger",
285285
};
286286

287+
const char *acpi_gbl_clock_input_mode[] = {
288+
"Fixed",
289+
"Variable",
290+
};
291+
292+
const char *acpi_gbl_clock_input_scale[] = {
293+
"Hz",
294+
"KHz",
295+
"MHz",
296+
};
297+
287298
#endif

drivers/acpi/acpica/utresrc.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,8 @@ const u8 acpi_gbl_resource_aml_sizes[] = {
5757
ACPI_AML_SIZE_LARGE(struct aml_resource_pin_group),
5858
ACPI_AML_SIZE_LARGE(struct aml_resource_pin_group_function),
5959
ACPI_AML_SIZE_LARGE(struct aml_resource_pin_group_config),
60+
ACPI_AML_SIZE_LARGE(struct aml_resource_clock_input),
61+
6062
};
6163

6264
const u8 acpi_gbl_resource_aml_serial_bus_sizes[] = {
@@ -114,6 +116,7 @@ static const u8 acpi_gbl_resource_types[] = {
114116
ACPI_VARIABLE_LENGTH, /* 10 pin_group */
115117
ACPI_VARIABLE_LENGTH, /* 11 pin_group_function */
116118
ACPI_VARIABLE_LENGTH, /* 12 pin_group_config */
119+
ACPI_VARIABLE_LENGTH, /* 13 clock_input */
117120
};
118121

119122
/*******************************************************************************

include/acpi/acrestyp.h

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -536,6 +536,15 @@ struct acpi_resource_pin_config {
536536
u8 *vendor_data;
537537
};
538538

539+
struct acpi_resource_clock_input {
540+
u8 revision_id;
541+
u8 mode;
542+
u8 scale;
543+
u16 frequency_divisor;
544+
u32 frequency_numerator;
545+
struct acpi_resource_source resource_source;
546+
};
547+
539548
/* Values for pin_config_type field above */
540549

541550
#define ACPI_PIN_CONFIG_DEFAULT 0
@@ -613,7 +622,8 @@ struct acpi_resource_pin_group_config {
613622
#define ACPI_RESOURCE_TYPE_PIN_GROUP 22 /* ACPI 6.2 */
614623
#define ACPI_RESOURCE_TYPE_PIN_GROUP_FUNCTION 23 /* ACPI 6.2 */
615624
#define ACPI_RESOURCE_TYPE_PIN_GROUP_CONFIG 24 /* ACPI 6.2 */
616-
#define ACPI_RESOURCE_TYPE_MAX 24
625+
#define ACPI_RESOURCE_TYPE_CLOCK_INPUT 25 /* ACPI 6.5 */
626+
#define ACPI_RESOURCE_TYPE_MAX 25
617627

618628
/* Master union for resource descriptors */
619629

@@ -647,6 +657,7 @@ union acpi_resource_data {
647657
struct acpi_resource_pin_group pin_group;
648658
struct acpi_resource_pin_group_function pin_group_function;
649659
struct acpi_resource_pin_group_config pin_group_config;
660+
struct acpi_resource_clock_input clock_input;
650661

651662
/* Common fields */
652663

0 commit comments

Comments
 (0)