docs: sh: convert new-machine.txt to ReST
- Add a SPDX header; - Adjust document title to follow ReST style; - Mark literal blocks as such; - Mark a table as such; - Add it to sh/index.rst. Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org> Link: https://lore.kernel.org/r/4437d379ccf201cc3a369232f9159a02754ca530.1592203650.git.mchehab+huawei@kernel.org Signed-off-by: Jonathan Corbet <corbet@lwn.net>
This commit is contained in:
parent
599448d8ca
commit
7539b41762
|
@ -4,6 +4,11 @@ SuperH Interfaces Guide
|
||||||
|
|
||||||
:Author: Paul Mundt
|
:Author: Paul Mundt
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
:maxdepth: 1
|
||||||
|
|
||||||
|
new-machine
|
||||||
|
|
||||||
Memory Management
|
Memory Management
|
||||||
=================
|
=================
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
|
.. SPDX-License-Identifier: GPL-2.0
|
||||||
|
|
||||||
Adding a new board to LinuxSH
|
=============================
|
||||||
================================
|
Adding a new board to LinuxSH
|
||||||
|
=============================
|
||||||
|
|
||||||
Paul Mundt <lethal@linux-sh.org>
|
Paul Mundt <lethal@linux-sh.org>
|
||||||
|
|
||||||
|
@ -19,65 +21,67 @@ include/asm-sh/. For the new kernel, things are broken out by board type,
|
||||||
companion chip type, and CPU type. Looking at a tree view of this directory
|
companion chip type, and CPU type. Looking at a tree view of this directory
|
||||||
hierarchy looks like the following:
|
hierarchy looks like the following:
|
||||||
|
|
||||||
Board-specific code:
|
Board-specific code::
|
||||||
|
|
||||||
.
|
.
|
||||||
|-- arch
|
|-- arch
|
||||||
| `-- sh
|
| `-- sh
|
||||||
| `-- boards
|
| `-- boards
|
||||||
| |-- adx
|
| |-- adx
|
||||||
| | `-- board-specific files
|
| | `-- board-specific files
|
||||||
| |-- bigsur
|
| |-- bigsur
|
||||||
| | `-- board-specific files
|
| | `-- board-specific files
|
||||||
| |
|
| |
|
||||||
| ... more boards here ...
|
| ... more boards here ...
|
||||||
|
|
|
|
||||||
`-- include
|
`-- include
|
||||||
`-- asm-sh
|
`-- asm-sh
|
||||||
|-- adx
|
|-- adx
|
||||||
| `-- board-specific headers
|
| `-- board-specific headers
|
||||||
|-- bigsur
|
|-- bigsur
|
||||||
| `-- board-specific headers
|
| `-- board-specific headers
|
||||||
|
|
|
|
||||||
.. more boards here ...
|
.. more boards here ...
|
||||||
|
|
||||||
Next, for companion chips:
|
Next, for companion chips::
|
||||||
.
|
|
||||||
`-- arch
|
.
|
||||||
`-- sh
|
`-- arch
|
||||||
`-- cchips
|
`-- sh
|
||||||
`-- hd6446x
|
`-- cchips
|
||||||
`-- hd64461
|
`-- hd6446x
|
||||||
`-- cchip-specific files
|
`-- hd64461
|
||||||
|
`-- cchip-specific files
|
||||||
|
|
||||||
... and so on. Headers for the companion chips are treated the same way as
|
... and so on. Headers for the companion chips are treated the same way as
|
||||||
board-specific headers. Thus, include/asm-sh/hd64461 is home to all of the
|
board-specific headers. Thus, include/asm-sh/hd64461 is home to all of the
|
||||||
hd64461-specific headers.
|
hd64461-specific headers.
|
||||||
|
|
||||||
Finally, CPU family support is also abstracted:
|
Finally, CPU family support is also abstracted::
|
||||||
.
|
|
||||||
|-- arch
|
.
|
||||||
| `-- sh
|
|-- arch
|
||||||
| |-- kernel
|
| `-- sh
|
||||||
| | `-- cpu
|
| |-- kernel
|
||||||
| | |-- sh2
|
| | `-- cpu
|
||||||
| | | `-- SH-2 generic files
|
| | |-- sh2
|
||||||
| | |-- sh3
|
| | | `-- SH-2 generic files
|
||||||
| | | `-- SH-3 generic files
|
| | |-- sh3
|
||||||
| | `-- sh4
|
| | | `-- SH-3 generic files
|
||||||
| | `-- SH-4 generic files
|
| | `-- sh4
|
||||||
| `-- mm
|
| | `-- SH-4 generic files
|
||||||
| `-- This is also broken out per CPU family, so each family can
|
| `-- mm
|
||||||
| have their own set of cache/tlb functions.
|
| `-- This is also broken out per CPU family, so each family can
|
||||||
|
|
| have their own set of cache/tlb functions.
|
||||||
`-- include
|
|
|
||||||
`-- asm-sh
|
`-- include
|
||||||
|-- cpu-sh2
|
`-- asm-sh
|
||||||
| `-- SH-2 specific headers
|
|-- cpu-sh2
|
||||||
|-- cpu-sh3
|
| `-- SH-2 specific headers
|
||||||
| `-- SH-3 specific headers
|
|-- cpu-sh3
|
||||||
`-- cpu-sh4
|
| `-- SH-3 specific headers
|
||||||
`-- SH-4 specific headers
|
`-- cpu-sh4
|
||||||
|
`-- SH-4 specific headers
|
||||||
|
|
||||||
It should be noted that CPU subtypes are _not_ abstracted. Thus, these still
|
It should be noted that CPU subtypes are _not_ abstracted. Thus, these still
|
||||||
need to be dealt with by the CPU family specific code.
|
need to be dealt with by the CPU family specific code.
|
||||||
|
@ -110,33 +114,33 @@ arch/sh/boards and the include/asm-sh/ hierarchy. In order to better
|
||||||
explain this, we use some examples for adding an imaginary board. For
|
explain this, we use some examples for adding an imaginary board. For
|
||||||
setup code, we're required at the very least to provide definitions for
|
setup code, we're required at the very least to provide definitions for
|
||||||
get_system_type() and platform_setup(). For our imaginary board, this
|
get_system_type() and platform_setup(). For our imaginary board, this
|
||||||
might look something like:
|
might look something like::
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* arch/sh/boards/vapor/setup.c - Setup code for imaginary board
|
* arch/sh/boards/vapor/setup.c - Setup code for imaginary board
|
||||||
*/
|
*/
|
||||||
#include <linux/init.h>
|
#include <linux/init.h>
|
||||||
|
|
||||||
const char *get_system_type(void)
|
const char *get_system_type(void)
|
||||||
{
|
{
|
||||||
return "FooTech Vaporboard";
|
return "FooTech Vaporboard";
|
||||||
}
|
}
|
||||||
|
|
||||||
int __init platform_setup(void)
|
int __init platform_setup(void)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* If our hardware actually existed, we would do real
|
* If our hardware actually existed, we would do real
|
||||||
* setup here. Though it's also sane to leave this empty
|
* setup here. Though it's also sane to leave this empty
|
||||||
* if there's no real init work that has to be done for
|
* if there's no real init work that has to be done for
|
||||||
* this board.
|
* this board.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* Start-up imaginary PCI ... */
|
/* Start-up imaginary PCI ... */
|
||||||
|
|
||||||
/* And whatever else ... */
|
/* And whatever else ... */
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
Our new imaginary board will also have to tie into the machvec in order for it
|
Our new imaginary board will also have to tie into the machvec in order for it
|
||||||
to be of any use.
|
to be of any use.
|
||||||
|
@ -172,16 +176,16 @@ sufficient.
|
||||||
vector.
|
vector.
|
||||||
|
|
||||||
Note that these prototypes are generated automatically by setting
|
Note that these prototypes are generated automatically by setting
|
||||||
__IO_PREFIX to something sensible. A typical example would be:
|
__IO_PREFIX to something sensible. A typical example would be::
|
||||||
|
|
||||||
#define __IO_PREFIX vapor
|
#define __IO_PREFIX vapor
|
||||||
#include <asm/io_generic.h>
|
#include <asm/io_generic.h>
|
||||||
|
|
||||||
somewhere in the board-specific header. Any boards being ported that still
|
somewhere in the board-specific header. Any boards being ported that still
|
||||||
have a legacy io.h should remove it entirely and switch to the new model.
|
have a legacy io.h should remove it entirely and switch to the new model.
|
||||||
|
|
||||||
- Add machine vector definitions to the board's setup.c. At a bare minimum,
|
- Add machine vector definitions to the board's setup.c. At a bare minimum,
|
||||||
this must be defined as something like:
|
this must be defined as something like::
|
||||||
|
|
||||||
struct sh_machine_vector mv_vapor __initmv = {
|
struct sh_machine_vector mv_vapor __initmv = {
|
||||||
.mv_name = "vapor",
|
.mv_name = "vapor",
|
||||||
|
@ -202,20 +206,20 @@ Large portions of the build system are now entirely dynamic, and merely
|
||||||
require the proper entry here and there in order to get things done.
|
require the proper entry here and there in order to get things done.
|
||||||
|
|
||||||
The first thing to do is to add an entry to arch/sh/Kconfig, under the
|
The first thing to do is to add an entry to arch/sh/Kconfig, under the
|
||||||
"System type" menu:
|
"System type" menu::
|
||||||
|
|
||||||
config SH_VAPOR
|
config SH_VAPOR
|
||||||
bool "Vapor"
|
bool "Vapor"
|
||||||
help
|
help
|
||||||
select Vapor if configuring for a FooTech Vaporboard.
|
select Vapor if configuring for a FooTech Vaporboard.
|
||||||
|
|
||||||
next, this has to be added into arch/sh/Makefile. All boards require a
|
next, this has to be added into arch/sh/Makefile. All boards require a
|
||||||
machdir-y entry in order to be built. This entry needs to be the name of
|
machdir-y entry in order to be built. This entry needs to be the name of
|
||||||
the board directory as it appears in arch/sh/boards, even if it is in a
|
the board directory as it appears in arch/sh/boards, even if it is in a
|
||||||
sub-directory (in which case, all parent directories below arch/sh/boards/
|
sub-directory (in which case, all parent directories below arch/sh/boards/
|
||||||
need to be listed). For our new board, this entry can look like:
|
need to be listed). For our new board, this entry can look like::
|
||||||
|
|
||||||
machdir-$(CONFIG_SH_VAPOR) += vapor
|
machdir-$(CONFIG_SH_VAPOR) += vapor
|
||||||
|
|
||||||
provided that we've placed everything in the arch/sh/boards/vapor/ directory.
|
provided that we've placed everything in the arch/sh/boards/vapor/ directory.
|
||||||
|
|
||||||
|
@ -230,7 +234,7 @@ This is done by adding an entry to the end of the arch/sh/tools/mach-types
|
||||||
list. The method for doing this is self explanatory, and so we won't waste
|
list. The method for doing this is self explanatory, and so we won't waste
|
||||||
space restating it here. After this is done, you will be able to use
|
space restating it here. After this is done, you will be able to use
|
||||||
implicit checks for your board if you need this somewhere throughout the
|
implicit checks for your board if you need this somewhere throughout the
|
||||||
common code, such as:
|
common code, such as::
|
||||||
|
|
||||||
/* Make sure we're on the FooTech Vaporboard */
|
/* Make sure we're on the FooTech Vaporboard */
|
||||||
if (!mach_is_vapor())
|
if (!mach_is_vapor())
|
||||||
|
@ -253,16 +257,19 @@ build target, and it will be implicitly listed as such in the help text.
|
||||||
Looking at the 'make help' output, you should now see something like:
|
Looking at the 'make help' output, you should now see something like:
|
||||||
|
|
||||||
Architecture specific targets (sh):
|
Architecture specific targets (sh):
|
||||||
zImage - Compressed kernel image (arch/sh/boot/zImage)
|
|
||||||
adx_defconfig - Build for adx
|
|
||||||
cqreek_defconfig - Build for cqreek
|
|
||||||
dreamcast_defconfig - Build for dreamcast
|
|
||||||
...
|
|
||||||
vapor_defconfig - Build for vapor
|
|
||||||
|
|
||||||
which then allows you to do:
|
======================= =============================================
|
||||||
|
zImage Compressed kernel image (arch/sh/boot/zImage)
|
||||||
|
adx_defconfig Build for adx
|
||||||
|
cqreek_defconfig Build for cqreek
|
||||||
|
dreamcast_defconfig Build for dreamcast
|
||||||
|
...
|
||||||
|
vapor_defconfig Build for vapor
|
||||||
|
======================= =============================================
|
||||||
|
|
||||||
$ make ARCH=sh CROSS_COMPILE=sh4-linux- vapor_defconfig vmlinux
|
which then allows you to do::
|
||||||
|
|
||||||
|
$ make ARCH=sh CROSS_COMPILE=sh4-linux- vapor_defconfig vmlinux
|
||||||
|
|
||||||
which will in turn copy the defconfig for this board, run it through
|
which will in turn copy the defconfig for this board, run it through
|
||||||
oldconfig (prompting you for any new options since the time of creation),
|
oldconfig (prompting you for any new options since the time of creation),
|
Loading…
Reference in New Issue