ssize_t gpu_busy_show(struct device *dev, struct device_attribute *attr, char *buf) { char time_consumed_str[INPUT_BUFFER_SIZE_32] = {0}; char time_elapsed_str[INPUT_BUFFER_SIZE_32] = {0}; unsigned int time_consumed = 0; unsigned int time_elapsed = 0; char input_buffer[INPUT_BUFFER_SIZE_32]; int status = 0; status = open_file_and_read_buffer(GPU_MAX_CLOCK, input_buffer, INPUT_BUFFER_SIZE_32); if (status != SRUK_TRUE) { return sprintf(buf, "-1"); } /* ************************************ */ /* Parse input to find utilization ratio. * This is target specific. * kgsl drive outputs utilzation in terms of * elapsed time using "%7d %7d" * */ /* ************************************ */ strncpy(time_consumed_str, input_buffer, 7); strncpy(time_elapsed_str, input_buffer+8, 7); time_consumed = atoi_ignore_space(time_consumed_str); time_elapsed = atoi_ignore_space(time_elapsed_str); return sprintf(buf, "%d\n", ((time_consumed*100)/time_elapsed)); }
ssize_t gpu_version_show(struct device *dev, struct device_attribute *attr, char *buf) { char version_major_str[INPUT_BUFFER_SIZE_16] = {0}; char version_minor_str[INPUT_BUFFER_SIZE_16] = {0}; unsigned int version_major = 0, version_minor = 0; char input_buffer[INPUT_BUFFER_SIZE_128]; int status = 0; status = open_file_and_read_buffer(GPU_VERSION, input_buffer, INPUT_BUFFER_SIZE_128); if (status != SRUK_TRUE) { return sprintf(buf, "-1"); } /* ************************************ */ /* Parse input to find gpu version. * This is target specific. * The driver gives information in following * format: * MAJOR=242 * MINOR=0 * DEVNAME=kgsl-3d0 * */ /* ************************************ */ strncpy(version_major_str, input_buffer+6, 5); strncpy(version_minor_str, input_buffer+17, 5); version_major = atoi_ignore_space(version_major_str); version_minor = atoi_ignore_space(version_minor_str); return sprintf(buf, "%d.%d\n", version_major, version_minor); }
ssize_t gpu_max_clock_show(struct device *dev, struct device_attribute *attr, char *buf) { char input_buffer[INPUT_BUFFER_SIZE_32]; int status = 0; status = open_file_and_read_buffer(GPU_MAX_CLOCK, input_buffer, INPUT_BUFFER_SIZE_32); if (status == SRUK_TRUE) { return sprintf(buf, "%s", input_buffer); } else { return sprintf(buf, "-1"); } }
ssize_t gpu_available_governor_show(struct device *dev, struct device_attribute *attr, char *buf) { char input_buffer[INPUT_BUFFER_SIZE_256]; int status = 0; status = open_file_and_read_buffer(GPU_AVAIL_GOVERNOR, input_buffer, INPUT_BUFFER_SIZE_256); if (status == SRUK_TRUE) { return sprintf(buf, "%s", input_buffer); } else { return sprintf(buf, "-1"); } }
ssize_t gpu_freq_table_show(struct device *dev, struct device_attribute *attr, char *buf) { char input_buffer[INPUT_BUFFER_SIZE_128]; int status = 0; status = open_file_and_read_buffer(GPU_FREQ_TABLE, input_buffer, INPUT_BUFFER_SIZE_128); if (status == SRUK_TRUE) { return sprintf(buf, "%s", input_buffer); } else { return sprintf(buf, "-1"); } }
ssize_t gpu_model_show(struct device *dev, struct device_attribute *attr, char *buf) { char input_buffer[INPUT_BUFFER_SIZE_128]; int status = 0; char *parse_pointer = input_buffer; int char_counter = 0, equal_char_counter = 0; status = open_file_and_read_buffer(GPU_VERSION, input_buffer, INPUT_BUFFER_SIZE_128); if (status != SRUK_TRUE) { return sprintf(buf, "-1"); } /* ************************************ */ /* Parse input to find gpu version. * This is target specific. * The driver gives information in following * format: * MAJOR=242 * MINOR=0 * DEVNAME=kgsl-3d0 * */ /* ************************************ */ while (*parse_pointer != '\0') { /* Look for '='. */ if (*parse_pointer == '=') { equal_char_counter++; } /* */ parse_pointer++; char_counter++; if (equal_char_counter == 3) { break; } } /* Copy the model string to the output string.*/ return sprintf(buf, "%s\n", input_buffer+char_counter); }