@ -27,6 +27,7 @@
# include <linux/mfd/syscon.h>
# include <dt-bindings/clock/oxsemi,ox810se.h>
# include <dt-bindings/clock/oxsemi,ox820.h>
/* Standard regmap gate clocks */
struct clk_oxnas_gate {
@ -130,6 +131,38 @@ static struct clk_oxnas_gate *ox810se_gates[] = {
& ox810se_nand ,
} ;
static OXNAS_GATE ( ox820_leon , 0 , osc_parents ) ;
static OXNAS_GATE ( ox820_dma_sgdma , 1 , osc_parents ) ;
static OXNAS_GATE ( ox820_cipher , 2 , osc_parents ) ;
static OXNAS_GATE ( ox820_sd , 3 , osc_parents ) ;
static OXNAS_GATE ( ox820_sata , 4 , osc_parents ) ;
static OXNAS_GATE ( ox820_audio , 5 , osc_parents ) ;
static OXNAS_GATE ( ox820_usbmph , 6 , osc_parents ) ;
static OXNAS_GATE ( ox820_etha , 7 , eth_parents ) ;
static OXNAS_GATE ( ox820_pciea , 8 , osc_parents ) ;
static OXNAS_GATE ( ox820_nand , 9 , osc_parents ) ;
static OXNAS_GATE ( ox820_ethb , 10 , eth_parents ) ;
static OXNAS_GATE ( ox820_pcieb , 11 , osc_parents ) ;
static OXNAS_GATE ( ox820_ref600 , 12 , osc_parents ) ;
static OXNAS_GATE ( ox820_usbdev , 13 , osc_parents ) ;
static struct clk_oxnas_gate * ox820_gates [ ] = {
& ox820_leon ,
& ox820_dma_sgdma ,
& ox820_cipher ,
& ox820_sd ,
& ox820_sata ,
& ox820_audio ,
& ox820_usbmph ,
& ox820_etha ,
& ox820_pciea ,
& ox820_nand ,
& ox820_etha ,
& ox820_pciea ,
& ox820_ref600 ,
& ox820_usbdev ,
} ;
static struct clk_hw_onecell_data ox810se_hw_onecell_data = {
. hws = {
[ CLK_810_LEON ] = & ox810se_leon . hw ,
@ -145,6 +178,25 @@ static struct clk_hw_onecell_data ox810se_hw_onecell_data = {
. num = ARRAY_SIZE ( ox810se_gates ) ,
} ;
static struct clk_hw_onecell_data ox820_hw_onecell_data = {
. hws = {
[ CLK_820_LEON ] = & ox820_leon . hw ,
[ CLK_820_DMA_SGDMA ] = & ox820_dma_sgdma . hw ,
[ CLK_820_CIPHER ] = & ox820_cipher . hw ,
[ CLK_820_SD ] = & ox820_sd . hw ,
[ CLK_820_SATA ] = & ox820_sata . hw ,
[ CLK_820_AUDIO ] = & ox820_audio . hw ,
[ CLK_820_USBMPH ] = & ox820_usbmph . hw ,
[ CLK_820_ETHA ] = & ox820_etha . hw ,
[ CLK_820_PCIEA ] = & ox820_pciea . hw ,
[ CLK_820_NAND ] = & ox820_nand . hw ,
[ CLK_820_ETHB ] = & ox820_ethb . hw ,
[ CLK_820_PCIEB ] = & ox820_pcieb . hw ,
[ CLK_820_REF600 ] = & ox820_ref600 . hw ,
[ CLK_820_USBDEV ] = & ox820_usbdev . hw ,
} ,
. num = ARRAY_SIZE ( ox820_gates ) ,
} ;
static struct oxnas_stdclk_data ox810se_stdclk_data = {
. onecell_data = & ox810se_hw_onecell_data ,
@ -152,9 +204,15 @@ static struct oxnas_stdclk_data ox810se_stdclk_data = {
. ngates = ARRAY_SIZE ( ox810se_gates ) ,
} ;
static struct oxnas_stdclk_data ox820_stdclk_data = {
. onecell_data = & ox820_hw_onecell_data ,
. gates = ox820_gates ,
. ngates = ARRAY_SIZE ( ox820_gates ) ,
} ;
static const struct of_device_id oxnas_stdclk_dt_ids [ ] = {
{ . compatible = " oxsemi,ox810se-stdclk " , & ox810se_stdclk_data } ,
{ . compatible = " oxsemi,ox820-stdclk " , & ox820_stdclk_data } ,
{ }
} ;