[Nexus 7 (2013) General] ShadowEO:
I have found a way to enable landscape, but in the process you lose HW Acceleration as the freedreno driver's rotation is broken. You'll need to ensure that in addition to the above ignores for pacman you add libsystemd, systemd, libgudev, randrproto, renderproto, xorg-server-devel and xorg-server-common as a full system upgrade will break the install if systemd is updated. You will also need to compile xf86-video-fbturbo from source, this is the reason we hold back xorg-server-devel since you'll need to compile against the currently installed X.org Server. To enable rotation afterwards, make the following changes to /etc/X11/xorg.conf.d/60-freedreno.conf

Driver "fbturbo"
Option "fbdev" "/dev/fb0"
Option "Rotate" "CW" #<-- This disables XRandr, which is fine because fbturbo doesn't support our GPU or Randr rotation.

restart lightdm and you'll be rotated, but we're not finished yet because the touch screen will still be in Portrait orientation.

To change this, open /usr/share/X11/xorg.conf.d/10-evdev.conf

In the bottom set for "touchscreen catchall" add the following options:

Option "SwapAxes" "on"
Option "InvertY" "on"

then once again restart lightdm, you'll be able to move the cursor. I recommend installing touchegg-git to enable two finger scrolling and two finger tap for right click. Unfortunately these instructions break GNOME Shell and KDE Plasma since there is no longer any hardware acceleration. I've been looking for a patch or some way to enable rotation on freedreno, but XRandr is completely broken in freedreno on our GPU (Adreno 320).

In addition, you'll find that the X Server does not initialize the display correctly if you solely use the fbturbo driver. To work around this, you'll want to keep a copy of the original 60-freedreno.conf and name it something like 60-freedreno.init (move it out of /etc/X11/xorg.conf.d otherwise X11 won't start with fbturbo but will instead attempt freedreno, making this all useless) create a systemd one-shot unit that display-manager.unit depends on pointing to a script with something similar to this:

#!/bin/bash
# First we need to start X with freedreno to initialize KGSL and DRI
X -config /path/to/60-freedreno.init -configdir /tmp &
# Next we sleep for about 5 seconds to allow X to fully start up and init the screen
sleep 5
# Now we kill Xorg using any of it's many names
pkill -KILL X &
pkill -KILL Xorg &
pkill -KILL Xorg.bin &
exit 0

The script above (I added the comments as well, I don't remember how I made the one-shot script, but you can take a look at /etc/systemd/system/usb-setup.unit for a template, remember to add your new display-init.unit as a dependancy to display-manager's unit) will basically load the configuration file for freedreno into X making sure that X doesn't look in it's normal folders for .conf files which will screw with this. We wait 5 seconds to let X initialize the screen, it will stay black during this, so it looks seamless during startup. It then kills the X process (if someone has a better way of doing this, possibly capturing the PID of the daemon started in the script and then killing it, feel free to post it) which then allows systemd to start lightdm with the fbturbo driver properly. If you don't do this, X will fail to start with the fbturbo driver with the error code FBOUTPUT_VSCREENINFO: Invalid Argument. This is because the GPU hasn't been properly initialized for the mode we're looking for (because fbturbo is mainly a Mali HW Acceleration driver, but it provides better performance on ARM compared to fbdev).

Like I said, if anyone knows a more elegant solution to enabling screen rotation or even enabling proper screen rotation in freedreno, that's about all we're missing here to make this usable. Also, do NOT upgrade libdrm, newer versions of libdrm breaks freedreno for some reason (even with the newer Mesa, libdrm, and freedreno libraries)

EDIT: Oh and a nice little tiny tidbit of information, the kernel and initramfs that come with this Arch distribution can also boot Debian with SystemV init installed [having systemd installed as your init system breaks boot.] (and possibly others). However Debian's X11 is completely broken on the Nexus 7, I believe this to be the same reason that fbturbo doesn't initialize properly without first starting the freedreno driver however the freedreno driver does not work correctly on debian. So you end up with some weird "split screen" thing going on.