Jump to content

Mike R9FT

Members
  • Posts

    19
  • Joined

  • Last visited

Everything posted by Mike R9FT

  1. I really hope I did everything right https://github.com/armbian/build/pull/1270
  2. Just for information, I have tested ADS7846 touchscreen on new 4.19.y Bionic Orangepi one. What I did to get it work: 1. Upgrade dtc to version 1.4.7. By default it was dtc version 1.4.5 and I have get errors while trying to do " armbian-add-overlay sun8i-h3-spi-ads7846.dts" 2. There is missing driver in kernel by default, so I have installed ubuntu bionic 18.04.1 LTS on PC. After that use this guide https://docs.armbian.com/Developer-Guide_Build-Preparation/ Switch on ADS7846 module, then install new compiled package linux-image-next-sunxi_5.74_armhf.deb on OrangePi-one.
  3. Hi, I am using rtc ds1307 on mainline with the following way, works correrctly: add to armbianEnv.txt: overlays=i2c0 next from shell do : echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-0/new_device rm /dev/rtc ln -s /dev/rtc1 /dev/rtc hwclock -s -f /dev/rtc But it is really more correct to use ds1307.dts. Thank you for sharing.
  4. Hi I am using ADM2483 RS-485 Transceiver. Now I am control RX/TX switch with GPIO pin from userspace. Can anyone tell, what is the best way to control RX/TX switch from mainline ? Thanks.
  5. I need to count frequency about 1 Khz on GPIO input pin. Is it possible and what is the best way to do this? Tried WrinigOP isr.c but no luck. Thanks.
  6. Hi First of all you should build kernel from source. Here is a good guide https://docs.armbian.com/Developer-Guide_Build-Preparation/ I suggest you to use virtualbox with ubuntu 16.04 x64 Another quick way is to use already compiled https://forum.armbian.com/applications/core/interface/file/attachment.php?id=1209 Put it to /lib/modules/3.4.113-sun8i/kernel/drivers/input/touchscreen Also you should update your configuration by using bin2fex and fex2bin utilities. See here https://docs.armbian.com/Hardware_Allwinner/. Here is fex config adds: [spi0] spi_used = 1 spi_cs_bitmap = 1 spi_mosi = port:PC00<3><default><default><default> spi_miso = port:PC01<3><default><default><default> spi_sclk = port:PC02<3><default><default><default> spi_cs0 = port:PA21<1><1><default><default> [spi_devices] spi_dev_num = 1 [spi_board0] modalias = "ads7846" max_speed_hz = 1500000 bus_num = 0 chip_select = 0 mode = 0 full_duplex = 1 manual_cs = 0 reboot, load driver with modprobe ads7846.ko -f calibrate with xinput_calibrator
  7. if somebody have dificulties with running touch here is related topics. I am confirm that it is working with orange pi one legacy kernel mainline kernel 5" display, see sun8i-h3-spi-ads7846.dts mainline 7" display from waveshare, see sun8i-h3-spi-ads7846.dts here is also original dts for mainline https://github.com/armbian/sunxi-DT-overlays/blob/master/examples/spi-ads7846.dts For now, I am using mainline, and I don't found any stability problems or glithes.
  8. Touch screen is also working with following tune up sun8i-h3-spi-ads7846.dts /dts-v1/; /plugin/; / { compatible = "allwinner,sun8i-h3"; fragment@0 { target = <&pio>; __overlay__ { ads7846_pins: ads7846_pins { pins= "PA2"; function = "irq"; }; }; }; fragment@1 { target = <&spi0>; __overlay__ { #address-cells = <1>; #size-cells = <0>; status = "okay"; ads7846@0 { compatible = "ti,ads7846"; reg = <1>; /* Chip Select 0 */ status = "okay"; pinctrl-names = "default"; pinctrl-0 = <&ads7846_pins>; spi-max-frequency = <500000>; interrupt-parent = <&pio>; interrupts = <0 2 2>; /* PA7 IRQ_TYPE_EDGE_FALLING */ pendown-gpio = <&pio 0 2 0>; /* PA7 */ /* driver defaults, optional */ ti,x-min = /bits/ 16 <0>; ti,x-max = /bits/ 16 <4095>; ti,y-min = /bits/ 16 <0>; ti,y-max = /bits/ 16 <4095>; ti,swap-xy = <1>; ti,pressure-min = /bits/ 16 <0>; ti,pressure-max = /bits/ 16 <255>; /* ti,x-plate-ohms = /bits/ 16 <180>; */ ti,x-plate-ohms = /bits/ 16 <100>; ti,debounce_max = /bits/ 16 <15000>; ti,debounce_tol = /bits/ 16 <65535>; ti,debounce_rep = /bits/ 16 <100>; ti,vref-delay-usecs = /bits/ 16 <450>; ti,keep_vref_on = <1>; ti,settle_delay_usecs = /bits/ 16 <100>; ti,penirq-recheck-delay-usecs = /bits/ 16 <100>; }; }; }; }; /etc/X11/xorg.conf.d/99-calibr.conf Section "InputClass" Identifier "calibration" MatchProduct "ADS7846 Touchscreen" Option "Calibration" "154 3975 3933 66" Option "SwapAxes" "0" EndSection
  9. Thank you. It is working now with this patch: diff --git a/drivers/video/sunxi/sunxi_dw_hdmi.c b/drivers/video/sunxi/sunxi_dw_hdmi.c index 33920a2..9ae547a 100644 --- a/drivers/video/sunxi/sunxi_dw_hdmi.c +++ b/drivers/video/sunxi/sunxi_dw_hdmi.c @@ -122,13 +122,14 @@ static int sunxi_dw_hdmi_get_plug_in_status(void) static int sunxi_dw_hdmi_wait_for_hpd(void) { ulong start; + mdelay(3000); start = get_timer(0); do { if (sunxi_dw_hdmi_get_plug_in_status()) return 0; udelay(100); - } while (get_timer(start) < 300); + } while (get_timer(start) < 5000); return -1; } Is it possible to set timeouts from environment variable?
  10. I am not get it working. Now I am switching gpio from user-space side.
  11. Hi I connect 7" hdmi display from waveshare to orange pi one on mainline dev kernel. http://www.waveshare.com/wiki/7inch_HDMI_LCD When it is powered before orange, it works ok. But it don't work if it is powered at the same time. I am tried to add hpd_delay at the top of boot.cmd: setenv video-mode sunxi:1024x768-24@60,monitor=hdmi,hpd=1,hpd_delay=20000,edid=1 saveenv the do mkimage -C none -A arm -T script -d /boot/boot.cmd /boot/boot.scr But still no lack, display shows "no cable connected" Also when board start up, u-boot show on serial console this if display powered up before board: CPU: Allwinner H3 (SUN8I 1680) Model: Xunlong Orange Pi One DRAM: 512 MiB MMC: SUNXI SD/MMC: 0 In: serial Out: vidconsole Err: vidconsole And this if display powered same time with board: CPU: Allwinner H3 (SUN8I 1680) Model: Xunlong Orange Pi One DRAM: 512 MiB MMC: SUNXI SD/MMC: 0 In: serial Out: serial Err: serial How can I debug this? Also I tried another 5" hdmi display, that is working correctly (it have another hdmi chip, so it starts more quickly)
  12. I need it because of hardware 40pin connector compatibility with another board. Tried the following overlay, but no luck /dts-v1/; /plugin/; / { compatible = "allwinner,sun8i-h3"; fragment@0 { target-path = "/aliases"; __overlay__ { serial3 = "/soc/serial@01c28c00"; }; }; fragment@1 { target = <&uart3>; __overlay__ { pinctrl-names = "default"; pinctrl-0 = <&uart3_pins>; uart-has-rtscts; rts-gpios = <&pio 3 14 0>; /* PD14 */ status = "okay"; }; }; }; Overlay applied: ls -l /sys/devices/platform/serial8250/subsystem/devices/1c28c00.serial/of_node/ total 0 -r--r--r-- 1 root root 8 May 22 04:57 clocks -r--r--r-- 1 root root 17 May 22 04:57 compatible -r--r--r-- 1 root root 6 May 22 04:57 dma-names -r--r--r-- 1 root root 16 May 22 04:57 dmas -r--r--r-- 1 root root 12 May 22 04:57 interrupts -r--r--r-- 1 root root 4 May 22 04:57 linux,phandle -r--r--r-- 1 root root 7 May 22 04:57 name -r--r--r-- 1 root root 4 May 22 04:57 phandle -r--r--r-- 1 root root 4 May 22 04:57 pinctrl-0 -r--r--r-- 1 root root 8 May 22 04:57 pinctrl-names -r--r--r-- 1 root root 8 May 22 04:57 reg -r--r--r-- 1 root root 4 May 22 04:57 reg-io-width -r--r--r-- 1 root root 4 May 22 04:57 reg-shift -r--r--r-- 1 root root 8 May 22 04:57 resets -r--r--r-- 1 root root 16 May 22 04:57 rts-gpios -r--r--r-- 1 root root 5 May 22 04:57 status -r--r--r-- 1 root root 0 May 22 04:57 uart-has-rtscts May be it needs pin mux setup
  13. I guess it needs modification in drivers/tty/serial/8250/ For example it is done in the omap-serial.c, here is some chunk of code: static void serial_omap_start_tx(struct uart_port *port) { struct uart_omap_port *up = to_uart_omap_port(port); int res; pm_runtime_get_sync(up->dev); /* Handle RS-485 */ if (port->rs485.flags & SER_RS485_ENABLED) { /* Fire THR interrupts when FIFO is below trigger level */ up->scr &= ~OMAP_UART_SCR_TX_EMPTY; serial_out(up, UART_OMAP_SCR, up->scr); /* if rts not already enabled */ res = (port->rs485.flags & SER_RS485_RTS_ON_SEND) ? 1 : 0; if (gpio_get_value(up->rts_gpio) != res) { gpio_set_value(up->rts_gpio, res); if (port->rs485.delay_rts_before_send > 0) mdelay(port->rs485.delay_rts_before_send); } } if ((port->rs485.flags & SER_RS485_ENABLED) && !(port->rs485.flags & SER_RS485_RX_DURING_TX)) serial_omap_stop_rx(port); serial_omap_enable_ier_thri(up); pm_runtime_mark_last_busy(up->dev); pm_runtime_put_autosuspend(up->dev); }
  14. It's ok, but what about software RTS on another gpio pin using "rts-gpios" statement?
  15. Is it possible to use uart rts gpio on mainline? May be like discribed here https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next/+/refs/heads/akpm-base/Documentation/devicetree/bindings/serial/serial.txt
  16. Thank you. I get it working on mainline (Armbian_5.27.170521_Orangepione_Ubuntu_xenial_dev_4.11.1.7z) with ads7846 (xpt2046 touch with 5" hdmi display) and spidev (ADC mcp3204 connected). Also rtc ds1307 connected to i2c. My armbianEnv.txt adds: overlays=spi-spidev i2c0 param_spidev_spi_bus=0 user_overlays=cs1 sun8i-h3-spi-ads7846 ds1307 cs1.dts /dts-v1/; /plugin/; / { compatible = "allwinner,sun8i-h3"; fragment@0 { target = <&pio>; __overlay__ { spi0_cs1: spi0_cs1 { pins = "PA21"; function = "gpio_out"; output-high; }; }; }; fragment@1 { target = <&spi0>; __overlay__ { pinctrl-names = "default", "default"; pinctrl-1 = <&spi0_cs1>; cs-gpios = <0>, <&pio 0 21 0>; /* PA21 */ }; }; }; sun8i-h3-spi-ads7846.dts /dts-v1/; /plugin/; / { compatible = "allwinner,sun8i-h3"; fragment@0 { target = <&pio>; __overlay__ { ads7846_pins: ads7846_pins { pins= "PA2"; function = "irq"; }; }; }; fragment@1 { target = <&spi0>; __overlay__ { #address-cells = <1>; #size-cells = <0>; status = "okay"; ads7846@0 { compatible = "ti,ads7846"; reg = <1>; /* Chip Select 0 */ status = "okay"; pinctrl-names = "default"; pinctrl-0 = <&ads7846_pins>; spi-max-frequency = <500000>; interrupt-parent = <&pio>; interrupts = <0 2 2>; /* PA7 IRQ_TYPE_EDGE_FALLING */ pendown-gpio = <&pio 0 2 0>; /* PA7 */ /* driver defaults, optional */ ti,x-min = /bits/ 16 <176>; ti,y-min = /bits/ 16 <300>; ti,x-max = /bits/ 16 <3913>; ti,y-max = /bits/ 16 <3947>; ti,pressure-min = /bits/ 16 <0>; ti,pressure-max = /bits/ 16 <255>; ti,x-plate-ohms = /bits/ 16 <180>; ti,debounce_max = /bits/ 16 <15000>; ti,debounce_tol = /bits/ 16 <65535>; ti,debounce_rep = /bits/ 16 <100>; ti,vref-delay-usecs = /bits/ 16 <450>; ti,keep_vref_on = <1>; }; }; }; }; ds1307.dts /dts-v1/; /plugin/; / { compatible = "brcm,bcm2708"; fragment@0 { target = <&i2c0>; __overlay__ { #address-cells = <1>; #size-cells = <0>; status = "okay"; ds1307@68 { compatible = "ds1307"; reg = <0x68>; status = "okay"; }; }; }; }; Also I have used mcp3204.py python script for test from here https://gist.github.com/yoggy/7096133
  17. Also see here https://forum.armbian.com/index.php?/topic/1589-how-enable-ads7846/
  18. Is it possible to add some gpio chip select for support more than one chip select on board ? Loooked on https://github.com/armbian/linux ... ers/spi/spi-sunxi.c I am not found any support of gpio here. Also here https://github.com/armbian/linux/blob/sun8i/drivers/spi/spi-sunxi.h we can see that only one chip select can be used: /* About CS */ #ifdef CONFIG_ARCH_SUN8IW1P1 #define SUNXI_CS_BITMAP(ch) (ch%2 == 0 ? 1 : 3) #define SUNXI_CS_NUM(ch) (ch%2 == 0 ? 1 : 2) #endif #ifdef CONFIG_ARCH_SUN9IW1P1 #define SUNXI_CS_BITMAP(ch) (ch == 3 ? 7 : 1) #define SUNXI_CS_NUM(ch) (ch == 3 ? 4 : 1) #endif #ifndef SUNXI_CS_BITMAP #define SUNXI_CS_BITMAP(ch) 1 #define SUNXI_CS_NUM(ch) 1 #endif Any suggestions? May be someone knows if it is working in other kernel version (for example https://github.com/megous/linux/) ? Thanks
  19. Hi If you are using 3.4.113 kernel (source https://github.com/igorpecovnik/linux ), it is need to modify ads7846.c driver file. Here is info http://www.orangepi.org/orangepibbsen/forum.php?mod=viewthread&tid=444 I'v patched this file by hands, update kernel and driver ads7846.ko on board and it is works. Here is the tool for kernel build https://github.com/armbian/build Note you need ubuntu 16.04 x64 Attached ads7846.ko for 3.4.113 tested on Orange Pi One Put it to /lib/modules/3.4.113-sun8i/kernel/drivers/input/touchscreen If it is not loaded, also try 'modprobe ads7846.ko -f' ads7846.ko
×
×
  • Create New...

Important Information

Terms of Use - Privacy Policy - Guidelines