diff --git a/src/printer_data.h b/src/printer_data.h
index c149099..afe0418 100644
--- a/src/printer_data.h
+++ b/src/printer_data.h
@@ -62,20 +62,20 @@
  * @param[in] out Printer handler for a specific output. Use ly_out_*() functions to create and free the handler.
  * @param[in] root The root element of the (sub)tree to print.
  * @param[in] format Output format.
- * @param[in] options [Data printer flags](@ref dataprinterflags). With \p format LYD_LYB, only #LYDP_WITHSIBLINGS option is accepted.
+ * @param[in] options [Data printer flags](@ref dataprinterflags).
  * @return LY_ERR value.
  */
 LY_ERR lyd_print(struct ly_out *out, const struct lyd_node *root, LYD_FORMAT format, int options);
 
 /**
-* @brief Print data tree in the specified format.
-*
-* @param[out] strp Pointer to store the resulting dump.
+ * @brief Print data tree in the specified format.
+ *
+ * @param[out] strp Pointer to store the resulting dump.
  * @param[in] root The root element of the (sub)tree to print.
  * @param[in] format Output format.
-* @param[in] options [printer flags](@ref printerflags). \p format LYD_LYB accepts only #LYP_WITHSIBLINGS option.
-* @return LY_ERR value.
-*/
+ * @param[in] options [Data printer flags](@ref dataprinterflags).
+ * @return LY_ERR value.
+ */
 LY_ERR lyd_print_mem(char **strp, const struct lyd_node *root, LYD_FORMAT format, int options);
 
 /**
@@ -84,7 +84,7 @@
  * @param[in] fd File descriptor where to print the data.
  * @param[in] root The root element of the (sub)tree to print.
  * @param[in] format Output format.
- * @param[in] options [printer flags](@ref printerflags). \p format LYD_LYB accepts only #LYP_WITHSIBLINGS option.
+ * @param[in] options [Data printer flags](@ref dataprinterflags).
  * @return LY_ERR value.
  */
 LY_ERR lyd_print_fd(int fd, const struct lyd_node *root, LYD_FORMAT format, int options);
@@ -95,7 +95,7 @@
  * @param[in] f File stream where to print the data.
  * @param[in] root The root element of the (sub)tree to print.
  * @param[in] format Output format.
- * @param[in] options [printer flags](@ref printerflags). \p format LYD_LYB accepts only #LYP_WITHSIBLINGS option.
+ * @param[in] options [Data printer flags](@ref dataprinterflags).
  * @return LY_ERR value.
  */
 LY_ERR lyd_print_file(FILE *f, const struct lyd_node *root, LYD_FORMAT format, int options);
@@ -106,7 +106,7 @@
  * @param[in] path File path where to print the data.
  * @param[in] root The root element of the (sub)tree to print.
  * @param[in] format Output format.
- * @param[in] options [printer flags](@ref printerflags). \p format LYD_LYB accepts only #LYP_WITHSIBLINGS option.
+ * @param[in] options [Data printer flags](@ref dataprinterflags).
  * @return LY_ERR value.
  */
 LY_ERR lyd_print_path(const char *path, const struct lyd_node *root, LYD_FORMAT format, int options);
@@ -118,7 +118,7 @@
  * @param[in] arg Optional caller-specific argument to be passed to the \p writeclb callback.
  * @param[in] root The root element of the (sub)tree to print.
  * @param[in] format Output format.
- * @param[in] options [printer flags](@ref printerflags). \p format LYD_LYB accepts only #LYP_WITHSIBLINGS option.
+ * @param[in] options [Data printer flags](@ref dataprinterflags).
  * @return LY_ERR value.
  */
 LY_ERR lyd_print_clb(ssize_t (*writeclb)(void *arg, const void *buf, size_t count), void *arg,
