Base OS functional
Trackpad working, setup install script, wifi works. Speakers work. TODO: headphones, keybindings
This commit is contained in:
		
							parent
							
								
									23e05d6af6
								
							
						
					
					
						commit
						7993a9ef53
					
				
							
								
								
									
										14
									
								
								Install.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								Install.sh
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,14 @@ | ||||
| #!/bin/sh -xe | ||||
| 
 | ||||
| #Setup locales | ||||
| apt install -y locales | ||||
| #Install xfce, wicd | ||||
| apt install -y task-xfce-desktop wicd wicd-curses wicd-gtk xserver-xorg-input-synaptics | ||||
| #Copy in acpi, pulse audio, trackpad settings, funtion key settings | ||||
| cp -rf /os_configs/default.pa /etc/pulse/default.pa | ||||
| mkdir /etc/acpi | ||||
| cp -rf /os_configs/default.sh /etc/acpi/default.sh | ||||
| mkdir /etc/X11/xorg.conf.d/ | ||||
| cp -rf /os_configs/50-synaptics.conf /etc/X11/xorg.conf.d/ | ||||
| 
 | ||||
| reboot | ||||
| @ -8,8 +8,8 @@ KVER=4.17.2 | ||||
| outmnt=$(mktemp -d -p `pwd`) | ||||
| inmnt=$(mktemp -d -p `pwd`) | ||||
| 
 | ||||
| outdev=/dev/loop6 | ||||
| indev=/dev/loop7 | ||||
| outdev=/dev/loop4 #CHANGE BEFORE COMMIT | ||||
| indev=/dev/loop5 #CHANGE BACK BEFORE COMMIT | ||||
| 
 | ||||
| #A hacky way to ensure the loops are properly unmounted and the temp files are properly deleted. | ||||
| #Without this, a reboot is required to properly clean the loop devices and ensure a clean build  | ||||
| @ -61,25 +61,31 @@ create_image debian-stretch-c201-libre-2GB.img $outdev 50M 40 $outmnt | ||||
| #TODO: Try without the variant and include flags | ||||
| # Do the initial unpack phase of bootstrapping only, for example if the target architecture does not match the host architecture. A copy of debootstrap sufficient for completing the bootstrap process will be installed as /debootstrap/debootstrap in the target filesystem. You can run it with the --second-stage option to complete the bootstrapping process. | ||||
| export LC_ALL="en_US.UTF-8" #Change this as necessary if not US | ||||
| export DEBIAN_FRONTEND=noninteractive | ||||
| qemu-debootstrap --arch armhf stretch --include locales $outmnt http://deb.debian.org/debian | ||||
| chroot $outmnt passwd -d root | ||||
| echo -n debsus > $outmnt/etc/hostname | ||||
| cp -R os_configs/ $outmnt/os_configs/ | ||||
| cp Install.sh $outmnt/Install.sh | ||||
| ls $outmnt/ | ||||
| chmod +x $outmnt/os_configs/default.sh | ||||
| chmod +x $outmnt/Install.sh | ||||
| #install -D -m 644 80disable-recommends $outmnt/etc/apt/apt.conf.d/80disable-recommends #This should fix the issue of crda being installed but unconfigured causing regulatory.db firmware loading errors in dmesg | ||||
| #cp -f /etc/resolv.conf $outmnt/etc/ | ||||
| cp /etc/hosts $outmnt/etc/ #This is what https://wiki.debian.org/EmDebian/CrossDebootstrap suggests | ||||
| cp sources.list $outmount/etc/apt/sources.list | ||||
| cp /etc/locale.gen $outmnt/etc/ | ||||
| chroot $outmnt locale-gen | ||||
| # chroot $outmnt locale-gen | ||||
| chroot $outmnt apt update | ||||
| chroot $outmnt apt install -y udev kmod net-tools inetutils-ping traceroute iproute2 isc-dhcp-client wpasupplicant iw alsa-utils cgpt vim-tiny less psmisc netcat-openbsd ca-certificates bzip2 xz-utils unscd ifupdown nano apt-utils python python-urwid pciutils usbutils | ||||
| chroot $outmnt apt install -y initscripts udev kmod net-tools inetutils-ping traceroute iproute2 isc-dhcp-client wpasupplicant iw alsa-utils cgpt vim-tiny less psmisc netcat-openbsd ca-certificates bzip2 xz-utils ifupdown nano apt-utils python python-urwid pciutils usbutils | ||||
| chroot $outmnt apt-get autoremove --purge | ||||
| chroot $outmnt apt-get clean | ||||
| chroot $outmnt apt-get install -d -y wicd-daemon wicd wicd-curses | ||||
| #sed -i s/^[3-6]/\#\&/g $outmnt/etc/inittab | ||||
| chroot $outmnt apt-get install -y -d locales task-xfce-desktop wicd-daemon wicd wicd-curses wicd-gtk xserver-xorg-input-synaptics | ||||
| #sed -i s/'enable-cache            hosts   no'/'enable-cache            hosts   yes'/ -i $outmnt/etc/nscd.conf | ||||
| #rm -f $outmnt/etc/resolv.conf | ||||
| rm -rf $outmnt/etc/hosts #This is what https://wiki.debian.org/EmDebian/CrossDebootstrap suggests | ||||
| 
 | ||||
| 
 | ||||
| # put the kernel in the kernel partition, modules in /lib/modules and AR9271 | ||||
| # firmware in /lib/firmware | ||||
| dd if=linux-$KVER/vmlinux.kpart of=${outdev}p1 conv=notrunc | ||||
| @ -87,10 +93,10 @@ make -C linux-$KVER ARCH=arm INSTALL_MOD_PATH=$outmnt modules_install | ||||
| rm -f $outmnt/lib/modules/3.14.0/{build,source} | ||||
| install -D -m 644 open-ath9k-htc-firmware/target_firmware/htc_9271.fw $outmnt/lib/firmware/ath9k_htc/htc_9271-1.4.0.fw | ||||
| 
 | ||||
| # create a 16GB image | ||||
| create_image debian-stretch-c201-libre-16GB.img $indev 512 30785536 $inmnt | ||||
| # create a 15GB image | ||||
| create_image debian-stretch-c201-libre-15GB.img $indev 512 30777343 $inmnt | ||||
| 
 | ||||
| # copy the kernel and / of the 2GB image to the 16GB one | ||||
| # copy the kernel and / of the 2GB image to the 15GB one | ||||
| dd if=${outdev}p1 of=${indev}p1 conv=notrunc | ||||
| cp -a $outmnt/* $inmnt/ | ||||
| 
 | ||||
| @ -98,8 +104,8 @@ umount -l $inmnt | ||||
| rmdir $inmnt | ||||
| losetup -d $indev | ||||
| 
 | ||||
| # move the 16GB image inside the 2GB one | ||||
| cp -f debian-stretch-c201-libre-16GB.img $outmnt/ | ||||
| # move the 15GB image inside the 2GB one | ||||
| cp -f debian-stretch-c201-libre-15GB.img $outmnt/ | ||||
| echo "DONE!" | ||||
| cleanup | ||||
| 
 | ||||
|  | ||||
| @ -11,9 +11,9 @@ KVER=4.17.2 | ||||
| cd linux-$KVER | ||||
| make clean | ||||
| make mrproper | ||||
| # rm -rf drivers/usb/dwc2 | ||||
| # ln -s ../../../chromeos-3.14/drivers/usb/dwc2 drivers/usb/ | ||||
| # patch -p 1 < ../chromeos-dwc2-glue.patch | ||||
| #Apply all of the rockMyy patches that make sense | ||||
| # git apply ../patches/kernel/* | ||||
| # git apply ../patches/DTS/* | ||||
| # reset the minor version number, so out-of-tree drivers continue to work after | ||||
| # a kernel upgrade | ||||
| sed s/'SUBLEVEL = .*'/'SUBLEVEL = 0'/ -i Makefile | ||||
| @ -32,12 +32,6 @@ vbutil_kernel --pack vmlinux.kpart \ | ||||
|               --bootloader bootloader.bin | ||||
| cd .. | ||||
| 
 | ||||
| #TODO: Should be able to just include this in /lib/firmware of the target os, and it should be loaded.  | ||||
| # or Should be able to include firmware in kernel through kernel config, external firmware. | ||||
| # Then the firmware doesn't have to be included in the target fs /lib/firmware | ||||
| 
 | ||||
| # Either of these should fix the error about the kernel not being able to load the firmware, | ||||
| # as it is looking for the propriatary blob and stumbles upon this one in /lib/firmware right now | ||||
| 
 | ||||
| # build AR9271 firmware | ||||
| [ ! -d open-ath9k-htc-firmware ] && git clone --depth 1 https://github.com/qca/open-ath9k-htc-firmware.git | ||||
|  | ||||
| @ -1,150 +0,0 @@ | ||||
| diff -rup linux-4.9.95-orig/arch/arm/boot/dts/rk3288.dtsi linux-4.9.95/arch/arm/boot/dts/rk3288.dtsi
 | ||||
| --- linux-4.9.95-orig/arch/arm/boot/dts/rk3288.dtsi	2018-04-20 09:21:08.000000000 +0300
 | ||||
| +++ linux-4.9.95/arch/arm/boot/dts/rk3288.dtsi	2018-04-21 17:56:26.360024274 +0300
 | ||||
| @@ -582,6 +582,9 @@
 | ||||
|  		dr_mode = "host"; | ||||
|  		phys = <&usbphy2>; | ||||
|  		phy-names = "usb2-phy"; | ||||
| +		resets = <&cru SRST_USBHOST1_PHY>;
 | ||||
| +		reset-names = "phy-full-reset";
 | ||||
| +		snps,need-phy-full-reset-on-wake;
 | ||||
|  		status = "disabled"; | ||||
|  	}; | ||||
|   | ||||
| diff -rup linux-4.9.95-orig/arch/arm/boot/dts/rk3288-veyron.dtsi linux-4.9.95/arch/arm/boot/dts/rk3288-veyron.dtsi
 | ||||
| --- linux-4.9.95-orig/arch/arm/boot/dts/rk3288-veyron.dtsi	2018-04-20 09:21:08.000000000 +0300
 | ||||
| +++ linux-4.9.95/arch/arm/boot/dts/rk3288-veyron.dtsi	2018-04-21 17:47:25.796011427 +0300
 | ||||
| @@ -429,6 +429,7 @@
 | ||||
|   | ||||
|  &usb_host1 { | ||||
|  	status = "okay"; | ||||
| +	snps,need-phy-for-wake;
 | ||||
|  }; | ||||
|   | ||||
|  &usb_otg { | ||||
| @@ -437,6 +438,7 @@
 | ||||
|  	assigned-clocks = <&cru SCLK_USBPHY480M_SRC>; | ||||
|  	assigned-clock-parents = <&usbphy0>; | ||||
|  	dr_mode = "host"; | ||||
| +	snps,need-phy-for-wake;
 | ||||
|  }; | ||||
|   | ||||
|  &vopb { | ||||
| diff -rup linux-4.9.95-orig/drivers/base/dd.c linux-4.9.95/drivers/base/dd.c
 | ||||
| --- linux-4.9.95-orig/drivers/base/dd.c	2018-04-20 09:21:08.000000000 +0300
 | ||||
| +++ linux-4.9.95/drivers/base/dd.c	2018-04-21 13:01:30.280037034 +0300
 | ||||
| @@ -523,6 +523,9 @@ int driver_probe_device(struct device_dr
 | ||||
|   | ||||
|  bool driver_allows_async_probing(struct device_driver *drv) | ||||
|  { | ||||
| +	if (drv->async_probe)
 | ||||
| +		return true;
 | ||||
| +
 | ||||
|  	switch (drv->probe_type) { | ||||
|  	case PROBE_PREFER_ASYNCHRONOUS: | ||||
|  		return true; | ||||
| diff -rup linux-4.9.95-orig/drivers/usb/common/common.c linux-4.9.95/drivers/usb/common/common.c
 | ||||
| --- linux-4.9.95-orig/drivers/usb/common/common.c	2018-04-20 09:21:08.000000000 +0300
 | ||||
| +++ linux-4.9.95/drivers/usb/common/common.c	2018-04-21 13:36:51.184087441 +0300
 | ||||
| @@ -105,6 +105,30 @@ static const char *const usb_dr_modes[]
 | ||||
|  	[USB_DR_MODE_OTG]		= "otg", | ||||
|  }; | ||||
|   | ||||
| +/**
 | ||||
| + * of_usb_get_dr_mode - Get dual role mode for given device_node
 | ||||
| + * @np:	Pointer to the given device_node
 | ||||
| + *
 | ||||
| + * The function gets phy interface string from property 'dr_mode',
 | ||||
| + * and returns the correspondig enum usb_dr_mode
 | ||||
| + */
 | ||||
