// SPDX-License-Identifier: GPL-2.0
/*
 * Copyright (C) 2018 Etnaviv Project
 */

#include "etnaviv_gpu.h"

static const struct etnaviv_chip_identity etnaviv_chip_identities[] = {
	{
		.model = 0x400,
		.revision = 0x4652,
		.product_id = 0x70001,
		.customer_id = 0x100,
		.eco_id = 0,
		.stream_count = 4,
		.register_max = 64,
		.thread_count = 128,
		.shader_core_count = 1,
		.nn_core_count = 0,
		.nn_mad_per_core = 0,
		.tp_core_count = 0,
		.on_chip_sram_size = 0,
		.axi_sram_size = 0,
		.vertex_cache_size = 8,
		.vertex_output_buffer_size = 1024,
		.pixel_pipes = 1,
		.instruction_count = 256,
		.num_constants = 320,
		.buffer_size = 0,
		.varyings_count = 8,
		.features = 0xa0e9e004,
		.minor_features0 = 0xe1299fff,
		.minor_features1 = 0xbe13b219,
		.minor_features2 = 0xce110010,
		.minor_features3 = 0x8000001,
		.minor_features4 = 0x20102,
		.minor_features5 = 0x120000,
		.minor_features6 = 0x0,
		.minor_features7 = 0x0,
		.minor_features8 = 0x0,
		.minor_features9 = 0x0,
		.minor_features10 = 0x0,
		.minor_features11 = 0x0,
	},
	{
		.model = 0x520,
		.revision = 0x5341,
		.product_id = 0x5202,
		.customer_id = 0x204,
		.eco_id = 0,
		.stream_count = 1,
		.register_max = 64,
		.thread_count = 256,
		.shader_core_count = 1,
		.nn_core_count = 0,
		.nn_mad_per_core = 0,
		.tp_core_count = 0,
		.on_chip_sram_size = 0,
		.axi_sram_size = 0,
		.vertex_cache_size = 8,
		.vertex_output_buffer_size = 512,
		.pixel_pipes = 1,
		.instruction_count = 256,
		.num_constants = 168,
		.buffer_size = 0,
		.varyings_count = 8,
		.features = 0xe02c7eca,
		.minor_features0 = 0xe9399eff,
		.minor_features1 = 0xfe1fb2db,
		.minor_features2 = 0xcedf0080,
		.minor_features3 = 0x10800005,
		.minor_features4 = 0x20000000,
		.minor_features5 = 0x00020880,
		.minor_features6 = 0x00000000,
		.minor_features7 = 0x00001000,
		.minor_features8 = 0x00000000,
		.minor_features9 = 0x00000000,
		.minor_features10 = 0x00000000,
		.minor_features11 = 0x00000000,
	},
	{
		.model = 0x7000,
		.revision = 0x6202,
		.product_id = 0x70003,
		.customer_id = 0,
		.eco_id = 0,
		.stream_count = 8,
		.register_max = 64,
		.thread_count = 512,
		.shader_core_count = 2,
		.nn_core_count = 0,
		.nn_mad_per_core = 0,
		.tp_core_count = 0,
		.on_chip_sram_size = 0,
		.axi_sram_size = 0,
		.vertex_cache_size = 16,
		.vertex_output_buffer_size = 1024,
		.pixel_pipes = 1,
		.instruction_count = 512,
		.num_constants = 320,
		.buffer_size = 0,
		.varyings_count = 16,
		.features = 0xe0287cad,
		.minor_features0 = 0xc1489eff,
		.minor_features1 = 0xfefbfad9,
		.minor_features2 = 0xeb9d4fbf,
		.minor_features3 = 0xedfffced,
		.minor_features4 = 0xdb0dafc7,
		.minor_features5 = 0x3b5ac333,
		.minor_features6 = 0xfccee201,
		.minor_features7 = 0x03fffa6f,
		.minor_features8 = 0x00e10ef0,
		.minor_features9 = 0x0088003c,
		.minor_features10 = 0x00004040,
		.minor_features11 = 0x00000024,
	},
	{
		.model = 0x7000,
		.revision = 0x6203,
		.product_id = 0x70003,
		.customer_id = 0x4,
		.eco_id = 0,
		.stream_count = 16,
		.register_max = 64,
		.thread_count = 512,
		.shader_core_count = 2,
		.nn_core_count = 0,
		.nn_mad_per_core = 0,
		.tp_core_count = 0,
		.on_chip_sram_size = 0,
		.axi_sram_size = 0,
		.vertex_cache_size = 16,
		.vertex_output_buffer_size = 1024,
		.pixel_pipes = 1,
		.instruction_count = 512,
		.num_constants = 320,
		.buffer_size = 0,
		.varyings_count = 16,
		.features = 0xe0287c8d,
		.minor_features0 = 0xc1589eff,
		.minor_features1 = 0xfefbfad9,
		.minor_features2 = 0xeb9d4fbf,
		.minor_features3 = 0xedfffced,
		.minor_features4 = 0xdb0dafc7,
		.minor_features5 = 0x3b5ac333,
		.minor_features6 = 0xfcce6000,
		.minor_features7 = 0xfffbfa6f,
		.minor_features8 = 0x00e10ef3,
		.minor_features9 = 0x00c8003c,
		.minor_features10 = 0x00004040,
		.minor_features11 = 0x00000024,
	},
	{
		.model = 0x7000,
		.revision = 0x6204,
		.product_id = ~0U,
		.customer_id = ~0U,
		.eco_id = 0,
		.stream_count = 16,
		.register_max = 64,
		.thread_count = 512,
		.shader_core_count = 2,
		.nn_core_count = 0,
		.nn_mad_per_core = 0,
		.tp_core_count = 0,
		.on_chip_sram_size = 0,
		.axi_sram_size = 0,
		.vertex_cache_size = 16,
		.vertex_output_buffer_size = 1024,
		.pixel_pipes = 1,
		.instruction_count = 512,
		.num_constants = 320,
		.buffer_size = 0,
		.varyings_count = 16,
		.features = 0xe0287c8d,
		.minor_features0 = 0xc1589eff,
		.minor_features1 = 0xfefbfad9,
		.minor_features2 = 0xeb9d4fbf,
		.minor_features3 = 0xedfffced,
		.minor_features4 = 0xdb0dafc7,
		.minor_features5 = 0x3b5ac333,
		.minor_features6 = 0xfcce6000,
		.minor_features7 = 0xfffbfa6f,
		.minor_features8 = 0x00e10ef3,
		.minor_features9 = 0x04c8003c,
		.minor_features10 = 0x00004060,
		.minor_features11 = 0x00000024,
	},
	{
		.model = 0x7000,
		.revision = 0x6214,
		.product_id = ~0U,
		.customer_id = ~0U,
		.eco_id = ~0U,
		.stream_count = 16,
		.register_max = 64,
		.thread_count = 1024,
		.shader_core_count = 4,
		.nn_core_count = 0,
		.nn_mad_per_core = 0,
		.tp_core_count = 0,
		.on_chip_sram_size = 0,
		.axi_sram_size = 0,
		.vertex_cache_size = 16,
		.vertex_output_buffer_size = 1024,
		.pixel_pipes = 2,
		.instruction_count = 512,
		.num_constants = 320,
		.buffer_size = 0,
		.varyings_count = 16,
		.features = 0xe0287cad,
		.minor_features0 = 0xc1799eff,
		.minor_features1 = 0xfefbfad9,
		.minor_features2 = 0xeb9d4fbf,
		.minor_features3 = 0xedfffced,
		.minor_features4 = 0xdb0dafc7,
		.minor_features5 = 0xbb5ac333,
		.minor_features6 = 0xfc8ee200,
		.minor_features7 = 0x03fbfa6f,
		.minor_features8 = 0x00ef0ef0,
		.minor_features9 = 0x0edbf03c,
		.minor_features10 = 0x90044250,
		.minor_features11 = 0x00000024,
	},
	{
		.model = 0x8000,
		.revision = 0x7120,
		.product_id = 0x45080009,
		.customer_id = 0x88,
		.eco_id = 0,
		.stream_count = 8,
		.register_max = 64,
		.thread_count = 256,
		.shader_core_count = 1,
		.nn_core_count = 8,
		.nn_mad_per_core = 64,
		.tp_core_count = 4,
		.on_chip_sram_size = 524288,
		.axi_sram_size = 1048576,
		.vertex_cache_size = 16,
		.vertex_output_buffer_size = 1024,
		.pixel_pipes = 1,
		.instruction_count = 512,
		.num_constants = 320,
		.buffer_size = 0,
		.varyings_count = 16,
		.features = 0xe0287cac,
		.minor_features0 = 0xc1799eff,
		.minor_features1 = 0xfefbfadb,
		.minor_features2 = 0xeb9d6fbf,
		.minor_features3 = 0xedfffced,
		.minor_features4 = 0xd30dafc7,
		.minor_features5 = 0x7b5ac333,
		.minor_features6 = 0xfc8ee200,
		.minor_features7 = 0x03fffa6f,
		.minor_features8 = 0x00fe0ef0,
		.minor_features9 = 0x0088003c,
		.minor_features10 = 0x108048c0,
		.minor_features11 = 0x00000010,
	},
	{
		.model = 0x8000,
		.revision = 0x8002,
		.product_id = 0x5080009,
		.customer_id = 0x9f,
		.eco_id = 0x6000000,
		.stream_count = 8,
		.register_max = 64,
		.thread_count = 256,
		.shader_core_count = 1,
		.nn_core_count = 6,
		.nn_mad_per_core = 64,
		.tp_core_count = 3,
		.on_chip_sram_size = 262144,
		.axi_sram_size = 0,
		.vertex_cache_size = 16,
		.vertex_output_buffer_size = 1024,
		.pixel_pipes = 1,
		.instruction_count = 512,
		.num_constants = 320,
		.buffer_size = 0,
		.varyings_count = 16,
		.features = 0xe0287cac,
		.minor_features0 = 0xc1799eff,
		.minor_features1 = 0xfefbfadb,
		.minor_features2 = 0xeb9d6fbf,
		.minor_features3 = 0xedfffced,
		.minor_features4 = 0xd30dafc7,
		.minor_features5 = 0x7b5ac333,
		.minor_features6 = 0xfc8ee200,
		.minor_features7 = 0x03fffa6f,
		.minor_features8 = 0x00fe0ef0,
		.minor_features9 = 0x0088003c,
		.minor_features10 = 0x108048c0,
		.minor_features11 = 0x00000010,
	},
};

