/*
 * Empty gpio.h
 *
 * This file must stay as arch/arm/include/asm/gpio.h requires it.
 *
 * (C) Copyright 2015 Mateusz Kulikowski <mateusz.kulikowski@gmail.com>
 *
 * SPDX-License-Identifier:	GPL-2.0+
 */
