# SPDX-License-Identifier: GPL-2.0-only
#
# Allwinner device configuration
#

config NET_VENDOR_ALLWINNER
	bool "Allwinner devices"
	default y

	depends on ARCH_SUNXI
	---help---
	  If you have a network (Ethernet) card belonging to this
	  class, say Y here.

	  Note that the answer to this question doesn't directly
	  affect the kernel: saying N will just cause the configurator
	  to skip all the questions about Allwinner cards. If you say Y,
	  you will be asked for your specific card in the following
	  questions.

if NET_VENDOR_ALLWINNER

config SUN4I_EMAC
        tristate "Allwinner A10 EMAC support"
	depends on ARCH_SUNXI
	depends on OF
	select CRC32
	select MII
	select PHYLIB
	select MDIO_SUN4I
        ---help---
          Support for Allwinner A10 EMAC ethernet driver.

          To compile this driver as a module, choose M here.  The module
          will be called sun4i-emac.

endif # NET_VENDOR_ALLWINNER
