#
331897 |
|
02-Apr-2018 |
gonzo |
MFC r314672, r315967, r324184, r325768
r314672: [rpi] rpi3 should use the same cpufreq logic as rpi2, not rpi-b
RPi3 cpufreq is more like that on RPi2. Setting arm frequency above min (say, "sysctl hw.cpufreq.arm_freq=600000001") turns on turbo mode, and the firmware automatically raises voltage, sets frequency to max 1200MHz, and throttle when overheat, etc.
Swap if/else parts and use SOC_BCM2835 def so RPi3 can share the same cpufreq logic as RPi2, instead of falling to that for RPi.
Submitted by: Jia-Shiun Li <jiashiun@gmail.com> Differential Revision: https://reviews.freebsd.org/D9640
r315967: [rpi] Use compatibility string from upstream DTB for I2C controller
FreeBSD uses upstream DTB for RPi3 build and compatibility string for i2c device is different there. Add this new string to compatibility data.
Reported by: Karl Denninger
r324184 by ian: Allow Raspberry Pi platform and drivers to be configured with upstream DTBs.
- Added more compatibility strings to drivers not yet converted - Added new RPI platform code compatibility string to match the ones used upstream - Adapted RPI and RPI2 DTS to match the new platform code compatibility string
The goal is to use the upstream DTBs as a replacement for our custom one. This is now possible with these changes.
Additionally, as the RPI firmware automatically chooses the right DTB for us, this would allow to have one common armv6 kernel for RPI0 and RPI1 (BCM2835-based), and one common armv7 kernel for RPI2 v1.1 (BCM2836-based), and RPI2 v1.2 / RPI3 (BCM2837-based).
Submitted by: Sylvain Garrigues <sylgar@gmail.com> Differential Revision: https://reviews.freebsd.org/D12360
r325768 by manu: arm: rpi2: Fix cpufreq(4)
Since r324184 the root node compatible for rpi2 is "brcm,bcm2836", add it to the compatible list of bcm2835_cpufreq.
Tested On: RPI2 v1.1 RPI2 v1.2
Reported by: many on freebsd-arm@
|
#
331722 |
|
29-Mar-2018 |
eadler |
Revert r330897:
This was intended to be a non-functional change. It wasn't. The commit message was thus wrong. In addition it broke arm, and merged crypto related code.
Revert with prejudice.
This revert skips files touched in r316370 since that commit was since MFCed. This revert also skips files that require $FreeBSD$ property changes.
Thank you to those who helped me get out of this mess including but not limited to gonzo, kevans, rgrimes.
Requested by: gjb (re)
|
#
330897 |
|
14-Mar-2018 |
eadler |
Partial merge of the SPDX changes
These changes are incomplete but are making it difficult to determine what other changes can/should be merged.
No objections from: pfg
|
#
327654 |
|
06-Jan-2018 |
ian |
MFC r326924-r326925
r326924: Fix debugging output, fallout from something like s/read/readctl/g while renaming variables in a previous change.
r326925: Do not attempt to refill the TX fifo if there is no data left to transfer.
A comment in bcm_bsc_fill_tx_fifo() even lists sc_totlen > 0 as a precondition for calling the routine. I apparently forgot to make the code do what my comment said.
|
#
327594 |
|
05-Jan-2018 |
ian |
MFC r324169:
Work around bcm283x silicon bugs to make i2c repeat-start work for the most common case where it's needed -- a write followed by a read to the same slave.
The i2c controller in this chip only performs complete transfers, it does not provide control over start/repeat-start/stop operations on the bus. Thus, we have gotten a full stop/start sequence rather than a repeat-start when doing a typical i2c slave access of "write address, read data". Some i2c slave devices require a repeat-start to work correctly.
These changes cause the controller to do a repeat-start by pre-staging the read parameters in the controller registers immediate after the controller has latched the values for the initial write operation, but before any bytes are actually written. With the values pre-staged, when the write portion of the transfer completes, the state machine in the silicon sees a new start operation already staged and that causes it to perform a repeat-start. The key to tricking the buggy hardware into doing this is to avoid prefilling any output data in the transmit FIFO so that it is possible to catch the silicon in the state where transmit values are latched but the transmit isn't completed yet.
|
#
323931 |
|
22-Sep-2017 |
ian |
MFC r323474, r323553, r323691
r323474: Add a default implementation that returns ENODEV for start, repeat_start, stop, read, and write methods. Some controllers don't implement these individual operations and have only a transfer method. In that case, we should return an indication that the device is present but doesn't support the method, as opposed to the kobj default error ENXIO which makes it look like the whole device is missing. Userland tools such as i2c(8) can use the differing return values to switch between the two different i2c IO mechanisms.
r323553: Defer attaching and probing iicbus and its children until interrupts are available, in i2c controller drivers that require interrupts for transfers.
This is the result of auditing all 22 existing drivers that attach iicbus. These drivers were the only ones remaining that require interrupts and were not using config_intrhook to defer attachment. That has led, over the years, to various i2c slave device drivers needing to use config_intrhook themselves rather than performing bus transactions in their probe() and attach() methods, just in case they were attached too early.
r323691: Give icee(4) a detach() method so it can be used as a module. Add a module makefile for it.
|
#
307575 |
|
18-Oct-2016 |
gonzo |
MFC r307067, r307068, r307087, r307088, r307089, r307091, r307092, r307093, r307095, r307098, r307115:
r307067: Make intc driver compatible with upstream DTS
- Fix compatibility strings - Properly decode upstream's two-cell interrupt specs. Our home-made dts does not have two-cell interrupts so no need to preserve backward compatibility
r307068: Make Rapsberry Pi watchdog driver compatible with upstream DTS
- Fix compatibility strings - Compensate the difference in base address for our custom DTS and upstream one (for backward compatibility)
r307087: Make sure intc is attached before interrupt consumers
If pass order is not specified devices are attached in the order they are defined in dts. Some interrupt consumers may be defined before intc. Also make sure intc interrupt-parent local_intc is attached before intc itself.
r307088: Add compatible strings used in upstream dts files
r307089: Make framebuffer driver compatible with upstream DT
- Add compatibility string - Add simplebus as possible parent bus
r307091: Add compatibility string from upstream DT
r307092: Make BCM2835 GPIO driver compatible with upstream DT
- Add compatibility string - Make reserverd and read-only properties optional
r307093: Make BCM283x USB driver compatible with upstream DT
- Make resource allocation logic depend on compatibility string to check what format of DTS node should be used - FreeBSD's or upstream
r307095: Make VCHI driver compatible with upstream DT
- Add compatibility string - Compensate difference in base address between our custom DTB and upstream one
r307098: Make BCM28x USB driver compatible with upstream device tree
This should have been committed in r307093: resource allocation depends on source of the device tree. upstream dts has extra interrupt that we can ignore
r307115: Fix typo in comment
Spotted by: loos
|
#
302408 |
|
07-Jul-2016 |
gjb |
Copy head@r302406 to stable/11 as part of the 11.0-RELEASE cycle. Prune svn:mergeinfo from the new branch, as nothing has been merged here.
Additional commits post-branch will follow.
Approved by: re (implicit) Sponsored by: The FreeBSD Foundation |
#
278861 |
|
16-Feb-2015 |
loos |
Add a mask to match only the relative base address of BSC controllers.
This should fix the attach of BSC on RPI2 (based on andrew@ dmesg).
|
#
277206 |
|
14-Jan-2015 |
loos |
Catch a few cases where we need to release memory resources on errors.
Place parentheses around variables in macros.
MFC after: 3 days
|
#
276314 |
|
27-Dec-2014 |
loos |
Convert the BSC (i2c) driver to use the new iicbus_get_frequency().
Tested on: Raspberry pi
|
#
274415 |
|
12-Nov-2014 |
loos |
Fix the error checking, broken on r273337, to _not_ ignore controller errors.
Without this fix you can't even scan the bus (all operations will always succeed).
MFC with: r273337 Pointy hat to: loos
|
#
273610 |
|
24-Oct-2014 |
loos |
Add an iicbus_reset() method to bcm2835_bsc. While it is generally not used for kernel devices it is used by i2c(8).
This fix the 'error: Device not configured' when i2c(8) tries to reset the controller, as an example:
# i2c -r Resetting I2C controller on /dev/iic0: error: Device not configured
For now use conservative settings for default i2c speeds.
MFC after: 1 week
|
#
273337 |
|
20-Oct-2014 |
loos |
Fix the mtx_sleep() error checking, catch all errors and not only EWOULDBLOCK.
Do not print any message at errors. The errors are properly sent to upper layers which should be able to deal with it, including printing the errors when they need to.
The error message was quite annoying while scanning the i2c bus.
MFC after: 1 week
|
#
273329 |
|
20-Oct-2014 |
loos |
Add another wakeup() after actually set the bus as free.
This fix a race where the threads waiting for the bus would wake up early and still see bus as busy.
While here, give a better description to wmesg for the two use cases we have (bus and io waiting).
MFC after: 1 week
|
#
267021 |
|
03-Jun-2014 |
loos |
FreeBSD, historically, has always used 8-bit addresses for i2c devices (7-bit device address << 1), always leaving the room for the read/write bit.
This commit convert ti_i2c and revert r259127 on bcm2835_bsc to make them compatible with 8-bit addresses. Previous to this commit an i2c device would have different addresses depending on the controller it was attached to (by example, when compared to any iicbb(4) based i2c controller), which was a pretty annoying behavior.
Also, update the PMIC i2c address on beaglebone* DTS files to match the new address scheme.
Now the userland utilities need to do the correct slave address shifting (but it is going to work with any i2c controller on the system).
Discussed with: ian MFC after: 2 weeks
|
#
261410 |
|
02-Feb-2014 |
ian |
Follow r261352 by updating all drivers which are children of simplebus to check the status property in their probe routines.
Simplebus used to only instantiate its children whose status="okay" but that was improper behavior, fixed in r261352. Now that it doesn't check anymore and probes all its children; the children all have to do the check because really only the children know how to properly interpret their status property strings.
Right now all existing drivers only understand "okay" versus something- that's-not-okay, so they all use the new ofw_bus_status_okay() helper.
|
#
259127 |
|
09-Dec-2013 |
loos |
Bring the RPi I2C driver in line with ti_i2c. Make it treat any slave address as a 7-bit address.
Approved by: adrian (mentor)
|
#
258045 |
|
12-Nov-2013 |
loos |
As all the IIC controllers on system uses the same 'iichb' prefix we cannot rely only on checking the device unit to indentify the BSC unit we are attaching to. Make use of the device base address to identify our BSC unit.
Approved by: adrian (mentor)
|
#
256959 |
|
23-Oct-2013 |
loos |
Add the Raspberry Pi BSC (I2C compliant) controller driver.
Reviewed by: rpaulo Approved by: adrian (mentor)
|