Message ID | 1449348262-18488-5-git-send-email-marex@denx.de |
---|---|
State | Accepted |
Delegated to: | Marek Vasut |
Headers | show |
On Sat, 2015-12-05 at 21:44 +0100, Marek Vasut wrote: > The SoCFPGA has reached a point where every single board code become > the same, since each and every single board is probed equally from > OF. > Move the common board code into arch/arm/mach-socfpga/ . > > Signed-off-by: Marek Vasut <marex@denx.de> > Cc: Chin Liang See <clsee@altera.com> > Cc: Dinh Nguyen <dinguyen@opensource.altera.com> > --- > arch/arm/mach-socfpga/Makefile | 2 +- > arch/arm/mach-socfpga/board.c | 64 > ++++++++++++++++++++++++++++++++++++++++++ > 2 files changed, 65 insertions(+), 1 deletion(-) > create mode 100644 arch/arm/mach-socfpga/board.c > > diff --git a/arch/arm/mach-socfpga/Makefile b/arch/arm/mach > -socfpga/Makefile > index 316b326..5cf9e23 100644 > --- a/arch/arm/mach-socfpga/Makefile > +++ b/arch/arm/mach-socfpga/Makefile > @@ -8,7 +8,7 @@ > # > > obj-y += misc.o timer.o reset_manager.o system_manager.o > clock_manager.o \ > - fpga_manager.o scan_manager.o > + fpga_manager.o scan_manager.o board.o > obj-$(CONFIG_SPL_BUILD) += spl.o freeze_controller.o > > # QTS-generated config file wrappers > diff --git a/arch/arm/mach-socfpga/board.c b/arch/arm/mach > -socfpga/board.c > new file mode 100644 > index 0000000..a41d089 > --- /dev/null > +++ b/arch/arm/mach-socfpga/board.c I am thinking this can go into misc.c instead new file. > @@ -0,0 +1,64 @@ > +/* > + * Altera SoCFPGA common board code > + * > + * Copyright (C) 2015 Marek Vasut <marex@denx.de> > + * > + * SPDX-License-Identifier: GPL-2.0+ > + */ > + > +#include <common.h> > +#include <errno.h> > +#include <asm/arch/reset_manager.h> > +#include <asm/io.h> > + > +#include <usb.h> > +#include <usb/dwc2_udc.h> > + > +DECLARE_GLOBAL_DATA_PTR; > + > +void s_init(void) {} > + > +/* > + * Miscellaneous platform dependent initialisations > + */ > +int board_init(void) I am thinking we can skip the board_init where it located at original board folder. If user has unique board specific initialization, they can still do it there. Thanks Chin Liang
On Monday, December 07, 2015 at 01:53:48 PM, Chin Liang See wrote: [...] > > diff --git a/arch/arm/mach-socfpga/board.c b/arch/arm/mach > > -socfpga/board.c > > new file mode 100644 > > index 0000000..a41d089 > > --- /dev/null > > +++ b/arch/arm/mach-socfpga/board.c > > I am thinking this can go into misc.c instead new file. misc.c is bloated with random crap already, I would like to keep things orderly a little. Let's keep the board code and platform code separated. > > @@ -0,0 +1,64 @@ > > +/* > > + * Altera SoCFPGA common board code > > + * > > + * Copyright (C) 2015 Marek Vasut <marex@denx.de> > > + * > > + * SPDX-License-Identifier: GPL-2.0+ > > + */ > > + > > +#include <common.h> > > +#include <errno.h> > > +#include <asm/arch/reset_manager.h> > > +#include <asm/io.h> > > + > > +#include <usb.h> > > +#include <usb/dwc2_udc.h> > > + > > +DECLARE_GLOBAL_DATA_PTR; > > + > > +void s_init(void) {} > > + > > +/* > > + * Miscellaneous platform dependent initialisations > > + */ > > +int board_init(void) > > I am thinking we can skip the board_init where it located at original > board folder. If user has unique board specific initialization, they > can still do it there. See my reply to 6/6 . Best regards, Marek Vasut
On Mon, 2015-12-07 at 14:23 +0100, Marek Vasut wrote: > On Monday, December 07, 2015 at 01:53:48 PM, Chin Liang See wrote: > > [...] > > > > diff --git a/arch/arm/mach-socfpga/board.c b/arch/arm/mach > > > -socfpga/board.c > > > new file mode 100644 > > > index 0000000..a41d089 > > > --- /dev/null > > > +++ b/arch/arm/mach-socfpga/board.c > > > > I am thinking this can go into misc.c instead new file. > > misc.c is bloated with random crap already, I would like to keep > things > orderly a little. Let's keep the board code and platform code > separated. Initial thinking misc.c should be as lean as possible but that seems not today. Can consider split them out per features such as usb.c ethernet.c. Thanks Chin Liang > > > > @@ -0,0 +1,64 @@ > > > +/* > > > + * Altera SoCFPGA common board code > > > + * > > > + * Copyright (C) 2015 Marek Vasut <marex@denx.de> > > > + * > > > + * SPDX-License-Identifier: GPL-2.0+ > > > + */ > > > + > > > +#include <common.h> > > > +#include <errno.h> > > > +#include <asm/arch/reset_manager.h> > > > +#include <asm/io.h> > > > + > > > +#include <usb.h> > > > +#include <usb/dwc2_udc.h> > > > + > > > +DECLARE_GLOBAL_DATA_PTR; > > > + > > > +void s_init(void) {} > > > + > > > +/* > > > + * Miscellaneous platform dependent initialisations > > > + */ > > > +int board_init(void) > > > > I am thinking we can skip the board_init where it located at > > original > > board folder. If user has unique board specific initialization, > > they > > can still do it there. > > See my reply to 6/6 . > > Best regards, > Marek Vasut
On Monday, December 07, 2015 at 02:32:04 PM, Chin Liang See wrote: > On Mon, 2015-12-07 at 14:23 +0100, Marek Vasut wrote: > > On Monday, December 07, 2015 at 01:53:48 PM, Chin Liang See wrote: > > > > [...] > > > > > > diff --git a/arch/arm/mach-socfpga/board.c b/arch/arm/mach > > > > -socfpga/board.c > > > > new file mode 100644 > > > > index 0000000..a41d089 > > > > --- /dev/null > > > > +++ b/arch/arm/mach-socfpga/board.c > > > > > > I am thinking this can go into misc.c instead new file. > > > > misc.c is bloated with random crap already, I would like to keep > > things > > orderly a little. Let's keep the board code and platform code > > separated. > > Initial thinking misc.c should be as lean as possible but that seems > not today. Can consider split them out per features such as usb.c > ethernet.c. There is no ethernet/usb... anything in misc.c and there shouldn't be. All of this stuff is (or should be) probed from OF :-) Best regards, Marek Vasut
On Mon, 2015-12-07 at 15:23 +0100, Marek Vasut wrote: > On Monday, December 07, 2015 at 02:32:04 PM, Chin Liang See wrote: > > On Mon, 2015-12-07 at 14:23 +0100, Marek Vasut wrote: > > > On Monday, December 07, 2015 at 01:53:48 PM, Chin Liang See > > > wrote: > > > > > > [...] > > > > > > > > diff --git a/arch/arm/mach-socfpga/board.c b/arch/arm/mach > > > > > -socfpga/board.c > > > > > new file mode 100644 > > > > > index 0000000..a41d089 > > > > > --- /dev/null > > > > > +++ b/arch/arm/mach-socfpga/board.c > > > > > > > > I am thinking this can go into misc.c instead new file. > > > > > > misc.c is bloated with random crap already, I would like to keep > > > things > > > orderly a little. Let's keep the board code and platform code > > > separated. > > > > Initial thinking misc.c should be as lean as possible but that > > seems > > not today. Can consider split them out per features such as usb.c > > ethernet.c. > > There is no ethernet/usb... anything in misc.c and there shouldn't > be. > All of this stuff is (or should be) probed from OF :-) Looking at misc.c, yup, they are specific to socfpga such as system manager emac registers. Till then, good from me Acked-by: Chin Liang See <clsee@altera.com> Thanks Chin Liang > > Best regards, > Marek Vasut
On Monday, December 07, 2015 at 03:29:16 PM, Chin Liang See wrote: > On Mon, 2015-12-07 at 15:23 +0100, Marek Vasut wrote: > > On Monday, December 07, 2015 at 02:32:04 PM, Chin Liang See wrote: > > > On Mon, 2015-12-07 at 14:23 +0100, Marek Vasut wrote: > > > > On Monday, December 07, 2015 at 01:53:48 PM, Chin Liang See > > > > wrote: > > > > > > > > [...] > > > > > > > > > > diff --git a/arch/arm/mach-socfpga/board.c b/arch/arm/mach > > > > > > -socfpga/board.c > > > > > > new file mode 100644 > > > > > > index 0000000..a41d089 > > > > > > --- /dev/null > > > > > > +++ b/arch/arm/mach-socfpga/board.c > > > > > > > > > > I am thinking this can go into misc.c instead new file. > > > > > > > > misc.c is bloated with random crap already, I would like to keep > > > > things > > > > orderly a little. Let's keep the board code and platform code > > > > separated. > > > > > > Initial thinking misc.c should be as lean as possible but that > > > seems > > > not today. Can consider split them out per features such as usb.c > > > ethernet.c. > > > > There is no ethernet/usb... anything in misc.c and there shouldn't > > be. > > All of this stuff is (or should be) probed from OF :-) > > Looking at misc.c, yup, they are specific to socfpga such as system > manager emac registers. Till then, good from me The cpu_eth_init() could use improvement, but we don't support generic reset handling yet I believe. That's the only thing which is obviously visible there, which could be improved. The other thing which might use improvement is the FPGA registration, I suspect that might recycle the bindings from current linux 4.4.x at some point and move to DT as well. Best regards, Marek Vasut
On Mon, 2015-12-07 at 15:37 +0100, Marek Vasut wrote: > On Monday, December 07, 2015 at 03:29:16 PM, Chin Liang See wrote: > > On Mon, 2015-12-07 at 15:23 +0100, Marek Vasut wrote: > > > On Monday, December 07, 2015 at 02:32:04 PM, Chin Liang See > > > wrote: > > > > On Mon, 2015-12-07 at 14:23 +0100, Marek Vasut wrote: > > > > > On Monday, December 07, 2015 at 01:53:48 PM, Chin Liang See > > > > > wrote: > > > > > > > > > > [...] > > > > > > > > > > > > diff --git a/arch/arm/mach-socfpga/board.c > > > > > > > b/arch/arm/mach > > > > > > > -socfpga/board.c > > > > > > > new file mode 100644 > > > > > > > index 0000000..a41d089 > > > > > > > --- /dev/null > > > > > > > +++ b/arch/arm/mach-socfpga/board.c > > > > > > > > > > > > I am thinking this can go into misc.c instead new file. > > > > > > > > > > misc.c is bloated with random crap already, I would like to > > > > > keep > > > > > things > > > > > orderly a little. Let's keep the board code and platform code > > > > > separated. > > > > > > > > Initial thinking misc.c should be as lean as possible but that > > > > seems > > > > not today. Can consider split them out per features such as > > > > usb.c > > > > ethernet.c. > > > > > > There is no ethernet/usb... anything in misc.c and there > > > shouldn't > > > be. > > > All of this stuff is (or should be) probed from OF :-) > > > > Looking at misc.c, yup, they are specific to socfpga such as system > > manager emac registers. Till then, good from me > > The cpu_eth_init() could use improvement, but we don't support > generic > reset handling yet I believe. That's the only thing which is > obviously > visible there, which could be improved. > > The other thing which might use improvement is the FPGA registration, > I suspect that might recycle the bindings from current linux 4.4.x at > some point and move to DT as well. > Nice, looking forward then :) To further clean-up, I am thinking we can move do_bridge to reset_manager.c too. I can do this if it sound good to you. Thanks Chin Liang > Best regards, > Marek Vasut
On Monday, December 07, 2015 at 03:56:01 PM, Chin Liang See wrote: [...] > > The cpu_eth_init() could use improvement, but we don't support > > generic > > reset handling yet I believe. That's the only thing which is > > obviously > > visible there, which could be improved. > > > > The other thing which might use improvement is the FPGA registration, > > I suspect that might recycle the bindings from current linux 4.4.x at > > some point and move to DT as well. > > Nice, looking forward then :) > > To further clean-up, I am thinking we can move do_bridge to > reset_manager.c too. I can do this if it sound good to you. It's not reset-manager specific though, is it ? Best regards, Marek Vasut
On Mon, 2015-12-07 at 18:46 +0100, Marek Vasut wrote: > On Monday, December 07, 2015 at 03:56:01 PM, Chin Liang See wrote: > [...] > > > The cpu_eth_init() could use improvement, but we don't support > > > generic > > > reset handling yet I believe. That's the only thing which is > > > obviously > > > visible there, which could be improved. > > > > > > The other thing which might use improvement is the FPGA > > > registration, > > > I suspect that might recycle the bindings from current linux > > > 4.4.x at > > > some point and move to DT as well. > > > > Nice, looking forward then :) > > > > To further clean-up, I am thinking we can move do_bridge to > > reset_manager.c too. I can do this if it sound good to you. > > It's not reset-manager specific though, is it ? > All bridges are still release through reset manager except the fpga2sdram. Since we bridge assert at reset manager, consolidating these deassert function will make misc.c cleaner. Thanks Chin Liang > Best regards, > Marek Vasut
On Tuesday, December 08, 2015 at 01:34:53 PM, Chin Liang See wrote: > On Mon, 2015-12-07 at 18:46 +0100, Marek Vasut wrote: > > On Monday, December 07, 2015 at 03:56:01 PM, Chin Liang See wrote: > > [...] > > > > > > The cpu_eth_init() could use improvement, but we don't support > > > > generic > > > > reset handling yet I believe. That's the only thing which is > > > > obviously > > > > visible there, which could be improved. > > > > > > > > The other thing which might use improvement is the FPGA > > > > registration, > > > > I suspect that might recycle the bindings from current linux > > > > 4.4.x at > > > > some point and move to DT as well. > > > > > > Nice, looking forward then :) > > > > > > To further clean-up, I am thinking we can move do_bridge to > > > reset_manager.c too. I can do this if it sound good to you. > > > > It's not reset-manager specific though, is it ? > > All bridges are still release through reset manager except the > fpga2sdram. Since we bridge assert at reset manager, consolidating > these deassert function will make misc.c cleaner. OK, it might be better if we discuss this over a patch, so let's see how that looks. Best regards, Marek Vasut
On Tue, 2015-12-08 at 13:57 +0100, Marek Vasut wrote: > On Tuesday, December 08, 2015 at 01:34:53 PM, Chin Liang See wrote: > > On Mon, 2015-12-07 at 18:46 +0100, Marek Vasut wrote: > > > On Monday, December 07, 2015 at 03:56:01 PM, Chin Liang See > > > wrote: > > > [...] > > > > > > > > The cpu_eth_init() could use improvement, but we don't > > > > > support > > > > > generic > > > > > reset handling yet I believe. That's the only thing which is > > > > > obviously > > > > > visible there, which could be improved. > > > > > > > > > > The other thing which might use improvement is the FPGA > > > > > registration, > > > > > I suspect that might recycle the bindings from current linux > > > > > 4.4.x at > > > > > some point and move to DT as well. > > > > > > > > Nice, looking forward then :) > > > > > > > > To further clean-up, I am thinking we can move do_bridge to > > > > reset_manager.c too. I can do this if it sound good to you. > > > > > > It's not reset-manager specific though, is it ? > > > > All bridges are still release through reset manager except the > > fpga2sdram. Since we bridge assert at reset manager, consolidating > > these deassert function will make misc.c cleaner. > > OK, it might be better if we discuss this over a patch, so let's see > how that looks. > Sure Thanks Chin Liang > Best regards, > Marek Vasut
diff --git a/arch/arm/mach-socfpga/Makefile b/arch/arm/mach-socfpga/Makefile index 316b326..5cf9e23 100644 --- a/arch/arm/mach-socfpga/Makefile +++ b/arch/arm/mach-socfpga/Makefile @@ -8,7 +8,7 @@ # obj-y += misc.o timer.o reset_manager.o system_manager.o clock_manager.o \ - fpga_manager.o scan_manager.o + fpga_manager.o scan_manager.o board.o obj-$(CONFIG_SPL_BUILD) += spl.o freeze_controller.o # QTS-generated config file wrappers diff --git a/arch/arm/mach-socfpga/board.c b/arch/arm/mach-socfpga/board.c new file mode 100644 index 0000000..a41d089 --- /dev/null +++ b/arch/arm/mach-socfpga/board.c @@ -0,0 +1,64 @@ +/* + * Altera SoCFPGA common board code + * + * Copyright (C) 2015 Marek Vasut <marex@denx.de> + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#include <common.h> +#include <errno.h> +#include <asm/arch/reset_manager.h> +#include <asm/io.h> + +#include <usb.h> +#include <usb/dwc2_udc.h> + +DECLARE_GLOBAL_DATA_PTR; + +void s_init(void) {} + +/* + * Miscellaneous platform dependent initialisations + */ +int board_init(void) +{ + /* Address of boot parameters for ATAG (if ATAG is used) */ + gd->bd->bi_boot_params = CONFIG_SYS_SDRAM_BASE + 0x100; + + return 0; +} + +#ifdef CONFIG_USB_GADGET +struct dwc2_plat_otg_data socfpga_otg_data = { + .usb_gusbcfg = 0x1417, +}; + +int board_usb_init(int index, enum usb_init_type init) +{ + int node[2], count; + fdt_addr_t addr; + + count = fdtdec_find_aliases_for_id(gd->fdt_blob, "udc", + COMPAT_ALTERA_SOCFPGA_DWC2USB, + node, 2); + if (count <= 0) /* No controller found. */ + return 0; + + addr = fdtdec_get_addr(gd->fdt_blob, node[0], "reg"); + if (addr == FDT_ADDR_T_NONE) { + printf("UDC Controller has no 'reg' property!\n"); + return -EINVAL; + } + + /* Patch the address from OF into the controller pdata. */ + socfpga_otg_data.regs_otg = addr; + + return dwc2_udc_probe(&socfpga_otg_data); +} + +int g_dnl_board_usb_cable_connected(void) +{ + return 1; +} +#endif
The SoCFPGA has reached a point where every single board code become the same, since each and every single board is probed equally from OF. Move the common board code into arch/arm/mach-socfpga/ . Signed-off-by: Marek Vasut <marex@denx.de> Cc: Chin Liang See <clsee@altera.com> Cc: Dinh Nguyen <dinguyen@opensource.altera.com> --- arch/arm/mach-socfpga/Makefile | 2 +- arch/arm/mach-socfpga/board.c | 64 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 65 insertions(+), 1 deletion(-) create mode 100644 arch/arm/mach-socfpga/board.c