mirror of
https://github.com/LibreELEC/LibreELEC.tv.git
synced 2025-07-24 11:16:51 +00:00
commit
9427dd238d
@ -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"
|
||||
|
@ -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)
|
||||
|
Binary file not shown.
@ -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
|
||||
@ -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
|
||||
|
@ -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=""
|
||||
|
@ -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;
|
@ -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);
|
||||
+
|
||||
+
|
||||
|
@ -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
|
File diff suppressed because it is too large
Load Diff
@ -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);
|
@ -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;
|
||||
|
@ -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:
|
Loading…
x
Reference in New Issue
Block a user