X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=include%2Fgeneric-phy.h;h=d40ce589b6450f6198a2f9ed1dd1bbb1c72537dc;hb=ddd39d0cc1a025a1e2e3c792cc8286dbdfa29b54;hp=73537025c2c365a404fe95da0e929d83d1b9a816;hpb=94c03c7c772bf7818ea84a092a90beaba1782046;p=platform%2Fkernel%2Fu-boot.git diff --git a/include/generic-phy.h b/include/generic-phy.h index 7353702..d40ce58 100644 --- a/include/generic-phy.h +++ b/include/generic-phy.h @@ -79,7 +79,7 @@ struct phy_ops { * If power_off() is not implemented, it must power down the phy. * * @phy: PHY port to be de-initialized - * @return 0 if OK, or a negative error code + * Return: 0 if OK, or a negative error code */ int (*exit)(struct phy *phy); @@ -91,7 +91,7 @@ struct phy_ops { * During runtime, the PHY may need to be reset in order to * re-establish connection etc without being shut down or exit. * - * @return 0 if OK, or a negative error code + * Return: 0 if OK, or a negative error code */ int (*reset)(struct phy *phy); @@ -105,7 +105,7 @@ struct phy_ops { * setup done in init(). If init() is not implemented, it must take care * of setting up the context (PLLs, ...) * - * @return 0 if OK, or a negative error code + * Return: 0 if OK, or a negative error code */ int (*power_on)(struct phy *phy); @@ -119,18 +119,49 @@ struct phy_ops { * init()/deinit() are not implemented, it must not de-initialize * everything. * - * @return 0 if OK, or a negative error code + * Return: 0 if OK, or a negative error code */ int (*power_off)(struct phy *phy); + + /** + * configure - configure a PHY device + * + * @phy: PHY port to be configured + * @params: PHY Parameters, underlying data is specific to the PHY function + * + * During runtime, the PHY may need to be configured for it's main function. + * This function configures the PHY for it's main function following + * power_on/off() after beeing initialized. + * + * Return: 0 if OK, or a negative error code + */ + int (*configure)(struct phy *phy, void *params); }; -#ifdef CONFIG_PHY +/** + * struct phy_bulk - A handle to (allowing control of) a bulk of phys. + * + * Consumers provide storage for the phy bulk. The content of the structure is + * managed solely by the phy API. A phy bulk struct is initialized + * by "get"ing the phy bulk struct. + * The phy bulk struct is passed to all other bulk phy APIs to apply + * the API to all the phy in the bulk struct. + * + * @phys: An array of phy handles. + * @count: The number of phy handles in the phys array. + */ +struct phy_bulk { + struct phy *phys; + unsigned int count; +}; + +#if CONFIG_IS_ENABLED(PHY) /** * generic_phy_init() - initialize the PHY port * * @phy: the PHY port to initialize - * @return 0 if OK, or a negative error code + * Return: 0 if OK, or a negative error code */ int generic_phy_init(struct phy *phy); @@ -138,7 +169,7 @@ int generic_phy_init(struct phy *phy); * generic_phy_init() - de-initialize the PHY device * * @phy: PHY port to be de-initialized - * @return 0 if OK, or a negative error code + * Return: 0 if OK, or a negative error code */ int generic_phy_exit(struct phy *phy); @@ -146,7 +177,7 @@ int generic_phy_exit(struct phy *phy); * generic_phy_reset() - resets a PHY device without shutting down * * @phy: PHY port to be reset - *@return 0 if OK, or a negative error code + *Return: 0 if OK, or a negative error code */ int generic_phy_reset(struct phy *phy); @@ -154,7 +185,7 @@ int generic_phy_reset(struct phy *phy); * generic_phy_power_on() - power on a PHY device * * @phy: PHY port to be powered on - * @return 0 if OK, or a negative error code + * Return: 0 if OK, or a negative error code */ int generic_phy_power_on(struct phy *phy); @@ -162,10 +193,19 @@ int generic_phy_power_on(struct phy *phy); * generic_phy_power_off() - power off a PHY device * * @phy: PHY port to be powered off - * @return 0 if OK, or a negative error code + * Return: 0 if OK, or a negative error code */ int generic_phy_power_off(struct phy *phy); +/** + * generic_phy_configure() - configure a PHY device + * + * @phy: PHY port to be configured + * @params: PHY Parameters, underlying data is specific to the PHY function + * Return: 0 if OK, or a negative error code + */ +int generic_phy_configure(struct phy *phy, void *params); + /** * generic_phy_get_by_index() - Get a PHY device by integer index. @@ -190,18 +230,21 @@ int generic_phy_power_off(struct phy *phy); * the USB2 phy can be accessed by passing index '0' and the USB3 phy can * be accessed by passing index '1' * - * @return 0 if OK, or a negative error code + * Return: 0 if OK, or a negative error code */ int generic_phy_get_by_index(struct udevice *user, int index, struct phy *phy); /** - * generic_phy_get_by_node() - Get a PHY device by integer index on ofnode + * generic_phy_get_by_index_nodev() - Get a PHY device by integer index + * without a device * - * @node: the device node + * @node: The client ofnode. * @index: The index in the list of available PHYs * @phy: A pointer to the PHY port * + * This is a version of generic_phy_get_by_index() that does not use a device. + * * This looks up a PHY device for a client device based on its ofnode and on * its position in the list of the possible PHYs. * @@ -218,9 +261,9 @@ int generic_phy_get_by_index(struct udevice *user, int index, * the USB2 phy can be accessed by passing index '0' and the USB3 phy can * be accessed by passing index '1' * - * @return 0 if OK, or a negative error code + * Return: 0 if OK, or a negative error code */ -int generic_phy_get_by_node(ofnode node, int index, struct phy *phy); +int generic_phy_get_by_index_nodev(ofnode node, int index, struct phy *phy); /** * generic_phy_get_by_name() - Get a PHY device by its name. @@ -245,11 +288,60 @@ int generic_phy_get_by_node(ofnode node, int index, struct phy *phy); * }; * the USB3 phy can be accessed using "usb3phy", and USB2 by using "usb2phy" * - * @return 0 if OK, or a negative error code + * Return: 0 if OK, or a negative error code */ int generic_phy_get_by_name(struct udevice *user, const char *phy_name, struct phy *phy); +/** + * generic_phy_get_bulk - Get all phys of a device. + * + * This looks up and gets all phys of the consumer device; each device is + * assumed to have n phys associated with it somehow, and this function finds + * and gets all of them in a separate structure. + * + * @dev: The consumer device. + * @bulk A pointer to a phy bulk struct to initialize. + * Return: 0 if OK, or a negative error code. + */ +int generic_phy_get_bulk(struct udevice *dev, struct phy_bulk *bulk); + +/** + * generic_phy_init_bulk() - Initialize all phys in a phy bulk struct. + * + * @bulk: A phy bulk struct that was previously successfully requested + * by generic_phy_get_bulk(). + * Return: 0 if OK, or negative error code. + */ +int generic_phy_init_bulk(struct phy_bulk *bulk); + +/** + * generic_phy_exit_bulk() - de-initialize all phys in a phy bulk struct. + * + * @bulk: A phy bulk struct that was previously successfully requested + * by generic_phy_get_bulk(). + * Return: 0 if OK, or negative error code. + */ +int generic_phy_exit_bulk(struct phy_bulk *bulk); + +/** + * generic_phy_power_on_bulk() - Power on all phys in a phy bulk struct. + * + * @bulk: A phy bulk struct that was previously successfully requested + * by generic_phy_get_bulk(). + * Return: 0 if OK, or negative error code. + */ +int generic_phy_power_on_bulk(struct phy_bulk *bulk); + +/** + * generic_phy_power_off_bulk() - Power off all phys in a phy bulk struct. + * + * @bulk: A phy bulk struct that was previously successfully requested + * by generic_phy_get_bulk(). + * Return: 0 if OK, or negative error code. + */ +int generic_phy_power_off_bulk(struct phy_bulk *bulk); + #else /* CONFIG_PHY */ static inline int generic_phy_init(struct phy *phy) @@ -289,13 +381,39 @@ static inline int generic_phy_get_by_name(struct udevice *user, const char *phy_ return 0; } +static inline int +generic_phy_get_bulk(struct udevice *dev, struct phy_bulk *bulk) +{ + return 0; +} + +static inline int generic_phy_init_bulk(struct phy_bulk *bulk) +{ + return 0; +} + +static inline int generic_phy_exit_bulk(struct phy_bulk *bulk) +{ + return 0; +} + +static inline int generic_phy_power_on_bulk(struct phy_bulk *bulk) +{ + return 0; +} + +static inline int generic_phy_power_off_bulk(struct phy_bulk *bulk) +{ + return 0; +} + #endif /* CONFIG_PHY */ /** * generic_phy_valid() - check if PHY port is valid * * @phy: the PHY port to check - * @return TRUE if valid, or FALSE + * Return: TRUE if valid, or FALSE */ static inline bool generic_phy_valid(struct phy *phy) {