mirror of
				git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
				synced 2025-09-18 22:14:16 +00:00 
			
		
		
		
	rust: net::phy unified genphy_read_status function for C22 and C45 registers
Add unified genphy_read_status function for C22 and C45 registers. Instead of having genphy_c22 and genphy_c45 methods, this unifies genphy_read_status functions for C22 and C45. Reviewed-by: Trevor Gross <tmgross@umich.edu> Reviewed-by: Benno Lossin <benno.lossin@proton.me> Reviewed-by: Andrew Lunn <andrew@lunn.ch> Signed-off-by: FUJITA Tomonori <fujita.tomonori@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
		
							parent
							
								
									b2e47002b2
								
							
						
					
					
						commit
						5114e05a3c
					
				
					 2 changed files with 30 additions and 10 deletions
				
			
		|  | @ -252,16 +252,8 @@ impl Device { | |||
|     } | ||||
| 
 | ||||
|     /// Checks the link status and updates current link state.
 | ||||
|     pub fn genphy_read_status(&mut self) -> Result<u16> { | ||||
|         let phydev = self.0.get(); | ||||
|         // SAFETY: `phydev` is pointing to a valid object by the type invariant of `Self`.
 | ||||
|         // So it's just an FFI call.
 | ||||
|         let ret = unsafe { bindings::genphy_read_status(phydev) }; | ||||
|         if ret < 0 { | ||||
|             Err(Error::from_errno(ret)) | ||||
|         } else { | ||||
|             Ok(ret as u16) | ||||
|         } | ||||
|     pub fn genphy_read_status<R: reg::Register>(&mut self) -> Result<u16> { | ||||
|         R::read_status(self) | ||||
|     } | ||||
| 
 | ||||
|     /// Updates the link status.
 | ||||
|  |  | |||
|  | @ -31,6 +31,13 @@ mod private { | |||
| ///     dev.read(C22::BMCR);
 | ||||
| ///     // read C45 PMA/PMD control 1 register
 | ||||
| ///     dev.read(C45::new(Mmd::PMAPMD, 0));
 | ||||
| ///
 | ||||
| ///     // Checks the link status as reported by registers in the C22 namespace
 | ||||
| ///     // and updates current link state.
 | ||||
| ///     dev.genphy_read_status::<phy::C22>();
 | ||||
| ///     // Checks the link status as reported by registers in the C45 namespace
 | ||||
| ///     // and updates current link state.
 | ||||
| ///     dev.genphy_read_status::<phy::C45>();
 | ||||
| /// }
 | ||||
| /// ```
 | ||||
| pub trait Register: private::Sealed { | ||||
|  | @ -39,6 +46,9 @@ pub trait Register: private::Sealed { | |||
| 
 | ||||
|     /// Writes a PHY register.
 | ||||
|     fn write(&self, dev: &mut Device, val: u16) -> Result; | ||||
| 
 | ||||
|     /// Checks the link status and updates current link state.
 | ||||
|     fn read_status(dev: &mut Device) -> Result<u16>; | ||||
| } | ||||
| 
 | ||||
| /// A single MDIO clause 22 register address (5 bits).
 | ||||
|  | @ -113,6 +123,15 @@ impl Register for C22 { | |||
|             bindings::mdiobus_write((*phydev).mdio.bus, (*phydev).mdio.addr, self.0.into(), val) | ||||
|         }) | ||||
|     } | ||||
| 
 | ||||
|     fn read_status(dev: &mut Device) -> Result<u16> { | ||||
|         let phydev = dev.0.get(); | ||||
|         // SAFETY: `phydev` is pointing to a valid object by the type invariant of `Self`.
 | ||||
|         // So it's just an FFI call.
 | ||||
|         let ret = unsafe { bindings::genphy_read_status(phydev) }; | ||||
|         to_result(ret)?; | ||||
|         Ok(ret as u16) | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| /// A single MDIO clause 45 register device and address.
 | ||||
|  | @ -193,4 +212,13 @@ impl Register for C45 { | |||
|             bindings::phy_write_mmd(phydev, self.devad.0.into(), self.regnum.into(), val) | ||||
|         }) | ||||
|     } | ||||
| 
 | ||||
|     fn read_status(dev: &mut Device) -> Result<u16> { | ||||
|         let phydev = dev.0.get(); | ||||
|         // SAFETY: `phydev` is pointing to a valid object by the type invariant of `Self`.
 | ||||
|         // So it's just an FFI call.
 | ||||
|         let ret = unsafe { bindings::genphy_c45_read_status(phydev) }; | ||||
|         to_result(ret)?; | ||||
|         Ok(ret as u16) | ||||
|     } | ||||
| } | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 FUJITA Tomonori
						FUJITA Tomonori