From 27c5a25be2a19e5e6de21cc5449ed192937200cc Mon Sep 17 00:00:00 2001 From: Alex Deryskyba Date: Thu, 22 Jan 2015 14:55:56 +0100 Subject: [PATCH 1/6] projects/WeTek_Play/patches/linux: Update patch for WeTek DVB driver --- .../patches/linux/20-wetek_dvb_code.patch | 73 ++++++++++++++++--- 1 file changed, 64 insertions(+), 9 deletions(-) diff --git a/projects/WeTek_Play/patches/linux/20-wetek_dvb_code.patch b/projects/WeTek_Play/patches/linux/20-wetek_dvb_code.patch index 449536b051..2fc55bb6b5 100644 --- a/projects/WeTek_Play/patches/linux/20-wetek_dvb_code.patch +++ b/projects/WeTek_Play/patches/linux/20-wetek_dvb_code.patch @@ -1,3 +1,39 @@ +diff -Naur a/arch/arm/plat-meson/include/plat/bt_device.h b/arch/arm/plat-meson/include/plat/bt_device.h +--- a/arch/arm/plat-meson/include/plat/bt_device.h 2015-01-15 18:54:51.000000000 +0100 ++++ b/arch/arm/plat-meson/include/plat/bt_device.h 2015-01-22 14:31:05.000000000 +0100 +@@ -21,6 +21,7 @@ + int gpio_en; + int gpio_host_wake; + int gpio_wake; ++ struct pinctrl *pinctrl; + }; + + #endif +diff -Naur a/drivers/amlogic/bluetooth/bt_device.c b/drivers/amlogic/bluetooth/bt_device.c +--- a/drivers/amlogic/bluetooth/bt_device.c 2015-01-15 18:54:08.000000000 +0100 ++++ b/drivers/amlogic/bluetooth/bt_device.c 2015-01-22 14:26:14.000000000 +0100 +@@ -170,6 +170,9 @@ + } else { + pdata->gpio_wake = amlogic_gpio_name_map_num(str); + } ++ ++ pdata->pinctrl = devm_pinctrl_get_select_default(&pdev->dev); ++ + } + #else + pdata = (struct bt_dev_data *)(pdev->dev.platform_data); +@@ -242,7 +245,10 @@ + pdata = prdata->pdata; + } + +- if(pdata) { ++ if(pdata) { ++ if (pdata->pinctrl) ++ devm_pinctrl_put(pdata->pinctrl); ++ + bt_device_deinit(pdata); + kfree(pdata); + } diff -Naur a/drivers/amlogic/Kconfig b/drivers/amlogic/Kconfig --- a/drivers/amlogic/Kconfig 2015-01-04 18:07:57.000000000 +0100 +++ b/drivers/amlogic/Kconfig 2015-01-01 15:31:17.000000000 +0100 @@ -23,8 +59,8 @@ diff -Naur a/drivers/amlogic/Makefile b/drivers/amlogic/Makefile diff -Naur a/drivers/amlogic/wetek/avl6211.c b/drivers/amlogic/wetek/avl6211.c --- a/drivers/amlogic/wetek/avl6211.c 1970-01-01 01:00:00.000000000 +0100 -+++ b/drivers/amlogic/wetek/avl6211.c 2015-01-14 16:08:49.000000000 +0100 -@@ -0,0 +1,1970 @@ ++++ b/drivers/amlogic/wetek/avl6211.c 2015-01-22 14:01:34.000000000 +0100 +@@ -0,0 +1,1977 @@ +/* + * Driver for the Availink AVL6211+AV2011 DVB-S/S2 demod+tuner + * @@ -98,6 +134,7 @@ diff -Naur a/drivers/amlogic/wetek/avl6211.c b/drivers/amlogic/wetek/avl6211.c + u16 fec_freq; /* FEC clock in 10kHz units */ + u16 mpeg_freq; /* MPEG clock in 10kHz units */ + ++ bool boot; +}; +struct avl6211_diseqc_tx_status +{ @@ -1814,6 +1851,9 @@ diff -Naur a/drivers/amlogic/wetek/avl6211.c b/drivers/amlogic/wetek/avl6211.c + struct avl6211_state* state = fe->demodulator_priv; + int ret; + ++ if (state->boot) ++ return 0; ++ + ret = avl6211_setup_pll(state, (const struct avl6211_pllconf * )(pll_conf + state->config->demod_refclk)); + if (ret) + goto err; @@ -1907,7 +1947,10 @@ diff -Naur a/drivers/amlogic/wetek/avl6211.c b/drivers/amlogic/wetek/avl6211.c + if (ret) + goto err; + ++ state->boot = true; ++ + dev_info(&state->i2c->dev, "AVL6211+AV2011 init OK\n"); ++ + return 0; + +err: @@ -3997,8 +4040,8 @@ diff -Naur a/drivers/amlogic/wetek/Makefile b/drivers/amlogic/wetek/Makefile +EXTRA_CFLAGS += -I. diff -Naur a/drivers/amlogic/wetek/mn88436.c b/drivers/amlogic/wetek/mn88436.c --- a/drivers/amlogic/wetek/mn88436.c 1970-01-01 01:00:00.000000000 +0100 -+++ b/drivers/amlogic/wetek/mn88436.c 2015-01-11 20:30:56.000000000 +0100 -@@ -0,0 +1,378 @@ ++++ b/drivers/amlogic/wetek/mn88436.c 2015-01-22 13:56:46.000000000 +0100 +@@ -0,0 +1,379 @@ +/* + * Driver for the Panasonic MN88436 ATSC demodulator + * @@ -4199,8 +4242,9 @@ diff -Naur a/drivers/amlogic/wetek/mn88436.c b/drivers/amlogic/wetek/mn88436.c + int ret, i; + u8 d; + -+ state->boot = false; -+ ++ if (state->boot) ++ return 0; ++ + dev_info(&state->i2c->dev, "Uploading demod firmware (%s)...\n", MN88436_DEMOD_ATSC); + + ret = request_firmware(&fw, MN88436_DEMOD_ATSC, &state->i2c->dev); @@ -5613,8 +5657,8 @@ diff -Naur a/drivers/amlogic/wetek/mxl603.h b/drivers/amlogic/wetek/mxl603.h +#endif /* __MXL603_H__ */ diff -Naur a/drivers/amlogic/wetek/nimdetect.c b/drivers/amlogic/wetek/nimdetect.c --- a/drivers/amlogic/wetek/nimdetect.c 1970-01-01 01:00:00.000000000 +0100 -+++ b/drivers/amlogic/wetek/nimdetect.c 2015-01-11 20:28:06.000000000 +0100 -@@ -0,0 +1,411 @@ ++++ b/drivers/amlogic/wetek/nimdetect.c 2015-01-20 19:31:24.000000000 +0100 +@@ -0,0 +1,422 @@ +/* + * Wetek NIMs/DVB detection + * @@ -5740,15 +5784,27 @@ diff -Naur a/drivers/amlogic/wetek/nimdetect.c b/drivers/amlogic/wetek/nimdetect +extern int usb_control_msg(struct usb_device *dev, unsigned int pipe, __u8 request, + __u8 requesttype, __u16 value, __u16 index, void *data, + __u16 size, int timeout); ++extern const unsigned long cpu_bit_bitmap[BITS_PER_LONG+1][BITS_TO_LONGS(NR_CPUS)]; ++extern int __irq_set_affinity(unsigned int irq, const struct cpumask *mask, bool force); ++ +EXPORT_SYMBOL(usb_bus_list); +EXPORT_SYMBOL(usb_bus_list_lock); +EXPORT_SYMBOL(usb_hub_find_child); +EXPORT_SYMBOL(usb_get_dev); +EXPORT_SYMBOL(usb_control_msg); +EXPORT_SYMBOL(get_nims_infos); ++EXPORT_SYMBOL(__irq_set_affinity); + + + ++const struct cpumask *aml_get_cpu_mask(unsigned int cpu) ++{ ++ const unsigned long *p = cpu_bit_bitmap[1 + cpu % BITS_PER_LONG]; ++ p -= cpu / BITS_PER_LONG; ++ return to_cpumask(p); ++} ++EXPORT_SYMBOL(aml_get_cpu_mask); ++ +void get_nims_infos(struct wetek_nims *p) +{ + memcpy(p, &weteknims, sizeof(struct wetek_nims)); @@ -5861,7 +5917,6 @@ diff -Naur a/drivers/amlogic/wetek/nimdetect.c b/drivers/amlogic/wetek/nimdetect + amlogic_gpio_direction_output(GPIOD_8, 0, "nimdetect"); + msleep(600); + amlogic_gpio_direction_output(GPIOD_8, 1, "nimdetect"); -+ + msleep(200); + + From c31fcf9765a6c3b7e7aef306d2045ecee16df5a9 Mon Sep 17 00:00:00 2001 From: Alex Deryskyba Date: Thu, 22 Jan 2015 14:58:32 +0100 Subject: [PATCH 2/6] projects/WeTek_Play/patches/linux: Add a kernel patch to switch IRQ handling for Ethernet, USB and SDIO from CPU0 to CPU1 --- .../linux/130-switch_irq_to_CPU1.patch | 75 +++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 projects/WeTek_Play/patches/linux/130-switch_irq_to_CPU1.patch diff --git a/projects/WeTek_Play/patches/linux/130-switch_irq_to_CPU1.patch b/projects/WeTek_Play/patches/linux/130-switch_irq_to_CPU1.patch new file mode 100644 index 0000000000..24c139de96 --- /dev/null +++ b/projects/WeTek_Play/patches/linux/130-switch_irq_to_CPU1.patch @@ -0,0 +1,75 @@ +diff -Naur a/drivers/amlogic/ethernet/am_net8218.c b/drivers/amlogic/ethernet/am_net8218.c +--- a/drivers/amlogic/ethernet/am_net8218.c 2015-01-04 18:07:58.000000000 +0100 ++++ b/drivers/amlogic/ethernet/am_net8218.c 2015-01-20 23:44:29.000000000 +0100 +@@ -1251,6 +1251,11 @@ + goto out_err; + } + ++ if (irq_set_affinity(dev->irq, cpumask_of(1))) { ++ printk(KERN_DEBUG "unable to set irq affinity (irq=%d, cpu=%u)\n", ++ dev->irq, 1); ++ } ++ + if (g_debug > 0) + printk(KERN_DEBUG "%s: opened (irq %d).\n", + dev->name, dev->irq); +diff -Naur a/drivers/amlogic/mmc/aml_sdio.c b/drivers/amlogic/mmc/aml_sdio.c +--- a/drivers/amlogic/mmc/aml_sdio.c 2015-01-04 18:07:58.000000000 +0100 ++++ b/drivers/amlogic/mmc/aml_sdio.c 2015-01-21 00:05:08.000000000 +0100 +@@ -1267,6 +1267,11 @@ + return NULL; + } + ++ if (irq_set_affinity(INT_SDIO, cpumask_of(1))) { ++ printk(KERN_DEBUG "unable to set irq affinity (irq=%d, cpu=%u)\n", ++ INT_SDIO, 1); ++ } ++ + host->bn_buf = dma_alloc_coherent(NULL, SDIO_BOUNCE_REQ_SIZE, + &host->bn_dma_buf, GFP_KERNEL); + if(NULL == host->bn_buf){ +diff -Naur a/drivers/amlogic/usb/dwc_otg/310/dwc_otg_driver.c b/drivers/amlogic/usb/dwc_otg/310/dwc_otg_driver.c +--- a/drivers/amlogic/usb/dwc_otg/310/dwc_otg_driver.c 2015-01-04 18:07:58.000000000 +0100 ++++ b/drivers/amlogic/usb/dwc_otg/310/dwc_otg_driver.c 2015-01-20 18:02:40.000000000 +0100 +@@ -1202,7 +1202,10 @@ + } else { + dwc_otg_device->common_irq_installed = 1; + } +- ++ if (irq_set_affinity(_dev->irq, cpumask_of(1))) { ++ pr_warning("unable to set irq affinity (irq=%d, cpu=%u)\n", ++ _dev->irq, 1); ++ } + #ifdef LM_INTERFACE + // set_irq_type(_dev->irq, IRQT_LOW); + #endif +diff -Naur a/drivers/amlogic/usb/dwc_otg/310/dwc_otg_hcd_linux.c b/drivers/amlogic/usb/dwc_otg/310/dwc_otg_hcd_linux.c +--- a/drivers/amlogic/usb/dwc_otg/310/dwc_otg_hcd_linux.c 2015-01-04 18:07:58.000000000 +0100 ++++ b/drivers/amlogic/usb/dwc_otg/310/dwc_otg_hcd_linux.c 2015-01-20 18:06:35.000000000 +0100 +@@ -610,7 +610,11 @@ + if (retval < 0) { + goto error2; + } +- ++ if (irq_set_affinity(_dev->irq, cpumask_of(1))) { ++ pr_warning("unable to set irq affinity (irq=%d, cpu=%u)\n", ++ _dev->irq, 1); ++ } ++ + dwc_otg_hcd_set_priv_data(dwc_otg_hcd, hcd); + return 0; + +diff -Naur a/drivers/amlogic/usb/dwc_otg/310/dwc_otg_pcd_linux.c b/drivers/amlogic/usb/dwc_otg/310/dwc_otg_pcd_linux.c +--- a/drivers/amlogic/usb/dwc_otg/310/dwc_otg_pcd_linux.c 2015-01-04 18:07:58.000000000 +0100 ++++ b/drivers/amlogic/usb/dwc_otg/310/dwc_otg_pcd_linux.c 2015-01-20 18:03:14.000000000 +0100 +@@ -1290,6 +1290,10 @@ + return -EBUSY; + } + ++ if (irq_set_affinity(_dev->irq, cpumask_of(1))) { ++ pr_warning("unable to set irq affinity (irq=%d, cpu=%u)\n", ++ _dev->irq, 1); ++ } + dwc_otg_pcd_start(gadget_wrapper->pcd, &fops); + + return retval; From 323e323ec0438940b256dcd6cac4ef3ec9ec4ee4 Mon Sep 17 00:00:00 2001 From: Alex Deryskyba Date: Thu, 22 Jan 2015 20:12:15 +0100 Subject: [PATCH 3/6] projects/WeTek_Play: Update proprietary DVB module --- .../filesystem/lib/modules/wetekdvb.ko | Bin 39496 -> 39588 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/projects/WeTek_Play/filesystem/lib/modules/wetekdvb.ko b/projects/WeTek_Play/filesystem/lib/modules/wetekdvb.ko index c6e0d79efddc746c8ecafb6d6b53e89df52084c5..567ea591cf8b9e93fc268e8417c9cddc04a07cf0 100644 GIT binary patch delta 10212 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 delta 10188 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 W#ox1@U+VjXyXN`px!>{pAO0Wqud>Mi From c2c8b8517765201b4537224f7bde70f4545b0d64 Mon Sep 17 00:00:00 2001 From: Alex Deryskyba Date: Thu, 22 Jan 2015 23:11:09 +0100 Subject: [PATCH 4/6] WeTek_Play: Update Linux kernel to 3.10-fa4c242 --- packages/linux/package.mk | 2 +- projects/WeTek_Play/linux/linux.arm.conf | 1 + .../linux/80-ge2d-fix-ge2d_state-race.patch | 53 ------------------- .../linux/90-meson6-maxclock-unclamp.patch | 11 ---- ...5-meson6-fixhdmitx-audiolock-1080p24.patch | 36 ------------- 5 files changed, 2 insertions(+), 101 deletions(-) delete mode 100644 projects/WeTek_Play/patches/linux/80-ge2d-fix-ge2d_state-race.patch delete mode 100644 projects/WeTek_Play/patches/linux/90-meson6-maxclock-unclamp.patch delete mode 100644 projects/WeTek_Play/patches/linux/95-meson6-fixhdmitx-audiolock-1080p24.patch diff --git a/packages/linux/package.mk b/packages/linux/package.mk index 905c581ce6..5494e698db 100644 --- a/packages/linux/package.mk +++ b/packages/linux/package.mk @@ -19,7 +19,7 @@ PKG_NAME="linux" case "$LINUX" in amlogic) - PKG_VERSION="amlogic-3.10-24e850b-oe" + PKG_VERSION="amlogic-3.10-fa4c242" PKG_URL="$DISTRO_SRC/$PKG_NAME-$PKG_VERSION.tar.xz" ;; imx6) diff --git a/projects/WeTek_Play/linux/linux.arm.conf b/projects/WeTek_Play/linux/linux.arm.conf index 09a7ca542e..9f0d883e90 100644 --- a/projects/WeTek_Play/linux/linux.arm.conf +++ b/projects/WeTek_Play/linux/linux.arm.conf @@ -1286,6 +1286,7 @@ CONFIG_MALI_DMA_BUF_MAP_ON_ATTACH=y CONFIG_MALI_SHARED_INTERRUPTS=y CONFIG_MESON6_GPU_EXTRA=y # CONFIG_MALI_PMU_PARALLEL_POWER_UP is not set +# CONFIG_MALI_QUIET is not set # # ION support diff --git a/projects/WeTek_Play/patches/linux/80-ge2d-fix-ge2d_state-race.patch b/projects/WeTek_Play/patches/linux/80-ge2d-fix-ge2d_state-race.patch deleted file mode 100644 index 8e5a48983f..0000000000 --- a/projects/WeTek_Play/patches/linux/80-ge2d-fix-ge2d_state-race.patch +++ /dev/null @@ -1,53 +0,0 @@ ---- a/include/linux/amlogic/ge2d/ge2d_wq.h 2015-01-14 00:46:24.916408987 +0100 -+++ b/include/linux/amlogic/ge2d/ge2d_wq.h 2015-01-14 00:45:24.233715480 +0100 -@@ -81,6 +81,7 @@ - ge2d_event_t event ; - int irq_num; - int ge2d_state; -+ spinlock_t state_lock; //for sync access to ge2d_state - int process_queue_state; - }ge2d_manager_t ; - ---- a/drivers/amlogic/display/ge2d/ge2d_wq.c 2015-01-14 00:59:18.775744127 +0100 -+++ b/drivers/amlogic/display/ge2d/ge2d_wq.c 2015-01-14 00:58:59.440160948 +0100 -@@ -144,9 +144,11 @@ - }while(pos!=head); - ge2d_manager.last_wq=wq; - exit: -+ spin_lock(&ge2d_manager.state_lock); - if(ge2d_manager.ge2d_state==GE2D_STATE_REMOVING_WQ) -- complete(&ge2d_manager.event.process_complete); -+ complete(&ge2d_manager.event.process_complete); - ge2d_manager.ge2d_state=GE2D_STATE_IDLE; -+ spin_unlock(&ge2d_manager.state_lock); - return ret; - } - -@@ -854,8 +856,17 @@ - spin_unlock(&ge2d_manager.event.sem_lock); - if((ge2d_manager.current_wq==ge2d_work_queue)&&(ge2d_manager.ge2d_state== GE2D_STATE_RUNNING)) - { -- ge2d_manager.ge2d_state=GE2D_STATE_REMOVING_WQ; -- wait_for_completion(&ge2d_manager.event.process_complete); -+ // check again with lock -+ int wasRunning = 0; -+ spin_lock(&ge2d_manager.state_lock); -+ if (ge2d_manager.ge2d_state== GE2D_STATE_RUNNING) -+ { -+ ge2d_manager.ge2d_state=GE2D_STATE_REMOVING_WQ; -+ wasRunning = 1; -+ } -+ spin_unlock(&ge2d_manager.state_lock); -+ if (wasRunning) -+ wait_for_completion(&ge2d_manager.event.process_complete); - ge2d_manager.last_wq=NULL; //condition so complex ,simplify it . - }//else we can delete it safely. - -@@ -902,6 +913,7 @@ - //prepare bottom half - - spin_lock_init(&ge2d_manager.event.sem_lock); -+ spin_lock_init(&ge2d_manager.state_lock); - sema_init (&ge2d_manager.event.cmd_in_sem,1); - init_waitqueue_head (&ge2d_manager.event.cmd_complete); - init_completion(&ge2d_manager.event.process_complete); diff --git a/projects/WeTek_Play/patches/linux/90-meson6-maxclock-unclamp.patch b/projects/WeTek_Play/patches/linux/90-meson6-maxclock-unclamp.patch deleted file mode 100644 index 450477d272..0000000000 --- a/projects/WeTek_Play/patches/linux/90-meson6-maxclock-unclamp.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- a/arch/arm/mach-meson6/clock.c.orig 2015-01-14 18:04:05.216364113 +0100 -+++ b/arch/arm/mach-meson6/clock.c 2015-01-14 18:04:22.807966326 +0100 -@@ -1419,7 +1419,7 @@ - #endif /* CONFIG_SMP */ - int error = 0; - -- int cpu_freq_limit = 1200000000; -+ int cpu_freq_limit = 1512000000; - if (rate < 1000) - rate *= 1000000; - diff --git a/projects/WeTek_Play/patches/linux/95-meson6-fixhdmitx-audiolock-1080p24.patch b/projects/WeTek_Play/patches/linux/95-meson6-fixhdmitx-audiolock-1080p24.patch deleted file mode 100644 index 3ac7f2807a..0000000000 --- a/projects/WeTek_Play/patches/linux/95-meson6-fixhdmitx-audiolock-1080p24.patch +++ /dev/null @@ -1,36 +0,0 @@ ---- a/arch/arm/mach-meson6/hdmi_tx_hw/hdmi_tx_hw.c.orig 2015-01-15 22:15:55.446965413 +0100 -+++ b/arch/arm/mach-meson6/hdmi_tx_hw/hdmi_tx_hw.c 2015-01-15 22:16:13.378517737 +0100 -@@ -1999,6 +1999,7 @@ - { - unsigned int audio_N_para = 6272; - unsigned int audio_N_tolerance = 3; -+ unsigned int multiplier = 1; - // unsigned int audio_CTS = 30000; - - hdmi_print(INF, AUD "audio channel num is %d\n", hdmitx_device->cur_audio_param.channel_num); -@@ -2122,15 +2123,22 @@ - hdmi_print(INF, AUD "reset audio N para\n"); - switch(audio_param->sample_rate){ - case FS_44K1: -- audio_N_para = 6272 * 2; -- break; - case FS_48K: -- audio_N_para = 6144 * 2; -+ multiplier = 2; - break; - default: - break; - } - -+ //1080p24hz mode is a special case - at least for yamaha amps -+ //it needs 3 times the normal npara to get a stable audio lock -+ if((hdmitx_device->cur_VIC == HDMI_1080p24)) -+ { -+ multiplier = 3; -+ } -+ -+ audio_N_para *= multiplier; -+ - //TODO. Different audio type, maybe have different settings - switch(audio_param->type){ - case CT_PCM: From 747ac8789e916810f4803f0dcf64b652186debd7 Mon Sep 17 00:00:00 2001 From: Alex Deryskyba Date: Thu, 22 Jan 2015 23:13:16 +0100 Subject: [PATCH 5/6] packages/graphics/opengl-meson6: Update OpenGL ES libraries for Meson6 to r4p1 --- packages/graphics/opengl-meson6/package.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/graphics/opengl-meson6/package.mk b/packages/graphics/opengl-meson6/package.mk index cd758180d4..f1ea021741 100644 --- a/packages/graphics/opengl-meson6/package.mk +++ b/packages/graphics/opengl-meson6/package.mk @@ -17,7 +17,7 @@ ################################################################################ PKG_NAME="opengl-meson6" -PKG_VERSION="r4p0-01-armhf" +PKG_VERSION="r4p1-armhf" PKG_REV="1" PKG_ARCH="arm" PKG_LICENSE="nonfree" From 114fad147c1781cad674652a7dd153d8e6f6aaf8 Mon Sep 17 00:00:00 2001 From: Alex Deryskyba Date: Fri, 23 Jan 2015 02:56:00 +0100 Subject: [PATCH 6/6] projects/WeTek_Play: Use wetek_play.dtd instead of meson6_g18.dtd --- projects/WeTek_Play/linux/linux.arm.conf | 2 +- projects/WeTek_Play/options | 2 +- .../30-add_bootargs_to_device_tree.patch | 14 + .../WeTek_Play/patches/linux/30-g18dtd.patch | 2728 ----------------- 4 files changed, 16 insertions(+), 2730 deletions(-) create mode 100644 projects/WeTek_Play/patches/linux/30-add_bootargs_to_device_tree.patch delete mode 100644 projects/WeTek_Play/patches/linux/30-g18dtd.patch diff --git a/projects/WeTek_Play/linux/linux.arm.conf b/projects/WeTek_Play/linux/linux.arm.conf index 9f0d883e90..2de5dfe958 100644 --- a/projects/WeTek_Play/linux/linux.arm.conf +++ b/projects/WeTek_Play/linux/linux.arm.conf @@ -475,7 +475,7 @@ CONFIG_USE_OF=y CONFIG_ATAGS=y CONFIG_DEPRECATED_PARAM_STRUCT=y CONFIG_BUILD_ARM_APPENDED_DTB_IMAGE=y -CONFIG_BUILD_ARM_APPENDED_DTB_IMAGE_NAMES="meson6_g18" +CONFIG_BUILD_ARM_APPENDED_DTB_IMAGE_NAMES="wetek_play" CONFIG_ZBOOT_ROM_TEXT=0 CONFIG_ZBOOT_ROM_BSS=0 CONFIG_ARM_APPENDED_DTB=y diff --git a/projects/WeTek_Play/options b/projects/WeTek_Play/options index 1197328209..5144f004a0 100644 --- a/projects/WeTek_Play/options +++ b/projects/WeTek_Play/options @@ -51,7 +51,7 @@ KERNEL_UBOOT_TARGET="uImage-dtb" # Kernel extra targets to build - KERNEL_UBOOT_EXTRA_TARGET="meson6_g18.dtd" + KERNEL_UBOOT_EXTRA_TARGET="wetek_play.dtd" # Additional kernel make parameters (for example to specify the u-boot loadaddress) KERNEL_MAKE_EXTRACMD="" diff --git a/projects/WeTek_Play/patches/linux/30-add_bootargs_to_device_tree.patch b/projects/WeTek_Play/patches/linux/30-add_bootargs_to_device_tree.patch new file mode 100644 index 0000000000..0dfa920439 --- /dev/null +++ b/projects/WeTek_Play/patches/linux/30-add_bootargs_to_device_tree.patch @@ -0,0 +1,14 @@ +diff --git a/arch/arm/boot/dts/amlogic/wetek_play.dtd b/arch/arm/boot/dts/amlogic/wetek_play.dtd +index 3fc5e4e..3d3601f 100755 +--- a/arch/arm/boot/dts/amlogic/wetek_play.dtd ++++ b/arch/arm/boot/dts/amlogic/wetek_play.dtd +@@ -20,6 +20,9 @@ void root_func(){ + interrupt-parent = <&gic>; + #address-cells = <1>; + #size-cells = <1>; ++ chosen { ++ bootargs = "root=/dev/ram0 rdinit=/init boot=/dev/mmcblk0p1 disk=/dev/mmcblk0p2 BOOT_IMAGE=kernel.img console=tty0 consoleblank=0 scaling_governor=hotplug scaling_min_freq=200000 scaling_max_freq=1500000 systemd.show_status=auto"; ++ }; + + /// *************************************************************************************** + /// - CPU diff --git a/projects/WeTek_Play/patches/linux/30-g18dtd.patch b/projects/WeTek_Play/patches/linux/30-g18dtd.patch deleted file mode 100644 index 8fc6cd3a5c..0000000000 --- a/projects/WeTek_Play/patches/linux/30-g18dtd.patch +++ /dev/null @@ -1,2728 +0,0 @@ -diff -Naur a/arch/arm/boot/dts/amlogic/meson6_g18.dtd b/arch/arm/boot/dts/amlogic/meson6_g18.dtd ---- a/arch/arm/boot/dts/amlogic/meson6_g18.dtd 2015-01-12 21:28:39.000000000 +0100 -+++ b/arch/arm/boot/dts/amlogic/meson6_g18.dtd 2015-01-12 21:25:40.000000000 +0100 -@@ -1,761 +1,751 @@ --/* -- * Amlogic-MX SKT Device Tree Source -- * -- * Copyright Amlogic 2013 -- * -- * This program is free software; you can redistribute it and/or modify it -- * under the terms of the GNU General Public License as published by the -- * Free Software Foundation; either version 2 of the License, or (at your -- * option) any later version. -- */ -- --/dts-v1/; --/// ***************************************************************************************\n --//$$ PROJECT="meson6" --//$$ REMOVE 1 --void root_func(){ --//$$ ADD /{ -- compatible = "AMLOGIC,8726_MX"; -- model = "AMLOGIC"; -- interrupt-parent = <&gic>; -- #address-cells = <1>; -- #size-cells = <1>; -- --/// *************************************************************************************** --/// - CPU --//$$ MODULE="CPU" -- cpus { -- #address-cells = <1>; -- #size-cells = <0>; --//$$ DEVICE="cpu0" -- cpu@0 { -- device_type = "cpu"; -- compatible = "arm,cortex-a9"; -- reg = <0x200>; -- }; --//$$ DEVICE="cpu1" -- cpu@1 { -- device_type = "cpu"; -- compatible = "arm,cortex-a9"; -- reg = <0x1>; -- }; -- }; -+/* -+ * Amlogic-MX SKT Device Tree Source -+ * -+ * Copyright Amlogic 2013 -+ * -+ * This program is free software; you can redistribute it and/or modify it -+ * under the terms of the GNU General Public License as published by the -+ * Free Software Foundation; either version 2 of the License, or (at your -+ * option) any later version. -+ */ -+ -+/dts-v1/; -+/// ***************************************************************************************\n -+//$$ PROJECT="meson6" -+//$$ REMOVE 1 -+void root_func(){ -+//$$ ADD /{ -+ compatible = "AMLOGIC,8726_MX"; -+ model = "AMLOGIC"; -+ interrupt-parent = <&gic>; -+ #address-cells = <1>; -+ #size-cells = <1>; -+ chosen { -+ bootargs = "root=/dev/ram0 rdinit=/init boot=/dev/mmcblk0p1 disk=/dev/mmcblk0p2 BOOT_IMAGE=kernel.img console=tty0 consoleblank=0 scaling_governor=hotplug scaling_min_freq=200000 scaling_max_freq=1512000 systemd.show_status=auto"; -+ }; -+ -+/// *************************************************************************************** -+/// - CPU -+//$$ MODULE="CPU" -+ cpus { -+ #address-cells = <1>; -+ #size-cells = <0>; -+//$$ DEVICE="cpu0" -+ cpu@0 { -+ device_type = "cpu"; -+ compatible = "arm,cortex-a9"; -+ reg = <0x200>; -+ }; -+//$$ DEVICE="cpu1" -+ cpu@1 { -+ device_type = "cpu"; -+ compatible = "arm,cortex-a9"; -+ reg = <0x1>; -+ }; -+ }; - /// *************************************************************************************** - /// - Cache - //$$ MODULE="Cache" - //$$ DEVICE="cache" - cache-controller { - compatible = "arm,meson-pl310-cache"; -- reg = <0xc4200000 0x1000>; -+ reg = <0xc4200000 0x1000>; - cache-unified; - cache-level = <2>; - aux-instruction_prefetch; - aux-data_prefetch; -- aux-ns_lockdown; -- aux-ns_int_ctrl; -- aux-share_override; -- aux-cache_replace_policy_round_robin; -- prefetch-prefetch_offset = <6>; -- }; -- --/// *************************************************************************************** --/// - Memory --//$$ MODULE="Memory" --//$$ DEVICE="memory" --//$$ L2 PROP_U32 = "aml_reserved_start" --//$$ L2 PROP_U32 = "aml_reserved_end" --//$$ L2 PROP_U32 = "linux,usable-memory" -- memory{ -- device_type = "memory"; -- aml_reserved_start = <0x85000000>; /**reserved memory start-for kernel */ -- aml_reserved_end = <0x84000000>;/**reserved uImage and dtb memory-for uboot*/ -+ aux-ns_lockdown; -+ aux-ns_int_ctrl; -+ aux-share_override; -+ aux-cache_replace_policy_round_robin; -+ prefetch-prefetch_offset = <6>; -+ }; -+ -+/// *************************************************************************************** -+/// - Memory -+//$$ MODULE="Memory" -+//$$ DEVICE="memory" -+//$$ L2 PROP_U32 = "aml_reserved_start" -+//$$ L2 PROP_U32 = "aml_reserved_end" -+//$$ L2 PROP_U32 = "linux,usable-memory" -+ memory{ -+ device_type = "memory"; -+ aml_reserved_start = <0x85000000>; /**reserved memory start-for kernel */ -+ aml_reserved_end = <0x84000000>;/**reserved uImage and dtb memory-for uboot*/ - phys_offset = <0x80000000>; -- linux,total-memory = <0x40000000>;/**0x40000000--1G memory 0x80000000--2G memory*/ -- }; -- --/// *************************************************************************************** --/// - GIC --//$$ MODULE="GIC" --//$$ DEVICE="gic" -- gic:interrupt-controller{ -- compatible = "arm,cortex-a9-gic"; -- reg = <0xc4301000 0x1000 -- 0xc4300100 0x0100>; -- interrupt-controller; -- #interrupt-cells = <3>; -- #address-cells = <0>; -- }; -- --/// *************************************************************************************** --/// - ION --//$$ MODULE="ION" --//$$ DEVICE="ion_dev" --//$$ L2 PROP_STR = "status" -- ion_dev{ -- compatible = "amlogic,ion_dev"; -- dev_name = "ion_dev"; -- status = "ok"; -+ linux,total-memory = <0x40000000>;/**0x40000000--1G memory 0x80000000--2G memory*/ -+ }; -+ -+/// *************************************************************************************** -+/// - GIC -+//$$ MODULE="GIC" -+//$$ DEVICE="gic" -+ gic:interrupt-controller{ -+ compatible = "arm,cortex-a9-gic"; -+ reg = <0xc4301000 0x1000 -+ 0xc4300100 0x0100>; -+ interrupt-controller; -+ #interrupt-cells = <3>; -+ #address-cells = <0>; -+ }; -+ -+/// *************************************************************************************** -+/// - ION -+//$$ MODULE="ION" -+//$$ DEVICE="ion_dev" -+//$$ L2 PROP_STR = "status" -+ ion_dev{ -+ compatible = "amlogic,ion_dev"; -+ dev_name = "ion_dev"; -+ status = "ok"; - reserve-memory = <0x02000000>; -- reserve-iomap = "true"; -- }; -- --/// ************************************************************************************** --/// - DISP&MM-FB --//$$ MODULE = "DISP&MM-FB" --//$$ DEVICE = "mesonfb" --//$$ L2 PROP_STR = "status" --//$$ L3 PROP_U32 2 ="reserve-memory" --//$$ L2 PROP_U32 = "vmode" --//$$ L2 PROP_U32 5 = "display_size_default" -- mesonfb{ -- compatible = "amlogic,mesonfb"; -- dev_name = "mesonfb"; -- status = "okay"; -- reserve-memory = <0x01000000 0x00100000>; -- reserve-iomap = "true"; -- vmode = <0>; /*0:VMODE_720P 1:VMODE_LCD 2:VMODE_LVDS_1080P 3:VMODE_1080P*/ -- scale_mode = <0>; /*0:default 1:new*/ -- display_size_default = <1280 1080 1280 3240 32>; // osd0:16M, osd1:1m 1280*1080*4*3 = 16,588,800 -- }; --//$$ DEVICE="deinterlace" --//$$ L2 PROP_STR = "status" --//$$ L2 PROP_U32 = "reserve-memory" -- deinterlace{ -- compatible = "amlogic,deinterlace"; -- dev_name = "deinterlace"; -- status = "okay"; -- reserve-memory = <0x01c00000>; // 27M -- reserve-iomap = "true"; -- }; -- --/// *************************************************************************************** --/// - DISP&MM-A/V stream --//$$ MODULE = "DISP&MM-A/V stream" --//$$ DEVICE="mesonstream" --//$$ L2 PROP_STR = "status" --//$$ L3 PROP_U32 4 ="reserve-memory" -- mesonstream{ -- compatible = "amlogic,mesonstream"; -- dev_name = "mesonstream.0"; -- status = "okay"; -- reserve-memory = <0x00a00000>; //10M -- reserve-iomap = "true"; -- }; -- -- --/// *************************************************************************************** --/// - DISP&MM-A/V stream --//$$ MODULE = "DISP&MM-A/V video dec" --//$$ DEVICE="vdec" --//$$ L2 PROP_STR = "status" --//$$ L3 PROP_U32 4 ="reg" -- vdec{ -- compatible = "amlogic,vdec"; -- dev_name = "vdec.0"; -- status = "okay"; -- reserve-memory = <0x02000000>; //32M -- reserve-iomap = "true"; -- }; -- --/// *************************************************************************************** --/// - DISP&MM-PostProcess --//$$ MODULE="DISP&MM-PostProcess" --//$$ DEVICE="ppmgr" --//$$ L2 PROP_STR = "status" --//$$ L3 PROP_U32 ="reserve-memory" -- ppmgr{ -- compatible = "amlogic,ppmgr"; -- dev_name = "ppmgr"; -- status = "okay"; -- reserve-memory = <0x01300000>; // 1280*732*21 = 19,676,160 -- reserve-iomap = "true"; -- }; -- -- --/// *************************************************************************************** --/// - DISP&MM-Vout --//$$ MODULE = "DISP&MM-Vout" --//$$ DEVICE = "mesonvout" --//$$ L2 PROP_STR = "status" -- mesonvout{ -- compatible = "amlogic,mesonvout"; -- dev_name = "mesonvout"; -- status = "okay"; -- }; -- --/// *************************************************************************************** --/// - EARLY_INIT --//$$ MODULE="early_init" --//$$ DEVICE = "early_init" --//$$ L2 PROP_STR = "status" --//$$ L3 PROP_STR ="gpio-1" --//$$ L2 PROP_STR = "gpio-2" -- early_init{ -- compatible = "amlogic,early_init"; -- dev_name = "early_init"; -- status = "ok"; -- gpio-1 = "GPIOAO_3"; -- gpio-2 = "GPIOAO_2"; -- }; -- --/// *************************************************************************************** --/// - RTC --//$$ MODULE="RTC" --//$$ DEVICE="Rtc" --//$$ L2 PROP_STR = "status" -- rtc{ -- compatible = "amlogic,aml_rtc"; -- status = "okay"; -- }; -- --/// *************************************************************************************** --/// - UART --//$$ MODULE="UART" --//$$ DEVICE="uart_ao" --//$$ L2 PROP_STR = "status" --//$$ L2 PROP_STR = "pinctrl-names" --//$$ L3 PROP_CHOICE "uart_ao_pin_match" = "pinctrl-0" -- uart_ao{ -- compatible = "amlogic,aml_uart"; -- port_name = "uart_ao"; -- status = "okay"; -- dev_name = "uart_ao"; -- pinctrl-names = "default"; -- pinctrl-0 = <&ao_uart_pins>; -- }; -- --//$$ DEVICE="uart_0" --//$$ L2 PROP_STR = "status" -- uart_0{ -- compatible = "amlogic,aml_uart"; -- port_name = "uart_a"; -- status = "okay"; -- dev_name = "uart_0"; -- }; -- --//$$ DEVICE="uart_1" --//$$ L2 PROP_STR = "status" -- uart_1{ -- compatible = "amlogic,aml_uart"; -- port_name = "uart_b"; -- status = "disabled"; -- dev_name = "uart_1"; -- }; -- --//$$ DEVICE="uart_2" --//$$ L2 PROP_STR = "status" -- uart_2{ -- compatible = "amlogic,aml_uart"; -- port_name = "uart_c"; -- status = "disabled"; -- dev_name = "uart_2"; -- }; -- --//$$ DEVICE="uart_3" --//$$ L2 PROP_STR = "status" -- uart_3{ -- compatible = "amlogic,aml_uart"; -- port_name = "uart_d"; -- status = "ok"; -- dev_name = "uart_3"; -- }; -- --/// *************************************************************************************** --/// - WiFi --//$$ MODULE="WiFi" --//$$ DEVICE="wifi_power" --//$$ L2 PROP_STR = "status" --//$$ L2 PROP_STR = "power_gpio" -- wifi_power{ -- compatible = "amlogic,wifi_power"; -- dev_name = "wifi_power"; -- status = "okay"; -- power_gpio = "GPIOE_11"; -- }; -- --/// *************************************************************************************** --/// - MMC --//$$ MODULE="MMC" --//$$ DEVICE="aml_sdio" --//$$ L2 PROP_STR = "status" --//$$ L3 PROP_U32 2 ="reg" --//$$ L2 PROP_STR 7 = "pinctrl-names" --//$$ L2 PROP_CHOICE "sdio_pin_0_match" = "pinctrl-0" --//$$ L2 PROP_CHOICE "sdio_pin_1_match" = "pinctrl-1" --//$$ L2 PROP_CHOICE "sdio_pin_2_match" = "pinctrl-2" --//$$ L2 PROP_CHOICE "sdio_pin_3_match" = "pinctrl-3" --//$$ L2 PROP_CHOICE "sdio_pin_4_match" = "pinctrl-4" --//$$ L2 PROP_CHOICE "sdio_pin_5_match" = "pinctrl-5" --// L2 PROP_CHOICE "sdio_pin_6_match" = "pinctrl-6" -- sdio{ -- compatible = "amlogic,aml_sdio"; -- dev_name = "aml_sdio.0"; -- status = "okay"; -- reg = <0xc1108c20 0x20>; -- pinctrl-names = "sd_clk_cmd_pins", "sd_all_pins", "emmc_clk_cmd_pins", "emmc_all_pins", "sdio_clk_cmd_pins", "sdio_all_pins"; /*sd:sdio_b, emmc:sdio_c, sdio:sdio_a*/ -- // pinctrl-0 = <&sd_pins>; -- // pinctrl-1 = <&emmc_pins>; -- // pinctrl-2 = <&sdio_pins>; -- pinctrl-0 = <&sd_clk_cmd_pins>; -- pinctrl-1 = <&sd_all_pins>; -- pinctrl-2 = <&emmc_clk_cmd_pins>; -- pinctrl-3 = <&emmc_all_pins>; -- pinctrl-4 = <&sdio_clk_cmd_pins>; -- pinctrl-5 = <&sdio_all_pins>; -- --//$$ DEVICE="sd" --//$$ L2 PROP_STR = "status" --//$$ L3 PROP_U32 = "port" --//$$ L2 PROP_STR = "pinname" --//$$ L3 PROP_U32 = "ocr_avail" --//$$ L2 PROP_STR 3 = "caps" --//$$ L3 PROP_U32 = "f_min" --//$$ L3 PROP_U32 = "f_max" --//$$ L3 PROP_U32 = "f_max_w" --//$$ L3 PROP_U32 = "max_req_size" --//$$ L2 PROP_STR = "gpio_dat3" --//$$ L2 PROP_STR = "jtag_pin" --//$$ L2 PROP_STR = "gpio_cd" --//$$ L2 PROP_STR = "gpio_ro" --//$$ L2 PROP_U32 = "irq_in" --//$$ L2 PROP_U32 = "irq_out" --//$$ L2 PROP_U32 = "card_type" -- sd{ -- status = "okay"; -- port = <1>; /**0:sdio_a, 1:sdio_b, 2:sdio_c, 3:sdhc_a, 4:sdhc_b, 5:sdhc_c */ -- pinname = "sd"; -- ocr_avail = <0x200000>; /**VDD voltage 3.3 ~ 3.4 */ -- caps = "MMC_CAP_4_BIT_DATA","MMC_CAP_MMC_HIGHSPEED","MMC_CAP_SD_HIGHSPEED"; -- f_min = <300000>; -- f_max = <50000000>; -- f_max_w = <50000000>; -- max_req_size = <0x20000>; /**128KB*/ -- gpio_dat3 = "CARD_3"; -- gpio_cd = "CARD_6"; -- gpio_power = "CARD_8"; -- power_level = <0>; -- irq_in = <5>; -- #irq_in_edge = "GPIO_IRQ_FALLING"; -- irq_out = <6>; -- #irq_out_edge = "GPIO_IRQ_RISING"; -- card_type = <5>; /* 0:unknown, 1:mmc card(include eMMC), 2:sd card(include tSD), 3:sdio device(ie:sdio-wifi), 4:SD combo (IO+mem) card, 5:NON sdio device(means sd/mmc card), other:reserved */ -- }; -- --//$$ DEVICE="emmc" --//$$ L2 PROP_STR = "status" --//$$ L3 PROP_U32 = "port" --//$$ L2 PROP_STR = "pinname" --//$$ L3 PROP_U32 = "ocr_avail" --//$$ L2 PROP_STR 4 = "caps" --//$$ L3 PROP_U32 = "f_min" --//$$ L3 PROP_U32 = "f_max" --//$$ L3 PROP_U32 = "f_max_w" --//$$ L3 PROP_U32 = "max_req_size" --//$$ L2 PROP_STR = "gpio_dat3" --//$$ L2 PROP_U32 = "card_type" -- // emmc{ -- // port = <2>; /*0:sdio_a, 1:sdio_b, 2:sdio_c, 3:sdhc_a, 4:sdhc_b, 5:sdhc_c */ -- // pinname = "emmc"; -- // ocr_avail = <0x200000>; /*VDD voltage 3.3 ~ 3.4 */ -- // caps = "MMC_CAP_4_BIT_DATA","MMC_CAP_MMC_HIGHSPEED","MMC_CAP_SD_HIGHSPEED", "MMC_CAP_NONREMOVABLE"; // MMC_CAP_NEEDS_POLL -- for detect, MMC_CAP_NONREMOVABLE -- for eMMC/TSD -- // f_min = <300000>; -- // f_max = <50000000>; -- // f_max_w = <50000000>; -- // max_req_size = <0x20000>; /*128KB*/ -- // gpio_dat3 = "BOOT_3"; -- // #gpio_cd = "CARD_6"; -- // #gpio_power = "CARD_8"; -- // #power_level = <0>; -- // card_type = <5>; /* 0:unknown, 1:mmc card(include eMMC), 2:sd card(include tSD), 3:sdio device(ie:sdio-wifi), 4:SD combo (IO+mem) card, 5:NON sdio device(means sd/mmc card), other:reserved */ -- // }; -- -- // sdio{ -- // port = <0>; /*0:sdio_a, 1:sdio_b, 2:sdio_c, 3:sdhc_a, 4:sdhc_b, 5:sdhc_c */ -- // pinname = "sdio"; -- // ocr_avail = <0x200000>; /*VDD voltage 3.3 ~ 3.4 */ -- // caps = "MMC_CAP_4_BIT_DATA","MMC_CAP_MMC_HIGHSPEED","MMC_CAP_SD_HIGHSPEED", "MMC_CAP_NONREMOVABLE"; -- // f_min = <300000>; -- // f_max = <50000000>; -- // f_max_w = <50000000>; -- // max_req_size = <0x20000>; /*128KB*/ -- // card_type = <3>; /* 0:unknown, 1:mmc card(include eMMC), 2:sd card(include tSD), 3:sdio device(ie:sdio-wifi), 4:SD combo (IO+mem) card, 5:NON sdio device(means sd/mmc card), other:reserved */ -- // }; -- }; -- -- // sdhc{ -- // compatible = "amlogic,aml_sdhc"; -- // dev_name = "aml_sdhc.0"; -- // reg = <0xc1108e00 0x30>; -- // pinctrl-names = "sd"; /*sd:sdio_b, emmc:sdio_c, sdio:sdio_a*/ -- // pinctrl-0 = <&sdhc_b_pins>; -- -- // sd{ -- // port = <4>; /*0:sdio_a, 1:sdio_b, 2:sdio_c, 3:sdhc_a, 4:sdhc_b, 5:sdhc_c */ -- // pinname = "sd"; -- // ocr_avail = <0x200000>; /*VDD voltage 3.3 ~ 3.4 */ -- // caps = "MMC_CAP_4_BIT_DATA","MMC_CAP_MMC_HIGHSPEED","MMC_CAP_SD_HIGHSPEED"; -- // f_min = <300000>; -- // f_max = <50000000>; -- // f_max_w = <50000000>; -- // max_req_size = <0x80000>; /*512KB*/ -- // gpio_cd = "CARD_6"; -- // gpio_power = "CARD_8"; -- // power_level = <0>; -- // irq_in = <5>; -- // irq_out = <6>; -- // }; -- // }; -- -- --/// *************************************************************************************** --/// - I2C --//$$ MODULE="I2C" --//$$ DEVICE="I2C_AO" --//$$ L2 PROP_STR = "status" --//$$ L3 PROP_U32 2 ="reg" --//$$ L3 PROP_STR = "pinctrl-names" --//$$ L2 PROP_CHOICE "I2C_AO_pin_match" = "pinctrl-0" -- i2c@c8100500{ /*I2C-AO*/ -- compatible = "amlogic,aml_i2c"; -- dev_name = "i2c-AO"; -- status = "ok"; -- reg = <0xc8100500 0x1d>; -- #address-cells = <1>; -- #size-cells = <0>; -- device_id = <0>; -- pinctrl-names="default"; -- pinctrl-0=<&ao_i2c_master>; -- use_pio = <0>; -- master_i2c_speed = <100000>; -- }; -- --//$$ DEVICE = "I2C_A" --//$$ L2 PROP_STR = "status" --//$$ L3 PROP_U32 2 ="reg" --//$$ L3 PROP_STR = "pinctrl-names" --//$$ L2 PROP_CHOICE "I2C_A_pin_match" = "pinctrl-0" -- i2c@c1108500{ /*I2C-A*/ -- compatible = "amlogic,aml_i2c"; -- dev_name = "i2c-A"; -- status = "ok"; -- reg = <0xc1108500 0x20>; -- device_id = <1>; -- pinctrl-names="default"; -- pinctrl-0=<&a_i2c_master>; -- #address-cells = <1>; -- #size-cells = <0>; -- use_pio = <0>; -- master_i2c_speed = <300000>; -- }; -- --//$$ DEVICE="I2C_B" --//$$ L2 PROP_STR = "status" --//$$ L3 PROP_U32 2="reg" --//$$ L3 PROP_STR = "pinctrl-names" --//$$ L2 PROP_CHOICE "I2C_B_pin_match" = "pinctrl-0" -- i2c@c11087c0{ /*I2C-B*/ -- compatible = "amlogic,aml_i2c"; -- dev_name = "i2c-B"; -- status = "ok"; -- reg = <0xc11087c0 0x20>; -- device_id = <2>; -- pinctrl-names="default"; -- pinctrl-0=<&b_i2c_master>; -- #address-cells = <1>; -- #size-cells = <0>; -- use_pio = <0>; -- master_i2c_speed = <300000>; -- }; -- --/// *************************************************************************************** --/// - Power --//$$ MODULE="Power" --//$$ DEVICE="dvfs" --//$$ L2 PROP_STR = "status" -- dvfs { -- compatible = "amlogic, amlogic-dvfs"; /** fixed for driver, don't change */ -- #address-cells = <1>; -- #size-cells = <0>; -- status = "ok"; -- --//$$ L2 PROP_U32 = "dvfs_id" --//$$ L2 PROP_U32 = "table_count" --//$$ L2 PROP_U32 11*3 = "dvfs_table" -- vcck_dvfs { -- dvfs_id = <1>; /** must be value of (1 << n) */ -- table_count = <11>; /** must be correct count for dvfs_table */ -- dvfs_table = < -- /* NOTE: frequent in this table must be ascending order */ -- /* frequent(Khz) min_uV max_uV */ -- 200000 1079000 1079000 -- 600000 1079000 1079000 -- 792000 1079000 1079000 -- 816000 1147000 1147000 -- 840000 1147000 1147000 -- 984000 1147000 1147000 -- 1000000 1147000 1147000 -- 1080000 1249000 1249000 -- 1200000 1266000 1266000 -- 1320000 1334000 1334000 -- 1500000 1334000 1334000 -- >; -- }; -- }; --//$$ DEVICE="meson_vcck_dvfs_driver" --//$$ L2 PROP_STR = "status" --//$$ L2 PROP_STR = "pinctrl-names" --//$$ L2 PROP_CHOICE "meson_vcck_dvfs_pin_0_match" = "pinctrl-0" --//$$ L2 PROP_U32 = "use_pwm" --//$$ L2 PROP_U32 = "table_count" --//$$ L2 PROP_U32 16*2 = "cs_voltage_table" -- meson_vcck_dvfs_driver{ -- compatible = "amlogic, meson_vcck_dvfs"; -- dev_name = "meson_vcck_dvfs_driver"; -- status = "ok"; -- pinctrl-names = "default"; -- pinctrl-0 = <&aml_pwm_pins>; -- use_pwm = <1>; -- pmw_controller = "PWM_C"; -- table_count = <16>; -- cs_voltage_table = < -- /* -- * Note: This table is hardware depended, If your hardware use PWM method, -- * then first line in this table is PWM register value, second line is -- * voltage of VCCK according this PWM register value. If your platform use -- * constant-current source to adjust vcck voltage, then the first line should -- * set to 0, means not valid, member 'use_pwm' in this node should set to 0. -- * -- * ---- This table must be in ascending order by voltage ---- -- * -- * PWM value VCCK voltage -- */ -- 0x130009 1079000 -- 0x12000a 1096000 -- 0x11000b 1113000 -- 0x10000c 1130000 -- 0x0f000d 1147000 -- 0x0e000e 1164000 -- 0x0d000f 1181000 -- 0x0c0010 1198000 -- 0x0b0011 1215000 -- 0x0a0012 1232000 -- 0x090013 1249000 -- 0x080014 1266000 -- 0x070015 1283000 -- 0x060016 1300000 -- 0x050017 1317000 -- 0x040018 1334000 -- >; -- }; -- -- -- --/// *************************************************************************************** --/// - USB Controller --//$$ MODULE="USB Controller" -- usb_con { -- lm-compatible = "logicmodule-bus"; -- --//$$ DEVICE="usb_b" --//$$ L2 PROP_U32 = "lm-periph-id" --//$$ L2 PROP_STR = "clock-src" --//$$ L2 PROP_U32 = "port-id" --//$$ L2 PROP_U32 = "port-type" --//$$ L2 PROP_U32 = "port-speed" --//$$ L2 PROP_U32 = "port-config" --//$$ L2 PROP_U32 = "port-dma" --//$$ L2 PROP_U32 = "port-id-mode" --//$$ L2 PROP_STR = "status" -- usb_b{ -- lm-compatible = "amlogic,usb"; -- lm-periph-id = <1>; /** lm name */ -- clock-src = "usb1"; /** clock src */ -- port-id = <1>; /** ref to mach/usb.h */ -- port-type = <1>; /** 0: otg, 1: host, 2: slave */ -- port-speed = <0>; /** 0: default, 1: high, 2: full */ -- port-config = <0>; /** 0: default */ -- port-dma = <0>; /** 0: default, 1: single, 2: incr, 3: incr4, 4: incr8, 5: incr16, 6: disable*/ -- port-id-mode = <1>; /** 0: hardware, 1: sw_host, 2: sw_slave*/ -- status = "okay"; -- }; -- --//$$ DEVICE="usb_a" --//$$ L2 PROP_U32 = "lm-periph-id" --//$$ L2 PROP_STR = "clock-src" --//$$ L2 PROP_U32 = "port-id" --//$$ L2 PROP_U32 = "port-type" --//$$ L2 PROP_U32 = "port-speed" --//$$ L2 PROP_U32 = "port-config" --//$$ L2 PROP_U32 = "port-dma" --//$$ L2 PROP_U32 = "port-id-mode" --//$$ L2 PROP_STR = "gpio-vbus-power" --//$$ L2 PROP_U32 = "gpio-work-mask" --// L2 PROP_U32 = "charger_detect" --//$$ L2 PROP_STR = "status" -- usb_a{ -- lm-compatible = "amlogic,usb"; -- lm-periph-id = <0>; /** lm name */ -- clock-src = "usb0"; /** clock src */ -- port-id = <0>; /** ref to mach/usb.h */ -- port-type = <0>; /** 0: otg, 1: host, 2: slave */ -- port-speed = <0>; /** 0: default, high, 1: full */ -- port-config = <0>; /** 0: default */ -- port-dma = <0>; /** 0: default, 1: single, 2: incr, 3: incr4, 4: incr8, 5: incr16, 6: disable*/ -- port-id-mode = <0>; /** 0: hardware, 1: sw_host, 2: sw_slave*/ -- gpio-vbus-power = "GPIOD_9"; -- gpio-work-mask = <1>; /**0: work on pulldown,1:work on pullup*/ -- status = "okay"; -- }; -- }; -- -- -- --/// *************************************************************************************** --/// - Audio --//$$ MODULE="Audio" --//$$ DEVICE="audio" --//$$ L2 PROP_STR = "status" -- audio{ -- compatible = "amlogic,aml-audio"; -- dev_name = "aml-audio.0"; -- status = "okay"; -- }; -- --//$$ DEVICE="audio_dai" --//$$ L2 PROP_STR = "status" -- audio_dai{ -- compatible = "amlogic,aml-dai"; -- dev_name = "aml-dai.0"; -- status = "okay"; -- }; -- --//$$ DEVICE="dummy_codec_audio" --//$$ L2 PROP_STR = "status" --//$$ L2 PROP_STR = "pinctrl-names" --//$$ L3 PROP_CHOICE "dummy_codec_audio_0_pin_match" = "pinctrl-0" -- dummy_codec_audio{ -- status = "okay"; -- compatible = "amlogic,aml_dummy_codec_audio"; -- dev_name = "aml_dummy_codec_audio.0"; -- pinctrl-names = "dummy_codec_audio"; -- pinctrl-0 = <&aml_dummy_codec_pins>; -- }; -- --//$$ DEVICE="dummy_codec" --//$$ L2 PROP_STR = "status" -- dummy_codec{ -- status = "okay"; -- compatible = "amlogic,aml_dummy_codec"; -- dev_name = "dummy_codec.0"; -- }; -- -- -- --/// *************************************************************************************** --/// - Input --//$$ MODULE="Input" --//$$ DEVICE="saradc" --//$$ L2 PROP_STR = "status" -- saradc{ -- compatible = "amlogic,saradc"; -- status = "okay"; -- }; --//$$ DEVICE="adc_keypad" --//$$ L2 PROP_STR = "status" --//$$ L2 PROP_STR 5 = "key_name" --//$$ L2 PROP_U32 = "key_num" --//$$ L2 PROP_U32 = "name_len" --//$$ L2 PROP_U32 5 = "key_code" --//$$ L2 PROP_U32 5 = "key_chan" --//$$ L2 PROP_U32 5 = "key_val" --//$$ L2 PROP_U32 5 = "key_tolerance" -- adc_keypad{ -- compatible = "amlogic,adc_keypad"; -- status = "okay"; -- key_num = <6>; -- name_len = <20>; -- key_name = "menu","vol-","vol+","back","home","ok"; -- key_code = <139 114 115 158 102 232>; -- key_chan = <4 4 4 4 4 4>; -- key_val = <9 150 275 392 513 639>; -- key_tolerance = <40 40 40 40 40 40>; -- }; --//$$ DEVICE="key_input" --//$$ L2 PROP_STR = "status" --//$$ L2 PROP_U32 = "scan_period" --//$$ L2 PROP_U32 = "fuzz_time" --//$$ L2 PROP_U32 = "key_code_list" --//$$ L2 PROP_U32 = "key_num" --//$$ L2 PROP_U32 = "config" -- key_input{ -- compatible = "amlogic,key_input"; -- status = "okay"; -- scan_period = <20>; -- fuzz_time = <60>; -- key_code_list = <116>; -- key_num = <1>; -- config = <0>; -- }; --//$$ DEVICE="aml_remote" --//$$ L2 PROP_STR = "status" --//$$ L2 PROP_U32 = "ao_baseaddr" --//$$ L2 PROP_STR = "pinctrl-names" --//$$ L2 PROP_CHOICE "Remote_pin_match" = "pinctrl-0" -- meson-remote{ -- compatible = "amlogic,aml_remote"; -- dev_name = "meson-remote"; -- status = "okay"; -- ao_baseaddr = <0xf3100480>; -- pinctrl-names="default"; -- pinctrl-0=<&remote_pins>; -- }; -- -- --/// *************************************************************************************** --/// - Spi --//$$ MODULE="Spi" --//$$ DEVICE="spi" --//$$ L2 PROP_STR = "status" --//$$ L2 PROP_U32 2 = "reg" --//$$ L2 PROP_STR = "pinctrl-names" --//$$ L2 PROP_CHOICE "Spi_pin_0_match" = "pinctrl-0" --//$$ L2 PROP_U32 = "nr-parts" --//$$ L2 PROP_CHOICE "Spi_nr-part-0_match" = "nr-part-0" --//$$ L2 PROP_CHOICE "Spi_nr-part-1_match" = "nr-part-1" -- spi@cc000000{ -- compatible = "amlogic,apollo_spi_nor"; -- status = "ok"; -- reg = <0xcc000000 0x04000000>; -- pinctrl-names = "default"; -- pinctrl-0 = <&aml_spi_nor_pins>; -- -- nr-parts = <2>; -- nr-part-0 = <&bootloader>; -- nr-part-1 = <&ubootenv>; -- --//$$ MATCH "Spi_nr-part-0_match" = <&bootloader> --//$$ L2 PROP_STR = "name" --//$$ L2 PROP_U32 = "offset" --//$$ L2 PROP_U32 = "size" -- bootloader:bootloader{ -- name = "bootloader"; -- offset = <0>; -- size = <0x60000>; -- }; -- --//$$ MATCH "Spi_nr-part-1_match" = <&ubootenv> --//$$ L2 PROP_STR = "name" --//$$ L2 PROP_U32 = "offset" --//$$ L2 PROP_U32 = "size" -- ubootenv:ubootenv{ -- name = "ubootenv"; -- offset = <0x80000>; -- size = <0x8000>; -- }; -- }; -- --/// *************************************************************************************** --/// - Nand -+ reserve-iomap = "true"; -+ }; -+ -+/// ************************************************************************************** -+/// - DISP&MM-FB -+//$$ MODULE = "DISP&MM-FB" -+//$$ DEVICE = "mesonfb" -+//$$ L2 PROP_STR = "status" -+//$$ L3 PROP_U32 2 ="reserve-memory" -+//$$ L2 PROP_U32 = "vmode" -+//$$ L2 PROP_U32 5 = "display_size_default" -+ mesonfb{ -+ compatible = "amlogic,mesonfb"; -+ dev_name = "mesonfb"; -+ status = "okay"; -+ reserve-memory = <0x01000000 0x00100000>; -+ reserve-iomap = "true"; -+ vmode = <0>; /*0:VMODE_720P 1:VMODE_LCD 2:VMODE_LVDS_1080P 3:VMODE_1080P*/ -+ scale_mode = <0>; /*0:default 1:new*/ -+ display_size_default = <1280 720 1280 2160 32>; // osd0:8M, osd1:1m 1280*720*4*3 = 11,059,200 -+ }; -+//$$ DEVICE="deinterlace" -+//$$ L2 PROP_STR = "status" -+//$$ L2 PROP_U32 = "reserve-memory" -+ deinterlace{ -+ compatible = "amlogic,deinterlace"; -+ dev_name = "deinterlace"; -+ status = "okay"; -+ reserve-memory = <0x01c00000>; // 27M -+ reserve-iomap = "true"; -+ }; -+ -+/// *************************************************************************************** -+/// - DISP&MM-A/V stream -+//$$ MODULE = "DISP&MM-A/V stream" -+//$$ DEVICE="mesonstream" -+//$$ L2 PROP_STR = "status" -+//$$ L3 PROP_U32 4 ="reserve-memory" -+ mesonstream{ -+ compatible = "amlogic,mesonstream"; -+ dev_name = "mesonstream.0"; -+ status = "okay"; -+ reserve-memory = <0x00a00000>; //10M -+ reserve-iomap = "true"; -+ }; -+ -+ -+/// *************************************************************************************** -+/// - DISP&MM-A/V stream -+//$$ MODULE = "DISP&MM-A/V video dec" -+//$$ DEVICE="vdec" -+//$$ L2 PROP_STR = "status" -+//$$ L3 PROP_U32 4 ="reg" -+ vdec{ -+ compatible = "amlogic,vdec"; -+ dev_name = "vdec.0"; -+ status = "okay"; -+ reserve-memory = <0x02000000>; //32M -+ reserve-iomap = "true"; -+ }; -+ -+/// *************************************************************************************** -+/// - DISP&MM-PostProcess -+//$$ MODULE="DISP&MM-PostProcess" -+//$$ DEVICE="ppmgr" -+//$$ L2 PROP_STR = "status" -+//$$ L3 PROP_U32 ="reserve-memory" -+ ppmgr{ -+ compatible = "amlogic,ppmgr"; -+ dev_name = "ppmgr"; -+ status = "okay"; -+ reserve-memory = <0x01300000>; // 1280*732*21 = 19,676,160 -+ reserve-iomap = "true"; -+ }; -+ -+ -+/// *************************************************************************************** -+/// - DISP&MM-Vout -+//$$ MODULE = "DISP&MM-Vout" -+//$$ DEVICE = "mesonvout" -+//$$ L2 PROP_STR = "status" -+ mesonvout{ -+ compatible = "amlogic,mesonvout"; -+ dev_name = "mesonvout"; -+ status = "okay"; -+ }; -+ -+/// *************************************************************************************** -+/// - EARLY_INIT -+//$$ MODULE="early_init" -+//$$ DEVICE = "early_init" -+//$$ L2 PROP_STR = "status" -+//$$ L3 PROP_STR ="gpio-1" -+//$$ L2 PROP_STR = "gpio-2" -+ early_init{ -+ compatible = "amlogic,early_init"; -+ dev_name = "early_init"; -+ status = "ok"; -+ gpio-1 = "GPIOAO_3"; -+ gpio-2 = "GPIOAO_2"; -+ }; -+ -+/// *************************************************************************************** -+/// - RTC -+//$$ MODULE="RTC" -+//$$ DEVICE="Rtc" -+//$$ L2 PROP_STR = "status" -+ rtc{ -+ compatible = "amlogic,aml_rtc"; -+ status = "okay"; -+ }; -+ -+/// *************************************************************************************** -+/// - UART -+//$$ MODULE="UART" -+//$$ DEVICE="uart_ao" -+//$$ L2 PROP_STR = "status" -+//$$ L2 PROP_STR = "pinctrl-names" -+//$$ L3 PROP_CHOICE "uart_ao_pin_match" = "pinctrl-0" -+ uart_ao{ -+ compatible = "amlogic,aml_uart"; -+ port_name = "uart_ao"; -+ status = "okay"; -+ dev_name = "uart_ao"; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&ao_uart_pins>; -+ }; -+ -+//$$ DEVICE="uart_0" -+//$$ L2 PROP_STR = "status" -+ uart_0{ -+ compatible = "amlogic,aml_uart"; -+ port_name = "uart_a"; -+ status = "okay"; -+ dev_name = "uart_0"; -+ }; -+ -+//$$ DEVICE="uart_1" -+//$$ L2 PROP_STR = "status" -+ uart_1{ -+ compatible = "amlogic,aml_uart"; -+ port_name = "uart_b"; -+ status = "disabled"; -+ dev_name = "uart_1"; -+ }; -+ -+//$$ DEVICE="uart_2" -+//$$ L2 PROP_STR = "status" -+ uart_2{ -+ compatible = "amlogic,aml_uart"; -+ port_name = "uart_c"; -+ status = "disabled"; -+ dev_name = "uart_2"; -+ }; -+ -+//$$ DEVICE="uart_3" -+//$$ L2 PROP_STR = "status" -+ uart_3{ -+ compatible = "amlogic,aml_uart"; -+ port_name = "uart_d"; -+ status = "ok"; -+ dev_name = "uart_3"; -+ }; -+ -+/// *************************************************************************************** -+/// - Bluetooth -+//$$ MODULE="Bluetooth" -+ -+ bt-dev{ -+ compatible = "amlogic,bt-dev"; -+ dev_name = "bt-dev"; -+ gpio_reset = "GPIOE_11"; -+ gpio_en = "GPIOE_11"; -+ status = "ok"; -+ }; -+ -+/// *************************************************************************************** -+/// - WiFi -+//$$ MODULE="WiFi" -+//$$ DEVICE="aml_broadcm_wifi" -+//$$ L2 PROP_STR = "status" -+//$$ L2 PROP_STR = "interrupt_pin" -+//$$ L2 PROP_U32 = "irq_num" -+//$$ L2 PROP_STR = "irq_trigger_type" -+//$$ L2 PROP_STR = "power_on_pin" -+//$$ L2 PROP_STR = "clock_32k_pin" -+ wifi{ -+ compatible = "amlogic,aml_broadcm_wifi"; -+ dev_name = "aml_broadcm_wifi"; -+ status = "okay"; -+ interrupt_pin = "GPIOX_11"; -+ irq_num = <4>; -+ irq_trigger_type = "GPIO_IRQ_HIGH"; -+ power_on_pin = "GPIOC_7"; -+ clock_32k_pin = "GPIOX_12"; -+ }; -+ -+//$$ DEVICE="wifi_power" -+//$$ L2 PROP_STR = "status" -+//$$ L2 PROP_STR = "power_gpio" -+// wifi_power{ -+// compatible = "amlogic,wifi_power"; -+// dev_name = "wifi_power"; -+// status = "okay"; -+// power_gpio = "GPIOC_7"; -+// }; -+ -+/// *************************************************************************************** -+/// - MMC -+//$$ MODULE="MMC" -+//$$ DEVICE="aml_sdio" -+//$$ L2 PROP_STR = "status" -+//$$ L3 PROP_U32 2 ="reg" -+//$$ L2 PROP_STR 7 = "pinctrl-names" -+//$$ L2 PROP_CHOICE "sdio_pin_0_match" = "pinctrl-0" -+//$$ L2 PROP_CHOICE "sdio_pin_1_match" = "pinctrl-1" -+//$$ L2 PROP_CHOICE "sdio_pin_2_match" = "pinctrl-2" -+//$$ L2 PROP_CHOICE "sdio_pin_3_match" = "pinctrl-3" -+//$$ L2 PROP_CHOICE "sdio_pin_4_match" = "pinctrl-4" -+//$$ L2 PROP_CHOICE "sdio_pin_5_match" = "pinctrl-5" -+// L2 PROP_CHOICE "sdio_pin_6_match" = "pinctrl-6" -+ sdio{ -+ compatible = "amlogic,aml_sdio"; -+ dev_name = "aml_sdio.0"; -+ status = "okay"; -+ reg = <0xc1108c20 0x20>; -+ pinctrl-names = "sd_clk_cmd_pins", "sd_all_pins", "emmc_clk_cmd_pins", "emmc_all_pins", "sdio_clk_cmd_pins", "sdio_all_pins"; /*sd:sdio_b, emmc:sdio_c, sdio:sdio_a*/ -+ // pinctrl-0 = <&sd_pins>; -+ // pinctrl-1 = <&emmc_pins>; -+ // pinctrl-2 = <&sdio_pins>; -+ pinctrl-0 = <&sd_clk_cmd_pins>; -+ pinctrl-1 = <&sd_all_pins>; -+ pinctrl-2 = <&emmc_clk_cmd_pins>; -+ pinctrl-3 = <&emmc_all_pins>; -+ pinctrl-4 = <&sdio_clk_cmd_pins>; -+ pinctrl-5 = <&sdio_all_pins>; -+ -+//$$ DEVICE="sd" -+//$$ L2 PROP_STR = "status" -+//$$ L3 PROP_U32 = "port" -+//$$ L2 PROP_STR = "pinname" -+//$$ L3 PROP_U32 = "ocr_avail" -+//$$ L2 PROP_STR 3 = "caps" -+//$$ L3 PROP_U32 = "f_min" -+//$$ L3 PROP_U32 = "f_max" -+//$$ L3 PROP_U32 = "f_max_w" -+//$$ L3 PROP_U32 = "max_req_size" -+//$$ L2 PROP_STR = "gpio_dat3" -+//$$ L2 PROP_STR = "jtag_pin" -+//$$ L2 PROP_STR = "gpio_cd" -+//$$ L2 PROP_STR = "gpio_ro" -+//$$ L2 PROP_U32 = "irq_in" -+//$$ L2 PROP_U32 = "irq_out" -+//$$ L2 PROP_U32 = "card_type" -+ sd{ -+ status = "okay"; -+ port = <1>; /**0:sdio_a, 1:sdio_b, 2:sdio_c, 3:sdhc_a, 4:sdhc_b, 5:sdhc_c */ -+ pinname = "sd"; -+ ocr_avail = <0x200000>; /**VDD voltage 3.3 ~ 3.4 */ -+ caps = "MMC_CAP_4_BIT_DATA","MMC_CAP_MMC_HIGHSPEED","MMC_CAP_SD_HIGHSPEED"; -+ f_min = <300000>; -+ f_max = <50000000>; -+ f_max_w = <50000000>; -+ max_req_size = <0x20000>; /**128KB*/ -+ gpio_dat3 = "CARD_3"; -+ gpio_cd = "CARD_6"; -+ gpio_power = "CARD_8"; -+ power_level = <0>; -+ irq_in = <5>; -+ #irq_in_edge = "GPIO_IRQ_FALLING"; -+ irq_out = <6>; -+ #irq_out_edge = "GPIO_IRQ_RISING"; -+ card_type = <5>; /* 0:unknown, 1:mmc card(include eMMC), 2:sd card(include tSD), 3:sdio device(ie:sdio-wifi), 4:SD combo (IO+mem) card, 5:NON sdio device(means sd/mmc card), other:reserved */ -+ }; -+ -+//$$ L3 PROP_U32 = "port" -+//$$ L2 PROP_STR = "pinname" -+//$$ L3 PROP_U32 = "ocr_avail" -+//$$ L2 PROP_STR 4 = "caps" -+//$$ L3 PROP_U32 = "f_min" -+//$$ L3 PROP_U32 = "f_max" -+//$$ L3 PROP_U32 = "max_req_size" -+//$$ L2 PROP_U32 = "card_type" -+ sdio{ -+ status = "okay"; -+ port = <0>; /*0:sdio_a, 1:sdio_b, 2:sdio_c, 3:sdhc_a, 4:sdhc_b, 5:sdhc_c */ -+ pinname = "sdio"; -+ ocr_avail = <0x200000>; /*VDD voltage 3.3 ~ 3.4 */ -+ caps = "MMC_CAP_4_BIT_DATA","MMC_CAP_MMC_HIGHSPEED","MMC_CAP_SD_HIGHSPEED", "MMC_CAP_NONREMOVABLE"; -+ f_min = <300000>; -+ f_max = <50000000>; -+ f_max_w = <50000000>; -+ max_req_size = <0x20000>; /*128KB*/ -+ card_type = <3>; /* 0:unknown, 1:mmc card(include eMMC), 2:sd card(include tSD), 3:sdio device(ie:sdio-wifi), 4:SD combo (IO+mem) card, 5:NON sdio device(means sd/mmc card), other:reserved */ -+ }; -+ }; -+ -+/// *************************************************************************************** -+/// - I2C -+//$$ MODULE="I2C" -+//$$ DEVICE="I2C_AO" -+//$$ L2 PROP_STR = "status" -+//$$ L3 PROP_U32 2 ="reg" -+//$$ L3 PROP_STR = "pinctrl-names" -+//$$ L2 PROP_CHOICE "I2C_AO_pin_match" = "pinctrl-0" -+ i2c@c8100500{ /*I2C-AO*/ -+ compatible = "amlogic,aml_i2c"; -+ dev_name = "i2c-AO"; -+ status = "ok"; -+ reg = <0xc8100500 0x1d>; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ device_id = <0>; -+ pinctrl-names="default"; -+ pinctrl-0=<&ao_i2c_master>; -+ use_pio = <0>; -+ master_i2c_speed = <100000>; -+ }; -+ -+//$$ DEVICE = "I2C_A" -+//$$ L2 PROP_STR = "status" -+//$$ L3 PROP_U32 2 ="reg" -+//$$ L3 PROP_STR = "pinctrl-names" -+//$$ L2 PROP_CHOICE "I2C_A_pin_match" = "pinctrl-0" -+ i2c@c1108500{ /*I2C-A*/ -+ compatible = "amlogic,aml_i2c"; -+ dev_name = "i2c-A"; -+ status = "ok"; -+ reg = <0xc1108500 0x20>; -+ device_id = <1>; -+ pinctrl-names="default"; -+ pinctrl-0=<&a_i2c_master>; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ use_pio = <0>; -+ master_i2c_speed = <300000>; -+ }; -+ -+//$$ DEVICE="I2C_B" -+//$$ L2 PROP_STR = "status" -+//$$ L3 PROP_U32 2="reg" -+//$$ L3 PROP_STR = "pinctrl-names" -+//$$ L2 PROP_CHOICE "I2C_B_pin_match" = "pinctrl-0" -+ i2c@c11087c0{ /*I2C-B*/ -+ compatible = "amlogic,aml_i2c"; -+ dev_name = "i2c-B"; -+ status = "ok"; -+ reg = <0xc11087c0 0x20>; -+ device_id = <2>; -+ pinctrl-names="default"; -+ pinctrl-0=<&b_i2c_master>; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ use_pio = <0>; -+ master_i2c_speed = <300000>; -+ }; -+ -+/// *************************************************************************************** -+/// - Power -+//$$ MODULE="Power" -+//$$ DEVICE="dvfs" -+//$$ L2 PROP_STR = "status" -+ dvfs { -+ compatible = "amlogic, amlogic-dvfs"; /** fixed for driver, don't change */ -+ #address-cells = <1>; -+ #size-cells = <0>; -+ status = "ok"; -+ -+//$$ L2 PROP_U32 = "dvfs_id" -+//$$ L2 PROP_U32 = "table_count" -+//$$ L2 PROP_U32 11*3 = "dvfs_table" -+ vcck_dvfs { -+ dvfs_id = <1>; /** must be value of (1 << n) */ -+ table_count = <11>; /** must be correct count for dvfs_table */ -+ dvfs_table = < -+ /* NOTE: frequent in this table must be ascending order */ -+ /* frequent(Khz) min_uV max_uV */ -+ 200000 1010000 1010000 -+ 600000 1010000 1010000 -+ 792000 1010000 1010000 -+ 816000 1110000 1110000 -+ 840000 1110000 1110000 -+ 984000 1110000 1110000 -+ 1000000 1110000 1110000 -+ 1080000 1220000 1220000 -+ 1200000 1240000 1240000 -+ 1320000 1320000 1320000 -+ 1512000 1320000 1320000 -+ >; -+ }; -+ }; -+//$$ DEVICE="meson_vcck_dvfs_driver" -+//$$ L2 PROP_STR = "status" -+//$$ L2 PROP_STR = "pinctrl-names" -+//$$ L2 PROP_CHOICE "meson_vcck_dvfs_pin_0_match" = "pinctrl-0" -+//$$ L2 PROP_U32 = "use_pwm" -+//$$ L2 PROP_U32 = "table_count" -+//$$ L2 PROP_U32 16*2 = "cs_voltage_table" -+ meson_vcck_dvfs_driver{ -+ compatible = "amlogic, meson_vcck_dvfs"; -+ dev_name = "meson_vcck_dvfs_driver"; -+ status = "ok"; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&aml_pwm_pins>; -+ use_pwm = <1>; -+ pmw_controller = "PWM_C"; -+ table_count = <16>; -+ cs_voltage_table = < -+ /* -+ * Note: This table is hardware depended, If your hardware use PWM method, -+ * then first line in this table is PWM register value, second line is -+ * voltage of VCCK according this PWM register value. If your platform use -+ * constant-current source to adjust vcck voltage, then the first line should -+ * set to 0, means not valid, member 'use_pwm' in this node should set to 0. -+ * -+ * ---- This table must be in ascending order by voltage ---- -+ * -+ * PWM value VCCK voltage -+ */ -+ 0x130009 1010000 -+ 0x12000a 1050000 -+ 0x11000b 1070000 -+ 0x10000c 1090000 -+ 0x0f000d 1110000 -+ 0x0e000e 1130000 -+ 0x0d000f 1150000 -+ 0x0c0010 1170000 -+ 0x0b0011 1190000 -+ 0x0a0012 1210000 -+ 0x090013 1220000 -+ 0x080014 1240000 -+ 0x070015 1270000 -+ 0x060016 1280000 -+ 0x050017 1300000 -+ 0x040018 1320000 -+ >; -+ }; -+ -+ -+ -+/// *************************************************************************************** -+/// - USB Controller -+//$$ MODULE="USB Controller" -+ usb_con { -+ lm-compatible = "logicmodule-bus"; -+ -+//$$ DEVICE="usb_b" -+//$$ L2 PROP_U32 = "lm-periph-id" -+//$$ L2 PROP_STR = "clock-src" -+//$$ L2 PROP_U32 = "port-id" -+//$$ L2 PROP_U32 = "port-type" -+//$$ L2 PROP_U32 = "port-speed" -+//$$ L2 PROP_U32 = "port-config" -+//$$ L2 PROP_U32 = "port-dma" -+//$$ L2 PROP_U32 = "port-id-mode" -+//$$ L2 PROP_STR = "status" -+ usb_b{ -+ lm-compatible = "amlogic,usb"; -+ lm-periph-id = <1>; /** lm name */ -+ clock-src = "usb1"; /** clock src */ -+ port-id = <1>; /** ref to mach/usb.h */ -+ port-type = <1>; /** 0: otg, 1: host, 2: slave */ -+ port-speed = <0>; /** 0: default, 1: high, 2: full */ -+ port-config = <0>; /** 0: default */ -+ port-dma = <0>; /** 0: default, 1: single, 2: incr, 3: incr4, 4: incr8, 5: incr16, 6: disable*/ -+ port-id-mode = <1>; /** 0: hardware, 1: sw_host, 2: sw_slave*/ -+ status = "okay"; -+ }; -+ -+//$$ DEVICE="usb_a" -+//$$ L2 PROP_U32 = "lm-periph-id" -+//$$ L2 PROP_STR = "clock-src" -+//$$ L2 PROP_U32 = "port-id" -+//$$ L2 PROP_U32 = "port-type" -+//$$ L2 PROP_U32 = "port-speed" -+//$$ L2 PROP_U32 = "port-config" -+//$$ L2 PROP_U32 = "port-dma" -+//$$ L2 PROP_U32 = "port-id-mode" -+//$$ L2 PROP_STR = "gpio-vbus-power" -+//$$ L2 PROP_U32 = "gpio-work-mask" -+// L2 PROP_U32 = "charger_detect" -+//$$ L2 PROP_STR = "status" -+ usb_a{ -+ lm-compatible = "amlogic,usb"; -+ lm-periph-id = <0>; /** lm name */ -+ clock-src = "usb0"; /** clock src */ -+ port-id = <0>; /** ref to mach/usb.h */ -+ port-type = <0>; /** 0: otg, 1: host, 2: slave */ -+ port-speed = <0>; /** 0: default, high, 1: full */ -+ port-config = <0>; /** 0: default */ -+ port-dma = <0>; /** 0: default, 1: single, 2: incr, 3: incr4, 4: incr8, 5: incr16, 6: disable*/ -+ port-id-mode = <0>; /** 0: hardware, 1: sw_host, 2: sw_slave*/ -+ gpio-vbus-power = "GPIOD_9"; -+ gpio-work-mask = <1>; /**0: work on pulldown,1:work on pullup*/ -+ status = "okay"; -+ }; -+ }; -+ -+ -+ -+/// *************************************************************************************** -+/// - Audio -+//$$ MODULE="Audio" -+//$$ DEVICE="audio" -+//$$ L2 PROP_STR = "status" -+ audio{ -+ compatible = "amlogic,aml-audio"; -+ dev_name = "aml-audio.0"; -+ status = "okay"; -+ }; -+ -+//$$ DEVICE="audio_dai" -+//$$ L2 PROP_STR = "status" -+ audio_dai{ -+ compatible = "amlogic,aml-dai"; -+ dev_name = "aml-dai.0"; -+ status = "okay"; -+ }; -+ -+//$$ DEVICE="dummy_codec_audio" -+//$$ L2 PROP_STR = "status" -+//$$ L2 PROP_STR = "pinctrl-names" -+//$$ L3 PROP_CHOICE "dummy_codec_audio_0_pin_match" = "pinctrl-0" -+ dummy_codec_audio{ -+ status = "okay"; -+ compatible = "amlogic,aml_dummy_codec_audio"; -+ dev_name = "aml_dummy_codec_audio.0"; -+ pinctrl-names = "dummy_codec_audio"; -+ pinctrl-0 = <&aml_dummy_codec_pins>; -+ }; -+ -+//$$ DEVICE="dummy_codec" -+//$$ L2 PROP_STR = "status" -+ dummy_codec{ -+ status = "okay"; -+ compatible = "amlogic,aml_dummy_codec"; -+ dev_name = "dummy_codec.0"; -+ }; -+ -+ -+ -+/// *************************************************************************************** -+/// - Input -+//$$ MODULE="Input" -+//$$ DEVICE="saradc" -+//$$ L2 PROP_STR = "status" -+ saradc{ -+ compatible = "amlogic,saradc"; -+ status = "okay"; -+ }; -+//$$ DEVICE="adc_keypad" -+//$$ L2 PROP_STR = "status" -+//$$ L2 PROP_STR 5 = "key_name" -+//$$ L2 PROP_U32 = "key_num" -+//$$ L2 PROP_U32 = "name_len" -+//$$ L2 PROP_U32 5 = "key_code" -+//$$ L2 PROP_U32 5 = "key_chan" -+//$$ L2 PROP_U32 5 = "key_val" -+//$$ L2 PROP_U32 5 = "key_tolerance" -+ adc_keypad{ -+ compatible = "amlogic,adc_keypad"; -+ status = "okay"; -+ key_num = <6>; -+ name_len = <20>; -+ key_name = "menu","vol-","vol+","back","home","ok"; -+ key_code = <139 114 115 158 102 232>; -+ key_chan = <4 4 4 4 4 4>; -+ key_val = <9 150 275 392 513 639>; -+ key_tolerance = <40 40 40 40 40 40>; -+ }; -+//$$ DEVICE="key_input" -+//$$ L2 PROP_STR = "status" -+//$$ L2 PROP_U32 = "scan_period" -+//$$ L2 PROP_U32 = "fuzz_time" -+//$$ L2 PROP_U32 = "key_code_list" -+//$$ L2 PROP_U32 = "key_num" -+//$$ L2 PROP_U32 = "config" -+ key_input{ -+ compatible = "amlogic,key_input"; -+ status = "okay"; -+ scan_period = <20>; -+ fuzz_time = <60>; -+ key_code_list = <116>; -+ key_num = <1>; -+ config = <0>; -+ }; -+//$$ DEVICE="aml_remote" -+//$$ L2 PROP_STR = "status" -+//$$ L2 PROP_U32 = "ao_baseaddr" -+//$$ L2 PROP_STR = "pinctrl-names" -+//$$ L2 PROP_CHOICE "Remote_pin_match" = "pinctrl-0" -+ meson-remote{ -+ compatible = "amlogic,aml_remote"; -+ dev_name = "meson-remote"; -+ status = "okay"; -+ ao_baseaddr = <0xf3100480>; -+ pinctrl-names="default"; -+ pinctrl-0=<&remote_pins>; -+ }; -+ -+ -+/// *************************************************************************************** -+/// - Spi -+//$$ MODULE="Spi" -+//$$ DEVICE="spi" -+//$$ L2 PROP_STR = "status" -+//$$ L2 PROP_U32 2 = "reg" -+//$$ L2 PROP_STR = "pinctrl-names" -+//$$ L2 PROP_CHOICE "Spi_pin_0_match" = "pinctrl-0" -+//$$ L2 PROP_U32 = "nr-parts" -+//$$ L2 PROP_CHOICE "Spi_nr-part-0_match" = "nr-part-0" -+//$$ L2 PROP_CHOICE "Spi_nr-part-1_match" = "nr-part-1" -+ spi@cc000000{ -+ compatible = "amlogic,apollo_spi_nor"; -+ status = "ok"; -+ reg = <0xcc000000 0x04000000>; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&aml_spi_nor_pins>; -+ -+ nr-parts = <2>; -+ nr-part-0 = <&bootloader>; -+ nr-part-1 = <&ubootenv>; -+ -+//$$ MATCH "Spi_nr-part-0_match" = <&bootloader> -+//$$ L2 PROP_STR = "name" -+//$$ L2 PROP_U32 = "offset" -+//$$ L2 PROP_U32 = "size" -+ bootloader:bootloader{ -+ name = "bootloader"; -+ offset = <0>; -+ size = <0x100000>; -+ }; -+ -+//$$ MATCH "Spi_nr-part-1_match" = <&ubootenv> -+//$$ L2 PROP_STR = "name" -+//$$ L2 PROP_U32 = "offset" -+//$$ L2 PROP_U32 = "size" -+ ubootenv:ubootenv{ -+ name = "ubootenv"; -+ offset = <0x100000>; -+ size = <0x8000>; -+ }; -+ }; -+ -+/// *************************************************************************************** -+/// - Nand -+//$$ MODULE="Nand" - //$$ DEVICE="aml_nand" - //$$ L2 PROP_STR = "status" - //$$ L3 PROP_U32 2 ="reg" -@@ -765,7 +755,7 @@ - //$$ L3 PROP_STR 2 ="plat-names" - //$$ L2 PROP_U32 = "plat-num" - //$$ L2 PROP_CHOICE "plat-part-0_match" = "plat-part-0" --//$$ L2 PROP_CHOICE "plat-part-1_match" = "plat-part-1" -+// L2 PROP_CHOICE "plat-part-1_match" = "plat-part-1" - nand{ - compatible = "amlogic,aml_nand"; - dev_name = "nand"; -@@ -779,34 +769,11 @@ - &nand_ce0 &nand_ce1 - &nand_ce2 &nand_ce3>; - device_id = <0>; -- plat-names = "bootloader","nandnormal"; -- plat-num = <2>; -- plat-part-0 = <&bootload>; -- plat-part-1 = <&normal>; -- --//$$ MATCH "plat-part-0_match" = <&bootload> --//$$ L2 PROP_STR = "enable_pad" --//$$ L2 PROP_STR = "busy_pad" --//$$ L2 PROP_STR = "timming_mode" --//$$ L2 PROP_STR = "bch_mode" --//$$ L2 PROP_U32 = "t_rea" --//$$ L2 PROP_U32 = "t_rhoh" --//$$ L2 PROP_U32 = "chip_num" --//$$ L2 PROP_U32 = "part_num" --//$$ L2 PROP_U32 = "rb_detect" -- bootload: bootload{ -- enable_pad ="ce0"; -- busy_pad = "rb0"; -- timming_mode = "mode5"; -- bch_mode = "bch60_1k"; -- t_rea = <20>; -- t_rhoh = <15>; -- chip_num = <1>; -- part_num = <0>; -- rb_detect = <1>; -- }; -+ plat-names = "nandnormal"; -+ plat-num = <1>; -+ plat-part-0 = <&normal>; - --//$$ MATCH "plat-part-1_match" = <&normal> -+//$$ MATCH "plat-part-0_match" = <&normal> - //$$ L2 PROP_STR 2 = "enable_pad" - //$$ L2 PROP_STR 2 = "busy_pad" - //$$ L2 PROP_STR = "timming_mode" -@@ -826,7 +793,7 @@ - t_rea = <20>; - t_rhoh = <15>; - chip_num = <2>; -- part_num = <7>; -+ part_num = <9>; - partition = <&nand_partitions>; - rb_detect = <1>; - }; -@@ -856,547 +823,595 @@ - offset=<0x0 0x4a800000>; - size=<0x0 0x20000000>; - }; -- backup{ -- offset=<0x0 0x6a800000>; -- size=<0x0 0x10000000>; -- }; -+ backup{ -+ offset=<0x0 0x6a800000>; -+ size=<0x0 0x10000000>; -+ }; - userdata{ - offset=<0xffffffff 0xffffffff>; - size=<0x0 0x0>; - }; - }; - }; -- --/// *************************************************************************************** --/// - Efuse --//$$ MODULE="Efuse" --//$$ DEVICE="efuse" --//$$ L2 PROP_STR = "status" --//$$ L2 PROP_U32 2 = "plat-pos" --//$$ L2 PROP_U32 = "plat-count" --//$$ L2 PROP_U32 = "usid-min" --//$$ L2 PROP_U32 = "usid-max" -- efuse{ -- compatible = "amlogic,efuse"; -- dev_name = "efuse"; -- status = "okay"; -- plat-pos = <0 454>; -- plat-count = <58>; -- usid-min = <8>; /*reserved*/ -- usid-max = <31>; /*reserved*/ -- }; -- --/// *************************************************************************************** --/// - HDMI --//$$ MODULE="HDMI" --//$$ DEVICE="amhdmitx" --//$$ L2 PROP_STR = "status" --//$$ L2 PROP_CHOICE "HDMI_vend-data_match" = "vend-data" --//$$ L2 PROP_CHOICE "HDMI_pwr-ctrl_match" = "pwr-ctrl" -- amhdmitx{ -- compatible = "amlogic,amhdmitx"; -- dev_name = "amhdmitx"; -- status = "ok"; -- vend-data = <&vend_data>; -- pwr-ctrl = <&pwr_ctrl>; -- phy-size = <3>; -- phy-data = <27 0x16 0x30 /* 480i/p 576i/p */ -- 74 0x16 0x40 /* 720p 1080i */ -- 148 0x16 0x40 /* 1080p */ -- >; -- --//$$ MATCH "HDMI_vend-data_match" = <&vend_data> --//$$ L2 PROP_STR = "vendor_name" --//$$ L2 PROP_U32 = "vendor_id" --//$$ L2 PROP_STR = "product_desc" --//$$ L2 PROP_STR = "cec_osd_string" -- vend_data: vend_data{ -- vendor_name = "Amlogic"; /* Max Chars: 8 */ -- vendor_id = <0x000000>; /* Refer to http://standards.ieee.org/develop/regauth/oui/oui.txt */ -- product_desc = "MX MBox G18Ref"; /* Max Chars: 16 */ -- cec_osd_string = "Amlogic MBox"; /* Max Chars: 14 */ -- }; -- --//$$ MATCH "HDMI_pwr-ctrl_match" = <&pwr_ctrl> --//$$ L2 PROP_STR = "pwr_5v_on" --//$$ L2 PROP_STR 3 = "pwr_5v_off" --//$$ L2 PROP_STR 3 = "pwr_3v3_on" --//$$ L2 PROP_STR = "pwr_3v3_off" --//$$ L2 PROP_STR = "pwr_hpll_vdd_on" --//$$ L2 PROP_STR = "pwr_hpll_vdd_off" -- pwr_ctrl: pwr_ctrl{ -- pwr_5v_on = "cpu","GPIOD_5","H"; -- pwr_5v_off = "cpu","GPIOD_5","L"; -- pwr_3v3_on = ""; -- pwr_3v3_off = ""; -- pwr_hpll_vdd_on = ""; -- pwr_hpll_vdd_off = ""; -- }; -- }; -- --/// *************************************************************************************** --/// - Securitykey --//$$ MODULE="Securitykey" -- securitykey{ -- compatible = "amlogic,aml_keys"; -- }; -- --/// *************************************************************************************** --/// - PowerManager --//$$ MODULE="PowerManager" --//$$ DEVICE="amvenc_avc" --//$$ L2 PROP_STR = "status" -- aml_pm{ -- compatible = "amlogic,pm"; -- dev_name = "aml_pm"; -- status = "okay"; -- }; -- --/// *************************************************************************************** --/// - Cpufreq --//$$ MODULE="Cpufreq" --//$$ DEVICE="cpufreq-meson" --//$$ L2 PROP_STR = "status" -- cpufreq-meson{ -- compatible = "amlogic,cpufreq-meson"; -- status = "okay"; -- }; -- -- -- -- -- -- --/// *************************************************************************************** --/// - Ethernet --//$$ MODULE="Ethernet" --//$$ DEVICE="meson-eth" --//$$ L2 PROP_STR = "status" -- meson-eth{ -- compatible = "amlogic,meson-eth"; -- dev_name = "meson-eth"; -- status = "okay"; -- ethbaseaddr = <0xf3610000>; -- interruptnum = <40>; -- }; -- -- -- -- -- -- --/// ************************************************************************************** --/// - GPIO --//$$ MODULE="GPIO" --//$$ DEVICE="m6-gpio" -- gpio:gpio{ -- compatible = "amlogic,m6-gpio"; -- dev_name = "gpio"; -- #gpio-cells=<2>; -- }; -- --/// ************************************************************************************** --/// - Pinmux --//$$ MODULE="Pinmux" --//$$ DEVICE="pinmux-m6" -- pinmux{ -- compatible = "amlogic,pinmux-m6"; -- dev_name = "pinmux"; -- #pinmux-cells=<2>; -- --//$$ MATCH "uart_ao_pin_match" = "&ao_uart_pins" --//$$ L2 PROP_U32 2 = "amlogic,setmask" --//$$ L2 PROP_STR 2 = "amlogic,pins" -- ao_uart_pins:ao_uart{ -- amlogic,setmask=<10 0x1800>; -- amlogic,pins="GPIOAO_0", "GPIOAO_1"; -- }; -- --//$$ MATCH "uart_0_pin_match" = "&a_uart_pins" --//$$ L2 PROP_U32 2 = "amlogic,setmask" --//$$ L2 PROP_STR 2 = "amlogic,pins" -- a_uart_pins:a_uart{ -- amlogic,setmask=<4 0x3c00>; -- amlogic,pins="GPIOX_13", "GPIOX_14", "GPIOX_15", "GPIOX_16"; -- }; -- --//$$ MATCH "meson_vcck_dvfs_pin_0_match" = "&aml_pwm_pins" --//$$ L2 PROP_U32 2 = "amlogic,setmask" --//$$ L2 PROP_U32 2 = "amlogic,clrmask" --//$$ L2 PROP_STR = "amlogic,pins" -- aml_pwm_pins:aml_pwm{ -- amlogic,setmask=<2 0x4>; -- amlogic,clrmask=<1 0x20000000>; -- amlogic,pins="GPIOD_0"; -- }; -- --//$$ MATCH "I2C_AO_pin_match" = "&ao_i2c_master" --//$$ L2 PROP_U32 2 = "amlogic,setmask" --//$$ L2 PROP_U32 2 = "amlogic,clrmask" --//$$ L2 PROP_STR 2 = "amlogic,pins" -- ao_i2c_master:ao_i2c{ -- amlogic,setmask=<10 0x60>; -- amlogic,clrmask=<10 0x1800006>; -- amlogic,pins="GPIOAO_4","GPIOAO_5"; -- }; -- --//$$ MATCH "I2C_A_pin_match" = "&a_i2c_master" --//$$ L2 PROP_U32 2 = "amlogic,setmask" --//$$ L2 PROP_U32 2 = "amlogic,clrmask" --//$$ L2 PROP_STR 2 = "amlogic,pins" -- a_i2c_master:a_i2c{ -- amlogic,setmask=<5 0xc000000>; -- amlogic,clrmask=<5 0x3000000>; -- amlogic,pins="GPIOX_25","GPIOX_26"; -- }; -- --//$$ MATCH "I2C_B_pin_match" = "&b_i2c_master" --//$$ L2 PROP_U32 2 = "amlogic,setmask" --//$$ L2 PROP_U32 2 = "amlogic,clrmask" --//$$ L2 PROP_STR 2 = "amlogic,pins" -- b_i2c_master:b_i2c{ -- amlogic,setmask=<5 0xc0000000>; -- amlogic,clrmask=<5 0x30000000>; -- amlogic,pins="GPIOX_27","GPIOX_28"; -- }; -- --//$$ MATCH "Nand_pin_0_match" = "&nand_input_state" --//$$ MATCH "Nand_pin_1_match" = "&nand_input_state" --//$$ L2 PROP_STR 17 = "amlogic,pins" --//$$ L2 PROP_U32 = "amlogic,enable-output" -- nand_input_state:nand_input{ -- amlogic,pins = "BOOT_0","BOOT_1","BOOT_2","BOOT_3","BOOT_4", -- "BOOT_5","BOOT_6","BOOT_7","BOOT_12","BOOT_13", -- "BOOT_8","BOOT_9","BOOT_10","BOOT_11", -- "BOOT_14","BOOT_15","BOOT_16"; -- amlogic,enable-output=<1>; -- }; -- --//$$ MATCH "Nand_pin_0_match" = "&conf_nand_state" --//$$ MATCH "Nand_pin_1_match" = "&conf_nand_state" --//$$ L2 PROP_STR 9 = "amlogic,pins" --//$$ L2 PROP_U32 = "amlogic,pullup" -- conf_nand_state: conf_nand{ -- amlogic,pins = "BOOT_0","BOOT_1","BOOT_2","BOOT_3","BOOT_4", -- "BOOT_5","BOOT_6","BOOT_7","BOOT_16"; -- amlogic,pullup=<1>; -- }; -- --//$$ MATCH "Nand_pin_0_match" = "&nand_base" --//$$ MATCH "Nand_pin_1_match" = "&nand_base" --//$$ L2 PROP_U32 2 = "amlogic,setmask" --//$$ L2 PROP_U32 4*2 = "amlogic,clrmask" --//$$ L2 PROP_STR 13 = "amlogic,pins" -- nand_base: nand{ -- amlogic,setmask=<2 0xc3c0000>; -- amlogic,clrmask=< 5 0xe -- 3 0x80000000 -- 6 0x3c000000 -- 4 0x70000000>; -- amlogic,pins = "BOOT_0","BOOT_1","BOOT_2","BOOT_3","BOOT_4", -- "BOOT_5","BOOT_6","BOOT_7","BOOT_12","BOOT_13", -- "BOOT_14","BOOT_15","BOOT_16"; -- }; -- --//$$ MATCH "Nand_pin_0_match" = "&nand_ce0" --//$$ MATCH "Nand_pin_1_match" = "&nand_ce0" --//$$ L2 PROP_U32 2 = "amlogic,setmask" --//$$ L2 PROP_STR = "amlogic,pins" -- nand_ce0: nand_ce0{ -- amlogic,setmask=<2 0x2000000>; -- amlogic,pins = "BOOT_8"; -- }; -- --//$$ MATCH "Nand_pin_0_match" = "&nand_ce1" --//$$ MATCH "Nand_pin_1_match" = "&nand_ce1" --//$$ L2 PROP_U32 2 = "amlogic,setmask" --//$$ L2 PROP_STR = "amlogic,pins" -- nand_ce1: nand_ce1{ -- amlogic,setmask=<2 0x1000000>; -- amlogic,pins = "BOOT_9"; -- }; -- --//$$ MATCH "Nand_pin_1_match" = "&nand_ce2" --//$$ L2 PROP_U32 2 = "amlogic,setmask" --//$$ L2 PROP_STR = "amlogic,pins" -- nand_ce2: nand_ce2{ -- amlogic,setmask=<2 0x800000>; -- amlogic,pins = "BOOT_10"; -- }; -- --//$$ MATCH "Nand_pin_1_match" = "&nand_ce3" --//$$ L2 PROP_U32 2 = "amlogic,setmask" --//$$ L2 PROP_STR = "amlogic,pins" -- nand_ce3: nand_ce3{ -- amlogic,setmask=<2 0x400000>; -- amlogic,pins = "BOOT_11"; -- }; -- --//$$ MATCH "Nand_pin_0_match" = "&nand_rb0" --//$$ L2 PROP_U32 2 = "amlogic,setmask" --//$$ L2 PROP_U32 2 = "amlogic,clrmask" --//$$ L2 PROP_STR = "amlogic,pins" -- nand_rb0: nand_rb0{ -- amlogic,setmask=<2 0x20000>; -- amlogic,clrmask=<2 0x800000>; -- amlogic,pins = "BOOT_10"; -- }; -- --//$$ MATCH "Nand_pin_0_match" = "&nand_rb1" --//$$ L2 PROP_U32 2 = "amlogic,setmask" --//$$ L2 PROP_U32 2 = "amlogic,clrmask" --//$$ L2 PROP_STR = "amlogic,pins" -- nand_rb1: nand_rb1{ -- amlogic,setmask=<2 0x10000>; -- amlogic,clrmask=<2 0x400000>; -- amlogic,pins = "BOOT_11"; -- }; -- -- -- sdio_all_pins:sdio_all_pins{ -- amlogic,setmask=<8 0x0000003f>; /*sdio a*/ -- amlogic,clrmask=<6 0x3f000000 /*sdio c*/ -- 2 0x0000fc00 /*sdio b*/ -- 5 0x00006c00>; /*sdhc a*/ -- amlogic,pins = "GPIOX_0","GPIOX_1","GPIOX_2","GPIOX_3","GPIOX_8","GPIOX_9"; -- amlogic,enable-output=<1>; /* 0:output, 1:input */ -- amlogic,pullup=<0>; -- }; -- sdio_clk_cmd_pins:sdio_clk_cmd_pins{ -- amlogic,setmask=<8 0x00000003>; /*sdio a*/ -- amlogic,clrmask=<6 0x3f000000 /*sdio c*/ -- 2 0x0000fc00 /*sdio b*/ -- 5 0x00006c00>; /*sdhc a*/ -- amlogic,pins = "GPIOX_8","GPIOX_9"; -- amlogic,enable-output=<1>; /* 0:output, 1:input */ -- amlogic,pullup=<0>; -- }; -- sd_all_pins:sd_all_pins{ -- amlogic,setmask=<2 0x0000fc00>; /*sdio b*/ -- amlogic,clrmask=<6 0x3f000000 /*sdio c*/ -- 8 0x0000003f /*sdio a*/ -- 2 0x000000f0>; /*sdhc b*/ -- amlogic,pins = "CARD_0","CARD_1","CARD_2","CARD_3","CARD_4","CARD_5"; -- amlogic,enable-output=<1>; /* 0:output, 1:input */ -- amlogic,pullup=<0>; -- }; -- sd_clk_cmd_pins:sd_clk_cmd_pins{ -- amlogic,setmask=<2 0x00000c00>; /*sdio b*/ -- amlogic,clrmask=<6 0x3f000000 /*sdio c*/ -- 8 0x0000003f /*sdio a*/ -- 2 0x000000f0>; /*sdhc b*/ -- amlogic,pins = "CARD_4","CARD_5"; /* CARD_4:CLK, CARD_5:CMD */ -- amlogic,enable-output=<1>; /* 0:output, 1:input */ -- amlogic,pullup=<0>; -- }; -- emmc_all_pins:emmc_all_pins{ -- amlogic,setmask=<6 0x3f000000>; /*sdio c, */ -- amlogic,clrmask=<2 0x04c3fc00 /*sdio b & nand*/ -- 8 0x0000003f /*sdio a*/ -- 4 0x6c000000 /*sdhc c*/ -- 3 0x80000000>; /*I2C*/ -- amlogic,pins = "BOOT_0","BOOT_1","BOOT_2","BOOT_3","BOOT_10","BOOT_11"; -- amlogic,enable-output=<1>; /* 0:output, 1:input */ -- amlogic,pullup=<0>; -- }; -- emmc_clk_cmd_pins:emmc_clk_cmd_pins{ -- amlogic,setmask=<6 0x03000000>; /*bit[24-25] */ -- amlogic,clrmask=<2 0x04c3fc00 /*sdio b & nand*/ -- 8 0x0000003f /*sdio a*/ -- 4 0x6c000000 /*sdhc c*/ -- 3 0x80000000>; /*I2C*/ -- amlogic,pins = "BOOT_10","BOOT_11"; -- amlogic,enable-output=<1>; /* 0:output, 1:input */ -- amlogic,pullup=<0>; -- }; -- --//$$ MATCH "Remote_pin_match" = "&remote_pins" --//$$ L2 PROP_U32 2 = "amlogic,setmask" --//$$ L2 PROP_STR= "amlogic,pins" -- remote_pins:remote_pin{ -- amlogic,setmask=<10 0x1>; -- amlogic,pins="GPIOAO_7"; -- }; -- --//$$ MATCH "wm8960_pin_match" = "&aml_i2s_pins" --//$$ L2 PROP_U32 2 = "amlogic,setmask" --//$$ L2 PROP_U32 2 = "amlogic,clrmask" --//$$ L2 PROP_STR 4 = "amlogic,pins" -- aml_i2s_pins: aml_i2s_pins{ -- amlogic,setmask=<9 0xAB0>; -- amlogic,clrmask=<9 0x440>; -- amlogic,pins = "GPIOE_0","GPIOE_1","GPIOE_2","GPIOE_3"; -- }; -- --//$$ MATCH "wm8960_pin_match" = "&config_aml_hp_det_pins" --//$$ L2 PROP_STR= "amlogic,pins" --//$$ L2 PROP_U32 = "amlogic,pullup" -- config_aml_hp_det_pins: config_aml_hp_det_pins{ -- amlogic,pins = "GPIOA_19"; -- amlogic,pullup=<1>; -- }; -- --//$$ MATCH "dummy_codec_audio_0_pin_match" = "&aml_dummy_codec_pins" --//$$ L2 PROP_U32 2*2 = "amlogic,setmask" --//$$ L2 PROP_U32 2 = "amlogic,clrmask" --//$$ L2 PROP_STR 5 = "amlogic,pins" -- aml_dummy_codec_pins: aml_dummy_codec_pins{ -- amlogic,setmask=<9 0x2B0 -- 3 0x1000000>; -- amlogic,clrmask=<9 0x380c4e>; -- amlogic,pins = "GPIOE_1","GPIOE_2","GPIOE_3","GPIOE_4","GPIOC_9"; -- }; --//$$ MATCH "Bl_pin_0_match" = "&lcd_backlight_pins" --//$$ L2 PROP_U32 2 = "amlogic,setmask" --//$$ L2 PROP_U32 2 = "amlogic,clrmask" --//$$ L2 PROP_STR = "amlogic,pins" -- lcd_backlight_pins:lcd_backlight{ -- amlogic,setmask=<2 0x8>; -- amlogic,clrmask=<1 0x10000000>; -- amlogic,pins = "GPIOD_1"; -- }; -- lcd_ttl_hvsync_pins_on:lcd_ttl_hvsync_on{ -- amlogic,setmask=<1 0xc0000>; -- amlogic,clrmask=<0 0xc00000>; -- amlogic,pins = "GPIOD_2","GPIOD_3"; -- }; -- lcd_ttl_hvsync_pins_off:lcd_ttl_hvsync_off{ -- amlogic,clrmask=<0 0xc00000 1 0xc0000>; -- amlogic,pins = "GPIOD_2","GPIOD_3"; -- amlogic,enable-output=<1>; -- }; -- lcd_ttl_de_pins_on:lcd_ttl_de_on{ -- amlogic,setmask=<1 0x20000>; -- amlogic,clrmask=<0 0x1000000>; -- amlogic,pins = "GPIOD_4"; -- }; -- lcd_ttl_de_pins_off:lcd_ttl_de_off{ -- amlogic,clrmask=<0 0x1000000 1 0x20000>; -- amlogic,pins = "GPIOD_4"; -- amlogic,enable-output=<1>; -- }; -- lcd_ttl_clk_pins_on:lcd_ttl_clk_on{ -- amlogic,setmask=<1 0x4000>; -- amlogic,clrmask=<0 0x8000000 1 0x3800>; -- amlogic,pins = "GPIOD_7"; -- }; -- lcd_ttl_clk_pins_off:lcd_ttl_clk_off{ -- amlogic,clrmask=<0 0x8000000 1 0x7800>; -- amlogic,pins = "GPIOD_7"; -- amlogic,enable-output=<1>; -- }; -- lcd_ttl_rgb_8bit_pins_on:lcd_ttl_rgb_8bit_on{ -- amlogic,setmask=<0 0x3f>; -- amlogic,clrmask=<5 0xff8000>; -- amlogic,pins = "GPIOB_0","GPIOB_1","GPIOB_2","GPIOB_3","GPIOB_4","GPIOB_5","GPIOB_6","GPIOB_7", //R0~R7 -- "GPIOB_8","GPIOB_9","GPIOB_10","GPIOB_11","GPIOB_12","GPIOB_13","GPIOB_14","GPIOB_15", //G0~G7 -- "GPIOB_16","GPIOB_17","GPIOB_18","GPIOB_19","GPIOB_20","GPIOB_21","GPIOB_22","GPIOB_23";//B0~B7 -- }; -- lcd_ttl_rgb_8bit_pins_off:lcd_ttl_rgb_8bit_off{ -- amlogic,clrmask=<0 0x3f 5 0xff8000>; -- amlogic,pins = "GPIOB_0","GPIOB_1","GPIOB_2","GPIOB_3","GPIOB_4","GPIOB_5","GPIOB_6","GPIOB_7", //R0~R7 -- "GPIOB_8","GPIOB_9","GPIOB_10","GPIOB_11","GPIOB_12","GPIOB_13","GPIOB_14","GPIOB_15", //G0~G7 -- "GPIOB_16","GPIOB_17","GPIOB_18","GPIOB_19","GPIOB_20","GPIOB_21","GPIOB_22","GPIOB_23";//B0~B7 -- amlogic,enable-output=<1>; -- }; -- lcd_ttl_rgb_6bit_pins_on:lcd_ttl_rgb_6bit_on{ -- amlogic,setmask=<0 0x15>; -- amlogic,clrmask=<5 0xf98000>; -- amlogic,pins = "GPIOB_2","GPIOB_3","GPIOB_4","GPIOB_5","GPIOB_6","GPIOB_7", //R2~R7 -- "GPIOB_10","GPIOB_11","GPIOB_12","GPIOB_13","GPIOB_14","GPIOB_15", //G2~G7 -- "GPIOB_18","GPIOB_19","GPIOB_20","GPIOB_21","GPIOB_22","GPIOB_23"; //B2~B7 -- }; -- lcd_ttl_rgb_6bit_pins_off:lcd_ttl_rgb_6bit_off{ -- amlogic,clrmask=<0 0x15 5 0xf98000>; -- amlogic,pins = "GPIOB_2","GPIOB_3","GPIOB_4","GPIOB_5","GPIOB_6","GPIOB_7", //R2~R7 -- "GPIOB_10","GPIOB_11","GPIOB_12","GPIOB_13","GPIOB_14","GPIOB_15", //G2~G7 -- "GPIOB_18","GPIOB_19","GPIOB_20","GPIOB_21","GPIOB_22","GPIOB_23"; //B2~B7 -- amlogic,enable-output=<1>; -- }; -- --//$$ MATCH "Camera_pin_match" = "&aml_cam_pins" --//$$ L2 PROP_U32 2 = "amlogic,setmask" --//$$ L2 PROP_STR = "amlogic,pins" -- aml_cam_pins: aml_cam_pins{ -- amlogic,setmask=<9 0x1000>; -- amlogic,pins = "GPIOZ_12"; -- }; -- --//$$ MATCH "Spi_pin_0_match" = "&aml_spi_nor_pins" --//$$ L2 PROP_U32 2 = "amlogic,setmask" --//$$ L2 PROP_U32 2 = "amlogic,clrmask" --//$$ L2 PROP_STR 4 = "amlogic,pins" -- aml_spi_nor_pins: aml_spi_nor_pins{ -- amlogic,setmask=<5 0xf>; -- amlogic,clrmask=<2 0x380000>; -- amlogic,pins = "BOOT_12","BOOT_13","BOOT_14","BOOT_17"; -- }; --//$$ MATCH "dvb_p_ts2_pins_match" = "&dvb_p_ts2_pins" --//$$ L2 PROP_U32 2 = "amlogic,setmask" --//$$ L2 PROP_U32 8 = "amlogic,clrmask" --//$$ L2 PROP_STR 12 = "amlogic,pins" -- dvb_p_ts2_pins: dvb_p_ts2_pins { -- amlogic,setmask = <3 0xfc0>; -- amlogic,clrmask = <0 0xf -- 5 0xff00>; -- amlogic,pins = "GPIOB_0","GPIOB_1","GPIOB_2","GPIOB_3","GPIOB_4","GPIOB_5","GPIOB_6","GPIOB_7","GPIOB_8","GPIOB_9","GPIOB_10","GPIOB_11"; -- }; -- --//$$ MATCH "dvb_s_ts2_pins_match" = "&dvb_s_ts2_pins" --//$$ L2 PROP_U32 2 = "amlogic,setmask" --//$$ L2 PROP_U32 6 = "amlogic,clrmask" --//$$ L2 PROP_STR 5 = "amlogic,pins" -- dvb_s_ts2_pins: dvb_s_ts2_pins { -- amlogic,setmask = <3 0xfc0>; -- amlogic,clrmask = <0 0xf -- 5 0xff00>; -- amlogic,pins = "GPIOB_0","GPIOB_1","GPIOB_2","GPIOB_3","GPIOB_4","GPIOB_5","GPIOB_6","GPIOB_7","GPIOB_8","GPIOB_9","GPIOB_10","GPIOB_11"; -- }; -- }; --/// *************************************************************************************** --/// - DVB --//$$ MODULE="DVB" -- --//$$ DEVICE="dvb" --//$$ L2 PROP_STR = "ts2" --//$$ L2 PROP_U32 = "ts2_invert" --//$$ L2 PROP_U32 = "ts2_control" --//$$ L2 PROP_STR 6 = "pinctrl-names" --//$$ L2 PROP_CHOICE "dvb_p_ts2_pins_match" = "pinctrl-0" --//$$ L2 PROP_CHOICE "dvb_s_ts2_pins_match" = "pinctrl-1" -- dvb{ -- compatible = "amlogic,dvb"; -- /*"parallel","serial","disable"*/ -- ts2 = "parallel"; -- ts2_control = <0>; -- ts2_invert = <0>; -- pinctrl-names = "p_ts2", "s_ts2"; -- pinctrl-0 = <&dvb_p_ts2_pins>; -- pinctrl-1 = <&dvb_s_ts2_pins>; -- }; -- --//$$ DEVICE="dvbfe" --//$$ L2 PROP_STR = "dtv_demod0" --//$$ L2 PROP_U32 = "dtv_demod0_i2c_adap_id" --//$$ L2 PROP_U32 = "dtv_demod0_i2c_addr" --//$$ L2 PROP_U32 = "dtv_demod0_reset_value" --//$$ L2 PROP_STR = "dtv_demod0_reset_gpio" --//$$ L2 PROP_U32 = "fe0_dtv_demod" --//$$ L2 PROP_U32 = "fe0_ts" --//$$ L2 PROP_U32 = "fe0_dev" --//$$ L2 PROP_STR 6 = "pinctrl-names" --//$$ L2 PROP_CHOICE "dvb_fe_pins_match" = "pinctrl-0" -- dvbfe{ -- compatible = "amlogic,dvbfe"; -- dtv_demod0 = "Avl6211"; -- dtv_demod0_i2c_adap_id = <1>; -- dtv_demod0_i2c_addr = <0xC0>; -- dtv_demod0_reset_value = <0>; -- dtv_demod0_reset_gpio = "GPIOD_8"; -- fe0_dtv_demod = <0>; -- fe0_ts = <2>; -- fe0_dev = <0>; -- -- }; --}; /* end of / */ -- -+ -+/// *************************************************************************************** -+/// - Efuse -+//$$ MODULE="Efuse" -+//$$ DEVICE="efuse" -+//$$ L2 PROP_STR = "status" -+//$$ L2 PROP_U32 2 = "plat-pos" -+//$$ L2 PROP_U32 = "plat-count" -+//$$ L2 PROP_U32 = "usid-min" -+//$$ L2 PROP_U32 = "usid-max" -+ efuse{ -+ compatible = "amlogic,efuse"; -+ dev_name = "efuse"; -+ status = "okay"; -+ plat-pos = <0 454>; -+ plat-count = <58>; -+ usid-min = <8>; /*reserved*/ -+ usid-max = <31>; /*reserved*/ -+ }; -+ -+/// *************************************************************************************** -+/// - HDMI -+//$$ MODULE="HDMI" -+//$$ DEVICE="amhdmitx" -+//$$ L2 PROP_STR = "status" -+//$$ L2 PROP_CHOICE "HDMI_vend-data_match" = "vend-data" -+//$$ L2 PROP_CHOICE "HDMI_pwr-ctrl_match" = "pwr-ctrl" -+ amhdmitx{ -+ compatible = "amlogic,amhdmitx"; -+ dev_name = "amhdmitx"; -+ status = "ok"; -+ vend-data = <&vend_data>; -+ pwr-ctrl = <&pwr_ctrl>; -+ phy-size = <3>; -+ phy-data = <27 0x16 0x30 /* 480i/p 576i/p */ -+ 74 0x16 0x40 /* 720p 1080i */ -+ 148 0x16 0x40 /* 1080p */ -+ >; -+ -+//$$ MATCH "HDMI_vend-data_match" = <&vend_data> -+//$$ L2 PROP_STR = "vendor_name" -+//$$ L2 PROP_U32 = "vendor_id" -+//$$ L2 PROP_STR = "product_desc" -+//$$ L2 PROP_STR = "cec_osd_string" -+ vend_data: vend_data{ -+ vendor_name = "Amlogic"; /* Max Chars: 8 */ -+ vendor_id = <0x000000>; /* Refer to http://standards.ieee.org/develop/regauth/oui/oui.txt */ -+ product_desc = "MX MBox G18Ref"; /* Max Chars: 16 */ -+ cec_osd_string = "Amlogic MBox"; /* Max Chars: 14 */ -+ }; -+ -+//$$ MATCH "HDMI_pwr-ctrl_match" = <&pwr_ctrl> -+//$$ L2 PROP_STR = "pwr_5v_on" -+//$$ L2 PROP_STR 3 = "pwr_5v_off" -+//$$ L2 PROP_STR 3 = "pwr_3v3_on" -+//$$ L2 PROP_STR = "pwr_3v3_off" -+//$$ L2 PROP_STR = "pwr_hpll_vdd_on" -+//$$ L2 PROP_STR = "pwr_hpll_vdd_off" -+ pwr_ctrl: pwr_ctrl{ -+ pwr_5v_on = "cpu","GPIOD_5","H"; -+ pwr_5v_off = "cpu","GPIOD_5","L"; -+ pwr_3v3_on = ""; -+ pwr_3v3_off = ""; -+ pwr_hpll_vdd_on = ""; -+ pwr_hpll_vdd_off = ""; -+ }; -+ }; -+ -+/// *************************************************************************************** -+/// - Securitykey -+//$$ MODULE="Securitykey" -+ securitykey{ -+ compatible = "amlogic,aml_keys"; -+ }; -+ -+/// *************************************************************************************** -+/// - PowerManager -+//$$ MODULE="PowerManager" -+//$$ DEVICE="amvenc_avc" -+//$$ L2 PROP_STR = "status" -+ aml_pm{ -+ compatible = "amlogic,pm"; -+ dev_name = "aml_pm"; -+ status = "okay"; -+ }; -+ -+/// *************************************************************************************** -+/// - Cpufreq -+//$$ MODULE="Cpufreq" -+//$$ DEVICE="cpufreq-meson" -+//$$ L2 PROP_STR = "status" -+ cpufreq-meson{ -+ compatible = "amlogic,cpufreq-meson"; -+ status = "okay"; -+ }; -+ -+ -+ -+ -+ -+ -+/// *************************************************************************************** -+/// - Ethernet -+//$$ MODULE="Ethernet" -+//$$ DEVICE="meson-eth" -+//$$ L2 PROP_STR = "status" -+ meson-eth{ -+ compatible = "amlogic,meson-eth"; -+ dev_name = "meson-eth"; -+ status = "okay"; -+ ethbaseaddr = <0xf3610000>; -+ interruptnum = <40>; -+ }; -+ -+ -+/// ************************************************************************************** -+/// - Smartcard -+ smartcard{ -+ compatible = "amlogic,smartcard"; -+ smc_reset_level = <1>; -+ smc_reset = "GPIOX_31"; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&smc_pins>; -+ }; -+ -+ -+ -+ -+/// ************************************************************************************** -+/// - GPIO -+//$$ MODULE="GPIO" -+//$$ DEVICE="m6-gpio" -+ gpio:gpio{ -+ compatible = "amlogic,m6-gpio"; -+ dev_name = "gpio"; -+ #gpio-cells=<2>; -+ }; -+ -+/// ************************************************************************************** -+/// - Pinmux -+//$$ MODULE="Pinmux" -+//$$ DEVICE="pinmux-m6" -+ pinmux{ -+ compatible = "amlogic,pinmux-m6"; -+ dev_name = "pinmux"; -+ #pinmux-cells=<2>; -+ -+ smc_pins:smc_pins{ -+ amlogic,setmask = <4 0x003c0000>; -+ amlogic,clrmask = <4 0x000003c0 -+ 4 0x03c00000 -+ 8 0x3f000000>; -+ amlogic,pins = "GPIOX_17","GPIOX_18","GPIOX_19","GPIOX_20"; -+ }; -+ -+//$$ MATCH "uart_ao_pin_match" = "&ao_uart_pins" -+//$$ L2 PROP_U32 2 = "amlogic,setmask" -+//$$ L2 PROP_STR 2 = "amlogic,pins" -+ ao_uart_pins:ao_uart{ -+ amlogic,setmask=<10 0x1800>; -+ amlogic,pins="GPIOAO_0", "GPIOAO_1"; -+ }; -+ -+//$$ MATCH "uart_0_pin_match" = "&a_uart_pins" -+//$$ L2 PROP_U32 2 = "amlogic,setmask" -+//$$ L2 PROP_STR 2 = "amlogic,pins" -+ a_uart_pins:a_uart{ -+ amlogic,setmask=<4 0x3c00>; -+ amlogic,pins="GPIOX_13", "GPIOX_14", "GPIOX_15", "GPIOX_16"; -+ }; -+ -+//$$ MATCH "meson_vcck_dvfs_pin_0_match" = "&aml_pwm_pins" -+//$$ L2 PROP_U32 2 = "amlogic,setmask" -+//$$ L2 PROP_U32 2 = "amlogic,clrmask" -+//$$ L2 PROP_STR = "amlogic,pins" -+ aml_pwm_pins:aml_pwm{ -+ amlogic,setmask=<2 0x4>; -+ amlogic,clrmask=<1 0x20000000>; -+ amlogic,pins="GPIOD_0"; -+ }; -+ -+//$$ MATCH "I2C_AO_pin_match" = "&ao_i2c_master" -+//$$ L2 PROP_U32 2 = "amlogic,setmask" -+//$$ L2 PROP_U32 2 = "amlogic,clrmask" -+//$$ L2 PROP_STR 2 = "amlogic,pins" -+ ao_i2c_master:ao_i2c{ -+ amlogic,setmask=<10 0x60>; -+ amlogic,clrmask=<10 0x1800006>; -+ amlogic,pins="GPIOAO_4","GPIOAO_5"; -+ }; -+ -+//$$ MATCH "I2C_A_pin_match" = "&a_i2c_master" -+//$$ L2 PROP_U32 2 = "amlogic,setmask" -+//$$ L2 PROP_U32 2 = "amlogic,clrmask" -+//$$ L2 PROP_STR 2 = "amlogic,pins" -+ a_i2c_master:a_i2c{ -+ amlogic,setmask=<5 0xc000000>; -+ amlogic,clrmask=<5 0x3000000>; -+ amlogic,pins="GPIOX_25","GPIOX_26"; -+ }; -+ -+//$$ MATCH "I2C_B_pin_match" = "&b_i2c_master" -+//$$ L2 PROP_U32 2 = "amlogic,setmask" -+//$$ L2 PROP_U32 2 = "amlogic,clrmask" -+//$$ L2 PROP_STR 2 = "amlogic,pins" -+ b_i2c_master:b_i2c{ -+ amlogic,setmask=<5 0xc0000000>; -+ amlogic,clrmask=<5 0x30000000>; -+ amlogic,pins="GPIOX_27","GPIOX_28"; -+ }; -+ -+//$$ MATCH "Nand_pin_0_match" = "&nand_input_state" -+//$$ MATCH "Nand_pin_1_match" = "&nand_input_state" -+//$$ L2 PROP_STR 17 = "amlogic,pins" -+//$$ L2 PROP_U32 = "amlogic,enable-output" -+ nand_input_state:nand_input{ -+ amlogic,pins = "BOOT_0","BOOT_1","BOOT_2","BOOT_3","BOOT_4", -+ "BOOT_5","BOOT_6","BOOT_7","BOOT_12","BOOT_13", -+ "BOOT_8","BOOT_9","BOOT_10","BOOT_11", -+ "BOOT_14","BOOT_15","BOOT_16"; -+ amlogic,enable-output=<1>; -+ }; -+ -+//$$ MATCH "Nand_pin_0_match" = "&conf_nand_state" -+//$$ MATCH "Nand_pin_1_match" = "&conf_nand_state" -+//$$ L2 PROP_STR 9 = "amlogic,pins" -+//$$ L2 PROP_U32 = "amlogic,pullup" -+ conf_nand_state: conf_nand{ -+ amlogic,pins = "BOOT_0","BOOT_1","BOOT_2","BOOT_3","BOOT_4", -+ "BOOT_5","BOOT_6","BOOT_7","BOOT_16"; -+ amlogic,pullup=<1>; -+ }; -+ -+//$$ MATCH "Nand_pin_0_match" = "&nand_base" -+//$$ MATCH "Nand_pin_1_match" = "&nand_base" -+//$$ L2 PROP_U32 2 = "amlogic,setmask" -+//$$ L2 PROP_U32 4*2 = "amlogic,clrmask" -+//$$ L2 PROP_STR 13 = "amlogic,pins" -+ nand_base: nand{ -+ amlogic,setmask=<2 0xc3c0000>; -+ amlogic,clrmask=< 5 0xe -+ 3 0x80000000 -+ 6 0x3c000000 -+ 4 0x70000000>; -+ amlogic,pins = "BOOT_0","BOOT_1","BOOT_2","BOOT_3","BOOT_4", -+ "BOOT_5","BOOT_6","BOOT_7","BOOT_12","BOOT_13", -+ "BOOT_14","BOOT_15","BOOT_16"; -+ }; -+ -+//$$ MATCH "Nand_pin_0_match" = "&nand_ce0" -+//$$ MATCH "Nand_pin_1_match" = "&nand_ce0" -+//$$ L2 PROP_U32 2 = "amlogic,setmask" -+//$$ L2 PROP_STR = "amlogic,pins" -+ nand_ce0: nand_ce0{ -+ amlogic,setmask=<2 0x2000000>; -+ amlogic,pins = "BOOT_8"; -+ }; -+ -+//$$ MATCH "Nand_pin_0_match" = "&nand_ce1" -+//$$ MATCH "Nand_pin_1_match" = "&nand_ce1" -+//$$ L2 PROP_U32 2 = "amlogic,setmask" -+//$$ L2 PROP_STR = "amlogic,pins" -+ nand_ce1: nand_ce1{ -+ amlogic,setmask=<2 0x1000000>; -+ amlogic,pins = "BOOT_9"; -+ }; -+ -+//$$ MATCH "Nand_pin_1_match" = "&nand_ce2" -+//$$ L2 PROP_U32 2 = "amlogic,setmask" -+//$$ L2 PROP_STR = "amlogic,pins" -+ nand_ce2: nand_ce2{ -+ amlogic,setmask=<2 0x800000>; -+ amlogic,pins = "BOOT_10"; -+ }; -+ -+//$$ MATCH "Nand_pin_1_match" = "&nand_ce3" -+//$$ L2 PROP_U32 2 = "amlogic,setmask" -+//$$ L2 PROP_STR = "amlogic,pins" -+ nand_ce3: nand_ce3{ -+ amlogic,setmask=<2 0x400000>; -+ amlogic,pins = "BOOT_11"; -+ }; -+ -+//$$ MATCH "Nand_pin_0_match" = "&nand_rb0" -+//$$ L2 PROP_U32 2 = "amlogic,setmask" -+//$$ L2 PROP_U32 2 = "amlogic,clrmask" -+//$$ L2 PROP_STR = "amlogic,pins" -+ nand_rb0: nand_rb0{ -+ amlogic,setmask=<2 0x20000>; -+ amlogic,clrmask=<2 0x800000>; -+ amlogic,pins = "BOOT_10"; -+ }; -+ -+//$$ MATCH "Nand_pin_0_match" = "&nand_rb1" -+//$$ L2 PROP_U32 2 = "amlogic,setmask" -+//$$ L2 PROP_U32 2 = "amlogic,clrmask" -+//$$ L2 PROP_STR = "amlogic,pins" -+ nand_rb1: nand_rb1{ -+ amlogic,setmask=<2 0x10000>; -+ amlogic,clrmask=<2 0x400000>; -+ amlogic,pins = "BOOT_11"; -+ }; -+ -+ -+ sdio_all_pins:sdio_all_pins{ -+ amlogic,setmask=<8 0x0000003f>; /*sdio a*/ -+ amlogic,clrmask=<6 0x3f000000 /*sdio c*/ -+ 2 0x0000fc00 /*sdio b*/ -+ 5 0x00006c00>; /*sdhc a*/ -+ amlogic,pins = "GPIOX_0","GPIOX_1","GPIOX_2","GPIOX_3","GPIOX_8","GPIOX_9"; -+ amlogic,enable-output=<1>; /* 0:output, 1:input */ -+ amlogic,pullup=<0>; -+ }; -+ sdio_clk_cmd_pins:sdio_clk_cmd_pins{ -+ amlogic,setmask=<8 0x00000003>; /*sdio a*/ -+ amlogic,clrmask=<6 0x3f000000 /*sdio c*/ -+ 2 0x0000fc00 /*sdio b*/ -+ 5 0x00006c00>; /*sdhc a*/ -+ amlogic,pins = "GPIOX_8","GPIOX_9"; -+ amlogic,enable-output=<1>; /* 0:output, 1:input */ -+ amlogic,pullup=<0>; -+ }; -+ sd_all_pins:sd_all_pins{ -+ amlogic,setmask=<2 0x0000fc00>; /*sdio b*/ -+ amlogic,clrmask=<6 0x3f000000 /*sdio c*/ -+ 8 0x0000003f /*sdio a*/ -+ 2 0x000000f0>; /*sdhc b*/ -+ amlogic,pins = "CARD_0","CARD_1","CARD_2","CARD_3","CARD_4","CARD_5"; -+ amlogic,enable-output=<1>; /* 0:output, 1:input */ -+ amlogic,pullup=<0>; -+ }; -+ sd_clk_cmd_pins:sd_clk_cmd_pins{ -+ amlogic,setmask=<2 0x00000c00>; /*sdio b*/ -+ amlogic,clrmask=<6 0x3f000000 /*sdio c*/ -+ 8 0x0000003f /*sdio a*/ -+ 2 0x000000f0>; /*sdhc b*/ -+ amlogic,pins = "CARD_4","CARD_5"; /* CARD_4:CLK, CARD_5:CMD */ -+ amlogic,enable-output=<1>; /* 0:output, 1:input */ -+ amlogic,pullup=<0>; -+ }; -+ emmc_all_pins:emmc_all_pins{ -+ amlogic,setmask=<6 0x3f000000>; /*sdio c, */ -+ amlogic,clrmask=<2 0x04c3fc00 /*sdio b & nand*/ -+ 8 0x0000003f /*sdio a*/ -+ 4 0x6c000000 /*sdhc c*/ -+ 3 0x80000000>; /*I2C*/ -+ amlogic,pins = "BOOT_0","BOOT_1","BOOT_2","BOOT_3","BOOT_10","BOOT_11"; -+ amlogic,enable-output=<1>; /* 0:output, 1:input */ -+ amlogic,pullup=<0>; -+ }; -+ emmc_clk_cmd_pins:emmc_clk_cmd_pins{ -+ amlogic,setmask=<6 0x03000000>; /*bit[24-25] */ -+ amlogic,clrmask=<2 0x04c3fc00 /*sdio b & nand*/ -+ 8 0x0000003f /*sdio a*/ -+ 4 0x6c000000 /*sdhc c*/ -+ 3 0x80000000>; /*I2C*/ -+ amlogic,pins = "BOOT_10","BOOT_11"; -+ amlogic,enable-output=<1>; /* 0:output, 1:input */ -+ amlogic,pullup=<0>; -+ }; -+ -+//$$ MATCH "Remote_pin_match" = "&remote_pins" -+//$$ L2 PROP_U32 2 = "amlogic,setmask" -+//$$ L2 PROP_STR= "amlogic,pins" -+ remote_pins:remote_pin{ -+ amlogic,setmask=<10 0x1>; -+ amlogic,pins="GPIOAO_7"; -+ }; -+ -+//$$ MATCH "wm8960_pin_match" = "&aml_i2s_pins" -+//$$ L2 PROP_U32 2 = "amlogic,setmask" -+//$$ L2 PROP_U32 2 = "amlogic,clrmask" -+//$$ L2 PROP_STR 4 = "amlogic,pins" -+ aml_i2s_pins: aml_i2s_pins{ -+ amlogic,setmask=<9 0xAB0>; -+ amlogic,clrmask=<9 0x440>; -+ amlogic,pins = "GPIOE_0","GPIOE_1","GPIOE_2","GPIOE_3"; -+ }; -+ -+//$$ MATCH "wm8960_pin_match" = "&config_aml_hp_det_pins" -+//$$ L2 PROP_STR= "amlogic,pins" -+//$$ L2 PROP_U32 = "amlogic,pullup" -+ config_aml_hp_det_pins: config_aml_hp_det_pins{ -+ amlogic,pins = "GPIOA_19"; -+ amlogic,pullup=<1>; -+ }; -+ -+//$$ MATCH "dummy_codec_audio_0_pin_match" = "&aml_dummy_codec_pins" -+//$$ L2 PROP_U32 2*2 = "amlogic,setmask" -+//$$ L2 PROP_U32 2 = "amlogic,clrmask" -+//$$ L2 PROP_STR 5 = "amlogic,pins" -+ aml_dummy_codec_pins: aml_dummy_codec_pins{ -+ amlogic,setmask=<9 0x2B0 -+ 3 0x1000000>; -+ amlogic,clrmask=<9 0x380c4e>; -+ amlogic,pins = "GPIOE_1","GPIOE_2","GPIOE_3","GPIOE_4","GPIOC_9"; -+ }; -+//$$ MATCH "Bl_pin_0_match" = "&lcd_backlight_pins" -+//$$ L2 PROP_U32 2 = "amlogic,setmask" -+//$$ L2 PROP_U32 2 = "amlogic,clrmask" -+//$$ L2 PROP_STR = "amlogic,pins" -+ lcd_backlight_pins:lcd_backlight{ -+ amlogic,setmask=<2 0x8>; -+ amlogic,clrmask=<1 0x10000000>; -+ amlogic,pins = "GPIOD_1"; -+ }; -+ lcd_ttl_hvsync_pins_on:lcd_ttl_hvsync_on{ -+ amlogic,setmask=<1 0xc0000>; -+ amlogic,clrmask=<0 0xc00000>; -+ amlogic,pins = "GPIOD_2","GPIOD_3"; -+ }; -+ lcd_ttl_hvsync_pins_off:lcd_ttl_hvsync_off{ -+ amlogic,clrmask=<0 0xc00000 1 0xc0000>; -+ amlogic,pins = "GPIOD_2","GPIOD_3"; -+ amlogic,enable-output=<1>; -+ }; -+ lcd_ttl_de_pins_on:lcd_ttl_de_on{ -+ amlogic,setmask=<1 0x20000>; -+ amlogic,clrmask=<0 0x1000000>; -+ amlogic,pins = "GPIOD_4"; -+ }; -+ lcd_ttl_de_pins_off:lcd_ttl_de_off{ -+ amlogic,clrmask=<0 0x1000000 1 0x20000>; -+ amlogic,pins = "GPIOD_4"; -+ amlogic,enable-output=<1>; -+ }; -+ lcd_ttl_clk_pins_on:lcd_ttl_clk_on{ -+ amlogic,setmask=<1 0x4000>; -+ amlogic,clrmask=<0 0x8000000 1 0x3800>; -+ amlogic,pins = "GPIOD_7"; -+ }; -+ lcd_ttl_clk_pins_off:lcd_ttl_clk_off{ -+ amlogic,clrmask=<0 0x8000000 1 0x7800>; -+ amlogic,pins = "GPIOD_7"; -+ amlogic,enable-output=<1>; -+ }; -+ lcd_ttl_rgb_8bit_pins_on:lcd_ttl_rgb_8bit_on{ -+ amlogic,setmask=<0 0x3f>; -+ amlogic,clrmask=<5 0xff8000>; -+ amlogic,pins = "GPIOB_0","GPIOB_1","GPIOB_2","GPIOB_3","GPIOB_4","GPIOB_5","GPIOB_6","GPIOB_7", //R0~R7 -+ "GPIOB_8","GPIOB_9","GPIOB_10","GPIOB_11","GPIOB_12","GPIOB_13","GPIOB_14","GPIOB_15", //G0~G7 -+ "GPIOB_16","GPIOB_17","GPIOB_18","GPIOB_19","GPIOB_20","GPIOB_21","GPIOB_22","GPIOB_23";//B0~B7 -+ }; -+ lcd_ttl_rgb_8bit_pins_off:lcd_ttl_rgb_8bit_off{ -+ amlogic,clrmask=<0 0x3f 5 0xff8000>; -+ amlogic,pins = "GPIOB_0","GPIOB_1","GPIOB_2","GPIOB_3","GPIOB_4","GPIOB_5","GPIOB_6","GPIOB_7", //R0~R7 -+ "GPIOB_8","GPIOB_9","GPIOB_10","GPIOB_11","GPIOB_12","GPIOB_13","GPIOB_14","GPIOB_15", //G0~G7 -+ "GPIOB_16","GPIOB_17","GPIOB_18","GPIOB_19","GPIOB_20","GPIOB_21","GPIOB_22","GPIOB_23";//B0~B7 -+ amlogic,enable-output=<1>; -+ }; -+ lcd_ttl_rgb_6bit_pins_on:lcd_ttl_rgb_6bit_on{ -+ amlogic,setmask=<0 0x15>; -+ amlogic,clrmask=<5 0xf98000>; -+ amlogic,pins = "GPIOB_2","GPIOB_3","GPIOB_4","GPIOB_5","GPIOB_6","GPIOB_7", //R2~R7 -+ "GPIOB_10","GPIOB_11","GPIOB_12","GPIOB_13","GPIOB_14","GPIOB_15", //G2~G7 -+ "GPIOB_18","GPIOB_19","GPIOB_20","GPIOB_21","GPIOB_22","GPIOB_23"; //B2~B7 -+ }; -+ lcd_ttl_rgb_6bit_pins_off:lcd_ttl_rgb_6bit_off{ -+ amlogic,clrmask=<0 0x15 5 0xf98000>; -+ amlogic,pins = "GPIOB_2","GPIOB_3","GPIOB_4","GPIOB_5","GPIOB_6","GPIOB_7", //R2~R7 -+ "GPIOB_10","GPIOB_11","GPIOB_12","GPIOB_13","GPIOB_14","GPIOB_15", //G2~G7 -+ "GPIOB_18","GPIOB_19","GPIOB_20","GPIOB_21","GPIOB_22","GPIOB_23"; //B2~B7 -+ amlogic,enable-output=<1>; -+ }; -+ -+//$$ MATCH "Camera_pin_match" = "&aml_cam_pins" -+//$$ L2 PROP_U32 2 = "amlogic,setmask" -+//$$ L2 PROP_STR = "amlogic,pins" -+ aml_cam_pins: aml_cam_pins{ -+ amlogic,setmask=<9 0x1000>; -+ amlogic,pins = "GPIOZ_12"; -+ }; -+ -+//$$ MATCH "Spi_pin_0_match" = "&aml_spi_nor_pins" -+//$$ L2 PROP_U32 2 = "amlogic,setmask" -+//$$ L2 PROP_U32 2 = "amlogic,clrmask" -+//$$ L2 PROP_STR 4 = "amlogic,pins" -+ aml_spi_nor_pins: aml_spi_nor_pins{ -+ amlogic,setmask=<5 0xf>; -+ amlogic,clrmask=<2 0x380000>; -+ amlogic,pins = "BOOT_12","BOOT_13","BOOT_14","BOOT_17"; -+ }; -+//$$ MATCH "dvb_p_ts2_pins_match" = "&dvb_p_ts2_pins" -+//$$ L2 PROP_U32 2 = "amlogic,setmask" -+//$$ L2 PROP_U32 8 = "amlogic,clrmask" -+//$$ L2 PROP_STR 12 = "amlogic,pins" -+ dvb_p_ts2_pins: dvb_p_ts2_pins { -+ amlogic,setmask = <3 0xfff>; -+ amlogic,clrmask = <0 0xf 5 0xff00>; -+ amlogic,pins = "GPIOB_0","GPIOB_1","GPIOB_2","GPIOB_3","GPIOB_4","GPIOB_5","GPIOB_6","GPIOB_7","GPIOB_8","GPIOB_9","GPIOB_10","GPIOB_11"; -+ }; -+ -+//$$ MATCH "dvb_s_ts2_pins_match" = "&dvb_s_ts2_pins" -+//$$ L2 PROP_U32 2 = "amlogic,setmask" -+//$$ L2 PROP_U32 6 = "amlogic,clrmask" -+//$$ L2 PROP_STR 5 = "amlogic,pins" -+ dvb_s_ts2_pins: dvb_s_ts2_pins { -+ amlogic,setmask = <3 0xfff>; -+ amlogic,clrmask = <0 0xf 5 0xff00>; -+ amlogic,pins = "GPIOB_0","GPIOB_1","GPIOB_2","GPIOB_3","GPIOB_4","GPIOB_5","GPIOB_6","GPIOB_7","GPIOB_8","GPIOB_9","GPIOB_10","GPIOB_11"; -+ }; -+ -+//$$ MATCH "dvb_p_ts0_pins_match" = "&dvb_p_ts0_pins" -+//$$ L2 PROP_U32 2 = "amlogic,setmask" -+//$$ L2 PROP_U32 8 = "amlogic,clrmask" -+//$$ L2 PROP_STR 12 = "amlogic,pins" -+ dvb_p_ts0_pins: dvb_p_ts0_pins { -+ amlogic,setmask = <3 0xfff>; -+ amlogic,clrmask = <0 0x40 6 0xf80000>; -+ amlogic,pins = "GPIOA_0","GPIOA_1","GPIOA_2","GPIOA_3","GPIOA_4","GPIOA_5","GPIOA_6","GPIOA_7","GPIOA_8","GPIOA_9","GPIOA_10","GPIOA_11"; -+ }; -+ -+//$$ MATCH "dvb_s_ts0_pins_match" = "&dvb_s_ts0_pins" -+//$$ L2 PROP_U32 2 = "amlogic,setmask" -+//$$ L2 PROP_U32 6 = "amlogic,clrmask" -+//$$ L2 PROP_STR 5 = "amlogic,pins" -+ dvb_s_ts0_pins: dvb_s_ts0_pins { -+ amlogic,setmask = <3 0xfff>; -+ amlogic,clrmask = <0 0x40 6 0xF80000>; -+ amlogic,pins = "GPIOA_0","GPIOA_1","GPIOA_2","GPIOA_3","GPIOA_4","GPIOA_5","GPIOA_6","GPIOA_7","GPIOA_8","GPIOA_9","GPIOA_10","GPIOA_11"; -+ }; -+ }; -+/// *************************************************************************************** -+/// - DVB -+//$$ MODULE="DVB" -+ -+//$$ DEVICE="dvb" -+//$$ L2 PROP_STR = "ts2" -+//$$ L2 PROP_U32 = "ts2_invert" -+//$$ L2 PROP_U32 = "ts2_control" -+//$$ L2 PROP_STR 6 = "pinctrl-names" -+//$$ L2 PROP_CHOICE "dvb_p_ts2_pins_match" = "pinctrl-0" -+//$$ L2 PROP_CHOICE "dvb_s_ts2_pins_match" = "pinctrl-1" -+ dvb{ -+ compatible = "amlogic,dvb"; -+ /*"parallel","serial","disable"*/ -+ ts2 = "parallel"; -+ ts2_control = <0>; -+ ts2_invert = <0>; -+ ts0 = "parallel"; -+ ts0_control = <0>; -+ ts0_invert = <0>; -+ pinctrl-names = "p_ts0", "s_ts0","p_ts2", "s_ts2"; -+ pinctrl-0 = <&dvb_p_ts0_pins>; -+ pinctrl-1 = <&dvb_s_ts0_pins>; -+ pinctrl-2 = <&dvb_p_ts2_pins>; -+ pinctrl-3 = <&dvb_s_ts2_pins>; -+ -+ }; -+ -+//$$ DEVICE="dvbfe" -+//$$ L2 PROP_STR = "dtv_demod0" -+//$$ L2 PROP_U32 = "dtv_demod0_i2c_adap_id" -+//$$ L2 PROP_U32 = "dtv_demod0_i2c_addr" -+//$$ L2 PROP_U32 = "dtv_demod0_reset_value" -+//$$ L2 PROP_STR = "dtv_demod0_reset_gpio" -+//$$ L2 PROP_U32 = "fe0_dtv_demod" -+//$$ L2 PROP_U32 = "fe0_ts" -+//$$ L2 PROP_U32 = "fe0_dev" -+//$$ L2 PROP_STR 6 = "pinctrl-names" -+//$$ L2 PROP_CHOICE "dvb_fe_pins_match" = "pinctrl-0" -+ dvbfe{ -+ compatible = "amlogic,dvbfe"; -+ dtv_demod0 = "Avl6211_0"; -+ dtv_demod0_i2c_adap_id = <1>; -+ dtv_demod0_i2c_addr = <0xC0>; -+ dtv_demod0_reset_value = <0>; -+ dtv_demod0_reset_gpio = "GPIOD_8"; -+ fe0_dtv_demod = <0>; -+ fe0_ts = <2>; -+ fe0_dev = <0>; -+ dtv_demod1 = "Avl6211_1"; -+ dtv_demod1_i2c_adap_id = <2>; -+ dtv_demod1_i2c_addr = <0xC0>; -+ dtv_demod1_reset_value = <0>; -+ dtv_demod1_reset_gpio = "GPIOD_8"; -+ fe1_dtv_demod = <1>; -+ fe1_ts = <0>; -+ fe1_dev = <1>; -+ }; -+}; /* end of / */ -+ ---- a/arch/arm/boot/dts/amlogic/meson6_g18.dtd 2015-01-12 00:19:11.729405484 +0100 -+++ b/arch/arm/boot/dts/amlogic/meson6_g18.dtd 2015-01-12 00:23:29.396031497 +0100 -@@ -1396,5 +1396,20 @@ - fe1_ts = <0>; - fe1_dev = <1>; - }; -+ -+/// *************************************************************************************** -+/// - DISP&MM-A/V Amvideocap -+//$$ MODULE = "DISP&MM-Amvideocap" -+//$$ DEVICE="amvideocap" -+//$$ L2 PROP_STR = "status" -+//$$ L3 PROP_U32 4 ="reg" -+ amvideocap{ -+ compatible = "amlogic,amvideocap"; -+ dev_name = "amvideocap.0"; -+ status = "okay"; -+ reserve-memory = <0x00a00000>; // 1920 * 1088 * 4 = 8,355,840 -+ reserve-iomap = "true"; -+ }; -+ - }; /* end of / */ - ---- a/arch/arm/boot/dts/amlogic/meson6_g18.dtd.orig 2015-01-18 14:59:49.171659096 +0100 -+++ b/arch/arm/boot/dts/amlogic/meson6_g18.dtd 2015-01-18 14:59:59.147658701 +0100 -@@ -1428,5 +1428,10 @@ - reserve-iomap = "true"; - }; - -+ powerled{ -+ compatible = "amlogic,wetekplay-led"; -+ label = "wetek:blue:powerled"; -+ }; -+ - }; /* end of / */ -