| +enum usb_dr_mode of_usb_get_dr_mode(struct device_node *np)
 | ||||
| +{
 | ||||
| +	const char *dr_mode;
 | ||||
| +	int err, i;
 | ||||
| +
 | ||||
| +	err = of_property_read_string(np, "dr_mode", &dr_mode);
 | ||||
| +	if (err < 0)
 | ||||
| +		return USB_DR_MODE_UNKNOWN;
 | ||||
| +
 | ||||
| +	for (i = 0; i < ARRAY_SIZE(usb_dr_modes); i++)
 | ||||
| +		if (!strcmp(dr_mode, usb_dr_modes[i]))
 | ||||
| +			return i;
 | ||||
| +
 | ||||
| +	return USB_DR_MODE_UNKNOWN;
 | ||||
| +}
 | ||||
| +EXPORT_SYMBOL_GPL(of_usb_get_dr_mode);
 | ||||
| +
 | ||||
|  static enum usb_dr_mode usb_get_dr_mode_from_string(const char *str) | ||||
|  { | ||||
|  	int ret; | ||||
| diff -rup linux-4.9.95-orig/drivers/usb/core/hub.c linux-4.9.95/drivers/usb/core/hub.c
 | ||||
| --- linux-4.9.95-orig/drivers/usb/core/hub.c	2018-04-20 09:21:08.000000000 +0300
 | ||||
| +++ linux-4.9.95/drivers/usb/core/hub.c	2018-04-21 17:58:20.456026986 +0300
 | ||||
| @@ -3063,13 +3063,14 @@ static int usb_disable_remote_wakeup(str
 | ||||
|  } | ||||
|   | ||||
|  /* Count of wakeup-enabled devices at or below udev */ | ||||
| -static unsigned wakeup_enabled_descendants(struct usb_device *udev)
 | ||||
| +unsigned usb_wakeup_enabled_descendants(struct usb_device *udev)
 | ||||
|  { | ||||
|  	struct usb_hub *hub = usb_hub_to_struct_hub(udev); | ||||
|   | ||||
|  	return udev->do_remote_wakeup + | ||||
|  			(hub ? hub->wakeup_enabled_descendants : 0); | ||||
|  } | ||||
| +EXPORT_SYMBOL_GPL(usb_wakeup_enabled_descendants);
 | ||||
|   | ||||
|  /* | ||||
|   * usb_port_suspend - suspend a usb device's upstream port | ||||
| @@ -3178,7 +3179,7 @@ int usb_port_suspend(struct usb_device *
 | ||||
|  	 * Therefore we will turn on the suspend feature if udev or any of its | ||||
|  	 * descendants is enabled for remote wakeup. | ||||
|  	 */ | ||||
| -	else if (PMSG_IS_AUTO(msg) || wakeup_enabled_descendants(udev) > 0)
 | ||||
| +	else if (PMSG_IS_AUTO(msg) || usb_wakeup_enabled_descendants(udev) > 0)
 | ||||
|  		status = set_port_feature(hub->hdev, port1, | ||||
|  				USB_PORT_FEAT_SUSPEND); | ||||
|  	else { | ||||
| @@ -3581,7 +3582,7 @@ static int hub_suspend(struct usb_interf
 | ||||
|  		} | ||||
|  		if (udev) | ||||
|  			hub->wakeup_enabled_descendants += | ||||
| -					wakeup_enabled_descendants(udev);
 | ||||
| +					usb_wakeup_enabled_descendants(udev);
 | ||||
|  	} | ||||
|   | ||||
|  	if (hdev->do_remote_wakeup && hub->quirk_check_port_auto_suspend) { | ||||
| diff -rup linux-4.9.95-orig/include/linux/device.h linux-4.9.95/include/linux/device.h
 | ||||
| --- linux-4.9.95-orig/include/linux/device.h	2018-04-20 09:21:08.000000000 +0300
 | ||||
| +++ linux-4.9.95/include/linux/device.h	2018-04-21 13:06:59.172044851 +0300
 | ||||
| @@ -270,6 +270,7 @@ struct device_driver {
 | ||||
|   | ||||
|  	bool suppress_bind_attrs;	/* disables bind/unbind via sysfs */ | ||||
|  	enum probe_type probe_type; | ||||
| +	bool async_probe;
 | ||||
|   | ||||
|  	const struct of_device_id	*of_match_table; | ||||
|  	const struct acpi_device_id	*acpi_match_table; | ||||
| diff -rup linux-4.9.95-orig/include/linux/of.h linux-4.9.95/include/linux/of.h
 | ||||
| --- linux-4.9.95-orig/include/linux/of.h	2018-04-20 09:21:08.000000000 +0300
 | ||||
| +++ linux-4.9.95/include/linux/of.h	2018-04-21 18:03:18.492034069 +0300
 | ||||
| @@ -521,6 +521,8 @@ const char *of_prop_next_string(struct p
 | ||||
|   | ||||
|  bool of_console_check(struct device_node *dn, char *name, int index); | ||||
|   | ||||
| +enum usb_dr_mode of_usb_get_dr_mode(struct device_node *np);
 | ||||
| +
 | ||||
|  #else /* CONFIG_OF */ | ||||
|   | ||||
|  static inline void of_core_init(void) | ||||
| diff -rup linux-4.9.95-orig/include/linux/usb/hcd.h linux-4.9.95/include/linux/usb/hcd.h
 | ||||
| --- linux-4.9.95-orig/include/linux/usb/hcd.h	2018-04-20 09:21:08.000000000 +0300
 | ||||
| +++ linux-4.9.95/include/linux/usb/hcd.h	2018-04-21 18:02:33.620033003 +0300
 | ||||
| @@ -640,6 +640,7 @@ extern wait_queue_head_t usb_kill_urb_qu
 | ||||
|  #define usb_endpoint_out(ep_dir)	(!((ep_dir) & USB_DIR_IN)) | ||||
|   | ||||
|  #ifdef CONFIG_PM | ||||
| +extern unsigned usb_wakeup_enabled_descendants(struct usb_device *udev);
 | ||||
|  extern void usb_root_hub_lost_power(struct usb_device *rhdev); | ||||
|  extern int hcd_bus_suspend(struct usb_device *rhdev, pm_message_t msg); | ||||
|  extern int hcd_bus_resume(struct usb_device *rhdev, pm_message_t msg); | ||||
							
								
								
									
										7
									
								
								config
									
									
									
									
									
								
							
							
						
						
									
										7
									
								
								config
									
									
									
									
									
								
							| @ -1468,7 +1468,7 @@ CONFIG_MOUSE_ELAN_I2C_I2C=y | ||||
| # CONFIG_MOUSE_ELAN_I2C_SMBUS is not set | ||||
| # CONFIG_MOUSE_VSXXXAA is not set | ||||
| # CONFIG_MOUSE_GPIO is not set | ||||
| # CONFIG_MOUSE_SYNAPTICS_I2C is not set | ||||
| CONFIG_MOUSE_SYNAPTICS_I2C=y | ||||
| # CONFIG_MOUSE_SYNAPTICS_USB is not set | ||||
| # CONFIG_INPUT_JOYSTICK is not set | ||||
| # CONFIG_INPUT_TABLET is not set | ||||
| @ -2060,7 +2060,7 @@ CONFIG_ROCKCHIP_ANALOGIX_DP=y | ||||
| CONFIG_ROCKCHIP_DW_HDMI=y | ||||
| CONFIG_ROCKCHIP_DW_MIPI_DSI=y | ||||
| CONFIG_ROCKCHIP_INNO_HDMI=y | ||||
| CONFIG_ROCKCHIP_LVDS=y | ||||
| # CONFIG_ROCKCHIP_LVDS is not set | ||||
| # CONFIG_DRM_UDL is not set | ||||
| # CONFIG_DRM_ARMADA is not set | ||||
| # CONFIG_DRM_RCAR_DW_HDMI is not set | ||||
| @ -2222,7 +2222,8 @@ CONFIG_SND_SOC=y | ||||
| CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=y | ||||
| # CONFIG_SND_SOC_AMD_ACP is not set | ||||
| # CONFIG_SND_ATMEL_SOC is not set | ||||
| # CONFIG_SND_DESIGNWARE_I2S is not set | ||||
| CONFIG_SND_DESIGNWARE_I2S=y | ||||
| # CONFIG_SND_DESIGNWARE_PCM is not set | ||||
| 
 | ||||
| # | ||||
| # SoC Audio for Freescale CPUs | ||||
|  | ||||
							
								
								
									
										4043
									
								
								config.handpicked
									
									
									
									
									
								
							
							
						
						
									
										4043
									
								
								config.handpicked
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										2452
									
								
								debootstraperror.log
									
									
									
									
									
								
							
							
						
						
									
										2452
									
								
								debootstraperror.log
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										87
									
								
								os_configs/50-synaptics.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										87
									
								
								os_configs/50-synaptics.conf
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,87 @@ | ||||
| # Example xorg.conf.d snippet that assigns the touchpad driver | ||||
| # to all touchpads. See xorg.conf.d(5) for more information on | ||||
| # InputClass. | ||||
| # DO NOT EDIT THIS FILE, your distribution will likely overwrite | ||||
| # it when updating. Copy (and rename) this file into | ||||
| # /etc/X11/xorg.conf.d first. | ||||
| # Additional options may be added in the form of | ||||
| #   Option "OptionName" "value" | ||||
| # | ||||
| Section "InputClass" | ||||
|         Identifier "touchpad catchall" | ||||
|         Driver "synaptics" | ||||
|         MatchIsTouchpad "on" | ||||
| # This option is recommend on all Linux systems using evdev, but cannot be | ||||
| # enabled by default. See the following link for details: | ||||
| # http://who-t.blogspot.com/2010/11/how-to-ignore-configuration-errors.html | ||||
| #       MatchDevicePath "/dev/input/event*" | ||||
| EndSection | ||||
| 
 | ||||
| Section "InputClass" | ||||
|         Identifier "touchpad ignore duplicates" | ||||
|         MatchIsTouchpad "on" | ||||
|         MatchOS "Linux" | ||||
|         MatchDevicePath "/dev/input/mouse*" | ||||
|         Option "Ignore" "on" | ||||
| EndSection | ||||
| 
 | ||||
| # This option enables the bottom right corner to be a right button on clickpads | ||||
| # and the right and middle top areas to be right / middle buttons on clickpads | ||||
| # with a top button area. | ||||
| # This option is only interpreted by clickpads. | ||||
| Section "InputClass" | ||||
|         Identifier "Default clickpad buttons" | ||||
|         MatchDriver "synaptics" | ||||
|         # FIXME: describe these better. | ||||
|         # these options are not adjustable via synclient | ||||
|         Option "SoftButtonAreas" "50% 0 82% 0 0 0 0 0" | ||||
| #       Option "SoftButtonAreas" "0 50% 82% 0 0 0 0 0"  | ||||
| #       Option "SecondarySoftButtonAreas" "0 42% 0 0 15% 42% 58% 0 15%" | ||||
|         Option "SecondarySoftButtonAreas" "0 42% 0 0 15% 42% 58% 0 15%" | ||||
| 
 | ||||
|         # the rest of this is adjustable via synclient. | ||||
| 
 | ||||
|         # Enable 1, 2, and 3 finger clicking as left, right, and middle click, respectively. | ||||
|         Option "TapButton1" "1" | ||||
|         Option "TapButton2" "3" | ||||
|         Option "TapButton3" "2" | ||||
| 
 | ||||
|         # Calm the pad down while clicking. | ||||
|         Option "VertHysteresis" "50" | ||||
|         Option "HorizHysteresis" "50" | ||||
| 
 | ||||
|         # Drag Lock | ||||
|         Option "LockedDrags" "1" | ||||
| 
 | ||||
|         # Tap to click thresholds. | ||||
|         Option "FingerLow" "35" | ||||
|         Option "FingerHigh" "40" | ||||
| 
 | ||||
|         # Prevent accidental clicks | ||||
|         Option "PalmDetect" "1" | ||||
|         Option "PalmMinWidth" "10" | ||||
|         Option "PalmMinZ" "80" | ||||
| 
 | ||||
|         # scrolling. | ||||
|         Option "VertTwoFingerScroll" "1" | ||||
| #       Option "VertScrollDelta" "-90" | ||||
|         Option "VertScrollDelta" "90" | ||||
|         Option "HorizTwoFingerScroll" "1" | ||||
|         Option "HorizScrollDelta" "-90" | ||||
| 
 | ||||
|         # Aceleration | ||||
|         Option "MinSpeed" "0.5" | ||||
|         Option "MaxSpeed" "0.75" | ||||
| 
 | ||||
|         Option "AccelerationProfile" "2" | ||||
|         Option "ConstantDeceleration" "4" | ||||
| EndSection | ||||
| 
 | ||||
| # This option disables software buttons on Apple touchpads. | ||||
| # This option is only interpreted by clickpads. | ||||
| Section "InputClass" | ||||
|         Identifier "Disable clickpad buttons on Apple touchpads" | ||||
|         MatchProduct "Apple|bcm5974" | ||||
|         MatchDriver "synaptics" | ||||
|         Option "SoftButtonAreas" "0 0 0 0 0 0 0 0" | ||||
| EndSection | ||||
							
								
								
									
										142
									
								
								os_configs/default.pa
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										142
									
								
								os_configs/default.pa
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,142 @@ | ||||
| #!/usr/bin/pulseaudio -nF | ||||
| # | ||||
| # This file is part of PulseAudio. | ||||
| # | ||||
| # PulseAudio is free software; you can redistribute it and/or modify it | ||||
| # under the terms of the GNU Lesser General Public License as published by | ||||
| # the Free Software Foundation; either version 2 of the License, or | ||||
| # (at your option) any later version. | ||||
| # | ||||
| # PulseAudio is distributed in the hope that it will be useful, but | ||||
| # WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||||
| # General Public License for more details. | ||||
| # | ||||
| # You should have received a copy of the GNU Lesser General Public License | ||||
| # along with PulseAudio; if not, see <http://www.gnu.org/licenses/>. | ||||
| 
 | ||||
| # This startup script is used only if PulseAudio is started per-user | ||||
| # (i.e. not in system mode) | ||||
| 
 | ||||
| .fail | ||||
| 
 | ||||
| ### Automatically restore the volume of streams and devices | ||||
| load-module module-device-restore | ||||
| load-module module-stream-restore | ||||
| load-module module-card-restore | ||||
| 
 | ||||
| ### Automatically augment property information from .desktop files | ||||
| ### stored in /usr/share/application | ||||
| load-module module-augment-properties | ||||
| 
 | ||||
| ### Should be after module-*-restore but before module-*-detect | ||||
| load-module module-switch-on-port-available | ||||
| 
 | ||||
| ### Load audio drivers statically | ||||
| ### (it's probably better to not load these drivers manually, but instead | ||||
| ### use module-udev-detect -- see below -- for doing this automatically) | ||||
| #load-module module-alsa-sink | ||||
| #load-module module-alsa-source device=hw:1,0 | ||||
| #load-module module-oss device="/dev/dsp" sink_name=output source_name=input | ||||
| #load-module module-oss-mmap device="/dev/dsp" sink_name=output source_name=input | ||||
| #load-module module-null-sink | ||||
| #load-module module-pipe-sink | ||||
| 
 | ||||
| ### Automatically load driver modules depending on the hardware available | ||||
| .ifexists module-udev-detect.so | ||||
| load-module module-udev-detect | ||||
| .else | ||||
| ### Use the static hardware detection module (for systems that lack udev support) | ||||
| load-module module-detect | ||||
| .endif | ||||
| 
 | ||||
| ### Automatically connect sink and source if JACK server is present | ||||
| .ifexists module-jackdbus-detect.so | ||||
| .nofail | ||||
| load-module module-jackdbus-detect channels=2 | ||||
| .fail | ||||
| .endif | ||||
| 
 | ||||
| ### Automatically load driver modules for Bluetooth hardware | ||||
| .ifexists module-bluetooth-policy.so | ||||
| load-module module-bluetooth-policy | ||||
| .endif | ||||
| 
 | ||||
| .ifexists module-bluetooth-discover.so | ||||
| load-module module-bluetooth-discover | ||||
| .endif | ||||
| 
 | ||||
| ### Load several protocols | ||||
| .ifexists module-esound-protocol-unix.so | ||||
| load-module module-esound-protocol-unix | ||||
| .endif | ||||
| load-module module-native-protocol-unix | ||||
| 
 | ||||
| ### Network access (may be configured with paprefs, so leave this commented | ||||
| ### here if you plan to use paprefs) | ||||
| #load-module module-esound-protocol-tcp | ||||
| #load-module module-native-protocol-tcp | ||||
| #load-module module-zeroconf-publish | ||||
| 
 | ||||
| ### Load the RTP receiver module (also configured via paprefs, see above) | ||||
| #load-module module-rtp-recv | ||||
| 
 | ||||
| ### Load the RTP sender module (also configured via paprefs, see above) | ||||
| #load-module module-null-sink sink_name=rtp format=s16be channels=2 rate=44100 sink_properties="device.description='RTP Multicast Sink'" | ||||
| #load-module module-rtp-send source=rtp.monitor | ||||
| 
 | ||||
| ### Load additional modules from GConf settings. This can be configured with the paprefs tool. | ||||
| ### Please keep in mind that the modules configured by paprefs might conflict with manually | ||||
| ### loaded modules. | ||||
| .ifexists module-gconf.so | ||||
| .nofail | ||||
| load-module module-gconf | ||||
| .fail | ||||
| .endif | ||||
| 
 | ||||
| ### Automatically restore the default sink/source when changed by the user | ||||
| ### during runtime | ||||
| ### NOTE: This should be loaded as early as possible so that subsequent modules | ||||
| ### that look up the default sink/source get the right value | ||||
| load-module module-default-device-restore | ||||
| 
 | ||||
| ### Automatically move streams to the default sink if the sink they are | ||||
| ### connected to dies, similar for sources | ||||
| load-module module-rescue-streams | ||||
| 
 | ||||
| ### Make sure we always have a sink around, even if it is a null sink. | ||||
| load-module module-always-sink | ||||
| 
 | ||||
| ### Honour intended role device property | ||||
| load-module module-intended-roles | ||||
| 
 | ||||
| ### Automatically suspend sinks/sources that become idle for too long | ||||
| load-module module-suspend-on-idle | ||||
| 
 | ||||
| ### If autoexit on idle is enabled we want to make sure we only quit | ||||
| ### when no local session needs us anymore. | ||||
| .ifexists module-console-kit.so | ||||
| load-module module-console-kit | ||||
| .endif | ||||
| .ifexists module-systemd-login.so | ||||
| load-module module-systemd-login | ||||
| .endif | ||||
| 
 | ||||
| ### Enable positioned event sounds | ||||
| load-module module-position-event-sounds | ||||
| 
 | ||||
| ### Cork music/video streams when a phone stream is active | ||||
| load-module module-role-cork | ||||
| 
 | ||||
| ### Modules to allow autoloading of filters (such as echo cancellation) | ||||
| ### on demand. module-filter-heuristics tries to determine what filters | ||||
| ### make sense, and module-filter-apply does the heavy-lifting of | ||||
| ### loading modules and rerouting streams. | ||||
| load-module module-filter-heuristics | ||||
| load-module module-filter-apply | ||||
| 
 | ||||
| ### Make some devices default | ||||
| #set-default-sink output | ||||
| #set-default-source input | ||||
| load-module module-alsa-sink device=sysdefault | ||||
| load-module module-alsa-source device=sysdefault | ||||
							
								
								
									
										59
									
								
								os_configs/default.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										59
									
								
								os_configs/default.sh
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,59 @@ | ||||
| #!/bin/sh | ||||
| # /etc/acpi/default.sh | ||||
| # Default acpi script that takes an entry for all actions | ||||
| 
 | ||||
| set $* | ||||
| 
 | ||||
| group=${1%%/*} | ||||
| action=${1#*/} | ||||
| device=$2 | ||||
| id=$3 | ||||
| value=$4 | ||||
| 
 | ||||
| log_unhandled() { | ||||
| 	logger "ACPI event unhandled: $*" | ||||
| } | ||||
| 
 | ||||
| case "$group" in | ||||
| 	jack) | ||||
| 		case "$id" in | ||||
| 			'plug') | ||||
| 				amixer -D hw:0 cset name='Left Speaker Mixer Left DAC Switch' off | ||||
| 				amixer -D hw:0 cset name='Right Speaker Mixer Right DAC Switch' off | ||||
| 				amixer -D hw:0 cset name='Headphone Switch Left' on | ||||
|                                 amixer -D hw:0 cset name='Headphone Switch Right' on | ||||
| 				;; | ||||
| 			'unplug') | ||||
| 				amixer -D hw:0 cset name='Left Speaker Mixer Left DAC Switch' on | ||||
|                                 amixer -D hw:0 cset name='Right Speaker Mixer Right DAC Switch' on | ||||
| 				amixer -D hw:0 cset name='Headphone Switch Left' off | ||||
|                                 amixer -D hw:0 cset name='Headphone Switch Right' off | ||||
| 				;; | ||||
| 			*) uhd $+;; | ||||
| 		esac | ||||
| 		log_unhandled $* | ||||
| 	;; | ||||
| 	button) | ||||
| 		case "$action" in | ||||
| 			#power) | ||||
| 					#pm-suspend | ||||
| 			#		log_unhandled $* | ||||
| 			#	;; | ||||
| 
 | ||||
| 			lid) | ||||
| 				case "$id" in | ||||
| 					close) if [ $(cat /sys/class/power_supply/gpio-charger/online) -eq 0 ]; then | ||||
|                                                         pm-suspend | ||||
|                                                 fi;; | ||||
| 					open) :;; | ||||
| 					*) uhd $*;; | ||||
| 				esac | ||||
| 				log_unhandled $* | ||||
| 				;; | ||||
| 
 | ||||
| 			*)	log_unhandled $* ;; | ||||
| 		esac | ||||
| 		;; | ||||
| 
 | ||||
| 	*)	log_unhandled $* ;; | ||||
| esac | ||||
							
								
								
									
										61
									
								
								patches/DTS/0006-ARM-DTSI-rk3288-Missing-GRF-handles.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										61
									
								
								patches/DTS/0006-ARM-DTSI-rk3288-Missing-GRF-handles.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,61 @@ | ||||
| From 771bcfe1735e42650b763e52a042a9fd98b2fa5b Mon Sep 17 00:00:00 2001 | ||||
| From: Myy Miouyouyou <myy@miouyouyou.fr> | ||||
| Date: Thu, 19 Oct 2017 21:20:43 +0200 | ||||
| Subject: [PATCH 09/28] ARM: DTSI: rk3288.dtsi: Missing GRF handles | ||||
| 
 | ||||
| Add missing GRF handles. | ||||
| 
 | ||||
| This patch is taken from the patches provided by the ARMbian team. | ||||
| 
 | ||||
| Signed-off-by: Myy Miouyouyou <myy@miouyouyou.fr> | ||||
| ---
 | ||||
|  arch/arm/boot/dts/rk3288.dtsi | 5 +++++ | ||||
|  1 file changed, 5 insertions(+) | ||||
| 
 | ||||
| diff --git a/arch/arm/boot/dts/rk3288.dtsi b/arch/arm/boot/dts/rk3288.dtsi
 | ||||
| index 356ed1e6..5b789528 100644
 | ||||
| --- a/arch/arm/boot/dts/rk3288.dtsi
 | ||||
| +++ b/arch/arm/boot/dts/rk3288.dtsi
 | ||||
| @@ -547,6 +547,7 @@
 | ||||
|  		pinctrl-2 = <&otp_gpio>; | ||||
|  		#thermal-sensor-cells = <1>; | ||||
|  		rockchip,hw-tshut-temp = <95000>; | ||||
| +		rockchip,grf = <&grf>;
 | ||||
|  		status = "disabled"; | ||||
|  	}; | ||||
|   | ||||
| @@ -655,6 +656,7 @@
 | ||||
|  		pinctrl-0 = <&pwm0_pin>; | ||||
|  		clocks = <&cru PCLK_PWM>; | ||||
|  		clock-names = "pwm"; | ||||
| +		rockchip,grf = <&grf>;
 | ||||
|  		status = "disabled"; | ||||
|  	}; | ||||
|   | ||||
| @@ -666,6 +668,7 @@
 | ||||
|  		pinctrl-0 = <&pwm1_pin>; | ||||
|  		clocks = <&cru PCLK_PWM>; | ||||
|  		clock-names = "pwm"; | ||||
| +		rockchip,grf = <&grf>;
 | ||||
|  		status = "disabled"; | ||||
|  	}; | ||||
|   | ||||
| @@ -677,6 +680,7 @@
 | ||||
|  		pinctrl-0 = <&pwm2_pin>; | ||||
|  		clocks = <&cru PCLK_PWM>; | ||||
|  		clock-names = "pwm"; | ||||
| +		rockchip,grf = <&grf>;
 | ||||
|  		status = "disabled"; | ||||
|  	}; | ||||
|   | ||||
| @@ -688,6 +692,7 @@
 | ||||
|  		pinctrl-0 = <&pwm3_pin>; | ||||
|  		clocks = <&cru PCLK_PWM>; | ||||
|  		clock-names = "pwm"; | ||||
| +		rockchip,grf = <&grf>;
 | ||||
|  		status = "disabled"; | ||||
|  	}; | ||||
|   | ||||
| -- 
 | ||||
| 2.11.0 | ||||
| 
 | ||||
| @ -0,0 +1,31 @@ | ||||
| From 062488e4b8fd552c01e1104b3bc91a6f7ffe6c41 Mon Sep 17 00:00:00 2001 | ||||
| From: Myy Miouyouyou <myy@miouyouyou.fr> | ||||
| Date: Thu, 19 Oct 2017 21:24:47 +0200 | ||||
| Subject: [PATCH 10/28] RK3288: DTSI: rk3288.dtsi: Add missing SPI2 pinctrl | ||||
| 
 | ||||
| The spi2_cs1 pin reference is missing in the spi2 first pin control | ||||
| definition. | ||||
| 
 | ||||
| This patch is taken from the patches provided by the ARMbian team. | ||||
| 
 | ||||
| Signed-off-by: Myy Miouyouyou <myy@miouyouyou.fr> | ||||
| ---
 | ||||
|  arch/arm/boot/dts/rk3288.dtsi | 2 +- | ||||
|  1 file changed, 1 insertion(+), 1 deletion(-) | ||||
| 
 | ||||
| diff --git a/arch/arm/boot/dts/rk3288.dtsi b/arch/arm/boot/dts/rk3288.dtsi
 | ||||
| index 5b789528..9ed532cc 100644
 | ||||
| --- a/arch/arm/boot/dts/rk3288.dtsi
 | ||||
| +++ b/arch/arm/boot/dts/rk3288.dtsi
 | ||||
| @@ -334,7 +334,7 @@
 | ||||
|  		dma-names = "tx", "rx"; | ||||
|  		interrupts = <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>; | ||||
|  		pinctrl-names = "default"; | ||||
| -		pinctrl-0 = <&spi2_clk &spi2_tx &spi2_rx &spi2_cs0>;
 | ||||
| +		pinctrl-0 = <&spi2_clk &spi2_tx &spi2_rx &spi2_cs0 &spi2_cs1>;
 | ||||
|  		reg = <0x0 0xff130000 0x0 0x1000>; | ||||
|  		#address-cells = <1>; | ||||
|  		#size-cells = <0>; | ||||
| -- 
 | ||||
| 2.11.0 | ||||
| 
 | ||||
| @ -0,0 +1,56 @@ | ||||
| From 7af8d2bf732cb3baab7d926ed8a7e061e7a09ad9 Mon Sep 17 00:00:00 2001 | ||||
| From: Myy Miouyouyou <myy@miouyouyou.fr> | ||||
| Date: Thu, 19 Oct 2017 21:39:00 +0200 | ||||
| Subject: [PATCH 13/28] ARM: DTSI: rk3288.dtsi: Adding cells addresses and | ||||
|  sizes of MMC nodes | ||||
| 
 | ||||
| Imported from the Rockchip 4.4 patches. | ||||
| 
 | ||||
| Signed-off-by: Myy Miouyouyou <myy@miouyouyou.fr> | ||||
| ---
 | ||||
|  arch/arm/boot/dts/rk3288.dtsi | 8 ++++++++ | ||||
|  1 file changed, 8 insertions(+) | ||||
| 
 | ||||
| diff --git a/arch/arm/boot/dts/rk3288.dtsi b/arch/arm/boot/dts/rk3288.dtsi
 | ||||
| index be985f02..14ef8202 100644
 | ||||
| --- a/arch/arm/boot/dts/rk3288.dtsi
 | ||||
| +++ b/arch/arm/boot/dts/rk3288.dtsi
 | ||||
| @@ -236,6 +236,8 @@
 | ||||
|  		clock-names = "biu", "ciu", "ciu-drive", "ciu-sample"; | ||||
|  		fifo-depth = <0x100>; | ||||
|  		interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>; | ||||
| +		#address-cells = <1>;
 | ||||
| +		#size-cells = <0>;
 | ||||
|  		reg = <0x0 0xff0c0000 0x0 0x4000>; | ||||
|  		resets = <&cru SRST_MMC0>; | ||||
|  		reset-names = "reset"; | ||||
| @@ -250,6 +252,8 @@
 | ||||
|  		clock-names = "biu", "ciu", "ciu-drive", "ciu-sample"; | ||||
|  		fifo-depth = <0x100>; | ||||
|  		interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>; | ||||
| +		#address-cells = <1>;
 | ||||
| +		#size-cells = <0>;
 | ||||
|  		reg = <0x0 0xff0d0000 0x0 0x4000>; | ||||
|  		resets = <&cru SRST_SDIO0>; | ||||
|  		reset-names = "reset"; | ||||
| @@ -264,6 +268,8 @@
 | ||||
|  		clock-names = "biu", "ciu", "ciu-drive", "ciu-sample"; | ||||
|  		fifo-depth = <0x100>; | ||||
|  		interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>; | ||||
| +		#address-cells = <1>;
 | ||||
| +		#size-cells = <0>;
 | ||||
|  		reg = <0x0 0xff0e0000 0x0 0x4000>; | ||||
|  		resets = <&cru SRST_SDIO1>; | ||||
|  		reset-names = "reset"; | ||||
| @@ -278,6 +284,8 @@
 | ||||
|  		clock-names = "biu", "ciu", "ciu-drive", "ciu-sample"; | ||||
|  		fifo-depth = <0x100>; | ||||
|  		interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>; | ||||
| +		#address-cells = <1>;
 | ||||
| +		#size-cells = <0>;
 | ||||
|  		reg = <0x0 0xff0f0000 0x0 0x4000>; | ||||
|  		resets = <&cru SRST_EMMC>; | ||||
|  		reset-names = "reset"; | ||||
| -- 
 | ||||
| 2.11.0 | ||||
| 
 | ||||
| @ -0,0 +1,27 @@ | ||||
| From ac220d592aa38b9b717d36f7bb93f7be5a08f6b3 Mon Sep 17 00:00:00 2001 | ||||
| From: Myy Miouyouyou <myy@miouyouyou.fr> | ||||
| Date: Thu, 19 Oct 2017 21:43:51 +0200 | ||||
| Subject: [PATCH 14/28] ARM: DTSI: rk3288.dtsi: Adding missing EDP power domain | ||||
| 
 | ||||
| Imported from Rockchip 4.4 kernel patches. | ||||
| 
 | ||||
| Signed-off-by: Myy Miouyouyou <myy@miouyouyou.fr> | ||||
| ---
 | ||||
|  arch/arm/boot/dts/rk3288.dtsi | 1 + | ||||
|  1 file changed, 1 insertion(+) | ||||
| 
 | ||||
| diff --git a/arch/arm/boot/dts/rk3288.dtsi b/arch/arm/boot/dts/rk3288.dtsi
 | ||||
| index 14ef8202..10ecebb4 100644
 | ||||
| --- a/arch/arm/boot/dts/rk3288.dtsi
 | ||||
| +++ b/arch/arm/boot/dts/rk3288.dtsi
 | ||||
| @@ -1105,6 +1105,7 @@
 | ||||
|  		interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>; | ||||
|  		clocks = <&cru SCLK_EDP>, <&cru PCLK_EDP_CTRL>; | ||||
|  		clock-names = "dp", "pclk"; | ||||
| +		power-domains = <&power RK3288_PD_VIO>;
 | ||||
|  		phys = <&edp_phy>; | ||||
|  		phy-names = "dp"; | ||||
|  		resets = <&cru SRST_EDP>; | ||||
| -- 
 | ||||
| 2.11.0 | ||||
| 
 | ||||
| @ -0,0 +1,28 @@ | ||||
| From c5af6798c9a411b3f550f463182a4b4904a21ec2 Mon Sep 17 00:00:00 2001 | ||||
| From: Myy Miouyouyou <myy@miouyouyou.fr> | ||||
| Date: Thu, 19 Oct 2017 21:51:14 +0200 | ||||
| Subject: [PATCH 16/28] ARM: DTSI: rk3288.dtsi: Adding missing VOPB registers | ||||
| 
 | ||||
| Imported from @wzyy2 patches... I think... | ||||
| 
 | ||||
| Signed-off-by: Myy Miouyouyou <myy@miouyouyou.fr> | ||||
| ---
 | ||||
|  arch/arm/boot/dts/rk3288.dtsi | 2 +- | ||||
|  1 file changed, 1 insertion(+), 1 deletion(-) | ||||
| 
 | ||||
| diff --git a/arch/arm/boot/dts/rk3288.dtsi b/arch/arm/boot/dts/rk3288.dtsi
 | ||||
| index 455446f6..125f8835 100644
 | ||||
| --- a/arch/arm/boot/dts/rk3288.dtsi
 | ||||
| +++ b/arch/arm/boot/dts/rk3288.dtsi
 | ||||
| @@ -987,7 +987,7 @@
 | ||||
|   | ||||
|  	vopb: vop@ff930000 { | ||||
|  		compatible = "rockchip,rk3288-vop"; | ||||
| -		reg = <0x0 0xff930000 0x0 0x19c>;
 | ||||
| +		reg = <0x0 0xff930000 0x0 0x19c>, <0x0 0xff931000 0x0 0x1000>;
 | ||||
|  		interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>; | ||||
|  		clocks = <&cru ACLK_VOP0>, <&cru DCLK_VOP0>, <&cru HCLK_VOP0>; | ||||
|  		clock-names = "aclk_vop", "dclk_vop", "hclk_vop"; | ||||
| -- 
 | ||||
| 2.11.0 | ||||
| 
 | ||||
| @ -0,0 +1,31 @@ | ||||
| From a0602b2724893de7ac9b4190a7a6bb66458da2d5 Mon Sep 17 00:00:00 2001 | ||||
| From: Myy Miouyouyou <myy@miouyouyou.fr> | ||||
| Date: Thu, 19 Oct 2017 21:54:37 +0200 | ||||
| Subject: [PATCH 17/28] ARM: DTSI: rk3288.dtsi: Fixed the SPDIF node address | ||||
| 
 | ||||
| Now, the typo is only in the name of the node itself, not in the | ||||
| actual registers addresses definition. | ||||
| 
 | ||||
| Still, this ought to be fixed one day ! | ||||
| 
 | ||||
| Signed-off-by: Myy Miouyouyou <myy@miouyouyou.fr> | ||||
| ---
 | ||||
|  arch/arm/boot/dts/rk3288.dtsi | 2 +- | ||||
|  1 file changed, 1 insertion(+), 1 deletion(-) | ||||
| 
 | ||||
| diff --git a/arch/arm/boot/dts/rk3288.dtsi b/arch/arm/boot/dts/rk3288.dtsi
 | ||||
| index 125f8835..e5d3d3c9 100644
 | ||||
| --- a/arch/arm/boot/dts/rk3288.dtsi
 | ||||
| +++ b/arch/arm/boot/dts/rk3288.dtsi
 | ||||
| @@ -922,7 +922,7 @@
 | ||||
|  		status = "disabled"; | ||||
|  	}; | ||||
|   | ||||
| -	spdif: sound@ff88b0000 {
 | ||||
| +	spdif: sound@ff8b0000 {
 | ||||
|  		compatible = "rockchip,rk3288-spdif", "rockchip,rk3066-spdif"; | ||||
|  		reg = <0x0 0xff8b0000 0x0 0x10000>; | ||||
|  		#sound-dai-cells = <0>; | ||||
| -- 
 | ||||
| 2.11.0 | ||||
| 
 | ||||
							
								
								
									
										107
									
								
								patches/DTS/0020-ARM-DTSI-rk3288-Define-the-VPU-services.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										107
									
								
								patches/DTS/0020-ARM-DTSI-rk3288-Define-the-VPU-services.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,107 @@ | ||||
| From f4480cb8198085607c15e523b49aa21bc38cf62c Mon Sep 17 00:00:00 2001 | ||||
| From: Myy Miouyouyou <myy@miouyouyou.fr> | ||||
| Date: Tue, 21 Nov 2017 21:47:33 +0100 | ||||
| Subject: [PATCH 1/5] ARM: DTSI: rk3288.dtsi: Define the VPU services | ||||
| 
 | ||||
| Still, you will need appropriate drivers to use them. | ||||
| 
 | ||||
| Contrary to the previous versions of this patch, these services are : | ||||
| * NOT enabled by default; | ||||
| * MUST be activated in each individual DTS; | ||||
| 
 | ||||
| I currently do not own enough RK3288 boards to ensure that the | ||||
| VPU and HEVC MMU + services can be activated without issues. | ||||
| 
 | ||||
| Still this patch does not generate issues like the previous one AND | ||||
| still enable these services on boot, when activated properly in | ||||
| individual DTS files. | ||||
| 
 | ||||
| Signed-off-by: Myy Miouyouyou <myy@miouyouyou.fr> | ||||
| ---
 | ||||
|  arch/arm/boot/dts/rk3288.dtsi | 63 +++++++++++++++++++++++++++++++++++++++++++ | ||||
|  1 file changed, 63 insertions(+) | ||||
| 
 | ||||
| diff --git a/arch/arm/boot/dts/rk3288.dtsi b/arch/arm/boot/dts/rk3288.dtsi
 | ||||
| index 30b04257..bc3601ac 100644
 | ||||
| --- a/arch/arm/boot/dts/rk3288.dtsi
 | ||||
| +++ b/arch/arm/boot/dts/rk3288.dtsi
 | ||||
| @@ -1182,6 +1182,27 @@
 | ||||
|  		status = "disabled"; | ||||
|  	}; | ||||
|   | ||||
| +	vpu_service: vpu-service@ff9a0000 {
 | ||||
| +		compatible = "rockchip,vpu_service";
 | ||||
| +		reg = <0x0 0xff9a0000 0x0 0x800>;
 | ||||
| +		interrupts = 
 | ||||
| +			<GIC_SPI  9 IRQ_TYPE_LEVEL_HIGH>,
 | ||||
| +			<GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
 | ||||
| +		interrupt-names = "irq_enc", "irq_dec";
 | ||||
| +		clocks = <&cru ACLK_VCODEC>, <&cru HCLK_VCODEC>;
 | ||||
| +		clock-names = "aclk_vcodec", "hclk_vcodec";
 | ||||
| +		power-domains = <&power RK3288_PD_VIDEO>;
 | ||||
| +		rockchip,grf = <&grf>;
 | ||||
| +		resets = <&cru SRST_VCODEC_AXI>, <&cru SRST_VCODEC_AHB>;
 | ||||
| +		reset-names = "video_a", "video_h";
 | ||||
| +		iommus = <&vpu_mmu>;
 | ||||
| +		iommu_enabled = <1>;
 | ||||
| +		dev_mode = <0>;
 | ||||
| +		status = "disabled";
 | ||||
| +		/* 0 means ion, 1 means drm */
 | ||||
| +		allocator = <1>;
 | ||||
| +	};
 | ||||
| +
 | ||||
|  	hevc_mmu: iommu@ff9c0440 { | ||||
|  		compatible = "rockchip,iommu"; | ||||
|  		reg = <0x0 0xff9c0440 0x0 0x40>, <0x0 0xff9c0480 0x0 0x40>; | ||||
| @@ -1191,6 +1212,48 @@
 | ||||
|  		status = "disabled"; | ||||
|  	}; | ||||
|   | ||||
| +	hevc_service: hevc-service@ff9c0000 {
 | ||||
| +		compatible = "rockchip,hevc_service";
 | ||||
| +		reg = <0x0 0xff9c0000 0x0 0x400>;
 | ||||
| +		interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>;
 | ||||
| +		interrupt-names = "irq_dec";
 | ||||
| +		clocks =
 | ||||
| +			<&cru ACLK_HEVC>,
 | ||||
| +			<&cru HCLK_HEVC>,
 | ||||
| +			<&cru SCLK_HEVC_CORE>,
 | ||||
| +			<&cru SCLK_HEVC_CABAC>;
 | ||||
| +		clock-names =
 | ||||
| +			"aclk_vcodec",
 | ||||
| +			"hclk_vcodec",
 | ||||
| +			"clk_core",
 | ||||
| +			"clk_cabac";
 | ||||
| +		/*
 | ||||
| +		* The 4K hevc would also work well with 500/125/300/300,
 | ||||
| +		* no more err irq and reset request.
 | ||||
| +		*/
 | ||||
| +		assigned-clocks = 
 | ||||
| +			<&cru ACLK_HEVC>,
 | ||||
| +			<&cru HCLK_HEVC>,
 | ||||
| +			<&cru SCLK_HEVC_CORE>,
 | ||||
| +			<&cru SCLK_HEVC_CABAC>;
 | ||||
| +		assigned-clock-rates =
 | ||||
| +			<400000000>,
 | ||||
| +			<100000000>,
 | ||||
| +			<300000000>,
 | ||||
| +			<300000000>;
 | ||||
| +
 | ||||
| +		resets = <&cru SRST_HEVC>;
 | ||||
| +		reset-names = "video";
 | ||||
| +		power-domains = <&power RK3288_PD_HEVC>;
 | ||||
| +		rockchip,grf = <&grf>;
 | ||||
| +		dev_mode = <1>;
 | ||||
| +		iommus = <&hevc_mmu>;
 | ||||
| +		iommu_enabled = <1>;
 | ||||
| +		status = "disabled";
 | ||||
| +		/* 0 means ion, 1 means drm */
 | ||||
| +		allocator = <1>;
 | ||||
| +	};
 | ||||
| +
 | ||||
|  	gpu: gpu@ffa30000 { | ||||
|  		compatible = "rockchip,rk3288-mali", "arm,mali-t760"; | ||||
|  		reg = <0x0 0xffa30000 0x0 0x10000>; | ||||
| -- 
 | ||||
| 2.14.1 | ||||
| 
 | ||||
| @ -0,0 +1,48 @@ | ||||
| From 4766516bcbf023813ad883c2d61c422316770d12 Mon Sep 17 00:00:00 2001 | ||||
| From: Myy Miouyouyou <myy@miouyouyou.fr> | ||||
| Date: Tue, 21 Nov 2017 21:58:22 +0100 | ||||
| Subject: [PATCH 5/5] ARM: DTSI: rk3288-veyron: Enable the Video encoding MMU | ||||
|  and services | ||||
| 
 | ||||
| Enable the : | ||||
| * VPU MMU; | ||||
| * VPU Service; | ||||
| * HEVC MMU; | ||||
| * HEVC Service; | ||||
| for RK3288 Chromebook laptops. | ||||
| 
 | ||||
| Signed-off-by: Myy Miouyouyou <myy@miouyouyou.fr> | ||||
| ---
 | ||||
|  arch/arm/boot/dts/rk3288-veyron.dtsi | 16 ++++++++++++++++ | ||||
|  1 file changed, 16 insertions(+) | ||||
| 
 | ||||
| diff --git a/arch/arm/boot/dts/rk3288-veyron.dtsi b/arch/arm/boot/dts/rk3288-veyron.dtsi
 | ||||
| index 6e5bd897..517b9242 100644
 | ||||
| --- a/arch/arm/boot/dts/rk3288-veyron.dtsi
 | ||||
| +++ b/arch/arm/boot/dts/rk3288-veyron.dtsi
 | ||||
| @@ -450,6 +450,22 @@
 | ||||
|  	status = "okay"; | ||||
|  }; | ||||
|   | ||||
| +&vpu_mmu {
 | ||||
| +	status = "okay";
 | ||||
| +};
 | ||||
| +
 | ||||
| +&vpu_service {
 | ||||
| +	status = "okay";
 | ||||
| +};
 | ||||
| +
 | ||||
| +&hevc_mmu {
 | ||||
| +	status = "okay";
 | ||||
| +};
 | ||||
| +
 | ||||
| +&hevc_service {
 | ||||
| +	status = "okay";
 | ||||
| +};
 | ||||
| +
 | ||||
|  &wdt { | ||||
|  	status = "okay"; | ||||
|  }; | ||||
| -- 
 | ||||
| 2.14.1 | ||||
| 
 | ||||
| @ -0,0 +1,89 @@ | ||||
| From b79b87ffc54b143172880c6ce5dd66d30c772d76 Mon Sep 17 00:00:00 2001 | ||||
| From: Myy Miouyouyou <myy@miouyouyou.fr> | ||||
| Date: Wed, 2 May 2018 21:54:37 +0200 | ||||
| Subject: [PATCH] ARM: DTSI: rk3288: Add the appropriate clock references | ||||
| 
 | ||||
| So, the commit f2e3a5f557ad27f6a6f447717090a39cea238d6a (Torvalds | ||||
| branch) is forcing the DTS files to provide appropriate clock | ||||
| references named "aclk" and "iface" for each MMU node. | ||||
| The references are then manipulated by the Rockchip IOMMU driver. | ||||
| If the references are not present, the IOMMU driver bails out with | ||||
| an error. | ||||
| 
 | ||||
| However, no changes has been pushed to add these clock references | ||||
| to the RK3288 DTSI file, making the Rockchip IOMMU driver fail all | ||||
| the Video hardware related MMU probes. | ||||
| That result in no display, which a major inconvenience. | ||||
| 
 | ||||
| The following patch, taken from the linux-rockchip Git repository | ||||
| maintained by @mmind, written by Jeffy Chen, actually adds these | ||||
| clock references to the rk3288.dtsi. | ||||
| Orignal patch link : | ||||
| https://git.kernel.org/pub/scm/linux/kernel/git/mmind/linux-rockchip.git/commit/arch/arm/boot/dts/rk3288.dtsi?h=for-next&id=c78751f91c0b5461ba08b123f85c1ed146a32f97 | ||||
| 
 | ||||
| Signed-off-by: Myy Miouyouyou <myy@miouyouyou.fr> | ||||
| ---
 | ||||
|  arch/arm/boot/dts/rk3288.dtsi | 12 ++++++++++++ | ||||
|  1 file changed, 12 insertions(+) | ||||
| 
 | ||||
| diff --git a/arch/arm/boot/dts/rk3288.dtsi b/arch/arm/boot/dts/rk3288.dtsi
 | ||||
| index a258a3f7..e9ac64e2 100644
 | ||||
| --- a/arch/arm/boot/dts/rk3288.dtsi
 | ||||
| +++ b/arch/arm/boot/dts/rk3288.dtsi
 | ||||
| @@ -972,6 +972,8 @@
 | ||||
|  		reg = <0x0 0xff900800 0x0 0x40>; | ||||
|  		interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>; | ||||
|  		interrupt-names = "iep_mmu"; | ||||
| +		clocks = <&cru ACLK_IEP>, <&cru HCLK_IEP>;
 | ||||
| +		clock-names = "aclk", "iface";
 | ||||
|  		#iommu-cells = <0>; | ||||
|  		status = "disabled"; | ||||
|  	}; | ||||
| @@ -981,6 +983,8 @@
 | ||||
|  		reg = <0x0 0xff914000 0x0 0x100>, <0x0 0xff915000 0x0 0x100>; | ||||
|  		interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>; | ||||
|  		interrupt-names = "isp_mmu"; | ||||
| +		clocks = <&cru ACLK_ISP>, <&cru HCLK_ISP>;
 | ||||
| +		clock-names = "aclk", "iface";
 | ||||
|  		#iommu-cells = <0>; | ||||
|  		rockchip,disable-mmu-reset; | ||||
|  		status = "disabled"; | ||||
| @@ -1040,6 +1044,8 @@
 | ||||
|  		reg = <0x0 0xff930300 0x0 0x100>; | ||||
|  		interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>; | ||||
|  		interrupt-names = "vopb_mmu"; | ||||
| +		clocks = <&cru ACLK_VOP0>, <&cru HCLK_VOP0>;
 | ||||
| +		clock-names = "aclk", "iface";
 | ||||
|  		power-domains = <&power RK3288_PD_VIO>; | ||||
|  		#iommu-cells = <0>; | ||||
|  		status = "disabled"; | ||||
| @@ -1088,6 +1094,8 @@
 | ||||
|  		reg = <0x0 0xff940300 0x0 0x100>; | ||||
|  		interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>; | ||||
|  		interrupt-names = "vopl_mmu"; | ||||
| +		clocks = <&cru ACLK_VOP1>, <&cru HCLK_VOP1>;
 | ||||
| +		clock-names = "aclk", "iface";
 | ||||
|  		power-domains = <&power RK3288_PD_VIO>; | ||||
|  		#iommu-cells = <0>; | ||||
|  		status = "disabled"; | ||||
| @@ -1220,6 +1228,8 @@
 | ||||
|  		reg = <0x0 0xff9a0800 0x0 0x100>; | ||||
|  		interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>; | ||||
|  		interrupt-names = "vpu_mmu"; | ||||
| +		clocks = <&cru ACLK_VCODEC>, <&cru HCLK_VCODEC>;
 | ||||
| +		clock-names = "aclk", "iface";
 | ||||
|  		#iommu-cells = <0>; | ||||
|  		status = "disabled"; | ||||
|  	}; | ||||
| @@ -1250,6 +1260,8 @@
 | ||||
|  		reg = <0x0 0xff9c0440 0x0 0x40>, <0x0 0xff9c0480 0x0 0x40>; | ||||
|  		interrupts = <GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>; | ||||
|  		interrupt-names = "hevc_mmu"; | ||||
| +		clocks = <&cru ACLK_HEVC>, <&cru HCLK_HEVC>;
 | ||||
| +		clock-names = "aclk", "iface";
 | ||||
|  		#iommu-cells = <0>; | ||||
|  		status = "disabled"; | ||||
|  	}; | ||||
| -- 
 | ||||
| 2.17.0 | ||||
| 
 | ||||
| @ -0,0 +1,39 @@ | ||||
| From fe85565d9ed8212cbda2148d4731418a36a8d088 Mon Sep 17 00:00:00 2001 | ||||
| From: Myy Miouyouyou <myy@miouyouyou.fr> | ||||
| Date: Mon, 11 Dec 2017 21:53:28 +0100 | ||||
| Subject: [PATCH 1/3] drivers: Integrating Mali Midgard video and gpu drivers. | ||||
| 
 | ||||
| I'm dropping the UMP drivers. They are not maintained. | ||||
| 
 | ||||
| Signed-off-by: Myy Miouyouyou <myy@miouyouyou.fr> | ||||
| ---
 | ||||
|  drivers/gpu/Makefile  | 2 +- | ||||
|  drivers/video/Kconfig | 1 + | ||||
|  2 files changed, 2 insertions(+), 1 deletion(-) | ||||
| 
 | ||||
| diff --git a/drivers/gpu/Makefile b/drivers/gpu/Makefile
 | ||||
| index e9ed439a5..66386b42a 100644
 | ||||
| --- a/drivers/gpu/Makefile
 | ||||
| +++ b/drivers/gpu/Makefile
 | ||||
| @@ -2,5 +2,5 @@
 | ||||
|  # taken to initialize them in the correct order. Link order is the only way | ||||
|  # to ensure this currently. | ||||
|  obj-$(CONFIG_TEGRA_HOST1X)	+= host1x/ | ||||
| -obj-y			+= drm/ vga/
 | ||||
| +obj-y			+= drm/ vga/ arm/
 | ||||
|  obj-$(CONFIG_IMX_IPUV3_CORE)	+= ipu-v3/ | ||||
| diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig
 | ||||
| index 3c20af999..041e15f2c 100644
 | ||||
| --- a/drivers/video/Kconfig
 | ||||
| +++ b/drivers/video/Kconfig
 | ||||
| @@ -17,6 +17,7 @@ source "drivers/gpu/vga/Kconfig"
 | ||||
|   | ||||
|  source "drivers/gpu/host1x/Kconfig" | ||||
|  source "drivers/gpu/ipu-v3/Kconfig" | ||||
| +source "drivers/gpu/arm/midgard/Kconfig"
 | ||||
|   | ||||
|  source "drivers/gpu/drm/Kconfig" | ||||
|   | ||||
| -- 
 | ||||
| 2.14.1 | ||||
| 
 | ||||
| @ -0,0 +1,50 @@ | ||||
| From e0c5a419cf5464cd02996431afa98e3b22dc6801 Mon Sep 17 00:00:00 2001 | ||||
| From: Myy <myy@miouyouyou.fr> | ||||
| Date: Mon, 17 Jul 2017 23:14:48 +0000 | ||||
| Subject: [PATCH] clk: rockchip: add all known operating points to the allowed | ||||
|  CPU freqs | ||||
| 
 | ||||
| Patch from Willy Tarreau | ||||
| 
 | ||||
| Original commit message : | ||||
| At least 1920 MHz runs stable on the MiQi even on openssl speed -multi 4, | ||||
| which is by far the most intensive workload, and 1992/2016 work fine on | ||||
| the CS-008 until it starts to heat too much. So add all of them so that | ||||
| the device tree can simply manipulate them. | ||||
| 
 | ||||
| Signed-off-by: Myy <myy@miouyouyou.fr> | ||||
| ---
 | ||||
|  drivers/clk/rockchip/clk-rk3288.c | 17 +++++++++++++++++ | ||||
|  1 file changed, 17 insertions(+) | ||||
| 
 | ||||
| diff --git a/drivers/clk/rockchip/clk-rk3288.c b/drivers/clk/rockchip/clk-rk3288.c
 | ||||
| index 753c649..fd2058f 100644
 | ||||
| --- a/drivers/clk/rockchip/clk-rk3288.c
 | ||||
| +++ b/drivers/clk/rockchip/clk-rk3288.c
 | ||||
| @@ -145,6 +145,23 @@ static struct rockchip_pll_rate_table rk3288_pll_rates[] = {
 | ||||
|  	} | ||||
|   | ||||
|  static struct rockchip_cpuclk_rate_table rk3288_cpuclk_rates[] __initdata = { | ||||
| +	RK3288_CPUCLK_RATE(2208000000U, 1, 3, 1, 3, 3),
 | ||||
| +	RK3288_CPUCLK_RATE(2184000000U, 1, 3, 1, 3, 3),
 | ||||
| +	RK3288_CPUCLK_RATE(2160000000U, 1, 3, 1, 3, 3),
 | ||||
| +	RK3288_CPUCLK_RATE(2136000000, 1, 3, 1, 3, 3),
 | ||||
| +	RK3288_CPUCLK_RATE(2112000000, 1, 3, 1, 3, 3),
 | ||||
| +	RK3288_CPUCLK_RATE(2088000000, 1, 3, 1, 3, 3),
 | ||||
| +	RK3288_CPUCLK_RATE(2064000000, 1, 3, 1, 3, 3),
 | ||||
| +	RK3288_CPUCLK_RATE(2040000000, 1, 3, 1, 3, 3),
 | ||||
| +	RK3288_CPUCLK_RATE(2016000000, 1, 3, 1, 3, 3),
 | ||||
| +	RK3288_CPUCLK_RATE(1992000000, 1, 3, 1, 3, 3),
 | ||||
| +	RK3288_CPUCLK_RATE(1968000000, 1, 3, 1, 3, 3),
 | ||||
| +	RK3288_CPUCLK_RATE(1944000000, 1, 3, 1, 3, 3),
 | ||||
| +	RK3288_CPUCLK_RATE(1920000000, 1, 3, 1, 3, 3),
 | ||||
| +	RK3288_CPUCLK_RATE(1896000000, 1, 3, 1, 3, 3),
 | ||||
| +	RK3288_CPUCLK_RATE(1872000000, 1, 3, 1, 3, 3),
 | ||||
| +	RK3288_CPUCLK_RATE(1848000000, 1, 3, 1, 3, 3),
 | ||||
| +	RK3288_CPUCLK_RATE(1824000000, 1, 3, 1, 3, 3),
 | ||||
|  	RK3288_CPUCLK_RATE(1800000000, 1, 3, 1, 3, 3), | ||||
|  	RK3288_CPUCLK_RATE(1704000000, 1, 3, 1, 3, 3), | ||||
|  	RK3288_CPUCLK_RATE(1608000000, 1, 3, 1, 3, 3), | ||||
| -- 
 | ||||
| 2.10.2 | ||||
| 
 | ||||
| @ -0,0 +1,41 @@ | ||||
| From b82f540967f6a732a22bbd236457b864951aeda7 Mon Sep 17 00:00:00 2001 | ||||
| From: Myy <myy@miouyouyou.fr> | ||||
| Date: Sun, 14 May 2017 10:13:26 +0000 | ||||
| Subject: [PATCH] clk: rockchip: rk3288: prefer vdpu for vcodec clock source | ||||
| 
 | ||||
| Patch provided by Randy Li. The original commit message reads : | ||||
| 
 | ||||
| _______________ | ||||
| The RK3288 CRU system clock solution would suggest use | ||||
| the vdpu clock source for the VPU(aclk_vpu and hclk_vpu). | ||||
| 
 | ||||
| Reading the registers of VPU(both VEPU and VDPU) would become all high | ||||
| when the vepu is used as the clock source. It may be a bug in the SoC, | ||||
| not sure whether it is fixed at RK3288W. | ||||
| 
 | ||||
| Signed-off-by: Randy Li <ayaka@soulik.info> | ||||
| _______________ | ||||
| 
 | ||||
| This also resolves a freeze when loading the OOT Video Codec driver | ||||
| 
 | ||||
| Signed-off-by: Myy <myy@miouyouyou.fr> | ||||
| ---
 | ||||
|  drivers/clk/rockchip/clk-rk3288.c | 2 +- | ||||
|  1 file changed, 1 insertion(+), 1 deletion(-) | ||||
| 
 | ||||
| diff --git a/drivers/clk/rockchip/clk-rk3288.c b/drivers/clk/rockchip/clk-rk3288.c
 | ||||
| index 1227f74..f218256 100644
 | ||||
| --- a/drivers/clk/rockchip/clk-rk3288.c
 | ||||
| +++ b/drivers/clk/rockchip/clk-rk3288.c
 | ||||
| @@ -215,7 +215,7 @@ PNAME(mux_hsadcout_p)	= { "hsadc_src", "ext_hsadc" };
 | ||||
|  PNAME(mux_edp_24m_p)	= { "ext_edp_24m", "xin24m" }; | ||||
|  PNAME(mux_tspout_p)	= { "cpll", "gpll", "npll", "xin27m" }; | ||||
|   | ||||
| -PNAME(mux_aclk_vcodec_pre_p)	= { "aclk_vepu", "aclk_vdpu" };
 | ||||
| +PNAME(mux_aclk_vcodec_pre_p)	= { "aclk_vdpu", "aclk_vepu" };
 | ||||
|  PNAME(mux_usbphy480m_p)		= { "sclk_otgphy1_480m", "sclk_otgphy2_480m", | ||||
|  				    "sclk_otgphy0_480m" }; | ||||
|  PNAME(mux_hsicphy480m_p)	= { "cpll", "gpll", "usbphy480m_src" }; | ||||
| -- 
 | ||||
| 2.10.2 | ||||
| 
 | ||||
| @ -0,0 +1,30 @@ | ||||
| From 239a5e3016b7f676bc3f56ea509ed172bf954001 Mon Sep 17 00:00:00 2001 | ||||
| From: Myy <myy@miouyouyou.fr> | ||||
| Date: Sat, 22 Jul 2017 04:07:36 +0000 | ||||
| Subject: [PATCH] Remove the dependency to the clk_mali symbol. | ||||
| 
 | ||||
| Inspired by @wzzy2 patch | ||||
| 
 | ||||
| https://github.com/rockchip-linux/rockchip_forwardports/commit/359865c617129fe5fcc5530f4a88abcfaa6a5cb4 | ||||
| 
 | ||||
| Signed-off-by: Myy <myy@miouyouyou.fr> | ||||
| ---
 | ||||
|  drivers/gpu/arm/midgard/mali_kbase_core_linux.c | 2 +- | ||||
|  1 file changed, 1 insertion(+), 1 deletion(-) | ||||
| 
 | ||||
| diff --git a/drivers/gpu/arm/midgard/mali_kbase_core_linux.c b/drivers/gpu/arm/midgard/mali_kbase_core_linux.c
 | ||||
| index 9cc65d2..27dcd9c 100644
 | ||||
| --- a/drivers/gpu/arm/midgard/mali_kbase_core_linux.c
 | ||||
| +++ b/drivers/gpu/arm/midgard/mali_kbase_core_linux.c
 | ||||
| @@ -3793,7 +3793,7 @@ static int power_control_init(struct platform_device *pdev)
 | ||||
|  	} | ||||
|  #endif /* LINUX_VERSION_CODE >= 3, 12, 0 */ | ||||
|   | ||||
| -	kbdev->clock = clk_get(kbdev->dev, "clk_mali");
 | ||||
