mirror of
https://github.com/Ysurac/openmptcprouter.git
synced 2025-03-09 15:40:20 +00:00
Revert "Merge branch 'test' into develop"
This reverts commitd071cd5c17
, reversing changes made to27d4fa254e
.
This commit is contained in:
parent
d071cd5c17
commit
234c9e1870
151 changed files with 561351 additions and 0 deletions
5
CONTRIBUTING.md
Executable file
5
CONTRIBUTING.md
Executable file
|
@ -0,0 +1,5 @@
|
|||
Contribution
|
||||
|
||||
When submitting a pull request for the first time, you will need to agree to the contributor license agreement (for individuals or entities). To do this, in the pull request please create a file with a name like /contributors/{github_username}.md, and in the content of that file indicate your agreement. An example of what that file should contain can be seen in example agreement file.
|
||||
|
||||
(This method of CLA "signing" is borrowed from Medium's open source project.)
|
674
LICENSE
Executable file
674
LICENSE
Executable file
|
@ -0,0 +1,674 @@
|
|||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 3, 29 June 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The GNU General Public License is a free, copyleft license for
|
||||
software and other kinds of works.
|
||||
|
||||
The licenses for most software and other practical works are designed
|
||||
to take away your freedom to share and change the works. By contrast,
|
||||
the GNU General Public License is intended to guarantee your freedom to
|
||||
share and change all versions of a program--to make sure it remains free
|
||||
software for all its users. We, the Free Software Foundation, use the
|
||||
GNU General Public License for most of our software; it applies also to
|
||||
any other work released this way by its authors. You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
them if you wish), that you receive source code or can get it if you
|
||||
want it, that you can change the software or use pieces of it in new
|
||||
free programs, and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to prevent others from denying you
|
||||
these rights or asking you to surrender the rights. Therefore, you have
|
||||
certain responsibilities if you distribute copies of the software, or if
|
||||
you modify it: responsibilities to respect the freedom of others.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must pass on to the recipients the same
|
||||
freedoms that you received. You must make sure that they, too, receive
|
||||
or can get the source code. And you must show them these terms so they
|
||||
know their rights.
|
||||
|
||||
Developers that use the GNU GPL protect your rights with two steps:
|
||||
(1) assert copyright on the software, and (2) offer you this License
|
||||
giving you legal permission to copy, distribute and/or modify it.
|
||||
|
||||
For the developers' and authors' protection, the GPL clearly explains
|
||||
that there is no warranty for this free software. For both users' and
|
||||
authors' sake, the GPL requires that modified versions be marked as
|
||||
changed, so that their problems will not be attributed erroneously to
|
||||
authors of previous versions.
|
||||
|
||||
Some devices are designed to deny users access to install or run
|
||||
modified versions of the software inside them, although the manufacturer
|
||||
can do so. This is fundamentally incompatible with the aim of
|
||||
protecting users' freedom to change the software. The systematic
|
||||
pattern of such abuse occurs in the area of products for individuals to
|
||||
use, which is precisely where it is most unacceptable. Therefore, we
|
||||
have designed this version of the GPL to prohibit the practice for those
|
||||
products. If such problems arise substantially in other domains, we
|
||||
stand ready to extend this provision to those domains in future versions
|
||||
of the GPL, as needed to protect the freedom of users.
|
||||
|
||||
Finally, every program is threatened constantly by software patents.
|
||||
States should not allow patents to restrict development and use of
|
||||
software on general-purpose computers, but in those that do, we wish to
|
||||
avoid the special danger that patents applied to a free program could
|
||||
make it effectively proprietary. To prevent this, the GPL assures that
|
||||
patents cannot be used to render the program non-free.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
TERMS AND CONDITIONS
|
||||
|
||||
0. Definitions.
|
||||
|
||||
"This License" refers to version 3 of the GNU General Public License.
|
||||
|
||||
"Copyright" also means copyright-like laws that apply to other kinds of
|
||||
works, such as semiconductor masks.
|
||||
|
||||
"The Program" refers to any copyrightable work licensed under this
|
||||
License. Each licensee is addressed as "you". "Licensees" and
|
||||
"recipients" may be individuals or organizations.
|
||||
|
||||
To "modify" a work means to copy from or adapt all or part of the work
|
||||
in a fashion requiring copyright permission, other than the making of an
|
||||
exact copy. The resulting work is called a "modified version" of the
|
||||
earlier work or a work "based on" the earlier work.
|
||||
|
||||
A "covered work" means either the unmodified Program or a work based
|
||||
on the Program.
|
||||
|
||||
To "propagate" a work means to do anything with it that, without
|
||||
permission, would make you directly or secondarily liable for
|
||||
infringement under applicable copyright law, except executing it on a
|
||||
computer or modifying a private copy. Propagation includes copying,
|
||||
distribution (with or without modification), making available to the
|
||||
public, and in some countries other activities as well.
|
||||
|
||||
To "convey" a work means any kind of propagation that enables other
|
||||
parties to make or receive copies. Mere interaction with a user through
|
||||
a computer network, with no transfer of a copy, is not conveying.
|
||||
|
||||
An interactive user interface displays "Appropriate Legal Notices"
|
||||
to the extent that it includes a convenient and prominently visible
|
||||
feature that (1) displays an appropriate copyright notice, and (2)
|
||||
tells the user that there is no warranty for the work (except to the
|
||||
extent that warranties are provided), that licensees may convey the
|
||||
work under this License, and how to view a copy of this License. If
|
||||
the interface presents a list of user commands or options, such as a
|
||||
menu, a prominent item in the list meets this criterion.
|
||||
|
||||
1. Source Code.
|
||||
|
||||
The "source code" for a work means the preferred form of the work
|
||||
for making modifications to it. "Object code" means any non-source
|
||||
form of a work.
|
||||
|
||||
A "Standard Interface" means an interface that either is an official
|
||||
standard defined by a recognized standards body, or, in the case of
|
||||
interfaces specified for a particular programming language, one that
|
||||
is widely used among developers working in that language.
|
||||
|
||||
The "System Libraries" of an executable work include anything, other
|
||||
than the work as a whole, that (a) is included in the normal form of
|
||||
packaging a Major Component, but which is not part of that Major
|
||||
Component, and (b) serves only to enable use of the work with that
|
||||
Major Component, or to implement a Standard Interface for which an
|
||||
implementation is available to the public in source code form. A
|
||||
"Major Component", in this context, means a major essential component
|
||||
(kernel, window system, and so on) of the specific operating system
|
||||
(if any) on which the executable work runs, or a compiler used to
|
||||
produce the work, or an object code interpreter used to run it.
|
||||
|
||||
The "Corresponding Source" for a work in object code form means all
|
||||
the source code needed to generate, install, and (for an executable
|
||||
work) run the object code and to modify the work, including scripts to
|
||||
control those activities. However, it does not include the work's
|
||||
System Libraries, or general-purpose tools or generally available free
|
||||
programs which are used unmodified in performing those activities but
|
||||
which are not part of the work. For example, Corresponding Source
|
||||
includes interface definition files associated with source files for
|
||||
the work, and the source code for shared libraries and dynamically
|
||||
linked subprograms that the work is specifically designed to require,
|
||||
such as by intimate data communication or control flow between those
|
||||
subprograms and other parts of the work.
|
||||
|
||||
The Corresponding Source need not include anything that users
|
||||
can regenerate automatically from other parts of the Corresponding
|
||||
Source.
|
||||
|
||||
The Corresponding Source for a work in source code form is that
|
||||
same work.
|
||||
|
||||
2. Basic Permissions.
|
||||
|
||||
All rights granted under this License are granted for the term of
|
||||
copyright on the Program, and are irrevocable provided the stated
|
||||
conditions are met. This License explicitly affirms your unlimited
|
||||
permission to run the unmodified Program. The output from running a
|
||||
covered work is covered by this License only if the output, given its
|
||||
content, constitutes a covered work. This License acknowledges your
|
||||
rights of fair use or other equivalent, as provided by copyright law.
|
||||
|
||||
You may make, run and propagate covered works that you do not
|
||||
convey, without conditions so long as your license otherwise remains
|
||||
in force. You may convey covered works to others for the sole purpose
|
||||
of having them make modifications exclusively for you, or provide you
|
||||
with facilities for running those works, provided that you comply with
|
||||
the terms of this License in conveying all material for which you do
|
||||
not control copyright. Those thus making or running the covered works
|
||||
for you must do so exclusively on your behalf, under your direction
|
||||
and control, on terms that prohibit them from making any copies of
|
||||
your copyrighted material outside their relationship with you.
|
||||
|
||||
Conveying under any other circumstances is permitted solely under
|
||||
the conditions stated below. Sublicensing is not allowed; section 10
|
||||
makes it unnecessary.
|
||||
|
||||
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
||||
|
||||
No covered work shall be deemed part of an effective technological
|
||||
measure under any applicable law fulfilling obligations under article
|
||||
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
||||
similar laws prohibiting or restricting circumvention of such
|
||||
measures.
|
||||
|
||||
When you convey a covered work, you waive any legal power to forbid
|
||||
circumvention of technological measures to the extent such circumvention
|
||||
is effected by exercising rights under this License with respect to
|
||||
the covered work, and you disclaim any intention to limit operation or
|
||||
modification of the work as a means of enforcing, against the work's
|
||||
users, your or third parties' legal rights to forbid circumvention of
|
||||
technological measures.
|
||||
|
||||
4. Conveying Verbatim Copies.
|
||||
|
||||
You may convey verbatim copies of the Program's source code as you
|
||||
receive it, in any medium, provided that you conspicuously and
|
||||
appropriately publish on each copy an appropriate copyright notice;
|
||||
keep intact all notices stating that this License and any
|
||||
non-permissive terms added in accord with section 7 apply to the code;
|
||||
keep intact all notices of the absence of any warranty; and give all
|
||||
recipients a copy of this License along with the Program.
|
||||
|
||||
You may charge any price or no price for each copy that you convey,
|
||||
and you may offer support or warranty protection for a fee.
|
||||
|
||||
5. Conveying Modified Source Versions.
|
||||
|
||||
You may convey a work based on the Program, or the modifications to
|
||||
produce it from the Program, in the form of source code under the
|
||||
terms of section 4, provided that you also meet all of these conditions:
|
||||
|
||||
a) The work must carry prominent notices stating that you modified
|
||||
it, and giving a relevant date.
|
||||
|
||||
b) The work must carry prominent notices stating that it is
|
||||
released under this License and any conditions added under section
|
||||
7. This requirement modifies the requirement in section 4 to
|
||||
"keep intact all notices".
|
||||
|
||||
c) You must license the entire work, as a whole, under this
|
||||
License to anyone who comes into possession of a copy. This
|
||||
License will therefore apply, along with any applicable section 7
|
||||
additional terms, to the whole of the work, and all its parts,
|
||||
regardless of how they are packaged. This License gives no
|
||||
permission to license the work in any other way, but it does not
|
||||
invalidate such permission if you have separately received it.
|
||||
|
||||
d) If the work has interactive user interfaces, each must display
|
||||
Appropriate Legal Notices; however, if the Program has interactive
|
||||
interfaces that do not display Appropriate Legal Notices, your
|
||||
work need not make them do so.
|
||||
|
||||
A compilation of a covered work with other separate and independent
|
||||
works, which are not by their nature extensions of the covered work,
|
||||
and which are not combined with it such as to form a larger program,
|
||||
in or on a volume of a storage or distribution medium, is called an
|
||||
"aggregate" if the compilation and its resulting copyright are not
|
||||
used to limit the access or legal rights of the compilation's users
|
||||
beyond what the individual works permit. Inclusion of a covered work
|
||||
in an aggregate does not cause this License to apply to the other
|
||||
parts of the aggregate.
|
||||
|
||||
6. Conveying Non-Source Forms.
|
||||
|
||||
You may convey a covered work in object code form under the terms
|
||||
of sections 4 and 5, provided that you also convey the
|
||||
machine-readable Corresponding Source under the terms of this License,
|
||||
in one of these ways:
|
||||
|
||||
a) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by the
|
||||
Corresponding Source fixed on a durable physical medium
|
||||
customarily used for software interchange.
|
||||
|
||||
b) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by a
|
||||
written offer, valid for at least three years and valid for as
|
||||
long as you offer spare parts or customer support for that product
|
||||
model, to give anyone who possesses the object code either (1) a
|
||||
copy of the Corresponding Source for all the software in the
|
||||
product that is covered by this License, on a durable physical
|
||||
medium customarily used for software interchange, for a price no
|
||||
more than your reasonable cost of physically performing this
|
||||
conveying of source, or (2) access to copy the
|
||||
Corresponding Source from a network server at no charge.
|
||||
|
||||
c) Convey individual copies of the object code with a copy of the
|
||||
written offer to provide the Corresponding Source. This
|
||||
alternative is allowed only occasionally and noncommercially, and
|
||||
only if you received the object code with such an offer, in accord
|
||||
with subsection 6b.
|
||||
|
||||
d) Convey the object code by offering access from a designated
|
||||
place (gratis or for a charge), and offer equivalent access to the
|
||||
Corresponding Source in the same way through the same place at no
|
||||
further charge. You need not require recipients to copy the
|
||||
Corresponding Source along with the object code. If the place to
|
||||
copy the object code is a network server, the Corresponding Source
|
||||
may be on a different server (operated by you or a third party)
|
||||
that supports equivalent copying facilities, provided you maintain
|
||||
clear directions next to the object code saying where to find the
|
||||
Corresponding Source. Regardless of what server hosts the
|
||||
Corresponding Source, you remain obligated to ensure that it is
|
||||
available for as long as needed to satisfy these requirements.
|
||||
|
||||
e) Convey the object code using peer-to-peer transmission, provided
|
||||
you inform other peers where the object code and Corresponding
|
||||
Source of the work are being offered to the general public at no
|
||||
charge under subsection 6d.
|
||||
|
||||
A separable portion of the object code, whose source code is excluded
|
||||
from the Corresponding Source as a System Library, need not be
|
||||
included in conveying the object code work.
|
||||
|
||||
A "User Product" is either (1) a "consumer product", which means any
|
||||
tangible personal property which is normally used for personal, family,
|
||||
or household purposes, or (2) anything designed or sold for incorporation
|
||||
into a dwelling. In determining whether a product is a consumer product,
|
||||
doubtful cases shall be resolved in favor of coverage. For a particular
|
||||
product received by a particular user, "normally used" refers to a
|
||||
typical or common use of that class of product, regardless of the status
|
||||
of the particular user or of the way in which the particular user
|
||||
actually uses, or expects or is expected to use, the product. A product
|
||||
is a consumer product regardless of whether the product has substantial
|
||||
commercial, industrial or non-consumer uses, unless such uses represent
|
||||
the only significant mode of use of the product.
|
||||
|
||||
"Installation Information" for a User Product means any methods,
|
||||
procedures, authorization keys, or other information required to install
|
||||
and execute modified versions of a covered work in that User Product from
|
||||
a modified version of its Corresponding Source. The information must
|
||||
suffice to ensure that the continued functioning of the modified object
|
||||
code is in no case prevented or interfered with solely because
|
||||
modification has been made.
|
||||
|
||||
If you convey an object code work under this section in, or with, or
|
||||
specifically for use in, a User Product, and the conveying occurs as
|
||||
part of a transaction in which the right of possession and use of the
|
||||
User Product is transferred to the recipient in perpetuity or for a
|
||||
fixed term (regardless of how the transaction is characterized), the
|
||||
Corresponding Source conveyed under this section must be accompanied
|
||||
by the Installation Information. But this requirement does not apply
|
||||
if neither you nor any third party retains the ability to install
|
||||
modified object code on the User Product (for example, the work has
|
||||
been installed in ROM).
|
||||
|
||||
The requirement to provide Installation Information does not include a
|
||||
requirement to continue to provide support service, warranty, or updates
|
||||
for a work that has been modified or installed by the recipient, or for
|
||||
the User Product in which it has been modified or installed. Access to a
|
||||
network may be denied when the modification itself materially and
|
||||
adversely affects the operation of the network or violates the rules and
|
||||
protocols for communication across the network.
|
||||
|
||||
Corresponding Source conveyed, and Installation Information provided,
|
||||
in accord with this section must be in a format that is publicly
|
||||
documented (and with an implementation available to the public in
|
||||
source code form), and must require no special password or key for
|
||||
unpacking, reading or copying.
|
||||
|
||||
7. Additional Terms.
|
||||
|
||||
"Additional permissions" are terms that supplement the terms of this
|
||||
License by making exceptions from one or more of its conditions.
|
||||
Additional permissions that are applicable to the entire Program shall
|
||||
be treated as though they were included in this License, to the extent
|
||||
that they are valid under applicable law. If additional permissions
|
||||
apply only to part of the Program, that part may be used separately
|
||||
under those permissions, but the entire Program remains governed by
|
||||
this License without regard to the additional permissions.
|
||||
|
||||
When you convey a copy of a covered work, you may at your option
|
||||
remove any additional permissions from that copy, or from any part of
|
||||
it. (Additional permissions may be written to require their own
|
||||
removal in certain cases when you modify the work.) You may place
|
||||
additional permissions on material, added by you to a covered work,
|
||||
for which you have or can give appropriate copyright permission.
|
||||
|
||||
Notwithstanding any other provision of this License, for material you
|
||||
add to a covered work, you may (if authorized by the copyright holders of
|
||||
that material) supplement the terms of this License with terms:
|
||||
|
||||
a) Disclaiming warranty or limiting liability differently from the
|
||||
terms of sections 15 and 16 of this License; or
|
||||
|
||||
b) Requiring preservation of specified reasonable legal notices or
|
||||
author attributions in that material or in the Appropriate Legal
|
||||
Notices displayed by works containing it; or
|
||||
|
||||
c) Prohibiting misrepresentation of the origin of that material, or
|
||||
requiring that modified versions of such material be marked in
|
||||
reasonable ways as different from the original version; or
|
||||
|
||||
d) Limiting the use for publicity purposes of names of licensors or
|
||||
authors of the material; or
|
||||
|
||||
e) Declining to grant rights under trademark law for use of some
|
||||
trade names, trademarks, or service marks; or
|
||||
|
||||
f) Requiring indemnification of licensors and authors of that
|
||||
material by anyone who conveys the material (or modified versions of
|
||||
it) with contractual assumptions of liability to the recipient, for
|
||||
any liability that these contractual assumptions directly impose on
|
||||
those licensors and authors.
|
||||
|
||||
All other non-permissive additional terms are considered "further
|
||||
restrictions" within the meaning of section 10. If the Program as you
|
||||
received it, or any part of it, contains a notice stating that it is
|
||||
governed by this License along with a term that is a further
|
||||
restriction, you may remove that term. If a license document contains
|
||||
a further restriction but permits relicensing or conveying under this
|
||||
License, you may add to a covered work material governed by the terms
|
||||
of that license document, provided that the further restriction does
|
||||
not survive such relicensing or conveying.
|
||||
|
||||
If you add terms to a covered work in accord with this section, you
|
||||
must place, in the relevant source files, a statement of the
|
||||
additional terms that apply to those files, or a notice indicating
|
||||
where to find the applicable terms.
|
||||
|
||||
Additional terms, permissive or non-permissive, may be stated in the
|
||||
form of a separately written license, or stated as exceptions;
|
||||
the above requirements apply either way.
|
||||
|
||||
8. Termination.
|
||||
|
||||
You may not propagate or modify a covered work except as expressly
|
||||
provided under this License. Any attempt otherwise to propagate or
|
||||
modify it is void, and will automatically terminate your rights under
|
||||
this License (including any patent licenses granted under the third
|
||||
paragraph of section 11).
|
||||
|
||||
However, if you cease all violation of this License, then your
|
||||
license from a particular copyright holder is reinstated (a)
|
||||
provisionally, unless and until the copyright holder explicitly and
|
||||
finally terminates your license, and (b) permanently, if the copyright
|
||||
holder fails to notify you of the violation by some reasonable means
|
||||
prior to 60 days after the cessation.
|
||||
|
||||
Moreover, your license from a particular copyright holder is
|
||||
reinstated permanently if the copyright holder notifies you of the
|
||||
violation by some reasonable means, this is the first time you have
|
||||
received notice of violation of this License (for any work) from that
|
||||
copyright holder, and you cure the violation prior to 30 days after
|
||||
your receipt of the notice.
|
||||
|
||||
Termination of your rights under this section does not terminate the
|
||||
licenses of parties who have received copies or rights from you under
|
||||
this License. If your rights have been terminated and not permanently
|
||||
reinstated, you do not qualify to receive new licenses for the same
|
||||
material under section 10.
|
||||
|
||||
9. Acceptance Not Required for Having Copies.
|
||||
|
||||
You are not required to accept this License in order to receive or
|
||||
run a copy of the Program. Ancillary propagation of a covered work
|
||||
occurring solely as a consequence of using peer-to-peer transmission
|
||||
to receive a copy likewise does not require acceptance. However,
|
||||
nothing other than this License grants you permission to propagate or
|
||||
modify any covered work. These actions infringe copyright if you do
|
||||
not accept this License. Therefore, by modifying or propagating a
|
||||
covered work, you indicate your acceptance of this License to do so.
|
||||
|
||||
10. Automatic Licensing of Downstream Recipients.
|
||||
|
||||
Each time you convey a covered work, the recipient automatically
|
||||
receives a license from the original licensors, to run, modify and
|
||||
propagate that work, subject to this License. You are not responsible
|
||||
for enforcing compliance by third parties with this License.
|
||||
|
||||
An "entity transaction" is a transaction transferring control of an
|
||||
organization, or substantially all assets of one, or subdividing an
|
||||
organization, or merging organizations. If propagation of a covered
|
||||
work results from an entity transaction, each party to that
|
||||
transaction who receives a copy of the work also receives whatever
|
||||
licenses to the work the party's predecessor in interest had or could
|
||||
give under the previous paragraph, plus a right to possession of the
|
||||
Corresponding Source of the work from the predecessor in interest, if
|
||||
the predecessor has it or can get it with reasonable efforts.
|
||||
|
||||
You may not impose any further restrictions on the exercise of the
|
||||
rights granted or affirmed under this License. For example, you may
|
||||
not impose a license fee, royalty, or other charge for exercise of
|
||||
rights granted under this License, and you may not initiate litigation
|
||||
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
||||
any patent claim is infringed by making, using, selling, offering for
|
||||
sale, or importing the Program or any portion of it.
|
||||
|
||||
11. Patents.
|
||||
|
||||
A "contributor" is a copyright holder who authorizes use under this
|
||||
License of the Program or a work on which the Program is based. The
|
||||
work thus licensed is called the contributor's "contributor version".
|
||||
|
||||
A contributor's "essential patent claims" are all patent claims
|
||||
owned or controlled by the contributor, whether already acquired or
|
||||
hereafter acquired, that would be infringed by some manner, permitted
|
||||
by this License, of making, using, or selling its contributor version,
|
||||
but do not include claims that would be infringed only as a
|
||||
consequence of further modification of the contributor version. For
|
||||
purposes of this definition, "control" includes the right to grant
|
||||
patent sublicenses in a manner consistent with the requirements of
|
||||
this License.
|
||||
|
||||
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
||||
patent license under the contributor's essential patent claims, to
|
||||
make, use, sell, offer for sale, import and otherwise run, modify and
|
||||
propagate the contents of its contributor version.
|
||||
|
||||
In the following three paragraphs, a "patent license" is any express
|
||||
agreement or commitment, however denominated, not to enforce a patent
|
||||
(such as an express permission to practice a patent or covenant not to
|
||||
sue for patent infringement). To "grant" such a patent license to a
|
||||
party means to make such an agreement or commitment not to enforce a
|
||||
patent against the party.
|
||||
|
||||
If you convey a covered work, knowingly relying on a patent license,
|
||||
and the Corresponding Source of the work is not available for anyone
|
||||
to copy, free of charge and under the terms of this License, through a
|
||||
publicly available network server or other readily accessible means,
|
||||
then you must either (1) cause the Corresponding Source to be so
|
||||
available, or (2) arrange to deprive yourself of the benefit of the
|
||||
patent license for this particular work, or (3) arrange, in a manner
|
||||
consistent with the requirements of this License, to extend the patent
|
||||
license to downstream recipients. "Knowingly relying" means you have
|
||||
actual knowledge that, but for the patent license, your conveying the
|
||||
covered work in a country, or your recipient's use of the covered work
|
||||
in a country, would infringe one or more identifiable patents in that
|
||||
country that you have reason to believe are valid.
|
||||
|
||||
If, pursuant to or in connection with a single transaction or
|
||||
arrangement, you convey, or propagate by procuring conveyance of, a
|
||||
covered work, and grant a patent license to some of the parties
|
||||
receiving the covered work authorizing them to use, propagate, modify
|
||||
or convey a specific copy of the covered work, then the patent license
|
||||
you grant is automatically extended to all recipients of the covered
|
||||
work and works based on it.
|
||||
|
||||
A patent license is "discriminatory" if it does not include within
|
||||
the scope of its coverage, prohibits the exercise of, or is
|
||||
conditioned on the non-exercise of one or more of the rights that are
|
||||
specifically granted under this License. You may not convey a covered
|
||||
work if you are a party to an arrangement with a third party that is
|
||||
in the business of distributing software, under which you make payment
|
||||
to the third party based on the extent of your activity of conveying
|
||||
the work, and under which the third party grants, to any of the
|
||||
parties who would receive the covered work from you, a discriminatory
|
||||
patent license (a) in connection with copies of the covered work
|
||||
conveyed by you (or copies made from those copies), or (b) primarily
|
||||
for and in connection with specific products or compilations that
|
||||
contain the covered work, unless you entered into that arrangement,
|
||||
or that patent license was granted, prior to 28 March 2007.
|
||||
|
||||
Nothing in this License shall be construed as excluding or limiting
|
||||
any implied license or other defenses to infringement that may
|
||||
otherwise be available to you under applicable patent law.
|
||||
|
||||
12. No Surrender of Others' Freedom.
|
||||
|
||||
If conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot convey a
|
||||
covered work so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you may
|
||||
not convey it at all. For example, if you agree to terms that obligate you
|
||||
to collect a royalty for further conveying from those to whom you convey
|
||||
the Program, the only way you could satisfy both those terms and this
|
||||
License would be to refrain entirely from conveying the Program.
|
||||
|
||||
13. Use with the GNU Affero General Public License.
|
||||
|
||||
Notwithstanding any other provision of this License, you have
|
||||
permission to link or combine any covered work with a work licensed
|
||||
under version 3 of the GNU Affero General Public License into a single
|
||||
combined work, and to convey the resulting work. The terms of this
|
||||
License will continue to apply to the part which is the covered work,
|
||||
but the special requirements of the GNU Affero General Public License,
|
||||
section 13, concerning interaction through a network will apply to the
|
||||
combination as such.
|
||||
|
||||
14. Revised Versions of this License.
|
||||
|
||||
The Free Software Foundation may publish revised and/or new versions of
|
||||
the GNU General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the
|
||||
Program specifies that a certain numbered version of the GNU General
|
||||
Public License "or any later version" applies to it, you have the
|
||||
option of following the terms and conditions either of that numbered
|
||||
version or of any later version published by the Free Software
|
||||
Foundation. If the Program does not specify a version number of the
|
||||
GNU General Public License, you may choose any version ever published
|
||||
by the Free Software Foundation.
|
||||
|
||||
If the Program specifies that a proxy can decide which future
|
||||
versions of the GNU General Public License can be used, that proxy's
|
||||
public statement of acceptance of a version permanently authorizes you
|
||||
to choose that version for the Program.
|
||||
|
||||
Later license versions may give you additional or different
|
||||
permissions. However, no additional obligations are imposed on any
|
||||
author or copyright holder as a result of your choosing to follow a
|
||||
later version.
|
||||
|
||||
15. Disclaimer of Warranty.
|
||||
|
||||
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
||||
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
||||
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
|
||||
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
|
||||
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
|
||||
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
||||
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. Limitation of Liability.
|
||||
|
||||
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
||||
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
||||
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
|
||||
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
|
||||
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
|
||||
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
||||
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
||||
SUCH DAMAGES.
|
||||
|
||||
17. Interpretation of Sections 15 and 16.
|
||||
|
||||
If the disclaimer of warranty and limitation of liability provided
|
||||
above cannot be given local legal effect according to their terms,
|
||||
reviewing courts shall apply local law that most closely approximates
|
||||
an absolute waiver of all civil liability in connection with the
|
||||
Program, unless a warranty or assumption of liability accompanies a
|
||||
copy of the Program in return for a fee.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
state the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
{one line to give the program's name and a brief idea of what it does.}
|
||||
Copyright (C) {year} {name of author}
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program does terminal interaction, make it output a short
|
||||
notice like this when it starts in an interactive mode:
|
||||
|
||||
{project} Copyright (C) {year} {fullname}
|
||||
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, your program's commands
|
||||
might be different; for a GUI interface, you would use an "about box".
|
||||
|
||||
You should also get your employer (if you work as a programmer) or school,
|
||||
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
||||
For more information on this, and how to apply and follow the GNU GPL, see
|
||||
<http://www.gnu.org/licenses/>.
|
||||
|
||||
The GNU General Public License does not permit incorporating your program
|
||||
into proprietary programs. If your program is a subroutine library, you
|
||||
may consider it more useful to permit linking proprietary applications with
|
||||
the library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License. But first, please read
|
||||
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
51
README.md
Executable file
51
README.md
Executable file
|
@ -0,0 +1,51 @@
|
|||

|
||||

|
||||
[](https://www.paypal.me/ycarus)
|
||||
[](https://flattr.com/@ycarus)
|
||||
[](https://liberapay.com/Ycarus/)
|
||||
[](https://www.linkedin.com/in/yannick-chabanois-550330146/)
|
||||
[](https://twitter.com/OpenMPTCProuter)
|
||||
[](https://www.openmptcprouter.com/atom)
|
||||
|
||||
# OpenMPTCProuter
|
||||
|
||||
OpenMPTCProuter is an open source solution to aggregate and encrypt multiple internet connections and terminates it over any VPS which make clients benefit security, reliability, net neutrality, as well as dedicated public IP.
|
||||
|
||||
The aggregation is based on Multipath TCP (MPTCP), which is ISP, WAN type, and latency independent "whether it was Fiber, VDSL, SHDSL, ADSL, 4G or even 5G", different scenarios can be configured to have either aggregation or failover based on MPTCP.
|
||||
|
||||
Aggregation via [Multi-link VPN (MLVPN)](https://github.com/markfoodyburton/MLVPN/commits/new-reorder) and [Glorytun UDP](https://github.com/angt/glorytun) with multipath support are also supported.
|
||||
|
||||
The solution takes advantage of the OpenWRT/LEDE system, which is user friendly and also adds the possibility of installing other packages like VPN, QoS, routing protocols, monitoring, etc. through web-interface or terminal.
|
||||
|
||||
|
||||
Main website: [https://www.openmptcprouter.com/](https://www.openmptcprouter.com/)
|
||||
|
||||
Packages made for OpenMPTCProuter are available here: [https://github.com/Ysurac/openmptcprouter-feeds](https://github.com/Ysurac/openmptcprouter-feeds)
|
||||
|
||||
OpenMPTCProuter VPS script part: [https://github.com/Ysurac/openmptcprouter-vps](https://github.com/Ysurac/openmptcprouter-vps)
|
||||
|
||||
|
||||
## Install from pre-compiled images
|
||||
|
||||
You can download precompiled images from [https://www.openmptcprouter.com/](https://www.openmptcprouter.com/)
|
||||
|
||||
Then copy it to a sdcard:
|
||||
|
||||
```sh
|
||||
gunzip omr-*.img.gz
|
||||
dd bs=4M if=omr-*.img of=/dev/sdX conv=fsync
|
||||
```
|
||||
|
||||
## Install from source
|
||||
|
||||
[Create image](https://github.com/Ysurac/openmptcprouter/wiki/Create-image-for-unsupported-platform)
|
||||
|
||||
|
||||
## Credits
|
||||
|
||||
Our solution is mainly based on:
|
||||
|
||||
* [OpenWRT](https://openwrt.org)
|
||||
* [MultiPath TCP (MPTCP)](https://multipath-tcp.org)
|
||||
* [Shadowsocks](https://shadowsocks.org)
|
||||
* [Glorytun](https://github.com/angt/glorytun)
|
236
config
Executable file
236
config
Executable file
|
@ -0,0 +1,236 @@
|
|||
CONFIG_DEVEL=y
|
||||
CONFIG_TOOLCHAINOPTS=y
|
||||
CONFIG_ALL_KMODS=y
|
||||
CONFIG_BUSYBOX_CUSTOM=y
|
||||
CONFIG_BUSYBOX_CONFIG_ADDUSER=y
|
||||
CONFIG_BUSYBOX_CONFIG_ARP=y
|
||||
CONFIG_BUSYBOX_CONFIG_ARPING=y
|
||||
CONFIG_BUSYBOX_CONFIG_ASH_RANDOM_SUPPORT=y
|
||||
CONFIG_BUSYBOX_CONFIG_BASE64=y
|
||||
CONFIG_BUSYBOX_CONFIG_BC=y
|
||||
CONFIG_BUSYBOX_CONFIG_CHPASSWD=y
|
||||
CONFIG_BUSYBOX_CONFIG_DELUSER=y
|
||||
CONFIG_BUSYBOX_CONFIG_DIFF=y
|
||||
CONFIG_BUSYBOX_CONFIG_FEATURE_DATE_NANO=y
|
||||
CONFIG_BUSYBOX_CONFIG_FEATURE_DIFF_DIR=y
|
||||
CONFIG_BUSYBOX_CONFIG_FEATURE_PS_LONG=y
|
||||
CONFIG_BUSYBOX_CONFIG_FEATURE_SEAMLESS_BZ2=y
|
||||
CONFIG_BUSYBOX_CONFIG_FEATURE_SHOW_THREADS=y
|
||||
CONFIG_BUSYBOX_CONFIG_FEATURE_STAT_FILESYSTEM=y
|
||||
CONFIG_BUSYBOX_CONFIG_FEATURE_STAT_FORMAT=y
|
||||
# CONFIG_BUSYBOX_CONFIG_FEATURE_TOP_DECIMALS is not set
|
||||
# CONFIG_BUSYBOX_CONFIG_FEATURE_TOP_SMP_CPU is not set
|
||||
# CONFIG_BUSYBOX_CONFIG_FEATURE_TOP_SMP_PROCESS is not set
|
||||
CONFIG_BUSYBOX_CONFIG_FEATURE_USE_TERMIOS=y
|
||||
CONFIG_BUSYBOX_CONFIG_FEATURE_VI_UNDO=y
|
||||
CONFIG_BUSYBOX_CONFIG_FEATURE_VI_UNDO_QUEUE=y
|
||||
CONFIG_BUSYBOX_CONFIG_FEATURE_VI_UNDO_QUEUE_MAX=32
|
||||
CONFIG_BUSYBOX_CONFIG_FEATURE_XARGS_SUPPORT_PARALLEL=y
|
||||
CONFIG_BUSYBOX_CONFIG_IOSTAT=y
|
||||
CONFIG_BUSYBOX_CONFIG_LOADKMAP=y
|
||||
CONFIG_BUSYBOX_CONFIG_LSPCI=y
|
||||
CONFIG_BUSYBOX_CONFIG_LSUSB=y
|
||||
CONFIG_BUSYBOX_CONFIG_NOHUP=y
|
||||
CONFIG_BUSYBOX_CONFIG_PKILL=y
|
||||
CONFIG_BUSYBOX_CONFIG_STAT=y
|
||||
CONFIG_BUSYBOX_CONFIG_STTY=y
|
||||
CONFIG_BUSYBOX_CONFIG_TELNET=y
|
||||
CONFIG_BUSYBOX_CONFIG_TIMEOUT=y
|
||||
CONFIG_BUSYBOX_CONFIG_WATCH=y
|
||||
# CONFIG_GDB is not set
|
||||
CONFIG_GRUB_SERIAL=""
|
||||
CONFIG_GRUB_TIMEOUT="0"
|
||||
CONFIG_GRUB_TITLE="antrouter"
|
||||
CONFIG_KERNEL_AIO=y
|
||||
CONFIG_KERNEL_DEBUG_GPIO=y
|
||||
# CONFIG_KERNEL_DEBUG_INFO is not set
|
||||
CONFIG_KERNEL_DEBUG_PINCTRL=y
|
||||
CONFIG_KERNEL_DEVTMPFS=y
|
||||
CONFIG_KERNEL_DEVTMPFS_MOUNT=y
|
||||
CONFIG_KERNEL_DIRECT_IO=y
|
||||
CONFIG_KERNEL_DMA_ACPI=y
|
||||
CONFIG_KERNEL_FANOTIFY=y
|
||||
CONFIG_KERNEL_FHANDLE=y
|
||||
CONFIG_KERNEL_IPC_NS=y
|
||||
# CONFIG_KERNEL_MAGIC_SYSRQ is not set
|
||||
CONFIG_KERNEL_MMC_SDHCI_ACPI=y
|
||||
CONFIG_KERNEL_NAMESPACES=y
|
||||
CONFIG_KERNEL_NET_NS=y
|
||||
CONFIG_KERNEL_PID_NS=y
|
||||
# CONFIG_KERNEL_SWAP is not set
|
||||
CONFIG_KERNEL_USER_NS=y
|
||||
CONFIG_KERNEL_UTS_NS=y
|
||||
# CONFIG_PACKAGE_dnsmasq is not set
|
||||
CONFIG_PACKAGE_kmod-8021q=y
|
||||
CONFIG_PACKAGE_kmod-ata-ahci=y
|
||||
CONFIG_PACKAGE_kmod-ata-core=y
|
||||
CONFIG_PACKAGE_kmod-block2mtd=y
|
||||
CONFIG_PACKAGE_kmod-bridge=y
|
||||
CONFIG_PACKAGE_kmod-crypto-gcm=y
|
||||
CONFIG_PACKAGE_kmod-gpio-button-hotplug=y
|
||||
CONFIG_PACKAGE_kmod-hid=y
|
||||
CONFIG_PACKAGE_kmod-hid-generic=y
|
||||
CONFIG_PACKAGE_kmod-i2c-gpio=y
|
||||
CONFIG_PACKAGE_kmod-i2c-gpio-custom=y
|
||||
CONFIG_PACKAGE_kmod-ifb=y
|
||||
CONFIG_PACKAGE_kmod-ikconfig=y
|
||||
CONFIG_PACKAGE_kmod-input-evdev=y
|
||||
CONFIG_PACKAGE_kmod-loop=y
|
||||
CONFIG_PACKAGE_kmod-macvlan=y
|
||||
CONFIG_PACKAGE_kmod-mmc=y
|
||||
CONFIG_PACKAGE_kmod-mmc-spi=y
|
||||
CONFIG_PACKAGE_kmod-random-core=y
|
||||
CONFIG_DEFAULT_kmod-r8169=y
|
||||
CONFIG_PACKAGE_kmod-scsi-core=y
|
||||
CONFIG_PACKAGE_kmod-sctp=y
|
||||
CONFIG_PACKAGE_kmod-sdhci=y
|
||||
CONFIG_PACKAGE_kmod-serial-8250=y
|
||||
CONFIG_PACKAGE_kmod-stp=y
|
||||
CONFIG_PACKAGE_kmod-usb-acm=y
|
||||
CONFIG_PACKAGE_kmod-usb-core=y
|
||||
CONFIG_PACKAGE_kmod-usb-hid=y
|
||||
CONFIG_PACKAGE_kmod-usb-net=y
|
||||
CONFIG_PACKAGE_kmod-usb-net-asix=y
|
||||
CONFIG_PACKAGE_kmod-usb-net-asix-ax88179=y
|
||||
CONFIG_PACKAGE_kmod-usb-net-cdc-eem=y
|
||||
CONFIG_PACKAGE_kmod-usb-net-cdc-ether=y
|
||||
CONFIG_PACKAGE_kmod-usb-net-cdc-mbim=y
|
||||
CONFIG_PACKAGE_kmod-usb-net-cdc-ncm=y
|
||||
CONFIG_PACKAGE_kmod-usb-net-cdc-subset=y
|
||||
CONFIG_PACKAGE_kmod-usb-net-dm9601-ether=y
|
||||
CONFIG_PACKAGE_kmod-usb-net-hso=y
|
||||
CONFIG_PACKAGE_kmod-usb-net-huawei-cdc-ncm=y
|
||||
CONFIG_PACKAGE_kmod-usb-net-ipheth=y
|
||||
CONFIG_PACKAGE_kmod-usb-net-kalmia=y
|
||||
CONFIG_PACKAGE_kmod-usb-net-kaweth=y
|
||||
CONFIG_PACKAGE_kmod-usb-net-mcs7830=y
|
||||
CONFIG_PACKAGE_kmod-usb-net-pegasus=y
|
||||
CONFIG_PACKAGE_kmod-usb-net-qmi-wwan=y
|
||||
CONFIG_PACKAGE_kmod-usb-net-rndis=y
|
||||
CONFIG_PACKAGE_kmod-usb-net-rtl8150=y
|
||||
CONFIG_PACKAGE_kmod-usb-net-rtl8152=y
|
||||
CONFIG_PACKAGE_kmod-usb-net-sierrawireless=y
|
||||
CONFIG_PACKAGE_kmod-usb-net-smsc95xx=y
|
||||
CONFIG_PACKAGE_kmod-usb-net-sr9700=y
|
||||
CONFIG_PACKAGE_kmod-usb-serial=y
|
||||
CONFIG_PACKAGE_kmod-usb-serial-ark3116=y
|
||||
CONFIG_PACKAGE_kmod-usb-serial-belkin=y
|
||||
CONFIG_PACKAGE_kmod-usb-serial-ch341=y
|
||||
CONFIG_PACKAGE_kmod-usb-serial-cp210x=y
|
||||
CONFIG_PACKAGE_kmod-usb-serial-cypress-m8=y
|
||||
CONFIG_PACKAGE_kmod-usb-serial-ftdi=y
|
||||
CONFIG_PACKAGE_kmod-usb-serial-garmin=y
|
||||
CONFIG_PACKAGE_kmod-usb-serial-ipw=y
|
||||
CONFIG_PACKAGE_kmod-usb-serial-keyspan=y
|
||||
CONFIG_PACKAGE_kmod-usb-serial-mct=y
|
||||
CONFIG_PACKAGE_kmod-usb-serial-mos7720=y
|
||||
CONFIG_PACKAGE_kmod-usb-serial-option=y
|
||||
CONFIG_PACKAGE_kmod-usb-serial-oti6858=y
|
||||
CONFIG_PACKAGE_kmod-usb-serial-pl2303=y
|
||||
CONFIG_PACKAGE_kmod-usb-serial-qualcomm=y
|
||||
CONFIG_PACKAGE_kmod-usb-serial-sierrawireless=y
|
||||
CONFIG_PACKAGE_kmod-usb-serial-simple=y
|
||||
CONFIG_PACKAGE_kmod-usb-serial-ti-usb=y
|
||||
CONFIG_PACKAGE_kmod-usb-serial-visor=y
|
||||
CONFIG_PACKAGE_kmod-usb-serial-wwan=y
|
||||
CONFIG_PACKAGE_kmod-usb-storage=y
|
||||
CONFIG_PACKAGE_kmod-usb-wdm=y
|
||||
CONFIG_PACKAGE_kmod-usb2=y
|
||||
CONFIG_PACKAGE_kmod-usb3=y
|
||||
CONFIG_PACKAGE_kmod-veth=y
|
||||
CONFIG_PACKAGE_kmod-3c59x=y
|
||||
CONFIG_PACKAGE_kmod-8139cp=y
|
||||
CONFIG_PACKAGE_kmod-8139too=y
|
||||
CONFIG_PACKAGE_kmod-atl1=y
|
||||
CONFIG_PACKAGE_kmod-atl1c=y
|
||||
CONFIG_PACKAGE_kmod-atl1e=y
|
||||
CONFIG_PACKAGE_kmod-atl2=y
|
||||
CONFIG_PACKAGE_kmod-b44=y
|
||||
CONFIG_PACKAGE_kmod-bnx2=y
|
||||
CONFIG_PACKAGE_kmod-dm9000=y
|
||||
CONFIG_PACKAGE_kmod-e100=y
|
||||
CONFIG_PACKAGE_kmod-e1000=y
|
||||
CONFIG_PACKAGE_kmod-e1000e=y
|
||||
CONFIG_PACKAGE_kmod-et131x=y
|
||||
CONFIG_PACKAGE_kmod-ethoc=y
|
||||
CONFIG_PACKAGE_kmod-forcedeth=y
|
||||
CONFIG_PACKAGE_kmod-gigaset=y
|
||||
CONFIG_PACKAGE_kmod-hfcmulti=y
|
||||
CONFIG_PACKAGE_kmod-hfcpci=y
|
||||
CONFIG_PACKAGE_kmod-natsemi=y
|
||||
CONFIG_PACKAGE_kmod-ne2k-pci=y
|
||||
CONFIG_PACKAGE_kmod-of-mdio=y
|
||||
CONFIG_PACKAGE_kmod-pcnet32=y
|
||||
CONFIG_PACKAGE_kmod-phy-broadcom=y
|
||||
CONFIG_PACKAGE_kmod-ppfe=y
|
||||
CONFIG_PACKAGE_kmod-r6040=y
|
||||
CONFIG_PACKAGE_kmod-r8169=y
|
||||
CONFIG_PACKAGE_kmod-sis190=y
|
||||
CONFIG_PACKAGE_kmod-sis900=y
|
||||
CONFIG_PACKAGE_kmod-skge=y
|
||||
CONFIG_PACKAGE_kmod-sky2=y
|
||||
CONFIG_PACKAGE_kmod-solos-pci=y
|
||||
CONFIG_PACKAGE_kmod-spi-ks8995=y
|
||||
CONFIG_PACKAGE_kmod-tg3=y
|
||||
CONFIG_PACKAGE_kmod-tulip=y
|
||||
CONFIG_PACKAGE_kmod-via-rhine=y
|
||||
CONFIG_PACKAGE_kmod-via-velocity=y
|
||||
CONFIG_PACKAGE_kmod-vmxnet3=y
|
||||
CONFIG_PACKAGE_kmod-fs-vfat=y
|
||||
CONFIG_PACKAGE_kmod-macremapper=m
|
||||
CONFIG_TARGET_IMAGES_PAD=y
|
||||
CONFIG_TARGET_ROOTFS_EXT4=y
|
||||
CONFIG_KERNEL_TCP_CONG_CDG=y
|
||||
CONFIG_KERNEL_TCP_CONG_HTCP=y
|
||||
CONFIG_KERNEL_TCP_CONG_HSTCP=y
|
||||
CONFIG_KERNEL_TCP_CONG_HYBLA=y
|
||||
CONFIG_KERNEL_TCP_CONG_ILLINOIS=y
|
||||
CONFIG_KERNEL_TCP_CONG_SCALABLE=y
|
||||
CONFIG_KERNEL_TCP_CONG_VEGAS=y
|
||||
CONFIG_KERNEL_TCP_CONG_VENO=y
|
||||
CONFIG_KERNEL_TCP_CONG_WESTWOOD=y
|
||||
CONFIG_KERNEL_TCP_CONG_YEAH=y
|
||||
CONFIG_KERNEL_TCP_CONG_LIA=y
|
||||
CONFIG_KERNEL_TCP_CONG_BBR=y
|
||||
CONFIG_KERNEL_TCP_CONG_NANQINLANG=y
|
||||
CONFIG_KERNEL_TCP_CONG_OLIA=y
|
||||
CONFIG_KERNEL_TCP_CONG_WVEGAS=y
|
||||
CONFIG_KERNEL_TCP_CONG_BALIA=y
|
||||
CONFIG_KERNEL_MPTCP_FULLMESH=y
|
||||
CONFIG_KERNEL_DEFAULT_FULLMESH=y
|
||||
CONFIG_KERNEL_MPTCP_NDIFFPORTS=y
|
||||
# CONFIG_KERNEL_DEFAULT_NDIFFPORTS is not set
|
||||
CONFIG_KERNEL_MPTCP_BINDER=y
|
||||
CONFIG_KERNEL_MPTCP_ECF=y
|
||||
# CONFIG_KERNEL_DEFAULT_BINDER is not set
|
||||
# CONFIG_KERNEL_DEFAULT_DUMMY is not set
|
||||
CONFIG_KERNEL_MPTCP_ROUNDROBIN=y
|
||||
# CONFIG_KERNEL_DEFAULT_ROUNDROBIN is not set
|
||||
CONFIG_KERNEL_MPTCP_REDUNDANT=y
|
||||
# CONFIG_KERNEL_DEFAULT_REDUNDANT is not set
|
||||
CONFIG_KERNEL_DEFAULT_SCHEDULER=y
|
||||
CONFIG_KERNEL_MPTCP=y
|
||||
CONFIG_KERNEL_CRYPTO_SHA256=y
|
||||
CONFIG_LUCI_LANG_en=y
|
||||
CONFIG_LUCI_LANG_zh_Hans=y
|
||||
CONFIG_LUCI_LANG_zh_Hant=y
|
||||
CONFIG_TARGET_ROOTFS_PARTSIZE=512
|
||||
CONFIG_TARGET_KERNEL_PARTSIZE=64
|
||||
CONFIG_OPENSSL_WITH_CHACHA_POLY1305=y
|
||||
# CONFIG_LUCI_CSSTIDY is not set
|
||||
# CONFIG_LIBCURL_WOLFSSL is not set
|
||||
# CONFIG_PACKAGE_libustream-wolfssl is not set
|
||||
CONFIG_KERNEL_DEVMEM=y
|
||||
CONFIG_KERNEL_DEVKMEM=y
|
||||
CONFIG_AUTOREMOVE=y
|
||||
CONFIG_PACKAGE_luci-theme-argon=y
|
||||
CONFIG_PACKAGE_luci-theme-bootstrap=y
|
||||
CONFIG_PACKAGE_luci-theme-openwrt-2020=y
|
||||
# CONFIG_PACKAGE_luci-theme-argon is not set
|
||||
CONFIG_PACKAGE_luci-app-status=m
|
||||
CONFIG_PACKAGE_luci-mod-status=y
|
||||
CONFIG_PACKAGE_frpc=y
|
||||
CONFIG_PACKAGE_rtty-nossl=y
|
||||
CONFIG_PACKAGE_minicom=y
|
||||
CONFIG_PACKAGE_irqbalance=y
|
||||
CONFIG_PACKAGE_mtr=y
|
20
config-bpi-r2
Executable file
20
config-bpi-r2
Executable file
|
@ -0,0 +1,20 @@
|
|||
CONFIG_TARGET_mediatek=y
|
||||
CONFIG_TARGET_mediatek_mt7623=y
|
||||
CONFIG_TARGET_mediatek_mt7623_DEVICE_bpi_bananapi-r2=y
|
||||
CONFIG_TARGET_ROOTFS_EXT4FS=y
|
||||
CONFIG_TARGET_ROOTFS_SQUASHFS=y
|
||||
CONFIG_PACKAGE_kmod-cryptodev=y
|
||||
CONFIG_OPENSSL_HARDWARE_SUPPORT=y
|
||||
CONFIG_OPENSSL_ENGINE_CRYPTO=y
|
||||
CONFIG_OPENSSL_ENGINE_DIGEST=y
|
||||
CONFIG_PACKAGE_uboot-envtools=y
|
||||
CONFIG_PACKAGE_attr=y
|
||||
CONFIG_PACKAGE_f2fs-tools=y
|
||||
CONFIG_PACKAGE_f2fsck=y
|
||||
CONFIG_PACKAGE_mkf2fs=y
|
||||
# CONFIG_PACKAGE_kmod-fs-nfs-v3 is not set
|
||||
# CONFIG_PACKAGE_kmod-fs-nfs-v4 is not set
|
||||
# CONFIG_PACKAGE_kmod-rtl8812au-ct is not set
|
||||
# CONFIG_PACKAGE_kmod-mt6625l-bt is not set
|
||||
# CONFIG_PACKAGE_kmod-mt6625l-wlan-gen-2 is not set
|
||||
CONFIG_KERNEL_ARM_MODULE_PLTS=y
|
10
config-bpi-r64
Executable file
10
config-bpi-r64
Executable file
|
@ -0,0 +1,10 @@
|
|||
CONFIG_TARGET_mediatek=y
|
||||
CONFIG_TARGET_mediatek_mt7622=y
|
||||
CONFIG_TARGET_mediatek_mt7622_DEVICE_bpi_bananapi-r64=y
|
||||
# CONFIG_PACKAGE_kmod-mt6625l-bt is not set
|
||||
# CONFIG_PACKAGE_kmod-mt6625l-wlan-gen-2 is not set
|
||||
CONFIG_PACKAGE_uboot-mediatek=y
|
||||
CONFIG_PACKAGE_uboot-envtools=y
|
||||
CONFIG_PACKAGE_mt7622-preloader=y
|
||||
CONFIG_KERNEL_ARM64_MODULE_PLTS=y
|
||||
CONFIG_KERNEL_TCP_CONG_BBR2=y
|
9
config-espressobin
Executable file
9
config-espressobin
Executable file
|
@ -0,0 +1,9 @@
|
|||
CONFIG_TARGET_mvebu=y
|
||||
CONFIG_TARGET_mvebu_cortexa53=y
|
||||
CONFIG_TARGET_mvebu_cortexa53_DEVICE_globalscale_espressobin-v7=y
|
||||
CONFIG_PACKAGE_kmod-6lowpan=y
|
||||
CONFIG_PACKAGE_luci-app-advanced-reboot=y
|
||||
# CONFIG_KERNEL_CC_OPTIMIZE_FOR_PERFORMANCE is not set
|
||||
CONFIG_KERNEL_CC_OPTIMIZE_FOR_SIZE=y
|
||||
CONFIG_KERNEL_ARM_MODULE_PLTS=y
|
||||
CONFIG_KERNEL_TCP_CONG_BBR2=y
|
6
config-r2s
Executable file
6
config-r2s
Executable file
|
@ -0,0 +1,6 @@
|
|||
CONFIG_TARGET_rockchip=y
|
||||
CONFIG_TARGET_rockchip_armv8=y
|
||||
CONFIG_TARGET_rockchip_armv8_DEVICE_friendlyarm_nanopi-r2s=y
|
||||
CONFIG_PACKAGE_kmod-6lowpan=y
|
||||
CONFIG_KERNEL_ARM_MODULE_PLTS=y
|
||||
CONFIG_KERNEL_TCP_CONG_BBR2=y
|
8
config-rpi2
Executable file
8
config-rpi2
Executable file
|
@ -0,0 +1,8 @@
|
|||
CONFIG_TARGET_bcm27xx=y
|
||||
CONFIG_TARGET_bcm27xx_bcm2709=y
|
||||
CONFIG_TARGET_bcm27xx_bcm2709_DEVICE_rpi-2=y
|
||||
CONFIG_PACKAGE_kmod-ath10k-ct=n
|
||||
CONFIG_PACKAGE_kmod-ath9k=y
|
||||
CONFIG_PACKAGE_bcm27xx-eeprom=y
|
||||
CONFIG_PACKAGE_bcm27xx-userland=y
|
||||
CONFIG_KERNEL_ARM_MODULE_PLTS=y
|
7
config-rpi3
Executable file
7
config-rpi3
Executable file
|
@ -0,0 +1,7 @@
|
|||
CONFIG_TARGET_bcm27xx=y
|
||||
CONFIG_TARGET_bcm27xx_bcm2710=y
|
||||
CONFIG_TARGET_bcm27xx_bcm2710_DEVICE_rpi-3=y
|
||||
CONFIG_PACKAGE_kmod-ath10k-ct=n
|
||||
CONFIG_PACKAGE_kmod-ath9k=y
|
||||
CONFIG_KERNEL_ARM_MODULE_PLTS=y
|
||||
CONFIG_KERNEL_TCP_CONG_BBR2=y
|
9
config-rpi4
Executable file
9
config-rpi4
Executable file
|
@ -0,0 +1,9 @@
|
|||
CONFIG_TARGET_bcm27xx=y
|
||||
CONFIG_TARGET_bcm27xx_bcm2711=y
|
||||
CONFIG_TARGET_bcm27xx_bcm2711_DEVICE_rpi-4=y
|
||||
CONFIG_PACKAGE_kmod-ath10k-ct=n
|
||||
CONFIG_PACKAGE_kmod-ath9k=y
|
||||
CONFIG_PACKAGE_bcm27xx-eeprom=y
|
||||
CONFIG_PACKAGE_bcm27xx-userland=y
|
||||
CONFIG_KERNEL_ARM64_MODULE_PLTS=y
|
||||
CONFIG_KERNEL_TCP_CONG_BBR2=y
|
7
config-ubnt-erx
Normal file
7
config-ubnt-erx
Normal file
|
@ -0,0 +1,7 @@
|
|||
CONFIG_TARGET_ramips=y
|
||||
CONFIG_TARGET_ramips_mt7621=y
|
||||
CONFIG_TARGET_ramips_mt7621_DEVICE_ubnt_edgerouter-x=y
|
||||
CONFIG_PACKAGE_kmod-6lowpan=y
|
||||
# CONFIG_KERNEL_CC_OPTIMIZE_FOR_PERFORMANCE is not set
|
||||
CONFIG_KERNEL_CC_OPTIMIZE_FOR_SIZE=y
|
||||
CONFIG_KERNEL_GPIO_SYSFS=y
|
8
config-wrt3200acm
Executable file
8
config-wrt3200acm
Executable file
|
@ -0,0 +1,8 @@
|
|||
CONFIG_TARGET_mvebu=y
|
||||
CONFIG_TARGET_mvebu_cortexa9=y
|
||||
CONFIG_TARGET_mvebu_cortexa9_DEVICE_linksys_wrt3200acm=y
|
||||
CONFIG_PACKAGE_kmod-6lowpan=y
|
||||
CONFIG_PACKAGE_luci-app-advanced-reboot=y
|
||||
# CONFIG_KERNEL_CC_OPTIMIZE_FOR_PERFORMANCE is not set
|
||||
CONFIG_KERNEL_CC_OPTIMIZE_FOR_SIZE=y
|
||||
CONFIG_KERNEL_ARM_MODULE_PLTS=y
|
8
config-wrt32x
Executable file
8
config-wrt32x
Executable file
|
@ -0,0 +1,8 @@
|
|||
CONFIG_TARGET_mvebu=y
|
||||
CONFIG_TARGET_mvebu_cortexa9=y
|
||||
CONFIG_TARGET_mvebu_cortexa9_DEVICE_linksys_wrt32x=y
|
||||
CONFIG_PACKAGE_kmod-6lowpan=y
|
||||
CONFIG_PACKAGE_luci-app-advanced-reboot=y
|
||||
# CONFIG_KERNEL_CC_OPTIMIZE_FOR_PERFORMANCE is not set
|
||||
CONFIG_KERNEL_CC_OPTIMIZE_FOR_SIZE=y
|
||||
CONFIG_KERNEL_ARM_MODULE_PLTS=y
|
7
config-x86
Executable file
7
config-x86
Executable file
|
@ -0,0 +1,7 @@
|
|||
CONFIG_TARGET_x86=y
|
||||
CONFIG_TARGET_x86_generic=y
|
||||
CONFIG_TARGET_x86_generic_Generic=y
|
||||
CONFIG_TARGET_EXT4_JOURNAL=y
|
||||
# CONFIG_TARGET_ROOTFS_TARGZ is not set
|
||||
CONFIG_PACKAGE_open-vm-tools=m
|
||||
CONFIG_PACKAGE_kmod-ath9k=y
|
12
config-x86_64
Executable file
12
config-x86_64
Executable file
|
@ -0,0 +1,12 @@
|
|||
CONFIG_TARGET_x86=y
|
||||
CONFIG_TARGET_x86_64=y
|
||||
CONFIG_TARGET_x86_64_Generic=y
|
||||
CONFIG_TARGET_EXT4_JOURNAL=y
|
||||
CONFIG_TARGET_ROOTFS_TARGZ=y
|
||||
CONFIG_KERNEL_PAGE_TABLE_ISOLATION=y
|
||||
CONFIG_PACKAGE_open-vm-tools=m
|
||||
CONFIG_PACKAGE_kmod-ath9k=y
|
||||
CONFIG_GRUB_IMAGES=y
|
||||
CONFIG_EFI_IMAGES=y
|
||||
# CONFIG_VMDK_IMAGES is not set
|
||||
CONFIG_KERNEL_TCP_CONG_BBR2=y
|
9
contributors/example.md
Executable file
9
contributors/example.md
Executable file
|
@ -0,0 +1,9 @@
|
|||
2018-05-19
|
||||
|
||||
I hereby agree to the terms of the "OpenMPTCProuter Individual Contributor License Agreement", with MD5 checksum bc827a07eb93611d793ddb7c75083c00.
|
||||
|
||||
I furthermore declare that I am authorized and able to make this agreement and sign this declaration.
|
||||
|
||||
Signed,
|
||||
|
||||
John Doe https://github.com/johndoe
|
BIN
deploy_rsa.enc
Executable file
BIN
deploy_rsa.enc
Executable file
Binary file not shown.
27
patches/bbr2.patch
Executable file
27
patches/bbr2.patch
Executable file
|
@ -0,0 +1,27 @@
|
|||
--- a/package/kernel/linux/modules/netsupport.mk 2020-11-22 17:39:14.462349527 +0100
|
||||
+++ b/package/kernel/linux/modules/netsupport.mk 2020-11-22 17:41:37.719620332 +0100
|
||||
@@ -948,6 +948,24 @@
|
||||
|
||||
$(eval $(call KernelPackage,tcp-bbr))
|
||||
|
||||
+define KernelPackage/tcp-bbr2
|
||||
+ SUBMENU:=$(NETWORK_SUPPORT_MENU)
|
||||
+ TITLE:=BBRv2 TCP congestion control
|
||||
+ KCONFIG:= \
|
||||
+ CONFIG_TCP_CONG_ADVANCED=y \
|
||||
+ CONFIG_TCP_CONG_BBR2
|
||||
+ FILES:=$(LINUX_DIR)/net/ipv4/tcp_bbr2.ko
|
||||
+ AUTOLOAD:=$(call AutoLoad,74,tcp_bbr2)
|
||||
+endef
|
||||
+
|
||||
+define KernelPackage/tcp-bbr2/description
|
||||
+ Kernel module for BBRv2 (Bottleneck Bandwidth and RTT) TCP congestion
|
||||
+ control. It requires the fq ("Fair Queue") pacing packet scheduler.
|
||||
+ For kernel 4.13+, TCP internal pacing is implemented as fallback.
|
||||
+endef
|
||||
+
|
||||
+$(eval $(call KernelPackage,tcp-bbr2))
|
||||
+
|
||||
define KernelPackage/tcp-nanqinlang
|
||||
SUBMENU:=$(NETWORK_SUPPORT_MENU)
|
||||
TITLE:=BBR NANQINLANG TCP congestion control
|
14
patches/check-rsync.patch
Executable file
14
patches/check-rsync.patch
Executable file
|
@ -0,0 +1,14 @@
|
|||
diff --git a/include/prereq-build.mk b/include/prereq-build.mk
|
||||
index e7314b253b58..5045fabdfbde 100644
|
||||
--- a/include/prereq-build.mk
|
||||
+++ b/include/prereq-build.mk
|
||||
@@ -170,9 +170,6 @@ $(eval $(call SetupHostCommand,git,Please install Git (git-core) >= 1.7.12.2, \
|
||||
$(eval $(call SetupHostCommand,file,Please install the 'file' package, \
|
||||
file --version 2>&1 | grep file))
|
||||
|
||||
-$(eval $(call SetupHostCommand,rsync,Please install 'rsync', \
|
||||
- rsync --version </dev/null))
|
||||
-
|
||||
$(STAGING_DIR_HOST)/bin/mkhash: $(SCRIPT_DIR)/mkhash.c
|
||||
mkdir -p $(dir $@)
|
||||
$(CC) -O2 -I$(TOPDIR)/tools/include -o $@ $<
|
13
patches/download-ipv4.patch
Executable file
13
patches/download-ipv4.patch
Executable file
|
@ -0,0 +1,13 @@
|
|||
--- a/scripts/download.pl 2020-04-12 21:41:19.548645048 +0200
|
||||
+++ b/scripts/download.pl 2020-04-12 21:41:28.752479609 +0200
|
||||
@@ -82,8 +82,8 @@
|
||||
}
|
||||
|
||||
return $have_curl
|
||||
- ? (qw(curl -f --connect-timeout 20 --retry 5 --location --insecure), shellwords($ENV{CURL_OPTIONS} || ''), $url)
|
||||
- : (qw(wget --tries=5 --timeout=20 --no-check-certificate --output-document=-), shellwords($ENV{WGET_OPTIONS} || ''), $url)
|
||||
+ ? (qw(curl -4 -f --connect-timeout 20 --retry 5 --location --insecure), shellwords($ENV{CURL_OPTIONS} || ''), $url)
|
||||
+ : (qw(wget -4 --tries=5 --timeout=20 --no-check-certificate --output-document=-), shellwords($ENV{WGET_OPTIONS} || ''), $url)
|
||||
;
|
||||
}
|
||||
|
10
patches/gtime.patch
Executable file
10
patches/gtime.patch
Executable file
|
@ -0,0 +1,10 @@
|
|||
--- a/include/subdir.mk 2018-06-29 15:42:35.249190676 +0200
|
||||
+++ b/include/b/include/subdir.mk 2018-06-29 15:42:42.373119326 +0200
|
||||
@@ -43,7 +43,6 @@
|
||||
$(if $(BUILD_LOG), \
|
||||
set -o pipefail; \
|
||||
mkdir -p $(BUILD_LOG_DIR)/$(1)$(if $(4),/$(4));) \
|
||||
- env time -f "time: $(1)$(if $(4),/$(4))/$(if $(3),$(3)-)$(2)\#%U\#%S\#%e" -- \
|
||||
$$(SUBMAKE) $(subdir_make_opts) $(if $(3),$(3)-)$(2) \
|
||||
$(if $(BUILD_LOG),SILENT= 2>&1 | tee $(BUILD_LOG_DIR)/$(1)$(if $(4),/$(4))/$(if $(3),$(3)-)$(2).txt)
|
||||
|
42
patches/images.patch
Executable file
42
patches/images.patch
Executable file
|
@ -0,0 +1,42 @@
|
|||
--- a/config/Config-images.in.orig 2019-05-28 14:40:45.246749741 +0200
|
||||
+++ b/config/Config-images.in 2019-05-28 14:41:14.866378695 +0200
|
||||
@@ -251,6 +251,13 @@
|
||||
select TARGET_IMAGES_PAD
|
||||
select PACKAGE_kmod-e1000
|
||||
|
||||
+ config VHDX_IMAGES
|
||||
+ bool "Build Hyper-V image files (VHDX)"
|
||||
+ depends on TARGET_x86
|
||||
+ select GRUB_IMAGES
|
||||
+ select TARGET_IMAGES_PAD
|
||||
+ select PACKAGE_kmod-e1000
|
||||
+
|
||||
config TARGET_IMAGES_PAD
|
||||
bool "Pad images to filesystem size (for JFFS2)"
|
||||
depends on GRUB_IMAGES
|
||||
--- a/target/linux/x86/image/Makefile.orig 2019-06-03 14:32:39.094356089 +0200
|
||||
+++ b/target/linux/x86/image/Makefile 2019-06-03 19:04:23.875965073 +0200
|
||||
@@ -143,6 +143,15 @@
|
||||
endef
|
||||
endif
|
||||
|
||||
+ifneq ($(CONFIG_VHDX_IMAGES),)
|
||||
+ define Image/Build/vhdx
|
||||
+ rm $(BIN_DIR)/$(IMG_PREFIX)-combined-$(1).vhdx || true
|
||||
+ qemu-img convert -f raw -O vhdx \
|
||||
+ $(BIN_DIR)/$(IMG_PREFIX)-combined-$(1).img \
|
||||
+ $(BIN_DIR)/$(IMG_PREFIX)-combined-$(1).vhdx
|
||||
+ endef
|
||||
+endif
|
||||
+
|
||||
define Image/Build/gzip
|
||||
gzip -f9n $(BIN_DIR)/$(IMG_PREFIX)-combined-$(1).img
|
||||
gzip -f9n $(BIN_DIR)/$(IMG_PREFIX)-rootfs-$(1).img
|
||||
@@ -175,6 +184,7 @@
|
||||
$(call Image/Build/grub2,$(1))
|
||||
$(call Image/Build/vdi,$(1))
|
||||
$(call Image/Build/vmdk,$(1))
|
||||
+ $(call Image/Build/vhdx,$(1))
|
||||
$(CP) $(KDIR)/root.$(1) $(BIN_DIR)/$(IMG_PREFIX)-rootfs-$(1).img
|
||||
else
|
||||
$(CP) $(KDIR)/root.iso $(BIN_DIR)/$(IMG_PREFIX).iso
|
14
patches/ipt-nat6.patch
Executable file
14
patches/ipt-nat6.patch
Executable file
|
@ -0,0 +1,14 @@
|
|||
--- a/package/kernel/linux/modules/netfilter.mk 2020-03-20 15:41:58.620893747 +0100
|
||||
+++ b/package/kernel/linux/modules/netfilter.mk 2020-03-20 15:45:34.389015301 +0100
|
||||
@@ -483,8 +483,10 @@
|
||||
define KernelPackage/ipt-nat6
|
||||
TITLE:=IPv6 NAT targets
|
||||
DEPENDS:=@IPV6
|
||||
KCONFIG:=$(KCONFIG_IPT_NAT6)
|
||||
- FILES:=$(foreach mod,$(IPT_NAT6-m),$(LINUX_DIR)/net/$(mod).ko)
|
||||
+ FILES:= \
|
||||
+ $(LINUX_DIR)/net/ipv6/netfilter/ip6t_NPT.ko \
|
||||
+ $(LINUX_DIR)/net/ipv6/netfilter/ip6table_nat.ko
|
||||
AUTOLOAD:=$(call AutoLoad,43,$(notdir $(IPT_NAT6-m)))
|
||||
$(call AddDepends/ipt,+kmod-nf-nat6)
|
||||
$(call AddDepends/ipt,+kmod-ipt-conntrack)
|
10
patches/luci-occitan.patch
Executable file
10
patches/luci-occitan.patch
Executable file
|
@ -0,0 +1,10 @@
|
|||
--- a/feeds/luci/luci.mk 2020-10-13 09:58:19.887513368 +0200
|
||||
+++ b/feeds/luci/luci.mk 2020-10-13 09:04:51.724277184 +0200
|
||||
@@ -34,6 +34,7 @@
|
||||
LUCI_LANG.ms=Bahasa Melayu (Malay)
|
||||
LUCI_LANG.nb_NO=Norsk (Norwegian)
|
||||
LUCI_LANG.nl=Nederlands (Dutch)
|
||||
+LUCI_LANG.oc=Occitan
|
||||
LUCI_LANG.pl=Polski (Polish)
|
||||
LUCI_LANG.pt_BR=Português do Brasil (Brazilian Portuguese)
|
||||
LUCI_LANG.pt=Português (Portuguese)
|
28
patches/nanqinlang.patch
Executable file
28
patches/nanqinlang.patch
Executable file
|
@ -0,0 +1,28 @@
|
|||
--- a/package/kernel/linux/modules/netsupport.mk 2019-12-18 18:31:28.865626571 +0100
|
||||
+++ b/package/kernel/linux/modules/netsupport.mk 2019-12-18 18:33:31.175524777 +0100
|
||||
@@ -962,6 +962,25 @@
|
||||
|
||||
$(eval $(call KernelPackage,tcp-bbr))
|
||||
|
||||
+define KernelPackage/tcp-nanqinlang
|
||||
+ SUBMENU:=$(NETWORK_SUPPORT_MENU)
|
||||
+ TITLE:=BBR NANQINLANG TCP congestion control
|
||||
+ DEPENDS:=+LINUX_4_9:kmod-sched
|
||||
+ KCONFIG:= \
|
||||
+ CONFIG_TCP_CONG_ADVANCED=y \
|
||||
+ CONFIG_TCP_CONG_NANQINLANG
|
||||
+ FILES:=$(LINUX_DIR)/net/ipv4/tcp_nanqinlang.ko
|
||||
+ AUTOLOAD:=$(call AutoLoad,74,tcp_nanqinlang)
|
||||
+endef
|
||||
+
|
||||
+define KernelPackage/tcp-nanqinlang/description
|
||||
+ Kernel module for BBR (Bottleneck Bandwidth and RTT) TCP congestion
|
||||
+ control. It requires the fq ("Fair Queue") pacing packet scheduler.
|
||||
+ For kernel 4.13+, TCP internal pacing is implemented as fallback.
|
||||
+endef
|
||||
+
|
||||
+$(eval $(call KernelPackage,tcp-nanqinlang))
|
||||
+
|
||||
|
||||
define KernelPackage/ax25
|
||||
SUBMENU:=$(NETWORK_SUPPORT_MENU)
|
10
patches/nocheck.patch
Executable file
10
patches/nocheck.patch
Executable file
|
@ -0,0 +1,10 @@
|
|||
--- a/include/package-ipkg.mk.1 2019-06-02 10:10:48.814882668 +0200
|
||||
+++ b/include/package-ipkg.mk 2019-06-02 10:08:20.372736726 +0200
|
||||
@@ -79,7 +79,6 @@
|
||||
if [ -f "$(PKG_INFO_DIR)/$(1).missing" ]; then \
|
||||
echo "Package $(1) is missing dependencies for the following libraries:" >&2; \
|
||||
cat "$(PKG_INFO_DIR)/$(1).missing" >&2; \
|
||||
- false; \
|
||||
fi; \
|
||||
)
|
||||
endef
|
11
patches/package-too-long.patch
Executable file
11
patches/package-too-long.patch
Executable file
|
@ -0,0 +1,11 @@
|
|||
--- a/package/Makefile 2020-04-04 15:52:15.706831084 +0200
|
||||
+++ b/package/Makefile 2020-04-04 15:53:54.645052663 +0200
|
||||
@@ -66,7 +66,7 @@
|
||||
rm -rf $(TARGET_DIR) $(TARGET_DIR_ORIG)
|
||||
mkdir -p $(TARGET_DIR)/tmp
|
||||
$(call opkg,$(TARGET_DIR)) install \
|
||||
- $(call opkg_package_files,$(foreach pkg,$(shell cat $(PACKAGE_INSTALL_FILES) 2>/dev/null),$(pkg)$(call GetABISuffix,$(pkg))))
|
||||
+ $(subst $(TOPDIR)/,,$(call opkg_package_files,$(foreach pkg,$(shell cat $(PACKAGE_INSTALL_FILES) 2>/dev/null),$(pkg)$(call GetABISuffix,$(pkg)))))
|
||||
@for file in $(PACKAGE_INSTALL_FILES); do \
|
||||
[ -s $$file.flags ] || continue; \
|
||||
for flag in `cat $$file.flags`; do \
|
26
patches/smsc75xx.patch
Executable file
26
patches/smsc75xx.patch
Executable file
|
@ -0,0 +1,26 @@
|
|||
Index: package/kernel/linux/modules/usb.mk
|
||||
===================================================================
|
||||
--- a/package/kernel/linux/modules/usb.mk (revisione 42462)
|
||||
+++ b/package/kernel/linux/modules/usb.mk (copia locale)
|
||||
@@ -1091,8 +1091,21 @@
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,usb-net-smsc95xx))
|
||||
+
|
||||
+define KernelPackage/usb-net-smsc75xx
|
||||
+ TITLE:=SMSC LAN75XX based USB 2.0 Gigabit ethernet devices
|
||||
+ KCONFIG:=CONFIG_USB_NET_SMSC75XX
|
||||
+ FILES:=$(LINUX_DIR)/drivers/$(USBNET_DIR)/smsc75xx.ko
|
||||
+ AUTOLOAD:=$(call AutoProbe,smsc75xx)
|
||||
+ $(call AddDepends/usb-net, +kmod-lib-crc16)
|
||||
+endef
|
||||
|
||||
+define KernelPackage/usb-net-smsc75xx/description
|
||||
+ Kernel module for SMSC LAN75XX based devices
|
||||
+endef
|
||||
|
||||
+$(eval $(call KernelPackage,usb-net-smsc75xx))
|
||||
+
|
||||
define KernelPackage/usb-net-dm9601-ether
|
||||
TITLE:=Support for DM9601 ethernet connections
|
||||
KCONFIG:=CONFIG_USB_NET_DM9601
|
1323
patches/uefi.patch
Executable file
1323
patches/uefi.patch
Executable file
File diff suppressed because it is too large
Load diff
397
root/package/base-files/files/sbin/sysupgrade
Executable file
397
root/package/base-files/files/sbin/sysupgrade
Executable file
|
@ -0,0 +1,397 @@
|
|||
#!/bin/sh
|
||||
|
||||
. /lib/functions.sh
|
||||
. /lib/functions/system.sh
|
||||
. /usr/share/libubox/jshn.sh
|
||||
|
||||
# initialize defaults
|
||||
export MTD_ARGS=""
|
||||
export MTD_CONFIG_ARGS=""
|
||||
export INTERACTIVE=0
|
||||
export VERBOSE=1
|
||||
export SAVE_CONFIG=1
|
||||
export SAVE_OVERLAY=0
|
||||
export SAVE_OVERLAY_PATH=
|
||||
export SAVE_PARTITIONS=1
|
||||
export SAVE_INSTALLED_PKGS=1
|
||||
export SKIP_UNCHANGED=0
|
||||
export CONF_IMAGE=
|
||||
export CONF_BACKUP_LIST=0
|
||||
export CONF_BACKUP=
|
||||
export CONF_RESTORE=
|
||||
export NEED_IMAGE=
|
||||
export HELP=0
|
||||
export FORCE=0
|
||||
export TEST=0
|
||||
export UMOUNT_ETCBACKUP_DIR=0
|
||||
|
||||
# parse options
|
||||
while [ -n "$1" ]; do
|
||||
case "$1" in
|
||||
-i) export INTERACTIVE=1;;
|
||||
-v) export VERBOSE="$(($VERBOSE + 1))";;
|
||||
-q) export VERBOSE="$(($VERBOSE - 1))";;
|
||||
-n) export SAVE_CONFIG=0;;
|
||||
-c) export SAVE_OVERLAY=1 SAVE_OVERLAY_PATH=/etc;;
|
||||
-o) export SAVE_OVERLAY=1 SAVE_OVERLAY_PATH=/;;
|
||||
-p) export SAVE_PARTITIONS=0;;
|
||||
-k) export SAVE_INSTALLED_PKGS=1;;
|
||||
-u) export SKIP_UNCHANGED=1;;
|
||||
-b|--create-backup) export CONF_BACKUP="$2" NEED_IMAGE=1; shift;;
|
||||
-r|--restore-backup) export CONF_RESTORE="$2" NEED_IMAGE=1; shift;;
|
||||
-l|--list-backup) export CONF_BACKUP_LIST=1;;
|
||||
-f) export CONF_IMAGE="$2"; shift;;
|
||||
-F|--force) export FORCE=1;;
|
||||
-T|--test) export TEST=1;;
|
||||
-h|--help) export HELP=1; break;;
|
||||
-*)
|
||||
echo "Invalid option: $1" >&2
|
||||
exit 1
|
||||
;;
|
||||
*) break;;
|
||||
esac
|
||||
shift;
|
||||
done
|
||||
|
||||
export CONFFILES=/tmp/sysupgrade.conffiles
|
||||
export CONF_TAR=/tmp/sysupgrade.tgz
|
||||
export ETCBACKUP_DIR=/etc/backup
|
||||
export INSTALLED_PACKAGES=${ETCBACKUP_DIR}/installed_packages.txt
|
||||
|
||||
IMAGE="$1"
|
||||
|
||||
[ -z "$IMAGE" -a -z "$NEED_IMAGE" -a $CONF_BACKUP_LIST -eq 0 -o $HELP -gt 0 ] && {
|
||||
cat <<EOF
|
||||
Usage: $0 [<upgrade-option>...] <image file or URL>
|
||||
$0 [-q] [-i] [-c] [-u] [-o] [-k] <backup-command> <file>
|
||||
|
||||
upgrade-option:
|
||||
-f <config> restore configuration from .tar.gz (file or url)
|
||||
-i interactive mode
|
||||
-c attempt to preserve all changed files in /etc/
|
||||
-o attempt to preserve all changed files in /, except those
|
||||
from packages but including changed confs.
|
||||
-u skip from backup files that are equal to those in /rom
|
||||
-n do not save configuration over reflash
|
||||
-p do not attempt to restore the partition table after flash.
|
||||
-k include in backup a list of current installed packages at
|
||||
$INSTALLED_PACKAGES
|
||||
-T | --test
|
||||
Verify image and config .tar.gz but do not actually flash.
|
||||
-F | --force
|
||||
Flash image even if image checks fail, this is dangerous!
|
||||
-q less verbose
|
||||
-v more verbose
|
||||
-h | --help display this help
|
||||
|
||||
backup-command:
|
||||
-b | --create-backup <file>
|
||||
create .tar.gz of files specified in sysupgrade.conf
|
||||
then exit. Does not flash an image. If file is '-',
|
||||
i.e. stdout, verbosity is set to 0 (i.e. quiet).
|
||||
-r | --restore-backup <file>
|
||||
restore a .tar.gz created with sysupgrade -b
|
||||
then exit. Does not flash an image. If file is '-',
|
||||
the archive is read from stdin.
|
||||
-l | --list-backup
|
||||
list the files that would be backed up when calling
|
||||
sysupgrade -b. Does not create a backup file.
|
||||
|
||||
EOF
|
||||
exit 1
|
||||
}
|
||||
|
||||
[ -n "$IMAGE" -a -n "$NEED_IMAGE" ] && {
|
||||
cat <<-EOF
|
||||
-b|--create-backup and -r|--restore-backup do not perform a firmware upgrade.
|
||||
Do not specify both -b|-r and a firmware image.
|
||||
EOF
|
||||
exit 1
|
||||
}
|
||||
|
||||
# prevent messages from clobbering the tarball when using stdout
|
||||
[ "$CONF_BACKUP" = "-" ] && export VERBOSE=0
|
||||
|
||||
missing_lines() {
|
||||
local file1 file2 line
|
||||
file1="$1"
|
||||
file2="$2"
|
||||
oIFS="$IFS"
|
||||
IFS=":"
|
||||
while read line; do
|
||||
set -- $line
|
||||
grep -q "^$1:" "$file2" || echo "$*"
|
||||
done < "$file1"
|
||||
IFS="$oIFS"
|
||||
}
|
||||
|
||||
list_conffiles() {
|
||||
awk '
|
||||
BEGIN { conffiles = 0 }
|
||||
/^Conffiles:/ { conffiles = 1; next }
|
||||
!/^ / { conffiles = 0; next }
|
||||
conffiles == 1 { print }
|
||||
' /usr/lib/opkg/status
|
||||
}
|
||||
|
||||
list_changed_conffiles() {
|
||||
# Cannot handle spaces in filenames - but opkg cannot either...
|
||||
list_conffiles | while read file csum; do
|
||||
[ -r "$file" ] || continue
|
||||
|
||||
echo "${csum} ${file}" | busybox sha256sum -sc - || echo "$file"
|
||||
done
|
||||
}
|
||||
|
||||
list_static_conffiles() {
|
||||
local filter=$1
|
||||
|
||||
find $(sed -ne '/^[[:space:]]*$/d; /^#/d; p' \
|
||||
/etc/sysupgrade.conf /lib/upgrade/keep.d/* 2>/dev/null) \
|
||||
\( -type f -o -type l \) $filter 2>/dev/null
|
||||
}
|
||||
|
||||
add_conffiles() {
|
||||
local file="$1"
|
||||
|
||||
( list_static_conffiles "$find_filter"; list_changed_conffiles ) |
|
||||
sort -u > "$file"
|
||||
return 0
|
||||
}
|
||||
|
||||
add_overlayfiles() {
|
||||
local file="$1"
|
||||
|
||||
local packagesfiles=$1.packagesfiles
|
||||
touch "$packagesfiles"
|
||||
|
||||
if [ "$SAVE_OVERLAY_PATH" = / ]; then
|
||||
local conffiles=$1.conffiles
|
||||
local keepfiles=$1.keepfiles
|
||||
|
||||
list_conffiles | cut -f2 -d ' ' | sort -u > "$conffiles"
|
||||
|
||||
# backup files from /etc/sysupgrade.conf and /lib/upgrade/keep.d, but
|
||||
# ignore those aready controlled by opkg conffiles
|
||||
list_static_conffiles | sort -u |
|
||||
grep -h -v -x -F -f $conffiles > "$keepfiles"
|
||||
|
||||
# backup conffiles, but only those changed if '-u'
|
||||
[ $SKIP_UNCHANGED = 1 ] &&
|
||||
list_changed_conffiles | sort -u > "$conffiles"
|
||||
|
||||
# do not backup files from packages, except those listed
|
||||
# in conffiles and keep.d
|
||||
{
|
||||
find /usr/lib/opkg/info -type f -name "*.list" -exec cat {} \;
|
||||
find /usr/lib/opkg/info -type f -name "*.control" -exec sed \
|
||||
-ne '/^Alternatives/{s/^Alternatives: //;s/, /\n/g;p}' {} \; |
|
||||
cut -f2 -d:
|
||||
} | grep -v -x -F -f $conffiles |
|
||||
grep -v -x -F -f $keepfiles | sort -u > "$packagesfiles"
|
||||
rm -f "$keepfiles" "$conffiles"
|
||||
fi
|
||||
|
||||
# busybox grep bug when file is empty
|
||||
[ -s "$packagesfiles" ] || echo > $packagesfiles
|
||||
|
||||
( cd /overlay/upper/; find .$SAVE_OVERLAY_PATH \( -type f -o -type l \) $find_filter | sed \
|
||||
-e 's,^\.,,' \
|
||||
-e '\,^/etc/board.json$,d' \
|
||||
-e '\,/[^/]*-opkg$,d' \
|
||||
-e '\,^/etc/urandom.seed$,d' \
|
||||
-e "\,^$INSTALLED_PACKAGES$,d" \
|
||||
-e '\,^/usr/lib/opkg/.*,d' \
|
||||
) | grep -v -x -F -f $packagesfiles > "$file"
|
||||
|
||||
rm -f "$packagesfiles"
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
if [ $SAVE_OVERLAY = 1 ]; then
|
||||
[ ! -d /overlay/upper/etc ] && {
|
||||
echo "Cannot find '/overlay/upper/etc', required for '-c'" >&2
|
||||
exit 1
|
||||
}
|
||||
sysupgrade_init_conffiles="add_overlayfiles"
|
||||
else
|
||||
sysupgrade_init_conffiles="add_conffiles"
|
||||
fi
|
||||
|
||||
find_filter=""
|
||||
if [ $SKIP_UNCHANGED = 1 ]; then
|
||||
[ ! -d /rom/ ] && {
|
||||
echo "'/rom/' is required by '-u'"
|
||||
exit 1
|
||||
}
|
||||
find_filter='( ( -exec test -e /rom/{} ; -exec cmp -s /{} /rom/{} ; ) -o -print )'
|
||||
fi
|
||||
|
||||
include /lib/upgrade
|
||||
|
||||
do_save_conffiles() {
|
||||
local conf_tar="$1"
|
||||
|
||||
[ "$(rootfs_type)" = "tmpfs" ] && {
|
||||
echo "Cannot save config while running from ramdisk." >&2
|
||||
ask_bool 0 "Abort" && exit
|
||||
rm -f "$conf_tar"
|
||||
return 0
|
||||
}
|
||||
run_hooks "$CONFFILES" $sysupgrade_init_conffiles
|
||||
ask_bool 0 "Edit config file list" && vi "$CONFFILES"
|
||||
|
||||
if [ "$SAVE_INSTALLED_PKGS" -eq 1 ]; then
|
||||
echo "${INSTALLED_PACKAGES}" >> "$CONFFILES"
|
||||
mkdir -p "$ETCBACKUP_DIR"
|
||||
# Avoid touching filesystem on each backup
|
||||
RAMFS="$(mktemp -d -t sysupgrade.XXXXXX)"
|
||||
mkdir -p "$RAMFS/upper" "$RAMFS/work"
|
||||
mount -t overlay overlay -o lowerdir=$ETCBACKUP_DIR,upperdir=$RAMFS/upper,workdir=$RAMFS/work $ETCBACKUP_DIR &&
|
||||
UMOUNT_ETCBACKUP_DIR=1 || {
|
||||
echo "Cannot mount '$ETCBACKUP_DIR' as tmpfs to avoid touching disk while saving the list of installed packages." >&2
|
||||
ask_bool 0 "Abort" && exit
|
||||
}
|
||||
|
||||
# Format: pkg-name<TAB>{rom,overlay,unkown}
|
||||
# rom is used for pkgs in /rom, even if updated later
|
||||
find /usr/lib/opkg/info -name "*.control" \( \
|
||||
\( -exec test -f /rom/{} \; -exec echo {} rom \; \) -o \
|
||||
\( -exec test -f /overlay/upper/{} \; -exec echo {} overlay \; \) -o \
|
||||
\( -exec echo {} unknown \; \) \
|
||||
\) | sed -e 's,.*/,,;s/\.control /\t/' > ${INSTALLED_PACKAGES}
|
||||
fi
|
||||
|
||||
v "Saving config files..."
|
||||
[ "$VERBOSE" -gt 1 ] && TAR_V="v" || TAR_V=""
|
||||
tar c${TAR_V}zf "$conf_tar" -T "$CONFFILES" 2>/dev/null
|
||||
if [ "$?" -ne 0 ]; then
|
||||
echo "Failed to create the configuration backup."
|
||||
rm -f "$conf_tar"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
[ "$UMOUNT_ETCBACKUP_DIR" -eq 1 ] && {
|
||||
umount "$ETCBACKUP_DIR"
|
||||
rm -rf "$RAMFS"
|
||||
}
|
||||
rm -f "$CONFFILES"
|
||||
}
|
||||
|
||||
if [ $CONF_BACKUP_LIST -eq 1 ]; then
|
||||
run_hooks "$CONFFILES" $sysupgrade_init_conffiles
|
||||
[ "$SAVE_INSTALLED_PKGS" -eq 1 ] && echo ${INSTALLED_PACKAGES} >> "$CONFFILES"
|
||||
cat "$CONFFILES"
|
||||
rm -f "$CONFFILES"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ -n "$CONF_BACKUP" ]; then
|
||||
do_save_conffiles "$CONF_BACKUP"
|
||||
exit $?
|
||||
fi
|
||||
|
||||
if [ -n "$CONF_RESTORE" ]; then
|
||||
if [ "$CONF_RESTORE" != "-" ] && [ ! -f "$CONF_RESTORE" ]; then
|
||||
echo "Backup archive '$CONF_RESTORE' not found." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
[ "$VERBOSE" -gt 1 ] && TAR_V="v" || TAR_V=""
|
||||
cp /etc/passwd /etc/group /etc/shadow /tmp
|
||||
tar -C / -x${TAR_V}zf "$CONF_RESTORE"
|
||||
missing_lines /tmp/passwd /etc/passwd >> /etc/passwd
|
||||
missing_lines /tmp/group /etc/group >> /etc/group
|
||||
missing_lines /tmp/shadow /etc/shadow >> /etc/shadow
|
||||
rm /tmp/passwd /tmp/group /tmp/shadow
|
||||
|
||||
exit $?
|
||||
fi
|
||||
|
||||
type platform_check_image >/dev/null 2>/dev/null || {
|
||||
echo "Firmware upgrade is not implemented for this platform." >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
case "$IMAGE" in
|
||||
http://*|\
|
||||
https://*)
|
||||
wget -O/tmp/sysupgrade.img "$IMAGE" || exit 1
|
||||
IMAGE=/tmp/sysupgrade.img
|
||||
;;
|
||||
esac
|
||||
|
||||
IMAGE="$(readlink -f "$IMAGE")"
|
||||
|
||||
case "$IMAGE" in
|
||||
'')
|
||||
echo "Image file not found." >&2
|
||||
exit 1
|
||||
;;
|
||||
/tmp/*) ;;
|
||||
*)
|
||||
v "Image not in /tmp, copying..."
|
||||
cp -f "$IMAGE" /tmp/sysupgrade.img
|
||||
IMAGE=/tmp/sysupgrade.img
|
||||
;;
|
||||
esac
|
||||
|
||||
json_load "$(/usr/libexec/validate_firmware_image "$IMAGE")" || {
|
||||
echo "Failed to check image"
|
||||
exit 1
|
||||
}
|
||||
json_get_var valid "valid"
|
||||
[ "$valid" -eq 0 ] && {
|
||||
if [ $FORCE -eq 1 ]; then
|
||||
echo "Image check failed but --force given - will update anyway!" >&2
|
||||
else
|
||||
echo "Image check failed." >&2
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
if [ -n "$CONF_IMAGE" ]; then
|
||||
case "$(get_magic_word $CONF_IMAGE cat)" in
|
||||
# .gz files
|
||||
1f8b) ;;
|
||||
*)
|
||||
echo "Invalid config file. Please use only .tar.gz files" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
get_image "$CONF_IMAGE" "cat" > "$CONF_TAR"
|
||||
export SAVE_CONFIG=1
|
||||
elif ask_bool $SAVE_CONFIG "Keep config files over reflash"; then
|
||||
[ $TEST -eq 1 ] || do_save_conffiles "$CONF_TAR"
|
||||
export SAVE_CONFIG=1
|
||||
else
|
||||
[ $TEST -eq 1 ] || rm -f "$CONF_TAR"
|
||||
export SAVE_CONFIG=0
|
||||
fi
|
||||
|
||||
if [ $TEST -eq 1 ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
install_bin /sbin/upgraded
|
||||
v "Commencing upgrade. Closing all shell sessions."
|
||||
|
||||
COMMAND='/lib/upgrade/do_stage2'
|
||||
|
||||
if [ -n "$FAILSAFE" ]; then
|
||||
printf '%s\x00%s\x00%s' "$RAM_ROOT" "$IMAGE" "$COMMAND" >/tmp/sysupgrade
|
||||
lock -u /tmp/.failsafe
|
||||
else
|
||||
json_init
|
||||
json_add_string prefix "$RAM_ROOT"
|
||||
json_add_string path "$IMAGE"
|
||||
[ $FORCE -eq 1 ] && json_add_boolean force 1
|
||||
[ $SAVE_CONFIG -eq 1 ] && json_add_string backup "$CONF_TAR"
|
||||
json_add_string command "$COMMAND"
|
||||
json_add_object options
|
||||
json_add_int save_partitions "$SAVE_PARTITIONS"
|
||||
json_close_object
|
||||
|
||||
ubus call system sysupgrade "$(json_dump)"
|
||||
fi
|
40
root/package/network/config/firewall/patches/fullconenat.patch
Executable file
40
root/package/network/config/firewall/patches/fullconenat.patch
Executable file
|
@ -0,0 +1,40 @@
|
|||
--- a/options.h
|
||||
+++ b/options.h
|
||||
@@ -341,6 +341,8 @@ struct fw3_zone
|
||||
struct list_head masq_src;
|
||||
struct list_head masq_dest;
|
||||
|
||||
+ bool fullcone;
|
||||
+
|
||||
bool mtu_fix;
|
||||
|
||||
struct list_head cthelpers;
|
||||
--- a/zones.c
|
||||
+++ b/zones.c
|
||||
@@ -77,6 +77,8 @@ const struct fw3_option fw3_zone_opts[]
|
||||
FW3_LIST("masq_src", network, zone, masq_src),
|
||||
FW3_LIST("masq_dest", network, zone, masq_dest),
|
||||
|
||||
+ FW3_OPT("fullcone", bool, zone, fullcone),
|
||||
+
|
||||
FW3_OPT("extra", string, zone, extra_src),
|
||||
FW3_OPT("extra_src", string, zone, extra_src),
|
||||
FW3_OPT("extra_dest", string, zone, extra_dest),
|
||||
@@ -709,7 +711,16 @@ print_zone_rule(struct fw3_ipt_handle *h
|
||||
(mdest = next_addr(mdest, &zone->masq_dest,
|
||||
handle->family, false)) || first_dest;
|
||||
first_dest = false)
|
||||
- {
|
||||
+ if (zone->fullcone && (access("/usr/lib/iptables/libipt_FULLCONENAT.so", 0) == 0)) {
|
||||
+ r = fw3_ipt_rule_new(handle);
|
||||
+ fw3_ipt_rule_src_dest(r, msrc, mdest);
|
||||
+ fw3_ipt_rule_target(r, "FULLCONENAT");
|
||||
+ fw3_ipt_rule_append(r, "zone_%s_postrouting", zone->name);
|
||||
+ r = fw3_ipt_rule_new(handle);
|
||||
+ fw3_ipt_rule_src_dest(r, msrc, mdest);
|
||||
+ fw3_ipt_rule_target(r, "FULLCONENAT");
|
||||
+ fw3_ipt_rule_append(r, "zone_%s_prerouting", zone->name);
|
||||
+ } else {
|
||||
r = fw3_ipt_rule_new(handle);
|
||||
fw3_ipt_rule_src_dest(r, msrc, mdest);
|
||||
fw3_ipt_rule_target(r, "MASQUERADE");
|
45
root/package/network/ipv6/6in4/Makefile
Executable file
45
root/package/network/ipv6/6in4/Makefile
Executable file
|
@ -0,0 +1,45 @@
|
|||
#
|
||||
# Copyright (C) 2010-2015 OpenWrt.org
|
||||
# Copyright (C) 2018-2019 Ycarus (Yannick Chabanois) <ycarus@zugaina.org>
|
||||
# - Added gateway setting
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v2.
|
||||
# See /LICENSE for more information.
|
||||
#
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=6in4
|
||||
PKG_VERSION:=270
|
||||
PKG_RELEASE:=2
|
||||
PKG_LICENSE:=GPL-2.0
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
define Package/6in4
|
||||
SECTION:=net
|
||||
CATEGORY:=Network
|
||||
DEPENDS:=@IPV6 +kmod-sit +uclient-fetch
|
||||
TITLE:=IPv6-in-IPv4 configuration support
|
||||
MAINTAINER:=Jo-Philipp Wich <jo@mein.io>
|
||||
PKGARCH:=all
|
||||
endef
|
||||
|
||||
define Package/6in4/description
|
||||
Provides support for 6in4 tunnels in /etc/config/network.
|
||||
Refer to http://wiki.openwrt.org/doc/uci/network for
|
||||
configuration details.
|
||||
endef
|
||||
|
||||
define Build/Compile
|
||||
endef
|
||||
|
||||
define Build/Configure
|
||||
endef
|
||||
|
||||
define Package/6in4/install
|
||||
$(INSTALL_DIR) $(1)/lib/netifd/proto
|
||||
$(INSTALL_BIN) ./files/6in4.sh $(1)/lib/netifd/proto/6in4.sh
|
||||
endef
|
||||
|
||||
$(eval $(call BuildPackage,6in4))
|
149
root/package/network/ipv6/6in4/files/6in4.sh
Executable file
149
root/package/network/ipv6/6in4/files/6in4.sh
Executable file
|
@ -0,0 +1,149 @@
|
|||
#!/bin/sh
|
||||
# 6in4.sh - IPv6-in-IPv4 tunnel backend
|
||||
# Copyright (c) 2010-2015 OpenWrt.org
|
||||
|
||||
[ -n "$INCLUDE_ONLY" ] || {
|
||||
. /lib/functions.sh
|
||||
. /lib/functions/network.sh
|
||||
. ../netifd-proto.sh
|
||||
init_proto "$@"
|
||||
}
|
||||
|
||||
proto_6in4_update() {
|
||||
sh -c '
|
||||
timeout=5
|
||||
|
||||
(while [ $((timeout--)) -gt 0 ]; do
|
||||
sleep 1
|
||||
kill -0 $$ || exit 0
|
||||
done; kill -9 $$) 2>/dev/null &
|
||||
|
||||
exec "$@"
|
||||
' "$1" "$@"
|
||||
}
|
||||
|
||||
proto_6in4_add_prefix() {
|
||||
append "$3" "$1"
|
||||
}
|
||||
|
||||
proto_6in4_setup() {
|
||||
local cfg="$1"
|
||||
local iface="$2"
|
||||
local link="6in4-$cfg"
|
||||
|
||||
local mtu ttl tos ipaddr peeraddr ip6addr ip6prefix ip6prefixes tunlink tunnelid username password updatekey gateway
|
||||
json_get_vars mtu ttl tos ipaddr peeraddr ip6addr tunlink tunnelid username password updatekey gateway
|
||||
json_for_each_item proto_6in4_add_prefix ip6prefix ip6prefixes
|
||||
|
||||
[ -z "$peeraddr" ] && {
|
||||
proto_notify_error "$cfg" "MISSING_ADDRESS"
|
||||
proto_block_restart "$cfg"
|
||||
return
|
||||
}
|
||||
|
||||
[ -n "$tunlink" ] && ( proto_add_host_dependency "$cfg" "$peeraddr" "$tunlink" )
|
||||
|
||||
[ -z "$ipaddr" ] && {
|
||||
local wanif="$tunlink"
|
||||
if [ -z "$wanif" ] && ! network_find_wan wanif; then
|
||||
proto_notify_error "$cfg" "NO_WAN_LINK"
|
||||
return
|
||||
fi
|
||||
|
||||
if ! network_get_ipaddr ipaddr "$wanif"; then
|
||||
proto_notify_error "$cfg" "NO_WAN_LINK"
|
||||
return
|
||||
fi
|
||||
}
|
||||
|
||||
proto_init_update "$link" 1
|
||||
|
||||
[ -n "$ip6addr" ] && {
|
||||
local local6="${ip6addr%%/*}"
|
||||
local mask6="${ip6addr##*/}"
|
||||
[[ "$local6" = "$mask6" ]] && mask6=
|
||||
proto_add_ipv6_address "$local6" "$mask6"
|
||||
proto_add_ipv6_route "::" 0 "" "" "" "$local6/$mask6"
|
||||
}
|
||||
|
||||
[ -n "$gateway" ] && {
|
||||
proto_add_ipv6_route "::" 0 "$gateway"
|
||||
}
|
||||
|
||||
for ip6prefix in $ip6prefixes; do
|
||||
proto_add_ipv6_prefix "$ip6prefix"
|
||||
proto_add_ipv6_route "::" 0 "" "" "" "$ip6prefix"
|
||||
done
|
||||
|
||||
proto_add_tunnel
|
||||
json_add_string mode sit
|
||||
json_add_int mtu "${mtu:-1280}"
|
||||
json_add_int ttl "${ttl:-64}"
|
||||
[ -n "$tos" ] && json_add_string tos "$tos"
|
||||
json_add_string local "$ipaddr"
|
||||
json_add_string remote "$peeraddr"
|
||||
[ -n "$tunlink" ] && json_add_string link "$tunlink"
|
||||
proto_close_tunnel
|
||||
|
||||
proto_send_update "$cfg"
|
||||
|
||||
[ -n "$tunnelid" -a -n "$username" -a \( -n "$password" -o -n "$updatekey" \) ] && {
|
||||
[ -n "$updatekey" ] && password="$updatekey"
|
||||
|
||||
local http="http"
|
||||
local urlget="uclient-fetch"
|
||||
local urlget_opts="-qO-"
|
||||
local ca_path="${SSL_CERT_DIR:-/etc/ssl/certs}"
|
||||
|
||||
[ -f /lib/libustream-ssl.so ] && http=https
|
||||
[ "$http" = "https" -a -z "$(find $ca_path -name "*.0" 2>/dev/null)" ] && {
|
||||
urlget_opts="$urlget_opts --no-check-certificate"
|
||||
}
|
||||
|
||||
local url="$http://ipv4.tunnelbroker.net/nic/update?hostname=$tunnelid"
|
||||
local try=0
|
||||
local max=3
|
||||
|
||||
(
|
||||
set -o pipefail
|
||||
while [ $((++try)) -le $max ]; do
|
||||
if proto_6in4_update $urlget $urlget_opts --user="$username" --password="$password" "$url" 2>&1 | \
|
||||
sed -e 's,^Killed$,timeout,' -e "s,^,update $try/$max: ," | \
|
||||
logger -t "$link";
|
||||
then
|
||||
logger -t "$link" "updated"
|
||||
return 0
|
||||
fi
|
||||
sleep 5
|
||||
done
|
||||
logger -t "$link" "update failed"
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
proto_6in4_teardown() {
|
||||
local cfg="$1"
|
||||
}
|
||||
|
||||
proto_6in4_init_config() {
|
||||
no_device=1
|
||||
available=1
|
||||
|
||||
proto_config_add_string "ipaddr"
|
||||
proto_config_add_string "ip6addr"
|
||||
proto_config_add_array "ip6prefix"
|
||||
proto_config_add_string "peeraddr"
|
||||
proto_config_add_string "tunlink"
|
||||
proto_config_add_string "tunnelid"
|
||||
proto_config_add_string "username"
|
||||
proto_config_add_string "password"
|
||||
proto_config_add_string "updatekey"
|
||||
proto_config_add_string "gateway"
|
||||
proto_config_add_int "mtu"
|
||||
proto_config_add_int "ttl"
|
||||
proto_config_add_string "tos"
|
||||
}
|
||||
|
||||
[ -n "$INCLUDE_ONLY" ] || {
|
||||
add_protocol 6in4
|
||||
}
|
5797
root/target/linux/generic/config-4.14
Executable file
5797
root/target/linux/generic/config-4.14
Executable file
File diff suppressed because it is too large
Load diff
6136
root/target/linux/generic/config-4.19
Executable file
6136
root/target/linux/generic/config-4.19
Executable file
File diff suppressed because it is too large
Load diff
5324
root/target/linux/generic/config-4.9
Executable file
5324
root/target/linux/generic/config-4.9
Executable file
File diff suppressed because it is too large
Load diff
20725
root/target/linux/generic/hack-4.14/690-mptcp_v0.94.patch
Executable file
20725
root/target/linux/generic/hack-4.14/690-mptcp_v0.94.patch
Executable file
File diff suppressed because it is too large
Load diff
116
root/target/linux/generic/hack-4.14/998-ndpi-netfilter.patch
Executable file
116
root/target/linux/generic/hack-4.14/998-ndpi-netfilter.patch
Executable file
|
@ -0,0 +1,116 @@
|
|||
diff --git a/include/net/netfilter/nf_conntrack_extend.h b/include/net/netfilter/nf_conntrack_extend.h
|
||||
index 21f887c..59980ec 100644
|
||||
--- a/include/net/netfilter/nf_conntrack_extend.h
|
||||
+++ b/include/net/netfilter/nf_conntrack_extend.h
|
||||
@@ -28,7 +28,8 @@ enum nf_ct_ext_id {
|
||||
#if IS_ENABLED(CONFIG_NETFILTER_SYNPROXY)
|
||||
NF_CT_EXT_SYNPROXY,
|
||||
#endif
|
||||
- NF_CT_EXT_NUM,
|
||||
+ NF_CT_EXT_CUSTOM,
|
||||
+ NF_CT_EXT_NUM=NF_CT_EXT_CUSTOM+CONFIG_NF_CONNTRACK_CUSTOM,
|
||||
};
|
||||
|
||||
#define NF_CT_EXT_HELPER_TYPE struct nf_conn_help
|
||||
@@ -96,5 +97,6 @@ struct nf_ct_ext_type {
|
||||
};
|
||||
|
||||
int nf_ct_extend_register(const struct nf_ct_ext_type *type);
|
||||
+int nf_ct_extend_custom_register(struct nf_ct_ext_type *type,unsigned long int cid);
|
||||
void nf_ct_extend_unregister(const struct nf_ct_ext_type *type);
|
||||
#endif /* _NF_CONNTRACK_EXTEND_H */
|
||||
diff --git a/net/netfilter/Kconfig b/net/netfilter/Kconfig
|
||||
index 7581e82..30a11eb 100644
|
||||
--- a/net/netfilter/Kconfig
|
||||
+++ b/net/netfilter/Kconfig
|
||||
@@ -85,6 +85,16 @@ config NF_CONNTRACK_SECMARK
|
||||
|
||||
If unsure, say 'N'.
|
||||
|
||||
+config NF_CONNTRACK_CUSTOM
|
||||
+ int "Number of custom extend"
|
||||
+ range 0 8
|
||||
+ depends on NETFILTER_ADVANCED
|
||||
+ default "2"
|
||||
+ help
|
||||
+ This parameter specifies how many custom extensions can be registered.
|
||||
+
|
||||
+ The default value is 2.
|
||||
+
|
||||
config NF_CONNTRACK_ZONES
|
||||
bool 'Connection tracking zones'
|
||||
depends on NETFILTER_ADVANCED
|
||||
diff --git a/net/netfilter/nf_conntrack_core.c b/net/netfilter/nf_conntrack_core.c
|
||||
index 85f643c..44e2fdd 100644
|
||||
--- a/net/netfilter/nf_conntrack_core.c
|
||||
+++ b/net/netfilter/nf_conntrack_core.c
|
||||
@@ -1971,7 +1971,7 @@ int nf_conntrack_set_hashsize(const char *val, const struct kernel_param *kp)
|
||||
static __always_inline unsigned int total_extension_size(void)
|
||||
{
|
||||
/* remember to add new extensions below */
|
||||
- BUILD_BUG_ON(NF_CT_EXT_NUM > 9);
|
||||
+ BUILD_BUG_ON(NF_CT_EXT_NUM > 12);
|
||||
|
||||
return sizeof(struct nf_ct_ext) +
|
||||
sizeof(struct nf_conn_help)
|
||||
diff --git a/net/netfilter/nf_conntrack_extend.c b/net/netfilter/nf_conntrack_extend.c
|
||||
index 9fe0ddc..5a9054e 100644
|
||||
--- a/net/netfilter/nf_conntrack_extend.c
|
||||
+++ b/net/netfilter/nf_conntrack_extend.c
|
||||
@@ -108,11 +108,56 @@ int nf_ct_extend_register(const struct nf_ct_ext_type *type)
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(nf_ct_extend_register);
|
||||
|
||||
+static unsigned long int nf_ct_ext_cust_id[CONFIG_NF_CONNTRACK_CUSTOM];
|
||||
+static enum nf_ct_ext_id
|
||||
+nf_ct_extend_get_custom_id(unsigned long int ext_id);
|
||||
+
|
||||
+int nf_ct_extend_custom_register(struct nf_ct_ext_type *type,
|
||||
+ unsigned long int cid)
|
||||
+{
|
||||
+ int ret;
|
||||
+ enum nf_ct_ext_id new_id = nf_ct_extend_get_custom_id(cid);
|
||||
+ if(!new_id)
|
||||
+ return -EBUSY;
|
||||
+ type->id = new_id;
|
||||
+ ret = nf_ct_extend_register(type);
|
||||
+ if(ret < 0) {
|
||||
+ mutex_lock(&nf_ct_ext_type_mutex);
|
||||
+ nf_ct_ext_cust_id[new_id - NF_CT_EXT_CUSTOM] = 0;
|
||||
+ mutex_unlock(&nf_ct_ext_type_mutex);
|
||||
+ }
|
||||
+ return ret;
|
||||
+}
|
||||
+EXPORT_SYMBOL_GPL(nf_ct_extend_custom_register);
|
||||
+
|
||||
+static enum nf_ct_ext_id
|
||||
+nf_ct_extend_get_custom_id(unsigned long int ext_id)
|
||||
+{
|
||||
+ enum nf_ct_ext_id ret = 0;
|
||||
+ int i;
|
||||
+ mutex_lock(&nf_ct_ext_type_mutex);
|
||||
+ for(i = 0; i < CONFIG_NF_CONNTRACK_CUSTOM; i++) {
|
||||
+ if(!nf_ct_ext_cust_id[i]) {
|
||||
+ nf_ct_ext_cust_id[i] = ext_id;
|
||||
+ ret = i+NF_CT_EXT_CUSTOM;
|
||||
+ break;
|
||||
+ }
|
||||
+ if(nf_ct_ext_cust_id[i] == ext_id) {
|
||||
+ ret = i+NF_CT_EXT_CUSTOM;
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+ mutex_unlock(&nf_ct_ext_type_mutex);
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
/* This MUST be called in process context. */
|
||||
void nf_ct_extend_unregister(const struct nf_ct_ext_type *type)
|
||||
{
|
||||
mutex_lock(&nf_ct_ext_type_mutex);
|
||||
RCU_INIT_POINTER(nf_ct_ext_types[type->id], NULL);
|
||||
+ if(type->id >= NF_CT_EXT_CUSTOM && type->id < NF_CT_EXT_NUM)
|
||||
+ nf_ct_ext_cust_id[type->id-NF_CT_EXT_CUSTOM] = 0;
|
||||
mutex_unlock(&nf_ct_ext_type_mutex);
|
||||
synchronize_rcu();
|
||||
}
|
14
root/target/linux/generic/hack-4.14/999-stop-promiscuous-info.patch
Executable file
14
root/target/linux/generic/hack-4.14/999-stop-promiscuous-info.patch
Executable file
|
@ -0,0 +1,14 @@
|
|||
--- a/net/core/dev.c 2018-08-10 10:31:41.199494561 +0200
|
||||
+++ b/net/core/dev.c 2018-08-10 10:32:03.635272509 +0200
|
||||
@@ -6613,9 +6613,11 @@
|
||||
}
|
||||
}
|
||||
if (dev->flags != old_flags) {
|
||||
+ /*
|
||||
pr_info("device %s %s promiscuous mode\n",
|
||||
dev->name,
|
||||
dev->flags & IFF_PROMISC ? "entered" : "left");
|
||||
+ */
|
||||
if (audit_enabled) {
|
||||
current_uid_gid(&uid, &gid);
|
||||
audit_log(current->audit_context, GFP_ATOMIC,
|
22998
root/target/linux/generic/hack-4.19/690-mptcp_v0.95.patch
Executable file
22998
root/target/linux/generic/hack-4.19/690-mptcp_v0.95.patch
Executable file
File diff suppressed because it is too large
Load diff
434
root/target/linux/generic/hack-4.19/691-mptcp_ecf.patch
Executable file
434
root/target/linux/generic/hack-4.19/691-mptcp_ecf.patch
Executable file
|
@ -0,0 +1,434 @@
|
|||
From 35f41229b58cb8c2611207827aa4f658b82db67e Mon Sep 17 00:00:00 2001
|
||||
From: Daniel Weber <weberdaniel@gmx.net>
|
||||
Date: Mon, 5 Aug 2019 14:02:30 +0200
|
||||
Subject: [PATCH] mptcp: Earliest Completion First (ECF) Scheduler
|
||||
|
||||
This scheduler works much like the default MPTCP scheduler. It always
|
||||
prefers the subflow with the smallest round-trip-time that is available.
|
||||
|
||||
Signed-off-by: Daniel Weber <weberdaniel@gmx.net>
|
||||
---
|
||||
net/mptcp/Kconfig | 6 +
|
||||
net/mptcp/Makefile | 1 +
|
||||
net/mptcp/mptcp_ecf.c | 384 ++++++++++++++++++++++++++++++++++++++++++
|
||||
3 files changed, 391 insertions(+)
|
||||
create mode 100644 net/mptcp/mptcp_ecf.c
|
||||
|
||||
diff --git a/net/mptcp/Kconfig b/net/mptcp/Kconfig
|
||||
index d22b7b47860f..dd1f859f1070 100644
|
||||
--- a/net/mptcp/Kconfig
|
||||
+++ b/net/mptcp/Kconfig
|
||||
@@ -109,6 +109,12 @@ config MPTCP_REDUNDANT
|
||||
This scheduler sends all packets redundantly over all subflows to decreases
|
||||
latency and jitter on the cost of lower throughput.
|
||||
|
||||
+config MPTCP_ECF
|
||||
+ tristate "MPTCP ECF"
|
||||
+ depends on (MPTCP=y)
|
||||
+ ---help---
|
||||
+ This is an experimental Earliest Completion First (ECF) scheduler.
|
||||
+
|
||||
choice
|
||||
prompt "Default MPTCP Scheduler"
|
||||
default DEFAULT
|
||||
diff --git a/net/mptcp/Makefile b/net/mptcp/Makefile
|
||||
index 82a2d4d945ae..369248a2f68e 100644
|
||||
--- a/net/mptcp/Makefile
|
||||
+++ b/net/mptcp/Makefile
|
||||
@@ -20,5 +20,6 @@ obj-$(CONFIG_MPTCP_NETLINK) += mptcp_netlink.o
|
||||
obj-$(CONFIG_MPTCP_ROUNDROBIN) += mptcp_rr.o
|
||||
obj-$(CONFIG_MPTCP_REDUNDANT) += mptcp_redundant.o
|
||||
obj-$(CONFIG_MPTCP_BLEST) += mptcp_blest.o
|
||||
+obj-$(CONFIG_MPTCP_ECF) += mptcp_ecf.o
|
||||
|
||||
mptcp-$(subst m,y,$(CONFIG_IPV6)) += mptcp_ipv6.o
|
||||
diff --git a/net/mptcp/mptcp_ecf.c b/net/mptcp/mptcp_ecf.c
|
||||
new file mode 100644
|
||||
index 000000000000..d61f4d2ad375
|
||||
--- /dev/null
|
||||
+++ b/net/mptcp/mptcp_ecf.c
|
||||
@@ -0,0 +1,384 @@
|
||||
+// SPDX-License-Identifier: GPL-2.0
|
||||
+/* MPTCP ECF Scheduler
|
||||
+ *
|
||||
+ * Algorithm Design:
|
||||
+ * Yeon-sup Lim <ylim@cs.umass.edu>
|
||||
+ * Don Towsley <towsley@cs.umass.edu>
|
||||
+ * Erich M. Nahum <nahum@us.ibm.com>
|
||||
+ * Richard J. Gibbens <richard.gibbens@cl.cam.ac.uk>
|
||||
+ *
|
||||
+ * Initial Implementation:
|
||||
+ * Yeon-sup Lim <ylim@cs.umass.edu>
|
||||
+ *
|
||||
+ * Additional Authors:
|
||||
+ * Daniel Weber <weberd@cs.uni-bonn.de>
|
||||
+ *
|
||||
+ * This program is free software; you can redistribute it and/or
|
||||
+ * modify it under the terms of the GNU General Public License
|
||||
+ * as published by the Free Software Foundation; either version
|
||||
+ * 2 of the License, or (at your option) any later version.
|
||||
+ */
|
||||
+
|
||||
+#include <linux/module.h>
|
||||
+#include <net/mptcp.h>
|
||||
+#include <trace/events/tcp.h>
|
||||
+
|
||||
+static unsigned int r_beta __read_mostly = 4; /* beta = 1/r_beta = 0.25 */
|
||||
+module_param(r_beta, int, 0644);
|
||||
+MODULE_PARM_DESC(r_beta, "beta for ECF");
|
||||
+
|
||||
+struct ecfsched_priv {
|
||||
+ u32 last_rbuf_opti;
|
||||
+};
|
||||
+
|
||||
+struct ecfsched_cb {
|
||||
+ u32 switching_margin; /* this is "waiting" in algorithm description */
|
||||
+};
|
||||
+
|
||||
+static struct ecfsched_priv *ecfsched_get_priv(const struct tcp_sock *tp)
|
||||
+{
|
||||
+ return (struct ecfsched_priv *)&tp->mptcp->mptcp_sched[0];
|
||||
+}
|
||||
+
|
||||
+static struct ecfsched_cb *ecfsched_get_cb(const struct tcp_sock *tp)
|
||||
+{
|
||||
+ return (struct ecfsched_cb *)&tp->mpcb->mptcp_sched[0];
|
||||
+}
|
||||
+
|
||||
+/* This is the ECF scheduler. This function decides on which flow to send
|
||||
+ * a given MSS. If all subflows are found to be busy or the currently best
|
||||
+ * subflow is estimated to be slower than waiting for minsk, NULL is returned.
|
||||
+ */
|
||||
+static struct sock *ecf_get_available_subflow(struct sock *meta_sk,
|
||||
+ struct sk_buff *skb,
|
||||
+ bool zero_wnd_test)
|
||||
+{
|
||||
+ struct mptcp_cb *mpcb = tcp_sk(meta_sk)->mpcb;
|
||||
+ struct sock *bestsk, *minsk = NULL;
|
||||
+ struct tcp_sock *besttp;
|
||||
+ struct mptcp_tcp_sock *mptcp;
|
||||
+ struct ecfsched_cb *ecf_cb = ecfsched_get_cb(tcp_sk(meta_sk));
|
||||
+ u32 min_srtt = U32_MAX;
|
||||
+ u32 sub_sndbuf = 0;
|
||||
+ u32 sub_packets_out = 0;
|
||||
+
|
||||
+ /* Answer data_fin on same subflow!!! */
|
||||
+ if (meta_sk->sk_shutdown & RCV_SHUTDOWN &&
|
||||
+ skb && mptcp_is_data_fin(skb)) {
|
||||
+ mptcp_for_each_sub(mpcb, mptcp) {
|
||||
+ bestsk = mptcp_to_sock(mptcp);
|
||||
+
|
||||
+ if (tcp_sk(bestsk)->mptcp->path_index == mpcb->dfin_path_index &&
|
||||
+ mptcp_is_available(bestsk, skb, zero_wnd_test))
|
||||
+ return bestsk;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ /* First, find the overall best (fastest) subflow */
|
||||
+ mptcp_for_each_sub(mpcb, mptcp) {
|
||||
+ bestsk = mptcp_to_sock(mptcp);
|
||||
+ besttp = tcp_sk(bestsk);
|
||||
+
|
||||
+ /* Set of states for which we are allowed to send data */
|
||||
+ if (!mptcp_sk_can_send(bestsk))
|
||||
+ continue;
|
||||
+
|
||||
+ /* We do not send data on this subflow unless it is
|
||||
+ * fully established, i.e. the 4th ack has been received.
|
||||
+ */
|
||||
+ if (besttp->mptcp->pre_established)
|
||||
+ continue;
|
||||
+
|
||||
+ sub_sndbuf += bestsk->sk_wmem_queued;
|
||||
+ sub_packets_out += besttp->packets_out;
|
||||
+
|
||||
+ /* record minimal rtt */
|
||||
+ if (besttp->srtt_us < min_srtt) {
|
||||
+ min_srtt = besttp->srtt_us;
|
||||
+ minsk = bestsk;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ /* find the current best subflow according to the default scheduler */
|
||||
+ bestsk = get_available_subflow(meta_sk, skb, zero_wnd_test);
|
||||
+
|
||||
+ /* if we decided to use a slower flow, we have the option of not using it at all */
|
||||
+ if (bestsk && minsk && bestsk != minsk) {
|
||||
+ u32 mss = tcp_current_mss(bestsk); /* assuming equal MSS */
|
||||
+ u32 sndbuf_meta = meta_sk->sk_wmem_queued;
|
||||
+ u32 sndbuf_minus = sub_sndbuf;
|
||||
+ u32 sndbuf = 0;
|
||||
+
|
||||
+ u32 cwnd_f = tcp_sk(minsk)->snd_cwnd;
|
||||
+ u32 srtt_f = tcp_sk(minsk)->srtt_us >> 3;
|
||||
+ u32 rttvar_f = tcp_sk(minsk)->rttvar_us >> 1;
|
||||
+
|
||||
+ u32 cwnd_s = tcp_sk(bestsk)->snd_cwnd;
|
||||
+ u32 srtt_s = tcp_sk(bestsk)->srtt_us >> 3;
|
||||
+ u32 rttvar_s = tcp_sk(bestsk)->rttvar_us >> 1;
|
||||
+
|
||||
+ u32 delta = max(rttvar_f, rttvar_s);
|
||||
+
|
||||
+ u32 x_f;
|
||||
+ u64 lhs, rhs; /* to avoid overflow, using u64 */
|
||||
+
|
||||
+ if (tcp_sk(meta_sk)->packets_out > sub_packets_out)
|
||||
+ sndbuf_minus += (tcp_sk(meta_sk)->packets_out - sub_packets_out) * mss;
|
||||
+
|
||||
+ if (sndbuf_meta > sndbuf_minus)
|
||||
+ sndbuf = sndbuf_meta - sndbuf_minus;
|
||||
+
|
||||
+ /* we have something to send.
|
||||
+ * at least one time tx over fastest subflow is required
|
||||
+ */
|
||||
+ x_f = sndbuf > cwnd_f * mss ? sndbuf : cwnd_f * mss;
|
||||
+ lhs = srtt_f * (x_f + cwnd_f * mss);
|
||||
+ rhs = cwnd_f * mss * (srtt_s + delta);
|
||||
+
|
||||
+ if (r_beta * lhs < r_beta * rhs + ecf_cb->switching_margin * rhs) {
|
||||
+ u32 x_s = sndbuf > cwnd_s * mss ? sndbuf : cwnd_s * mss;
|
||||
+ u64 lhs_s = srtt_s * x_s;
|
||||
+ u64 rhs_s = cwnd_s * mss * (2 * srtt_f + delta);
|
||||
+
|
||||
+ if (lhs_s >= rhs_s) {
|
||||
+ /* too slower than fastest */
|
||||
+ ecf_cb->switching_margin = 1;
|
||||
+ return NULL;
|
||||
+ }
|
||||
+ } else {
|
||||
+ /* use slower one */
|
||||
+ ecf_cb->switching_margin = 0;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ return bestsk;
|
||||
+}
|
||||
+
|
||||
+/* copy from mptcp_sched.c: mptcp_rcv_buf_optimization */
|
||||
+static struct sk_buff *mptcp_ecf_rcv_buf_optimization(struct sock *sk, int penal)
|
||||
+{
|
||||
+ struct sock *meta_sk;
|
||||
+ const struct tcp_sock *tp = tcp_sk(sk);
|
||||
+ struct mptcp_tcp_sock *mptcp;
|
||||
+ struct sk_buff *skb_head;
|
||||
+ struct ecfsched_priv *ecf_p = ecfsched_get_priv(tp);
|
||||
+
|
||||
+ meta_sk = mptcp_meta_sk(sk);
|
||||
+ skb_head = tcp_rtx_queue_head(meta_sk);
|
||||
+
|
||||
+ if (!skb_head)
|
||||
+ return NULL;
|
||||
+
|
||||
+ /* If penalization is optional (coming from mptcp_next_segment() and
|
||||
+ * We are not send-buffer-limited we do not penalize. The retransmission
|
||||
+ * is just an optimization to fix the idle-time due to the delay before
|
||||
+ * we wake up the application.
|
||||
+ */
|
||||
+ if (!penal && sk_stream_memory_free(meta_sk))
|
||||
+ goto retrans;
|
||||
+
|
||||
+ /* Only penalize again after an RTT has elapsed */
|
||||
+ if (tcp_jiffies32 - ecf_p->last_rbuf_opti < usecs_to_jiffies(tp->srtt_us >> 3))
|
||||
+ goto retrans;
|
||||
+
|
||||
+ /* Half the cwnd of the slow flows */
|
||||
+ mptcp_for_each_sub(tp->mpcb, mptcp) {
|
||||
+ struct tcp_sock *tp_it = mptcp->tp;
|
||||
+
|
||||
+ if (tp_it != tp &&
|
||||
+ TCP_SKB_CB(skb_head)->path_mask & mptcp_pi_to_flag(tp_it->mptcp->path_index)) {
|
||||
+ if (tp->srtt_us < tp_it->srtt_us && inet_csk((struct sock *)tp_it)->icsk_ca_state == TCP_CA_Open) {
|
||||
+ u32 prior_cwnd = tp_it->snd_cwnd;
|
||||
+
|
||||
+ tp_it->snd_cwnd = max(tp_it->snd_cwnd >> 1U, 1U);
|
||||
+
|
||||
+ /* If in slow start, do not reduce the ssthresh */
|
||||
+ if (prior_cwnd >= tp_it->snd_ssthresh)
|
||||
+ tp_it->snd_ssthresh = max(tp_it->snd_ssthresh >> 1U, 2U);
|
||||
+
|
||||
+ ecf_p->last_rbuf_opti = tcp_jiffies32;
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+retrans:
|
||||
+
|
||||
+ /* Segment not yet injected into this path? Take it!!! */
|
||||
+ if (!(TCP_SKB_CB(skb_head)->path_mask & mptcp_pi_to_flag(tp->mptcp->path_index))) {
|
||||
+ bool do_retrans = false;
|
||||
+ mptcp_for_each_sub(tp->mpcb, mptcp) {
|
||||
+ struct tcp_sock *tp_it = mptcp->tp;
|
||||
+
|
||||
+ if (tp_it != tp &&
|
||||
+ TCP_SKB_CB(skb_head)->path_mask & mptcp_pi_to_flag(tp_it->mptcp->path_index)) {
|
||||
+ if (tp_it->snd_cwnd <= 4) {
|
||||
+ do_retrans = true;
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ if (4 * tp->srtt_us >= tp_it->srtt_us) {
|
||||
+ do_retrans = false;
|
||||
+ break;
|
||||
+ } else {
|
||||
+ do_retrans = true;
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ if (do_retrans && mptcp_is_available(sk, skb_head, false)) {
|
||||
+ trace_mptcp_retransmit(sk, skb_head);
|
||||
+ return skb_head;
|
||||
+ }
|
||||
+ }
|
||||
+ return NULL;
|
||||
+}
|
||||
+
|
||||
+/* copy from mptcp_sched.c: __mptcp_next_segment */
|
||||
+/* Returns the next segment to be sent from the mptcp meta-queue.
|
||||
+ * (chooses the reinject queue if any segment is waiting in it, otherwise,
|
||||
+ * chooses the normal write queue).
|
||||
+ * Sets *@reinject to 1 if the returned segment comes from the
|
||||
+ * reinject queue. Sets it to 0 if it is the regular send-head of the meta-sk,
|
||||
+ * and sets it to -1 if it is a meta-level retransmission to optimize the
|
||||
+ * receive-buffer.
|
||||
+ */
|
||||
+static struct sk_buff *__mptcp_ecf_next_segment(struct sock *meta_sk, int *reinject)
|
||||
+{
|
||||
+ const struct mptcp_cb *mpcb = tcp_sk(meta_sk)->mpcb;
|
||||
+ struct sk_buff *skb = NULL;
|
||||
+
|
||||
+ *reinject = 0;
|
||||
+
|
||||
+ /* If we are in fallback-mode, just take from the meta-send-queue */
|
||||
+ if (mpcb->infinite_mapping_snd || mpcb->send_infinite_mapping)
|
||||
+ return tcp_send_head(meta_sk);
|
||||
+
|
||||
+ skb = skb_peek(&mpcb->reinject_queue);
|
||||
+
|
||||
+ if (skb) {
|
||||
+ *reinject = 1;
|
||||
+ } else {
|
||||
+ skb = tcp_send_head(meta_sk);
|
||||
+
|
||||
+ if (!skb && meta_sk->sk_socket &&
|
||||
+ test_bit(SOCK_NOSPACE, &meta_sk->sk_socket->flags) &&
|
||||
+ sk_stream_wspace(meta_sk) < sk_stream_min_wspace(meta_sk)) {
|
||||
+ struct sock *subsk = ecf_get_available_subflow(meta_sk, NULL,
|
||||
+ false);
|
||||
+ if (!subsk)
|
||||
+ return NULL;
|
||||
+
|
||||
+ skb = mptcp_ecf_rcv_buf_optimization(subsk, 0);
|
||||
+ if (skb)
|
||||
+ *reinject = -1;
|
||||
+ }
|
||||
+ }
|
||||
+ return skb;
|
||||
+}
|
||||
+
|
||||
+/* copy from mptcp_sched.c: mptcp_next_segment */
|
||||
+static struct sk_buff *mptcp_ecf_next_segment(struct sock *meta_sk,
|
||||
+ int *reinject,
|
||||
+ struct sock **subsk,
|
||||
+ unsigned int *limit)
|
||||
+{
|
||||
+ struct sk_buff *skb = __mptcp_ecf_next_segment(meta_sk, reinject);
|
||||
+ unsigned int mss_now;
|
||||
+ struct tcp_sock *subtp;
|
||||
+ u16 gso_max_segs;
|
||||
+ u32 max_len, max_segs, window, needed;
|
||||
+
|
||||
+ /* As we set it, we have to reset it as well. */
|
||||
+ *limit = 0;
|
||||
+
|
||||
+ if (!skb)
|
||||
+ return NULL;
|
||||
+
|
||||
+ *subsk = ecf_get_available_subflow(meta_sk, skb, false);
|
||||
+ if (!*subsk)
|
||||
+ return NULL;
|
||||
+
|
||||
+ subtp = tcp_sk(*subsk);
|
||||
+ mss_now = tcp_current_mss(*subsk);
|
||||
+
|
||||
+ if (!*reinject && unlikely(!tcp_snd_wnd_test(tcp_sk(meta_sk), skb, mss_now))) {
|
||||
+ skb = mptcp_ecf_rcv_buf_optimization(*subsk, 1);
|
||||
+ if (skb)
|
||||
+ *reinject = -1;
|
||||
+ else
|
||||
+ return NULL;
|
||||
+ }
|
||||
+
|
||||
+ /* No splitting required, as we will only send one single segment */
|
||||
+ if (skb->len <= mss_now)
|
||||
+ return skb;
|
||||
+
|
||||
+ /* The following is similar to tcp_mss_split_point, but
|
||||
+ * we do not care about nagle, because we will anyways
|
||||
+ * use TCP_NAGLE_PUSH, which overrides this.
|
||||
+ *
|
||||
+ * So, we first limit according to the cwnd/gso-size and then according
|
||||
+ * to the subflow's window.
|
||||
+ */
|
||||
+
|
||||
+ gso_max_segs = (*subsk)->sk_gso_max_segs;
|
||||
+ if (!gso_max_segs) /* No gso supported on the subflow's NIC */
|
||||
+ gso_max_segs = 1;
|
||||
+ max_segs = min_t(unsigned int, tcp_cwnd_test(subtp, skb), gso_max_segs);
|
||||
+ if (!max_segs)
|
||||
+ return NULL;
|
||||
+
|
||||
+ max_len = mss_now * max_segs;
|
||||
+ window = tcp_wnd_end(subtp) - subtp->write_seq;
|
||||
+
|
||||
+ needed = min(skb->len, window);
|
||||
+ if (max_len <= skb->len)
|
||||
+ /* Take max_win, which is actually the cwnd/gso-size */
|
||||
+ *limit = max_len;
|
||||
+ else
|
||||
+ /* Or, take the window */
|
||||
+ *limit = needed;
|
||||
+
|
||||
+ return skb;
|
||||
+}
|
||||
+
|
||||
+static void ecfsched_init(struct sock *sk)
|
||||
+{
|
||||
+ struct ecfsched_priv *ecf_p = ecfsched_get_priv(tcp_sk(sk));
|
||||
+ struct ecfsched_cb *ecf_cb = ecfsched_get_cb(tcp_sk(mptcp_meta_sk(sk)));
|
||||
+
|
||||
+ ecf_p->last_rbuf_opti = tcp_jiffies32;
|
||||
+ ecf_cb->switching_margin = 0;
|
||||
+}
|
||||
+
|
||||
+struct mptcp_sched_ops mptcp_sched_ecf = {
|
||||
+ .get_subflow = ecf_get_available_subflow,
|
||||
+ .next_segment = mptcp_ecf_next_segment,
|
||||
+ .init = ecfsched_init,
|
||||
+ .name = "ecf",
|
||||
+ .owner = THIS_MODULE,
|
||||
+};
|
||||
+
|
||||
+static int __init ecf_register(void)
|
||||
+{
|
||||
+ BUILD_BUG_ON(sizeof(struct ecfsched_priv) > MPTCP_SCHED_SIZE);
|
||||
+ BUILD_BUG_ON(sizeof(struct ecfsched_cb) > MPTCP_SCHED_DATA_SIZE);
|
||||
+
|
||||
+ if (mptcp_register_scheduler(&mptcp_sched_ecf))
|
||||
+ return -1;
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static void ecf_unregister(void)
|
||||
+{
|
||||
+ mptcp_unregister_scheduler(&mptcp_sched_ecf);
|
||||
+}
|
||||
+
|
||||
+module_init(ecf_register);
|
||||
+module_exit(ecf_unregister);
|
||||
+
|
||||
+MODULE_AUTHOR("Yeon-sup Lim, Daniel Weber");
|
||||
+MODULE_LICENSE("GPL");
|
||||
+MODULE_DESCRIPTION("ECF (Earliest Completion First) scheduler for MPTCP, based on default minimum RTT scheduler");
|
||||
+MODULE_VERSION("0.95");
|
1037
root/target/linux/generic/hack-4.19/692-tcp_nanqinlang.patch
Executable file
1037
root/target/linux/generic/hack-4.19/692-tcp_nanqinlang.patch
Executable file
File diff suppressed because it is too large
Load diff
116
root/target/linux/generic/hack-4.19/998-ndpi-netfilter.patch
Executable file
116
root/target/linux/generic/hack-4.19/998-ndpi-netfilter.patch
Executable file
|
@ -0,0 +1,116 @@
|
|||
diff --git a/include/net/netfilter/nf_conntrack_extend.h b/include/net/netfilter/nf_conntrack_extend.h
|
||||
index 21f887c..59980ec 100644
|
||||
--- a/include/net/netfilter/nf_conntrack_extend.h
|
||||
+++ b/include/net/netfilter/nf_conntrack_extend.h
|
||||
@@ -28,7 +28,8 @@ enum nf_ct_ext_id {
|
||||
#if IS_ENABLED(CONFIG_NETFILTER_SYNPROXY)
|
||||
NF_CT_EXT_SYNPROXY,
|
||||
#endif
|
||||
- NF_CT_EXT_NUM,
|
||||
+ NF_CT_EXT_CUSTOM,
|
||||
+ NF_CT_EXT_NUM=NF_CT_EXT_CUSTOM+CONFIG_NF_CONNTRACK_CUSTOM,
|
||||
};
|
||||
|
||||
#define NF_CT_EXT_HELPER_TYPE struct nf_conn_help
|
||||
@@ -96,5 +97,6 @@ struct nf_ct_ext_type {
|
||||
};
|
||||
|
||||
int nf_ct_extend_register(const struct nf_ct_ext_type *type);
|
||||
+int nf_ct_extend_custom_register(struct nf_ct_ext_type *type,unsigned long int cid);
|
||||
void nf_ct_extend_unregister(const struct nf_ct_ext_type *type);
|
||||
#endif /* _NF_CONNTRACK_EXTEND_H */
|
||||
diff --git a/net/netfilter/Kconfig b/net/netfilter/Kconfig
|
||||
index 7581e82..30a11eb 100644
|
||||
--- a/net/netfilter/Kconfig
|
||||
+++ b/net/netfilter/Kconfig
|
||||
@@ -85,6 +85,16 @@ config NF_CONNTRACK_SECMARK
|
||||
|
||||
If unsure, say 'N'.
|
||||
|
||||
+config NF_CONNTRACK_CUSTOM
|
||||
+ int "Number of custom extend"
|
||||
+ range 0 8
|
||||
+ depends on NETFILTER_ADVANCED
|
||||
+ default "2"
|
||||
+ help
|
||||
+ This parameter specifies how many custom extensions can be registered.
|
||||
+
|
||||
+ The default value is 2.
|
||||
+
|
||||
config NF_CONNTRACK_ZONES
|
||||
bool 'Connection tracking zones'
|
||||
depends on NETFILTER_ADVANCED
|
||||
diff --git a/net/netfilter/nf_conntrack_core.c b/net/netfilter/nf_conntrack_core.c
|
||||
index 85f643c..44e2fdd 100644
|
||||
--- a/net/netfilter/nf_conntrack_core.c
|
||||
+++ b/net/netfilter/nf_conntrack_core.c
|
||||
@@ -1971,7 +1971,7 @@ int nf_conntrack_set_hashsize(const char *val, const struct kernel_param *kp)
|
||||
static __always_inline unsigned int total_extension_size(void)
|
||||
{
|
||||
/* remember to add new extensions below */
|
||||
- BUILD_BUG_ON(NF_CT_EXT_NUM > 9);
|
||||
+ BUILD_BUG_ON(NF_CT_EXT_NUM > 12);
|
||||
|
||||
return sizeof(struct nf_ct_ext) +
|
||||
sizeof(struct nf_conn_help)
|
||||
diff --git a/net/netfilter/nf_conntrack_extend.c b/net/netfilter/nf_conntrack_extend.c
|
||||
index 9fe0ddc..5a9054e 100644
|
||||
--- a/net/netfilter/nf_conntrack_extend.c
|
||||
+++ b/net/netfilter/nf_conntrack_extend.c
|
||||
@@ -108,11 +108,56 @@ int nf_ct_extend_register(const struct nf_ct_ext_type *type)
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(nf_ct_extend_register);
|
||||
|
||||
+static unsigned long int nf_ct_ext_cust_id[CONFIG_NF_CONNTRACK_CUSTOM];
|
||||
+static enum nf_ct_ext_id
|
||||
+nf_ct_extend_get_custom_id(unsigned long int ext_id);
|
||||
+
|
||||
+int nf_ct_extend_custom_register(struct nf_ct_ext_type *type,
|
||||
+ unsigned long int cid)
|
||||
+{
|
||||
+ int ret;
|
||||
+ enum nf_ct_ext_id new_id = nf_ct_extend_get_custom_id(cid);
|
||||
+ if(!new_id)
|
||||
+ return -EBUSY;
|
||||
+ type->id = new_id;
|
||||
+ ret = nf_ct_extend_register(type);
|
||||
+ if(ret < 0) {
|
||||
+ mutex_lock(&nf_ct_ext_type_mutex);
|
||||
+ nf_ct_ext_cust_id[new_id - NF_CT_EXT_CUSTOM] = 0;
|
||||
+ mutex_unlock(&nf_ct_ext_type_mutex);
|
||||
+ }
|
||||
+ return ret;
|
||||
+}
|
||||
+EXPORT_SYMBOL_GPL(nf_ct_extend_custom_register);
|
||||
+
|
||||
+static enum nf_ct_ext_id
|
||||
+nf_ct_extend_get_custom_id(unsigned long int ext_id)
|
||||
+{
|
||||
+ enum nf_ct_ext_id ret = 0;
|
||||
+ int i;
|
||||
+ mutex_lock(&nf_ct_ext_type_mutex);
|
||||
+ for(i = 0; i < CONFIG_NF_CONNTRACK_CUSTOM; i++) {
|
||||
+ if(!nf_ct_ext_cust_id[i]) {
|
||||
+ nf_ct_ext_cust_id[i] = ext_id;
|
||||
+ ret = i+NF_CT_EXT_CUSTOM;
|
||||
+ break;
|
||||
+ }
|
||||
+ if(nf_ct_ext_cust_id[i] == ext_id) {
|
||||
+ ret = i+NF_CT_EXT_CUSTOM;
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+ mutex_unlock(&nf_ct_ext_type_mutex);
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
/* This MUST be called in process context. */
|
||||
void nf_ct_extend_unregister(const struct nf_ct_ext_type *type)
|
||||
{
|
||||
mutex_lock(&nf_ct_ext_type_mutex);
|
||||
RCU_INIT_POINTER(nf_ct_ext_types[type->id], NULL);
|
||||
+ if(type->id >= NF_CT_EXT_CUSTOM && type->id < NF_CT_EXT_NUM)
|
||||
+ nf_ct_ext_cust_id[type->id-NF_CT_EXT_CUSTOM] = 0;
|
||||
mutex_unlock(&nf_ct_ext_type_mutex);
|
||||
synchronize_rcu();
|
||||
}
|
25
root/target/linux/generic/hack-4.19/999-f2fs-ioerrorfix.patch
Executable file
25
root/target/linux/generic/hack-4.19/999-f2fs-ioerrorfix.patch
Executable file
|
@ -0,0 +1,25 @@
|
|||
---
|
||||
fs/f2fs/checkpoint.c | 6 ++++++
|
||||
1 file changed, 6 insertions(+)
|
||||
|
||||
diff --git a/fs/f2fs/checkpoint.c b/fs/f2fs/checkpoint.c
|
||||
index a7ad1b1e5750..90e1bab86269 100644
|
||||
--- a/fs/f2fs/checkpoint.c
|
||||
+++ b/fs/f2fs/checkpoint.c
|
||||
@@ -674,6 +674,12 @@ int f2fs_recover_orphan_inodes(struct f2fs_sb_info *sbi)
|
||||
if (!is_set_ckpt_flags(sbi, CP_ORPHAN_PRESENT_FLAG))
|
||||
return 0;
|
||||
|
||||
+ if (bdev_read_only(sbi->sb->s_bdev)) {
|
||||
+ f2fs_msg(sbi->sb, KERN_INFO, "write access "
|
||||
+ "unavailable, skipping orphan cleanup");
|
||||
+ return 0;
|
||||
+ }
|
||||
+
|
||||
if (s_flags & SB_RDONLY) {
|
||||
f2fs_msg(sbi->sb, KERN_INFO, "orphan cleanup on readonly fs");
|
||||
sbi->sb->s_flags &= ~SB_RDONLY;
|
||||
--
|
||||
2.18.0.rc1
|
||||
|
||||
|
14
root/target/linux/generic/hack-4.19/999-stop-promiscuous-info.patch
Executable file
14
root/target/linux/generic/hack-4.19/999-stop-promiscuous-info.patch
Executable file
|
@ -0,0 +1,14 @@
|
|||
--- a/net/core/dev.c 2018-08-10 10:31:41.199494561 +0200
|
||||
+++ b/net/core/dev.c 2018-08-10 10:32:03.635272509 +0200
|
||||
@@ -6613,9 +6613,11 @@
|
||||
}
|
||||
}
|
||||
if (dev->flags != old_flags) {
|
||||
+ /*
|
||||
pr_info("device %s %s promiscuous mode\n",
|
||||
dev->name,
|
||||
dev->flags & IFF_PROMISC ? "entered" : "left");
|
||||
+ */
|
||||
if (audit_enabled) {
|
||||
current_uid_gid(&uid, &gid);
|
||||
audit_log(current->audit_context, GFP_ATOMIC,
|
20499
root/target/linux/generic/hack-4.9/690-mptcp_v0.93.patch
Executable file
20499
root/target/linux/generic/hack-4.9/690-mptcp_v0.93.patch
Executable file
File diff suppressed because it is too large
Load diff
23989
root/target/linux/generic/hack-5.4/690-mptcp_trunk.patch
Normal file
23989
root/target/linux/generic/hack-5.4/690-mptcp_trunk.patch
Normal file
File diff suppressed because it is too large
Load diff
1037
root/target/linux/generic/hack-5.4/692-tcp_nanqinlang.patch
Normal file
1037
root/target/linux/generic/hack-5.4/692-tcp_nanqinlang.patch
Normal file
File diff suppressed because it is too large
Load diff
3368
root/target/linux/generic/hack-5.4/693-tcp_bbr2.patch
Normal file
3368
root/target/linux/generic/hack-5.4/693-tcp_bbr2.patch
Normal file
File diff suppressed because it is too large
Load diff
116
root/target/linux/generic/hack-5.4/998-ndpi-netfilter.patch
Normal file
116
root/target/linux/generic/hack-5.4/998-ndpi-netfilter.patch
Normal file
|
@ -0,0 +1,116 @@
|
|||
diff --git a/include/net/netfilter/nf_conntrack_extend.h b/include/net/netfilter/nf_conntrack_extend.h
|
||||
index 21f887c..59980ec 100644
|
||||
--- a/include/net/netfilter/nf_conntrack_extend.h
|
||||
+++ b/include/net/netfilter/nf_conntrack_extend.h
|
||||
@@ -28,7 +28,8 @@ enum nf_ct_ext_id {
|
||||
#if IS_ENABLED(CONFIG_NETFILTER_SYNPROXY)
|
||||
NF_CT_EXT_SYNPROXY,
|
||||
#endif
|
||||
- NF_CT_EXT_NUM,
|
||||
+ NF_CT_EXT_CUSTOM,
|
||||
+ NF_CT_EXT_NUM=NF_CT_EXT_CUSTOM+CONFIG_NF_CONNTRACK_CUSTOM,
|
||||
};
|
||||
|
||||
#define NF_CT_EXT_HELPER_TYPE struct nf_conn_help
|
||||
@@ -96,5 +97,6 @@ struct nf_ct_ext_type {
|
||||
};
|
||||
|
||||
int nf_ct_extend_register(const struct nf_ct_ext_type *type);
|
||||
+int nf_ct_extend_custom_register(struct nf_ct_ext_type *type,unsigned long int cid);
|
||||
void nf_ct_extend_unregister(const struct nf_ct_ext_type *type);
|
||||
#endif /* _NF_CONNTRACK_EXTEND_H */
|
||||
diff --git a/net/netfilter/Kconfig b/net/netfilter/Kconfig
|
||||
index 7581e82..30a11eb 100644
|
||||
--- a/net/netfilter/Kconfig
|
||||
+++ b/net/netfilter/Kconfig
|
||||
@@ -85,6 +85,16 @@ config NF_CONNTRACK_SECMARK
|
||||
|
||||
If unsure, say 'N'.
|
||||
|
||||
+config NF_CONNTRACK_CUSTOM
|
||||
+ int "Number of custom extend"
|
||||
+ range 0 8
|
||||
+ depends on NETFILTER_ADVANCED
|
||||
+ default "2"
|
||||
+ help
|
||||
+ This parameter specifies how many custom extensions can be registered.
|
||||
+
|
||||
+ The default value is 2.
|
||||
+
|
||||
config NF_CONNTRACK_ZONES
|
||||
bool 'Connection tracking zones'
|
||||
depends on NETFILTER_ADVANCED
|
||||
diff --git a/net/netfilter/nf_conntrack_core.c b/net/netfilter/nf_conntrack_core.c
|
||||
index 85f643c..44e2fdd 100644
|
||||
--- a/net/netfilter/nf_conntrack_core.c
|
||||
+++ b/net/netfilter/nf_conntrack_core.c
|
||||
@@ -1971,7 +1971,7 @@ int nf_conntrack_set_hashsize(const char *val, const struct kernel_param *kp)
|
||||
static __always_inline unsigned int total_extension_size(void)
|
||||
{
|
||||
/* remember to add new extensions below */
|
||||
- BUILD_BUG_ON(NF_CT_EXT_NUM > 9);
|
||||
+ BUILD_BUG_ON(NF_CT_EXT_NUM > 12);
|
||||
|
||||
return sizeof(struct nf_ct_ext) +
|
||||
sizeof(struct nf_conn_help)
|
||||
diff --git a/net/netfilter/nf_conntrack_extend.c b/net/netfilter/nf_conntrack_extend.c
|
||||
index 9fe0ddc..5a9054e 100644
|
||||
--- a/net/netfilter/nf_conntrack_extend.c
|
||||
+++ b/net/netfilter/nf_conntrack_extend.c
|
||||
@@ -108,11 +108,56 @@ int nf_ct_extend_register(const struct nf_ct_ext_type *type)
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(nf_ct_extend_register);
|
||||
|
||||
+static unsigned long int nf_ct_ext_cust_id[CONFIG_NF_CONNTRACK_CUSTOM];
|
||||
+static enum nf_ct_ext_id
|
||||
+nf_ct_extend_get_custom_id(unsigned long int ext_id);
|
||||
+
|
||||
+int nf_ct_extend_custom_register(struct nf_ct_ext_type *type,
|
||||
+ unsigned long int cid)
|
||||
+{
|
||||
+ int ret;
|
||||
+ enum nf_ct_ext_id new_id = nf_ct_extend_get_custom_id(cid);
|
||||
+ if(!new_id)
|
||||
+ return -EBUSY;
|
||||
+ type->id = new_id;
|
||||
+ ret = nf_ct_extend_register(type);
|
||||
+ if(ret < 0) {
|
||||
+ mutex_lock(&nf_ct_ext_type_mutex);
|
||||
+ nf_ct_ext_cust_id[new_id - NF_CT_EXT_CUSTOM] = 0;
|
||||
+ mutex_unlock(&nf_ct_ext_type_mutex);
|
||||
+ }
|
||||
+ return ret;
|
||||
+}
|
||||
+EXPORT_SYMBOL_GPL(nf_ct_extend_custom_register);
|
||||
+
|
||||
+static enum nf_ct_ext_id
|
||||
+nf_ct_extend_get_custom_id(unsigned long int ext_id)
|
||||
+{
|
||||
+ enum nf_ct_ext_id ret = 0;
|
||||
+ int i;
|
||||
+ mutex_lock(&nf_ct_ext_type_mutex);
|
||||
+ for(i = 0; i < CONFIG_NF_CONNTRACK_CUSTOM; i++) {
|
||||
+ if(!nf_ct_ext_cust_id[i]) {
|
||||
+ nf_ct_ext_cust_id[i] = ext_id;
|
||||
+ ret = i+NF_CT_EXT_CUSTOM;
|
||||
+ break;
|
||||
+ }
|
||||
+ if(nf_ct_ext_cust_id[i] == ext_id) {
|
||||
+ ret = i+NF_CT_EXT_CUSTOM;
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+ mutex_unlock(&nf_ct_ext_type_mutex);
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
/* This MUST be called in process context. */
|
||||
void nf_ct_extend_unregister(const struct nf_ct_ext_type *type)
|
||||
{
|
||||
mutex_lock(&nf_ct_ext_type_mutex);
|
||||
RCU_INIT_POINTER(nf_ct_ext_types[type->id], NULL);
|
||||
+ if(type->id >= NF_CT_EXT_CUSTOM && type->id < NF_CT_EXT_NUM)
|
||||
+ nf_ct_ext_cust_id[type->id-NF_CT_EXT_CUSTOM] = 0;
|
||||
mutex_unlock(&nf_ct_ext_type_mutex);
|
||||
synchronize_rcu();
|
||||
}
|
|
@ -0,0 +1,47 @@
|
|||
--- a/net/core/dev.c 2018-08-10 10:31:41.199494561 +0200
|
||||
+++ b/net/core/dev.c 2018-08-10 10:32:03.635272509 +0200
|
||||
@@ -6613,9 +6613,11 @@
|
||||
}
|
||||
}
|
||||
if (dev->flags != old_flags) {
|
||||
+ /*
|
||||
pr_info("device %s %s promiscuous mode\n",
|
||||
dev->name,
|
||||
dev->flags & IFF_PROMISC ? "entered" : "left");
|
||||
+ */
|
||||
if (audit_enabled) {
|
||||
current_uid_gid(&uid, &gid);
|
||||
audit_log(current->audit_context, GFP_ATOMIC,
|
||||
--- a/drivers/net/usb/r8152.c 2020-08-13 13:11:25.866435255 +0200
|
||||
+++ b/drivers/net/usb/r8152.c 2020-08-13 13:11:51.973994306 +0200
|
||||
@@ -2353,7 +2353,7 @@
|
||||
|
||||
if (netdev->flags & IFF_PROMISC) {
|
||||
/* Unconditionally log net taps. */
|
||||
- netif_notice(tp, link, netdev, "Promiscuous mode enabled\n");
|
||||
+ //netif_notice(tp, link, netdev, "Promiscuous mode enabled\n");
|
||||
ocp_data |= RCR_AM | RCR_AAP;
|
||||
mc_filter[1] = 0xffffffff;
|
||||
mc_filter[0] = 0xffffffff;
|
||||
--- a/drivers/net/usb/pegasus.c 2020-08-13 13:14:15.519570376 +0200
|
||||
+++ b/drivers/net/usb/pegasus.c 2020-08-13 13:14:26.795380006 +0200
|
||||
@@ -1031,7 +1031,7 @@
|
||||
|
||||
if (net->flags & IFF_PROMISC) {
|
||||
pegasus->eth_regs[EthCtrl2] |= RX_PROMISCUOUS;
|
||||
- netif_info(pegasus, link, net, "Promiscuous mode enabled\n");
|
||||
+ //netif_info(pegasus, link, net, "Promiscuous mode enabled\n");
|
||||
} else if (!netdev_mc_empty(net) || (net->flags & IFF_ALLMULTI)) {
|
||||
pegasus->eth_regs[EthCtrl0] |= RX_MULTICAST;
|
||||
pegasus->eth_regs[EthCtrl2] &= ~RX_PROMISCUOUS;
|
||||
--- a/drivers/net/ethernet/realtek/r8169_main.c 2020-08-13 13:15:44.478068638 +0200
|
||||
+++ b/drivers/net/ethernet/realtek/r8169_main.c 2020-08-13 13:15:59.181820450 +0200
|
||||
@@ -4313,7 +4313,7 @@
|
||||
|
||||
if (dev->flags & IFF_PROMISC) {
|
||||
/* Unconditionally log net taps. */
|
||||
- netif_notice(tp, link, dev, "Promiscuous mode enabled\n");
|
||||
+ //netif_notice(tp, link, dev, "Promiscuous mode enabled\n");
|
||||
rx_mode |= AcceptAllPhys;
|
||||
} else if (netdev_mc_count(dev) > MC_FILTER_LIMIT ||
|
||||
dev->flags & IFF_ALLMULTI ||
|
19
root/target/linux/mediatek/Makefile
Executable file
19
root/target/linux/mediatek/Makefile
Executable file
|
@ -0,0 +1,19 @@
|
|||
# Copyright (c) 2015 OpenWrt.org
|
||||
#
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
ARCH:=arm
|
||||
BOARD:=mediatek
|
||||
BOARDNAME:=MediaTek Ralink ARM
|
||||
SUBTARGETS:=mt7622 mt7623 mt7629
|
||||
FEATURES:=squashfs nand ramdisk fpu ext4 usb
|
||||
|
||||
KERNEL_PATCHVER:=5.4
|
||||
KERNEL_TESTING_PATCHVER:=5.4
|
||||
|
||||
include $(INCLUDE_DIR)/target.mk
|
||||
DEFAULT_PACKAGES += \
|
||||
kmod-leds-gpio kmod-gpio-button-hotplug \
|
||||
wpad-mini uboot-envtools partx-utils e2fsprogs
|
||||
|
||||
$(eval $(call BuildTarget))
|
4
root/target/linux/mediatek/base-files/etc/inittab
Executable file
4
root/target/linux/mediatek/base-files/etc/inittab
Executable file
|
@ -0,0 +1,4 @@
|
|||
::sysinit:/etc/init.d/rcS S boot
|
||||
::shutdown:/etc/init.d/rcS K shutdown
|
||||
::askconsole:/usr/libexec/login.sh
|
||||
ttyS0::askfirst:/usr/libexec/login.sh
|
6
root/target/linux/mediatek/base-files/etc/uci-defaults/99-net-ps
Executable file
6
root/target/linux/mediatek/base-files/etc/uci-defaults/99-net-ps
Executable file
|
@ -0,0 +1,6 @@
|
|||
uci set network.globals.default_rps_val=14
|
||||
uci set network.globals.default_rps_flow_cnt=256
|
||||
uci set network.globals.default_xps_val=14
|
||||
uci set network.globals.default_ps=1
|
||||
uci commit
|
||||
exit 0
|
9
root/target/linux/mediatek/base-files/lib/preinit/05_set_preinit_iface
Executable file
9
root/target/linux/mediatek/base-files/lib/preinit/05_set_preinit_iface
Executable file
|
@ -0,0 +1,9 @@
|
|||
#!/bin/sh
|
||||
|
||||
set_preinit_iface() {
|
||||
ifconfig eth0 up
|
||||
ifname=lan
|
||||
}
|
||||
|
||||
boot_hook_add preinit_main set_preinit_iface
|
||||
|
51
root/target/linux/mediatek/modules.mk
Executable file
51
root/target/linux/mediatek/modules.mk
Executable file
|
@ -0,0 +1,51 @@
|
|||
define KernelPackage/ata-ahci-mtk
|
||||
TITLE:=Mediatek AHCI Serial ATA support
|
||||
KCONFIG:=CONFIG_AHCI_MTK
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/drivers/ata/ahci_mtk.ko \
|
||||
$(LINUX_DIR)/drivers/ata/libahci_platform.ko
|
||||
AUTOLOAD:=$(call AutoLoad,40,libahci libahci_platform ahci_mtk,1)
|
||||
$(call AddDepends/ata)
|
||||
DEPENDS+=@(TARGET_mediatek_mt7622||TARGET_mediatek_mt7623)
|
||||
endef
|
||||
|
||||
define KernelPackage/ata-ahci-mtk/description
|
||||
Mediatek AHCI Serial ATA host controllers
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,ata-ahci-mtk))
|
||||
|
||||
define KernelPackage/sdhci-mtk
|
||||
SUBMENU:=Other modules
|
||||
TITLE:=Mediatek SDHCI driver
|
||||
DEPENDS:=@TARGET_mediatek_mt7622 +kmod-sdhci
|
||||
KCONFIG:=CONFIG_MMC_MTK
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/drivers/mmc/host/mtk-sd.ko
|
||||
AUTOLOAD:=$(call AutoProbe,mtk-sd,1)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,sdhci-mtk))
|
||||
|
||||
define KernelPackage/crypto-hw-mtk
|
||||
TITLE:= MediaTek's Crypto Engine module
|
||||
DEPENDS:=@TARGET_mediatek
|
||||
KCONFIG:= \
|
||||
CONFIG_CRYPTO_HW=y \
|
||||
CONFIG_CRYPTO_AES=y \
|
||||
CONFIG_CRYPTO_AEAD=y \
|
||||
CONFIG_CRYPTO_SHA1=y \
|
||||
CONFIG_CRYPTO_SHA256=y \
|
||||
CONFIG_CRYPTO_SHA512=y \
|
||||
CONFIG_CRYPTO_HMAC=y \
|
||||
CONFIG_CRYPTO_DEV_MEDIATEK
|
||||
FILES:=$(LINUX_DIR)/drivers/crypto/mediatek/mtk-crypto.ko
|
||||
AUTOLOAD:=$(call AutoLoad,90,mtk-crypto)
|
||||
$(call AddDepends/crypto)
|
||||
endef
|
||||
|
||||
define KernelPackage/crypto-hw-mtk/description
|
||||
MediaTek's EIP97 Cryptographic Engine driver.
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,crypto-hw-mtk))
|
476
root/target/linux/mediatek/mt7622/config-5.4
Normal file
476
root/target/linux/mediatek/mt7622/config-5.4
Normal file
|
@ -0,0 +1,476 @@
|
|||
CONFIG_64BIT=y
|
||||
CONFIG_AHCI_MTK=y
|
||||
CONFIG_ARCH_CLOCKSOURCE_DATA=y
|
||||
CONFIG_ARCH_DMA_ADDR_T_64BIT=y
|
||||
CONFIG_ARCH_KEEP_MEMBLOCK=y
|
||||
CONFIG_ARCH_MEDIATEK=y
|
||||
CONFIG_ARCH_MMAP_RND_BITS=18
|
||||
CONFIG_ARCH_MMAP_RND_BITS_MAX=24
|
||||
CONFIG_ARCH_MMAP_RND_BITS_MIN=18
|
||||
CONFIG_ARCH_MMAP_RND_COMPAT_BITS=11
|
||||
CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=11
|
||||
CONFIG_ARCH_PROC_KCORE_TEXT=y
|
||||
CONFIG_ARCH_SELECT_MEMORY_MODEL=y
|
||||
CONFIG_ARCH_SPARSEMEM_DEFAULT=y
|
||||
CONFIG_ARCH_SPARSEMEM_ENABLE=y
|
||||
CONFIG_ARCH_SUSPEND_POSSIBLE=y
|
||||
CONFIG_ARM64=y
|
||||
CONFIG_ARM64_4K_PAGES=y
|
||||
# CONFIG_ARM64_CNP is not set
|
||||
CONFIG_ARM64_CONT_SHIFT=4
|
||||
# CONFIG_ARM64_ERRATUM_1165522 is not set
|
||||
# CONFIG_ARM64_ERRATUM_1286807 is not set
|
||||
# CONFIG_ARM64_ERRATUM_1418040 is not set
|
||||
CONFIG_ARM64_ERRATUM_1542419=y
|
||||
CONFIG_ARM64_ERRATUM_843419=y
|
||||
CONFIG_ARM64_ERRATUM_845719=y
|
||||
CONFIG_ARM64_MODULE_PLTS=y
|
||||
CONFIG_ARM64_PAGE_SHIFT=12
|
||||
CONFIG_ARM64_PA_BITS=48
|
||||
CONFIG_ARM64_PA_BITS_48=y
|
||||
# CONFIG_ARM64_PTR_AUTH is not set
|
||||
CONFIG_ARM64_SSBD=y
|
||||
# CONFIG_ARM64_SVE is not set
|
||||
# CONFIG_ARM64_SW_TTBR0_PAN is not set
|
||||
CONFIG_ARM64_TAGGED_ADDR_ABI=y
|
||||
CONFIG_ARM64_VA_BITS=39
|
||||
CONFIG_ARM64_VA_BITS_39=y
|
||||
# CONFIG_ARMV8_DEPRECATED is not set
|
||||
CONFIG_ARM_AMBA=y
|
||||
CONFIG_ARM_ARCH_TIMER=y
|
||||
CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y
|
||||
CONFIG_ARM_GIC=y
|
||||
CONFIG_ARM_GIC_V2M=y
|
||||
CONFIG_ARM_GIC_V3=y
|
||||
CONFIG_ARM_GIC_V3_ITS=y
|
||||
CONFIG_ARM_GIC_V3_ITS_PCI=y
|
||||
CONFIG_ARM_MEDIATEK_CPUFREQ=y
|
||||
CONFIG_ARM_PMU=y
|
||||
CONFIG_ARM_PSCI_FW=y
|
||||
CONFIG_ATA=y
|
||||
CONFIG_AUDIT_ARCH_COMPAT_GENERIC=y
|
||||
CONFIG_BLK_DEV_LOOP=y
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_BLK_MQ_PCI=y
|
||||
CONFIG_BLK_PM=y
|
||||
CONFIG_BLK_SCSI_REQUEST=y
|
||||
CONFIG_BLOCK_COMPAT=y
|
||||
CONFIG_BSD_PROCESS_ACCT=y
|
||||
CONFIG_BSD_PROCESS_ACCT_V3=y
|
||||
# CONFIG_CAVIUM_TX2_ERRATUM_219 is not set
|
||||
CONFIG_CLKDEV_LOOKUP=y
|
||||
CONFIG_CLKSRC_MMIO=y
|
||||
CONFIG_CLONE_BACKWARDS=y
|
||||
CONFIG_COMMON_CLK=y
|
||||
CONFIG_COMMON_CLK_MEDIATEK=y
|
||||
CONFIG_COMMON_CLK_MT2712=y
|
||||
# CONFIG_COMMON_CLK_MT2712_BDPSYS is not set
|
||||
# CONFIG_COMMON_CLK_MT2712_IMGSYS is not set
|
||||
# CONFIG_COMMON_CLK_MT2712_JPGDECSYS is not set
|
||||
# CONFIG_COMMON_CLK_MT2712_MFGCFG is not set
|
||||
# CONFIG_COMMON_CLK_MT2712_MMSYS is not set
|
||||
# CONFIG_COMMON_CLK_MT2712_VDECSYS is not set
|
||||
# CONFIG_COMMON_CLK_MT2712_VENCSYS is not set
|
||||
# CONFIG_COMMON_CLK_MT6779 is not set
|
||||
# CONFIG_COMMON_CLK_MT6797 is not set
|
||||
CONFIG_COMMON_CLK_MT7622=y
|
||||
CONFIG_COMMON_CLK_MT7622_AUDSYS=y
|
||||
CONFIG_COMMON_CLK_MT7622_ETHSYS=y
|
||||
CONFIG_COMMON_CLK_MT7622_HIFSYS=y
|
||||
# CONFIG_COMMON_CLK_MT8173 is not set
|
||||
CONFIG_COMMON_CLK_MT8183=y
|
||||
# CONFIG_COMMON_CLK_MT8183_AUDIOSYS is not set
|
||||
# CONFIG_COMMON_CLK_MT8183_CAMSYS is not set
|
||||
# CONFIG_COMMON_CLK_MT8183_IMGSYS is not set
|
||||
# CONFIG_COMMON_CLK_MT8183_IPU_ADL is not set
|
||||
# CONFIG_COMMON_CLK_MT8183_IPU_CONN is not set
|
||||
# CONFIG_COMMON_CLK_MT8183_IPU_CORE0 is not set
|
||||
# CONFIG_COMMON_CLK_MT8183_IPU_CORE1 is not set
|
||||
# CONFIG_COMMON_CLK_MT8183_MFGCFG is not set
|
||||
# CONFIG_COMMON_CLK_MT8183_MMSYS is not set
|
||||
# CONFIG_COMMON_CLK_MT8183_VDECSYS is not set
|
||||
# CONFIG_COMMON_CLK_MT8183_VENCSYS is not set
|
||||
CONFIG_COMMON_CLK_MT8516=y
|
||||
# CONFIG_COMMON_CLK_MT8516_AUDSYS is not set
|
||||
CONFIG_COMPAT=y
|
||||
CONFIG_COMPAT_32BIT_TIME=y
|
||||
CONFIG_COMPAT_BINFMT_ELF=y
|
||||
CONFIG_COMPAT_NETLINK_MESSAGES=y
|
||||
CONFIG_COMPAT_OLD_SIGACTION=y
|
||||
CONFIG_CONSOLE_LOGLEVEL_DEFAULT=15
|
||||
# CONFIG_CPUFREQ_DT is not set
|
||||
CONFIG_CPU_FREQ=y
|
||||
# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
|
||||
CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
|
||||
CONFIG_CPU_FREQ_GOV_ATTR_SET=y
|
||||
CONFIG_CPU_FREQ_GOV_COMMON=y
|
||||
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
|
||||
CONFIG_CPU_FREQ_GOV_ONDEMAND=y
|
||||
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
|
||||
CONFIG_CPU_FREQ_GOV_POWERSAVE=y
|
||||
CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y
|
||||
CONFIG_CPU_FREQ_GOV_USERSPACE=y
|
||||
CONFIG_CPU_FREQ_STAT=y
|
||||
CONFIG_CPU_RMAP=y
|
||||
CONFIG_CPU_THERMAL=y
|
||||
CONFIG_CRC16=y
|
||||
CONFIG_CRYPTO_ACOMP2=y
|
||||
CONFIG_CRYPTO_AEAD=y
|
||||
CONFIG_CRYPTO_AEAD2=y
|
||||
# CONFIG_CRYPTO_BLAKE2S is not set
|
||||
CONFIG_CRYPTO_CMAC=y
|
||||
CONFIG_CRYPTO_CRC32=y
|
||||
CONFIG_CRYPTO_CRC32C=y
|
||||
# CONFIG_CRYPTO_CURVE25519 is not set
|
||||
CONFIG_CRYPTO_DEFLATE=y
|
||||
CONFIG_CRYPTO_DRBG=y
|
||||
CONFIG_CRYPTO_DRBG_HMAC=y
|
||||
CONFIG_CRYPTO_DRBG_MENU=y
|
||||
CONFIG_CRYPTO_ECB=y
|
||||
CONFIG_CRYPTO_ECC=y
|
||||
CONFIG_CRYPTO_ECDH=y
|
||||
CONFIG_CRYPTO_HASH=y
|
||||
CONFIG_CRYPTO_HASH2=y
|
||||
CONFIG_CRYPTO_HASH_INFO=y
|
||||
CONFIG_CRYPTO_HMAC=y
|
||||
CONFIG_CRYPTO_JITTERENTROPY=y
|
||||
CONFIG_CRYPTO_KPP=y
|
||||
CONFIG_CRYPTO_KPP2=y
|
||||
# CONFIG_CRYPTO_LIB_BLAKE2S is not set
|
||||
# CONFIG_CRYPTO_LIB_CHACHA is not set
|
||||
# CONFIG_CRYPTO_LIB_CHACHA20POLY1305 is not set
|
||||
# CONFIG_CRYPTO_LIB_CURVE25519 is not set
|
||||
# CONFIG_CRYPTO_LIB_POLY1305 is not set
|
||||
CONFIG_CRYPTO_LIB_POLY1305_RSIZE=9
|
||||
CONFIG_CRYPTO_LIB_SHA256=y
|
||||
CONFIG_CRYPTO_LZO=y
|
||||
CONFIG_CRYPTO_MANAGER=y
|
||||
CONFIG_CRYPTO_MANAGER2=y
|
||||
CONFIG_CRYPTO_NULL2=y
|
||||
CONFIG_CRYPTO_RNG=y
|
||||
CONFIG_CRYPTO_RNG2=y
|
||||
CONFIG_CRYPTO_RNG_DEFAULT=y
|
||||
CONFIG_CRYPTO_ZSTD=y
|
||||
CONFIG_DCACHE_WORD_ACCESS=y
|
||||
CONFIG_DEBUG_MISC=y
|
||||
CONFIG_DEFAULT_MPTCP_PM="fullmesh"
|
||||
CONFIG_DEVTMPFS=y
|
||||
CONFIG_DEVTMPFS_MOUNT=y
|
||||
CONFIG_DIMLIB=y
|
||||
CONFIG_DMADEVICES=y
|
||||
CONFIG_DMATEST=y
|
||||
CONFIG_DMA_DIRECT_REMAP=y
|
||||
CONFIG_DMA_ENGINE=y
|
||||
CONFIG_DMA_ENGINE_RAID=y
|
||||
CONFIG_DMA_OF=y
|
||||
CONFIG_DMA_REMAP=y
|
||||
CONFIG_DMA_VIRTUAL_CHANNELS=y
|
||||
CONFIG_DRM_RCAR_WRITEBACK=y
|
||||
CONFIG_DTC=y
|
||||
CONFIG_DYNAMIC_DEBUG=y
|
||||
CONFIG_EDAC_SUPPORT=y
|
||||
# CONFIG_EFI_PARTITION is not set
|
||||
CONFIG_EINT_MTK=y
|
||||
CONFIG_EXT4_FS=y
|
||||
CONFIG_F2FS_FS=y
|
||||
CONFIG_F2FS_FS_XATTR=y
|
||||
CONFIG_F2FS_STAT_FS=y
|
||||
# CONFIG_FIT_PARTITION is not set
|
||||
CONFIG_FIXED_PHY=y
|
||||
CONFIG_FIX_EARLYCON_MEM=y
|
||||
# CONFIG_FLATMEM_MANUAL is not set
|
||||
CONFIG_FRAME_POINTER=y
|
||||
CONFIG_FS_IOMAP=y
|
||||
CONFIG_FS_MBCACHE=y
|
||||
# CONFIG_FUJITSU_ERRATUM_010001 is not set
|
||||
CONFIG_FW_LOADER_PAGED_BUF=y
|
||||
CONFIG_GENERIC_ALLOCATOR=y
|
||||
CONFIG_GENERIC_ARCH_TOPOLOGY=y
|
||||
CONFIG_GENERIC_BUG=y
|
||||
CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y
|
||||
CONFIG_GENERIC_CLOCKEVENTS=y
|
||||
CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
|
||||
CONFIG_GENERIC_CPU_AUTOPROBE=y
|
||||
CONFIG_GENERIC_CPU_VULNERABILITIES=y
|
||||
CONFIG_GENERIC_CSUM=y
|
||||
CONFIG_GENERIC_EARLY_IOREMAP=y
|
||||
CONFIG_GENERIC_GETTIMEOFDAY=y
|
||||
CONFIG_GENERIC_IDLE_POLL_SETUP=y
|
||||
CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK=y
|
||||
CONFIG_GENERIC_IRQ_MULTI_HANDLER=y
|
||||
CONFIG_GENERIC_IRQ_SHOW=y
|
||||
CONFIG_GENERIC_IRQ_SHOW_LEVEL=y
|
||||
CONFIG_GENERIC_MSI_IRQ=y
|
||||
CONFIG_GENERIC_MSI_IRQ_DOMAIN=y
|
||||
CONFIG_GENERIC_PCI_IOMAP=y
|
||||
CONFIG_GENERIC_PHY=y
|
||||
CONFIG_GENERIC_PINCONF=y
|
||||
CONFIG_GENERIC_PINCTRL_GROUPS=y
|
||||
CONFIG_GENERIC_PINMUX_FUNCTIONS=y
|
||||
CONFIG_GENERIC_SCHED_CLOCK=y
|
||||
CONFIG_GENERIC_SMP_IDLE_THREAD=y
|
||||
CONFIG_GENERIC_STRNCPY_FROM_USER=y
|
||||
CONFIG_GENERIC_STRNLEN_USER=y
|
||||
CONFIG_GENERIC_TIME_VSYSCALL=y
|
||||
CONFIG_GLOB=y
|
||||
CONFIG_GPIOLIB=y
|
||||
CONFIG_GRO_CELLS=y
|
||||
CONFIG_HANDLE_DOMAIN_IRQ=y
|
||||
CONFIG_HARDEN_BRANCH_PREDICTOR=y
|
||||
CONFIG_HARDIRQS_SW_RESEND=y
|
||||
CONFIG_HAS_DMA=y
|
||||
CONFIG_HAS_IOMEM=y
|
||||
CONFIG_HAS_IOPORT_MAP=y
|
||||
CONFIG_HOLES_IN_ZONE=y
|
||||
CONFIG_HZ=250
|
||||
CONFIG_HZ_250=y
|
||||
CONFIG_ICPLUS_PHY=y
|
||||
CONFIG_IIO=y
|
||||
CONFIG_IKCONFIG=y
|
||||
CONFIG_IKCONFIG_PROC=y
|
||||
CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000
|
||||
CONFIG_INITRAMFS_SOURCE=""
|
||||
# CONFIG_IONIC is not set
|
||||
CONFIG_IO_URING=y
|
||||
CONFIG_IRQCHIP=y
|
||||
CONFIG_IRQ_DOMAIN=y
|
||||
CONFIG_IRQ_DOMAIN_HIERARCHY=y
|
||||
CONFIG_IRQ_FORCED_THREADING=y
|
||||
CONFIG_IRQ_TIME_ACCOUNTING=y
|
||||
CONFIG_IRQ_WORK=y
|
||||
CONFIG_JBD2=y
|
||||
CONFIG_JUMP_LABEL=y
|
||||
CONFIG_LIBFDT=y
|
||||
CONFIG_LOCK_DEBUGGING_SUPPORT=y
|
||||
CONFIG_LOCK_SPIN_ON_OWNER=y
|
||||
CONFIG_LZO_COMPRESS=y
|
||||
CONFIG_LZO_DECOMPRESS=y
|
||||
CONFIG_MAGIC_SYSRQ=y
|
||||
CONFIG_MDIO_BUS=y
|
||||
CONFIG_MDIO_DEVICE=y
|
||||
CONFIG_MEDIATEK_MT6577_AUXADC=y
|
||||
CONFIG_MEDIATEK_WATCHDOG=y
|
||||
CONFIG_MEMFD_CREATE=y
|
||||
CONFIG_MESSAGE_LOGLEVEL_DEFAULT=7
|
||||
CONFIG_MFD_SYSCON=y
|
||||
CONFIG_MIGRATION=y
|
||||
# CONFIG_MIKROTIK is not set
|
||||
CONFIG_MMC=y
|
||||
CONFIG_MMC_BLOCK=y
|
||||
CONFIG_MMC_CQHCI=y
|
||||
CONFIG_MMC_MTK=y
|
||||
# CONFIG_MMC_TIFM_SD is not set
|
||||
CONFIG_MODULES_TREE_LOOKUP=y
|
||||
CONFIG_MODULES_USE_ELF_RELA=y
|
||||
# CONFIG_MT753X_GSW is not set
|
||||
CONFIG_MTD_NAND_CORE=y
|
||||
CONFIG_MTD_NAND_ECC_SW_HAMMING=y
|
||||
CONFIG_MTD_NAND_MTK=y
|
||||
CONFIG_MTD_NAND_MTK_BMT=y
|
||||
CONFIG_MTD_RAW_NAND=y
|
||||
# CONFIG_MTD_ROUTERBOOT_PARTS is not set
|
||||
CONFIG_MTD_SPI_NAND=y
|
||||
CONFIG_MTD_SPI_NOR=y
|
||||
# CONFIG_MTD_SPLIT_BCM63XX_FW is not set
|
||||
# CONFIG_MTD_SPLIT_BCM_WFI_FW is not set
|
||||
# CONFIG_MTD_SPLIT_ELF_FW is not set
|
||||
CONFIG_MTD_SPLIT_FIRMWARE=y
|
||||
CONFIG_MTD_SPLIT_FIT_FW=y
|
||||
CONFIG_MTD_UBI=y
|
||||
CONFIG_MTD_UBI_BEB_LIMIT=20
|
||||
CONFIG_MTD_UBI_BLOCK=y
|
||||
# CONFIG_MTD_UBI_FASTMAP is not set
|
||||
# CONFIG_MTD_UBI_GLUEBI is not set
|
||||
CONFIG_MTD_UBI_WL_THRESHOLD=4096
|
||||
# CONFIG_MTK_CMDQ is not set
|
||||
# CONFIG_MTK_CQDMA is not set
|
||||
CONFIG_MTK_EFUSE=y
|
||||
CONFIG_MTK_HSDMA=y
|
||||
CONFIG_MTK_INFRACFG=y
|
||||
CONFIG_MTK_PMIC_WRAP=y
|
||||
CONFIG_MTK_SCPSYS=y
|
||||
CONFIG_MTK_THERMAL=y
|
||||
CONFIG_MTK_TIMER=y
|
||||
# CONFIG_MTK_UART_APDMA is not set
|
||||
CONFIG_MUTEX_SPIN_ON_OWNER=y
|
||||
CONFIG_NEED_DMA_MAP_STATE=y
|
||||
CONFIG_NEED_SG_DMA_LENGTH=y
|
||||
CONFIG_NET_DEVLINK=y
|
||||
CONFIG_NET_DSA=y
|
||||
CONFIG_NET_DSA_MT7530=y
|
||||
CONFIG_NET_DSA_TAG_MTK=y
|
||||
# CONFIG_NET_DSA_TAG_RTL4_A is not set
|
||||
CONFIG_NET_FLOW_LIMIT=y
|
||||
CONFIG_NET_MEDIATEK_SOC=y
|
||||
CONFIG_NET_SWITCHDEV=y
|
||||
CONFIG_NET_VENDOR_MEDIATEK=y
|
||||
CONFIG_NLS=y
|
||||
CONFIG_NO_HZ_COMMON=y
|
||||
CONFIG_NO_HZ_IDLE=y
|
||||
CONFIG_NR_CPUS=2
|
||||
CONFIG_NVMEM=y
|
||||
CONFIG_NVMEM_SYSFS=y
|
||||
# CONFIG_OCTEONTX2_AF is not set
|
||||
CONFIG_OF=y
|
||||
CONFIG_OF_ADDRESS=y
|
||||
CONFIG_OF_EARLY_FLATTREE=y
|
||||
CONFIG_OF_FLATTREE=y
|
||||
CONFIG_OF_GPIO=y
|
||||
CONFIG_OF_IRQ=y
|
||||
CONFIG_OF_KOBJ=y
|
||||
CONFIG_OF_MDIO=y
|
||||
CONFIG_OF_NET=y
|
||||
CONFIG_OLD_SIGSUSPEND3=y
|
||||
CONFIG_PADATA=y
|
||||
CONFIG_PARTITION_PERCPU=y
|
||||
CONFIG_PCI=y
|
||||
CONFIG_PCIEAER=y
|
||||
CONFIG_PCIEASPM=y
|
||||
# CONFIG_PCIEASPM_DEBUG is not set
|
||||
# CONFIG_PCIEASPM_DEFAULT is not set
|
||||
CONFIG_PCIEASPM_PERFORMANCE=y
|
||||
# CONFIG_PCIEASPM_POWERSAVE is not set
|
||||
# CONFIG_PCIEASPM_POWER_SUPERSAVE is not set
|
||||
CONFIG_PCIEPORTBUS=y
|
||||
# CONFIG_PCIE_AL is not set
|
||||
CONFIG_PCIE_MEDIATEK=y
|
||||
CONFIG_PCIE_PME=y
|
||||
CONFIG_PCI_DEBUG=y
|
||||
CONFIG_PCI_DOMAINS=y
|
||||
CONFIG_PCI_DOMAINS_GENERIC=y
|
||||
CONFIG_PCI_MSI=y
|
||||
CONFIG_PCI_MSI_IRQ_DOMAIN=y
|
||||
CONFIG_PERF_EVENTS=y
|
||||
CONFIG_PGTABLE_LEVELS=3
|
||||
CONFIG_PHYLIB=y
|
||||
CONFIG_PHYLINK=y
|
||||
CONFIG_PHYS_ADDR_T_64BIT=y
|
||||
CONFIG_PHY_MTK_TPHY=y
|
||||
# CONFIG_PHY_MTK_UFS is not set
|
||||
# CONFIG_PHY_MTK_XSPHY is not set
|
||||
CONFIG_PINCTRL=y
|
||||
# CONFIG_PINCTRL_MT2712 is not set
|
||||
# CONFIG_PINCTRL_MT6765 is not set
|
||||
# CONFIG_PINCTRL_MT6797 is not set
|
||||
CONFIG_PINCTRL_MT7622=y
|
||||
# CONFIG_PINCTRL_MT8173 is not set
|
||||
# CONFIG_PINCTRL_MT8183 is not set
|
||||
CONFIG_PINCTRL_MT8516=y
|
||||
CONFIG_PINCTRL_MTK=y
|
||||
CONFIG_PINCTRL_MTK_MOORE=y
|
||||
CONFIG_PM=y
|
||||
CONFIG_PM_CLK=y
|
||||
CONFIG_PM_GENERIC_DOMAINS=y
|
||||
CONFIG_PM_GENERIC_DOMAINS_OF=y
|
||||
CONFIG_PM_OPP=y
|
||||
CONFIG_POWER_RESET=y
|
||||
CONFIG_POWER_RESET_SYSCON=y
|
||||
CONFIG_POWER_SUPPLY=y
|
||||
CONFIG_PRINTK_TIME=y
|
||||
CONFIG_PWM=y
|
||||
CONFIG_PWM_MEDIATEK=y
|
||||
# CONFIG_PWM_MTK_DISP is not set
|
||||
CONFIG_PWM_SYSFS=y
|
||||
CONFIG_QUEUED_RWLOCKS=y
|
||||
CONFIG_QUEUED_SPINLOCKS=y
|
||||
CONFIG_RAS=y
|
||||
CONFIG_RATIONAL=y
|
||||
# CONFIG_RAVE_SP_CORE is not set
|
||||
CONFIG_RCU_NEED_SEGCBLIST=y
|
||||
CONFIG_RCU_STALL_COMMON=y
|
||||
CONFIG_REALTEK_PHY=y
|
||||
CONFIG_REFCOUNT_FULL=y
|
||||
CONFIG_REGMAP=y
|
||||
CONFIG_REGMAP_MMIO=y
|
||||
CONFIG_REGULATOR=y
|
||||
CONFIG_REGULATOR_FIXED_VOLTAGE=y
|
||||
CONFIG_REGULATOR_MT6380=y
|
||||
CONFIG_RESET_CONTROLLER=y
|
||||
CONFIG_RFS_ACCEL=y
|
||||
CONFIG_RODATA_FULL_DEFAULT_ENABLED=y
|
||||
CONFIG_RPS=y
|
||||
CONFIG_RTC_CLASS=y
|
||||
CONFIG_RTC_DRV_MT7622=y
|
||||
CONFIG_RTC_I2C_AND_SPI=y
|
||||
CONFIG_RTL8367S_GSW=y
|
||||
CONFIG_RWSEM_SPIN_ON_OWNER=y
|
||||
CONFIG_SCSI=y
|
||||
# CONFIG_SECTION_MISMATCH_WARN_ONLY is not set
|
||||
CONFIG_SERIAL_8250_FSL=y
|
||||
CONFIG_SERIAL_8250_MT6577=y
|
||||
CONFIG_SERIAL_8250_NR_UARTS=3
|
||||
CONFIG_SERIAL_8250_RUNTIME_UARTS=3
|
||||
CONFIG_SERIAL_DEV_BUS=y
|
||||
CONFIG_SERIAL_DEV_CTRL_TTYPORT=y
|
||||
CONFIG_SERIAL_MCTRL_GPIO=y
|
||||
CONFIG_SERIAL_OF_PLATFORM=y
|
||||
CONFIG_SGL_ALLOC=y
|
||||
CONFIG_SG_POOL=y
|
||||
CONFIG_SMP=y
|
||||
CONFIG_SPARSEMEM=y
|
||||
CONFIG_SPARSEMEM_EXTREME=y
|
||||
CONFIG_SPARSEMEM_MANUAL=y
|
||||
CONFIG_SPARSEMEM_VMEMMAP=y
|
||||
CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y
|
||||
CONFIG_SPARSE_IRQ=y
|
||||
CONFIG_SPI=y
|
||||
CONFIG_SPI_MASTER=y
|
||||
CONFIG_SPI_MEM=y
|
||||
CONFIG_SPI_MT65XX=y
|
||||
CONFIG_SPI_MTK_NOR=y
|
||||
CONFIG_SPI_MTK_SNFI=y
|
||||
CONFIG_SRCU=y
|
||||
CONFIG_SWCONFIG=y
|
||||
CONFIG_SWIOTLB=y
|
||||
CONFIG_SWPHY=y
|
||||
CONFIG_SYSCTL_EXCEPTION_TRACE=y
|
||||
CONFIG_SYSVIPC_COMPAT=y
|
||||
CONFIG_SYS_SUPPORTS_HUGETLBFS=y
|
||||
# CONFIG_TCP_CONG_BBR2 is not set
|
||||
# CONFIG_TCP_CONG_NANQINLANG is not set
|
||||
CONFIG_THERMAL=y
|
||||
CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y
|
||||
CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0
|
||||
CONFIG_THERMAL_EMULATION=y
|
||||
CONFIG_THERMAL_GOV_BANG_BANG=y
|
||||
CONFIG_THERMAL_GOV_FAIR_SHARE=y
|
||||
CONFIG_THERMAL_GOV_STEP_WISE=y
|
||||
CONFIG_THERMAL_GOV_USER_SPACE=y
|
||||
CONFIG_THERMAL_OF=y
|
||||
CONFIG_THERMAL_WRITABLE_TRIPS=y
|
||||
CONFIG_THREAD_INFO_IN_TASK=y
|
||||
CONFIG_TICK_CPU_ACCOUNTING=y
|
||||
CONFIG_TIMER_OF=y
|
||||
CONFIG_TIMER_PROBE=y
|
||||
CONFIG_TREE_RCU=y
|
||||
CONFIG_TREE_SRCU=y
|
||||
CONFIG_UBIFS_FS=y
|
||||
CONFIG_UBIFS_FS_ADVANCED_COMPR=y
|
||||
CONFIG_UBIFS_FS_LZO=y
|
||||
CONFIG_UBIFS_FS_ZLIB=y
|
||||
CONFIG_UBIFS_FS_ZSTD=y
|
||||
# CONFIG_UCLAMP_TASK is not set
|
||||
# CONFIG_UNMAP_KERNEL_AT_EL0 is not set
|
||||
CONFIG_USB=y
|
||||
CONFIG_USB_COMMON=y
|
||||
# CONFIG_USB_EHCI_HCD is not set
|
||||
CONFIG_USB_SUPPORT=y
|
||||
CONFIG_USB_XHCI_HCD=y
|
||||
CONFIG_USB_XHCI_MTK=y
|
||||
# CONFIG_USB_XHCI_PLATFORM is not set
|
||||
CONFIG_VMAP_STACK=y
|
||||
CONFIG_WATCHDOG_CORE=y
|
||||
CONFIG_WATCHDOG_PRETIMEOUT_DEFAULT_GOV_PANIC=y
|
||||
CONFIG_WATCHDOG_PRETIMEOUT_GOV=y
|
||||
# CONFIG_WATCHDOG_PRETIMEOUT_GOV_NOOP is not set
|
||||
CONFIG_WATCHDOG_PRETIMEOUT_GOV_PANIC=y
|
||||
CONFIG_WATCHDOG_PRETIMEOUT_GOV_SEL=m
|
||||
CONFIG_WATCHDOG_SYSFS=y
|
||||
# CONFIG_WIREGUARD is not set
|
||||
CONFIG_XPS=y
|
||||
CONFIG_XXHASH=y
|
||||
CONFIG_ZLIB_DEFLATE=y
|
||||
CONFIG_ZLIB_INFLATE=y
|
||||
CONFIG_ZONE_DMA32=y
|
||||
CONFIG_ZSTD_COMPRESS=y
|
||||
CONFIG_ZSTD_DECOMPRESS=y
|
11
root/target/linux/mediatek/mt7622/target.mk
Normal file
11
root/target/linux/mediatek/mt7622/target.mk
Normal file
|
@ -0,0 +1,11 @@
|
|||
ARCH:=aarch64
|
||||
SUBTARGET:=mt7622
|
||||
BOARDNAME:=MT7622
|
||||
CPU_TYPE:=cortex-a53
|
||||
DEFAULT_PACKAGES += kmod-mt7615e kmod-mt7615-firmware wpad-basic-wolfssl blockdev uboot-envtools
|
||||
KERNELNAME:=Image dtbs
|
||||
KERNEL_PATCHVER:=5.4
|
||||
|
||||
define Target/Description
|
||||
Build firmware images for MediaTek MT7622 ARM based boards.
|
||||
endef
|
36
root/target/linux/mediatek/mt7623/base-files/etc/board.d/02_network
Executable file
36
root/target/linux/mediatek/mt7623/base-files/etc/board.d/02_network
Executable file
|
@ -0,0 +1,36 @@
|
|||
#!/bin/sh
|
||||
|
||||
. /lib/functions.sh
|
||||
. /lib/functions/uci-defaults.sh
|
||||
. /lib/functions/system.sh
|
||||
|
||||
mediatek_setup_interfaces()
|
||||
{
|
||||
local board="$1"
|
||||
|
||||
case $board in
|
||||
bananapi,bpi-r2|\
|
||||
unielec,u7623-02-emmc-512m)
|
||||
ucidef_set_interfaces_lan_wan "wan1 wan2 wan3 wan4" "lan"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
mediatek_setup_macs()
|
||||
{
|
||||
local board="$1"
|
||||
|
||||
case $board in
|
||||
unielec,u7623-02-emmc-512m)
|
||||
ucidef_set_interface_macaddr "lan" "$(cat /sys/class/net/lan/address)"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
board_config_update
|
||||
board=$(board_name)
|
||||
mediatek_setup_interfaces $board
|
||||
mediatek_setup_macs $board
|
||||
board_config_flush
|
||||
|
||||
exit 0
|
47
root/target/linux/mediatek/mt7623/base-files/lib/preinit/07_set_iface_mac
Executable file
47
root/target/linux/mediatek/mt7623/base-files/lib/preinit/07_set_iface_mac
Executable file
|
@ -0,0 +1,47 @@
|
|||
#!/bin/sh
|
||||
# Copyright (C) 2018 OpenWrt.org
|
||||
|
||||
RECOVERY_PART=/dev/mmcblk0p1
|
||||
|
||||
preinit_set_mac_address() {
|
||||
local mac
|
||||
|
||||
. /lib/functions.sh
|
||||
. /lib/functions/system.sh
|
||||
|
||||
case $(board_name) in
|
||||
unielec,u7623-02-emmc-512m)
|
||||
if [ -b $RECOVERY_PART ]; then
|
||||
insmod nls_cp437
|
||||
insmod nls_iso8859-1
|
||||
insmod fat
|
||||
insmod vfat
|
||||
mkdir -p /tmp/recovery
|
||||
mount -o rw,noatime $RECOVERY_PART /tmp/recovery
|
||||
|
||||
if [ -f "/tmp/recovery/mac_addr" ];
|
||||
then
|
||||
mac=$(cat /tmp/recovery/mac_addr)
|
||||
else
|
||||
mac=$(cat /sys/class/net/eth0/address)
|
||||
echo "$mac" > /tmp/recovery/mac_addr
|
||||
fi
|
||||
|
||||
sync
|
||||
umount /tmp/recovery
|
||||
rm -rf /tmp/recovery
|
||||
fi
|
||||
|
||||
ip link set dev lan address $mac 2> /dev/null
|
||||
|
||||
mac=$(macaddr_add $mac 1)
|
||||
|
||||
ip link set dev wan1 address $mac 2>/dev/null
|
||||
ip link set dev wan2 address $mac 2>/dev/null
|
||||
ip link set dev wan3 address $mac 2>/dev/null
|
||||
ip link set dev wan4 address $mac 2>/dev/null
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
boot_hook_add preinit_main preinit_set_mac_address
|
19
root/target/linux/mediatek/mt7623/base-files/lib/preinit/79_move_config
Executable file
19
root/target/linux/mediatek/mt7623/base-files/lib/preinit/79_move_config
Executable file
|
@ -0,0 +1,19 @@
|
|||
#!/bin/sh
|
||||
# Copyright (C) 2012-2015 OpenWrt.org
|
||||
|
||||
move_config() {
|
||||
local partdev
|
||||
|
||||
. /lib/upgrade/common.sh
|
||||
|
||||
if export_bootdevice && export_partdevice partdev -1; then
|
||||
if mount -t vfat -o rw,noatime "/dev/$partdev" /mnt; then
|
||||
if [ -f /mnt/sysupgrade.tgz ]; then
|
||||
mv -f /mnt/sysupgrade.tgz /
|
||||
fi
|
||||
umount /mnt
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
boot_hook_add preinit_mount_root move_config
|
154
root/target/linux/mediatek/mt7623/base-files/lib/upgrade/platform.sh
Executable file
154
root/target/linux/mediatek/mt7623/base-files/lib/upgrade/platform.sh
Executable file
|
@ -0,0 +1,154 @@
|
|||
platform_do_upgrade() {
|
||||
local board=$(board_name)
|
||||
|
||||
case "$board" in
|
||||
unielec,u7623-02-emmc-512m)
|
||||
#Keep the persisten random mac address (if it exists)
|
||||
mkdir -p /tmp/recovery
|
||||
mount -o rw,noatime /dev/mmcblk0p1 /tmp/recovery
|
||||
[ -f "/tmp/recovery/mac_addr" ] && \
|
||||
mv -f /tmp/recovery/mac_addr /tmp/
|
||||
umount /tmp/recovery
|
||||
|
||||
#1310720 is the offset in bytes from the start of eMMC and to
|
||||
#the location of the kernel (2560 512 byte sectors)
|
||||
get_image "$1" | dd of=/dev/mmcblk0 bs=1310720 seek=1 conv=fsync
|
||||
|
||||
mount -o rw,noatime /dev/mmcblk0p1 /tmp/recovery
|
||||
[ -f "/tmp/mac_addr" ] && mv -f /tmp/mac_addr /tmp/recovery
|
||||
sync
|
||||
umount /tmp/recovery
|
||||
;;
|
||||
bananapi,bpi-r2)
|
||||
local diskdev partdev diff
|
||||
|
||||
export_bootdevice && export_partdevice diskdev -2 || {
|
||||
echo "Unable to determine upgrade device"
|
||||
return 1
|
||||
}
|
||||
|
||||
sync
|
||||
|
||||
if [ "$SAVE_PARTITIONS" = "1" ]; then
|
||||
get_partitions "/dev/$diskdev" bootdisk
|
||||
|
||||
#extract the boot sector from the image
|
||||
get_image "$@" | dd of=/tmp/image.bs count=1 bs=512b
|
||||
|
||||
get_partitions /tmp/image.bs image
|
||||
|
||||
#compare tables
|
||||
diff="$(grep -F -x -v -f /tmp/partmap.bootdisk /tmp/partmap.image)"
|
||||
else
|
||||
diff=1
|
||||
fi
|
||||
|
||||
if [ -n "$diff" ]; then
|
||||
get_image "$@" | dd of="/dev/$diskdev" bs=4096 conv=fsync
|
||||
|
||||
# Separate removal and addtion is necessary; otherwise, partition 1
|
||||
# will be missing if it overlaps with the old partition 2
|
||||
partx -d - "/dev/$diskdev"
|
||||
partx -a - "/dev/$diskdev"
|
||||
|
||||
return 0
|
||||
fi
|
||||
|
||||
#write uboot image
|
||||
get_image "$@" | dd of="$diskdev" bs=1024 skip=320 seek=320 count=700 conv=fsync
|
||||
#iterate over each partition from the image and write it to the boot disk
|
||||
while read part start size; do
|
||||
part="$(($part - 2))"
|
||||
if export_partdevice partdev $part; then
|
||||
echo "Writing image to /dev/$partdev..."
|
||||
get_image "$@" | dd of="/dev/$partdev" ibs="512" obs=1M skip="$start" count="$size" conv=fsync
|
||||
else
|
||||
echo "Unable to find partition $part device, skipped."
|
||||
fi
|
||||
done < /tmp/partmap.image
|
||||
|
||||
#copy partition uuid
|
||||
echo "Writing new UUID to /dev/$diskdev..."
|
||||
get_image "$@" | dd of="/dev/$diskdev" bs=1 skip=440 count=4 seek=440 conv=fsync
|
||||
;;
|
||||
*)
|
||||
default_do_upgrade "$1"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
PART_NAME=firmware
|
||||
|
||||
platform_check_image() {
|
||||
local board=$(board_name)
|
||||
local magic="$(get_magic_long "$1")"
|
||||
|
||||
[ "$#" -gt 1 ] && return 1
|
||||
|
||||
case "$board" in
|
||||
unielec,u7623-02-emmc-512m)
|
||||
[ "$magic" != "27051956" ] && {
|
||||
echo "Invalid image type."
|
||||
return 1
|
||||
}
|
||||
return 0
|
||||
;;
|
||||
bananapi,bpi-r2)
|
||||
local diskdev partdev diff
|
||||
|
||||
export_bootdevice && export_partdevice diskdev -2 || {
|
||||
echo "Unable to determine upgrade device"
|
||||
return 1
|
||||
}
|
||||
|
||||
get_partitions "/dev/$diskdev" bootdisk
|
||||
|
||||
#extract the boot sector from the image
|
||||
get_image "$@" | dd of=/tmp/image.bs count=1 bs=512b 2>/dev/null
|
||||
|
||||
get_partitions /tmp/image.bs image
|
||||
|
||||
#compare tables
|
||||
diff="$(grep -F -x -v -f /tmp/partmap.bootdisk /tmp/partmap.image)"
|
||||
|
||||
rm -f /tmp/image.bs /tmp/partmap.bootdisk /tmp/partmap.image
|
||||
|
||||
if [ -n "$diff" ]; then
|
||||
echo "Partition layout has changed. Full image will be written."
|
||||
ask_bool 0 "Abort" && exit 1
|
||||
return 0
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
echo "Sysupgrade is not supported on your board yet."
|
||||
return 1
|
||||
;;
|
||||
esac
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
platform_copy_config_emmc() {
|
||||
mkdir -p /recovery
|
||||
mount -o rw,noatime /dev/mmcblk0p1 /recovery
|
||||
cp -af "$UPGRADE_BACKUP" "/recovery/$BACKUP_FILE"
|
||||
sync
|
||||
umount /recovery
|
||||
}
|
||||
|
||||
platform_copy_config() {
|
||||
case "$(board_name)" in
|
||||
unielec,u7623-02-emmc-512m)
|
||||
platform_copy_config_emmc
|
||||
;;
|
||||
bananapi,bpi-r2)
|
||||
local partdev
|
||||
|
||||
if export_partdevice partdev -1; then
|
||||
mount -t vfat -o rw,noatime "/dev/$partdev" /mnt
|
||||
cp -af "$CONF_TAR" /mnt/
|
||||
umount /mnt
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
}
|
570
root/target/linux/mediatek/mt7623/config-4.14
Executable file
570
root/target/linux/mediatek/mt7623/config-4.14
Executable file
|
@ -0,0 +1,570 @@
|
|||
# CONFIG_AIO is not set
|
||||
CONFIG_ALIGNMENT_TRAP=y
|
||||
CONFIG_ARCH_CLOCKSOURCE_DATA=y
|
||||
CONFIG_ARCH_HAS_DEBUG_VIRTUAL=y
|
||||
CONFIG_ARCH_HAS_ELF_RANDOMIZE=y
|
||||
CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y
|
||||
CONFIG_ARCH_HAS_SET_MEMORY=y
|
||||
CONFIG_ARCH_HAS_SG_CHAIN=y
|
||||
CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y
|
||||
CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y
|
||||
CONFIG_ARCH_HAS_TICK_BROADCAST=y
|
||||
CONFIG_ARCH_HAVE_CUSTOM_GPIO_H=y
|
||||
CONFIG_ARCH_HIBERNATION_POSSIBLE=y
|
||||
CONFIG_ARCH_MEDIATEK=y
|
||||
CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y
|
||||
CONFIG_ARCH_MULTIPLATFORM=y
|
||||
# CONFIG_ARCH_MULTI_CPU_AUTO is not set
|
||||
CONFIG_ARCH_MULTI_V6_V7=y
|
||||
CONFIG_ARCH_MULTI_V7=y
|
||||
CONFIG_ARCH_NR_GPIO=0
|
||||
CONFIG_ARCH_OPTIONAL_KERNEL_RWX=y
|
||||
CONFIG_ARCH_OPTIONAL_KERNEL_RWX_DEFAULT=y
|
||||
# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set
|
||||
# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set
|
||||
CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y
|
||||
CONFIG_ARCH_SUPPORTS_UPROBES=y
|
||||
CONFIG_ARCH_SUSPEND_POSSIBLE=y
|
||||
CONFIG_ARCH_USE_BUILTIN_BSWAP=y
|
||||
CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y
|
||||
# CONFIG_ARCH_WANTS_THP_SWAP is not set
|
||||
CONFIG_ARCH_WANT_GENERAL_HUGETLB=y
|
||||
CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y
|
||||
CONFIG_ARM=y
|
||||
CONFIG_ARM_APPENDED_DTB=y
|
||||
CONFIG_ARM_ARCH_TIMER=y
|
||||
CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y
|
||||
CONFIG_ARM_ATAG_DTB_COMPAT=y
|
||||
CONFIG_ARM_ATAG_DTB_COMPAT_CMDLINE_EXTEND=y
|
||||
# CONFIG_ARM_ATAG_DTB_COMPAT_CMDLINE_FROM_BOOTLOADER is not set
|
||||
CONFIG_ARM_CPU_SUSPEND=y
|
||||
# CONFIG_ARM_CPU_TOPOLOGY is not set
|
||||
CONFIG_ARM_GIC=y
|
||||
CONFIG_ARM_HAS_SG_CHAIN=y
|
||||
CONFIG_ARM_L1_CACHE_SHIFT=6
|
||||
CONFIG_ARM_L1_CACHE_SHIFT_6=y
|
||||
# CONFIG_ARM_LPAE is not set
|
||||
CONFIG_ARM_MEDIATEK_CPUFREQ=y
|
||||
CONFIG_ARM_PATCH_IDIV=y
|
||||
CONFIG_ARM_PATCH_PHYS_VIRT=y
|
||||
# CONFIG_ARM_SMMU is not set
|
||||
CONFIG_ARM_THUMB=y
|
||||
CONFIG_ARM_THUMBEE=y
|
||||
CONFIG_ARM_UNWIND=y
|
||||
CONFIG_ARM_VIRT_EXT=y
|
||||
CONFIG_ATAGS=y
|
||||
CONFIG_ATAGS_PROC=y
|
||||
CONFIG_AUTO_ZRELADDR=y
|
||||
CONFIG_BLK_DEV_LOOP=y
|
||||
CONFIG_BLK_MQ_PCI=y
|
||||
CONFIG_BOUNCE=y
|
||||
# CONFIG_CACHE_L2X0 is not set
|
||||
CONFIG_CC_STACKPROTECTOR=y
|
||||
# CONFIG_CC_STACKPROTECTOR_NONE is not set
|
||||
CONFIG_CC_STACKPROTECTOR_REGULAR=y
|
||||
CONFIG_CFG80211=m
|
||||
CONFIG_CFG80211_CRDA_SUPPORT=y
|
||||
# CONFIG_CFG80211_DEBUGFS is not set
|
||||
CONFIG_CFG80211_DEFAULT_PS=y
|
||||
# CONFIG_CFG80211_DEVELOPER_WARNINGS is not set
|
||||
# CONFIG_CFG80211_INTERNAL_REGDB is not set
|
||||
# CONFIG_CFG80211_WEXT is not set
|
||||
CONFIG_CLEANCACHE=y
|
||||
CONFIG_CLKDEV_LOOKUP=y
|
||||
CONFIG_CLKSRC_MMIO=y
|
||||
CONFIG_CLONE_BACKWARDS=y
|
||||
CONFIG_CMDLINE="earlyprintk console=ttyS0,115200 vmalloc=256M"
|
||||
CONFIG_CMDLINE_EXTEND=y
|
||||
CONFIG_COMMON_CLK=y
|
||||
CONFIG_COMMON_CLK_MEDIATEK=y
|
||||
CONFIG_COMMON_CLK_MT2701=y
|
||||
CONFIG_COMMON_CLK_MT2701_BDPSYS=y
|
||||
CONFIG_COMMON_CLK_MT2701_ETHSYS=y
|
||||
CONFIG_COMMON_CLK_MT2701_HIFSYS=y
|
||||
CONFIG_COMMON_CLK_MT2701_IMGSYS=y
|
||||
CONFIG_COMMON_CLK_MT2701_MMSYS=y
|
||||
CONFIG_COMMON_CLK_MT2701_VDECSYS=y
|
||||
# CONFIG_COMMON_CLK_MT7622 is not set
|
||||
# CONFIG_COMMON_CLK_MT8135 is not set
|
||||
# CONFIG_COMMON_CLK_MT8173 is not set
|
||||
CONFIG_COMPACTION=y
|
||||
CONFIG_COREDUMP=y
|
||||
# CONFIG_CPUFREQ_DT is not set
|
||||
CONFIG_CPU_32v6K=y
|
||||
CONFIG_CPU_32v7=y
|
||||
CONFIG_CPU_ABRT_EV7=y
|
||||
# CONFIG_CPU_BPREDICT_DISABLE is not set
|
||||
CONFIG_CPU_CACHE_V7=y
|
||||
CONFIG_CPU_CACHE_VIPT=y
|
||||
CONFIG_CPU_COPY_V6=y
|
||||
CONFIG_CPU_CP15=y
|
||||
CONFIG_CPU_CP15_MMU=y
|
||||
CONFIG_CPU_FREQ=y
|
||||
CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
|
||||
CONFIG_CPU_FREQ_GOV_ATTR_SET=y
|
||||
CONFIG_CPU_FREQ_GOV_COMMON=y
|
||||
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
|
||||
CONFIG_CPU_FREQ_GOV_ONDEMAND=y
|
||||
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
|
||||
CONFIG_CPU_FREQ_GOV_POWERSAVE=y
|
||||
# CONFIG_CPU_FREQ_GOV_USERSPACE is not set
|
||||
CONFIG_CPU_FREQ_STAT=y
|
||||
CONFIG_CPU_HAS_ASID=y
|
||||
# CONFIG_CPU_HOTPLUG_STATE_CONTROL is not set
|
||||
# CONFIG_CPU_ICACHE_DISABLE is not set
|
||||
CONFIG_CPU_PABRT_V7=y
|
||||
CONFIG_CPU_PM=y
|
||||
CONFIG_CPU_RMAP=y
|
||||
# CONFIG_CPU_THERMAL is not set
|
||||
CONFIG_CPU_THUMB_CAPABLE=y
|
||||
CONFIG_CPU_TLB_V7=y
|
||||
CONFIG_CPU_V7=y
|
||||
CONFIG_CRASH_CORE=y
|
||||
CONFIG_CRC16=y
|
||||
# CONFIG_CRC32_SARWATE is not set
|
||||
CONFIG_CRC32_SLICEBY8=y
|
||||
CONFIG_CROSS_MEMORY_ATTACH=y
|
||||
CONFIG_CRYPTO_ACOMP2=y
|
||||
CONFIG_CRYPTO_AEAD=y
|
||||
CONFIG_CRYPTO_AEAD2=y
|
||||
CONFIG_CRYPTO_CRC32=y
|
||||
CONFIG_CRYPTO_CRC32C=y
|
||||
CONFIG_CRYPTO_CTR=y
|
||||
CONFIG_CRYPTO_DEFLATE=y
|
||||
CONFIG_CRYPTO_DEV_MEDIATEK=y
|
||||
CONFIG_CRYPTO_DRBG=y
|
||||
CONFIG_CRYPTO_DRBG_HMAC=y
|
||||
CONFIG_CRYPTO_DRBG_MENU=y
|
||||
CONFIG_CRYPTO_HASH=y
|
||||
CONFIG_CRYPTO_HASH2=y
|
||||
CONFIG_CRYPTO_HMAC=y
|
||||
CONFIG_CRYPTO_HW=y
|
||||
CONFIG_CRYPTO_JITTERENTROPY=y
|
||||
CONFIG_CRYPTO_LZO=y
|
||||
CONFIG_CRYPTO_MANAGER=y
|
||||
CONFIG_CRYPTO_MANAGER2=y
|
||||
CONFIG_CRYPTO_NULL=y
|
||||
CONFIG_CRYPTO_NULL2=y
|
||||
CONFIG_CRYPTO_RNG=y
|
||||
CONFIG_CRYPTO_RNG2=y
|
||||
CONFIG_CRYPTO_RNG_DEFAULT=y
|
||||
CONFIG_CRYPTO_SEQIV=y
|
||||
CONFIG_CRYPTO_SHA1=y
|
||||
CONFIG_CRYPTO_SHA256=y
|
||||
CONFIG_CRYPTO_SHA512=y
|
||||
CONFIG_CRYPTO_WORKQUEUE=y
|
||||
CONFIG_DCACHE_WORD_ACCESS=y
|
||||
CONFIG_DEBUG_ALIGN_RODATA=y
|
||||
CONFIG_DEBUG_BUGVERBOSE=y
|
||||
CONFIG_DEBUG_GPIO=y
|
||||
CONFIG_DEBUG_INFO=y
|
||||
CONFIG_DEBUG_LL=y
|
||||
CONFIG_DEBUG_LL_INCLUDE="debug/8250.S"
|
||||
CONFIG_DEBUG_MT6589_UART0=y
|
||||
# CONFIG_DEBUG_MT8127_UART0 is not set
|
||||
# CONFIG_DEBUG_MT8135_UART3 is not set
|
||||
CONFIG_DEBUG_PREEMPT=y
|
||||
CONFIG_DEBUG_UART_8250=y
|
||||
# CONFIG_DEBUG_UART_8250_FLOW_CONTROL is not set
|
||||
CONFIG_DEBUG_UART_8250_SHIFT=2
|
||||
# CONFIG_DEBUG_UART_8250_WORD is not set
|
||||
CONFIG_DEBUG_UART_PHYS=0x11004000
|
||||
CONFIG_DEBUG_UART_VIRT=0xf1004000
|
||||
CONFIG_DEBUG_UNCOMPRESS=y
|
||||
# CONFIG_DEBUG_USER is not set
|
||||
CONFIG_DEFAULT_DUMMY=y
|
||||
CONFIG_DEFAULT_SCHEDULER=y
|
||||
CONFIG_DMADEVICES=y
|
||||
CONFIG_DMA_ENGINE=y
|
||||
# CONFIG_DMA_NOOP_OPS is not set
|
||||
CONFIG_DMA_OF=y
|
||||
# CONFIG_DMA_VIRT_OPS is not set
|
||||
# CONFIG_DRM_LIB_RANDOM is not set
|
||||
CONFIG_DTC=y
|
||||
CONFIG_EARLY_PRINTK=y
|
||||
CONFIG_EDAC_ATOMIC_SCRUB=y
|
||||
CONFIG_EDAC_SUPPORT=y
|
||||
CONFIG_ELF_CORE=y
|
||||
CONFIG_EXPORTFS=y
|
||||
CONFIG_EXT4_FS=y
|
||||
# CONFIG_F2FS_CHECK_FS is not set
|
||||
CONFIG_F2FS_FS=y
|
||||
# CONFIG_F2FS_FS_SECURITY is not set
|
||||
CONFIG_F2FS_FS_XATTR=y
|
||||
CONFIG_F2FS_STAT_FS=y
|
||||
CONFIG_FIXED_PHY=y
|
||||
CONFIG_FIX_EARLYCON_MEM=y
|
||||
CONFIG_FREEZER=y
|
||||
CONFIG_FS_MBCACHE=y
|
||||
CONFIG_FUTEX_PI=y
|
||||
CONFIG_GENERIC_ALLOCATOR=y
|
||||
CONFIG_GENERIC_BUG=y
|
||||
CONFIG_GENERIC_CLOCKEVENTS=y
|
||||
CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
|
||||
CONFIG_GENERIC_CPU_AUTOPROBE=y
|
||||
CONFIG_GENERIC_EARLY_IOREMAP=y
|
||||
CONFIG_GENERIC_IDLE_POLL_SETUP=y
|
||||
CONFIG_GENERIC_IO=y
|
||||
CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK=y
|
||||
CONFIG_GENERIC_IRQ_SHOW=y
|
||||
CONFIG_GENERIC_IRQ_SHOW_LEVEL=y
|
||||
CONFIG_GENERIC_MSI_IRQ=y
|
||||
CONFIG_GENERIC_MSI_IRQ_DOMAIN=y
|
||||
CONFIG_GENERIC_PCI_IOMAP=y
|
||||
CONFIG_GENERIC_PHY=y
|
||||
CONFIG_GENERIC_PINCONF=y
|
||||
CONFIG_GENERIC_PINCTRL_GROUPS=y
|
||||
CONFIG_GENERIC_PINMUX_FUNCTIONS=y
|
||||
CONFIG_GENERIC_SCHED_CLOCK=y
|
||||
CONFIG_GENERIC_SMP_IDLE_THREAD=y
|
||||
CONFIG_GENERIC_STRNCPY_FROM_USER=y
|
||||
CONFIG_GENERIC_STRNLEN_USER=y
|
||||
CONFIG_GPIOLIB=y
|
||||
CONFIG_GPIO_SYSFS=y
|
||||
# CONFIG_GPS is not set
|
||||
# CONFIG_GRO_CELLS is not set
|
||||
CONFIG_HANDLE_DOMAIN_IRQ=y
|
||||
CONFIG_HARDIRQS_SW_RESEND=y
|
||||
CONFIG_HAS_DMA=y
|
||||
CONFIG_HAS_IOMEM=y
|
||||
CONFIG_HAS_IOPORT_MAP=y
|
||||
# CONFIG_HAVE_64BIT_ALIGNED_ACCESS is not set
|
||||
CONFIG_HAVE_ARCH_AUDITSYSCALL=y
|
||||
CONFIG_HAVE_ARCH_BITREVERSE=y
|
||||
CONFIG_HAVE_ARCH_JUMP_LABEL=y
|
||||
CONFIG_HAVE_ARCH_KGDB=y
|
||||
CONFIG_HAVE_ARCH_PFN_VALID=y
|
||||
CONFIG_HAVE_ARCH_SECCOMP_FILTER=y
|
||||
CONFIG_HAVE_ARCH_TRACEHOOK=y
|
||||
CONFIG_HAVE_ARM_ARCH_TIMER=y
|
||||
CONFIG_HAVE_ARM_SMCCC=y
|
||||
# CONFIG_HAVE_BOOTMEM_INFO_NODE is not set
|
||||
CONFIG_HAVE_CC_STACKPROTECTOR=y
|
||||
CONFIG_HAVE_CLK=y
|
||||
CONFIG_HAVE_CLK_PREPARE=y
|
||||
CONFIG_HAVE_CONTEXT_TRACKING=y
|
||||
CONFIG_HAVE_C_RECORDMCOUNT=y
|
||||
CONFIG_HAVE_DEBUG_KMEMLEAK=y
|
||||
CONFIG_HAVE_DMA_API_DEBUG=y
|
||||
CONFIG_HAVE_DMA_CONTIGUOUS=y
|
||||
CONFIG_HAVE_DYNAMIC_FTRACE=y
|
||||
CONFIG_HAVE_DYNAMIC_FTRACE_WITH_REGS=y
|
||||
CONFIG_HAVE_EBPF_JIT=y
|
||||
CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
|
||||
CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
|
||||
CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
|
||||
CONFIG_HAVE_FUNCTION_TRACER=y
|
||||
CONFIG_HAVE_GENERIC_DMA_COHERENT=y
|
||||
CONFIG_HAVE_IDE=y
|
||||
CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y
|
||||
CONFIG_HAVE_MEMBLOCK=y
|
||||
CONFIG_HAVE_MOD_ARCH_SPECIFIC=y
|
||||
CONFIG_HAVE_NET_DSA=y
|
||||
CONFIG_HAVE_OPROFILE=y
|
||||
CONFIG_HAVE_OPTPROBES=y
|
||||
CONFIG_HAVE_PERF_EVENTS=y
|
||||
CONFIG_HAVE_PERF_REGS=y
|
||||
CONFIG_HAVE_PERF_USER_STACK_DUMP=y
|
||||
CONFIG_HAVE_PROC_CPU=y
|
||||
CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
|
||||
CONFIG_HAVE_SMP=y
|
||||
CONFIG_HAVE_SYSCALL_TRACEPOINTS=y
|
||||
CONFIG_HAVE_UID16=y
|
||||
CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y
|
||||
# CONFIG_HIGHMEM is not set
|
||||
# CONFIG_HIGHPTE is not set
|
||||
CONFIG_HOTPLUG_CPU=y
|
||||
CONFIG_HWMON=y
|
||||
CONFIG_HW_RANDOM=y
|
||||
CONFIG_HW_RANDOM_MTK=y
|
||||
CONFIG_HZ_FIXED=0
|
||||
CONFIG_HZ_PERIODIC=y
|
||||
CONFIG_I2C=y
|
||||
CONFIG_I2C_BOARDINFO=y
|
||||
CONFIG_I2C_CHARDEV=y
|
||||
CONFIG_I2C_MT65XX=y
|
||||
CONFIG_ICPLUS_PHY=y
|
||||
CONFIG_IIO=y
|
||||
# CONFIG_IIO_BUFFER is not set
|
||||
# CONFIG_IIO_TRIGGER is not set
|
||||
CONFIG_INITRAMFS_COMPRESSION=""
|
||||
# CONFIG_INITRAMFS_FORCE is not set
|
||||
CONFIG_INITRAMFS_ROOT_GID=1000
|
||||
CONFIG_INITRAMFS_ROOT_UID=1000
|
||||
CONFIG_INITRAMFS_SOURCE="/openwrt/trunk/build_dir/target-arm_cortex-a7_musl-1.1.14_eabi/root-mediatek /openwrt/trunk/target/linux/generic/image/initramfs-base-files.txt"
|
||||
CONFIG_IOMMU_HELPER=y
|
||||
# CONFIG_IOMMU_IO_PGTABLE_ARMV7S is not set
|
||||
# CONFIG_IOMMU_IO_PGTABLE_LPAE is not set
|
||||
CONFIG_IOMMU_SUPPORT=y
|
||||
CONFIG_IRQCHIP=y
|
||||
CONFIG_IRQ_DOMAIN=y
|
||||
CONFIG_IRQ_DOMAIN_HIERARCHY=y
|
||||
CONFIG_IRQ_FORCED_THREADING=y
|
||||
CONFIG_IRQ_WORK=y
|
||||
CONFIG_JBD2=y
|
||||
CONFIG_KALLSYMS=y
|
||||
CONFIG_KEXEC=y
|
||||
CONFIG_KEXEC_CORE=y
|
||||
CONFIG_LDISC_AUTOLOAD=y
|
||||
CONFIG_LEDS_MT6323=y
|
||||
CONFIG_LIBFDT=y
|
||||
CONFIG_LOCK_SPIN_ON_OWNER=y
|
||||
CONFIG_LZO_COMPRESS=y
|
||||
CONFIG_LZO_DECOMPRESS=y
|
||||
# CONFIG_MACH_MT2701 is not set
|
||||
# CONFIG_MACH_MT6589 is not set
|
||||
# CONFIG_MACH_MT6592 is not set
|
||||
CONFIG_MACH_MT7623=y
|
||||
# CONFIG_MACH_MT8127 is not set
|
||||
# CONFIG_MACH_MT8135 is not set
|
||||
CONFIG_MAGIC_SYSRQ=y
|
||||
CONFIG_MDIO_BITBANG=y
|
||||
CONFIG_MDIO_BUS=y
|
||||
CONFIG_MDIO_DEVICE=y
|
||||
CONFIG_MDIO_GPIO=y
|
||||
CONFIG_MEDIATEK_MT6577_AUXADC=y
|
||||
CONFIG_MEDIATEK_WATCHDOG=y
|
||||
CONFIG_MFD_CORE=y
|
||||
CONFIG_MFD_MT6397=y
|
||||
CONFIG_MFD_SYSCON=y
|
||||
CONFIG_MIGHT_HAVE_CACHE_L2X0=y
|
||||
CONFIG_MIGHT_HAVE_PCI=y
|
||||
CONFIG_MIGRATION=y
|
||||
CONFIG_MMC=y
|
||||
CONFIG_MMC_BLOCK=y
|
||||
CONFIG_MMC_MTK=y
|
||||
CONFIG_MMC_SDHCI=y
|
||||
# CONFIG_MMC_SDHCI_PCI is not set
|
||||
CONFIG_MMC_SDHCI_PLTFM=y
|
||||
# CONFIG_MMC_TIFM_SD is not set
|
||||
CONFIG_MODULES_USE_ELF_REL=y
|
||||
# CONFIG_MPTCP_BINDER is not set
|
||||
# CONFIG_MPTCP_FULLMESH is not set
|
||||
# CONFIG_MPTCP_NDIFFPORTS is not set
|
||||
# CONFIG_MPTCP_REDUNDANT is not set
|
||||
# CONFIG_MPTCP_ROUNDROBIN is not set
|
||||
CONFIG_MTD_BLOCK2MTD=y
|
||||
CONFIG_MTD_CMDLINE_PARTS=y
|
||||
CONFIG_MTD_M25P80=y
|
||||
CONFIG_MTD_MT81xx_NOR=y
|
||||
CONFIG_MTD_NAND=y
|
||||
CONFIG_MTD_NAND_ECC=y
|
||||
CONFIG_MTD_NAND_MTK=y
|
||||
CONFIG_MTD_SPI_NOR=y
|
||||
CONFIG_MTD_SPLIT_FIRMWARE=y
|
||||
CONFIG_MTD_SPLIT_UIMAGE_FW=y
|
||||
CONFIG_MTD_UBI=y
|
||||
CONFIG_MTD_UBI_BEB_LIMIT=20
|
||||
CONFIG_MTD_UBI_BLOCK=y
|
||||
# CONFIG_MTD_UBI_FASTMAP is not set
|
||||
# CONFIG_MTD_UBI_GLUEBI is not set
|
||||
CONFIG_MTD_UBI_WL_THRESHOLD=4096
|
||||
CONFIG_MTK_BTIF=y
|
||||
CONFIG_MTK_COMBO=y
|
||||
# CONFIG_MTK_COMBO_BT is not set
|
||||
CONFIG_MTK_COMBO_CHIP="CONSYS_7623"
|
||||
# CONFIG_MTK_COMBO_CHIP_CONSYS_6572 is not set
|
||||
# CONFIG_MTK_COMBO_CHIP_CONSYS_6580 is not set
|
||||
# CONFIG_MTK_COMBO_CHIP_CONSYS_6582 is not set
|
||||
# CONFIG_MTK_COMBO_CHIP_CONSYS_6592 is not set
|
||||
# CONFIG_MTK_COMBO_CHIP_CONSYS_6735 is not set
|
||||
# CONFIG_MTK_COMBO_CHIP_CONSYS_6752 is not set
|
||||
# CONFIG_MTK_COMBO_CHIP_CONSYS_6755 is not set
|
||||
# CONFIG_MTK_COMBO_CHIP_CONSYS_6797 is not set
|
||||
CONFIG_MTK_COMBO_CHIP_CONSYS_7623=y
|
||||
# CONFIG_MTK_COMBO_CHIP_CONSYS_8127 is not set
|
||||
# CONFIG_MTK_COMBO_CHIP_CONSYS_8163 is not set
|
||||
# CONFIG_MTK_COMBO_CHIP_MT6620 is not set
|
||||
# CONFIG_MTK_COMBO_CHIP_MT6628 is not set
|
||||
# CONFIG_MTK_COMBO_CHIP_MT6630 is not set
|
||||
# CONFIG_MTK_COMBO_COMM is not set
|
||||
# CONFIG_MTK_COMBO_BT_HCI is not set
|
||||
CONFIG_MTK_COMBO_PLAT_PATH=""
|
||||
CONFIG_MTK_COMBO_WIFI=m
|
||||
# CONFIG_MTK_CONN_LTE_IDC_SUPPORT is not set
|
||||
CONFIG_MTK_DHCPV6C_WIFI=y
|
||||
CONFIG_MTK_EFUSE=y
|
||||
# CONFIG_MTK_GPS_SUPPORT is not set
|
||||
# CONFIG_MTK_HSDMA is not set
|
||||
CONFIG_MTK_INFRACFG=y
|
||||
# CONFIG_MTK_IOMMU is not set
|
||||
# CONFIG_MTK_IOMMU_V1 is not set
|
||||
CONFIG_MTK_PASSPOINT_R1_SUPPORT=y
|
||||
CONFIG_MTK_PASSPOINT_R2_SUPPORT=y
|
||||
CONFIG_MTK_PLATFORM="mt7623"
|
||||
CONFIG_MTK_PMIC_WRAP=y
|
||||
CONFIG_MTK_SCPSYS=y
|
||||
CONFIG_MTK_THERMAL=y
|
||||
CONFIG_MTK_TIMER=y
|
||||
CONFIG_MTK_WAPI_SUPPORT=y
|
||||
CONFIG_MTK_WIFI_MCC_SUPPORT=y
|
||||
CONFIG_MULTI_IRQ_HANDLER=y
|
||||
CONFIG_MUTEX_SPIN_ON_OWNER=y
|
||||
CONFIG_NEED_DMA_MAP_STATE=y
|
||||
CONFIG_NEON=y
|
||||
CONFIG_NET_DSA=y
|
||||
CONFIG_NET_DSA_MT7530=y
|
||||
# CONFIG_NET_DSA_SMSC_LAN9303_I2C is not set
|
||||
CONFIG_NET_DSA_TAG_MTK=y
|
||||
CONFIG_NET_FLOW_LIMIT=y
|
||||
CONFIG_NET_MEDIATEK_HNAT=y
|
||||
CONFIG_NET_MEDIATEK_SOC=y
|
||||
CONFIG_NET_SWITCHDEV=y
|
||||
# CONFIG_NET_VENDOR_AURORA is not set
|
||||
CONFIG_NET_VENDOR_MEDIATEK=y
|
||||
# CONFIG_NET_VENDOR_WIZNET is not set
|
||||
CONFIG_NL80211_TESTMODE=y
|
||||
CONFIG_NLS=y
|
||||
CONFIG_NO_BOOTMEM=y
|
||||
CONFIG_NR_CPUS=4
|
||||
CONFIG_NVMEM=y
|
||||
CONFIG_OF=y
|
||||
CONFIG_OF_ADDRESS=y
|
||||
CONFIG_OF_ADDRESS_PCI=y
|
||||
CONFIG_OF_EARLY_FLATTREE=y
|
||||
CONFIG_OF_FLATTREE=y
|
||||
CONFIG_OF_GPIO=y
|
||||
CONFIG_OF_IRQ=y
|
||||
CONFIG_OF_MDIO=y
|
||||
CONFIG_OF_NET=y
|
||||
CONFIG_OF_PCI=y
|
||||
CONFIG_OF_PCI_IRQ=y
|
||||
CONFIG_OF_RESERVED_MEM=y
|
||||
CONFIG_OLD_SIGACTION=y
|
||||
CONFIG_OLD_SIGSUSPEND3=y
|
||||
CONFIG_PADATA=y
|
||||
CONFIG_PAGE_OFFSET=0xC0000000
|
||||
CONFIG_PCI=y
|
||||
CONFIG_PCIEAER=y
|
||||
CONFIG_PCIEPORTBUS=y
|
||||
CONFIG_PCIE_MEDIATEK=y
|
||||
CONFIG_PCIE_PME=y
|
||||
CONFIG_PCI_DOMAINS=y
|
||||
CONFIG_PCI_DOMAINS_GENERIC=y
|
||||
CONFIG_PCI_MSI=y
|
||||
CONFIG_PCI_MSI_IRQ_DOMAIN=y
|
||||
CONFIG_PERF_USE_VMALLOC=y
|
||||
CONFIG_PGTABLE_LEVELS=2
|
||||
CONFIG_PGTABLE_MAPPING=y
|
||||
CONFIG_PHYLIB=y
|
||||
CONFIG_PHY_MTK_TPHY=y
|
||||
CONFIG_PINCTRL=y
|
||||
CONFIG_PINCTRL_MT2701=y
|
||||
CONFIG_PINCTRL_MT6397=y
|
||||
CONFIG_PINCTRL_MTK=y
|
||||
CONFIG_PM=y
|
||||
CONFIG_PM_CLK=y
|
||||
# CONFIG_PM_DEBUG is not set
|
||||
CONFIG_PM_GENERIC_DOMAINS=y
|
||||
CONFIG_PM_GENERIC_DOMAINS_OF=y
|
||||
CONFIG_PM_GENERIC_DOMAINS_SLEEP=y
|
||||
CONFIG_PM_OPP=y
|
||||
CONFIG_PM_SLEEP=y
|
||||
CONFIG_PM_SLEEP_SMP=y
|
||||
CONFIG_POWER_RESET=y
|
||||
CONFIG_POWER_SUPPLY=y
|
||||
CONFIG_PREEMPT=y
|
||||
CONFIG_PREEMPT_COUNT=y
|
||||
# CONFIG_PREEMPT_NONE is not set
|
||||
CONFIG_PREEMPT_RCU=y
|
||||
CONFIG_PRINTK_TIME=y
|
||||
CONFIG_PWM=y
|
||||
CONFIG_PWM_MEDIATEK=y
|
||||
# CONFIG_PWM_MTK_DISP is not set
|
||||
CONFIG_PWM_SYSFS=y
|
||||
CONFIG_RAS=y
|
||||
CONFIG_RATIONAL=y
|
||||
CONFIG_RCU_CPU_STALL_TIMEOUT=21
|
||||
# CONFIG_RCU_EXPERT is not set
|
||||
CONFIG_RCU_NEED_SEGCBLIST=y
|
||||
CONFIG_RCU_STALL_COMMON=y
|
||||
CONFIG_REGMAP=y
|
||||
CONFIG_REGMAP_I2C=y
|
||||
CONFIG_REGMAP_MMIO=y
|
||||
CONFIG_REGMAP_SPI=y
|
||||
CONFIG_REGULATOR=y
|
||||
CONFIG_REGULATOR_FIXED_VOLTAGE=y
|
||||
CONFIG_REGULATOR_GPIO=y
|
||||
CONFIG_REGULATOR_MT6323=y
|
||||
# CONFIG_REGULATOR_MT6380 is not set
|
||||
# CONFIG_REGULATOR_MT6397 is not set
|
||||
# CONFIG_REGULATOR_QCOM_SPMI is not set
|
||||
CONFIG_RESET_CONTROLLER=y
|
||||
CONFIG_RFS_ACCEL=y
|
||||
CONFIG_RPS=y
|
||||
CONFIG_RTC_CLASS=y
|
||||
# CONFIG_RTC_DRV_CMOS is not set
|
||||
# CONFIG_RTC_DRV_MT6397 is not set
|
||||
# CONFIG_RTC_DRV_MT7622 is not set
|
||||
CONFIG_RTC_I2C_AND_SPI=y
|
||||
# CONFIG_RTL8723BS is not set
|
||||
CONFIG_RWSEM_SPIN_ON_OWNER=y
|
||||
CONFIG_RWSEM_XCHGADD_ALGORITHM=y
|
||||
# CONFIG_SCHED_INFO is not set
|
||||
# CONFIG_SCSI_DMA is not set
|
||||
# CONFIG_SERIAL_8250_DMA is not set
|
||||
CONFIG_SERIAL_8250_FSL=y
|
||||
CONFIG_SERIAL_8250_MT6577=y
|
||||
CONFIG_SERIAL_8250_NR_UARTS=4
|
||||
CONFIG_SERIAL_8250_RUNTIME_UARTS=4
|
||||
CONFIG_SMP=y
|
||||
# CONFIG_SMP_ON_UP is not set
|
||||
CONFIG_SPARSE_IRQ=y
|
||||
CONFIG_SPI=y
|
||||
CONFIG_SPI_BITBANG=y
|
||||
CONFIG_SPI_MASTER=y
|
||||
CONFIG_SPI_MT65XX=y
|
||||
CONFIG_SPMI=y
|
||||
CONFIG_SRCU=y
|
||||
# CONFIG_STRIP_ASM_SYMS is not set
|
||||
CONFIG_SUSPEND=y
|
||||
CONFIG_SUSPEND_FREEZER=y
|
||||
CONFIG_SWCONFIG=y
|
||||
CONFIG_SWIOTLB=y
|
||||
CONFIG_SWPHY=y
|
||||
CONFIG_SWP_EMULATE=y
|
||||
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
|
||||
CONFIG_TASKS_RCU=y
|
||||
CONFIG_THERMAL=y
|
||||
CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y
|
||||
CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0
|
||||
CONFIG_THERMAL_GOV_STEP_WISE=y
|
||||
CONFIG_THERMAL_OF=y
|
||||
CONFIG_THIN_ARCHIVES=y
|
||||
# CONFIG_THUMB2_KERNEL is not set
|
||||
CONFIG_TICK_CPU_ACCOUNTING=y
|
||||
CONFIG_TIMER_OF=y
|
||||
CONFIG_TIMER_PROBE=y
|
||||
CONFIG_TREE_SRCU=y
|
||||
CONFIG_UBIFS_FS=y
|
||||
# CONFIG_UBIFS_FS_ADVANCED_COMPR is not set
|
||||
CONFIG_UBIFS_FS_LZO=y
|
||||
CONFIG_UBIFS_FS_ZLIB=y
|
||||
CONFIG_UEVENT_HELPER_PATH=""
|
||||
CONFIG_UNCOMPRESS_INCLUDE="debug/uncompress.h"
|
||||
CONFIG_UNINLINE_SPIN_UNLOCK=y
|
||||
CONFIG_USB=y
|
||||
CONFIG_USB_COMMON=y
|
||||
# CONFIG_USB_EHCI_HCD is not set
|
||||
# CONFIG_USB_MTU3 is not set
|
||||
CONFIG_USB_SUPPORT=y
|
||||
CONFIG_USB_XHCI_HCD=y
|
||||
CONFIG_USB_XHCI_MTK=y
|
||||
CONFIG_USB_XHCI_PLATFORM=y
|
||||
CONFIG_USE_OF=y
|
||||
CONFIG_VECTORS_BASE=0xffff0000
|
||||
CONFIG_VFP=y
|
||||
CONFIG_VFPv3=y
|
||||
CONFIG_VM_EVENT_COUNTERS=y
|
||||
CONFIG_WATCHDOG_CORE=y
|
||||
# CONFIG_WILC1000_SDIO is not set
|
||||
# CONFIG_WILC1000_SPI is not set
|
||||
CONFIG_XPS=y
|
||||
CONFIG_XZ_DEC_ARM=y
|
||||
CONFIG_XZ_DEC_BCJ=y
|
||||
CONFIG_ZBOOT_ROM_BSS=0
|
||||
CONFIG_ZBOOT_ROM_TEXT=0
|
||||
CONFIG_ZLIB_DEFLATE=y
|
||||
CONFIG_ZLIB_INFLATE=y
|
||||
CONFIG_ZSMALLOC=y
|
||||
# CONFIG_ZSMALLOC_STAT is not set
|
521
root/target/linux/mediatek/mt7623/config-4.19
Executable file
521
root/target/linux/mediatek/mt7623/config-4.19
Executable file
|
@ -0,0 +1,521 @@
|
|||
# CONFIG_AIO is not set
|
||||
CONFIG_ALIGNMENT_TRAP=y
|
||||
CONFIG_ARCH_CLOCKSOURCE_DATA=y
|
||||
CONFIG_ARCH_HAS_DEBUG_VIRTUAL=y
|
||||
CONFIG_ARCH_HAS_ELF_RANDOMIZE=y
|
||||
CONFIG_ARCH_HAS_FORTIFY_SOURCE=y
|
||||
CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y
|
||||
CONFIG_ARCH_HAS_KCOV=y
|
||||
CONFIG_ARCH_HAS_MEMBARRIER_SYNC_CORE=y
|
||||
CONFIG_ARCH_HAS_PHYS_TO_DMA=y
|
||||
CONFIG_ARCH_HAS_SET_MEMORY=y
|
||||
CONFIG_ARCH_HAS_SG_CHAIN=y
|
||||
CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y
|
||||
CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y
|
||||
CONFIG_ARCH_HAS_TICK_BROADCAST=y
|
||||
CONFIG_ARCH_HAVE_CUSTOM_GPIO_H=y
|
||||
CONFIG_ARCH_HIBERNATION_POSSIBLE=y
|
||||
CONFIG_ARCH_MEDIATEK=y
|
||||
CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y
|
||||
CONFIG_ARCH_MULTIPLATFORM=y
|
||||
CONFIG_ARCH_MULTI_V6_V7=y
|
||||
CONFIG_ARCH_MULTI_V7=y
|
||||
CONFIG_ARCH_NR_GPIO=0
|
||||
CONFIG_ARCH_OPTIONAL_KERNEL_RWX=y
|
||||
CONFIG_ARCH_OPTIONAL_KERNEL_RWX_DEFAULT=y
|
||||
CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y
|
||||
CONFIG_ARCH_SUPPORTS_UPROBES=y
|
||||
CONFIG_ARCH_SUSPEND_POSSIBLE=y
|
||||
CONFIG_ARCH_USE_BUILTIN_BSWAP=y
|
||||
CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y
|
||||
CONFIG_ARCH_WANT_GENERAL_HUGETLB=y
|
||||
CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y
|
||||
CONFIG_ARM=y
|
||||
CONFIG_ARM_APPENDED_DTB=y
|
||||
CONFIG_ARM_ARCH_TIMER=y
|
||||
CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y
|
||||
# CONFIG_ARM_ATAG_DTB_COMPAT is not set
|
||||
CONFIG_ARM_CPU_SUSPEND=y
|
||||
# CONFIG_ARM_CPU_TOPOLOGY is not set
|
||||
CONFIG_ARM_GIC=y
|
||||
CONFIG_ARM_HAS_SG_CHAIN=y
|
||||
CONFIG_ARM_L1_CACHE_SHIFT=6
|
||||
CONFIG_ARM_L1_CACHE_SHIFT_6=y
|
||||
# CONFIG_ARM_LPAE is not set
|
||||
CONFIG_ARM_MEDIATEK_CPUFREQ=y
|
||||
CONFIG_ARM_PATCH_IDIV=y
|
||||
CONFIG_ARM_PATCH_PHYS_VIRT=y
|
||||
# CONFIG_ARM_SMMU is not set
|
||||
CONFIG_ARM_THUMB=y
|
||||
CONFIG_ARM_THUMBEE=y
|
||||
CONFIG_ARM_UNWIND=y
|
||||
CONFIG_ARM_VIRT_EXT=y
|
||||
CONFIG_ATAGS=y
|
||||
CONFIG_AUTO_ZRELADDR=y
|
||||
# CONFIG_BCM84881_PHY is not set
|
||||
CONFIG_BLK_MQ_PCI=y
|
||||
CONFIG_BOUNCE=y
|
||||
# CONFIG_CACHE_L2X0 is not set
|
||||
CONFIG_CLEANCACHE=y
|
||||
CONFIG_CLKDEV_LOOKUP=y
|
||||
CONFIG_CLKSRC_MMIO=y
|
||||
CONFIG_CLONE_BACKWARDS=y
|
||||
CONFIG_CMDLINE="earlyprintk console=ttyS0,115200 rootfstype=squashfs,jffs2"
|
||||
CONFIG_CMDLINE_FROM_BOOTLOADER=y
|
||||
CONFIG_COMMON_CLK=y
|
||||
CONFIG_COMMON_CLK_MEDIATEK=y
|
||||
CONFIG_COMMON_CLK_MT2701=y
|
||||
# CONFIG_COMMON_CLK_MT2701_AUDSYS is not set
|
||||
CONFIG_COMMON_CLK_MT2701_BDPSYS=y
|
||||
CONFIG_COMMON_CLK_MT2701_ETHSYS=y
|
||||
# CONFIG_COMMON_CLK_MT2701_G3DSYS is not set
|
||||
CONFIG_COMMON_CLK_MT2701_HIFSYS=y
|
||||
CONFIG_COMMON_CLK_MT2701_IMGSYS=y
|
||||
CONFIG_COMMON_CLK_MT2701_MMSYS=y
|
||||
CONFIG_COMMON_CLK_MT2701_VDECSYS=y
|
||||
# CONFIG_COMMON_CLK_MT7622 is not set
|
||||
# CONFIG_COMMON_CLK_MT7629 is not set
|
||||
# CONFIG_COMMON_CLK_MT8135 is not set
|
||||
# CONFIG_COMMON_CLK_MT8173 is not set
|
||||
CONFIG_COREDUMP=y
|
||||
# CONFIG_CPUFREQ_DT is not set
|
||||
CONFIG_CPU_32v6K=y
|
||||
CONFIG_CPU_32v7=y
|
||||
CONFIG_CPU_ABRT_EV7=y
|
||||
# CONFIG_CPU_BPREDICT_DISABLE is not set
|
||||
CONFIG_CPU_CACHE_V7=y
|
||||
CONFIG_CPU_CACHE_VIPT=y
|
||||
CONFIG_CPU_COPY_V6=y
|
||||
CONFIG_CPU_CP15=y
|
||||
CONFIG_CPU_CP15_MMU=y
|
||||
CONFIG_CPU_FREQ=y
|
||||
CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
|
||||
CONFIG_CPU_FREQ_GOV_ATTR_SET=y
|
||||
CONFIG_CPU_FREQ_GOV_COMMON=y
|
||||
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
|
||||
CONFIG_CPU_FREQ_GOV_ONDEMAND=y
|
||||
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
|
||||
CONFIG_CPU_FREQ_GOV_POWERSAVE=y
|
||||
# CONFIG_CPU_FREQ_GOV_USERSPACE is not set
|
||||
CONFIG_CPU_FREQ_STAT=y
|
||||
CONFIG_CPU_HAS_ASID=y
|
||||
# CONFIG_CPU_HOTPLUG_STATE_CONTROL is not set
|
||||
# CONFIG_CPU_ICACHE_DISABLE is not set
|
||||
CONFIG_CPU_PABRT_V7=y
|
||||
CONFIG_CPU_PM=y
|
||||
CONFIG_CPU_RMAP=y
|
||||
CONFIG_CPU_SPECTRE=y
|
||||
# CONFIG_CPU_THERMAL is not set
|
||||
CONFIG_CPU_THUMB_CAPABLE=y
|
||||
CONFIG_CPU_TLB_V7=y
|
||||
CONFIG_CPU_V7=y
|
||||
CONFIG_CRC16=y
|
||||
# CONFIG_CRC32_SARWATE is not set
|
||||
CONFIG_CRC32_SLICEBY8=y
|
||||
CONFIG_CROSS_MEMORY_ATTACH=y
|
||||
CONFIG_CRYPTO_ACOMP2=y
|
||||
CONFIG_CRYPTO_AEAD=y
|
||||
CONFIG_CRYPTO_AEAD2=y
|
||||
CONFIG_CRYPTO_CRC32=y
|
||||
CONFIG_CRYPTO_CRC32C=y
|
||||
CONFIG_CRYPTO_CTR=y
|
||||
CONFIG_CRYPTO_DEFLATE=y
|
||||
CONFIG_CRYPTO_DEV_MEDIATEK=y
|
||||
CONFIG_CRYPTO_DRBG=y
|
||||
CONFIG_CRYPTO_DRBG_HMAC=y
|
||||
CONFIG_CRYPTO_DRBG_MENU=y
|
||||
CONFIG_CRYPTO_HASH=y
|
||||
CONFIG_CRYPTO_HASH2=y
|
||||
CONFIG_CRYPTO_HMAC=y
|
||||
CONFIG_CRYPTO_HW=y
|
||||
CONFIG_CRYPTO_JITTERENTROPY=y
|
||||
CONFIG_CRYPTO_LZO=y
|
||||
CONFIG_CRYPTO_MANAGER=y
|
||||
CONFIG_CRYPTO_MANAGER2=y
|
||||
CONFIG_CRYPTO_NULL=y
|
||||
CONFIG_CRYPTO_NULL2=y
|
||||
CONFIG_CRYPTO_RNG=y
|
||||
CONFIG_CRYPTO_RNG2=y
|
||||
CONFIG_CRYPTO_RNG_DEFAULT=y
|
||||
CONFIG_CRYPTO_SEQIV=y
|
||||
CONFIG_CRYPTO_SHA1=y
|
||||
CONFIG_CRYPTO_SHA256=y
|
||||
CONFIG_CRYPTO_SHA512=y
|
||||
CONFIG_CRYPTO_WORKQUEUE=y
|
||||
CONFIG_DCACHE_WORD_ACCESS=y
|
||||
CONFIG_DEBUG_ALIGN_RODATA=y
|
||||
CONFIG_DEBUG_BUGVERBOSE=y
|
||||
CONFIG_DEBUG_GPIO=y
|
||||
CONFIG_DEBUG_INFO=y
|
||||
CONFIG_DEBUG_LL=y
|
||||
CONFIG_DEBUG_LL_INCLUDE="debug/8250.S"
|
||||
CONFIG_DEBUG_MT6589_UART0=y
|
||||
# CONFIG_DEBUG_MT8127_UART0 is not set
|
||||
# CONFIG_DEBUG_MT8135_UART3 is not set
|
||||
CONFIG_DEBUG_PREEMPT=y
|
||||
CONFIG_DEBUG_UART_8250=y
|
||||
# CONFIG_DEBUG_UART_8250_FLOW_CONTROL is not set
|
||||
CONFIG_DEBUG_UART_8250_SHIFT=2
|
||||
# CONFIG_DEBUG_UART_8250_WORD is not set
|
||||
CONFIG_DEBUG_UART_PHYS=0x11004000
|
||||
CONFIG_DEBUG_UART_VIRT=0xf1004000
|
||||
CONFIG_DEBUG_UNCOMPRESS=y
|
||||
# CONFIG_DEBUG_USER is not set
|
||||
CONFIG_DEFAULT_MPTCP_PM="fullmesh"
|
||||
CONFIG_DMADEVICES=y
|
||||
CONFIG_DMA_ENGINE=y
|
||||
CONFIG_DMA_OF=y
|
||||
CONFIG_DTC=y
|
||||
CONFIG_EARLY_PRINTK=y
|
||||
CONFIG_EDAC_ATOMIC_SCRUB=y
|
||||
CONFIG_EDAC_SUPPORT=y
|
||||
CONFIG_EINT_MTK=y
|
||||
CONFIG_ELF_CORE=y
|
||||
CONFIG_EXT4_FS=y
|
||||
# CONFIG_F2FS_CHECK_FS is not set
|
||||
CONFIG_F2FS_FS=y
|
||||
# CONFIG_F2FS_FS_SECURITY is not set
|
||||
CONFIG_F2FS_FS_XATTR=y
|
||||
CONFIG_F2FS_STAT_FS=y
|
||||
CONFIG_FIXED_PHY=y
|
||||
CONFIG_FIX_EARLYCON_MEM=y
|
||||
CONFIG_FREEZER=y
|
||||
CONFIG_FS_IOMAP=y
|
||||
CONFIG_FS_MBCACHE=y
|
||||
CONFIG_GENERIC_ALLOCATOR=y
|
||||
CONFIG_GENERIC_BUG=y
|
||||
CONFIG_GENERIC_CLOCKEVENTS=y
|
||||
CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
|
||||
CONFIG_GENERIC_CPU_AUTOPROBE=y
|
||||
CONFIG_GENERIC_EARLY_IOREMAP=y
|
||||
CONFIG_GENERIC_IDLE_POLL_SETUP=y
|
||||
CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK=y
|
||||
CONFIG_GENERIC_IRQ_MIGRATION=y
|
||||
CONFIG_GENERIC_IRQ_MULTI_HANDLER=y
|
||||
CONFIG_GENERIC_IRQ_SHOW=y
|
||||
CONFIG_GENERIC_IRQ_SHOW_LEVEL=y
|
||||
CONFIG_GENERIC_MSI_IRQ=y
|
||||
CONFIG_GENERIC_MSI_IRQ_DOMAIN=y
|
||||
CONFIG_GENERIC_PCI_IOMAP=y
|
||||
CONFIG_GENERIC_PHY=y
|
||||
CONFIG_GENERIC_PINCONF=y
|
||||
CONFIG_GENERIC_PINCTRL_GROUPS=y
|
||||
CONFIG_GENERIC_PINMUX_FUNCTIONS=y
|
||||
CONFIG_GENERIC_SCHED_CLOCK=y
|
||||
CONFIG_GENERIC_SMP_IDLE_THREAD=y
|
||||
CONFIG_GENERIC_STRNCPY_FROM_USER=y
|
||||
CONFIG_GENERIC_STRNLEN_USER=y
|
||||
CONFIG_GPIOLIB=y
|
||||
CONFIG_GPIO_SYSFS=y
|
||||
# CONFIG_GPS is not set
|
||||
CONFIG_HANDLE_DOMAIN_IRQ=y
|
||||
CONFIG_HARDEN_BRANCH_PREDICTOR=y
|
||||
CONFIG_HARDIRQS_SW_RESEND=y
|
||||
CONFIG_HAS_DMA=y
|
||||
CONFIG_HAS_IOMEM=y
|
||||
CONFIG_HAS_IOPORT_MAP=y
|
||||
CONFIG_HAVE_ARCH_AUDITSYSCALL=y
|
||||
CONFIG_HAVE_ARCH_BITREVERSE=y
|
||||
CONFIG_HAVE_ARCH_JUMP_LABEL=y
|
||||
CONFIG_HAVE_ARCH_KGDB=y
|
||||
CONFIG_HAVE_ARCH_PFN_VALID=y
|
||||
CONFIG_HAVE_ARCH_SECCOMP_FILTER=y
|
||||
CONFIG_HAVE_ARCH_THREAD_STRUCT_WHITELIST=y
|
||||
CONFIG_HAVE_ARCH_TRACEHOOK=y
|
||||
CONFIG_HAVE_ARM_ARCH_TIMER=y
|
||||
CONFIG_HAVE_ARM_SMCCC=y
|
||||
CONFIG_HAVE_CLK=y
|
||||
CONFIG_HAVE_CLK_PREPARE=y
|
||||
CONFIG_HAVE_CONTEXT_TRACKING=y
|
||||
CONFIG_HAVE_C_RECORDMCOUNT=y
|
||||
CONFIG_HAVE_DEBUG_KMEMLEAK=y
|
||||
CONFIG_HAVE_DMA_CONTIGUOUS=y
|
||||
CONFIG_HAVE_DYNAMIC_FTRACE=y
|
||||
CONFIG_HAVE_DYNAMIC_FTRACE_WITH_REGS=y
|
||||
CONFIG_HAVE_EBPF_JIT=y
|
||||
CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
|
||||
CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
|
||||
CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
|
||||
CONFIG_HAVE_FUNCTION_TRACER=y
|
||||
CONFIG_HAVE_GENERIC_DMA_COHERENT=y
|
||||
CONFIG_HAVE_IDE=y
|
||||
CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y
|
||||
CONFIG_HAVE_LD_DEAD_CODE_DATA_ELIMINATION=y
|
||||
CONFIG_HAVE_MEMBLOCK=y
|
||||
CONFIG_HAVE_MOD_ARCH_SPECIFIC=y
|
||||
CONFIG_HAVE_NET_DSA=y
|
||||
CONFIG_HAVE_OPROFILE=y
|
||||
CONFIG_HAVE_OPTPROBES=y
|
||||
CONFIG_HAVE_PERF_EVENTS=y
|
||||
CONFIG_HAVE_PERF_REGS=y
|
||||
CONFIG_HAVE_PERF_USER_STACK_DUMP=y
|
||||
CONFIG_HAVE_PROC_CPU=y
|
||||
CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
|
||||
CONFIG_HAVE_RSEQ=y
|
||||
CONFIG_HAVE_SMP=y
|
||||
CONFIG_HAVE_SYSCALL_TRACEPOINTS=y
|
||||
CONFIG_HAVE_UID16=y
|
||||
CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y
|
||||
CONFIG_HIGHMEM=y
|
||||
# CONFIG_HIGHPTE is not set
|
||||
CONFIG_HOTPLUG_CPU=y
|
||||
CONFIG_HWMON=y
|
||||
CONFIG_HW_RANDOM=y
|
||||
CONFIG_HW_RANDOM_MTK=y
|
||||
CONFIG_HZ_FIXED=0
|
||||
CONFIG_I2C=y
|
||||
CONFIG_I2C_BOARDINFO=y
|
||||
CONFIG_I2C_CHARDEV=y
|
||||
CONFIG_I2C_MT65XX=y
|
||||
CONFIG_ICPLUS_PHY=y
|
||||
CONFIG_IIO=y
|
||||
# CONFIG_IIO_BUFFER is not set
|
||||
# CONFIG_IIO_TRIGGER is not set
|
||||
CONFIG_INITRAMFS_SOURCE=""
|
||||
# CONFIG_IOMMU_DEBUGFS is not set
|
||||
# CONFIG_IOMMU_IO_PGTABLE_ARMV7S is not set
|
||||
# CONFIG_IOMMU_IO_PGTABLE_LPAE is not set
|
||||
CONFIG_IOMMU_SUPPORT=y
|
||||
CONFIG_IRQCHIP=y
|
||||
CONFIG_IRQ_DOMAIN=y
|
||||
CONFIG_IRQ_DOMAIN_HIERARCHY=y
|
||||
CONFIG_IRQ_FORCED_THREADING=y
|
||||
CONFIG_IRQ_WORK=y
|
||||
CONFIG_JBD2=y
|
||||
CONFIG_KALLSYMS=y
|
||||
CONFIG_LEDS_MT6323=y
|
||||
CONFIG_LIBFDT=y
|
||||
CONFIG_LOCK_DEBUGGING_SUPPORT=y
|
||||
CONFIG_LOCK_SPIN_ON_OWNER=y
|
||||
CONFIG_LZ4_DECOMPRESS=y
|
||||
CONFIG_LZO_COMPRESS=y
|
||||
CONFIG_LZO_DECOMPRESS=y
|
||||
# CONFIG_MACH_MT2701 is not set
|
||||
# CONFIG_MACH_MT6589 is not set
|
||||
# CONFIG_MACH_MT6592 is not set
|
||||
CONFIG_MACH_MT7623=y
|
||||
# CONFIG_MACH_MT7629 is not set
|
||||
# CONFIG_MACH_MT8127 is not set
|
||||
# CONFIG_MACH_MT8135 is not set
|
||||
CONFIG_MAGIC_SYSRQ=y
|
||||
CONFIG_MDIO_BITBANG=y
|
||||
CONFIG_MDIO_BUS=y
|
||||
CONFIG_MDIO_DEVICE=y
|
||||
CONFIG_MDIO_GPIO=y
|
||||
CONFIG_MEDIATEK_MT6577_AUXADC=y
|
||||
CONFIG_MEDIATEK_WATCHDOG=y
|
||||
CONFIG_MEMFD_CREATE=y
|
||||
CONFIG_MFD_CORE=y
|
||||
CONFIG_MFD_MT6397=y
|
||||
CONFIG_MFD_SYSCON=y
|
||||
CONFIG_MIGHT_HAVE_CACHE_L2X0=y
|
||||
CONFIG_MIGHT_HAVE_PCI=y
|
||||
CONFIG_MIGRATION=y
|
||||
CONFIG_MMC=y
|
||||
CONFIG_MMC_BLOCK=y
|
||||
CONFIG_MMC_MTK=y
|
||||
CONFIG_MMC_SDHCI=y
|
||||
# CONFIG_MMC_SDHCI_PCI is not set
|
||||
CONFIG_MMC_SDHCI_PLTFM=y
|
||||
# CONFIG_MMC_TIFM_SD is not set
|
||||
CONFIG_MODULES_USE_ELF_REL=y
|
||||
# CONFIG_MT753X_GSW is not set
|
||||
CONFIG_MTD_BLOCK2MTD=y
|
||||
CONFIG_MTD_CMDLINE_PARTS=y
|
||||
CONFIG_MTD_M25P80=y
|
||||
CONFIG_MTD_MT81xx_NOR=y
|
||||
CONFIG_MTD_NAND=y
|
||||
CONFIG_MTD_NAND_ECC=y
|
||||
CONFIG_MTD_NAND_MTK=y
|
||||
CONFIG_MTD_SPI_NOR=y
|
||||
CONFIG_MTD_SPLIT_FIRMWARE=y
|
||||
CONFIG_MTD_SPLIT_UIMAGE_FW=y
|
||||
CONFIG_MTD_UBI=y
|
||||
CONFIG_MTD_UBI_BEB_LIMIT=20
|
||||
CONFIG_MTD_UBI_BLOCK=y
|
||||
# CONFIG_MTD_UBI_FASTMAP is not set
|
||||
# CONFIG_MTD_UBI_GLUEBI is not set
|
||||
CONFIG_MTD_UBI_WL_THRESHOLD=4096
|
||||
# CONFIG_MTK_BTIF is not set
|
||||
# CONFIG_MTK_COMBO is not set
|
||||
# CONFIG_MTK_CONN_LTE_IDC_SUPPORT is not set
|
||||
# CONFIG_MTK_DHCPV6C_WIFI is not set
|
||||
CONFIG_MTK_EFUSE=y
|
||||
# CONFIG_MTK_GPS_SUPPORT is not set
|
||||
# CONFIG_MTK_HSDMA is not set
|
||||
CONFIG_MTK_INFRACFG=y
|
||||
# CONFIG_MTK_IOMMU is not set
|
||||
# CONFIG_MTK_IOMMU_V1 is not set
|
||||
CONFIG_MTK_PLATFORM=""
|
||||
CONFIG_MTK_PMIC_WRAP=y
|
||||
CONFIG_MTK_SCPSYS=y
|
||||
CONFIG_MTK_THERMAL=y
|
||||
CONFIG_MTK_TIMER=y
|
||||
CONFIG_MUTEX_SPIN_ON_OWNER=y
|
||||
CONFIG_NEED_DMA_MAP_STATE=y
|
||||
CONFIG_NEON=y
|
||||
CONFIG_NET_DSA=y
|
||||
CONFIG_NET_DSA_MT7530=y
|
||||
CONFIG_NET_DSA_TAG_MTK=y
|
||||
CONFIG_NET_FLOW_LIMIT=y
|
||||
CONFIG_NET_MEDIATEK_SOC=y
|
||||
CONFIG_NET_SWITCHDEV=y
|
||||
# CONFIG_NET_VENDOR_AURORA is not set
|
||||
CONFIG_NET_VENDOR_MEDIATEK=y
|
||||
# CONFIG_NET_VENDOR_WIZNET is not set
|
||||
CONFIG_NLS=y
|
||||
CONFIG_NO_BOOTMEM=y
|
||||
CONFIG_NO_HZ=y
|
||||
CONFIG_NO_HZ_COMMON=y
|
||||
CONFIG_NO_HZ_IDLE=y
|
||||
CONFIG_NR_CPUS=4
|
||||
CONFIG_NVMEM=y
|
||||
CONFIG_OF=y
|
||||
CONFIG_OF_ADDRESS=y
|
||||
CONFIG_OF_EARLY_FLATTREE=y
|
||||
CONFIG_OF_FLATTREE=y
|
||||
CONFIG_OF_GPIO=y
|
||||
CONFIG_OF_IRQ=y
|
||||
CONFIG_OF_KOBJ=y
|
||||
CONFIG_OF_MDIO=y
|
||||
CONFIG_OF_NET=y
|
||||
CONFIG_OF_RESERVED_MEM=y
|
||||
CONFIG_OLD_SIGACTION=y
|
||||
CONFIG_OLD_SIGSUSPEND3=y
|
||||
CONFIG_PADATA=y
|
||||
CONFIG_PAGE_OFFSET=0xC0000000
|
||||
CONFIG_PCI=y
|
||||
CONFIG_PCIEAER=y
|
||||
CONFIG_PCIEPORTBUS=y
|
||||
CONFIG_PCIE_MEDIATEK=y
|
||||
CONFIG_PCIE_PME=y
|
||||
CONFIG_PCI_DOMAINS=y
|
||||
CONFIG_PCI_DOMAINS_GENERIC=y
|
||||
CONFIG_PCI_MSI=y
|
||||
CONFIG_PCI_MSI_IRQ_DOMAIN=y
|
||||
# CONFIG_PCI_V3_SEMI is not set
|
||||
CONFIG_PERF_USE_VMALLOC=y
|
||||
CONFIG_PGTABLE_LEVELS=2
|
||||
CONFIG_PHYLIB=y
|
||||
CONFIG_PHYLINK=y
|
||||
CONFIG_PHY_MTK_TPHY=y
|
||||
# CONFIG_PHY_MTK_XSPHY is not set
|
||||
CONFIG_PINCTRL=y
|
||||
CONFIG_PINCTRL_MT2701=y
|
||||
CONFIG_PINCTRL_MT6397=y
|
||||
CONFIG_PINCTRL_MT7623=y
|
||||
CONFIG_PINCTRL_MTK=y
|
||||
CONFIG_PINCTRL_MTK_MOORE=y
|
||||
CONFIG_PLUGIN_HOSTCC="g++"
|
||||
CONFIG_PM=y
|
||||
CONFIG_PM_CLK=y
|
||||
# CONFIG_PM_DEBUG is not set
|
||||
CONFIG_PM_GENERIC_DOMAINS=y
|
||||
CONFIG_PM_GENERIC_DOMAINS_OF=y
|
||||
CONFIG_PM_GENERIC_DOMAINS_SLEEP=y
|
||||
CONFIG_PM_OPP=y
|
||||
CONFIG_PM_SLEEP=y
|
||||
CONFIG_PM_SLEEP_SMP=y
|
||||
CONFIG_POWER_RESET=y
|
||||
CONFIG_POWER_SUPPLY=y
|
||||
CONFIG_PREEMPT=y
|
||||
CONFIG_PREEMPT_COUNT=y
|
||||
# CONFIG_PREEMPT_NONE is not set
|
||||
CONFIG_PREEMPT_RCU=y
|
||||
CONFIG_PRINTK_TIME=y
|
||||
CONFIG_PWM=y
|
||||
CONFIG_PWM_MEDIATEK=y
|
||||
# CONFIG_PWM_MTK_DISP is not set
|
||||
CONFIG_PWM_SYSFS=y
|
||||
CONFIG_RAS=y
|
||||
CONFIG_RATIONAL=y
|
||||
CONFIG_RCU_CPU_STALL_TIMEOUT=21
|
||||
# CONFIG_RCU_EXPERT is not set
|
||||
CONFIG_RCU_NEED_SEGCBLIST=y
|
||||
CONFIG_RCU_STALL_COMMON=y
|
||||
CONFIG_REFCOUNT_FULL=y
|
||||
CONFIG_REGMAP=y
|
||||
CONFIG_REGMAP_I2C=y
|
||||
CONFIG_REGMAP_MMIO=y
|
||||
CONFIG_REGMAP_SPI=y
|
||||
CONFIG_REGULATOR=y
|
||||
CONFIG_REGULATOR_FIXED_VOLTAGE=y
|
||||
CONFIG_REGULATOR_GPIO=y
|
||||
CONFIG_REGULATOR_MT6323=y
|
||||
# CONFIG_REGULATOR_MT6380 is not set
|
||||
# CONFIG_REGULATOR_MT6397 is not set
|
||||
# CONFIG_REGULATOR_QCOM_SPMI is not set
|
||||
CONFIG_RESET_CONTROLLER=y
|
||||
CONFIG_RFS_ACCEL=y
|
||||
CONFIG_RPS=y
|
||||
CONFIG_RTC_CLASS=y
|
||||
# CONFIG_RTC_DRV_CMOS is not set
|
||||
# CONFIG_RTC_DRV_MT6397 is not set
|
||||
# CONFIG_RTC_DRV_MT7622 is not set
|
||||
CONFIG_RTC_I2C_AND_SPI=y
|
||||
CONFIG_RWSEM_SPIN_ON_OWNER=y
|
||||
CONFIG_RWSEM_XCHGADD_ALGORITHM=y
|
||||
# CONFIG_SERIAL_8250_DMA is not set
|
||||
CONFIG_SERIAL_8250_FSL=y
|
||||
CONFIG_SERIAL_8250_MT6577=y
|
||||
CONFIG_SERIAL_8250_NR_UARTS=4
|
||||
CONFIG_SERIAL_8250_RUNTIME_UARTS=4
|
||||
# CONFIG_SFP is not set
|
||||
CONFIG_SGL_ALLOC=y
|
||||
CONFIG_SMP=y
|
||||
# CONFIG_SMP_ON_UP is not set
|
||||
CONFIG_SPARSE_IRQ=y
|
||||
CONFIG_SPI=y
|
||||
CONFIG_SPI_BITBANG=y
|
||||
CONFIG_SPI_MASTER=y
|
||||
CONFIG_SPI_MEM=y
|
||||
CONFIG_SPI_MT65XX=y
|
||||
# CONFIG_SPI_MTK_SNFI is not set
|
||||
CONFIG_SPMI=y
|
||||
CONFIG_SRCU=y
|
||||
CONFIG_STREAM_PARSER=y
|
||||
# CONFIG_STRIP_ASM_SYMS is not set
|
||||
CONFIG_SUSPEND=y
|
||||
CONFIG_SUSPEND_FREEZER=y
|
||||
CONFIG_SWCONFIG=y
|
||||
CONFIG_SWPHY=y
|
||||
CONFIG_SWP_EMULATE=y
|
||||
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
|
||||
CONFIG_TASKS_RCU=y
|
||||
# CONFIG_TCP_CONG_NANQINLANG is not set
|
||||
CONFIG_THERMAL=y
|
||||
CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y
|
||||
CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0
|
||||
CONFIG_THERMAL_GOV_STEP_WISE=y
|
||||
CONFIG_THERMAL_OF=y
|
||||
# CONFIG_THUMB2_KERNEL is not set
|
||||
CONFIG_TICK_CPU_ACCOUNTING=y
|
||||
CONFIG_TIMER_OF=y
|
||||
CONFIG_TIMER_PROBE=y
|
||||
CONFIG_TREE_SRCU=y
|
||||
CONFIG_UBIFS_FS=y
|
||||
# CONFIG_UBIFS_FS_ADVANCED_COMPR is not set
|
||||
CONFIG_UBIFS_FS_LZO=y
|
||||
CONFIG_UBIFS_FS_ZLIB=y
|
||||
CONFIG_UEVENT_HELPER_PATH=""
|
||||
CONFIG_UNCOMPRESS_INCLUDE="debug/uncompress.h"
|
||||
CONFIG_UNINLINE_SPIN_UNLOCK=y
|
||||
CONFIG_USB=y
|
||||
CONFIG_USB_COMMON=y
|
||||
# CONFIG_USB_EHCI_HCD is not set
|
||||
CONFIG_USB_SUPPORT=y
|
||||
CONFIG_USB_XHCI_HCD=y
|
||||
CONFIG_USB_XHCI_MTK=y
|
||||
CONFIG_USB_XHCI_PLATFORM=y
|
||||
CONFIG_USE_OF=y
|
||||
CONFIG_VFP=y
|
||||
CONFIG_VFPv3=y
|
||||
CONFIG_VM_EVENT_COUNTERS=y
|
||||
CONFIG_WATCHDOG_CORE=y
|
||||
CONFIG_XPS=y
|
||||
CONFIG_XZ_DEC_ARM=y
|
||||
CONFIG_XZ_DEC_BCJ=y
|
||||
CONFIG_ZBOOT_ROM_BSS=0
|
||||
CONFIG_ZBOOT_ROM_TEXT=0
|
||||
CONFIG_ZLIB_DEFLATE=y
|
||||
CONFIG_ZLIB_INFLATE=y
|
561
root/target/linux/mediatek/mt7623/config-5.4
Executable file
561
root/target/linux/mediatek/mt7623/config-5.4
Executable file
|
@ -0,0 +1,561 @@
|
|||
# CONFIG_AIO is not set
|
||||
CONFIG_ALIGNMENT_TRAP=y
|
||||
CONFIG_ARCH_32BIT_OFF_T=y
|
||||
CONFIG_ARCH_CLOCKSOURCE_DATA=y
|
||||
CONFIG_ARCH_HAS_BINFMT_FLAT=y
|
||||
CONFIG_ARCH_HAS_DEBUG_VIRTUAL=y
|
||||
CONFIG_ARCH_HAS_ELF_RANDOMIZE=y
|
||||
CONFIG_ARCH_HAS_FORTIFY_SOURCE=y
|
||||
CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y
|
||||
CONFIG_ARCH_HAS_KCOV=y
|
||||
CONFIG_ARCH_HAS_KEEPINITRD=y
|
||||
CONFIG_ARCH_HAS_MEMBARRIER_SYNC_CORE=y
|
||||
CONFIG_ARCH_HAS_PHYS_TO_DMA=y
|
||||
CONFIG_ARCH_HAS_SETUP_DMA_OPS=y
|
||||
CONFIG_ARCH_HAS_SET_MEMORY=y
|
||||
CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y
|
||||
CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y
|
||||
CONFIG_ARCH_HAS_TEARDOWN_DMA_OPS=y
|
||||
CONFIG_ARCH_HAS_TICK_BROADCAST=y
|
||||
CONFIG_ARCH_HAVE_CUSTOM_GPIO_H=y
|
||||
CONFIG_ARCH_HIBERNATION_POSSIBLE=y
|
||||
CONFIG_ARCH_KEEP_MEMBLOCK=y
|
||||
CONFIG_ARCH_MEDIATEK=y
|
||||
CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y
|
||||
# CONFIG_ARCH_MILBEAUT is not set
|
||||
CONFIG_ARCH_MULTIPLATFORM=y
|
||||
CONFIG_ARCH_MULTI_V6_V7=y
|
||||
CONFIG_ARCH_MULTI_V7=y
|
||||
CONFIG_ARCH_NR_GPIO=0
|
||||
CONFIG_ARCH_OPTIONAL_KERNEL_RWX=y
|
||||
CONFIG_ARCH_OPTIONAL_KERNEL_RWX_DEFAULT=y
|
||||
# CONFIG_ARCH_RDA is not set
|
||||
CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y
|
||||
CONFIG_ARCH_SUPPORTS_UPROBES=y
|
||||
CONFIG_ARCH_SUSPEND_POSSIBLE=y
|
||||
CONFIG_ARCH_USE_BUILTIN_BSWAP=y
|
||||
CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y
|
||||
CONFIG_ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT=y
|
||||
CONFIG_ARCH_WANT_GENERAL_HUGETLB=y
|
||||
CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y
|
||||
CONFIG_ARM=y
|
||||
CONFIG_ARM_APPENDED_DTB=y
|
||||
CONFIG_ARM_ARCH_TIMER=y
|
||||
CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y
|
||||
# CONFIG_ARM_ATAG_DTB_COMPAT is not set
|
||||
CONFIG_ARM_CPU_SUSPEND=y
|
||||
# CONFIG_ARM_CPU_TOPOLOGY is not set
|
||||
# CONFIG_ARM_ERRATA_814220 is not set
|
||||
# CONFIG_ARM_ERRATA_857271 is not set
|
||||
# CONFIG_ARM_ERRATA_857272 is not set
|
||||
CONFIG_ARM_GIC=y
|
||||
CONFIG_ARM_HAS_SG_CHAIN=y
|
||||
CONFIG_ARM_L1_CACHE_SHIFT=6
|
||||
CONFIG_ARM_L1_CACHE_SHIFT_6=y
|
||||
# CONFIG_ARM_LPAE is not set
|
||||
CONFIG_ARM_MEDIATEK_CPUFREQ=y
|
||||
CONFIG_ARM_PATCH_IDIV=y
|
||||
CONFIG_ARM_PATCH_PHYS_VIRT=y
|
||||
# CONFIG_ARM_SMMU is not set
|
||||
CONFIG_ARM_THUMB=y
|
||||
CONFIG_ARM_THUMBEE=y
|
||||
CONFIG_ARM_UNWIND=y
|
||||
CONFIG_ARM_VIRT_EXT=y
|
||||
CONFIG_ATAGS=y
|
||||
CONFIG_AUTO_ZRELADDR=y
|
||||
# CONFIG_BACKLIGHT_CLASS_DEVICE is not set
|
||||
CONFIG_BINFMT_FLAT_ARGVP_ENVP_ON_STACK=y
|
||||
CONFIG_BLK_DEV_LOOP=y
|
||||
CONFIG_BLK_MQ_PCI=y
|
||||
CONFIG_BLK_PM=y
|
||||
CONFIG_BOUNCE=y
|
||||
# CONFIG_CACHE_L2X0 is not set
|
||||
CONFIG_CC_CAN_LINK=y
|
||||
CONFIG_CC_HAS_ASM_INLINE=y
|
||||
CONFIG_CC_HAS_KASAN_GENERIC=y
|
||||
CONFIG_CC_HAS_WARN_MAYBE_UNINITIALIZED=y
|
||||
CONFIG_CLEANCACHE=y
|
||||
CONFIG_CLKDEV_LOOKUP=y
|
||||
CONFIG_CLKSRC_MMIO=y
|
||||
CONFIG_CLONE_BACKWARDS=y
|
||||
CONFIG_CMDLINE="earlyprintk console=ttyS0,115200 rootfstype=squashfs,jffs2"
|
||||
CONFIG_CMDLINE_FROM_BOOTLOADER=y
|
||||
CONFIG_COMMON_CLK=y
|
||||
CONFIG_COMMON_CLK_MEDIATEK=y
|
||||
CONFIG_COMMON_CLK_MT2701=y
|
||||
# CONFIG_COMMON_CLK_MT2701_AUDSYS is not set
|
||||
CONFIG_COMMON_CLK_MT2701_BDPSYS=y
|
||||
CONFIG_COMMON_CLK_MT2701_ETHSYS=y
|
||||
# CONFIG_COMMON_CLK_MT2701_G3DSYS is not set
|
||||
CONFIG_COMMON_CLK_MT2701_HIFSYS=y
|
||||
CONFIG_COMMON_CLK_MT2701_IMGSYS=y
|
||||
CONFIG_COMMON_CLK_MT2701_MMSYS=y
|
||||
CONFIG_COMMON_CLK_MT2701_VDECSYS=y
|
||||
# CONFIG_COMMON_CLK_MT7622 is not set
|
||||
# CONFIG_COMMON_CLK_MT7629 is not set
|
||||
# CONFIG_COMMON_CLK_MT8135 is not set
|
||||
# CONFIG_COMMON_CLK_MT8173 is not set
|
||||
CONFIG_COMMON_CLK_MT8516=y
|
||||
# CONFIG_COMMON_CLK_MT8516_AUDSYS is not set
|
||||
CONFIG_COMPAT_32BIT_TIME=y
|
||||
CONFIG_COREDUMP=y
|
||||
# CONFIG_CPUFREQ_DT is not set
|
||||
CONFIG_CPU_32v6K=y
|
||||
CONFIG_CPU_32v7=y
|
||||
CONFIG_CPU_ABRT_EV7=y
|
||||
# CONFIG_CPU_BPREDICT_DISABLE is not set
|
||||
CONFIG_CPU_CACHE_V7=y
|
||||
CONFIG_CPU_CACHE_VIPT=y
|
||||
CONFIG_CPU_COPY_V6=y
|
||||
CONFIG_CPU_CP15=y
|
||||
CONFIG_CPU_CP15_MMU=y
|
||||
CONFIG_CPU_FREQ=y
|
||||
CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
|
||||
CONFIG_CPU_FREQ_GOV_ATTR_SET=y
|
||||
CONFIG_CPU_FREQ_GOV_COMMON=y
|
||||
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
|
||||
CONFIG_CPU_FREQ_GOV_ONDEMAND=y
|
||||
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
|
||||
CONFIG_CPU_FREQ_GOV_POWERSAVE=y
|
||||
# CONFIG_CPU_FREQ_GOV_USERSPACE is not set
|
||||
CONFIG_CPU_FREQ_STAT=y
|
||||
CONFIG_CPU_HAS_ASID=y
|
||||
# CONFIG_CPU_HOTPLUG_STATE_CONTROL is not set
|
||||
# CONFIG_CPU_ICACHE_DISABLE is not set
|
||||
# CONFIG_CPU_ICACHE_MISMATCH_WORKAROUND is not set
|
||||
CONFIG_CPU_PABRT_V7=y
|
||||
CONFIG_CPU_PM=y
|
||||
CONFIG_CPU_RMAP=y
|
||||
CONFIG_CPU_SPECTRE=y
|
||||
# CONFIG_CPU_THERMAL is not set
|
||||
CONFIG_CPU_THUMB_CAPABLE=y
|
||||
CONFIG_CPU_TLB_V7=y
|
||||
CONFIG_CPU_V7=y
|
||||
CONFIG_CRC16=y
|
||||
# CONFIG_CRC32_SARWATE is not set
|
||||
CONFIG_CRC32_SLICEBY8=y
|
||||
CONFIG_CROSS_MEMORY_ATTACH=y
|
||||
CONFIG_CRYPTO_ACOMP2=y
|
||||
CONFIG_CRYPTO_AEAD=y
|
||||
CONFIG_CRYPTO_AEAD2=y
|
||||
CONFIG_CRYPTO_AKCIPHER2=y
|
||||
CONFIG_CRYPTO_CRC32=y
|
||||
CONFIG_CRYPTO_CRC32C=y
|
||||
CONFIG_CRYPTO_CTR=y
|
||||
CONFIG_CRYPTO_DEFLATE=y
|
||||
CONFIG_CRYPTO_DEV_MEDIATEK=y
|
||||
CONFIG_CRYPTO_DRBG=y
|
||||
CONFIG_CRYPTO_DRBG_HMAC=y
|
||||
CONFIG_CRYPTO_DRBG_MENU=y
|
||||
CONFIG_CRYPTO_HASH=y
|
||||
CONFIG_CRYPTO_HASH2=y
|
||||
CONFIG_CRYPTO_HASH_INFO=y
|
||||
CONFIG_CRYPTO_HMAC=y
|
||||
CONFIG_CRYPTO_HW=y
|
||||
CONFIG_CRYPTO_JITTERENTROPY=y
|
||||
CONFIG_CRYPTO_KPP2=y
|
||||
CONFIG_CRYPTO_LIB_AES=y
|
||||
CONFIG_CRYPTO_LIB_SHA256=y
|
||||
CONFIG_CRYPTO_LZO=y
|
||||
CONFIG_CRYPTO_MANAGER=y
|
||||
CONFIG_CRYPTO_MANAGER2=y
|
||||
CONFIG_CRYPTO_NULL=y
|
||||
CONFIG_CRYPTO_NULL2=y
|
||||
CONFIG_CRYPTO_RNG=y
|
||||
CONFIG_CRYPTO_RNG2=y
|
||||
CONFIG_CRYPTO_RNG_DEFAULT=y
|
||||
CONFIG_CRYPTO_SEQIV=y
|
||||
CONFIG_CRYPTO_SHA1=y
|
||||
CONFIG_CRYPTO_SHA256=y
|
||||
CONFIG_CRYPTO_SHA512=y
|
||||
CONFIG_CRYPTO_ZSTD=y
|
||||
CONFIG_DCACHE_WORD_ACCESS=y
|
||||
CONFIG_DEBUG_ALIGN_RODATA=y
|
||||
CONFIG_DEBUG_BUGVERBOSE=y
|
||||
CONFIG_DEBUG_GPIO=y
|
||||
CONFIG_DEBUG_INFO=y
|
||||
CONFIG_DEBUG_LL=y
|
||||
CONFIG_DEBUG_LL_INCLUDE="debug/8250.S"
|
||||
CONFIG_DEBUG_MISC=y
|
||||
CONFIG_DEBUG_MT6589_UART0=y
|
||||
# CONFIG_DEBUG_MT8127_UART0 is not set
|
||||
# CONFIG_DEBUG_MT8135_UART3 is not set
|
||||
CONFIG_DEBUG_PREEMPT=y
|
||||
CONFIG_DEBUG_UART_8250=y
|
||||
# CONFIG_DEBUG_UART_8250_FLOW_CONTROL is not set
|
||||
CONFIG_DEBUG_UART_8250_SHIFT=2
|
||||
# CONFIG_DEBUG_UART_8250_WORD is not set
|
||||
CONFIG_DEBUG_UART_PHYS=0x11004000
|
||||
CONFIG_DEBUG_UART_VIRT=0xf1004000
|
||||
CONFIG_DEBUG_UNCOMPRESS=y
|
||||
# CONFIG_DEBUG_USER is not set
|
||||
CONFIG_DMADEVICES=y
|
||||
CONFIG_DMA_ENGINE=y
|
||||
CONFIG_DMA_OF=y
|
||||
CONFIG_DMA_REMAP=y
|
||||
CONFIG_DTC=y
|
||||
CONFIG_EARLY_PRINTK=y
|
||||
CONFIG_EDAC_ATOMIC_SCRUB=y
|
||||
CONFIG_EDAC_SUPPORT=y
|
||||
CONFIG_EINT_MTK=y
|
||||
CONFIG_ELF_CORE=y
|
||||
# CONFIG_ENERGY_MODEL is not set
|
||||
CONFIG_EXT4_FS=y
|
||||
# CONFIG_F2FS_CHECK_FS is not set
|
||||
CONFIG_F2FS_FS=y
|
||||
# CONFIG_F2FS_FS_SECURITY is not set
|
||||
CONFIG_F2FS_FS_XATTR=y
|
||||
CONFIG_F2FS_STAT_FS=y
|
||||
CONFIG_FIXED_PHY=y
|
||||
CONFIG_FIX_EARLYCON_MEM=y
|
||||
CONFIG_FREEZER=y
|
||||
# CONFIG_FSL_QDMA is not set
|
||||
CONFIG_FS_IOMAP=y
|
||||
CONFIG_FS_MBCACHE=y
|
||||
CONFIG_FW_LOADER_PAGED_BUF=y
|
||||
CONFIG_GENERIC_ALLOCATOR=y
|
||||
CONFIG_GENERIC_BUG=y
|
||||
CONFIG_GENERIC_CLOCKEVENTS=y
|
||||
CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
|
||||
CONFIG_GENERIC_CPU_AUTOPROBE=y
|
||||
CONFIG_GENERIC_EARLY_IOREMAP=y
|
||||
CONFIG_GENERIC_IDLE_POLL_SETUP=y
|
||||
CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK=y
|
||||
CONFIG_GENERIC_IRQ_MIGRATION=y
|
||||
CONFIG_GENERIC_IRQ_MULTI_HANDLER=y
|
||||
CONFIG_GENERIC_IRQ_SHOW=y
|
||||
CONFIG_GENERIC_IRQ_SHOW_LEVEL=y
|
||||
CONFIG_GENERIC_MSI_IRQ=y
|
||||
CONFIG_GENERIC_MSI_IRQ_DOMAIN=y
|
||||
CONFIG_GENERIC_PCI_IOMAP=y
|
||||
CONFIG_GENERIC_PHY=y
|
||||
CONFIG_GENERIC_PINCONF=y
|
||||
CONFIG_GENERIC_PINCTRL_GROUPS=y
|
||||
CONFIG_GENERIC_PINMUX_FUNCTIONS=y
|
||||
CONFIG_GENERIC_SCHED_CLOCK=y
|
||||
CONFIG_GENERIC_SMP_IDLE_THREAD=y
|
||||
CONFIG_GENERIC_STRNCPY_FROM_USER=y
|
||||
CONFIG_GENERIC_STRNLEN_USER=y
|
||||
CONFIG_GPIOLIB=y
|
||||
CONFIG_GPIO_SYSFS=y
|
||||
# CONFIG_HABANA_AI is not set
|
||||
CONFIG_HANDLE_DOMAIN_IRQ=y
|
||||
CONFIG_HARDEN_BRANCH_PREDICTOR=y
|
||||
CONFIG_HARDIRQS_SW_RESEND=y
|
||||
CONFIG_HAS_DMA=y
|
||||
CONFIG_HAS_IOMEM=y
|
||||
CONFIG_HAS_IOPORT_MAP=y
|
||||
CONFIG_HAVE_ARCH_AUDITSYSCALL=y
|
||||
CONFIG_HAVE_ARCH_BITREVERSE=y
|
||||
CONFIG_HAVE_ARCH_JUMP_LABEL=y
|
||||
CONFIG_HAVE_ARCH_KGDB=y
|
||||
CONFIG_HAVE_ARCH_PFN_VALID=y
|
||||
CONFIG_HAVE_ARCH_SECCOMP_FILTER=y
|
||||
CONFIG_HAVE_ARCH_THREAD_STRUCT_WHITELIST=y
|
||||
CONFIG_HAVE_ARCH_TRACEHOOK=y
|
||||
CONFIG_HAVE_ARM_ARCH_TIMER=y
|
||||
CONFIG_HAVE_ARM_SMCCC=y
|
||||
CONFIG_HAVE_CLK=y
|
||||
CONFIG_HAVE_CLK_PREPARE=y
|
||||
CONFIG_HAVE_CONTEXT_TRACKING=y
|
||||
CONFIG_HAVE_COPY_THREAD_TLS=y
|
||||
CONFIG_HAVE_C_RECORDMCOUNT=y
|
||||
CONFIG_HAVE_DEBUG_KMEMLEAK=y
|
||||
CONFIG_HAVE_DMA_CONTIGUOUS=y
|
||||
CONFIG_HAVE_DYNAMIC_FTRACE=y
|
||||
CONFIG_HAVE_DYNAMIC_FTRACE_WITH_REGS=y
|
||||
CONFIG_HAVE_EBPF_JIT=y
|
||||
CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
|
||||
CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
|
||||
CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
|
||||
CONFIG_HAVE_FUNCTION_TRACER=y
|
||||
CONFIG_HAVE_IDE=y
|
||||
CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y
|
||||
CONFIG_HAVE_LD_DEAD_CODE_DATA_ELIMINATION=y
|
||||
CONFIG_HAVE_MOD_ARCH_SPECIFIC=y
|
||||
CONFIG_HAVE_NET_DSA=y
|
||||
CONFIG_HAVE_OPROFILE=y
|
||||
CONFIG_HAVE_OPTPROBES=y
|
||||
CONFIG_HAVE_PCI=y
|
||||
CONFIG_HAVE_PERF_EVENTS=y
|
||||
CONFIG_HAVE_PERF_REGS=y
|
||||
CONFIG_HAVE_PERF_USER_STACK_DUMP=y
|
||||
CONFIG_HAVE_PROC_CPU=y
|
||||
CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
|
||||
CONFIG_HAVE_RSEQ=y
|
||||
CONFIG_HAVE_SMP=y
|
||||
CONFIG_HAVE_SYSCALL_TRACEPOINTS=y
|
||||
CONFIG_HAVE_UID16=y
|
||||
CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y
|
||||
CONFIG_HIGHMEM=y
|
||||
# CONFIG_HIGHPTE is not set
|
||||
CONFIG_HOTPLUG_CPU=y
|
||||
CONFIG_HWMON=y
|
||||
CONFIG_HW_RANDOM=y
|
||||
CONFIG_HW_RANDOM_MTK=y
|
||||
CONFIG_HZ_FIXED=0
|
||||
CONFIG_I2C=y
|
||||
CONFIG_I2C_BOARDINFO=y
|
||||
CONFIG_I2C_CHARDEV=y
|
||||
CONFIG_I2C_MT65XX=y
|
||||
# CONFIG_I2C_NVIDIA_GPU is not set
|
||||
CONFIG_ICPLUS_PHY=y
|
||||
# CONFIG_IGC is not set
|
||||
CONFIG_IIO=y
|
||||
# CONFIG_IIO_BUFFER is not set
|
||||
# CONFIG_IIO_TRIGGER is not set
|
||||
CONFIG_INITRAMFS_COMPRESSION=""
|
||||
CONFIG_INITRAMFS_ROOT_GID=1000
|
||||
CONFIG_INITRAMFS_ROOT_UID=1000
|
||||
CONFIG_INITRAMFS_SOURCE="/openwrt/trunk/build_dir/target-arm_cortex-a7_musl-1.1.14_eabi/root-mediatek /openwrt/trunk/target/linux/generic/image/initramfs-base-files.txt"
|
||||
CONFIG_INIT_STACK_NONE=y
|
||||
# CONFIG_IOMMU_DEBUGFS is not set
|
||||
# CONFIG_IOMMU_IO_PGTABLE_ARMV7S is not set
|
||||
# CONFIG_IOMMU_IO_PGTABLE_LPAE is not set
|
||||
CONFIG_IOMMU_SUPPORT=y
|
||||
CONFIG_IO_URING=y
|
||||
CONFIG_IRQCHIP=y
|
||||
CONFIG_IRQ_DOMAIN=y
|
||||
CONFIG_IRQ_DOMAIN_HIERARCHY=y
|
||||
CONFIG_IRQ_FORCED_THREADING=y
|
||||
CONFIG_IRQ_WORK=y
|
||||
CONFIG_JBD2=y
|
||||
CONFIG_KALLSYMS=y
|
||||
CONFIG_LEDS_MT6323=y
|
||||
CONFIG_LIBFDT=y
|
||||
CONFIG_LOCK_DEBUGGING_SUPPORT=y
|
||||
CONFIG_LOCK_SPIN_ON_OWNER=y
|
||||
CONFIG_LZO_COMPRESS=y
|
||||
CONFIG_LZO_DECOMPRESS=y
|
||||
# CONFIG_MACH_MT2701 is not set
|
||||
# CONFIG_MACH_MT6589 is not set
|
||||
# CONFIG_MACH_MT6592 is not set
|
||||
CONFIG_MACH_MT7623=y
|
||||
# CONFIG_MACH_MT7629 is not set
|
||||
# CONFIG_MACH_MT8127 is not set
|
||||
# CONFIG_MACH_MT8135 is not set
|
||||
CONFIG_MAGIC_SYSRQ=y
|
||||
CONFIG_MDIO_BITBANG=y
|
||||
CONFIG_MDIO_BUS=y
|
||||
CONFIG_MDIO_DEVICE=y
|
||||
CONFIG_MDIO_GPIO=y
|
||||
CONFIG_MEDIATEK_MT6577_AUXADC=y
|
||||
CONFIG_MEDIATEK_WATCHDOG=y
|
||||
CONFIG_MEMFD_CREATE=y
|
||||
CONFIG_MFD_CORE=y
|
||||
CONFIG_MFD_MT6397=y
|
||||
# CONFIG_MFD_STPMIC1 is not set
|
||||
CONFIG_MFD_SYSCON=y
|
||||
CONFIG_MIGHT_HAVE_CACHE_L2X0=y
|
||||
CONFIG_MIGRATION=y
|
||||
# CONFIG_MISC_ALCOR_PCI is not set
|
||||
CONFIG_MMC=y
|
||||
CONFIG_MMC_BLOCK=y
|
||||
CONFIG_MMC_MTK=y
|
||||
CONFIG_MMC_SDHCI=y
|
||||
# CONFIG_MMC_SDHCI_PCI is not set
|
||||
CONFIG_MMC_SDHCI_PLTFM=y
|
||||
# CONFIG_MMC_TIFM_SD is not set
|
||||
CONFIG_MODULES_USE_ELF_REL=y
|
||||
# CONFIG_MT753X_GSW is not set
|
||||
CONFIG_MTD_BLOCK2MTD=y
|
||||
CONFIG_MTD_CMDLINE_PARTS=y
|
||||
CONFIG_MTD_SPI_NOR=y
|
||||
CONFIG_MTD_SPLIT_FIRMWARE=y
|
||||
CONFIG_MTD_SPLIT_UIMAGE_FW=y
|
||||
CONFIG_MTD_UBI=y
|
||||
CONFIG_MTD_UBI_BEB_LIMIT=20
|
||||
CONFIG_MTD_UBI_BLOCK=y
|
||||
# CONFIG_MTD_UBI_FASTMAP is not set
|
||||
# CONFIG_MTD_UBI_GLUEBI is not set
|
||||
CONFIG_MTD_UBI_WL_THRESHOLD=4096
|
||||
# CONFIG_MTK_CMDQ is not set
|
||||
# CONFIG_MTK_CQDMA is not set
|
||||
CONFIG_MTK_EFUSE=y
|
||||
# CONFIG_MTK_HSDMA is not set
|
||||
CONFIG_MTK_INFRACFG=y
|
||||
# CONFIG_MTK_IOMMU is not set
|
||||
# CONFIG_MTK_IOMMU_V1 is not set
|
||||
CONFIG_MTK_PMIC_WRAP=y
|
||||
CONFIG_MTK_SCPSYS=y
|
||||
CONFIG_MTK_THERMAL=y
|
||||
CONFIG_MTK_TIMER=y
|
||||
# CONFIG_MTK_UART_APDMA is not set
|
||||
CONFIG_MUTEX_SPIN_ON_OWNER=y
|
||||
CONFIG_NEED_DMA_MAP_STATE=y
|
||||
CONFIG_NEON=y
|
||||
CONFIG_NET_DEVLINK=y
|
||||
CONFIG_NET_DSA=y
|
||||
CONFIG_NET_DSA_MT7530=y
|
||||
CONFIG_NET_DSA_TAG_MTK=y
|
||||
# CONFIG_NET_DSA_TAG_QCA is not set
|
||||
CONFIG_NET_FLOW_LIMIT=y
|
||||
CONFIG_NET_MEDIATEK_SOC=y
|
||||
CONFIG_NET_SWITCHDEV=y
|
||||
# CONFIG_NET_VENDOR_AURORA is not set
|
||||
CONFIG_NET_VENDOR_MEDIATEK=y
|
||||
# CONFIG_NET_VENDOR_WIZNET is not set
|
||||
CONFIG_NLS=y
|
||||
CONFIG_NO_HZ=y
|
||||
CONFIG_NO_HZ_COMMON=y
|
||||
CONFIG_NO_HZ_IDLE=y
|
||||
CONFIG_NR_CPUS=4
|
||||
CONFIG_NVMEM=y
|
||||
# CONFIG_NVMEM_REBOOT_MODE is not set
|
||||
CONFIG_NVMEM_SYSFS=y
|
||||
CONFIG_OF=y
|
||||
CONFIG_OF_ADDRESS=y
|
||||
CONFIG_OF_EARLY_FLATTREE=y
|
||||
CONFIG_OF_FLATTREE=y
|
||||
CONFIG_OF_GPIO=y
|
||||
CONFIG_OF_IRQ=y
|
||||
CONFIG_OF_KOBJ=y
|
||||
CONFIG_OF_MDIO=y
|
||||
CONFIG_OF_NET=y
|
||||
CONFIG_OLD_SIGACTION=y
|
||||
CONFIG_OLD_SIGSUSPEND3=y
|
||||
CONFIG_PADATA=y
|
||||
CONFIG_PAGE_OFFSET=0xC0000000
|
||||
CONFIG_PCI=y
|
||||
CONFIG_PCIEAER=y
|
||||
CONFIG_PCIEPORTBUS=y
|
||||
CONFIG_PCIE_MEDIATEK=y
|
||||
CONFIG_PCIE_PME=y
|
||||
CONFIG_PCI_DOMAINS=y
|
||||
CONFIG_PCI_DOMAINS_GENERIC=y
|
||||
# CONFIG_PCI_MESON is not set
|
||||
CONFIG_PCI_MSI=y
|
||||
CONFIG_PCI_MSI_IRQ_DOMAIN=y
|
||||
# CONFIG_PCI_V3_SEMI is not set
|
||||
CONFIG_PERF_USE_VMALLOC=y
|
||||
CONFIG_PGTABLE_LEVELS=2
|
||||
CONFIG_PHYLIB=y
|
||||
CONFIG_PHYLINK=y
|
||||
CONFIG_PHY_MTK_TPHY=y
|
||||
# CONFIG_PHY_MTK_UFS is not set
|
||||
# CONFIG_PHY_MTK_XSPHY is not set
|
||||
CONFIG_PINCTRL=y
|
||||
CONFIG_PINCTRL_MT2701=y
|
||||
CONFIG_PINCTRL_MT6397=y
|
||||
CONFIG_PINCTRL_MT7623=y
|
||||
CONFIG_PINCTRL_MTK=y
|
||||
CONFIG_PINCTRL_MTK_MOORE=y
|
||||
CONFIG_PM=y
|
||||
CONFIG_PM_CLK=y
|
||||
# CONFIG_PM_DEBUG is not set
|
||||
CONFIG_PM_GENERIC_DOMAINS=y
|
||||
CONFIG_PM_GENERIC_DOMAINS_OF=y
|
||||
CONFIG_PM_GENERIC_DOMAINS_SLEEP=y
|
||||
CONFIG_PM_OPP=y
|
||||
CONFIG_PM_SLEEP=y
|
||||
CONFIG_PM_SLEEP_SMP=y
|
||||
CONFIG_POWER_RESET=y
|
||||
CONFIG_POWER_SUPPLY=y
|
||||
CONFIG_POWER_SUPPLY_HWMON=y
|
||||
CONFIG_PREEMPT=y
|
||||
CONFIG_PREEMPTION=y
|
||||
CONFIG_PREEMPT_COUNT=y
|
||||
# CONFIG_PREEMPT_NONE is not set
|
||||
CONFIG_PREEMPT_RCU=y
|
||||
CONFIG_PRINTK_TIME=y
|
||||
CONFIG_PWM=y
|
||||
CONFIG_PWM_MEDIATEK=y
|
||||
# CONFIG_PWM_MTK_DISP is not set
|
||||
CONFIG_PWM_SYSFS=y
|
||||
# CONFIG_QCOM_SPMI_ADC5 is not set
|
||||
CONFIG_RAS=y
|
||||
CONFIG_RATIONAL=y
|
||||
CONFIG_RCU_CPU_STALL_TIMEOUT=21
|
||||
# CONFIG_RCU_EXPERT is not set
|
||||
CONFIG_RCU_NEED_SEGCBLIST=y
|
||||
CONFIG_RCU_STALL_COMMON=y
|
||||
CONFIG_REFCOUNT_FULL=y
|
||||
CONFIG_REGMAP=y
|
||||
CONFIG_REGMAP_I2C=y
|
||||
CONFIG_REGMAP_MMIO=y
|
||||
CONFIG_REGMAP_SPI=y
|
||||
CONFIG_REGULATOR=y
|
||||
CONFIG_REGULATOR_FIXED_VOLTAGE=y
|
||||
CONFIG_REGULATOR_GPIO=y
|
||||
CONFIG_REGULATOR_MT6323=y
|
||||
# CONFIG_REGULATOR_MT6380 is not set
|
||||
# CONFIG_REGULATOR_MT6397 is not set
|
||||
# CONFIG_REGULATOR_QCOM_SPMI is not set
|
||||
CONFIG_RESET_CONTROLLER=y
|
||||
CONFIG_RFS_ACCEL=y
|
||||
CONFIG_RPS=y
|
||||
CONFIG_RTC_CLASS=y
|
||||
# CONFIG_RTC_DRV_MT6397 is not set
|
||||
# CONFIG_RTC_DRV_MT7622 is not set
|
||||
CONFIG_RTC_I2C_AND_SPI=y
|
||||
CONFIG_RWSEM_SPIN_ON_OWNER=y
|
||||
# CONFIG_SENSORS_OCC_P8_I2C is not set
|
||||
# CONFIG_SERIAL_8250_DMA is not set
|
||||
CONFIG_SERIAL_8250_FSL=y
|
||||
CONFIG_SERIAL_8250_MT6577=y
|
||||
CONFIG_SERIAL_8250_NR_UARTS=4
|
||||
CONFIG_SERIAL_8250_RUNTIME_UARTS=4
|
||||
CONFIG_SERIAL_MCTRL_GPIO=y
|
||||
CONFIG_SGL_ALLOC=y
|
||||
CONFIG_SMP=y
|
||||
# CONFIG_SMP_ON_UP is not set
|
||||
CONFIG_SPARSE_IRQ=y
|
||||
CONFIG_SPI=y
|
||||
CONFIG_SPI_BITBANG=y
|
||||
CONFIG_SPI_MASTER=y
|
||||
CONFIG_SPI_MEM=y
|
||||
CONFIG_SPI_MT65XX=y
|
||||
CONFIG_SPMI=y
|
||||
CONFIG_SRCU=y
|
||||
# CONFIG_STRIP_ASM_SYMS is not set
|
||||
CONFIG_SUSPEND=y
|
||||
CONFIG_SUSPEND_FREEZER=y
|
||||
CONFIG_SWCONFIG=y
|
||||
CONFIG_SWPHY=y
|
||||
CONFIG_SWP_EMULATE=y
|
||||
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
|
||||
CONFIG_TASKS_RCU=y
|
||||
CONFIG_THERMAL=y
|
||||
CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y
|
||||
CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0
|
||||
CONFIG_THERMAL_GOV_STEP_WISE=y
|
||||
CONFIG_THERMAL_OF=y
|
||||
# CONFIG_THUMB2_KERNEL is not set
|
||||
CONFIG_TICK_CPU_ACCOUNTING=y
|
||||
CONFIG_TIMER_OF=y
|
||||
CONFIG_TIMER_PROBE=y
|
||||
# CONFIG_TI_CPSW_PHY_SEL is not set
|
||||
CONFIG_TREE_SRCU=y
|
||||
# CONFIG_TRUSTED_FOUNDATIONS is not set
|
||||
CONFIG_UBIFS_FS=y
|
||||
# CONFIG_UBIFS_FS_ADVANCED_COMPR is not set
|
||||
CONFIG_UBIFS_FS_LZO=y
|
||||
CONFIG_UBIFS_FS_ZLIB=y
|
||||
CONFIG_UBIFS_FS_ZSTD=y
|
||||
CONFIG_UEVENT_HELPER_PATH=""
|
||||
CONFIG_UNCOMPRESS_INCLUDE="debug/uncompress.h"
|
||||
CONFIG_UNINLINE_SPIN_UNLOCK=y
|
||||
CONFIG_UNWINDER_ARM=y
|
||||
# CONFIG_UNWINDER_FRAME_POINTER is not set
|
||||
CONFIG_USB=y
|
||||
CONFIG_USB_COMMON=y
|
||||
# CONFIG_USB_EHCI_HCD is not set
|
||||
CONFIG_USB_SUPPORT=y
|
||||
CONFIG_USB_XHCI_HCD=y
|
||||
CONFIG_USB_XHCI_MTK=y
|
||||
CONFIG_USB_XHCI_PLATFORM=y
|
||||
CONFIG_USE_OF=y
|
||||
CONFIG_VFP=y
|
||||
CONFIG_VFPv3=y
|
||||
CONFIG_VM_EVENT_COUNTERS=y
|
||||
CONFIG_WATCHDOG_CORE=y
|
||||
CONFIG_XPS=y
|
||||
CONFIG_XXHASH=y
|
||||
CONFIG_XZ_DEC_ARM=y
|
||||
CONFIG_XZ_DEC_BCJ=y
|
||||
CONFIG_ZBOOT_ROM_BSS=0
|
||||
CONFIG_ZBOOT_ROM_TEXT=0
|
||||
CONFIG_ZLIB_DEFLATE=y
|
||||
CONFIG_ZLIB_INFLATE=y
|
||||
CONFIG_ZSTD_COMPRESS=y
|
||||
CONFIG_ZSTD_DECOMPRESS=y
|
|
@ -0,0 +1,23 @@
|
|||
--- a/arch/arm/boot/dts/mt7623n-bananapi-bpi-r2.dts 2018-12-26 16:53:06.778501203 +0100
|
||||
+++ b/arch/arm/boot/dts/mt7623n-bananapi-bpi-r2.dts 2018-12-26 16:55:46.280213376 +0100
|
||||
@@ -22,6 +22,7 @@
|
||||
};
|
||||
|
||||
memory {
|
||||
- reg = <0 0x80000000 0 0x20000000>;
|
||||
+ device_type = "memory";
|
||||
+ reg = <0 0x80000000 0 0x80000000>;
|
||||
};
|
||||
|
||||
@@ -115,11 +116,6 @@
|
||||
};
|
||||
};
|
||||
|
||||
- memory@80000000 {
|
||||
- device_type = "memory";
|
||||
- reg = <0 0x80000000 0 0x40000000>;
|
||||
- };
|
||||
-
|
||||
mt7530: switch@0 {
|
||||
compatible = "mediatek,mt7530";
|
||||
};
|
|
@ -0,0 +1,27 @@
|
|||
Index: linux-4.14.51/arch/arm/boot/dts/mt7623n-bananapi-bpi-r2.dts
|
||||
===================================================================
|
||||
--- linux-4.14.51.orig/arch/arm/boot/dts/mt7623n-bananapi-bpi-r2.dts
|
||||
+++ linux-4.14.51/arch/arm/boot/dts/mt7623n-bananapi-bpi-r2.dts
|
||||
@@ -87,19 +87,19 @@
|
||||
|
||||
blue {
|
||||
label = "bpi-r2:pio:blue";
|
||||
- gpios = <&pio 241 GPIO_ACTIVE_HIGH>;
|
||||
+ gpios = <&pio 240 GPIO_ACTIVE_LOW>;
|
||||
default-state = "off";
|
||||
};
|
||||
|
||||
green {
|
||||
label = "bpi-r2:pio:green";
|
||||
- gpios = <&pio 240 GPIO_ACTIVE_HIGH>;
|
||||
+ gpios = <&pio 241 GPIO_ACTIVE_LOW>;
|
||||
default-state = "off";
|
||||
};
|
||||
|
||||
red {
|
||||
label = "bpi-r2:pio:red";
|
||||
- gpios = <&pio 239 GPIO_ACTIVE_HIGH>;
|
||||
+ gpios = <&pio 239 GPIO_ACTIVE_LOW>;
|
||||
default-state = "off";
|
||||
};
|
||||
};
|
48
root/target/linux/mediatek/patches-4.14/0230-update-pcie-for-bpi-r2.patch
Executable file
48
root/target/linux/mediatek/patches-4.14/0230-update-pcie-for-bpi-r2.patch
Executable file
|
@ -0,0 +1,48 @@
|
|||
Index: linux-4.14.51/arch/arm/boot/dts/mt7623n-bananapi-bpi-r2.dts
|
||||
===================================================================
|
||||
--- linux-4.14.51.orig/arch/arm/boot/dts/mt7623n-bananapi-bpi-r2.dts
|
||||
+++ linux-4.14.51/arch/arm/boot/dts/mt7623n-bananapi-bpi-r2.dts
|
||||
@@ -266,6 +266,28 @@
|
||||
vqmmc-supply = <&mt6323_vio18_reg>;
|
||||
};
|
||||
|
||||
+&pcie {
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&pcie_default>;
|
||||
+ status = "okay";
|
||||
+
|
||||
+ pcie@0,0 {
|
||||
+ status = "okay";
|
||||
+ };
|
||||
+
|
||||
+ pcie@1,0 {
|
||||
+ status = "okay";
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&pcie0_phy {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&pcie1_phy {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
&pio {
|
||||
cir_pins_a:cir@0 {
|
||||
pins_cir {
|
||||
@@ -433,6 +455,14 @@
|
||||
};
|
||||
};
|
||||
|
||||
+ pcie_default: pcie_pin_default {
|
||||
+ pins_cmd_dat {
|
||||
+ pinmux = <MT7623_PIN_208_AUD_EXT_CK1_FUNC_PCIE0_PERST_N>,
|
||||
+ <MT7623_PIN_209_AUD_EXT_CK2_FUNC_PCIE1_PERST_N>;
|
||||
+ bias-disable;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
pwm_pins_a: pwm@0 {
|
||||
pins_pwm {
|
||||
pinmux = <MT7623_PIN_203_PWM0_FUNC_PWM0>,
|
22
root/target/linux/mediatek/patches-4.14/0231-enable-trgmii-on-bpi-r2.patch
Executable file
22
root/target/linux/mediatek/patches-4.14/0231-enable-trgmii-on-bpi-r2.patch
Executable file
|
@ -0,0 +1,22 @@
|
|||
Index: linux-4.14.51/arch/arm/boot/dts/mt7623n-bananapi-bpi-r2.dts
|
||||
===================================================================
|
||||
--- linux-4.14.51.orig/arch/arm/boot/dts/mt7623n-bananapi-bpi-r2.dts
|
||||
+++ linux-4.14.51/arch/arm/boot/dts/mt7623n-bananapi-bpi-r2.dts
|
||||
@@ -141,7 +141,7 @@
|
||||
gmac1: mac@1 {
|
||||
compatible = "mediatek,eth-mac";
|
||||
reg = <1>;
|
||||
- phy-mode = "rgmii";
|
||||
+ phy-mode = "trgmii";
|
||||
|
||||
fixed-link {
|
||||
speed = <1000>;
|
||||
@@ -206,7 +206,7 @@
|
||||
reg = <5>;
|
||||
label = "cpu";
|
||||
ethernet = <&gmac1>;
|
||||
- phy-mode = "rgmii";
|
||||
+ phy-mode = "trgmii";
|
||||
|
||||
fixed-link {
|
||||
speed = <1000>;
|
217327
root/target/linux/mediatek/patches-4.14/0232-merge-mt6625l-wifi-driver.patch
Executable file
217327
root/target/linux/mediatek/patches-4.14/0232-merge-mt6625l-wifi-driver.patch
Executable file
File diff suppressed because it is too large
Load diff
|
@ -0,0 +1,35 @@
|
|||
From 16c20209050ce9dc0d67e256c3dfba902868c3ed Mon Sep 17 00:00:00 2001
|
||||
From: Nikolay Amiantov <ab@fmap.me>
|
||||
Date: Tue, 3 Jul 2018 12:40:04 +0000
|
||||
Subject: [PATCH] Revert "fs: unexport vfs_read and vfs_write"
|
||||
|
||||
This reverts commit bd8df82be66698042d11e7919e244c8d72b042ca.
|
||||
---
|
||||
fs/read_write.c | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
diff --git a/fs/read_write.c b/fs/read_write.c
|
||||
index 0046d72efe94..62b9c341afa9 100644
|
||||
--- a/fs/read_write.c
|
||||
+++ b/fs/read_write.c
|
||||
@@ -455,6 +455,8 @@ ssize_t vfs_read(struct file *file, char __user *buf, size_t count, loff_t *pos)
|
||||
return ret;
|
||||
}
|
||||
|
||||
+EXPORT_SYMBOL(vfs_read);
|
||||
+
|
||||
static ssize_t new_sync_write(struct file *filp, const char __user *buf, size_t len, loff_t *ppos)
|
||||
{
|
||||
struct iovec iov = { .iov_base = (void __user *)buf, .iov_len = len };
|
||||
@@ -553,6 +555,8 @@ ssize_t vfs_write(struct file *file, const char __user *buf, size_t count, loff_
|
||||
return ret;
|
||||
}
|
||||
|
||||
+EXPORT_SYMBOL(vfs_write);
|
||||
+
|
||||
static inline loff_t file_pos_read(struct file *file)
|
||||
{
|
||||
return file->f_pos;
|
||||
--
|
||||
2.17.1
|
||||
|
127
root/target/linux/mediatek/patches-4.14/0234-fix-mtk-wlan_gen2-module.patch
Executable file
127
root/target/linux/mediatek/patches-4.14/0234-fix-mtk-wlan_gen2-module.patch
Executable file
|
@ -0,0 +1,127 @@
|
|||
Index: linux-4.14.51/drivers/misc/mediatek/connectivity/common/conn_soc/mt7623/mtk_wcn_consys_hw.c
|
||||
===================================================================
|
||||
--- linux-4.14.51.orig/drivers/misc/mediatek/connectivity/common/conn_soc/mt7623/mtk_wcn_consys_hw.c
|
||||
+++ linux-4.14.51/drivers/misc/mediatek/connectivity/common/conn_soc/mt7623/mtk_wcn_consys_hw.c
|
||||
@@ -519,6 +519,9 @@ INT32 mtk_wcn_consys_hw_wifi_paldo_ctrl(
|
||||
}
|
||||
|
||||
#endif
|
||||
+
|
||||
+EXPORT_SYMBOL(mtk_wcn_consys_hw_wifi_paldo_ctrl);
|
||||
+
|
||||
INT32 mtk_wcn_consys_hw_vcn28_ctrl(UINT32 enable)
|
||||
{
|
||||
if (enable) {
|
||||
Index: linux-4.14.51/drivers/misc/mediatek/connectivity/wlan/gen2/os/linux/gl_kal.c
|
||||
===================================================================
|
||||
--- linux-4.14.51.orig/drivers/misc/mediatek/connectivity/wlan/gen2/os/linux/gl_kal.c
|
||||
+++ linux-4.14.51/drivers/misc/mediatek/connectivity/wlan/gen2/os/linux/gl_kal.c
|
||||
@@ -4530,13 +4530,10 @@ INT_32 kalHaltLock(UINT_32 waitMs)
|
||||
DBGLOG(INIT, ERROR,
|
||||
"kalIoctl was executed longer than %u ms, show backtrace of tx_thread!\n",
|
||||
kalGetTimeTick() - rHaltCtrl.u4HoldStart);
|
||||
- if (prGlueInfo)
|
||||
- show_stack(prGlueInfo->main_thread, NULL);
|
||||
} else {
|
||||
DBGLOG(INIT, ERROR, "halt lock held by %s pid %d longer than %u ms!\n",
|
||||
rHaltCtrl.owner->comm, rHaltCtrl.owner->pid,
|
||||
kalGetTimeTick() - rHaltCtrl.u4HoldStart);
|
||||
- show_stack(rHaltCtrl.owner, NULL);
|
||||
}
|
||||
return i4Ret;
|
||||
}
|
||||
Index: linux-4.14.51/drivers/misc/mediatek/connectivity/wlan/gen2/os/linux/gl_rst.c
|
||||
===================================================================
|
||||
--- linux-4.14.51.orig/drivers/misc/mediatek/connectivity/wlan/gen2/os/linux/gl_rst.c
|
||||
+++ linux-4.14.51/drivers/misc/mediatek/connectivity/wlan/gen2/os/linux/gl_rst.c
|
||||
@@ -58,7 +58,6 @@
|
||||
********************************************************************************
|
||||
*/
|
||||
BOOLEAN fgIsResetting = FALSE;
|
||||
-UINT_32 g_IsNeedDoChipReset = 0;
|
||||
|
||||
/*******************************************************************************
|
||||
* P R I V A T E D A T A
|
||||
Index: linux-4.14.51/drivers/misc/mediatek/connectivity/common/conn_soc/linux/pub/wmt_chrdev_wifi.c
|
||||
===================================================================
|
||||
--- linux-4.14.51.orig/drivers/misc/mediatek/connectivity/common/conn_soc/linux/pub/wmt_chrdev_wifi.c
|
||||
+++ linux-4.14.51/drivers/misc/mediatek/connectivity/common/conn_soc/linux/pub/wmt_chrdev_wifi.c
|
||||
@@ -44,6 +44,9 @@ MODULE_LICENSE("Dual BSD/GPL");
|
||||
#define WIFI_LOG_WARN 1
|
||||
#define WIFI_LOG_ERR 0
|
||||
|
||||
+UINT32 g_IsNeedDoChipReset = 0;
|
||||
+EXPORT_SYMBOL(g_IsNeedDoChipReset);
|
||||
+
|
||||
UINT32 gDbgLevel = WIFI_LOG_DBG;
|
||||
|
||||
#define WIFI_DBG_FUNC(fmt, arg...)\
|
||||
Index: linux-4.14.51/drivers/misc/mediatek/connectivity/common/conn_soc/linux/pub/Makefile
|
||||
===================================================================
|
||||
--- linux-4.14.51.orig/drivers/misc/mediatek/connectivity/common/conn_soc/linux/pub/Makefile
|
||||
+++ linux-4.14.51/drivers/misc/mediatek/connectivity/common/conn_soc/linux/pub/Makefile
|
||||
@@ -21,7 +21,11 @@ endif
|
||||
obj-y += osal.o \
|
||||
bgw_desense.o \
|
||||
wmt_idc.o
|
||||
-obj-$(CONFIG_MTK_COMBO_BT) += stp_chrdev_bt.o
|
||||
-obj-$(CONFIG_MTK_COMBO_WIFI) += wmt_chrdev_wifi.o
|
||||
+ifneq ($(CONFIG_MTK_COMBO_BT),)
|
||||
+ obj-y += stp_chrdev_bt.o
|
||||
+endif
|
||||
+ifneq ($(CONFIG_MTK_COMBO_WIFI),)
|
||||
+ obj-y += wmt_chrdev_wifi.o
|
||||
+endif
|
||||
|
||||
endif
|
||||
Index: linux-4.14.51/drivers/misc/mediatek/connectivity/common/common_detect/drv_init/wlan_drv_init.c
|
||||
===================================================================
|
||||
--- linux-4.14.51.orig/drivers/misc/mediatek/connectivity/common/common_detect/drv_init/wlan_drv_init.c
|
||||
+++ linux-4.14.51/drivers/misc/mediatek/connectivity/common/common_detect/drv_init/wlan_drv_init.c
|
||||
@@ -25,7 +25,7 @@ int do_wlan_drv_init(int chip_id)
|
||||
{
|
||||
int i_ret = 0;
|
||||
|
||||
-#ifdef CONFIG_MTK_COMBO_WIFI
|
||||
+#ifdef MTK_WIFI_ENABLED
|
||||
int ret = 0;
|
||||
|
||||
WMT_DETECT_INFO_FUNC("start to do wlan module init 0x%x\n", chip_id);
|
||||
@@ -35,6 +35,7 @@ int do_wlan_drv_init(int chip_id)
|
||||
WMT_DETECT_INFO_FUNC("WMT-WIFI char dev init, ret:%d\n", ret);
|
||||
i_ret += ret;
|
||||
|
||||
+#ifdef CONFIG_MTK_COMBO_WIFI
|
||||
switch (chip_id) {
|
||||
case 0x6630:
|
||||
case 0x6797:
|
||||
@@ -61,13 +62,10 @@ int do_wlan_drv_init(int chip_id)
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
-
|
||||
+#endif
|
||||
WMT_DETECT_INFO_FUNC("finish wlan module init\n");
|
||||
-
|
||||
#else
|
||||
-
|
||||
WMT_DETECT_INFO_FUNC("CONFIG_MTK_COMBO_WIFI is not defined\n");
|
||||
-
|
||||
#endif
|
||||
|
||||
return i_ret;
|
||||
Index: linux-4.14.51/drivers/misc/mediatek/connectivity/common/common_detect/drv_init/Makefile
|
||||
===================================================================
|
||||
--- linux-4.14.51.orig/drivers/misc/mediatek/connectivity/common/common_detect/drv_init/Makefile
|
||||
+++ linux-4.14.51/drivers/misc/mediatek/connectivity/common/common_detect/drv_init/Makefile
|
||||
@@ -11,6 +11,10 @@ else ifneq ($(filter "CONSYS_%",$(CONFIG
|
||||
ccflags-y += -D MTK_WCN_WLAN_GEN2
|
||||
endif
|
||||
|
||||
+ifneq ($(CONFIG_MTK_COMBO_WIFI),)
|
||||
+ ccflags-y += -D MTK_WIFI_ENABLED
|
||||
+endif
|
||||
+
|
||||
obj-y += conn_drv_init.o
|
||||
obj-y += common_drv_init.o
|
||||
obj-y += bluetooth_drv_init.o
|
|
@ -0,0 +1,12 @@
|
|||
Index: linux-4.14.51/drivers/watchdog/mtk_wdt.c
|
||||
===================================================================
|
||||
--- linux-4.14.51.orig/drivers/watchdog/mtk_wdt.c
|
||||
+++ linux-4.14.51/drivers/watchdog/mtk_wdt.c
|
||||
@@ -236,7 +236,6 @@ static int mtk_wdt_ping(struct watchdog_
|
||||
void __iomem *wdt_base = mtk_wdt->wdt_base;
|
||||
|
||||
iowrite32(WDT_RST_RELOAD, wdt_base + WDT_RST);
|
||||
- printk_deferred("[WDK]: kick Ex WDT\n");
|
||||
|
||||
return 0;
|
||||
}
|
13
root/target/linux/mediatek/patches-4.14/0236-mt6625l-rename-wlan.patch
Executable file
13
root/target/linux/mediatek/patches-4.14/0236-mt6625l-rename-wlan.patch
Executable file
|
@ -0,0 +1,13 @@
|
|||
Index: linux-4.14.51/drivers/misc/mediatek/connectivity/common/conn_soc/linux/pub/wmt_chrdev_wifi.c
|
||||
===================================================================
|
||||
--- linux-4.14.51.orig/drivers/misc/mediatek/connectivity/common/conn_soc/linux/pub/wmt_chrdev_wifi.c
|
||||
+++ linux-4.14.51/drivers/misc/mediatek/connectivity/common/conn_soc/linux/pub/wmt_chrdev_wifi.c
|
||||
@@ -62,7 +62,7 @@ UINT32 gDbgLevel = WIFI_LOG_DBG;
|
||||
|
||||
#define VERSION "1.0"
|
||||
|
||||
-#define WLAN_IFACE_NAME "wlan0"
|
||||
+#define WLAN_IFACE_NAME "mtkwlan0"
|
||||
#if CFG_TC1_FEATURE
|
||||
#define LEGACY_IFACE_NAME "legacy0"
|
||||
#endif
|
1824
root/target/linux/mediatek/patches-4.14/0237-mt7623-add-HNAT-support.patch
Executable file
1824
root/target/linux/mediatek/patches-4.14/0237-mt7623-add-HNAT-support.patch
Executable file
File diff suppressed because it is too large
Load diff
|
@ -0,0 +1,747 @@
|
|||
From 8196b5b6d823fb8c61268121052826db7fb6ce3c Mon Sep 17 00:00:00 2001
|
||||
From: Frank Wunderlich <frank-w@public-files.de>
|
||||
Date: Mon, 22 Oct 2018 19:06:10 +0200
|
||||
Subject: [PATCH 01/77] adding defconfig and build-script, change gitignore,
|
||||
making kernel compatible with r2-images
|
||||
|
||||
---
|
||||
arch/arm/boot/dts/mt7623.dtsi | 42 +-
|
||||
arch/arm/configs/mt7623n_evb_fwu_defconfig | 651 +++++++++++++++++++++
|
||||
4 files changed, 1200 insertions(+), 22 deletions(-)
|
||||
create mode 100644 arch/arm/configs/mt7623n_evb_fwu_defconfig
|
||||
|
||||
diff --git a/arch/arm/boot/dts/mt7623.dtsi b/arch/arm/boot/dts/mt7623.dtsi
|
||||
index 1cdc346a05e8..04228cf9ddbb 100644
|
||||
--- a/arch/arm/boot/dts/mt7623.dtsi
|
||||
+++ b/arch/arm/boot/dts/mt7623.dtsi
|
||||
@@ -354,6 +354,17 @@
|
||||
#io-channel-cells = <1>;
|
||||
};
|
||||
|
||||
+ uart2: serial@11004000 {
|
||||
+ compatible = "mediatek,mt7623-uart",
|
||||
+ "mediatek,mt6577-uart";
|
||||
+ reg = <0 0x11004000 0 0x400>;
|
||||
+ interrupts = <GIC_SPI 53 IRQ_TYPE_LEVEL_LOW>;
|
||||
+ clocks = <&pericfg CLK_PERI_UART2_SEL>,
|
||||
+ <&pericfg CLK_PERI_UART2>;
|
||||
+ clock-names = "baud", "bus";
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
uart0: serial@11002000 {
|
||||
compatible = "mediatek,mt7623-uart",
|
||||
"mediatek,mt6577-uart";
|
||||
@@ -376,17 +387,6 @@
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
- uart2: serial@11004000 {
|
||||
- compatible = "mediatek,mt7623-uart",
|
||||
- "mediatek,mt6577-uart";
|
||||
- reg = <0 0x11004000 0 0x400>;
|
||||
- interrupts = <GIC_SPI 53 IRQ_TYPE_LEVEL_LOW>;
|
||||
- clocks = <&pericfg CLK_PERI_UART2_SEL>,
|
||||
- <&pericfg CLK_PERI_UART2>;
|
||||
- clock-names = "baud", "bus";
|
||||
- status = "disabled";
|
||||
- };
|
||||
-
|
||||
uart3: serial@11005000 {
|
||||
compatible = "mediatek,mt7623-uart",
|
||||
"mediatek,mt6577-uart";
|
||||
@@ -661,24 +661,24 @@
|
||||
};
|
||||
};
|
||||
|
||||
- mmc0: mmc@11230000 {
|
||||
+ mmc1: mmc@11240000 {
|
||||
compatible = "mediatek,mt7623-mmc",
|
||||
"mediatek,mt2701-mmc";
|
||||
- reg = <0 0x11230000 0 0x1000>;
|
||||
- interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_LOW>;
|
||||
- clocks = <&pericfg CLK_PERI_MSDC30_0>,
|
||||
- <&topckgen CLK_TOP_MSDC30_0_SEL>;
|
||||
+ reg = <0 0x11240000 0 0x1000>;
|
||||
+ interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_LOW>;
|
||||
+ clocks = <&pericfg CLK_PERI_MSDC30_1>,
|
||||
+ <&topckgen CLK_TOP_MSDC30_1_SEL>;
|
||||
clock-names = "source", "hclk";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
- mmc1: mmc@11240000 {
|
||||
+ mmc0: mmc@11230000 {
|
||||
compatible = "mediatek,mt7623-mmc",
|
||||
"mediatek,mt2701-mmc";
|
||||
- reg = <0 0x11240000 0 0x1000>;
|
||||
- interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_LOW>;
|
||||
- clocks = <&pericfg CLK_PERI_MSDC30_1>,
|
||||
- <&topckgen CLK_TOP_MSDC30_1_SEL>;
|
||||
+ reg = <0 0x11230000 0 0x1000>;
|
||||
+ interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_LOW>;
|
||||
+ clocks = <&pericfg CLK_PERI_MSDC30_0>,
|
||||
+ <&topckgen CLK_TOP_MSDC30_0_SEL>;
|
||||
clock-names = "source", "hclk";
|
||||
status = "disabled";
|
||||
};
|
||||
diff --git a/arch/arm/configs/mt7623n_evb_fwu_defconfig b/arch/arm/configs/mt7623n_evb_fwu_defconfig
|
||||
new file mode 100644
|
||||
index 000000000000..09df75013c09
|
||||
--- /dev/null
|
||||
+++ b/arch/arm/configs/mt7623n_evb_fwu_defconfig
|
||||
@@ -0,0 +1,651 @@
|
||||
+CONFIG_LOCALVERSION="-bpi-r2"
|
||||
+CONFIG_LOCALVERSION_AUTO=n
|
||||
+
|
||||
+#spectre/meltdown
|
||||
+CONFIG_PAGE_TABLE_ISOLATION=y
|
||||
+
|
||||
+CONFIG_SYSVIPC=y
|
||||
+CONFIG_IRQ_DOMAIN_DEBUG=y
|
||||
+CONFIG_NO_HZ=y
|
||||
+CONFIG_HIGH_RES_TIMERS=y
|
||||
+CONFIG_CGROUPS=y
|
||||
+CONFIG_NAMESPACES=y
|
||||
+
|
||||
+#for lxc
|
||||
+CONFIG_USER_NS=y
|
||||
+CONFIG_MEMCG=y
|
||||
+CONFIG_CGROUP_CPUACCT=y
|
||||
+CONFIG_CGROUP_DEVICE=y
|
||||
+CONFIG_CGROUP_SCHED=y
|
||||
+CONFIG_CPUSETS=y
|
||||
+#some options for docker
|
||||
+CONFIG_CGROUP_FREEZER=y
|
||||
+CONFIG_POSIX_MQUEUE=y
|
||||
+CONFIG_OVERLAY_FS=y
|
||||
+CONFIG_MEMCG_SWAP=y
|
||||
+CONFIG_MEMCG_SWAP_ENABLED=y
|
||||
+CONFIG_BLK_CGROUP=y
|
||||
+CONFIG_CFS_BANDWIDTH=y
|
||||
+CONFIG_RT_GROUP_SCHED=y
|
||||
+CONFIG_CGROUP_PIDS=y
|
||||
+CONFIG_CGROUP_PERF=y
|
||||
+CONFIG_CGROUP_NET_CLASSID=y
|
||||
+CONFIG_CGROUP_NET_PRIO=y
|
||||
+CONFIG_CFQ_GROUP_IOSCHED=y
|
||||
+
|
||||
+CONFIG_BLK_DEV_INITRD=y
|
||||
+CONFIG_KALLSYMS_ALL=y
|
||||
+CONFIG_EMBEDDED=y
|
||||
+CONFIG_PERF_EVENTS=y
|
||||
+CONFIG_MODULES=y
|
||||
+CONFIG_MODULE_FORCE_LOAD=y
|
||||
+CONFIG_MODULE_UNLOAD=y
|
||||
+CONFIG_PARTITION_ADVANCED=y
|
||||
+CONFIG_CMDLINE_PARTITION=y
|
||||
+CONFIG_ARCH_MEDIATEK=y
|
||||
+CONFIG_ARM_THUMB=y
|
||||
+CONFIG_ARM_THUMBEE=y
|
||||
+CONFIG_ARM_ERRATA_720789=y
|
||||
+CONFIG_ARM_ERRATA_754322=y
|
||||
+CONFIG_ARM_ERRATA_754327=y
|
||||
+CONFIG_ARM_ERRATA_764369=y
|
||||
+CONFIG_ARM_ERRATA_775420=y
|
||||
+CONFIG_ARM_ERRATA_798181=y
|
||||
+
|
||||
+CONFIG_PL310_ERRATA_588369=y
|
||||
+CONFIG_PL310_ERRATA_727915=y
|
||||
+CONFIG_PL310_ERRATA_753970=y
|
||||
+CONFIG_PL310_ERRATA_769419=y
|
||||
+
|
||||
+CONFIG_PCI=y
|
||||
+CONFIG_SMP=y
|
||||
+CONFIG_HAVE_ARM_ARCH_TIMER=y
|
||||
+CONFIG_NR_CPUS=16
|
||||
+CONFIG_AEABI=y
|
||||
+CONFIG_HIGHMEM=y
|
||||
+CONFIG_CMA=y
|
||||
+CONFIG_FORCE_MAX_ZONEORDER=12
|
||||
+CONFIG_ARM_APPENDED_DTB=y
|
||||
+CONFIG_ARM_ATAG_DTB_COMPAT=y
|
||||
+CONFIG_CMDLINE="earlyprintk console=ttyS0,115200 vmalloc=496M debug=7 no_console_suspend"
|
||||
+#CONFIG_CMDLINE_FORCE=y
|
||||
+
|
||||
+CONFIG_IKCONFIG=m
|
||||
+CONFIG_IKCONFIG_PROC=y
|
||||
+
|
||||
+CONFIG_KEXEC=y
|
||||
+
|
||||
+CONFIG_CPU_FREQ=y
|
||||
+CONFIG_CPU_FREQ_STAT=y
|
||||
+CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
|
||||
+CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
|
||||
+CONFIG_CPU_FREQ_GOV_POWERSAVE=y
|
||||
+CONFIG_CPU_FREQ_GOV_ONDEMAND=y
|
||||
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
|
||||
+CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y
|
||||
+CONFIG_ARM_MEDIATEK_CPUFREQ=y
|
||||
+
|
||||
+CONFIG_VFP=y
|
||||
+CONFIG_NEON=y
|
||||
+CONFIG_KERNEL_MODE_NEON=y
|
||||
+CONFIG_PM_AUTOSLEEP=y
|
||||
+CONFIG_PM_DEBUG=y
|
||||
+CONFIG_PM_ADVANCED_DEBUG=y
|
||||
+CONFIG_APM_EMULATION=y
|
||||
+
|
||||
+CONFIG_NET=y
|
||||
+CONFIG_DUMMY=m
|
||||
+CONFIG_PACKET=y
|
||||
+CONFIG_UNIX=y
|
||||
+CONFIG_INET=y
|
||||
+CONFIG_IP_PNP=y
|
||||
+CONFIG_IP_PNP_DHCP=y
|
||||
+CONFIG_IP_PNP_BOOTP=y
|
||||
+CONFIG_IP_PNP_RARP=y
|
||||
+CONFIG_IPV6_ROUTER_PREF=y
|
||||
+CONFIG_IPV6_OPTIMISTIC_DAD=y
|
||||
+CONFIG_INET6_AH=m
|
||||
+CONFIG_INET6_ESP=m
|
||||
+CONFIG_INET6_IPCOMP=m
|
||||
+CONFIG_IPV6_MIP6=m
|
||||
+CONFIG_IPV6_TUNNEL=m
|
||||
+CONFIG_IPV6_MULTIPLE_TABLES=y
|
||||
+CONFIG_BRIDGE=y
|
||||
+CONFIG_NET_DSA=y
|
||||
+CONFIG_VLAN_8021Q=y
|
||||
+CONFIG_NETLINK_DIAG=y
|
||||
+CONFIG_INET_UDP_DIAG=m
|
||||
+CONFIG_NET_IPIP=m
|
||||
+CONFIG_IP_MULTICAST=y
|
||||
+CONFIG_IP_MROUTE=y
|
||||
+CONFIG_IP_PIMSM_V1=y
|
||||
+CONFIG_IP_PIMSM_V2=y
|
||||
+
|
||||
+#added for lxc
|
||||
+CONFIG_UNIX_DIAG=m
|
||||
+CONFIG_PACKET_DIAG=m
|
||||
+
|
||||
+
|
||||
+CONFIG_IPV6=m
|
||||
+CONFIG_NETFILTER=y
|
||||
+CONFIG_NF_CONNTRACK=m
|
||||
+CONFIG_NF_CONNTRACK_IPV4=m
|
||||
+CONFIG_NF_CONNTRACK_IPV6=m
|
||||
+CONFIG_NETFILTER_NETLINK=m
|
||||
+CONFIG_NF_CT_NETLINK=m
|
||||
+CONFIG_IP_NF_IPTABLES=m
|
||||
+CONFIG_NF_LOG_IPV4=m
|
||||
+CONFIG_NF_REJECT_IPV4=m
|
||||
+CONFIG_IP6_NF_IPTABLES=m
|
||||
+CONFIG_NF_LOG_IPV6=m
|
||||
+CONFIG_NF_REJECT_IPV6=m
|
||||
+CONFIG_IP_NF_NAT=m
|
||||
+CONFIG_IP6_NF_NAT=m
|
||||
+CONFIG_NF_NAT_MASQUERADE_IPV4=m
|
||||
+CONFIG_NF_NAT_MASQUERADE_IPV6=m
|
||||
+CONFIG_IP_NF_FILTER=m
|
||||
+CONFIG_IP6_NF_FILTER=m
|
||||
+CONFIG_IP_NF_TARGET_MASQUERADE=m
|
||||
+CONFIG_IP6_NF_TARGET_MASQUERADE=m
|
||||
+CONFIG_IP_NF_MANGLE=m
|
||||
+CONFIG_IP6_NF_MANGLE=m
|
||||
+CONFIG_IP_NF_TARGET_REJECT=m
|
||||
+CONFIG_IP6_NF_TARGET_REJECT=m
|
||||
+CONFIG_IP6_NF_MATCH_RT=m
|
||||
+
|
||||
+CONFIG_NETFILTER_SYNPROXY=m
|
||||
+CONFIG_IP_NF_TARGET_SYNPROXY=m
|
||||
+CONFIG_IP6_NF_TARGET_SYNPROXY=m
|
||||
+
|
||||
+CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m
|
||||
+CONFIG_NETFILTER_XT_MATCH_LIMIT=m
|
||||
+CONFIG_NETFILTER_XT_MATCH_STATE=m
|
||||
+CONFIG_NETFILTER_XT_TARGET_LOG=m
|
||||
+CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m
|
||||
+CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
|
||||
+CONFIG_NETFILTER_XT_MATCH_MAC=m
|
||||
+CONFIG_NETFILTER_XT_MATCH_RECENT=m
|
||||
+CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
|
||||
+CONFIG_NETFILTER_XT_MARK=m
|
||||
+CONFIG_NETFILTER_XT_CONNMARK=m
|
||||
+CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m
|
||||
+CONFIG_IP_VS=m
|
||||
+CONFIG_NETFILTER_XT_MATCH_IPVS=m
|
||||
+CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
|
||||
+
|
||||
+CONFIG_NET_MEDIATEK_HNAT=m
|
||||
+CONFIG_DEBUG_SECTION_MISMATCH=y
|
||||
+
|
||||
+#active ftp-support
|
||||
+CONFIG_NF_CONNTRACK_FTP=m
|
||||
+CONFIG_NF_NAT_FTP=m
|
||||
+
|
||||
+
|
||||
+CONFIG_SYN_COOKIES=y
|
||||
+
|
||||
+CONFIG_PPP=m
|
||||
+CONFIG_PPPOE=m
|
||||
+CONFIG_PPP_FILTER=y
|
||||
+CONFIG_PPP_DEFLATE=m
|
||||
+CONFIG_PPP_MPPE=m
|
||||
+
|
||||
+#veth for lxc
|
||||
+CONFIG_VETH=m
|
||||
+
|
||||
+#for systemd
|
||||
+CONFIG_AF_KCM=y
|
||||
+CONFIG_CGROUP_BPF=y
|
||||
+
|
||||
+CONFIG_DEVTMPFS=y
|
||||
+CONFIG_DEVTMPFS_MOUNT=y
|
||||
+CONFIG_DMA_CMA=y
|
||||
+CONFIG_CMA_SIZE_MBYTES=64
|
||||
+CONFIG_ARM_CCI400_PMU=y
|
||||
+CONFIG_MTD=y
|
||||
+CONFIG_OF_OVERLAY=y
|
||||
+CONFIG_CONFIGFS_FS=m
|
||||
+CONFIG_BLK_DEV_LOOP=y
|
||||
+CONFIG_SRAM=y
|
||||
+CONFIG_EEPROM_93CX6=y
|
||||
+CONFIG_IDE=y
|
||||
+CONFIG_BLK_DEV_SD=y
|
||||
+CONFIG_ATA=y
|
||||
+CONFIG_SATA_AHCI=y
|
||||
+CONFIG_AHCI_MTK=m
|
||||
+
|
||||
+CONFIG_NETDEVICES=y
|
||||
+CONFIG_NET_DSA_MT7530=y
|
||||
+CONFIG_NET_VENDOR_MEDIATEK=y
|
||||
+CONFIG_NET_MEDIATEK_SOC=y
|
||||
+
|
||||
+CONFIG_ICPLUS_PHY=y
|
||||
+CONFIG_INPUT_EVDEV=y
|
||||
+CONFIG_INPUT_EVBUG=m
|
||||
+CONFIG_KEYBOARD_MATRIX=y
|
||||
+CONFIG_KEYBOARD_SAMSUNG=y
|
||||
+CONFIG_KEYBOARD_MTK_PMIC=m
|
||||
+CONFIG_MOUSE_PS2_ELANTECH=y
|
||||
+CONFIG_MOUSE_PS2_SENTELIC=y
|
||||
+CONFIG_INPUT_MOUSEDEV=y
|
||||
+CONFIG_INPUT_MOUSEDEV_PSAUX=y
|
||||
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
|
||||
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
|
||||
+CONFIG_INPUT_TOUCHSCREEN=y
|
||||
+# CONFIG_SERIO_SERPORT is not set
|
||||
+CONFIG_VT_HW_CONSOLE_BINDING=y
|
||||
+CONFIG_SERIAL_8250=y
|
||||
+CONFIG_SERIAL_8250_CONSOLE=y
|
||||
+CONFIG_SERIAL_8250_NR_UARTS=4
|
||||
+CONFIG_SERIAL_8250_RUNTIME_UARTS=4
|
||||
+CONFIG_SERIAL_8250_MT6577=y
|
||||
+CONFIG_SERIAL_8250_BTIF=y
|
||||
+CONFIG_HW_RANDOM=y
|
||||
+CONFIG_I2C=y
|
||||
+CONFIG_I2C_MT65XX=y
|
||||
+CONFIG_PINCTRL_MT2701=y
|
||||
+# CONFIG_PINCTRL_MT6397 is not set
|
||||
+# CONFIG_HWMON is not set
|
||||
+CONFIG_WATCHDOG=y
|
||||
+CONFIG_MEDIATEK_WATCHDOG=y
|
||||
+CONFIG_MFD_MT6397=y
|
||||
+CONFIG_REGULATOR=y
|
||||
+CONFIG_REGULATOR_MT6323=y
|
||||
+CONFIG_REGULATOR_FIXED_VOLTAGE=y
|
||||
+CONFIG_MEDIA_SUPPORT=y
|
||||
+CONFIG_MEDIA_RC_SUPPORT=y
|
||||
+CONFIG_RC_DEVICES=y
|
||||
+CONFIG_IR_MTK=y
|
||||
+CONFIG_MMC=y
|
||||
+CONFIG_MMC_MTK=y
|
||||
+CONFIG_NEW_LEDS=y
|
||||
+CONFIG_LEDS_CLASS=y
|
||||
+CONFIG_LEDS_MT6323=y
|
||||
+CONFIG_LEDS_GPIO=y
|
||||
+CONFIG_LEDS_PCA963X=y
|
||||
+CONFIG_LEDS_TRIGGERS=y
|
||||
+CONFIG_LEDS_TRIGGER_TIMER=y
|
||||
+CONFIG_LEDS_TRIGGER_ONESHOT=y
|
||||
+CONFIG_LEDS_TRIGGER_HEARTBEAT=y
|
||||
+CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
|
||||
+CONFIG_DMADEVICES=y
|
||||
+CONFIG_DMATEST=m
|
||||
+CONFIG_COMMON_CLK_MT2701_HIFSYS=y
|
||||
+CONFIG_COMMON_CLK_MT2701_ETHSYS=y
|
||||
+CONFIG_ARM_TIMER_SP804=y
|
||||
+CONFIG_MTK_IOMMU_V1=y
|
||||
+CONFIG_MTK_PMIC_WRAP=y
|
||||
+CONFIG_IIO=y
|
||||
+CONFIG_RESET_CONTROLLER=y
|
||||
+CONFIG_PHY_MT65XX_USB3=y
|
||||
+CONFIG_PSTORE=y
|
||||
+CONFIG_PSTORE_CONSOLE=y
|
||||
+CONFIG_PSTORE_PMSG=y
|
||||
+CONFIG_PSTORE_FTRACE=y
|
||||
+CONFIG_PSTORE_RAM=y
|
||||
+CONFIG_PRINTK_TIME=y
|
||||
+CONFIG_DYNAMIC_DEBUG=y
|
||||
+CONFIG_DEBUG_INFO=y
|
||||
+CONFIG_MAGIC_SYSRQ=y
|
||||
+CONFIG_DETECT_HUNG_TASK=y
|
||||
+CONFIG_DEBUG_LIST=y
|
||||
+CONFIG_FUNCTION_TRACER=y
|
||||
+CONFIG_FTRACE_SYSCALLS=y
|
||||
+CONFIG_FUNCTION_PROFILER=y
|
||||
+CONFIG_DEBUG_LL=y
|
||||
+CONFIG_DEBUG_UART_PHYS=0x11002000
|
||||
+CONFIG_DEBUG_UART_VIRT=0xf1002000
|
||||
+CONFIG_KEYS=y
|
||||
+CONFIG_CRYPTO_RSA=y
|
||||
+CONFIG_CRYPTO_CCM=m
|
||||
+CONFIG_CRYPTO_GCM=m
|
||||
+CONFIG_CRYPTO_ECB=m
|
||||
+CONFIG_CRYPTO_CMAC=m
|
||||
+CONFIG_CRYPTO_ARC4=m
|
||||
+CONFIG_CRYPTO_DEFLATE=y
|
||||
+CONFIG_CRYPTO_LZO=y
|
||||
+CONFIG_CRC_CCITT=m
|
||||
+CONFIG_CRC_ITU_T=m
|
||||
+CONFIG_CRYPTO_DEV_MEDIATEK=y
|
||||
+
|
||||
+#ARM Accelerated Cryptographic Algorithms
|
||||
+CONFIG_ARM_CRYPTO=y
|
||||
+CONFIG_CRYPTO_SHA1_ARM=m
|
||||
+CONFIG_CRYPTO_SHA1_ARM_NEON=m
|
||||
+CONFIG_CRYPTO_SHA1_ARM_CE=m
|
||||
+CONFIG_CRYPTO_SHA2_ARM_CE=m
|
||||
+CONFIG_CRYPTO_SHA512_ARM=m
|
||||
+CONFIG_CRYPTO_AES_ARM=m
|
||||
+CONFIG_CRYPTO_AES_ARM_BS=m
|
||||
+CONFIG_CRYPTO_AES_ARM_CE=m
|
||||
+CONFIG_CRYPTO_GHASH_ARM_CE=m
|
||||
+CONFIG_CRYPTO_CRC32_ARM_CE=m
|
||||
+CONFIG_CRYPTO_CHACHA20_NEON=m
|
||||
+
|
||||
+#LVM
|
||||
+CONFIG_MD=y
|
||||
+CONFIG_BLK_DEV_DM=y
|
||||
+CONFIG_DM_BUFIO=y
|
||||
+CONFIG_DM_CRYPT=y
|
||||
+CONFIG_DM_SNAPSHOT=y
|
||||
+CONFIG_DM_MIRROR=y
|
||||
+CONFIG_DM_MULTIPATH=y
|
||||
+CONFIG_DM_MULTIPATH_QL=y
|
||||
+CONFIG_DM_MULTIPATH_ST=y
|
||||
+CONFIG_DM_THIN_PROVISIONING=m
|
||||
+CONFIG_DAX=y
|
||||
+CONFIG_CRYPTO_CBC=y
|
||||
+
|
||||
+#RAID
|
||||
+CONFIG_DM_RAID=y
|
||||
+CONFIG_MD_RAID0=y
|
||||
+CONFIG_MD_RAID1=y
|
||||
+CONFIG_MD_RAID10=y
|
||||
+CONFIG_MD_RAID456=y
|
||||
+
|
||||
+#RamFS
|
||||
+#CONFIG_INITRAMFS_SOURCE="../rootfs_ttys0_rng.cpio.gz"
|
||||
+#CONFIG_INITRAMFS_SOURCE="../initramfs.cpio"
|
||||
+#CONFIG_INITRAMFS_FORCE=y
|
||||
+
|
||||
+#Filesystem
|
||||
+CONFIG_EXT4_FS=y
|
||||
+CONFIG_EXT4_FS_POSIX_ACL=y
|
||||
+CONFIG_EXT4_FS_SECURITY=y
|
||||
+CONFIG_AUTOFS4_FS=y
|
||||
+CONFIG_FUSE_FS=m
|
||||
+CONFIG_MSDOS_FS=m
|
||||
+CONFIG_VFAT_FS=y
|
||||
+CONFIG_NTFS_FS=m
|
||||
+CONFIG_TMPFS=y
|
||||
+CONFIG_TMPFS_POSIX_ACL=y
|
||||
+CONFIG_NLS_CODEPAGE_437=y
|
||||
+CONFIG_NLS_ISO8859_1=y
|
||||
+CONFIG_NLS_UTF8=y
|
||||
+CONFIG_CIFS=m
|
||||
+CONFIG_F2FS_FS=m
|
||||
+CONFIG_BTRFS_FS=m
|
||||
+
|
||||
+#GPIO
|
||||
+CONFIG_DEBUG_FS=y
|
||||
+CONFIG_DEBUG_GPIO=y
|
||||
+CONFIG_GPIO_SYSFS=y
|
||||
+
|
||||
+#wlan
|
||||
+CONFIG_MAC80211=y
|
||||
+CONFIG_CFG80211=y
|
||||
+
|
||||
+#internal wlan (not working yet)
|
||||
+# CONFIG_MTK_CONN_LTE_IDC_SUPPORT is not set
|
||||
+#CONFIG_MTK_COMBO=y
|
||||
+#CONFIG_MTK_COMBO_CHIP_CONSYS_7623=y
|
||||
+#used in 4.4, but should be set in Kconfig by selecting mt7623 COMBO
|
||||
+#CONFIG_MTK_PLATFORM="mt7623"
|
||||
+
|
||||
+#CONFIG_MTK_COMBO_COMM=y
|
||||
+#CONFIG_MTK_COMBO_WIFI=y
|
||||
+#CONFIG_NL80211_TESTMODE=y
|
||||
+
|
||||
+#internal Bluetooth (also not working yet)
|
||||
+#CONFIG_BT=y
|
||||
+#CONFIG_MTK_COMBO_BT=y
|
||||
+#CONFIG_MTK_COMBO_BT_HCI=y
|
||||
+#needed for BT?
|
||||
+#Bluetooth Classic (BR/EDR) features
|
||||
+CONFIG_BT_BREDR=y
|
||||
+#Bluetooth High Speed (HS) features
|
||||
+CONFIG_BT_HS=y
|
||||
+#Bluetooth Low Energy (LE) features
|
||||
+CONFIG_BT_LE=y
|
||||
+#Export Bluetooth internals in debugfs
|
||||
+CONFIG_BT_DEBUGFS=y
|
||||
+CONFIG_BT_RFCOMM=m
|
||||
+CONFIG_BT_RFCOMM_TTY=y
|
||||
+CONFIG_BT_HIDP=m
|
||||
+CONFIG_BT_BNEP=m
|
||||
+
|
||||
+#to run bluetoothd rfkill needed
|
||||
+CONFIG_RFKILL=y
|
||||
+CONFIG_RFKILL_LEDS=y
|
||||
+CONFIG_RFKILL_INPUT=y
|
||||
+CONFIG_RFKILL_GPIO=y
|
||||
+
|
||||
+#if you use a mt76x2 or mt76x3 pcie-card
|
||||
+#CONFIG_MT76=m
|
||||
+
|
||||
+#pcie
|
||||
+CONFIG_PCIEPORTBUS=y
|
||||
+CONFIG_PCIE_MEDIATEK=y
|
||||
+CONFIG_PHY_MTK_TPHY=y
|
||||
+
|
||||
+CONFIG_I2C_CHARDEV=m
|
||||
+CONFIG_RTC_CLASS=y
|
||||
+CONFIG_RTC_DRV_DS1307=m
|
||||
+CONFIG_RTC_DRV_DS1307_CENTURY=y
|
||||
+CONFIG_RTC_DRV_MT6397=m
|
||||
+
|
||||
+CONFIG_SPI=y
|
||||
+CONFIG_SPI_MASTER=y
|
||||
+CONFIG_SPI_SPIDEV=m
|
||||
+CONFIG_SPI_MT65XX=m
|
||||
+
|
||||
+CONFIG_PWM=y
|
||||
+CONFIG_PWM_MEDIATEK=m
|
||||
+
|
||||
+#Temperature sensor driver for mediatek SoCs
|
||||
+CONFIG_MEDIATEK_MT6577_AUXADC=m
|
||||
+CONFIG_THERMAL=m
|
||||
+CONFIG_MTK_THERMAL=m
|
||||
+CONFIG_MTK_EFUSE=m
|
||||
+
|
||||
+#HDMI
|
||||
+#CONFIG_DRM=y
|
||||
+#CONFIG_DRM_ARM=y
|
||||
+#CONFIG_DRM_MALI_DISPLAY=y
|
||||
+#CONFIG_DRM_MEDIATEK=y
|
||||
+#CONFIG_DRM_MEDIATEK_HDMI=y
|
||||
+#CONFIG_COMMON_CLK_MT2701_MMSYS=y
|
||||
+#CONFIG_COMMON_CLK_MT2701_IMGSYS=y
|
||||
+#CONFIG_COMMON_CLK_MT2701_VDECSYS=y
|
||||
+#CONFIG_FRAMEBUFFER_CONSOLE=y
|
||||
+#CONFIG_DRM_FBDEV_EMULATION=y
|
||||
+
|
||||
+#Sound
|
||||
+CONFIG_SOUND=y
|
||||
+CONFIG_SND=y #alsa core
|
||||
+CONFIG_SND_SOC=y
|
||||
+
|
||||
+#CONFIG_SOUND_OSS_CORE=y
|
||||
+#CONFIG_SOUND_OSS_CORE_PRECLAIM=y
|
||||
+#CONFIG_SND_OSSEMUL=y
|
||||
+#CONFIG_SND_MIXER_OSS=m
|
||||
+#CONFIG_SND_PCM_OSS=m #alsa The PCM OSS emulation module.
|
||||
+
|
||||
+#USB/HID
|
||||
+CONFIG_USB=y
|
||||
+CONFIG_USB_XHCI_HCD=y
|
||||
+CONFIG_USB_XHCI_MTK=y
|
||||
+CONFIG_USB_STORAGE=y
|
||||
+CONFIG_USB_SERIAL=y
|
||||
+#CONFIG_NOP_USB_XCEIV=y
|
||||
+#CONFIG_USB_GPIO_VBUS=y
|
||||
+#CONFIG_USB_GADGET=y
|
||||
+#CONFIG_USB_CONFIGFS=y
|
||||
+CONFIG_USB_CONFIGFS_SERIAL=y
|
||||
+#CONFIG_USB_CONFIGFS_ACM=y
|
||||
+#CONFIG_USB_CONFIGFS_OBEX=y
|
||||
+#CONFIG_USB_CONFIGFS_NCM=y
|
||||
+#CONFIG_USB_CONFIGFS_ECM=y
|
||||
+#CONFIG_USB_CONFIGFS_ECM_SUBSET=y
|
||||
+#CONFIG_USB_CONFIGFS_RNDIS=y
|
||||
+#CONFIG_USB_CONFIGFS_EEM=y
|
||||
+CONFIG_USB_CONFIGFS_MASS_STORAGE=y
|
||||
+
|
||||
+CONFIG_HID=y
|
||||
+CONFIG_HIDRAW=y
|
||||
+#CONFIG_UHID=m
|
||||
+CONFIG_HID_GENERIC=y
|
||||
+
|
||||
+CONFIG_USB_HID=y
|
||||
+#CONFIG_HID_PID=y
|
||||
+CONFIG_USB_HIDDEV=y
|
||||
+
|
||||
+# CONFIG_USB_OHCI_LITTLE_ENDIAN=y ?
|
||||
+CONFIG_USB_SUPPORT=y
|
||||
+CONFIG_USB_COMMON=y
|
||||
+# CONFIG_USB_ARCH_HAS_HCD=y ?
|
||||
+
|
||||
+#additional NET (e.g. tunneling incl. openvpn,vlan-base-support)
|
||||
+CONFIG_TUN=m
|
||||
+#vlan
|
||||
+CONFIG_BRIDGE_VLAN_FILTERING=y
|
||||
+CONFIG_VLAN_8021Q_GVRP=y
|
||||
+CONFIG_VLAN_8021Q_MVRP=y
|
||||
+CONFIG_NET_L3_MASTER_DEV=y
|
||||
+CONFIG_IPVLAN=m
|
||||
+CONFIG_MACVLAN=m
|
||||
+CONFIG_NET_ACT_VLAN=m
|
||||
+CONFIG_NET_CLS_ACT=y
|
||||
+
|
||||
+# QoS and/or fair queueing
|
||||
+CONFIG_NET_SCHED=y
|
||||
+CONFIG_NET_SCH_CBQ=m
|
||||
+CONFIG_NET_SCH_HTB=m
|
||||
+CONFIG_NET_SCH_CSZ=m
|
||||
+CONFIG_NET_SCH_PRIO=m
|
||||
+CONFIG_NET_SCH_RED=m
|
||||
+CONFIG_NET_SCH_SFQ=m
|
||||
+CONFIG_NET_SCH_TEQL=m
|
||||
+CONFIG_NET_SCH_TBF=m
|
||||
+CONFIG_NET_SCH_GRED=m
|
||||
+CONFIG_NET_SCH_DSMARK=m
|
||||
+CONFIG_NET_SCH_INGRESS=m
|
||||
+CONFIG_NET_SCH_NETEM=m
|
||||
+CONFIG_NET_QOS=y
|
||||
+CONFIG_NET_ESTIMATOR=y
|
||||
+CONFIG_NET_CLS=y
|
||||
+CONFIG_NET_CLS_TCINDEX=m
|
||||
+CONFIG_NET_CLS_ROUTE4=m
|
||||
+CONFIG_NET_CLS_ROUTE=y
|
||||
+CONFIG_NET_CLS_FW=m
|
||||
+CONFIG_NET_CLS_U32=m
|
||||
+CONFIG_NET_CLS_RSVP=m
|
||||
+CONFIG_NET_CLS_RSVP6=m
|
||||
+CONFIG_NET_CLS_POLICE=y
|
||||
+
|
||||
+#unused drivers which are set by default
|
||||
+CONFIG_WLAN_VENDOR_ADMTEK=n
|
||||
+CONFIG_WLAN_VENDOR_ATH=n
|
||||
+CONFIG_WLAN_VENDOR_ATMEL=n
|
||||
+CONFIG_WLAN_VENDOR_BROADCOM=n
|
||||
+CONFIG_WLAN_VENDOR_CISCO=n
|
||||
+CONFIG_WLAN_VENDOR_INTEL=n
|
||||
+CONFIG_WLAN_VENDOR_INTERSIL=n
|
||||
+CONFIG_WLAN_VENDOR_MARVELL=n
|
||||
+CONFIG_WLAN_VENDOR_REALTEK=n
|
||||
+CONFIG_WLAN_VENDOR_RALINK=n
|
||||
+CONFIG_WLAN_VENDOR_RSI=n
|
||||
+CONFIG_WLAN_VENDOR_ST=n
|
||||
+CONFIG_WLAN_VENDOR_TI=n
|
||||
+CONFIG_WLAN_VENDOR_ZYDAS=n
|
||||
+CONFIG_WLAN_VENDOR_QUANTENNA=n
|
||||
+# CONFIG_ADAPTEC_STARFIRE is not set
|
||||
+# CONFIG_NET_VENDOR_ADAPTEC is not set
|
||||
+# CONFIG_NET_VENDOR_AGERE is not set
|
||||
+# CONFIG_NET_VENDOR_ALACRITECH is not set
|
||||
+# CONFIG_NET_VENDOR_ALTEON is not set
|
||||
+# CONFIG_NET_VENDOR_AMAZON is not set
|
||||
+# CONFIG_NET_VENDOR_AMD is not set
|
||||
+# CONFIG_NET_VENDOR_AQUANTIA is not set
|
||||
+# CONFIG_NET_VENDOR_ARC is not set
|
||||
+# CONFIG_NET_VENDOR_ATHEROS is not set
|
||||
+# CONFIG_NET_VENDOR_AURORA is not set
|
||||
+# CONFIG_NET_CADENCE is not set
|
||||
+# CONFIG_NET_VENDOR_BROADCOM is not set
|
||||
+# CONFIG_NET_VENDOR_BROCADE is not set
|
||||
+# CONFIG_NET_VENDOR_CAVIUM is not set
|
||||
+# CONFIG_NET_VENDOR_CHELSIO is not set
|
||||
+# CONFIG_NET_VENDOR_CIRRUS is not set
|
||||
+# CONFIG_NET_VENDOR_CISCO is not set
|
||||
+# CONFIG_NET_VENDOR_MELLANOX is not set
|
||||
+# CONFIG_NET_VENDOR_MICREL is not set
|
||||
+# CONFIG_NET_VENDOR_MICROCHIP is not set
|
||||
+# CONFIG_NET_VENDOR_MYRI is not set
|
||||
+# CONFIG_NET_VENDOR_NATSEMI is not set
|
||||
+# CONFIG_NET_VENDOR_NETRONOME is not set
|
||||
+# CONFIG_NET_VENDOR_NVIDIA is not set
|
||||
+# CONFIG_NET_VENDOR_OKI is not set
|
||||
+# CONFIG_NET_PACKET_ENGINE is not set
|
||||
+# CONFIG_NET_VENDOR_QLOGIC is not set
|
||||
+# CONFIG_NET_VENDOR_QUALCOMM is not set
|
||||
+# CONFIG_NET_VENDOR_REALTEK is not set
|
||||
+# CONFIG_NET_VENDOR_RENESAS is not set
|
||||
+# CONFIG_NET_VENDOR_RDC is not set
|
||||
+# CONFIG_NET_VENDOR_ROCKER is not set
|
||||
+# CONFIG_NET_VENDOR_SAMSUNG is not set
|
||||
+# CONFIG_NET_VENDOR_SEEQ is not set
|
||||
+# CONFIG_NET_VENDOR_SILAN is not set
|
||||
+# CONFIG_NET_VENDOR_SIS is not set
|
||||
+# CONFIG_NET_VENDOR_SOLARFLARE is not set
|
||||
+# CONFIG_NET_VENDOR_SMSC is not set
|
||||
+# CONFIG_NET_VENDOR_STMICRO is not set
|
||||
+# CONFIG_NET_VENDOR_SUN is not set
|
||||
+# CONFIG_NET_VENDOR_TEHUTI is not set
|
||||
+# CONFIG_NET_VENDOR_TI is not set
|
||||
+# CONFIG_NET_VENDOR_VIA is not set
|
||||
+# CONFIG_NET_VENDOR_WIZNET is not set
|
||||
+# CONFIG_NET_VENDOR_SYNOPSYS is not set
|
||||
+# CONFIG_NET_VENDOR_DEC is not set
|
||||
+# CONFIG_NET_VENDOR_DLINK is not set
|
||||
+# CONFIG_NET_VENDOR_EMULEX is not set
|
||||
+# CONFIG_NET_VENDOR_EZCHIP is not set
|
||||
+# CONFIG_NET_VENDOR_EXAR is not set
|
||||
+# CONFIG_NET_VENDOR_FARADAY is not set
|
||||
+# CONFIG_NET_VENDOR_HISILICON is not set
|
||||
+# CONFIG_NET_VENDOR_HP is not set
|
||||
+# CONFIG_NET_VENDOR_HUAWEI is not set
|
||||
+# CONFIG_NET_VENDOR_INTEL is not set
|
||||
+# CONFIG_NET_VENDOR_MARVELL is not set
|
||||
+# CONFIG_NET_VENDOR_3COM is not set
|
||||
+
|
||||
+#NFS Client
|
||||
+CONFIG_NFS_FS=y
|
||||
+CONFIG_NFS_V2=y
|
||||
+CONFIG_NFS_V3=y
|
||||
+CONFIG_NFS_V3_ACL=y
|
||||
+CONFIG_NFS_V4=y
|
||||
+CONFIG_NFS_SWAP=y
|
||||
+CONFIG_NFS_V4_1=y
|
||||
+CONFIG_NFS_V4_2=y
|
||||
+CONFIG_PNFS_FILE_LAYOUT=m
|
||||
+CONFIG_PNFS_BLOCK=m
|
||||
+CONFIG_PNFS_FLEXFILE_LAYOUT=m
|
||||
+CONFIG_NFS_V4_1_IMPLEMENTATION_ID_DOMAIN="kernel.org"
|
||||
+CONFIG_NFS_V4_1_MIGRATION=y
|
||||
+CONFIG_NFS_USE_LEGACY_DNS=y
|
||||
+
|
||||
+#NFS Server
|
||||
+CONFIG_NFSD=m
|
||||
+CONFIG_NFSD_V2_ACL=y
|
||||
+CONFIG_NFSD_V3=y
|
||||
+CONFIG_NFSD_V3_ACL=y
|
||||
+CONFIG_NFSD_V4=y
|
||||
+CONFIG_NFSD_PNFS=y
|
||||
+CONFIG_NFSD_BLOCKLAYOUT=y
|
||||
+CONFIG_NFSD_SCSILAYOUT=y
|
||||
+CONFIG_NFSD_FLEXFILELAYOUT=y
|
||||
+CONFIG_NFSD_FAULT_INJECTION=y
|
||||
+CONFIG_NFS_ACL_SUPPORT=m
|
||||
+CONFIG_NFS_COMMON=y
|
||||
+
|
||||
+CONFIG_ROOT_NFS=y
|
||||
+
|
||||
+#xfs
|
||||
+CONFIG_XFS_FS=m
|
||||
+
|
||||
+#RTC/POWER
|
||||
+CONFIG_POWER_RESET=y
|
||||
+CONFIG_POWER_RESET_MT6323=y
|
||||
+CONFIG_POWER_RESET_MT6397_RTC=y
|
||||
+
|
||||
+#CONFIG_NET_MEDIATEK_HW_QOS=m
|
||||
+
|
||||
--
|
||||
2.19.1
|
||||
|
216265
root/target/linux/mediatek/patches-4.19/0006-wifi-adding-driver-folder.patch
Executable file
216265
root/target/linux/mediatek/patches-4.19/0006-wifi-adding-driver-folder.patch
Executable file
File diff suppressed because it is too large
Load diff
|
@ -0,0 +1,846 @@
|
|||
From 83ffbaceffed1cd47a6f67fb20e39737dfb2d01a Mon Sep 17 00:00:00 2001
|
||||
From: Frank Wunderlich <frank-w@public-files.de>
|
||||
Date: Tue, 28 Aug 2018 18:14:56 +0200
|
||||
Subject: [PATCH 07/77] [wifi] adding wifi-related changes outside
|
||||
driver-directory
|
||||
|
||||
---
|
||||
arch/arm/boot/dts/mt7623.dtsi | 41 +-
|
||||
arch/arm/boot/dts/mt7623n-bananapi-bpi-r2.dts | 42 ++
|
||||
drivers/soc/mediatek/mtk-pmic-wrap.c | 12 +
|
||||
drivers/watchdog/mtk_wdt.c | 377 +++++++++++++++++-
|
||||
include/linux/wakelock.h | 67 ++++
|
||||
include/net/genetlink.h | 44 ++
|
||||
include/soc/mediatek/pmic_wrap.h | 19 +
|
||||
include/uapi/linux/genetlink.h | 1 +
|
||||
8 files changed, 588 insertions(+), 15 deletions(-)
|
||||
create mode 100644 include/linux/wakelock.h
|
||||
create mode 100644 include/soc/mediatek/pmic_wrap.h
|
||||
|
||||
diff --git a/arch/arm/boot/dts/mt7623.dtsi b/arch/arm/boot/dts/mt7623.dtsi
|
||||
index 04228cf9ddbb..af6b6228f8a8 100644
|
||||
--- a/arch/arm/boot/dts/mt7623.dtsi
|
||||
+++ b/arch/arm/boot/dts/mt7623.dtsi
|
||||
@@ -266,6 +266,8 @@
|
||||
compatible = "mediatek,mt7623-wdt",
|
||||
"mediatek,mt6589-wdt";
|
||||
reg = <0 0x10007000 0 0x100>;
|
||||
+ interrupts = <GIC_SPI 88 IRQ_TYPE_EDGE_FALLING>;
|
||||
+ #reset-cells = <1>;
|
||||
};
|
||||
|
||||
timer: timer@10008000 {
|
||||
@@ -494,13 +496,26 @@
|
||||
"mediatek,mtk-btif";
|
||||
reg = <0 0x1100c000 0 0x1000>;
|
||||
interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_LOW>;
|
||||
- clocks = <&pericfg CLK_PERI_BTIF>;
|
||||
- clock-names = "main";
|
||||
+ clocks = <&pericfg CLK_PERI_BTIF>, <&pericfg CLK_PERI_AP_DMA>;
|
||||
+ clock-names = "main", "apdmac";
|
||||
reg-shift = <2>;
|
||||
reg-io-width = <4>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
+ btif_tx: btif_tx@11000780 {
|
||||
+ compatible = "mediatek,btif_tx";
|
||||
+ reg = <0 0x11000780 0 0x80>;
|
||||
+ interrupts = <GIC_SPI 71 IRQ_TYPE_LEVEL_LOW>;
|
||||
+ status = "okay";
|
||||
+ };
|
||||
+ btif_rx: btif_rx@11000800 {
|
||||
+ compatible = "mediatek,btif_rx";
|
||||
+ reg = <0 0x11000800 0 0x80>;
|
||||
+ interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_LOW>;
|
||||
+ status = "okay";
|
||||
+ };
|
||||
+
|
||||
nandc: nfi@1100d000 {
|
||||
compatible = "mediatek,mt7623-nfc",
|
||||
"mediatek,mt2701-nfc";
|
||||
@@ -683,6 +698,28 @@
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
+ consys: consys@18070000 {
|
||||
+ compatible = "mediatek,mt7623-consys";
|
||||
+ reg = <0 0x18070000 0 0x0200>, /*CONN_MCU_CONFIG_BASE */
|
||||
+ <0 0x10001000 0 0x1600>; /*TOPCKGEN_BASE */
|
||||
+ clocks = <&infracfg CLK_INFRA_CONNMCU>;
|
||||
+ clock-names = "consysbus";
|
||||
+ power-domains = <&scpsys MT2701_POWER_DOMAIN_CONN>;
|
||||
+ interrupts = <GIC_SPI 185 IRQ_TYPE_LEVEL_LOW>, /* BGF_EINT */
|
||||
+ <GIC_SPI 163 IRQ_TYPE_LEVEL_LOW>; /* WDT_EINT */
|
||||
+ resets = <&watchdog MT2701_TOPRGU_CONN_MCU_RST>;
|
||||
+ reset-names = "connsys";
|
||||
+ status="disabled";
|
||||
+ };
|
||||
+ wifi:wifi@180f0000 {
|
||||
+ compatible = "mediatek,mt7623-wifi",
|
||||
+ "mediatek,wifi";
|
||||
+ reg = <0 0x180f0000 0 0x005c>;
|
||||
+ interrupts = <GIC_SPI 184 IRQ_TYPE_LEVEL_LOW>;
|
||||
+ clocks = <&pericfg CLK_PERI_AP_DMA>;
|
||||
+ clock-names = "wifi-dma";
|
||||
+ };
|
||||
+
|
||||
hifsys: syscon@1a000000 {
|
||||
compatible = "mediatek,mt7623-hifsys",
|
||||
"mediatek,mt2701-hifsys",
|
||||
diff --git a/arch/arm/boot/dts/mt7623n-bananapi-bpi-r2.dts b/arch/arm/boot/dts/mt7623n-bananapi-bpi-r2.dts
|
||||
index 2b760f90f38c..465fb887b2ca 100644
|
||||
--- a/arch/arm/boot/dts/mt7623n-bananapi-bpi-r2.dts
|
||||
+++ b/arch/arm/boot/dts/mt7623n-bananapi-bpi-r2.dts
|
||||
@@ -84,6 +84,18 @@
|
||||
};
|
||||
};
|
||||
|
||||
+ reserved-memory {
|
||||
+ #address-cells = <2>;
|
||||
+ #size-cells = <2>;
|
||||
+ ranges;
|
||||
+ consys-reserve-memory {
|
||||
+ compatible = "mediatek,consys-reserve-memory";
|
||||
+ no-map;
|
||||
+ size = <0 0x100000>;
|
||||
+ alignment = <0 0x100000>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
leds {
|
||||
compatible = "gpio-leds";
|
||||
pinctrl-names = "default";
|
||||
@@ -259,6 +271,36 @@
|
||||
};
|
||||
};
|
||||
|
||||
+&pio {
|
||||
+ consys_pins_default: consys_pins_default {
|
||||
+ adie {
|
||||
+ pinmux = <MT7623_PIN_60_WB_RSTB_FUNC_WB_RSTB>,
|
||||
+ <MT7623_PIN_61_GPIO61_FUNC_TEST_FD>,
|
||||
+ <MT7623_PIN_62_GPIO62_FUNC_TEST_FC>,
|
||||
+ <MT7623_PIN_63_WB_SCLK_FUNC_WB_SCLK>,
|
||||
+ <MT7623_PIN_64_WB_SDATA_FUNC_WB_SDATA>,
|
||||
+ <MT7623_PIN_65_WB_SEN_FUNC_WB_SEN>,
|
||||
+ <MT7623_PIN_66_WB_CRTL0_FUNC_WB_CRTL0>,
|
||||
+ <MT7623_PIN_67_WB_CRTL1_FUNC_WB_CRTL1>,
|
||||
+ <MT7623_PIN_68_WB_CRTL2_FUNC_WB_CRTL2>,
|
||||
+ <MT7623_PIN_69_WB_CRTL3_FUNC_WB_CRTL3>,
|
||||
+ <MT7623_PIN_70_WB_CRTL4_FUNC_WB_CRTL4>,
|
||||
+ <MT7623_PIN_71_WB_CRTL5_FUNC_WB_CRTL5>;
|
||||
+ bias-disable;
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
+&consys {
|
||||
+ mediatek,pwrap-regmap = <&pwrap>;
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&consys_pins_default>;
|
||||
+ vcn18-supply = <&mt6323_vcn18_reg>;
|
||||
+ vcn28-supply = <&mt6323_vcn28_reg>;
|
||||
+ vcn33_bt-supply = <&mt6323_vcn33_bt_reg>;
|
||||
+ vcn33_wifi-supply = <&mt6323_vcn33_wifi_reg>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
&pcie {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pcie_default>;
|
||||
diff --git a/drivers/soc/mediatek/mtk-pmic-wrap.c b/drivers/soc/mediatek/mtk-pmic-wrap.c
|
||||
index 4e931fdf4d09..6600396ee299 100644
|
||||
--- a/drivers/soc/mediatek/mtk-pmic-wrap.c
|
||||
+++ b/drivers/soc/mediatek/mtk-pmic-wrap.c
|
||||
@@ -1530,6 +1530,18 @@ static const struct of_device_id of_pwrap_match_tbl[] = {
|
||||
};
|
||||
MODULE_DEVICE_TABLE(of, of_pwrap_match_tbl);
|
||||
|
||||
+struct regmap *pwrap_node_to_regmap(struct device_node *np)
|
||||
+{
|
||||
+ struct platform_device *pdev;
|
||||
+ struct pmic_wrapper *wrp;
|
||||
+ pdev = of_find_device_by_node(np);
|
||||
+ if (!pdev)
|
||||
+ return ERR_PTR(-ENODEV);
|
||||
+ wrp = platform_get_drvdata(pdev);
|
||||
+ return wrp->regmap;
|
||||
+}
|
||||
+EXPORT_SYMBOL_GPL(pwrap_node_to_regmap);
|
||||
+
|
||||
static int pwrap_probe(struct platform_device *pdev)
|
||||
{
|
||||
int ret, irq;
|
||||
diff --git a/drivers/watchdog/mtk_wdt.c b/drivers/watchdog/mtk_wdt.c
|
||||
index 4baf64f21aa1..6a361f808aed 100644
|
||||
--- a/drivers/watchdog/mtk_wdt.c
|
||||
+++ b/drivers/watchdog/mtk_wdt.c
|
||||
@@ -1,4 +1,3 @@
|
||||
-// SPDX-License-Identifier: GPL-2.0+
|
||||
/*
|
||||
* Mediatek Watchdog Driver
|
||||
*
|
||||
@@ -6,20 +5,51 @@
|
||||
*
|
||||
* Matthias Brugger <matthias.bgg@gmail.com>
|
||||
*
|
||||
+ * This program is free software; you can redistribute it and/or modify
|
||||
+ * it under the terms of the GNU General Public License as published by
|
||||
+ * the Free Software Foundation; either version 2 of the License, or
|
||||
+ * (at your option) any later version.
|
||||
+ *
|
||||
+ * This program is distributed in the hope that it will be useful,
|
||||
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
+ * GNU General Public License for more details.
|
||||
+ *
|
||||
* Based on sunxi_wdt.c
|
||||
*/
|
||||
|
||||
#include <linux/err.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/io.h>
|
||||
+#include <linux/interrupt.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/moduleparam.h>
|
||||
+#include <linux/init.h>
|
||||
+#include <linux/proc_fs.h>
|
||||
+#include <linux/uaccess.h>
|
||||
#include <linux/of.h>
|
||||
+#include <linux/of_irq.h>
|
||||
#include <linux/platform_device.h>
|
||||
+#ifdef CONFIG_FIQ_GLUE
|
||||
+#include <linux/irqchip/mtk-gic-extend.h>
|
||||
+#include <mt-plat/aee.h>
|
||||
+#endif
|
||||
#include <linux/types.h>
|
||||
#include <linux/watchdog.h>
|
||||
+#include <linux/notifier.h>
|
||||
+#include <linux/reboot.h>
|
||||
#include <linux/delay.h>
|
||||
+#include <linux/reset-controller.h>
|
||||
+#include <linux/reset.h>
|
||||
+#include <linux/sched.h>
|
||||
+#include <linux/sched/debug.h>
|
||||
+#include <linux/sched/signal.h>
|
||||
+#include <asm/system_misc.h>
|
||||
+#include <linux/seq_file.h>
|
||||
+#ifdef CONFIG_MT6397_MISC
|
||||
+#include <linux/mfd/mt6397/rtc_misc.h>
|
||||
+#endif
|
||||
|
||||
#define WDT_MAX_TIMEOUT 31
|
||||
#define WDT_MIN_TIMEOUT 1
|
||||
@@ -38,37 +68,167 @@
|
||||
#define WDT_MODE_EXRST_EN (1 << 2)
|
||||
#define WDT_MODE_IRQ_EN (1 << 3)
|
||||
#define WDT_MODE_AUTO_START (1 << 4)
|
||||
+#define WDT_MODE_IRQ_LVL (1 << 5)
|
||||
#define WDT_MODE_DUAL_EN (1 << 6)
|
||||
#define WDT_MODE_KEY 0x22000000
|
||||
|
||||
+#define WDT_STATUS 0x0c
|
||||
+#define WDT_NONRST_REG 0x20
|
||||
+#define WDT_NONRST_REG2 0x24
|
||||
+
|
||||
#define WDT_SWRST 0x14
|
||||
#define WDT_SWRST_KEY 0x1209
|
||||
|
||||
+#define WDT_SWSYSRST 0x18
|
||||
+#define WDT_SWSYSRST_KEY 0x88000000
|
||||
+
|
||||
+#define WDT_REQ_MODE 0x30
|
||||
+#define WDT_REQ_MODE_KEY 0x33000000
|
||||
+#define WDT_REQ_IRQ_EN 0x34
|
||||
+#define WDT_REQ_IRQ_KEY 0x44000000
|
||||
+#define WDT_REQ_MODE_DEBUG_EN 0x80000
|
||||
+
|
||||
+
|
||||
#define DRV_NAME "mtk-wdt"
|
||||
-#define DRV_VERSION "1.0"
|
||||
+#define DRV_VERSION "2.0"
|
||||
|
||||
static bool nowayout = WATCHDOG_NOWAYOUT;
|
||||
-static unsigned int timeout;
|
||||
+static unsigned int timeout = WDT_MAX_TIMEOUT;
|
||||
+
|
||||
+struct toprgu_reset {
|
||||
+ spinlock_t lock;
|
||||
+ void __iomem *toprgu_swrst_base;
|
||||
+ int regofs;
|
||||
+ struct reset_controller_dev rcdev;
|
||||
+};
|
||||
|
||||
struct mtk_wdt_dev {
|
||||
struct watchdog_device wdt_dev;
|
||||
void __iomem *wdt_base;
|
||||
+ int wdt_irq_id;
|
||||
+ struct notifier_block restart_handler;
|
||||
+ struct toprgu_reset reset_controller;
|
||||
};
|
||||
|
||||
-static int mtk_wdt_restart(struct watchdog_device *wdt_dev,
|
||||
- unsigned long action, void *data)
|
||||
+static void __iomem *toprgu_base;
|
||||
+static struct watchdog_device *wdt_dev;
|
||||
+
|
||||
+static int toprgu_reset_assert(struct reset_controller_dev *rcdev,
|
||||
+ unsigned long id)
|
||||
{
|
||||
- struct mtk_wdt_dev *mtk_wdt = watchdog_get_drvdata(wdt_dev);
|
||||
+ unsigned int tmp;
|
||||
+ unsigned long flags;
|
||||
+ struct toprgu_reset *data = container_of(rcdev, struct toprgu_reset, rcdev);
|
||||
+
|
||||
+ spin_lock_irqsave(&data->lock, flags);
|
||||
+
|
||||
+ tmp = __raw_readl(data->toprgu_swrst_base + data->regofs);
|
||||
+ tmp |= BIT(id);
|
||||
+ tmp |= WDT_SWSYSRST_KEY;
|
||||
+ writel(tmp, data->toprgu_swrst_base + data->regofs);
|
||||
+
|
||||
+ spin_unlock_irqrestore(&data->lock, flags);
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int toprgu_reset_deassert(struct reset_controller_dev *rcdev,
|
||||
+ unsigned long id)
|
||||
+{
|
||||
+ unsigned int tmp;
|
||||
+ unsigned long flags;
|
||||
+ struct toprgu_reset *data = container_of(rcdev, struct toprgu_reset, rcdev);
|
||||
+
|
||||
+ spin_lock_irqsave(&data->lock, flags);
|
||||
+
|
||||
+ tmp = __raw_readl(data->toprgu_swrst_base + data->regofs);
|
||||
+ tmp &= ~BIT(id);
|
||||
+ tmp |= WDT_SWSYSRST_KEY;
|
||||
+ writel(tmp, data->toprgu_swrst_base + data->regofs);
|
||||
+
|
||||
+ spin_unlock_irqrestore(&data->lock, flags);
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int toprgu_reset(struct reset_controller_dev *rcdev,
|
||||
+ unsigned long id)
|
||||
+{
|
||||
+ int ret;
|
||||
+
|
||||
+ ret = toprgu_reset_assert(rcdev, id);
|
||||
+ if (ret)
|
||||
+ return ret;
|
||||
+
|
||||
+ return toprgu_reset_deassert(rcdev, id);
|
||||
+}
|
||||
+
|
||||
+static struct reset_control_ops toprgu_reset_ops = {
|
||||
+ .assert = toprgu_reset_assert,
|
||||
+ .deassert = toprgu_reset_deassert,
|
||||
+ .reset = toprgu_reset,
|
||||
+};
|
||||
+
|
||||
+static void toprgu_register_reset_controller(struct platform_device *pdev, int regofs)
|
||||
+{
|
||||
+ int ret;
|
||||
+ struct mtk_wdt_dev *mtk_wdt = platform_get_drvdata(pdev);
|
||||
+
|
||||
+ spin_lock_init(&mtk_wdt->reset_controller.lock);
|
||||
+
|
||||
+ mtk_wdt->reset_controller.toprgu_swrst_base = mtk_wdt->wdt_base;
|
||||
+ mtk_wdt->reset_controller.regofs = regofs;
|
||||
+ mtk_wdt->reset_controller.rcdev.owner = THIS_MODULE;
|
||||
+ mtk_wdt->reset_controller.rcdev.nr_resets = 15;
|
||||
+ mtk_wdt->reset_controller.rcdev.ops = &toprgu_reset_ops;
|
||||
+ mtk_wdt->reset_controller.rcdev.of_node = pdev->dev.of_node;
|
||||
+
|
||||
+ ret = reset_controller_register(&mtk_wdt->reset_controller.rcdev);
|
||||
+ if (ret)
|
||||
+ pr_err("could not register toprgu reset controller: %d\n", ret);
|
||||
+}
|
||||
+
|
||||
+static int mtk_reset_handler(struct notifier_block *this, unsigned long mode,
|
||||
+ void *cmd)
|
||||
+{
|
||||
+ struct mtk_wdt_dev *mtk_wdt;
|
||||
void __iomem *wdt_base;
|
||||
+ u32 reg;
|
||||
|
||||
+ mtk_wdt = container_of(this, struct mtk_wdt_dev, restart_handler);
|
||||
wdt_base = mtk_wdt->wdt_base;
|
||||
|
||||
- while (1) {
|
||||
- writel(WDT_SWRST_KEY, wdt_base + WDT_SWRST);
|
||||
- mdelay(5);
|
||||
+ /* WDT_STATUS will be cleared to zero after writing to WDT_MODE, so we backup it in WDT_NONRST_REG,
|
||||
+ * and then print it out in mtk_wdt_probe() after reset
|
||||
+ */
|
||||
+ writel(__raw_readl(wdt_base + WDT_STATUS), wdt_base + WDT_NONRST_REG);
|
||||
+
|
||||
+ reg = ioread32(wdt_base + WDT_MODE);
|
||||
+ reg &= ~(WDT_MODE_DUAL_EN | WDT_MODE_IRQ_EN | WDT_MODE_EN);
|
||||
+ reg |= WDT_MODE_KEY;
|
||||
+ iowrite32(reg, wdt_base + WDT_MODE);
|
||||
+
|
||||
+ if (cmd && !strcmp(cmd, "rpmbpk")) {
|
||||
+ iowrite32(ioread32(wdt_base + WDT_NONRST_REG2) | (1 << 0), wdt_base + WDT_NONRST_REG2);
|
||||
+ } else if (cmd && !strcmp(cmd, "recovery")) {
|
||||
+ iowrite32(ioread32(wdt_base + WDT_NONRST_REG2) | (1 << 1), wdt_base + WDT_NONRST_REG2);
|
||||
+ #ifdef CONFIG_MT6397_MISC
|
||||
+ mtk_misc_mark_recovery();
|
||||
+ #endif
|
||||
+ } else if (cmd && !strcmp(cmd, "bootloader")) {
|
||||
+ iowrite32(ioread32(wdt_base + WDT_NONRST_REG2) | (1 << 2), wdt_base + WDT_NONRST_REG2);
|
||||
+ #ifdef CONFIG_MT6397_MISC
|
||||
+ mtk_misc_mark_fast();
|
||||
+ #endif
|
||||
}
|
||||
|
||||
- return 0;
|
||||
+ if (!arm_pm_restart) {
|
||||
+ while (1) {
|
||||
+ writel(WDT_SWRST_KEY, wdt_base + WDT_SWRST);
|
||||
+ mdelay(5);
|
||||
+ }
|
||||
+ }
|
||||
+ return NOTIFY_DONE;
|
||||
}
|
||||
|
||||
static int mtk_wdt_ping(struct watchdog_device *wdt_dev)
|
||||
@@ -77,6 +237,7 @@ static int mtk_wdt_ping(struct watchdog_device *wdt_dev)
|
||||
void __iomem *wdt_base = mtk_wdt->wdt_base;
|
||||
|
||||
iowrite32(WDT_RST_RELOAD, wdt_base + WDT_RST);
|
||||
+ printk_deferred("[WDK]: kick Ex WDT\n");
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -128,7 +289,8 @@ static int mtk_wdt_start(struct watchdog_device *wdt_dev)
|
||||
return ret;
|
||||
|
||||
reg = ioread32(wdt_base + WDT_MODE);
|
||||
- reg &= ~(WDT_MODE_IRQ_EN | WDT_MODE_DUAL_EN);
|
||||
+ reg |= (WDT_MODE_DUAL_EN | WDT_MODE_IRQ_EN | WDT_MODE_EXRST_EN);
|
||||
+ reg &= ~(WDT_MODE_IRQ_LVL | WDT_MODE_EXT_POL_HIGH);
|
||||
reg |= (WDT_MODE_EN | WDT_MODE_KEY);
|
||||
iowrite32(reg, wdt_base + WDT_MODE);
|
||||
|
||||
@@ -148,13 +310,56 @@ static const struct watchdog_ops mtk_wdt_ops = {
|
||||
.stop = mtk_wdt_stop,
|
||||
.ping = mtk_wdt_ping,
|
||||
.set_timeout = mtk_wdt_set_timeout,
|
||||
- .restart = mtk_wdt_restart,
|
||||
};
|
||||
|
||||
+#ifdef CONFIG_FIQ_GLUE
|
||||
+static void wdt_fiq(void *arg, void *regs, void *svc_sp)
|
||||
+{
|
||||
+ unsigned int wdt_mode_val;
|
||||
+ void __iomem *wdt_base = ((struct mtk_wdt_dev *)arg)->wdt_base;
|
||||
+
|
||||
+ wdt_mode_val = __raw_readl(wdt_base + WDT_STATUS);
|
||||
+ writel(wdt_mode_val, wdt_base + WDT_NONRST_REG);
|
||||
+
|
||||
+ aee_wdt_fiq_info(arg, regs, svc_sp);
|
||||
+}
|
||||
+#else
|
||||
+static void wdt_report_info(void)
|
||||
+{
|
||||
+ struct task_struct *task;
|
||||
+
|
||||
+ task = &init_task;
|
||||
+ pr_debug("Qwdt: -- watchdog time out\n");
|
||||
+
|
||||
+ for_each_process(task) {
|
||||
+ if (task->state == 0) {
|
||||
+ pr_debug("PID: %d, name: %s\n backtrace:\n", task->pid, task->comm);
|
||||
+ show_stack(task, NULL);
|
||||
+ pr_debug("\n");
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ pr_debug("backtrace of current task:\n");
|
||||
+ show_stack(NULL, NULL);
|
||||
+ pr_debug("Qwdt: -- watchdog time out\n");
|
||||
+}
|
||||
+
|
||||
+static irqreturn_t mtk_wdt_isr(int irq, void *dev_id)
|
||||
+{
|
||||
+ pr_err("fwq mtk_wdt_isr\n");
|
||||
+
|
||||
+ wdt_report_info();
|
||||
+ BUG();
|
||||
+
|
||||
+ return IRQ_HANDLED;
|
||||
+}
|
||||
+#endif
|
||||
+
|
||||
static int mtk_wdt_probe(struct platform_device *pdev)
|
||||
{
|
||||
struct mtk_wdt_dev *mtk_wdt;
|
||||
struct resource *res;
|
||||
+ unsigned int tmp;
|
||||
int err;
|
||||
|
||||
mtk_wdt = devm_kzalloc(&pdev->dev, sizeof(*mtk_wdt), GFP_KERNEL);
|
||||
@@ -165,9 +370,32 @@ static int mtk_wdt_probe(struct platform_device *pdev)
|
||||
|
||||
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
||||
mtk_wdt->wdt_base = devm_ioremap_resource(&pdev->dev, res);
|
||||
+
|
||||
if (IS_ERR(mtk_wdt->wdt_base))
|
||||
return PTR_ERR(mtk_wdt->wdt_base);
|
||||
|
||||
+ pr_err("MTK_WDT_NONRST_REG(%x)\n", __raw_readl(mtk_wdt->wdt_base + WDT_NONRST_REG));
|
||||
+
|
||||
+ mtk_wdt->wdt_irq_id = irq_of_parse_and_map(pdev->dev.of_node, 0);
|
||||
+ if (!mtk_wdt->wdt_irq_id) {
|
||||
+ pr_err("RGU get IRQ ID failed\n");
|
||||
+ return -ENODEV;
|
||||
+ }
|
||||
+
|
||||
+#ifndef CONFIG_FIQ_GLUE
|
||||
+ err = request_irq(mtk_wdt->wdt_irq_id, (irq_handler_t)mtk_wdt_isr, IRQF_TRIGGER_NONE, DRV_NAME, mtk_wdt);
|
||||
+#else
|
||||
+ mtk_wdt->wdt_irq_id = get_hardware_irq(mtk_wdt->wdt_irq_id);
|
||||
+ err = request_fiq(mtk_wdt->wdt_irq_id, wdt_fiq, IRQF_TRIGGER_FALLING, mtk_wdt);
|
||||
+#endif
|
||||
+ if (err != 0) {
|
||||
+ pr_err("mtk_wdt_probe : failed to request irq (%d)\n", err);
|
||||
+ return err;
|
||||
+ }
|
||||
+
|
||||
+ toprgu_base = mtk_wdt->wdt_base;
|
||||
+ wdt_dev = &mtk_wdt->wdt_dev;
|
||||
+
|
||||
mtk_wdt->wdt_dev.info = &mtk_wdt_info;
|
||||
mtk_wdt->wdt_dev.ops = &mtk_wdt_ops;
|
||||
mtk_wdt->wdt_dev.timeout = WDT_MAX_TIMEOUT;
|
||||
@@ -177,7 +405,6 @@ static int mtk_wdt_probe(struct platform_device *pdev)
|
||||
|
||||
watchdog_init_timeout(&mtk_wdt->wdt_dev, timeout, &pdev->dev);
|
||||
watchdog_set_nowayout(&mtk_wdt->wdt_dev, nowayout);
|
||||
- watchdog_set_restart_priority(&mtk_wdt->wdt_dev, 128);
|
||||
|
||||
watchdog_set_drvdata(&mtk_wdt->wdt_dev, mtk_wdt);
|
||||
|
||||
@@ -187,9 +414,40 @@ static int mtk_wdt_probe(struct platform_device *pdev)
|
||||
if (unlikely(err))
|
||||
return err;
|
||||
|
||||
+ mtk_wdt->restart_handler.notifier_call = mtk_reset_handler;
|
||||
+ mtk_wdt->restart_handler.priority = 128;
|
||||
+
|
||||
+ if (arm_pm_restart) {
|
||||
+ dev_info(&pdev->dev, "register restart_handler on reboot_notifier_list for psci reset\n");
|
||||
+ err = register_reboot_notifier(&mtk_wdt->restart_handler);
|
||||
+ if (err != 0)
|
||||
+ dev_warn(&pdev->dev,
|
||||
+ "cannot register reboot notifier (err=%d)\n", err);
|
||||
+ } else {
|
||||
+ err = register_restart_handler(&mtk_wdt->restart_handler);
|
||||
+ if (err)
|
||||
+ dev_warn(&pdev->dev,
|
||||
+ "cannot register restart handler (err=%d)\n", err);
|
||||
+ }
|
||||
+
|
||||
dev_info(&pdev->dev, "Watchdog enabled (timeout=%d sec, nowayout=%d)\n",
|
||||
mtk_wdt->wdt_dev.timeout, nowayout);
|
||||
|
||||
+ writel(WDT_REQ_MODE_KEY | (__raw_readl(mtk_wdt->wdt_base + WDT_REQ_MODE) &
|
||||
+ (~WDT_REQ_MODE_DEBUG_EN)), mtk_wdt->wdt_base + WDT_REQ_MODE);
|
||||
+
|
||||
+ toprgu_register_reset_controller(pdev, WDT_SWSYSRST);
|
||||
+
|
||||
+ /* enable scpsys thermal and thermal_controller request, and set to reset directly mode */
|
||||
+ tmp = ioread32(mtk_wdt->wdt_base + WDT_REQ_MODE) | (1 << 18) | (1 << 0);
|
||||
+ tmp |= WDT_REQ_MODE_KEY;
|
||||
+ iowrite32(tmp, mtk_wdt->wdt_base + WDT_REQ_MODE);
|
||||
+
|
||||
+ tmp = ioread32(mtk_wdt->wdt_base + WDT_REQ_IRQ_EN);
|
||||
+ tmp &= ~((1 << 18) | (1 << 0));
|
||||
+ tmp |= WDT_REQ_IRQ_KEY;
|
||||
+ iowrite32(tmp, mtk_wdt->wdt_base + WDT_REQ_IRQ_EN);
|
||||
+
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -205,8 +463,12 @@ static int mtk_wdt_remove(struct platform_device *pdev)
|
||||
{
|
||||
struct mtk_wdt_dev *mtk_wdt = platform_get_drvdata(pdev);
|
||||
|
||||
+ unregister_restart_handler(&mtk_wdt->restart_handler);
|
||||
+
|
||||
watchdog_unregister_device(&mtk_wdt->wdt_dev);
|
||||
|
||||
+ reset_controller_unregister(&mtk_wdt->reset_controller.rcdev);
|
||||
+
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -258,6 +520,95 @@ static struct platform_driver mtk_wdt_driver = {
|
||||
|
||||
module_platform_driver(mtk_wdt_driver);
|
||||
|
||||
+static int wk_proc_cmd_read(struct seq_file *s, void *v)
|
||||
+{
|
||||
+ unsigned int enabled = 1;
|
||||
+
|
||||
+ if (!(ioread32(toprgu_base + WDT_MODE) & WDT_MODE_EN))
|
||||
+ enabled = 0;
|
||||
+
|
||||
+ seq_printf(s, "enabled timeout\n%-4d %-8d\n", enabled, wdt_dev->timeout);
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int wk_proc_cmd_open(struct inode *inode, struct file *file)
|
||||
+{
|
||||
+ return single_open(file, wk_proc_cmd_read, NULL);
|
||||
+}
|
||||
+
|
||||
+static ssize_t wk_proc_cmd_write(struct file *file, const char *buf, size_t count, loff_t *data)
|
||||
+{
|
||||
+ int ret;
|
||||
+ int enable;
|
||||
+ int timeout;
|
||||
+ char wk_cmd_buf[256];
|
||||
+
|
||||
+ if (count == 0)
|
||||
+ return -1;
|
||||
+
|
||||
+ if (count > 255)
|
||||
+ count = 255;
|
||||
+
|
||||
+ ret = copy_from_user(wk_cmd_buf, buf, count);
|
||||
+ if (ret < 0)
|
||||
+ return -1;
|
||||
+
|
||||
+ wk_cmd_buf[count] = '\0';
|
||||
+
|
||||
+ pr_debug("Write %s\n", wk_cmd_buf);
|
||||
+
|
||||
+ ret = sscanf(wk_cmd_buf, "%d %d", &enable, &timeout);
|
||||
+ if (ret != 2)
|
||||
+ pr_debug("%s: expect 2 numbers\n", __func__);
|
||||
+
|
||||
+ pr_debug("[WDK] enable=%d timeout=%d\n", enable, timeout);
|
||||
+
|
||||
+ if (timeout > 20 && timeout <= WDT_MAX_TIMEOUT) {
|
||||
+ wdt_dev->timeout = timeout;
|
||||
+ mtk_wdt_set_timeout(wdt_dev, wdt_dev->timeout);
|
||||
+ } else {
|
||||
+ pr_err("[WDK] The timeout(%d) should bigger than 20 and not bigger than %d\n",
|
||||
+ timeout, WDT_MAX_TIMEOUT);
|
||||
+
|
||||
+ }
|
||||
+
|
||||
+ if (enable == 1) {
|
||||
+ mtk_wdt_start(wdt_dev);
|
||||
+ set_bit(WDOG_ACTIVE, &wdt_dev->status);
|
||||
+ pr_err("[WDK] enable wdt\n");
|
||||
+ } else if (enable == 0) {
|
||||
+ mtk_wdt_stop(wdt_dev);
|
||||
+ clear_bit(WDOG_ACTIVE, &wdt_dev->status);
|
||||
+ pr_err("[WDK] disable wdt\n");
|
||||
+ }
|
||||
+
|
||||
+ return count;
|
||||
+}
|
||||
+
|
||||
+static const struct file_operations wk_proc_cmd_fops = {
|
||||
+ .owner = THIS_MODULE,
|
||||
+ .open = wk_proc_cmd_open,
|
||||
+ .read = seq_read,
|
||||
+ .write = wk_proc_cmd_write,
|
||||
+ .llseek = seq_lseek,
|
||||
+ .release = single_release,
|
||||
+};
|
||||
+
|
||||
+static int __init wk_proc_init(void)
|
||||
+{
|
||||
+ struct proc_dir_entry *de = proc_create("wdk", 0660, NULL, &wk_proc_cmd_fops);
|
||||
+
|
||||
+ if (!de)
|
||||
+ pr_err("[wk_proc_init]: create /proc/wdk failed\n");
|
||||
+
|
||||
+ pr_debug("[WDK] Initialize proc\n");
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+late_initcall(wk_proc_init);
|
||||
+
|
||||
module_param(timeout, uint, 0);
|
||||
MODULE_PARM_DESC(timeout, "Watchdog heartbeat in seconds");
|
||||
|
||||
diff --git a/include/linux/wakelock.h b/include/linux/wakelock.h
|
||||
new file mode 100644
|
||||
index 000000000000..f4a698a22880
|
||||
--- /dev/null
|
||||
+++ b/include/linux/wakelock.h
|
||||
@@ -0,0 +1,67 @@
|
||||
+/* include/linux/wakelock.h
|
||||
+ *
|
||||
+ * Copyright (C) 2007-2012 Google, Inc.
|
||||
+ *
|
||||
+ * This software is licensed under the terms of the GNU General Public
|
||||
+ * License version 2, as published by the Free Software Foundation, and
|
||||
+ * may be copied, distributed, and modified under those terms.
|
||||
+ *
|
||||
+ * This program is distributed in the hope that it will be useful,
|
||||
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
+ * GNU General Public License for more details.
|
||||
+ *
|
||||
+ */
|
||||
+
|
||||
+#ifndef _LINUX_WAKELOCK_H
|
||||
+#define _LINUX_WAKELOCK_H
|
||||
+
|
||||
+#include <linux/ktime.h>
|
||||
+#include <linux/device.h>
|
||||
+
|
||||
+/* A wake_lock prevents the system from entering suspend or other low power
|
||||
+ * states when active. If the type is set to WAKE_LOCK_SUSPEND, the wake_lock
|
||||
+ * prevents a full system suspend.
|
||||
+ */
|
||||
+
|
||||
+enum {
|
||||
+ WAKE_LOCK_SUSPEND, /* Prevent suspend */
|
||||
+ WAKE_LOCK_TYPE_COUNT
|
||||
+};
|
||||
+
|
||||
+struct wake_lock {
|
||||
+ struct wakeup_source ws;
|
||||
+};
|
||||
+
|
||||
+static inline void wake_lock_init(struct wake_lock *lock, int type,
|
||||
+ const char *name)
|
||||
+{
|
||||
+ wakeup_source_init(&lock->ws, name);
|
||||
+}
|
||||
+
|
||||
+static inline void wake_lock_destroy(struct wake_lock *lock)
|
||||
+{
|
||||
+ wakeup_source_trash(&lock->ws);
|
||||
+}
|
||||
+
|
||||
+static inline void wake_lock(struct wake_lock *lock)
|
||||
+{
|
||||
+ __pm_stay_awake(&lock->ws);
|
||||
+}
|
||||
+
|
||||
+static inline void wake_lock_timeout(struct wake_lock *lock, long timeout)
|
||||
+{
|
||||
+ __pm_wakeup_event(&lock->ws, jiffies_to_msecs(timeout));
|
||||
+}
|
||||
+
|
||||
+static inline void wake_unlock(struct wake_lock *lock)
|
||||
+{
|
||||
+ __pm_relax(&lock->ws);
|
||||
+}
|
||||
+
|
||||
+static inline int wake_lock_active(struct wake_lock *lock)
|
||||
+{
|
||||
+ return lock->ws.active;
|
||||
+}
|
||||
+
|
||||
+#endif
|
||||
diff --git a/include/net/genetlink.h b/include/net/genetlink.h
|
||||
index decf6012a401..6471da92334a 100644
|
||||
--- a/include/net/genetlink.h
|
||||
+++ b/include/net/genetlink.h
|
||||
@@ -144,6 +144,50 @@ struct genl_ops {
|
||||
};
|
||||
|
||||
int genl_register_family(struct genl_family *family);
|
||||
+
|
||||
+/**
|
||||
+ * genl_register_family_with_ops - register a generic netlink family with ops
|
||||
+ * @family: generic netlink family
|
||||
+ * @ops: operations to be registered
|
||||
+ * @n_ops: number of elements to register
|
||||
+ *
|
||||
+ * Registers the specified family and operations from the specified table.
|
||||
+ * Only one family may be registered with the same family name or identifier.
|
||||
+ *
|
||||
+ * The family id may equal GENL_ID_GENERATE causing an unique id to
|
||||
+ * be automatically generated and assigned.
|
||||
+ *
|
||||
+ * Either a doit or dumpit callback must be specified for every registered
|
||||
+ * operation or the function will fail. Only one operation structure per
|
||||
+ * command identifier may be registered.
|
||||
+ *
|
||||
+ * See include/net/genetlink.h for more documenation on the operations
|
||||
+ * structure.
|
||||
+ *
|
||||
+ * Return 0 on success or a negative error code.
|
||||
+ */
|
||||
+static inline int
|
||||
+_genl_register_family_with_ops_grps(struct genl_family *family,
|
||||
+ const struct genl_ops *ops, size_t n_ops,
|
||||
+ const struct genl_multicast_group *mcgrps,
|
||||
+ size_t n_mcgrps)
|
||||
+{
|
||||
+ family->module = THIS_MODULE;
|
||||
+ family->ops = ops;
|
||||
+ family->n_ops = n_ops;
|
||||
+ family->mcgrps = mcgrps;
|
||||
+ family->n_mcgrps = n_mcgrps;
|
||||
+ return genl_register_family(family);
|
||||
+}
|
||||
+#define genl_register_family_with_ops(family, ops) \
|
||||
+ _genl_register_family_with_ops_grps((family), \
|
||||
+ (ops), ARRAY_SIZE(ops), \
|
||||
+ NULL, 0)
|
||||
+#define genl_register_family_with_ops_groups(family, ops, grps) \
|
||||
+ _genl_register_family_with_ops_grps((family), \
|
||||
+ (ops), ARRAY_SIZE(ops), \
|
||||
+ (grps), ARRAY_SIZE(grps))
|
||||
+
|
||||
int genl_unregister_family(const struct genl_family *family);
|
||||
void genl_notify(const struct genl_family *family, struct sk_buff *skb,
|
||||
struct genl_info *info, u32 group, gfp_t flags);
|
||||
diff --git a/include/soc/mediatek/pmic_wrap.h b/include/soc/mediatek/pmic_wrap.h
|
||||
new file mode 100644
|
||||
index 000000000000..5b5c85272c58
|
||||
--- /dev/null
|
||||
+++ b/include/soc/mediatek/pmic_wrap.h
|
||||
@@ -0,0 +1,19 @@
|
||||
+/*
|
||||
+ * Copyright (C) 2015 MediaTek Inc.
|
||||
+ *
|
||||
+ * This program is free software: you can redistribute it and/or modify
|
||||
+ * it under the terms of the GNU General Public License version 2 as
|
||||
+ * published by the Free Software Foundation.
|
||||
+ *
|
||||
+ * This program is distributed in the hope that it will be useful,
|
||||
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
+ * GNU General Public License for more details.
|
||||
+ */
|
||||
+
|
||||
+#ifndef __SOC_MEDIATEK_PMIC_WRAP_H
|
||||
+#define __SOC_MEDIATEK_PMIC_WRAP_H
|
||||
+
|
||||
+extern struct regmap *pwrap_node_to_regmap(struct device_node *np);
|
||||
+
|
||||
+#endif /* __SOC_MEDIATEK_PMIC_WRAP_H */
|
||||
diff --git a/include/uapi/linux/genetlink.h b/include/uapi/linux/genetlink.h
|
||||
index 877f7fa95466..6a176b3d43f9 100644
|
||||
--- a/include/uapi/linux/genetlink.h
|
||||
+++ b/include/uapi/linux/genetlink.h
|
||||
@@ -27,6 +27,7 @@ struct genlmsghdr {
|
||||
/*
|
||||
* List of reserved static generic netlink identifiers:
|
||||
*/
|
||||
+#define GENL_ID_GENERATE 0
|
||||
#define GENL_ID_CTRL NLMSG_MIN_TYPE
|
||||
#define GENL_ID_VFS_DQUOT (NLMSG_MIN_TYPE + 1)
|
||||
#define GENL_ID_PMCRAID (NLMSG_MIN_TYPE + 2)
|
||||
--
|
||||
2.19.1
|
||||
|
|
@ -0,0 +1,78 @@
|
|||
From 203a5a7727a80ab519ea00181a909e415c5567ab Mon Sep 17 00:00:00 2001
|
||||
From: Frank Wunderlich <frank-w@public-files.de>
|
||||
Date: Wed, 29 Aug 2018 19:17:00 +0200
|
||||
Subject: [PATCH 08/77] [gcc] gcc8-fixes by Dominik Koch + nic_rx-patch from
|
||||
https://bugs.linaro.org/show_bug.cgi?id=3823
|
||||
|
||||
---
|
||||
.../misc/mediatek/connectivity/wlan/gen2/nic/nic_rx.c | 10 ++++++----
|
||||
.../misc/mediatek/connectivity/wlan/gen2/nic/que_mgt.c | 2 +-
|
||||
.../connectivity/wlan/gen2/os/linux/include/gl_kal.h | 2 +-
|
||||
3 files changed, 8 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/drivers/misc/mediatek/connectivity/wlan/gen2/nic/nic_rx.c b/drivers/misc/mediatek/connectivity/wlan/gen2/nic/nic_rx.c
|
||||
index ba4840414da8..65823023cec0 100644
|
||||
--- a/drivers/misc/mediatek/connectivity/wlan/gen2/nic/nic_rx.c
|
||||
+++ b/drivers/misc/mediatek/connectivity/wlan/gen2/nic/nic_rx.c
|
||||
@@ -2061,7 +2061,6 @@ VOID nicRxProcessEventPacket(IN P_ADAPTER_T prAdapter, IN OUT P_SW_RFB_T prSwRfb
|
||||
case EVENT_ID_BT_OVER_WIFI:
|
||||
#if CFG_ENABLE_BT_OVER_WIFI
|
||||
{
|
||||
- UINT_8 aucTmp[sizeof(AMPC_EVENT) + sizeof(BOW_LINK_DISCONNECTED)];
|
||||
P_EVENT_BT_OVER_WIFI prEventBtOverWifi;
|
||||
P_AMPC_EVENT prBowEvent;
|
||||
P_BOW_LINK_CONNECTED prBowLinkConnected;
|
||||
@@ -2069,11 +2068,11 @@ VOID nicRxProcessEventPacket(IN P_ADAPTER_T prAdapter, IN OUT P_SW_RFB_T prSwRfb
|
||||
|
||||
prEventBtOverWifi = (P_EVENT_BT_OVER_WIFI) (prEvent->aucBuffer);
|
||||
|
||||
- /* construct event header */
|
||||
- prBowEvent = (P_AMPC_EVENT) aucTmp;
|
||||
-
|
||||
if (prEventBtOverWifi->ucLinkStatus == 0) {
|
||||
/* Connection */
|
||||
+ UINT_8 aucTmp[sizeof(AMPC_EVENT) + sizeof(BOW_LINK_CONNECTED)];
|
||||
+ /* construct event header */
|
||||
+ prBowEvent = (P_AMPC_EVENT) aucTmp;
|
||||
prBowEvent->rHeader.ucEventId = BOW_EVENT_ID_LINK_CONNECTED;
|
||||
prBowEvent->rHeader.ucSeqNumber = 0;
|
||||
prBowEvent->rHeader.u2PayloadLength = sizeof(BOW_LINK_CONNECTED);
|
||||
@@ -2086,6 +2085,9 @@ VOID nicRxProcessEventPacket(IN P_ADAPTER_T prAdapter, IN OUT P_SW_RFB_T prSwRfb
|
||||
kalIndicateBOWEvent(prAdapter->prGlueInfo, prBowEvent);
|
||||
} else {
|
||||
/* Disconnection */
|
||||
+ UINT_8 aucTmp[sizeof(AMPC_EVENT) + sizeof(BOW_LINK_DISCONNECTED)];
|
||||
+ /* construct event header */
|
||||
+ prBowEvent = (P_AMPC_EVENT) aucTmp;
|
||||
prBowEvent->rHeader.ucEventId = BOW_EVENT_ID_LINK_DISCONNECTED;
|
||||
prBowEvent->rHeader.ucSeqNumber = 0;
|
||||
prBowEvent->rHeader.u2PayloadLength = sizeof(BOW_LINK_DISCONNECTED);
|
||||
diff --git a/drivers/misc/mediatek/connectivity/wlan/gen2/nic/que_mgt.c b/drivers/misc/mediatek/connectivity/wlan/gen2/nic/que_mgt.c
|
||||
index dd00859d4608..ad7107b1d9a4 100644
|
||||
--- a/drivers/misc/mediatek/connectivity/wlan/gen2/nic/que_mgt.c
|
||||
+++ b/drivers/misc/mediatek/connectivity/wlan/gen2/nic/que_mgt.c
|
||||
@@ -5021,7 +5021,7 @@ VOID qmHandleRxArpPackets(P_ADAPTER_T prAdapter, P_SW_RFB_T prSwRfb)
|
||||
if (prBssInfo && prBssInfo->prStaRecOfAP && prBssInfo->prStaRecOfAP->aucMacAddr) {
|
||||
if (EQUAL_MAC_ADDR(&(pucData[ETH_TYPE_LEN_OFFSET + 10]), /* source hardware address */
|
||||
prBssInfo->prStaRecOfAP->aucMacAddr)) {
|
||||
- strncpy(apIp, &(pucData[ETH_TYPE_LEN_OFFSET + 16]), sizeof(apIp)); /* src ip address */
|
||||
+ memcpy(apIp, &(pucData[ETH_TYPE_LEN_OFFSET + 16]), sizeof(apIp)); /* src ip address */
|
||||
DBGLOG(INIT, TRACE, "get arp response from AP %d.%d.%d.%d\n",
|
||||
apIp[0], apIp[1], apIp[2], apIp[3]);
|
||||
}
|
||||
diff --git a/drivers/misc/mediatek/connectivity/wlan/gen2/os/linux/include/gl_kal.h b/drivers/misc/mediatek/connectivity/wlan/gen2/os/linux/include/gl_kal.h
|
||||
index 1406905095e6..b1386918c08d 100644
|
||||
--- a/drivers/misc/mediatek/connectivity/wlan/gen2/os/linux/include/gl_kal.h
|
||||
+++ b/drivers/misc/mediatek/connectivity/wlan/gen2/os/linux/include/gl_kal.h
|
||||
@@ -852,7 +852,7 @@ struct KAL_HALT_CTRL_T {
|
||||
|
||||
/* string operation */
|
||||
#define kalStrCpy(dest, src) strcpy(dest, src)
|
||||
-#define kalStrnCpy(dest, src, n) strncpy(dest, src, n)
|
||||
+#define kalStrnCpy(dest, src, n) memcpy(dest, src, n)
|
||||
#define kalStrCmp(ct, cs) strcmp(ct, cs)
|
||||
#define kalStrnCmp(ct, cs, n) strncmp(ct, cs, n)
|
||||
#define kalStrChr(s, c) strchr(s, c)
|
||||
--
|
||||
2.19.1
|
||||
|
|
@ -0,0 +1,52 @@
|
|||
From b3bf5911a5d9f6eb8112d294ffaf5f474dccc686 Mon Sep 17 00:00:00 2001
|
||||
From: Frank Wunderlich <frank-w@public-files.de>
|
||||
Date: Tue, 23 Oct 2018 13:31:20 +0200
|
||||
Subject: [PATCH 09/77] [wifi] activated wifi-options
|
||||
|
||||
---
|
||||
arch/arm/configs/mt7623n_evb_fwu_defconfig | 18 +++++++++---------
|
||||
1 file changed, 9 insertions(+), 9 deletions(-)
|
||||
|
||||
diff --git a/arch/arm/configs/mt7623n_evb_fwu_defconfig b/arch/arm/configs/mt7623n_evb_fwu_defconfig
|
||||
index 09df75013c09..fe7532886ccc 100644
|
||||
--- a/arch/arm/configs/mt7623n_evb_fwu_defconfig
|
||||
+++ b/arch/arm/configs/mt7623n_evb_fwu_defconfig
|
||||
@@ -141,8 +141,8 @@ CONFIG_NF_LOG_IPV6=m
|
||||
CONFIG_NF_REJECT_IPV6=m
|
||||
CONFIG_IP_NF_NAT=m
|
||||
CONFIG_IP6_NF_NAT=m
|
||||
-CONFIG_NF_NAT_MASQUERADE_IPV4=m
|
||||
-CONFIG_NF_NAT_MASQUERADE_IPV6=m
|
||||
+CONFIG_NF_NAT_MASQUERADE_IPV4=y
|
||||
+CONFIG_NF_NAT_MASQUERADE_IPV6=y
|
||||
CONFIG_IP_NF_FILTER=m
|
||||
CONFIG_IP6_NF_FILTER=m
|
||||
CONFIG_IP_NF_TARGET_MASQUERADE=m
|
||||
@@ -376,17 +376,17 @@ CONFIG_CFG80211=y
|
||||
|
||||
#internal wlan (not working yet)
|
||||
# CONFIG_MTK_CONN_LTE_IDC_SUPPORT is not set
|
||||
-#CONFIG_MTK_COMBO=y
|
||||
-#CONFIG_MTK_COMBO_CHIP_CONSYS_7623=y
|
||||
+CONFIG_MTK_COMBO=y
|
||||
+CONFIG_MTK_COMBO_CHIP_CONSYS_7623=y
|
||||
#used in 4.4, but should be set in Kconfig by selecting mt7623 COMBO
|
||||
-#CONFIG_MTK_PLATFORM="mt7623"
|
||||
+CONFIG_MTK_PLATFORM="mt7623"
|
||||
|
||||
-#CONFIG_MTK_COMBO_COMM=y
|
||||
-#CONFIG_MTK_COMBO_WIFI=y
|
||||
-#CONFIG_NL80211_TESTMODE=y
|
||||
+CONFIG_MTK_COMBO_COMM=y
|
||||
+CONFIG_MTK_COMBO_WIFI=y
|
||||
+CONFIG_NL80211_TESTMODE=y
|
||||
|
||||
#internal Bluetooth (also not working yet)
|
||||
-#CONFIG_BT=y
|
||||
+CONFIG_BT=y
|
||||
#CONFIG_MTK_COMBO_BT=y
|
||||
#CONFIG_MTK_COMBO_BT_HCI=y
|
||||
#needed for BT?
|
||||
--
|
||||
2.19.1
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
From ec64b17f37390c32cd88ebddbabd423f438335fc Mon Sep 17 00:00:00 2001
|
||||
From: Frank Wunderlich <frank-w@public-files.de>
|
||||
Date: Sun, 11 Nov 2018 09:52:44 +0100
|
||||
Subject: [PATCH 12/77] [defconfig] add missing CONFIG_PCI_MSI (needed for pcie
|
||||
and maybe sata) and EARLY_PRINTK
|
||||
|
||||
---
|
||||
arch/arm/configs/mt7623n_evb_fwu_defconfig | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
diff --git a/arch/arm/configs/mt7623n_evb_fwu_defconfig b/arch/arm/configs/mt7623n_evb_fwu_defconfig
|
||||
index d7741650941f..fe1edaa7680f 100644
|
||||
--- a/arch/arm/configs/mt7623n_evb_fwu_defconfig
|
||||
+++ b/arch/arm/configs/mt7623n_evb_fwu_defconfig
|
||||
@@ -1,6 +1,8 @@
|
||||
CONFIG_LOCALVERSION="-bpi-r2"
|
||||
CONFIG_LOCALVERSION_AUTO=n
|
||||
|
||||
+CONFIG_EARLY_PRINTK=y
|
||||
+
|
||||
#spectre/meltdown
|
||||
CONFIG_PAGE_TABLE_ISOLATION=y
|
||||
|
||||
@@ -58,6 +60,7 @@ CONFIG_PL310_ERRATA_753970=y
|
||||
CONFIG_PL310_ERRATA_769419=y
|
||||
|
||||
CONFIG_PCI=y
|
||||
+CONFIG_PCI_MSI=y
|
||||
CONFIG_SMP=y
|
||||
CONFIG_HAVE_ARM_ARCH_TIMER=y
|
||||
CONFIG_NR_CPUS=16
|
||||
--
|
||||
2.19.1
|
||||
|
34
root/target/linux/mediatek/patches-4.19/0014-dts-set-mac-address-eth0.patch
Executable file
34
root/target/linux/mediatek/patches-4.19/0014-dts-set-mac-address-eth0.patch
Executable file
|
@ -0,0 +1,34 @@
|
|||
From 961d318c99fb0019f0fa571a160af09e859d63e8 Mon Sep 17 00:00:00 2001
|
||||
From: Frank Wunderlich <frank-w@public-files.de>
|
||||
Date: Mon, 31 Dec 2018 17:00:56 +0100
|
||||
Subject: [PATCH 14/77] [dts] set mac-address (eth0)
|
||||
|
||||
can be overwritten by uboot (ethaddr) if using separated fdt
|
||||
or devicetree-overlay
|
||||
---
|
||||
arch/arm/boot/dts/mt7623n-bananapi-bpi-r2.dts | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/arch/arm/boot/dts/mt7623n-bananapi-bpi-r2.dts b/arch/arm/boot/dts/mt7623n-bananapi-bpi-r2.dts
|
||||
index 465fb887b2ca..a47022765326 100644
|
||||
--- a/arch/arm/boot/dts/mt7623n-bananapi-bpi-r2.dts
|
||||
+++ b/arch/arm/boot/dts/mt7623n-bananapi-bpi-r2.dts
|
||||
@@ -15,6 +15,7 @@
|
||||
|
||||
aliases {
|
||||
serial2 = &uart2;
|
||||
+ ethernet0 = &gmac0;
|
||||
};
|
||||
|
||||
chosen {
|
||||
@@ -147,6 +148,7 @@
|
||||
compatible = "mediatek,eth-mac";
|
||||
reg = <0>;
|
||||
phy-mode = "trgmii";
|
||||
+ mac-address = [02 02 02 02 02 02];
|
||||
|
||||
fixed-link {
|
||||
speed = <1000>;
|
||||
--
|
||||
2.19.1
|
||||
|
|
@ -0,0 +1,40 @@
|
|||
From d226d27f0419a6d1f2fa42abbf67eb4315223372 Mon Sep 17 00:00:00 2001
|
||||
From: Frank Wunderlich <frank-w@public-files.de>
|
||||
Date: Sat, 5 Jan 2019 10:11:41 +0100
|
||||
Subject: [PATCH 16/77] [build.sh,dts] added devicetree-Overlay
|
||||
|
||||
compile bpi-r2-mac.dts like this:
|
||||
|
||||
dtc -@ -I dts -O dtb -o bpi-r2-mac.dtb bpi-r2-mac.dts
|
||||
|
||||
in uboot you can load DTO with this (after loading base ftd):
|
||||
loaddto=echo "loaddto:${dto}";fdt addr ${dtaddr};fdt resize 8192; setexpr fdtovaddr ${dtaddr} + F000;
|
||||
fatload ${device} ${partition} ${fdtovaddr} ${bpi}/${board}/${service}/dtb/${dto} && fdt apply ${fdtovaddr}
|
||||
|
||||
uboot needs option CONFIG_OF_LIBFDT_OVERLAY=y
|
||||
---
|
||||
bpi-r2-mac.dts | 12 ++++++++++++
|
||||
1 files changed, 12 insertions(+)
|
||||
create mode 100644 bpi-r2-mac.dts
|
||||
|
||||
diff --git a/bpi-r2-mac.dts b/bpi-r2-mac.dts
|
||||
new file mode 100644
|
||||
index 000000000000..f4eed976e158
|
||||
--- /dev/null
|
||||
+++ b/bpi-r2-mac.dts
|
||||
@@ -0,0 +1,12 @@
|
||||
+/dts-v1/;
|
||||
+/plugin/;
|
||||
+
|
||||
+/ {
|
||||
+ fragment@0 {
|
||||
+ /*target = <&gmac0>;*/
|
||||
+ target-path = "/eth/gmac0";
|
||||
+ __overlay__ {
|
||||
+ mac-address = [02 01 02 03 04 05];
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
--
|
||||
2.19.1
|
||||
|
|
@ -0,0 +1,60 @@
|
|||
From 329ff45aafea77cd9f5c97d2988e7c399ef05d6d Mon Sep 17 00:00:00 2001
|
||||
From: Frank Wunderlich <frank-w@public-files.de>
|
||||
Date: Thu, 29 Nov 2018 11:34:09 +0100
|
||||
Subject: [PATCH 19/77] net: dsa: adding fields for holding information about
|
||||
upstream-port
|
||||
|
||||
for multiple cpu-Ports aech port needs storing the the cpu-port to be used
|
||||
this Patch adds the needed fields for this
|
||||
|
||||
based on
|
||||
https://github.com/openwrt/openwrt/blob/master/target/linux/mediatek/patches-4.14/0033-dsa-multi-cpu.patch
|
||||
|
||||
Signed-off-by: Frank Wunderlich <frank-w@public-files.de>
|
||||
---
|
||||
include/net/dsa.h | 4 ++++
|
||||
net/dsa/dsa_priv.h | 5 +++++
|
||||
2 files changed, 9 insertions(+)
|
||||
|
||||
diff --git a/include/net/dsa.h b/include/net/dsa.h
|
||||
index 461e8a7661b7..6e0c95625a21 100644
|
||||
--- a/include/net/dsa.h
|
||||
+++ b/include/net/dsa.h
|
||||
@@ -202,6 +202,10 @@ struct dsa_port {
|
||||
struct net_device *bridge_dev;
|
||||
struct devlink_port devlink_port;
|
||||
struct phylink *pl;
|
||||
+
|
||||
+ struct net_device *ethernet;
|
||||
+ int upstream;
|
||||
+
|
||||
/*
|
||||
* Original copy of the master netdev ethtool_ops
|
||||
*/
|
||||
diff --git a/net/dsa/dsa_priv.h b/net/dsa/dsa_priv.h
|
||||
index 3964c6f7a7c0..559a3a250c88 100644
|
||||
--- a/net/dsa/dsa_priv.h
|
||||
+++ b/net/dsa/dsa_priv.h
|
||||
@@ -81,6 +81,8 @@ struct dsa_slave_priv {
|
||||
|
||||
/* TC context */
|
||||
struct list_head mall_tc_list;
|
||||
+
|
||||
+ struct net_device *master;
|
||||
};
|
||||
|
||||
/* dsa.c */
|
||||
@@ -187,7 +189,10 @@ static inline struct net_device *
|
||||
dsa_slave_to_master(const struct net_device *dev)
|
||||
{
|
||||
struct dsa_port *dp = dsa_slave_to_port(dev);
|
||||
+ struct dsa_slave_priv *p = netdev_priv(dev);
|
||||
|
||||
+ if (p->master)
|
||||
+ return p->master;
|
||||
return dp->cpu_dp->master;
|
||||
}
|
||||
|
||||
--
|
||||
2.19.1
|
||||
|
|
@ -0,0 +1,86 @@
|
|||
From 90adf38283688d8c25feeb7e3989cc2da3d58122 Mon Sep 17 00:00:00 2001
|
||||
From: Frank Wunderlich <frank-w@public-files.de>
|
||||
Date: Thu, 29 Nov 2018 11:27:12 +0100
|
||||
Subject: [PATCH 20/77] net: dsa: add helper functions
|
||||
|
||||
for using mutliple cpu-Ports 3 additional functions are defined to read
|
||||
dts-option (dsa_user_parse) and check if current port is a upstream-port
|
||||
(dsa_port_upstream_port, dsa_is_upstream_port)
|
||||
|
||||
based on
|
||||
https://github.com/openwrt/openwrt/blob/master/target/linux/mediatek/patches-4.14/0033-dsa-multi-cpu.patch
|
||||
|
||||
Signed-off-by: Frank Wunderlich <frank-w@public-files.de>
|
||||
---
|
||||
include/net/dsa.h | 18 ++++++++++++++++++
|
||||
net/dsa/dsa2.c | 18 ++++++++++++++++++
|
||||
2 files changed, 36 insertions(+)
|
||||
|
||||
diff --git a/include/net/dsa.h b/include/net/dsa.h
|
||||
index 6e0c95625a21..36db2ee83da6 100644
|
||||
--- a/include/net/dsa.h
|
||||
+++ b/include/net/dsa.h
|
||||
@@ -318,6 +318,12 @@ static inline unsigned int dsa_towards_port(struct dsa_switch *ds, int device,
|
||||
return ds->rtable[device];
|
||||
}
|
||||
|
||||
+
|
||||
+static inline bool dsa_is_upstream_port(struct dsa_switch *ds, int p)
|
||||
+{
|
||||
+ return dsa_is_cpu_port(ds, p) || dsa_is_dsa_port(ds, p);
|
||||
+}
|
||||
+
|
||||
/* Return the local port used to reach the dedicated CPU port */
|
||||
static inline unsigned int dsa_upstream_port(struct dsa_switch *ds, int port)
|
||||
{
|
||||
@@ -330,6 +336,18 @@ static inline unsigned int dsa_upstream_port(struct dsa_switch *ds, int port)
|
||||
return dsa_towards_port(ds, cpu_dp->ds->index, cpu_dp->index);
|
||||
}
|
||||
|
||||
+static inline u8 dsa_port_upstream_port(struct dsa_switch *ds, int port)
|
||||
+{
|
||||
+ /*
|
||||
+ * If this port has a specific upstream cpu port, use it,
|
||||
+ * otherwise use the switch default.
|
||||
+ */
|
||||
+ if (ds->ports[port].upstream)
|
||||
+ return ds->ports[port].upstream;
|
||||
+ else
|
||||
+ return dsa_upstream_port(ds, port);
|
||||
+}
|
||||
+
|
||||
typedef int dsa_fdb_dump_cb_t(const unsigned char *addr, u16 vid,
|
||||
bool is_static, void *data);
|
||||
struct dsa_switch_ops {
|
||||
diff --git a/net/dsa/dsa2.c b/net/dsa/dsa2.c
|
||||
index a1917025e155..b7c6da2f1f08 100644
|
||||
--- a/net/dsa/dsa2.c
|
||||
+++ b/net/dsa/dsa2.c
|
||||
@@ -255,6 +255,24 @@ static void dsa_tree_teardown_default_cpu(struct dsa_switch_tree *dst)
|
||||
dst->cpu_dp = NULL;
|
||||
}
|
||||
|
||||
+static int dsa_user_parse(struct dsa_port *port, u32 index,
|
||||
+ struct dsa_switch *ds)
|
||||
+{
|
||||
+ struct device_node *cpu_port;
|
||||
+ const unsigned int *cpu_port_reg;
|
||||
+ int cpu_port_index;
|
||||
+
|
||||
+ cpu_port = of_parse_phandle(port->dn, "default_cpu", 0);
|
||||
+ if (cpu_port) {
|
||||
+ cpu_port_reg = of_get_property(cpu_port, "reg", NULL);
|
||||
+ if (!cpu_port_reg)
|
||||
+ return -EINVAL;
|
||||
+ cpu_port_index = be32_to_cpup(cpu_port_reg);
|
||||
+ ds->ports[index].upstream = cpu_port_index;
|
||||
+ }
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
static int dsa_port_setup(struct dsa_port *dp)
|
||||
{
|
||||
struct dsa_switch *ds = dp->ds;
|
||||
--
|
||||
2.19.1
|
||||
|
|
@ -0,0 +1,102 @@
|
|||
From 8325a7cbf9648725163a7596ba3381775039fe69 Mon Sep 17 00:00:00 2001
|
||||
From: Frank Wunderlich <frank-w@public-files.de>
|
||||
Date: Thu, 29 Nov 2018 11:38:27 +0100
|
||||
Subject: [PATCH 21/77] net: dsa: adding handling of second CPU-Port
|
||||
|
||||
this patch adds the core-functionality of multiple cpu-ports
|
||||
|
||||
currently it uses definition in dts to make connection between cpu and user-port
|
||||
|
||||
based on
|
||||
https://github.com/openwrt/openwrt/blob/master/target/linux/mediatek/patches-4.14/0033-dsa-multi-cpu.patch
|
||||
|
||||
Signed-off-by: Frank Wunderlich <frank-w@public-files.de>
|
||||
---
|
||||
net/dsa/dsa2.c | 18 ++++++++++++++++++
|
||||
net/dsa/slave.c | 3 ++-
|
||||
2 files changed, 20 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/net/dsa/dsa2.c b/net/dsa/dsa2.c
|
||||
index b7c6da2f1f08..8f64535fd2a0 100644
|
||||
--- a/net/dsa/dsa2.c
|
||||
+++ b/net/dsa/dsa2.c
|
||||
@@ -303,6 +303,8 @@ static int dsa_port_setup(struct dsa_port *dp)
|
||||
ds->index, dp->index);
|
||||
return err;
|
||||
}
|
||||
+ if (dp->master)
|
||||
+ dp->master->dsa_ptr = dp;
|
||||
break;
|
||||
case DSA_PORT_TYPE_DSA:
|
||||
/* dp->index is used now as port_number. However
|
||||
@@ -323,12 +325,17 @@ static int dsa_port_setup(struct dsa_port *dp)
|
||||
devlink_port_attrs_set(&dp->devlink_port,
|
||||
DEVLINK_PORT_FLAVOUR_PHYSICAL,
|
||||
dp->index, false, 0);
|
||||
+ err = dsa_user_parse(dp, dp->index, ds);
|
||||
+ if (err)
|
||||
+ return err;
|
||||
+
|
||||
err = dsa_slave_create(dp);
|
||||
if (err)
|
||||
dev_err(ds->dev, "failed to create slave for port %d.%d\n",
|
||||
ds->index, dp->index);
|
||||
else
|
||||
devlink_port_type_eth_set(&dp->devlink_port, dp->slave);
|
||||
+
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -344,6 +351,14 @@ static void dsa_port_teardown(struct dsa_port *dp)
|
||||
case DSA_PORT_TYPE_UNUSED:
|
||||
break;
|
||||
case DSA_PORT_TYPE_CPU:
|
||||
+ dsa_port_link_unregister_of(dp);
|
||||
+ if (dp->master)
|
||||
+ dp->master->dsa_ptr = NULL;
|
||||
+ if (dp->ethernet) {
|
||||
+ dev_put(dp->ethernet);
|
||||
+ dp->ethernet = NULL;
|
||||
+ }
|
||||
+ break;
|
||||
case DSA_PORT_TYPE_DSA:
|
||||
dsa_port_link_unregister_of(dp);
|
||||
break;
|
||||
@@ -598,6 +613,9 @@ static int dsa_port_parse_cpu(struct dsa_port *dp, struct net_device *master)
|
||||
dp->master = master;
|
||||
dp->dst = dst;
|
||||
|
||||
+ dev_hold(master);
|
||||
+ ds->ports[dp->index].ethernet = master;
|
||||
+
|
||||
return 0;
|
||||
}
|
||||
|
||||
diff --git a/net/dsa/slave.c b/net/dsa/slave.c
|
||||
index 1c45c1d6d241..3bdbd53d3420 100644
|
||||
--- a/net/dsa/slave.c
|
||||
+++ b/net/dsa/slave.c
|
||||
@@ -1291,11 +1291,11 @@ static void dsa_slave_notify(struct net_device *dev, unsigned long val)
|
||||
int dsa_slave_create(struct dsa_port *port)
|
||||
{
|
||||
const struct dsa_port *cpu_dp = port->cpu_dp;
|
||||
- struct net_device *master = cpu_dp->master;
|
||||
struct dsa_switch *ds = port->ds;
|
||||
const char *name = port->name;
|
||||
struct net_device *slave_dev;
|
||||
struct dsa_slave_priv *p;
|
||||
+ struct net_device *master = ds->ports[port->upstream].ethernet;
|
||||
int ret;
|
||||
|
||||
if (!ds->num_tx_queues)
|
||||
@@ -1334,6 +1334,7 @@ int dsa_slave_create(struct dsa_port *port)
|
||||
p->dp = port;
|
||||
INIT_LIST_HEAD(&p->mall_tc_list);
|
||||
p->xmit = cpu_dp->tag_ops->xmit;
|
||||
+ p->master = master;
|
||||
port->slave = slave_dev;
|
||||
|
||||
netif_carrier_off(slave_dev);
|
||||
--
|
||||
2.19.1
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
From a80c992c93729c817267ea5575faa089a278e593 Mon Sep 17 00:00:00 2001
|
||||
From: Frank Wunderlich <frank-w@public-files.de>
|
||||
Date: Sat, 8 Dec 2018 19:22:22 +0100
|
||||
Subject: [PATCH 22/77] net: dsa: add support for GMAC2 wired to ext
|
||||
|
||||
cpu-ports of mt7530 need some special flags to be set
|
||||
|
||||
based on
|
||||
https://github.com/openwrt/openwrt/blob/master/target/linux/mediatek/patches-4.14/0032-net-dsa-mediatek-add-support-for-GMAC2-wired-to-ext-.patch
|
||||
|
||||
Signed-off-by: Frank Wunderlich <frank-w@public-files.de>
|
||||
---
|
||||
drivers/net/dsa/mt7530.c | 5 +++++
|
||||
1 file changed, 5 insertions(+)
|
||||
|
||||
diff --git a/drivers/net/dsa/mt7530.c b/drivers/net/dsa/mt7530.c
|
||||
index 62e486652e62..8ed0af6abe7d 100644
|
||||
--- a/drivers/net/dsa/mt7530.c
|
||||
+++ b/drivers/net/dsa/mt7530.c
|
||||
@@ -1281,6 +1281,11 @@ mt7530_setup(struct dsa_switch *ds)
|
||||
val = mt7530_read(priv, MT7530_MHWTRAP);
|
||||
val &= ~MHWTRAP_P6_DIS & ~MHWTRAP_PHY_ACCESS;
|
||||
val |= MHWTRAP_MANUAL;
|
||||
+ if (!dsa_is_cpu_port(ds, 5)) {
|
||||
+ val |= MHWTRAP_P5_DIS;
|
||||
+ val |= MHWTRAP_P5_MAC_SEL;
|
||||
+ val |= MHWTRAP_P5_RGMII_MODE;
|
||||
+ }
|
||||
mt7530_write(priv, MT7530_MHWTRAP, val);
|
||||
|
||||
/* Enable and reset MIB counters */
|
||||
--
|
||||
2.19.1
|
||||
|
|
@ -0,0 +1,121 @@
|
|||
From 954b359077f770bdbb376db571a4710965684dc9 Mon Sep 17 00:00:00 2001
|
||||
From: Frank Wunderlich <frank-w@public-files.de>
|
||||
Date: Sat, 8 Dec 2018 19:25:57 +0100
|
||||
Subject: [PATCH 23/77] net: dsa: dsa multi cpu (mt7530.c)
|
||||
|
||||
implementing changes to mt7530 switch driver for supporting multiple (2)
|
||||
cpu-ports
|
||||
|
||||
based on
|
||||
https://github.com/openwrt/openwrt/blob/master/target/linux/mediatek/patches-4.14/0033-dsa-multi-cpu.patch
|
||||
|
||||
Signed-off-by: Frank Wunderlich <frank-w@public-files.de>
|
||||
---
|
||||
drivers/net/dsa/mt7530.c | 34 +++++++++++++++++++---------------
|
||||
1 file changed, 19 insertions(+), 15 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/dsa/mt7530.c b/drivers/net/dsa/mt7530.c
|
||||
index 8ed0af6abe7d..fda1b67dfeac 100644
|
||||
--- a/drivers/net/dsa/mt7530.c
|
||||
+++ b/drivers/net/dsa/mt7530.c
|
||||
@@ -678,6 +678,9 @@ static int
|
||||
mt7530_cpu_port_enable(struct mt7530_priv *priv,
|
||||
int port)
|
||||
{
|
||||
+ u8 port_mask = 0;
|
||||
+ int i;
|
||||
+
|
||||
/* Enable Mediatek header mode on the cpu port */
|
||||
mt7530_write(priv, MT7530_PVC_P(port),
|
||||
PORT_SPEC_TAG);
|
||||
@@ -694,8 +697,14 @@ mt7530_cpu_port_enable(struct mt7530_priv *priv,
|
||||
/* CPU port gets connected to all user ports of
|
||||
* the switch
|
||||
*/
|
||||
+
|
||||
+ for (i = 0; i < MT7530_NUM_PORTS; i++)
|
||||
+ if ((priv->ds->ports[port].type == DSA_PORT_TYPE_USER) &&
|
||||
+ (dsa_port_upstream_port(priv->ds, i) == port))
|
||||
+ port_mask |= BIT(i);
|
||||
+
|
||||
mt7530_write(priv, MT7530_PCR_P(port),
|
||||
- PCR_MATRIX(dsa_user_ports(priv->ds)));
|
||||
+ PCR_MATRIX(port_mask));
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -705,6 +714,7 @@ mt7530_port_enable(struct dsa_switch *ds, int port,
|
||||
struct phy_device *phy)
|
||||
{
|
||||
struct mt7530_priv *priv = ds->priv;
|
||||
+ u8 upstream = dsa_port_upstream_port(ds, port);
|
||||
|
||||
mutex_lock(&priv->reg_mutex);
|
||||
|
||||
@@ -715,7 +725,7 @@ mt7530_port_enable(struct dsa_switch *ds, int port,
|
||||
* restore the port matrix if the port is the member of a certain
|
||||
* bridge.
|
||||
*/
|
||||
- priv->ports[port].pm |= PCR_MATRIX(BIT(MT7530_CPU_PORT));
|
||||
+ priv->ports[port].pm |= PCR_MATRIX(BIT(upstream));
|
||||
priv->ports[port].enable = true;
|
||||
mt7530_rmw(priv, MT7530_PCR_P(port), PCR_MATRIX_MASK,
|
||||
priv->ports[port].pm);
|
||||
@@ -778,7 +788,8 @@ mt7530_port_bridge_join(struct dsa_switch *ds, int port,
|
||||
struct net_device *bridge)
|
||||
{
|
||||
struct mt7530_priv *priv = ds->priv;
|
||||
- u32 port_bitmap = BIT(MT7530_CPU_PORT);
|
||||
+ u8 upstream = dsa_port_upstream_port(ds, port);
|
||||
+ u32 port_bitmap = BIT(upstream);
|
||||
int i;
|
||||
|
||||
mutex_lock(&priv->reg_mutex);
|
||||
@@ -879,6 +890,7 @@ mt7530_port_bridge_leave(struct dsa_switch *ds, int port,
|
||||
struct net_device *bridge)
|
||||
{
|
||||
struct mt7530_priv *priv = ds->priv;
|
||||
+ u8 upstream = dsa_port_upstream_port(ds, port);
|
||||
int i;
|
||||
|
||||
mutex_lock(&priv->reg_mutex);
|
||||
@@ -906,8 +918,8 @@ mt7530_port_bridge_leave(struct dsa_switch *ds, int port,
|
||||
*/
|
||||
if (priv->ports[port].enable)
|
||||
mt7530_rmw(priv, MT7530_PCR_P(port), PCR_MATRIX_MASK,
|
||||
- PCR_MATRIX(BIT(MT7530_CPU_PORT)));
|
||||
- priv->ports[port].pm = PCR_MATRIX(BIT(MT7530_CPU_PORT));
|
||||
+ PCR_MATRIX(BIT(upstream)));
|
||||
+ priv->ports[port].pm = PCR_MATRIX(BIT(upstream));
|
||||
|
||||
mt7530_port_set_vlan_unaware(ds, port);
|
||||
|
||||
@@ -1198,15 +1210,7 @@ mt7530_port_vlan_del(struct dsa_switch *ds, int port,
|
||||
static enum dsa_tag_protocol
|
||||
mtk_get_tag_protocol(struct dsa_switch *ds, int port)
|
||||
{
|
||||
- struct mt7530_priv *priv = ds->priv;
|
||||
-
|
||||
- if (port != MT7530_CPU_PORT) {
|
||||
- dev_warn(priv->dev,
|
||||
- "port not matched with tagging CPU port\n");
|
||||
- return DSA_TAG_PROTO_NONE;
|
||||
- } else {
|
||||
- return DSA_TAG_PROTO_MTK;
|
||||
- }
|
||||
+ return DSA_TAG_PROTO_MTK;
|
||||
}
|
||||
|
||||
static int
|
||||
@@ -1279,7 +1283,7 @@ mt7530_setup(struct dsa_switch *ds)
|
||||
|
||||
/* Enable Port 6 only; P5 as GMAC5 which currently is not supported */
|
||||
val = mt7530_read(priv, MT7530_MHWTRAP);
|
||||
- val &= ~MHWTRAP_P6_DIS & ~MHWTRAP_PHY_ACCESS;
|
||||
+ val &= ~MHWTRAP_P5_DIS & ~MHWTRAP_P6_DIS & ~MHWTRAP_PHY_ACCESS;
|
||||
val |= MHWTRAP_MANUAL;
|
||||
if (!dsa_is_cpu_port(ds, 5)) {
|
||||
val |= MHWTRAP_P5_DIS;
|
||||
--
|
||||
2.19.1
|
||||
|
|
@ -0,0 +1,54 @@
|
|||
From 943ed2bae585cd595d8264a1f37fa3f3d5a5715b Mon Sep 17 00:00:00 2001
|
||||
From: Frank Wunderlich <frank-w@public-files.de>
|
||||
Date: Sat, 8 Dec 2018 20:59:09 +0100
|
||||
Subject: [PATCH 24/77] net: dsa: tell GDMA when we are turning on the special
|
||||
tag
|
||||
|
||||
Enabling this bit will make the RX DMA descriptor enable the SP bit for
|
||||
all ingress traffic inside the return descriptor. The PPE needs this to
|
||||
know that a SP is present.
|
||||
|
||||
based on
|
||||
https://github.com/openwrt/openwrt/blob/master/target/linux/mediatek/patches-4.14/0044-net-next-dsa-mediatek-tell-GDMA-when-we-are-turning-.patch
|
||||
|
||||
Signed-off-by: Frank Wunderlich <frank-w@public-files.de>
|
||||
---
|
||||
drivers/net/dsa/mt7530.c | 6 ++++++
|
||||
drivers/net/dsa/mt7530.h | 4 ++++
|
||||
2 files changed, 10 insertions(+)
|
||||
|
||||
diff --git a/drivers/net/dsa/mt7530.c b/drivers/net/dsa/mt7530.c
|
||||
index fda1b67dfeac..9690a9b59fce 100644
|
||||
--- a/drivers/net/dsa/mt7530.c
|
||||
+++ b/drivers/net/dsa/mt7530.c
|
||||
@@ -685,6 +685,12 @@ mt7530_cpu_port_enable(struct mt7530_priv *priv,
|
||||
mt7530_write(priv, MT7530_PVC_P(port),
|
||||
PORT_SPEC_TAG);
|
||||
|
||||
+ /* Enable Mediatek header mode on the GMAC that the cpu port
|
||||
+ * connects to
|
||||
+ */
|
||||
+ regmap_write_bits(priv->ethernet, MTK_GDMA_FWD_CFG(port),
|
||||
+ GDMA_SPEC_TAG, GDMA_SPEC_TAG);
|
||||
+
|
||||
/* Setup the MAC by default for the cpu port */
|
||||
mt7530_write(priv, MT7530_PMCR_P(port), PMCR_CPUP_LINK);
|
||||
|
||||
diff --git a/drivers/net/dsa/mt7530.h b/drivers/net/dsa/mt7530.h
|
||||
index d9b407a22a58..310f2536175b 100644
|
||||
--- a/drivers/net/dsa/mt7530.h
|
||||
+++ b/drivers/net/dsa/mt7530.h
|
||||
@@ -23,6 +23,10 @@
|
||||
|
||||
#define TRGMII_BASE(x) (0x10000 + (x))
|
||||
|
||||
+/* Registers for GDMA configuration access */
|
||||
+#define MTK_GDMA_FWD_CFG(x) (0x500 + (x * 0x1000))
|
||||
+#define GDMA_SPEC_TAG BIT(24)
|
||||
+
|
||||
/* Registers to ethsys access */
|
||||
#define ETHSYS_CLKCFG0 0x2c
|
||||
#define ETHSYS_TRGMII_CLK_SEL362_5 BIT(11)
|
||||
--
|
||||
2.19.1
|
||||
|
|
@ -0,0 +1,47 @@
|
|||
From 0f5ff06adcb20916acaf55976975a8b8844e785a Mon Sep 17 00:00:00 2001
|
||||
From: Frank Wunderlich <frank-w@public-files.de>
|
||||
Date: Sat, 8 Dec 2018 20:59:40 +0100
|
||||
Subject: [PATCH 25/77] net: dsa: mt7530 add linking to mdio
|
||||
|
||||
switch (7530) needs to to be linked to mdio-bus
|
||||
|
||||
based on
|
||||
https://github.com/openwrt/openwrt/blob/master/target/linux/mediatek/patches-4.14/0045-net-dsa-mediatek-turn-into-platform-driver.patch
|
||||
|
||||
Signed-off-by: Frank Wunderlich <frank-w@public-files.de>
|
||||
---
|
||||
drivers/net/dsa/mt7530.c | 10 ++++++++--
|
||||
1 file changed, 8 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/dsa/mt7530.c b/drivers/net/dsa/mt7530.c
|
||||
index 9690a9b59fce..8f95e22a33f6 100644
|
||||
--- a/drivers/net/dsa/mt7530.c
|
||||
+++ b/drivers/net/dsa/mt7530.c
|
||||
@@ -1349,7 +1349,7 @@ static int
|
||||
mt7530_probe(struct mdio_device *mdiodev)
|
||||
{
|
||||
struct mt7530_priv *priv;
|
||||
- struct device_node *dn;
|
||||
+ struct device_node *dn, *mdio;
|
||||
|
||||
dn = mdiodev->dev.of_node;
|
||||
|
||||
@@ -1396,8 +1396,14 @@ mt7530_probe(struct mdio_device *mdiodev)
|
||||
return PTR_ERR(priv->reset);
|
||||
}
|
||||
}
|
||||
+ mdio = of_get_parent(dn);
|
||||
+ if (!mdio)
|
||||
+ return -EINVAL;
|
||||
+
|
||||
+ priv->bus = of_mdio_find_bus(mdio);
|
||||
+ if (!priv->bus)
|
||||
+ return -EPROBE_DEFER;
|
||||
|
||||
- priv->bus = mdiodev->bus;
|
||||
priv->dev = &mdiodev->dev;
|
||||
priv->ds->priv = priv;
|
||||
priv->ds->ops = &mt7530_switch_ops;
|
||||
--
|
||||
2.19.1
|
||||
|
81
root/target/linux/mediatek/patches-4.19/0026-net-dsa-changes-to-dts.patch
Executable file
81
root/target/linux/mediatek/patches-4.19/0026-net-dsa-changes-to-dts.patch
Executable file
|
@ -0,0 +1,81 @@
|
|||
From 52365639697e10f1b641d25460c10d9ccc56a6d6 Mon Sep 17 00:00:00 2001
|
||||
From: Frank Wunderlich <frank-w@public-files.de>
|
||||
Date: Thu, 29 Nov 2018 10:53:44 +0100
|
||||
Subject: [PATCH 26/77] net: dsa: changes to dts
|
||||
|
||||
---
|
||||
arch/arm/boot/dts/mt7623n-bananapi-bpi-r2.dts | 29 ++++++++++++++++++-
|
||||
1 file changed, 28 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/arch/arm/boot/dts/mt7623n-bananapi-bpi-r2.dts b/arch/arm/boot/dts/mt7623n-bananapi-bpi-r2.dts
|
||||
index a47022765326..4c6e53d9e736 100644
|
||||
--- a/arch/arm/boot/dts/mt7623n-bananapi-bpi-r2.dts
|
||||
+++ b/arch/arm/boot/dts/mt7623n-bananapi-bpi-r2.dts
|
||||
@@ -157,6 +157,18 @@
|
||||
};
|
||||
};
|
||||
|
||||
+ gmac1: mac@1 {
|
||||
+ compatible = "mediatek,eth-mac";
|
||||
+ reg = <1>;
|
||||
+ phy-mode = "trgmii";
|
||||
+
|
||||
+ fixed-link {
|
||||
+ speed = <1000>;
|
||||
+ full-duplex;
|
||||
+ pause;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
mdio: mdio-bus {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
@@ -175,29 +187,44 @@
|
||||
port@0 {
|
||||
reg = <0>;
|
||||
label = "wan";
|
||||
+ default_cpu = <&cpu_port1>;
|
||||
};
|
||||
|
||||
port@1 {
|
||||
reg = <1>;
|
||||
label = "lan0";
|
||||
+ default_cpu = <&cpu_port0>;
|
||||
};
|
||||
|
||||
port@2 {
|
||||
reg = <2>;
|
||||
label = "lan1";
|
||||
+ default_cpu = <&cpu_port0>;
|
||||
};
|
||||
|
||||
port@3 {
|
||||
reg = <3>;
|
||||
label = "lan2";
|
||||
+ default_cpu = <&cpu_port0>;
|
||||
};
|
||||
|
||||
port@4 {
|
||||
reg = <4>;
|
||||
label = "lan3";
|
||||
+ default_cpu = <&cpu_port0>;
|
||||
};
|
||||
|
||||
- port@6 {
|
||||
+ cpu_port1: port@5 {
|
||||
+ reg = <5>;
|
||||
+ label = "cpu";
|
||||
+ ethernet = <&gmac1>;
|
||||
+ phy-mode = "trgmii";
|
||||
+ fixed-link {
|
||||
+ speed = <1000>;
|
||||
+ full-duplex;
|
||||
+ };
|
||||
+ };
|
||||
+ cpu_port0: port@6 {
|
||||
reg = <6>;
|
||||
label = "cpu";
|
||||
ethernet = <&gmac0>;
|
||||
--
|
||||
2.19.1
|
||||
|
|
@ -0,0 +1,171 @@
|
|||
From 49f64db56f05dc7ccb1d8836c19243b5620fc93d Mon Sep 17 00:00:00 2001
|
||||
From: chunhui dai <chunhui.dai@mediatek.com>
|
||||
Date: Wed, 3 Oct 2018 11:41:41 +0800
|
||||
Subject: [PATCH 27/77] drm/mediatek: add refcount for DPI power on/off
|
||||
|
||||
After the kernel 4.4, the DRM disable flow was changed, if DPI was
|
||||
disableed before CRTC, it will cause warning message as following:
|
||||
|
||||
------------[ cut here ]------------
|
||||
WARNING: CPU: 0 PID: 1339 at ../../linux/linux-4.4.24-mtk/drivers/gpu/drm/drm_irq.c:1326 drm_wait_one_vblank+0x188/0x18c()
|
||||
vblank wait timed out on crtc 0
|
||||
Modules linked in: bridge mt8521p_ir_shim(O) i2c_eeprom(O) mtk_m4(O) fuse_ctrl(O) virtual_block(O) caamkeys(PO) chk(PO) amperctl(O) ledctl(O) apple_auth(PO) micctl(O) sensors(PO) lla(O) sdd(PO) ice40_fpga(O) psmon(O) event_queue(PO) utils(O) blackbox(O)
|
||||
CPU: 0 PID: 1339 Comm: kworker/0:1 Tainted: P W O 4.4.24 #1
|
||||
Hardware name: Mediatek Cortex-A7 (Device Tree)
|
||||
Workqueue: events drm_mode_rmfb_work_fn
|
||||
[<c001a710>] (unwind_backtrace) from [<c00151e4>] (show_stack+0x20/0x24)
|
||||
[<c00151e4>] (show_stack) from [<c027961c>] (dump_stack+0x98/0xac)
|
||||
[<c027961c>] (dump_stack) from [<c002ac54>] (warn_slowpath_common+0x94/0xc4)
|
||||
[<c002ac54>] (warn_slowpath_common) from [<c002acc4>] (warn_slowpath_fmt+0x40/0x48)
|
||||
[<c002acc4>] (warn_slowpath_fmt) from [<c03307ac>] (drm_wait_one_vblank+0x188/0x18c)
|
||||
[<c03307ac>] (drm_wait_one_vblank) from [<c03307d8>] (drm_crtc_wait_one_vblank+0x28/0x2c)
|
||||
[<c03307d8>] (drm_crtc_wait_one_vblank) from [<c034f48c>] (mtk_drm_crtc_disable+0x78/0x240)
|
||||
[<c034f48c>] (mtk_drm_crtc_disable) from [<c03240d4>] (drm_atomic_helper_commit_modeset_disables+0x128/0x3b8)
|
||||
[<c03240d4>] (drm_atomic_helper_commit_modeset_disables) from [<c0350a7c>] (mtk_atomic_complete+0x74/0xb4)
|
||||
[<c0350a7c>] (mtk_atomic_complete) from [<c0350b24>] (mtk_atomic_commit+0x68/0x98)
|
||||
[<c0350b24>] (mtk_atomic_commit) from [<c034ab48>] (drm_atomic_commit+0x54/0x74)
|
||||
[<c034ab48>] (drm_atomic_commit) from [<c0325c4c>] (drm_atomic_helper_set_config+0x7c/0xa0)
|
||||
[<c0325c4c>] (drm_atomic_helper_set_config) from [<c0338594>] (drm_mode_set_config_internal+0x68/0xe4)
|
||||
[<c0338594>] (drm_mode_set_config_internal) from [<c033967c>] (drm_framebuffer_remove+0xe4/0x120)
|
||||
[<c033967c>] (drm_framebuffer_remove) from [<c0339700>] (drm_mode_rmfb_work_fn+0x48/0x58)
|
||||
[<c0339700>] (drm_mode_rmfb_work_fn) from [<c0043a38>] (process_one_work+0x154/0x50c)
|
||||
[<c0043a38>] (process_one_work) from [<c0044074>] (worker_thread+0x284/0x568)
|
||||
[<c0044074>] (worker_thread) from [<c0049dc4>] (kthread+0xec/0x104)
|
||||
[<c0049dc4>] (kthread) from [<c0010678>] (ret_from_fork+0x14/0x3c)
|
||||
---[ end trace 12ae5358e992abd5 ]---
|
||||
|
||||
so, we add refcount for DPI power on/off to protect the flow.
|
||||
|
||||
Signed-off-by: Bibby Hsieh <bibby.hsieh@mediatek.com>
|
||||
Signed-off-by: chunhui dai <chunhui.dai@mediatek.com>
|
||||
Reviewed-by: CK Hu <ck.hu@mediatek.com>
|
||||
---
|
||||
drivers/gpu/drm/mediatek/mtk_dpi.c | 43 +++++++++---------------------
|
||||
1 file changed, 13 insertions(+), 30 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/mediatek/mtk_dpi.c b/drivers/gpu/drm/mediatek/mtk_dpi.c
|
||||
index 6c0ea39d5739..5ede1ddbaa1a 100644
|
||||
--- a/drivers/gpu/drm/mediatek/mtk_dpi.c
|
||||
+++ b/drivers/gpu/drm/mediatek/mtk_dpi.c
|
||||
@@ -76,8 +76,7 @@ struct mtk_dpi {
|
||||
enum mtk_dpi_out_yc_map yc_map;
|
||||
enum mtk_dpi_out_bit_num bit_num;
|
||||
enum mtk_dpi_out_channel_swap channel_swap;
|
||||
- bool power_sta;
|
||||
- u8 power_ctl;
|
||||
+ int refcount;
|
||||
};
|
||||
|
||||
static inline struct mtk_dpi *mtk_dpi_from_encoder(struct drm_encoder *e)
|
||||
@@ -90,11 +89,6 @@ enum mtk_dpi_polarity {
|
||||
MTK_DPI_POLARITY_FALLING,
|
||||
};
|
||||
|
||||
-enum mtk_dpi_power_ctl {
|
||||
- DPI_POWER_START = BIT(0),
|
||||
- DPI_POWER_ENABLE = BIT(1),
|
||||
-};
|
||||
-
|
||||
struct mtk_dpi_polarities {
|
||||
enum mtk_dpi_polarity de_pol;
|
||||
enum mtk_dpi_polarity ck_pol;
|
||||
@@ -367,40 +361,30 @@ static void mtk_dpi_config_color_format(struct mtk_dpi *dpi,
|
||||
}
|
||||
}
|
||||
|
||||
-static void mtk_dpi_power_off(struct mtk_dpi *dpi, enum mtk_dpi_power_ctl pctl)
|
||||
+static void mtk_dpi_power_off(struct mtk_dpi *dpi)
|
||||
{
|
||||
- dpi->power_ctl &= ~pctl;
|
||||
-
|
||||
- if ((dpi->power_ctl & DPI_POWER_START) ||
|
||||
- (dpi->power_ctl & DPI_POWER_ENABLE))
|
||||
+ if (WARN_ON(dpi->refcount == 0))
|
||||
return;
|
||||
|
||||
- if (!dpi->power_sta)
|
||||
+ if (--dpi->refcount != 0)
|
||||
return;
|
||||
|
||||
mtk_dpi_disable(dpi);
|
||||
clk_disable_unprepare(dpi->pixel_clk);
|
||||
clk_disable_unprepare(dpi->engine_clk);
|
||||
- dpi->power_sta = false;
|
||||
}
|
||||
|
||||
-static int mtk_dpi_power_on(struct mtk_dpi *dpi, enum mtk_dpi_power_ctl pctl)
|
||||
+static int mtk_dpi_power_on(struct mtk_dpi *dpi)
|
||||
{
|
||||
int ret;
|
||||
|
||||
- dpi->power_ctl |= pctl;
|
||||
-
|
||||
- if (!(dpi->power_ctl & DPI_POWER_START) &&
|
||||
- !(dpi->power_ctl & DPI_POWER_ENABLE))
|
||||
- return 0;
|
||||
-
|
||||
- if (dpi->power_sta)
|
||||
+ if (++dpi->refcount != 1)
|
||||
return 0;
|
||||
|
||||
ret = clk_prepare_enable(dpi->engine_clk);
|
||||
if (ret) {
|
||||
dev_err(dpi->dev, "Failed to enable engine clock: %d\n", ret);
|
||||
- goto err_eng;
|
||||
+ goto err_refcount;
|
||||
}
|
||||
|
||||
ret = clk_prepare_enable(dpi->pixel_clk);
|
||||
@@ -410,13 +394,12 @@ static int mtk_dpi_power_on(struct mtk_dpi *dpi, enum mtk_dpi_power_ctl pctl)
|
||||
}
|
||||
|
||||
mtk_dpi_enable(dpi);
|
||||
- dpi->power_sta = true;
|
||||
return 0;
|
||||
|
||||
err_pixel:
|
||||
clk_disable_unprepare(dpi->engine_clk);
|
||||
-err_eng:
|
||||
- dpi->power_ctl &= ~pctl;
|
||||
+err_refcount:
|
||||
+ dpi->refcount--;
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -552,14 +535,14 @@ static void mtk_dpi_encoder_disable(struct drm_encoder *encoder)
|
||||
{
|
||||
struct mtk_dpi *dpi = mtk_dpi_from_encoder(encoder);
|
||||
|
||||
- mtk_dpi_power_off(dpi, DPI_POWER_ENABLE);
|
||||
+ mtk_dpi_power_off(dpi);
|
||||
}
|
||||
|
||||
static void mtk_dpi_encoder_enable(struct drm_encoder *encoder)
|
||||
{
|
||||
struct mtk_dpi *dpi = mtk_dpi_from_encoder(encoder);
|
||||
|
||||
- mtk_dpi_power_on(dpi, DPI_POWER_ENABLE);
|
||||
+ mtk_dpi_power_on(dpi);
|
||||
mtk_dpi_set_display_mode(dpi, &dpi->mode);
|
||||
}
|
||||
|
||||
@@ -582,14 +565,14 @@ static void mtk_dpi_start(struct mtk_ddp_comp *comp)
|
||||
{
|
||||
struct mtk_dpi *dpi = container_of(comp, struct mtk_dpi, ddp_comp);
|
||||
|
||||
- mtk_dpi_power_on(dpi, DPI_POWER_START);
|
||||
+ mtk_dpi_power_on(dpi);
|
||||
}
|
||||
|
||||
static void mtk_dpi_stop(struct mtk_ddp_comp *comp)
|
||||
{
|
||||
struct mtk_dpi *dpi = container_of(comp, struct mtk_dpi, ddp_comp);
|
||||
|
||||
- mtk_dpi_power_off(dpi, DPI_POWER_START);
|
||||
+ mtk_dpi_power_off(dpi);
|
||||
}
|
||||
|
||||
static const struct mtk_ddp_comp_funcs mtk_dpi_funcs = {
|
||||
--
|
||||
2.19.1
|
||||
|
|
@ -0,0 +1,101 @@
|
|||
From c2b3363773bfc93b3e4082ccfa99cda18ea980be Mon Sep 17 00:00:00 2001
|
||||
From: chunhui dai <chunhui.dai@mediatek.com>
|
||||
Date: Wed, 3 Oct 2018 11:41:42 +0800
|
||||
Subject: [PATCH 28/77] drm/mediatek: move hardware register to node data
|
||||
|
||||
The address of register DPI_H_FRE_CON is different in different IC.
|
||||
Using of_node data to find this address.
|
||||
|
||||
Reviewed-by: CK Hu <ck.hu@mediatek.com>
|
||||
Signed-off-by: chunhui dai <chunhui.dai@mediatek.com>
|
||||
---
|
||||
drivers/gpu/drm/mediatek/mtk_dpi.c | 19 ++++++++++++++++---
|
||||
drivers/gpu/drm/mediatek/mtk_dpi_regs.h | 1 -
|
||||
2 files changed, 16 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/mediatek/mtk_dpi.c b/drivers/gpu/drm/mediatek/mtk_dpi.c
|
||||
index 5ede1ddbaa1a..72aa43187731 100644
|
||||
--- a/drivers/gpu/drm/mediatek/mtk_dpi.c
|
||||
+++ b/drivers/gpu/drm/mediatek/mtk_dpi.c
|
||||
@@ -18,6 +18,7 @@
|
||||
#include <linux/component.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/of.h>
|
||||
+#include <linux/of_device.h>
|
||||
#include <linux/of_graph.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/types.h>
|
||||
@@ -72,6 +73,7 @@ struct mtk_dpi {
|
||||
struct clk *tvd_clk;
|
||||
int irq;
|
||||
struct drm_display_mode mode;
|
||||
+ const struct mtk_dpi_conf *conf;
|
||||
enum mtk_dpi_out_color_format color_format;
|
||||
enum mtk_dpi_out_yc_map yc_map;
|
||||
enum mtk_dpi_out_bit_num bit_num;
|
||||
@@ -110,6 +112,10 @@ struct mtk_dpi_yc_limit {
|
||||
u16 c_bottom;
|
||||
};
|
||||
|
||||
+struct mtk_dpi_conf {
|
||||
+ u32 reg_h_fre_con;
|
||||
+};
|
||||
+
|
||||
static void mtk_dpi_mask(struct mtk_dpi *dpi, u32 offset, u32 val, u32 mask)
|
||||
{
|
||||
u32 tmp = readl(dpi->regs + offset) & ~mask;
|
||||
@@ -335,7 +341,7 @@ static void mtk_dpi_config_swap_input(struct mtk_dpi *dpi, bool enable)
|
||||
|
||||
static void mtk_dpi_config_2n_h_fre(struct mtk_dpi *dpi)
|
||||
{
|
||||
- mtk_dpi_mask(dpi, DPI_H_FRE_CON, H_FRE_2N, H_FRE_2N);
|
||||
+ mtk_dpi_mask(dpi, dpi->conf->reg_h_fre_con, H_FRE_2N, H_FRE_2N);
|
||||
}
|
||||
|
||||
static void mtk_dpi_config_color_format(struct mtk_dpi *dpi,
|
||||
@@ -639,6 +645,10 @@ static const struct component_ops mtk_dpi_component_ops = {
|
||||
.unbind = mtk_dpi_unbind,
|
||||
};
|
||||
|
||||
+static const struct mtk_dpi_conf mt8173_conf = {
|
||||
+ .reg_h_fre_con = 0xe0,
|
||||
+};
|
||||
+
|
||||
static int mtk_dpi_probe(struct platform_device *pdev)
|
||||
{
|
||||
struct device *dev = &pdev->dev;
|
||||
@@ -653,6 +663,7 @@ static int mtk_dpi_probe(struct platform_device *pdev)
|
||||
return -ENOMEM;
|
||||
|
||||
dpi->dev = dev;
|
||||
+ dpi->conf = (struct mtk_dpi_conf *)of_device_get_match_data(dev);
|
||||
|
||||
mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
||||
dpi->regs = devm_ioremap_resource(dev, mem);
|
||||
@@ -732,8 +743,10 @@ static int mtk_dpi_remove(struct platform_device *pdev)
|
||||
}
|
||||
|
||||
static const struct of_device_id mtk_dpi_of_ids[] = {
|
||||
- { .compatible = "mediatek,mt8173-dpi", },
|
||||
- {}
|
||||
+ { .compatible = "mediatek,mt8173-dpi",
|
||||
+ .data = &mt8173_conf,
|
||||
+ },
|
||||
+ { },
|
||||
};
|
||||
|
||||
struct platform_driver mtk_dpi_driver = {
|
||||
diff --git a/drivers/gpu/drm/mediatek/mtk_dpi_regs.h b/drivers/gpu/drm/mediatek/mtk_dpi_regs.h
|
||||
index 4b6ad4751a31..040444d7718d 100644
|
||||
--- a/drivers/gpu/drm/mediatek/mtk_dpi_regs.h
|
||||
+++ b/drivers/gpu/drm/mediatek/mtk_dpi_regs.h
|
||||
@@ -223,6 +223,5 @@
|
||||
#define ESAV_CODE2 (0xFFF << 0)
|
||||
#define ESAV_CODE3_MSB BIT(16)
|
||||
|
||||
-#define DPI_H_FRE_CON 0xE0
|
||||
#define H_FRE_2N BIT(25)
|
||||
#endif /* __MTK_DPI_REGS_H */
|
||||
--
|
||||
2.19.1
|
||||
|
|
@ -0,0 +1,62 @@
|
|||
From d0b9bb15fad38e8328f9436501e36697e4e1a89d Mon Sep 17 00:00:00 2001
|
||||
From: chunhui dai <chunhui.dai@mediatek.com>
|
||||
Date: Wed, 3 Oct 2018 11:41:43 +0800
|
||||
Subject: [PATCH 29/77] drm/mediatek: adjust EDGE to match clock and data
|
||||
|
||||
The default timing of DPI data and clock is not match.
|
||||
We could adjust this bit to make them match.
|
||||
|
||||
Signed-off-by: chunhui dai <chunhui.dai@mediatek.com>
|
||||
Reviewed-by: CK Hu <ck.hu@mediatek.com>
|
||||
---
|
||||
drivers/gpu/drm/mediatek/mtk_dpi.c | 8 ++++++++
|
||||
drivers/gpu/drm/mediatek/mtk_dpi_regs.h | 1 +
|
||||
2 files changed, 9 insertions(+)
|
||||
|
||||
diff --git a/drivers/gpu/drm/mediatek/mtk_dpi.c b/drivers/gpu/drm/mediatek/mtk_dpi.c
|
||||
index 72aa43187731..0ce4b61efaeb 100644
|
||||
--- a/drivers/gpu/drm/mediatek/mtk_dpi.c
|
||||
+++ b/drivers/gpu/drm/mediatek/mtk_dpi.c
|
||||
@@ -114,6 +114,7 @@ struct mtk_dpi_yc_limit {
|
||||
|
||||
struct mtk_dpi_conf {
|
||||
u32 reg_h_fre_con;
|
||||
+ bool edge_sel_en;
|
||||
};
|
||||
|
||||
static void mtk_dpi_mask(struct mtk_dpi *dpi, u32 offset, u32 val, u32 mask)
|
||||
@@ -344,6 +345,12 @@ static void mtk_dpi_config_2n_h_fre(struct mtk_dpi *dpi)
|
||||
mtk_dpi_mask(dpi, dpi->conf->reg_h_fre_con, H_FRE_2N, H_FRE_2N);
|
||||
}
|
||||
|
||||
+static void mtk_dpi_config_disable_edge(struct mtk_dpi *dpi)
|
||||
+{
|
||||
+ if (dpi->conf->edge_sel_en)
|
||||
+ mtk_dpi_mask(dpi, dpi->conf->reg_h_fre_con, 0, EDGE_SEL_EN);
|
||||
+}
|
||||
+
|
||||
static void mtk_dpi_config_color_format(struct mtk_dpi *dpi,
|
||||
enum mtk_dpi_out_color_format format)
|
||||
{
|
||||
@@ -507,6 +514,7 @@ static int mtk_dpi_set_display_mode(struct mtk_dpi *dpi,
|
||||
mtk_dpi_config_yc_map(dpi, dpi->yc_map);
|
||||
mtk_dpi_config_color_format(dpi, dpi->color_format);
|
||||
mtk_dpi_config_2n_h_fre(dpi);
|
||||
+ mtk_dpi_config_disable_edge(dpi);
|
||||
mtk_dpi_sw_reset(dpi, false);
|
||||
|
||||
return 0;
|
||||
diff --git a/drivers/gpu/drm/mediatek/mtk_dpi_regs.h b/drivers/gpu/drm/mediatek/mtk_dpi_regs.h
|
||||
index 040444d7718d..d9db8c4cacd7 100644
|
||||
--- a/drivers/gpu/drm/mediatek/mtk_dpi_regs.h
|
||||
+++ b/drivers/gpu/drm/mediatek/mtk_dpi_regs.h
|
||||
@@ -223,5 +223,6 @@
|
||||
#define ESAV_CODE2 (0xFFF << 0)
|
||||
#define ESAV_CODE3_MSB BIT(16)
|
||||
|
||||
+#define EDGE_SEL_EN BIT(5)
|
||||
#define H_FRE_2N BIT(25)
|
||||
#endif /* __MTK_DPI_REGS_H */
|
||||
--
|
||||
2.19.1
|
||||
|
|
@ -0,0 +1,68 @@
|
|||
From 0a8f36a231341ac5d66c186bcb1600a5abc00132 Mon Sep 17 00:00:00 2001
|
||||
From: chunhui dai <chunhui.dai@mediatek.com>
|
||||
Date: Wed, 3 Oct 2018 11:41:44 +0800
|
||||
Subject: [PATCH 30/77] drm/mediatek: add clock factor for different IC
|
||||
|
||||
different IC has different clock designed in HDMI, the factor for
|
||||
calculate clock should be different. Usinng the data in of_node
|
||||
to find this factor.
|
||||
|
||||
Reviewed-by: CK Hu <ck.hu@mediatek.com>
|
||||
Signed-off-by: chunhui dai <chunhui.dai@mediatek.com>
|
||||
---
|
||||
drivers/gpu/drm/mediatek/mtk_dpi.c | 24 +++++++++++++++---------
|
||||
1 file changed, 15 insertions(+), 9 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/mediatek/mtk_dpi.c b/drivers/gpu/drm/mediatek/mtk_dpi.c
|
||||
index 0ce4b61efaeb..0dbe9345fa2e 100644
|
||||
--- a/drivers/gpu/drm/mediatek/mtk_dpi.c
|
||||
+++ b/drivers/gpu/drm/mediatek/mtk_dpi.c
|
||||
@@ -113,6 +113,7 @@ struct mtk_dpi_yc_limit {
|
||||
};
|
||||
|
||||
struct mtk_dpi_conf {
|
||||
+ unsigned int (*cal_factor)(int clock);
|
||||
u32 reg_h_fre_con;
|
||||
bool edge_sel_en;
|
||||
};
|
||||
@@ -431,15 +432,7 @@ static int mtk_dpi_set_display_mode(struct mtk_dpi *dpi,
|
||||
unsigned int factor;
|
||||
|
||||
/* let pll_rate can fix the valid range of tvdpll (1G~2GHz) */
|
||||
-
|
||||
- if (mode->clock <= 27000)
|
||||
- factor = 3 << 4;
|
||||
- else if (mode->clock <= 84000)
|
||||
- factor = 3 << 3;
|
||||
- else if (mode->clock <= 167000)
|
||||
- factor = 3 << 2;
|
||||
- else
|
||||
- factor = 3 << 1;
|
||||
+ factor = dpi->conf->cal_factor(mode->clock);
|
||||
drm_display_mode_to_videomode(mode, &vm);
|
||||
pll_rate = vm.pixelclock * factor;
|
||||
|
||||
@@ -653,7 +646,20 @@ static const struct component_ops mtk_dpi_component_ops = {
|
||||
.unbind = mtk_dpi_unbind,
|
||||
};
|
||||
|
||||
+static unsigned int mt8173_calculate_factor(int clock)
|
||||
+{
|
||||
+ if (clock <= 27000)
|
||||
+ return 3 << 4;
|
||||
+ else if (clock <= 84000)
|
||||
+ return 3 << 3;
|
||||
+ else if (clock <= 167000)
|
||||
+ return 3 << 2;
|
||||
+ else
|
||||
+ return 3 << 1;
|
||||
+}
|
||||
+
|
||||
static const struct mtk_dpi_conf mt8173_conf = {
|
||||
+ .cal_factor = mt8173_calculate_factor,
|
||||
.reg_h_fre_con = 0xe0,
|
||||
};
|
||||
|
||||
--
|
||||
2.19.1
|
||||
|
|
@ -0,0 +1,66 @@
|
|||
From ef9b74fc6412b2402f882b012f78bfb3031aa4c6 Mon Sep 17 00:00:00 2001
|
||||
From: chunhui dai <chunhui.dai@mediatek.com>
|
||||
Date: Wed, 3 Oct 2018 11:41:45 +0800
|
||||
Subject: [PATCH 31/77] drm/mediatek: convert dpi driver to use
|
||||
drm_of_find_panel_or_bridge
|
||||
|
||||
Convert dpi driver to use drm_of_find_panel_or_bridge.
|
||||
This changes some error messages to debug messages (in the graph core).
|
||||
Graph connections are often "no connects" depending on the particular
|
||||
board, so we want to avoid spurious messages. Plus the kernel is not a
|
||||
DT validator.
|
||||
related links:
|
||||
[1] https://lkml.org/lkml/2017/2/3/716
|
||||
[2] https://lkml.org/lkml/2017/2/3/719
|
||||
|
||||
Signed-off-by: chunhui dai <chunhui.dai@mediatek.com>
|
||||
Reviewed-by: CK Hu <ck.hu@mediatek.com>
|
||||
---
|
||||
drivers/gpu/drm/mediatek/mtk_dpi.c | 16 ++++++----------
|
||||
1 file changed, 6 insertions(+), 10 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/mediatek/mtk_dpi.c b/drivers/gpu/drm/mediatek/mtk_dpi.c
|
||||
index 0dbe9345fa2e..08915e1765f8 100644
|
||||
--- a/drivers/gpu/drm/mediatek/mtk_dpi.c
|
||||
+++ b/drivers/gpu/drm/mediatek/mtk_dpi.c
|
||||
@@ -14,6 +14,7 @@
|
||||
#include <drm/drmP.h>
|
||||
#include <drm/drm_crtc.h>
|
||||
#include <drm/drm_crtc_helper.h>
|
||||
+#include <drm/drm_of.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/component.h>
|
||||
#include <linux/platform_device.h>
|
||||
@@ -668,7 +669,6 @@ static int mtk_dpi_probe(struct platform_device *pdev)
|
||||
struct device *dev = &pdev->dev;
|
||||
struct mtk_dpi *dpi;
|
||||
struct resource *mem;
|
||||
- struct device_node *bridge_node;
|
||||
int comp_id;
|
||||
int ret;
|
||||
|
||||
@@ -714,16 +714,12 @@ static int mtk_dpi_probe(struct platform_device *pdev)
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
- bridge_node = of_graph_get_remote_node(dev->of_node, 0, 0);
|
||||
- if (!bridge_node)
|
||||
- return -ENODEV;
|
||||
-
|
||||
- dev_info(dev, "Found bridge node: %pOF\n", bridge_node);
|
||||
+ ret = drm_of_find_panel_or_bridge(dev->of_node, 0, 0,
|
||||
+ NULL, &dpi->bridge);
|
||||
+ if (ret)
|
||||
+ return ret;
|
||||
|
||||
- dpi->bridge = of_drm_find_bridge(bridge_node);
|
||||
- of_node_put(bridge_node);
|
||||
- if (!dpi->bridge)
|
||||
- return -EPROBE_DEFER;
|
||||
+ dev_info(dev, "Found bridge node: %pOF\n", dpi->bridge->of_node);
|
||||
|
||||
comp_id = mtk_ddp_comp_get_id(dev->of_node, MTK_DPI);
|
||||
if (comp_id < 0) {
|
||||
--
|
||||
2.19.1
|
||||
|
|
@ -0,0 +1,76 @@
|
|||
From 5750b7268c5412e18a476482f92425eb0228564b Mon Sep 17 00:00:00 2001
|
||||
From: chunhui dai <chunhui.dai@mediatek.com>
|
||||
Date: Wed, 3 Oct 2018 11:41:46 +0800
|
||||
Subject: [PATCH 32/77] drm/mediatek: add dpi driver for mt2701 and mt7623
|
||||
|
||||
This patch adds dpi dirver suppot for both mt2701 and mt7623.
|
||||
And also support other (existing or future) chips that use
|
||||
the same binding and driver.
|
||||
|
||||
Reviewed-by: CK Hu <ck.hu@mediatek.com>
|
||||
Signed-off-by: chunhui dai <chunhui.dai@mediatek.com>
|
||||
---
|
||||
drivers/gpu/drm/mediatek/mtk_dpi.c | 21 +++++++++++++++++++++
|
||||
drivers/gpu/drm/mediatek/mtk_drm_drv.c | 2 ++
|
||||
2 files changed, 23 insertions(+)
|
||||
|
||||
diff --git a/drivers/gpu/drm/mediatek/mtk_dpi.c b/drivers/gpu/drm/mediatek/mtk_dpi.c
|
||||
index 08915e1765f8..62a9d47df948 100644
|
||||
--- a/drivers/gpu/drm/mediatek/mtk_dpi.c
|
||||
+++ b/drivers/gpu/drm/mediatek/mtk_dpi.c
|
||||
@@ -659,11 +659,29 @@ static unsigned int mt8173_calculate_factor(int clock)
|
||||
return 3 << 1;
|
||||
}
|
||||
|
||||
+static unsigned int mt2701_calculate_factor(int clock)
|
||||
+{
|
||||
+ if (clock <= 64000)
|
||||
+ return 16;
|
||||
+ else if (clock <= 128000)
|
||||
+ return 8;
|
||||
+ else if (clock <= 256000)
|
||||
+ return 4;
|
||||
+ else
|
||||
+ return 2;
|
||||
+}
|
||||
+
|
||||
static const struct mtk_dpi_conf mt8173_conf = {
|
||||
.cal_factor = mt8173_calculate_factor,
|
||||
.reg_h_fre_con = 0xe0,
|
||||
};
|
||||
|
||||
+static const struct mtk_dpi_conf mt2701_conf = {
|
||||
+ .cal_factor = mt2701_calculate_factor,
|
||||
+ .reg_h_fre_con = 0xb0,
|
||||
+ .edge_sel_en = true,
|
||||
+};
|
||||
+
|
||||
static int mtk_dpi_probe(struct platform_device *pdev)
|
||||
{
|
||||
struct device *dev = &pdev->dev;
|
||||
@@ -753,6 +771,9 @@ static int mtk_dpi_remove(struct platform_device *pdev)
|
||||
}
|
||||
|
||||
static const struct of_device_id mtk_dpi_of_ids[] = {
|
||||
+ { .compatible = "mediatek,mt2701-dpi",
|
||||
+ .data = &mt2701_conf,
|
||||
+ },
|
||||
{ .compatible = "mediatek,mt8173-dpi",
|
||||
.data = &mt8173_conf,
|
||||
},
|
||||
diff --git a/drivers/gpu/drm/mediatek/mtk_drm_drv.c b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
|
||||
index 47ec604289b7..6422e99952fe 100644
|
||||
--- a/drivers/gpu/drm/mediatek/mtk_drm_drv.c
|
||||
+++ b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
|
||||
@@ -424,6 +424,8 @@ static const struct of_device_id mtk_ddp_comp_dt_ids[] = {
|
||||
.data = (void *)MTK_DSI },
|
||||
{ .compatible = "mediatek,mt8173-dsi",
|
||||
.data = (void *)MTK_DSI },
|
||||
+ { .compatible = "mediatek,mt2701-dpi",
|
||||
+ .data = (void *)MTK_DPI },
|
||||
{ .compatible = "mediatek,mt8173-dpi",
|
||||
.data = (void *)MTK_DPI },
|
||||
{ .compatible = "mediatek,mt2701-disp-mutex",
|
||||
--
|
||||
2.19.1
|
||||
|
|
@ -0,0 +1,641 @@
|
|||
From 186643bd86d33f0a773139deb5af6e12354b5907 Mon Sep 17 00:00:00 2001
|
||||
From: chunhui dai <chunhui.dai@mediatek.com>
|
||||
Date: Wed, 3 Oct 2018 11:41:47 +0800
|
||||
Subject: [PATCH 33/77] drm/mediatek: separate hdmi phy to different file
|
||||
|
||||
Different IC has different phy setting of HDMI.
|
||||
This patch separates the phy hardware relate part for mt8173.
|
||||
|
||||
Signed-off-by: chunhui dai <chunhui.dai@mediatek.com>
|
||||
Reviewed-by: CK Hu <ck.hu@mediatek.com>
|
||||
---
|
||||
drivers/gpu/drm/mediatek/Makefile | 6 +-
|
||||
drivers/gpu/drm/mediatek/mtk_hdmi.c | 1 +
|
||||
drivers/gpu/drm/mediatek/mtk_hdmi.h | 2 +-
|
||||
drivers/gpu/drm/mediatek/mtk_hdmi_phy.c | 232 ++++++++++++++++++
|
||||
drivers/gpu/drm/mediatek/mtk_hdmi_phy.h | 58 +++++
|
||||
.../gpu/drm/mediatek/mtk_mt8173_hdmi_phy.c | 226 +----------------
|
||||
6 files changed, 302 insertions(+), 223 deletions(-)
|
||||
create mode 100644 drivers/gpu/drm/mediatek/mtk_hdmi_phy.c
|
||||
create mode 100644 drivers/gpu/drm/mediatek/mtk_hdmi_phy.h
|
||||
|
||||
diff --git a/drivers/gpu/drm/mediatek/Makefile b/drivers/gpu/drm/mediatek/Makefile
|
||||
index ce83c396a742..61cf0d2ab28a 100644
|
||||
--- a/drivers/gpu/drm/mediatek/Makefile
|
||||
+++ b/drivers/gpu/drm/mediatek/Makefile
|
||||
@@ -1,4 +1,5 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
+
|
||||
mediatek-drm-y := mtk_disp_color.o \
|
||||
mtk_disp_ovl.o \
|
||||
mtk_disp_rdma.o \
|
||||
@@ -18,6 +19,7 @@ obj-$(CONFIG_DRM_MEDIATEK) += mediatek-drm.o
|
||||
mediatek-drm-hdmi-objs := mtk_cec.o \
|
||||
mtk_hdmi.o \
|
||||
mtk_hdmi_ddc.o \
|
||||
- mtk_mt8173_hdmi_phy.o
|
||||
+ mtk_mt8173_hdmi_phy.o \
|
||||
+ mtk_hdmi_phy.o
|
||||
|
||||
-obj-$(CONFIG_DRM_MEDIATEK_HDMI) += mediatek-drm-hdmi.o
|
||||
+obj-$(CONFIG_DRM_MEDIATEK_HDMI) += mediatek-drm-hdmi.o
|
||||
\ No newline at end of file
|
||||
diff --git a/drivers/gpu/drm/mediatek/mtk_hdmi.c b/drivers/gpu/drm/mediatek/mtk_hdmi.c
|
||||
index 643f5edd68fe..29bd2a144b19 100644
|
||||
--- a/drivers/gpu/drm/mediatek/mtk_hdmi.c
|
||||
+++ b/drivers/gpu/drm/mediatek/mtk_hdmi.c
|
||||
@@ -233,6 +233,7 @@ static void mtk_hdmi_hw_vid_black(struct mtk_hdmi *hdmi, bool black)
|
||||
static void mtk_hdmi_hw_make_reg_writable(struct mtk_hdmi *hdmi, bool enable)
|
||||
{
|
||||
struct arm_smccc_res res;
|
||||
+ struct mtk_hdmi_phy *hdmi_phy = phy_get_drvdata(hdmi->phy);
|
||||
|
||||
/*
|
||||
* MT8173 HDMI hardware has an output control bit to enable/disable HDMI
|
||||
diff --git a/drivers/gpu/drm/mediatek/mtk_hdmi.h b/drivers/gpu/drm/mediatek/mtk_hdmi.h
|
||||
index 6371b3de1ff6..3e9fb8d19802 100644
|
||||
--- a/drivers/gpu/drm/mediatek/mtk_hdmi.h
|
||||
+++ b/drivers/gpu/drm/mediatek/mtk_hdmi.h
|
||||
@@ -13,11 +13,11 @@
|
||||
*/
|
||||
#ifndef _MTK_HDMI_CTRL_H
|
||||
#define _MTK_HDMI_CTRL_H
|
||||
+#include "mtk_hdmi_phy.h"
|
||||
|
||||
struct platform_driver;
|
||||
|
||||
extern struct platform_driver mtk_cec_driver;
|
||||
extern struct platform_driver mtk_hdmi_ddc_driver;
|
||||
-extern struct platform_driver mtk_hdmi_phy_driver;
|
||||
|
||||
#endif /* _MTK_HDMI_CTRL_H */
|
||||
diff --git a/drivers/gpu/drm/mediatek/mtk_hdmi_phy.c b/drivers/gpu/drm/mediatek/mtk_hdmi_phy.c
|
||||
new file mode 100644
|
||||
index 000000000000..514f3e9a8767
|
||||
--- /dev/null
|
||||
+++ b/drivers/gpu/drm/mediatek/mtk_hdmi_phy.c
|
||||
@@ -0,0 +1,232 @@
|
||||
+// SPDX-License-Identifier: GPL-2.0
|
||||
+/*
|
||||
+ * Copyright (c) 2018 MediaTek Inc.
|
||||
+ * Author: Jie Qiu <jie.qiu@mediatek.com>
|
||||
+ */
|
||||
+
|
||||
+#include "mtk_hdmi_phy.h"
|
||||
+
|
||||
+static int mtk_hdmi_phy_power_on(struct phy *phy);
|
||||
+static int mtk_hdmi_phy_power_off(struct phy *phy);
|
||||
+
|
||||
+static const struct phy_ops mtk_hdmi_phy_dev_ops = {
|
||||
+ .power_on = mtk_hdmi_phy_power_on,
|
||||
+ .power_off = mtk_hdmi_phy_power_off,
|
||||
+ .owner = THIS_MODULE,
|
||||
+};
|
||||
+
|
||||
+long mtk_hdmi_pll_round_rate(struct clk_hw *hw, unsigned long rate,
|
||||
+ unsigned long *parent_rate)
|
||||
+{
|
||||
+ struct mtk_hdmi_phy *hdmi_phy = to_mtk_hdmi_phy(hw);
|
||||
+
|
||||
+ hdmi_phy->pll_rate = rate;
|
||||
+ if (rate <= 74250000)
|
||||
+ *parent_rate = rate;
|
||||
+ else
|
||||
+ *parent_rate = rate / 2;
|
||||
+
|
||||
+ return rate;
|
||||
+}
|
||||
+
|
||||
+unsigned long mtk_hdmi_pll_recalc_rate(struct clk_hw *hw,
|
||||
+ unsigned long parent_rate)
|
||||
+{
|
||||
+ struct mtk_hdmi_phy *hdmi_phy = to_mtk_hdmi_phy(hw);
|
||||
+
|
||||
+ return hdmi_phy->pll_rate;
|
||||
+}
|
||||
+
|
||||
+void mtk_hdmi_phy_clear_bits(struct mtk_hdmi_phy *hdmi_phy, u32 offset,
|
||||
+ u32 bits)
|
||||
+{
|
||||
+ void __iomem *reg = hdmi_phy->regs + offset;
|
||||
+ u32 tmp;
|
||||
+
|
||||
+ tmp = readl(reg);
|
||||
+ tmp &= ~bits;
|
||||
+ writel(tmp, reg);
|
||||
+}
|
||||
+
|
||||
+void mtk_hdmi_phy_set_bits(struct mtk_hdmi_phy *hdmi_phy, u32 offset,
|
||||
+ u32 bits)
|
||||
+{
|
||||
+ void __iomem *reg = hdmi_phy->regs + offset;
|
||||
+ u32 tmp;
|
||||
+
|
||||
+ tmp = readl(reg);
|
||||
+ tmp |= bits;
|
||||
+ writel(tmp, reg);
|
||||
+}
|
||||
+
|
||||
+void mtk_hdmi_phy_mask(struct mtk_hdmi_phy *hdmi_phy, u32 offset,
|
||||
+ u32 val, u32 mask)
|
||||
+{
|
||||
+ void __iomem *reg = hdmi_phy->regs + offset;
|
||||
+ u32 tmp;
|
||||
+
|
||||
+ tmp = readl(reg);
|
||||
+ tmp = (tmp & ~mask) | (val & mask);
|
||||
+ writel(tmp, reg);
|
||||
+}
|
||||
+
|
||||
+inline struct mtk_hdmi_phy *to_mtk_hdmi_phy(struct clk_hw *hw)
|
||||
+{
|
||||
+ return container_of(hw, struct mtk_hdmi_phy, pll_hw);
|
||||
+}
|
||||
+
|
||||
+static int mtk_hdmi_phy_power_on(struct phy *phy)
|
||||
+{
|
||||
+ struct mtk_hdmi_phy *hdmi_phy = phy_get_drvdata(phy);
|
||||
+ int ret;
|
||||
+
|
||||
+ ret = clk_prepare_enable(hdmi_phy->pll);
|
||||
+ if (ret < 0)
|
||||
+ return ret;
|
||||
+
|
||||
+ hdmi_phy->conf->hdmi_phy_enable_tmds(hdmi_phy);
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int mtk_hdmi_phy_power_off(struct phy *phy)
|
||||
+{
|
||||
+ struct mtk_hdmi_phy *hdmi_phy = phy_get_drvdata(phy);
|
||||
+
|
||||
+ hdmi_phy->conf->hdmi_phy_disable_tmds(hdmi_phy);
|
||||
+ clk_disable_unprepare(hdmi_phy->pll);
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static const struct phy_ops *
|
||||
+mtk_hdmi_phy_dev_get_ops(const struct mtk_hdmi_phy *hdmi_phy)
|
||||
+{
|
||||
+ if (hdmi_phy && hdmi_phy->conf &&
|
||||
+ hdmi_phy->conf->hdmi_phy_enable_tmds &&
|
||||
+ hdmi_phy->conf->hdmi_phy_disable_tmds)
|
||||
+ return &mtk_hdmi_phy_dev_ops;
|
||||
+
|
||||
+ dev_err(hdmi_phy->dev, "Failed to get dev ops of phy\n");
|
||||
+ return NULL;
|
||||
+}
|
||||
+
|
||||
+static void mtk_hdmi_phy_clk_get_ops(struct mtk_hdmi_phy *hdmi_phy,
|
||||
+ const struct clk_ops **ops)
|
||||
+{
|
||||
+ if (hdmi_phy && hdmi_phy->conf && hdmi_phy->conf->hdmi_phy_clk_ops)
|
||||
+ *ops = hdmi_phy->conf->hdmi_phy_clk_ops;
|
||||
+ else
|
||||
+ dev_err(hdmi_phy->dev, "Failed to get clk ops of phy\n");
|
||||
+}
|
||||
+
|
||||
+static int mtk_hdmi_phy_probe(struct platform_device *pdev)
|
||||
+{
|
||||
+ struct device *dev = &pdev->dev;
|
||||
+ struct mtk_hdmi_phy *hdmi_phy;
|
||||
+ struct resource *mem;
|
||||
+ struct clk *ref_clk;
|
||||
+ const char *ref_clk_name;
|
||||
+ struct clk_init_data clk_init = {
|
||||
+ .num_parents = 1,
|
||||
+ .parent_names = (const char * const *)&ref_clk_name,
|
||||
+ .flags = CLK_SET_RATE_PARENT | CLK_SET_RATE_GATE,
|
||||
+ };
|
||||
+
|
||||
+ struct phy *phy;
|
||||
+ struct phy_provider *phy_provider;
|
||||
+ int ret;
|
||||
+
|
||||
+ hdmi_phy = devm_kzalloc(dev, sizeof(*hdmi_phy), GFP_KERNEL);
|
||||
+ if (!hdmi_phy)
|
||||
+ return -ENOMEM;
|
||||
+
|
||||
+ mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
||||
+ hdmi_phy->regs = devm_ioremap_resource(dev, mem);
|
||||
+ if (IS_ERR(hdmi_phy->regs)) {
|
||||
+ ret = PTR_ERR(hdmi_phy->regs);
|
||||
+ dev_err(dev, "Failed to get memory resource: %d\n", ret);
|
||||
+ return ret;
|
||||
+ }
|
||||
+
|
||||
+ ref_clk = devm_clk_get(dev, "pll_ref");
|
||||
+ if (IS_ERR(ref_clk)) {
|
||||
+ ret = PTR_ERR(ref_clk);
|
||||
+ dev_err(&pdev->dev, "Failed to get PLL reference clock: %d\n",
|
||||
+ ret);
|
||||
+ return ret;
|
||||
+ }
|
||||
+ ref_clk_name = __clk_get_name(ref_clk);
|
||||
+
|
||||
+ ret = of_property_read_string(dev->of_node, "clock-output-names",
|
||||
+ &clk_init.name);
|
||||
+ if (ret < 0) {
|
||||
+ dev_err(dev, "Failed to read clock-output-names: %d\n", ret);
|
||||
+ return ret;
|
||||
+ }
|
||||
+
|
||||
+ hdmi_phy->dev = dev;
|
||||
+ hdmi_phy->conf =
|
||||
+ (struct mtk_hdmi_phy_conf *)of_device_get_match_data(dev);
|
||||
+ mtk_hdmi_phy_clk_get_ops(hdmi_phy, &clk_init.ops);
|
||||
+ hdmi_phy->pll_hw.init = &clk_init;
|
||||
+ hdmi_phy->pll = devm_clk_register(dev, &hdmi_phy->pll_hw);
|
||||
+ if (IS_ERR(hdmi_phy->pll)) {
|
||||
+ ret = PTR_ERR(hdmi_phy->pll);
|
||||
+ dev_err(dev, "Failed to register PLL: %d\n", ret);
|
||||
+ return ret;
|
||||
+ }
|
||||
+
|
||||
+ ret = of_property_read_u32(dev->of_node, "mediatek,ibias",
|
||||
+ &hdmi_phy->ibias);
|
||||
+ if (ret < 0) {
|
||||
+ dev_err(&pdev->dev, "Failed to get ibias: %d\n", ret);
|
||||
+ return ret;
|
||||
+ }
|
||||
+
|
||||
+ ret = of_property_read_u32(dev->of_node, "mediatek,ibias_up",
|
||||
+ &hdmi_phy->ibias_up);
|
||||
+ if (ret < 0) {
|
||||
+ dev_err(&pdev->dev, "Failed to get ibias up: %d\n", ret);
|
||||
+ return ret;
|
||||
+ }
|
||||
+
|
||||
+ dev_info(dev, "Using default TX DRV impedance: 4.2k/36\n");
|
||||
+ hdmi_phy->drv_imp_clk = 0x30;
|
||||
+ hdmi_phy->drv_imp_d2 = 0x30;
|
||||
+ hdmi_phy->drv_imp_d1 = 0x30;
|
||||
+ hdmi_phy->drv_imp_d0 = 0x30;
|
||||
+
|
||||
+ phy = devm_phy_create(dev, NULL, mtk_hdmi_phy_dev_get_ops(hdmi_phy));
|
||||
+ if (IS_ERR(phy)) {
|
||||
+ dev_err(dev, "Failed to create HDMI PHY\n");
|
||||
+ return PTR_ERR(phy);
|
||||
+ }
|
||||
+ phy_set_drvdata(phy, hdmi_phy);
|
||||
+
|
||||
+ phy_provider = devm_of_phy_provider_register(dev, of_phy_simple_xlate);
|
||||
+ if (IS_ERR(phy_provider)) {
|
||||
+ dev_err(dev, "Failed to register HDMI PHY\n");
|
||||
+ return PTR_ERR(phy_provider);
|
||||
+ }
|
||||
+
|
||||
+ return of_clk_add_provider(dev->of_node, of_clk_src_simple_get,
|
||||
+ hdmi_phy->pll);
|
||||
+}
|
||||
+
|
||||
+static const struct of_device_id mtk_hdmi_phy_match[] = {
|
||||
+ { .compatible = "mediatek,mt8173-hdmi-phy",
|
||||
+ .data = &mtk_hdmi_phy_8173_conf,
|
||||
+ },
|
||||
+ {},
|
||||
+};
|
||||
+
|
||||
+struct platform_driver mtk_hdmi_phy_driver = {
|
||||
+ .probe = mtk_hdmi_phy_probe,
|
||||
+ .driver = {
|
||||
+ .name = "mediatek-hdmi-phy",
|
||||
+ .of_match_table = mtk_hdmi_phy_match,
|
||||
+ },
|
||||
+};
|
||||
+
|
||||
+MODULE_DESCRIPTION("MediaTek HDMI PHY Driver");
|
||||
+MODULE_LICENSE("GPL v2");
|
||||
diff --git a/drivers/gpu/drm/mediatek/mtk_hdmi_phy.h b/drivers/gpu/drm/mediatek/mtk_hdmi_phy.h
|
||||
new file mode 100644
|
||||
index 000000000000..09b8f525e6b8
|
||||
--- /dev/null
|
||||
+++ b/drivers/gpu/drm/mediatek/mtk_hdmi_phy.h
|
||||
@@ -0,0 +1,58 @@
|
||||
+/* SPDX-License-Identifier: GPL-2.0 */
|
||||
+/*
|
||||
+ * Copyright (c) 2018 MediaTek Inc.
|
||||
+ * Author: Chunhui Dai <chunhui.dai@mediatek.com>
|
||||
+ */
|
||||
+
|
||||
+#ifndef _MTK_HDMI_PHY_H
|
||||
+#define _MTK_HDMI_PHY_H
|
||||
+#include <linux/clk.h>
|
||||
+#include <linux/clk-provider.h>
|
||||
+#include <linux/delay.h>
|
||||
+#include <linux/io.h>
|
||||
+#include <linux/mfd/syscon.h>
|
||||
+#include <linux/module.h>
|
||||
+#include <linux/of_device.h>
|
||||
+#include <linux/phy/phy.h>
|
||||
+#include <linux/platform_device.h>
|
||||
+#include <linux/types.h>
|
||||
+
|
||||
+struct mtk_hdmi_phy;
|
||||
+
|
||||
+struct mtk_hdmi_phy_conf {
|
||||
+ const struct clk_ops *hdmi_phy_clk_ops;
|
||||
+ void (*hdmi_phy_enable_tmds)(struct mtk_hdmi_phy *hdmi_phy);
|
||||
+ void (*hdmi_phy_disable_tmds)(struct mtk_hdmi_phy *hdmi_phy);
|
||||
+};
|
||||
+
|
||||
+struct mtk_hdmi_phy {
|
||||
+ void __iomem *regs;
|
||||
+ struct device *dev;
|
||||
+ struct mtk_hdmi_phy_conf *conf;
|
||||
+ struct clk *pll;
|
||||
+ struct clk_hw pll_hw;
|
||||
+ unsigned long pll_rate;
|
||||
+ unsigned char drv_imp_clk;
|
||||
+ unsigned char drv_imp_d2;
|
||||
+ unsigned char drv_imp_d1;
|
||||
+ unsigned char drv_imp_d0;
|
||||
+ unsigned int ibias;
|
||||
+ unsigned int ibias_up;
|
||||
+};
|
||||
+
|
||||
+void mtk_hdmi_phy_clear_bits(struct mtk_hdmi_phy *hdmi_phy, u32 offset,
|
||||
+ u32 bits);
|
||||
+void mtk_hdmi_phy_set_bits(struct mtk_hdmi_phy *hdmi_phy, u32 offset,
|
||||
+ u32 bits);
|
||||
+void mtk_hdmi_phy_mask(struct mtk_hdmi_phy *hdmi_phy, u32 offset,
|
||||
+ u32 val, u32 mask);
|
||||
+struct mtk_hdmi_phy *to_mtk_hdmi_phy(struct clk_hw *hw);
|
||||
+long mtk_hdmi_pll_round_rate(struct clk_hw *hw, unsigned long rate,
|
||||
+ unsigned long *parent_rate);
|
||||
+unsigned long mtk_hdmi_pll_recalc_rate(struct clk_hw *hw,
|
||||
+ unsigned long parent_rate);
|
||||
+
|
||||
+extern struct platform_driver mtk_hdmi_phy_driver;
|
||||
+extern struct mtk_hdmi_phy_conf mtk_hdmi_phy_8173_conf;
|
||||
+
|
||||
+#endif /* _MTK_HDMI_PHY_H */
|
||||
diff --git a/drivers/gpu/drm/mediatek/mtk_mt8173_hdmi_phy.c b/drivers/gpu/drm/mediatek/mtk_mt8173_hdmi_phy.c
|
||||
index 51cb9cfb6646..ed5916b27658 100644
|
||||
--- a/drivers/gpu/drm/mediatek/mtk_mt8173_hdmi_phy.c
|
||||
+++ b/drivers/gpu/drm/mediatek/mtk_mt8173_hdmi_phy.c
|
||||
@@ -12,15 +12,7 @@
|
||||
* GNU General Public License for more details.
|
||||
*/
|
||||
|
||||
-#include <linux/clk.h>
|
||||
-#include <linux/clk-provider.h>
|
||||
-#include <linux/delay.h>
|
||||
-#include <linux/io.h>
|
||||
-#include <linux/mfd/syscon.h>
|
||||
-#include <linux/module.h>
|
||||
-#include <linux/phy/phy.h>
|
||||
-#include <linux/platform_device.h>
|
||||
-#include <linux/types.h>
|
||||
+#include "mtk_hdmi_phy.h"
|
||||
|
||||
#define HDMI_CON0 0x00
|
||||
#define RG_HDMITX_PLL_EN BIT(31)
|
||||
@@ -123,20 +115,6 @@
|
||||
#define RGS_HDMITX_5T1_EDG (0xf << 4)
|
||||
#define RGS_HDMITX_PLUG_TST BIT(0)
|
||||
|
||||
-struct mtk_hdmi_phy {
|
||||
- void __iomem *regs;
|
||||
- struct device *dev;
|
||||
- struct clk *pll;
|
||||
- struct clk_hw pll_hw;
|
||||
- unsigned long pll_rate;
|
||||
- u8 drv_imp_clk;
|
||||
- u8 drv_imp_d2;
|
||||
- u8 drv_imp_d1;
|
||||
- u8 drv_imp_d0;
|
||||
- u32 ibias;
|
||||
- u32 ibias_up;
|
||||
-};
|
||||
-
|
||||
static const u8 PREDIV[3][4] = {
|
||||
{0x0, 0x0, 0x0, 0x0}, /* 27Mhz */
|
||||
{0x1, 0x1, 0x1, 0x1}, /* 74Mhz */
|
||||
@@ -185,44 +163,6 @@ static const u8 HTPLLBR[3][4] = {
|
||||
{0x1, 0x2, 0x2, 0x1} /* 148Mhz */
|
||||
};
|
||||
|
||||
-static void mtk_hdmi_phy_clear_bits(struct mtk_hdmi_phy *hdmi_phy, u32 offset,
|
||||
- u32 bits)
|
||||
-{
|
||||
- void __iomem *reg = hdmi_phy->regs + offset;
|
||||
- u32 tmp;
|
||||
-
|
||||
- tmp = readl(reg);
|
||||
- tmp &= ~bits;
|
||||
- writel(tmp, reg);
|
||||
-}
|
||||
-
|
||||
-static void mtk_hdmi_phy_set_bits(struct mtk_hdmi_phy *hdmi_phy, u32 offset,
|
||||
- u32 bits)
|
||||
-{
|
||||
- void __iomem *reg = hdmi_phy->regs + offset;
|
||||
- u32 tmp;
|
||||
-
|
||||
- tmp = readl(reg);
|
||||
- tmp |= bits;
|
||||
- writel(tmp, reg);
|
||||
-}
|
||||
-
|
||||
-static void mtk_hdmi_phy_mask(struct mtk_hdmi_phy *hdmi_phy, u32 offset,
|
||||
- u32 val, u32 mask)
|
||||
-{
|
||||
- void __iomem *reg = hdmi_phy->regs + offset;
|
||||
- u32 tmp;
|
||||
-
|
||||
- tmp = readl(reg);
|
||||
- tmp = (tmp & ~mask) | (val & mask);
|
||||
- writel(tmp, reg);
|
||||
-}
|
||||
-
|
||||
-static inline struct mtk_hdmi_phy *to_mtk_hdmi_phy(struct clk_hw *hw)
|
||||
-{
|
||||
- return container_of(hw, struct mtk_hdmi_phy, pll_hw);
|
||||
-}
|
||||
-
|
||||
static int mtk_hdmi_pll_prepare(struct clk_hw *hw)
|
||||
{
|
||||
struct mtk_hdmi_phy *hdmi_phy = to_mtk_hdmi_phy(hw);
|
||||
@@ -345,29 +285,7 @@ static int mtk_hdmi_pll_set_rate(struct clk_hw *hw, unsigned long rate,
|
||||
return 0;
|
||||
}
|
||||
|
||||
-static long mtk_hdmi_pll_round_rate(struct clk_hw *hw, unsigned long rate,
|
||||
- unsigned long *parent_rate)
|
||||
-{
|
||||
- struct mtk_hdmi_phy *hdmi_phy = to_mtk_hdmi_phy(hw);
|
||||
-
|
||||
- hdmi_phy->pll_rate = rate;
|
||||
- if (rate <= 74250000)
|
||||
- *parent_rate = rate;
|
||||
- else
|
||||
- *parent_rate = rate / 2;
|
||||
-
|
||||
- return rate;
|
||||
-}
|
||||
-
|
||||
-static unsigned long mtk_hdmi_pll_recalc_rate(struct clk_hw *hw,
|
||||
- unsigned long parent_rate)
|
||||
-{
|
||||
- struct mtk_hdmi_phy *hdmi_phy = to_mtk_hdmi_phy(hw);
|
||||
-
|
||||
- return hdmi_phy->pll_rate;
|
||||
-}
|
||||
-
|
||||
-static const struct clk_ops mtk_hdmi_pll_ops = {
|
||||
+static const struct clk_ops mtk_hdmi_phy_pll_ops = {
|
||||
.prepare = mtk_hdmi_pll_prepare,
|
||||
.unprepare = mtk_hdmi_pll_unprepare,
|
||||
.set_rate = mtk_hdmi_pll_set_rate,
|
||||
@@ -390,142 +308,10 @@ static void mtk_hdmi_phy_disable_tmds(struct mtk_hdmi_phy *hdmi_phy)
|
||||
RG_HDMITX_SER_EN);
|
||||
}
|
||||
|
||||
-static int mtk_hdmi_phy_power_on(struct phy *phy)
|
||||
-{
|
||||
- struct mtk_hdmi_phy *hdmi_phy = phy_get_drvdata(phy);
|
||||
- int ret;
|
||||
-
|
||||
- ret = clk_prepare_enable(hdmi_phy->pll);
|
||||
- if (ret < 0)
|
||||
- return ret;
|
||||
-
|
||||
- mtk_hdmi_phy_enable_tmds(hdmi_phy);
|
||||
-
|
||||
- return 0;
|
||||
-}
|
||||
-
|
||||
-static int mtk_hdmi_phy_power_off(struct phy *phy)
|
||||
-{
|
||||
- struct mtk_hdmi_phy *hdmi_phy = phy_get_drvdata(phy);
|
||||
-
|
||||
- mtk_hdmi_phy_disable_tmds(hdmi_phy);
|
||||
- clk_disable_unprepare(hdmi_phy->pll);
|
||||
-
|
||||
- return 0;
|
||||
-}
|
||||
-
|
||||
-static const struct phy_ops mtk_hdmi_phy_ops = {
|
||||
- .power_on = mtk_hdmi_phy_power_on,
|
||||
- .power_off = mtk_hdmi_phy_power_off,
|
||||
- .owner = THIS_MODULE,
|
||||
-};
|
||||
-
|
||||
-static int mtk_hdmi_phy_probe(struct platform_device *pdev)
|
||||
-{
|
||||
- struct device *dev = &pdev->dev;
|
||||
- struct mtk_hdmi_phy *hdmi_phy;
|
||||
- struct resource *mem;
|
||||
- struct clk *ref_clk;
|
||||
- const char *ref_clk_name;
|
||||
- struct clk_init_data clk_init = {
|
||||
- .ops = &mtk_hdmi_pll_ops,
|
||||
- .num_parents = 1,
|
||||
- .parent_names = (const char * const *)&ref_clk_name,
|
||||
- .flags = CLK_SET_RATE_PARENT | CLK_SET_RATE_GATE,
|
||||
- };
|
||||
- struct phy *phy;
|
||||
- struct phy_provider *phy_provider;
|
||||
- int ret;
|
||||
-
|
||||
- hdmi_phy = devm_kzalloc(dev, sizeof(*hdmi_phy), GFP_KERNEL);
|
||||
- if (!hdmi_phy)
|
||||
- return -ENOMEM;
|
||||
-
|
||||
- mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
||||
- hdmi_phy->regs = devm_ioremap_resource(dev, mem);
|
||||
- if (IS_ERR(hdmi_phy->regs)) {
|
||||
- ret = PTR_ERR(hdmi_phy->regs);
|
||||
- dev_err(dev, "Failed to get memory resource: %d\n", ret);
|
||||
- return ret;
|
||||
- }
|
||||
-
|
||||
- ref_clk = devm_clk_get(dev, "pll_ref");
|
||||
- if (IS_ERR(ref_clk)) {
|
||||
- ret = PTR_ERR(ref_clk);
|
||||
- dev_err(&pdev->dev, "Failed to get PLL reference clock: %d\n",
|
||||
- ret);
|
||||
- return ret;
|
||||
- }
|
||||
- ref_clk_name = __clk_get_name(ref_clk);
|
||||
-
|
||||
- ret = of_property_read_string(dev->of_node, "clock-output-names",
|
||||
- &clk_init.name);
|
||||
- if (ret < 0) {
|
||||
- dev_err(dev, "Failed to read clock-output-names: %d\n", ret);
|
||||
- return ret;
|
||||
- }
|
||||
-
|
||||
- hdmi_phy->pll_hw.init = &clk_init;
|
||||
- hdmi_phy->pll = devm_clk_register(dev, &hdmi_phy->pll_hw);
|
||||
- if (IS_ERR(hdmi_phy->pll)) {
|
||||
- ret = PTR_ERR(hdmi_phy->pll);
|
||||
- dev_err(dev, "Failed to register PLL: %d\n", ret);
|
||||
- return ret;
|
||||
- }
|
||||
-
|
||||
- ret = of_property_read_u32(dev->of_node, "mediatek,ibias",
|
||||
- &hdmi_phy->ibias);
|
||||
- if (ret < 0) {
|
||||
- dev_err(&pdev->dev, "Failed to get ibias: %d\n", ret);
|
||||
- return ret;
|
||||
- }
|
||||
-
|
||||
- ret = of_property_read_u32(dev->of_node, "mediatek,ibias_up",
|
||||
- &hdmi_phy->ibias_up);
|
||||
- if (ret < 0) {
|
||||
- dev_err(&pdev->dev, "Failed to get ibias up: %d\n", ret);
|
||||
- return ret;
|
||||
- }
|
||||
-
|
||||
- dev_info(dev, "Using default TX DRV impedance: 4.2k/36\n");
|
||||
- hdmi_phy->drv_imp_clk = 0x30;
|
||||
- hdmi_phy->drv_imp_d2 = 0x30;
|
||||
- hdmi_phy->drv_imp_d1 = 0x30;
|
||||
- hdmi_phy->drv_imp_d0 = 0x30;
|
||||
-
|
||||
- phy = devm_phy_create(dev, NULL, &mtk_hdmi_phy_ops);
|
||||
- if (IS_ERR(phy)) {
|
||||
- dev_err(dev, "Failed to create HDMI PHY\n");
|
||||
- return PTR_ERR(phy);
|
||||
- }
|
||||
- phy_set_drvdata(phy, hdmi_phy);
|
||||
-
|
||||
- phy_provider = devm_of_phy_provider_register(dev, of_phy_simple_xlate);
|
||||
- if (IS_ERR(phy_provider))
|
||||
- return PTR_ERR(phy_provider);
|
||||
-
|
||||
- hdmi_phy->dev = dev;
|
||||
- return of_clk_add_provider(dev->of_node, of_clk_src_simple_get,
|
||||
- hdmi_phy->pll);
|
||||
-}
|
||||
-
|
||||
-static int mtk_hdmi_phy_remove(struct platform_device *pdev)
|
||||
-{
|
||||
- return 0;
|
||||
-}
|
||||
-
|
||||
-static const struct of_device_id mtk_hdmi_phy_match[] = {
|
||||
- { .compatible = "mediatek,mt8173-hdmi-phy", },
|
||||
- {},
|
||||
-};
|
||||
-
|
||||
-struct platform_driver mtk_hdmi_phy_driver = {
|
||||
- .probe = mtk_hdmi_phy_probe,
|
||||
- .remove = mtk_hdmi_phy_remove,
|
||||
- .driver = {
|
||||
- .name = "mediatek-hdmi-phy",
|
||||
- .of_match_table = mtk_hdmi_phy_match,
|
||||
- },
|
||||
+struct mtk_hdmi_phy_conf mtk_hdmi_phy_8173_conf = {
|
||||
+ .hdmi_phy_clk_ops = &mtk_hdmi_phy_pll_ops,
|
||||
+ .hdmi_phy_enable_tmds = mtk_hdmi_phy_enable_tmds,
|
||||
+ .hdmi_phy_disable_tmds = mtk_hdmi_phy_disable_tmds,
|
||||
};
|
||||
|
||||
MODULE_AUTHOR("Jie Qiu <jie.qiu@mediatek.com>");
|
||||
--
|
||||
2.19.1
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
From 93440802592c9acbec41645809dcae5eb350d966 Mon Sep 17 00:00:00 2001
|
||||
From: chunhui dai <chunhui.dai@mediatek.com>
|
||||
Date: Wed, 3 Oct 2018 11:41:48 +0800
|
||||
Subject: [PATCH 34/77] drm/mediatek: add support for SPDIF audio in HDMI
|
||||
|
||||
add support for SPDIF audio in HDMI
|
||||
|
||||
Signed-off-by: chunhui dai <chunhui.dai@mediatek.com>
|
||||
Reviewed-by: CK Hu <ck.hu@mediatek.com>
|
||||
---
|
||||
drivers/gpu/drm/mediatek/mtk_hdmi.c | 5 +++++
|
||||
1 file changed, 5 insertions(+)
|
||||
|
||||
diff --git a/drivers/gpu/drm/mediatek/mtk_hdmi.c b/drivers/gpu/drm/mediatek/mtk_hdmi.c
|
||||
index 29bd2a144b19..90e1139f02f8 100644
|
||||
--- a/drivers/gpu/drm/mediatek/mtk_hdmi.c
|
||||
+++ b/drivers/gpu/drm/mediatek/mtk_hdmi.c
|
||||
@@ -1577,6 +1577,11 @@ static int mtk_hdmi_audio_hw_params(struct device *dev, void *data,
|
||||
hdmi_params.aud_i2s_fmt = HDMI_I2S_MODE_I2S_24BIT;
|
||||
hdmi_params.aud_mclk = HDMI_AUD_MCLK_128FS;
|
||||
break;
|
||||
+ case HDMI_SPDIF:
|
||||
+ hdmi_params.aud_codec = HDMI_AUDIO_CODING_TYPE_PCM;
|
||||
+ hdmi_params.aud_sampe_size = HDMI_AUDIO_SAMPLE_SIZE_16;
|
||||
+ hdmi_params.aud_input_type = HDMI_AUD_INPUT_SPDIF;
|
||||
+ break;
|
||||
default:
|
||||
dev_err(hdmi->dev, "%s: Invalid DAI format %d\n", __func__,
|
||||
daifmt->fmt);
|
||||
--
|
||||
2.19.1
|
||||
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue