Jump to content

Recommended Posts

Posted (edited)

@ag123, @c0rnelius, and anyone else that has interest in sound on these devices.

 

I have been able to put together a patch that enables audio for H161/H618 devices.  So far only audio on HDMI works. Analog audio is still generating an error on startup.

 

The patches were taken from a git repository by warpme:

https://github.com/warpme/minimyth2/tree/master/script/kernel/linux-6.6/files

, and probably came from the Zunlong SDK. A lot of the code was written by Allwinner.

 

@pixdrift generated a version of the patches for Armbian and I continued to work on them.

 

I have a git repository if anyone would like to test, particularly on boards other than orangpizero3, on which I have tested.

 

repository:

https://github.com/stephengraf/armbian_build_sg.git

 

There is another repository mentioned in the Armbian Forum:

https://github.com/NickAlilovic/build

 

If anyone has interest and skills to debug the analog audio, the dmesg errors are:

[    7.125509]  ahub_dam-snd-soc-dummy-dai: substream ahub_dam-snd-soc-dummy-dai has no playback, no capture
[    7.125539] sunxi-snd-mach soc:ahub_dam_mach: ASoC: can't create pcm ahub_dam-snd-soc-dummy-dai :-22
[    7.125780] sunxi-snd-mach: probe of soc:ahub_dam_mach failed with error -22

 

Edited by Stephen Graf
removed built images
Posted

thanks, I'd probably try that some time. if audio for HDMI works, I think many users will be happy, I've read some comments some are looking for that.

currently, I'm using headless as wifi ap, so I did not know if it works.

analog may need to go back into h616 zero 2 to see how it is done there, maybe dts etc.

Posted

 

7 hours ago, robertoj said:

OrangePi has this analog audio figured out:

Yes I have tried the Zunlong images for orangepizero3 and they work.  Unfortunately those images are for a Linux 6.1 kernel and the zero3 and 2w were only officially implemented into linux with 6.6. The challenge is to get the Zunlong code into Armbian with the newer kernels.

Posted
6 hours ago, SUPA said:

provide steps so that i can do it

@SUPA Thank you for testing the patch.  I assume it worked and that you are working with an orangepisero3.

 

If you want to build you own images follow the directions in the Armbian build manual: https://docs.armbian.com/Developer-Guide_Build-Preparation/

and clone my repository. Unfortunately I have limited space on my google drive.

 

git clone https://github.com/stephengraf/armbian_build_sg.git

Posted

@Stephen Graf i see that if i use the original kernel source i want to build patched linux-image and linux-header for armbian jammy 6.6.26.
It seems to include support for analog audio. I compile and install these using .

 

**************** i have already tested all my components on jammy 6.6.26 thats why I would prefer using it =========================
 

Here are my cheat sheets:

 

wget https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.6.26.tar.xz

tar -xvf linux-6.6.26.tar.xz
cd ~/src/kernel-source/linux-6.6.26
copy all patches into ~/src/kernel-source/linux-6.6.26

cp /boot/config-$(uname -r) .config

patch -p1 < 0606-dma-sun6i-dma-add-h616-support.patch
patch -p1 < 0608-sound-soc-sunxi-add-codec-driver-for-h616.patch
patch -p1 < 0609-sound-soc-add-sunxi_v2-for-h616-ahub.patch
patch -p1 < 0630-arm64-dts-allwinner-h616.dtsi-add-ths-audio-hdmi.patch
patch -p1 < 0631-arm64-dts-allwinner-h616-OrangePI-Zero23-enable-ths-hdmi-audio.patch
patch -p1 < 0639-arm64-dts-allwinner-h616.dtsi-add-spdif.patch


yes "y" | make oldconfig
sudo make prepare
sudo make clean

cd ~/src/kernel-source/linux-6.6.26

sudo make -j$(nproc) bindeb-pkg LOCALVERSION=-custom
 

cd ~/src/kernel-source/
sudo dpkg -i linux-image-6.6.26-custom_6.6.26-gbbc005ee4185-6_arm64.deb
sudo dpkg -i linux-headers-6.6.26-custom_6.6.26-gbbc005ee4185-6_arm64.deb
sudo dpkg -i linux-libc-dev_6.6.26-gbbc005ee4185-6_arm64.deb


