linux/drivers/gpu/drm/amd/display/include/logger_types.h
<<
>>
Prefs
   1/*
   2 * Copyright 2012-15 Advanced Micro Devices, Inc.
   3 *
   4 * Permission is hereby granted, free of charge, to any person obtaining a
   5 * copy of this software and associated documentation files (the "Software"),
   6 * to deal in the Software without restriction, including without limitation
   7 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
   8 * and/or sell copies of the Software, and to permit persons to whom the
   9 * Software is furnished to do so, subject to the following conditions:
  10 *
  11 * The above copyright notice and this permission notice shall be included in
  12 * all copies or substantial portions of the Software.
  13 *
  14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
  17 * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
  18 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
  19 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
  20 * OTHER DEALINGS IN THE SOFTWARE.
  21 *
  22 * Authors: AMD
  23 *
  24 */
  25
  26#ifndef __DAL_LOGGER_TYPES_H__
  27#define __DAL_LOGGER_TYPES_H__
  28
  29#include "os_types.h"
  30
  31#define MAX_NAME_LEN 32
  32#define DC_LOG_ERROR(a, ...) dm_logger_write(DC_LOGGER, LOG_ERROR, a, ## __VA_ARGS__)
  33#define DC_LOG_WARNING(a, ...) dm_logger_write(DC_LOGGER, LOG_WARNING, a, ## __VA_ARGS__)
  34#define DC_LOG_DEBUG(a, ...) dm_logger_write(DC_LOGGER, LOG_DEBUG, a, ## __VA_ARGS__)
  35#define DC_LOG_DC(a, ...) dm_logger_write(DC_LOGGER, LOG_DC, a, ## __VA_ARGS__)
  36#define DC_LOG_DTN(a, ...) dm_logger_write(DC_LOGGER, LOG_DTN, a, ## __VA_ARGS__)
  37#define DC_LOG_SURFACE(a, ...) dm_logger_write(DC_LOGGER, LOG_SURFACE, a, ## __VA_ARGS__)
  38#define DC_LOG_HW_HOTPLUG(a, ...) dm_logger_write(DC_LOGGER, LOG_HW_HOTPLUG, a, ## __VA_ARGS__)
  39#define DC_LOG_HW_LINK_TRAINING(a, ...) dm_logger_write(DC_LOGGER, LOG_HW_LINK_TRAINING, a, ## __VA_ARGS__)
  40#define DC_LOG_HW_SET_MODE(a, ...) dm_logger_write(DC_LOGGER, LOG_HW_SET_MODE, a, ## __VA_ARGS__)
  41#define DC_LOG_HW_RESUME_S3(a, ...) dm_logger_write(DC_LOGGER, LOG_HW_RESUME_S3, a, ## __VA_ARGS__)
  42#define DC_LOG_HW_AUDIO(a, ...) dm_logger_write(DC_LOGGER, LOG_HW_AUDIO, a, ## __VA_ARGS__)
  43#define DC_LOG_HW_HPD_IRQ(a, ...) dm_logger_write(DC_LOGGER, LOG_HW_HPD_IRQ, a, ## __VA_ARGS__)
  44#define DC_LOG_MST(a, ...) dm_logger_write(DC_LOGGER, LOG_MST, a, ## __VA_ARGS__)
  45#define DC_LOG_SCALER(a, ...) dm_logger_write(DC_LOGGER, LOG_SCALER, a, ## __VA_ARGS__)
  46#define DC_LOG_BIOS(a, ...) dm_logger_write(DC_LOGGER, LOG_BIOS, a, ## __VA_ARGS__)
  47#define DC_LOG_BANDWIDTH_CALCS(a, ...) dm_logger_write(DC_LOGGER, LOG_BANDWIDTH_CALCS, a, ## __VA_ARGS__)
  48#define DC_LOG_BANDWIDTH_VALIDATION(a, ...) dm_logger_write(DC_LOGGER, LOG_BANDWIDTH_VALIDATION, a, ## __VA_ARGS__)
  49#define DC_LOG_I2C_AUX(a, ...) dm_logger_write(DC_LOGGER, LOG_I2C_AUX, a, ## __VA_ARGS__)
  50#define DC_LOG_SYNC(a, ...) dm_logger_write(DC_LOGGER, LOG_SYNC, a, ## __VA_ARGS__)
  51#define DC_LOG_BACKLIGHT(a, ...) dm_logger_write(DC_LOGGER, LOG_BACKLIGHT, a, ## __VA_ARGS__)
  52#define DC_LOG_FEATURE_OVERRIDE(a, ...) dm_logger_write(DC_LOGGER, LOG_FEATURE_OVERRIDE, a, ## __VA_ARGS__)
  53#define DC_LOG_DETECTION_EDID_PARSER(a, ...) dm_logger_write(DC_LOGGER, LOG_DETECTION_EDID_PARSER, a, ## __VA_ARGS__)
  54#define DC_LOG_DETECTION_DP_CAPS(a, ...) dm_logger_write(DC_LOGGER, LOG_DETECTION_DP_CAPS, a, ## __VA_ARGS__)
  55#define DC_LOG_RESOURCE(a, ...) dm_logger_write(DC_LOGGER, LOG_RESOURCE, a, ## __VA_ARGS__)
  56#define DC_LOG_DML(a, ...) dm_logger_write(DC_LOGGER, LOG_DML, a, ## __VA_ARGS__)
  57#define DC_LOG_EVENT_MODE_SET(a, ...) dm_logger_write(DC_LOGGER, LOG_EVENT_MODE_SET, a, ## __VA_ARGS__)
  58#define DC_LOG_EVENT_DETECTION(a, ...) dm_logger_write(DC_LOGGER, LOG_EVENT_DETECTION, a, ## __VA_ARGS__)
  59#define DC_LOG_EVENT_LINK_TRAINING(a, ...) dm_logger_write(DC_LOGGER, LOG_EVENT_LINK_TRAINING, a, ## __VA_ARGS__)
  60#define DC_LOG_EVENT_LINK_LOSS(a, ...) dm_logger_write(DC_LOGGER, LOG_EVENT_LINK_LOSS, a, ## __VA_ARGS__)
  61#define DC_LOG_EVENT_UNDERFLOW(a, ...) dm_logger_write(DC_LOGGER, LOG_EVENT_UNDERFLOW, a, ## __VA_ARGS__)
  62#define DC_LOG_IF_TRACE(a, ...) dm_logger_write(DC_LOGGER, LOG_IF_TRACE, a, ## __VA_ARGS__)
  63#define DC_LOG_PERF_TRACE(a, ...) dm_logger_write(DC_LOGGER, LOG_PERF_TRACE, a, ## __VA_ARGS__)
  64
  65
  66struct dal_logger;
  67
  68enum dc_log_type {
  69        LOG_ERROR = 0,
  70        LOG_WARNING,
  71        LOG_DEBUG,
  72        LOG_DC,
  73        LOG_DTN,
  74        LOG_SURFACE,
  75        LOG_HW_HOTPLUG,
  76        LOG_HW_LINK_TRAINING,
  77        LOG_HW_SET_MODE,
  78        LOG_HW_RESUME_S3,
  79        LOG_HW_AUDIO,
  80        LOG_HW_HPD_IRQ,
  81        LOG_MST,
  82        LOG_SCALER,
  83        LOG_BIOS,
  84        LOG_BANDWIDTH_CALCS,
  85        LOG_BANDWIDTH_VALIDATION,
  86        LOG_I2C_AUX,
  87        LOG_SYNC,
  88        LOG_BACKLIGHT,
  89        LOG_FEATURE_OVERRIDE,
  90        LOG_DETECTION_EDID_PARSER,
  91        LOG_DETECTION_DP_CAPS,
  92        LOG_RESOURCE,
  93        LOG_DML,
  94        LOG_EVENT_MODE_SET,
  95        LOG_EVENT_DETECTION,
  96        LOG_EVENT_LINK_TRAINING,
  97        LOG_EVENT_LINK_LOSS,
  98        LOG_EVENT_UNDERFLOW,
  99        LOG_IF_TRACE,
 100        LOG_PERF_TRACE,
 101        LOG_PROFILING,
 102
 103        LOG_SECTION_TOTAL_COUNT
 104};
 105
 106#define DC_MIN_LOG_MASK ((1 << LOG_ERROR) | \
 107                (1 << LOG_DETECTION_EDID_PARSER))
 108
 109#define DC_DEFAULT_LOG_MASK ((1 << LOG_ERROR) | \
 110                (1 << LOG_WARNING) | \
 111                (1 << LOG_EVENT_MODE_SET) | \
 112                (1 << LOG_EVENT_DETECTION) | \
 113                (1 << LOG_EVENT_LINK_TRAINING) | \
 114                (1 << LOG_EVENT_LINK_LOSS) | \
 115                (1 << LOG_EVENT_UNDERFLOW) | \
 116                (1 << LOG_RESOURCE) | \
 117                (1 << LOG_FEATURE_OVERRIDE) | \
 118                (1 << LOG_DETECTION_EDID_PARSER) | \
 119                (1 << LOG_DC) | \
 120                (1 << LOG_HW_HOTPLUG) | \
 121                (1 << LOG_HW_SET_MODE) | \
 122                (1 << LOG_HW_RESUME_S3) | \
 123                (1 << LOG_HW_HPD_IRQ) | \
 124                (1 << LOG_SYNC) | \
 125                (1 << LOG_BANDWIDTH_VALIDATION) | \
 126                (1 << LOG_MST) | \
 127                (1 << LOG_DETECTION_DP_CAPS) | \
 128                (1 << LOG_BACKLIGHT)) | \
 129                (1 << LOG_I2C_AUX) | \
 130                (1 << LOG_IF_TRACE) | \
 131                (1 << LOG_DTN) /* | \
 132                (1 << LOG_DEBUG) | \
 133                (1 << LOG_BIOS) | \
 134                (1 << LOG_SURFACE) | \
 135                (1 << LOG_SCALER) | \
 136                (1 << LOG_DML) | \
 137                (1 << LOG_HW_LINK_TRAINING) | \
 138                (1 << LOG_HW_AUDIO)| \
 139                (1 << LOG_BANDWIDTH_CALCS)*/
 140
 141union logger_flags {
 142        struct {
 143                uint32_t ENABLE_CONSOLE:1; /* Print to console */
 144                uint32_t ENABLE_BUFFER:1; /* Print to buffer */
 145                uint32_t RESERVED:30;
 146        } bits;
 147        uint32_t value;
 148};
 149
 150struct log_entry {
 151        struct dal_logger *logger;
 152        enum dc_log_type type;
 153
 154        char *buf;
 155        uint32_t buf_offset;
 156        uint32_t max_buf_bytes;
 157};
 158
 159/**
 160* Structure for enumerating log types
 161*/
 162struct dc_log_type_info {
 163        enum dc_log_type type;
 164        char name[MAX_NAME_LEN];
 165};
 166
 167/* Structure for keeping track of offsets, buffer, etc */
 168
 169#define DAL_LOGGER_BUFFER_MAX_SIZE 2048
 170
 171/*Connectivity log needs to output EDID, which needs at lease 256x3 bytes,
 172 * change log line size to 896 to meet the request.
 173 */
 174#define LOG_MAX_LINE_SIZE 896
 175
 176struct dal_logger {
 177
 178        /* How far into the circular buffer has been read by dsat
 179         * Read offset should never cross write offset. Write \0's to
 180         * read data just to be sure?
 181         */
 182        uint32_t buffer_read_offset;
 183
 184        /* How far into the circular buffer we have written
 185         * Write offset should never cross read offset
 186         */
 187        uint32_t buffer_write_offset;
 188
 189        uint32_t open_count;
 190
 191        char *log_buffer;       /* Pointer to malloc'ed buffer */
 192        uint32_t log_buffer_size; /* Size of circular buffer */
 193
 194        uint32_t mask; /*array of masks for major elements*/
 195
 196        union logger_flags flags;
 197        struct dc_context *ctx;
 198};
 199
 200#endif /* __DAL_LOGGER_TYPES_H__ */
 201