| +	kbdev->clock = of_clk_get(kbdev->dev->of_node, 0);
 | ||||
|  	if (IS_ERR_OR_NULL(kbdev->clock)) { | ||||
|  		err = PTR_ERR(kbdev->clock); | ||||
|  		kbdev->clock = NULL; | ||||
| -- 
 | ||||
| 2.10.2 | ||||
| 
 | ||||
| @ -0,0 +1,116 @@ | ||||
| From 302cd9b8a9f1f8a7735fabea3b9a7645dc40f9cc Mon Sep 17 00:00:00 2001 | ||||
| From: Myy Miouyouyou <myy@miouyouyou.fr> | ||||
| Date: Sun, 7 Jan 2018 01:52:44 +0100 | ||||
| Subject: [PATCH] drivers: mmc: dw-mci-rockchip: Handle ASUS Tinkerboard reboot | ||||
| 
 | ||||
| On ASUS Tinkerboard systems, if the SDMMC hardware is shutdown before | ||||
| rebooting, the system will be dead, as the SDMMC is the only way to | ||||
| boot anything, and the hardware doesn't power up the SDMMC hardware | ||||
| automatically when rebooting. | ||||
| 
 | ||||
| So, when using an ASUS Tinkerboard system, a new reboot handler is | ||||
| installed. This reboot handler takes care of powering the SDMMC | ||||
| hardware again before restarting the system, resolving the issue. | ||||
| 
 | ||||
| The code was inspired by the pwrseq_emmc.c, which seems to overcome | ||||
| similar effects with eMMC hardware. | ||||
| 
 | ||||
| Signed-off-by: Myy Miouyouyou <myy@miouyouyou.fr> | ||||
| ---
 | ||||
|  drivers/mmc/host/dw_mmc-rockchip.c | 66 ++++++++++++++++++++++++++++++++++++++ | ||||
|  1 file changed, 66 insertions(+) | ||||
| 
 | ||||
| diff --git a/drivers/mmc/host/dw_mmc-rockchip.c b/drivers/mmc/host/dw_mmc-rockchip.c
 | ||||
| index a3f1c2b30..7eac1f221 100644
 | ||||
| --- a/drivers/mmc/host/dw_mmc-rockchip.c
 | ||||
| +++ b/drivers/mmc/host/dw_mmc-rockchip.c
 | ||||
| @@ -16,6 +16,11 @@
 | ||||
|  #include <linux/pm_runtime.h> | ||||
|  #include <linux/slab.h> | ||||
|   | ||||
| +#include <linux/regulator/consumer.h>
 | ||||
| +#include <linux/reboot.h>
 | ||||
| +#include <linux/delay.h>
 | ||||
| +#include "../core/core.h"
 | ||||
| +
 | ||||
|  #include "dw_mmc.h" | ||||
|  #include "dw_mmc-pltfm.h" | ||||
|   | ||||
| @@ -334,6 +339,66 @@ static const struct of_device_id dw_mci_rockchip_match[] = {
 | ||||
|  }; | ||||
|  MODULE_DEVICE_TABLE(of, dw_mci_rockchip_match); | ||||
|   | ||||
| +struct dw_mci_rockchip_broken_boards_data {
 | ||||
| +	struct notifier_block reset_nb;
 | ||||
| +	struct platform_device *pdev;
 | ||||
| +};
 | ||||
| +
 | ||||
| +/* This reboot handler handles cases where disabling the SDMMC on
 | ||||
| + * reboot will cause the hardware to be unable to start correctly
 | ||||
| + * after rebooting.
 | ||||
| + * 
 | ||||
| + * This happens with Tinkerboard systems...
 | ||||
| + */
 | ||||
| +static int dw_mci_rockchip_broken_boards_reset_nb(
 | ||||
| +	struct notifier_block *this,
 | ||||
| +	unsigned long mode, void *cmd)
 | ||||
| +{
 | ||||
| +	struct dw_mci_rockchip_broken_boards_data const *data =
 | ||||
| +		container_of(this,
 | ||||
| +			struct dw_mci_rockchip_broken_boards_data,
 | ||||
| +			reset_nb);
 | ||||
| +	struct dw_mci *host = platform_get_drvdata(data->pdev);
 | ||||
| +	struct mmc_host *mmc = host->slot->mmc;
 | ||||
| +
 | ||||
| +	printk(KERN_ERR "Meow.\n");
 | ||||
| +
 | ||||
| +	mmc_power_off(mmc);
 | ||||
| +
 | ||||
| +	mdelay(20);
 | ||||
| +
 | ||||
| +	if (!IS_ERR(mmc->supply.vmmc))
 | ||||
| +		regulator_enable(mmc->supply.vmmc);
 | ||||
| +
 | ||||
| +	if (!IS_ERR(mmc->supply.vqmmc))
 | ||||
| +		regulator_set_voltage(mmc->supply.vqmmc, 3000000, 3300000);
 | ||||
| +
 | ||||
| +	printk(KERN_ERR "woeM.\n");
 | ||||
| +
 | ||||
| +	return NOTIFY_DONE;
 | ||||
| +}
 | ||||
| +
 | ||||
| +static void dw_mci_rockchip_register_broken_boards_reboot_handler(
 | ||||
| +	struct platform_device *pdev)
 | ||||
| +{
 | ||||
| +	struct dw_mci_rockchip_broken_boards_data *data;
 | ||||
| +
 | ||||
| +	if (!of_machine_is_compatible("asus,rk3288-tinker"))
 | ||||
| +		return;
 | ||||
| +
 | ||||
| +	data = devm_kzalloc(&pdev->dev, sizeof(*data), GFP_KERNEL);
 | ||||
| +
 | ||||
| +	if (!data)
 | ||||
| +		return;
 | ||||
| +
 | ||||
| +	data->reset_nb.notifier_call =
 | ||||
| +		dw_mci_rockchip_broken_boards_reset_nb;
 | ||||
| +	data->reset_nb.priority = 255;
 | ||||
| +	register_restart_handler(&data->reset_nb);
 | ||||
| +
 | ||||
| +	data->pdev = pdev;
 | ||||
| +}
 | ||||
| +
 | ||||
|  static int dw_mci_rockchip_probe(struct platform_device *pdev) | ||||
|  { | ||||
|  	const struct dw_mci_drv_data *drv_data; | ||||
| @@ -361,6 +426,7 @@ static int dw_mci_rockchip_probe(struct platform_device *pdev)
 | ||||
|  	} | ||||
|   | ||||
|  	pm_runtime_put_autosuspend(&pdev->dev); | ||||
| +	dw_mci_rockchip_register_broken_boards_reboot_handler(pdev);
 | ||||
|   | ||||
|  	return 0; | ||||
|  } | ||||
| -- 
 | ||||
| 2.14.1 | ||||
| 
 | ||||
							
								
								
									
										162
									
								
								patches/kernel/0005-dw_mmc-The-stupid-ASUS-Reboot.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										162
									
								
								patches/kernel/0005-dw_mmc-The-stupid-ASUS-Reboot.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,162 @@ | ||||
| From b557fc4afe1563d26aab58bec05ee84dcd6f9be8 Mon Sep 17 00:00:00 2001 | ||||
| From: Myy Miouyouyou <myy@miouyouyou.fr> | ||||
| Date: Sun, 11 Mar 2018 22:15:36 +0100 | ||||
| Subject: [PATCH] dw_mmc: The stupid ASUS Reboot patch | ||||
| 
 | ||||
| The patch didn't apply in the 4.16-rc4 so it had to be "rewritten". | ||||
| By "rewritten", I mean, move the code blocks accordingly, based on | ||||
| the new dw_mmc.c file layout. | ||||
| 
 | ||||
| No major changes were done. | ||||
| 
 | ||||
| It's still fucking ugly but I have no time to concentrate on this | ||||
| issue and deal with it accordingly. | ||||
| 
 | ||||
| Signed-off-by: Myy Miouyouyou <myy@miouyouyou.fr> | ||||
| ---
 | ||||
|  drivers/mmc/host/dw_mmc-rockchip.c | 25 +++++++++++++++++++++++++ | ||||
|  drivers/mmc/host/dw_mmc.c          | 31 +++++++++++++++++++++++++++++++ | ||||
|  include/linux/reboot.h             |  2 ++ | ||||
|  kernel/reboot.c                    |  1 + | ||||
|  4 files changed, 59 insertions(+) | ||||
| 
 | ||||
| diff --git a/drivers/mmc/host/dw_mmc-rockchip.c b/drivers/mmc/host/dw_mmc-rockchip.c
 | ||||
| index 339295212..a8fe79b14 100644
 | ||||
| --- a/drivers/mmc/host/dw_mmc-rockchip.c
 | ||||
| +++ b/drivers/mmc/host/dw_mmc-rockchip.c
 | ||||
| @@ -14,10 +14,13 @@
 | ||||
|  #include <linux/of_address.h> | ||||
|  #include <linux/mmc/slot-gpio.h> | ||||
|  #include <linux/pm_runtime.h> | ||||
| +#include <linux/regulator/consumer.h> // Stupid Tinkerboard Hack
 | ||||
|  #include <linux/slab.h> | ||||
|   | ||||
|  #include "dw_mmc.h" | ||||
|  #include "dw_mmc-pltfm.h" | ||||
| +#include "../core/core.h" // Stupid Tinkerboard Hack
 | ||||
| +
 | ||||
|   | ||||
|  #define RK3288_CLKGEN_DIV       2 | ||||
|   | ||||
| @@ -366,6 +369,27 @@ static int dw_mci_rockchip_probe(struct platform_device *pdev)
 | ||||
|  	return 0; | ||||
|  } | ||||
|   | ||||
| +/* Stupid Tinkerboard Hack */
 | ||||
| +static void dw_mci_rockchip_platfm_shutdown(struct platform_device *pdev)
 | ||||
| +{
 | ||||
| +	struct dw_mci *host = platform_get_drvdata(pdev);
 | ||||
| +	struct mmc_host *mmc = host->slot->mmc;
 | ||||
| +	int ret;
 | ||||
| +
 | ||||
| +	if(of_machine_is_compatible("asus,rk3288-tinker")){
 | ||||
| +
 | ||||
| +		mmc_power_off(mmc);
 | ||||
| +
 | ||||
| +		mdelay(20);
 | ||||
| +
 | ||||
| +		if (!IS_ERR(mmc->supply.vmmc))
 | ||||
| +			ret = regulator_enable(mmc->supply.vmmc);
 | ||||
| +
 | ||||
| +		if (!IS_ERR(mmc->supply.vqmmc))
 | ||||
| +			regulator_set_voltage(mmc->supply.vqmmc, 3000000, 3300000);
 | ||||
| +	}
 | ||||
| +}
 | ||||