ls -l /boot/Image
ls -l /boot/uInitrd


ln -sf /boot/vmlinuz-6.6.26-custom /boot/Image
ln -sf /boot/initrd.img-6.6.26-custom /boot/uInitrd

cd ~/src/kernel-source/linux-6.6.26

make dtbs


sudo mkdir /boot/dtb-6.6.26-custom/allwinner
sudo cp /root/src/kernel-source/linux-6.6.26/arch/arm64/boot/dts/allwinner/*.dtb /boot/dtb-6.6.26-custom/allwinner/

sudo ln -sfn /boot/dtb-6.6.26-custom /boot/dtb

sudo reboot now



however my board doesnt boot. 

Do you have any suggestions? maybe u-boot?

I have created the needed symlink which I though would be enough for u-boot.

Maybe my approach is completely wrong

Posted
5 hours ago, SUPA said:

i have already tested all my components on jammy 6.6.26 thats why I would prefer using it

@SUPAThere is a lot more to building a system than just the kernel.  That is what Armbian tries to do for you. I recommend that you use the Armbian build system. You should be able to build the system that you want.

The audio patches do include analog audio, but to date there is still a problem and it does not start up.

 

The armbian-config procedure has options to load kernel headers and also source.

 

Posted (edited)
21.04.2024 в 02:07, Stephen Graf сказал:

If anyone has interest and skills to debug the analog audio, the dmesg errors are:

[    7.125509]  ahub_dam-snd-soc-dummy-dai: substream ahub_dam-snd-soc-dummy-dai has no playback, no capture
[    7.125539] sunxi-snd-mach soc:ahub_dam_mach: ASoC: can't create pcm ahub_dam-snd-soc-dummy-dai :-22
[    7.125780] sunxi-snd-mach: probe of soc:ahub_dam_mach failed with error -22

 

Hi, I think these messages are not related to analog audio, at least on my custom board with t507 processor, analog audio works with this error.
You can simply disable them as it was in the linux kernel 6.1

 

Цитата

--- 6.7__sunxi64__arm64-6.7.9/sound/soc/soc-pcm.c    2024-02-21 00:16:07.645017846 +0300
+++ linux-6.7.9-sk/sound/soc/soc-pcm.c    2024-03-16 13:34:42.000000000 +0300
@@ -2867,14 +2867,14 @@ static int soc_get_playback_capture(stru
 
     if (dai_link->capture_only)
         has_playback = 0;
-
+#if 0
     if (!has_playback && !has_capture) {
         dev_err(rtd->dev, "substream %s has no playback, no capture\n",
             dai_link->stream_name);
 
         return -EINVAL;
     }
-
+#endif


The sound works for me if I turn it on in the mixer

 

Цитата

    /usr/bin/amixer -c 0 set 'Left Output Mixer DACL' 100% unmute
    /usr/bin/amixer -c 0 set 'Left Output Mixer DACR' 100% unmute
    /usr/bin/amixer -c 0 set 'Right Output Mixer DACL' 100% unmute
    /usr/bin/amixer -c 0 set 'Right Output Mixer DACR' 100% unmute

 

It’s strange, but I have another problem - the sound does not work through HDMI and there is also a problem with reading EDID through the DDC interface. I would be grateful if you could tell me whether automatic detection of monitor or TV resolution via HDMI works for you.

Edited by sasa
Posted
5 hours ago, sasa said:

whether automatic detection of monitor or TV resolution via HDMI works for you

@sasa Many thanks for pointing out that analog sound just has to be enabled!  I just tested and it works. I was dreading trying to debug kernel code when I should have been looking at the fundamental "is it turned on?"

I will try the patch to remove the other sound error.

 

As to automatic detection, yes on my orangepizero3 with H618 Allwinner SOC, HDMI detects the monitor and sets the proper resolution.

Posted (edited)
6 часов назад, Stephen Graf сказал:

yes on my orangepizero3 with H618 Allwinner SOC, HDMI detects the monitor and sets the proper resolution

 

Thanks for confirming.

 

Цитата

I will try the patch to remove the other sound error.


In fact, my patch does not solve the problem and can only be considered as a temporary solution.
I think we need a new driver for the audio multiplexer, for example, as is implemented for NXP processors.
https://elixir.bootlin.com/linux/v6.6.30/source/sound/soc/fsl/imx-audmux.c
For these processors, the audio multiplexer configuration is described via DT
https://elixir.bootlin.com/linux/v6.6.30/source/arch/arm/boot/dts/nxp/imx/imx6qdl-kontron-samx6i.dtsi#L176

Edited by sasa
Posted

@Stephen Graf I successfully compiled using armbian build. But not sure if i successfully integrated the patches. and also don't know if I used all the correct patches. Could you review and advise please:

Here are my steps:

 

sudo apt-get -y -qq install git  

mkdir ~/src

cd ~/src

======================= git hdmi audio patches =======================

git clone https://github.com/warpme/minimyth2.git

 

git clone --depth=1 --branch=main https://github.com/armbian/build

 

mkdir -p ~/src/build/userpatches/kernel/sunxi-current

 

cp ~/src/minimyth2/script/kernel/linux-6.6/files/0600-drivers-h616-wip-add-usb-emac2-support.patch ~/src/build/userpatches/kernel/sunxi-current/

 

cp ~/src/minimyth2/script/kernel/linux-6.6/files/0601-drivers-thermal-allwinner-add-h616-ths-support.patch ~/src/build/userpatches/kernel/sunxi-current/

 

cp ~/src/minimyth2/script/kernel/linux-6.6/files/0602-media-cedrus-add-H616-variant.patch ~/src/build/userpatches/kernel/sunxi-current/

 

cp ~/src/minimyth2/script/kernel/linux-6.6/files/0603-soc-sunxi-sram-Add-SRAM-C1-H616-handling.patch ~/src/build/userpatches/kernel/sunxi-current/

 

cp ~/src/minimyth2/script/kernel/linux-6.6/files/0606-dma-sun6i-dma-add-h616-support.patch ~/src/build/userpatches/kernel/sunxi-current/

 

cp ~/src/minimyth2/script/kernel/linux-6.6/files/0607-drivers-drm-wip-add-h616-hdmi-jernejsk-24102023.patch ~/src/build/userpatches/kernel/sunxi-current/

 

cp ~/src/minimyth2/script/kernel/linux-6.6/files/0608-sound-soc-sunxi-add-codec-driver-for-h616.patch ~/src/build/userpatches/kernel/sunxi-current/

 

cp ~/src/minimyth2/script/kernel/linux-6.6/files/0609-sound-soc-add-sunxi_v2-for-h616-ahub.patch ~/src/build/userpatches/kernel/sunxi-current/

 

cp ~/src/minimyth2/script/kernel/linux-6.6/files/0615-drivers-iommu-sun50i-iommu-fix-iommu-on-h616.patch ~/src/build/userpatches/kernel/sunxi-current/

 

cp ~/src/minimyth2/script/kernel/linux-6.6/files/0630-arm64-dts-allwinner-h616.dtsi-add-ths-audio-hdmi.patch ~/src/build/userpatches/kernel/sunxi-current/

 

cp ~/src/minimyth2/script/kernel/linux-6.6/files/0631-arm64-dts-allwinner-h616-OrangePI-Zero23-enable-ths-hdmi-audio.patch ~/src/build/userpatches/kernel/sunxi-current/

 

cp ~/src/minimyth2/script/kernel/linux-6.6/files/0639-arm64-dts-allwinner-h616.dtsi-add-spdif.patch ~/src/build/userpatches/kernel/sunxi-current/

 

cp ~/src/minimyth2/script/kernel/linux-6.6/files/0640-arm64-dts-allwinner-h618-enable-spdif-opi23-tanix-tx6s.patch ~/src/build/userpatches/kernel/sunxi-current/

 

ls ~/src/build/userpatches/kernel/sunxi-current

 

=========================  armbian build ===========================

cd ~/src/build  

./compile.sh

 

 

Posted
9 hours ago, SUPA said:

But not sure if i successfully integrated the patches.

@SUPA The warpme patches need work to implement into Armbian.  That is what I have been trying to do.  When and if we get it right, they should be included into the Armbian system.

 

In the meantime clone my repository, which has the patches implemented, and build your flavour of system from there.

cd ~/

git clone https://github.com/stephengraf/armbian_build_sg.git

cd armbian_build_sg

./compile.sh

 

The HDMI sound should work immediately.

The analog needs to be enabled as @sasa suggested:

 

    /usr/bin/amixer -c 0 set 'Left Output Mixer DACL' 100% unmute
    /usr/bin/amixer -c 0 set 'Left Output Mixer DACR' 100% unmute
    /usr/bin/amixer -c 0 set 'Right Output Mixer DACL' 100% unmute
    /usr/bin/amixer -c 0 set 'Right Output Mixer DACR' 100% unmute

Posted
15 hours ago, sasa said:

In fact, my patch does not solve the problem and can only be considered as a temporary solution.

@sasa  I tested with your patch and it gets rid of the error but also creates a new sound device. ahubdam, that has no input or output.

 

I then just took the device creation out of the dtb and then there is no error even without the patch.  Analog and HDMI audio still work.

 

This is the piece removed from the dtb.

 

              ahub_dam_mach {
                        compatible = "allwinner,sunxi-snd-mach";
                        soundcard-mach,name = "ahubdam";
                        status = "okay";
                        phandle = <0x3f>;

                        soundcard-mach,cpu {
                                sound-dai = <0x0e>;
                        };

                        soundcard-mach,codec {
                        };
                };

Posted
11 hours ago, Stephen Graf said:

@SUPA The warpme patches need work to implement into Armbian.  That is what I have been trying to do.  When and if we get it right, they should be included into the Armbian system.

 

In the meantime clone my repository, which has the patches implemented, and build your flavour of system from there.

cd ~/

git clone https://github.com/stephengraf/armbian_build_sg.git

cd armbian_build_sg

./compile.sh

 

The HDMI sound should work immediately.

The analog needs to be enabled as @sasa suggested:

 

    /usr/bin/amixer -c 0 set 'Left Output Mixer DACL' 100% unmute
    /usr/bin/amixer -c 0 set 'Left Output Mixer DACR' 100% unmute
    /usr/bin/amixer -c 0 set 'Right Output Mixer DACL' 100% unmute
    /usr/bin/amixer -c 0 set 'Right Output Mixer DACR' 100% unmute

Thank you soooo much Stephan. I realized my error. 

I had to add the patches with the expected root path. Which was linux6.6. 

So I had to add my patches here:

~/src/build/userpatches/kernel/sunxi-6.6/linux-6.6/

@sasa Thank you for showing us how to enable audio through the mixer.

 

Posted
29 minutes ago, sakesm said:

I found a bug

@sakesm Yes i came across that also.  Can you confirm that it only happens on analog audio and not on HDMI and when using pulseaudio.

I also tested with mpg123 and did not have problems using the mpg123 built in volume controls.

Posted
2 hours ago, Stephen Graf said:

Can you confirm that it only happens on analog audio and not on HDMI and when using pulseaudio.

Sorry, I don't have a device that supports hdmi audio

 

2 hours ago, Stephen Graf said:

I also tested with mpg123 and did not have problems using the mpg123 built in volume controls.

I tried to use mpg123 to play audio, but as long as the Volume Control is turned on, the bug also appeared

 

I'm still new to audio and video, so I don't know how to solve it

Posted

In pavucontrol, which is the Configuration in Volume Control, set the second Audio to off and exit. After playing the audio and opening the Volume Control at the same time, this problem will not occur and can be adjusted normally

 

My understanding is that two Audio may have output conflict?

Posted

@sakesm Thank you for the update.  I don't have a lot of experience with audio either.  Usually it just works.

With mpg123 you can adjust volume with the + and - keys, which I think do not cause any problems.

Posted
09.05.2024 в 01:40, sasa сказал:

the sound does not work through HDMI and there is also a problem with reading EDID through the DDC interface

Perhaps it will be interesting to someone - audio on hdmi and edid reading work on the t507 too, there was a problem in our DDC connection scheme.

Posted

I registered to say that this works *perfectly* for analog/line out on my OrangePi Zero3.

Additionally, I wanted to mention that I ran the build myself via the build framework.

My install target is actually an existing DietPi machine. I installed everything but the u-boot deb (which seemed to cause some trouble with booting? I'd not investigated any more than recovering from the error by reinstalling the old packages).

It looks like *maybe* all I needed was the kernel itself (headers, libc, base-files, bsp etc all being "extraneous", but I went ahead and installed those).
This gets me a lot closer to my whole-home audio setup! Thanks for putting in the work for this.

Is there a possibility of getting this upstreamed? I imagine that this would be extremely useful as such (and we wouldn't have to, say, disable kernel updates on these boxes to keep analog audio)

Posted

@bryan_bennett Thank you for testing and for your comments.

I am starting to work on putting together a pr for Armbian.  It might take a while.

There is a problem with analog audio on Pulseaudio. It seems that if you open the Pulseaudio volume control, the analog audio starts to play at a higher speed.  This does not happen with HDMI audio.  It also does not happen if one controls audio with the app audio controls, eg + - on mpg123.

  • Solution
Posted

The sound patches have now been implemented in Armbian current and edge.

The community images for orangepizero3 are only updated once a week.  So either wait for a new image or build one yourself from Armbian build on github.

Posted
On 5/31/2024 at 12:33 AM, Stephen Graf said:

There is a problem with analog audio on Pulseaudio. It seems that if you open the Pulseaudio volume control, the analog audio starts to play at a higher speed. 

@Stephen GrafI tried switching between the two audio devices over the last few days and found that if I chose to use hdmi audio before playing a video, there was no speedup when I switched back and forth between the Default Sink while playing a video.

However, if you choose to use analog audio before playing the video, the phenomenon will continue to occur after the video is played. I feel that this will be a breakthrough to solve the problem

Posted

@Stephen Graf I almost forgot to simulate the problem of audio disabling. In order to compile it to enable sound by default, I added a modification in armbian-audio-config

#!/usr/bin/env bash

# Check that we have the tools required available, otherwise exit with no error.
# Use command -v, not which, which is deprecated.
[[ -z $(command -v amixer) ]] && echo "Missing amixer; doing nothing." && exit 0
[[ -z $(command -v alsactl) ]] && echo "Missing alsactl; doing nothing." && exit 0
[[ -z $(command -v aplay) ]] && echo "Missing aplay; doing nothing." && exit 0

mixer_cmds() {
    parm=${3:-on}
    echo "sset '$1' '$2' '$parm'"
    echo "sset '$1' '$parm'"
}

mixer_set() {
  parm=${3:-unmute}
    echo "set '$1' '$2' '$parm'"
}

if [ -f "$HOME/.config/sound.conf" ]; then
    alsactl restore -f "$HOME/.config/sound.conf"
else
    # get card num
    #card=`echo $1 | sed 's/[^0-9]*//g'`
    card1=$(aplay -l | grep "device 0" | awk '{print $3}')
    #echo $card1

    for card in $card1; do (
        #echo $card

        # set common mixer params
        mixer_cmds Master 0db
        mixer_cmds Front 100%
        mixer_cmds PCM 0db
        mixer_cmds Synth 100%

        # mute CD, since using digital audio instead
        mixer_cmds CD 0% mute

        # Only unmute Line and Aux if they are possibly used.
        #  mixer_cmds Line 100%
        #  mixer_cmds Aux 100%

        # mute mic
        mixer_cmds Mic 0% mute

        # ESS 1969 chipset has 2 PCM channels
        mixer_cmds PCM,1 100%

        # Trident/YMFPCI/emu10k1
        mixer_cmds Wave 100%
        mixer_cmds Music 100%
        mixer_cmds AC97 100%
        mixer_cmds Surround 90%
        mixer_cmds 'Surround Digital' 90%
        mixer_cmds 'Wave Surround' 90%
        mixer_cmds 'Duplicate Front' 90%
        mixer_cmds 'Sigmatel 4-Speaker Stereo' 90%

        # CS4237B chipset:
        mixer_cmds 'Master Digital' 100%

        # DRC
        mixer_cmds 'Dynamic Range Compression' 90%

        # Envy24 chips with analog outs
        mixer_cmds DAC 100%
        mixer_cmds DAC,0 100%
        mixer_cmds DAC,1 100%

        # some notebooks use headphone instead of master
        mixer_cmds Headphone 100%
        mixer_cmds Speaker 100%
        mixer_cmds 'Internal Speaker' 0% mute
        mixer_cmds Playback 100%
        mixer_cmds Headphone 100%
        mixer_cmds Speaker 100%
        mixer_cmds Center 100%
        mixer_cmds LFE 100%
        mixer_cmds Center/LFE 100%

        # Intel P4P800-MX  (Ubuntu bug #5813)
        mixer_cmds 'Master Playback Switch' on

        # set digital output mixer params
        mixer_cmds 'IEC958' 100% on
        mixer_cmds 'IEC958 Output' 100%
        mixer_cmds 'IEC958 Coaxial' 100%
        mixer_cmds 'IEC958 LiveDrive' 100%
        mixer_cmds 'IEC958 Optical Raw' 100%
        mixer_cmds 'SPDIF Out' 100%
        mixer_cmds 'SPDIF Front' 100%
        mixer_cmds 'SPDIF Rear' 100%
        mixer_cmds 'SPDIF Center/LFE' 100%
        mixer_cmds 'Master Digital' 100%

        mixer_cmds 'Analog Front' 100%
        mixer_cmds 'Analog Rear' 100%
        mixer_cmds 'Analog Center/LFE' 100%

        # ASRock ION 330 (and perhaps others) has 2 IEC958 channels
        mixer_cmds IEC958,0 on
        mixer_cmds IEC958,1 on

        # some ION2 has much more IEC958 channels ...
        mixer_cmds IEC958,2 on
        mixer_cmds IEC958,3 on

        # ASRock ION 330 has Master Front set to 0
        mixer_cmds 'Master Front' 100%

        # Shuttle XS35GT needs this too
        mixer_cmds 'Master',0 100% on

        # and this for various Fusion devices like Zotac ZBOX
        mixer_cmds 'Front',0 100% on

        # NVidia CK804 sound devices
        mixer_cmds 'IEC958 Playback AC97-SPSA' 100%

        # Allwinner H3 Analog
        mixer_cmds 'Line Out' 0db on
    
            # Allwinner H618 Analog
            mixer_set 'Left Output Mixer DACL' 100%
            mixer_set 'Left Output Mixer DACR' 100%
            mixer_set 'Right Output Mixer DACL' 100%
            mixer_set 'Right Output Mixer DACR' 100%
    
        # Allwinner A20 Analog
        mixer_cmds 'Power Amplifier' 0db
        mixer_cmds 'Power Amplifier DAC' on
        mixer_cmds 'Power Amplifier Mute' on

        # Allwinner A64 Analog
        mixer_cmds Headphone 0db on
        mixer_cmds 'AIF1 Slot 0 Digital DAC' on

        # Amlogic G12 HDMI to PCM0
        mixer_cmds 'FRDDR_A SINK 1 SEL' 'OUT 1'
        mixer_cmds 'FRDDR_A SRC 1 EN' on
        mixer_cmds 'TDMOUT_B SRC SEL' 'IN 0'
        mixer_cmds 'TOHDMITX I2S SRC' 'I2S B'
        mixer_cmds 'TOHDMITX' on

        # Amlogic G12 S/PDIF to PCM1
        mixer_cmds 'FRDDR_B SINK 1 SEL' 'OUT 3'
        mixer_cmds 'FRDDR_B SRC 1 EN' on
        mixer_cmds 'SPDIFOUT SRC SEL' 'IN 1'
        mixer_cmds 'SPDIFOUT Playback' on

        # Amlogic GX HDMI and S/PDIF
        mixer_cmds 'AIU HDMI CTRL SRC' 'I2S'
        mixer_cmds 'AIU SPDIF SRC SEL' 'SPDIF'

        # RockPI 4B Analog
        mixer_cmds 'Right Headphone Mixer Right DAC' on
        mixer_cmds 'Left Headphone Mixer Left DAC' on

        # NanoPC T4 Analog
        mixer_cmds 'HPO L' on
        mixer_cmds 'HPO R' on
        mixer_cmds 'HPOVOL L' on
        mixer_cmds 'HPOVOL R' on
        mixer_cmds 'HPO MIX HPVOL' on
        mixer_cmds 'OUT MIXL DAC L1' on
        mixer_cmds 'OUT MIXR DAC R1' on
        mixer_cmds 'Stereo DAC MIXL DAC L1' on
        mixer_cmds 'Stereo DAC MIXR DAC R1' on
   
    ) | amixer -c "$card" --stdin > /dev/null 2>&1; done
fi
 

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...

Important Information

Terms of Use - Privacy Policy - Guidelines