From: Loren Huang Date: Tue, 5 Mar 2013 07:40:22 +0000 (+0800) Subject: ENGR00252727-1 [mxc]Add fuse check for gpu platform device X-Git-Tag: v3.0.35-fsl~106 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=fa1ba722b78c6f0bf6149dd7644480d97ccda2c4;p=karo-tx-linux.git ENGR00252727-1 [mxc]Add fuse check for gpu platform device Add fuse check for gpu platform device. Bypass gpu core initialization if certain core is fused.If all gpu cores are fused, bypass gpu driver loading. Signed-off-by: Loren Huang --- diff --git a/arch/arm/plat-mxc/devices/platform-viv_gpu.c b/arch/arm/plat-mxc/devices/platform-viv_gpu.c index 9b0219695c00..52c9b082b6ae 100644 --- a/arch/arm/plat-mxc/devices/platform-viv_gpu.c +++ b/arch/arm/plat-mxc/devices/platform-viv_gpu.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2012 Freescale Semiconductor, Inc. All Rights Reserved. + * Copyright (C) 2011-2013 Freescale Semiconductor, Inc. All Rights Reserved. */ /* @@ -90,13 +90,36 @@ struct platform_device *__init imx_add_viv_gpu( }, }; - if (cpu_is_mx6q() || cpu_is_mx6sl()) - res_count = ARRAY_SIZE(res); - else if (cpu_is_mx6dl()) - /* No openVG on i.mx6 Solo/DL */ - res_count = ARRAY_SIZE(res) - 2; + res_count = ARRAY_SIZE(res); BUG_ON(!res_count); + if (!fuse_dev_is_available(MXC_DEV_3D)) { + res[1].start = 0; + res[1].end = 0; + res[2].start = -1; + res[2].end = -1; + } + + if (!fuse_dev_is_available(MXC_DEV_2D)) { + res[3].start = 0; + res[3].end = 0; + res[4].start = -1; + res[4].end = -1; + } + + if (!fuse_dev_is_available(MXC_DEV_OVG)) { + res[5].start = 0; + res[5].end = 0; + res[6].start = -1; + res[6].end = -1; + } + + /* None GPU core exists */ + if ((res[2].start == -1) && + (res[4].start == -1) && + (res[6].start == -1)) + return ERR_PTR(-ENODEV); + return imx_add_platform_device_dmamask("galcore", 0, res, res_count, pdata, sizeof(*pdata),