| +
 | ||||
|  static int dw_mci_rockchip_remove(struct platform_device *pdev) | ||||
|  { | ||||
|  	pm_runtime_get_sync(&pdev->dev); | ||||
| @@ -386,6 +410,7 @@ static const struct dev_pm_ops dw_mci_rockchip_dev_pm_ops = {
 | ||||
|  static struct platform_driver dw_mci_rockchip_pltfm_driver = { | ||||
|  	.probe		= dw_mci_rockchip_probe, | ||||
|  	.remove		= dw_mci_rockchip_remove, | ||||
| +	.shutdown	= dw_mci_rockchip_platfm_shutdown, // Stupid Tinkerboard Hack
 | ||||
|  	.driver		= { | ||||
|  		.name		= "dwmmc_rockchip", | ||||
|  		.of_match_table	= dw_mci_rockchip_match, | ||||
| diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c
 | ||||
| index d9b4acefe..5627c9da6 100644
 | ||||
| --- a/drivers/mmc/host/dw_mmc.c
 | ||||
| +++ b/drivers/mmc/host/dw_mmc.c
 | ||||
| @@ -39,8 +39,10 @@
 | ||||
|  #include <linux/of.h> | ||||
|  #include <linux/of_gpio.h> | ||||
|  #include <linux/mmc/slot-gpio.h> | ||||
| +#include <linux/reboot.h> // Stupid Tinkerboard Hack
 | ||||
|   | ||||
|  #include "dw_mmc.h" | ||||
| +#include "../core/core.h" // Stupid Tinkerboard hack
 | ||||
|   | ||||
|  /* Common flag combinations */ | ||||
|  #define DW_MCI_DATA_ERROR_FLAGS	(SDMMC_INT_DRTO | SDMMC_INT_DCRC | \ | ||||
| @@ -2782,6 +2784,31 @@ static irqreturn_t dw_mci_interrupt(int irq, void *dev_id)
 | ||||
|  	return IRQ_HANDLED; | ||||
|  } | ||||
|   | ||||
| +/* Stupid Tinkerboard Hack */
 | ||||
| +struct dw_mci *mSdhost;
 | ||||
| +void setmmcEmergency() {
 | ||||
| +	struct mmc_host *mmc;
 | ||||
| +	int ret;
 | ||||
| +
 | ||||
| +	printk(KERN_ERR "Emergency route taken.\n");
 | ||||
| +	if (of_machine_is_compatible("asus,rk3288-tinker")) {
 | ||||
| +		mmc = mSdhost->slot->mmc;
 | ||||
| +
 | ||||
| +		mmc_power_off(mmc);
 | ||||
| +
 | ||||
| +		mdelay(20);
 | ||||
| +
 | ||||
| +		if (!IS_ERR(mmc->supply.vmmc))
 | ||||
| +			ret = regulator_enable(mmc->supply.vmmc);
 | ||||
| +
 | ||||
| +		if (!IS_ERR(mmc->supply.vqmmc))
 | ||||
| +			regulator_set_voltage(mmc->supply.vqmmc, 3000000, 3300000);
 | ||||
| +	}
 | ||||
| +}
 | ||||
| +EXPORT_SYMBOL(setmmcEmergency);
 | ||||
| +
 | ||||
| +
 | ||||
| +
 | ||||
|  static int dw_mci_init_slot_caps(struct dw_mci_slot *slot) | ||||
|  { | ||||
|  	struct dw_mci *host = slot->host; | ||||
| @@ -2858,6 +2885,10 @@ static int dw_mci_init_slot(struct dw_mci *host)
 | ||||
|  		mmc->f_max = freq[1]; | ||||
|  	} | ||||
|   | ||||
| +	/* Stupid Tinkerboard Hack */
 | ||||
| +	if (of_find_property(host->dev->of_node, "supports-sd", NULL))
 | ||||
| +		mSdhost = host;
 | ||||
| +
 | ||||
|  	/*if there are external regulators, get them*/ | ||||
|  	ret = mmc_regulator_get_supply(mmc); | ||||
|  	if (ret) | ||||
| diff --git a/include/linux/reboot.h b/include/linux/reboot.h
 | ||||
| index e63799a6e..057d3ce0c 100644
 | ||||
| --- a/include/linux/reboot.h
 | ||||
| +++ b/include/linux/reboot.h
 | ||||
| @@ -77,6 +77,8 @@ extern char poweroff_cmd[POWEROFF_CMD_PATH_LEN];
 | ||||
|   | ||||
|  extern void orderly_poweroff(bool force); | ||||
|  extern void orderly_reboot(void); | ||||
| +/* Stupid Tinkerboard Hack */
 | ||||
| +extern void setmmcEmergency(void);
 | ||||
|   | ||||
|  /* | ||||
|   * Emergency restart, callable from an interrupt handler. | ||||
| diff --git a/kernel/reboot.c b/kernel/reboot.c
 | ||||
| index e4ced883d..c8e678ce6 100644
 | ||||
| --- a/kernel/reboot.c
 | ||||
| +++ b/kernel/reboot.c
 | ||||
| @@ -61,6 +61,7 @@ void (*pm_power_off_prepare)(void);
 | ||||
|  void emergency_restart(void) | ||||
|  { | ||||
|  	kmsg_dump(KMSG_DUMP_EMERG); | ||||
| +	setmmcEmergency(); // Stupid Tinkerboard Hack
 | ||||
|  	machine_emergency_restart(); | ||||
|  } | ||||
|  EXPORT_SYMBOL_GPL(emergency_restart); | ||||
| -- 
 | ||||
| 2.14.1 | ||||
| 
 | ||||
| @ -0,0 +1,82 @@ | ||||
| From 4ffe79de7272234408a9179aa4c403ee1b67a362 Mon Sep 17 00:00:00 2001 | ||||
| From: Myy Miouyouyou <myy@miouyouyou.fr> | ||||
| Date: Thu, 7 Dec 2017 21:27:52 +0100 | ||||
| Subject: [PATCH] soc: rockchip: power-domain: export idle request | ||||
| 
 | ||||
| We need to put the power status of HEVC/RKVDEC IP into IDLE | ||||
| unless we can't reset that IP or the SoC would crash down. | ||||
| rockchip_pmu_idle_request(dev, true)---> enter idle | ||||
| rockchip_pmu_idle_request(dev, false)---> exit idle | ||||
| 
 | ||||
| Only the video codec drivers of rockchip platform would | ||||
| request this patch currently. | ||||
| 
 | ||||
| I am not sure whether it is necessary to add a new function | ||||
| at generic power domain. I want someone give me some advises | ||||
| here. | ||||
| 
 | ||||
| Signed-off-by: Myy Miouyouyou <myy@miouyouyou.fr> | ||||
| ---
 | ||||
|  drivers/soc/rockchip/pm_domains.c | 23 +++++++++++++++++++++++ | ||||
|  include/linux/rockchip_pmu.h      | 15 +++++++++++++++ | ||||
|  2 files changed, 38 insertions(+) | ||||
|  create mode 100644 include/linux/rockchip_pmu.h | ||||
| 
 | ||||
| diff --git a/drivers/soc/rockchip/pm_domains.c b/drivers/soc/rockchip/pm_domains.c
 | ||||
| index 40b75748..0006ed53 100644
 | ||||
| --- a/drivers/soc/rockchip/pm_domains.c
 | ||||
| +++ b/drivers/soc/rockchip/pm_domains.c
 | ||||
| @@ -180,6 +180,29 @@ static int rockchip_pmu_set_idle_request(struct rockchip_pm_domain *pd,
 | ||||
|  	return 0; | ||||
|  } | ||||
|   | ||||
| +int rockchip_pmu_idle_request(struct device *dev, bool idle)
 | ||||
| +{
 | ||||
| +	struct generic_pm_domain *genpd;
 | ||||
| +	struct rockchip_pm_domain *pd;
 | ||||
| +	int ret;
 | ||||
| +
 | ||||
| +	if (IS_ERR_OR_NULL(dev))
 | ||||
| +		return -EINVAL;
 | ||||
| +
 | ||||
| +	if (IS_ERR_OR_NULL(dev->pm_domain))
 | ||||
| +		return -EINVAL;
 | ||||
| +
 | ||||
| +	genpd = pd_to_genpd(dev->pm_domain);
 | ||||
| +	pd = to_rockchip_pd(genpd);
 | ||||
| +
 | ||||
| +	mutex_lock(&pd->pmu->mutex);
 | ||||
| +	ret = rockchip_pmu_set_idle_request(pd, idle);
 | ||||
| +	mutex_unlock(&pd->pmu->mutex);
 | ||||
| +
 | ||||
| +	return ret;
 | ||||
| +}
 | ||||
| +EXPORT_SYMBOL(rockchip_pmu_idle_request);
 | ||||
| +
 | ||||
|  static int rockchip_pmu_save_qos(struct rockchip_pm_domain *pd) | ||||
|  { | ||||
|  	int i; | ||||
| diff --git a/include/linux/rockchip_pmu.h b/include/linux/rockchip_pmu.h
 | ||||
| new file mode 100644 | ||||
| index 00000000..720b3314
 | ||||
| --- /dev/null
 | ||||
| +++ b/include/linux/rockchip_pmu.h
 | ||||
| @@ -0,0 +1,15 @@
 | ||||
| +/*
 | ||||
| + * pm_domain.h - Definitions and headers related to device power domains.
 | ||||
| + *
 | ||||
| + * Copyright (C) 2017 Randy Li <ayaka@soulik.info>.
 | ||||
| + *
 | ||||
| + * This file is released under the GPLv2.
 | ||||
| + */
 | ||||
| +
 | ||||
| +#ifndef _LINUX_ROCKCHIP_PM_H
 | ||||
| +#define _LINUX_ROCKCHIP_PM_H
 | ||||
| +#include <linux/device.h>
 | ||||
| +
 | ||||
| +int rockchip_pmu_idle_request(struct device *dev, bool idle);
 | ||||
| +
 | ||||
| +#endif /* _LINUX_ROCKCHIP_PM_H */
 | ||||
| -- 
 | ||||
| 2.14.1 | ||||
| 
 | ||||
| @ -0,0 +1,36 @@ | ||||
| From c1c8509bb90f2b3ed046d99cf0fedbddc24290ec Mon Sep 17 00:00:00 2001 | ||||
| From: Myy Miouyouyou <myy@miouyouyou.fr> | ||||
| Date: Thu, 3 May 2018 21:47:40 +0200 | ||||
| Subject: [PATCH] drivers: drm: rockchip: Enable IRQ on unbind | ||||
| 
 | ||||
| Not doing this generate atrocious delays when plugging a screen, | ||||
| making the whole 3D stack unusable. | ||||
| 
 | ||||
| This is an adaptation of Jeffy Chen patch, originally provided | ||||
| here : | ||||
| http://lists.infradead.org/pipermail/linux-rockchip/2018-April/020427.html | ||||
| 
 | ||||
| Thanks to @JeffyCN for this patch. | ||||
| 
 | ||||
| This resolves issue #4 | ||||
| 
 | ||||
| Signed-off-by: Myy Miouyouyou <myy@miouyouyou.fr> | ||||
| ---
 | ||||
|  drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 1 + | ||||
|  1 file changed, 1 insertion(+) | ||||
| 
 | ||||
| diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
 | ||||
| index 53d4afe1..f903171a 100644
 | ||||
| --- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
 | ||||
| +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
 | ||||
| @@ -1601,6 +1601,7 @@ static void vop_unbind(struct device *dev, struct device *master, void *data)
 | ||||
|  { | ||||
|  	struct vop *vop = dev_get_drvdata(dev); | ||||
|   | ||||
| +	enable_irq(vop->irq);
 | ||||
|  	pm_runtime_disable(dev); | ||||
|  	vop_destroy_crtc(vop); | ||||
|   | ||||
| -- 
 | ||||
| 2.17.0 | ||||
| 
 | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 SolidHal
						SolidHal