tag:blogger.com,1999:blog-49517509132889672862024-02-19T06:16:56.788+01:00Mer - a mobile Linux distributionCarsten Munkhttp://www.blogger.com/profile/06933926472752734837noreply@blogger.comBlogger23125tag:blogger.com,1999:blog-4951750913288967286.post-44830057841000679072015-03-18T10:57:00.001+01:002015-03-26T09:00:20.017+01:00Some doubts about GPL, licensing and the BQ Aquaris E4.5 Ubuntu Edition phone<div dir="ltr" style="text-align: left;" trbidi="on">
EDIT: Two things: IANAL. I'm not stating there is a violation here. You can look at what's linked to yourself - it worries me that the scripts I know to be central to building a mediatek kernel comes with strange headers as well. Not all that's grep'able here is used in kernel. Second, this is my own personal opinion and blog, not that of my employer.<br />
<br />
EDIT2: There's been a response from Canonical at <a href="https://lists.launchpad.net/ubuntu-phone/msg11543.html">https://lists.launchpad.net/ubuntu-phone/msg11543.html</a> that they'll look into it.<br />
<br />EDIT3: Canonical has posted on their mailing list, <a href="https://lists.launchpad.net/ubuntu-phone/msg11672.html">https://lists.launchpad.net/ubuntu-phone/msg11672.html</a> with information about a fixed tree, if you're interested to see changes, go nuts with git diff.<br />
<br />
As I often look into adapting other operating systems on existing handsets in the field, naturally I've been interested to see how open the <a href="http://www.ubuntu.com/phone/devices" target="_blank">BQ Aquaris E4.5 Ubuntu Edition</a> actually is in terms of hackability and source code availability.<br />
<div>
<br /></div>
<div>
I love hackable devices and I don't like to purchase devices that aren't hackable. As a note, I've reached out and noted already a while back my findings in this post already to Ubuntu guys but nothing seems to have happened.<br />
<div>
<br /></div>
<div>
Before buying a device, I always check out the <a href="https://www.softwarefreedom.org/resources/2008/compliance-guide.html" target="_blank">availability of the source code</a>. One good place to look is the user manual usually, for signs of any <a href="https://www.softwarefreedom.org/resources/2008/compliance-guide.html" target="_blank">source code offers</a>. I found the manual at <a href="https://static-bqreaders.s3.amazonaws.com/file/Ubuntu-Aquaris_E4_5/Manual_Aquaris_E4.5_ubuntu_EN.pdf" target="_blank">this location</a> and it doesn't seem to come with any instructions on how to retrieve the source code. I also have asked on Twitter and got hinted on IRC from that I could find kernel source similarly as on device at <a href="http://people.canonical.com/~jhm/barajas/">http://people.canonical.com/~jhm/barajas/</a> - I downloaded the code at <a href="http://people.canonical.com/~jhm/barajas/master/ubuntu-krillin-kernel-c969b99-1b3e670.tgz">http://people.canonical.com/~jhm/barajas/master/ubuntu-krillin-kernel-c969b99-1b3e670.tgz</a> (MD5sum 52c5562bf2d01d1b60b32367168160f9 ubuntu-krillin-kernel-c969b99-1b3e670.tgz) as the BQ phone is called 'krillin' as it's basically a repurposed BQ Aquaris E4.5 + some small changes. The Android kernel can be found at <a href="https://github.com/bq/aquaris-E4.5">https://github.com/bq/aquaris-E4.5</a> as well and source code looks very similar. </div>
<div>
<br /></div>
<div>
Now, I looked a bit around in the source code. The 'mk' script came with this rather glaring header:</div>
<div>
<br /></div>
<blockquote class="tr_bq">
<blockquote class="tr_bq">
#</blockquote>
<blockquote class="tr_bq">
# Copyright Statement:</blockquote>
<blockquote class="tr_bq">
# --------------------</blockquote>
<blockquote class="tr_bq">
# This software is protected by Copyright and the information contained</blockquote>
<blockquote class="tr_bq">
# herein is confidential. The software may not be copied and the information</blockquote>
<blockquote class="tr_bq">
# contained herein may not be used or disclosed except with the written</blockquote>
<blockquote class="tr_bq">
# permission of MediaTek Inc. (C) 2010</blockquote>
<blockquote class="tr_bq">
#</blockquote>
</blockquote>
<br />
Okay.. well, that doesn't sound good. I'm sure the kernel itself is free of anything bad.<br />
<br />
<blockquote class="tr_bq">
ubuntu-krillin-kernel-c969b99/kernel/mediatek$ ls -al</blockquote>
<blockquote class="tr_bq">
total 12</blockquote>
<blockquote class="tr_bq">
drwxrwxr-x 3 carsten carsten 4096 Sep 19 15:55 .</blockquote>
<blockquote class="tr_bq">
drwxrwxr-x 25 carsten carsten 4096 Sep 19 15:55 ..</blockquote>
<blockquote class="tr_bq">
drwxrwxr-x 2 carsten carsten 4096 Sep 19 15:55 custom</blockquote>
<blockquote class="tr_bq">
lrwxrwxrwx 1 carsten carsten 22 Sep 19 15:55 kernel -> ../../mediatek/kernel/</blockquote>
<blockquote class="tr_bq">
lrwxrwxrwx 1 carsten carsten 36 Sep 19 15:55 Makefile -> ../../mediatek/build/kernel/Makefile</blockquote>
<blockquote class="tr_bq">
lrwxrwxrwx 1 carsten carsten 24 Sep 19 15:55 platform -> ../../mediatek/platform/</blockquote>
Hmm... okay, so drivers/conn_soc/drv_bt/linux/hci_stp.c header has:<br />
<br />
<blockquote class="tr_bq">
<blockquote class="tr_bq">
/* Copyright Statement:</blockquote>
<blockquote class="tr_bq">
*</blockquote>
<blockquote class="tr_bq">
* This software/firmware and related documentation ("MediaTek Software") are</blockquote>
<blockquote class="tr_bq">
* protected under relevant copyright laws. The information contained herein is</blockquote>
<blockquote class="tr_bq">
* confidential and proprietary to MediaTek Inc. and/or its licensors. Without</blockquote>
<blockquote class="tr_bq">
* the prior written permission of MediaTek inc. and/or its licensors, any</blockquote>
<blockquote class="tr_bq">
* reproduction, modification, use or disclosure of MediaTek Software, and</blockquote>
<blockquote class="tr_bq">
* information contained herein, in whole or in part, shall be strictly</blockquote>
<blockquote class="tr_bq">
* prohibited.</blockquote>
<blockquote class="tr_bq">
*</blockquote>
<blockquote class="tr_bq">
* MediaTek Inc. (C) 2010. All rights reserved.</blockquote>
</blockquote>
Well, if it's a module that may or may not be okay depending on your beliefs:<br />
<blockquote class="tr_bq">
obj-$(CONFIG_MTK_COMBO_BT_HCI) += hci_stp.o in the Makefile..<br />
mediatek/config/krillin/autoconfig/kconfig/project:CONFIG_MTK_COMBO_BT_HCI=y</blockquote>
<br />
Nop, seems to be included in the kernel, not as a module. What other gems does this tarball have?<br />
<br />
* This source code and any compilation or derivative thereof is the proprietary<br />
* information of NXP N.V. and is confidential in nature. Under no circumstances<br />
* is this software to be exposed to or placed under an Open Source License of<br />
* any type without the expressed written permission of NXP N.V.<br />
<br />
Let's try to grep for confidential:<br />
<br />
<blockquote class="tr_bq">
<pre style="white-space: pre-wrap; word-wrap: break-word;">makeMtk:# herein is confidential. The software may not be copied and the information
mediatek/custom/krillin/cgen/inc/sph_coeff_dmnr_default.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/krillin/cgen/inc/sph_coeff_dmnr_default.h:* herein is confidential. The software may not be copied and the information
mediatek/custom/krillin/cgen/inc/audio_ver1_volume_custom_default.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/krillin/cgen/inc/audio_ver1_volume_custom_default.h:* herein is confidential. The software may not be copied and the information
mediatek/custom/krillin/cgen/inc/sph_coeff_default.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/krillin/cgen/inc/sph_coeff_default.h:* herein is confidential. The software may not be copied and the information
mediatek/custom/krillin/hal/lens/fm50af/lens_para_FM50AF.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/krillin/hal/lens/fm50af/lens_para_OV8865AF.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/krillin/hal/lens/fm50af/lens_para_T4K37AF.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/krillin/hal/lens/fm50af/lens_para_DW9714A.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/krillin/hal/lens/bu6424af/lens_para_OV13850AF.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/krillin/hal/imgsensor/ov8865_mipi_raw/camera_calibration_cam_cal.cpp:* herein is confidential. The software may not be copied and the information
mediatek/custom/krillin/hal/imgsensor/ov8865_mipi_raw/config.ftbl.ov8865_mipi_raw.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/custom/krillin/hal/imgsensor/ov8865_mipi_raw/camera_AE_PLineTable_ov8865raw.h:* is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/krillin/hal/imgsensor/ov8865_mipi_raw/camera_tuning_para_ov8865raw.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/krillin/hal/imgsensor/ov8865_mipi_raw/camera_info_ov8865raw.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/krillin/hal/imgsensor/ov8865_mipi_raw/camera_isp_lsc_ov8865raw.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/krillin/hal/imgsensor/t4k04_mipi_raw/config.ftbl.t4k04_mipi_raw.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/custom/krillin/hal/imgsensor/t4k04_mipi_raw/camera_calibration_cam_cal.cpp:* herein is confidential. The software may not be copied and the information
mediatek/custom/krillin/hal/imgsensor/t4k04_mipi_raw/camera_AE_PLineTable_t4k04.h:* is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/krillin/hal/imgsensor/t4k04_mipi_raw/camera_info_t4k04.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/krillin/hal/imgsensor/ov13850_mipi_raw/camera_info_ov13850mipiraw.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/krillin/hal/imgsensor/ov13850_mipi_raw/camera_calibration_cam_cal.cpp:* herein is confidential. The software may not be copied and the information
mediatek/custom/krillin/hal/imgsensor/ov13850_mipi_raw/config.ftbl.ov13850_mipi_raw.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/custom/krillin/hal/imgsensor/ov13850_mipi_raw/camera_AE_PLineTable_ov13850mipiraw.h:* is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/krillin/hal/imgsensor/ov12830_mipi_raw/camera_calibration_cam_cal.cpp:* herein is confidential. The software may not be copied and the information
mediatek/custom/krillin/hal/imgsensor/ov12830_mipi_raw/config.ftbl.ov12830_mipi_raw.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/custom/krillin/hal/imgsensor/ov12830_mipi_raw/camera_isp_lsc_ov12830raw.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/krillin/hal/imgsensor/ov12830_mipi_raw/camera_tuning_para_ov12830raw.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/krillin/hal/imgsensor/ov12830_mipi_raw/camera_AE_PLineTable_ov12830raw.h:* is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/krillin/hal/imgsensor/ov12830_mipi_raw/camera_info_ov12830raw.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/krillin/hal/imgsensor/ov5648_mipi_raw/camera_calibration_cam_cal.cpp:* herein is confidential. The software may not be copied and the information
mediatek/custom/krillin/hal/imgsensor/ov5648_mipi_raw/camera_tuning_para_ov5648mipiraw.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/krillin/hal/imgsensor/ov5648_mipi_raw/camera_AE_PLineTable_ov5648mipiraw.h:* is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/krillin/hal/imgsensor/ov5648_mipi_raw/config.ftbl.ov5648_mipi_raw.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/custom/krillin/hal/imgsensor/ov5648_mipi_raw/camera_isp_pca_ov5648mipiraw.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/krillin/hal/imgsensor/ov5648_mipi_raw/camera_isp_regs_ov5648mipiraw.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/krillin/hal/imgsensor/ov5648_mipi_raw/camera_info_ov5648mipiraw.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/vegetahd/cgen/inc/sph_coeff_dmnr_default.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/vegetahd/cgen/inc/sph_coeff_dmnr_default.h:* herein is confidential. The software may not be copied and the information
mediatek/custom/vegetahd/cgen/inc/audio_ver1_volume_custom_default.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/vegetahd/cgen/inc/audio_ver1_volume_custom_default.h:* herein is confidential. The software may not be copied and the information
mediatek/custom/vegetahd/cgen/inc/sph_coeff_default.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/vegetahd/cgen/inc/sph_coeff_default.h:* herein is confidential. The software may not be copied and the information
mediatek/custom/vegetahd/hal/lens/fm50af/lens_para_OV8865AF.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/vegetahd/hal/lens/fm50af/lens_para_T4K37AF.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/vegetahd/hal/lens/fm50af/lens_para_DW9714A.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/vegetahd/hal/lens/bu6424af/lens_para_OV13850AF.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/vegetahd/hal/imgsensor/t4k04_mipi_raw/config.ftbl.t4k04_mipi_raw.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/custom/vegetahd/hal/imgsensor/t4k04_mipi_raw/camera_calibration_cam_cal.cpp:* herein is confidential. The software may not be copied and the information
mediatek/custom/vegetahd/hal/imgsensor/t4k04_mipi_raw/camera_AE_PLineTable_t4k04.h:* is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/vegetahd/hal/imgsensor/t4k04_mipi_raw/camera_info_t4k04.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/vegetahd/hal/imgsensor/ov13850_mipi_raw/camera_info_ov13850mipiraw.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/vegetahd/hal/imgsensor/ov13850_mipi_raw/camera_calibration_cam_cal.cpp:* herein is confidential. The software may not be copied and the information
mediatek/custom/vegetahd/hal/imgsensor/ov13850_mipi_raw/config.ftbl.ov13850_mipi_raw.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/custom/vegetahd/hal/imgsensor/ov13850_mipi_raw/camera_AE_PLineTable_ov13850mipiraw.h:* is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/vegetahd/hal/imgsensor/ov12830_mipi_raw/camera_calibration_cam_cal.cpp:* herein is confidential. The software may not be copied and the information
mediatek/custom/vegetahd/hal/imgsensor/ov12830_mipi_raw/config.ftbl.ov12830_mipi_raw.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/custom/vegetahd/hal/imgsensor/ov12830_mipi_raw/camera_isp_lsc_ov12830raw.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/vegetahd/hal/imgsensor/ov12830_mipi_raw/camera_tuning_para_ov12830raw.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/vegetahd/hal/imgsensor/ov12830_mipi_raw/camera_AE_PLineTable_ov12830raw.h:* is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/vegetahd/hal/imgsensor/ov12830_mipi_raw/camera_info_ov12830raw.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/vegetahd/hal/imgsensor/ov5648_mipi_raw/camera_calibration_cam_cal.cpp:* herein is confidential. The software may not be copied and the information
mediatek/custom/vegetahd/hal/imgsensor/ov5648_mipi_raw/camera_tuning_para_ov5648mipiraw.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/vegetahd/hal/imgsensor/ov5648_mipi_raw/camera_AE_PLineTable_ov5648mipiraw.h:* is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/vegetahd/hal/imgsensor/ov5648_mipi_raw/config.ftbl.ov5648_mipi_raw.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/custom/vegetahd/hal/imgsensor/ov5648_mipi_raw/camera_isp_pca_ov5648mipiraw.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/vegetahd/hal/imgsensor/ov5648_mipi_raw/camera_isp_regs_ov5648mipiraw.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/vegetahd/hal/imgsensor/ov5648_mipi_raw/camera_info_ov5648mipiraw.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/common/kernel/hdmi/nxp_tda19989/tmbslHdmiTx_types.h: * information of NXP N.V. and is confidential in nature. Under no circumstances
mediatek/custom/common/kernel/hdmi/nxp_tda19989/tmdlHdmiTx_local.c: * information of NXP N.V. and is confidential in nature. Under no circumstances
mediatek/custom/common/kernel/hdmi/nxp_tda19989/tmdlHdmiTx_local.h: * information of NXP N.V. and is confidential in nature. Under no circumstances
mediatek/custom/common/kernel/hdmi/nxp_tda19989/tmbslTDA9989_Edid_l.h: * information of Koninklijke Philips Electronics N.V. and is confidential in
mediatek/custom/common/kernel/hdmi/nxp_tda19989/tmbslTDA9989_InOut_l.h: * information of Koninklijke Philips Electronics N.V. and is confidential in
mediatek/custom/common/kernel/hdmi/nxp_tda19989/tmdlHdmiTx_cfg.h: * information of NXP N.V. and is confidential in nature. Under no circumstances
mediatek/custom/common/kernel/hdmi/nxp_tda19989/tmdlHdmiTx_cfg.c: * information of NXP N.V. and is confidential in nature. Under no circumstances
mediatek/custom/common/kernel/hdmi/nxp_tda19989/tmbslTDA9989_Functions.h: * information of NXP N.V. and is confidential in nature. Under no circumstances
mediatek/custom/common/kernel/hdmi/nxp_tda19989/tmbslHdmiTx_funcMapping.h: * information of NXP N.V. and is confidential in nature. Under no circumstances
mediatek/custom/common/kernel/hdmi/nxp_tda19989/tmbslTDA9989_HDCP_l.h: * information of NXP N.V. and is confidential in nature. Under no circumstances
mediatek/custom/common/kernel/hdmi/nxp_tda19989/tmdlHdmiTx.c: * information of NXP N.V. and is confidential in nature. Under no circumstances
mediatek/custom/common/kernel/hdmi/nxp_tda19989/tmbslTDA9989_HDCP.c: * information of NXP N.V. and is confidential in nature. Under no circumstances
mediatek/custom/common/kernel/hdmi/nxp_tda19989/tmbslTDA9989_State_l.h: * information of Koninklijke Philips Electronics N.V. and is confidential in
mediatek/custom/common/kernel/hdmi/nxp_tda19989/tmdlHdmiTx_Types.h: * information of NXP N.V. and is confidential in nature. Under no circumstances
mediatek/custom/common/kernel/hdmi/nxp_tda19989/tmbslTDA9989_InOut.c: * information of NXP N.V. and is confidential in nature. Under no circumstances
mediatek/custom/common/kernel/hdmi/nxp_tda19989/tmNxCompId.h:/* Confidential in nature. */
mediatek/custom/common/kernel/hdmi/nxp_tda19989/tmdlHdmiTx_Functions.h: * information of NXP N.V. and is confidential in nature. Under no circumstances
mediatek/custom/common/kernel/hdmi/nxp_tda19989/tda998x_ioctl.h: * information of NXP N.V. and is confidential in nature. Under no circumstances
mediatek/custom/common/kernel/hdmi/nxp_tda19989/tmbslTDA9989_Misc_l.h: * information of Koninklijke Philips Electronics N.V. and is confidential in
mediatek/custom/common/kernel/hdmi/nxp_tda19989/tmFlags.h: /* Philips Corporation and is confidential in nature. Its use and */
mediatek/custom/common/kernel/hdmi/nxp_tda19989/tmFlags.h: /* limited by the confidential information provisions of the Agreement */
mediatek/custom/common/kernel/hdmi/nxp_tda19989/tmbslTDA9989_local.h: * information of NXP N.V. and is confidential in nature. Under no circumstances
mediatek/custom/common/kernel/hdmi/nxp_tda19989/tmbslTDA9989_local.c: * information of NXP N.V. and is confidential in nature. Under no circumstances
mediatek/custom/common/kernel/hdmi/nxp_tda19989/tmbslTDA9989_local_otp.h: * information of NXP N.V. and is confidential in nature. Under no circumstances
mediatek/custom/common/kernel/hdmi/nxp_tda19989/tmbslTDA9989_Misc.c: * information of NXP N.V. and is confidential in nature. Under no circumstances
mediatek/custom/common/kernel/hdmi/nxp_tda19989/tmdlHdmiTx_IW.h: * information of NXP N.V. and is confidential in nature. Under no circumstances
mediatek/custom/common/kernel/hdmi/nxp_tda19989/tmbslTDA9989_Edid.c: * information of NXP N.V. and is confidential in nature. Under no circumstances
mediatek/custom/common/kernel/hdmi/nxp_tda19989/tmdlHdmiTx.h: * information of NXP N.V. and is confidential in nature. Under no circumstances
mediatek/custom/common/kernel/hdmi/nxp_tda19989/tmbslTDA9989_State.c: * information of NXP N.V. and is confidential in nature. Under no circumstances
mediatek/custom/common/kernel/hdmi/nxp_tda19989/tmNxTypes.h:/* and is confidential in nature. */
mediatek/custom/common/kernel/magnetometer/mc64xx/mc64xx.h: * contained herein is confidential. The software including the source code
mediatek/custom/common/kernel/magnetometer/mc64xx/mc64xx.c: * contained herein is confidential. The software including the source code
mediatek/custom/common/kernel/accelerometer/mc3xxx/mc3xxx.h: * contained herein is confidential. The software including the source code
mediatek/custom/common/kernel/accelerometer/mc3xxx/mc3xxx.c: * contained herein is confidential. The software including the source code
mediatek/custom/common/modem/ckt82_we_kk_hspa/modem_1_wg_n.mak:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/ckt82_we_kk/preloader/inc/custom_MemoryDevice.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/ckt82_we_kk/preloader/inc/custom_MemoryDevice.h:* herein is confidential. The software may not be copied and the information
mediatek/custom/ckt82_we_kk/preloader/inc/memory.h:* is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/ckt82_we_kk/preloader/inc/cust_msdc.h:* herein is confidential. The software may not be copied and the information
mediatek/custom/ckt82_we_kk/preloader/inc/cust_rtc.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/ckt82_we_kk/preloader/inc/cust_bldr.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/ckt82_we_kk/preloader/inc/custom_emi.h:* herein is confidential. The software may not be copied and the information
mediatek/custom/ckt82_we_kk/preloader/inc/cust_usb.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/ckt82_we_kk/preloader/inc/cust_nand.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/ckt82_we_kk/preloader/inc/cust_sec_ctrl.h:* is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/ckt82_we_kk/preloader/inc/cust_part.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/ckt82_we_kk/preloader/custom_emi.c: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/ckt82_we_kk/preloader/cust_msdc.c:* herein is confidential. The software may not be copied and the information
mediatek/custom/ckt82_we_kk/preloader/makefile:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/ckt82_we_kk/cgen/cfgdefault/CFG_WIFI_Default.h:* herein is confidential. The software may not be copied and the information
mediatek/custom/ckt82_we_kk/cgen/cfgdefault/CFG_Audio_Default_Cust.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/custom/ckt82_we_kk/cgen/cfgdefault/CFG_PRODUCT_INFO_Default.h:* herein is confidential. The software may not be copied and the information
mediatek/custom/ckt82_we_kk/cgen/cfgdefault/CFG_GPS_Default.h:* herein is confidential. The software may not be copied and the information
mediatek/custom/ckt82_we_kk/cgen/inc/Custom_NvRam_data_item.h:* herein is confidential. The software may not be copied and the information
mediatek/custom/ckt82_we_kk/cgen/inc/ap_editor_data_item.h:* herein is confidential. The software may not be copied and the information
mediatek/custom/ckt82_we_kk/cgen/inc/CFG_file_info_custom.h:* herein is confidential. The software may not be copied and the information
mediatek/custom/ckt82_we_kk/cgen/inc/audio_volume_custom_default.h:* herein is confidential. The software may not be copied and the information
mediatek/custom/ckt82_we_kk/cgen/inc/Custom_NvRam_LID.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/ckt82_we_kk/cgen/inc/Custom_NvRam_LID.h:* herein is confidential. The software may not be copied and the information
mediatek/custom/ckt82_we_kk/cgen/inc/audio_custom.h:* herein is confidential. The software may not be copied and the information
mediatek/custom/ckt82_we_kk/cgen/inc/wifi_custom.h:* herein is confidential. The software may not be copied and the information
mediatek/custom/ckt82_we_kk/cgen/inc/audio_effect_default.h:* herein is confidential. The software may not be copied and the information
mediatek/custom/ckt82_we_kk/cgen/inc/audio_acf_default.h:* herein is confidential. The software may not be copied and the information
mediatek/custom/ckt82_we_kk/cgen/inc/bwcs_custom.h:* herein is confidential. The software may not be copied and the information
mediatek/custom/ckt82_we_kk/cgen/inc/med_audio_default.h:* herein is confidential. The software may not be copied and the information
mediatek/custom/ckt82_we_kk/cgen/cfgfileinc/CFG_PRODUCT_INFO_File.h:* herein is confidential. The software may not be copied and the information
mediatek/custom/ckt82_we_kk/cgen/cfgfileinc/CFG_GPS_File.h:* herein is confidential. The software may not be copied and the information
mediatek/custom/ckt82_we_kk/cgen/cfgfileinc/CFG_Wifi_File.h:* herein is confidential. The software may not be copied and the information
mediatek/custom/ckt82_we_kk/hal/camera/camera/isp_tuning_user.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/ckt82_we_kk/hal/camera/camera/flash_tuning_custom_cct.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/ckt82_we_kk/hal/camera/camera/af_tuning_custom.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/ckt82_we_kk/hal/camera/camera/flash_tuning_custom.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/ckt82_we_kk/hal/camera/camera/isp_tuning_custom.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/ckt82_we_kk/hal/lens/fm50af/lens_para_FM50AF.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/ckt82_we_kk/hal/lens/fm50af/lens_para_OV8865AF.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/ckt82_we_kk/hal/lens/fm50af/lens_para_T4K37AF.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/ckt82_we_kk/hal/lens/fm50af/lens_para_DW9714A.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/ckt82_we_kk/hal/lens/bu6424af/lens_para_OV13850AF.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/ckt82_we_kk/hal/audioflinger/audio/audio_custom_exp.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/ckt82_we_kk/hal/imgsensor/sp0a19_yuv/camera_info_sp0a19_yuv.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/ckt82_we_kk/hal/imgsensor/sp0a19_yuv/camera_sensor_para_sp01a9_yuv.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/ckt82_we_kk/hal/imgsensor/sp0a19_yuv/camera_info_sp0a19_yuv.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/ckt82_we_kk/hal/imgsensor/sp0a19_yuv/config.ftbl.sp0a19_yuv.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/custom/ckt82_we_kk/hal/imgsensor/t4k04_mipi_raw/config.ftbl.t4k04_mipi_raw.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/custom/ckt82_we_kk/hal/imgsensor/t4k04_mipi_raw/camera_calibration_cam_cal.cpp:* herein is confidential. The software may not be copied and the information
mediatek/custom/ckt82_we_kk/hal/imgsensor/t4k04_mipi_raw/camera_AE_PLineTable_t4k04.h:* is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/ckt82_we_kk/hal/imgsensor/t4k04_mipi_raw/camera_info_t4k04.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/ckt82_we_kk/hal/imgsensor/a5142_mipi_raw/camera_calibration_cam_cal.cpp:* herein is confidential. The software may not be copied and the information
mediatek/custom/ckt82_we_kk/hal/imgsensor/a5142_mipi_raw/camera_AE_PLineTable_a5142mipiraw.h:* is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/ckt82_we_kk/hal/imgsensor/a5142_mipi_raw/camera_tuning_para_a5142mipiraw.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/ckt82_we_kk/hal/imgsensor/a5142_mipi_raw/camera_isp_regs_a5142mipiraw.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/ckt82_we_kk/hal/imgsensor/src/cfg_setting_imgsensor.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/ckt82_we_kk/hal/imgsensor/ov12830_mipi_raw/camera_calibration_cam_cal.cpp:* herein is confidential. The software may not be copied and the information
mediatek/custom/ckt82_we_kk/hal/imgsensor/ov12830_mipi_raw/config.ftbl.ov12830_mipi_raw.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/custom/ckt82_we_kk/hal/imgsensor/ov12830_mipi_raw/camera_isp_pca_ov12830raw.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/ckt82_we_kk/hal/imgsensor/ov12830_mipi_raw/camera_isp_regs_ov12830raw.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/ckt82_we_kk/hal/imgsensor/ov12830_mipi_raw/camera_isp_lsc_ov12830raw.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/ckt82_we_kk/hal/imgsensor/ov12830_mipi_raw/camera_tuning_para_ov12830raw.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/ckt82_we_kk/hal/imgsensor/ov12830_mipi_raw/camera_AE_PLineTable_ov12830raw.h:* is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/ckt82_we_kk/hal/imgsensor/ov12830_mipi_raw/camera_info_ov12830raw.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/ckt82_we_kk/hal/imgsensor/ov5648_mipi_raw/camera_isp_lsc_ov5648mipiraw.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/ckt82_we_kk/hal/imgsensor/ov5648_mipi_raw/camera_calibration_cam_cal.cpp:* herein is confidential. The software may not be copied and the information
mediatek/custom/ckt82_we_kk/hal/imgsensor/ov5648_mipi_raw/camera_tuning_para_ov5648mipiraw.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/ckt82_we_kk/hal/imgsensor/ov5648_mipi_raw/camera_AE_PLineTable_ov5648mipiraw.h:* is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/ckt82_we_kk/hal/imgsensor/ov5648_mipi_raw/config.ftbl.ov5648_mipi_raw.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/custom/ckt82_we_kk/hal/imgsensor/ov5648_mipi_raw/camera_isp_pca_ov5648mipiraw.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/ckt82_we_kk/hal/imgsensor/ov5648_mipi_raw/camera_isp_regs_ov5648mipiraw.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/ckt82_we_kk/hal/imgsensor/ov5648_mipi_raw/camera_info_ov5648mipiraw.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/custom/ckt82_we_kk/lk/cust_display.c:* herein is confidential. The software may not be copied and the information
mediatek/custom/ckt82_we_kk/lk/cust_msdc.c:* herein is confidential. The software may not be copied and the information
mediatek/custom/ckt82_we_kk/lk/include/target/cust_msdc.h:* herein is confidential. The software may not be copied and the information
mediatek/kernel/drivers/conn_soc/drv_bt/linux/hci_stp.c: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/kernel/drivers/conn_soc/drv_bt/Makefile:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/kernel/drivers/conn_soc/drv_bt/include/bt_conf.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/kernel/drivers/conn_soc/drv_bt/include/hci_stp.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/cgen/apeditor/app_parse_db.c: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/cgen/apeditor/tst_assert_header_file.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/cgen/apeditor/tst_assert_header_file.h:* herein is confidential. The software may not be copied and the information
mediatek/platform/common/external/display/lib/libipto3d/MTKTo3dType.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/common/external/display/lib/libipto3d/MTKTo3dErrCode.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/common/external/display/lib/libipto3d/MTKTo3d.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/common/external/display/lib/libstereodisp/MTKStereoKernel.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/common/external/display/lib/libstereodisp/MTKStereoKernelErrCode.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/common/hardware/audio/aud_drv/AudioMTKHeadsetMessager.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/common/hardware/audio/aud_drv/AudioMTKHeadsetMessager.cpp:* herein is confidential. The software may not be copied and the information
mediatek/platform/common/hardware/audio/V2/aud_drv/AudioPreProcess.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/common/hardware/audio/V2/aud_drv/AudioSpeechEnhLayer.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/common/hardware/audio/V2/AudioHardwareInterface.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/common/hardware/audio/V2/AudioMTKPolicyManager.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/common/hardware/audio/V2/a2dpaudio_hw_hal.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/common/hardware/audio/V2/include/AudioSpeechEnhLayer.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/common/hardware/audio/V2/include/AudioVUnlockDL.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/common/hardware/audio/V2/include/AudioIoctl.h:* herein is confidential. The software may not be copied and the information
mediatek/platform/common/hardware/audio/include/AudioMTKHeadsetMessager.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/common/hardware/audio/include/AudioMTKHeadsetMessager.h:* herein is confidential. The software may not be copied and the information
mediatek/platform/common/frameworks/libmtkplayer/VibSpkAudioPlayer.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/common/frameworks/libmtkplayer/mATVAudioPlayer.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/common/frameworks/libmtkplayer/FMAudioPlayer.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/preloader/src/init/inc/test_check.c: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/preloader/src/core/handshake_uart.c: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/preloader/src/core/handshake_usb.c: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/preloader/src/core/main.c: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/preloader/src/core/download.c: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/preloader/src/core/part.c: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/preloader/src/core/inc/blkdev.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/preloader/src/core/inc/print.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/preloader/src/core/inc/stdlib.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/preloader/src/core/inc/boot_device.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/preloader/src/core/inc/meta.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/preloader/src/core/inc/download.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/preloader/src/core/inc/gfh.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/preloader/src/core/inc/part.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/preloader/src/core/inc/typedefs.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/preloader/src/core/inc/string.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/preloader/src/core/inc/addr_trans.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/preloader/src/core/inc/download_legacy.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/preloader/src/core/blkdev.c: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/preloader/src/core/div0.c: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/preloader/src/core/addr_trans.c: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/preloader/src/core/print.c: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/preloader/src/core/string.c: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/preloader/src/security/sec_rom_info.c: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/preloader/src/security/sec_ctrl.c: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/preloader/src/security/sec_flashtool_cfg.c:* is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/preloader/src/security/sec_key.c: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/preloader/src/security/sec_util.c:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/preloader/src/security/sec_region.c: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/preloader/src/security/inc/sec_region.h:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/preloader/src/security/inc/sec_key.h:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/preloader/src/security/inc/sec_cust.h:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/preloader/src/security/inc/sec.h:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/preloader/src/security/inc/sec_error.h:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/preloader/src/security/inc/sec_devinfo.h:Copyright and the information contained* herein is confidential. The
mediatek/platform/mt6582/preloader/src/security/inc/sec_boot.h:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/preloader/src/security/inc/sec_rom_info.h:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/preloader/src/security/inc/sec_limit.h:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/preloader/src/security/inc/buffer.h:* is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/preloader/src/security/inc/es_reg.h:Copyright and the information contained* herein is confidential. The
mediatek/platform/mt6582/preloader/src/security/inc/sec_ctrl.h:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/preloader/src/security/inc/sec_flashtool_cfg.h:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/preloader/src/security/inc/sec_secroimg.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/preloader/src/security/inc/sec_platform.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/preloader/src/security/inc/sec_auth.h:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/preloader/src/security/sec_boot.c: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/preloader/src/security/trustzone/tz_boot_share_page.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/preloader/src/security/trustzone/tz_boot_share_page.c: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/preloader/src/security/trustzone/trustzone.h:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/preloader/src/security/trustzone/trustzone.c: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/preloader/src/security/trustzone/tz_emi_reg.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/preloader/src/security/auth/sec_auth.c: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/preloader/src/security/sec_secroimg.c: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/preloader/src/security/sec.c: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/preloader/src/drivers/uart.c: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/preloader/src/drivers/mt8193_init.c: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/preloader/src/drivers/partition_mt.c: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/preloader/src/drivers/partition_mt.c:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/preloader/src/drivers/pmic_wrap_init.c: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/preloader/src/drivers/memory_test.s: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/preloader/src/drivers/pll.c: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/preloader/src/drivers/keypad.c: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/preloader/src/drivers/device_apc.c: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/preloader/src/drivers/usbtty.c: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/preloader/src/drivers/usbphy.c: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/preloader/src/drivers/mmc_core.c: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/preloader/src/drivers/platform.c: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/preloader/src/drivers/mt8193_ckgen.c: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/preloader/src/drivers/mmc_common_inter.c: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/preloader/src/drivers/msdc_utils.c: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/preloader/src/drivers/memory.c:* is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/preloader/src/drivers/partition.c: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/preloader/src/drivers/partition.c:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/preloader/src/drivers/msdc.c:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/preloader/src/drivers/mmc_test.c: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/preloader/src/drivers/bmt.c: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/preloader/src/drivers/inc/emi_reg.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/preloader/src/drivers/inc/nand.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/preloader/src/drivers/inc/bmt.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/preloader/src/drivers/inc/usbd.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/preloader/src/drivers/inc/gpio.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/preloader/src/drivers/inc/pll.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/preloader/src/drivers/inc/mmc_types.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/preloader/src/drivers/inc/keypad.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/preloader/src/drivers/inc/usbphy.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/preloader/src/drivers/inc/mmc_common_inter.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/preloader/src/drivers/inc/msdc_utils.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/preloader/src/drivers/inc/mmc_core.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/preloader/src/drivers/inc/wdt.h:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/preloader/src/drivers/inc/usbtty.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/preloader/src/drivers/inc/msdc_types.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/preloader/src/drivers/inc/timer.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/preloader/src/drivers/inc/msdc.h:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/preloader/src/drivers/inc/linux/input.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/preloader/src/drivers/inc/platform.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/preloader/src/drivers/inc/usbdcore.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/preloader/src/drivers/inc/ram_console.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/preloader/src/drivers/inc/mmc_test.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/preloader/src/drivers/inc/mt6582.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/preloader/src/drivers/inc/emi.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/preloader/src/drivers/inc/mt8193.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/preloader/src/drivers/inc/circbuf.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/preloader/src/drivers/inc/uart.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/preloader/src/drivers/inc/uart.h:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/preloader/src/drivers/inc/msdc_cfg.h:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/preloader/src/drivers/inc/cust_part.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/preloader/src/drivers/inc/mmc_hal.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/preloader/src/drivers/inc/nand_core.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/preloader/src/drivers/inc/dramc.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/preloader/src/drivers/inc/rtc.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/preloader/src/drivers/nand.c: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/preloader/src/drivers/mt8193_i2c.c: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/preloader/src/drivers/dramc_calib.c: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/preloader/src/drivers/emi.c: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/preloader/src/drivers/usbd.c: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/preloader/src/drivers/wdt.c: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/preloader/src/drivers/gpio.c: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/preloader/src/drivers/circbuf.c: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/preloader/src/drivers/rtc.c: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/preloader/src/drivers/timer.c: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/external/meta/emmc/meta_clr_emmc.c:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/external/meta/emmc/meta_clr_emmc_para.h:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/external/meta/BatteryIC/meta_battery_para.h:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/external/meta/BatteryIC/meta_battery_test.c:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/external/meta/BatteryIC/meta_battery.c:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/external/meta/matv/meta_matv_para.h:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/external/meta/vibrator/meta_vibrator_para.h:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/external/meta/LCDBK/meta_lcdbk.c:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/external/meta/LCDBK/meta_lcdbk_test.c:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/external/meta/LCDBK/meta_lcdbk_para.h:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/external/meta/pmic/meta_pmic_test.c:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/external/meta/pmic/meta_pmic.c:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/external/meta/pmic/meta_pmic_para.h:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/external/meta/Audio/AudioMeta.cpp:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/external/meta/Audio/meta_audio_para.h:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/external/meta/keypadbk/meta_keypadbk_para.h:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/external/meta/fm/meta_fm_para.h:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/external/meta/fm/meta_fm.c:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/external/meta/gps/meta_gps_para.h:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/external/meta/gps/meta_gps.c:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/external/meta/alsps/meta_alsps_para.h:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/external/meta/lcd/meta_lcd_test.c:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/external/meta/lcd/meta_lcd.c:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/external/meta/lcd/meta_lcdft_para.h:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/external/meta/cameratool/CCAP/AcdkLog.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/external/meta/cameratool/CCAP/Meta_CCAP_Para.cpp:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/external/meta/cameratool/CCAP/meta_ccap_para.h:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/external/meta/cameratool/test/ccapTest/AcdkLog.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/external/meta/cpu/meta_cpu_para.h:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/external/meta/ft/ft_main.h:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/external/meta/ft/ft_main.cpp:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/external/meta/ft/ft_fnc.cpp:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/external/meta/touch/meta_touch_para.h:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/external/meta/storageutil/mtdutils.c: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/external/meta/storageutil/mounts.c: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/external/meta/storageutil/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/external/meta/hdcp/meta_hdcp_para.h:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/external/meta/hdcp/meta_hdcp.c:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/external/meta/ADC/meta_adc_para.h:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/external/meta/ADC/meta_adc.c:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/external/meta/ADC/meta_adc_test.c:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/external/meta/gyroscope/meta_gyroscope_para.h:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/external/meta/wifi/meta_wifi_para.h:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/external/meta/sdcard/meta_sdcard_para.h:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/external/meta/drmkey/test_program.c: * as unpublished works. The information contained herein is confidential and *
mediatek/platform/mt6582/external/meta/drmkey/meta_drmkey_install_para.h:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/external/meta/bluetooth/Meta_bt_Para.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/external/meta/bluetooth/meta_bt_test.c: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/external/meta/bluetooth/meta_bt.c: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/external/meta/bluetooth/meta_bt.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/external/meta/msensor/meta_msensor_para.h:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/external/meta/Meta_APEditor/Meta_APEditor_Para.h:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/external/meta/gpio/Meta_GPIO_Para.h:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/external/meta/cryptfs/meta_cryptfs.c: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/external/meta/cryptfs/meta_cryptfs.c:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/external/meta/cryptfs/meta_cryptfs_para.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/external/meta/cryptfs/meta_cryptfs_para.h:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/external/meta/cryptfs/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/external/meta/nfc/meta_nfc.c: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/external/meta/nfc/meta_nfc.c:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/external/meta/nfc/mtk_nfc_ext_msg.h:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/external/meta/nfc/mtk_nfc_meta_struct.h:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/external/meta/nfc/meta_nfc_test.c: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/external/meta/nfc/meta_nfc_para.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/external/meta/nfc/meta_nfc_para.h:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/external/meta/nfc/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/external/meta/gsensor/meta_gsensor_para.h:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/external/meta/include/FT_Cmd_Para.h:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/kernel/core/include/trustzone/sec/Tlsec/inc/tlcApisec.h: * The present software is the confidential and proprietary information of
mediatek/platform/mt6582/kernel/core/include/trustzone/sec/Tlsec/inc/tci.h: * The present software is the confidential and proprietary information of
mediatek/platform/mt6582/kernel/drivers/ldvt/vdec/verify/vdec_verify_main.c:/*************** MTK CONFIDENTIAL ****************/
mediatek/platform/mt6582/kernel/drivers/ldvt/vdec/verify/vdec_verify_irq_fiq_proc.c:/*************** MTK CONFIDENTIAL ****************/
mediatek/platform/mt6582/kernel/drivers/ldvt/hdmitx/tmbslHdmiTx_types.h: * information of NXP N.V. and is confidential in nature. Under no circumstances
mediatek/platform/mt6582/kernel/drivers/ldvt/hdmitx/tmdlHdmiTx_local.c: * information of NXP N.V. and is confidential in nature. Under no circumstances
mediatek/platform/mt6582/kernel/drivers/ldvt/hdmitx/tmdlHdmiTx_local.h: * information of NXP N.V. and is confidential in nature. Under no circumstances
mediatek/platform/mt6582/kernel/drivers/ldvt/hdmitx/tmbslTDA9989_Edid_l.h: * information of Koninklijke Philips Electronics N.V. and is confidential in
mediatek/platform/mt6582/kernel/drivers/ldvt/hdmitx/tmbslTDA9989_InOut_l.h: * information of Koninklijke Philips Electronics N.V. and is confidential in
mediatek/platform/mt6582/kernel/drivers/ldvt/hdmitx/tmdlHdmiTx_cfg.h: * information of NXP N.V. and is confidential in nature. Under no circumstances
mediatek/platform/mt6582/kernel/drivers/ldvt/hdmitx/tmdlHdmiTx_cfg.c: * information of NXP N.V. and is confidential in nature. Under no circumstances
mediatek/platform/mt6582/kernel/drivers/ldvt/hdmitx/tmbslTDA9989_Functions.h: * information of NXP N.V. and is confidential in nature. Under no circumstances
mediatek/platform/mt6582/kernel/drivers/ldvt/hdmitx/tmbslHdmiTx_funcMapping.h: * information of NXP N.V. and is confidential in nature. Under no circumstances
mediatek/platform/mt6582/kernel/drivers/ldvt/hdmitx/tmbslTDA9989_HDCP_l.h: * information of NXP N.V. and is confidential in nature. Under no circumstances
mediatek/platform/mt6582/kernel/drivers/ldvt/hdmitx/tmdlHdmiTx.c: * information of NXP N.V. and is confidential in nature. Under no circumstances
mediatek/platform/mt6582/kernel/drivers/ldvt/hdmitx/tmbslTDA9989_HDCP.c: * information of NXP N.V. and is confidential in nature. Under no circumstances
mediatek/platform/mt6582/kernel/drivers/ldvt/hdmitx/tmbslTDA9989_State_l.h: * information of Koninklijke Philips Electronics N.V. and is confidential in
mediatek/platform/mt6582/kernel/drivers/ldvt/hdmitx/tmdlHdmiTx_Types.h: * information of NXP N.V. and is confidential in nature. Under no circumstances
mediatek/platform/mt6582/kernel/drivers/ldvt/hdmitx/tmbslTDA9989_InOut.c: * information of NXP N.V. and is confidential in nature. Under no circumstances
mediatek/platform/mt6582/kernel/drivers/ldvt/hdmitx/tmNxCompId.h:/* Confidential in nature. */
mediatek/platform/mt6582/kernel/drivers/ldvt/hdmitx/tmdlHdmiTx_Functions.h: * information of NXP N.V. and is confidential in nature. Under no circumstances
mediatek/platform/mt6582/kernel/drivers/ldvt/hdmitx/tda998x_ioctl.h: * information of NXP N.V. and is confidential in nature. Under no circumstances
mediatek/platform/mt6582/kernel/drivers/ldvt/hdmitx/tmbslTDA9989_Misc_l.h: * information of Koninklijke Philips Electronics N.V. and is confidential in
mediatek/platform/mt6582/kernel/drivers/ldvt/hdmitx/tmFlags.h: /* Philips Corporation and is confidential in nature. Its use and */
mediatek/platform/mt6582/kernel/drivers/ldvt/hdmitx/tmFlags.h: /* limited by the confidential information provisions of the Agreement */
mediatek/platform/mt6582/kernel/drivers/ldvt/hdmitx/tmbslTDA9989_local.h: * information of NXP N.V. and is confidential in nature. Under no circumstances
mediatek/platform/mt6582/kernel/drivers/ldvt/hdmitx/tmbslTDA9989_local.c: * information of NXP N.V. and is confidential in nature. Under no circumstances
mediatek/platform/mt6582/kernel/drivers/ldvt/hdmitx/tmbslTDA9989_local_otp.h: * information of NXP N.V. and is confidential in nature. Under no circumstances
mediatek/platform/mt6582/kernel/drivers/ldvt/hdmitx/tmbslTDA9989_Misc.c: * information of NXP N.V. and is confidential in nature. Under no circumstances
mediatek/platform/mt6582/kernel/drivers/ldvt/hdmitx/tmdlHdmiTx_IW.h: * information of NXP N.V. and is confidential in nature. Under no circumstances
mediatek/platform/mt6582/kernel/drivers/ldvt/hdmitx/tmbslTDA9989_Edid.c: * information of NXP N.V. and is confidential in nature. Under no circumstances
mediatek/platform/mt6582/kernel/drivers/ldvt/hdmitx/tmdlHdmiTx.h: * information of NXP N.V. and is confidential in nature. Under no circumstances
mediatek/platform/mt6582/kernel/drivers/ldvt/hdmitx/tmbslTDA9989_State.c: * information of NXP N.V. and is confidential in nature. Under no circumstances
mediatek/platform/mt6582/kernel/drivers/ldvt/hdmitx/tmNxTypes.h:/* and is confidential in nature. */
mediatek/platform/mt6582/kernel/drivers/gpu/mali/ump/common/ump_kernel_common.c: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/ump/common/ump_kernel_descriptor_mapping.c: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/ump/common/ump_kernel_ref_drv.c: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/ump/common/ump_kernel_memory_backend.h: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/ump/common/ump_ukk.h: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/ump/common/ump_kernel_descriptor_mapping.h: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/ump/common/ump_kernel_types.h: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/ump/common/ump_kernel_api.c: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/ump/common/ump_kernel_common.h: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/ump/common/ump_osk.h: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/ump/Kbuild:# This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/ump/arch-pb-virtex5/config.h: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/ump/linux/ump_kernel_memory_backend_os.c: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/ump/linux/ump_osk_atomics.c: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/ump/linux/ump_ukk_wrappers.c: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/ump/linux/ump_kernel_memory_backend_dedicated.h: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/ump/linux/license/proprietary/ump_kernel_license.h: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/ump/linux/ump_ukk_wrappers.h: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/ump/linux/ump_osk_misc.c: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/ump/linux/ump_memory_backend.c: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/ump/linux/ump_kernel_linux.c: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/ump/linux/ump_ukk_ref_wrappers.c: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/ump/linux/ump_ioctl.h: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/ump/linux/ump_ukk_ref_wrappers.h: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/ump/linux/ump_kernel_memory_backend_dedicated.c: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/ump/linux/ump_kernel_memory_backend_os.h: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/ump/linux/ump_kernel_linux.h: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/ump/linux/ump_osk_low_level_mem.c: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/ump/Makefile.common:# This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/ump/Makefile:# This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/common/mali_dma.h: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/common/mali_kernel_descriptor_mapping.c: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/common/mali_l2_cache.c: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/common/mali_user_settings_db.c: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/common/mali_gp_scheduler.h: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/common/mali_broadcast.h: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/common/mali_timeline_fence_wait.c: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/common/mali_timeline_fence_wait.h: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/common/mali_pm_domain.h: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/common/mali_pp_scheduler.c: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/common/mali_scheduler_types.h: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/common/mali_pm.h: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/common/mali_l2_cache.h: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/common/mali_kernel_descriptor_mapping.h: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/common/mali_mem_validation.c: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/common/mali_soft_job.c: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/common/mali_kernel_core.c: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/common/mali_kernel_vsync.c: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/common/mali_osk.h.bak: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/common/mali_spinlock_reentrant.c: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/common/mali_kernel_utilization.h: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/common/mali_timeline.c: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/common/mali_gp_job.h: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/common/mali_mmu.h: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/common/mali_mmu_page_directory.c: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/common/mali_pp.h: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/common/mali_osk.h: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/common/mali_kernel_core.h: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/common/mali_gp.h: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/common/mali_scheduler.c: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/common/mali_scheduler.h: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/common/mali_gp_job.c: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/common/mali_spinlock_reentrant.h: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/common/mali_gp_scheduler.c: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/common/mali_hw_core.h: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/common/mali_broadcast.c: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/common/mali_dlbu.h: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/common/mali_osk_types.h: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/common/mali_pp_job.c: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/common/mali_user_settings_db.h: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/common/mali_osk_mali.h: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/common/mali_session.h: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/common/mali_pp.c: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/common/mali_timeline_sync_fence.h: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/common/mali_pm_domain.c: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/common/mali_timeline.h: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/common/mali_pp_job.h: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/common/mali_mmu_page_directory.h: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/common/mali_group.c: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/common/mali_hw_core.c: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/common/mali_pp_scheduler.h: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/common/mali_ukk.h: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/common/mali_group.h: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/common/mali_dlbu.c: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/common/mali_pmu.h: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/common/mali_gp.c: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/common/mali_dma.c: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/common/mali_session.c: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/common/mali_timeline_sync_fence.c: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/common/mali_soft_job.h: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/common/mali_kernel_utilization.c: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/common/mali_osk_list.h: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/common/mali_mmu.c: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/common/mali_osk_bitops.h: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/common/mali_osk_profiling.h: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/common/mali_kernel_common.h: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/common/mali_mem_validation.h: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/common/mali_pm.c: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/common/mali_pmu.c: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/Kbuild:# This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/timestamp-default/mali_timestamp.h: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/timestamp-default/mali_timestamp.c: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/timestamp-arm11-cc/mali_timestamp.h: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/timestamp-arm11-cc/mali_timestamp.c: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/linux/mali_device_pause_resume.c: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/linux/mali_ukk_timeline.c: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/linux/mali_sync.c: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/linux/license/proprietary/mali_kernel_license.h: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/linux/mali_ukk_core.c: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/linux/mali_osk_wait_queue.c: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/linux/mali_osk_notification.c: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/linux/mali_memory_external.c: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/linux/mali_pmu_power_up_down.c: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/linux/mali_ukk_pp.c: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/linux/mali_kernel_linux.h: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/linux/mali_kernel_linux.c: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/linux/mali_memory_os_alloc.c.bak: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/linux/mali_osk_irq.c: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/linux/mali_memory_types.h: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/linux/mali_osk_specific.h: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/linux/mali_kernel_sysfs.h: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/linux/mali_ukk_soft_job.c: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/linux/mali_osk_wq.c: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/linux/mali_osk_math.c: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/linux/mali_memory_os_alloc.h: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/linux/mali_osk_mali.c: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/linux/mali_memory.h: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/linux/mali_kernel_sysfs.c: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/linux/mali_ukk_gp.c: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/linux/mali_uk_types.h: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/linux/mali_ukk_vsync.c: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/linux/mali_profiling_gator_api.h: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/linux/mali_osk_timers.c: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/linux/mali_osk_locks.h: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/linux/mali_memory_ump.c: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/linux/mali_memory_block_alloc.c: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/linux/mali_profiling_internal.c: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/linux/mali_ukk_mem.c: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/linux/mali_memory_dma_buf.c: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/linux/mali_memory_block_alloc.h: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/linux/mali_memory_dma_buf.h: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/linux/mali_osk_time.c: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/linux/mali_osk_irq.c.bak: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/linux/mali_profiling_internal.h: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/linux/mali_profiling_events.h: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/linux/mali_sync.h: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/linux/mali_memory.c: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/linux/mali_osk_locks.c: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/linux/mali_linux_trace.h: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/linux/mali_ukk_wrappers.h: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/linux/mali_osk_atomics.c: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/linux/mali_memory_os_alloc.c: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/linux/mali_osk_profiling.c: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/linux/mali_osk_low_level_mem.c: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/linux/mali_osk_pm.c: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/linux/mali_osk_misc.c: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/linux/mali_osk_memory.c: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/linux/mali_ukk_profiling.c: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/platform/arm/arm.c: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/platform/arm/arm_core_scaling.h: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/platform/arm/arm_core_scaling.c: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/regs/mali_200_regs.h: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/regs/mali_gp_regs.h: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/Makefile:# This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/include/linux/mali/mali_utgard_profiling_events.h: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/include/linux/mali/mali_utgard_counters.h: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/include/linux/mali/mali_utgard_ioctl.h: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/include/linux/mali/mali_utgard_profiling_gator_api.h: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/include/linux/mali/mali_utgard_uk_types.h: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/kernel/drivers/gpu/mali/mali/include/linux/mali/mali_utgard.h: * This confidential and proprietary software may be used only as
mediatek/platform/mt6582/hardware/jpeg/inc/mhal_jpeg.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/jpeg/inc/jpeg_hal.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/custom/camera/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/custom/eeprom/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/custom/lens/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/custom/cam_cal/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/custom/imgsensor/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/custom/flashlight/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/custom/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/camshot/SampleShot/ISampleShotBridge.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/camshot/SampleShot/SampleShot.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/camshot/test/main.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/core/camshot/test/test_simager.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/core/camshot/test/test_singleshot.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/core/camshot/inc/ImageUtils.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/camshot/inc/CamShotImp.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/camshot/inc/ImageCreateThread.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/core/camshot/inc/SingleShot.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/camshot/inc/IImageTransform.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/camshot/inc/ICameraBuffer.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/camshot/inc/ISamleShot.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/core/camshot/inc/BurstShot.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/camshot/inc/SImager.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/camshot/inc/IJpegCodec.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/camshot/inc/SampleShot.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/camshot/inc/MultiShot.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/camshot/MultiShot/ImageCreateThread.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/core/camshot/MultiShot/MultiShotNcc.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/camshot/MultiShot/IMultiShotBridge.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/camshot/MultiShot/MultiShotCc.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/camshot/MultiShot/MultiShot.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/camshot/utils/ImageUtils.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/camshot/SingleShot/ISingleShotBridge.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/camshot/SingleShot/SingleShot.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/camshot/SImager/SImager.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/camshot/SImager/ImageTransform/IImageTransformBridge.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/camshot/SImager/ImageTransform/inc/ImageTransform.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/camshot/SImager/ImageTransform/ImageTransform.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/camshot/SImager/JpegCodec/IJpegCodecBridge.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/camshot/SImager/JpegCodec/inc/JpegCodec.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/camshot/SImager/JpegCodec/JpegCodec.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/camshot/SImager/ISImagerBridge.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/camshot/BurstShot/BurstShot.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/camshot/BurstShot/IBurstShotBridge.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/vssimgtrans/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/imageio/drv/cdp/cdp_drv.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/imageio/drv/cdp/cdp_drv_imp.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/imageio/drv/mdp/mdp_mgr_imp.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/imageio/drv/mdp/mdp_mgr.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/imageio/inc/cdp_drv.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/imageio/inc/mdp_mgr.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/campipe/XdpPipe/XdpPipe.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/campipe/XdpPipe/IXdpPipeBridge.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/campipe/CamIOPipe/ICamIOPipeBridge.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/campipe/CamIOPipe/CamIOPipe.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/campipe/test/main.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/core/campipe/test/test_camio.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/core/campipe/test/test_xdp.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/core/campipe/test/test_postproc.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/core/campipe/inc/SamplePipe.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/campipe/inc/PostProcPipe.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/campipe/inc/CamIOPipe.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/campipe/inc/XdpPipe.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/campipe/inc/CampipeImgioPipeMapper.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/campipe/inc/PipeImp.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/campipe/utils/CampipeImgioPipeMapper.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/campipe/PostProcPipe/PostProcPipe.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/campipe/PostProcPipe/IPostProcPipeBridge.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/campipe/SamplePipe/ISamplePipeBridge.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/campipe/SamplePipe/SamplePipe.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/drv/ResManager/ResManager.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/core/drv/tpipe/tpipe_drv.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/drv/tpipe/tpipe_drv_imp.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/drv/strobe/flashlight_drv.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/drv/strobe/strobe_drv.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/drv/strobe/flashlight_drv.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/drv/eeprom/eeprom_drv_imp.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/drv/lens/lens_sensor_drv.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/drv/lens/lens_drv.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/drv/lens/mcu_drv.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/drv/lens/lens_sensor_drv.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/drv/lens/lens_drv.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/drv/cam_cal/cam_cal_drv_imp.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/drv/inc/nvram_drv.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/drv/inc/eis_drv_base.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/drv/inc/mcu_drv.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/drv/inc/cam_cal_drv.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/drv/inc/strobe_drv.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/drv/inc/eeprom_drv.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/drv/tdri_mgr/tdri_mgr_imp.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/drv/tdri_mgr/tdri_mgr.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/drv/nvram/nvram_buf_mgr.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/drv/nvram/nvram_buf_mgr.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/drv/nvram/nvram_drv_imp.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/drv/nvram/nvram_drv.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/drv/eis/eis_drv.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/drv/eis/eis_drv.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/drv/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/pipe/motiontrack/motiontrack/motiontrack_hal.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/pipe/motiontrack/motiontrack/motiontrack_hal.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/pipe/motiontrack/motiontrack_hal_base.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/pipe/motiontrack/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/pipe/autorama/autorama/autorama_hal.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/pipe/autorama/autorama/autorama_hal.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/pipe/autorama/autorama_hal_base.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/pipe/autorama/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/pipe/asd/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/pipe/fdft_hal/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/pipe/facebeautify/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/pipe/flicker/flicker_hal.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/pipe/flicker/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/pipe/3Dfeature/mav/mav_hal.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/pipe/3Dfeature/mav/mav_hal.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/pipe/3Dfeature/3DF_hal_base.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/pipe/3Dfeature/pano3d/pano3d_hal.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/pipe/3Dfeature/pano3d/pano3d_hal.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/pipe/3Dfeature/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/pipe/aaa/ae_mgr/ae_cct_feature.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/pipe/aaa/ae_mgr/ae_mgr.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/pipe/aaa/ae_mgr/ae_mgr.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/pipe/aaa/aaa_hal_base.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/pipe/aaa/ispdrv_mgr/ispdrv_mgr.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/pipe/aaa/ispdrv_mgr/ispdrv_mgr.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/pipe/aaa/aaa_hal_yuv.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/pipe/aaa/sensor_mgr/aaa_sensor_mgr.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/pipe/aaa/sensor_mgr/aaa_sensor_mgr.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/pipe/aaa/af_mgr/af_mgr.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/pipe/aaa/af_mgr/af_mgr.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/pipe/aaa/state_mgr/aaa_state_af.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/pipe/aaa/state_mgr/aaa_state.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/pipe/aaa/state_mgr/aaa_state_precapture.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/pipe/aaa/state_mgr/aaa_state_camcorder_preview.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/pipe/aaa/state_mgr/aaa_state_capture.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/pipe/aaa/state_mgr/aaa_state_camera_preview.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/pipe/aaa/state_mgr/aaa_state.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/pipe/aaa/state_mgr/aaa_state_recording.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/pipe/aaa/isp_mgr/isp_mgr.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/pipe/aaa/isp_mgr/isp_debug.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/pipe/aaa/isp_mgr/isp_mgr_helper.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/pipe/aaa/isp_mgr/isp_mgr.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/pipe/aaa/isp_mgr/isp_mgr_helper.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/pipe/aaa/nvram_mgr/nvram_drv_mgr.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/pipe/aaa/nvram_mgr/nvram_drv_mgr.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/pipe/aaa/flash_mgr/flash_mgr.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/pipe/aaa/buf_mgr/buf_mgr.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/pipe/aaa/buf_mgr/buf_mgr.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/pipe/aaa/awb_mgr/awb_cct_feature.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/pipe/aaa/awb_mgr/awb_mgr.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/pipe/aaa/awb_mgr/awb_mgr.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/pipe/aaa/isp_tuning/isp_tuning_mgr.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/pipe/aaa/isp_tuning/isp_tuning_mgr.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/pipe/aaa/isp_tuning/paramctrl/paramctrl_user.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/pipe/aaa/isp_tuning/paramctrl/ccm_mgr/ccm_mgr.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/pipe/aaa/isp_tuning/paramctrl/ccm_mgr/ccm_mgr.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/pipe/aaa/isp_tuning/paramctrl/paramctrl_lifetime.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/pipe/aaa/isp_tuning/paramctrl/paramctrl_validate.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/pipe/aaa/isp_tuning/paramctrl/paramctrl_exif.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/pipe/aaa/isp_tuning/paramctrl/paramctrl_per_frame.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/pipe/aaa/isp_tuning/paramctrl/inc/paramctrl_if.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/pipe/aaa/isp_tuning/paramctrl/inc/paramctrl.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/pipe/aaa/isp_tuning/paramctrl/paramctrl_frameless.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/pipe/aaa/isp_tuning/paramctrl/paramctrl_attributes.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/pipe/aaa/isp_tuning/paramctrl/pca_mgr/pca_mgr.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/pipe/aaa/isp_tuning/paramctrl/pca_mgr/pca_mgr.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/pipe/aaa/aaa_hal_yuv.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/pipe/aaa/aaa_hal.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/pipe/aaa/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/pipe/aaa/aaa_hal.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/pipe/hdr/hdr_hal_base.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/pipe/hdr/hdr/hdr_hal.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/pipe/hdr/hdr/hdr_hal.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/pipe/hdr/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/pipe/eis/eis_hal.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/pipe/eis/eis_hal.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/pipe/eis/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/pipe/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/featureio/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/core/hwscenario/VSSScenario.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/core/hwscenario/ZSDScenario.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/core/hwscenario/hwUtility.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/core/hwscenario/hwUtility.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/core/hwscenario/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/hwutils/CameraProfile.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/hwutils/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/acdk/inc/acdk/AcdkMhalEng.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/acdk/inc/acdk/AcdkCallback.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/acdk/inc/acdk/AcdkUtility.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/acdk/inc/acdk/AcdkMain.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/acdk/inc/acdk/AcdkErrCode.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/acdk/inc/acdk/AcdkBase.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/acdk/inc/acdk/AcdkLog.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/acdk/inc/acdk/AcdkSurfaceView.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/acdk/inc/acdk/AcdkMhalBase.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/acdk/inc/acdk/AcdkMhalPure.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/acdk/inc/cct/cct_ctrl.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/acdk/inc/cct/cct_main.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/acdk/inc/cct/cct_calibration.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/acdk/inc/cct/cct_imgtool.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/acdk/inc/cct/cct_ErrCode.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/acdk/src/acdk/AcdkMhalEng.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/acdk/src/acdk/AcdkMhalBase.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/acdk/src/acdk/AcdkIF.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/acdk/src/acdk/AcdkMhalPure.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/acdk/src/acdk/AcdkBase.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/acdk/src/acdk/AcdkUtility.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/acdk/src/acdk/AcdkMain.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/acdk/src/surfaceview/AcdkSurfaceView.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/acdk/src/surfaceview/surfaceView.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/acdk/src/surfaceview/surfaceView.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/acdk/src/cct/calibration/ParamLSCInternal.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/acdk/src/cct/calibration/ShadingATNTable.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/acdk/src/cct/calibration/ParamCALInternal.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/acdk/src/cct/calibration/cct_flash_cali.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/acdk/src/cct/calibration/cct_imgtool.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/acdk/src/cct/calibration/mt6516_calibration.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/acdk/src/cct/calibration/cct_calibration.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/acdk/src/cct/if/cct_feature.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/acdk/src/cct/if/cct_isp_feature.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/acdk/src/cct/if/cct_sensor_feature.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/acdk/src/cct/if/cct_imp.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/acdk/src/cct/if/cct_main.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/acdk/src/cct/if/cct_nvram_feature.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/entry/moduleOption.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/entry/HalMemoryAdapter/PlatformEntry.HalMemory.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/entry/HalMemoryAdapter/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/entry/PlatformEntry.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/entry/Cam1Device/PlatformEntry.Cam1Device.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/entry/Cam1Device/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/entry/PlatformEntry.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/entry/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/mtkcam.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/devicemgr/MyUtils.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/devicemgr/CamDeviceManagerImp.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/devicemgr/CamDeviceManagerImp.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/devicemgr/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/v1/common/camutils/platform/HwMisc.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/common/camutils/platform/CamFormat.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/common/camutils/platform/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/v1/common/camutils/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/v1/common/paramsmgr/params/ParamsManagerImp.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/common/paramsmgr/params/extern.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/common/paramsmgr/params/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/v1/common/paramsmgr/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/v1/common/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/BaseCamAdapter.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkPhoto/MtkPhotoCamAdapter.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkPhoto/State/State.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkPhoto/State/StateManager.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkPhoto/State/State.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkPhoto/State/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkPhoto/CaptureCmdQueThread.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkPhoto/inc/MtkPhotoCamAdapter.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkPhoto/inc/CaptureCmdQueThread.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkPhoto/inc/PreviewCmdQueThread.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkPhoto/inc/ImpShotCallback.inl: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkPhoto/inc/IState.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkPhoto/MtkPhotoCamAdapter.Capture.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkPhoto/MtkPhotoCamAdapter.CaptureCallback.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkPhoto/MtkPhotoCamParameter.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkPhoto/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkPhoto/MtkPhotoCamAdapter.3A.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkPhoto/Preview/MtkPhotoCamAdapter.Preview.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkPhoto/Preview/PreviewBufMgr.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkPhoto/Preview/PreviewCmdQueThread.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkDefault/MtkDefaultCamAdapter.Record.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkDefault/MtkDefaultCamAdapter.Zoom.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkDefault/MtkDefaultCamAdapter.3A.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkDefault/State/State.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkDefault/State/StateManager.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkDefault/State/State.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkDefault/State/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkDefault/CaptureCmdQueThread.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkDefault/inc/MtkDefaultCamAdapter.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkDefault/inc/CaptureCmdQueThread.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkDefault/inc/PreviewCmdQueThread.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkDefault/inc/ImpShotCallback.inl: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkDefault/inc/IState.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkDefault/MtkDefaultCamAdapter.Capture.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkDefault/MtkDefaultCamAdapter.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkDefault/MtkDefaultCamAdapter.CaptureCallback.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkDefault/MtkDefaultCamParameter.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkDefault/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkDefault/Preview/PreviewBufMgr.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkDefault/Preview/MtkDefaultCamAdapter.Preview.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkDefault/Preview/PreviewCmdQueThread.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkEng/MtkEngCamAdapter.CaptureCallback.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkEng/State/State.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkEng/State/StateManager.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkEng/State/State.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkEng/State/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkEng/CaptureCmdQueThread.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkEng/MtkEngCamAdapter.3A.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkEng/inc/RawDumpCmdQueThread.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkEng/inc/CaptureCmdQueThread.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkEng/inc/PreviewCmdQueThread.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkEng/inc/ImpShotCallback.inl: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkEng/inc/MtkEngCamAdapter.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkEng/inc/IState.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkEng/MtkEngCamAdapter.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkEng/MtkEngCamParameter.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkEng/MtkEngCamAdapter.Capture.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkEng/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkEng/Preview/MtkEngCamAdapter.Preview.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkEng/Preview/PreviewBufMgr.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkEng/Preview/RawDumpCmdQueThread.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkEng/Preview/PreviewCmdQueThread.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/Scenario/Shot/EvShot/EvShot.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/Scenario/Shot/EvShot/EvShot.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/Scenario/Shot/EvShot/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/Scenario/Shot/ShotFactory.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/Scenario/Shot/ZsdShot/ZsdShot.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/Scenario/Shot/ZsdShot/ZsdShot.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/Scenario/Shot/ZsdShot/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/Scenario/Shot/TestShot/TestPostview.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/Scenario/Shot/TestShot/TestShot.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/Scenario/Shot/TestShot/dummy.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/Scenario/Shot/TestShot/TestJpeg.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/Scenario/Shot/TestShot/TestShot.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/Scenario/Shot/TestShot/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/Scenario/Shot/ContinuousShot/ContinuousShot.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/Scenario/Shot/ContinuousShot/ContinuousShot.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/Scenario/Shot/ContinuousShot/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/Scenario/Shot/inc/ImpShot.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/Scenario/Shot/HDRShot/Hdr.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/Scenario/Shot/HDRShot/HDRUtils.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/Scenario/Shot/HDRShot/IHdr.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/Scenario/Shot/HDRShot/test/main.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/Scenario/Shot/HDRShot/test/test_hdrshot.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/Scenario/Shot/HDRShot/MyHdr.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/Scenario/Shot/HDRShot/HDRAlgo.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/Scenario/Shot/HDRShot/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/Scenario/Shot/NormalShot/NormalShot.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/Scenario/Shot/NormalShot/NormalShot.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/Scenario/Shot/NormalShot/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/Scenario/Shot/EngShot/EngParam.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/Scenario/Shot/EngShot/EngShot.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/Scenario/Shot/EngShot/EngShot.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/Scenario/Shot/EngShot/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/Scenario/Shot/BestShot/BsetShot.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/Scenario/Shot/BestShot/BestShot.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/Scenario/Shot/BestShot/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/Scenario/Shot/FBShot/TestFBShot/main.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/Scenario/Shot/FBShot/TestFBShot/test_fbshot.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/Scenario/Shot/FBShot/control.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/Scenario/Shot/FBShot/Facebeauty.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/Scenario/Shot/FBShot/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/Scenario/Shot/FBShot/Facebeauty.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/Scenario/Shot/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/Scenario/Shot/ImpShot.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/Scenario/VideoSnapshot/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/Scenario/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/inc/Scenario/Shot/IShot.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/inc/ImgBufProvidersManager.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/inc/CamUtils.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/inc/BaseCamAdapter.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/inc/ICaptureBufHandler.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkAtv/MtkAtvCamParameter.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkAtv/MtkAtvCamAdapter.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkAtv/MtkAtvCamAdapter.Capture.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkAtv/MtkATVCamAdapter.3A.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkAtv/State/State.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkAtv/State/StateManager.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkAtv/State/State.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkAtv/State/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkAtv/CaptureCmdQueThread.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkAtv/inc/MtkAtvCamAdapter.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkAtv/inc/CaptureCmdQueThread.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkAtv/inc/DisplayDelayThread.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkAtv/inc/PreviewCmdQueThread.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkAtv/inc/ImpShotCallback.inl: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkAtv/inc/IState.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkAtv/MtkAtvCamAdapter.CaptureCallback.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkAtv/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkAtv/Preview/MtkAtvCamAdapter.Preview.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkAtv/Preview/PreviewBufMgr.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkAtv/Preview/DisplayDelayThread.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkAtv/Preview/PreviewCmdQueThread.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkZsd/MtkZsdCamAdapter.Instance.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkZsd/MtkZsdCc/MtkZsdCcCamAdapter.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkZsd/MtkZsdCc/MtkZsdCcCamParameter.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkZsd/MtkZsdCc/CaptureBufMgr.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkZsd/MtkZsdCc/MtkZsdCcCamAdapter.Capture.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkZsd/MtkZsdCc/State/State.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkZsd/MtkZsdCc/State/StateManager.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkZsd/MtkZsdCc/State/State.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkZsd/MtkZsdCc/State/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkZsd/MtkZsdCc/CaptureCmdQueThread.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkZsd/MtkZsdCc/inc/MtkZsdCcCamAdapter.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkZsd/MtkZsdCc/inc/CaptureCmdQueThread.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkZsd/MtkZsdCc/inc/PreviewCmdQueThread.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkZsd/MtkZsdCc/inc/ImpShotCallback.inl: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkZsd/MtkZsdCc/inc/IState.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkZsd/MtkZsdCc/MtkZsdCcCamAdapter.CaptureCallback.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkZsd/MtkZsdCc/MtkZsdCcCamAdapter.3A.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkZsd/MtkZsdCc/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkZsd/MtkZsdCc/Preview/PreviewBufMgr.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkZsd/MtkZsdCc/Preview/PreviewCmdQueThread.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkZsd/MtkZsdCc/Preview/MtkZsdCcCamAdapter.Preview.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkZsd/MtkZsdNcc/CaptureBufMgr.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkZsd/MtkZsdNcc/MtkZsdNccCamAdapter.CaptureCallback.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkZsd/MtkZsdNcc/State/State.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkZsd/MtkZsdNcc/State/StateManager.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkZsd/MtkZsdNcc/State/State.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkZsd/MtkZsdNcc/State/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkZsd/MtkZsdNcc/CaptureCmdQueThread.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkZsd/MtkZsdNcc/MtkZsdNccCamAdapter.Capture.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkZsd/MtkZsdNcc/inc/MtkZsdNccCamAdapter.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkZsd/MtkZsdNcc/inc/CaptureCmdQueThread.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkZsd/MtkZsdNcc/inc/PreviewCmdQueThread.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkZsd/MtkZsdNcc/inc/ImpShotCallback.inl: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkZsd/MtkZsdNcc/inc/IState.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkZsd/MtkZsdNcc/MtkZsdNccCamAdapter.3A.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkZsd/MtkZsdNcc/MtkZsdNccCamParameter.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkZsd/MtkZsdNcc/MtkZsdNccCamAdapter.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkZsd/MtkZsdNcc/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkZsd/MtkZsdNcc/Preview/MtkZsdNccCamAdapter.Preview.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkZsd/MtkZsdNcc/Preview/PreviewBufMgr.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkZsd/MtkZsdNcc/Preview/PreviewCmdQueThread.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkZsd/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkVT/MtkVTCamAdapter.3A.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkVT/MtkVTCamParameter.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkVT/State/State.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkVT/State/StateManager.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkVT/State/State.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkVT/State/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkVT/CaptureCmdQueThread.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkVT/inc/MtkVTCamAdapter.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkVT/inc/CaptureCmdQueThread.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkVT/inc/PreviewCmdQueThread.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkVT/inc/IState.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkVT/MtkVTCamAdapter.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkVT/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkVT/Preview/PreviewBufMgr.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkVT/Preview/PreviewCmdQueThread.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/MtkVT/Preview/MtkVTCamAdapter.Preview.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/adapter/BaseCamAdapter.Instance.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/client/CamClient/Record/RecordClient.Thread.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/client/CamClient/Record/RecordClient.dump.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/client/CamClient/Record/RecBufManager.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/client/CamClient/Record/RecBufManager.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/client/CamClient/Record/RecordClient.BufOps.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/client/CamClient/Record/RecordClient.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/client/CamClient/Record/RecordClient.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/client/CamClient/Record/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/client/CamClient/PreviewFeature/PreviewFeatureBase.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/client/CamClient/PreviewFeature/PreviewFeature.Thread.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/client/CamClient/PreviewFeature/PreviewFeatureBase.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/client/CamClient/PreviewFeature/inc/IFeatureClient.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/client/CamClient/PreviewFeature/MotionTrack/MotionTrackClient.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/client/CamClient/PreviewFeature/MotionTrack/MotionTrackClient.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/client/CamClient/PreviewFeature/MotionTrack/MotionTrackClient.Scenario.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/client/CamClient/PreviewFeature/MotionTrack/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/client/CamClient/PreviewFeature/MAV/MAVClient.Scenario.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/client/CamClient/PreviewFeature/MAV/MAVClient.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/client/CamClient/PreviewFeature/MAV/MAVClient.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/client/CamClient/PreviewFeature/MAV/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/client/CamClient/PreviewFeature/Panorama/PanoramaClient.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/client/CamClient/PreviewFeature/Panorama/PanoramaClient.Scenario.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/client/CamClient/PreviewFeature/Panorama/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/client/CamClient/PreviewFeature/Panorama/PanoramaClient.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/client/CamClient/PreviewFeature/PreviewFeatureClient.BufOps.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/client/CamClient/PreviewFeature/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/client/CamClient/inc/CamUtils.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/client/CamClient/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/client/CamClient/FD/FDClient.BufOps.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/client/CamClient/FD/FDClient.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/client/CamClient/FD/FDClient.Scenario.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/client/CamClient/FD/inc/IAsdClient.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/client/CamClient/FD/FDClient.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/client/CamClient/FD/FDClient.Thread.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/client/CamClient/FD/Asd/AsdClient.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/client/CamClient/FD/Asd/AsdClient.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/client/CamClient/FD/Asd/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/client/CamClient/FD/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/client/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/v1/hal/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/v1/device/MtkAtvCam1Device.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/device/MtkAtvCam1Device.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/v1/device/MyUtils.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/device/DefaultCam1Device.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/mtkcam/v1/device/DefaultCam1Device.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/v1/device/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/mtkcam/v1/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/pq/jni/mhal_jni.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/bwc/ut/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/bwc/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/audio/aud_drv/AudioFtm.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/audio/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/audio/A2dpAudioInterface_FMoBT.cpp: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/audio/include/AudioFtm.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/aal/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/m4u/it2/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/m4u/it/m4u_it.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/m4u/it/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/m4u/m4u_lib.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/m4u/m4u_lib.cpp: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/m4u/ut/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/m4u/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/vcodec/common/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/vcodec/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/include/mtkcam/camshot/_callbacks.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/include/mtkcam/camshot/ICamShot.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/include/mtkcam/camshot/IMultiShot.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/include/mtkcam/camshot/_buffers.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/include/mtkcam/camshot/_params.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/include/mtkcam/camshot/IBurstShot.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/include/mtkcam/camshot/ISingleShot.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/include/mtkcam/camshot/ISImager.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/include/mtkcam/algorithm/libfdft/MTKDetectionErrCode.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/include/mtkcam/algorithm/libfdft/MTKDetection.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/include/mtkcam/algorithm/libfdft/AppFDFT_SW.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/include/mtkcam/algorithm/libfdft/MTKDetectionCommon.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/include/mtkcam/algorithm/libfdft/MTKDetectionType.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/include/mtkcam/algorithm/libcore/MTKCoreType.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/include/mtkcam/algorithm/libcore/MTKCoreErrCode.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/include/mtkcam/algorithm/libpano3d/MTKPano3DType.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/include/mtkcam/algorithm/libpano3d/MTKPano3D.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/include/mtkcam/algorithm/libpano3d/MTKPano3DErrCode.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/include/mtkcam/algorithm/libpano3d/AppPano3D.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/include/mtkcam/algorithm/libutility/kal_release.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/include/mtkcam/algorithm/libutility/mm_comm_def.h:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/hardware/include/mtkcam/algorithm/libutility/MTKUtilErrCode.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/include/mtkcam/algorithm/libutility/MTKUtilType.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/include/mtkcam/algorithm/libot/MTKOT.h:* is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/include/mtkcam/algorithm/libot/MTKOTErrCode.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/include/mtkcam/algorithm/libot/AppSingleOT.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/include/mtkcam/algorithm/libot/MTKOTType.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/include/mtkcam/algorithm/libot/MTKOTType.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/include/mtkcam/algorithm/libmav/MTKMav.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/include/mtkcam/algorithm/libmav/MTKMavType.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/include/mtkcam/algorithm/libmav/MTKMavErrCode.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/include/mtkcam/algorithm/libmav/MTKMavCommon.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/include/mtkcam/algorithm/libmav/AppMav.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/include/mtkcam/algorithm/libmfbmm/mtkmfbmm.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/include/mtkcam/algorithm/libmfbmm/MTKMfbmmType.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/include/mtkcam/algorithm/libmfbmm/MTKMfbmmErrCode.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/include/mtkcam/algorithm/libmfbmm/AppMfbmm.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/include/mtkcam/algorithm/libeis/MTKEisErrCode.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/include/mtkcam/algorithm/libeis/MTKEisType.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/include/mtkcam/algorithm/libeis/AppEis.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/include/mtkcam/algorithm/libeis/MTKEis.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/include/mtkcam/algorithm/libhdr/MTKHdrErrCode.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/include/mtkcam/algorithm/libhdr/MTKHdrType.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/include/mtkcam/algorithm/libhdr/MTKHdr.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/include/mtkcam/algorithm/libhdr/AppHdr.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/include/mtkcam/algorithm/libfb/MTKFaceBeautyErrCode.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/include/mtkcam/algorithm/libfb/MTKFaceBeautyType.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/include/mtkcam/algorithm/libfb/MTKFaceBeautyType.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/include/mtkcam/algorithm/libfb/AppFaceBeauty.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/include/mtkcam/algorithm/libfb/MTKFaceBeauty.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/include/mtkcam/algorithm/lib3a/af_algo_if.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/include/mtkcam/algorithm/lib3a/awb_algo_if.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/include/mtkcam/algorithm/lib3a/ae_algo_if.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/include/mtkcam/algorithm/lib3a/dynamic_ccm.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/include/mtkcam/algorithm/libwarp/MTKWarpType.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/include/mtkcam/algorithm/libwarp/MTKWarp.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/include/mtkcam/algorithm/libwarp/AppMavWarpSw.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/include/mtkcam/algorithm/libwarp/MTKWarpErrCode.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/include/mtkcam/algorithm/libwarp/AppPanoWarpSw.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/include/mtkcam/algorithm/libwarp/AppMavWarp.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/include/mtkcam/algorithm/libwarp/AppPanoWarp.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/include/mtkcam/algorithm/libasd/AppAsd.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/include/mtkcam/algorithm/libasd/MTKAsdErrCode.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/include/mtkcam/algorithm/libasd/MTKAsdType.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/include/mtkcam/algorithm/libasd/MTKAsd.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/include/mtkcam/algorithm/libautopano/AppAutorama.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/include/mtkcam/algorithm/libautopano/MTKAutorama.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/include/mtkcam/algorithm/libautopano/MTKAutoramaType.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/include/mtkcam/algorithm/libautopano/MTKAutoramaErrCode.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/include/mtkcam/algorithm/libmotion/MTKMotionType.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/include/mtkcam/algorithm/libmotion/AppMavMotion.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/include/mtkcam/algorithm/libmotion/MTKMotionErrCode.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/include/mtkcam/algorithm/libmotion/MTKMotion.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/include/mtkcam/algorithm/libmotion/AppPanoMotion.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/include/mtkcam/campipe/_callbacks.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/include/mtkcam/campipe/_params.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/include/mtkcam/campipe/IPostProcPipe.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/include/mtkcam/campipe/_buffer.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/include/mtkcam/campipe/_ports.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/include/mtkcam/campipe/ICamIOPipe.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/include/mtkcam/campipe/_identity.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/include/mtkcam/campipe/_scenario.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/include/mtkcam/campipe/IXdpPipe.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/include/mtkcam/campipe/IPipe.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/include/mtkcam/campipe/ISamplePipe.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/include/mtkcam/common/camutils/HwMisc.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/include/mtkcam/common/camutils/CamFormat.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/include/mtkcam/common/hw/hwstddef.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/include/mtkcam/common/faces.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/include/mtkcam/drv/tpipe_drv.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/include/mtkcam/hwutils/CameraProfile.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/include/mtkcam/hwutils/CameraProfile_common.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/include/mtkcam/hwutils/CameraProfile_v1.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/include/mtkcam/acdk/cct_feature.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/include/mtkcam/featureio/autorama_hal_base.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/include/mtkcam/featureio/tdri_mgr.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/include/mtkcam/featureio/motiontrack_hal_base.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/include/mtkcam/featureio/facebeautify_hal_base.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/include/mtkcam/featureio/3DF_hal_base.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/include/mtkcam/featureio/EIS_Type.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/include/mtkcam/featureio/eis_hal_base.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/hardware/include/mtkcam/v1/hwscenario/IhwScenario.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/hardware/include/mtkcam/v1/config/PriorityDefs.h: * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
mediatek/platform/mt6582/Trace/preloader.cmm:; herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/frameworks/libmtkplayer/VibSpkAudioPlayer.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/frameworks/libmtkplayer/FMAudioPlayer.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/frameworks/libmtkplayer/mATVAudioPlayer.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/frameworks/libmtkplayer/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/lk/disp_drv_dbi.c:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/lk/mt8193_init.c: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/lk/mt_pmic_wrap_init.c: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/lk/disp_drv_dpi.c:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/lk/mt8193_ckgen.c: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/lk/msdc.c:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/lk/disp_assert_layer.c:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/lk/dpi_drv.c: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/lk/dpi_drv.c: * herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/lk/mt8193_i2c.c: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/lk/dsi_drv.c: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/lk/dsi_drv.c:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/lk/mt_kernel_power_off_charging.c: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/lk/include/platform/disp_drv_log.h: * herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/lk/include/platform/disp_drv.h:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/lk/include/platform/sec_devinfo.h:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/lk/include/platform/dpi_reg.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/lk/include/platform/dpi_reg.h:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/lk/include/platform/lcd_reg.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/lk/include/platform/lcd_reg.h:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/lk/include/platform/mt_irq.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/lk/include/platform/mt_disp_drv.h:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/lk/include/platform/mt_logo.h:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/lk/include/platform/mt_uart.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/lk/include/platform/msdc.h:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/lk/include/platform/mtk_wdt.h:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/lk/include/platform/disp_drv_platform.h:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/lk/include/platform/mtk_auxadc_sw.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/lk/include/platform/dsi_reg.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/lk/include/platform/dsi_reg.h:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/lk/include/platform/mt8193.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/lk/include/platform/dpi_drv.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/lk/include/platform/dpi_drv.h:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/lk/include/platform/mt_gpt.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/lk/include/platform/sec_status.h:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/lk/include/platform/lcd_drv.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/lk/include/platform/lcd_drv.h:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/lk/include/platform/msdc_cfg.h:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/lk/include/platform/disp_assert_layer.h:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/lk/include/platform/dsi_drv.h: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/lk/include/platform/dsi_drv.h:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/lk/lcd_drv.c: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/mt6582/lk/lcd_drv.c:* herein is confidential. The software may not be copied and the information
mediatek/platform/mt6582/lk/mtk_auxadc.c: * is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/platform/Android.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/build/makeMtk:# herein is confidential. The software may not be copied and the information
mediatek/config/common/ProjectConfig.mk:# is confidential and proprietary to MediaTek Inc. and/or its licensors.
mediatek/config/mt6582/media_codecs.xml: an unpublished work. This program is confidential and proprietary to the
mk:# herein is confidential. The software may not be copied and the information</pre>
</blockquote>
<br />
Needless to say, after this, I didn't bother to look deeper into the source code as licensing is obviously wrong.<br />
<br />
I've lost interest in buying this phone. I just have one question for Canonical and bq: Am I wrong in anything I'm stating here? Is there a more proper source code release anywhere with appropriate license headers? Does buyers of your device get appropriately licensed source code delivery of their kernel and clear information of how to get it when they receive the device?<br />
<blockquote class="tr_bq">
</blockquote>
</div>
</div>
Carsten Munkhttp://www.blogger.com/profile/06933926472752734837noreply@blogger.com7tag:blogger.com,1999:blog-4951750913288967286.post-5577546553087877002013-11-03T21:24:00.002+01:002013-11-04T17:48:19.436+01:00A SailfishOS Co-creators Community in 2014?<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="" id="magicdomid2" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="" style="cursor: auto; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-bottom: 1px; padding-top: 1px;">co-created by </span><span class="b" style="cursor: auto; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-bottom: 1px; padding-top: 1px;"><b>Filip Kłębczyk</b></span><span class="" style="cursor: auto; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-bottom: 1px; padding-top: 1px;"> and </span><span class="b" style="cursor: auto; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-bottom: 1px; padding-top: 1px;"><b>Carsten Munk</b></span></div>
<div class="ace-line" id="magicdomid2994" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<br /></div>
<div class="" id="magicdomid4" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="b" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;"><b>Introduction</b></span></div>
<div class="" id="magicdomid5" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<br /></div>
<div class="" id="magicdomid6" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;">There is a challenge that stands before Jolla and that is how to create a well working community that would support the efforts of the company and help build the ecosystem around the Sailfish OS and Jolla's products. Until now Jolla has been very successful in creating a large community of fans, especially in Finland, so in other words the potential future customers of Jolla devices. </span></div>
<div class="" id="magicdomid7" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<br /></div>
<div class="" id="magicdomid8" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;">Creating demand for the products is needed, but nowadays successful mobile products also require developers willing to develop native software for them and do other kind of community contributions. </span></div>
<div class="" id="magicdomid9" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<br /></div>
<div class="" id="magicdomid10" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;">That is needed especially because Jolla is a young company and has limited resources. In order to compete with big mobile devices market players like Samsung or Apple, Jolla has to utilise community potential as much as it is possible. </span></div>
<div class="" id="magicdomid11" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<br /></div>
<div class="" id="magicdomid12" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;">In order to make that happen, certain steps must be taken to attract people, not only previously connected with Maemo and MeeGo platforms, but also completely new ones or coming from other platforms/backgrounds. </span></div>
<div class="" id="magicdomid13" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<br /></div>
<div class="" id="magicdomid14" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;">Building a community of co-creators in which everyone would feel needed and respected is a challenging task and this document addresses possible ways how that could be handled by Jolla.</span></div>
<div class="" id="magicdomid15" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<br /></div>
<div class="" id="magicdomid15" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<b style="font-size: 12.727272033691406px; line-height: 16.988636016845703px;">Analysis of community programs/interaction in other companies/projects.</b></div>
<div class="" id="magicdomid17" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<br /></div>
<div class="" id="magicdomid18" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="i" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;"><i>Maemo/MeeGo (Nokia, Nokia and Intel)</i></span></div>
<div class="" id="magicdomid19" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<br /></div>
<div class="ace-line" id="magicdomid1182" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;">Nokia's method of building Maemo community was very effective. The act of providing a whole portal - maemo.org with mailing lists to discuss and tools to host application projects was a good bet. It was amongst the first to provide this kind of infrastructure for mobile device application developers.</span></div>
<div class="ace-line" id="magicdomid1183" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<br /></div>
<div class="ace-line" id="magicdomid1184" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;">A large focus was placed on open source application developers and less on the participation in OS development, though that was later improved by supporting community projects such as community-supported updates to the device. Commercial software developers were handled through Forum Nokia in a seperate manner, which was tried to be unified later on.</span></div>
<div class="" id="magicdomid24" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<br /></div>
<div class="ace-line" id="magicdomid1185" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;">Nokia also organized events like Maemo summits and actively participated in existing open source conferences, which were important for integrating community also outside the Internet. Additionally, developer programs with early access and providing developer devices also boosted interest in the platform.</span></div>
<div class="ace-line" id="magicdomid331" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<br /></div>
<div class="ace-line" id="magicdomid1186" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;">Nokia of course didn't avoid mistakes such as making bad decisions in areas where community worked well itself. Old habits of corporate behaviour were hard to kill and so many initiatives were not properly balanced with the needs of a growing community.</span></div>
<div class="" id="magicdomid28" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<br /></div>
<div class="ace-line" id="magicdomid1187" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;">One of the bad things that happened in the opinion of the community was that Maemo platform was abandoned in favour of MeeGo platform, which was dramatically different and Nokia support ended too early. On positive side is the fact that community is still supporting the Maemo platform and that content and software was moved to community server infrastructure.</span></div>
<div class="ace-line" id="magicdomid641" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<br /></div>
<div class="ace-line" id="magicdomid1188" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;">MeeGo(.com) project put a lot of emphasis on working in the open, upstreaming, inclusiveness and meritocracy. Main problem was the realisation in practice of all above and changing old patterns of working with the result that MeeGo was very negatively perceived by the community since it in practice was a regression from the previous state at maemo.org.</span></div>
<div class="ace-line" id="magicdomid1038" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<br /></div>
<div class="ace-line" id="magicdomid1189" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;">The introduction of new project also came with new infrastructure, so in result there were actually two places for communication - new forums.meego.com and old talk.maemo.org and hence it divided the community. A full migration from maemo.org community to the MeeGo project never happened.</span></div>
<div class="ace-line" id="magicdomid1562" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<br /></div>
<div class="ace-line" id="magicdomid1563" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="i" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;"><i>BlackBerry 10 (BlackBerry, previously RIM)</i></span></div>
<div class="ace-line" id="magicdomid1564" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<br /></div>
<div class="ace-line" id="magicdomid1565" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;">BlackBerry was very successful in attracting developers from different communities in 2012. The company organized several big events, but most importantly a lot of small 1-day events around the world. They've hired a lot of evangelists, often connected with former communities (like MeeGo or WebOS). A lot of attention by BlackBerry has been put on attracting people who were previously developing Qt applications for Nokia platforms (Harmattan, Symbian) to develop for BB10. </span></div>
<div class="ace-line" id="magicdomid1566" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<br /></div>
<div class="ace-line" id="magicdomid1567" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;">The main form of convincing was giving developer devices to those who already wrote some mobile apps in the past and were willing to write/port an app to BB10. In addition to that to motivate even more those who actually wrote/ported app, BlackBerry has given limited developer edition of the final device in exchange for developer device. </span></div>
<div class="ace-line" id="magicdomid1568" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<br /></div>
<div class="ace-line" id="magicdomid1569" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;">Additionally developers, including Android developers were being convinced to port their applications and games during virtual events called porthathons and as a reward money was offered for each ported app. One of the problems BlackBerry had at some point, was trouble in handling all those people they've attracted with different promises given by different evangelists, which caused some bad PR in social media like Twitter. Also some people pointed that rules of Built for BlackBerry program weren't so clear.</span></div>
<div class="ace-line" id="magicdomid1570" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<br /></div>
<div class="ace-line" id="magicdomid2684" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;">BlackBerry was also succesful in cooperating with universities, by creating the BlackBerry Academy program. They were providing devices for usage in laboratories and student projects, but also materials like ready to use slides and lab scenarios. Besides that, BlackBerry used that channel also to inform about the events like coding camps they were organizing.</span></div>
<div class="" id="magicdomid44" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<br /></div>
<div class="" id="magicdomid45" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="i" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;"><i>Tizen (Samsung and Intel)</i></span></div>
<div class="" id="magicdomid46" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<br /></div>
<div class="ace-line" id="magicdomid1572" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;">The Tizen project website became public in September 27th 2011 with the announcement on the same day at meego.com that community should now move to MeeGo successor - Tizen. </span></div>
<div class="ace-line" id="magicdomid1322" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<br /></div>
<div class="ace-line" id="magicdomid1323" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;">Even though the website had similar layout and communication channels offer to community like meego.com had, the big move didn't happen. The main problem was lack of communication with community and lack of announcements - Tizen website was mostly dead until release of the source code preview in January 2012, so for around 4 months. </span></div>
<div class="ace-line" id="magicdomid1727" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<br /></div>
<div class="ace-line" id="magicdomid1728" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;">Another problem was that the project was divided between Samsung and Intel, without much cooperation between those two companies to be seen in public. There was also not enough focus on the open source aspects. What is more Samsung and Intel at beginning weren't much interested in attending 3rd party conferences and promoting the platform, instead they did a major event in San Francisco where they did distribute developer devices to attendees. Later, after the conference, they've also provided some developer devices to those who applied through their website. </span></div>
<div class="ace-line" id="magicdomid1729" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<br /></div>
<div class="ace-line" id="magicdomid1730" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;">The situation got improved when Tizen 2.0 was released - website got renewed and some more succesful actions to attract interest have been taken. Tizen is now more visible at the events and the conference in San Francisco is still a major event, but not the only one now. What is important is that the Tizen project looks for building community of both app and platform developers - splitting the website with sections for each group.</span></div>
<div class="ace-line" id="magicdomid1731" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<br /></div>
<div class="ace-line" id="magicdomid1732" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;">Also, it is worth to mention that Samsung and Intel didn't offer any program for cooperation with universities although some small, not centrally coordinated steps, are being taken in that direction.</span></div>
<div class="" id="magicdomid49" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<br /></div>
<div class="" id="magicdomid50" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="i" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;"><i>Ubuntu Touch (Canonical)</i></span></div>
<div class="" id="magicdomid51" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<br /></div>
<div class="ace-line" id="magicdomid1347" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;">Canonical started it's actions by announcing the plan to introduce Ubuntu on different mobile devices. Although their first mobile Ubuntu "version" was mainly a set of mockups, an important part of that move was providing an image to popular Android devices like Nexus 7, so a lot of people could actually try and have a feel what Ubuntu on mobile devices will be like. </span></div>
<div class="ace-line" id="magicdomid1349" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<br /></div>
<div class="ace-line" id="magicdomid1599" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;">It was all connected with a professionally prepared website, where developers were suggested to sign-up for more news and even volunteer to help in making first apps. A form was provided where interested developers could leave their e-mail contact and information about their skills in C++, Javascript and QML. </span></div>
<div class="ace-line" id="magicdomid1602" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<br /></div>
<div class="ace-line" id="magicdomid1600" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;">As a result Canonical from community formed teams of people working at certain Ubuntu Touch apps. Meeting of those teams took place publicly on IRC and at least on begining course of those meeting was available on the Ubuntu Touch Wiki. All the above efforts were quite easy as Ubuntu is a strong community brand.</span></div>
<div class="ace-line" id="magicdomid1351" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<br /></div>
<div class="ace-line" id="magicdomid1354" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;">Things that are certainly on the good side is regular blogging by Mark Shuttelworth. Canonical also managed to drive successful, from marketing point of view, Ubuntu Edge crowdfunded campaign. Despite they have failed in gathering the required sum, they have managed to spread the word about the platform effectively on the Internet and outside of it, reaching popular medias and attracting new people to join the project.</span></div>
<div class="ace-line" id="magicdomid1355" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<br /></div>
<div class="ace-line" id="magicdomid1733" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;">The main advantage of the Ubuntu Touch community is that it is extension of an already well known Ubuntu community as Ubuntu Touch is a version of Ubuntu for new mobile devices. </span></div>
<div class="ace-line" id="magicdomid1519" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<br /></div>
<div class="ace-line" id="magicdomid1734" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;">Canonical was until last year organizing Ubuntu Developer Summits events which happened in different places around the world (mainly U.S. and Europe) and were targeted at the community of developers working on Ubuntu. Now they've replaced by more frequent virtual developer summits happening every quarter. That makes participating in them more accesible to people that couldn't afford travelling to physical summits, but the downside is that community misses the summits where real face-to-face contact was possible. What is more, not everyone likes or feels comfortable in video chats.</span></div>
<div class="" id="magicdomid55" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<br /></div>
<div class="" id="magicdomid56" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="i" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;"><i>Firefox OS</i></span></div>
<div class="" id="magicdomid57" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<br /></div>
<div class="ace-line" id="magicdomid1357" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;">Community around Firefox OS is relatively new one as it's a young platform pushed by Mozilla. Project was called Boot to Gecko on beginning and it was announced on the mozilla.dev.platform mailing list back in 2011.</span></div>
<div class="ace-line" id="magicdomid1359" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<br /></div>
<div class="ace-line" id="magicdomid1735" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;">Since the beginning Mozilla has been quite active in the public space, organizing it's own events and taking part in 3rd party events, so in other words the project has good visibility. </span></div>
<div class="ace-line" id="magicdomid1658" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<br /></div>
<div class="ace-line" id="magicdomid2626" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;">Mozilla and it's partners takes also advantage of appearance in places like hackerspaces. Futhermore, Mozilla also seems to delegate a lot of activities to already established local groups or actively seeks new ones. For example they've aided people that were creating community websites by providing trainings for them and including in the national Firefox OS launch team.</span></div>
<div class="ace-line" id="magicdomid2917" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<br /></div>
<div class="ace-line" id="magicdomid2918" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;">On the platform developer side, there is a gap in terms of openness due to tight project relations with ODMs making Firefox OS devices where hardware adaptation licensing and availability is making platform developer entry difficult.</span></div>
<div class="ace-line" id="magicdomid2509" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<br /></div>
<div class="" id="magicdomid61" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="b i" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;"><b><i>How Jolla could improve it's relations with community and expand it?</i></b></span></div>
<div class="" id="magicdomid62" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<br /></div>
<div class="" id="magicdomid63" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;">Understanding the needs and expectations community has from company is the key to maintaining good relations with community members and most of all expanding it by attracting new people. Healthy community is one that grows, actively participates and takes care of new challenges.</span></div>
<div class="" id="magicdomid64" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<br /></div>
<div class="" id="magicdomid65" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="i u" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;"><i><u>Communication and openness</u></i></span></div>
<div class="" id="magicdomid66" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<br /></div>
<div class="" id="magicdomid67" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="b" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;"><b>More contact with community where it is possible (not only open code but also open relations with community).</b></span></div>
<div class="" id="magicdomid68" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<br /></div>
<div class="ace-line" id="magicdomid1659" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;">For now the news sources are mostly third party pages and it is hard to follow what is new and what is officially confirmed and not just only a rumor or gossip. In other words social networks like Twitter for communicating news are clearly not enough.</span></div>
<div class="" id="magicdomid70" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<br /></div>
<div class="" id="magicdomid71" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;">A good solution would be preparing some dedicated page or blog for interaction (with RSS for those who only want to read what's new) and at least communicating announcements and new features there. </span></div>
<div class="" id="magicdomid72" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<br /></div>
<div class="ace-line" id="magicdomid1817" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;">Announcements like new versions of SailfishOS SDKs with changelogs are already happening on a mailing list, which is of course good practice, but finding those posts if someone's not a regular subscriber might be time consuming.</span></div>
<div class="" id="magicdomid74" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<br /></div>
<div class="ace-line" id="magicdomid1846" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="b" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;"><b>Public SailfishOS bug tracker and collaborating on reporting/fixing the bugs in the open is a must.</b></span></div>
<div class="" id="magicdomid76" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<br /></div>
<div class="" id="magicdomid77" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;">For now a devel mailing list is used for that purpose, which is only a workaround and not solution to the problem - especially that some of mentioned bugs don't get fixed or noticed at all.</span></div>
<div class="" id="magicdomid78" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<br /></div>
<div class="ace-line" id="magicdomid1847" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="b" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;"><b>The current community around SailfishOS and projects on which it is based (Mer, Nemo) is mostly consisting of people previously involved in Maemo and MeeGo projects.</b></span><span class="" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;"> </span></div>
<div class="ace-line" id="magicdomid1855" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<br /></div>
<div class="ace-line" id="magicdomid1856" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;">This situation is quite natural and understandable as SailfishOS is a successor of that projects. On the other hand it should also be an alarm as it shows that community is not growing and attracting new people. The solution would be putting more focus on diversity and also attracting contributors from outside of former Nokia's circles and communities like for example people from XDA developers forum. </span></div>
<div class="ace-line" id="magicdomid1673" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<br /></div>
<div class="ace-line" id="magicdomid1910" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;">Furthermore also actions focused on attracting women to get involved are needed as a male-only community is something not only badly perceived, but also a less creative place.</span></div>
<div class="" id="magicdomid82" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<br /></div>
<div class="" id="magicdomid83" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="b" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;"><b>Stimulating other companies to get involved/cooperate is also a must</b></span></div>
<div class="ace-line" id="magicdomid1936" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<br /></div>
<div class="ace-line" id="magicdomid1937" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;">An idea can be to create an ecosystem of specialized companies focused on different areas, instead of one main company doing everything from start till the end. To attract such cooperation in the areas that are important for companies and individuals some steps must be taken. Spreading the word and showing benefits of cooperation in Mer/Nemo and also maybe some financial encouragement like bounty programs.</span></div>
<div class="" id="magicdomid86" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<br /></div>
<div class="" id="magicdomid87" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="b" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;"><b>Gamifying community efforts</b></span></div>
<div class="" id="magicdomid88" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<br /></div>
<div class="" id="magicdomid89" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="i" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;"><i>Gamification ideas on community portal</i></span></div>
<div class="" id="magicdomid90" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<br /></div>
<div class="" id="magicdomid91" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;">* Point measuring system for certain activities where contributor is a player</span></div>
<div class="ace-line" id="magicdomid1940" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;">* Time point reduction - points gained by contributors dissappear with time, when contributor has no activity (motivate people to be active all the time, prevent making a glass wall between veterans and newcomers)</span></div>
<div class="" id="magicdomid93" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;">* Contributor profile to be similar like character profile in RPG games, so depending on type of contributions a person could earn certain character classes and gain levels in areas like code, design, documentation, community. Character classes could be for example - code wizard, design master and to make it more elastic a lot of mixed classes would be available</span></div>
<div class="" id="magicdomid94" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;">* Some community challenges/sprints every months/two months - porting applications marathons, finding bugs marathons etc</span></div>
<div class="" id="magicdomid95" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;">* Big minus points for offensive/arrogant or discouraging actions against newbies/newcomers (report abuse option)</span></div>
<div class="ace-line" id="magicdomid1948" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;">* Awarding people with possibilities such as meetings in person with Sailfish OS or Jolla device creators. Or maybe some special trainings for such people?</span></div>
<div class="" id="magicdomid97" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;">* Community metrics to show how community is developing</span></div>
<div class="" id="magicdomid98" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<br /></div>
<div class="" id="magicdomid99" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="b i" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;"><b><i>WARNING:</i></b></span></div>
<div class="" id="magicdomid100" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;">All the gamification ideas should be well balanced implemented with caution in order not to divide community, so to award all types of contribution (code, documentation, community building etc.). In other words every person being active in community should feel he/she is important part of the community and things he/she is doing are important. Evaluation of how gamification elements work and careful tuning will be certainly needed here.</span></div>
<div class="" id="magicdomid101" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<br /></div>
<div class="" id="magicdomid102" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="i" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;"><i>Developer documentation</i></span></div>
<div class="" id="magicdomid103" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<br /></div>
<div class="ace-line" id="magicdomid2010" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;">* In form of a wiki with possibility for non-Jolla employees to do moderated edits (moderators not only from Jolla, but also trusted community contributors should be involved in moderating)</span></div>
<div class="" id="magicdomid105" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;">* Two versions of documentation - one with user comments/feedback on bottom (maybe not only on bottom, but on the side also) of each page and one without user comments. Good example of that approach is PostgreSQL documentation. This could also be done as some layer you can enable with possible user corrections/patches on it. Bottom part could also contain links to some real code examples (apps), use cases of certain functions/components.</span></div>
<div class="" id="magicdomid106" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;">* Additional supplement of documentation could be cheat sheets (especially for beginners, but also for advanced)</span></div>
<div class="ace-line" id="magicdomid2919" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;">* Quick guides on how to migrate from other platforms for developers coming from different platforms such as Android, iOS, Windows Phone etc. </span></div>
<div class="" id="magicdomid108" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;">* For Android developers: Page about UX and other benefits an application will have if they'll create a native Sailfish app instead of just pushing Android app to Jolla store</span></div>
<div class="ace-line" id="magicdomid2677" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;">* Images, diagrams and other graphical elements will help to make documentation more attractive (maybe even comics or funny stories) and help to understand more deeply important/complex parts of it.</span></div>
<div class="ace-line" id="magicdomid2678" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;">* Ability to submit bugs in the documentation - currently it is not possible and many of the bugs mentioned on sailfish-devel@ mailing list seem not to get fixed and even if, there is usually no information about that.</span></div>
<div class="ace-line" id="magicdomid2920" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;">* Being open to suggestions from developers and community how the documentation should look like - some short survey about the form of documentation</span></div>
<div class="ace-line" id="magicdomid2921" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;">* Some screencasts and tutorials would be also a plus, beside that one place with links to all videos and other materials from talks about SailfishOS application development and connected topics that happened on the conferences and other events.</span></div>
<div class="" id="magicdomid113" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;">* Information what is the best way to do certain things on the platform - store data, store settings, access to hardware features etc.</span></div>
<div class="" id="magicdomid114" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;">* Besides official documentation and other materials website also regulary monitoring services like StackOverflow and answering questions there.</span></div>
<div class="" id="magicdomid115" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<br /></div>
<div class="" id="magicdomid116" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="b" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;"><b>Financing/sponsoring challenges:</b></span></div>
<div class="ace-line" id="magicdomid2922" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;">* Aid projects and groups of people collaborating instead of single person projects. In other words motivate people to collaborate with others on doing interesting/needed projects.</span></div>
<div class="" id="magicdomid118" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;">* Discount offerings for devices/accessories to most active people, but not giving devices for free</span></div>
<div class="" id="magicdomid119" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;">* Giving/borrowing devices to places like open devices labs/hackerspaces, where they would be accessible on-site for many people that would like to test their apps on Sailfish (or test self-made Other Halfs)</span></div>
<div class="" id="magicdomid120" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<br /></div>
<div class="" id="magicdomid121" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="b" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;"><b>Collaboration with groups/organizations/universities:</b></span></div>
<div class="ace-line" id="magicdomid2923" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;">* Collaboration with local Linux users groups in order to spread the word, involve people and to have help in organizing events (getting venues) etc.</span></div>
<div class="ace-line" id="magicdomid2924" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;">* Collaboration with hackerspaces, places where makers and co-creators usually gather</span></div>
<div class="" id="magicdomid124" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;">* Summer of Code like programs, but connected with projects during the semester (also a mentor from Jolla or Nemo community needed for each project)</span></div>
<div class="" id="magicdomid125" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;">* Devices can be provided/borrowed to partnering universities, but there should be a report every semester how the devices are effectively used, what kind of projects are being created by students etc.</span></div>
<div class="" id="magicdomid126" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;">* Group of some trusted advisors in each of the countries should be created, that could help Jolla to get the picture what groups/communities are there, which one are active etc. In other word some local coordinators/ambassadors.</span></div>
<div class="" id="magicdomid127" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<br /></div>
<div class="" id="magicdomid128" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="b" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;"><b>Events for community/partners:</b></span></div>
<div class="" id="magicdomid129" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;">* Have one annual big event, that moves between different countries (different place each year), involve local communities to help in organizing it</span></div>
<div class="" id="magicdomid130" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;">* Supporting local conferences, do mini-events on them (the thing is that Apple and Google are supporting and doing mainly only their own events, which from perspective of different conference organizers makes difficult to invite people representing those companies, which can be an advantage for Jolla). Supporting local events is much cheaper than doing own ones and is a great occasion to reach new people/communities.</span></div>
<div class="ace-line" id="magicdomid2925" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<br /></div>
<div class="ace-line" id="magicdomid2926" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;">These are the ideas we'd like to present. We encourage you to give us feedback and your improvement proposals in comments.</span></div>
<div class="ace-line" id="magicdomid2927" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<br /></div>
<div class="ace-line" id="magicdomid2928" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;"><b>Filip</b> (fk_lx) & <b>Carsten </b>(Stskeeps)</span></div>
<div class="ace-line" id="magicdomid2928" style="font-family: Arial, sans-serif; font-size: 12.727272033691406px; line-height: 16.988636016845703px; padding-right: 1px;">
<span class="" style="cursor: auto; padding-bottom: 1px; padding-top: 1px;"><br /></span></div>
</div>
Carsten Munkhttp://www.blogger.com/profile/06933926472752734837noreply@blogger.com13tag:blogger.com,1999:blog-4951750913288967286.post-49992729831369051742013-05-08T20:22:00.002+02:002013-05-08T21:34:40.014+02:00Wayland utilizing Android GPU drivers on glibc based systems, Part 2<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
In
this blog series, I am presenting a solution that I've developed
that enables the use of Wayland on top of Android hardware adaptations,
specifically the GPU drivers, but without actually requiring the OS to
be Bionic based. <br />
<br />
This is part 2 and will cover the actual server side (and a little bit about generic EGL implementation) of the solution. The <a href="http://mer-project.blogspot.fi/2013/04/wayland-utilizing-android-gpu-drivers.html" target="_blank">first part can be read here</a>. The third and last blog post will revolve around the client side solution and how you can use it today, as well as future work. There are a -lot- of links in this blog, please take a look at them to fully understand what is being explained.<br />
<br />
This work was and is done as part of <a href="http://pl.linkedin.com/in/carstenmunk/" target="_blank">my job</a> as Chief Research Engineer in <a href="http://www.jolla.com/" target="_blank">Jolla,</a> which develop <a href="http://www.sailfishos.org/" target="_blank">Sailfish OS, a mobile-optimized operating system</a> that has the flexibility, ubiquity and stability of the Linux core with a cutting edge user experience built with the renowned <a href="http://qt-project.org/" target="_blank">Qt</a> platform.<br />
<br />
The views and opinions expressed in this blog series are my own and not that of my employer.<br />
<br />
The aim is to have documented the proof of concept code and published it under a "LGPLv2.1 only" license,
for the benefit of many different communities and projects (Sailfish,
OpenWebOS, Qt Project, KDE, GNOME, Hawaii, Nemo Mobile, Mer Core based
projects, EFL, etc).<br />
<br />
This work is done with the hope that it will attract more contribution
and collaboration to bring this solution and Wayland in general into
wider use across the open source ecosystem and use a large selection of
reference device designs for their OS'es.<br />
<br />
<b>Rendering with OpenGL ES 2.0 to a screen with Android APIs</b><br />
<br />
In Android, when <a href="http://developer.mips.com/2012/04/11/learning-about-android-graphics-subsystem/" target="_blank">SurfaceFlinger</a> wants to render to the screen, it utilizes a class named <a href="https://android.googlesource.com/platform/frameworks/native/+/jb-mr0-release/libs/ui/FramebufferNativeWindow.cpp" target="_blank">FramebufferNativeWindow</a> which it passes to <a href="http://www.khronos.org/registry/egl/sdk/docs/man/xhtml/eglCreateWindowSurface.html" target="_blank">eglCreateWindowSurface</a>. As I mentioned in my previous post, on Android, when you use eglCreateWindowSurface you utilize a type/'class' named <a href="https://android.googlesource.com/platform/system/core/+/jb-dev/include/system/window.h" target="_blank">ANativeWindow</a>. FramebufferNativeWindow implements this type. This then means it gets buffers utilizing FramebufferNativeWindow, renders to them within the OpenGL ES 2.0 implementation and queues them to be shown on the screen utilizing the same FramebufferNativeWindow.<br />
<br />
But what happens under the hood? I'll try to explain with <a href="https://github.com/libhybris/libhybris/tree/master/hybris/egl/platforms/fbdev" target="_blank">libhybris' "fbdev" windowing system as an example. </a><br />
<br />
We're back to ANativeWindow - what libhybris' "fbdev" windowing system does is practically to do an implementation of ANativeWindow.<br />
<br />
When a OpenGL ES 2.0 implementation wants to have a buffer to render into, it will call the <a href="https://github.com/libhybris/libhybris/blob/master/hybris/egl/platforms/fbdev/fbdev_window.cpp#L134" target="_blank">dequeueBuffer</a> method of an ANativeWindow. This usually happens upon surface creation or when you have done eglSwapBuffers and would like a new fresh buffer to render into. <br />
<br />
You may have heard of fancy things like <a href="http://www.tweakguides.com/Graphics_9.html" target="_blank">'vsync'</a> and you know that you have to follow signaling of vsync to avoid things like tearing. On the occasion that you do not have any buffers available (as some might be waiting to be posted to the framebuffer), you will need to <a href="https://github.com/libhybris/libhybris/blob/master/hybris/egl/platforms/fbdev/fbdev_window.cpp#L146" target="_blank">block and wait for a non-busy buffer</a> to be available within a dequeueBuffer implementation - don't just return NULL. Use <a href="http://linux.die.net/man/3/pthread_cond_wait" target="_blank">pthread conditions and be CPU-friendly.</a> This also makes sure you will block in eglSwapBuffers()<br />
<br />
A quick note for implementors of ANativeWindow: Many OpenGL ES drivers are very temperamental. When it relays the information to you that it wants to set your buffer count to 4 buffers, it means that it wants 4 buffers and only to see those 4 buffers in the lifetime until usage or format changes. Mess up and it will happily crash on you - these drivers do not come with debug symbols.<br />
<br />
When you want to allocate graphical buffers you naturally need gralloc to do so - gralloc is a module that is accessible through Android's <a href="https://github.com/libhybris/libhybris/blob/master/hybris/include/android/hardware/hardware.h" target="_blank">libhardware API </a>- in practice, gralloc is a shared object that libhardware dlopen()s, see /system/lib/hw/ for examples of these (gps, lights, sensors, etc).<br />
<br />
When loading gralloc you will naturally get the interface of the <a href="https://github.com/libhybris/libhybris/blob/master/hybris/egl/platforms/fbdev/eglplatform_fbdev.cpp#L32" target="_blank">gralloc module itself</a>, but when you initialize gralloc, you get an <a href="https://github.com/libhybris/libhybris/blob/master/hybris/egl/platforms/fbdev/eglplatform_fbdev.cpp#L32" target="_blank">allocation device interface</a> where you can allocate and free buffers with, by <a href="https://github.com/libhybris/libhybris/blob/master/hybris/egl/platforms/fbdev/eglplatform_fbdev.cpp#L32" target="_blank">specifying parameters</a> such as width, height, <a href="https://github.com/libhybris/libhybris/blob/master/hybris/egl/platforms/fbdev/eglplatform_fbdev.cpp#L32" target="_blank">usage</a>, <a href="https://github.com/libhybris/libhybris/blob/master/hybris/include/android/system/graphics.h#L42" target="_blank">format</a>. Usage is important since we'd like to <a href="https://github.com/libhybris/libhybris/blob/master/hybris/include/android/hardware/gralloc.h#L76" target="_blank">allocate buffers for use with the framebuffer</a> - so when we allocate a buffer, we allocate with usage <a href="https://github.com/libhybris/libhybris/blob/master/hybris/egl/platforms/fbdev/fbdev_window.cpp#L431" target="_blank">'usage | GRALLOC_USAGE_HW_FB'</a>.<br />
<br />
The return value of the alloc() call is a integer value indicating if it was a success, a native handle in the provided memory location (read my previous blog post for an explanation on what this is) and <a href="http://msdn.microsoft.com/en-us/library/windows/desktop/aa473780%28v=vs.85%29.aspx" target="_blank">stride of the buffer</a>.<br />
<br />
We then wrap the handle and related information in a <a href="https://github.com/libhybris/libhybris/blob/master/hybris/include/android/system/window.h#L86" target="_blank">ANativeWindowBuffer structure</a> and pass it back to the caller. Please note two things in this structure. <a href="https://github.com/libhybris/libhybris/blob/master/hybris/include/android/system/window.h#L82" target="_blank">incRef and decRef</a> - they are very important. <a href="https://github.com/libhybris/libhybris/blob/master/hybris/egl/platforms/common/nativewindowbase.cpp#L36" target="_blank">You will need to implement reference counting</a> and you will need to increase/decrease your reference counting matching your own references to it. When reference count reaches 0, the buffer should destruct.<br />
<br />
Eventually we will then get the buffer back from the caller in queueBuffer -- but how do we now send it to the framebuffer to be displayed?<br />
<br />
In the initialization of our framebuffer window, we should have also opened the framebuffer with the libhardware API. It is in <a href="https://github.com/libhybris/libhybris/blob/master/hybris/egl/platforms/fbdev/eglplatform_fbdev.cpp#L30" target="_blank">the same hw_module_t as gralloc.</a> The <a href="https://github.com/libhybris/libhybris/blob/master/hybris/include/android/hardware/fb.h#L38" target="_blank">framebuffer interface</a> includes handy information such as the width, height, format, dpi and a few methods to actually utilize the framebuffer. The <a href="https://github.com/libhybris/libhybris/blob/master/hybris/include/android/hardware/fb.h#L126" target="_blank">most important one for us is post()</a>. This allows us to flip an actual buffer to the screen - utilizing the buffer handle, provided it has the same width, height/format as framebuffer and is allocated with appropiate usage (framebuffer usage). This call will on occasion block.<br />
<br />
We have to be careful not to deliver the current front buffer to the caller in dequeueBuffer until we have replaced it with another at the front of the screen or we may see flickering.<br />
<br />
A note to users of libhybris: there may be some Android adaptations that implement a custom framebuffer interface requiring extra implementation to achieve sane posting of frames that blocks. Check your <a href="https://android.googlesource.com/platform/frameworks/native/+/jb-mr0-release/libs/ui/FramebufferNativeWindow.cpp" target="_blank">FramebufferNativeWindow.cpp</a> for this. This does not seem to be pervasive but I've encountered it on HP Touchpad with CyanogenMod/ICS. <br />
<br />
<b>Server-side Wayland enablement</b><br />
<br />
The wayland protocol has two sides, server - and client. But unlike X, there is no "Wayland server". The implementation of the protocol communication for each side is implemented in respectively libwayland-server and libwayland-client. When implementing a compositor, you then utilize libwayland-server API to create server sockets, do communication, etc.<br />
<br />
But how does the EGL stack get to be connected to a Wayland server instance when the associated EGLDisplay the stack is connected to, probably isn't a Wayland display? (note: may be in nested compositors - ie, a Wayland compositor running as a client to another Wayland compositor) That's where the next topic comes in:<br />
<br />
<b><a href="http://cgit.freedesktop.org/mesa/mesa/tree/docs/specs/WL_bind_wayland_display.spec">EGL extensions - EGL_WL_bind_wayland_display</a> </b><br />
<br />
In order to connect your EGL stack to a Wayland display, you need to bind to one - you do this with <a href="http://cgit.freedesktop.org/mesa/mesa/tree/docs/specs/WL_bind_wayland_display.spec#n53" target="_blank">eglBindWaylandDisplay(EGLDisplay, struct wl_display *)</a> from the EGL_WL_bind_wayland_display. <a href="https://github.com/libhybris/libhybris/blob/master/hybris/egl/platforms/common/eglplatformcommon.cpp" target="_blank">In libhybris, we provide this extension</a> when it has been configured with --enable-wayland and available in most windowing systems (we provide an environment variable EGL_PLATFORM to select between 'windowing systems). Since the extension is not just part of the Wayland windowing system, it is possible to do nested Wayland compositors.<br />
<br />
But what happens in libhybris when you bind to a Wayland display? We call the <a href="https://github.com/libhybris/libhybris/blob/master/hybris/egl/platforms/common/server_wlegl.cpp#L131" target="_blank">server_wlegl_create method in server_wlegl.cpp</a>. What this does is to add a global object to the Wayland protocol - with a certain interface, - but where is this interface defined? As it has to be shared between both client and server; it is <a href="https://github.com/libhybris/libhybris/blob/master/hybris/egl/platforms/common/wayland-android.xml" target="_blank">specified in a xml format file that</a> is then converted by a <a href="https://github.com/libhybris/libhybris/blob/master/hybris/egl/platforms/common/Makefile.am#L18" target="_blank">tool called 'wayland-scanner' into .c files that are then linked into your client or server part</a>. <a href="https://github.com/libhybris/libhybris/blob/master/hybris/egl/platforms/common/server_wlegl.cpp#L114" target="_blank">We then implement the actual interfaces for server side</a> in our code.<br />
<b><br /></b>
<b>Creation of buffers</b><br />
<b><br /></b>
When a client requests to create a buffer, <a href="https://github.com/libhybris/libhybris/blob/master/hybris/egl/platforms/common/wayland-android.xml#L40" target="_blank">it first creates an Android native handle object on server side</a> and shares the client's native handle through the Wayland protocol (<a href="https://github.com/libhybris/libhybris/blob/master/hybris/egl/platforms/common/wayland-android.xml#L72" target="_blank">utilizing the support for fd passing</a>) and then actually asks to <a href="https://github.com/libhybris/libhybris/blob/master/hybris/egl/platforms/common/wayland-android.xml#L52" target="_blank">create the buffer</a> (note: we actually created the buffer on client side, now we're just sharing it with the compositor and letting it know the details).<br />
<br />
When that happens on libhybris side, is when a handle is created, we <a href="https://github.com/libhybris/libhybris/blob/master/hybris/egl/platforms/common/server_wlegl_handle.cpp#L97" target="_blank">construct an Android native_handle_t on server side - with the correct fd and integer information</a>. We then <a href="https://github.com/libhybris/libhybris/blob/master/hybris/egl/platforms/common/server_wlegl_buffer.cpp#L87" target="_blank">map this with registerBuffer into the compositor's address space so the buffer is available to EGL and related stacks.</a><br />
<br />
Once we have the handle in place, we can now create an Android native buffer - like we made ANativeBuffer on client side in the framebuffer/generic window scenario, <a href="https://github.com/libhybris/libhybris/blob/master/hybris/egl/platforms/common/server_wlegl_buffer.cpp#L93" target="_blank">we make one representing the remote buffer with the reconstructed handle</a>. <a href="https://github.com/libhybris/libhybris/blob/master/hybris/egl/platforms/common/server_wlegl_buffer.cpp#L76" target="_blank">Finally we construct a Wayland object referencing this Android buffer and increase the reference counter of the Android buffer - and pass the buffer back to the Wayland client.</a><br />
<br />
When we want to destroy the buffer again (well, when the reference count reaches 0), <a href="https://github.com/libhybris/libhybris/blob/master/hybris/egl/platforms/common/server_wlegl_buffer.cpp#L101" target="_blank">we unregister the buffer and close the native handle.</a><br />
<b><br /></b>
<b>Utilizing a Wayland-Android buffer as part of your scenegraph</b><br />
<br />
When a compositor would like to utilize a Wayland buffer in general, it uses <a href="http://www.khronos.org/registry/egl/extensions/KHR/EGL_KHR_image_base.txt" target="_blank">eglCreateImageKHR</a> with the EGL_WAYLAND_BUFFER_WL target and passing the (server-side) wl_buffer. This means that the compositor does not have to worry about the factual implementation of the wl_buffer behind the scene.<br />
<br />
In our case, our wl_buffer is the one we indicated above - so we know it <a href="https://github.com/libhybris/libhybris/blob/master/hybris/egl/platforms/common/server_wlegl_buffer.cpp#L72" target="_blank">actually encapsulates a ANativeWindowBuffer with a handle/width/height </a>etc. The knowledged reader might realize that eglCreateImageKHR in the Android EGL implementation does not support EGL_WAYLAND_BUFFER_WL. It does however support <a href="http://www.khronos.org/registry/egl/extensions/ANDROID/EGL_ANDROID_image_native_buffer.txt" target="_blank">EGL_NATIVE_BUFFER_ANDROID</a><br />
<br />
The way that this is handled is that we wrap eglCreateImageKHR and when we see EGL_WAYLAND_BUFFER_WL, we call the real eglCreateImageKHR with EGL_NATIVE_BUFFER_ANDROID - with the ANativeWindowBuffer. And we get the Wayland client's buffer as part of our OpenGL scenegraph.<br />
<br />
This way we can also easily implement method such as eglQueryWaylandBufferWL as we know the attributes of the Android buffer.<br />
<br />
An implementor's note: the destructor of a buffer is first called with wl_buffer_destroy coming from client side. You'll have to remember reference counting and no<span id="goog_1461963314"></span><a href="http://www.blogger.com/"></a><span id="goog_1461963315"></span>t just delete the buffer<br />
<br />
<b>Conclusion</b><br />
<br />
Thanks for reading this (rather technical) second blog post, the third one should follow quite soon. The code is already published and continually developed in <a href="http://github.com/libhybris/libhybris">http://github.com/libhybris/libhybris</a> but it's not easy to approach or use for general users or developers right now.<br />
<br />
The final post will describe how you can use this solution together with QtCompositor on top of <a href="http://www.merproject.org/" target="_blank">Mer Core</a> as well as describe how the Wayland client side works to make all this tie together. <a href="https://github.com/libhybris/libhybris/tree/master/hybris/egl/platforms/wayland" target="_blank">You can already now study, comment or flame the client side implementation</a>. But for the explanation and for a description of what is missing, you'll have to wait for next one :)<br />
<br />
<a href="http://webchat.freenode.net/" target="_blank">Feel free to join us in #libhybris on irc.freenode.net to discuss and contribute</a> to this work. </div>
Carsten Munkhttp://www.blogger.com/profile/06933926472752734837noreply@blogger.com2tag:blogger.com,1999:blog-4951750913288967286.post-28234563047879779002013-04-11T16:32:00.001+02:002013-05-08T20:28:47.610+02:00Wayland utilizing Android GPU drivers on glibc based systems, Part 1<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg66ysszzjkt2twStPTjZVXZL00ncvPiEC3zRRmjUvNAPwVShRRD1TOtpoa5IKOwDE1T_DDjSsS3LzqV2gJ7Oo9p7n0ok42LgH1mx3IFz6EBlR1mP7bdQEP1gy_5mbWVgWFY46dcwZQ2Ig/s1600/12120007.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><br /></a></div>
In this blog series, I will be presenting a solution that I've developed that enables the use of Wayland on top of Android hardware adaptations, specifically the GPU drivers, but without actually requiring the OS to be Bionic based. This is part 1.<br />
<br />
This work was and is done as part of <a href="http://pl.linkedin.com/in/carstenmunk/" target="_blank">my job</a> as Chief Research Engineer in <a href="http://www.jolla.com/" target="_blank">Jolla,</a> which develop <a href="http://www.sailfishos.org/" target="_blank">Sailfish OS, a mobile-optimized operating system</a> that has the flexibility, ubiquity and stability of the Linux core with a cutting edge user experience built with the renowned <a href="http://qt-project.org/" target="_blank">Qt</a> platform.<br />
<br />
The views and opinions expressed in this blog series are my own and not that of my employer.<br />
<br />
At the end of the series, the aim is to have finished cleaning up the proof of concept code and published it under a "LGPLv2.1 only" license, for the benefit of many different communities and projects (Sailfish, OpenWebOS, Qt Project, KDE, GNOME, Hawaii, Nemo Mobile, Mer Core based projects, EFL, etc).<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg66ysszzjkt2twStPTjZVXZL00ncvPiEC3zRRmjUvNAPwVShRRD1TOtpoa5IKOwDE1T_DDjSsS3LzqV2gJ7Oo9p7n0ok42LgH1mx3IFz6EBlR1mP7bdQEP1gy_5mbWVgWFY46dcwZQ2Ig/s1600/12120007.jpg" style="margin-left: auto; margin-right: auto;"><img border="0" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg66ysszzjkt2twStPTjZVXZL00ncvPiEC3zRRmjUvNAPwVShRRD1TOtpoa5IKOwDE1T_DDjSsS3LzqV2gJ7Oo9p7n0ok42LgH1mx3IFz6EBlR1mP7bdQEP1gy_5mbWVgWFY46dcwZQ2Ig/s320/12120007.jpg" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">QML compositor, libhybris, Wayland on top of Qualcomm GPU Android drivers</td></tr>
</tbody></table>
<br />
The blog series seeks to explain and document the solution and many aspects about non-Android systems, <a href="http://wayland.freedesktop.org/" target="_blank">Wayland</a> and Android GPU drivers that are not widely known.<br />
<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/wInZgLolKgo?feature=player_embedded' frameborder='0'></iframe></div>
<div style="text-align: center;">
(Ignore the tearing, old demo video)</div>
<br />
This work is done with the hope that it will attract more contribution and collaboration to bring this solution and Wayland in general into wider use across the open source ecosystem and use a large selection of reference device designs for their OS'es.<br />
<br />
Why am I not releasing code today? Because that code alone doesn't
foster collaboration. There's more to involving contributors into
development - such as explaining reasons why things are the way they
are. It's also my own way to make sure I document the code and clean it
up, to make it easier for people to get involved.<br />
<br />
Now, let's get to it..<br />
<br />
<b>The grim situation in mobile hardware adaptation availability</b><br />
<b><br /></b>
One of the first thing somebody with a traditional Linux background realizes as he tries to make a mobile device today when he meets with an ODM is that 99% of chipset vendors and hence ODMs - will only offer Android hardware adaptations to go along with the device designs.<br />
<br />
When you ask about X11 support within the GPU drivers or even Wayland they'll often look blankly at you and wonder why anybody would want to do anything else than Android based systems. And when you go into details they'll either tell you it can't be done - or charge you a massive cost to have it done.<br />
<br />
This means that OS'es and devices that are non-Android will be not able to take into usage the huge availability of (often low cost) device designs that are out there, increasing the time to market and R&D cost massively.<br />
<br />
<b>Libhybris</b><br />
<br />
<a href="https://github.com/stskeeps/libhybris/commit/21bcaf0172f9865c317b7ecc09fa0823d4fd1098" target="_blank">In August 2012, I published my initial prototype for 'libhybris'</a>. What is libhybris? Libhybris is a solution that allows non-Android systems such as glibc-based systems (like most non-Android systems are) to utilize shared objects (libraries) built for Android. In practice this means that you can leverage things like <a href="http://www.khronos.org/opengles/" target="_blank">OpenGL ES 2.0</a> and other hardware interfacing provided within Android hardware adaptations.<br />
<br />
I had developed libhybris initially in my idle hours at home and the big question you might have is: Why did I open source it instead of keeping it to myself and earn on it as it obviously was the holy grail for non-Android systems?<br />
<br />
The simple answer is this: by working together on open source code, it would help accelerate the development of libhybris and testing of the software for everybody's mutual benefit.<br />
<br />
I didn't feel good about libhybris initially, it's not the most
perfect solution to the problem: many around me in the open source
community were and are fighting to have chipset vendors provide Wayland
or X11 adaptations for mobile chipsets or even GPU drivers for
non-Android systems in the first place.<br />
<br />
But I felt that this
was the required road that had to be taken before non-Android systems
turned completely irrelevant in the bigger picture. When we again have
volume of non-Android devices, we can have our own dedicated HW
adaptations again<br />
<br />
Open sourcing worked quite well - a small group of people got together, tested it, improved it, got it running on a lot of multiple chipsets - thanks to OpenWebOS, Florian Haenel (heeen), Thomas Perl (thp), Simon Busch (morphis) and others. It turned the project from a late night hacking project into a viable solution for <a href="http://www.youtube.com/watch?v=mtpGml0JXPw" target="_blank">building device OS'es on top of</a>. Or even running <a href="http://www.youtube.com/watch?v=4RjvEi4Vn-A" target="_blank">Android NDK applications using</a>.<br />
<div>
<br /></div>
<div>
Earlier this year however, I discovered that a well-known company had taken the code -<a href="http://bazaar.launchpad.net/~phablet-team/phablet-extras/llibhybris/changes" target="_blank"> disappeared underground with it for several months, improved upon it</a>, <a href="http://www.ubuntu.com/devices/phone/operators-and-oems" target="_blank">utilized the capability in their advertisements</a> and <a href="http://www.youtube.com/watch?v=tL9g-v4ngqE" target="_blank">demos</a> and in the end posted the code utilizing their own <a href="http://bazaar.launchpad.net/~phablet-team/phablet-extras/llibhybris/revision/1" target="_blank">source control system, detached from any state of that of the upstream project's</a>. Even to the extent some posters around the web thought <a href="https://news.ycombinator.com/item?id=5318613" target="_blank">libhybris was done by that company itself.</a></div>
<div>
<br /></div>
<div>
That kind of behavior ruined the initial reason I open sourced libhybris in the first place and I was shocked to the point that I contemplated to by default not open source my hobby projects any more. It's not cool for companies to do things like this, no matter your commercial reasons. It ruins it for all of us who want to strengthen the open source ecosystem. We could have really used your improvements and patches earlier on instead of struggling with some of these issues.</div>
<div>
<br /></div>
<div>
<u>But</u>, I will say that their behavior has improved - they are now participating in the project, discussing, upstreaming patches that are useful. And I forgive them because they've changed their ways and are participating sanely now.<br />
<br />
Now for a few words on my story with Wayland..</div>
<div>
<br /></div>
<div>
<b>Wayland</b></div>
<div>
<br /></div>
<div>
My journey with Wayland started in late 2011. It was my belief around that time that Wayland was a bit dry and boring - it was just a protocol. I was not fully appreciating the power and simplicity that it provided for embedded UI. That it was a building block for much more exciting things - like libhybris turned out to be.</div>
<div>
<br /></div>
<div>
Being in embedded Linux and exploring Qt Lighthouse, I had learnt of <a href="http://blog.qt.digia.com/blog/2011/05/31/qml-scene-graph-in-master/" target="_blank">Qt Scenegraph</a> and a curious new thing called <a href="http://blog.qt.digia.com/blog/2011/03/18/multi-process-lighthouse/" target="_blank">QtCompositor</a>. QtCompositor was what sold me on Wayland - it enabled amazing capabilities on embedded and ease of development of effects, window management and homescreens. Things that previously would take several manyears to develop for embedded devices was made easy to do. And allowed stack builders to have similar graphical stacks on SDK/virtual machines for development as on target devices.</div>
<div>
<br /></div>
<div>
If you don't know <a href="http://en.wikipedia.org/wiki/QML" target="_blank">QML</a>, it's a declarative UI language to design beautiful and functional UIs with. What QtCompositor did, was to enable that you first off could get events about windows appearing, changing size, etc - but also that each window, - the graphical buffer, became just another item in your UI scenegraph like an image or a label would be. It could even make your graphical buffer be a widget inside your traditional UI.</div>
<div>
<br /></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://blog.qt.digia.com/wp-content/uploads/2011/03/waylandscreenshot.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="250" src="http://blog.qt.digia.com/wp-content/uploads/2011/03/waylandscreenshot.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Screenshot from http://blog.qt.digia.com/blog/2011/03/18/multi-process-lighthouse/</td></tr>
</tbody></table>
<div>
<br /></div>
<div>
This could naturally be expanded to much more curious things, such as <a href="http://www.youtube.com/watch?v=_FjuPn7MXMs" target="_blank">3D Wayland compositors</a>. If you'd like to hear more about QtCompositor, you can also watch the following talk from <a href="http://www.youtube.com/watch?v=jLiSEmtRvGs" target="_blank">Qt Developer Days</a> by Andy Nichols. Capable QtCompositor technology is something that is here today. Not something that has to be developed from scratch or roadmapped.</div>
<div>
<br /></div>
<div>
I was doing the role of maintainer of the Nokia N900 hardware adaptation for <a href="http://www.meego.com/" target="_blank">MeeGo</a> at the time and I wanted to see if I could get <a href="http://gitorious.org/wayland-sgx/wayland-wsegl/trees/master" target="_blank">Wayland working on it</a> - it had a PowerVR SGX GPU. I reached out to #wayland on irc.freenode.net and was met with open arms, guidance and a lot of help from krh (Wayland founder), jlind, capisce (QtWayland/QtCompositor), <a href="http://thndl.com/" target="_blank">Andrew Baldwin</a>, <a href="http://fi.linkedin.com/pub/mika-bostr%C3%B6m/28/730/6b/" target="_blank">Mika Bostrom</a> and many other talented people and I was able to get started very quickly with Wayland.<br />
<br />
To get things working with Wayland, what I needed to do was figure out:</div>
<div>
<br /></div>
<ul style="text-align: left;">
<li>How to render an image with OpenGL ES 2.0 into GPU buffers that I had under my control</li>
<li>Share that GPU buffer with another process (the compositor)</li>
<li>Include that GPU buffer as part of a OpenGL scenegraph, a texture - and display this to the screen (in the compositor)</li>
<li>And for performance, flip a full screen GPU buffer straight to the screen, bypassing the need to do OpenGL rendering</li>
</ul>
<div>
<br />
To be able to render into a specific GPU buffer under your own control, you usually need to get inside the EGL/OpenGL ES implementation. On some chipsets, it's possible to use specific EGL operations that allows shared (across two processes) images to be rendered into - such as on <a href="http://www.youtube.com/watch?v=HItv4HX5r3k" target="_blank">Raspberry Pi</a>.<br />
<br />
In the EGL implementation, you should be able to follow the path of the buffer, it's attributes (size, stride, bpp/format) and when the client has requested to do eglSwapBuffers. </div>
<div>
</div>
<div>
<br /></div>
<div>
On the PowerVR SGX, there was an API provided called <a href="https://github.com/ddompe/wayland-wsegl/blob/master/wsegl.h" target="_blank">WSEGL</a>, for making plugins that were windowing systems (X11, Framebuffer, QWS, Wayland..) that allowed me to do just that. </div>
<div>
<br /></div>
<div>
Sharing that buffer is sometimes a bit more difficult - you effectively need to make the same GPU buffer appear in two processes at once. On SGX, this was simple - you could request a simple integer handle to the buffer and share that value using whatever protocol you wanted. In the target process you then just map in the GPU buffer through a mapping method.</div>
<div>
<br /></div>
<div>
Wanting to standing on the shoulders of giants, I looked at how Mesa had implemented their <a href="http://cgit.freedesktop.org/mesa/mesa/tree/src/egl/wayland/wayland-drm/wayland-drm.xml" target="_blank">Wayland protocol for DRM</a> - it too had simple handles and shared these buffers through a custom Wayland protocol.<br />
<br />
Even if it was a custom protocol for buffer handling (creation, modification, etc), the same operations for handling buffers in Wayland still applied to it. I didn't need to do anything extra for compositor or client for the buffers in particular - I could piggyback on existing infrastructure available in Wayland protocol.<br />
<br />
Wayland made it easy for me to take existing methods for the techniques/needs listed above into use and made it possible to quickly and easily implement Wayland support for the chipset.<br />
<br />
Now, to something a little different, but quite related: <br />
<br />
<b>Android and it's ANativeWindow </b><br />
<br />
When you use <a href="http://www.khronos.org/registry/egl/sdk/docs/man/xhtml/eglCreateWindowSurface.html" target="_blank">eglCreateWindowSurface</a>, as in, creating a EGL window surface for later GL rendering with Android drivers, you have to provide a reference to the native window you want to do it within. In Android, the native window type is <a href="https://github.com/libhybris/libhybris/blob/master/hybris/include/android/system/window.h#L325" target="_blank">ANativeWindow</a>.<br />
<br />
As you know, Android's graphics stack is roughly application -> libEGL that sends GPU buffers to SurfaceFlinger that either flings the buffer to the screen or composites it with OpenGL again with libEGL. <br />
<br />
Why not just include all the functionality and code in the EGL stack which communicates with SurfaceFlinger? The answer is that you need to sometimes target multiple types of outputs - be it video/camera streaming to another process, framebuffer rendering, output to a HW composer or communication with SurfaceFlinger.<br />
<br />
One of the good things about Android graphics architecture is that through the use of ANativeWindow, they have made it possible to flexibly keep the code that does this work outside the EGL drivers - that is, open source and available for customization for each purpose. That means that EGL/OpenGL drivers are less tied to the Android version itself (sometimes API versions of ANativeWindow changes) and can be reused in binary form easily across upgrades.<br />
<br />
ANativeWindow provides handy hooks for a windowing system to be managing GPU buffers (queueBuffer - send a buffer, I'm done rendering, dequeueBuffer - I need a buffer for rendering, cancelBuffer - woops, I didn't need it anyway, etc) - and it gives the methods you need to accomplish things, like I did on PowerVR SGX.<br />
<br />
This is the entry point used to implement Wayland on top of Android GPU drivers on glibc based systems. Some fantastic work in this area has already been done by <a href="http://ppaalanen.blogspot.fi/" target="_blank">Pekka <span class="st">Paalanen (pq)</span></a> as part of his work for <a href="http://www.collabora.co.uk/" target="_blank">Collabora Ltd.</a> (Telepathy, GStreamer, WebKit, X11 experts) which proved that this is possible. Parts of the solution I will publish is based on their work - their work was groundbreaking in this field and made all this possible.</div>
<div>
</div>
<div>
<br />
<b>A note on gralloc and native handles </b></div>
<div>
</div>
<div>
The graphical buffer allocation in Android is handled by a <a href="https://github.com/android/platform_hardware_libhardware/tree/master/include/hardware" target="_blank">libhardware</a> module named <a href="https://github.com/android/platform_hardware_libhardware/blob/master/include/hardware/gralloc.h" target="_blank">'gralloc'</a>. This is pretty straightforward, allocate buffer - get a buffer handle, dealloc, register (if you got the buffer from a separate process and want to map it in), but most documentation pieces don't talk about buffer_handle_t and what it actually is.<br />
If you do a little bit of detective work, you'll find out that buffer_handle_t is actually defined as a native_handle_t* .. and what are native handles?<br />
<br />
The structure is practically this: number of integers and a number of file descriptors plus the actual integers and file descriptors. How do you share a buffer across two processes then?<br />
<br />
You have to employ something as obscure as "file descriptor passing". <a href="http://www.lst.de/~okir/blackhats/node121.html" target="_blank">This page describes it as "socket magic" which it truly is.</a> It takes a file descriptor from one process and makes it available in another.<br />
<br />
The android GPU buffers are typically consisting of GPU buffer metadata (handle, size, bpp, usage hints, GPU buffer handle) and then file descriptors mapping GPU memory or otherwise shared memory into memory. To make the buffer appear in two processes, you pass the handle information and the related file descriptors.<br />
<br />
The good news however is that <a href="http://cgit.collabora.com/git/android/platform/frameworks/base.git/tree/opengl/libs/EGL/wayland-protocol/wayland-android.xml?h=pq-egl-wip2&id=72b375bed9e0680f7ae773b97f8e9055d9439ffa#n72" target="_blank">Wayland already supports file descriptor passing</a> so you don't have to write obscure code handling it yourself for your custom Wayland compositor. <br />
<br />
<b>Conclusion </b><br />
<br />
This concludes the first blog post in this series, to give a bit of background about how Wayland, libhybris and GPU drivers for Android can work together. <a href="http://mer-project.blogspot.fi/2013/05/wayland-utilizing-android-gpu-drivers.html" target="_blank">Next blog post will talk more about the actual server side implementation of this work</a>. Last blog post will talk about direction of the future work on it - and what you can do with it today and how as well as explaining the .<br />
<br />
If you'd like to use, discuss and participate in the development of this solution, #libhybris on irc.freenode.net is the best place to be. A neutral place for development across different OS efforts.</div>
</div>
Carsten Munkhttp://www.blogger.com/profile/06933926472752734837noreply@blogger.com14tag:blogger.com,1999:blog-4951750913288967286.post-35149318070654822722012-05-13T18:23:00.004+02:002012-05-13T18:31:25.773+02:00Tizen conference, wrapping up<br />
<br />
The Linux Foundation sponsored me to travel to and attend the Tizen Conference 2012 in San Francisco and as part of this sponsorship, I'll be blogging about the conference and my insights and thoughts of the talks and keynotes at it. This is my last post in a two-parter about the conference.<br />
<div>
<br />
When attending a conference, or a music festival, or any other event with multiple tracks, there will always be sessions that you for some reason do not end up attending, be it because of meeting somebody suddenly at the coffee table while a session you'd like to see is about to start, or because there's a session that you'd rather see, or simply because you decided to take a break. The solution to this is the conference recording the sessions on video, which is not often performed very well.<br />
<div>
<br />
I've encountered the usual screw-ups in conferences: session recording that does not include the slides at all, session recording where the A/V people forgot to wire up the microphone to the recording equipment(!), or so bad audio that you couldn't even hear the speaker. It's also more difficult, when viewing the session afterwards, to having to focus on three things - the movements of the speaker, his/her voice and the slide content. </div>
<div>
That's why I welcome a better format, which is what the Tizen conference will be utilizing it seems - recording the speaker audio and along with that, the slide content, but not the speaker him/herself. And exporting it in podcast format, allowing you to catch up while on the move on the newest technology. Without having to dedicate your full attention to it.<br />
<br />
Which brings me to that I didn't participate in that many sessions during the last day. But I got to attend the ones that mattered to me the most: Open Build Service—Facts, Features and Future, by adrianS and mls from openSUSE and Next Gen OS Initialization Done Right, by Auke Kok. And missed out on Tizen IVI architecture with Mikko Ylinen.</div>
<div>
Meeting the OBS guys is always a pleasure - you get to sync on what their ideas and plans are and they listen to what your expectations and sometimes crazy ideas are. Compared to many other distribution build systems, OBS does not only function or serve their own community (openSUSE) - it is entirely usable, deployable and fantastic for building other distributions. OBS has leveled the amount of infrastructure you previously needed in other to run/roll your own distribution. And that's why we love it in Mer. It enables anyone with a minimum of OBS knowledge to maintain their own customized distribution. And for ISVs, to build against your distribution. </div>
</div>
<div>
<br /></div>
<div>
As with most technical discussions - the hallway track is the most interesting. The questions and concerns the audience comes up with during the session seeds the ground for the continued discussion in the hallway afterwards. One concern, that was raised by Dominique Le Foll, of Intel OTC was that OBS-to-OBS links are simply too fragile and too often causes build stalls and problems, was actually a matter we approached at first with Mer too, given the very unstable nature of the meego.com API - we needed a way to synchronize and access the OBS projects MeeGo consisted of, offline. Their need was simply needing a way to export MeeGo (well, now Tizen) releases to customers in a reliable manner and allowing them to modify it too.</div>
<div>
<br /></div>
<div>
What we invented there was a piece of software called FakeOBS (now Mer Delivery System) which, to make a long story short, serves up a HTTP/REST interface that is similar enough to the OBS-to-OBS protocol as to make it able to have another OBS connect to it and it thinking it's a remote OBS. </div>
<div>
<br /></div>
<div>
While in fact, it is a cache of sorts - we extracted through the OBS API the entire OBS project history of sources, built binaries and put it into a on-disk format that FakeOBS could then use to provide those over the OBS-to-OBS protocol, giving us effectively offline access - leaving us able to not have to care about external entities. You can view the latest iteration of it <a href="http://gitweb.merproject.org/gitweb?p=mer/release-tools.git;a=blob;f=tools/fakeobs.py;h=7e59ce0c10d54511063302ff2a44e89cdcbd31a3;hb=HEAD">here</a>. There's also a file called <a href="http://gitweb.merproject.org/gitweb?p=mer/release-tools.git;a=blob;f=tools/gitmer.py;h=1c766aecc3e579670ca9bffaad15b62a530810d2;hb=HEAD">'gitmer.py'</a> which is how we deal with the git-based approach that Mer uses, for sources.</div>
<div>
<br /></div>
<div>
When we <a href="http://gitweb.merproject.org/gitweb?p=mer/release-tools.git;a=blob;f=tools/createrelease.sh;h=57de54f056c11083f22bb2d5a97234b51834e040;hb=HEAD">generate Mer releases,</a> we do not only <a href="http://gitweb.merproject.org/gitweb?p=mer/release-tools.git;a=blob;f=tools/dumpbuild;h=c90f83e573e78b9b3d6d3fc1bfeb4efc42c07162;hb=HEAD">export the built binaries,</a> we also export this on-disk format for FakeOBS, allowing anyone to re-create Mer and re-build it in their own OBS, along with the additional use case that we have built OBS package repositories for ISVs to build against. Meaning that even if Merproject.org shuts down, anybody can resurrect the project. As well as that vendors do not have to rely on merproject.org being up.</div>
<div>
<br /></div>
<div>
Next session was Auke Kok's systemd session. Auke's one of my personal open source heroes, always working on quite interesting things. As some of you might know, the traditional way that most UIs are launching applications and daemons on boot are through D-Bus and /etc/xdg/autostart .desktop files. In Mer and MeeGo, this was accomplished with uxlaunch (another of Auke's inventions)</div>
<div>
<br /></div>
<div>
But what if you could use the same flexibility that systemd offers you, in order to create a proper dependency tree for proper optimized booting within the user session? Well, guess what Auke invented :) </div>
<div>
<br /></div>
<div>
Instead of starting uxlaunch, you'd instead start systemd --user as a user, which would properly start up X, perhaps services that do not need X before X starts, and ability to indicate session-internal dependencies. Which leads to amazing results. You can check out the <a href="http://lists.freedesktop.org/archives/systemd-devel/2012-April/004974.html">systemd discussion on this mailing list thread.</a> </div>
<div>
<br /></div>
<div>
Another thing that happened was the availability to all conference attendees (except for Intel & Samsung, it seems) of a Tizen reference device, the so-called Lunchbox. It's an amazing piece of hardware, 1280x720 AMOLED display, 4.3", with dual-core Samsung Exonys 4210, Cortex-A9, 1gb ram, 16gb eMMC, microSD slot, sim slot (though modem ability is unknown), Mali GFX chipset, u-boot boot loader, 8mp back camera, 1mp front camera, PN544 NFC chip (unsure how to use), GPS chip, WLAN (WiFi Direct possible).. so, a quite nice kit. And a possible replacement for the N800 as well.</div>
<div>
<br /></div>
<div>
And if you're wondering if we've tried to put Mer on it. Now, of course we have. We've found most interesting pieces, including a "Boot to SD card" mode (with no success just yet - press power key, volume up and volume down at same time), <a href="https://review.tizen.org/git/?p=kernel/linux-2.6.36.git;a=tree">kernel source code (2.6.36)</a> and investigated the system which uses currently Xorg 1.9.3 with a Xorg driver we can't find source for yet. But it'd surprise me if it wasn't somehow similar to the Mali Xorg driver. Once we've figured out SD card boot, it should be a breeze to run Mer on there. Even with X11-GLESv2 acceleration.</div>
<div>
<br /></div>
<div>
That's all I have to say about the conference, will look forward to the next one.</div>Carsten Munkhttp://www.blogger.com/profile/06933926472752734837noreply@blogger.com2tag:blogger.com,1999:blog-4951750913288967286.post-46821564495485763992012-05-09T16:41:00.003+02:002012-05-09T17:02:11.651+02:00Tizen Conference 2012, first daysThe Linux Foundation sponsored me to travel to and attend the Tizen Conference 2012 in San Francisco and as part of this sponsorship, I'll be blogging about the conference and my insights and thoughts of the talks and keynotes at it. While some parts may seem negative, please keep reading as I have a point with those parts that is illustrated later on.<br />
<br />
While some people might think that I see Mer as a competitor to Tizen, or think that I don't like Tizen, in fact, I see the benefit of Tizen for the entire open source community that they're pushing a proper, fast and working, standards compliant web runtime for Linux based devices. And I hope we'll see people putting this on top of Mer. Mer plays a different game than Tizen and hence not a competitor - it's a solid mobile core that everybody can build on and most importantly, rely on despite the moods of corporate giants, to make their devices - where solid delivery, ability to productise and code is king. <br />
<br />
There's always a challenge in how to properly launch a commercial open source project. Especially in mobile Linux, there is unnecessary high media and developer expectations to the features and ability of a mobile handset stack that often enough causes mobile OS projects to break their necks and die.<br />
<br />
But Rome wasn't built in a day. And so weren't the mobile stacks you see around the today - Android took over 3 years to get to a remotely functioning stack. And this has a tendency to make mobile OS developers develop in 'closed mode' in order to launch properly on day one.<br />
<br />
Tizen has drawn a lot of crap from their complete silence and secret cathedral building behaviour up to 1.0 release. But I can say that if I was in their shoes, having to launch a handset device .. and handset stack. I would probably end up doing the same things as they had. In a world where you will see your semi-ugly alpha release screenshots laughed at in news articles about your 1.0 launch, when you have a perfectly working and very shiny final release that nobody seems to bother to even check out, it's hard to argue for transparent development from day zero.<br />
<br />
Luckily I'm not in their shoes and I can concentrate on technical core side of things and make it easier for people to make exciting new devices. I'm not a fan of whole-stack projects - for the reasons listed above. And that's why Mer doesn't contain UIs and hardware adaptations - we let people base and develop on a sane core that we can maintain the openness of, while people work on exciting new devices and UIs in seperate projects from the Mer project. <br />
<br />
Reputation and history matters a lot as well - There was a lot of disappointment in the demise of MeeGo and the messaging on MeeGo site was that Tizen was the new direction. And people expected there'd be some kind of relation. But there's not - Tizen, at least the handset side (IVI is more related on the Core side), is so very different from anything you knew in MeeGo - your employees would need complete retraining to work with it. The stack is based off Samsung Linux Platform and actually says it's that, when booting up, last I saw. That should lead to interesting discussions with your company lawyers. <br />
<br />
And with reputation and history in mind - many from MeeGo remember last years keynote, Monday Morning with MeeGo.. February 11 had happened months before and there was still a fighting spirit in the community, we needed people who were showing passion in their work, the same fighting spirit. And we got something that was closer to Monday Mourning with MeeGo. Which left many people depressed and unimpressed. A talk that spoke more about the fantastic deployments of the platforms that MeeGo was in practical competition with, than about MeeGo itself and it's qualities and achievements. <br />
<br />
When a last moment change in the Tizen conference schedule came in, that moved the first keynote which was supposed to be Imad from Intel and JD from Samsung to the morning after and instead, we got a recycled keynote, void of genuine and documented passion for Tizen, with the same recycled material as in the Monday Morning with MeeGo talk and the same speaker as last year - with him even talking about that if people had noticed he would be on schedule, there'd probably be fewer in the room. I was left unimpressed and depressed, again. <br />
<br />
I'm ashamed to say it, but I've grown to appreciate the famous "Developers! Developers! Developers!" dance. Somebody showing passion for their work - people who truly believe in their product and their stack. Someone who wants to stirr excitement in developers, CTOs and platform integrators alike. And I harbour a lot of respect for people who truly believe in what they do and that they want to do a good product and good software.<br />
<br />
And we got that in the morning after keynote, Imad, the head of Intel OTC and JD, EVP of Samsung, the Tizen technical steering group. They showed their excitement about what they were doing, showing excellent live demos and they understood the challenges in presenting a mobile OS and explained to depth both the challenges and reasoning behind their choices for the Tizen stack - even the controversial ones. I can recommend watching the video when it gets put online.<br />
<br />
This is what the first keynote of the conference should have been like. And I was more excited again.<br />
<br />
The second keynote, from Tizen Association was interesting, showing the need of operators to provide and control content and the benefit of having to write to one platform (HTML5). Which is funny, when there were also talks about "The web always wins" .. that in practice, the walled garden never wins, the properitary standards will not either. That content from outside the walled garden will always be more interesting and varied than your own content. Doesn't anybody remember AOL? :)<br />
<br />
I might be an idealist, but I have difficulty seeing the word 'open' together with the working method of the Tizen Association. When their terms of membership states at <a href="http://www.tizenassociation.org/en/tizen-association/board-of-directors">http://www.tizenassociation.org/en/tizen-association/board-of-directors</a> <br />
that there is an annual due of membership of Two Hundred and Twenty Thousand USD. And talking about confidentiality clauses.<br />
<br />
But I was reminded of a quote from my former boss, Harri Hakulinen, from his MeeGo blog, speaking of Nokia's choice of WP7: <i>"... What I had
witnessed from the side, thanks to Sami J. Mäkinen, was of course the
birth of Linux. And, in so many ways, I feel that we have now "replayed"
the same with MeeGo in last 12 months.</i><br />
<i>Co-incidentally, at that time I had a summer job where we replaced
some ancient Nixdorf and IBM mainframes with another new OS, called
Windows NT. It was hard to explain to Sami and others, that from the
point of view of those companies I worked for, Windows NT was, in fact,
like "open environment", compared to those things that they had been
using before."</i><br />
<br />
And perhaps this is how it's like with Tizen. That compared to how it has been before, this is actually more open than the previous situation for the ecosystem. At least the code is open, actively developed, looking to be intended to be developed in the open, not only codedrops, with a proper code submission process. So perhaps that's an improvement on top of what we have had with Symbian and Android.<br />
<br />
What I am more encouraged by in terms of openness, is what I learned in the Tizen Architecture talks, where there is a strong push towards that there will actually be as little Tizen specific WebAPIs as possible. That there's an active desire to use W3C standards where possible and to submit APIs to the standards process. Which makes me hope that for the parts that really matters - the developer facing APIs, that there will no vendor lock down. In the end, the winner would be the Web. And even if Tizen did go away one day, that the code would be living on. Just like MeeGo's code has. Because it's open source.<br />
<br />
From an entirely architectural point of view, Tizen architecture (SLP-based) has a lot of NIH in it - it's own telephony stack instead of oFono (though I hear that's coming), and a lot of self-made libraries and methods. Which may impact the portability of the web runtime.<br />
<br />
I'm hoping that Tizen will realize the importance of separating the web runtime from OS stack. That one of the reasons that the web standards have developed so fast, has been the ability to get many people to upgrade their browsers over the air.<br />
<br />
We probably cannot assume we'll see Tizen 1.0 to Tizen 2.0 upgrades on our handsets - aftermarket hardware adaptation is really hard. But we should make sure that at least for a few generations, we can keep on delivering the web runtime to older devices. To foster a standards compliant and secure web runtime for our apps - just like the browsers has fostered it for the web. And I think this is one area Tizen could potentially be very agile in, comparing to other platforms.<br />
<br />
The last talk of the day was on Tizen security - Ryan Ware was presenting along with his Samsung counterpart, where compared to many other platforms, the focus has been to ensure end-user privacy, and not on the need to protect content owner content. That's the right direction - especially in a world where devices are turning very promiscuous and interacting in sometimes unsafe manners with other devices.<br />
<br />
One of the most important parts of a conference is not so much the presentations, but the people there and the discussions in the hallway - the 'hallway track'. This is a concept that any conferences doesn't always understand - the importance that people can discuss outside the conference rooms. Tizen conference has as usual done a great job on this (thanks to Amy Leeland's fantastic work), providing good space and hacker lounges with whiteboards for people to properly discuss. I've sat down together with many key people in my line of work and had intellectual discussions about the challenges we meet. And I've gotten to know more people that I previously didn't.<br />
<br />
And of course - when working on a distributed-across-the-world project, I've been able to go out and have our traditional icecream shop visit (since 2009) with the rest of the participants of my project. So far it has been a good conference, looking forward to be seeing more presentations today.Carsten Munkhttp://www.blogger.com/profile/06933926472752734837noreply@blogger.com4tag:blogger.com,1999:blog-4951750913288967286.post-31188404170252972762011-10-03T18:25:00.001+02:002011-10-03T18:27:11.923+02:00Mer is back!So, we are back. Please take some time to read the following mailing list post:<div><br /></div><div><meta equiv="content-type" content="text/html; charset=utf-8"><a href="http://lists.meego.com/pipermail/meego-dev/2011-October/484215.html">http://lists.meego.com/pipermail/meego-dev/2011-October/484215.html</a></div><div><br /></div><div>See you in #mer on irc.freenode.net and on http://www.merproject.org</div>Carsten Munkhttp://www.blogger.com/profile/06933926472752734837noreply@blogger.com0tag:blogger.com,1999:blog-4951750913288967286.post-90765897527562938162010-08-17T19:06:00.003+02:002010-08-17T19:12:18.472+02:00Why Meego on N900 is the right and future-proof direction for the communitySo, I think it's about time for me to really weigh in why it is I'm pushing MeeGo on N900 and why this is the right direction. This is probably going to be a bit long. Some people asked me to repost it on my blog as to not have it lost in the maelstrom of talk.maemo.org.<br /><br />This is also probably my last long post on the matter as I'm now fully in a MeeGo role, no longer maemo.org distmaster.<br /><br />The fact is that the model of 770 -> N800 -> N810 -> N900 has been that of one device per OS version. There hasn't been resources for keeping a full product team for multiple devices at a time.<br /><br />This has caused what some describe as Rapid Obsolescence Syndrome, where the device OS rapidly goes into maintenance mode after device release while mostly everyone involved moves on to the next product/device. This obviously leaves users unhappy.<br /><br />Now, there are multiple suggestions around maemo.org:<br /><br />* Fremantle community SSU<br />* Petition for open sourcing most of Fremantle to keep it maintained<br />* Harmattan HE for N900<br />(etc)<br /><br />And my main point in the following is that those directions will be like pissing your pants to keep yourself warm. Quick review:<br /><br />Community SSU can work on the open source parts (it has happened on N8x0 just fine). Maybe you can find some ability together with Fremantle aficionados inside Nokia who could be interested in contributing with upgrades of some binary packages -<br />I doubt there's any problem if those exist to slip some packages out.<br /><br />But the main point is: no upstream work will really happen. I highly doubt you can find enough people that are still around to keep things working. Even with documentation, the code can be quite hairy to add new features to. So that bends down to a resourcing problem.<br /><br />Open sourcing most of Fremantle - I simply don't think it's going to happen. Too much work for too little benefit. And the same problems as with normal SSU when the code does arrive.<br /><br />Harmattan HE. This would already be obsolete by the time we were done as a more modern platform would be available in MeeGo. As well as at some point, no more upstream development.<br /><br />The main point - you'll piss your pants with these projects to keep yourself warm for a while, but you'll just keep on feeding the Rapid Obsolescence Syndrome to some extent - that you'll never be able to play catch-up to new technologies and satisfy the requirements of your users. It is a physical impossibility as there's many more man-hours poured into MeeGo than you can provide here.<br /><br />MeeGo and Qt has changed the status quo that existed that:<br />* Any Linux-based OS platform from Nokia is tied to a certain device<br />* Any applications from Nokia is tied to a certain device by fact that they were released for a certain OS platform.<br /><br />It's a game-changer because now, for any given 'Nokia' OS for these devices, this will after Harmattan be based off MeeGo (platform from MeeGo.com).<br /><br />Now, what are we actually doing in MeeGo for N900?<br /><br />First off - we're making the hardware adaptation for N900 maintainable.<br /><br />This means that we are actively upstreaming N900 drivers to the mainline Linux kernel as well as getting those few blobs we have into the MeeGo non-oss repositories with redistributable license. This is actively happening.<br /><br />Second, we're running <a href="http://wiki.meego.com/Quality/HandsetTestReport">QA daily</a> to make sure that N900 still works with the current MeeGo platform state. This means we're always at the front of the platform development. <a href="http://wiki.meego.com/Release_Engineering/Process#How_the_code_reaches_the_Trunk.2FRelease">MeeGo platform doesn't move forward if a change breaks N900 - it is a reference device</a><br /><br />That's not pissing your pants to keep warm. That's making a bonfire and collecting wood to make us sustainably warm. And that's one of the reasons why I hope for more people to contribute to the MeeGo effort.<br /><br />Now for the users. Look forward a bit - Nokia's obviously going to make a OS release based on 'real' MeeGo.com. The same code that'll power future handsets will be based on the same code that N900 already now supports. It's the same infrastructure that builds images and software that MeeGo for N900 is made using, as any given future Nokia OS. Instead of Nokia having applications tied to Fremantle or to Diablo or whatever, they now tie to MeeGo - the same platform you have on your N900.<br /><br />If you want to make a real bonfire and eat your cake too, you will want to do the following:<br /><br />* Contribute to MeeGo and MeeGo on N900 in the short term - this will improve matters for Nokia N900 obviously.<br />* Petition for Nokia early on, to consider providing the following things:<br />** Executive summary: access to the binaries making up the Nokia differentiation<br />** Weekly (or other interval) repository releases (binaries) available to Nokia N900 users of their future MeeGo.com-based OS under the usual 'this is not for end-users, bla bla'. Kinda like the old 'Sardine'<br />** Kickstart files for these weekly releases so you can edit them into your own images for the N900 using the Nokia bits.<br />** Community can be possibly be more involved in the QA process this way and contribute in general.<br />** If branding is a problem, have community themes and icons.<br />** Suggest new ways to have both a 'closed' vendor OS with all the goodies based on MeeGo.com while at same time having your power user community close to you.<br /><br />Now, this is a way that can keep you ahead of the curve regarding your device. The N900 hardware isn't going obsolete for many years and is still very capable.<br /><br />I think this might be possible to pull off, but it requires people to start gaining skills within MeeGo - and help contribute to MeeGo on N900. It's a similar approach to Harmattan HE, but more involved and more future proof. So I wouldn't say it's impossible.<br /><br />So - it's your choice: Live in the future instead of the past.<br /><br />I'll be working to make the future happen - see you on <a href="http://www.meego.com/">http://www.meego.com</a> (and <a href="http://wiki.meego.com/ARM/N900">http://wiki.meego.com/ARM/N900</a> ).Carsten Munkhttp://www.blogger.com/profile/06933926472752734837noreply@blogger.com13tag:blogger.com,1999:blog-4951750913288967286.post-60546253737302157382010-05-20T22:00:00.003+02:002010-05-20T22:07:13.790+02:00First instance of 'What have I done for the N8x0's lately'So, this is a new series of blog series on what I've done for the N8x0's lately. So people better see what I've actually tried to do for the owners of these devices.<br /><br />* <a href="http://talk.maemo.org/showthread.php?t=52426">I've spent a lot of time with the MBX 3d driver to try to get it in good shape</a> and set up <a href="http://gitorious.org/mbx-n8x0/mbx-n8x0-modules/trees/master">gitorious repo for it</a> and forward ported it to 2.6.33. At the current stage,<br />* <a href="http://talk.maemo.org/showthread.php?p=658820#post658820">Started a page for the MeeGo N8x0 hardware adaptation team and added plans/milestones</a><br />* Working on stabilising MeeGo N8x0 startup, building Xomap for it. I have it running with Xfce4 on my device and hope to show it after 1.0 release.<br />* Worked with tmr to try and get DSP working on 2.6.33 for N8x0. He forward ported the patches himself.<br /><br />These are fairly technical things, but should hopefully manifest in actual benefits sooner or later.Carsten Munkhttp://www.blogger.com/profile/06933926472752734837noreply@blogger.com2tag:blogger.com,1999:blog-4951750913288967286.post-11679703264077254462010-02-20T20:12:00.000+01:002010-02-20T20:12:12.720+01:00Maemo 6 and/or MeeGo on N900: Or How I Learned to Stop Worrying and Love the BombSince some people don't follow talk.maemo.org, this is to let them know I wrote a quite interesting piece to help calm some of the worries people have been having about N900 future with Maemo6 and MeeGo based on my previous experiences both as community member and as maemo.org distmaster.<br /><br />You can read it at <a href="http://talk.maemo.org/showthread.php?t=45213">http://talk.maemo.org/showthread.php?t=45213</a> and it is very well received so far and covers four questions we should be asking instead of panicking.Carsten Munkhttp://www.blogger.com/profile/06933926472752734837noreply@blogger.com0tag:blogger.com,1999:blog-4951750913288967286.post-18069018001077014932010-02-19T12:27:00.004+01:002010-02-19T14:00:31.587+01:00The Mer Project - just a bunch of redshirts?Recently, big news arrived: <a href="http://www.meego.com/">The MeeGo project</a>. But let me start with some history. In May 2009 some key members of the <a href="http://wiki.maemo.org/Mer">Mer</a> project met up for the first time 'in real life' at the <a href="http://wiki.maemo.org/Mozilla_Maemo_Danish_Weekend">Mozilla Maemo Danish Weekend</a>. At this event, <a href="http://www.flickr.com/photos/28959625@N04/3596563958/in/set-72157618950617291/">we got some very characteristic t-shirts - very very red ones,</a> which we since have worn proudly when we were meeting up again at various events and countries, as we could recognise each other.<br /><br />While we were introduced as Maemo 5 community edition for the Nokia N810/N800/770 Internet Tablets we were far more ambitious - we loved the principle of Maemo so much that we wanted to <a href="http://wiki.maemo.org/Maemo_Reconstructed">reconstruct</a> it, in order to make it better, more suitable for the future - because we thought the platform would not survive otherwise.<br /><br />We wanted to get away from the notion that a tablet was an embedded system - Tablets are not under-powered embedded systems, they are powerful, power-efficient, economical handheld computers. We wanted to make Maemo a general platform for tablet devices. We wanted to Make it more developer-friendly. More hackable. Align with standard Linux distributions. This was to be done by separating the device and platform code - have open development of the Maemo platform - the device-specific and vendor-specific differentiation<br />development can be closed and many other things.<br /><br />The goal was for the core Mer system is fully open source and cross-platform, open for anyone to adapt to their devices. We got far, we have something that works, but it isn't ready for users yet - Mer was a research project to try and help Maemo towards our goals.<br /><br />A comment (as I recall it) from Maemo Summit 2009, where we Mer members met up again, performed several presentations - again, wearing our red shirts - "We're just a bunch of redshirts.", ambitious ensigns in red shirts - did this come true?<br /><br />Some background, as it might be a bit geeky. Quoting wikipedia:<br /><br /><b>Redshirt</b> is a slang term for a minor <a href="http://en.wikipedia.org/wiki/Stock_character" title="Stock character">stock character</a> of an <a href="http://en.wikipedia.org/wiki/Adventure" title="Adventure">adventure</a> <a href="http://en.wikipedia.org/wiki/Drama" title="Drama">drama</a> who dies violently soon after being introduced in order to dramatize the dangerous situation experienced by the main characters. The term originated with fans of the <a href="http://en.wikipedia.org/wiki/Science_fiction_television" title="Science fiction television" class="mw-redirect">science fiction television</a> series <i><a href="http://en.wikipedia.org/wiki/Star_Trek:_The_Original_Series" title="Star Trek: The Original Series">Star Trek</a></i>, from the red shirts worn by <a href="http://en.wikipedia.org/wiki/Starfleet" title="Starfleet">Starfleet</a> security officers and engineers, who frequently meet their demise during the episodes.<a href="http://en.wikipedia.org/wiki/Redshirt_%28character%29#cite_note-0"><span></span></a><br /><br />Fast-forwarding to this week, when the MeeGo announcement broke. Reading the pages, many things seemed familiar:<br /><br /><span style="font-weight: bold;">From Quim Gil:</span> MeeGo is just like you would expect a free Linux OS to be: based on the standard Linux and Free Desktop technologies and developed publicly in a project open to all contributors<br /><strong><br />From architecture page of MeeGo:<br /><br />The MeeGo OS Base layer </strong>contains the Linux kernel and core services along with the Hardware Adaptation Software required to adapt MeeGo to support various hardware architectures.<strong><br /><br />The MeeGo OS Middleware layer</strong> provides a hardware and usage model independent API for building both native applications and web run time applications.<br /><br /><span style="font-weight: bold;">From governance:<br /></span><p>There is no admission process or membership fee for MeeGo; just your desire to join the project and contribute.</p> <p>Any individual or organization can join and get involved in software development. We also welcome other ways of contributing to the success of the project, including writing documentation, testing, and marketing.</p><p>And so on - it was like someone had listened to our ideas and wishes..</p><p>Basically, MeeGo was what we hoped to achieve with Mer, and it's silly to continue separately instead of collaborating. Now, with the announcement - is the Mer project members then just a bunch of redshirts who helped move the plot along but in the end, is out of the game when the main characters continue with the plot?</p><p>No. I don't think so. In Mer, we managed to accomplish many interesting things:</p><span style="font-weight: bold;">Easy development for mobile devices</span><br />We showed it was possible to develop for your mobile device just as easily as developing for your desktop PC. That we didn't need Scratchbox: We began every interesting experiments with OBS (Open Build Service), where our build guy - David Greaves (lbt) made some extremely nice experiments, showing that cross-compilation could work without hassle, even for packages normally requiring native compilation. He's BTW, having a day job working with MeeGo and OBS now - helping to bring the Mer development experience into MeeGo.<br /><br /><span style="font-weight: bold;">Power saving and distribution alignment</span><br />Showing that it was possible to retain power saving while making porting easy by having easy access to Debian (or any distro's) huge library collection.<br /><br /><span style="font-weight: bold;">That the community was capable of organising OS development too</span><br /><br /><span style="font-weight: bold;">That multiple device communities could work together on a common base that would benefit them all.</span><br /><br /><span style="font-weight: bold;">That we were able to help create policy, identify problems</span><br /><br />Some of the things coming out of Mer:<br /><a href="http://wiki.maemo.org/Mer/Documentation/Vendor_Social_Contract"><br />The vendor social contract </a>- a social contract for vendors to commit to, in order to have community spending time on them and not waste their time and end up with locked devices with a open system.<br /><br /><a href="http://wiki.maemo.org/Token_based_access_restriction">Token based access restriction</a> - a way to deal with closed sourced binaries in a open system in a way that is liveable both technically and legally.<br /><br /><a href="http://lists.meego.com/pipermail/meego-dev/2010-February/000253.html">Why an upstream basis shouldn't be a goal, but a policy alignment on mobile devices<br /></a><br />Immediate involvement of contributors interested, that any contribution is valuable and the list goes on..<br /><br /><span style="font-weight: bold;">So, are we out of the plot now</span> that the main characters have stepped in? No. My experience has been that this is a new house for us to paint and move into. A fresh start - it would first have happened in many years at the pace we were going.<br /><br />The developers I've met from the Moblin side has been very open, willing to discuss - and even spoken with one of the two top guys in MeeGo. Us redshirts fit in the MeeGo project because we have experience enough now to discuss and argue on equal footing and to help to shape the future - and to create it. Like we always wanted.<br /><br />For those wanting to pursue the dream (and reality now) of a open mobile Maemo platform - MeeGo is the place and that's where I (and hopefully my fellow redshirts) will go to contribute to the future of mobile Linux.<br /><br />So, what will happen to Mer? We'll still be a subsection of the MeeGo community arguing for our positions, our ideas, our hopes and helping out where we can. Best way to shape the future is by participating.<br /><br />Mer as a system will live on in Mer^2. A quick summary is it is a Debian 5.0 system building inside OBS with tricks making it feel like a Scratchbox for the packages, which makes most of the Fremantle platform build on it. It will work on X86 and on N8x0. Mer 0.17 will be imaged up soon and published - those who want to continue with that can. The goal is not to make a fully open source system - it will serve purpose to be a foundation on which to build a backport of Fremantle for N8x0. The hope is to be able to build most of closed things for Fremantle for N8x0 using this.<br /><br />Thanks for reading. This is a bit of post-mortem for the ambitious part of Mer. Which keeps on living in the MeeGo project. This blog will be mostly devoted to Mer^2 discussions and maemo.org distmaster related issues. A role which I am yet to figure out how fits in the MeeGo community - but I'm hopeful.Carsten Munkhttp://www.blogger.com/profile/06933926472752734837noreply@blogger.com9tag:blogger.com,1999:blog-4951750913288967286.post-45716972404566243612010-02-17T08:27:00.002+01:002010-02-17T08:30:33.559+01:00MBX/3D drivers out for N8x0 (and other OMAP2)In other news, the drivers was uploaded to TI extranet yesterday - this is something people have waited for, for a long time. And you need to create a TI (my.ti.com) account for this. For those who want to have access the SDK need to send a mail to <a href="mailto:gamingonomap@list.ti.com">gamingonomap@list.ti.com</a> stating your need for the SDK mentioned below.<br /><br />You need to then click "Extranets" on my.ti.com and then WTBU-OMAP Gaming SDK and then OpenGL®ES Graphics SDK for OMAP2420 Nokia N800 OpenGL ES v1.1 and OpenVG 1.0 SDK based on Linux kernel 2.6.21<br /><br />A fair warning: These drivers are not for the weak at heart. You need to flash a new kernel. You may need to fix up some build scripts and run some mysterious commands. They will not work that easily out of box.<br /><br />While I kinda assume this will be drowned out in Meego announcements and discussion, well, I got the mail last night <img src="http://talk.maemo.org/images/smilies/smile.gif" alt="" title="Smile" class="inlineimg" border="0" /><br /><br />Thanks to qwerty12, javispedro, lardman, the TI guys (Girish, Ameet) and the Nokians helping out to make this reality and others.<br /><!-- sig --> <div class="signature"> __________________<br /> <a href="http://talk.maemo.org/showthread.php?p=359877" target="_blank">maemo.org distmaster</a> & <a href="http://wiki.maemo.org/Mer" target="_blank">Mer lead developer</a>, <a href="http://www.meego.com/" target="_blank">Join the MeeGo project!</a><i><br /></i> </div>Carsten Munkhttp://www.blogger.com/profile/06933926472752734837noreply@blogger.com8tag:blogger.com,1999:blog-4951750913288967286.post-18349307385071961012010-02-10T09:55:00.007+01:002010-02-10T10:40:40.698+01:00Mapping openness of Maemo 5.0 PR1.1 and Maemo 4.1.2 - we're moving in the right direction!One of the tasks I've been doing in the last couple of months has been to try and refresh the openness data for Fremantle. This has actually been quite a challenge as I've had to retrieve a lot of different sources to make a proper description of what is actually open and what is not.<br /><span style="font-weight: bold;"><br /></span><span style="font-weight: bold;">The openness reports</span><br /><br />For <a href="http://stskeeps.subnetmask.net/maemo.org/openness/pr1.1/">Fremantle PR1.1, you can find the openness report here</a> - this is for a PR1.1 image actually installed on a device.<br /><br />As per request and for comparison, I've also generated one for <a href="http://stskeeps.subnetmask.net/maemo.org/openness/diablo/">Maemo 4.1.2 (Diablo)</a><br /><br />It has been difficult finding categorisation for Diablo so a lot of it is in 'Other' as I used the package categorisation from Fremantle in this.<br /><br />This is supposed to be raw data for further discussion and as such there'll be subsequent analysis on top of this, explaining some of the areas and why things are as they are. Please read through this blog post for further explanation of what the data represents and how it is represented.<br /><br /><span style="font-weight: bold;"><br />This </span><span style="font-weight: bold;">openness report has the purpose of:</span><br /><br /><ul><li>Giving exact information of what is open, what is not, if it's openly developed</li><li>Help prioritise what should be opened and in which order</li><li>Help giving arguments towards why things should be opened</li><li>Help new developers find out where components are developed</li><li>Help making Maemo more open<br /></li><li>To aid open sourcing discussion where we go to the technical heart of a problem, not the ideological one and save all of us precious time that could be used to open source things.</li><li>Get information about what components may not be so interesting as to open source and what is kept closed source in those component areas and help to give an understanding of why it is so.<br /></li></ul><br /><span style="font-weight: bold;">The purpose is not:</span><br /><ul><li>To be a fight over numbers and percentages of openness</li><li>To be a discussion over open sourcing policies (what Nokia chooses to open source and what not)</li></ul><br /><span style="font-weight: bold;">Classification of packages</span><br /><br />So, to start describing what these openness reports contain. I have chosen to classify source packages into seven levels - this will also explain the headers of the table.<br /><br /><span style="font-style: italic;">L1: Developed openly, no closed source dependancies</span><br /><br />This means that the source package is developed either in garage.maemo.org, maemo.gitorious.org or some other place. This means that you can follow development and contribute patches to it, without having to wait for new releases<br /><br /><span style="font-style: italic;">L2: Source published in SDK, no closed source dependancies</span><br /><br />This means the source package is published in SDK releases. This means that you usually have to wait for a new SDK release to get updates to this package and there's no clear way to submit patches beyond bugtracker<br /><br /><span style="font-style: italic;">L3: Developed openly, closed source dependancies</span><br /><br />This means that the source package is developed either in garage.maemo.org, maemo.gitorious.org or some other place. This means that you can follow development and contribute patches to it, without having to wait for new releases<br /><br />However, this is usually important for system integrators and porters of Maemo, this package depends on a closed source package to build or run. Which means it is difficult to take the package and use it outside Maemo.<br /><br /><span style="font-style: italic;">L4: Source published in SDK, closed source dependancies</span><br /><br />This means the source package is published in SDK releases. This means that you usually have to wait for a new SDK release to get updates to this package and there's no clear way to submit patches beyond bugtracker<br /><br />However, this is usually important for system integrators and porters of Maemo, this package depends on a closed source package to build or run. Which means it is difficult to take the package and use it outside Maemo.<br /><br /><span style="font-style: italic;">Total L1-L4:</span><br /><br />This is the percentage that is open source in this particular component. It is red if it's below 80%<br /><br /><span style="font-style: italic;">L5: Binary-only package published in SDK. Source may exist but may be non-free</span><br /><br />This means the package is published in SDK, but may be non-free and hence not possible to use outside Maemo.<br /><br /><span style="font-style: italic;">L6: Package published under EULA in nokia-binaries</span><br /><br />This means the package is published as binary-only in nokia-binaries, which you can get under EULA at <a href="http://tablets-dev.nokia.com/eula">http://tablets-dev.nokia.com/eula</a><br /><br /><span style="font-style: italic;">L7: Not published except on device and SSU repositories</span><br /><br />This package is only published in SSU repositories and as such you cannot get to it without a device.<br /><br />In each component area, for each level, there is a percentage and a number. This is percentage of components in this area that is in this level and how many source packages. If you click it, you will see the packages from that component area in that level.<br /><br />If you click this, you will see information about the package, it's level, where it is openly developed if so, where you can retrieve it, etc.<br /><br /><span style="font-weight: bold;">Key numbers</span><br /><br />Along with the openness report, there's a few key numbers, which are completely unweighed regarding lines of code, importance, etc.<br /><br /><span style="font-style: italic;">Total L1+L3 compared to L1-L4:</span><br /><br />This is how many % of the open source packages of Maemo that is actually developed openly on maemo.gitorious.org, garage, etc.<br /><br /><span style="font-style: italic;">Total L1-L4: </span><br /><br />This is how many % source packages of the image which is open source<br /><br /><span style="font-style: italic;">Total L5-L7</span><br /><br />This is how many % source packages of the image which is closed source<br /><br /><span style="font-style: italic;">Total L1-L4 compared to L1-L6</span><br /><br />This is how many % of the published source packages that are open source.<br /><br /><span style="font-weight: bold;">The future of openness reports</span><br /><br />The idea is to publish these openness reports quite often, as to keep a understanding on the direction we're going in. I plan to do one every PR release for Fremantle and when Harmattan SDKs starts appearing, doing the same. I plan to shine up the CSS a bit as well as it's not the prettiest currently.<br /><br />I will very soon start maintaining a open sourcing queue and the hope is to release as many L3-L4 packages as possible to become L1 and L2 packages. And L4 and L2 packages turning into L1 and L3 packages.<br /><br /><br />Please comment any changes or ideas for future improvements, or questions. If there's components that are openly developed that are not represented, let me know as well. I'm 'Stskeeps' on #maemo and feel free to come and discuss with me there.Carsten Munkhttp://www.blogger.com/profile/06933926472752734837noreply@blogger.com3tag:blogger.com,1999:blog-4951750913288967286.post-46689497492130622032010-01-19T13:43:00.001+01:002010-01-19T13:50:57.587+01:00Dual-booting Mer on Nokia N900<span style="font-family:arial;">As of Mer 0.17testing10 we have an image that is fairly easy to try out on Nokia N900. This guide is for advanced users and there is NO WARRANTY. It might turn your N900 back into the crazy guy from </span><a style="font-family: arial;" href="http://www.youtube.com/watch?v=WxiOKKF721U">this video</a><span style="font-family:arial;"> or chew out your microSD, so be careful.<br /><br />You will need:<br />* A microSD<br />* A SD/microSD card reader for your PC<br />* A Linux installation on your PC.<br />* A copy of a Mer rootfs for N900 (<a href="http://stskeeps.subnetmask.net/mer/0.17testing10/mer-armel-n900-rootfs-v0.17testing10.tar.gz">0.17testing10</a>)<br />* A copy of the files in your /lib/firmware from your N900. This includes WiFi and Bluetooth firmware.<br />* PR1.0, PR1.0.1 or PR1.1 on your N900<br />* That you have installed <a href="http://talk.maemo.org/showpost.php?p=344412&postcount=16">fanoush's bootmenu</a> (dpkg -i it and run 'Install bootmenu' application icon)<br /><br />Instructions (must all be done as root):<br />* Partition your microSD to first partition being Linux and format it as ext3 using mkfs.ext3.<br />* Mount the ext3 partition on your PC, let's say in /mnt/mer.<br />* Make sure using 'mount' that your ext3 partition is -not- mounted 'nosuid' or 'nodev'<br />* cd /mnt/mer<br />* tar --numeric-owner -pzxf /full/path/to/</span><a style="font-family: arial;" href="http://stskeeps.subnetmask.net/mer/0.17testing10/mer-armel-n900-rootfs-v0.17testing10.tar.gz" class="external free" title="http://stskeeps.subnetmask.net/mer/0.17testing10/mer-armel-n900-rootfs-v0.17testing10.tar.gz" rel="nofollow">mer-armel-n900-rootfs-v0.17testing10.tar.gz</a><br /><span style="display: block;font-family:arial;" id="formatbar_Buttons" ><span class=" on down" style="display: block;" id="formatbar_CreateLink" title="Link" onmouseover="ButtonHoverOn(this);" onmouseout="ButtonHoverOff(this);" onmouseup="" onmousedown="CheckFormatting(event);FormatbarButton('richeditorframe', this, 8);ButtonMouseDown(this);">* cd lib/firmware<br />* cp in the files from /lib/firmware from your N900<br />* umount /mnt/mer<br />* Make a file "mer.item" in /etc/bootmenu.d on your N900, containing:<br /><br /><span style="font-family:courier new;">ITEM_NAME="Mer (external SD, partition 1)"</span><br /><span style="font-family:courier new;">ITEM_ID="mer"</span><br /><span style="font-family:courier new;">ITEM_DEVICE="${EXT_CARD}p1"</span><br /><span style="font-family:courier new;">ITEM_MODULES="mbcache jbd ext3"</span><br /><span style="font-family:courier new;">ITEM_FSTYPE="ext3"</span><br /><span style="font-family:courier new;">ITEM_FSOPTIONS="noatime,ro"</span><br /><br />* Reboot your device, have the keyboard slid out. A bootmenu will appear where you can select Mer with the cursor keys.<br />* Mer booting.. wait for touchscreen calibration step<br />* And then you can run through the first boot wizard<br />* And a non-accelerated Mer desktop appears.<br /><br />What works:<br />* WiFi<br />* Touchscreen<br />* Charging<br />* Watchdog handling<br /><br />Of closed source blobs used in Mer (for N900):<br />* DSME (open source) with libcal (closed source) running from the Maemo5.0 rootfs<br />* BME running from the Maemo5.0 rootfs<br />* Firmware files for WiFi and Bluetooth chip amongst others.<br /><br />Either way, I hope you enjoy playing with an alternative OS on your N900. Feel free to report bugs at http://wiki.maemo.org/Mer/Releases/0.17 and talk to us on #mer on irc.freenode.net if you'd like to contribute to <a href="http://wiki.maemo.org/Mer">Mer</a>.<br /><br />To shut down Mer, either sudo reboot or pop the battery.<br /></span></span>Carsten Munkhttp://www.blogger.com/profile/06933926472752734837noreply@blogger.com9tag:blogger.com,1999:blog-4951750913288967286.post-67277204491460522932010-01-15T11:57:00.000+01:002010-01-15T12:01:58.450+01:00Making flashable rootfs's for the N900For the N8x0 the way to create flashable rootfs's - that is, rootfs's usable in flasher-3.5 -r rootfs.jffs2 -f -R was through these two steps:<br /><br /><span style="font-family: courier new;">mkfs.jffs2 -d $ROOTFS_DIRECTORY -l -n -e 128KiB </span><br /><span style="font-family: courier new;">-o rootfs.jffs2.raw</span><br /><span style="font-family: courier new;">sumtool -l -n -e 128KiB -o rootfs.jffs2 -i rootfs.jffs2.raw</span><br /><br />Now that the N900 uses ubifs for rootfs instead, how do you do create a flashable rootfs?<br /><br />You need to make a file, ubinize.cfg:<br /><br /><span style="font-family: courier new;">[ubifs]</span><br /><span style="font-family: courier new;">mode="ubi"</span><br /><span style="font-family: courier new;">image="/full/path/to/base.ubi.img"</span><br /><span style="font-family: courier new;">vol_id="0"</span><br /><span style="font-family: courier new;">vol_size="200MiB"</span><br /><span style="font-family: courier new;">vol_type="dynamic"</span><br /><span style="font-family: courier new;">vol_name="rootfs"</span><br /><span style="font-family: courier new;">vol_alignment="1"</span><br /><span style="font-family: courier new;">vol_flags="autoresize"</span><br /><br />Then, you run these two commands - you have to grab mtd-utils - Ubuntu Karmic has mtd-utils with ubifs support.<br /><br /><span style="font-family: courier new;">mkfs.ubifs -m 2048 -e 129024 -c 2047 -R 4MiB -r $ROOTFS_DIRECTORY -v /full/path/to/base.ubi.img</span><br /><span style="font-family: courier new;">ubinize -o /full/path/to/ubi.img ubinize.cfg -m 2048 -p 128KiB -s 512</span><br /><br />You can now run flasher-3.5 -r ubi.img -f -R.<br /><br />What can this information be used for?<br /><br />* Generate a full snapshot of your NAND rootfs and restore it with flasher after trying out something stupid that failed.<br /><br />* Flash alternative OS'es onto your N900 NAND.<br /><br />* Possibilities in rescue menu as in my previous post about bootmenu.sh hook - dump my rootfs to SD and I'll fix it on my PC and reflash it back to my N900.Carsten Munkhttp://www.blogger.com/profile/06933926472752734837noreply@blogger.com3tag:blogger.com,1999:blog-4951750913288967286.post-1491645561894534432010-01-14T13:01:00.000+01:002010-01-14T13:02:04.198+01:00A small but important update in PR1.1This is slightly technical, but PR1.1 included a small but interesting patch to /sbin/preinit (part of getbootstate). /sbin/preinit is the first thing that gets run on Maemo5 for N900. Some history first: In the past we've always had to patch initfs or /sbin/preinit in order to get any sort of bootmenu on 770/N8x0(W)/N900. This has changed with PR1.1 - the patches are now part of Maemo5.0!<br /><br />Besides some patches to aid MMC booting, what is added is few very important lines:<br /><br /><span style="font-family:courier new;">SLIDE_STATE=`cat /sys/devices/platform/gpio-switch/state`</span><br /><span style="font-family:courier new;">if [ x"$SLIDE_STATE = "xopen" ]; then</span><br /><span style="font-family:courier new;"> echo_g "slide open, attempting to use bootmenu"</span><br /><span style="font-family:courier new;"> [ -f /bootmenu.sh ] && . /bootmenu.sh</span><br /><span style="font-family:courier new;">fi</span><br /><br />What does this mean? This means, that when you have the keyboard slid out at power on, it will look for /bootmenu.sh and try to include it in the boot process. If it doesn't exist, it goes on with business as usual.<br /><br />This means, you can add have <a href="http://talk.maemo.org/showpost.php?p=372885&postcount=22">fanoush's bootmenu</a> or your own rescue menu, or whatever could be interesting to have this early in the process.<br /><br />Thanks to <span style="font-style: italic;">fanoush</span> for his bootmenu and to <em>Peter De Schrijver </em>from Nokia for applying my patches.Carsten Munkhttp://www.blogger.com/profile/06933926472752734837noreply@blogger.com0tag:blogger.com,1999:blog-4951750913288967286.post-80941105993373348732010-01-12T21:29:00.000+01:002010-01-13T21:48:58.154+01:00A creative use of MADDE: A new way for theme makers to make themes for Maemo5Recently, three source packages that were published in Diablo times was released in their Fremantle versions which I had waited for a long time for. These are:<br /><br />* A source package which generates a theme, <a href="http://maemo.gitorious.org/fremantle-hildon-desktop/hildon-theme-variant-example">hildon-theme-variant-example</a><br />* This is done on the basis of <a href="http://maemo.gitorious.org/fremantle-hildon-desktop/hildon-theme-layout-5">hildon-theme-layout-5</a> (also published in Maemo5.0 update2 SDK), a package that provides the GTK theming and how to slice and dice a template into the theme elements.<br />* The slicers and dicers and dithers are provided in <a href="http://maemo.gitorious.org/fremantle-hildon-desktop/hildon-theme-tools">hildon-theme-tools</a> (also published in Maemo5.0 update2 SDK).<br /><br />hildon-theme-variant-example is CC BY SA 2.5, hildon-theme-layout-5 is CC BY SA 3.0 and hildon-theme-tools is GPL 2.0 for those who are interested in that.<br /><br />Now, on to what this article is actually about.<br /><br />What I am going to provide you theme makers of Maemo, is a way to make theme packages similar to how the vendor-provided themes on your device is made. We had this ability in Diablo and now we have it in Fremantle.<br /><br />There was a catch with the Diablo method - it required you installing Maemo SDK, well, under Linux and this isn't always commonly found on graphics designers computers which typically ran Windows or MacOS X.<br /><br />Thus, cross-platform solutions like <a href="https://garage.maemo.org/projects/thememaker">Kontorri's Theme Maker</a> was made which emulated what these packages described are doing. It made a binary Debian package, which could only be uploaded to Maemo Extras in the non-free section.<br /><br />Normally, developers upload a source package to Maemo Extras and the autobuilder builds it for us.<br /><br />Now, the ballgame has changed with <a href="http://wiki.maemo.org/MADDE">MADDE</a>. <a href="http://wiki.maemo.org/MADDE">MADDE</a> is a cross-platform Maemo SDK (Linux, Windows, MacOS X), which basically implements just about enough to cross-compile a Qt application. But why is this interesting for theme makers?<br /><br />I've discovered that it is possible to generate the source package for a theme package within <a href="http://wiki.maemo.org/MADDE">MADDE</a>. What does this mean for your workflow as designers? Let me guide you through a workflow of theme design with the help of MADDE and the Maemo Extras repository.<br /><br /><span style="font-weight: bold;">Requirements:</span><br /><br />* Install <a href="http://wiki.maemo.org/MADDE">MADDE</a> on your computer - it's a quite big download but it may be useful when you'd like to wander into Qt development as well. In this example I will be referring to paths from Windows MADDE but it should be transferable to your<br /><br />* Something to open tar.gz files, such as <a href="http://www.rarsoft.com/">WinRAR</a> or similar.<br /><br />* The garage.maemo.org and Extras upload invitation from <a href="http://wiki.maemo.org/Uploading_to_Extras-devel">http://wiki.maemo.org/Uploading_to_Extras-devel</a>. Currently you will need to set a SSH key (write 'blahblahblah' if this is nonsense to you)<br /><br />* Patience and willingness to learn :)<br /><br /><span style="font-weight: bold;">Workflow when beginning a new theme:</span><br /><br /><span style="font-weight: bold;">Step 1: Downloading the theme source package template</span><br /><br />On <a href="http://gitorious.org/hildon-theme-example-stskeeps/hildon-theme-example-stskeeps/commits/master">this page</a> there is a link that is called Download master as tar.gz. What is this? This is a theme template source package<a href="http://gitorious.org/hildon-theme-example-stskeeps/hildon-theme-example-stskeeps/archive-tarball/master"></a> which you can customize to your own needs. Unpack the directory inside this into C:\MADDE\0.5\home\<span style="font-style: italic;">your username</span>. Feel free to rename the directory to your intended theme name.<br /><br /><span style="font-weight: bold;">Step 2: Executing MADDE</span><br /><br />In your start menu (or whatever your OS calls it's launcher), there should be MADDE -> MADDE Terminal.<br /><br />You will now end up in your 'home directory' in MADDE, which is C:\MADDE\0.5\home\<span style="font-style: italic;">your username. </span><br /><br />In there, you can 'cd <span style="font-style: italic;">directory name</span>' where directory name is the name you gave the folder/directory from before.<br /><br /><span style="font-weight: bold;">Step 3: Customizing the source package template, basics</span><br /><br />In the folder you should now 'sh try_it_out.sh'. This will ask you a couple of questions. You only have to do this once.<br /><br />It will ask you the following questions:<br /><br />* What should the package name of your theme be? (Example: hildon-theme-example)<br /><br />* What should be theme name be? (Example: My example theme)<br /><br />* Who is the maintainer of this theme?<br /><br />* What should the directory name be (Example: example)<br /><br />It will then set up the theme template.<br /><br /><span style="font-weight: bold;">Step 4: Customize the graphics - the fun step!</span><br /><br />You can see in the directory several interesting places. The primary place for your work is in the <span style="font-weight: bold;">template</span> directory. This contains template.svg (SVG version of the basis template) and template.png (PNG version of the template). While it is up to you which one you want to edit, remember to always export template.png from the SVG.<br /><br />Similar directories, icons, background images and other things to customize can be found in the <span style="font-weight: bold;">applications</span> directory.<br /><br /><span style="font-weight: bold;">Step 5: Building the source package</span><br /><br />When you're done customizing, you can finally build your source package. In MADDE, you can do this:<br /><br /><span style="font-style: italic;">username $ </span>mad dpkg-buildpackage -S -us -uc -d<br /><br />This will generate a .dsc and .tar.gz in the parent directory which you can use in the next step.<br /><br /><span style="font-weight: bold;">Step 6: Uploading to Maemo Extras<span style="font-weight: bold;"><br /><br /><span style="font-weight: bold;"></span></span></span>You can now upload this .dsc and .tar.gz file to Maemo Extras through the <a href="https://garage.maemo.org/extras-assistant/">Maemo Extras Assistant</a><span style="font-weight: bold;">. </span>The autobuilder will then build the theme package for you and your theme will show up in Extras-devel.<br /><br />As a bonus, anyone can base their themes upon yours as they have the 'source code' of your theme (under CC SA BY 2.5 conditions) - something not possible with ThemeMaker.<br /><br />There are probably more maintaining issues which I hope the real theme makers will explore such as adding new versions to changelogs and such and tell about in their blogs.<br /><br />If you have problems with any of the steps, prod me (Stskeeps) on #maemo , irc.freenode.net or comment this post.Carsten Munkhttp://www.blogger.com/profile/06933926472752734837noreply@blogger.com0tag:blogger.com,1999:blog-4951750913288967286.post-51794182157138779652010-01-07T15:37:00.000+01:002010-01-07T15:45:03.654+01:00Enabling RTC (clock), battery charging and watchdogs on alternative OS'es on N900Just spent a day getting RTC (clock), battery charging and watchdogs working for Mer on N900 and I thought I'd like to share how it was done for those of you wanting to run other OS'es on N900. The watchdog package in typical Debian does not by default work with two watchdogs, so we are using DSME. <br /><br />This example assumes that you have made a /mnt/initfs directory on your rootfs and that you're running this from <a href="http://talk.maemo.org/showpost.php?p=372885&postcount=22">fanoush's bootmenu</a> which will put the Maemo5 root file system in /mnt/initfs<br /><br />You should as early in your boot process (after udev has been started), run the following script:<br /><br /><br /># Set up initfs environment<br /><span style="font-family:courier new;"><br /><br />hwclock --hctosys<br /><br />chroot /mnt/initfs mount -n -t proc proc /proc<br /><br />chroot /mnt/initfs mount -n -t sysfs sysfs /sys<br /><br />mount --bind /dev /mnt/initfs/dev<br /><br />chroot /mnt/initfs mount -n -t tmpfs -o size=1M,noatime tmpfs /tmp<br /><br />chroot /mnt/initfs mount -n -t tmpfs -o size=256k,mode=0755,nosuid,noatime tmpfs /var/run<br /><br /># Check current boot state. Could be 'USER'<br />export BOOTSTATE=`chroot /mnt/initfs getbootstate 2>/dev/null`<br /><br />touch /mnt/initfs/tmp/$BOOTSTATE<br /><br />echo $BOOTSTATE > /mnt/initfs/tmp/STATE<br /><br />chroot /mnt/initfs /sbin/dsme -p /usr/lib/dsme/libstartup.so &<br /><br />until chroot /mnt/initfs waitfordsme; do<br /><br /> sleep 1<br /><br />done<br /><br />LOGGER='/usr/bin/logger -s -tBME'<br /><br />SYSFS_VBUS_PATH=/sys/class/i2c-adapter/i2c-1/1-0048/twl4030_usb/vbus<br /><br /><br /># check dead battery pre-charge<br /><br />if [ $(cat $SYSFS_VBUS_PATH) -eq 1 ]; then<br /><br />chroot /mnt/initfs /usr/sbin/bme_RX-51 -b<br /><br />case $? in<br /> <br />0)<br /> <br />$LOGGER -pdaemon.notice 'precharge -> ok'<br /> <br />;;<br /> <br />2)<br /> <br />$LOGGER -pdaemon.crit 'precharge -> power off'<br /> <br />exit 1<br /> <br />;;<br /> <br />*)<br /> <br />$LOGGER -pdaemon.crit 'precharge -> failure'<br /> <br />;;<br /> <br />esac<br /><br />fi<br /><br /># Start battery management entity<br />chroot /mnt/initfs /usr/sbin/bme_RX-51 &<br /></span><br /><span style="font-family: courier new;"># Bonus: To get hald-addon-bme working (bad bad voodoo). We need to test if toggles_w's hald-addon-bme replacement works on N900.</span><br /><span style="font-family: courier new;"># dpkg-repack hald-addon-bme from rootfs and dpkg -i it</span><br /><span style="font-family: courier new;">mount --bind / /mnt/initfs/mnt/new_root</span><br /><span style="font-family: courier new;">chroot /mnt/initfs ln -s /mnt/new_root/tmp/bme-dbus-socket /tmp/bme-dbus-socket</span><br /><span style="font-family: courier new;">ln -s /mnt/initfs/tmp/.bmesrv /tmp/.bmesrv</span><br /><span style="font-family: courier new;">ln -s /mnt/initfs/tmp/dsmesock /tmp/dsmesock</span>Carsten Munkhttp://www.blogger.com/profile/06933926472752734837noreply@blogger.com0tag:blogger.com,1999:blog-4951750913288967286.post-23632918905191559632010-01-04T14:25:00.000+01:002010-01-04T14:32:48.299+01:00On the perceived openness of Maemo, part one: Your target audience<title></title> <meta name="GENERATOR" content="OpenOffice.org 3.1 (Linux)"> <style type="text/css"> <!-- @page { margin: 0.79in } P { margin-bottom: 0.08in } --> </style> <p style="margin-bottom: 0in;"> <meta equiv="CONTENT-TYPE" content="text/html; charset=utf-8"> <title></title> <meta name="GENERATOR" content="OpenOffice.org 3.1 (Linux)"> <style type="text/css"> <!-- @page { margin: 0.79in } P { margin-bottom: 0.08in } --> </style> </p><p style="margin-bottom: 0in;">Some time ago, I stumbled over <a href="http://flors.wordpress.com/2009/08/27/software-freedom-lovers-here-comes-maemo-5/#comment-1798">a rather aggressive comment </a>in Quim's blog, which made me wonder if we are approaching the topic of open sourcing Maemo components in the right manner. </p> <p style="margin-bottom: 0in;">The comment in question took big offense to the way the page <a href="http://wiki.maemo.org/Why_the_closed_packages">Why_the_closed_packages</a> presents reasons for keeping things closed source and it appeared to me that the meaning of the different reasons in his world view was completely different to how I perceive them. I usually classify myself as a open source lover with a realistic sense of why there sometimes has to exist closed source software but I'll try to remain objective and respectful to both sides of the spectrum in this article.</p> <p style="margin-bottom: 0in;">To further understand this problem, I asked Paul Fertser of #maemo – one of the people I've had most intense debates with about licensing issues in Maemo and why things are the way they are, to read <a href="http://wiki.maemo.org/Why_the_closed_packages">Why_the_closed_packages</a> sections 1 and 3 (Reasons, Requesting the opening of closed components) with his bias towards free software and document his thoughts of it. The quotes are presented with his permission. His background is in the OpenMoko community which is on the more liberal end of the open source software spectrum in the mobile Linux space. </p> <p style="margin-bottom: 0in;">Why did I ask someone with a huge bias to do this? Because he has been showing willingness to try to understand why things are they are in order to make more sense of the open source situation in Maemo – and that is something I respect. In his reaction to <a href="http://wiki.maemo.org/Why_the_closed_packages">WTCP</a>, he writes pretty clearly why it is useful to approach it with this angle:</p> <p style="margin-bottom: 0in;">“<i>I assume that the purpose of the page is to make the process of open-sourcing in particular and development in general efficient and constructive.
<br /></i></p><p style="margin-bottom: 0in;"><i>That means that neither your time, nor time of your colleagues should be spent on void talks about something you can't change anyway and that people proposing opensourcing a particular component should concentrate on providing the most relevant arguments instead of taking part in religious debates.
<br />
<br />To fulfill this purpose the page should be understandable and acceptable by the target audience.“</i> --Paul Fertser</p> <p style="margin-bottom: 0in;">The people who are going to make the most noise about open source policies are who our target audience of this page should be in order to be able to move away from time consuming religious debates and into constructive debates and discussions. That said, the page should also target developers for whom open sourcing a component would help their development. </p> <p style="margin-bottom: 0in;">The important thing is to <b>spend more time on the actual open sourcing process</b> than in <b>time consuming discussions</b>.</p> <p style="margin-bottom: 0in;">PF suggests some guidelines for the page, which I quote verbatim as see mostly no argument in what he states, emphasis mine:</p> <p style="margin-bottom: 0in;"><i>First of all, you mainly target developers. And you take into account that among those interested in open-sourcing there will be a considerable amount of "free software zealots" who are<b> sceptical and </b><b>irritated about the proprietary software by default</b>. So to avoid aversion that will be later reflected upon you and your fellows in form of negative emotions and useless quarrels i think it would be beneficial to follow several guidelines:
<br /></i>
<br /></p> <p style="margin-bottom: 0in;"><i>* Write from a <b>hacker point of view</b>, that way they'll feel you're "with" them and not "against", that makes people feel much more comfortable, take <b>emotional response</b> of your readers into account.</i></p> <p style="margin-bottom: 0in;"><i>* Avoid buzzwords and formal style, <b>a convincing page should look nothing like a press-release</b> as we all know everything that comes from a PR department smells like(</i>added by editor<i>) lies.</i></p> <p style="margin-bottom: 0in;"><i>* Add <b>technical details</b>, that makes you look understanding the issues in deep, increasing credibility of other information.</i></p> <p style="margin-bottom: 0in;"><i>* Do not use really questionable arguments, that's like a red flag to a bull.</i></p> <p style="margin-bottom: 0in;"><i>* Take into account <b>many developers do not understand business and business reasons</b>, so those should be explained in a more detailed way.
<br /></i>
<br /></p><p style="margin-bottom: 0in;"><i>To me it seems it would be nice to have some introductory words on the page, at least that would make me less irritated and more constructive right from the beginning. I would gladly accept something like:
<br />
<br />"We all know proprietary software sucks. Indeed it does, <b>many of the headaches could have been avoided if there was less of it. Unfortunately, the reality is working in such a way we have to make compromises, that's unavoidable. </b>On the other hand, there are actual possibilities to free more of Maemo and Maemo-related software, <b>read on to find out what can be done and how to perform that.</b>"
<br />
<br />That would make me feel comfortable because it looks informal, friendly and understanding. Also it gives hope. A nice way to get a pleased and listening reader.</i></p> <p style="margin-bottom: 0in; font-style: normal;">While I don't fully agree with the wording of the text or opinions of PR departments, there's some parts I do find worth to mention. The best way to deal with an emotional response due to a default irritation of proprietary software is to provide technical details how the process actually work. </p> <p style="margin-bottom: 0in; font-style: normal;">Like what happens when someone requests the open sourcing of a component. Does it go to a manager who agrees or disagrees or is there a wider process of checking with lawyers etc?. </p> <p style="margin-bottom: 0in; font-style: normal;">These processes are not documented and transparency of these processes will help understanding how things are proceeding and provide examples of how open sourcing is done in practice from within a company. It is important to note that open sourcing does not happen overnight and present the practices.</p> <p style="margin-bottom: 0in; font-style: normal;">The next part of this series will be about the exceptions to open sourcing and discussing the different reasons for having some components closed source.</p> <p style="margin-bottom: 0in;">Thanks to Paul Fertser for his input to this article.</p> <p style="margin-bottom: 0in;">
<br /></p> <p style="margin-bottom: 0in;">
<br /></p> <p style="margin-bottom: 0in;">
<br /></p> <p></p> Carsten Munkhttp://www.blogger.com/profile/06933926472752734837noreply@blogger.com2tag:blogger.com,1999:blog-4951750913288967286.post-47000636352110258962009-10-28T14:58:00.000+01:002009-10-28T15:03:08.311+01:00My first day as maemo.org distmasterStarting from today, I will be officially starting my work as maemo.org distmaster. Nokia has gracefully sponsored this position for the community at the request of the maemo.org community council.<br /><br />The current maemo.org team cover areas such as bug management, system administration&collaboration spaces, documentation, forums and maintaining software repositories. All these positions facilitate development and collaboration in the community - one based around the Maemo platform and the Nokia devices. But one particular area is missing: the facilitation of tablet/device operating system development.<br /><br />While maemo.org currently targets developers building on top of the OS, many people within the community is interested in improving the OS, since it is what they have to deal with daily - as Maemo users. In my time within maemo.org I've found there's been a reliance on Nokia to provide fixes for problems - instead of looking within the community for people who were capable enough to fix the problem, deliver the solution and publish it in a manner that non-developers can utilize the fix.<br /><br />One of the maemo.org 2010 Agenda goals is to provide Maemo variants - which would be the pipeline for delivering community fixes.<br /><br />Maintaining a Maemo variant is not a easy job - you have to deal with a lot of different stakeholders in a diplomatic manner, mentor and engage new developers, often do a lot of the heavy lifting yourself, faciliate the developing and invent new collaboration spaces for this.<br /><br />Facilitating and engaging the community in this manner is a day job - which is why we have the maemo.org team.<br /><br />I will have 20 hours per week (part-time until January of my own choice) where I will be doing mostly community work and some internal Nokia work as needed.<br /><br />The primary role as a distmaster is defined as facilitating the development of Maemo variants (Mer, Diablo/Fremantle Community Variants, etc):<br /><br />* Developing collaboration spaces for developers of Maemo variants<br />* Mentoring and engaging developers in order to move the Maemo platform and variants ahead<br />* Communicating with stakeholders (Nokia, distributions implementing the Maemo platform, users and developers)<br /><br />Secondary role is serving as a paid system developer for the maemo.org community:<br /><br />* Developing fixes and features for the Maemo OS & variants either on his/her own based on the input of maemo.org community council<br />* or through activating, mentoring for and collaborating with community developer(s) in order to get it completed in collaboration with upstream developers.<br /><br />As I am also maintaining the ports and base system area for Mer, I will focus myself on the hardware support for Nokia devices and let other team members deal with other device communities/vendors to avoid any potential conflict of interest situations.<br /><br />As primary facilitator for the Mer project I've successfully helped activate many developers within the community in order to get Mer to where it is today. A lot of these developers came to the Maemo project at the hope of being able to develop the OS but ended up contributing few pieces to move ahead - but there was noone to group all these things and incorporate them in the system, so the brilliant pieces ended up gathering dust - until now. Now there's a official community position to make this work happen.<br /><br />Looking forward to working even more closely with this community.Carsten Munkhttp://www.blogger.com/profile/06933926472752734837noreply@blogger.com1tag:blogger.com,1999:blog-4951750913288967286.post-69469939746710046242009-10-04T11:31:00.001+02:002009-10-04T12:10:30.462+02:00Maemo Summit talks of interest to Mer team membersSo, <a href="http://wiki.maemo.org/Maemo_Summit_2009">Maemo Summit 2009</a> is coming up - and many people who are contributing to Mer are going to this event.<br /><br />From my perspective, there are <a href="http://wiki.maemo.org/Maemo_Summit_2009/Schedule">some interesting talks</a> that apply to Mer contributors and I can recommend seeing:<br /><br />Friday: <br /><br />10:15 Maemo 5 and the Nokia N900 by Ari Jaaksi, VP - Maemo Devices @ Nokia<br /><br />12:15 Harmattan Highlights - Developer Opportunities by Janne Heikkinen, Director - Maemo Product Planning @ Nokia <br /><br />14:15 Why the Maemo Community matters to Nokia - Alan "qole" Bruce of Maemo Community Council interviewing Ari Jaaksi, VP - Maemo Devices @ Nokia <br /><br />15:00 N800 room: Cross-platform with Qt - live - Ariya Hidayat, Software Engineer, Nokia <br />15:00 N900 room: UX panel (Tim Samoff et al)<br />15:00 N810 room: UI design of Maemo 5 apps - Annu-Maaria Nivala, UX team, Digia <br /><br />15:30 N810 room: Developing widgets on Maemo 5 - showcase Foreca Weather,Juha Järvi, Software Designer, Foreca <br />15:30 N800 room: Mer - how the community innovates - Carsten Munk, Lead Developer, Mer project <br /><br />16:00 N810 room: Developing apps with Qt for Maemo5 - Kate Alhola, Forum Nokia, Chief Guru on Maemo <br />16:00 N800 room: Your foundation for open-source innovation: TI’s OMAP processor-based Zoom platform. - Ameet Suri, Texas Instruments <br /><br />16:30 N810 room: Developing apps with Qt on Harmattan - Ville Lavonius, Product Manager Developer Offering, Nokia and Jussi Mäkinen, Maemo Marketing, Nokia <br /><br />17:00 N800 room: Harmattan Architecture Overview - Juha Tukkinen, Principal Engineer, Architecture and Sys, Nokia <br /><br />20:00 Maemo Party in FlexBar coordinated by Jussi Mäkinen. It's a public bar and the doors are open to anybody. Our program will go until 23h or so, but the bar is open until really late with good music. Don't forget the Saturday schedule, though. :) <br /><br />- where I'll have Mer stickers for your devices along for registered Mer contributors :)<br /><br />Saturday:<br /><br />11:00 N900 room: Designing UI for Maemo 5 - Mox Soini <br />11:00 N810 room: PyQt application development on Maemo - Attila Csipa <br /><br />12:00 N810 room: Introducing the Harmattan UI framework - Tomas Junnonen <br />12:00 770 room: BOF, Extras/autobuilder/interfaces round-table (for those interested)<br /><br />14:30 Lightning talks:<br /><br />Development Nirvana: How Maemo Application Development Should Be - Andrew Flegg <br /><br />DVCS? git? - How does that work then? - David Greaves (you'll want to know this skill)<br /><br />15:45 N810 room: Adapting GNOME applications to Maemo Fremantle - Joaquim Rocha <br />15:45 N800 room: Contributing with Git & Gitorious - Johan Sørensen (we use Gitorious extensively in Mer)<br /><br />16:15 N900 room: Mer - a year after - Carsten Munk (a talk on what has gone on in the last year regarding Mer)<br />16:15 770 room: Git hands-on workshop - David Greaves (useful skill)<br /><br />16:45 N900 room: maemo.org Bug Management - Andre Klapper <br /><br />17:30 N800 room: The Qt Mobility Project - Alex Luddy<br /><br />18:00 N810 room: Maemo and oFono - Aki Niemi, Rémi Denis-Courmont <br />18:00 N900 room: The Maemo 5 Address Book - Mathias Hasselmann, Travis Reiter <br />18:00 N810 room: Publishing your software through maemo.org<br />Niels Breet<br />18:00 770 room: BoF: The future of GTK+/Hildon in Maemo Harmattan, Alberto Garcia, Claudio Saavedra <br /><br />Sunday:<br /><br />11:00 N800 room: Building for Mer - David Greaves<br /><br />11:30 N800 room: Designing QT application for Maemo 5 and Maemo 6 - Sergiy Dubovik, Ian Monroe<br /><br />12:00 N800 room: Maemo Platform Security: Principles and Concepts - Elena Reshetova <br />12:00 770 room: Extending the Hildon desktop - Marc Ordinas i Llopis (we are switching to Fremantle hildon-desktop in 0.17)<br /><br />12.30: N900 room: Towards painless and quality translations - Dimitris Glezos <br />12.30: N810 room: Telepathy on Maemo - Marco Barisione <br />12.30: 770 room: What to do about /opt in Fremantle - Marius Vollmer <br /><br />14.30 lightning talks:<br /><br />How to speed up your Maemo application development - Raul Herbster <br />N900 HW architecture overview & power management - Igor Stoppa <br />From corporations to communities: responsible and effective engagement - Randall "Texrat" Arnold<br />Mer from a user's perspective - Tomasz DominikowskiCarsten Munkhttp://www.blogger.com/profile/06933926472752734837noreply@blogger.com0tag:blogger.com,1999:blog-4951750913288967286.post-69188224941327665842009-08-20T11:20:00.001+02:002009-08-20T11:20:28.036+02:00DebConf thoughts, part two: On cross-compilation environmentsThis post is part two of my DebConf thoughts series, <a href="http://mer-project.blogspot.com/2009/08/debconf-thoughts.html">first post here</a>. At DebConf we also attended three talks directly related to something we use quite often in Maemo and Mer: cross-compilation. The first was by <a href="http://www.daimi.au.dk/%7Ecvm/sb2.pdf">Riku Voipio/suihkulokki about Scratchbox 2</a> (mirrored by me as I can't find the original URL) - which was also a maemo.org talk like ours, as well as the round-table session on <a href="https://penta.debconf.org/dc9_schedule/events/395.en.html">Multiarch</a> and a talk by Wookey on Crossbuilding on Debian for a derived distro.<br /><br />Scratchbox 2 is the successor of Scratchbox 1 - which most of you know from Maemo SDK. It is different from SB1 in many ways. It operates with the concept of a host tools distribution - tools which are used to accelerate certain parts of a compilation process. Comparing to SB1, with their devkits and such, this approach is much more flexible in terms of maintaining the tools distribution and keeping it up to date with current packages to match your target. This was previously difficult to maintain in SB1 and has been the source of much headache for developers on Maemo to having to deal with old and broken tools which no longer was able to build 'modern' packages.<br /><br />Multiarch is the term being used to refer to the capability of a system to run applications of multiple different binary targets on the same system. This means that the different architecture files (libraries, binaries, development headers etc) are hosted in the same file system. The proposal also includes ability to have cross-architecture dependancies of packages. This would mean it would be easier in the same system (such as Debian) to build packages for different architectures within one system. It would however often also mean that you would need same package versions in all architectures as the one you're targetting.<br /><br />This problem leads me to what I intend to discuss: The builder approach of cross-compilation vs a user environment approach for cross-compilation.<br /><br />A cross-compilation environment has to user-level emulate as much as to make the cross-compilation of the Debian package succeed.<br /><br />A user environment will have to provide a full environment with interactive shell, editors, etc - and emulate 'being' the target architecture system. This imposes a greater strain on emulation and is more difficult to achieve.<br /><br />What most Maemo developers encounter, is the Scratchbox SDK. It is a development environment for all your needs and supports different targets both native and foreign architectures. It provides an emulated Maemo environment for developers to test in and should be enough to develop for the Maemo platform.<br /><br />Marius Vollmer once wrote a post on <a href="http://mariusv.wordpress.com/2008/12/07/the-cardinal-sin-of-scratchbox-a-backhanded-stab-at-the-maemo-sdk-and-the-promise-of-a-pot-of-gold/">"The cardinal sin of Scratchbox"</a>. It mentions the overreaching redirection that SB2 inherited from SB1 - that almost everything from doctools to python is redirected in the Python environment. This sin extends to the emulated Maemo environment - and that's what harms developers. The emulated Maemo environment is skewed by the redirection of the cross-compilation environment, to the point that Scratchbox Maemo has little to do with how Maemo on device works.<br /><br />In Mer we began back in the <a href="http://wiki.maemo.org/Maemo_Reconstructed">Maemo Reconstructed</a> proposal to ponder how SDK could be different. What we ended up on is that the entire Mer system should be able to run on a given host for development. We currently do this through chroots and virtual machines. This means, when you develop and test your applications - you develop them natively, first for your host architecture and then test it on your host.<br /><br />The host is a 'real' Mer environment like on every other device and should behave the same no matter device or architecture. Once you're done developing, you can either send the source package to a builder farm (in our case, <a href="http://build.opensuse.org/">OpenSUSE Build Service</a>) - which will spit out cleanly built x86, ARM etc. packages for us to put on our devices and test or cross-compile locally with an automated cross-compilation environment. With Mer, it's even possible to build for ARM on your own ARM device - it's just a Debian/Ubuntu laying underneath the surface.<br /><br />We've had great success with the builder approach of cross-compilation in Mer. Might it be worth considering making - in abstract terms X86 chroot tar.gz's/VMDKs of full Maemo (themes, icons, etc) for developers to use to match the experience without inference by the cross-compilation environment?<br /><br />One for development - dpkg-buildpackage is possible (coreutils instead of busybox) and one that matches a typical Maemo device. And then when you want to build for a different architecture, abstract it away in a one-liner that takes a source package as input.Carsten Munkhttp://www.blogger.com/profile/06933926472752734837noreply@blogger.com0tag:blogger.com,1999:blog-4951750913288967286.post-90689521226278077492009-08-03T12:23:00.000+02:002009-08-03T17:06:57.633+02:00DebConf thoughtsRecently, zenvoid and I recently participated in <a href="http://www.debconf.org/">DebConf9</a> and presented an one hour BoF session on <a href="http://wiki.maemo.org/Mer">Mer</a> - made possible by sponsorship by <a href="http://www.nokia.com/">Nokia</a> for our travel and accommodation.<br /><br />Arriving in Caceres, Spain - after an exhausting and 20 hour journey from Denmark (train, flight, metro, and then train again) and meeting up with my local travel companion zenvoid - we found our hotel, which had free WiFi - with working power saving management, a must for tablet users. :)<br /><br />At our first day there was a talk on 'HP and Debian' where some abstractions were presented that apply very well to the Mer project. Quote from presentation:<br /><br /><blockquote>A key attribute of Linux and many Free Software applications is that they are developed and supported “by the community”<br />What does that mean?<br /><ul><li>No one company in charge</li><li>A range of contributors with varied interests, abilities, and motivations</li></ul>Innovation often comes from surprising places, thanks to “the long tail of contribution”<br /></blockquote>The Mer project likewise consists of a lot of different contributors from different device communities. Some are testers, some are developers, some are artists and some are users. Mer is effectively the result of a long tail of contributions from these people. Our innovation is the mix of this long tail of contribution - and the responsibility of the project is to direct future contributions in the right direction that will encourage new contributors to join in, maintain current contributors, mentor new developers and to encourage users to actually use our software.<br /><br />Another part of this presentation is the angle of HP - what it wants and a comparison to what Debian developers want. Many comparisons between maemo.org and Nokia/Maemo Devices can be drawn in this part. HP needs revenue, growth, differentiation and corporate reputation. Differentiation is a word often heard in a negative context when speaking of closed source parts of Maemo. The reason why differentation is needed - is the fact that those 20% closed source parts together with the hardware is what generates the revenue, growth that makes it possible to have the 80% open source (and free) software such as Hildon and other Maemo APIs exist. And have active developers developing on them.<br /><br />This is the reason why we, in Mer, realize that differentiation is needed to compete in the mobile device market. However, like Android, we provide a full base system - and understand that device developers needs to differentiate on top with extra bits. What we're trying to do in our <a href="http://wiki.maemo.org/Mer/Documentation/Vendor_Social_Contract">vendor social contract</a> is to have both a open system and yet allow the users of their devices to remix and alter their devices, even though closed source bits (codecs, firmware, special applications for vendor, added value) exist and are needed for full functionality. It would make the user able to use their devices even to the fullest even after the vendor has long given up on the device in question.<br /><br />In the second day, we had our presentation - in the BoF room, no projector and a deadly hot room with noisy aircondition- but 20 people approx showed up to hear the talk. The TuxBrain/Freerunner buzzfix people were friendly and recorded the session on video (TBA). What we did was to put Mer on Freerunner, N810, N800, 770, SmartQ5 and simply line them up - and after the talk invite people to come and play with the devices and Mer.<br /><br />I'm often very critical of my own talks - but all in all it went well, even though I did forget the one key element to any presentation: telling people where they can find out more about your project :). People seemed to poke curiously at our touchscreen devices and ask questions about them. One thing to notice about DebConf was the large amount of Nokia tablets and Neo Freerunner's represented.<br /><br />After our session the OpenMoko buzzfix party went on, where we showed Mer on Freerunner to different people - and saw how people used their Freerunners. Something that really caught my eye was <a href="http://www.openmoko.openmatica.es/QALEE/">Qalee</a> , which is a Qt-based environment for the Freerunner. Seems like the guy making it sure has a talent for both code and UI design. See <a href="http://www.openmoko.openmatica.es/QALEE/ScreenShoots/">screenshots here</a><br /><br />In between the talks, we spent most of our time in the hacklabs, - where we met people like suihkulokki (Riku Voipio) and p2 (Peter de Schrijver) from Maemo Devices - and we even saw a N810 debug board with JTAG and serial ports.<br /><br />In order to get to talk to people, we put out all our gadgets running Mer on the table, and began hacking - hoping it'd attract. And it did. - we met and talked to a lot of people and we hope that they think of Mer next time they'd like to have an environment for their tablet-like devices - or if they talk to someone who would.<br /><br />Debhelper in Maemo is fairly old - we saw a talk <a href="https://penta.debconf.org/dc9_schedule/events/418.en.html">'not your grandpa's debhelper'</a> - where it's shown how simple a debian/rules file can look these days with a modern debhelper. What really impressed me was this example:<br /><br /><blockquote>#!/usr/bin/make -f<br />%:<br /> dh $@<br /><br /></blockquote>Which would autodetect if the package used autotools, setuputils, etc, and then build the package according to this. It obviously supported overriding things as well, and in a fairly simple manner.<br /><br />This is the first out of a small bunch of posts about experiences from DebConf (this is the first), and thoughts on communities creating technology.<br /><blockquote></blockquote>Carsten Munkhttp://www.blogger.com/profile/06933926472752734837noreply@blogger.com0