Changeset View
Changeset View
Standalone View
Standalone View
head/sys/arm/allwinner/a20/a20_if_dwc.c
Show All 34 Lines | |||||
#include <machine/bus.h> | #include <machine/bus.h> | ||||
#include <dev/dwc/if_dwc.h> | #include <dev/dwc/if_dwc.h> | ||||
#include <dev/dwc/if_dwcvar.h> | #include <dev/dwc/if_dwcvar.h> | ||||
#include <dev/ofw/ofw_bus.h> | #include <dev/ofw/ofw_bus.h> | ||||
#include <dev/ofw/ofw_bus_subr.h> | #include <dev/ofw/ofw_bus_subr.h> | ||||
#include <arm/allwinner/allwinner_machdep.h> | |||||
#include <arm/allwinner/a10_clk.h> | #include <arm/allwinner/a10_clk.h> | ||||
#include <arm/allwinner/a31/a31_clk.h> | |||||
#include "if_dwc_if.h" | #include "if_dwc_if.h" | ||||
static int | static int | ||||
a20_if_dwc_probe(device_t dev) | a20_if_dwc_probe(device_t dev) | ||||
{ | { | ||||
if (!ofw_bus_status_okay(dev)) | if (!ofw_bus_status_okay(dev)) | ||||
return (ENXIO); | return (ENXIO); | ||||
if (!ofw_bus_is_compatible(dev, "allwinner,sun7i-a20-gmac")) | if (!ofw_bus_is_compatible(dev, "allwinner,sun7i-a20-gmac")) | ||||
return (ENXIO); | return (ENXIO); | ||||
device_set_desc(dev, "A20 Gigabit Ethernet Controller"); | device_set_desc(dev, "A20 Gigabit Ethernet Controller"); | ||||
return (BUS_PROBE_DEFAULT); | return (BUS_PROBE_DEFAULT); | ||||
} | } | ||||
static int | static int | ||||
a20_if_dwc_init(device_t dev) | a20_if_dwc_init(device_t dev) | ||||
{ | { | ||||
int clk; | |||||
/* Activate GMAC clock and set the pin mux to rgmii. */ | /* Activate GMAC clock and set the pin mux to rgmii. */ | ||||
if (a10_clk_gmac_activate(ofw_bus_get_node(dev)) != 0) { | switch (allwinner_soc_type()) { | ||||
#if defined(SOC_ALLWINNER_A10) || defined(SOC_ALLWINNER_A20) | |||||
case ALLWINNERSOC_A10: | |||||
case ALLWINNERSOC_A10S: | |||||
case ALLWINNERSOC_A20: | |||||
clk = a10_clk_gmac_activate(ofw_bus_get_node(dev)); | |||||
break; | |||||
#endif | |||||
#if defined(SOC_ALLWINNER_A31) || defined(SOC_ALLWINNER_A31S) | |||||
case ALLWINNERSOC_A31: | |||||
case ALLWINNERSOC_A31S: | |||||
clk = a31_clk_gmac_activate(ofw_bus_get_node(dev)); | |||||
break; | |||||
#endif | |||||
default: | |||||
clk = -1; | |||||
} | |||||
if (clk != 0) { | |||||
device_printf(dev, "could not activate gmac module\n"); | device_printf(dev, "could not activate gmac module\n"); | ||||
return (ENXIO); | return (ENXIO); | ||||
} | } | ||||
return (0); | return (0); | ||||
} | } | ||||
static int | static int | ||||
Show All 32 Lines |