bool etnaviv_fill_identity_from_hwdb(struct etnaviv_gpu *gpu)
{
	struct etnaviv_chip_identity *ident = &gpu->identity;
	const u32 product_id = ident->product_id;
	const u32 customer_id = ident->customer_id;
	const u32 eco_id = ident->eco_id;
	int i;

	for (i = 0; i < ARRAY_SIZE(etnaviv_chip_identities); i++) {
		if (etnaviv_chip_identities[i].model == ident->model &&
		    etnaviv_chip_identities[i].revision == ident->revision &&
		    (etnaviv_chip_identities[i].product_id == ident->product_id ||
			 etnaviv_chip_identities[i].product_id == ~0U) &&
		    (etnaviv_chip_identities[i].customer_id == ident->customer_id ||
			 etnaviv_chip_identities[i].customer_id == ~0U) &&
		    (etnaviv_chip_identities[i].eco_id == ident->eco_id ||
			 etnaviv_chip_identities[i].eco_id == ~0U)) {
			memcpy(ident, &etnaviv_chip_identities[i],
			       sizeof(*ident));

			/* Restore some id values as ~0U aka 'don't care' might been used. */
			ident->product_id = product_id;
			ident->customer_id = customer_id;
			ident->eco_id = eco_id;

			return true;
		}
	}

	return false;
}
